@amplitude/analytics-core 0.1.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.
Files changed (146) hide show
  1. package/README.md +1 -0
  2. package/lib/cjs/__mocks__/logger.d.ts +8 -0
  3. package/lib/cjs/__mocks__/logger.d.ts.map +1 -0
  4. package/lib/cjs/__mocks__/logger.js +24 -0
  5. package/lib/cjs/__mocks__/logger.js.map +1 -0
  6. package/lib/cjs/config.d.ts +44 -0
  7. package/lib/cjs/config.d.ts.map +1 -0
  8. package/lib/cjs/config.js +86 -0
  9. package/lib/cjs/config.js.map +1 -0
  10. package/lib/cjs/constants.d.ts +8 -0
  11. package/lib/cjs/constants.d.ts.map +1 -0
  12. package/lib/cjs/constants.js +10 -0
  13. package/lib/cjs/constants.js.map +1 -0
  14. package/lib/cjs/core-client.d.ts +13 -0
  15. package/lib/cjs/core-client.d.ts.map +1 -0
  16. package/lib/cjs/core-client.js +91 -0
  17. package/lib/cjs/core-client.js.map +1 -0
  18. package/lib/cjs/identify.d.ts +19 -0
  19. package/lib/cjs/identify.d.ts.map +1 -0
  20. package/lib/cjs/identify.js +94 -0
  21. package/lib/cjs/identify.js.map +1 -0
  22. package/lib/cjs/index.d.ts +10 -0
  23. package/lib/cjs/index.d.ts.map +1 -0
  24. package/lib/cjs/index.js +30 -0
  25. package/lib/cjs/index.js.map +1 -0
  26. package/lib/cjs/logger.d.ts +11 -0
  27. package/lib/cjs/logger.d.ts.map +1 -0
  28. package/lib/cjs/logger.js +49 -0
  29. package/lib/cjs/logger.js.map +1 -0
  30. package/lib/cjs/messages.d.ts +6 -0
  31. package/lib/cjs/messages.d.ts.map +1 -0
  32. package/lib/cjs/messages.js +8 -0
  33. package/lib/cjs/messages.js.map +1 -0
  34. package/lib/cjs/plugins/destination.d.ts +29 -0
  35. package/lib/cjs/plugins/destination.d.ts.map +1 -0
  36. package/lib/cjs/plugins/destination.js +245 -0
  37. package/lib/cjs/plugins/destination.js.map +1 -0
  38. package/lib/cjs/revenue.d.ts +20 -0
  39. package/lib/cjs/revenue.d.ts.map +1 -0
  40. package/lib/cjs/revenue.js +52 -0
  41. package/lib/cjs/revenue.js.map +1 -0
  42. package/lib/cjs/timeline.d.ts +8 -0
  43. package/lib/cjs/timeline.d.ts.map +1 -0
  44. package/lib/cjs/timeline.js +134 -0
  45. package/lib/cjs/timeline.js.map +1 -0
  46. package/lib/cjs/transports/http.d.ts +5 -0
  47. package/lib/cjs/transports/http.d.ts.map +1 -0
  48. package/lib/cjs/transports/http.js +51 -0
  49. package/lib/cjs/transports/http.js.map +1 -0
  50. package/lib/cjs/utils/chunk.d.ts +2 -0
  51. package/lib/cjs/utils/chunk.d.ts.map +1 -0
  52. package/lib/cjs/utils/chunk.js +18 -0
  53. package/lib/cjs/utils/chunk.js.map +1 -0
  54. package/lib/cjs/utils/event-builder.d.ts +7 -0
  55. package/lib/cjs/utils/event-builder.d.ts.map +1 -0
  56. package/lib/cjs/utils/event-builder.js +47 -0
  57. package/lib/cjs/utils/event-builder.js.map +1 -0
  58. package/lib/cjs/utils/response-builder.d.ts +3 -0
  59. package/lib/cjs/utils/response-builder.d.ts.map +1 -0
  60. package/lib/cjs/utils/response-builder.js +74 -0
  61. package/lib/cjs/utils/response-builder.js.map +1 -0
  62. package/lib/cjs/utils/result-builder.d.ts +3 -0
  63. package/lib/cjs/utils/result-builder.d.ts.map +1 -0
  64. package/lib/cjs/utils/result-builder.js +10 -0
  65. package/lib/cjs/utils/result-builder.js.map +1 -0
  66. package/lib/cjs/utils/status-builder.d.ts +3 -0
  67. package/lib/cjs/utils/status-builder.d.ts.map +1 -0
  68. package/lib/cjs/utils/status-builder.js +26 -0
  69. package/lib/cjs/utils/status-builder.js.map +1 -0
  70. package/lib/cjs/utils/valid-properties.d.ts +5 -0
  71. package/lib/cjs/utils/valid-properties.d.ts.map +1 -0
  72. package/lib/cjs/utils/valid-properties.js +55 -0
  73. package/lib/cjs/utils/valid-properties.js.map +1 -0
  74. package/lib/esm/__mocks__/logger.d.ts +8 -0
  75. package/lib/esm/__mocks__/logger.d.ts.map +1 -0
  76. package/lib/esm/__mocks__/logger.js +22 -0
  77. package/lib/esm/__mocks__/logger.js.map +1 -0
  78. package/lib/esm/config.d.ts +44 -0
  79. package/lib/esm/config.d.ts.map +1 -0
  80. package/lib/esm/config.js +80 -0
  81. package/lib/esm/config.js.map +1 -0
  82. package/lib/esm/constants.d.ts +8 -0
  83. package/lib/esm/constants.d.ts.map +1 -0
  84. package/lib/esm/constants.js +8 -0
  85. package/lib/esm/constants.js.map +1 -0
  86. package/lib/esm/core-client.d.ts +13 -0
  87. package/lib/esm/core-client.d.ts.map +1 -0
  88. package/lib/esm/core-client.js +78 -0
  89. package/lib/esm/core-client.js.map +1 -0
  90. package/lib/esm/identify.d.ts +19 -0
  91. package/lib/esm/identify.d.ts.map +1 -0
  92. package/lib/esm/identify.js +92 -0
  93. package/lib/esm/identify.js.map +1 -0
  94. package/lib/esm/index.d.ts +10 -0
  95. package/lib/esm/index.d.ts.map +1 -0
  96. package/lib/esm/index.js +10 -0
  97. package/lib/esm/index.js.map +1 -0
  98. package/lib/esm/logger.d.ts +11 -0
  99. package/lib/esm/logger.d.ts.map +1 -0
  100. package/lib/esm/logger.js +47 -0
  101. package/lib/esm/logger.js.map +1 -0
  102. package/lib/esm/messages.d.ts +6 -0
  103. package/lib/esm/messages.d.ts.map +1 -0
  104. package/lib/esm/messages.js +6 -0
  105. package/lib/esm/messages.js.map +1 -0
  106. package/lib/esm/plugins/destination.d.ts +29 -0
  107. package/lib/esm/plugins/destination.d.ts.map +1 -0
  108. package/lib/esm/plugins/destination.js +243 -0
  109. package/lib/esm/plugins/destination.js.map +1 -0
  110. package/lib/esm/revenue.d.ts +20 -0
  111. package/lib/esm/revenue.d.ts.map +1 -0
  112. package/lib/esm/revenue.js +50 -0
  113. package/lib/esm/revenue.js.map +1 -0
  114. package/lib/esm/timeline.d.ts +8 -0
  115. package/lib/esm/timeline.d.ts.map +1 -0
  116. package/lib/esm/timeline.js +126 -0
  117. package/lib/esm/timeline.js.map +1 -0
  118. package/lib/esm/transports/http.d.ts +5 -0
  119. package/lib/esm/transports/http.d.ts.map +1 -0
  120. package/lib/esm/transports/http.js +49 -0
  121. package/lib/esm/transports/http.js.map +1 -0
  122. package/lib/esm/utils/chunk.d.ts +2 -0
  123. package/lib/esm/utils/chunk.d.ts.map +1 -0
  124. package/lib/esm/utils/chunk.js +15 -0
  125. package/lib/esm/utils/chunk.js.map +1 -0
  126. package/lib/esm/utils/event-builder.d.ts +7 -0
  127. package/lib/esm/utils/event-builder.d.ts.map +1 -0
  128. package/lib/esm/utils/event-builder.js +40 -0
  129. package/lib/esm/utils/event-builder.js.map +1 -0
  130. package/lib/esm/utils/response-builder.d.ts +3 -0
  131. package/lib/esm/utils/response-builder.d.ts.map +1 -0
  132. package/lib/esm/utils/response-builder.js +71 -0
  133. package/lib/esm/utils/response-builder.js.map +1 -0
  134. package/lib/esm/utils/result-builder.d.ts +3 -0
  135. package/lib/esm/utils/result-builder.d.ts.map +1 -0
  136. package/lib/esm/utils/result-builder.js +7 -0
  137. package/lib/esm/utils/result-builder.js.map +1 -0
  138. package/lib/esm/utils/status-builder.d.ts +3 -0
  139. package/lib/esm/utils/status-builder.d.ts.map +1 -0
  140. package/lib/esm/utils/status-builder.js +23 -0
  141. package/lib/esm/utils/status-builder.js.map +1 -0
  142. package/lib/esm/utils/valid-properties.d.ts +5 -0
  143. package/lib/esm/utils/valid-properties.d.ts.map +1 -0
  144. package/lib/esm/utils/valid-properties.js +51 -0
  145. package/lib/esm/utils/valid-properties.js.map +1 -0
  146. package/package.json +41 -0
