remove hardcoded data
This commit is contained in:
parent
4b1aae55c6
commit
0f28be3d2b
3 changed files with 80 additions and 54 deletions
3
packages/node/src/global.d.ts
vendored
3
packages/node/src/global.d.ts
vendored
|
@ -1,5 +1,6 @@
|
||||||
type AptabaseState = {
|
type AptabaseState = {
|
||||||
appKey?: string;
|
appKey: string;
|
||||||
|
apiUrl: string;
|
||||||
options?: import('./types').AptabaseOptions;
|
options?: import('./types').AptabaseOptions;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,23 @@ export { AptabaseOptions };
|
||||||
|
|
||||||
const isDebug = process.env.NODE_ENV === 'development';
|
const isDebug = process.env.NODE_ENV === 'development';
|
||||||
|
|
||||||
|
const _hosts: { [region: string]: string } = {
|
||||||
|
US: 'https://us.aptabase.com',
|
||||||
|
EU: 'https://eu.aptabase.com',
|
||||||
|
DEV: 'http://localhost:3000',
|
||||||
|
SH: '',
|
||||||
|
};
|
||||||
|
|
||||||
export function init(appKey: string, options?: AptabaseOptions) {
|
export function init(appKey: string, options?: AptabaseOptions) {
|
||||||
globalThis.__APTABASE__ = { appKey, options };
|
const parts = appKey.split('-');
|
||||||
|
if (parts.length !== 3 || _hosts[parts[1]] === undefined) {
|
||||||
|
console.warn(`Aptabase: The App Key "${appKey}" is invalid. Tracking will be disabled.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const baseUrl = getBaseUrl(parts[1], options);
|
||||||
|
const apiUrl = `${baseUrl}/api/v0/event`;
|
||||||
|
globalThis.__APTABASE__ = { appKey, apiUrl, options };
|
||||||
}
|
}
|
||||||
|
|
||||||
// We only need the headers from the request object
|
// We only need the headers from the request object
|
||||||
|
@ -16,24 +31,11 @@ export async function trackEvent(
|
||||||
eventName: string,
|
eventName: string,
|
||||||
props?: Record<string, string | number | boolean>,
|
props?: Record<string, string | number | boolean>,
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const { appKey } = globalThis.__APTABASE__ || {};
|
const { appKey, apiUrl, options } = globalThis.__APTABASE__ || {};
|
||||||
if (!appKey) return Promise.resolve();
|
if (!appKey) return Promise.resolve();
|
||||||
|
|
||||||
const body = JSON.stringify({
|
|
||||||
timestamp: new Date().toISOString(),
|
|
||||||
sessionId: 'CHANGE-THIS',
|
|
||||||
eventName: eventName,
|
|
||||||
systemProps: {
|
|
||||||
isDebug,
|
|
||||||
locale: extractLocale(req.headers.get('accept-language')),
|
|
||||||
appVersion: '',
|
|
||||||
sdkVersion: globalThis.__APTABASE_SDK_VERSION__ ?? `aptabase-node@${process.env.PKG_VERSION}`,
|
|
||||||
},
|
|
||||||
props: props,
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch('http://localhost:3000/api/v0/event', {
|
const response = await fetch(apiUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'User-Agent': req.headers.get('user-agent') ?? '',
|
'User-Agent': req.headers.get('user-agent') ?? '',
|
||||||
|
@ -41,7 +43,18 @@ export async function trackEvent(
|
||||||
'App-Key': appKey,
|
'App-Key': appKey,
|
||||||
},
|
},
|
||||||
credentials: 'omit',
|
credentials: 'omit',
|
||||||
body,
|
body: JSON.stringify({
|
||||||
|
timestamp: new Date().toISOString(),
|
||||||
|
sessionId: 'CHANGE-THIS',
|
||||||
|
eventName: eventName,
|
||||||
|
systemProps: {
|
||||||
|
isDebug,
|
||||||
|
locale: extractLocale(req.headers.get('accept-language')),
|
||||||
|
appVersion: options,
|
||||||
|
sdkVersion: globalThis.__APTABASE_SDK_VERSION__ ?? `aptabase-node@${process.env.PKG_VERSION}`,
|
||||||
|
},
|
||||||
|
props: props,
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (response.status >= 300) {
|
if (response.status >= 300) {
|
||||||
|
@ -53,6 +66,18 @@ export async function trackEvent(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getBaseUrl(region: string, options?: AptabaseOptions): string | undefined {
|
||||||
|
if (region === 'SH') {
|
||||||
|
if (!options?.host) {
|
||||||
|
console.warn(`Host parameter must be defined when using Self-Hosted App Key. Tracking will be disabled.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return options.host;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _hosts[region];
|
||||||
|
}
|
||||||
|
|
||||||
function extractLocale(locale: string | null): string | null {
|
function extractLocale(locale: string | null): string | null {
|
||||||
if (!locale) {
|
if (!locale) {
|
||||||
return null;
|
return null;
|
||||||
|
|
|
@ -17,18 +17,6 @@ const _hosts: { [region: string]: string } = {
|
||||||
SH: '',
|
SH: '',
|
||||||
};
|
};
|
||||||
|
|
||||||
function getBaseUrl(region: string, options?: AptabaseOptions): string | undefined {
|
|
||||||
if (region === 'SH') {
|
|
||||||
if (!options?.host) {
|
|
||||||
console.warn(`Host parameter must be defined when using Self-Hosted App Key. Tracking will be disabled.`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return options.host;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _hosts[region];
|
|
||||||
}
|
|
||||||
|
|
||||||
export function init(appKey: string, options?: AptabaseOptions) {
|
export function init(appKey: string, options?: AptabaseOptions) {
|
||||||
_appKey = appKey;
|
_appKey = appKey;
|
||||||
_options = options;
|
_options = options;
|
||||||
|
@ -43,7 +31,7 @@ export function init(appKey: string, options?: AptabaseOptions) {
|
||||||
_apiUrl = `${baseUrl}/api/v0/event`;
|
_apiUrl = `${baseUrl}/api/v0/event`;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function trackEvent(eventName: string, props?: Record<string, string | number | boolean>) {
|
export async function trackEvent(eventName: string, props?: Record<string, string | number | boolean>): Promise<void> {
|
||||||
if (!_appKey) return;
|
if (!_appKey) return;
|
||||||
|
|
||||||
if (typeof window === 'undefined' || !window.fetch) {
|
if (typeof window === 'undefined' || !window.fetch) {
|
||||||
|
@ -53,35 +41,47 @@ export function trackEvent(eventName: string, props?: Record<string, string | nu
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const body = JSON.stringify({
|
try {
|
||||||
timestamp: new Date().toISOString(),
|
const response = await window.fetch(_apiUrl, {
|
||||||
sessionId: 'CHANGE-THIS',
|
|
||||||
eventName: eventName,
|
|
||||||
systemProps: {
|
|
||||||
isDebug,
|
|
||||||
locale,
|
|
||||||
appVersion: _options?.appVersion ?? '',
|
|
||||||
sdkVersion: globalThis.__APTABASE_SDK_VERSION__ ?? `aptabase-web@${process.env.PKG_VERSION}`,
|
|
||||||
},
|
|
||||||
props: props,
|
|
||||||
});
|
|
||||||
|
|
||||||
window
|
|
||||||
.fetch(_apiUrl, {
|
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'App-Key': _appKey,
|
'App-Key': _appKey,
|
||||||
},
|
},
|
||||||
credentials: 'omit',
|
credentials: 'omit',
|
||||||
body,
|
body: JSON.stringify({
|
||||||
})
|
timestamp: new Date().toISOString(),
|
||||||
.then((response) => {
|
sessionId: 'CHANGE-THIS',
|
||||||
if (response.status >= 300) {
|
eventName: eventName,
|
||||||
console.warn(`Failed to send event "${eventName}": ${response.status} ${response.statusText}`);
|
systemProps: {
|
||||||
}
|
isDebug,
|
||||||
})
|
locale,
|
||||||
.catch(console.error);
|
appVersion: _options?.appVersion ?? '',
|
||||||
|
sdkVersion: globalThis.__APTABASE_SDK_VERSION__ ?? `aptabase-web@${process.env.PKG_VERSION}`,
|
||||||
|
},
|
||||||
|
props: props,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (response.status >= 300) {
|
||||||
|
const responseBody = await response.text();
|
||||||
|
console.warn(`Failed to send event "${eventName}": ${response.status} ${responseBody}`);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn(`Failed to send event "${eventName}": ${e}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getBaseUrl(region: string, options?: AptabaseOptions): string | undefined {
|
||||||
|
if (region === 'SH') {
|
||||||
|
if (!options?.host) {
|
||||||
|
console.warn(`Host parameter must be defined when using Self-Hosted App Key. Tracking will be disabled.`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return options.host;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _hosts[region];
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBrowserLocale(): string | null {
|
function getBrowserLocale(): string | null {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue