@amplitude/analytics-core 2.5.5 → 2.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/__mocks__/logger.js +1 -0
- package/lib/cjs/__mocks__/logger.js.map +1 -1
- package/lib/cjs/config.js +1 -0
- package/lib/cjs/config.js.map +1 -1
- package/lib/cjs/constants.js +1 -0
- package/lib/cjs/constants.js.map +1 -1
- package/lib/cjs/core-client.js +1 -0
- package/lib/cjs/core-client.js.map +1 -1
- package/lib/cjs/event-bridge/event-bridge-channel.js +1 -0
- package/lib/cjs/event-bridge/event-bridge-channel.js.map +1 -1
- package/lib/cjs/event-bridge/event-bridge-container.js +1 -0
- package/lib/cjs/event-bridge/event-bridge-container.js.map +1 -1
- package/lib/cjs/event-bridge/event-bridge.js +1 -0
- package/lib/cjs/event-bridge/event-bridge.js.map +1 -1
- package/lib/cjs/identify.js +1 -0
- package/lib/cjs/identify.js.map +1 -1
- package/lib/cjs/index.js +1 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/logger.js +1 -0
- package/lib/cjs/logger.js.map +1 -1
- package/lib/cjs/messages.js +1 -0
- package/lib/cjs/messages.js.map +1 -1
- package/lib/cjs/plugins/destination.d.ts +6 -4
- package/lib/cjs/plugins/destination.d.ts.map +1 -1
- package/lib/cjs/plugins/destination.js +62 -48
- package/lib/cjs/plugins/destination.js.map +1 -1
- package/lib/cjs/revenue.d.ts +2 -0
- package/lib/cjs/revenue.d.ts.map +1 -1
- package/lib/cjs/revenue.js +6 -0
- package/lib/cjs/revenue.js.map +1 -1
- package/lib/cjs/storage/memory.js +1 -0
- package/lib/cjs/storage/memory.js.map +1 -1
- package/lib/cjs/timeline.js +1 -0
- package/lib/cjs/timeline.js.map +1 -1
- package/lib/cjs/transports/base.js +1 -0
- package/lib/cjs/transports/base.js.map +1 -1
- package/lib/cjs/utils/chunk.js +1 -0
- package/lib/cjs/utils/chunk.js.map +1 -1
- package/lib/cjs/utils/debug.js +1 -0
- package/lib/cjs/utils/debug.js.map +1 -1
- package/lib/cjs/utils/event-builder.js +1 -0
- package/lib/cjs/utils/event-builder.js.map +1 -1
- package/lib/cjs/utils/result-builder.js +1 -0
- package/lib/cjs/utils/result-builder.js.map +1 -1
- package/lib/cjs/utils/return-wrapper.js +1 -0
- package/lib/cjs/utils/return-wrapper.js.map +1 -1
- package/lib/cjs/utils/uuid.js +1 -0
- package/lib/cjs/utils/uuid.js.map +1 -1
- package/lib/cjs/utils/valid-properties.js +1 -0
- package/lib/cjs/utils/valid-properties.js.map +1 -1
- package/lib/esm/plugins/destination.d.ts +6 -4
- package/lib/esm/plugins/destination.d.ts.map +1 -1
- package/lib/esm/plugins/destination.js +61 -48
- package/lib/esm/plugins/destination.js.map +1 -1
- package/lib/esm/revenue.d.ts +2 -0
- package/lib/esm/revenue.d.ts.map +1 -1
- package/lib/esm/revenue.js +5 -0
- package/lib/esm/revenue.js.map +1 -1
- package/package.json +3 -3
|
@@ -30,7 +30,16 @@ var Destination = /** @class */ (function () {
|
|
|
30
30
|
this.retryTimeout = 1000;
|
|
31
31
|
this.throttleTimeout = 30000;
|
|
32
32
|
this.storageKey = '';
|
|
33
|
-
|
|
33
|
+
// Indicator of whether events that are scheduled (but not flushed yet).
|
|
34
|
+
// When flush:
|
|
35
|
+
// 1. assign `scheduleId` to `flushId`
|
|
36
|
+
// 2. set `scheduleId` to null
|
|
37
|
+
this.scheduleId = null;
|
|
38
|
+
// Timeout in milliseconds of current schedule
|
|
39
|
+
this.scheduledTimeout = 0;
|
|
40
|
+
// Indicator of whether current flush resolves.
|
|
41
|
+
// When flush resolves, set `flushId` to null
|
|
42
|
+
this.flushId = null;
|
|
34
43
|
this.queue = [];
|
|
35
44
|
}
|
|
36
45
|
Destination.prototype.setup = function (config) {
|
|
@@ -67,60 +76,58 @@ var Destination = /** @class */ (function () {
|
|
|
67
76
|
callback: function (result) { return resolve(result); },
|
|
68
77
|
timeout: 0,
|
|
69
78
|
};
|
|
70
|
-
|
|
79
|
+
_this.queue.push(context);
|
|
80
|
+
_this.schedule(_this.config.flushIntervalMillis);
|
|
81
|
+
_this.saveEvents();
|
|
71
82
|
});
|
|
72
83
|
};
|
|
73
|
-
Destination.prototype.
|
|
84
|
+
Destination.prototype.removeEventsExceedFlushMaxRetries = function (list) {
|
|
74
85
|
var _this = this;
|
|
75
86
|
return list.filter(function (context) {
|
|
87
|
+
context.attempts += 1;
|
|
76
88
|
if (context.attempts < _this.config.flushMaxRetries) {
|
|
77
|
-
context.attempts += 1;
|
|
78
89
|
return true;
|
|
79
90
|
}
|
|
80
91
|
void _this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);
|
|
81
92
|
return false;
|
|
82
93
|
});
|
|
83
94
|
};
|
|
84
|
-
Destination.prototype.
|
|
95
|
+
Destination.prototype.scheduleEvents = function (list) {
|
|
85
96
|
var _this = this;
|
|
86
|
-
if (shouldAddToQueue === void 0) { shouldAddToQueue = false; }
|
|
87
97
|
list.forEach(function (context) {
|
|
88
|
-
|
|
89
|
-
if (shouldAddToQueue) {
|
|
90
|
-
_this.queue = _this.queue.concat(context);
|
|
91
|
-
}
|
|
92
|
-
if (context.timeout === 0) {
|
|
93
|
-
_this.schedule(_this.config.flushIntervalMillis);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
setTimeout(function () {
|
|
97
|
-
context.timeout = 0;
|
|
98
|
-
_this.schedule(0);
|
|
99
|
-
}, context.timeout);
|
|
98
|
+
_this.schedule(context.timeout === 0 ? _this.config.flushIntervalMillis : context.timeout);
|
|
100
99
|
});
|
|
101
100
|
};
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
107
|
-
var tryable = this.getTryableList(list);
|
|
108
|
-
this.scheduleTryable(tryable, true);
|
|
109
|
-
this.saveEvents();
|
|
110
|
-
};
|
|
101
|
+
// Schedule a flush in timeout when
|
|
102
|
+
// 1. No schedule
|
|
103
|
+
// 2. Timeout greater than existing timeout.
|
|
104
|
+
// This makes sure that when throttled, no flush when throttle timeout expires.
|
|
111
105
|
Destination.prototype.schedule = function (timeout) {
|
|
112
106
|
var _this = this;
|
|
113
|
-
if (this.
|
|
107
|
+
if (this.config.offline) {
|
|
114
108
|
return;
|
|
115
109
|
}
|
|
116
|
-
this.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
110
|
+
if (this.scheduleId === null || (this.scheduleId && timeout > this.scheduledTimeout)) {
|
|
111
|
+
if (this.scheduleId) {
|
|
112
|
+
clearTimeout(this.scheduleId);
|
|
113
|
+
}
|
|
114
|
+
this.scheduledTimeout = timeout;
|
|
115
|
+
this.scheduleId = setTimeout(function () {
|
|
116
|
+
_this.queue = _this.queue.map(function (context) {
|
|
117
|
+
context.timeout = 0;
|
|
118
|
+
return context;
|
|
119
|
+
});
|
|
120
|
+
void _this.flush(true);
|
|
121
|
+
}, timeout);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
// Mark current schedule is flushed.
|
|
126
|
+
Destination.prototype.resetSchedule = function () {
|
|
127
|
+
this.scheduleId = null;
|
|
128
|
+
this.scheduledTimeout = 0;
|
|
123
129
|
};
|
|
130
|
+
// Flush all events regardless of their timeout
|
|
124
131
|
Destination.prototype.flush = function (useRetry) {
|
|
125
132
|
if (useRetry === void 0) { useRetry = false; }
|
|
126
133
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -131,16 +138,20 @@ var Destination = /** @class */ (function () {
|
|
|
131
138
|
case 0:
|
|
132
139
|
// Skip flush if offline
|
|
133
140
|
if (this.config.offline) {
|
|
141
|
+
this.resetSchedule();
|
|
134
142
|
this.config.loggerProvider.debug('Skipping flush while offline.');
|
|
135
143
|
return [2 /*return*/];
|
|
136
144
|
}
|
|
145
|
+
if (this.flushId) {
|
|
146
|
+
this.resetSchedule();
|
|
147
|
+
this.config.loggerProvider.debug('Skipping flush because previous flush has not resolved.');
|
|
148
|
+
return [2 /*return*/];
|
|
149
|
+
}
|
|
150
|
+
this.flushId = this.scheduleId;
|
|
151
|
+
this.resetSchedule();
|
|
137
152
|
list = [];
|
|
138
153
|
later = [];
|
|
139
154
|
this.queue.forEach(function (context) { return (context.timeout === 0 ? list.push(context) : later.push(context)); });
|
|
140
|
-
if (this.scheduled) {
|
|
141
|
-
clearTimeout(this.scheduled);
|
|
142
|
-
this.scheduled = null;
|
|
143
|
-
}
|
|
144
155
|
batches = chunk(list, this.config.flushQueueSize);
|
|
145
156
|
// Promise.all() doesn't guarantee resolve order.
|
|
146
157
|
// Sequentially resolve to make sure backend receives events in order
|
|
@@ -159,7 +170,9 @@ var Destination = /** @class */ (function () {
|
|
|
159
170
|
// Promise.all() doesn't guarantee resolve order.
|
|
160
171
|
// Sequentially resolve to make sure backend receives events in order
|
|
161
172
|
_a.sent();
|
|
162
|
-
|
|
173
|
+
// Mark current flush is done
|
|
174
|
+
this.flushId = null;
|
|
175
|
+
this.scheduleEvents(this.queue);
|
|
163
176
|
return [2 /*return*/];
|
|
164
177
|
}
|
|
165
178
|
});
|
|
@@ -271,8 +284,8 @@ var Destination = /** @class */ (function () {
|
|
|
271
284
|
// log intermediate event status before retry
|
|
272
285
|
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
273
286
|
}
|
|
274
|
-
var tryable = this.
|
|
275
|
-
this.
|
|
287
|
+
var tryable = this.removeEventsExceedFlushMaxRetries(retry);
|
|
288
|
+
this.scheduleEvents(tryable);
|
|
276
289
|
};
|
|
277
290
|
Destination.prototype.handlePayloadTooLargeResponse = function (res, list) {
|
|
278
291
|
if (list.length === 1) {
|
|
@@ -282,8 +295,8 @@ var Destination = /** @class */ (function () {
|
|
|
282
295
|
// log intermediate event status before retry
|
|
283
296
|
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
284
297
|
this.config.flushQueueSize /= 2;
|
|
285
|
-
var tryable = this.
|
|
286
|
-
this.
|
|
298
|
+
var tryable = this.removeEventsExceedFlushMaxRetries(list);
|
|
299
|
+
this.scheduleEvents(tryable);
|
|
287
300
|
};
|
|
288
301
|
Destination.prototype.handleRateLimitResponse = function (res, list) {
|
|
289
302
|
var _this = this;
|
|
@@ -308,8 +321,8 @@ var Destination = /** @class */ (function () {
|
|
|
308
321
|
// log intermediate event status before retry
|
|
309
322
|
this.config.loggerProvider.warn(getResponseBodyString(res));
|
|
310
323
|
}
|
|
311
|
-
var tryable = this.
|
|
312
|
-
this.
|
|
324
|
+
var tryable = this.removeEventsExceedFlushMaxRetries(retry);
|
|
325
|
+
this.scheduleEvents(tryable);
|
|
313
326
|
};
|
|
314
327
|
Destination.prototype.handleOtherResponse = function (list) {
|
|
315
328
|
var _this = this;
|
|
@@ -317,8 +330,8 @@ var Destination = /** @class */ (function () {
|
|
|
317
330
|
context.timeout = context.attempts * _this.retryTimeout;
|
|
318
331
|
return context;
|
|
319
332
|
});
|
|
320
|
-
var tryable = this.
|
|
321
|
-
this.
|
|
333
|
+
var tryable = this.removeEventsExceedFlushMaxRetries(later);
|
|
334
|
+
this.scheduleEvents(tryable);
|
|
322
335
|
};
|
|
323
336
|
Destination.prototype.fulfillRequest = function (list, code, message) {
|
|
324
337
|
this.removeEvents(list);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destination.js","sourceRoot":"","sources":["../../../src/plugins/destination.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Config,\n DestinationContext as Context,\n DestinationPlugin,\n Event,\n InvalidResponse,\n PayloadTooLargeResponse,\n RateLimitResponse,\n Response,\n Result,\n Status,\n SuccessResponse,\n} from '@amplitude/analytics-types';\nimport {\n INVALID_API_KEY,\n MAX_RETRIES_EXCEEDED_MESSAGE,\n MISSING_API_KEY_MESSAGE,\n SUCCESS_MESSAGE,\n UNEXPECTED_ERROR_MESSAGE,\n} from '../messages';\nimport { STORAGE_PREFIX } from '../constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig, RequestMetadata } from '../config';\nimport { UUID } from '../utils/uuid';\n\nfunction getErrorMessage(error: unknown) {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nexport function getResponseBodyString(res: Response) {\n let responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n } catch {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\n\nexport class Destination implements DestinationPlugin {\n name = 'amplitude';\n type = 'destination' as const;\n\n retryTimeout = 1000;\n throttleTimeout = 30000;\n storageKey = '';\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: Config;\n private scheduled: ReturnType<typeof setTimeout> | null = null;\n queue: Context[] = [];\n\n async setup(config: Config): Promise<undefined> {\n this.config = config;\n\n this.storageKey = `${STORAGE_PREFIX}_${this.config.apiKey.substring(0, 10)}`;\n const unsent = await this.config.storageProvider?.get(this.storageKey);\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map((event) => this.execute(event))).catch();\n }\n\n return Promise.resolve(undefined);\n }\n\n execute(event: Event): Promise<Result> {\n // Assign insert_id for dropping invalid event later\n if (!event.insert_id) {\n event.insert_id = UUID();\n }\n\n return new Promise((resolve) => {\n const context = {\n event,\n attempts: 0,\n callback: (result: Result) => resolve(result),\n timeout: 0,\n };\n void this.addToQueue(context);\n });\n }\n\n getTryableList(list: Context[]) {\n return list.filter((context) => {\n if (context.attempts < this.config.flushMaxRetries) {\n context.attempts += 1;\n return true;\n }\n void this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n }\n\n scheduleTryable(list: Context[], shouldAddToQueue = false) {\n list.forEach((context) => {\n // Only need to concat the queue for the first time\n if (shouldAddToQueue) {\n this.queue = this.queue.concat(context);\n }\n if (context.timeout === 0) {\n this.schedule(this.config.flushIntervalMillis);\n return;\n }\n\n setTimeout(() => {\n context.timeout = 0;\n this.schedule(0);\n }, context.timeout);\n });\n }\n\n addToQueue(...list: Context[]) {\n const tryable = this.getTryableList(list);\n this.scheduleTryable(tryable, true);\n this.saveEvents();\n }\n\n schedule(timeout: number) {\n if (this.scheduled || this.config.offline) {\n return;\n }\n\n this.scheduled = setTimeout(() => {\n void this.flush(true).then(() => {\n if (this.queue.length > 0) {\n this.schedule(timeout);\n }\n });\n }, timeout);\n }\n\n async flush(useRetry = false) {\n // Skip flush if offline\n if (this.config.offline) {\n this.config.loggerProvider.debug('Skipping flush while offline.');\n return;\n }\n\n const list: Context[] = [];\n const later: Context[] = [];\n this.queue.forEach((context) => (context.timeout === 0 ? list.push(context) : later.push(context)));\n\n if (this.scheduled) {\n clearTimeout(this.scheduled);\n this.scheduled = null;\n }\n\n const batches = chunk(list, this.config.flushQueueSize);\n\n // Promise.all() doesn't guarantee resolve order.\n // Sequentially resolve to make sure backend receives events in order\n await batches.reduce(async (promise, batch) => {\n await promise;\n return await this.send(batch, useRetry);\n }, Promise.resolve());\n\n this.scheduleTryable(later);\n }\n\n async send(list: Context[], useRetry = true) {\n if (!this.config.apiKey) {\n return this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE);\n }\n\n const payload = {\n api_key: this.config.apiKey,\n events: list.map((context) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { extra, ...eventWithoutExtra } = context.event;\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n request_metadata: this.config.requestMetadata,\n };\n this.config.requestMetadata = new RequestMetadata();\n\n try {\n const { serverUrl } = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch);\n const res = await this.config.transportProvider.send(serverUrl, payload);\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return;\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, `${res.status}: ${getResponseBodyString(res)}`);\n } else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return;\n }\n this.handleResponse(res, list);\n } catch (e) {\n const errorMessage = getErrorMessage(e);\n this.config.loggerProvider.error(errorMessage);\n this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n }\n }\n\n handleResponse(res: Response, list: Context[]) {\n const { status } = res;\n\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(`{code: 0, error: \"Status '${status}' provided for ${list.length} events\"}`);\n this.handleOtherResponse(list);\n break;\n }\n }\n }\n\n handleSuccessResponse(res: SuccessResponse, list: Context[]) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n }\n\n handleInvalidResponse(res: InvalidResponse, list: Context[]) {\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n const dropIndex = [\n ...Object.values(res.body.eventsWithInvalidFields),\n ...Object.values(res.body.eventsWithMissingFields),\n ...Object.values(res.body.eventsWithInvalidIdLengths),\n ...res.body.silencedEvents,\n ].flat();\n const dropIndexSet = new Set(dropIndex);\n\n const retry = list.filter((context, index) => {\n if (dropIndexSet.has(index)) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n const tryable = this.getTryableList(retry);\n this.scheduleTryable(tryable);\n }\n\n handlePayloadTooLargeResponse(res: PayloadTooLargeResponse, list: Context[]) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n\n this.config.flushQueueSize /= 2;\n\n const tryable = this.getTryableList(list);\n this.scheduleTryable(tryable);\n }\n\n handleRateLimitResponse(res: RateLimitResponse, list: Context[]) {\n const dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n const dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n const throttledIndex = res.body.throttledEvents;\n const dropUserIdsSet = new Set(dropUserIds);\n const dropDeviceIdsSet = new Set(dropDeviceIds);\n const throttledIndexSet = new Set(throttledIndex);\n\n const retry = list.filter((context, index) => {\n if (\n (context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))\n ) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = this.throttleTimeout;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n const tryable = this.getTryableList(retry);\n this.scheduleTryable(tryable);\n }\n\n handleOtherResponse(list: Context[]) {\n const later = list.map((context) => {\n context.timeout = context.attempts * this.retryTimeout;\n return context;\n });\n\n const tryable = this.getTryableList(later);\n this.scheduleTryable(tryable);\n }\n\n fulfillRequest(list: Context[], code: number, message: string) {\n this.removeEvents(list);\n list.forEach((context) => context.callback(buildResult(context.event, code, message)));\n }\n\n /**\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n *\n * Update the event storage based on the queue\n */\n saveEvents() {\n if (!this.config.storageProvider) {\n return;\n }\n\n const updatedEvents = this.queue.map((context) => context.event);\n void this.config.storageProvider.set(this.storageKey, updatedEvents);\n }\n\n /**\n * This is called on response comes back for a request\n */\n removeEvents(eventsToRemove: Context[]) {\n this.queue = this.queue.filter(\n (queuedContext) => !eventsToRemove.some((context) => context.event.insert_id === queuedContext.event.insert_id),\n );\n\n this.saveEvents();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"destination.js","sourceRoot":"","sources":["../../../src/plugins/destination.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Config,\n DestinationContext as Context,\n DestinationPlugin,\n Event,\n InvalidResponse,\n PayloadTooLargeResponse,\n RateLimitResponse,\n Response,\n Result,\n Status,\n SuccessResponse,\n} from '@amplitude/analytics-types';\nimport {\n INVALID_API_KEY,\n MAX_RETRIES_EXCEEDED_MESSAGE,\n MISSING_API_KEY_MESSAGE,\n SUCCESS_MESSAGE,\n UNEXPECTED_ERROR_MESSAGE,\n} from '../messages';\nimport { STORAGE_PREFIX } from '../constants';\nimport { chunk } from '../utils/chunk';\nimport { buildResult } from '../utils/result-builder';\nimport { createServerConfig, RequestMetadata } from '../config';\nimport { UUID } from '../utils/uuid';\n\nfunction getErrorMessage(error: unknown) {\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nexport function getResponseBodyString(res: Response) {\n let responseBodyString = '';\n try {\n if ('body' in res) {\n responseBodyString = JSON.stringify(res.body, null, 2);\n }\n } catch {\n // to avoid crash, but don't care about the error, add comment to avoid empty block lint error\n }\n return responseBodyString;\n}\n\nexport class Destination implements DestinationPlugin {\n name = 'amplitude';\n type = 'destination' as const;\n\n retryTimeout = 1000;\n throttleTimeout = 30000;\n storageKey = '';\n // this.config is defined in setup() which will always be called first\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n config: Config;\n // Indicator of whether events that are scheduled (but not flushed yet).\n // When flush:\n // 1. assign `scheduleId` to `flushId`\n // 2. set `scheduleId` to null\n scheduleId: ReturnType<typeof setTimeout> | null = null;\n // Timeout in milliseconds of current schedule\n scheduledTimeout = 0;\n // Indicator of whether current flush resolves.\n // When flush resolves, set `flushId` to null\n flushId: ReturnType<typeof setTimeout> | null = null;\n queue: Context[] = [];\n\n async setup(config: Config): Promise<undefined> {\n this.config = config;\n\n this.storageKey = `${STORAGE_PREFIX}_${this.config.apiKey.substring(0, 10)}`;\n const unsent = await this.config.storageProvider?.get(this.storageKey);\n if (unsent && unsent.length > 0) {\n void Promise.all(unsent.map((event) => this.execute(event))).catch();\n }\n\n return Promise.resolve(undefined);\n }\n\n execute(event: Event): Promise<Result> {\n // Assign insert_id for dropping invalid event later\n if (!event.insert_id) {\n event.insert_id = UUID();\n }\n\n return new Promise((resolve) => {\n const context = {\n event,\n attempts: 0,\n callback: (result: Result) => resolve(result),\n timeout: 0,\n };\n this.queue.push(context);\n this.schedule(this.config.flushIntervalMillis);\n this.saveEvents();\n });\n }\n\n removeEventsExceedFlushMaxRetries(list: Context[]) {\n return list.filter((context) => {\n context.attempts += 1;\n if (context.attempts < this.config.flushMaxRetries) {\n return true;\n }\n void this.fulfillRequest([context], 500, MAX_RETRIES_EXCEEDED_MESSAGE);\n return false;\n });\n }\n\n scheduleEvents(list: Context[]) {\n list.forEach((context) => {\n this.schedule(context.timeout === 0 ? this.config.flushIntervalMillis : context.timeout);\n });\n }\n\n // Schedule a flush in timeout when\n // 1. No schedule\n // 2. Timeout greater than existing timeout.\n // This makes sure that when throttled, no flush when throttle timeout expires.\n schedule(timeout: number) {\n if (this.config.offline) {\n return;\n }\n\n if (this.scheduleId === null || (this.scheduleId && timeout > this.scheduledTimeout)) {\n if (this.scheduleId) {\n clearTimeout(this.scheduleId);\n }\n this.scheduledTimeout = timeout;\n this.scheduleId = setTimeout(() => {\n this.queue = this.queue.map((context) => {\n context.timeout = 0;\n return context;\n });\n void this.flush(true);\n }, timeout);\n return;\n }\n }\n\n // Mark current schedule is flushed.\n resetSchedule() {\n this.scheduleId = null;\n this.scheduledTimeout = 0;\n }\n\n // Flush all events regardless of their timeout\n async flush(useRetry = false) {\n // Skip flush if offline\n if (this.config.offline) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush while offline.');\n return;\n }\n\n if (this.flushId) {\n this.resetSchedule();\n this.config.loggerProvider.debug('Skipping flush because previous flush has not resolved.');\n return;\n }\n\n this.flushId = this.scheduleId;\n this.resetSchedule();\n\n const list: Context[] = [];\n const later: Context[] = [];\n this.queue.forEach((context) => (context.timeout === 0 ? list.push(context) : later.push(context)));\n\n const batches = chunk(list, this.config.flushQueueSize);\n\n // Promise.all() doesn't guarantee resolve order.\n // Sequentially resolve to make sure backend receives events in order\n await batches.reduce(async (promise, batch) => {\n await promise;\n return await this.send(batch, useRetry);\n }, Promise.resolve());\n\n // Mark current flush is done\n this.flushId = null;\n\n this.scheduleEvents(this.queue);\n }\n\n async send(list: Context[], useRetry = true) {\n if (!this.config.apiKey) {\n return this.fulfillRequest(list, 400, MISSING_API_KEY_MESSAGE);\n }\n\n const payload = {\n api_key: this.config.apiKey,\n events: list.map((context) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { extra, ...eventWithoutExtra } = context.event;\n return eventWithoutExtra;\n }),\n options: {\n min_id_length: this.config.minIdLength,\n },\n client_upload_time: new Date().toISOString(),\n request_metadata: this.config.requestMetadata,\n };\n this.config.requestMetadata = new RequestMetadata();\n\n try {\n const { serverUrl } = createServerConfig(this.config.serverUrl, this.config.serverZone, this.config.useBatch);\n const res = await this.config.transportProvider.send(serverUrl, payload);\n if (res === null) {\n this.fulfillRequest(list, 0, UNEXPECTED_ERROR_MESSAGE);\n return;\n }\n if (!useRetry) {\n if ('body' in res) {\n this.fulfillRequest(list, res.statusCode, `${res.status}: ${getResponseBodyString(res)}`);\n } else {\n this.fulfillRequest(list, res.statusCode, res.status);\n }\n return;\n }\n this.handleResponse(res, list);\n } catch (e) {\n const errorMessage = getErrorMessage(e);\n this.config.loggerProvider.error(errorMessage);\n this.handleResponse({ status: Status.Failed, statusCode: 0 }, list);\n }\n }\n\n handleResponse(res: Response, list: Context[]) {\n const { status } = res;\n\n switch (status) {\n case Status.Success: {\n this.handleSuccessResponse(res, list);\n break;\n }\n case Status.Invalid: {\n this.handleInvalidResponse(res, list);\n break;\n }\n case Status.PayloadTooLarge: {\n this.handlePayloadTooLargeResponse(res, list);\n break;\n }\n case Status.RateLimit: {\n this.handleRateLimitResponse(res, list);\n break;\n }\n default: {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(`{code: 0, error: \"Status '${status}' provided for ${list.length} events\"}`);\n this.handleOtherResponse(list);\n break;\n }\n }\n }\n\n handleSuccessResponse(res: SuccessResponse, list: Context[]) {\n this.fulfillRequest(list, res.statusCode, SUCCESS_MESSAGE);\n }\n\n handleInvalidResponse(res: InvalidResponse, list: Context[]) {\n if (res.body.missingField || res.body.error.startsWith(INVALID_API_KEY)) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n const dropIndex = [\n ...Object.values(res.body.eventsWithInvalidFields),\n ...Object.values(res.body.eventsWithMissingFields),\n ...Object.values(res.body.eventsWithInvalidIdLengths),\n ...res.body.silencedEvents,\n ].flat();\n const dropIndexSet = new Set(dropIndex);\n\n const retry = list.filter((context, index) => {\n if (dropIndexSet.has(index)) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n const tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n }\n\n handlePayloadTooLargeResponse(res: PayloadTooLargeResponse, list: Context[]) {\n if (list.length === 1) {\n this.fulfillRequest(list, res.statusCode, res.body.error);\n return;\n }\n\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n\n this.config.flushQueueSize /= 2;\n\n const tryable = this.removeEventsExceedFlushMaxRetries(list);\n this.scheduleEvents(tryable);\n }\n\n handleRateLimitResponse(res: RateLimitResponse, list: Context[]) {\n const dropUserIds = Object.keys(res.body.exceededDailyQuotaUsers);\n const dropDeviceIds = Object.keys(res.body.exceededDailyQuotaDevices);\n const throttledIndex = res.body.throttledEvents;\n const dropUserIdsSet = new Set(dropUserIds);\n const dropDeviceIdsSet = new Set(dropDeviceIds);\n const throttledIndexSet = new Set(throttledIndex);\n\n const retry = list.filter((context, index) => {\n if (\n (context.event.user_id && dropUserIdsSet.has(context.event.user_id)) ||\n (context.event.device_id && dropDeviceIdsSet.has(context.event.device_id))\n ) {\n this.fulfillRequest([context], res.statusCode, res.body.error);\n return;\n }\n if (throttledIndexSet.has(index)) {\n context.timeout = this.throttleTimeout;\n }\n return true;\n });\n\n if (retry.length > 0) {\n // log intermediate event status before retry\n this.config.loggerProvider.warn(getResponseBodyString(res));\n }\n\n const tryable = this.removeEventsExceedFlushMaxRetries(retry);\n this.scheduleEvents(tryable);\n }\n\n handleOtherResponse(list: Context[]) {\n const later = list.map((context) => {\n context.timeout = context.attempts * this.retryTimeout;\n return context;\n });\n\n const tryable = this.removeEventsExceedFlushMaxRetries(later);\n this.scheduleEvents(tryable);\n }\n\n fulfillRequest(list: Context[], code: number, message: string) {\n this.removeEvents(list);\n list.forEach((context) => context.callback(buildResult(context.event, code, message)));\n }\n\n /**\n * This is called on\n * 1) new events are added to queue; or\n * 2) response comes back for a request\n *\n * Update the event storage based on the queue\n */\n saveEvents() {\n if (!this.config.storageProvider) {\n return;\n }\n\n const updatedEvents = this.queue.map((context) => context.event);\n void this.config.storageProvider.set(this.storageKey, updatedEvents);\n }\n\n /**\n * This is called on response comes back for a request\n */\n removeEvents(eventsToRemove: Context[]) {\n this.queue = this.queue.filter(\n (queuedContext) => !eventsToRemove.some((context) => context.event.insert_id === queuedContext.event.insert_id),\n );\n\n this.saveEvents();\n }\n}\n"]}
|
package/lib/esm/revenue.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare class Revenue implements IRevenue {
|
|
|
4
4
|
private quantity;
|
|
5
5
|
private price;
|
|
6
6
|
private revenueType?;
|
|
7
|
+
private currency?;
|
|
7
8
|
private properties?;
|
|
8
9
|
private revenue?;
|
|
9
10
|
constructor();
|
|
@@ -11,6 +12,7 @@ export declare class Revenue implements IRevenue {
|
|
|
11
12
|
setQuantity(quantity: number): this;
|
|
12
13
|
setPrice(price: number): this;
|
|
13
14
|
setRevenueType(revenueType: string): this;
|
|
15
|
+
setCurrency(currency: string): this;
|
|
14
16
|
setRevenue(revenue: number): this;
|
|
15
17
|
setEventProperties(properties: {
|
|
16
18
|
[key: string]: ValidPropertyType;
|
package/lib/esm/revenue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revenue.d.ts","sourceRoot":"","sources":["../../src/revenue.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,OAAO,IAAI,QAAQ,EACnB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAGpC,qBAAa,OAAQ,YAAW,QAAQ;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAyB;IAC5C,OAAO,CAAC,OAAO,CAAC,CAAS;;IAQzB,YAAY,CAAC,SAAS,EAAE,MAAM;IAK9B,WAAW,CAAC,QAAQ,EAAE,MAAM;IAO5B,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKtB,cAAc,CAAC,WAAW,EAAE,MAAM;IAKlC,UAAU,CAAC,OAAO,EAAE,MAAM;IAK1B,kBAAkB,CAAC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;KAAE;IAOnE,kBAAkB,IAAI,sBAAsB;
|
|
1
|
+
{"version":3,"file":"revenue.d.ts","sourceRoot":"","sources":["../../src/revenue.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,sBAAsB,EACtB,OAAO,IAAI,QAAQ,EACnB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAGpC,qBAAa,OAAQ,YAAW,QAAQ;IACtC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAyB;IAC5C,OAAO,CAAC,OAAO,CAAC,CAAS;;IAQzB,YAAY,CAAC,SAAS,EAAE,MAAM;IAK9B,WAAW,CAAC,QAAQ,EAAE,MAAM;IAO5B,QAAQ,CAAC,KAAK,EAAE,MAAM;IAKtB,cAAc,CAAC,WAAW,EAAE,MAAM;IAKlC,WAAW,CAAC,QAAQ,EAAE,MAAM;IAK5B,UAAU,CAAC,OAAO,EAAE,MAAM;IAK1B,kBAAkB,CAAC,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAAA;KAAE;IAOnE,kBAAkB,IAAI,sBAAsB;CAU7C"}
|
package/lib/esm/revenue.js
CHANGED
|
@@ -25,6 +25,10 @@ var Revenue = /** @class */ (function () {
|
|
|
25
25
|
this.revenueType = revenueType;
|
|
26
26
|
return this;
|
|
27
27
|
};
|
|
28
|
+
Revenue.prototype.setCurrency = function (currency) {
|
|
29
|
+
this.currency = currency;
|
|
30
|
+
return this;
|
|
31
|
+
};
|
|
28
32
|
Revenue.prototype.setRevenue = function (revenue) {
|
|
29
33
|
this.revenue = revenue;
|
|
30
34
|
return this;
|
|
@@ -41,6 +45,7 @@ var Revenue = /** @class */ (function () {
|
|
|
41
45
|
eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;
|
|
42
46
|
eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;
|
|
43
47
|
eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;
|
|
48
|
+
eventProperties[RevenueProperty.REVENUE_CURRENCY] = this.currency;
|
|
44
49
|
eventProperties[RevenueProperty.REVENUE] = this.revenue;
|
|
45
50
|
return eventProperties;
|
|
46
51
|
};
|
package/lib/esm/revenue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revenue.js","sourceRoot":"","sources":["../../src/revenue.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,eAAe,GAIhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;
|
|
1
|
+
{"version":3,"file":"revenue.js","sourceRoot":"","sources":["../../src/revenue.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,eAAe,GAIhB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD;IASE;QACE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IAED,8BAAY,GAAZ,UAAa,SAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAAW,GAAX,UAAY,QAAgB;QAC1B,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0BAAQ,GAAR,UAAS,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAc,GAAd,UAAe,WAAmB;QAChC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAAW,GAAX,UAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAAU,GAAV,UAAW,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAkB,GAAlB,UAAmB,UAAgD;QACjE,IAAI,aAAa,CAAC,UAAU,CAAC,EAAE;YAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;SAC9B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAkB,GAAlB;QACE,IAAM,eAAe,GAA2B,IAAI,CAAC,UAAU,CAAC,CAAC,cAAM,IAAI,CAAC,UAAU,EAAG,CAAC,CAAC,EAAE,CAAC;QAC9F,eAAe,CAAC,eAAe,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACrE,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClE,eAAe,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5D,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACjE,eAAe,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClE,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACxD,OAAO,eAAe,CAAC;IACzB,CAAC;IACH,cAAC;AAAD,CAAC,AAhED,IAgEC","sourcesContent":["import {\n RevenueProperty,\n RevenueEventProperties,\n Revenue as IRevenue,\n ValidPropertyType,\n} from '@amplitude/analytics-types';\nimport { isValidObject } from './utils/valid-properties';\n\nexport class Revenue implements IRevenue {\n private productId: string;\n private quantity: number;\n private price: number;\n private revenueType?: string;\n private currency?: string;\n private properties?: { [key: string]: any };\n private revenue?: number;\n\n constructor() {\n this.productId = '';\n this.quantity = 1;\n this.price = 0.0;\n }\n\n setProductId(productId: string) {\n this.productId = productId;\n return this;\n }\n\n setQuantity(quantity: number) {\n if (quantity > 0) {\n this.quantity = quantity;\n }\n return this;\n }\n\n setPrice(price: number) {\n this.price = price;\n return this;\n }\n\n setRevenueType(revenueType: string) {\n this.revenueType = revenueType;\n return this;\n }\n\n setCurrency(currency: string) {\n this.currency = currency;\n return this;\n }\n\n setRevenue(revenue: number) {\n this.revenue = revenue;\n return this;\n }\n\n setEventProperties(properties: { [key: string]: ValidPropertyType }) {\n if (isValidObject(properties)) {\n this.properties = properties;\n }\n return this;\n }\n\n getEventProperties(): RevenueEventProperties {\n const eventProperties: RevenueEventProperties = this.properties ? { ...this.properties } : {};\n eventProperties[RevenueProperty.REVENUE_PRODUCT_ID] = this.productId;\n eventProperties[RevenueProperty.REVENUE_QUANTITY] = this.quantity;\n eventProperties[RevenueProperty.REVENUE_PRICE] = this.price;\n eventProperties[RevenueProperty.REVENUE_TYPE] = this.revenueType;\n eventProperties[RevenueProperty.REVENUE_CURRENCY] = this.currency;\n eventProperties[RevenueProperty.REVENUE] = this.revenue;\n return eventProperties;\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amplitude/analytics-core",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.6",
|
|
4
4
|
"description": "",
|
|
5
5
|
"author": "Amplitude Inc",
|
|
6
6
|
"homepage": "https://github.com/amplitude/Amplitude-TypeScript",
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
"url": "https://github.com/amplitude/Amplitude-TypeScript/issues"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@amplitude/analytics-types": "^2.
|
|
38
|
+
"@amplitude/analytics-types": "^2.9.0",
|
|
39
39
|
"tslib": "^2.4.1"
|
|
40
40
|
},
|
|
41
41
|
"files": [
|
|
42
42
|
"lib"
|
|
43
43
|
],
|
|
44
|
-
"gitHead": "
|
|
44
|
+
"gitHead": "e9b1fd973f86c5f262465f2d033b73a742697219"
|
|
45
45
|
}
|