@amplitude/analytics-browser 1.8.0 → 1.9.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/browser-client-factory.js +10 -10
- package/lib/cjs/browser-client-factory.js.map +1 -1
- package/lib/cjs/browser-client.d.ts +11 -7
- package/lib/cjs/browser-client.d.ts.map +1 -1
- package/lib/cjs/browser-client.js +88 -44
- package/lib/cjs/browser-client.js.map +1 -1
- package/lib/cjs/config.d.ts +2 -1
- package/lib/cjs/config.d.ts.map +1 -1
- package/lib/cjs/config.js +2 -0
- package/lib/cjs/config.js.map +1 -1
- package/lib/cjs/constants.d.ts +7 -0
- package/lib/cjs/constants.d.ts.map +1 -0
- package/lib/cjs/constants.js +9 -0
- package/lib/cjs/constants.js.map +1 -0
- package/lib/cjs/plugins/context.d.ts +0 -1
- package/lib/cjs/plugins/context.d.ts.map +1 -1
- package/lib/cjs/plugins/context.js +0 -14
- package/lib/cjs/plugins/context.js.map +1 -1
- package/lib/cjs/plugins/file-download-tracking.d.ts.map +1 -1
- package/lib/cjs/plugins/file-download-tracking.js +3 -3
- package/lib/cjs/plugins/file-download-tracking.js.map +1 -1
- package/lib/cjs/plugins/form-interaction-tracking.d.ts.map +1 -1
- package/lib/cjs/plugins/form-interaction-tracking.js +5 -6
- package/lib/cjs/plugins/form-interaction-tracking.js.map +1 -1
- package/lib/cjs/plugins/session-handler.d.ts +3 -0
- package/lib/cjs/plugins/session-handler.d.ts.map +1 -0
- package/lib/cjs/plugins/session-handler.js +54 -0
- package/lib/cjs/plugins/session-handler.js.map +1 -0
- package/lib/cjs/version.d.ts +1 -1
- package/lib/cjs/version.d.ts.map +1 -1
- package/lib/cjs/version.js +1 -1
- package/lib/cjs/version.js.map +1 -1
- package/lib/esm/browser-client-factory.js +11 -11
- package/lib/esm/browser-client-factory.js.map +1 -1
- package/lib/esm/browser-client.d.ts +11 -7
- package/lib/esm/browser-client.d.ts.map +1 -1
- package/lib/esm/browser-client.js +91 -47
- package/lib/esm/browser-client.js.map +1 -1
- package/lib/esm/config.d.ts +2 -1
- package/lib/esm/config.d.ts.map +1 -1
- package/lib/esm/config.js +2 -0
- package/lib/esm/config.js.map +1 -1
- package/lib/esm/constants.d.ts +7 -0
- package/lib/esm/constants.d.ts.map +1 -0
- package/lib/esm/constants.js +7 -0
- package/lib/esm/constants.js.map +1 -0
- package/lib/esm/plugins/context.d.ts +0 -1
- package/lib/esm/plugins/context.d.ts.map +1 -1
- package/lib/esm/plugins/context.js +0 -14
- package/lib/esm/plugins/context.js.map +1 -1
- package/lib/esm/plugins/file-download-tracking.d.ts.map +1 -1
- package/lib/esm/plugins/file-download-tracking.js +3 -3
- package/lib/esm/plugins/file-download-tracking.js.map +1 -1
- package/lib/esm/plugins/form-interaction-tracking.d.ts.map +1 -1
- package/lib/esm/plugins/form-interaction-tracking.js +5 -6
- package/lib/esm/plugins/form-interaction-tracking.js.map +1 -1
- package/lib/esm/plugins/session-handler.d.ts +3 -0
- package/lib/esm/plugins/session-handler.d.ts.map +1 -0
- package/lib/esm/plugins/session-handler.js +50 -0
- package/lib/esm/plugins/session-handler.js.map +1 -0
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.d.ts.map +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/esm/version.js.map +1 -1
- package/lib/scripts/amplitude-min.js +1 -1
- package/lib/scripts/amplitude-min.js.gz +0 -0
- package/lib/scripts/amplitude-min.umd.js +1 -1
- package/lib/scripts/amplitude-min.umd.js.gz +0 -0
- package/lib/scripts/browser-client.d.ts +11 -7
- package/lib/scripts/browser-client.d.ts.map +1 -1
- package/lib/scripts/config.d.ts +2 -1
- package/lib/scripts/config.d.ts.map +1 -1
- package/lib/scripts/constants.d.ts +7 -0
- package/lib/scripts/constants.d.ts.map +1 -0
- package/lib/scripts/plugins/context.d.ts +0 -1
- package/lib/scripts/plugins/context.d.ts.map +1 -1
- package/lib/scripts/plugins/file-download-tracking.d.ts.map +1 -1
- package/lib/scripts/plugins/form-interaction-tracking.d.ts.map +1 -1
- package/lib/scripts/plugins/session-handler.d.ts +3 -0
- package/lib/scripts/plugins/session-handler.d.ts.map +1 -0
- package/lib/scripts/version.d.ts +1 -1
- package/lib/scripts/version.d.ts.map +1 -1
- package/package.json +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-download-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"file-download-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAIhG,eAAO,MAAM,oBAAoB,QAAO,gBAuEvC,CAAC"}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.fileDownloadTracking = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var analytics_types_1 = require("@amplitude/analytics-types");
|
|
6
|
-
var
|
|
6
|
+
var constants_1 = require("../constants");
|
|
7
7
|
var fileDownloadTracking = function () {
|
|
8
|
-
var name = '
|
|
8
|
+
var name = '@amplitude/plugin-file-download-tracking-browser';
|
|
9
9
|
var type = analytics_types_1.PluginType.ENRICHMENT;
|
|
10
10
|
var setup = function (config, amplitude) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
11
11
|
var addFileDownloadListener, ext, links, observer;
|
|
@@ -24,7 +24,7 @@ var fileDownloadTracking = function () {
|
|
|
24
24
|
if (fileExtension_1) {
|
|
25
25
|
a.addEventListener('click', function () {
|
|
26
26
|
if (fileExtension_1) {
|
|
27
|
-
amplitude.track(
|
|
27
|
+
amplitude.track(constants_1.DEFAULT_FILE_DOWNLOAD_EVENT, {
|
|
28
28
|
file_extension: fileExtension_1,
|
|
29
29
|
file_name: url_1.pathname,
|
|
30
30
|
link_id: a.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-download-tracking.js","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"file-download-tracking.js","sourceRoot":"","sources":["../../../src/plugins/file-download-tracking.ts"],"names":[],"mappings":"AAAA,iBA4EA;;;;AA5EA,8DAAgG;AAChG,0CAA2D;AAGpD,IAAM,oBAAoB,GAAG;IAClC,IAAM,IAAI,GAAG,kDAAkD,CAAC;IAChE,IAAM,IAAI,GAAG,4BAAU,CAAC,UAAU,CAAC;IACnC,IAAM,KAAK,GAAG,UAAO,MAAqB,EAAE,SAAyB;;;YACnE,wBAAwB;YACxB,IAAI,CAAC,SAAS,EAAE;gBACd,qEAAqE;gBACrE,MAAM,CAAC,cAAc,CAAC,IAAI,CACxB,wHAAwH,CACzH,CAAC;gBACF,sBAAO;aACR;YAEK,uBAAuB,GAAG,UAAC,CAAoB;gBACnD,IAAI;oBACF,IAAM,KAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC5B,IAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,KAAG,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAM,eAAa,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,CAAC,CAAC,CAAC;oBAElC,IAAI,eAAa,EAAE;wBACjB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE;4BAC1B,IAAI,eAAa,EAAE;gCACjB,SAAS,CAAC,KAAK,CAAC,uCAA2B,EAAE;oCAC3C,cAAc,EAAE,eAAa;oCAC7B,SAAS,EAAE,KAAG,CAAC,QAAQ;oCACvB,OAAO,EAAE,CAAC,CAAC,EAAE;oCACb,SAAS,EAAE,CAAC,CAAC,IAAI;oCACjB,QAAQ,EAAE,CAAC,CAAC,IAAI;iCACjB,CAAC,CAAC;6BACJ;wBACH,CAAC,CAAC,CAAC;qBACJ;iBACF;gBAAC,WAAM;oBACN,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;iBACxG;YACH,CAAC,CAAC;YAEI,GAAG,GACP,+GAA+G,CAAC;YAG5G,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;YAEvC,wDAAwD;YACxD,0BAA0B;YAC1B,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;gBACrC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,UAAC,SAAS;oBAC9C,SAAS,CAAC,OAAO,CAAC,UAAC,QAAQ;wBACzB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,IAAI;4BAC/B,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;gCACzB,uBAAuB,CAAC,IAAyB,CAAC,CAAC;6BACpD;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC9B,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;aACJ;;;SACF,CAAC;IACF,IAAM,OAAO,GAAG,UAAO,KAAY;QAAK,sBAAA,KAAK,EAAA;aAAA,CAAC;IAE9C,OAAO;QACL,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,KAAK,OAAA;QACL,OAAO,SAAA;KACR,CAAC;AACJ,CAAC,CAAC;AAvEW,QAAA,oBAAoB,wBAuE/B","sourcesContent":["import { BrowserClient, PluginType, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport { DEFAULT_FILE_DOWNLOAD_EVENT } from '../constants';\nimport { BrowserConfig } from '../config';\n\nexport const fileDownloadTracking = (): EnrichmentPlugin => {\n const name = '@amplitude/plugin-file-download-tracking-browser';\n const type = PluginType.ENRICHMENT;\n const setup = async (config: BrowserConfig, amplitude?: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'File download tracking requires a later version of @amplitude/analytics-browser. File download events are not tracked.',\n );\n return;\n }\n\n const addFileDownloadListener = (a: HTMLAnchorElement) => {\n try {\n const url = new URL(a.href);\n const result = ext.exec(url.href);\n const fileExtension = result?.[1];\n\n if (fileExtension) {\n a.addEventListener('click', () => {\n if (fileExtension) {\n amplitude.track(DEFAULT_FILE_DOWNLOAD_EVENT, {\n file_extension: fileExtension,\n file_name: url.pathname,\n link_id: a.id,\n link_text: a.text,\n link_url: a.href,\n });\n }\n });\n }\n } catch {\n config.loggerProvider.error(`Something went wrong. File download events are not tracked for a#{a.id}`);\n }\n };\n\n const ext =\n /\\.(pdf|xlsx?|docx?|txt|rtf|csv|exe|key|pp(s|t|tx)|7z|pkg|rar|gz|zip|avi|mov|mp4|mpe?g|wmv|midi?|mp3|wav|wma)$/;\n\n // Adds listener to existing anchor tags\n const links = Array.from(document.getElementsByTagName('a'));\n links.forEach(addFileDownloadListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'A') {\n addFileDownloadListener(node as HTMLAnchorElement);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n const execute = async (event: Event) => event;\n\n return {\n name,\n type,\n setup,\n execute,\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"form-interaction-tracking.d.ts","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAIhG,eAAO,MAAM,uBAAuB,QAAO,gBAgF1C,CAAC"}
|
|
@@ -3,10 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.formInteractionTracking = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var analytics_types_1 = require("@amplitude/analytics-types");
|
|
6
|
-
var
|
|
7
|
-
var FORM_SUBMIT_EVENT = 'form_submit';
|
|
6
|
+
var constants_1 = require("../constants");
|
|
8
7
|
var formInteractionTracking = function () {
|
|
9
|
-
var name = '
|
|
8
|
+
var name = '@amplitude/plugin-form-interaction-tracking-browser';
|
|
10
9
|
var type = analytics_types_1.PluginType.ENRICHMENT;
|
|
11
10
|
var setup = function (config, amplitude) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
12
11
|
var addFormInteractionListener, forms, observer;
|
|
@@ -21,7 +20,7 @@ var formInteractionTracking = function () {
|
|
|
21
20
|
var hasFormChanged = false;
|
|
22
21
|
form.addEventListener('change', function () {
|
|
23
22
|
if (!hasFormChanged) {
|
|
24
|
-
amplitude.track(
|
|
23
|
+
amplitude.track(constants_1.DEFAULT_FORM_START_EVENT, {
|
|
25
24
|
form_id: form.id,
|
|
26
25
|
form_name: form.name,
|
|
27
26
|
form_destination: form.action,
|
|
@@ -31,13 +30,13 @@ var formInteractionTracking = function () {
|
|
|
31
30
|
}, {});
|
|
32
31
|
form.addEventListener('submit', function () {
|
|
33
32
|
if (!hasFormChanged) {
|
|
34
|
-
amplitude.track(
|
|
33
|
+
amplitude.track(constants_1.DEFAULT_FORM_START_EVENT, {
|
|
35
34
|
form_id: form.id,
|
|
36
35
|
form_name: form.name,
|
|
37
36
|
form_destination: form.action,
|
|
38
37
|
});
|
|
39
38
|
}
|
|
40
|
-
amplitude.track(
|
|
39
|
+
amplitude.track(constants_1.DEFAULT_FORM_SUBMIT_EVENT, {
|
|
41
40
|
form_id: form.id,
|
|
42
41
|
form_name: form.name,
|
|
43
42
|
form_destination: form.action,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-interaction-tracking.js","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"form-interaction-tracking.js","sourceRoot":"","sources":["../../../src/plugins/form-interaction-tracking.ts"],"names":[],"mappings":"AAAA,iBAqFA;;;;AArFA,8DAAgG;AAChG,0CAAmF;AAG5E,IAAM,uBAAuB,GAAG;IACrC,IAAM,IAAI,GAAG,qDAAqD,CAAC;IACnE,IAAM,IAAI,GAAG,4BAAU,CAAC,UAAU,CAAC;IACnC,IAAM,KAAK,GAAG,UAAO,MAAqB,EAAE,SAAyB;;;YACnE,wBAAwB;YACxB,IAAI,CAAC,SAAS,EAAE;gBACd,qEAAqE;gBACrE,MAAM,CAAC,cAAc,CAAC,IAAI,CACxB,8HAA8H,CAC/H,CAAC;gBACF,sBAAO;aACR;YAEK,0BAA0B,GAAG,UAAC,IAAqB;gBACvD,IAAI,cAAc,GAAG,KAAK,CAAC;gBAE3B,IAAI,CAAC,gBAAgB,CACnB,QAAQ,EACR;oBACE,IAAI,CAAC,cAAc,EAAE;wBACnB,SAAS,CAAC,KAAK,CAAC,oCAAwB,EAAE;4BACxC,OAAO,EAAE,IAAI,CAAC,EAAE;4BAChB,SAAS,EAAE,IAAI,CAAC,IAAI;4BACpB,gBAAgB,EAAE,IAAI,CAAC,MAAM;yBAC9B,CAAC,CAAC;qBACJ;oBACD,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC,EACD,EAAE,CACH,CAAC;gBAEF,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;oBAC9B,IAAI,CAAC,cAAc,EAAE;wBACnB,SAAS,CAAC,KAAK,CAAC,oCAAwB,EAAE;4BACxC,OAAO,EAAE,IAAI,CAAC,EAAE;4BAChB,SAAS,EAAE,IAAI,CAAC,IAAI;4BACpB,gBAAgB,EAAE,IAAI,CAAC,MAAM;yBAC9B,CAAC,CAAC;qBACJ;oBAED,SAAS,CAAC,KAAK,CAAC,qCAAyB,EAAE;wBACzC,OAAO,EAAE,IAAI,CAAC,EAAE;wBAChB,SAAS,EAAE,IAAI,CAAC,IAAI;wBACpB,gBAAgB,EAAE,IAAI,CAAC,MAAM;qBAC9B,CAAC,CAAC;oBACH,cAAc,GAAG,KAAK,CAAC;gBACzB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAGI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;YAChE,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YAE1C,wDAAwD;YACxD,0BAA0B;YAC1B,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;gBACrC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,UAAC,SAAS;oBAC9C,SAAS,CAAC,OAAO,CAAC,UAAC,QAAQ;wBACzB,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,IAAI;4BAC/B,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE;gCAC5B,0BAA0B,CAAC,IAAuB,CAAC,CAAC;6BACrD;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC9B,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;aACJ;;;SACF,CAAC;IACF,IAAM,OAAO,GAAG,UAAO,KAAY;QAAK,sBAAA,KAAK,EAAA;aAAA,CAAC;IAE9C,OAAO;QACL,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,KAAK,OAAA;QACL,OAAO,SAAA;KACR,CAAC;AACJ,CAAC,CAAC;AAhFW,QAAA,uBAAuB,2BAgFlC","sourcesContent":["import { BrowserClient, PluginType, Event, EnrichmentPlugin } from '@amplitude/analytics-types';\nimport { DEFAULT_FORM_START_EVENT, DEFAULT_FORM_SUBMIT_EVENT } from '../constants';\nimport { BrowserConfig } from '../config';\n\nexport const formInteractionTracking = (): EnrichmentPlugin => {\n const name = '@amplitude/plugin-form-interaction-tracking-browser';\n const type = PluginType.ENRICHMENT;\n const setup = async (config: BrowserConfig, amplitude?: BrowserClient) => {\n /* istanbul ignore if */\n if (!amplitude) {\n // TODO: Add required minimum version of @amplitude/analytics-browser\n config.loggerProvider.warn(\n 'Form interaction tracking requires a later version of @amplitude/analytics-browser. Form interaction events are not tracked.',\n );\n return;\n }\n\n const addFormInteractionListener = (form: HTMLFormElement) => {\n let hasFormChanged = false;\n\n form.addEventListener(\n 'change',\n () => {\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n form_id: form.id,\n form_name: form.name,\n form_destination: form.action,\n });\n }\n hasFormChanged = true;\n },\n {},\n );\n\n form.addEventListener('submit', () => {\n if (!hasFormChanged) {\n amplitude.track(DEFAULT_FORM_START_EVENT, {\n form_id: form.id,\n form_name: form.name,\n form_destination: form.action,\n });\n }\n\n amplitude.track(DEFAULT_FORM_SUBMIT_EVENT, {\n form_id: form.id,\n form_name: form.name,\n form_destination: form.action,\n });\n hasFormChanged = false;\n });\n };\n\n // Adds listener to existing anchor tags\n const forms = Array.from(document.getElementsByTagName('form'));\n forms.forEach(addFormInteractionListener);\n\n // Adds listener to anchor tags added after initial load\n /* istanbul ignore else */\n if (typeof MutationObserver !== 'undefined') {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n mutation.addedNodes.forEach((node) => {\n if (node.nodeName === 'FORM') {\n addFormInteractionListener(node as HTMLFormElement);\n }\n });\n });\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n });\n }\n };\n const execute = async (event: Event) => event;\n\n return {\n name,\n type,\n setup,\n execute,\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-handler.d.ts","sourceRoot":"","sources":["../../../src/plugins/session-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmD,MAAM,4BAA4B,CAAC;AAG3G,eAAO,MAAM,oBAAoB,QAAO,YAiDvC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
var _this = this;
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sessionHandlerPlugin = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var analytics_types_1 = require("@amplitude/analytics-types");
|
|
6
|
+
var constants_1 = require("../constants");
|
|
7
|
+
var sessionHandlerPlugin = function () {
|
|
8
|
+
// browserConfig is defined in setup() which will always be called first
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
var browserConfig;
|
|
12
|
+
// amplitude is defined in setup() which will always be called first
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
var amplitude;
|
|
16
|
+
var name = '@amplitude/plugin-session-handler';
|
|
17
|
+
var type = analytics_types_1.PluginType.BEFORE;
|
|
18
|
+
var setup = function (config, client) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
19
|
+
return tslib_1.__generator(this, function (_a) {
|
|
20
|
+
browserConfig = config;
|
|
21
|
+
amplitude = client;
|
|
22
|
+
return [2 /*return*/];
|
|
23
|
+
});
|
|
24
|
+
}); };
|
|
25
|
+
var execute = function (event) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
26
|
+
var now, lastEventTime, timeSinceLastEvent;
|
|
27
|
+
return tslib_1.__generator(this, function (_a) {
|
|
28
|
+
now = Date.now();
|
|
29
|
+
if (event.event_type === constants_1.DEFAULT_SESSION_START_EVENT || event.event_type === constants_1.DEFAULT_SESSION_END_EVENT) {
|
|
30
|
+
browserConfig.lastEventTime = now;
|
|
31
|
+
return [2 /*return*/, event];
|
|
32
|
+
}
|
|
33
|
+
lastEventTime = browserConfig.lastEventTime || now;
|
|
34
|
+
timeSinceLastEvent = now - lastEventTime;
|
|
35
|
+
if (timeSinceLastEvent > browserConfig.sessionTimeout) {
|
|
36
|
+
// assigns new session
|
|
37
|
+
amplitude.setSessionId(now);
|
|
38
|
+
event.session_id = amplitude.getSessionId();
|
|
39
|
+
event.time = now;
|
|
40
|
+
} // else use existing session
|
|
41
|
+
// updates last event time to extend time-based session
|
|
42
|
+
browserConfig.lastEventTime = now;
|
|
43
|
+
return [2 /*return*/, event];
|
|
44
|
+
});
|
|
45
|
+
}); };
|
|
46
|
+
return {
|
|
47
|
+
name: name,
|
|
48
|
+
type: type,
|
|
49
|
+
setup: setup,
|
|
50
|
+
execute: execute,
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
exports.sessionHandlerPlugin = sessionHandlerPlugin;
|
|
54
|
+
//# sourceMappingURL=session-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-handler.js","sourceRoot":"","sources":["../../../src/plugins/session-handler.ts"],"names":[],"mappings":"AAAA,iBAqDA;;;;AArDA,8DAA2G;AAC3G,0CAAsF;AAE/E,IAAM,oBAAoB,GAAG;IAClC,wEAAwE;IACxE,6DAA6D;IAC7D,aAAa;IACb,IAAI,aAA4B,CAAC;IACjC,oEAAoE;IACpE,6DAA6D;IAC7D,aAAa;IACb,IAAI,SAAwB,CAAC;IAE7B,IAAM,IAAI,GAAG,mCAAmC,CAAC;IAEjD,IAAM,IAAI,GAAG,4BAAU,CAAC,MAAM,CAAC;IAE/B,IAAM,KAAK,GAAG,UAAO,MAAqB,EAAE,MAAqB;;YAC/D,aAAa,GAAG,MAAM,CAAC;YACvB,SAAS,GAAG,MAAM,CAAC;;;SACpB,CAAC;IAEF,IAAM,OAAO,GAAG,UAAO,KAAY;;;YAC3B,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEvB,IAAI,KAAK,CAAC,UAAU,KAAK,uCAA2B,IAAI,KAAK,CAAC,UAAU,KAAK,qCAAyB,EAAE;gBACtG,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC;gBAClC,sBAAO,KAAK,EAAC;aACd;YAEK,aAAa,GAAG,aAAa,CAAC,aAAa,IAAI,GAAG,CAAC;YACnD,kBAAkB,GAAG,GAAG,GAAG,aAAa,CAAC;YAE/C,IAAI,kBAAkB,GAAG,aAAa,CAAC,cAAc,EAAE;gBACrD,sBAAsB;gBACtB,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC5B,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;aAClB,CAAC,4BAA4B;YAE9B,uDAAuD;YACvD,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC;YAElC,sBAAO,KAAK,EAAC;;SACd,CAAC;IAEF,OAAO;QACL,IAAI,MAAA;QACJ,IAAI,MAAA;QACJ,KAAK,OAAA;QACL,OAAO,SAAA;KACR,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,oBAAoB,wBAiD/B","sourcesContent":["import { BeforePlugin, BrowserClient, BrowserConfig, Event, PluginType } from '@amplitude/analytics-types';\nimport { DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from '../constants';\n\nexport const sessionHandlerPlugin = (): BeforePlugin => {\n // browserConfig is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n let browserConfig: BrowserConfig;\n // amplitude is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n let amplitude: BrowserClient;\n\n const name = '@amplitude/plugin-session-handler';\n\n const type = PluginType.BEFORE;\n\n const setup = async (config: BrowserConfig, client: BrowserClient) => {\n browserConfig = config;\n amplitude = client;\n };\n\n const execute = async (event: Event) => {\n const now = Date.now();\n\n if (event.event_type === DEFAULT_SESSION_START_EVENT || event.event_type === DEFAULT_SESSION_END_EVENT) {\n browserConfig.lastEventTime = now;\n return event;\n }\n\n const lastEventTime = browserConfig.lastEventTime || now;\n const timeSinceLastEvent = now - lastEventTime;\n\n if (timeSinceLastEvent > browserConfig.sessionTimeout) {\n // assigns new session\n amplitude.setSessionId(now);\n event.session_id = amplitude.getSessionId();\n event.time = now;\n } // else use existing session\n\n // updates last event time to extend time-based session\n browserConfig.lastEventTime = now;\n\n return event;\n };\n\n return {\n name,\n type,\n setup,\n execute,\n };\n};\n"]}
|
package/lib/cjs/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.
|
|
1
|
+
export declare const VERSION = "1.9.0-beta.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/cjs/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,iBAAiB,CAAC"}
|
package/lib/cjs/version.js
CHANGED
package/lib/cjs/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;AAAa,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;AAAa,QAAA,OAAO,GAAG,cAAc,CAAC","sourcesContent":["export const VERSION = '1.9.0-beta.0';\n"]}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { debugWrapper, getClientLogConfig, getClientStates
|
|
1
|
+
import { debugWrapper, getClientLogConfig, getClientStates } from '@amplitude/analytics-core';
|
|
2
2
|
import { AmplitudeBrowser } from './browser-client';
|
|
3
3
|
export var createInstance = function () {
|
|
4
4
|
var client = new AmplitudeBrowser();
|
|
5
5
|
return {
|
|
6
|
-
init: debugWrapper(
|
|
7
|
-
add: debugWrapper(
|
|
8
|
-
remove: debugWrapper(
|
|
9
|
-
track: debugWrapper(
|
|
10
|
-
logEvent: debugWrapper(
|
|
11
|
-
identify: debugWrapper(
|
|
12
|
-
groupIdentify: debugWrapper(
|
|
13
|
-
setGroup: debugWrapper(
|
|
14
|
-
revenue: debugWrapper(
|
|
15
|
-
flush: debugWrapper(
|
|
6
|
+
init: debugWrapper(client.init.bind(client), 'init', getClientLogConfig(client), getClientStates(client, ['config'])),
|
|
7
|
+
add: debugWrapper(client.add.bind(client), 'add', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.plugins'])),
|
|
8
|
+
remove: debugWrapper(client.remove.bind(client), 'remove', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.plugins'])),
|
|
9
|
+
track: debugWrapper(client.track.bind(client), 'track', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),
|
|
10
|
+
logEvent: debugWrapper(client.logEvent.bind(client), 'logEvent', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),
|
|
11
|
+
identify: debugWrapper(client.identify.bind(client), 'identify', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),
|
|
12
|
+
groupIdentify: debugWrapper(client.groupIdentify.bind(client), 'groupIdentify', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),
|
|
13
|
+
setGroup: debugWrapper(client.setGroup.bind(client), 'setGroup', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),
|
|
14
|
+
revenue: debugWrapper(client.revenue.bind(client), 'revenue', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),
|
|
15
|
+
flush: debugWrapper(client.flush.bind(client), 'flush', getClientLogConfig(client), getClientStates(client, ['config.apiKey', 'timeline.queue.length'])),
|
|
16
16
|
getUserId: debugWrapper(client.getUserId.bind(client), 'getUserId', getClientLogConfig(client), getClientStates(client, ['config', 'config.userId'])),
|
|
17
17
|
setUserId: debugWrapper(client.setUserId.bind(client), 'setUserId', getClientLogConfig(client), getClientStates(client, ['config', 'config.userId'])),
|
|
18
18
|
getDeviceId: debugWrapper(client.getDeviceId.bind(client), 'getDeviceId', getClientLogConfig(client), getClientStates(client, ['config', 'config.deviceId'])),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-client-factory.js","sourceRoot":"","sources":["../../src/browser-client-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"browser-client-factory.js","sourceRoot":"","sources":["../../src/browser-client-factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { debugWrapper, getClientLogConfig, getClientStates } from '@amplitude/analytics-core';\nimport { BrowserClient } from '@amplitude/analytics-types';\nimport { AmplitudeBrowser } from './browser-client';\n\nexport const createInstance = (): BrowserClient => {\n const client = new AmplitudeBrowser();\n return {\n init: debugWrapper(\n client.init.bind(client),\n 'init',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n add: debugWrapper(\n client.add.bind(client),\n 'add',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n remove: debugWrapper(\n client.remove.bind(client),\n 'remove',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.plugins']),\n ),\n track: debugWrapper(\n client.track.bind(client),\n 'track',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n logEvent: debugWrapper(\n client.logEvent.bind(client),\n 'logEvent',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n identify: debugWrapper(\n client.identify.bind(client),\n 'identify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n groupIdentify: debugWrapper(\n client.groupIdentify.bind(client),\n 'groupIdentify',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n setGroup: debugWrapper(\n client.setGroup.bind(client),\n 'setGroup',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n revenue: debugWrapper(\n client.revenue.bind(client),\n 'revenue',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n flush: debugWrapper(\n client.flush.bind(client),\n 'flush',\n getClientLogConfig(client),\n getClientStates(client, ['config.apiKey', 'timeline.queue.length']),\n ),\n getUserId: debugWrapper(\n client.getUserId.bind(client),\n 'getUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n setUserId: debugWrapper(\n client.setUserId.bind(client),\n 'setUserId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId']),\n ),\n getDeviceId: debugWrapper(\n client.getDeviceId.bind(client),\n 'getDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n setDeviceId: debugWrapper(\n client.setDeviceId.bind(client),\n 'setDeviceId',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.deviceId']),\n ),\n reset: debugWrapper(\n client.reset.bind(client),\n 'reset',\n getClientLogConfig(client),\n getClientStates(client, ['config', 'config.userId', 'config.deviceId']),\n ),\n getSessionId: debugWrapper(\n client.getSessionId.bind(client),\n 'getSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setSessionId: debugWrapper(\n client.setSessionId.bind(client),\n 'setSessionId',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setOptOut: debugWrapper(\n client.setOptOut.bind(client),\n 'setOptOut',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n setTransport: debugWrapper(\n client.setTransport.bind(client),\n 'setTransport',\n getClientLogConfig(client),\n getClientStates(client, ['config']),\n ),\n };\n};\n\nexport default createInstance();\n"]}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { AmplitudeCore } from '@amplitude/analytics-core';
|
|
2
|
-
import {
|
|
3
|
-
export declare class AmplitudeBrowser extends AmplitudeCore
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { BrowserClient, BrowserConfig, BrowserOptions, EventOptions, Identify as IIdentify, Revenue as IRevenue, TransportType } from '@amplitude/analytics-types';
|
|
3
|
+
export declare class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {
|
|
4
|
+
config: BrowserConfig;
|
|
5
|
+
previousSessionUserId: string | undefined;
|
|
6
|
+
init(apiKey?: string, userId?: string, options?: BrowserOptions): import("@amplitude/analytics-types").AmplitudeReturn<void>;
|
|
7
|
+
protected _init(options: BrowserOptions & {
|
|
8
|
+
apiKey: string;
|
|
9
|
+
}): Promise<void>;
|
|
6
10
|
getUserId(): string | undefined;
|
|
7
11
|
setUserId(userId: string | undefined): void;
|
|
8
12
|
getDeviceId(): string | undefined;
|
|
@@ -11,8 +15,8 @@ export declare class AmplitudeBrowser extends AmplitudeCore<BrowserConfig> {
|
|
|
11
15
|
getSessionId(): number | undefined;
|
|
12
16
|
setSessionId(sessionId: number): void;
|
|
13
17
|
setTransport(transport: TransportType): void;
|
|
14
|
-
identify(identify: IIdentify, eventOptions?: EventOptions):
|
|
15
|
-
groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions):
|
|
16
|
-
revenue(revenue: IRevenue, eventOptions?: EventOptions):
|
|
18
|
+
identify(identify: IIdentify, eventOptions?: EventOptions): import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
|
|
19
|
+
groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions): import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
|
|
20
|
+
revenue(revenue: IRevenue, eventOptions?: EventOptions): import("@amplitude/analytics-types").AmplitudeReturn<import("@amplitude/analytics-types").Result>;
|
|
17
21
|
}
|
|
18
22
|
//# sourceMappingURL=browser-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuD,MAAM,2BAA2B,CAAC;AAS/G,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,IAAI,SAAS,EACrB,OAAO,IAAI,QAAQ,EACnB,aAAa,EACd,MAAM,4BAA4B,CAAC;AAYpC,qBAAa,gBAAiB,SAAQ,aAAc,YAAW,aAAa;IAG1E,MAAM,EAAE,aAAa,CAAC;IACtB,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE1C,IAAI,CAAC,MAAM,SAAK,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc;cAG3C,KAAK,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE;IA2FlE,SAAS;IAIT,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAYpC,WAAW;IAIX,WAAW,CAAC,QAAQ,EAAE,MAAM;IAQ5B,KAAK;IAKL,YAAY;IAIZ,YAAY,CAAC,SAAS,EAAE,MAAM;IA+B9B,YAAY,CAAC,SAAS,EAAE,aAAa;IAQrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAezD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY;IAS/G,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,YAAY;CAQvD"}
|
|
@@ -1,38 +1,47 @@
|
|
|
1
1
|
import { __assign, __awaiter, __extends, __generator } from "tslib";
|
|
2
|
-
import { AmplitudeCore, Destination, Identify, Revenue, UUID } from '@amplitude/analytics-core';
|
|
3
|
-
import {
|
|
2
|
+
import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID } from '@amplitude/analytics-core';
|
|
3
|
+
import { getAnalyticsConnector, getPageViewTrackingConfig, IdentityEventSender, isSessionTrackingEnabled, isFileDownloadTrackingEnabled, isFormInteractionTrackingEnabled, } from '@amplitude/analytics-client-common';
|
|
4
4
|
import { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';
|
|
5
5
|
import { Context } from './plugins/context';
|
|
6
|
-
import { useBrowserConfig, createTransport
|
|
6
|
+
import { useBrowserConfig, createTransport } from './config';
|
|
7
7
|
import { parseOldCookies } from './cookie-migration';
|
|
8
|
+
import { webAttributionPlugin } from '@amplitude/plugin-web-attribution-browser';
|
|
9
|
+
import { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';
|
|
10
|
+
import { sessionHandlerPlugin } from './plugins/session-handler';
|
|
11
|
+
import { formInteractionTracking } from './plugins/form-interaction-tracking';
|
|
12
|
+
import { fileDownloadTracking } from './plugins/file-download-tracking';
|
|
13
|
+
import { DEFAULT_PAGE_VIEW_EVENT, DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';
|
|
8
14
|
var AmplitudeBrowser = /** @class */ (function (_super) {
|
|
9
15
|
__extends(AmplitudeBrowser, _super);
|
|
10
16
|
function AmplitudeBrowser() {
|
|
11
17
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
12
18
|
}
|
|
13
19
|
AmplitudeBrowser.prototype.init = function (apiKey, userId, options) {
|
|
14
|
-
var _a, _b, _c;
|
|
15
20
|
if (apiKey === void 0) { apiKey = ''; }
|
|
21
|
+
return returnWrapper(this._init(__assign(__assign({}, options), { userId: userId, apiKey: apiKey })));
|
|
22
|
+
};
|
|
23
|
+
AmplitudeBrowser.prototype._init = function (options) {
|
|
24
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
16
25
|
return __awaiter(this, void 0, void 0, function () {
|
|
17
|
-
var oldCookies, browserOptions, isNewSession, connector;
|
|
26
|
+
var oldCookies, browserOptions, isNewSession, connector, webAttribution, pageViewTrackingOptions;
|
|
18
27
|
var _this = this;
|
|
19
|
-
return __generator(this, function (
|
|
20
|
-
switch (
|
|
28
|
+
return __generator(this, function (_k) {
|
|
29
|
+
switch (_k.label) {
|
|
21
30
|
case 0:
|
|
22
31
|
// Step 0: Block concurrent initialization
|
|
23
32
|
if (this.initializing) {
|
|
24
33
|
return [2 /*return*/];
|
|
25
34
|
}
|
|
26
35
|
this.initializing = true;
|
|
27
|
-
return [4 /*yield*/, parseOldCookies(apiKey, options)];
|
|
36
|
+
return [4 /*yield*/, parseOldCookies(options.apiKey, options)];
|
|
28
37
|
case 1:
|
|
29
|
-
oldCookies =
|
|
30
|
-
return [4 /*yield*/, useBrowserConfig(apiKey, __assign(__assign({}, options), { deviceId: (_a = oldCookies.deviceId) !== null && _a !== void 0 ? _a : options
|
|
38
|
+
oldCookies = _k.sent();
|
|
39
|
+
return [4 /*yield*/, useBrowserConfig(options.apiKey, __assign(__assign({}, options), { deviceId: (_a = oldCookies.deviceId) !== null && _a !== void 0 ? _a : options.deviceId, sessionId: (_b = oldCookies.sessionId) !== null && _b !== void 0 ? _b : options.sessionId, optOut: (_c = options.optOut) !== null && _c !== void 0 ? _c : oldCookies.optOut, lastEventTime: oldCookies.lastEventTime, userId: (_d = options.userId) !== null && _d !== void 0 ? _d : oldCookies.userId }))];
|
|
31
40
|
case 2:
|
|
32
|
-
browserOptions =
|
|
41
|
+
browserOptions = _k.sent();
|
|
33
42
|
return [4 /*yield*/, _super.prototype._init.call(this, browserOptions)];
|
|
34
43
|
case 3:
|
|
35
|
-
|
|
44
|
+
_k.sent();
|
|
36
45
|
isNewSession = !this.config.lastEventTime;
|
|
37
46
|
if (!this.config.sessionId ||
|
|
38
47
|
(this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)) {
|
|
@@ -52,49 +61,61 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
|
|
|
52
61
|
});
|
|
53
62
|
// Step 4: Install plugins
|
|
54
63
|
// Do not track any events before this
|
|
55
|
-
return [4 /*yield*/, this.add(new
|
|
64
|
+
return [4 /*yield*/, this.add(new Destination()).promise];
|
|
56
65
|
case 4:
|
|
57
66
|
// Step 4: Install plugins
|
|
58
67
|
// Do not track any events before this
|
|
59
|
-
|
|
60
|
-
return [4 /*yield*/, this.add(new
|
|
68
|
+
_k.sent();
|
|
69
|
+
return [4 /*yield*/, this.add(new Context()).promise];
|
|
61
70
|
case 5:
|
|
62
|
-
|
|
63
|
-
return [4 /*yield*/, this.add(
|
|
71
|
+
_k.sent();
|
|
72
|
+
return [4 /*yield*/, this.add(sessionHandlerPlugin()).promise];
|
|
64
73
|
case 6:
|
|
65
|
-
|
|
66
|
-
this.
|
|
67
|
-
// Step 5: Track attributions
|
|
68
|
-
return [4 /*yield*/, this.runAttributionStrategy(browserOptions.attribution, isNewSession)];
|
|
74
|
+
_k.sent();
|
|
75
|
+
return [4 /*yield*/, this.add(new IdentityEventSender()).promise];
|
|
69
76
|
case 7:
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
_k.sent();
|
|
78
|
+
if (!isFileDownloadTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 9];
|
|
79
|
+
return [4 /*yield*/, this.add(fileDownloadTracking()).promise];
|
|
80
|
+
case 8:
|
|
81
|
+
_k.sent();
|
|
82
|
+
_k.label = 9;
|
|
83
|
+
case 9:
|
|
84
|
+
if (!isFormInteractionTrackingEnabled(this.config.defaultTracking)) return [3 /*break*/, 11];
|
|
85
|
+
return [4 /*yield*/, this.add(formInteractionTracking()).promise];
|
|
86
|
+
case 10:
|
|
87
|
+
_k.sent();
|
|
88
|
+
_k.label = 11;
|
|
89
|
+
case 11:
|
|
90
|
+
if (!!((_e = this.config.attribution) === null || _e === void 0 ? void 0 : _e.disabled)) return [3 /*break*/, 13];
|
|
91
|
+
webAttribution = webAttributionPlugin({
|
|
92
|
+
excludeReferrers: (_f = this.config.attribution) === null || _f === void 0 ? void 0 : _f.excludeReferrers,
|
|
93
|
+
initialEmptyValue: (_g = this.config.attribution) === null || _g === void 0 ? void 0 : _g.initialEmptyValue,
|
|
94
|
+
resetSessionOnNewCampaign: (_h = this.config.attribution) === null || _h === void 0 ? void 0 : _h.resetSessionOnNewCampaign,
|
|
95
|
+
});
|
|
96
|
+
// For Amplitude-internal functionality
|
|
97
|
+
// if pluginEnabledOverride === undefined then use plugin default logic
|
|
98
|
+
// if pluginEnabledOverride === true then track attribution
|
|
99
|
+
// if pluginEnabledOverride === false then do not track attribution
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
101
|
+
webAttribution.__pluginEnabledOverride =
|
|
102
|
+
isNewSession || ((_j = this.config.attribution) === null || _j === void 0 ? void 0 : _j.trackNewCampaigns) ? undefined : false;
|
|
103
|
+
return [4 /*yield*/, this.add(webAttribution).promise];
|
|
104
|
+
case 12:
|
|
105
|
+
_k.sent();
|
|
106
|
+
_k.label = 13;
|
|
107
|
+
case 13:
|
|
108
|
+
pageViewTrackingOptions = getPageViewTrackingConfig(this.config);
|
|
109
|
+
pageViewTrackingOptions.eventType = pageViewTrackingOptions.eventType || DEFAULT_PAGE_VIEW_EVENT;
|
|
110
|
+
return [4 /*yield*/, this.add(pageViewTrackingPlugin(pageViewTrackingOptions)).promise];
|
|
111
|
+
case 14:
|
|
112
|
+
_k.sent();
|
|
113
|
+
this.initializing = false;
|
|
72
114
|
// Step 6: Run queued dispatch functions
|
|
73
115
|
return [4 /*yield*/, this.runQueuedFunctions('dispatchQ')];
|
|
74
|
-
case
|
|
116
|
+
case 15:
|
|
75
117
|
// Step 6: Run queued dispatch functions
|
|
76
|
-
|
|
77
|
-
return [2 /*return*/];
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
AmplitudeBrowser.prototype.runAttributionStrategy = function (attributionConfig, isNewSession) {
|
|
83
|
-
if (isNewSession === void 0) { isNewSession = false; }
|
|
84
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
85
|
-
var track, onNewCampaign, storage, campaignTracker;
|
|
86
|
-
return __generator(this, function (_a) {
|
|
87
|
-
switch (_a.label) {
|
|
88
|
-
case 0:
|
|
89
|
-
track = this.track.bind(this);
|
|
90
|
-
onNewCampaign = this.setSessionId.bind(this, Date.now());
|
|
91
|
-
return [4 /*yield*/, createFlexibleStorage(this.config)];
|
|
92
|
-
case 1:
|
|
93
|
-
storage = _a.sent();
|
|
94
|
-
campaignTracker = new CampaignTracker(this.config.apiKey, __assign(__assign({}, attributionConfig), { storage: storage, track: track, onNewCampaign: onNewCampaign }));
|
|
95
|
-
return [4 /*yield*/, campaignTracker.send(isNewSession)];
|
|
96
|
-
case 2:
|
|
97
|
-
_a.sent();
|
|
118
|
+
_k.sent();
|
|
98
119
|
return [2 /*return*/];
|
|
99
120
|
}
|
|
100
121
|
});
|
|
@@ -109,7 +130,11 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
|
|
|
109
130
|
this.q.push(this.setUserId.bind(this, userId));
|
|
110
131
|
return;
|
|
111
132
|
}
|
|
112
|
-
this.config.userId
|
|
133
|
+
if (userId !== this.config.userId) {
|
|
134
|
+
this.previousSessionUserId = this.config.userId;
|
|
135
|
+
this.config.userId = userId;
|
|
136
|
+
this.setSessionId(Date.now());
|
|
137
|
+
}
|
|
113
138
|
};
|
|
114
139
|
AmplitudeBrowser.prototype.getDeviceId = function () {
|
|
115
140
|
var _a;
|
|
@@ -135,8 +160,27 @@ var AmplitudeBrowser = /** @class */ (function (_super) {
|
|
|
135
160
|
this.q.push(this.setSessionId.bind(this, sessionId));
|
|
136
161
|
return;
|
|
137
162
|
}
|
|
163
|
+
var previousSessionId = this.getSessionId();
|
|
164
|
+
var previousLastEventTime = this.config.lastEventTime;
|
|
138
165
|
this.config.sessionId = sessionId;
|
|
139
166
|
this.config.lastEventTime = undefined;
|
|
167
|
+
if (isSessionTrackingEnabled(this.config.defaultTracking)) {
|
|
168
|
+
if (previousSessionId && previousLastEventTime) {
|
|
169
|
+
var eventOptions = {
|
|
170
|
+
session_id: previousSessionId,
|
|
171
|
+
time: previousLastEventTime + 1,
|
|
172
|
+
};
|
|
173
|
+
if (this.previousSessionUserId) {
|
|
174
|
+
eventOptions.user_id = this.previousSessionUserId;
|
|
175
|
+
}
|
|
176
|
+
this.track(DEFAULT_SESSION_END_EVENT, undefined, eventOptions);
|
|
177
|
+
this.previousSessionUserId = undefined;
|
|
178
|
+
}
|
|
179
|
+
this.track(DEFAULT_SESSION_START_EVENT, undefined, {
|
|
180
|
+
session_id: sessionId,
|
|
181
|
+
time: sessionId - 1,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
140
184
|
};
|
|
141
185
|
AmplitudeBrowser.prototype.setTransport = function (transport) {
|
|
142
186
|
if (!this.config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { AmplitudeCore, Destination, Identify, Revenue, UUID } from '@amplitude/analytics-core';\nimport { CampaignTracker, getAnalyticsConnector, IdentityEventSender } from '@amplitude/analytics-client-common';\nimport {\n AttributionOptions,\n BrowserConfig,\n BrowserOptions,\n Campaign,\n EventOptions,\n Identify as IIdentify,\n Result,\n Revenue as IRevenue,\n TransportType,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport, createFlexibleStorage } from './config';\nimport { parseOldCookies } from './cookie-migration';\n\nexport class AmplitudeBrowser extends AmplitudeCore<BrowserConfig> {\n async init(apiKey = '', userId?: string, options?: BrowserOptions) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(apiKey, options);\n\n // Step 2: Create browser config\n const browserOptions = await useBrowserConfig(apiKey, {\n ...options,\n deviceId: oldCookies.deviceId ?? options?.deviceId,\n sessionId: oldCookies.sessionId ?? options?.sessionId,\n optOut: options?.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n userId: userId ?? oldCookies.userId,\n });\n\n await super._init(browserOptions);\n\n // Step 3: Manage session\n let isNewSession = !this.config.lastEventTime;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n isNewSession = true;\n }\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Context());\n await this.add(new IdentityEventSender());\n await this.add(new Destination());\n\n this.initializing = false;\n\n // Step 5: Track attributions\n await this.runAttributionStrategy(browserOptions.attribution, isNewSession);\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n }\n\n async runAttributionStrategy(attributionConfig?: AttributionOptions, isNewSession = false) {\n const track = this.track.bind(this);\n const onNewCampaign = this.setSessionId.bind(this, Date.now());\n\n const storage = await createFlexibleStorage<Campaign>(this.config);\n const campaignTracker = new CampaignTracker(this.config.apiKey, {\n ...attributionConfig,\n storage,\n track,\n onNewCampaign,\n });\n\n await campaignTracker.send(isNewSession);\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n this.config.userId = userId;\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions): Promise<Result> {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(\n groupType: string,\n groupName: string | string[],\n identify: IIdentify,\n eventOptions?: EventOptions,\n ): Promise<Result> {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"browser-client.js","sourceRoot":"","sources":["../../src/browser-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { AmplitudeCore, Destination, Identify, returnWrapper, Revenue, UUID } from '@amplitude/analytics-core';\nimport {\n getAnalyticsConnector,\n getPageViewTrackingConfig,\n IdentityEventSender,\n isSessionTrackingEnabled,\n isFileDownloadTrackingEnabled,\n isFormInteractionTrackingEnabled,\n} from '@amplitude/analytics-client-common';\nimport {\n BrowserClient,\n BrowserConfig,\n BrowserOptions,\n EventOptions,\n Identify as IIdentify,\n Revenue as IRevenue,\n TransportType,\n} from '@amplitude/analytics-types';\nimport { convertProxyObjectToRealObject, isInstanceProxy } from './utils/snippet-helper';\nimport { Context } from './plugins/context';\nimport { useBrowserConfig, createTransport } from './config';\nimport { parseOldCookies } from './cookie-migration';\nimport { webAttributionPlugin } from '@amplitude/plugin-web-attribution-browser';\nimport { pageViewTrackingPlugin } from '@amplitude/plugin-page-view-tracking-browser';\nimport { sessionHandlerPlugin } from './plugins/session-handler';\nimport { formInteractionTracking } from './plugins/form-interaction-tracking';\nimport { fileDownloadTracking } from './plugins/file-download-tracking';\nimport { DEFAULT_PAGE_VIEW_EVENT, DEFAULT_SESSION_END_EVENT, DEFAULT_SESSION_START_EVENT } from './constants';\n\nexport class AmplitudeBrowser extends AmplitudeCore implements BrowserClient {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: BrowserConfig;\n previousSessionUserId: string | undefined;\n\n init(apiKey = '', userId?: string, options?: BrowserOptions) {\n return returnWrapper(this._init({ ...options, userId, apiKey }));\n }\n protected async _init(options: BrowserOptions & { apiKey: string }) {\n // Step 0: Block concurrent initialization\n if (this.initializing) {\n return;\n }\n this.initializing = true;\n\n // Step 1: Read cookies stored by old SDK\n const oldCookies = await parseOldCookies(options.apiKey, options);\n\n // Step 2: Create browser config\n const browserOptions = await useBrowserConfig(options.apiKey, {\n ...options,\n deviceId: oldCookies.deviceId ?? options.deviceId,\n sessionId: oldCookies.sessionId ?? options.sessionId,\n optOut: options.optOut ?? oldCookies.optOut,\n lastEventTime: oldCookies.lastEventTime,\n userId: options.userId ?? oldCookies.userId,\n });\n\n await super._init(browserOptions);\n\n // Step 3: Manage session\n let isNewSession = !this.config.lastEventTime;\n if (\n !this.config.sessionId ||\n (this.config.lastEventTime && Date.now() - this.config.lastEventTime > this.config.sessionTimeout)\n ) {\n // Either\n // 1) No previous session; or\n // 2) Previous session expired\n this.setSessionId(Date.now());\n isNewSession = true;\n }\n\n // Set up the analytics connector to integrate with the experiment SDK.\n // Send events from the experiment SDK and forward identifies to the\n // identity store.\n const connector = getAnalyticsConnector();\n connector.eventBridge.setEventReceiver((event) => {\n void this.track(event.eventType, event.eventProperties);\n });\n connector.identityStore.setIdentity({\n userId: this.config.userId,\n deviceId: this.config.deviceId,\n });\n\n // Step 4: Install plugins\n // Do not track any events before this\n await this.add(new Destination()).promise;\n await this.add(new Context()).promise;\n await this.add(sessionHandlerPlugin()).promise;\n await this.add(new IdentityEventSender()).promise;\n\n if (isFileDownloadTrackingEnabled(this.config.defaultTracking)) {\n await this.add(fileDownloadTracking()).promise;\n }\n\n if (isFormInteractionTrackingEnabled(this.config.defaultTracking)) {\n await this.add(formInteractionTracking()).promise;\n }\n\n // Add web attribution plugin\n if (!this.config.attribution?.disabled) {\n const webAttribution = webAttributionPlugin({\n excludeReferrers: this.config.attribution?.excludeReferrers,\n initialEmptyValue: this.config.attribution?.initialEmptyValue,\n resetSessionOnNewCampaign: this.config.attribution?.resetSessionOnNewCampaign,\n });\n\n // For Amplitude-internal functionality\n // if pluginEnabledOverride === undefined then use plugin default logic\n // if pluginEnabledOverride === true then track attribution\n // if pluginEnabledOverride === false then do not track attribution\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (webAttribution as any).__pluginEnabledOverride =\n isNewSession || this.config.attribution?.trackNewCampaigns ? undefined : false;\n await this.add(webAttribution).promise;\n }\n\n // Add page view plugin\n const pageViewTrackingOptions = getPageViewTrackingConfig(this.config);\n pageViewTrackingOptions.eventType = pageViewTrackingOptions.eventType || DEFAULT_PAGE_VIEW_EVENT;\n await this.add(pageViewTrackingPlugin(pageViewTrackingOptions)).promise;\n\n this.initializing = false;\n\n // Step 6: Run queued dispatch functions\n await this.runQueuedFunctions('dispatchQ');\n }\n\n getUserId() {\n return this.config?.userId;\n }\n\n setUserId(userId: string | undefined) {\n if (!this.config) {\n this.q.push(this.setUserId.bind(this, userId));\n return;\n }\n if (userId !== this.config.userId) {\n this.previousSessionUserId = this.config.userId;\n this.config.userId = userId;\n this.setSessionId(Date.now());\n }\n }\n\n getDeviceId() {\n return this.config?.deviceId;\n }\n\n setDeviceId(deviceId: string) {\n if (!this.config) {\n this.q.push(this.setDeviceId.bind(this, deviceId));\n return;\n }\n this.config.deviceId = deviceId;\n }\n\n reset() {\n this.setUserId(undefined);\n this.setDeviceId(UUID());\n }\n\n getSessionId() {\n return this.config?.sessionId;\n }\n\n setSessionId(sessionId: number) {\n if (!this.config) {\n this.q.push(this.setSessionId.bind(this, sessionId));\n return;\n }\n const previousSessionId = this.getSessionId();\n const previousLastEventTime = this.config.lastEventTime;\n\n this.config.sessionId = sessionId;\n this.config.lastEventTime = undefined;\n\n if (isSessionTrackingEnabled(this.config.defaultTracking)) {\n if (previousSessionId && previousLastEventTime) {\n const eventOptions: EventOptions = {\n session_id: previousSessionId,\n time: previousLastEventTime + 1,\n };\n if (this.previousSessionUserId) {\n eventOptions.user_id = this.previousSessionUserId;\n }\n this.track(DEFAULT_SESSION_END_EVENT, undefined, eventOptions);\n this.previousSessionUserId = undefined;\n }\n\n this.track(DEFAULT_SESSION_START_EVENT, undefined, {\n session_id: sessionId,\n time: sessionId - 1,\n });\n }\n }\n\n setTransport(transport: TransportType) {\n if (!this.config) {\n this.q.push(this.setTransport.bind(this, transport));\n return;\n }\n this.config.transportProvider = createTransport(transport);\n }\n\n identify(identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n if (eventOptions?.user_id) {\n this.setUserId(eventOptions.user_id);\n }\n if (eventOptions?.device_id) {\n this.setDeviceId(eventOptions.device_id);\n }\n return super.identify(identify, eventOptions);\n }\n\n groupIdentify(groupType: string, groupName: string | string[], identify: IIdentify, eventOptions?: EventOptions) {\n if (isInstanceProxy(identify)) {\n const queue = identify._q;\n identify._q = [];\n identify = convertProxyObjectToRealObject(new Identify(), queue);\n }\n return super.groupIdentify(groupType, groupName, identify, eventOptions);\n }\n\n revenue(revenue: IRevenue, eventOptions?: EventOptions) {\n if (isInstanceProxy(revenue)) {\n const queue = revenue._q;\n revenue._q = [];\n revenue = convertProxyObjectToRealObject(new Revenue(), queue);\n }\n return super.revenue(revenue, eventOptions);\n }\n}\n"]}
|