@rudderstack/integrations-lib 0.2.18 → 0.2.20

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 (47) hide show
  1. package/build/constants.js +4 -4
  2. package/build/errors/network_error.js +1 -1
  3. package/build/lib/set-value/index.d.ts.map +1 -1
  4. package/build/lib/set-value/index.js +1 -1
  5. package/build/logger.d.ts.map +1 -1
  6. package/build/logger.js +1 -1
  7. package/build/network/clients/axios_client.js +18 -8
  8. package/build/network/clients/axios_client.test.js +18 -8
  9. package/build/network/factory.js +1 -1
  10. package/build/sdks/customerio_audience/index.js +1 -1
  11. package/build/sdks/index.js +18 -8
  12. package/build/sdks/sfmc/index.js +1 -1
  13. package/build/sdks/sfmc/index.test.js +18 -8
  14. package/build/sdks/sfmc/utils.d.ts.map +1 -1
  15. package/build/sdks/sfmc/utils.js +1 -1
  16. package/build/sdks/zoho/zoho.js +1 -1
  17. package/build/sdks/zoho/zoho.test.js +1 -1
  18. package/build/structured-logger.d.ts.map +1 -1
  19. package/build/structured-logger.js +1 -1
  20. package/build/types.d.ts +0 -273
  21. package/build/types.d.ts.map +1 -1
  22. package/build/types.js +1 -26
  23. package/build/utils/index.d.ts +0 -2
  24. package/build/utils/index.d.ts.map +1 -1
  25. package/build/utils/index.js +1 -3
  26. package/build/utils/json-schema-generator.js +1 -1
  27. package/build/utils/misc.d.ts +4 -13
  28. package/build/utils/misc.d.ts.map +1 -1
  29. package/build/utils/misc.js +21 -33
  30. package/build/utils/misc.test.js +21 -65
  31. package/build/utils/request.js +2 -3
  32. package/build/utils/tests.d.ts +2 -0
  33. package/build/utils/tests.d.ts.map +1 -1
  34. package/build/utils/tests.js +1 -1
  35. package/package.json +2 -3
  36. package/build/utils/json.d.ts +0 -51
  37. package/build/utils/json.d.ts.map +0 -1
  38. package/build/utils/json.js +0 -520
  39. package/build/utils/json.test.d.ts +0 -2
  40. package/build/utils/json.test.d.ts.map +0 -1
  41. package/build/utils/json.test.js +0 -1290
  42. package/build/utils/sem.d.ts +0 -49
  43. package/build/utils/sem.d.ts.map +0 -1
  44. package/build/utils/sem.js +0 -247
  45. package/build/utils/sem.test.d.ts +0 -2
  46. package/build/utils/sem.test.d.ts.map +0 -1
  47. package/build/utils/sem.test.js +0 -317
