@amplitude/analytics-core 0.5.0 → 0.6.2

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 (53) hide show
  1. package/lib/cjs/config.d.ts +1 -3
  2. package/lib/cjs/config.d.ts.map +1 -1
  3. package/lib/cjs/config.js +0 -2
  4. package/lib/cjs/config.js.map +1 -1
  5. package/lib/cjs/core-client.d.ts +2 -0
  6. package/lib/cjs/core-client.d.ts.map +1 -1
  7. package/lib/cjs/core-client.js +5 -7
  8. package/lib/cjs/core-client.js.map +1 -1
  9. package/lib/cjs/plugins/destination.d.ts +11 -9
  10. package/lib/cjs/plugins/destination.d.ts.map +1 -1
  11. package/lib/cjs/plugins/destination.js +63 -69
  12. package/lib/cjs/plugins/destination.js.map +1 -1
  13. package/lib/cjs/storage/memory.d.ts +6 -6
  14. package/lib/cjs/storage/memory.d.ts.map +1 -1
  15. package/lib/cjs/storage/memory.js +40 -7
  16. package/lib/cjs/storage/memory.js.map +1 -1
  17. package/lib/cjs/timeline.d.ts +12 -7
  18. package/lib/cjs/timeline.d.ts.map +1 -1
  19. package/lib/cjs/timeline.js +154 -138
  20. package/lib/cjs/timeline.js.map +1 -1
  21. package/lib/cjs/utils/return-wrapper.d.ts +1 -1
  22. package/lib/cjs/utils/return-wrapper.d.ts.map +1 -1
  23. package/lib/cjs/utils/return-wrapper.js.map +1 -1
  24. package/lib/cjs/utils/valid-properties.d.ts.map +1 -1
  25. package/lib/cjs/utils/valid-properties.js +3 -0
  26. package/lib/cjs/utils/valid-properties.js.map +1 -1
  27. package/lib/esm/config.d.ts +1 -3
  28. package/lib/esm/config.d.ts.map +1 -1
  29. package/lib/esm/config.js +0 -2
  30. package/lib/esm/config.js.map +1 -1
  31. package/lib/esm/core-client.d.ts +2 -0
  32. package/lib/esm/core-client.d.ts.map +1 -1
  33. package/lib/esm/core-client.js +6 -8
  34. package/lib/esm/core-client.js.map +1 -1
  35. package/lib/esm/plugins/destination.d.ts +11 -9
  36. package/lib/esm/plugins/destination.d.ts.map +1 -1
  37. package/lib/esm/plugins/destination.js +63 -69
  38. package/lib/esm/plugins/destination.js.map +1 -1
  39. package/lib/esm/storage/memory.d.ts +6 -6
  40. package/lib/esm/storage/memory.d.ts.map +1 -1
  41. package/lib/esm/storage/memory.js +40 -7
  42. package/lib/esm/storage/memory.js.map +1 -1
  43. package/lib/esm/timeline.d.ts +12 -7
  44. package/lib/esm/timeline.d.ts.map +1 -1
  45. package/lib/esm/timeline.js +153 -130
  46. package/lib/esm/timeline.js.map +1 -1
  47. package/lib/esm/utils/return-wrapper.d.ts +1 -1
  48. package/lib/esm/utils/return-wrapper.d.ts.map +1 -1
  49. package/lib/esm/utils/return-wrapper.js.map +1 -1
  50. package/lib/esm/utils/valid-properties.d.ts.map +1 -1
  51. package/lib/esm/utils/valid-properties.js +3 -0
  52. package/lib/esm/utils/valid-properties.js.map +1 -1
  53. package/package.json +3 -3
@@ -2,139 +2,162 @@ import { __assign, __awaiter, __generator, __read, __values } from "tslib";
2
2
  import { PluginType, } from '@amplitude/analytics-types';
3
3
  import { OPT_OUT_MESSAGE } from './messages';