@@ -0,0 +1,78 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { createConfig, getConfig } from './config';
3
+ import { createGroupIdentifyEvent, createIdentifyEvent, createTrackEvent, createRevenueEvent, createGroupEvent, } from './utils/event-builder';
4
+ import { deregister, push, register } from './timeline';
5
+ import { buildResult } from './utils/result-builder';
6
+ export var init = function (config) {
7
+ return createConfig(config);
8
+ };
9
+ export var track = function (eventType, eventProperties, eventOptions) {
10
+ var config = getConfig();
11
+ var event = createTrackEvent(eventType, eventProperties, eventOptions);
12
+ return dispatch(event, config);
13
+ };
14
+ export var logEvent = track;
15
+ export var identify = function (userId, deviceId, identify, eventOptions) {
16
+ var config = getConfig();
17
+ var event = createIdentifyEvent(userId, deviceId, identify, eventOptions);
18
+ return dispatch(event, config);
19
+ };
20
+ export var groupIdentify = function (userId, deviceId, groupType, groupName, identify, eventOptions) {
21
+ var config = getConfig();
22
+ var event = createGroupIdentifyEvent(userId, deviceId, groupType, groupName, identify, eventOptions);
23
+ return dispatch(event, config);
24
+ };
25
+ export var setGroup = function (groupType, groupName) {
26
+ var config = getConfig();
27
+ var event = createGroupEvent(groupType, groupName);
28
+ return dispatch(event, config);
29
+ };
30
+ export var revenue = function (revenue, eventOptions) {
31
+ var config = getConfig();
32
+ var event = createRevenueEvent(revenue, eventOptions);
33
+ return dispatch(event, config);
34
+ };
35
+ export var add = function (plugin) { return __awaiter(void 0, void 0, void 0, function () {
36
+ var config;
37
+ return __generator(this, function (_a) {
38
+ config = getConfig();
39
+ return [2 /*return*/, register(plugin, config)];
40
+ });
41
+ }); };
42
+ export var remove = function (pluginName) { return __awaiter(void 0, void 0, void 0, function () {
43
+ var config;
44
+ return __generator(this, function (_a) {
45
+ config = getConfig();
46
+ return [2 /*return*/, deregister(pluginName, config)];
47
+ });
48
+ }); };
49
+ export var dispatch = function (event, config) { return __awaiter(void 0, void 0, void 0, function () {
50
+ var result, e_1, message;
51
+ return __generator(this, function (_a) {
52
+ switch (_a.label) {
53
+ case 0:
54
+ _a.trys.push([0, 2, , 3]);
55
+ return [4 /*yield*/, push(event, config)];
56
+ case 1:
57
+ result = _a.sent();
58
+ if (result.code === 200) {
59
+ config.loggerProvider.log(result.message);
60
+ }
61
+ else {
62
+ config.loggerProvider.error(result.message);
63
+ }
64
+ return [2 /*return*/, result];
65
+ case 2:
66
+ e_1 = _a.sent();
67
+ message = String(e_1);
68
+ config.loggerProvider.error(message);
69
+ return [2 /*return*/, buildResult(event, 0, message)];
70
+ case 3: return [2 /*return*/];
71
+ }
72
+ });
73
+ }); };
74
+ export var setOptOut = function (optOut) {
75
+ var config = getConfig();
76
+ config.optOut = Boolean(optOut);
77
+ };
78
+ //# sourceMappingURL=core-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-client.js","sourceRoot":"","sources":["../../src/core-client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Config, Event, EventOptions, Identify, Plugin, Revenue } from '@amplitude/analytics-types';\nimport { createConfig, getConfig } from './config';\nimport {\n createGroupIdentifyEvent,\n createIdentifyEvent,\n createTrackEvent,\n createRevenueEvent,\n createGroupEvent,\n} from './utils/event-builder';\nimport { deregister, push, register } from './timeline';\nimport { buildResult } from './utils/result-builder';\n\nexport const init = (config: Config) => {\n return createConfig(config);\n};\n\nexport const track = (eventType: string, eventProperties?: Record<string, any>, eventOptions?: EventOptions) => {\n const config = getConfig();\n const event = createTrackEvent(eventType, eventProperties, eventOptions);\n return dispatch(event, config);\n};\nexport const logEvent = track;\n\nexport const identify = (\n userId: string | undefined,\n deviceId: string | undefined,\n identify: Identify,\n eventOptions?: EventOptions,\n) => {\n const config = getConfig();\n const event = createIdentifyEvent(userId, deviceId, identify, eventOptions);\n return dispatch(event, config);\n};\n\nexport const groupIdentify = (\n userId: string | undefined,\n deviceId: string | undefined,\n groupType: string,\n groupName: string | string[],\n identify: Identify,\n eventOptions?: EventOptions,\n) => {\n const config = getConfig();\n const event = createGroupIdentifyEvent(userId, deviceId, groupType, groupName, identify, eventOptions);\n return dispatch(event, config);\n};\n\nexport const setGroup = (groupType: string, groupName: string | string[]) => {\n const config = getConfig();\n const event = createGroupEvent(groupType, groupName);\n return dispatch(event, config);\n};\n\nexport const revenue = (revenue: Revenue, eventOptions?: EventOptions) => {\n const config = getConfig();\n const event = createRevenueEvent(revenue, eventOptions);\n return dispatch(event, config);\n};\n\nexport const add = async (plugin: Plugin) => {\n const config = getConfig();\n return register(plugin, config);\n};\n\nexport const remove = async (pluginName: string) => {\n const config = getConfig();\n return deregister(pluginName, config);\n};\n\nexport const dispatch = async (event: Event, config: Config) => {\n try {\n const result = await push(event, config);\n if (result.code === 200) {\n config.loggerProvider.log(result.message);\n } else {\n config.loggerProvider.error(result.message);\n }\n return result;\n } catch (e) {\n const message = String(e);\n config.loggerProvider.error(message);\n return buildResult(event, 0, message);\n }\n};\n\nexport const setOptOut = (optOut: boolean) => {\n const config = getConfig();\n config.optOut = Boolean(optOut);\n};\n"]}
@@ -0,0 +1,19 @@
1
+ import { IdentifyUserProperties, ValidPropertyType, Identify as IIdentify } from '@amplitude/analytics-types';
2
+ export declare class Identify implements IIdentify {
3
+ protected readonly _propertySet: Set<string>;
4
+ protected _properties: IdentifyUserProperties;
5
+ getUserProperties(): IdentifyUserProperties;
6
+ set(property: string, value: ValidPropertyType): Identify;
7
+ setOnce(property: string, value: ValidPropertyType): Identify;
8
+ append(property: string, value: ValidPropertyType): Identify;
9
+ prepend(property: string, value: ValidPropertyType): Identify;
10
+ postInsert(property: string, value: ValidPropertyType): Identify;
11
+ preInsert(property: string, value: ValidPropertyType): Identify;
12
+ remove(property: string, value: ValidPropertyType): Identify;
13
+ add(property: string, value: number): Identify;
14
+ unset(property: string): Identify;
15
+ clearAll(): Identify;
16
+ private _safeSet;
17
+ private _validate;
18
+ }
19
+ //# sourceMappingURL=identify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identify.d.ts","sourceRoot":"","sources":["../../src/identify.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,IAAI,SAAS,EACtB,MAAM,4BAA4B,CAAC;AAIpC,qBAAa,QAAS,YAAW,SAAS;IACxC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAqB;IACjE,SAAS,CAAC,WAAW,EAAE,sBAAsB,CAAM;IAE5C,iBAAiB,IAAI,sBAAsB;IAI3C,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ;IAKzD,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ;IAK7D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ;IAK5D,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ;IAK7D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ;IAKhE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ;IAK/D,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,QAAQ;IAK5D,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ;IAK9C,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAKjC,QAAQ,IAAI,QAAQ;IAS3B,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,SAAS;CAoBlB"}
@@ -0,0 +1,92 @@
1
+ import { __assign } from "tslib";
2
+ import { IdentifyOperation, } from '@amplitude/analytics-types';
3
+ import { UNSET_VALUE } from './constants';
4
+ import { isValidProperties } from './utils/valid-properties';
5
+ var Identify = /** @class */ (function () {
6
+ function Identify() {
7
+ this._propertySet = new Set();
8
+ this._properties = {};
9
+ }
10
+ Identify.prototype.getUserProperties = function () {
11
+ return __assign({}, this._properties);
12
+ };
13
+ Identify.prototype.set = function (property, value) {
14
+ this._safeSet(IdentifyOperation.SET, property, value);
15
+ return this;
16
+ };
17
+ Identify.prototype.setOnce = function (property, value) {
18
+ this._safeSet(IdentifyOperation.SET_ONCE, property, value);
19
+ return this;
20
+ };
21
+ Identify.prototype.append = function (property, value) {
22
+ this._safeSet(IdentifyOperation.APPEND, property, value);
23
+ return this;
24
+ };
25
+ Identify.prototype.prepend = function (property, value) {
26
+ this._safeSet(IdentifyOperation.PREPEND, property, value);
27
+ return this;
28
+ };
29
+ Identify.prototype.postInsert = function (property, value) {
30
+ this._safeSet(IdentifyOperation.POSTINSERT, property, value);
31
+ return this;
32
+ };
33
+ Identify.prototype.preInsert = function (property, value) {
34
+ this._safeSet(IdentifyOperation.PREINSERT, property, value);
35
+ return this;
36
+ };
37
+ Identify.prototype.remove = function (property, value) {
38
+ this._safeSet(IdentifyOperation.REMOVE, property, value);
39
+ return this;
40
+ };
41
+ Identify.prototype.add = function (property, value) {
42
+ this._safeSet(IdentifyOperation.ADD, property, value);
43
+ return this;
44
+ };
45
+ Identify.prototype.unset = function (property) {
46
+ this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);
47
+ return this;
48
+ };
49
+ Identify.prototype.clearAll = function () {
50
+ // When clear all happens, all properties are unset. Reset the entire object.
51
+ this._properties = {};
52
+ this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;
53
+ return this;
54
+ };
55
+ // Returns whether or not this set actually worked.
56
+ Identify.prototype._safeSet = function (operation, property, value) {
57
+ if (this._validate(operation, property, value)) {
58
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
59
+ var userPropertyMap = this._properties[operation];
60
+ if (userPropertyMap === undefined) {
61
+ userPropertyMap = {};
62
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
63
+ this._properties[operation] = userPropertyMap;
64
+ }
65
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
66
+ userPropertyMap[property] = value;
67
+ this._propertySet.add(property);
68
+ return true;
69
+ }
70
+ return false;
71
+ };
72
+ Identify.prototype._validate = function (operation, property, value) {
73
+ if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {
74
+ // clear all already set. Skipping operation;
75
+ return false;
76
+ }
77
+ if (this._propertySet.has(property)) {
78
+ // Property already used. Skipping operation
79
+ return false;
80
+ }
81
+ if (operation === IdentifyOperation.ADD) {
82
+ return typeof value === 'number';
83
+ }
84
+ if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {
85
+ return isValidProperties(property, value);
86
+ }
87
+ return true;
88
+ };
89
+ return Identify;
90
+ }());
91
+ export { Identify };
92
+ //# sourceMappingURL=identify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identify.js","sourceRoot":"","sources":["../../src/identify.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,iBAAiB,GAIlB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;IAAA;QACqB,iBAAY,GAAgB,IAAI,GAAG,EAAU,CAAC;QACvD,gBAAW,GAA2B,EAAE,CAAC;IAmGrD,CAAC;IAjGQ,oCAAiB,GAAxB;QACE,oBAAY,IAAI,CAAC,WAAW,EAAG;IACjC,CAAC;IAEM,sBAAG,GAAV,UAAW,QAAgB,EAAE,KAAwB;QACnD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,0BAAO,GAAd,UAAe,QAAgB,EAAE,KAAwB;QACvD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,yBAAM,GAAb,UAAc,QAAgB,EAAE,KAAwB;QACtD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,0BAAO,GAAd,UAAe,QAAgB,EAAE,KAAwB;QACvD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,6BAAU,GAAjB,UAAkB,QAAgB,EAAE,KAAwB;QAC1D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,4BAAS,GAAhB,UAAiB,QAAgB,EAAE,KAAwB;QACzD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,yBAAM,GAAb,UAAc,QAAgB,EAAE,KAAwB;QACtD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,sBAAG,GAAV,UAAW,QAAgB,EAAE,KAAa;QACxC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,wBAAK,GAAZ,UAAa,QAAgB;QAC3B,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,2BAAQ,GAAf;QACE,6EAA6E;QAC7E,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;QAE5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mDAAmD;IAC3C,2BAAQ,GAAhB,UAAiB,SAA4B,EAAE,QAAgB,EAAE,KAAwB;QACvF,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;YAC9C,mEAAmE;YACnE,IAAI,eAAe,GAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,eAAe,KAAK,SAAS,EAAE;gBACjC,eAAe,GAAG,EAAE,CAAC;gBACrB,mEAAmE;gBACnE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC;aAC/C;YAED,sEAAsE;YACtE,eAAe,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,4BAAS,GAAjB,UAAkB,SAA4B,EAAE,QAAgB,EAAE,KAAwB;QACxF,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE;YAC/D,6CAA6C;YAC7C,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACnC,4CAA4C;YAC5C,OAAO,KAAK,CAAC;SACd;QAED,IAAI,SAAS,KAAK,iBAAiB,CAAC,GAAG,EAAE;YACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;SAClC;QAED,IAAI,SAAS,KAAK,iBAAiB,CAAC,KAAK,IAAI,SAAS,KAAK,iBAAiB,CAAC,MAAM,EAAE;YACnF,OAAO,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;SAC3C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACH,eAAC;AAAD,CAAC,AArGD,IAqGC","sourcesContent":["import {\n IdentifyOperation,\n IdentifyUserProperties,\n ValidPropertyType,\n Identify as IIdentify,\n} from '@amplitude/analytics-types';\nimport { UNSET_VALUE } from './constants';\nimport { isValidProperties } from './utils/valid-properties';\n\nexport class Identify implements IIdentify {\n protected readonly _propertySet: Set<string> = new Set<string>();\n protected _properties: IdentifyUserProperties = {};\n\n public getUserProperties(): IdentifyUserProperties {\n return { ...this._properties };\n }\n\n public set(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET, property, value);\n return this;\n }\n\n public setOnce(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.SET_ONCE, property, value);\n return this;\n }\n\n public append(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.APPEND, property, value);\n return this;\n }\n\n public prepend(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREPEND, property, value);\n return this;\n }\n\n public postInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.POSTINSERT, property, value);\n return this;\n }\n\n public preInsert(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.PREINSERT, property, value);\n return this;\n }\n\n public remove(property: string, value: ValidPropertyType): Identify {\n this._safeSet(IdentifyOperation.REMOVE, property, value);\n return this;\n }\n\n public add(property: string, value: number): Identify {\n this._safeSet(IdentifyOperation.ADD, property, value);\n return this;\n }\n\n public unset(property: string): Identify {\n this._safeSet(IdentifyOperation.UNSET, property, UNSET_VALUE);\n return this;\n }\n\n public clearAll(): Identify {\n // When clear all happens, all properties are unset. Reset the entire object.\n this._properties = {};\n this._properties[IdentifyOperation.CLEAR_ALL] = UNSET_VALUE;\n\n return this;\n }\n\n // Returns whether or not this set actually worked.\n private _safeSet(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._validate(operation, property, value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let userPropertyMap: any = this._properties[operation];\n if (userPropertyMap === undefined) {\n userPropertyMap = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this._properties[operation] = userPropertyMap;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n userPropertyMap[property] = value;\n this._propertySet.add(property);\n return true;\n }\n\n return false;\n }\n\n private _validate(operation: IdentifyOperation, property: string, value: ValidPropertyType): boolean {\n if (this._properties[IdentifyOperation.CLEAR_ALL] !== undefined) {\n // clear all already set. Skipping operation;\n return false;\n }\n\n if (this._propertySet.has(property)) {\n // Property already used. Skipping operation\n return false;\n }\n\n if (operation === IdentifyOperation.ADD) {\n return typeof value === 'number';\n }\n\n if (operation !== IdentifyOperation.UNSET && operation !== IdentifyOperation.REMOVE) {\n return isValidProperties(property, value);\n }\n return true;\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ export { init, track, logEvent, identify, groupIdentify, setGroup, revenue, add, remove, setOptOut, } from './core-client';
2
+ export { getConfig } from './config';
3
+ export { buildResponse } from './utils/response-builder';
4
+ export { Identify } from './identify';
5
+ export { Revenue } from './revenue';
6
+ export { Destination } from './plugins/destination';
7
+ export { Config } from './config';
8
+ export { Logger } from './logger';
9
+ export { AMPLITUDE_PREFIX } from './constants';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,OAAO,EACP,GAAG,EACH,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { init, track, logEvent, identify, groupIdentify, setGroup, revenue, add, remove, setOptOut, } from './core-client';
2
+ export { getConfig } from './config';
3
+ export { buildResponse } from './utils/response-builder';
4
+ export { Identify } from './identify';
5
+ export { Revenue } from './revenue';
6
+ export { Destination } from './plugins/destination';
7
+ export { Config } from './config';
8
+ export { Logger } from './logger';
9
+ export { AMPLITUDE_PREFIX } from './constants';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,OAAO,EACP,GAAG,EACH,MAAM,EACN,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC","sourcesContent":["export {\n init,\n track,\n logEvent,\n identify,\n groupIdentify,\n setGroup,\n revenue,\n add,\n remove,\n setOptOut,\n} from './core-client';\nexport { getConfig } from './config';\nexport { buildResponse } from './utils/response-builder';\nexport { Identify } from './identify';\nexport { Revenue } from './revenue';\nexport { Destination } from './plugins/destination';\nexport { Config } from './config';\nexport { Logger } from './logger';\nexport { AMPLITUDE_PREFIX } from './constants';\n"]}
@@ -0,0 +1,11 @@
1
+ import { LogLevel, Logger as ILogger } from '@amplitude/analytics-types';
2
+ export declare class Logger implements ILogger {
3
+ logLevel: LogLevel;
4
+ constructor();
5
+ disable(): void;
6
+ enable(logLevel?: LogLevel): void;
7
+ log(...args: any[]): void;
8
+ warn(...args: any[]): void;
9
+ error(...args: any[]): void;
10
+ }
11
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAIzE,qBAAa,MAAO,YAAW,OAAO;IACpC,QAAQ,EAAE,QAAQ,CAAC;;IAMnB,OAAO,IAAI,IAAI;IAIf,MAAM,CAAC,QAAQ,GAAE,QAAwB,GAAG,IAAI;IAIhD,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAOzB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAO1B,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAM5B"}
@@ -0,0 +1,47 @@
1
+ import { LogLevel } from '@amplitude/analytics-types';
2
+ var PREFIX = 'Amplitude Logger ';
3
+ var Logger = /** @class */ (function () {
4
+ function Logger() {
5
+ this.logLevel = LogLevel.None;
6
+ }
7
+ Logger.prototype.disable = function () {
8
+ this.logLevel = LogLevel.None;
9
+ };
10
+ Logger.prototype.enable = function (logLevel) {
11
+ if (logLevel === void 0) { logLevel = LogLevel.Warn; }
12
+ this.logLevel = logLevel;
13
+ };
14
+ Logger.prototype.log = function () {
15
+ var args = [];
16
+ for (var _i = 0; _i < arguments.length; _i++) {
17
+ args[_i] = arguments[_i];
18
+ }
19
+ if (this.logLevel < LogLevel.Verbose) {
20
+ return;
21
+ }
22
+ console.log("".concat(PREFIX, "[Log]: ").concat(args.join(' ')));
23
+ };
24
+ Logger.prototype.warn = function () {
25
+ var args = [];
26
+ for (var _i = 0; _i < arguments.length; _i++) {
27
+ args[_i] = arguments[_i];
28
+ }
29
+ if (this.logLevel < LogLevel.Warn) {
30
+ return;
31
+ }
32
+ console.warn("".concat(PREFIX, "[Warn]: ").concat(args.join(' ')));
33
+ };
34
+ Logger.prototype.error = function () {
35
+ var args = [];
36
+ for (var _i = 0; _i < arguments.length; _i++) {
37
+ args[_i] = arguments[_i];
38
+ }
39
+ if (this.logLevel < LogLevel.Error) {
40
+ return;
41
+ }
42
+ console.error("".concat(PREFIX, "[Error]: ").concat(args.join(' ')));
43
+ };
44
+ return Logger;
45
+ }());
46
+ export { Logger };
47
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqB,MAAM,4BAA4B,CAAC;AAEzE,IAAM,MAAM,GAAG,mBAAmB,CAAC;AAEnC;IAGE;QACE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,wBAAO,GAAP;QACE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;IAChC,CAAC;IAED,uBAAM,GAAN,UAAO,QAAkC;QAAlC,yBAAA,EAAA,WAAqB,QAAQ,CAAC,IAAI;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,oBAAG,GAAH;QAAI,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAChB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE;YACpC,OAAO;SACR;QACD,OAAO,CAAC,GAAG,CAAC,UAAG,MAAM,oBAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;IACnD,CAAC;IAED,qBAAI,GAAJ;QAAK,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QACjB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE;YACjC,OAAO;SACR;QACD,OAAO,CAAC,IAAI,CAAC,UAAG,MAAM,qBAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;IACrD,CAAC;IAED,sBAAK,GAAL;QAAM,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAClB,IAAI,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE;YAClC,OAAO;SACR;QACD,OAAO,CAAC,KAAK,CAAC,UAAG,MAAM,sBAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;IACvD,CAAC;IACH,aAAC;AAAD,CAAC,AAnCD,IAmCC","sourcesContent":["import { LogLevel, Logger as ILogger } from '@amplitude/analytics-types';\n\nconst PREFIX = 'Amplitude Logger ';\n\nexport class Logger implements ILogger {\n logLevel: LogLevel;\n\n constructor() {\n this.logLevel = LogLevel.None;\n }\n\n disable(): void {\n this.logLevel = LogLevel.None;\n }\n\n enable(logLevel: LogLevel = LogLevel.Warn): void {\n this.logLevel = logLevel;\n }\n\n log(...args: any[]): void {\n if (this.logLevel < LogLevel.Verbose) {\n return;\n }\n console.log(`${PREFIX}[Log]: ${args.join(' ')}`);\n }\n\n warn(...args: any[]): void {\n if (this.logLevel < LogLevel.Warn) {\n return;\n }\n console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`);\n }\n\n error(...args: any[]): void {\n if (this.logLevel < LogLevel.Error) {\n return;\n }\n console.error(`${PREFIX}[Error]: ${args.join(' ')}`);\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ export declare const SUCCESS_MESSAGE = "Event tracked successfully";
2
+ export declare const UNEXPECTED_ERROR_MESSAGE = "Unexpected error occurred";
3
+ export declare const MAX_RETRIES_EXCEEDED_MESSAGE = "Event rejected due to exceeded retry count";
4
+ export declare const OPT_OUT_MESSAGE = "Event skipped due to optOut config";
5
+ export declare const MISSING_API_KEY_MESSAGE = "Event skipped due to optOut config";
6
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,+BAA+B,CAAC;AAC5D,eAAO,MAAM,wBAAwB,8BAA8B,CAAC;AACpE,eAAO,MAAM,4BAA4B,+CAA+C,CAAC;AACzF,eAAO,MAAM,eAAe,uCAAuC,CAAC;AACpE,eAAO,MAAM,uBAAuB,uCAAuC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export var SUCCESS_MESSAGE = 'Event tracked successfully';
2
+ export var UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';
3
+ export var MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';
4
+ export var OPT_OUT_MESSAGE = 'Event skipped due to optOut config';
5
+ export var MISSING_API_KEY_MESSAGE = 'Event skipped due to optOut config';
6
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,eAAe,GAAG,4BAA4B,CAAC;AAC5D,MAAM,CAAC,IAAM,wBAAwB,GAAG,2BAA2B,CAAC;AACpE,MAAM,CAAC,IAAM,4BAA4B,GAAG,4CAA4C,CAAC;AACzF,MAAM,CAAC,IAAM,eAAe,GAAG,oCAAoC,CAAC;AACpE,MAAM,CAAC,IAAM,uBAAuB,GAAG,oCAAoC,CAAC","sourcesContent":["export const SUCCESS_MESSAGE = 'Event tracked successfully';\nexport const UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport const MAX_RETRIES_EXCEEDED_MESSAGE = 'Event rejected due to exceeded retry count';\nexport const OPT_OUT_MESSAGE = 'Event skipped due to optOut config';\nexport const MISSING_API_KEY_MESSAGE = 'Event skipped due to optOut config';\n"]}
@@ -0,0 +1,29 @@
1
+ import { Config, DestinationContext as Context, DestinationPlugin, Event, InvalidResponse, PayloadTooLargeResponse, PluginType, RateLimitResponse, Response, Result, SuccessResponse } from '@amplitude/analytics-types';
2
+ export declare class Destination implements DestinationPlugin {
3
+ name: string;
4
+ type: PluginType.DESTINATION;
5
+ backoff: number;
6
+ throttle: number;
7
+ storageKey: string;
8
+ backup: Set<Event>;
9
+ config: Config;
10
+ scheduled: boolean;
11
+ queue: Context[];
12
+ setup(config: Config): Promise<undefined>;
13
+ execute(event: Event): Promise<Result>;
14
+ addToQueue(...list: Context[]): void;
15
+ schedule(timeout: number): void;
16
+ flush(): Promise<void>;
17
+ send(list: Context[]): Promise<void>;
18
+ handleReponse(res: Response, list: Context[]): void;
19
+ handleSuccessResponse(res: SuccessResponse, list: Context[]): void;
20
+ handleInvalidResponse(res: InvalidResponse, list: Context[]): void;
21
+ handlePayloadTooLargeResponse(res: PayloadTooLargeResponse, list: Context[]): void;
22
+ handleRateLimitResponse(res: RateLimitResponse, list: Context[]): void;
23
+ handleOtherReponse(list: Context[]): void;
24
+ fulfillRequest(list: Context[], code: number, message: string): void;
25
+ addToBackup(...events: Event[]): void;
26
+ removeFromBackup(...events: Event[]): void;
27
+ snapshot(): void;
28
+ }
29
+ //# sourceMappingURL=destination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination.d.ts","sourceRoot":"","sources":["../../../src/plugins/destination.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,IAAI,OAAO,EAC7B,iBAAiB,EACjB,KAAK,EACL,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,MAAM,EAEN,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAOpC,qBAAa,WAAY,YAAW,iBAAiB;IACnD,IAAI,SAAe;IACnB,IAAI,yBAAmC;IAEvC,OAAO,SAAQ;IACf,QAAQ,SAAS;IACjB,UAAU,SAAM;IAChB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAa;IAI/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,UAAS;IAClB,KAAK,EAAE,OAAO,EAAE,CAAM;IAEtB,KAAK,CAAC,MAAM,EAAE,MAAM;IAapB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtC,UAAU,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE;IA0B7B,QAAQ,CAAC,OAAO,EAAE,MAAM;IAalB,KAAK;IAOL,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;IAsB1B,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;IAwB5C,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE;IAI3D,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE;IAwB3D,6BAA6B,CAAC,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE;IAS3E,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE;IAyB/D,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE;IAIlC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAK7D,WAAW,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE;IAM9B,gBAAgB,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE;IAMnC,QAAQ;CAKT"}
@@ -0,0 +1,243 @@
1
+ import { __awaiter, __generator, __read, __spreadArray } from "tslib";
2
+ import { PluginType, Status, } from '@amplitude/analytics-types';
3
+ import { MISSING_API_KEY_MESSAGE, SUCCESS_MESSAGE, UNEXPECTED_ERROR_MESSAGE } from '../messages';
4
+ import { STORAGE_PREFIX } from '../constants';
5
+ import { chunk } from '../utils/chunk';
6
+ import { buildResult } from '../utils/result-builder';
7
+ import { getApiHost } from '../config';
8
+ var Destination = /** @class */ (function () {
9
+ function Destination() {
10
+ this.name = 'amplitude';
11
+ this.type = PluginType.DESTINATION;
12
+ this.backoff = 1000;
13
+ this.throttle = 30000;
14
+ this.storageKey = '';
15
+ this.backup = new Set();
16
+ this.scheduled = false;
17
+ this.queue = [];
18
+ }
19
+ Destination.prototype.setup = function (config) {
20
+ var _this = this;
21
+ this.config = config;
22
+ this.storageKey = "".concat(STORAGE_PREFIX, "_").concat(this.config.apiKey.substring(0, 10));
23
+ var unsent = this.config.storageProvider.get(this.storageKey);
24
+ this.snapshot(); // sets storage to '[]'
25
+ if (unsent && unsent.length > 0) {
26
+ void Promise.all(unsent.map(function (event) { return _this.execute(event); })).catch();
27
+ }
28
+ return Promise.resolve(undefined);
29
+ };
30
+ Destination.prototype.execute = function (event) {
31
+ var _this = this;
32
+ return new Promise(function (resolve) {
33
+ var context = {
34
+ event: event,
35
+ attempts: 0,
36
+ callback: function (result) { return resolve(result); },
37
+ delay: 0,
38
+ };
39
+ _this.addToQueue(context);
40
+ });
41
+ };
42
+ Destination.prototype.addToQueue = function () {
43
+ var _this = this;
44
+ var list = [];
45
+ for (var _i = 0; _i < arguments.length; _i++) {
46
+ list[_i] = arguments[_i];
47
+ }
48
+ var tryable = list.filter(function (context) {
49
+ if (context.attempts < _this.config.flushMaxRetries) {
50
+ return true;
51
+ }
52
+ _this.fulfillRequest([context], 500, Status.Unknown);
53
+ return false;
54
+ });
55
+ this.addToBackup.apply(this, __spreadArray([], __read(tryable.map(function (context) { return context.event; })), false));
56
+ tryable.forEach(function (context) {
57
+ context.attempts += 1;
58
+ var delay = context.delay;
59
+ context.delay = 0;
60
+ if (context.attempts === 1 && !context.delay) {
61
+ _this.queue = _this.queue.concat(context);
62
+ _this.schedule(_this.config.flushIntervalMillis);
63
+ return;
64
+ }
65
+ setTimeout(function () {
66
+ _this.queue = _this.queue.concat(context);
67
+ _this.schedule(_this.config.flushIntervalMillis);
68
+ }, delay || context.attempts * _this.backoff);
69
+ });
70
+ };
71
+ Destination.prototype.schedule = function (timeout) {
72
+ var _this = this;
73
+ if (this.scheduled)
74
+ return;
75
+ this.scheduled = true;
76
+ setTimeout(function () {
77
+ void _this.flush().then(function () {
78
+ _this.scheduled = false;
79
+ if (_this.queue.length > 0) {
80
+ _this.schedule(timeout);
81
+ }
82
+ });
83
+ }, timeout);
84
+ };
85
+ Destination.prototype.flush = function () {
86
+ return __awaiter(this, void 0, void 0, function () {
87
+ var list, batches;
88
+ var _this = this;
89
+ return __generator(this, function (_a) {
90
+ switch (_a.label) {
91
+ case 0:
92
+ list = this.queue;
93
+ this.queue = [];
94
+ batches = chunk(list, this.config.flushQueueSize);
95
+ return [4 /*yield*/, Promise.all(batches.map(function (batch) { return _this.send(batch); }))];
96
+ case 1:
97
+ _a.sent();
98
+ return [2 /*return*/];
99
+ }
100
+ });
101
+ });
102
+ };
103
+ Destination.prototype.send = function (list) {
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ var payload, res, e_1;
106
+ return __generator(this, function (_a) {
107
+ switch (_a.label) {
108
+ case 0:
109
+ if (!this.config.apiKey) {
110
+ return [2 /*return*/, this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE)];
111
+ }
112
+ payload = {
113
+ api_key: this.config.apiKey,
114
+ events: list.map(function (context) { return context.event; }),
115
+ };
116
+ _a.label = 1;
117
+ case 1:
118
+ _a.trys.push([1, 3, , 4]);
119
+ return [4 /*yield*/, this.config.transportProvider.send(getApiHost(this.config), payload)];
120
+ case 2:
121
+ res = _a.sent();
122
+ if (res === null) {
123
+ this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);
124
+ return [2 /*return*/];
125
+ }
126
+ this.handleReponse(res, list);
127
+ return [3 /*break*/, 4];
128
+ case 3:
129
+ e_1 = _a.sent();
130
+ this.fulfillRequest(list, 0, String(e_1));
131
+ return [3 /*break*/, 4];
132
+ case 4: return [2 /*return*/];
133
+ }
134
+ });
135
+ });
136
+ };
137
+ Destination.prototype.handleReponse = function (res, list) {
138
+ var status = res.status;
139
+ switch (status) {
140
+ case Status.Success:
141
+ this.handleSuccessResponse(res, list);
142
+ break;
143
+ case Status.Invalid:
144
+ this.handleInvalidResponse(res, list);
145
+ break;
146
+ case Status.PayloadTooLarge:
147
+ this.handlePayloadTooLargeResponse(res, list);
148
+ break;
149
+ case Status.RateLimit:
150
+ this.handleRateLimitResponse(res, list);
151
+ break;
152
+ default:
153
+ this.handleOtherReponse(list);
154
+ }
155
+ };
156
+ Destination.prototype.handleSuccessResponse = function (res, list) {
157
+ this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);
158
+ };
159
+ Destination.prototype.handleInvalidResponse = function (res, list) {
160
+ var _this = this;
161
+ if (res.body.missingField) {
162
+ this.fulfillRequest(list, res.statusCode, res.body.error);
163
+ return;
164
+ }
165
+ var dropIndex = __spreadArray(__spreadArray(__spreadArray([], __read(Object.values(res.body.eventsWithInvalidFields)), false), __read(Object.values(res.body.eventsWithMissingFields)), false), __read(res.body.silencedEvents), false).flat();
166
+ var dropIndexSet = new Set(dropIndex);
167
+ var retry = list.filter(function (context, index) {
168
+ if (dropIndexSet.has(index)) {
169
+ _this.fulfillRequest([context], res.statusCode, res.status);
170
+ return;
171
+ }
172
+ return true;
173
+ });
174
+ this.addToQueue.apply(this, __spreadArray([], __read(retry), false));
175
+ };
176
+ Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {
177
+ if (list.length === 1) {
178
+ this.fulfillRequest(list, res.statusCode, res.body.error);
179
+ return;
180
+ }
181
+ this.config.flushQueueSize /= 2;
182
+ this.addToQueue.apply(this, __spreadArray([], __read(list), false));
183
+ };
184
+ Destination.prototype.handleRateLimitResponse = function (res, list) {
185
+ var _this = this;
186
+ var dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);
187
+ var dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);
188
+ var throttledIndex = res.body.throttledEvents;
189
+ var dropUserIdsSet = new Set(dropUserIds);
190
+ var dropDeviceIdsSet = new Set(dropDeviceIds);
191
+ var throttledIndexSet = new Set(throttledIndex);
192
+ var retry = list.filter(function (context, index) {
193
+ if ((context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||
194
+ (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))) {
195
+ _this.fulfillRequest([context], res.statusCode, res.status);
196
+ return;
197
+ }
198
+ if (throttledIndexSet.has(index)) {
199
+ context.delay = _this.throttle;
200
+ }
201
+ return true;
202
+ });
203
+ this.addToQueue.apply(this, __spreadArray([], __read(retry), false));
204
+ };
205
+ Destination.prototype.handleOtherReponse = function (list) {
206
+ this.addToQueue.apply(this, __spreadArray([], __read(list), false));
207
+ };
208
+ Destination.prototype.fulfillRequest = function (list, code, message) {
209
+ this.removeFromBackup.apply(this, __spreadArray([], __read(list.map(function (context) { return context.event; })), false));
210
+ list.forEach(function (context) { return context.callback(buildResult(context.event, code, message)); });
211
+ };
212
+ Destination.prototype.addToBackup = function () {
213
+ var _this = this;
214
+ var events = [];
215
+ for (var _i = 0; _i < arguments.length; _i++) {
216
+ events[_i] = arguments[_i];
217
+ }
218
+ if (!this.config.saveEvents)
219
+ return;
220
+ events.forEach(function (event) { return _this.backup.add(event); });
221
+ this.snapshot();
222
+ };
223
+ Destination.prototype.removeFromBackup = function () {
224
+ var _this = this;
225
+ var events = [];
226
+ for (var _i = 0; _i < arguments.length; _i++) {
227
+ events[_i] = arguments[_i];
228
+ }
229
+ if (!this.config.saveEvents)
230
+ return;
231
+ events.forEach(function (event) { return _this.backup.delete(event); });
232
+ this.snapshot();
233
+ };
234
+ Destination.prototype.snapshot = function () {
235
+ if (!this.config.saveEvents)
236
+ return;
237
+ var events = Array.from(this.backup);
238
+ this.config.storageProvider.set(this.storageKey, events);
239
+ };
240
+ return Destination;
241
+ }());
242
+ export { Destination };
243
+ //# sourceMappingURL=destination.js.map