@amplitude/analytics-react-native 0.0.1-dev.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/README.md +0 -0
- package/amplitude-react-native.podspec +21 -0
- package/android/build.gradle +61 -0
- package/android/gradle.properties +3 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativeModule.kt +36 -0
- package/android/src/main/java/com/amplitude/reactnative/AmplitudeReactNativePackage.java +28 -0
- package/android/src/main/java/com/amplitude/reactnative/AndroidContextProvider.kt +415 -0
- package/android/src/main/java/com/amplitude/reactnative/AndroidLogger.kt +56 -0
- package/android/src/main/java/com/amplitude/reactnative/Utils.kt +34 -0
- package/ios/AmplitudeReactNative-Bridging-Header.h +5 -0
- package/ios/AmplitudeReactNative.m +7 -0
- package/ios/AmplitudeReactNative.swift +29 -0
- package/ios/AmplitudeReactNative.xcodeproj/project.pbxproj +293 -0
- package/ios/AppleContextProvider.swift +219 -0
- package/lib/commonjs/attribution/campaign-parser.js +74 -0
- package/lib/commonjs/attribution/campaign-parser.js.map +1 -0
- package/lib/commonjs/attribution/campaign-tracker.js +133 -0
- package/lib/commonjs/attribution/campaign-tracker.js.map +1 -0
- package/lib/commonjs/attribution/constants.js +47 -0
- package/lib/commonjs/attribution/constants.js.map +1 -0
- package/lib/commonjs/config.js +257 -0
- package/lib/commonjs/config.js.map +1 -0
- package/lib/commonjs/constants.js +31 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/cookie-migration/index.js +74 -0
- package/lib/commonjs/cookie-migration/index.js.map +1 -0
- package/lib/commonjs/index.js +141 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/plugins/context.js +136 -0
- package/lib/commonjs/plugins/context.js.map +1 -0
- package/lib/commonjs/react-native-client.js +362 -0
- package/lib/commonjs/react-native-client.js.map +1 -0
- package/lib/commonjs/session-manager.js +114 -0
- package/lib/commonjs/session-manager.js.map +1 -0
- package/lib/commonjs/storage/cookie.js +124 -0
- package/lib/commonjs/storage/cookie.js.map +1 -0
- package/lib/commonjs/storage/local-storage.js +79 -0
- package/lib/commonjs/storage/local-storage.js.map +1 -0
- package/lib/commonjs/storage/utm-cookie.js +42 -0
- package/lib/commonjs/storage/utm-cookie.js.map +1 -0
- package/lib/commonjs/transports/fetch.js +34 -0
- package/lib/commonjs/transports/fetch.js.map +1 -0
- package/lib/commonjs/transports/send-beacon.js +43 -0
- package/lib/commonjs/transports/send-beacon.js.map +1 -0
- package/lib/commonjs/transports/xhr.js +54 -0
- package/lib/commonjs/transports/xhr.js.map +1 -0
- package/lib/commonjs/typings/browser-snippet.d.js +6 -0
- package/lib/commonjs/typings/browser-snippet.d.js.map +1 -0
- package/lib/commonjs/typings/ua-parser.d.js +2 -0
- package/lib/commonjs/typings/ua-parser.d.js.map +1 -0
- package/lib/commonjs/utils/cookie-name.js +23 -0
- package/lib/commonjs/utils/cookie-name.js.map +1 -0
- package/lib/commonjs/utils/language.js +18 -0
- package/lib/commonjs/utils/language.js.map +1 -0
- package/lib/commonjs/utils/platform.js +21 -0
- package/lib/commonjs/utils/platform.js.map +1 -0
- package/lib/commonjs/utils/query-params.js +36 -0
- package/lib/commonjs/utils/query-params.js.map +1 -0
- package/lib/commonjs/utils/snippet-helper.js +56 -0
- package/lib/commonjs/utils/snippet-helper.js.map +1 -0
- package/lib/commonjs/version.js +9 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/attribution/campaign-parser.js +62 -0
- package/lib/module/attribution/campaign-parser.js.map +1 -0
- package/lib/module/attribution/campaign-tracker.js +120 -0
- package/lib/module/attribution/campaign-tracker.js.map +1 -0
- package/lib/module/attribution/constants.js +26 -0
- package/lib/module/attribution/constants.js.map +1 -0
- package/lib/module/config.js +217 -0
- package/lib/module/config.js.map +1 -0
- package/lib/module/constants.js +13 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/cookie-migration/index.js +56 -0
- package/lib/module/cookie-migration/index.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/plugins/context.js +118 -0
- package/lib/module/plugins/context.js.map +1 -0
- package/lib/module/react-native-client.js +329 -0
- package/lib/module/react-native-client.js.map +1 -0
- package/lib/module/session-manager.js +104 -0
- package/lib/module/session-manager.js.map +1 -0
- package/lib/module/storage/cookie.js +114 -0
- package/lib/module/storage/cookie.js.map +1 -0
- package/lib/module/storage/local-storage.js +67 -0
- package/lib/module/storage/local-storage.js.map +1 -0
- package/lib/module/storage/utm-cookie.js +32 -0
- package/lib/module/storage/utm-cookie.js.map +1 -0
- package/lib/module/transports/fetch.js +24 -0
- package/lib/module/transports/fetch.js.map +1 -0
- package/lib/module/transports/send-beacon.js +33 -0
- package/lib/module/transports/send-beacon.js.map +1 -0
- package/lib/module/transports/xhr.js +44 -0
- package/lib/module/transports/xhr.js.map +1 -0
- package/lib/module/typings/browser-snippet.d.js +2 -0
- package/lib/module/typings/browser-snippet.d.js.map +1 -0
- package/lib/module/typings/ua-parser.d.js +2 -0
- package/lib/module/typings/ua-parser.d.js.map +1 -0
- package/lib/module/utils/cookie-name.js +10 -0
- package/lib/module/utils/cookie-name.js.map +1 -0
- package/lib/module/utils/language.js +9 -0
- package/lib/module/utils/language.js.map +1 -0
- package/lib/module/utils/platform.js +8 -0
- package/lib/module/utils/platform.js.map +1 -0
- package/lib/module/utils/query-params.js +26 -0
- package/lib/module/utils/query-params.js.map +1 -0
- package/lib/module/utils/snippet-helper.js +41 -0
- package/lib/module/utils/snippet-helper.js.map +1 -0
- package/lib/module/version.js +2 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/attribution/campaign-parser.d.ts +10 -0
- package/lib/typescript/attribution/campaign-parser.d.ts.map +1 -0
- package/lib/typescript/attribution/campaign-tracker.d.ts +72 -0
- package/lib/typescript/attribution/campaign-tracker.d.ts.map +1 -0
- package/lib/typescript/attribution/constants.d.ts +17 -0
- package/lib/typescript/attribution/constants.d.ts.map +1 -0
- package/lib/typescript/config.d.ts +90 -0
- package/lib/typescript/config.d.ts.map +1 -0
- package/lib/typescript/constants.d.ts +13 -0
- package/lib/typescript/constants.d.ts.map +1 -0
- package/lib/typescript/cookie-migration/index.d.ts +5 -0
- package/lib/typescript/cookie-migration/index.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +6 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/plugins/context.d.ts +31 -0
- package/lib/typescript/plugins/context.d.ts.map +1 -0
- package/lib/typescript/react-native-client.d.ts +209 -0
- package/lib/typescript/react-native-client.d.ts.map +1 -0
- package/lib/typescript/session-manager.d.ts +28 -0
- package/lib/typescript/session-manager.d.ts.map +1 -0
- package/lib/typescript/storage/cookie.d.ts +12 -0
- package/lib/typescript/storage/cookie.d.ts.map +1 -0
- package/lib/typescript/storage/local-storage.d.ts +10 -0
- package/lib/typescript/storage/local-storage.d.ts.map +1 -0
- package/lib/typescript/storage/utm-cookie.d.ts +6 -0
- package/lib/typescript/storage/utm-cookie.d.ts.map +1 -0
- package/lib/typescript/transports/fetch.d.ts +6 -0
- package/lib/typescript/transports/fetch.d.ts.map +1 -0
- package/lib/typescript/transports/send-beacon.d.ts +6 -0
- package/lib/typescript/transports/send-beacon.d.ts.map +1 -0
- package/lib/typescript/transports/xhr.d.ts +7 -0
- package/lib/typescript/transports/xhr.d.ts.map +1 -0
- package/lib/typescript/utils/cookie-name.d.ts +3 -0
- package/lib/typescript/utils/cookie-name.d.ts.map +1 -0
- package/lib/typescript/utils/language.d.ts +2 -0
- package/lib/typescript/utils/language.d.ts.map +1 -0
- package/lib/typescript/utils/platform.d.ts +3 -0
- package/lib/typescript/utils/platform.d.ts.map +1 -0
- package/lib/typescript/utils/query-params.d.ts +2 -0
- package/lib/typescript/utils/query-params.d.ts.map +1 -0
- package/lib/typescript/utils/snippet-helper.d.ts +16 -0
- package/lib/typescript/utils/snippet-helper.d.ts.map +1 -0
- package/lib/typescript/version.d.ts +2 -0
- package/lib/typescript/version.d.ts.map +1 -0
- package/package.json +93 -0
- package/src/attribution/campaign-parser.ts +78 -0
- package/src/attribution/campaign-tracker.ts +112 -0
- package/src/attribution/constants.ts +32 -0
- package/src/config.ts +210 -0
- package/src/constants.ts +14 -0
- package/src/cookie-migration/index.ts +54 -0
- package/src/index.ts +23 -0
- package/src/plugins/context.ts +106 -0
- package/src/react-native-client.ts +349 -0
- package/src/session-manager.ts +81 -0
- package/src/storage/cookie.ts +95 -0
- package/src/storage/local-storage.ts +67 -0
- package/src/storage/utm-cookie.ts +27 -0
- package/src/transports/fetch.ts +23 -0
- package/src/transports/send-beacon.ts +34 -0
- package/src/transports/xhr.ts +36 -0
- package/src/typings/browser-snippet.d.ts +7 -0
- package/src/typings/ua-parser.d.ts +4 -0
- package/src/utils/cookie-name.ts +9 -0
- package/src/utils/language.ts +7 -0
- package/src/utils/platform.ts +9 -0
- package/src/utils/query-params.ts +21 -0
- package/src/utils/snippet-helper.ts +35 -0
- package/src/version.ts +1 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getLanguage = void 0;
|
|
7
|
+
|
|
8
|
+
const getLanguage = () => {
|
|
9
|
+
var _ref, _ref2, _navigator$languages$, _navigator$languages;
|
|
10
|
+
|
|
11
|
+
if (typeof navigator === 'undefined') return ''; // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
12
|
+
|
|
13
|
+
const userLanguage = navigator.userLanguage;
|
|
14
|
+
return (_ref = (_ref2 = (_navigator$languages$ = (_navigator$languages = navigator.languages) === null || _navigator$languages === void 0 ? void 0 : _navigator$languages[0]) !== null && _navigator$languages$ !== void 0 ? _navigator$languages$ : navigator.language) !== null && _ref2 !== void 0 ? _ref2 : userLanguage) !== null && _ref !== void 0 ? _ref : '';
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.getLanguage = getLanguage;
|
|
18
|
+
//# sourceMappingURL=language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getLanguage","navigator","userLanguage","languages","language"],"sources":["language.ts"],"sourcesContent":["export const getLanguage = (): string => {\n if (typeof navigator === 'undefined') return '';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const userLanguage = (navigator as any).userLanguage as string | undefined;\n\n return navigator.languages?.[0] ?? navigator.language ?? userLanguage ?? '';\n};\n"],"mappings":";;;;;;;AAAO,MAAMA,WAAW,GAAG,MAAc;EAAA;;EACvC,IAAI,OAAOC,SAAP,KAAqB,WAAzB,EAAsC,OAAO,EAAP,CADC,CAEvC;;EACA,MAAMC,YAAY,GAAID,SAAD,CAAmBC,YAAxC;EAEA,yEAAOD,SAAS,CAACE,SAAjB,yDAAO,qBAAsB,CAAtB,CAAP,yEAAmCF,SAAS,CAACG,QAA7C,yCAAyDF,YAAzD,uCAAyE,EAAzE;AACD,CANM"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isWeb = exports.isNative = void 0;
|
|
7
|
+
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
|
|
10
|
+
const isWeb = () => {
|
|
11
|
+
return _reactNative.Platform.OS === 'web';
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.isWeb = isWeb;
|
|
15
|
+
|
|
16
|
+
const isNative = () => {
|
|
17
|
+
return !isWeb();
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
exports.isNative = isNative;
|
|
21
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isWeb","Platform","OS","isNative"],"sources":["platform.ts"],"sourcesContent":["import { Platform } from 'react-native';\n\nexport const isWeb = (): boolean => {\n return Platform.OS === 'web';\n};\n\nexport const isNative = (): boolean => {\n return !isWeb();\n};\n"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,KAAK,GAAG,MAAe;EAClC,OAAOC,qBAAA,CAASC,EAAT,KAAgB,KAAvB;AACD,CAFM;;;;AAIA,MAAMC,QAAQ,GAAG,MAAe;EACrC,OAAO,CAACH,KAAK,EAAb;AACD,CAFM"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getQueryParams = void 0;
|
|
7
|
+
|
|
8
|
+
var _platform = require("./platform");
|
|
9
|
+
|
|
10
|
+
const getQueryParams = () => {
|
|
11
|
+
if ((0, _platform.isNative)()) {
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
/* istanbul ignore if */
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
if (typeof window === 'undefined') {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const pairs = window.location.search.substring(1).split('&').filter(Boolean);
|
|
22
|
+
const params = pairs.reduce((acc, curr) => {
|
|
23
|
+
const [key, value = ''] = curr.split('=', 2);
|
|
24
|
+
|
|
25
|
+
if (!value) {
|
|
26
|
+
return acc;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
acc[decodeURIComponent(key)] = decodeURIComponent(value);
|
|
30
|
+
return acc;
|
|
31
|
+
}, {});
|
|
32
|
+
return params;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.getQueryParams = getQueryParams;
|
|
36
|
+
//# sourceMappingURL=query-params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getQueryParams","isNative","window","pairs","location","search","substring","split","filter","Boolean","params","reduce","acc","curr","key","value","decodeURIComponent"],"sources":["query-params.ts"],"sourcesContent":["import { isNative } from './platform';\n\nexport const getQueryParams = (): Record<string, string | undefined> => {\n if (isNative()) {\n return {};\n }\n /* istanbul ignore if */\n if (typeof window === 'undefined') {\n return {};\n }\n const pairs = window.location.search.substring(1).split('&').filter(Boolean);\n const params = pairs.reduce<Record<string, string | undefined>>((acc, curr) => {\n const [key, value = ''] = curr.split('=', 2);\n if (!value) {\n return acc;\n }\n acc[decodeURIComponent(key)] = decodeURIComponent(value);\n return acc;\n }, {});\n return params;\n};\n"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,cAAc,GAAG,MAA0C;EACtE,IAAI,IAAAC,kBAAA,GAAJ,EAAgB;IACd,OAAO,EAAP;EACD;EACD;;;EACA,IAAI,OAAOC,MAAP,KAAkB,WAAtB,EAAmC;IACjC,OAAO,EAAP;EACD;;EACD,MAAMC,KAAK,GAAGD,MAAM,CAACE,QAAP,CAAgBC,MAAhB,CAAuBC,SAAvB,CAAiC,CAAjC,EAAoCC,KAApC,CAA0C,GAA1C,EAA+CC,MAA/C,CAAsDC,OAAtD,CAAd;EACA,MAAMC,MAAM,GAAGP,KAAK,CAACQ,MAAN,CAAiD,CAACC,GAAD,EAAMC,IAAN,KAAe;IAC7E,MAAM,CAACC,GAAD,EAAMC,KAAK,GAAG,EAAd,IAAoBF,IAAI,CAACN,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAA1B;;IACA,IAAI,CAACQ,KAAL,EAAY;MACV,OAAOH,GAAP;IACD;;IACDA,GAAG,CAACI,kBAAkB,CAACF,GAAD,CAAnB,CAAH,GAA+BE,kBAAkB,CAACD,KAAD,CAAjD;IACA,OAAOH,GAAP;EACD,CAPc,EAOZ,EAPY,CAAf;EAQA,OAAOF,MAAP;AACD,CAlBM"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.runQueuedFunctions = exports.isInstanceProxy = exports.convertProxyObjectToRealObject = void 0;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.
|
|
10
|
+
* @ignore
|
|
11
|
+
*/
|
|
12
|
+
const runQueuedFunctions = (instance, queue) => {
|
|
13
|
+
convertProxyObjectToRealObject(instance, queue);
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Applies the proxied functions on the proxied object to an instance of the real object.
|
|
17
|
+
* Used to convert proxied Identify and Revenue objects.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
exports.runQueuedFunctions = runQueuedFunctions;
|
|
22
|
+
|
|
23
|
+
const convertProxyObjectToRealObject = (instance, queue) => {
|
|
24
|
+
for (let i = 0; i < queue.length; i++) {
|
|
25
|
+
const {
|
|
26
|
+
name,
|
|
27
|
+
args,
|
|
28
|
+
resolve
|
|
29
|
+
} = queue[i];
|
|
30
|
+
const fn = instance && instance[name];
|
|
31
|
+
|
|
32
|
+
if (typeof fn === 'function') {
|
|
33
|
+
const result = fn.apply(instance, args);
|
|
34
|
+
|
|
35
|
+
if (typeof resolve === 'function') {
|
|
36
|
+
resolve(result === null || result === void 0 ? void 0 : result.promise);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return instance;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Check if the param is snippet proxy
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
exports.convertProxyObjectToRealObject = convertProxyObjectToRealObject;
|
|
49
|
+
|
|
50
|
+
const isInstanceProxy = instance => {
|
|
51
|
+
const instanceProxy = instance;
|
|
52
|
+
return instanceProxy && instanceProxy._q !== undefined;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
exports.isInstanceProxy = isInstanceProxy;
|
|
56
|
+
//# sourceMappingURL=snippet-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["runQueuedFunctions","instance","queue","convertProxyObjectToRealObject","i","length","name","args","resolve","fn","result","apply","promise","isInstanceProxy","instanceProxy","_q","undefined"],"sources":["snippet-helper.ts"],"sourcesContent":["import { AmplitudeReturn, InstanceProxy, QueueProxy, Result } from '@amplitude/analytics-types';\n\n/**\n * Applies the proxied functions on the proxied amplitude snippet to an instance of the real object.\n * @ignore\n */\nexport const runQueuedFunctions = (instance: object, queue: QueueProxy) => {\n convertProxyObjectToRealObject(instance, queue);\n};\n\n/**\n * Applies the proxied functions on the proxied object to an instance of the real object.\n * Used to convert proxied Identify and Revenue objects.\n */\nexport const convertProxyObjectToRealObject = <T>(instance: T, queue: QueueProxy): T => {\n for (let i = 0; i < queue.length; i++) {\n const { name, args, resolve } = queue[i];\n const fn = instance && instance[name as keyof T];\n if (typeof fn === 'function') {\n const result = fn.apply(instance, args) as AmplitudeReturn<Result>;\n if (typeof resolve === 'function') {\n resolve(result?.promise);\n }\n }\n }\n return instance;\n};\n\n/**\n * Check if the param is snippet proxy\n */\nexport const isInstanceProxy = (instance: unknown): instance is InstanceProxy => {\n const instanceProxy = instance as InstanceProxy;\n return instanceProxy && instanceProxy._q !== undefined;\n};\n"],"mappings":";;;;;;;AAEA;AACA;AACA;AACA;AACO,MAAMA,kBAAkB,GAAG,CAACC,QAAD,EAAmBC,KAAnB,KAAyC;EACzEC,8BAA8B,CAACF,QAAD,EAAWC,KAAX,CAA9B;AACD,CAFM;AAIP;AACA;AACA;AACA;;;;;AACO,MAAMC,8BAA8B,GAAG,CAAIF,QAAJ,EAAiBC,KAAjB,KAA0C;EACtF,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,KAAK,CAACG,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;IACrC,MAAM;MAAEE,IAAF;MAAQC,IAAR;MAAcC;IAAd,IAA0BN,KAAK,CAACE,CAAD,CAArC;IACA,MAAMK,EAAE,GAAGR,QAAQ,IAAIA,QAAQ,CAACK,IAAD,CAA/B;;IACA,IAAI,OAAOG,EAAP,KAAc,UAAlB,EAA8B;MAC5B,MAAMC,MAAM,GAAGD,EAAE,CAACE,KAAH,CAASV,QAAT,EAAmBM,IAAnB,CAAf;;MACA,IAAI,OAAOC,OAAP,KAAmB,UAAvB,EAAmC;QACjCA,OAAO,CAACE,MAAD,aAACA,MAAD,uBAACA,MAAM,CAAEE,OAAT,CAAP;MACD;IACF;EACF;;EACD,OAAOX,QAAP;AACD,CAZM;AAcP;AACA;AACA;;;;;AACO,MAAMY,eAAe,GAAIZ,QAAD,IAAkD;EAC/E,MAAMa,aAAa,GAAGb,QAAtB;EACA,OAAOa,aAAa,IAAIA,aAAa,CAACC,EAAd,KAAqBC,SAA7C;AACD,CAHM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["VERSION"],"sources":["version.ts"],"sourcesContent":["export const VERSION = '0.0.1-dev.0';\n"],"mappings":";;;;;;AAAO,MAAMA,OAAO,GAAG,aAAhB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import { UTMCookie } from '../storage/utm-cookie';
|
|
4
|
+
import { getQueryParams } from '../utils/query-params';
|
|
5
|
+
import { UTM_CAMPAIGN, UTM_CONTENT, UTM_MEDIUM, UTM_SOURCE, UTM_TERM, UTMZ_SOURCE, UTMZ_MEDIUM, UTMZ_CAMPAIGN, UTMZ_TERM, UTMZ_CONTENT, GCLID, FBCLID, BASE_CAMPAIGN } from './constants';
|
|
6
|
+
export class CampaignParser {
|
|
7
|
+
constructor() {
|
|
8
|
+
_defineProperty(this, "utmCookieStorage", new UTMCookie());
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
async parse() {
|
|
12
|
+
return { ...BASE_CAMPAIGN,
|
|
13
|
+
...(await this.getUtmParam()),
|
|
14
|
+
...this.getReferrer(),
|
|
15
|
+
...this.getClickIds()
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async getUtmParam() {
|
|
20
|
+
const params = getQueryParams();
|
|
21
|
+
const cookies = (await this.utmCookieStorage.isEnabled()) && (await this.utmCookieStorage.get('__utmz')) || {};
|
|
22
|
+
const utmSource = params[UTM_SOURCE] || cookies[UTMZ_SOURCE];
|
|
23
|
+
const utmMedium = params[UTM_MEDIUM] || cookies[UTMZ_MEDIUM];
|
|
24
|
+
const utmCampaign = params[UTM_CAMPAIGN] || cookies[UTMZ_CAMPAIGN];
|
|
25
|
+
const utmTerm = params[UTM_TERM] || cookies[UTMZ_TERM];
|
|
26
|
+
const utmContent = params[UTM_CONTENT] || cookies[UTMZ_CONTENT];
|
|
27
|
+
return {
|
|
28
|
+
utm_source: utmSource,
|
|
29
|
+
utm_medium: utmMedium,
|
|
30
|
+
utm_campaign: utmCampaign,
|
|
31
|
+
utm_term: utmTerm,
|
|
32
|
+
utm_content: utmContent
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
getReferrer() {
|
|
37
|
+
const data = {
|
|
38
|
+
referrer: undefined,
|
|
39
|
+
referring_domain: undefined
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
var _data$referrer$split$, _data$referrer;
|
|
44
|
+
|
|
45
|
+
data.referrer = document.referrer || undefined;
|
|
46
|
+
data.referring_domain = (_data$referrer$split$ = (_data$referrer = data.referrer) === null || _data$referrer === void 0 ? void 0 : _data$referrer.split('/')[2]) !== null && _data$referrer$split$ !== void 0 ? _data$referrer$split$ : undefined;
|
|
47
|
+
} catch {// nothing to track
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return data;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
getClickIds() {
|
|
54
|
+
const params = getQueryParams();
|
|
55
|
+
return {
|
|
56
|
+
[GCLID]: params[GCLID],
|
|
57
|
+
[FBCLID]: params[FBCLID]
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=campaign-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["UTMCookie","getQueryParams","UTM_CAMPAIGN","UTM_CONTENT","UTM_MEDIUM","UTM_SOURCE","UTM_TERM","UTMZ_SOURCE","UTMZ_MEDIUM","UTMZ_CAMPAIGN","UTMZ_TERM","UTMZ_CONTENT","GCLID","FBCLID","BASE_CAMPAIGN","CampaignParser","parse","getUtmParam","getReferrer","getClickIds","params","cookies","utmCookieStorage","isEnabled","get","utmSource","utmMedium","utmCampaign","utmTerm","utmContent","utm_source","utm_medium","utm_campaign","utm_term","utm_content","data","referrer","undefined","referring_domain","document","split"],"sources":["campaign-parser.ts"],"sourcesContent":["import { UTMCookie } from '../storage/utm-cookie';\nimport { getQueryParams } from '../utils/query-params';\nimport {\n UTM_CAMPAIGN,\n UTM_CONTENT,\n UTM_MEDIUM,\n UTM_SOURCE,\n UTM_TERM,\n UTMZ_SOURCE,\n UTMZ_MEDIUM,\n UTMZ_CAMPAIGN,\n UTMZ_TERM,\n UTMZ_CONTENT,\n GCLID,\n FBCLID,\n BASE_CAMPAIGN,\n} from './constants';\nimport {\n Campaign,\n CampaignParser as ICampaignParser,\n ClickIdParameters,\n ReferrerParameters,\n UTMParameters,\n} from '@amplitude/analytics-types';\n\nexport class CampaignParser implements ICampaignParser {\n utmCookieStorage = new UTMCookie();\n\n async parse(): Promise<Campaign> {\n return {\n ...BASE_CAMPAIGN,\n ...(await this.getUtmParam()),\n ...this.getReferrer(),\n ...this.getClickIds(),\n } as Campaign;\n }\n\n async getUtmParam(): Promise<UTMParameters> {\n const params = getQueryParams();\n const cookies = ((await this.utmCookieStorage.isEnabled()) && (await this.utmCookieStorage.get('__utmz'))) || {};\n\n const utmSource = params[UTM_SOURCE] || cookies[UTMZ_SOURCE];\n const utmMedium = params[UTM_MEDIUM] || cookies[UTMZ_MEDIUM];\n const utmCampaign = params[UTM_CAMPAIGN] || cookies[UTMZ_CAMPAIGN];\n const utmTerm = params[UTM_TERM] || cookies[UTMZ_TERM];\n const utmContent = params[UTM_CONTENT] || cookies[UTMZ_CONTENT];\n\n return {\n utm_source: utmSource,\n utm_medium: utmMedium,\n utm_campaign: utmCampaign,\n utm_term: utmTerm,\n utm_content: utmContent,\n };\n }\n\n getReferrer(): ReferrerParameters {\n const data: ReferrerParameters = {\n referrer: undefined,\n referring_domain: undefined,\n };\n try {\n data.referrer = document.referrer || undefined;\n data.referring_domain = data.referrer?.split('/')[2] ?? undefined;\n } catch {\n // nothing to track\n }\n return data;\n }\n\n getClickIds(): ClickIdParameters {\n const params = getQueryParams();\n return {\n [GCLID]: params[GCLID],\n [FBCLID]: params[FBCLID],\n };\n }\n}\n"],"mappings":";;AAAA,SAASA,SAAT,QAA0B,uBAA1B;AACA,SAASC,cAAT,QAA+B,uBAA/B;AACA,SACEC,YADF,EAEEC,WAFF,EAGEC,UAHF,EAIEC,UAJF,EAKEC,QALF,EAMEC,WANF,EAOEC,WAPF,EAQEC,aARF,EASEC,SATF,EAUEC,YAVF,EAWEC,KAXF,EAYEC,MAZF,EAaEC,aAbF,QAcO,aAdP;AAuBA,OAAO,MAAMC,cAAN,CAAgD;EAAA;IAAA,0CAClC,IAAIf,SAAJ,EADkC;EAAA;;EAG1C,MAALgB,KAAK,GAAsB;IAC/B,OAAO,EACL,GAAGF,aADE;MAEL,IAAI,MAAM,KAAKG,WAAL,EAAV,CAFK;MAGL,GAAG,KAAKC,WAAL,EAHE;MAIL,GAAG,KAAKC,WAAL;IAJE,CAAP;EAMD;;EAEgB,MAAXF,WAAW,GAA2B;IAC1C,MAAMG,MAAM,GAAGnB,cAAc,EAA7B;IACA,MAAMoB,OAAO,GAAI,CAAC,MAAM,KAAKC,gBAAL,CAAsBC,SAAtB,EAAP,MAA8C,MAAM,KAAKD,gBAAL,CAAsBE,GAAtB,CAA0B,QAA1B,CAApD,CAAD,IAA8F,EAA9G;IAEA,MAAMC,SAAS,GAAGL,MAAM,CAACf,UAAD,CAAN,IAAsBgB,OAAO,CAACd,WAAD,CAA/C;IACA,MAAMmB,SAAS,GAAGN,MAAM,CAAChB,UAAD,CAAN,IAAsBiB,OAAO,CAACb,WAAD,CAA/C;IACA,MAAMmB,WAAW,GAAGP,MAAM,CAAClB,YAAD,CAAN,IAAwBmB,OAAO,CAACZ,aAAD,CAAnD;IACA,MAAMmB,OAAO,GAAGR,MAAM,CAACd,QAAD,CAAN,IAAoBe,OAAO,CAACX,SAAD,CAA3C;IACA,MAAMmB,UAAU,GAAGT,MAAM,CAACjB,WAAD,CAAN,IAAuBkB,OAAO,CAACV,YAAD,CAAjD;IAEA,OAAO;MACLmB,UAAU,EAAEL,SADP;MAELM,UAAU,EAAEL,SAFP;MAGLM,YAAY,EAAEL,WAHT;MAILM,QAAQ,EAAEL,OAJL;MAKLM,WAAW,EAAEL;IALR,CAAP;EAOD;;EAEDX,WAAW,GAAuB;IAChC,MAAMiB,IAAwB,GAAG;MAC/BC,QAAQ,EAAEC,SADqB;MAE/BC,gBAAgB,EAAED;IAFa,CAAjC;;IAIA,IAAI;MAAA;;MACFF,IAAI,CAACC,QAAL,GAAgBG,QAAQ,CAACH,QAAT,IAAqBC,SAArC;MACAF,IAAI,CAACG,gBAAL,8CAAwBH,IAAI,CAACC,QAA7B,mDAAwB,eAAeI,KAAf,CAAqB,GAArB,EAA0B,CAA1B,CAAxB,yEAAwDH,SAAxD;IACD,CAHD,CAGE,MAAM,CACN;IACD;;IACD,OAAOF,IAAP;EACD;;EAEDhB,WAAW,GAAsB;IAC/B,MAAMC,MAAM,GAAGnB,cAAc,EAA7B;IACA,OAAO;MACL,CAACW,KAAD,GAASQ,MAAM,CAACR,KAAD,CADV;MAEL,CAACC,MAAD,GAAUO,MAAM,CAACP,MAAD;IAFX,CAAP;EAID;;AAnDoD"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';
|
|
4
|
+
import { getCookieName as getStorageKey } from '../utils/cookie-name';
|
|
5
|
+
import { CampaignParser } from './campaign-parser';
|
|
6
|
+
import { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';
|
|
7
|
+
export class CampaignTracker {
|
|
8
|
+
constructor(apiKey, options) {
|
|
9
|
+
var _options$excludeRefer, _options$initialEmpty;
|
|
10
|
+
|
|
11
|
+
_defineProperty(this, "storage", void 0);
|
|
12
|
+
|
|
13
|
+
_defineProperty(this, "storageKey", void 0);
|
|
14
|
+
|
|
15
|
+
_defineProperty(this, "parser", void 0);
|
|
16
|
+
|
|
17
|
+
_defineProperty(this, "track", void 0);
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "onNewCampaign", void 0);
|
|
20
|
+
|
|
21
|
+
_defineProperty(this, "disabled", void 0);
|
|
22
|
+
|
|
23
|
+
_defineProperty(this, "trackNewCampaigns", void 0);
|
|
24
|
+
|
|
25
|
+
_defineProperty(this, "trackPageViews", void 0);
|
|
26
|
+
|
|
27
|
+
_defineProperty(this, "excludeReferrers", void 0);
|
|
28
|
+
|
|
29
|
+
_defineProperty(this, "initialEmptyValue", void 0);
|
|
30
|
+
|
|
31
|
+
this.storage = options.storage;
|
|
32
|
+
this.storageKey = getStorageKey(apiKey, MKTG);
|
|
33
|
+
this.parser = new CampaignParser();
|
|
34
|
+
this.track = options.track;
|
|
35
|
+
this.onNewCampaign = options.onNewCampaign;
|
|
36
|
+
this.disabled = Boolean(options.disabled);
|
|
37
|
+
this.trackNewCampaigns = Boolean(options.trackNewCampaigns);
|
|
38
|
+
this.trackPageViews = options.trackPageViews === undefined || Boolean(options.trackPageViews);
|
|
39
|
+
this.excludeReferrers = (_options$excludeRefer = options.excludeReferrers) !== null && _options$excludeRefer !== void 0 ? _options$excludeRefer : [];
|
|
40
|
+
|
|
41
|
+
if (typeof location !== 'undefined') {
|
|
42
|
+
this.excludeReferrers.unshift(location.hostname);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
this.initialEmptyValue = (_options$initialEmpty = options.initialEmptyValue) !== null && _options$initialEmpty !== void 0 ? _options$initialEmpty : EMPTY_VALUE;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
isNewCampaign(currentCampaign, previousCampaign) {
|
|
49
|
+
const isReferrerExcluded = Boolean(currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain));
|
|
50
|
+
const hasNewUtm = previousCampaign.utm_campaign !== currentCampaign.utm_campaign || previousCampaign.utm_source !== currentCampaign.utm_source || previousCampaign.utm_medium !== currentCampaign.utm_medium || previousCampaign.utm_term !== currentCampaign.utm_term || previousCampaign.utm_content !== currentCampaign.utm_content;
|
|
51
|
+
const hasNewReferrer = previousCampaign.referring_domain !== currentCampaign.referring_domain;
|
|
52
|
+
return !isReferrerExcluded && (hasNewUtm || hasNewReferrer);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async saveCampaignToStorage(campaign) {
|
|
56
|
+
await this.storage.set(this.storageKey, campaign);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async getCampaignFromStorage() {
|
|
60
|
+
return (await this.storage.get(this.storageKey)) || { ...BASE_CAMPAIGN
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
createCampaignEvent(campaign) {
|
|
65
|
+
const campaignParameters = { // This object definition allows undefined keys to be iterated on
|
|
66
|
+
// in .reduce() to build indentify object
|
|
67
|
+
...BASE_CAMPAIGN,
|
|
68
|
+
...campaign
|
|
69
|
+
};
|
|
70
|
+
const identifyEvent = Object.entries(campaignParameters).reduce((identify, _ref) => {
|
|
71
|
+
let [key, value] = _ref;
|
|
72
|
+
identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);
|
|
73
|
+
|
|
74
|
+
if (value) {
|
|
75
|
+
return identify.set(key, value);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return identify.unset(key);
|
|
79
|
+
}, new Identify());
|
|
80
|
+
const pageViewEvent = {
|
|
81
|
+
event_type: 'Page View',
|
|
82
|
+
event_properties: {
|
|
83
|
+
page_title:
|
|
84
|
+
/* istanbul ignore next */
|
|
85
|
+
typeof document !== 'undefined' && document.title || '',
|
|
86
|
+
page_location:
|
|
87
|
+
/* istanbul ignore next */
|
|
88
|
+
typeof location !== 'undefined' && location.href || '',
|
|
89
|
+
page_path:
|
|
90
|
+
/* istanbul ignore next */
|
|
91
|
+
typeof location !== 'undefined' && location.pathname || ''
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
return { ...createIdentifyEvent(identifyEvent),
|
|
95
|
+
...(this.trackPageViews && pageViewEvent)
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
async send(isNewSession) {
|
|
100
|
+
if (this.disabled) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const currentCampaign = await this.parser.parse();
|
|
105
|
+
const previousCampaign = await this.getCampaignFromStorage();
|
|
106
|
+
|
|
107
|
+
if (!isNewSession) {
|
|
108
|
+
if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
this.onNewCampaign(currentCampaign);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
await this.track(this.createCampaignEvent(currentCampaign));
|
|
116
|
+
await this.saveCampaignToStorage(currentCampaign);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=campaign-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createIdentifyEvent","Identify","getCookieName","getStorageKey","CampaignParser","BASE_CAMPAIGN","EMPTY_VALUE","MKTG","CampaignTracker","constructor","apiKey","options","storage","storageKey","parser","track","onNewCampaign","disabled","Boolean","trackNewCampaigns","trackPageViews","undefined","excludeReferrers","location","unshift","hostname","initialEmptyValue","isNewCampaign","currentCampaign","previousCampaign","isReferrerExcluded","referring_domain","includes","hasNewUtm","utm_campaign","utm_source","utm_medium","utm_term","utm_content","hasNewReferrer","saveCampaignToStorage","campaign","set","getCampaignFromStorage","get","createCampaignEvent","campaignParameters","identifyEvent","Object","entries","reduce","identify","key","value","setOnce","unset","pageViewEvent","event_type","event_properties","page_title","document","title","page_location","href","page_path","pathname","send","isNewSession","parse"],"sources":["campaign-tracker.ts"],"sourcesContent":["import { createIdentifyEvent, Identify } from '@amplitude/analytics-core';\nimport {\n Storage,\n Campaign,\n CampaignParser as ICampaignParser,\n CampaignTracker as ICampaignTracker,\n CampaignTrackFunction,\n CampaignTrackerOptions,\n BaseEvent,\n} from '@amplitude/analytics-types';\nimport { getCookieName as getStorageKey } from '../utils/cookie-name';\nimport { CampaignParser } from './campaign-parser';\nimport { BASE_CAMPAIGN, EMPTY_VALUE, MKTG } from './constants';\n\nexport class CampaignTracker implements ICampaignTracker {\n storage: Storage<Campaign>;\n storageKey: string;\n parser: ICampaignParser;\n track: CampaignTrackFunction;\n onNewCampaign: (campaign: Campaign) => unknown;\n\n disabled: boolean;\n trackNewCampaigns: boolean;\n trackPageViews: boolean;\n excludeReferrers: string[];\n initialEmptyValue: string;\n\n constructor(apiKey: string, options: CampaignTrackerOptions) {\n this.storage = options.storage;\n this.storageKey = getStorageKey(apiKey, MKTG);\n this.parser = new CampaignParser();\n this.track = options.track;\n this.onNewCampaign = options.onNewCampaign;\n\n this.disabled = Boolean(options.disabled);\n this.trackNewCampaigns = Boolean(options.trackNewCampaigns);\n this.trackPageViews = options.trackPageViews === undefined || Boolean(options.trackPageViews);\n this.excludeReferrers = options.excludeReferrers ?? [];\n if (typeof location !== 'undefined') {\n this.excludeReferrers.unshift(location.hostname);\n }\n this.initialEmptyValue = options.initialEmptyValue ?? EMPTY_VALUE;\n }\n\n isNewCampaign(currentCampaign: Campaign, previousCampaign: Campaign) {\n const isReferrerExcluded = Boolean(\n currentCampaign.referring_domain && this.excludeReferrers.includes(currentCampaign.referring_domain),\n );\n const hasNewUtm =\n previousCampaign.utm_campaign !== currentCampaign.utm_campaign ||\n previousCampaign.utm_source !== currentCampaign.utm_source ||\n previousCampaign.utm_medium !== currentCampaign.utm_medium ||\n previousCampaign.utm_term !== currentCampaign.utm_term ||\n previousCampaign.utm_content !== currentCampaign.utm_content;\n const hasNewReferrer = previousCampaign.referring_domain !== currentCampaign.referring_domain;\n\n return !isReferrerExcluded && (hasNewUtm || hasNewReferrer);\n }\n\n async saveCampaignToStorage(campaign: Campaign): Promise<void> {\n await this.storage.set(this.storageKey, campaign);\n }\n\n async getCampaignFromStorage(): Promise<Campaign> {\n return (await this.storage.get(this.storageKey)) || { ...BASE_CAMPAIGN };\n }\n\n createCampaignEvent(campaign: Campaign) {\n const campaignParameters: Campaign = {\n // This object definition allows undefined keys to be iterated on\n // in .reduce() to build indentify object\n ...BASE_CAMPAIGN,\n ...campaign,\n };\n const identifyEvent = Object.entries(campaignParameters).reduce((identify, [key, value]) => {\n identify.setOnce(`initial_${key}`, value || this.initialEmptyValue);\n if (value) {\n return identify.set(key, value);\n }\n return identify.unset(key);\n }, new Identify());\n\n const pageViewEvent: BaseEvent = {\n event_type: 'Page View',\n event_properties: {\n page_title: /* istanbul ignore next */ (typeof document !== 'undefined' && document.title) || '',\n page_location: /* istanbul ignore next */ (typeof location !== 'undefined' && location.href) || '',\n page_path: /* istanbul ignore next */ (typeof location !== 'undefined' && location.pathname) || '',\n },\n };\n return {\n ...createIdentifyEvent(identifyEvent),\n ...(this.trackPageViews && pageViewEvent),\n };\n }\n\n async send(isNewSession: boolean) {\n if (this.disabled) {\n return;\n }\n const currentCampaign = await this.parser.parse();\n const previousCampaign = await this.getCampaignFromStorage();\n if (!isNewSession) {\n if (!this.trackNewCampaigns || !this.isNewCampaign(currentCampaign, previousCampaign)) {\n return;\n }\n this.onNewCampaign(currentCampaign);\n }\n await this.track(this.createCampaignEvent(currentCampaign));\n await this.saveCampaignToStorage(currentCampaign);\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export const UTM_SOURCE = 'utm_source';
|
|
2
|
+
export const UTM_MEDIUM = 'utm_medium';
|
|
3
|
+
export const UTM_CAMPAIGN = 'utm_campaign';
|
|
4
|
+
export const UTM_TERM = 'utm_term';
|
|
5
|
+
export const UTM_CONTENT = 'utm_content';
|
|
6
|
+
export const UTMZ_SOURCE = 'utmcsr';
|
|
7
|
+
export const UTMZ_MEDIUM = 'utmcmd';
|
|
8
|
+
export const UTMZ_CAMPAIGN = 'utmccn';
|
|
9
|
+
export const UTMZ_TERM = 'utmctr';
|
|
10
|
+
export const UTMZ_CONTENT = 'utmcct';
|
|
11
|
+
export const GCLID = 'gclid';
|
|
12
|
+
export const FBCLID = 'fbclid';
|
|
13
|
+
export const EMPTY_VALUE = 'EMPTY';
|
|
14
|
+
export const BASE_CAMPAIGN = {
|
|
15
|
+
utm_source: undefined,
|
|
16
|
+
utm_medium: undefined,
|
|
17
|
+
utm_campaign: undefined,
|
|
18
|
+
utm_term: undefined,
|
|
19
|
+
utm_content: undefined,
|
|
20
|
+
referrer: undefined,
|
|
21
|
+
referring_domain: undefined,
|
|
22
|
+
gclid: undefined,
|
|
23
|
+
fbclid: undefined
|
|
24
|
+
};
|
|
25
|
+
export const MKTG = 'MKTG';
|
|
26
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["UTM_SOURCE","UTM_MEDIUM","UTM_CAMPAIGN","UTM_TERM","UTM_CONTENT","UTMZ_SOURCE","UTMZ_MEDIUM","UTMZ_CAMPAIGN","UTMZ_TERM","UTMZ_CONTENT","GCLID","FBCLID","EMPTY_VALUE","BASE_CAMPAIGN","utm_source","undefined","utm_medium","utm_campaign","utm_term","utm_content","referrer","referring_domain","gclid","fbclid","MKTG"],"sources":["constants.ts"],"sourcesContent":["import { Campaign } from '@amplitude/analytics-types';\n\nexport const UTM_SOURCE = 'utm_source';\nexport const UTM_MEDIUM = 'utm_medium';\nexport const UTM_CAMPAIGN = 'utm_campaign';\nexport const UTM_TERM = 'utm_term';\nexport const UTM_CONTENT = 'utm_content';\n\nexport const UTMZ_SOURCE = 'utmcsr';\nexport const UTMZ_MEDIUM = 'utmcmd';\nexport const UTMZ_CAMPAIGN = 'utmccn';\nexport const UTMZ_TERM = 'utmctr';\nexport const UTMZ_CONTENT = 'utmcct';\n\nexport const GCLID = 'gclid';\nexport const FBCLID = 'fbclid';\n\nexport const EMPTY_VALUE = 'EMPTY';\n\nexport const BASE_CAMPAIGN: Campaign = {\n utm_source: undefined,\n utm_medium: undefined,\n utm_campaign: undefined,\n utm_term: undefined,\n utm_content: undefined,\n referrer: undefined,\n referring_domain: undefined,\n gclid: undefined,\n fbclid: undefined,\n};\n\nexport const MKTG = 'MKTG';\n"],"mappings":"AAEA,OAAO,MAAMA,UAAU,GAAG,YAAnB;AACP,OAAO,MAAMC,UAAU,GAAG,YAAnB;AACP,OAAO,MAAMC,YAAY,GAAG,cAArB;AACP,OAAO,MAAMC,QAAQ,GAAG,UAAjB;AACP,OAAO,MAAMC,WAAW,GAAG,aAApB;AAEP,OAAO,MAAMC,WAAW,GAAG,QAApB;AACP,OAAO,MAAMC,WAAW,GAAG,QAApB;AACP,OAAO,MAAMC,aAAa,GAAG,QAAtB;AACP,OAAO,MAAMC,SAAS,GAAG,QAAlB;AACP,OAAO,MAAMC,YAAY,GAAG,QAArB;AAEP,OAAO,MAAMC,KAAK,GAAG,OAAd;AACP,OAAO,MAAMC,MAAM,GAAG,QAAf;AAEP,OAAO,MAAMC,WAAW,GAAG,OAApB;AAEP,OAAO,MAAMC,aAAuB,GAAG;EACrCC,UAAU,EAAEC,SADyB;EAErCC,UAAU,EAAED,SAFyB;EAGrCE,YAAY,EAAEF,SAHuB;EAIrCG,QAAQ,EAAEH,SAJ2B;EAKrCI,WAAW,EAAEJ,SALwB;EAMrCK,QAAQ,EAAEL,SAN2B;EAOrCM,gBAAgB,EAAEN,SAPmB;EAQrCO,KAAK,EAAEP,SAR8B;EASrCQ,MAAM,EAAER;AAT6B,CAAhC;AAYP,OAAO,MAAMS,IAAI,GAAG,MAAb"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import { TransportType } from '@amplitude/analytics-types';
|
|
4
|
+
import { Config, MemoryStorage, UUID } from '@amplitude/analytics-core';
|
|
5
|
+
import { CookieStorage } from './storage/cookie';
|
|
6
|
+
import { FetchTransport } from './transports/fetch';
|
|
7
|
+
import { LocalStorage } from './storage/local-storage';
|
|
8
|
+
import { getCookieName } from './utils/cookie-name';
|
|
9
|
+
import { getQueryParams } from './utils/query-params';
|
|
10
|
+
import { XHRTransport } from './transports/xhr';
|
|
11
|
+
import { SendBeaconTransport } from './transports/send-beacon';
|
|
12
|
+
import { SessionManager } from './session-manager';
|
|
13
|
+
export const getDefaultConfig = () => {
|
|
14
|
+
const cookieStorage = new MemoryStorage();
|
|
15
|
+
return {
|
|
16
|
+
cookieExpiration: 365,
|
|
17
|
+
cookieSameSite: 'Lax',
|
|
18
|
+
cookieSecure: false,
|
|
19
|
+
cookieStorage,
|
|
20
|
+
disableCookies: false,
|
|
21
|
+
domain: '',
|
|
22
|
+
sessionManager: new SessionManager(cookieStorage, ''),
|
|
23
|
+
sessionTimeout: 30 * 60 * 1000,
|
|
24
|
+
storageProvider: new MemoryStorage(),
|
|
25
|
+
trackingOptions: {
|
|
26
|
+
city: true,
|
|
27
|
+
country: true,
|
|
28
|
+
carrier: true,
|
|
29
|
+
deviceManufacturer: true,
|
|
30
|
+
deviceModel: true,
|
|
31
|
+
dma: true,
|
|
32
|
+
ipAddress: true,
|
|
33
|
+
language: true,
|
|
34
|
+
osName: true,
|
|
35
|
+
osVersion: true,
|
|
36
|
+
platform: true,
|
|
37
|
+
region: true,
|
|
38
|
+
versionName: true
|
|
39
|
+
},
|
|
40
|
+
transportProvider: new FetchTransport()
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export class ReactNativeConfig extends Config {
|
|
44
|
+
constructor(apiKey, userId, options) {
|
|
45
|
+
var _options$storageProvi, _options$transportPro, _options$cookieStorag, _options$sessionManag, _options$sessionTimeo, _options$cookieExpira, _options$cookieSameSi, _options$cookieSecure, _options$disableCooki, _options$domain, _this$lastEventTime, _options$trackingOpti;
|
|
46
|
+
|
|
47
|
+
const defaultConfig = getDefaultConfig();
|
|
48
|
+
super({ ...options,
|
|
49
|
+
apiKey,
|
|
50
|
+
storageProvider: (_options$storageProvi = options === null || options === void 0 ? void 0 : options.storageProvider) !== null && _options$storageProvi !== void 0 ? _options$storageProvi : defaultConfig.storageProvider,
|
|
51
|
+
transportProvider: (_options$transportPro = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _options$transportPro !== void 0 ? _options$transportPro : defaultConfig.transportProvider
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
_defineProperty(this, "appVersion", void 0);
|
|
55
|
+
|
|
56
|
+
_defineProperty(this, "cookieExpiration", void 0);
|
|
57
|
+
|
|
58
|
+
_defineProperty(this, "cookieSameSite", void 0);
|
|
59
|
+
|
|
60
|
+
_defineProperty(this, "cookieSecure", void 0);
|
|
61
|
+
|
|
62
|
+
_defineProperty(this, "cookieStorage", void 0);
|
|
63
|
+
|
|
64
|
+
_defineProperty(this, "disableCookies", void 0);
|
|
65
|
+
|
|
66
|
+
_defineProperty(this, "domain", void 0);
|
|
67
|
+
|
|
68
|
+
_defineProperty(this, "partnerId", void 0);
|
|
69
|
+
|
|
70
|
+
_defineProperty(this, "sessionTimeout", void 0);
|
|
71
|
+
|
|
72
|
+
_defineProperty(this, "trackingOptions", void 0);
|
|
73
|
+
|
|
74
|
+
_defineProperty(this, "sessionManager", void 0);
|
|
75
|
+
|
|
76
|
+
this.cookieStorage = (_options$cookieStorag = options === null || options === void 0 ? void 0 : options.cookieStorage) !== null && _options$cookieStorag !== void 0 ? _options$cookieStorag : defaultConfig.cookieStorage;
|
|
77
|
+
this.sessionManager = (_options$sessionManag = options === null || options === void 0 ? void 0 : options.sessionManager) !== null && _options$sessionManag !== void 0 ? _options$sessionManag : defaultConfig.sessionManager;
|
|
78
|
+
this.sessionTimeout = (_options$sessionTimeo = options === null || options === void 0 ? void 0 : options.sessionTimeout) !== null && _options$sessionTimeo !== void 0 ? _options$sessionTimeo : defaultConfig.sessionTimeout;
|
|
79
|
+
this.appVersion = options === null || options === void 0 ? void 0 : options.appVersion;
|
|
80
|
+
this.cookieExpiration = (_options$cookieExpira = options === null || options === void 0 ? void 0 : options.cookieExpiration) !== null && _options$cookieExpira !== void 0 ? _options$cookieExpira : defaultConfig.cookieExpiration;
|
|
81
|
+
this.cookieSameSite = (_options$cookieSameSi = options === null || options === void 0 ? void 0 : options.cookieSameSite) !== null && _options$cookieSameSi !== void 0 ? _options$cookieSameSi : defaultConfig.cookieSameSite;
|
|
82
|
+
this.cookieSecure = (_options$cookieSecure = options === null || options === void 0 ? void 0 : options.cookieSecure) !== null && _options$cookieSecure !== void 0 ? _options$cookieSecure : defaultConfig.cookieSecure;
|
|
83
|
+
this.deviceId = options === null || options === void 0 ? void 0 : options.deviceId;
|
|
84
|
+
this.disableCookies = (_options$disableCooki = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _options$disableCooki !== void 0 ? _options$disableCooki : defaultConfig.disableCookies;
|
|
85
|
+
this.domain = (_options$domain = options === null || options === void 0 ? void 0 : options.domain) !== null && _options$domain !== void 0 ? _options$domain : defaultConfig.domain;
|
|
86
|
+
this.lastEventTime = (_this$lastEventTime = this.lastEventTime) !== null && _this$lastEventTime !== void 0 ? _this$lastEventTime : options === null || options === void 0 ? void 0 : options.lastEventTime;
|
|
87
|
+
this.optOut = Boolean(options === null || options === void 0 ? void 0 : options.optOut);
|
|
88
|
+
this.partnerId = options === null || options === void 0 ? void 0 : options.partnerId;
|
|
89
|
+
this.sessionId = options === null || options === void 0 ? void 0 : options.sessionId;
|
|
90
|
+
this.trackingOptions = (_options$trackingOpti = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _options$trackingOpti !== void 0 ? _options$trackingOpti : defaultConfig.trackingOptions;
|
|
91
|
+
this.userId = userId;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
get deviceId() {
|
|
95
|
+
return this.sessionManager.getDeviceId();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
set deviceId(deviceId) {
|
|
99
|
+
this.sessionManager.setDeviceId(deviceId);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
get userId() {
|
|
103
|
+
return this.sessionManager.getUserId();
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
set userId(userId) {
|
|
107
|
+
this.sessionManager.setUserId(userId);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
get sessionId() {
|
|
111
|
+
return this.sessionManager.getSessionId();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
set sessionId(sessionId) {
|
|
115
|
+
this.sessionManager.setSessionId(sessionId);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
get optOut() {
|
|
119
|
+
return this.sessionManager.getOptOut();
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
set optOut(optOut) {
|
|
123
|
+
var _this$sessionManager;
|
|
124
|
+
|
|
125
|
+
(_this$sessionManager = this.sessionManager) === null || _this$sessionManager === void 0 ? void 0 : _this$sessionManager.setOptOut(Boolean(optOut));
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
get lastEventTime() {
|
|
129
|
+
return this.sessionManager.getLastEventTime();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
set lastEventTime(lastEventTime) {
|
|
133
|
+
this.sessionManager.setLastEventTime(lastEventTime);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
}
|
|
137
|
+
export const useReactNativeConfig = async (apiKey, userId, options) => {
|
|
138
|
+
var _options$optOut, _await$cookieStorage$, _await$cookieStorage$2, _options$transportPro2;
|
|
139
|
+
|
|
140
|
+
const defaultConfig = getDefaultConfig();
|
|
141
|
+
const cookieStorage = await createCookieStorage(options);
|
|
142
|
+
const cookieName = getCookieName(apiKey);
|
|
143
|
+
const cookies = await cookieStorage.get(cookieName);
|
|
144
|
+
const queryParams = getQueryParams();
|
|
145
|
+
const sessionManager = await new SessionManager(cookieStorage, apiKey).load();
|
|
146
|
+
return new ReactNativeConfig(apiKey, userId !== null && userId !== void 0 ? userId : cookies === null || cookies === void 0 ? void 0 : cookies.userId, { ...options,
|
|
147
|
+
cookieStorage,
|
|
148
|
+
sessionManager,
|
|
149
|
+
deviceId: createDeviceId(cookies === null || cookies === void 0 ? void 0 : cookies.deviceId, options === null || options === void 0 ? void 0 : options.deviceId, queryParams.deviceId),
|
|
150
|
+
optOut: (_options$optOut = options === null || options === void 0 ? void 0 : options.optOut) !== null && _options$optOut !== void 0 ? _options$optOut : Boolean(cookies === null || cookies === void 0 ? void 0 : cookies.optOut),
|
|
151
|
+
sessionId: (_await$cookieStorage$ = (_await$cookieStorage$2 = await cookieStorage.get(cookieName)) === null || _await$cookieStorage$2 === void 0 ? void 0 : _await$cookieStorage$2.sessionId) !== null && _await$cookieStorage$ !== void 0 ? _await$cookieStorage$ : options === null || options === void 0 ? void 0 : options.sessionId,
|
|
152
|
+
storageProvider: await createEventsStorage(options),
|
|
153
|
+
trackingOptions: { ...defaultConfig.trackingOptions,
|
|
154
|
+
...(options === null || options === void 0 ? void 0 : options.trackingOptions)
|
|
155
|
+
},
|
|
156
|
+
transportProvider: (_options$transportPro2 = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _options$transportPro2 !== void 0 ? _options$transportPro2 : createTransport(options === null || options === void 0 ? void 0 : options.transport)
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
export const createCookieStorage = async function (overrides) {
|
|
160
|
+
let baseConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getDefaultConfig();
|
|
161
|
+
const options = { ...baseConfig,
|
|
162
|
+
...overrides
|
|
163
|
+
};
|
|
164
|
+
const cookieStorage = overrides === null || overrides === void 0 ? void 0 : overrides.cookieStorage;
|
|
165
|
+
|
|
166
|
+
if (!cookieStorage || !(await cookieStorage.isEnabled())) {
|
|
167
|
+
return createFlexibleStorage(options);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return cookieStorage;
|
|
171
|
+
};
|
|
172
|
+
export const createFlexibleStorage = async options => {
|
|
173
|
+
let storage = new CookieStorage({
|
|
174
|
+
domain: options.domain,
|
|
175
|
+
expirationDays: options.cookieExpiration,
|
|
176
|
+
sameSite: options.cookieSameSite,
|
|
177
|
+
secure: options.cookieSecure
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
if (options.disableCookies || !(await storage.isEnabled())) {
|
|
181
|
+
storage = new LocalStorage();
|
|
182
|
+
|
|
183
|
+
if (!(await storage.isEnabled())) {
|
|
184
|
+
storage = new MemoryStorage();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return storage;
|
|
189
|
+
};
|
|
190
|
+
export const createEventsStorage = async overrides => {
|
|
191
|
+
let eventsStorage = overrides === null || overrides === void 0 ? void 0 : overrides.storageProvider;
|
|
192
|
+
|
|
193
|
+
if (!eventsStorage || !(await eventsStorage.isEnabled())) {
|
|
194
|
+
eventsStorage = new LocalStorage();
|
|
195
|
+
|
|
196
|
+
if (!(await eventsStorage.isEnabled())) {
|
|
197
|
+
eventsStorage = new MemoryStorage();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return eventsStorage;
|
|
202
|
+
};
|
|
203
|
+
export const createDeviceId = (idFromCookies, idFromOptions, idFromQueryParams) => {
|
|
204
|
+
return idFromOptions || idFromQueryParams || idFromCookies || UUID();
|
|
205
|
+
};
|
|
206
|
+
export const createTransport = transport => {
|
|
207
|
+
if (transport === TransportType.XHR) {
|
|
208
|
+
return new XHRTransport();
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (transport === TransportType.SendBeacon) {
|
|
212
|
+
return new SendBeaconTransport();
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return getDefaultConfig().transportProvider;
|
|
216
|
+
};
|
|
217
|
+
//# sourceMappingURL=config.js.map
|