@segment/actions-core 1.3.0-next.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 (81) hide show
  1. package/dist/cjs/create-request-client.d.ts +5 -0
  2. package/dist/cjs/create-request-client.js +24 -0
  3. package/dist/cjs/dayjs.d.ts +2 -0
  4. package/dist/cjs/dayjs.js +10 -0
  5. package/dist/cjs/defaults.d.ts +2 -0
  6. package/dist/cjs/defaults.js +15 -0
  7. package/dist/cjs/destination-kit/action.d.ts +86 -0
  8. package/dist/cjs/destination-kit/action.js +217 -0
  9. package/dist/cjs/destination-kit/fields-to-jsonschema.d.ts +4 -0
  10. package/dist/cjs/destination-kit/fields-to-jsonschema.js +38 -0
  11. package/dist/cjs/destination-kit/index.d.ts +84 -0
  12. package/dist/cjs/destination-kit/index.js +165 -0
  13. package/dist/cjs/destination-kit/step.d.ts +38 -0
  14. package/dist/cjs/destination-kit/step.js +54 -0
  15. package/dist/cjs/destination-kit/types.d.ts +39 -0
  16. package/dist/cjs/destination-kit/types.js +3 -0
  17. package/dist/cjs/get.d.ts +5 -0
  18. package/dist/cjs/get.js +22 -0
  19. package/dist/cjs/index.d.ts +12 -0
  20. package/dist/cjs/index.js +26 -0
  21. package/dist/cjs/json-object.d.ts +11 -0
  22. package/dist/cjs/json-object.js +3 -0
  23. package/dist/cjs/mapping-kit/index.d.ts +8 -0
  24. package/dist/cjs/mapping-kit/index.js +182 -0
  25. package/dist/cjs/mapping-kit/is-directive.d.ts +2 -0
  26. package/dist/cjs/mapping-kit/is-directive.js +22 -0
  27. package/dist/cjs/mapping-kit/placeholders.d.ts +4 -0
  28. package/dist/cjs/mapping-kit/placeholders.js +51 -0
  29. package/dist/cjs/mapping-kit/validate.d.ts +1 -0
  30. package/dist/cjs/mapping-kit/validate.js +280 -0
  31. package/dist/cjs/omit.d.ts +4 -0
  32. package/dist/cjs/omit.js +15 -0
  33. package/dist/cjs/real-type-of.d.ts +12 -0
  34. package/dist/cjs/real-type-of.js +25 -0
  35. package/dist/cjs/remove-undefined.d.ts +1 -0
  36. package/dist/cjs/remove-undefined.js +24 -0
  37. package/dist/cjs/segment-event.d.ts +127 -0
  38. package/dist/cjs/segment-event.js +3 -0
  39. package/dist/cjs/time.d.ts +8 -0
  40. package/dist/cjs/time.js +18 -0
  41. package/dist/esm/create-request-client.d.ts +5 -0
  42. package/dist/esm/create-request-client.js +18 -0
  43. package/dist/esm/dayjs.d.ts +2 -0
  44. package/dist/esm/dayjs.js +5 -0
  45. package/dist/esm/defaults.d.ts +2 -0
  46. package/dist/esm/defaults.js +11 -0
  47. package/dist/esm/destination-kit/action.d.ts +86 -0
  48. package/dist/esm/destination-kit/action.js +209 -0
  49. package/dist/esm/destination-kit/fields-to-jsonschema.d.ts +4 -0
  50. package/dist/esm/destination-kit/fields-to-jsonschema.js +33 -0
  51. package/dist/esm/destination-kit/index.d.ts +84 -0
  52. package/dist/esm/destination-kit/index.js +157 -0
  53. package/dist/esm/destination-kit/step.d.ts +38 -0
  54. package/dist/esm/destination-kit/step.js +49 -0
  55. package/dist/esm/destination-kit/types.d.ts +39 -0
  56. package/dist/esm/destination-kit/types.js +2 -0
  57. package/dist/esm/get.d.ts +5 -0
  58. package/dist/esm/get.js +18 -0
  59. package/dist/esm/index.d.ts +12 -0
  60. package/dist/esm/index.js +9 -0
  61. package/dist/esm/json-object.d.ts +11 -0
  62. package/dist/esm/json-object.js +2 -0
  63. package/dist/esm/mapping-kit/index.d.ts +8 -0
  64. package/dist/esm/mapping-kit/index.js +175 -0
  65. package/dist/esm/mapping-kit/is-directive.d.ts +2 -0
  66. package/dist/esm/mapping-kit/is-directive.js +18 -0
  67. package/dist/esm/mapping-kit/placeholders.d.ts +4 -0
  68. package/dist/esm/mapping-kit/placeholders.js +47 -0
  69. package/dist/esm/mapping-kit/validate.d.ts +1 -0
  70. package/dist/esm/mapping-kit/validate.js +274 -0
  71. package/dist/esm/omit.d.ts +4 -0
  72. package/dist/esm/omit.js +11 -0
  73. package/dist/esm/real-type-of.d.ts +12 -0
  74. package/dist/esm/real-type-of.js +18 -0
  75. package/dist/esm/remove-undefined.d.ts +1 -0
  76. package/dist/esm/remove-undefined.js +20 -0
  77. package/dist/esm/segment-event.d.ts +127 -0
  78. package/dist/esm/segment-event.js +2 -0
  79. package/dist/esm/time.d.ts +8 -0
  80. package/dist/esm/time.js +13 -0
  81. package/package.json +74 -0
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.render = void 0;
4
+ const get_1 = require("../get");
5
+ const real_type_of_1 = require("../real-type-of");
6
+ const entityMap = {
7
+ '&': '&',
8
+ '<': '&lt;',
9
+ '>': '&gt;',
10
+ '"': '&quot;',
11
+ "'": '&#39;',
12
+ '/': '&#x2F;',
13
+ '`': '&#x60;',
14
+ '=': '&#x3D;'
15
+ };
16
+ function escapeHtml(value) {
17
+ if (typeof value !== 'string')
18
+ return value;
19
+ return value.replace(/[&<>"'`=/]/g, (match) => {
20
+ return entityMap[match];
21
+ });
22
+ }
23
+ /**
24
+ * Replaces curly brace placeholders in a template with real content
25
+ */
26
+ function render(template, data = {}) {
27
+ if (typeof template !== 'string') {
28
+ throw new TypeError(`Invalid template! Template should be a "string" but ${real_type_of_1.realTypeOf(template)} was given.`);
29
+ }
30
+ function replacer(chars, escape) {
31
+ return (match) => {
32
+ var _a;
33
+ // Remove the wrapping curly braces
34
+ match = match.slice(chars, -chars).trim();
35
+ // Grab the value from data, if it exists
36
+ const value = get_1.get(data, match);
37
+ // Replace with the value (or empty string)
38
+ if (escape) {
39
+ return String((_a = escapeHtml(value)) !== null && _a !== void 0 ? _a : '');
40
+ }
41
+ return (value !== null && value !== void 0 ? value : '');
42
+ };
43
+ }
44
+ return (template
45
+ // Replace unescaped content
46
+ .replace(/\{\{\{([^}]+)\}\}\}/g, replacer(3, false))
47
+ // Replace escaped content
48
+ .replace(/\{\{([^}]+)\}\}/g, replacer(2, true)));
49
+ }
50
+ exports.render = render;
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2Vob2xkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21hcHBpbmcta2l0L3BsYWNlaG9sZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxnQ0FBNEI7QUFDNUIsa0RBQTRDO0FBRTVDLE1BQU0sU0FBUyxHQUEyQjtJQUN4QyxHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxPQUFPO0lBQ1osR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQTtBQUVELFNBQVMsVUFBVSxDQUFDLEtBQWM7SUFDaEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzVDLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pCLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsTUFBTSxDQUFDLFFBQWdCLEVBQUUsT0FBZ0IsRUFBRTtJQUN6RCxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsRUFBRTtRQUNoQyxNQUFNLElBQUksU0FBUyxDQUFDLHVEQUF1RCx5QkFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQTtLQUM5RztJQUVELFNBQVMsUUFBUSxDQUFDLEtBQWEsRUFBRSxNQUFlO1FBQzlDLE9BQU8sQ0FBQyxLQUFhLEVBQVUsRUFBRTs7WUFDL0IsbUNBQW1DO1lBQ25DLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1lBRXpDLHlDQUF5QztZQUN6QyxNQUFNLEtBQUssR0FBRyxTQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBRTlCLDJDQUEyQztZQUMzQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLE1BQU0sT0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFJLEVBQUUsQ0FBQyxDQUFBO2FBQ3ZDO1lBRUQsT0FBTyxDQUFDLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLEVBQUUsQ0FBVyxDQUFBO1FBQ2hDLENBQUMsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLENBQ0wsUUFBUTtRQUNOLDRCQUE0QjtTQUMzQixPQUFPLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRCwwQkFBMEI7U0FDekIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDbEQsQ0FBQTtBQUNILENBQUM7QUE3QkQsd0JBNkJDIn0=
@@ -0,0 +1 @@
1
+ export default function validate(mapping: unknown, stack?: string[]): void | null;
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const aggregate_error_1 = __importDefault(require("aggregate-error"));
7
+ const ts_custom_error_1 = require("ts-custom-error");
8
+ const is_directive_1 = require("./is-directive");
9
+ const real_type_of_1 = require("../real-type-of");
10
+ class ValidationError extends ts_custom_error_1.CustomError {
11
+ constructor(message, stack = []) {
12
+ super(`/${stack.join('/')} ${message}.`);
13
+ }
14
+ }
15
+ function flatAggregate(errors) {
16
+ const result = [];
17
+ errors.forEach((error) => {
18
+ if (error instanceof aggregate_error_1.default) {
19
+ result.push(...error);
20
+ }
21
+ else {
22
+ result.push(error);
23
+ }
24
+ });
25
+ return result;
26
+ }
27
+ function realTypeOrDirective(value) {
28
+ const type = real_type_of_1.realTypeOf(value);
29
+ if (type === 'object' && Object.keys(value).some((k) => k.startsWith('@'))) {
30
+ return 'directive';
31
+ }
32
+ return type;
33
+ }
34
+ const directives = {};
35
+ function validateDirective(obj, stack = []) {
36
+ // "allow" non-directive objects so that we can throw a more descriptive error below
37
+ if (!is_directive_1.isDirective(obj) && !real_type_of_1.isObject(obj)) {
38
+ const type = real_type_of_1.realTypeOf(obj);
39
+ throw new ValidationError(`should be a directive object but it is ${indefiniteArticle(type)} ${type}`, stack);
40
+ }
41
+ const keys = Object.keys(obj);
42
+ const directiveKeys = keys.filter((key) => key.startsWith('@'));
43
+ if (directiveKeys.length > 1) {
44
+ throw new ValidationError(`should only have one @-prefixed key but it has ${directiveKeys.length} keys`, stack);
45
+ }
46
+ // Check that there aren't other keys besides @directive or _metadata
47
+ const otherKeys = keys.filter((key) => !key.startsWith('@') && key !== '_metadata');
48
+ if (otherKeys.length > 0) {
49
+ throw new ValidationError(`should only have one @-prefixed key but it has ${keys.length} keys`, stack);
50
+ }
51
+ const directiveKey = directiveKeys[0];
52
+ const fn = directives[directiveKey];
53
+ if (typeof fn !== 'function') {
54
+ throw new ValidationError(`has an invalid directive: ${directiveKey}`, stack);
55
+ }
56
+ fn(obj[directiveKey], stack);
57
+ }
58
+ function validateDirectiveOrRaw(v, stack = []) {
59
+ const type = realTypeOrDirective(v);
60
+ switch (type) {
61
+ case 'directive':
62
+ return validateDirective(v, stack);
63
+ case 'object':
64
+ case 'array':
65
+ case 'boolean':
66
+ case 'string':
67
+ case 'number':
68
+ case 'null':
69
+ return;
70
+ default:
71
+ throw new ValidationError(`should be a mapping directive or a JSON value but it is ${indefiniteArticle(type)} ${type}`, stack);
72
+ }
73
+ }
74
+ function validateDirectiveOrString(v, stack = []) {
75
+ const type = realTypeOrDirective(v);
76
+ switch (type) {
77
+ case 'directive':
78
+ return validateDirective(v, stack);
79
+ case 'string':
80
+ return;
81
+ default:
82
+ throw new ValidationError(`should be a string or a mapping directive but it is ${indefiniteArticle(type)} ${type}`, stack);
83
+ }
84
+ }
85
+ function validateDirectiveOrObject(v, stack = []) {
86
+ const type = realTypeOrDirective(v);
87
+ switch (type) {
88
+ case 'directive':
89
+ return validateDirective(v, stack);
90
+ case 'object':
91
+ return validateObject(v, stack);
92
+ default:
93
+ throw new ValidationError(`should be a mapping directive or an object but it is ${indefiniteArticle(type)} ${type}`, stack);
94
+ }
95
+ }
96
+ function validateDirectiveOrArray(v, stack = []) {
97
+ const type = realTypeOrDirective(v);
98
+ switch (type) {
99
+ case 'directive':
100
+ return validateDirective(v, stack);
101
+ case 'array':
102
+ return validateArray(v, stack);
103
+ default:
104
+ throw new ValidationError(`should be a mapping directive or an array but it is ${indefiniteArticle(type)} ${type}`, stack);
105
+ }
106
+ }
107
+ function validateObject(value, stack = []) {
108
+ const type = realTypeOrDirective(value);
109
+ if (type !== 'object') {
110
+ throw new ValidationError(`should be an object but it is ${indefiniteArticle(type)} ${type}`, stack);
111
+ }
112
+ const obj = value;
113
+ const keys = Object.keys(obj);
114
+ const directiveKey = keys.find((k) => k.charAt(0) === '@');
115
+ if (directiveKey) {
116
+ throw new ValidationError(`shouldn't have directive (@-prefixed) keys but it has ${JSON.stringify(directiveKey)}`, stack);
117
+ }
118
+ const errors = [];
119
+ keys.forEach((k) => {
120
+ try {
121
+ validate(obj[k], [...stack, k]);
122
+ }
123
+ catch (e) {
124
+ errors.push(e);
125
+ }
126
+ });
127
+ if (errors.length) {
128
+ throw new aggregate_error_1.default(flatAggregate(errors));
129
+ }
130
+ }
131
+ function validateObjectWithFields(input, fields, stack = []) {
132
+ validateObject(input, stack);
133
+ const errors = [];
134
+ const obj = input;
135
+ Object.entries(fields).forEach(([prop, { required, optional }]) => {
136
+ try {
137
+ if (required) {
138
+ if (obj[prop] === undefined) {
139
+ throw new ValidationError(`should have field ${JSON.stringify(prop)} but it doesn't`, stack);
140
+ }
141
+ required(obj[prop], [...stack, prop]);
142
+ }
143
+ else if (optional) {
144
+ if (obj[prop] !== undefined) {
145
+ optional(obj[prop], [...stack, prop]);
146
+ }
147
+ }
148
+ }
149
+ catch (error) {
150
+ errors.push(error);
151
+ }
152
+ });
153
+ if (errors.length) {
154
+ throw new aggregate_error_1.default(flatAggregate(errors));
155
+ }
156
+ }
157
+ function validateArray(arr, stack = []) {
158
+ const type = real_type_of_1.realTypeOf(arr);
159
+ if (type !== 'array') {
160
+ throw new ValidationError(`should be an array but it is ${indefiniteArticle(type)} ${type}`, stack);
161
+ }
162
+ }
163
+ function directive(names, fn) {
164
+ if (!Array.isArray(names)) {
165
+ names = [names];
166
+ }
167
+ names.forEach((name) => {
168
+ directives[name] = (v, stack = []) => {
169
+ try {
170
+ fn(v, [...stack, name]);
171
+ }
172
+ catch (e) {
173
+ if (e instanceof ValidationError || e instanceof aggregate_error_1.default) {
174
+ throw e;
175
+ }
176
+ throw new ValidationError(e.message, stack);
177
+ }
178
+ };
179
+ });
180
+ }
181
+ directive('@base64', (v, stack) => {
182
+ validateDirectiveOrString(v, stack);
183
+ });
184
+ directive('@if', (v, stack) => {
185
+ validateObjectWithFields(v, {
186
+ exists: { optional: validateDirectiveOrRaw },
187
+ true: { optional: validateDirectiveOrRaw },
188
+ then: { optional: validateDirectiveOrRaw },
189
+ else: { optional: validateDirectiveOrRaw }
190
+ }, stack);
191
+ });
192
+ directive('@json', (v, stack) => {
193
+ validateDirectiveOrRaw(v, stack);
194
+ });
195
+ directive('@lowercase', (v, stack) => {
196
+ validateDirectiveOrString(v, stack);
197
+ });
198
+ directive('@merge', (v, stack = []) => {
199
+ validateArray(v, stack);
200
+ const arr = v;
201
+ const errors = [];
202
+ arr.forEach((obj, i) => {
203
+ try {
204
+ validateDirectiveOrObject(obj, [...stack, `${i}`]);
205
+ }
206
+ catch (error) {
207
+ errors.push(error);
208
+ }
209
+ });
210
+ if (errors.length) {
211
+ throw new aggregate_error_1.default(errors);
212
+ }
213
+ });
214
+ directive(['@omit', '@pick'], (v, stack = []) => {
215
+ validateObjectWithFields(v, {
216
+ object: { required: validateDirectiveOrObject },
217
+ fields: { required: validateDirectiveOrArray }
218
+ }, stack);
219
+ const obj = v;
220
+ if (Array.isArray(obj.fields)) {
221
+ const errors = [];
222
+ obj.fields.forEach((field, i) => {
223
+ try {
224
+ validateDirectiveOrString(field, [...stack, i.toString()]);
225
+ }
226
+ catch (error) {
227
+ errors.push(error);
228
+ }
229
+ });
230
+ if (errors.length) {
231
+ throw new aggregate_error_1.default(errors);
232
+ }
233
+ }
234
+ });
235
+ directive('@path', (v, stack) => {
236
+ validateDirectiveOrString(v, stack);
237
+ });
238
+ directive('@root', () => {
239
+ // no-op
240
+ });
241
+ directive('@template', (v, stack) => {
242
+ validateDirectiveOrString(v, stack);
243
+ });
244
+ directive('@timestamp', (v, stack) => {
245
+ validateObjectWithFields(v, {
246
+ format: { required: validateDirectiveOrString },
247
+ inputFormat: { optional: validateDirectiveOrString },
248
+ timestamp: { required: validateDirectiveOrString }
249
+ }, stack);
250
+ });
251
+ directive('@uuid', () => {
252
+ // no-op
253
+ });
254
+ function indefiniteArticle(s) {
255
+ switch (s.charAt(0)) {
256
+ case 'a':
257
+ case 'e':
258
+ case 'i':
259
+ case 'o':
260
+ case 'u':
261
+ return 'an';
262
+ default:
263
+ return 'a';
264
+ }
265
+ }
266
+ function validate(mapping, stack = []) {
267
+ switch (realTypeOrDirective(mapping)) {
268
+ case 'directive':
269
+ return validateDirective(mapping, stack);
270
+ case 'object':
271
+ return validateObject(mapping, stack);
272
+ case 'array':
273
+ return validateArray(mapping, stack);
274
+ default:
275
+ // All other types are valid "raw" mappings
276
+ return null;
277
+ }
278
+ }
279
+ exports.default = validate;
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWFwcGluZy1raXQvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBNEM7QUFDNUMscURBQTZDO0FBQzdDLGlEQUE0QztBQUM1QyxrREFBa0U7QUFFbEUsTUFBTSxlQUFnQixTQUFRLDZCQUFXO0lBQ3ZDLFlBQVksT0FBZSxFQUFFLFFBQWtCLEVBQUU7UUFDL0MsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFBO0lBQzFDLENBQUM7Q0FDRjtBQUVELFNBQVMsYUFBYSxDQUFDLE1BQWU7SUFDcEMsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFBO0lBRTFCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUN2QixJQUFJLEtBQUssWUFBWSx5QkFBYyxFQUFFO1lBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtTQUN0QjthQUFNO1lBQ0wsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNuQjtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFjO0lBQ3pDLE1BQU0sSUFBSSxHQUFHLHlCQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUIsSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBZSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDcEYsT0FBTyxXQUFXLENBQUE7S0FDbkI7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFRRCxNQUFN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
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Lightweight alternative to lodash.omit. Faster, and way less code.
3
+ */
4
+ export declare function omit<T extends object, K extends string[]>(obj: T, keys: K): Pick<T, Exclude<keyof T, keyof K>>;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.omit = void 0;
4
+ /**
5
+ * Lightweight alternative to lodash.omit. Faster, and way less code.
6
+ */
7
+ function omit(obj, keys) {
8
+ return Object.keys(obj).reduce((newObject, key) => {
9
+ if (keys.indexOf(key) === -1)
10
+ newObject[key] = obj[key];
11
+ return newObject;
12
+ }, {});
13
+ }
14
+ exports.omit = omit;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib21pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vbWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsU0FBZ0IsSUFBSSxDQUF1QyxHQUFNLEVBQUUsSUFBTztJQUN4RSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2hELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUksR0FBK0IsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNwRixPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDLEVBQUUsRUFBNkIsQ0FBcUIsQ0FBQTtBQUN2RCxDQUFDO0FBTEQsb0JBS0MifQ==
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Gets the "true" type of an object, since JS `typeof` often returns `'object'`
3
+ * for arrays, date, regexp, and null
4
+ * @param obj - the object to get the real type of
5
+ */
6
+ export declare function realTypeOf(obj: unknown): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | "null" | "array" | "regexp";
7
+ export interface Dictionary<T = unknown> {
8
+ [key: string]: T;
9
+ }
10
+ export declare function isObject(value: unknown): value is Dictionary;
11
+ export declare function isArray(value: unknown): value is unknown[];
12
+ export declare function isString(value: unknown): value is string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isString = exports.isArray = exports.isObject = exports.realTypeOf = void 0;
4
+ /**
5
+ * Gets the "true" type of an object, since JS `typeof` often returns `'object'`
6
+ * for arrays, date, regexp, and null
7
+ * @param obj - the object to get the real type of
8
+ */
9
+ function realTypeOf(obj) {
10
+ return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
11
+ }
12
+ exports.realTypeOf = realTypeOf;
13
+ function isObject(value) {
14
+ return realTypeOf(value) === 'object';
15
+ }
16
+ exports.isObject = isObject;
17
+ function isArray(value) {
18
+ return Array.isArray(value);
19
+ }
20
+ exports.isArray = isArray;
21
+ function isString(value) {
22
+ return typeof value === 'string';
23
+ }
24
+ exports.isString = isString;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhbC10eXBlLW9mLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlYWwtdHlwZS1vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLEdBQVk7SUFDckMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFXdkQsQ0FBQTtBQUNkLENBQUM7QUFiRCxnQ0FhQztBQU1ELFNBQWdCLFFBQVEsQ0FBQyxLQUFjO0lBQ3JDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsQ0FBQTtBQUN2QyxDQUFDO0FBRkQsNEJBRUM7QUFFRCxTQUFnQixPQUFPLENBQUMsS0FBYztJQUNwQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDN0IsQ0FBQztBQUZELDBCQUVDO0FBRUQsU0FBZ0IsUUFBUSxDQUFDLEtBQWM7SUFDckMsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUE7QUFDbEMsQ0FBQztBQUZELDRCQUVDIn0=
@@ -0,0 +1 @@
1
+ export declare function removeUndefined<T = unknown>(value: T): T;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeUndefined = void 0;
4
+ const real_type_of_1 = require("./real-type-of");
5
+ function removeUndefined(value) {
6
+ if (Array.isArray(value)) {
7
+ return value.map((item) => removeUndefined(item));
8
+ }
9
+ else if (real_type_of_1.isObject(value)) {
10
+ const cleaned = Object.assign({}, value);
11
+ Object.keys(cleaned).forEach((key) => {
12
+ if (cleaned[key] === undefined) {
13
+ delete cleaned[key];
14
+ }
15
+ else {
16
+ cleaned[key] = removeUndefined(cleaned[key]);
17
+ }
18
+ });
19
+ return cleaned;
20
+ }
21
+ return value;
22
+ }
23
+ exports.removeUndefined = removeUndefined;
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLXVuZGVmaW5lZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW1vdmUtdW5kZWZpbmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUF5QztBQU16QyxTQUFnQixlQUFlLENBQWMsS0FBUTtJQUNuRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDeEIsT0FBUSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQWtCLENBQUE7S0FDcEU7U0FBTSxJQUFJLHVCQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDMUIsTUFBTSxPQUFPLEdBQWUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUU7Z0JBQzlCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2FBQ3BCO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7YUFDN0M7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUNGLE9BQVEsT0FBd0IsQ0FBQTtLQUNqQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQWhCRCwwQ0FnQkMifQ==
@@ -0,0 +1,127 @@
1
+ import { JSONValue } from './json-object';
2
+ declare type ID = string | null | undefined;
3
+ declare type CompactMetricType = 'g' | 'c';
4
+ interface CompactMetric {
5
+ m: string;
6
+ v: number;
7
+ k: CompactMetricType;
8
+ t: string[];
9
+ e: number;
10
+ }
11
+ export declare type Integrations = {
12
+ All?: boolean;
13
+ [integration: string]: boolean | undefined;
14
+ };
15
+ export declare type Options = {
16
+ integrations?: Integrations;
17
+ anonymousId?: ID;
18
+ timestamp?: Date | string;
19
+ context?: AnalyticsContext;
20
+ traits?: object;
21
+ [key: string]: any;
22
+ };
23
+ interface AnalyticsContext {
24
+ page?: {
25
+ /**
26
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L151}
27
+ */
28
+ path?: string;
29
+ referrer?: string;
30
+ search?: string;
31
+ title?: string;
32
+ url?: string;
33
+ };
34
+ metrics?: CompactMetric[];
35
+ /**
36
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L285}
37
+ */
38
+ userAgent?: string;
39
+ /**
40
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L286-L289}
41
+ */
42
+ locale?: string;
43
+ /**
44
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L290-L291}
45
+ */
46
+ library?: {
47
+ name: string;
48
+ version: string;
49
+ };
50
+ /**
51
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L292-L301}
52
+ */
53
+ traits?: {
54
+ crossDomainId: string;
55
+ };
56
+ /**
57
+ * utm params
58
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L303-L305}
59
+ * {@link https://github.com/segmentio/utm-params/blob/master/lib/index.js#L49}
60
+ */
61
+ campaign?: {
62
+ /**
63
+ * This can also come from the "utm_campaign" param
64
+ *
65
+ * {@link https://github.com/segmentio/utm-params/blob/master/lib/index.js#L40}
66
+ */
67
+ name: string;
68
+ term: string;
69
+ source: string;
70
+ medium: string;
71
+ content: string;
72
+ };
73
+ /**
74
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L415}
75
+ */
76
+ referrer?: {
77
+ btid?: string;
78
+ urid?: string;
79
+ };
80
+ /**
81
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L322}
82
+ */
83
+ amp?: {
84
+ id: string;
85
+ };
86
+ [key: string]: any;
87
+ }
88
+ export interface SegmentEvent {
89
+ messageId?: string;
90
+ type: 'track' | 'page' | 'identify' | 'group' | 'alias' | 'screen';
91
+ category?: string;
92
+ name?: string;
93
+ properties?: object & {
94
+ [k: string]: JSONValue;
95
+ };
96
+ traits?: object & {
97
+ [k: string]: JSONValue;
98
+ };
99
+ integrations?: Integrations;
100
+ context?: AnalyticsContext;
101
+ options?: Options;
102
+ userId?: ID;
103
+ anonymousId?: ID;
104
+ groupId?: ID;
105
+ previousId?: ID;
106
+ event?: string;
107
+ /**
108
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L284}
109
+ */
110
+ writeKey?: string;
111
+ receivedAt?: Date | string;
112
+ /**
113
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L151}
114
+ */
115
+ sentAt?: Date | string;
116
+ /**
117
+ * {@link https://github.com/segmentio/analytics.js-integrations/blob/2d5c637c022d2661c23449aed237d0d546bf062d/integrations/segmentio/lib/index.js#L311-L320}
118
+ */
119
+ _metadata?: {
120
+ failedInitializations?: unknown[];
121
+ bundled?: string[];
122
+ unbundledIntegrations?: string[];
123
+ nodeVersion?: string;
124
+ };
125
+ timestamp?: Date | string;
126
+ }
127
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWdtZW50LWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Gets hrtime for logging/metrics.
3
+ */
4
+ export declare function time(): bigint;
5
+ /**
6
+ * Calculates the duration in decimal milliseconds for logging/metrics purposes.
7
+ */
8
+ export declare function duration(start: bigint, stop: bigint): number;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.duration = exports.time = void 0;
4
+ /**
5
+ * Gets hrtime for logging/metrics.
6
+ */
7
+ function time() {
8
+ return process.hrtime.bigint();
9
+ }
10
+ exports.time = time;
11
+ /**
12
+ * Calculates the duration in decimal milliseconds for logging/metrics purposes.
13
+ */
14
+ function duration(start, stop) {
15
+ return Number(stop - start) / 1000000;
16
+ }
17
+ exports.duration = duration;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsU0FBZ0IsSUFBSTtJQUNsQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUE7QUFDaEMsQ0FBQztBQUZELG9CQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDbEQsT0FBTyxNQUFNLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQTtBQUN2QyxDQUFDO0FBRkQsNEJBRUMifQ==
@@ -0,0 +1,5 @@
1
+ import { ExtendOptions, Got } from 'got';
2
+ /**
3
+ * Creates a Got client instance with Segment's default configuration + custom options
4
+ */
5
+ export default function createRequestClient(...options: ExtendOptions[]): Got;
@@ -0,0 +1,18 @@
1
+ import got from 'got';
2
+ /**
3
+ * Creates a Got client instance with Segment's default configuration + custom options
4
+ */
5
+ export default function createRequestClient(...options) {
6
+ const defaultOptions = {
7
+ // disable automatic retries
8
+ retry: 0,
9
+ // default is no timeout
10
+ timeout: 5000,
11
+ headers: {
12
+ 'user-agent': 'Segment'
13
+ }
14
+ };
15
+ const client = got.extend(defaultOptions, ...options);
16
+ return client;
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXJlcXVlc3QtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NyZWF0ZS1yZXF1ZXN0LWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQTJCLE1BQU0sS0FBSyxDQUFBO0FBRTdDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSxtQkFBbUIsQ0FBQyxHQUFHLE9BQXdCO0lBQ3JFLE1BQU0sY0FBYyxHQUFHO1FBQ3JCLDRCQUE0QjtRQUM1QixLQUFLLEVBQUUsQ0FBQztRQUNSLHdCQUF3QjtRQUN4QixPQUFPLEVBQUUsSUFBSTtRQUNiLE9BQU8sRUFBRTtZQUNQLFlBQVksRUFBRSxTQUFTO1NBQ3hCO0tBQ0YsQ0FBQTtJQUVELE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUE7SUFDckQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDIn0=
@@ -0,0 +1,2 @@
1
+ import dayjs from 'dayjs';
2
+ export default dayjs;
@@ -0,0 +1,5 @@
1
+ import dayjs from 'dayjs';
2
+ import utc from 'dayjs/plugin/utc';
3
+ dayjs.extend(utc);
4
+ export default dayjs;
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF5anMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFBO0FBRWxDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFakIsZUFBZSxLQUFLLENBQUEifQ==
@@ -0,0 +1,2 @@
1
+ import type { JSONSchema4Type } from 'json-schema';
2
+ export declare function defaultValues(fields: Record<string, unknown>): Record<string, JSONSchema4Type>;