@@ -1,49 +0,0 @@
1
- import { ExternalId, RudderStackEvent } from '../types';
2
- export declare class SemanticUtil {
3
- /**
4
- * Retrieves the `integrations` object for a specific destination in a given `RudderStackEvent` message.
5
- * @param message - The RudderStackEvent message object.
6
- * @param intgName - The destination name.
7
- * @returns The `integrations` object for the specified destination, or null if not found.
8
- */
9
- static getIntegrationsObj(message: RudderStackEvent, intgName?: string): null;
10
- /**
11
- * Retrieves a destination-specific external ID from a given *message object.
12
- * {
13
- * "context": {
14
- * "externalId": [
15
- * {
16
- * "type": "kustomerId",
17
- * "id": "12345678"
18
- * }
19
- * ]
20
- * }
21
- * }
22
- *
23
- * @param {RudderStackEvent} message - The message object containing the external ID.
24
- * @param {string} type - The type of the external ID to retrieve.
25
- * @returns {unknown} - The destination-specific external ID, or null if not found.
26
- */
27
- static getDestinationExternalID(message: RudderStackEvent, type: string): unknown;
28
- /**
29
- * Retrieves destination-specific external ID information from a given RudderStackEvent message.
30
- *
31
- * @param message - The message object containing the external ID.
32
- * @param destinationName - The name of the destination for which to retrieve the external ID information.
33
- * @returns An object containing the destination-specific external ID, the object type, and the identifier type.
34
- */
35
- static getDestinationExternalIDInfoForRetl(message: RudderStackEvent, destinationName: string): {
36
- destinationExternalId: unknown | null;
37
- objectType: string | null;
38
- identifierType: string | null;
39
- };
40
- /**
41
- * Retrieves a destination-specific external ID object from a given RudderStackEvent message.
42
- *
43
- * @param message - The message object containing the external ID.
44
- * @param destinationName - The name of the destination for which to retrieve the external ID object.
45
- * @returns The destination-specific external ID object if found, or undefined if not found.
46
- */
47
- static getDestinationExternalIDObjectForRetl(message: RudderStackEvent, destinationName: string): ExternalId | undefined;
48
- }
49
- //# sourceMappingURL=sem.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sem.d.ts","sourceRoot":"","sources":["../../src/utils/sem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAsIxD,qBAAa,YAAY;IACvB;;;;;OAKG;WACW,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,GAAE,MAAW;IAoBjF;;;;;;;;;;;;;;;;OAgBG;WACW,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAaxF;;;;;;OAMG;WACW,mCAAmC,CAC/C,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,MAAM,GACtB;QACD,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAAC;QACtC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B;IAuBD;;;;;;OAMG;WACW,qCAAqC,CACjD,OAAO,EAAE,gBAAgB,EACzB,eAAe,EAAE,MAAM,GACtB,UAAU,GAAG,SAAS;CAkB1B"}
@@ -1,247 +0,0 @@
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
- exports.SemanticUtil = void 0;
7
- const lodash_1 = require("lodash");
8
- const get_value_1 = __importDefault(require("get-value"));
9
- const INTEGRATION_CANONICAL_NAMES = {
10
- fb_pixel: [
11
- 'fb_pixel',
12
- 'fb pixel',
13
- 'FacebookPixel',
14
- 'Facebook Pixel',
15
- 'FB Pixel',
16
- 'Facebook_Pixel',
17
- ],
18
- ometria: ['Ometria', 'ometria', 'OMETRIA'],
19
- sendgrid: ['sendgrid', 'Sendgrid', 'SENDGRID'],
20
- dcm_floodlight: [
21
- 'dcm floodlight',
22
- 'dcm_floodlight',
23
- 'DCM Floodlight',
24
- 'DCM_Floodlight',
25
- 'DCMFloodlight',
26
- 'dcmfloodlight',
27
- ],
28
- new_relic: ['new relic', 'new_relic', 'New Relic', 'New_Relic', 'NewRelic', 'newrelic'],
29
- attentive_tag: [
30
- 'attentive tag',
31
- 'attentive_tag',
32
- 'Attentive Tag',
33
- 'Attentive_Tag',
34
- 'AttentiveTag',
35
- 'attentivetag',
36
- ],
37
- webhook: ['webhook', 'Webhook', 'WebHook', 'WEBHOOK'],
38
- mailchimp: ['mailchimp', 'MailChimp', 'MAILCHIMP'],
39
- mautic: ['MAUTIC', 'mautic', 'Mautic'],
40
- mailjet: ['MAILJET', 'MailJet', 'mailjet', 'Mailjet'],
41
- kafka: ['KAFKA', 'kafka', 'Kafka'],
42
- azure_event_hub: ['AZURE_EVENT_HUB', 'azure_event_hub', 'AzureEventHub'],
43
- confluent_cloud: ['CONFLUENT_CLOUD', 'confluent_cloud', 'ConfluentCloud'],
44
- vero: ['vero', 'Vero', 'VERO'],
45
- pinterest: ['pinterest', 'Pinterest', 'PINTEREST', 'pinterestConversion'],
46
- rockerbox: ['rockerbox', 'ROCKERBOX', 'Rockerbox', 'RockerBox', 'rockerBox'],
47
- canny: ['canny', 'Canny', 'CANNY'],
48
- one_signal: ['one signal', 'one_signal', 'One Signal', 'One_Signal', 'OneSignal', 'onesignal'],
49
- wootric: ['wootric', 'Wootric', 'WOOTRIC'],
50
- clickup: ['ClickUp', 'clickup', 'CLICKUP', 'clickUp', 'Clickup'],
51
- zapier: ['zapier', 'Zapier', 'ZAPIER'],
52
- shynet: ['shynet', 'SHYNET', 'shyNet', 'ShyNet'],
53
- woopra: ['WOOPRA', 'Woopra', 'woopra'],
54
- monday: ['monday', 'MONDAY', 'monDay', 'MonDay'],
55
- mailmodo: [
56
- 'mail modo',
57
- 'mail_modo',
58
- 'Mail Modo',
59
- 'Mail_Modo',
60
- 'MailModo',
61
- 'mailmodo',
62
- 'MAILMODO',
63
- 'mailModo',
64
- ],
65
- user: ['user', 'USER', 'User', 'User.com', 'user.com', 'USER.com'],
66
- engage: ['engage', 'Engage', 'ENGAGE'],
67
- june: ['june', 'JUNE', 'June'],
68
- factorsai: ['FACTORSAI', 'factorsAI', 'FactorsAi', 'factorsAi'],
69
- snapchat_custom_audience: [
70
- 'snapchat custom audience',
71
- 'snap chat custom audience',
72
- 'snapchat_custom_audience',
73
- 'snapchatCustomAudience',
74
- 'Snapchat Custom Audience',
75
- 'snapchatcustomaudience',
76
- 'SNAPCHAT CUSTOM AUDIENCE',
77
- 'SNAPCHAT_CUSTOM_AUDIENCE',
78
- 'SNAPCHATCUSTOMAUDIENCE',
79
- ],
80
- CAMPAIGN_MANAGER: [
81
- 'campaign manager',
82
- 'campain Manager',
83
- 'CAMPAIGN MANAGER',
84
- 'campaignManager',
85
- 'campaign_manager',
86
- 'CAMPAIGN_MANAGER',
87
- ],
88
- gainsight_px: [
89
- 'GAINSIGHT_PX',
90
- 'GAINSIGHTPX',
91
- 'gainsightPx',
92
- 'Gainsight PX',
93
- 'gainsight px',
94
- 'Gainsight Px',
95
- ],
96
- awin: ['awin', 'Awin', 'AWIN'],
97
- sendinblue: ['sendinblue', 'SENDINBLUE', 'Sendinblue', 'SendinBlue'],
98
- ga4: ['GA4', 'ga4', 'Ga4', 'Google Analytics 4', 'googleAnalytics4'],
99
- pipedream: ['Pipedream', 'PipeDream', 'pipedream', 'PIPEDREAM'],
100
- pagerduty: ['pagerduty', 'PAGERDUTY', 'PagerDuty', 'Pagerduty', 'pagerDuty'],
101
- adobe_analytics: [
102
- 'adobe_analytics',
103
- 'ADOBE_ANALYTICS',
104
- 'adobe analytics',
105
- 'adobeAnalytics',
106
- 'Adobe Analytics',
107
- 'adobeanalytics',
108
- 'ADOBE ANALYTICS',
109
- 'ADOBEANALYTICS',
110
- ],
111
- criteo_audience: [
112
- 'criteo audience',
113
- 'criteoAudience',
114
- 'Criteo Audience',
115
- 'criteoaudience',
116
- 'CRITEO AUDIENCE',
117
- 'CRITEO_AUDIENCE',
118
- 'CRITEOAUDIENCE',
119
- ],
120
- optimizely_fullstack: [
121
- 'Optimizely Fullstack',
122
- 'OPTIMIZELY FULLSTACK',
123
- 'optimizely fullstack',
124
- 'OptimizelyFullstack',
125
- 'Optimizely_Fullstack',
126
- 'optimizely_fullstack',
127
- ],
128
- vitally: ['vitally', 'Vitally', 'VITALLY'],
129
- courier: ['Courier', 'courier', 'COURIER'],
130
- TWITTER_ADS: [
131
- 'twitter ads',
132
- 'twitter Manager',
133
- 'TWITTER ADS',
134
- 'twitterADS',
135
- 'twitter_ads',
136
- 'TWITTER_ADS',
137
- ],
138
- BRAZE: ['BRAZE', 'Braze', 'braze'],
139
- };
140
- class SemanticUtil {
141
- /**
142
- * Retrieves the `integrations` object for a specific destination in a given `RudderStackEvent` message.
143
- * @param message - The RudderStackEvent message object.
144
- * @param intgName - The destination name.
145
- * @returns The `integrations` object for the specified destination, or null if not found.
146
- */
147
- static getIntegrationsObj(message, intgName = '') {
148
- if (!(0, lodash_1.isEmpty)(intgName)) {
149
- const intgCanonicalNames = INTEGRATION_CANONICAL_NAMES[intgName];
150
- if (!intgCanonicalNames) {
151
- return null;
152
- }
153
- const intgObj = intgCanonicalNames.reduce((acc, canonicalName) => {
154
- if ((0, get_value_1.default)(message, `integrations.${canonicalName}`)) {
155
- return (0, get_value_1.default)(message, `integrations.${canonicalName}`);
156
- }
157
- return acc;
158
- }, null);
159
- if (intgObj) {
160
- return intgObj;
161
- }
162
- }
163
- return null;
164
- }
165
- /**
166
- * Retrieves a destination-specific external ID from a given *message object.
167
- * {
168
- * "context": {
169
- * "externalId": [
170
- * {
171
- * "type": "kustomerId",
172
- * "id": "12345678"
173
- * }
174
- * ]
175
- * }
176
- * }
177
- *
178
- * @param {RudderStackEvent} message - The message object containing the external ID.
179
- * @param {string} type - The type of the external ID to retrieve.
180
- * @returns {unknown} - The destination-specific external ID, or null if not found.
181
- */
182
- static getDestinationExternalID(message, type) {
183
- const { context } = message;
184
- const externalIdArray = context?.externalId ?? [];
185
- let externalIdObj;
186
- if (Array.isArray(externalIdArray)) {
187
- externalIdObj = externalIdArray.find((extIdObj) => extIdObj?.type === type);
188
- }
189
- if (!externalIdObj) {
190
- return null;
191
- }
192
- return externalIdObj.id;
193
- }
194
- /**
195
- * Retrieves destination-specific external ID information from a given RudderStackEvent message.
196
- *
197
- * @param message - The message object containing the external ID.
198
- * @param destinationName - The name of the destination for which to retrieve the external ID information.
199
- * @returns An object containing the destination-specific external ID, the object type, and the identifier type.
200
- */
201
- static getDestinationExternalIDInfoForRetl(message, destinationName) {
202
- let externalIdArray = [];
203
- let destinationExternalId = null;
204
- let identifierType = null;
205
- let objectType = null;
206
- if (message.context?.externalId) {
207
- externalIdArray = message.context.externalId;
208
- }
209
- if (Array.isArray(externalIdArray)) {
210
- externalIdArray.forEach((extIdObj) => {
211
- const { type, id } = extIdObj;
212
- if (type.includes(`${destinationName}-`)) {
213
- destinationExternalId = id ?? null;
214
- objectType = type.replace(`${destinationName}-`, '') ?? null;
215
- identifierType = extIdObj.identifierType ?? null;
216
- }
217
- });
218
- }
219
- return { destinationExternalId, objectType, identifierType };
220
- }
221
- /**
222
- * Retrieves a destination-specific external ID object from a given RudderStackEvent message.
223
- *
224
- * @param message - The message object containing the external ID.
225
- * @param destinationName - The name of the destination for which to retrieve the external ID object.
226
- * @returns The destination-specific external ID object if found, or undefined if not found.
227
- */
228
- static getDestinationExternalIDObjectForRetl(message, destinationName) {
229
- const { externalId } = message.context || {};
230
- const externalIdArray = externalId ?? [];
231
- let obj;
232
- if (externalIdArray.length > 0) {
233
- // some stops the execution when the element is found
234
- externalIdArray.some((extIdObj) => {
235
- const { type } = extIdObj;
236
- if (type?.includes(`${destinationName}-`)) {
237
- obj = extIdObj;
238
- return true;
239
- }
240
- return false;
241
- });
242
- }
243
- return obj;
244
- }
245
- }
246
- exports.SemanticUtil = SemanticUtil;
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3NlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBaUM7QUFDakMsMERBQTRCO0FBRzVCLE1BQU0sMkJBQTJCLEdBQWdDO0lBQy9ELFFBQVEsRUFBRTtRQUNSLFVBQVU7UUFDVixVQUFVO1FBQ1YsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixVQUFVO1FBQ1YsZ0JBQWdCO0tBQ2pCO0lBQ0QsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDMUMsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDOUMsY0FBYyxFQUFFO1FBQ2QsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixlQUFlO0tBQ2hCO0lBQ0QsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDdkYsYUFBYSxFQUFFO1FBQ2IsZUFBZTtRQUNmLGVBQWU7UUFDZixlQUFlO1FBQ2YsZUFBZTtRQUNmLGNBQWM7UUFDZCxjQUFjO0tBQ2Y7SUFDRCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7SUFDckQsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDbEQsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDdEMsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JELEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2xDLGVBQWUsRUFBRSxDQUFDLGlC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Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0Y7QUExSEQsb0NBMEhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgZ2V0IGZyb20gJ2dldC12YWx1ZSc7XG5pbXBvcnQgeyBFeHRlcm5hbElkLCBSdWRkZXJTdGFja0V2ZW50IH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBJTlRFR1JBVElPTl9DQU5PTklDQUxfTkFNRVM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHtcbiAgZmJfcGl4ZWw6IFtcbiAgICAnZmJfcGl4ZWwnLFxuICAgICdmYiBwaXhlbCcsXG4gICAgJ0ZhY2Vib29rUGl4ZWwnLFxuICAgICdGYWNlYm9vayBQaXhlbCcsXG4gICAgJ0ZCIFBpeGVsJyxcbiAgICAnRmFjZWJvb2tfUGl4ZWwnLFxuICBdLFxuICBvbWV0cmlhOiBbJ09tZXRyaWEnLCAnb21ldHJpYScsICdPTUVUUklBJ10sXG4gIHNlbmRncmlkOiBbJ3NlbmRncmlkJywgJ1NlbmRncmlkJywgJ1NFTkRHUklEJ10sXG4gIGRjbV9mbG9vZGxpZ2h0OiBbXG4gICAgJ2RjbSBmbG9vZGxpZ2h0JyxcbiAgICAnZGNtX2Zsb29kbGlnaHQnLFxuICAgICdEQ00gRmxvb2RsaWdodCcsXG4gICAgJ0RDTV9GbG9vZGxpZ2h0JyxcbiAgICAnRENNRmxvb2RsaWdodCcsXG4gICAgJ2RjbWZsb29kbGlnaHQnLFxuICBdLFxuICBuZXdfcmVsaWM6IFsnbmV3IHJlbGljJywgJ25ld19yZWxpYycsICdOZXcgUmVsaWMnLCAnTmV3X1JlbGljJywgJ05ld1JlbGljJywgJ25ld3JlbGljJ10sXG4gIGF0dGVudGl2ZV90YWc6IFtcbiAgICAnYXR0ZW50aXZlIHRhZycsXG4gICAgJ2F0dGVudGl2ZV90YWcnLFxuICAgICdBdHRlbnRpdmUgVGFnJyxcbiAgICAnQXR0ZW50aXZlX1RhZycsXG4gICAgJ0F0dGVudGl2ZVRhZycsXG4gICAgJ2F0dGVudGl2ZXRhZycsXG4gIF0sXG4gIHdlYmhvb2s6IFsnd2ViaG9vaycsICdXZWJob29rJywgJ1dlYkhvb2snLCAnV0VCSE9PSyddLFxuICBtYWlsY2hpbXA6IFsnbWFpbGNoaW1wJywgJ01haWxDaGltcCcsICdNQUlMQ0hJTVAnXSxcbiAgbWF1dGljOiBbJ01BVVRJQycsICdtYXV0aWMnLCAnTWF1dGljJ10sXG4gIG1haWxqZXQ6IFsnTUFJTEpFVCcsICdNYWlsSmV0JywgJ21haWxqZXQnLCAnTWFpbGpldCddLFxuICBrYWZrYTogWydLQUZLQScsICdrYWZrYScsICdLYWZrYSddLFxuICBhenVyZV9ldmVudF9odWI6IFsnQVpVUkVfRVZFTlRfSFVCJywgJ2F6dXJlX2V2ZW50X2h1YicsICdBenVyZUV2ZW50SHViJ10sXG4gIGNvbmZsdWVudF9jbG91ZDogWydDT05GTFVFTlRfQ0xPVUQnLCAnY29uZmx1ZW50X2Nsb3VkJywgJ0NvbmZsdWVudENsb3VkJ10sXG4gIHZlcm86IFsndmVybycsICdWZXJvJywgJ1ZFUk8nXSxcbiAgcGludGVyZXN0OiBbJ3BpbnRlcmVzdCcsICdQaW50ZXJlc3QnLCAnUElOVEVSRVNUJywgJ3BpbnRlcmVzdENvbnZlcnNpb24nXSxcbiAgcm9ja2VyYm94OiBbJ3JvY2tlcmJveCcsICdST0NLRVJCT1gnLCAnUm9ja2VyYm94JywgJ1JvY2tlckJveCcsICdyb2NrZXJCb3gnXSxcbiAgY2Fubnk6IFsnY2FubnknLCAnQ2FubnknLCAnQ0FOTlknXSxcbiAgb25lX3NpZ25hbDogWydvbmUgc2lnbmFsJywgJ29uZV9zaWduYWwnLCAnT25lIFNpZ25hbCcsICdPbmVfU2lnbmFsJywgJ09uZVNpZ25hbCcsICdvbmVzaWduYWwnXSxcbiAgd29vdHJpYzogWyd3b290cmljJywgJ1dvb3RyaWMnLCAnV09PVFJJQyddLFxuICBjbGlja3VwOiBbJ0NsaWNrVXAnLCAnY2xpY2t1cCcsICdDTElDS1VQJywgJ2NsaWNrVXAnLCAnQ2xpY2t1cCddLFxuICB6YXBpZXI6IFsnemFwaWVyJywgJ1phcGllcicsICdaQVBJRVInXSxcbiAgc2h5bmV0OiBbJ3NoeW5ldCcsICdTSFlORVQnLCAnc2h5TmV0JywgJ1NoeU5ldCddLFxuICB3b29wcmE6IFsnV09PUFJBJywgJ1dvb3ByYScsICd3b29wcmEnXSxcbiAgbW9uZGF5OiBbJ21vbmRheScsICdNT05EQVknLCAnbW9uRGF5JywgJ01vbkRheSddLFxuICBtYWlsbW9kbzogW1xuICAgICdtYWlsIG1vZG8nLFxuICAgICdtYWlsX21vZG8nLFxuICAgICdNYWlsIE1vZG8nLFxuICAgICdNYWlsX01vZG8nLFxuICAgICdNYWlsTW9kbycsXG4gICAgJ21haWxtb2RvJyxcbiAgICAnTUFJTE1PRE8nLFxuICAgICdtYWlsTW9kbycsXG4gIF0sXG4gIHVzZXI6IFsndXNlcicsICdVU0VSJywgJ1VzZXInLCAnVXNlci5jb20nLCAndXNlci5jb20nLCAnVVNFUi5jb20nXSxcbiAgZW5nYWdlOiBbJ2VuZ2FnZScsICdFbmdhZ2UnLCAnRU5HQUdFJ10sXG4gIGp1bmU6IFsnanVuZScsICdKVU5FJywgJ0p1bmUnXSxcbiAgZmFjdG9yc2FpOiBbJ0ZBQ1RPUlNBSScsICdmYWN0b3JzQUknLCAnRmFjdG9yc0FpJywgJ2ZhY3RvcnNBaSddLFxuICBzbmFwY2hhdF9jdXN0b21fYXVkaWVuY2U6IFtcbiAgICAnc25hcGNoYXQgY3VzdG9tIGF1ZGllbmNlJyxcbiAgICAnc25hcCBjaGF0IGN1c3RvbSBhdWRpZW5jZScsXG4gICAgJ3NuYXBjaGF0X2N1c3RvbV9hdWRpZW5jZScsXG4gICAgJ3NuYXBjaGF0Q3VzdG9tQXVkaWVuY2UnLFxuICAgICdTbmFwY2hhdCBDdXN0b20gQXVkaWVuY2UnLFxuICAgICdzbmFwY2hhdGN1c3RvbWF1ZGllbmNlJyxcbiAgICAnU05BUENIQVQgQ1VTVE9NIEFVRElFTkNFJyxcbiAgICAnU05BUENIQVRfQ1VTVE9NX0FVRElFTkNFJyxcbiAgICAnU05BUENIQVRDVVNUT01BVURJRU5DRScsXG4gIF0sXG4gIENBTVBBSUdOX01BTkFHRVI6IFtcbiAgICAnY2FtcGFpZ24gbWFuYWdlcicsXG4gICAgJ2NhbXBhaW4gTWFuYWdlcicsXG4gICAgJ0NBTVBBSUdOIE1BTkFHRVInLFxuICAgICdjYW1wYWlnbk1hbmFnZXInLFxuICAgICdjYW1wYWlnbl9tYW5hZ2VyJyxcbiAgICAnQ0FNUEFJR05fTUFOQUdFUicsXG4gIF0sXG4gIGdhaW5zaWdodF9weDogW1xuICAgICdHQUlOU0lHSFRfUFgnLFxuICAgICdHQUlOU0lHSFRQWCcsXG4gICAgJ2dhaW5zaWdodFB4JyxcbiAgICAnR2FpbnNpZ2h0IFBYJyxcbiAgICAnZ2FpbnNpZ2h0IHB4JyxcbiAgICAnR2FpbnNpZ2h0IFB4JyxcbiAgXSxcbiAgYXdpbjogWydhd2luJywgJ0F3aW4nLCAnQVdJTiddLFxuICBzZW5kaW5ibHVlOiBbJ3NlbmRpbmJsdWUnLCAnU0VORElOQkxVRScsICdTZW5kaW5ibHVlJywgJ1NlbmRpbkJsdWUnXSxcbiAgZ2E0OiBbJ0dBNCcsICdnYTQnLCAnR2E0JywgJ0dvb2dsZSBBbmFseXRpY3MgNCcsICdnb29nbGVBbmFseXRpY3M0J10sXG4gIHBpcGVkcmVhbTogWydQaXBlZHJlYW0nLCAnUGlwZURyZWFtJywgJ3BpcGVkcmVhbScsICdQSVBFRFJFQU0nXSxcbiAgcGFnZXJkdXR5OiBbJ3BhZ2VyZHV0eScsICdQQUdFUkRVVFknLCAnUGFnZXJEdXR5JywgJ1BhZ2VyZHV0eScsICdwYWdlckR1dHknXSxcbiAgYWRvYmVfYW5hbHl0aWNzOiBbXG4gICAgJ2Fkb2JlX2FuYWx5dGljcycsXG4gICAgJ0FET0JFX0FOQUxZVElDUycsXG4gICAgJ2Fkb2JlIGFuYWx5dGljcycsXG4gICAgJ2Fkb2JlQW5hbHl0aWNzJyxcbiAgICAnQWRvYmUgQW5hbHl0aWNzJyxcbiAgICAnYWRvYmVhbmFseXRpY3MnLFxuICAgICdBRE9CRSBBTkFMWVRJQ1MnLFxuICAgICdBRE9CRUFOQUxZVElDUycsXG4gIF0sXG4gIGNyaXRlb19hdWRpZW5jZTogW1xuICAgICdjcml0ZW8gYXVkaWVuY2UnLFxuICAgICdjcml0ZW9BdWRpZW5jZScsXG4gICAgJ0NyaXRlbyBBdWRpZW5jZScsXG4gICAgJ2NyaXRlb2F1ZGllbmNlJyxcbiAgICAnQ1JJVEVPIEFVRElFTkNFJyxcbiAgICAnQ1JJVEVPX0FVRElFTkNFJyxcbiAgICAnQ1JJVEVPQVVESUVOQ0UnLFxuICBdLFxuICBvcHRpbWl6ZWx5X2Z1bGxzdGFjazogW1xuICAgICdPcHRpbWl6ZWx5IEZ1bGxzdGFjaycsXG4gICAgJ09QVElNSVpFTFkgRlVMTFNUQUNLJyxcbiAgICAnb3B0aW1pemVseSBmdWxsc3RhY2snLFxuICAgICdPcHRpbWl6ZWx5RnVsbHN0YWNrJyxcbiAgICAnT3B0aW1pemVseV9GdWxsc3RhY2snLFxuICAgICdvcHRpbWl6ZWx5X2Z1bGxzdGFjaycsXG4gIF0sXG4gIHZpdGFsbHk6IFsndml0YWxseScsICdWaXRhbGx5JywgJ1ZJVEFMTFknXSxcbiAgY291cmllcjogWydDb3VyaWVyJywgJ2NvdXJpZXInLCAnQ09VUklFUiddLFxuICBUV0lUVEVSX0FEUzogW1xuICAgICd0d2l0dGVyIGFkcycsXG4gICAgJ3R3aXR0ZXIgTWFuYWdlcicsXG4gICAgJ1RXSVRURVIgQURTJyxcbiAgICAndHdpdHRlckFEUycsXG4gICAgJ3R3aXR0ZXJfYWRzJyxcbiAgICAnVFdJVFRFUl9BRFMnLFxuICBdLFxuICBCUkFaRTogWydCUkFaRScsICdCcmF6ZScsICdicmF6ZSddLFxufTtcblxuZXhwb3J0IGNsYXNzIFNlbWFudGljVXRpbCB7XG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGBpbnRlZ3JhdGlvbnNgIG9iamVjdCBmb3IgYSBzcGVjaWZpYyBkZXN0aW5hdGlvbiBpbiBhIGdpdmVuIGBSdWRkZXJTdGFja0V2ZW50YCBtZXNzYWdlLlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBSdWRkZXJTdGFja0V2ZW50IG1lc3NhZ2Ugb2JqZWN0LlxuICAgKiBAcGFyYW0gaW50Z05hbWUgLSBUaGUgZGVzdGluYXRpb24gbmFtZS5cbiAgICogQHJldHVybnMgVGhlIGBpbnRlZ3JhdGlvbnNgIG9iamVjdCBmb3IgdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbiwgb3IgbnVsbCBpZiBub3QgZm91bmQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEludGVncmF0aW9uc09iaihtZXNzYWdlOiBSdWRkZXJTdGFja0V2ZW50LCBpbnRnTmFtZTogc3RyaW5nID0gJycpIHtcbiAgICBpZiAoIWlzRW1wdHkoaW50Z05hbWUpKSB7XG4gICAgICBjb25zdCBpbnRnQ2Fub25pY2FsTmFtZXMgPSBJTlRFR1JBVElPTl9DQU5PTklDQUxfTkFNRVNbaW50Z05hbWVdO1xuICAgICAgaWYgKCFpbnRnQ2Fub25pY2FsTmFtZXMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjb25zdCBpbnRnT2JqID0gaW50Z0Nhbm9uaWNhbE5hbWVzLnJlZHVjZSgoYWNjLCBjYW5vbmljYWxOYW1lKSA9PiB7XG4gICAgICAgIGlmIChnZXQobWVzc2FnZSwgYGludGVncmF0aW9ucy4ke2Nhbm9uaWNhbE5hbWV9YCkpIHtcbiAgICAgICAgICByZXR1cm4gZ2V0KG1lc3NhZ2UsIGBpbnRlZ3JhdGlvbnMuJHtjYW5vbmljYWxOYW1lfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBudWxsKTtcblxuICAgICAgaWYgKGludGdPYmopIHtcbiAgICAgICAgcmV0dXJuIGludGdPYmo7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGRlc3RpbmF0aW9uLXNwZWNpZmljIGV4dGVybmFsIElEIGZyb20gYSBnaXZlbiAqbWVzc2FnZSBvYmplY3QuXG4gICAqIHtcbiAgICogICAgXCJjb250ZXh0XCI6IHtcbiAgICogICAgICBcImV4dGVybmFsSWRcIjogW1xuICAgKiAgICAgICAge1xuICAgKiAgICAgICAgICBcInR5cGVcIjogXCJrdXN0b21lcklkXCIsXG4gICAqICAgICAgICAgIFwiaWRcIjogXCIxMjM0NTY3OFwiXG4gICAqICAgICAgICB9XG4gICAqICAgICAgXVxuICAgKiAgICB9XG4gICAqIH1cbiAgICpcbiAgICogQHBhcmFtIHtSdWRkZXJTdGFja0V2ZW50fSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGV4dGVybmFsIElELlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBleHRlcm5hbCBJRCB0byByZXRyaWV2ZS5cbiAgICogQHJldHVybnMge3Vua25vd259IC0gVGhlIGRlc3RpbmF0aW9uLXNwZWNpZmljIGV4dGVybmFsIElELCBvciBudWxsIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGVzdGluYXRpb25FeHRlcm5hbElEKG1lc3NhZ2U6IFJ1ZGRlclN0YWNrRXZlbnQsIHR5cGU6IHN0cmluZyk6IHVua25vd24ge1xuICAgIGNvbnN0IHsgY29udGV4dCB9ID0gbWVzc2FnZTtcbiAgICBjb25zdCBleHRlcm5hbElkQXJyYXkgPSBjb250ZXh0Py5leHRlcm5hbElkID8/IFtdO1xuICAgIGxldCBleHRlcm5hbElkT2JqOiBFeHRlcm5hbElkIHwgdW5kZWZpbmVkO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV4dGVybmFsSWRBcnJheSkpIHtcbiAgICAgIGV4dGVybmFsSWRPYmogPSBleHRlcm5hbElkQXJyYXkuZmluZCgoZXh0SWRPYmopID0+IGV4dElkT2JqPy50eXBlID09PSB0eXBlKTtcbiAgICB9XG4gICAgaWYgKCFleHRlcm5hbElkT2JqKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGV4dGVybmFsSWRPYmouaWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGRlc3RpbmF0aW9uLXNwZWNpZmljIGV4dGVybmFsIElEIGluZm9ybWF0aW9uIGZyb20gYSBnaXZlbiBSdWRkZXJTdGFja0V2ZW50IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGV4dGVybmFsIElELlxuICAgKiBAcGFyYW0gZGVzdGluYXRpb25OYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIGZvciB3aGljaCB0byByZXRyaWV2ZSB0aGUgZXh0ZXJuYWwgSUQgaW5mb3JtYXRpb24uXG4gICAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBkZXN0aW5hdGlvbi1zcGVjaWZpYyBleHRlcm5hbCBJRCwgdGhlIG9iamVjdCB0eXBlLCBhbmQgdGhlIGlkZW50aWZpZXIgdHlwZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGVzdGluYXRpb25FeHRlcm5hbElESW5mb0ZvclJldGwoXG4gICAgbWVzc2FnZTogUnVkZGVyU3RhY2tFdmVudCxcbiAgICBkZXN0aW5hdGlvbk5hbWU6IHN0cmluZyxcbiAgKToge1xuICAgIGRlc3RpbmF0aW9uRXh0ZXJuYWxJZDogdW5rbm93biB8IG51bGw7XG4gICAgb2JqZWN0VHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgICBpZGVudGlmaWVyVHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgfSB7XG4gICAgbGV0IGV4dGVybmFsSWRBcnJheTogRXh0ZXJuYWxJZFtdID0gW107XG4gICAgbGV0IGRlc3RpbmF0aW9uRXh0ZXJuYWxJZDogdW5rbm93biB8IG51bGwgPSBudWxsO1xuICAgIGxldCBpZGVudGlmaWVyVHlwZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IG9iamVjdFR5cGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgaWYgKG1lc3NhZ2UuY29udGV4dD8uZXh0ZXJuYWxJZCkge1xuICAgICAgZXh0ZXJuYWxJZEFycmF5ID0gbWVzc2FnZS5jb250ZXh0LmV4dGVybmFsSWQ7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXh0ZXJuYWxJZEFycmF5KSkge1xuICAgICAgZXh0ZXJuYWxJZEFycmF5LmZvckVhY2goKGV4dElkT2JqKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IGV4dElkT2JqO1xuICAgICAgICBpZiAodHlwZS5pbmNsdWRlcyhgJHtkZXN0aW5hdGlvbk5hbWV9LWApKSB7XG4gICAgICAgICAgZGVzdGluYXRpb25FeHRlcm5hbElkID0gaWQgPz8gbnVsbDtcbiAgICAgICAgICBvYmplY3RUeXBlID0gdHlwZS5yZXBsYWNlKGAke2Rlc3RpbmF0aW9uTmFtZX0tYCwgJycpID8/IG51bGw7XG4gICAgICAgICAgaWRlbnRpZmllclR5cGUgPSBleHRJZE9iai5pZGVudGlmaWVyVHlwZSA/PyBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZGVzdGluYXRpb25FeHRlcm5hbElkLCBvYmplY3RUeXBlLCBpZGVudGlmaWVyVHlwZSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyBhIGRlc3RpbmF0aW9uLXNwZWNpZmljIGV4dGVybmFsIElEIG9iamVjdCBmcm9tIGEgZ2l2ZW4gUnVkZGVyU3RhY2tFdmVudCBtZXNzYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIG9iamVjdCBjb250YWluaW5nIHRoZSBleHRlcm5hbCBJRC5cbiAgICogQHBhcmFtIGRlc3RpbmF0aW9uTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBkZXN0aW5hdGlvbiBmb3Igd2hpY2ggdG8gcmV0cmlldmUgdGhlIGV4dGVybmFsIElEIG9iamVjdC5cbiAgICogQHJldHVybnMgVGhlIGRlc3RpbmF0aW9uLXNwZWNpZmljIGV4dGVybmFsIElEIG9iamVjdCBpZiBmb3VuZCwgb3IgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0RGVzdGluYXRpb25FeHRlcm5hbElET2JqZWN0Rm9yUmV0bChcbiAgICBtZXNzYWdlOiBSdWRkZXJTdGFja0V2ZW50LFxuICAgIGRlc3RpbmF0aW9uTmFtZTogc3RyaW5nLFxuICApOiBFeHRlcm5hbElkIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB7IGV4dGVybmFsSWQgfSA9IG1lc3NhZ2UuY29udGV4dCB8fCB7fTtcbiAgICBjb25zdCBleHRlcm5hbElkQXJyYXkgPSBleHRlcm5hbElkID8/IFtdO1xuXG4gICAgbGV0IG9iajogRXh0ZXJuYWxJZCB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZXh0ZXJuYWxJZEFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIHNvbWUgc3RvcHMgdGhlIGV4ZWN1dGlvbiB3aGVuIHRoZSBlbGVtZW50IGlzIGZvdW5kXG4gICAgICBleHRlcm5hbElkQXJyYXkuc29tZSgoZXh0SWRPYmopID0+IHtcbiAgICAgICAgY29uc3QgeyB0eXBlIH0gPSBleHRJZE9iajtcbiAgICAgICAgaWYgKHR5cGU/LmluY2x1ZGVzKGAke2Rlc3RpbmF0aW9uTmFtZX0tYCkpIHtcbiAgICAgICAgICBvYmogPSBleHRJZE9iajtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sem.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sem.test.d.ts","sourceRoot":"","sources":["../../src/utils/sem.test.ts"],"names":[],"mappings":""}