4
4
  import { buildResult } from './utils/result-builder';
5
- export var queue = [];
6
- var applying = false;
7
- export var register = function (plugin, config) { return __awaiter(void 0, void 0, void 0, function () {
8
- return __generator(this, function (_a) {
9
- switch (_a.label) {
10
- case 0: return [4 /*yield*/, plugin.setup(config)];
11
- case 1:
12
- _a.sent();
13
- config.plugins.push(plugin);
14
- return [2 /*return*/];
15
- }
16
- });
17
- }); };
18
- export var deregister = function (pluginName, config) {
19
- config.plugins.splice(config.plugins.findIndex(function (plugin) { return plugin.name === pluginName; }), 1);
20
- return Promise.resolve();
21
- };
22
- export var push = function (event, config) {
23
- return new Promise(function (resolve) {
24
- if (config.optOut) {
25
- resolve(buildResult(event, 0, OPT_OUT_MESSAGE));
26
- return;
27
- }
28
- queue.push([event, resolve, config.plugins]);
29
- scheduleApply(0);
30
- });
31
- };
32
- export var scheduleApply = function (timeout) {
33
- if (applying)
34
- return;
35
- applying = true;
36
- setTimeout(function () {
37
- void apply().then(function () {
38
- applying = false;
39
- if (queue.length > 0) {
40
- scheduleApply(0);
5
+ var Timeline = /** @class */ (function () {
6
+ function Timeline() {
7
+ this.queue = [];
8
+ this.applying = false;
9
+ this.flushing = false;
10
+ this.plugins = [];
11
+ }
12
+ Timeline.prototype.register = function (plugin, config) {
13
+ return __awaiter(this, void 0, void 0, function () {
14
+ return __generator(this, function (_a) {
15
+ switch (_a.label) {
16
+ case 0: return [4 /*yield*/, plugin.setup(config)];
17
+ case 1:
18
+ _a.sent();
19
+ this.plugins.push(plugin);
20
+ return [2 /*return*/];
21
+ }
22
+ });
23
+ });
24
+ };
25
+ Timeline.prototype.deregister = function (pluginName) {
26
+ this.plugins.splice(this.plugins.findIndex(function (plugin) { return plugin.name === pluginName; }), 1);
27
+ return Promise.resolve();
28
+ };
29
+ Timeline.prototype.push = function (event, config) {
30
+ var _this = this;
31
+ return new Promise(function (resolve) {
32
+ if (config.optOut) {
33
+ resolve(buildResult(event, 0, OPT_OUT_MESSAGE));
34
+ return;
41
35
  }
36
+ _this.queue.push([event, resolve]);
37
+ _this.scheduleApply(0);
42
38
  });
43
- }, timeout);
44
- };
45
- export var apply = function () { return __awaiter(void 0, void 0, void 0, function () {
46
- var item, _a, event, _b, resolve, plugins, before, before_1, before_1_1, plugin, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e_2_1, destination, executeDestinations;
47
- var e_1, _c, e_2, _d;
48
- return __generator(this, function (_e) {
49
- switch (_e.label) {
50
- case 0:
51
- item = queue.shift();
52
- if (!item) {
53
- return [2 /*return*/];
39
+ };
40
+ Timeline.prototype.scheduleApply = function (timeout) {
41
+ var _this = this;
42
+ if (this.applying)
43
+ return;
44
+ this.applying = true;
45
+ setTimeout(function () {
46
+ void _this.apply(_this.queue.shift()).then(function () {
47
+ _this.applying = false;
48
+ if (_this.queue.length > 0) {
49
+ _this.scheduleApply(0);
54
50
  }
55
- _a = __read(item, 1), event = _a[0];
56
- _b = __read(item, 3), resolve = _b[1], plugins = _b[2];
57
- before = plugins.filter(function (plugin) { return plugin.type === PluginType.BEFORE; });
58
- _e.label = 1;
59
- case 1:
60
- _e.trys.push([1, 6, 7, 8]);
61
- before_1 = __values(before), before_1_1 = before_1.next();
62
- _e.label = 2;
63
- case 2:
64
- if (!!before_1_1.done) return [3 /*break*/, 5];
65
- plugin = before_1_1.value;
66
- return [4 /*yield*/, plugin.execute(__assign({}, event))];
67
- case 3:
68
- event = _e.sent();
69
- _e.label = 4;
70
- case 4:
71
- before_1_1 = before_1.next();
72
- return [3 /*break*/, 2];
73
- case 5: return [3 /*break*/, 8];
74
- case 6:
75
- e_1_1 = _e.sent();
76
- e_1 = { error: e_1_1 };
77
- return [3 /*break*/, 8];
78
- case 7:
79
- try {
80
- if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);
51
+ });
52
+ }, timeout);
53
+ };
54
+ Timeline.prototype.apply = function (item) {
55
+ return __awaiter(this, void 0, void 0, function () {
56
+ var _a, event, _b, resolve, before, before_1, before_1_1, plugin, e_1_1, enrichment, enrichment_1, enrichment_1_1, plugin, e_2_1, destination, executeDestinations;
57
+ var e_1, _c, e_2, _d;
58
+ return __generator(this, function (_e) {
59
+ switch (_e.label) {
60
+ case 0:
61
+ if (!item) {
62
+ return [2 /*return*/];
63
+ }
64
+ _a = __read(item, 1), event = _a[0];
65
+ _b = __read(item, 2), resolve = _b[1];
66
+ before = this.plugins.filter(function (plugin) { return plugin.type === PluginType.BEFORE; });
67
+ _e.label = 1;
68
+ case 1:
69
+ _e.trys.push([1, 6, 7, 8]);
70
+ before_1 = __values(before), before_1_1 = before_1.next();
71
+ _e.label = 2;
72
+ case 2:
73
+ if (!!before_1_1.done) return [3 /*break*/, 5];
74
+ plugin = before_1_1.value;
75
+ return [4 /*yield*/, plugin.execute(__assign({}, event))];
76
+ case 3:
77
+ event = _e.sent();
78
+ _e.label = 4;
79
+ case 4:
80
+ before_1_1 = before_1.next();
81
+ return [3 /*break*/, 2];
82
+ case 5: return [3 /*break*/, 8];
83
+ case 6:
84
+ e_1_1 = _e.sent();
85
+ e_1 = { error: e_1_1 };
86
+ return [3 /*break*/, 8];
87
+ case 7:
88
+ try {
89
+ if (before_1_1 && !before_1_1.done && (_c = before_1.return)) _c.call(before_1);
90
+ }
91
+ finally { if (e_1) throw e_1.error; }
92
+ return [7 /*endfinally*/];
93
+ case 8:
94
+ enrichment = this.plugins.filter(function (plugin) { return plugin.type === PluginType.ENRICHMENT; });
95
+ _e.label = 9;
96
+ case 9:
97
+ _e.trys.push([9, 14, 15, 16]);
98
+ enrichment_1 = __values(enrichment), enrichment_1_1 = enrichment_1.next();
99
+ _e.label = 10;
100
+ case 10:
101
+ if (!!enrichment_1_1.done) return [3 /*break*/, 13];
102
+ plugin = enrichment_1_1.value;
103
+ return [4 /*yield*/, plugin.execute(__assign({}, event))];
104
+ case 11:
105
+ event = _e.sent();
106
+ _e.label = 12;
107
+ case 12:
108
+ enrichment_1_1 = enrichment_1.next();
109
+ return [3 /*break*/, 10];
110
+ case 13: return [3 /*break*/, 16];
111
+ case 14:
112
+ e_2_1 = _e.sent();
113
+ e_2 = { error: e_2_1 };
114
+ return [3 /*break*/, 16];
115
+ case 15:
116
+ try {
117
+ if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);
118
+ }
119
+ finally { if (e_2) throw e_2.error; }
120
+ return [7 /*endfinally*/];
121
+ case 16:
122
+ destination = this.plugins.filter(function (plugin) { return plugin.type === PluginType.DESTINATION; });
123
+ executeDestinations = destination.map(function (plugin) {
124
+ var eventClone = __assign({}, event);
125
+ return plugin.execute(eventClone).catch(function (e) { return buildResult(eventClone, 0, String(e)); });
126
+ });
127
+ void Promise.all(executeDestinations).then(function (_a) {
128
+ var _b = __read(_a, 1), result = _b[0];
129
+ resolve(result);
130
+ });
131
+ return [2 /*return*/];
81
132
  }
82
- finally { if (e_1) throw e_1.error; }
83
- return [7 /*endfinally*/];
84
- case 8:
85
- enrichment = plugins.filter(function (plugin) { return plugin.type === PluginType.ENRICHMENT; });
86
- _e.label = 9;
87
- case 9:
88
- _e.trys.push([9, 14, 15, 16]);
89
- enrichment_1 = __values(enrichment), enrichment_1_1 = enrichment_1.next();
90
- _e.label = 10;
91
- case 10:
92
- if (!!enrichment_1_1.done) return [3 /*break*/, 13];
93
- plugin = enrichment_1_1.value;
94
- return [4 /*yield*/, plugin.execute(__assign({}, event))];
95
- case 11:
96
- event = _e.sent();
97
- _e.label = 12;
98
- case 12:
99
- enrichment_1_1 = enrichment_1.next();
100
- return [3 /*break*/, 10];
101
- case 13: return [3 /*break*/, 16];
102
- case 14:
103
- e_2_1 = _e.sent();
104
- e_2 = { error: e_2_1 };
105
- return [3 /*break*/, 16];
106
- case 15:
107
- try {
108
- if (enrichment_1_1 && !enrichment_1_1.done && (_d = enrichment_1.return)) _d.call(enrichment_1);
133
+ });
134
+ });
135
+ };
136
+ Timeline.prototype.flush = function () {
137
+ return __awaiter(this, void 0, void 0, function () {
138
+ var queue, destination, executeDestinations;
139
+ var _this = this;
140
+ return __generator(this, function (_a) {
141
+ switch (_a.label) {
142
+ case 0:
143
+ queue = this.queue;
144
+ this.queue = [];
145
+ return [4 /*yield*/, Promise.all(queue.map(function (item) { return _this.apply(item); }))];
146
+ case 1:
147
+ _a.sent();
148
+ destination = this.plugins.filter(function (plugin) { return plugin.type === PluginType.DESTINATION; });
149
+ executeDestinations = destination.map(function (plugin) {
150
+ return plugin.flush && plugin.flush();
151
+ });
152
+ return [4 /*yield*/, Promise.all(executeDestinations)];
153
+ case 2:
154
+ _a.sent();
155
+ return [2 /*return*/];
109
156
  }
110
- finally { if (e_2) throw e_2.error; }
111
- return [7 /*endfinally*/];
112
- case 16:
113
- destination = plugins.filter(function (plugin) { return plugin.type === PluginType.DESTINATION; });
114
- executeDestinations = destination.map(function (plugin) {
115
- var eventClone = __assign({}, event);
116
- return plugin.execute(eventClone).catch(function (e) { return buildResult(eventClone, 0, String(e)); });
117
- });
118
- void Promise.all(executeDestinations).then(function (_a) {
119
- var _b = __read(_a, 1), result = _b[0];
120
- resolve(result);
121
- });
122
- return [2 /*return*/];
123
- }
124
- });
125
- }); };
126
- export var flush = function (config) { return __awaiter(void 0, void 0, void 0, function () {
127
- var destination, flushDestinations;
128
- return __generator(this, function (_a) {
129
- switch (_a.label) {
130
- case 0:
131
- destination = config.plugins.filter(function (plugin) { return plugin.type === PluginType.DESTINATION; });
132
- flushDestinations = destination.map(function (plugin) { return plugin.flush && plugin.flush(true); });
133
- return [4 /*yield*/, Promise.all(flushDestinations)];
134
- case 1:
135
- _a.sent();
136
- return [2 /*return*/];
137
- }
138
- });
139
- }); };
157
+ });
158
+ });
159
+ };
160
+ return Timeline;
161
+ }());
162
+ export { Timeline };
140
163
  //# sourceMappingURL=timeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/timeline.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AmplitudeDestinationPlugin,\n BeforePlugin,\n Config,\n DestinationPlugin,\n EnrichmentPlugin,\n Event,\n EventCallback,\n Plugin,\n PluginType,\n Result,\n} from '@amplitude/analytics-types';\nimport { OPT_OUT_MESSAGE } from './messages';\nimport { buildResult } from './utils/result-builder';\n\nexport const queue: [Event, EventCallback, Plugin[]][] = [];\nlet applying = false;\n\nexport const register = async (plugin: Plugin, config: Config) => {\n await plugin.setup(config);\n config.plugins.push(plugin);\n};\n\nexport const deregister = (pluginName: string, config: Config) => {\n config.plugins.splice(\n config.plugins.findIndex((plugin) => plugin.name === pluginName),\n 1,\n );\n return Promise.resolve();\n};\n\nexport const push = (event: Event, config: Config) => {\n return new Promise<Result>((resolve) => {\n if (config.optOut) {\n resolve(buildResult(event, 0, OPT_OUT_MESSAGE));\n return;\n }\n queue.push([event, resolve, config.plugins]);\n scheduleApply(0);\n });\n};\n\nexport const scheduleApply = (timeout: number) => {\n if (applying) return;\n applying = true;\n setTimeout(() => {\n void apply().then(() => {\n applying = false;\n if (queue.length > 0) {\n scheduleApply(0);\n }\n });\n }, timeout);\n};\n\nexport const apply = async () => {\n const item = queue.shift();\n\n if (!item) {\n return;\n }\n\n let [event] = item;\n const [, resolve, plugins] = item;\n\n const before = plugins.filter<BeforePlugin>(\n (plugin: Plugin): plugin is BeforePlugin => plugin.type === PluginType.BEFORE,\n );\n\n for (const plugin of before) {\n event = await plugin.execute({ ...event });\n }\n\n const enrichment = plugins.filter<EnrichmentPlugin>(\n (plugin: Plugin): plugin is EnrichmentPlugin => plugin.type === PluginType.ENRICHMENT,\n );\n\n for (const plugin of enrichment) {\n event = await plugin.execute({ ...event });\n }\n\n const destination = plugins.filter<DestinationPlugin>(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === PluginType.DESTINATION,\n );\n\n const executeDestinations = destination.map((plugin) => {\n const eventClone = { ...event };\n return plugin.execute(eventClone).catch((e) => buildResult(eventClone, 0, String(e)));\n });\n\n void Promise.all(executeDestinations).then(([result]) => {\n resolve(result);\n });\n\n return;\n};\n\nexport const flush = async (config: Config) => {\n const destination = config.plugins.filter<AmplitudeDestinationPlugin>(\n (plugin: Plugin): plugin is AmplitudeDestinationPlugin => plugin.type === PluginType.DESTINATION,\n );\n\n const flushDestinations = destination.map((plugin) => plugin.flush && plugin.flush(true));\n\n await Promise.all(flushDestinations);\n};\n"]}
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/timeline.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n BeforePlugin,\n Config,\n DestinationPlugin,\n EnrichmentPlugin,\n Event,\n EventCallback,\n Plugin,\n PluginType,\n Result,\n} from '@amplitude/analytics-types';\nimport { OPT_OUT_MESSAGE } from './messages';\nimport { buildResult } from './utils/result-builder';\n\nexport class Timeline {\n queue: [Event, EventCallback][] = [];\n applying = false;\n flushing = false;\n plugins: Plugin[] = [];\n\n async register(plugin: Plugin, config: Config) {\n await plugin.setup(config);\n this.plugins.push(plugin);\n }\n\n deregister(pluginName: string) {\n this.plugins.splice(\n this.plugins.findIndex((plugin) => plugin.name === pluginName),\n 1,\n );\n return Promise.resolve();\n }\n\n push(event: Event, config: Config) {\n return new Promise<Result>((resolve) => {\n if (config.optOut) {\n resolve(buildResult(event, 0, OPT_OUT_MESSAGE));\n return;\n }\n this.queue.push([event, resolve]);\n this.scheduleApply(0);\n });\n }\n\n scheduleApply(timeout: number) {\n if (this.applying) return;\n this.applying = true;\n setTimeout(() => {\n void this.apply(this.queue.shift()).then(() => {\n this.applying = false;\n if (this.queue.length > 0) {\n this.scheduleApply(0);\n }\n });\n }, timeout);\n }\n\n async apply(item: [Event, EventCallback] | undefined) {\n if (!item) {\n return;\n }\n\n let [event] = item;\n const [, resolve] = item;\n\n const before = this.plugins.filter<BeforePlugin>(\n (plugin: Plugin): plugin is BeforePlugin => plugin.type === PluginType.BEFORE,\n );\n\n for (const plugin of before) {\n event = await plugin.execute({ ...event });\n }\n\n const enrichment = this.plugins.filter<EnrichmentPlugin>(\n (plugin: Plugin): plugin is EnrichmentPlugin => plugin.type === PluginType.ENRICHMENT,\n );\n\n for (const plugin of enrichment) {\n event = await plugin.execute({ ...event });\n }\n\n const destination = this.plugins.filter<DestinationPlugin>(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === PluginType.DESTINATION,\n );\n\n const executeDestinations = destination.map((plugin) => {\n const eventClone = { ...event };\n return plugin.execute(eventClone).catch((e) => buildResult(eventClone, 0, String(e)));\n });\n\n void Promise.all(executeDestinations).then(([result]) => {\n resolve(result);\n });\n\n return;\n }\n\n async flush() {\n const queue = this.queue;\n this.queue = [];\n\n await Promise.all(queue.map((item) => this.apply(item)));\n\n const destination = this.plugins.filter<DestinationPlugin>(\n (plugin: Plugin): plugin is DestinationPlugin => plugin.type === PluginType.DESTINATION,\n );\n\n const executeDestinations = destination.map((plugin) => {\n return plugin.flush && plugin.flush();\n });\n\n await Promise.all(executeDestinations);\n }\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  import { AmplitudeReturn } from '@amplitude/analytics-types';
2
- export declare const returnWrapper: <T extends (...args: any) => any>(fn: T) => (...args: Parameters<T>) => AmplitudeReturn<Awaited<ReturnType<T>>>;
2
+ export declare const returnWrapper: <T extends (...args: any) => any>(fn: T) => (...args: Parameters<T>) => AmplitudeReturn<ReturnType<T>>;
3
3
  //# sourceMappingURL=return-wrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"return-wrapper.d.ts","sourceRoot":"","sources":["../../../src/utils/return-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,eAAO,MAAM,aAAa,uBACH,GAAG,KAAK,GAAG,+EAG9B,CAAC"}
1
+ {"version":3,"file":"return-wrapper.d.ts","sourceRoot":"","sources":["../../../src/utils/return-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,eAAO,MAAM,aAAa,uBACH,GAAG,KAAK,GAAG,sEAG9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"return-wrapper.js","sourceRoot":"","sources":["../../../src/utils/return-wrapper.ts"],"names":[],"mappings":";AAEA,MAAM,CAAC,IAAM,aAAa,GACxB,UAAkC,EAAK;IACvC,OAAA;QAAC,cAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,yBAAsB;;QAA8C,OAAA,CAAC;YACpE,OAAO,EAAE,EAAE,wCAAI,IAAI,UAAkB;SACtC,CAAC;IAFmE,CAEnE;AAFF,CAEE,CAAC","sourcesContent":["import { AmplitudeReturn } from '@amplitude/analytics-types';\n\nexport const returnWrapper =\n <T extends (...args: any) => any>(fn: T) =>\n (...args: Parameters<T>): AmplitudeReturn<Awaited<ReturnType<T>>> => ({\n promise: fn(...args) as ReturnType<T>,\n });\n"]}
1
+ {"version":3,"file":"return-wrapper.js","sourceRoot":"","sources":["../../../src/utils/return-wrapper.ts"],"names":[],"mappings":";AAEA,MAAM,CAAC,IAAM,aAAa,GACxB,UAAkC,EAAK;IACvC,OAAA;QAAC,cAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,yBAAsB;;QAAqC,OAAA,CAAC;YAC3D,OAAO,EAAE,EAAE,wCAAI,IAAI,UAAkB;SACtC,CAAC;IAF0D,CAE1D;AAFF,CAEE,CAAC","sourcesContent":["import { AmplitudeReturn } from '@amplitude/analytics-types';\n\nexport const returnWrapper =\n <T extends (...args: any) => any>(fn: T) =>\n (...args: Parameters<T>): AmplitudeReturn<ReturnType<T>> => ({\n promise: fn(...args) as ReturnType<T>,\n });\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"valid-properties.d.ts","sourceRoot":"","sources":["../../../src/utils/valid-properties.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;MAAyC,OAUlE,CAAC;AAEF,eAAO,MAAM,iBAAiB,aAAc,MAAM,SAAS,GAAG,KAAG,OAuBhE,CAAC"}
1
+ {"version":3,"file":"valid-properties.d.ts","sourceRoot":"","sources":["../../../src/utils/valid-properties.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;MAAyC,OAUlE,CAAC;AAEF,eAAO,MAAM,iBAAiB,aAAc,MAAM,SAAS,GAAG,KAAG,OAyBhE,CAAC"}
@@ -43,6 +43,9 @@ export var isValidProperties = function (property, value) {
43
43
  finally { if (e_1) throw e_1.error; }
44
44
  }
45
45
  }
46
+ else if (value === null || value === undefined) {
47
+ return false;
48
+ }
46
49
  else if (typeof value === 'object') {
47
50
  // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
48
51
  return isValidObject(value);
@@ -1 +1 @@
1
- {"version":3,"file":"valid-properties.js","sourceRoot":"","sources":["../../../src/utils/valid-properties.ts"],"names":[],"mappings":";AAAA,IAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,UAAkC;IAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,iBAAiB,EAAE;QACtD,OAAO,KAAK,CAAC;KACd;IACD,KAAK,IAAM,GAAG,IAAI,UAAU,EAAE;QAC5B,mEAAmE;QACnE,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;KAClD;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,QAAgB,EAAE,KAAU;;IAC5D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC;;YACnB,KAA2B,IAAA,UAAA,SAAA,KAAK,CAAA,4BAAA,+CAAE;gBAA7B,IAAM,YAAY,kBAAA;gBACrB,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;oBAC3C,OAAO,GAAG,OAAO,IAAI,aAAa,CAAC,YAAsB,CAAC,CAAC;iBAC5D;qBAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,YAAY,CAAC,EAAE;oBAC9D,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,KAAK,CAAC;iBACd;aACF;;;;;;;;;KACF;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACpC,iEAAiE;QACjE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;KAC7B;SAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,EAAE;QAClE,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","sourcesContent":["const MAX_PROPERTY_KEYS = 1000;\n\nexport const isValidObject = (properties: { [key: string]: any }): boolean => {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (const key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = properties[key];\n if (!isValidProperties(key, value)) return false;\n }\n return true;\n};\n\nexport const isValidProperties = (property: string, value: any): boolean => {\n if (typeof property !== 'string') return false;\n if (Array.isArray(value)) {\n let isValid = true;\n for (const valueElement of value) {\n if (Array.isArray(valueElement)) {\n return false;\n } else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement as object);\n } else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n } else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n } else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n"]}
1
+ {"version":3,"file":"valid-properties.js","sourceRoot":"","sources":["../../../src/utils/valid-properties.ts"],"names":[],"mappings":";AAAA,IAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,UAAkC;IAC9D,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,iBAAiB,EAAE;QACtD,OAAO,KAAK,CAAC;KACd;IACD,KAAK,IAAM,GAAG,IAAI,UAAU,EAAE;QAC5B,mEAAmE;QACnE,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;KAClD;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,QAAgB,EAAE,KAAU;;IAC5D,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC;;YACnB,KAA2B,IAAA,UAAA,SAAA,KAAK,CAAA,4BAAA,+CAAE;gBAA7B,IAAM,YAAY,kBAAA;gBACrB,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACd;qBAAM,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;oBAC3C,OAAO,GAAG,OAAO,IAAI,aAAa,CAAC,YAAsB,CAAC,CAAC;iBAC5D;qBAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,YAAY,CAAC,EAAE;oBAC9D,OAAO,KAAK,CAAC;iBACd;gBACD,IAAI,CAAC,OAAO,EAAE;oBACZ,OAAO,KAAK,CAAC;iBACd;aACF;;;;;;;;;KACF;SAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QAChD,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QACpC,iEAAiE;QACjE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;KAC7B;SAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC,EAAE;QAClE,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","sourcesContent":["const MAX_PROPERTY_KEYS = 1000;\n\nexport const isValidObject = (properties: { [key: string]: any }): boolean => {\n if (Object.keys(properties).length > MAX_PROPERTY_KEYS) {\n return false;\n }\n for (const key in properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = properties[key];\n if (!isValidProperties(key, value)) return false;\n }\n return true;\n};\n\nexport const isValidProperties = (property: string, value: any): boolean => {\n if (typeof property !== 'string') return false;\n if (Array.isArray(value)) {\n let isValid = true;\n for (const valueElement of value) {\n if (Array.isArray(valueElement)) {\n return false;\n } else if (typeof valueElement === 'object') {\n isValid = isValid && isValidObject(valueElement as object);\n } else if (!['number', 'string'].includes(typeof valueElement)) {\n return false;\n }\n if (!isValid) {\n return false;\n }\n }\n } else if (value === null || value === undefined) {\n return false;\n } else if (typeof value === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isValidObject(value);\n } else if (!['number', 'string', 'boolean'].includes(typeof value)) {\n return false;\n }\n return true;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/analytics-core",
3
- "version": "0.5.0",
3
+ "version": "0.6.2",
4
4
  "description": "",
5
5
  "author": "Amplitude Inc",
6
6
  "homepage": "https://github.com/amplitude/Amplitude-TypeScript",
@@ -32,11 +32,11 @@
32
32
  "url": "https://github.com/amplitude/Amplitude-TypeScript/issues"
33
33
  },
34
34
  "dependencies": {
35
- "@amplitude/analytics-types": "^0.4.0",
35
+ "@amplitude/analytics-types": "^0.5.1",
36
36
  "tslib": "^2.3.1"
37
37
  },
38
38
  "files": [
39
39
  "lib"
40
40
  ],
41
- "gitHead": "139379f59cb6ba6031a01355d1125d6b78c12b9c"
41
+ "gitHead": "4956aed5c5799b948bd9cdaa8ae2357eff823abb"
42
42
  }