From aa75f78fbb9834907037f604e5d9b3b0126963e4 Mon Sep 17 00:00:00 2001 From: goenning Date: Sat, 20 May 2023 22:23:19 +0100 Subject: [PATCH] Added support for automatic segregation of Debug/Release events --- CHANGELOG.md | 4 ++++ package-lock.json | 4 ++-- package.json | 2 +- src/index.ts | 32 ++++++++++++++++++++++++++++---- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75e6dd4..0a2a55e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.2 + +- Added support for automatic segregation of Debug/Release events + ## 0.1.1 - Refactor on session generator diff --git a/package-lock.json b/package-lock.json index 109e3eb..8ee07c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@aptabase/web", - "version": "0.1.1", + "version": "0.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@aptabase/web", - "version": "0.1.1", + "version": "0.1.2", "license": "MIT", "devDependencies": { "@rollup/plugin-replace": "5.0.2", diff --git a/package.json b/package.json index 808802e..78a3fd4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@aptabase/web", - "version": "0.1.1", + "version": "0.1.2", "private": false, "type": "module", "description": "JavaScript SDK for Aptabase: Open Source, Privacy-First and Simple Analytics for Mobile, Desktop and Web Apps", diff --git a/src/index.ts b/src/index.ts index f8b83b2..f121707 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,6 +4,7 @@ import { newSessionId } from "./session"; const sdkVersion = "aptabase-web@env.PKG_VERSION"; export type AptabaseOptions = { + host?: string; appVersion?: string; }; @@ -11,30 +12,52 @@ let _appKey = ""; let _locale = ""; let _apiUrl = ""; let _sessionId = newSessionId(); +let _isDebug = false; let _options: AptabaseOptions | undefined; -const regions: { [region: string]: string } = { +const _hosts: { [region: string]: string } = { US: "https://us.aptabase.com", EU: "https://eu.aptabase.com", DEV: "http://localhost:3000", + 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) { _appKey = appKey; _options = options; const parts = appKey.split("-"); - if (parts.length !== 3) { + if (parts.length !== 3 || _hosts[parts[1]] === undefined) { console.warn( `The Aptabase App Key "${appKey}" is invalid. Tracking will be disabled.` ); return; } - const region = parts[1]; - const baseUrl = regions[region] ?? regions.DEV; + const baseUrl = getBaseUrl(parts[1], options); _apiUrl = `${baseUrl}/api/v0/event`; + if (typeof location !== "undefined") { + _isDebug = location.hostname === "localhost"; + } + if (typeof navigator !== "undefined") { _locale = navigator.languages && navigator.languages.length @@ -54,6 +77,7 @@ export function trackEvent( sessionId: _sessionId, eventName: eventName, systemProps: { + isDebug: _isDebug, locale: _locale, appVersion: _options?.appVersion ?? "", sdkVersion,