@amplitude/analytics-core 0.4.1 → 0.6.1

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 (55) hide show
  1. package/lib/cjs/config.d.ts +4 -4
  2. package/lib/cjs/config.d.ts.map +1 -1
  3. package/lib/cjs/config.js +11 -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/index.d.ts +1 -0
  10. package/lib/cjs/index.d.ts.map +1 -1
  11. package/lib/cjs/index.js +3 -1
  12. package/lib/cjs/index.js.map +1 -1
  13. package/lib/cjs/plugins/destination.d.ts +11 -9
  14. package/lib/cjs/plugins/destination.d.ts.map +1 -1
  15. package/lib/cjs/plugins/destination.js +63 -69
  16. package/lib/cjs/plugins/destination.js.map +1 -1
  17. package/lib/cjs/storage/memory.d.ts +6 -6
  18. package/lib/cjs/storage/memory.d.ts.map +1 -1
  19. package/lib/cjs/storage/memory.js +40 -7
  20. package/lib/cjs/storage/memory.js.map +1 -1
  21. package/lib/cjs/timeline.d.ts +12 -7
  22. package/lib/cjs/timeline.d.ts.map +1 -1
  23. package/lib/cjs/timeline.js +154 -138
  24. package/lib/cjs/timeline.js.map +1 -1
  25. package/lib/cjs/utils/return-wrapper.d.ts +1 -1
  26. package/lib/cjs/utils/return-wrapper.d.ts.map +1 -1
  27. package/lib/cjs/utils/return-wrapper.js.map +1 -1
  28. package/lib/esm/config.d.ts +4 -4
  29. package/lib/esm/config.d.ts.map +1 -1
  30. package/lib/esm/config.js +11 -2
  31. package/lib/esm/config.js.map +1 -1
  32. package/lib/esm/core-client.d.ts +2 -0
  33. package/lib/esm/core-client.d.ts.map +1 -1
  34. package/lib/esm/core-client.js +6 -8
  35. package/lib/esm/core-client.js.map +1 -1
  36. package/lib/esm/index.d.ts +1 -0
  37. package/lib/esm/index.d.ts.map +1 -1
  38. package/lib/esm/index.js +1 -0
  39. package/lib/esm/index.js.map +1 -1
  40. package/lib/esm/plugins/destination.d.ts +11 -9
  41. package/lib/esm/plugins/destination.d.ts.map +1 -1
  42. package/lib/esm/plugins/destination.js +63 -69
  43. package/lib/esm/plugins/destination.js.map +1 -1
  44. package/lib/esm/storage/memory.d.ts +6 -6
  45. package/lib/esm/storage/memory.d.ts.map +1 -1
  46. package/lib/esm/storage/memory.js +40 -7
  47. package/lib/esm/storage/memory.js.map +1 -1
  48. package/lib/esm/timeline.d.ts +12 -7
  49. package/lib/esm/timeline.d.ts.map +1 -1
  50. package/lib/esm/timeline.js +153 -130
  51. package/lib/esm/timeline.js.map +1 -1
  52. package/lib/esm/utils/return-wrapper.d.ts +1 -1
  53. package/lib/esm/utils/return-wrapper.d.ts.map +1 -1
  54. package/lib/esm/utils/return-wrapper.js.map +1 -1
  55. 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amplitude/analytics-core",
3
- "version": "0.4.1",
3
+ "version": "0.6.1",
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.3.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": "77f86840a33e9812eff986c3dec7f6372edea6eb"
41
+ "gitHead": "c71d676eb4eabebad93561771e1f4d2a6dde8ea9"
42
42
  }