@segment/action-destinations 3.244.0-staging-b8762 → 3.244.0-staging-3bb5d058
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/dist/destinations/blackbaud-raisers-edge-nxt/utils/index.d.ts +1 -1
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.d.ts +5 -2
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js +98 -18
- package/dist/destinations/engage/sendgrid/previewApiLookup/api-lookups.js.map +1 -1
- package/dist/destinations/engage/utils/track.d.ts +10 -10
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.d.ts +14 -0
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js +3 -0
- package/dist/destinations/responsys/asyncMergePetRecords/generated-types.js.map +1 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.d.ts +5 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.js +113 -0
- package/dist/destinations/responsys/asyncMergePetRecords/index.js.map +1 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.d.ts +20 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js +3 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/generated-types.js.map +1 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.d.ts +5 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js +174 -0
- package/dist/destinations/responsys/asyncMergeProfileListMembers/index.js.map +1 -0
- package/dist/destinations/responsys/rsp-operations.d.ts +14 -0
- package/dist/destinations/responsys/rsp-operations.js +33 -0
- package/dist/destinations/responsys/rsp-operations.js.map +1 -0
- package/dist/destinations/responsys/rsp-properties.d.ts +4 -0
- package/dist/destinations/responsys/rsp-properties.js +27 -0
- package/dist/destinations/responsys/rsp-properties.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.d.ts +3 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js +43 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.d.ts +33 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.js +3 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.d.ts +5 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.js +16 -0
- package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/index.js.map +1 -0
- package/dist/destinations/tiktok-offline-conversions/utils.d.ts +8 -0
- package/dist/destinations/tiktok-offline-conversions/utils.js +67 -0
- package/dist/destinations/tiktok-offline-conversions/utils.js.map +1 -0
- package/package.json +1 -1
- package/dist/destinations/mixpanel/utils.d.ts +0 -13
- package/dist/destinations/mixpanel/utils.js +0 -117
- package/dist/destinations/mixpanel/utils.js.map +0 -1
|
@@ -9,7 +9,7 @@ export declare const dateStringToFuzzyDate: (dateString: string | number) => fal
|
|
|
9
9
|
y: string;
|
|
10
10
|
};
|
|
11
11
|
export declare const augmentFieldsWithConstituentFields: (fields: Record<string, InputField>) => Record<string, InputField>;
|
|
12
|
-
export declare const splitConstituentPayload: (payload: CreateOrUpdateIndividualConstituentPayload) => (Partial<
|
|
12
|
+
export declare const splitConstituentPayload: (payload: CreateOrUpdateIndividualConstituentPayload) => (Partial<Constituent> | Partial<Address> | Partial<OnlinePresence> | Partial<Phone>)[];
|
|
13
13
|
export declare const buildConstituentPayloadFromPayload: (payload: StringIndexedObject) => Partial<CreateOrUpdateIndividualConstituentPayload>;
|
|
14
14
|
export declare const buildGiftDataFromPayload: (constituentId: string, payload: CreateGiftPayload) => Partial<Gift>;
|
|
15
15
|
export declare const buildConstituentActionDataFromPayload: (constituentId: string, payload: CreateConstituentAction) => Partial<ConstituentAction>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InputField } from '@segment/actions-core';
|
|
2
2
|
import { RequestClient } from '@segment/actions-core';
|
|
3
|
-
import { Logger, StatsClient } from '@segment/actions-core/destination-kit';
|
|
3
|
+
import { Logger, StatsClient, DataFeedCache } from '@segment/actions-core/destination-kit';
|
|
4
4
|
import type { Settings } from '../generated-types';
|
|
5
5
|
import { Profile } from '../Profile';
|
|
6
6
|
export declare type ApiLookupConfig = {
|
|
@@ -13,6 +13,9 @@ export declare type ApiLookupConfig = {
|
|
|
13
13
|
headers?: object | undefined;
|
|
14
14
|
responseType: string;
|
|
15
15
|
};
|
|
16
|
-
export declare const
|
|
16
|
+
export declare const getRequestId: ({ method, url, body, headers }: ApiLookupConfig) => string;
|
|
17
|
+
export declare const getCachedResponse: ({ responseType }: ApiLookupConfig, requestId: string, dataFeedCache: DataFeedCache, datafeedTags: string[]) => Promise<any>;
|
|
18
|
+
export declare const performApiLookup: (request: RequestClient, apiLookupConfig: ApiLookupConfig, profile: Profile, statsClient: StatsClient | undefined, tags: string[], settings: Settings, logger?: Logger | undefined, dataFeedCache?: DataFeedCache | undefined) => Promise<any>;
|
|
17
19
|
export declare const apiLookupActionFields: Record<string, InputField>;
|
|
18
20
|
export declare const apiLookupLiquidKey = "lookups";
|
|
21
|
+
export declare const FLAGON_NAME_DATA_FEEDS = "is-datafeeds-enabled";
|
|
@@ -1,46 +1,125 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.apiLookupLiquidKey = exports.apiLookupActionFields = exports.performApiLookup = void 0;
|
|
3
|
+
exports.FLAGON_NAME_DATA_FEEDS = exports.apiLookupLiquidKey = exports.apiLookupActionFields = exports.performApiLookup = exports.getCachedResponse = exports.getRequestId = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
4
5
|
const actions_core_1 = require("@segment/actions-core");
|
|
5
6
|
const liquidjs_1 = require("liquidjs");
|
|
6
7
|
const Liquid = new liquidjs_1.Liquid();
|
|
7
|
-
const
|
|
8
|
+
const maxResponseSizeBytes = 1000000;
|
|
9
|
+
const renderLiquidFields = async ({ id, url, body }, profile, datafeedTags, settings, logger) => {
|
|
8
10
|
let renderedUrl;
|
|
9
11
|
let renderedBody;
|
|
10
12
|
try {
|
|
11
13
|
renderedUrl = await Liquid.parseAndRender(url, { profile });
|
|
12
14
|
}
|
|
13
15
|
catch (error) {
|
|
14
|
-
logger?.error(`TE Messaging: Email
|
|
15
|
-
|
|
16
|
-
statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
|
|
16
|
+
logger?.error(`TE Messaging: Email datafeed url parse failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
|
|
17
|
+
datafeedTags.push('error:true', `error_message:${error?.message}`, 'reason:rendering_failure', 'rendering:url');
|
|
17
18
|
throw new actions_core_1.IntegrationError('Unable to parse email api lookup url', 'api lookup url parse failure', 400);
|
|
18
19
|
}
|
|
19
20
|
try {
|
|
20
21
|
renderedBody = body ? await Liquid.parseAndRender(body, { profile }) : undefined;
|
|
21
22
|
}
|
|
22
23
|
catch (error) {
|
|
23
|
-
logger?.error(`TE Messaging: Email
|
|
24
|
-
|
|
25
|
-
statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
|
|
24
|
+
logger?.error(`TE Messaging: Email datafeed body parse failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
|
|
25
|
+
datafeedTags.push('error:true', `error_message:${error?.message}`, 'reason:rendering_failure', 'rendering:body');
|
|
26
26
|
throw new actions_core_1.IntegrationError('Unable to parse email api lookup body', 'api lookup body parse failure', 400);
|
|
27
27
|
}
|
|
28
|
+
return {
|
|
29
|
+
renderedUrl,
|
|
30
|
+
renderedBody
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const getRequestId = ({ method, url, body, headers }) => {
|
|
34
|
+
const requestHash = crypto_1.createHash('sha256');
|
|
35
|
+
requestHash.update(`${method}${url}${body}${JSON.stringify(headers)}`);
|
|
36
|
+
const requestId = requestHash.digest('hex');
|
|
37
|
+
return requestId;
|
|
38
|
+
};
|
|
39
|
+
exports.getRequestId = getRequestId;
|
|
40
|
+
const getCachedResponse = async ({ responseType }, requestId, dataFeedCache, datafeedTags) => {
|
|
41
|
+
const cachedResponse = await dataFeedCache?.getRequestResponse(requestId);
|
|
42
|
+
if (!cachedResponse) {
|
|
43
|
+
datafeedTags.push('cache_hit:false');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
datafeedTags.push('cache_hit:true');
|
|
47
|
+
if (responseType === 'json') {
|
|
48
|
+
return JSON.parse(cachedResponse);
|
|
49
|
+
}
|
|
50
|
+
return cachedResponse;
|
|
51
|
+
};
|
|
52
|
+
exports.getCachedResponse = getCachedResponse;
|
|
53
|
+
const performApiLookup = async (request, apiLookupConfig, profile, statsClient, tags, settings, logger, dataFeedCache) => {
|
|
54
|
+
const { id, method, headers, cacheTtl, name } = apiLookupConfig;
|
|
55
|
+
const datafeedTags = [
|
|
56
|
+
...tags,
|
|
57
|
+
`datafeed_id:${id}`,
|
|
58
|
+
`datafeed_name:${name}`,
|
|
59
|
+
`space_id:${settings.spaceId}`,
|
|
60
|
+
`cache_ttl_greater_than_0:${cacheTtl > 0}`
|
|
61
|
+
];
|
|
28
62
|
try {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
63
|
+
const { renderedUrl, renderedBody } = await renderLiquidFields(apiLookupConfig, profile, datafeedTags, settings, logger);
|
|
64
|
+
const requestId = exports.getRequestId({ ...apiLookupConfig, url: renderedUrl, body: renderedBody });
|
|
65
|
+
if (cacheTtl > 0 && dataFeedCache) {
|
|
66
|
+
const cachedResponse = await exports.getCachedResponse(apiLookupConfig, requestId, dataFeedCache, datafeedTags);
|
|
67
|
+
if (cachedResponse) {
|
|
68
|
+
datafeedTags.push('error:false');
|
|
69
|
+
return cachedResponse;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
let data;
|
|
73
|
+
try {
|
|
74
|
+
const res = await request(renderedUrl, {
|
|
75
|
+
headers: headers ?? undefined,
|
|
76
|
+
timeout: 3000,
|
|
77
|
+
method: method,
|
|
78
|
+
body: renderedBody,
|
|
79
|
+
skipResponseCloning: true
|
|
80
|
+
});
|
|
81
|
+
data = await res.data;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
const respError = error.response;
|
|
85
|
+
logger?.error(`TE Messaging: Email api lookup failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
|
|
86
|
+
datafeedTags.push(`error:true`, `error_message:${error.message}`, `error_status:${respError?.status}`, 'reason:api_call_failure');
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
const dataString = JSON.stringify(data);
|
|
90
|
+
const size = Buffer.byteLength(dataString, 'utf-8');
|
|
91
|
+
datafeedTags.push(`response_size_greater_than_mb:${size > maxResponseSizeBytes}`);
|
|
92
|
+
if (cacheTtl > 0) {
|
|
93
|
+
if (size <= maxResponseSizeBytes) {
|
|
94
|
+
try {
|
|
95
|
+
await dataFeedCache?.setRequestResponse(requestId, dataString, cacheTtl / 1000);
|
|
96
|
+
datafeedTags.push('cache_set:true');
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
logger?.error(`TE Messaging: Email api lookup cache set failure - api lookup id: ${id} - ${settings.spaceId} - [${err}]`);
|
|
100
|
+
datafeedTags.push('cache_set:false');
|
|
101
|
+
datafeedTags.push('error:true', 'reason:cache_set_failure', `error_message:${err?.message}`);
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
datafeedTags.push('cache_set:false');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return data;
|
|
37
110
|
}
|
|
38
111
|
catch (error) {
|
|
112
|
+
const isErrorCapturedInTags = datafeedTags.find((str) => str.includes('error:true'));
|
|
113
|
+
if (!isErrorCapturedInTags) {
|
|
114
|
+
datafeedTags.push('error:true', `error_message:${error?.message}`, 'reason:unknown');
|
|
115
|
+
}
|
|
116
|
+
tags.push('reason:datafeed_failure');
|
|
39
117
|
logger?.error(`TE Messaging: Email api lookup failure - api lookup id: ${id} - ${settings.spaceId} - [${error}]`);
|
|
40
|
-
tags.push('reason:apilookup_failure');
|
|
41
|
-
statsClient?.incr('actions-personas-messaging-sendgrid-error', 1, tags);
|
|
42
118
|
throw error;
|
|
43
119
|
}
|
|
120
|
+
finally {
|
|
121
|
+
statsClient?.incr('datafeed-execution', 1, datafeedTags);
|
|
122
|
+
}
|
|
44
123
|
};
|
|
45
124
|
exports.performApiLookup = performApiLookup;
|
|
46
125
|
exports.apiLookupActionFields = {
|
|
@@ -91,4 +170,5 @@ exports.apiLookupActionFields = {
|
|
|
91
170
|
}
|
|
92
171
|
};
|
|
93
172
|
exports.apiLookupLiquidKey = 'lookups';
|
|
173
|
+
exports.FLAGON_NAME_DATA_FEEDS = 'is-datafeeds-enabled';
|
|
94
174
|
//# sourceMappingURL=api-lookups.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-lookups.js","sourceRoot":"","sources":["../../../../../src/destinations/engage/sendgrid/previewApiLookup/api-lookups.ts"],"names":[],"mappings":";;;AAAA,wDAAwD;AAKxD,uCAA6C;
|
|
1
|
+
{"version":3,"file":"api-lookups.js","sourceRoot":"","sources":["../../../../../src/destinations/engage/sendgrid/previewApiLookup/api-lookups.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ContextFromDecorator } from './operationTracking';
|
|
2
2
|
export declare const track: ((decoratorArgs?: ({
|
|
3
|
-
shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
|
|
4
|
-
} & {
|
|
5
3
|
onError?: ((ctx: import("./operationTracking").OperationErrorHandlerContext<import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>>) => void) | undefined;
|
|
6
4
|
} & {
|
|
7
5
|
onTry?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
|
|
8
6
|
onFinally?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => void) | undefined;
|
|
9
7
|
} & import("./operationTracking").OperationLoggerDecoratorArgs & {
|
|
8
|
+
shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
|
|
9
|
+
} & {
|
|
10
10
|
wrapIntegrationError?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => import("@segment/actions-core/*").IntegrationError | [message: string, code: string, status: number]) | undefined;
|
|
11
11
|
}) | undefined) => import("./operationTracking").GenericMethodDecorator<(this: any, ...args: any[]) => any>) & {
|
|
12
12
|
getCurrentOperation(classInstance: any): (import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & {
|
|
@@ -15,14 +15,6 @@ export declare const track: ((decoratorArgs?: ({
|
|
|
15
15
|
}) | undefined;
|
|
16
16
|
} & {
|
|
17
17
|
_contextType: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any> & {
|
|
18
|
-
tags: string[];
|
|
19
|
-
sharedContext: {
|
|
20
|
-
tags: string[];
|
|
21
|
-
};
|
|
22
|
-
decoratorArgs?: {
|
|
23
|
-
shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
|
|
24
|
-
} | undefined;
|
|
25
|
-
} & {
|
|
26
18
|
decoratorArgs?: {
|
|
27
19
|
onError?: ((ctx: import("./operationTracking").OperationErrorHandlerContext<import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>>) => void) | undefined;
|
|
28
20
|
} | undefined;
|
|
@@ -43,6 +35,14 @@ export declare const track: ((decoratorArgs?: ({
|
|
|
43
35
|
logMetadata?: Record<string, unknown> | undefined;
|
|
44
36
|
decoratorArgs?: import("./operationTracking").OperationLoggerDecoratorArgs | undefined;
|
|
45
37
|
sharedContext: import("./operationTracking").OperationLoggerSharedContext;
|
|
38
|
+
} & {
|
|
39
|
+
tags: string[];
|
|
40
|
+
sharedContext: {
|
|
41
|
+
tags: string[];
|
|
42
|
+
};
|
|
43
|
+
decoratorArgs?: {
|
|
44
|
+
shouldStats?: ((args: import("./operationTracking").OperationStatsEventArgs) => boolean | void) | undefined;
|
|
45
|
+
} | undefined;
|
|
46
46
|
} & {
|
|
47
47
|
decoratorArgs?: {
|
|
48
48
|
wrapIntegrationError?: ((ctx: import("./operationTracking").TryCatchFinallyContext<(this: any, ...args: any[]) => any>) => import("@segment/actions-core/*").IntegrationError | [message: string, code: string, status: number]) | undefined;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface Payload {
|
|
2
|
+
profileListName: string;
|
|
3
|
+
profileExtensionTable: string;
|
|
4
|
+
userData: {
|
|
5
|
+
[k: string]: unknown;
|
|
6
|
+
};
|
|
7
|
+
mapTemplateName?: string;
|
|
8
|
+
insertOnNoMatch?: boolean;
|
|
9
|
+
matchColumnName1?: string;
|
|
10
|
+
matchColumnName2?: string;
|
|
11
|
+
updateOnMatch: string;
|
|
12
|
+
enable_batching?: boolean;
|
|
13
|
+
batch_size?: number;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/asyncMergePetRecords/generated-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const rsp_properties_1 = require("../rsp-properties");
|
|
4
|
+
const rsp_operations_1 = require("../rsp-operations");
|
|
5
|
+
const action = {
|
|
6
|
+
title: 'Async Merge PET Records',
|
|
7
|
+
description: '',
|
|
8
|
+
defaultSubscription: 'type = "identify"',
|
|
9
|
+
fields: {
|
|
10
|
+
profileListName: {
|
|
11
|
+
label: 'List Name',
|
|
12
|
+
description: "Name of the profile extension table's parent profile list.",
|
|
13
|
+
type: 'string',
|
|
14
|
+
required: true
|
|
15
|
+
},
|
|
16
|
+
profileExtensionTable: {
|
|
17
|
+
label: 'Pet Name',
|
|
18
|
+
description: 'Name of the profile extension table.',
|
|
19
|
+
type: 'string',
|
|
20
|
+
required: true
|
|
21
|
+
},
|
|
22
|
+
userData: rsp_properties_1.userData,
|
|
23
|
+
mapTemplateName: {
|
|
24
|
+
label: 'Map Template Name',
|
|
25
|
+
description: 'The Map Template in Responsys that can be used to map Field Names of the Profile List to Column Names.',
|
|
26
|
+
type: 'string',
|
|
27
|
+
default: ''
|
|
28
|
+
},
|
|
29
|
+
insertOnNoMatch: {
|
|
30
|
+
label: 'Insert On No Match',
|
|
31
|
+
description: 'Indicates what should be done for records where a match is not found.',
|
|
32
|
+
type: 'boolean',
|
|
33
|
+
default: true
|
|
34
|
+
},
|
|
35
|
+
matchColumnName1: {
|
|
36
|
+
label: 'First Column Match',
|
|
37
|
+
description: 'First match column for determining whether an insert or update should occur.',
|
|
38
|
+
type: 'string',
|
|
39
|
+
choices: [
|
|
40
|
+
{ label: 'RIID_', value: 'RIID_' },
|
|
41
|
+
{ label: 'CUSTOMER_ID_', value: 'CUSTOMER_ID_' },
|
|
42
|
+
{ label: 'EMAIL_ADDRESS_', value: 'EMAIL_ADDRESS_' },
|
|
43
|
+
{ label: 'MOBILE_NUMBER_', value: 'MOBILE_NUMBER_' },
|
|
44
|
+
{ label: 'EMAIL_MD5_HASH_', value: 'EMAIL_MD5_HASH_' },
|
|
45
|
+
{ label: 'EMAIL_SHA256_HASH_', value: 'EMAIL_SHA256_HASH_' }
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
matchColumnName2: {
|
|
49
|
+
label: 'Second Column Match',
|
|
50
|
+
description: 'Second match column for determining whether an insert or update should occur.',
|
|
51
|
+
type: 'string',
|
|
52
|
+
choices: [
|
|
53
|
+
{ label: 'RIID_', value: 'RIID_' },
|
|
54
|
+
{ label: 'CUSTOMER_ID_', value: 'CUSTOMER_ID_' },
|
|
55
|
+
{ label: 'EMAIL_ADDRESS_', value: 'EMAIL_ADDRESS_' },
|
|
56
|
+
{ label: 'MOBILE_NUMBER_', value: 'MOBILE_NUMBER_' },
|
|
57
|
+
{ label: 'EMAIL_MD5_HASH_', value: 'EMAIL_MD5_HASH_' },
|
|
58
|
+
{ label: 'EMAIL_SHA256_HASH_', value: 'EMAIL_SHA256_HASH_' }
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
updateOnMatch: {
|
|
62
|
+
label: 'Update On Match',
|
|
63
|
+
description: 'Controls how the existing record should be updated.',
|
|
64
|
+
type: 'string',
|
|
65
|
+
required: true,
|
|
66
|
+
choices: [
|
|
67
|
+
{ label: 'Replace All', value: 'REPLACE_ALL' },
|
|
68
|
+
{ label: 'No Update', value: 'NO_UPDATE' }
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
enable_batching: rsp_properties_1.enable_batching,
|
|
72
|
+
batch_size: rsp_properties_1.batch_size
|
|
73
|
+
},
|
|
74
|
+
perform: async (request, { settings, payload }) => {
|
|
75
|
+
if (payload && payload.profileListName) {
|
|
76
|
+
const { profileListName, profileExtensionTable, insertOnNoMatch, matchColumnName1, matchColumnName2, updateOnMatch, userData, mapTemplateName } = payload;
|
|
77
|
+
const baseUrl = (settings.baseUrl?.startsWith('https://') ? settings.baseUrl : `https://${settings.baseUrl}`)?.replace(/\/$/, '');
|
|
78
|
+
const endpoint = `${baseUrl}/rest/asyncApi/v1.3/lists/${profileListName}/listExtensions/${profileExtensionTable}/members`;
|
|
79
|
+
const recordData = rsp_operations_1.buildRecordData(userData, mapTemplateName ?? '');
|
|
80
|
+
const requestBody = {
|
|
81
|
+
recordData: recordData,
|
|
82
|
+
insertOnNoMatch: !!insertOnNoMatch,
|
|
83
|
+
updateOnMatch: updateOnMatch || '',
|
|
84
|
+
matchColumnName1: matchColumnName1?.replace(/_+$/, '') || '',
|
|
85
|
+
matchColumnName2: matchColumnName2?.replace(/_+$/, '') || ''
|
|
86
|
+
};
|
|
87
|
+
return request(endpoint, {
|
|
88
|
+
method: 'POST',
|
|
89
|
+
body: JSON.stringify(requestBody)
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
performBatch: async (request, { settings, payload }) => {
|
|
94
|
+
const { profileListName, profileExtensionTable, insertOnNoMatch, matchColumnName1, matchColumnName2, updateOnMatch, mapTemplateName } = payload[0];
|
|
95
|
+
const payloadData = payload.map((obj) => obj.userData);
|
|
96
|
+
const recordData = rsp_operations_1.buildRecordData(payloadData, mapTemplateName ?? '');
|
|
97
|
+
const requestBody = {
|
|
98
|
+
recordData: recordData,
|
|
99
|
+
insertOnNoMatch: !!insertOnNoMatch,
|
|
100
|
+
updateOnMatch: updateOnMatch || '',
|
|
101
|
+
matchColumnName1: matchColumnName1?.replace(/_+$/, '') || '',
|
|
102
|
+
matchColumnName2: matchColumnName2?.replace(/_+$/, '') || ''
|
|
103
|
+
};
|
|
104
|
+
const baseUrl = (settings.baseUrl?.startsWith('https://') ? settings.baseUrl : `https://${settings.baseUrl}`)?.replace(/\/$/, '');
|
|
105
|
+
const endpoint = `${baseUrl}/rest/asyncApi/v1.3/lists/${profileListName}/listExtensions/${profileExtensionTable}/members`;
|
|
106
|
+
return await request(endpoint, {
|
|
107
|
+
method: 'POST',
|
|
108
|
+
body: JSON.stringify(requestBody)
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
exports.default = action;
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/asyncMergePetRecords/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface Payload {
|
|
2
|
+
profileListName: string;
|
|
3
|
+
userData: {
|
|
4
|
+
[k: string]: unknown;
|
|
5
|
+
};
|
|
6
|
+
mapTemplateName?: string;
|
|
7
|
+
defaultPermissionStatus?: string;
|
|
8
|
+
htmlValue?: string;
|
|
9
|
+
insertOnNoMatch?: boolean;
|
|
10
|
+
matchColumnName1?: string;
|
|
11
|
+
matchColumnName2?: string;
|
|
12
|
+
matchOperator?: string;
|
|
13
|
+
optinValue?: string;
|
|
14
|
+
optoutValue?: string;
|
|
15
|
+
rejectRecordIfChannelEmpty?: string;
|
|
16
|
+
textValue?: string;
|
|
17
|
+
updateOnMatch: string;
|
|
18
|
+
enable_batching?: boolean;
|
|
19
|
+
batch_size?: number;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/asyncMergeProfileListMembers/generated-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const rsp_properties_1 = require("../rsp-properties");
|
|
4
|
+
const rsp_operations_1 = require("../rsp-operations");
|
|
5
|
+
const action = {
|
|
6
|
+
title: 'Async Merge Profile List Members',
|
|
7
|
+
description: 'Asynchronous Merge Profile List Members API',
|
|
8
|
+
fields: {
|
|
9
|
+
profileListName: {
|
|
10
|
+
label: 'List Name',
|
|
11
|
+
description: "Name of the profile extension table's parent profile list.",
|
|
12
|
+
type: 'string',
|
|
13
|
+
required: true
|
|
14
|
+
},
|
|
15
|
+
userData: rsp_properties_1.userData,
|
|
16
|
+
mapTemplateName: {
|
|
17
|
+
label: 'Map Template Name',
|
|
18
|
+
description: 'The Map Template in Responsys that can be used to map Field Names of the Profile List to Column Names.',
|
|
19
|
+
type: 'string',
|
|
20
|
+
default: ''
|
|
21
|
+
},
|
|
22
|
+
defaultPermissionStatus: {
|
|
23
|
+
label: 'Default Permission Status',
|
|
24
|
+
description: 'This value must be specified as either OPTIN or OPTOUT and would be applied to all of the records contained in the API call. If this value is not explicitly specified, then it is set to OPTOUT.',
|
|
25
|
+
type: 'string',
|
|
26
|
+
choices: [
|
|
27
|
+
{ label: 'Opt In', value: 'OPTIN' },
|
|
28
|
+
{ label: 'Opt Out', value: 'OPTOUT' }
|
|
29
|
+
],
|
|
30
|
+
default: 'OPTOUT'
|
|
31
|
+
},
|
|
32
|
+
htmlValue: {
|
|
33
|
+
label: 'Preferred Email Format',
|
|
34
|
+
description: "Value of incoming preferred email format data. For example, 'H' may represent a preference for HTML formatted email.",
|
|
35
|
+
type: 'string'
|
|
36
|
+
},
|
|
37
|
+
insertOnNoMatch: {
|
|
38
|
+
label: 'Insert On No Match',
|
|
39
|
+
description: 'Indicates what should be done for records where a match is not found.',
|
|
40
|
+
type: 'boolean',
|
|
41
|
+
default: true
|
|
42
|
+
},
|
|
43
|
+
matchColumnName1: {
|
|
44
|
+
label: 'First Column Match',
|
|
45
|
+
description: 'First match column for determining whether an insert or update should occur.',
|
|
46
|
+
type: 'string',
|
|
47
|
+
choices: [
|
|
48
|
+
{ label: 'RIID_', value: 'RIID_' },
|
|
49
|
+
{ label: 'CUSTOMER_ID_', value: 'CUSTOMER_ID_' },
|
|
50
|
+
{ label: 'EMAIL_ADDRESS_', value: 'EMAIL_ADDRESS_' },
|
|
51
|
+
{ label: 'MOBILE_NUMBER_', value: 'MOBILE_NUMBER_' },
|
|
52
|
+
{ label: 'EMAIL_MD5_HASH_', value: 'EMAIL_MD5_HASH_' },
|
|
53
|
+
{ label: 'EMAIL_SHA256_HASH_', value: 'EMAIL_SHA256_HASH_' }
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
matchColumnName2: {
|
|
57
|
+
label: 'Second Column Match',
|
|
58
|
+
description: 'Second match column for determining whether an insert or update should occur.',
|
|
59
|
+
type: 'string',
|
|
60
|
+
choices: [
|
|
61
|
+
{ label: 'RIID_', value: 'RIID_' },
|
|
62
|
+
{ label: 'CUSTOMER_ID_', value: 'CUSTOMER_ID_' },
|
|
63
|
+
{ label: 'EMAIL_ADDRESS_', value: 'EMAIL_ADDRESS_' },
|
|
64
|
+
{ label: 'MOBILE_NUMBER_', value: 'MOBILE_NUMBER_' },
|
|
65
|
+
{ label: 'EMAIL_MD5_HASH_', value: 'EMAIL_MD5_HASH_' },
|
|
66
|
+
{ label: 'EMAIL_SHA256_HASH_', value: 'EMAIL_SHA256_HASH_' }
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
matchOperator: {
|
|
70
|
+
label: 'Match Operator',
|
|
71
|
+
description: 'Operator to join match column names.',
|
|
72
|
+
type: 'string',
|
|
73
|
+
choices: [
|
|
74
|
+
{ label: 'None', value: 'NONE' },
|
|
75
|
+
{ label: 'And', value: 'AND' }
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
optinValue: {
|
|
79
|
+
label: 'Optin Value',
|
|
80
|
+
description: "Value of incoming opt-in status data that represents an opt-in status. For example, 'I' may represent an opt-in status.",
|
|
81
|
+
type: 'string'
|
|
82
|
+
},
|
|
83
|
+
optoutValue: {
|
|
84
|
+
label: 'Optout Value',
|
|
85
|
+
description: "Value of incoming opt-out status data that represents an optout status. For example, '0' may represent an opt-out status.",
|
|
86
|
+
type: 'string'
|
|
87
|
+
},
|
|
88
|
+
rejectRecordIfChannelEmpty: {
|
|
89
|
+
label: 'Reject Record If Channel Empty',
|
|
90
|
+
description: "String containing comma-separated channel codes that if specified will result in record rejection when the channel address field is null. Channel codes are 'E' (Email), 'M' (Mobile), 'P' (Postal Code). For example 'E,M' would indicate that a record that has a null for Email or Mobile Number value should be rejected. This parameter can also be set to null or to an empty string, which will cause the validation to not be performed for any channel, except if the matchColumnName1 parameter is set to EMAIL_ADDRESS_ or MOBILE_NUMBER_. When matchColumnName1 is set to EMAIL_ADDRESS_ or MOBILE_NUMBER_, then the null or empty string setting is effectively ignored for that channel.",
|
|
91
|
+
type: 'string'
|
|
92
|
+
},
|
|
93
|
+
textValue: {
|
|
94
|
+
label: 'Text Value',
|
|
95
|
+
description: "Value of incoming preferred email format data. For example, 'T' may represent a preference for Text formatted email.",
|
|
96
|
+
type: 'string'
|
|
97
|
+
},
|
|
98
|
+
updateOnMatch: {
|
|
99
|
+
label: 'Update On Match',
|
|
100
|
+
description: 'Controls how the existing record should be updated.',
|
|
101
|
+
type: 'string',
|
|
102
|
+
required: true,
|
|
103
|
+
choices: [
|
|
104
|
+
{ label: 'Replace All', value: 'REPLACE_ALL' },
|
|
105
|
+
{ label: 'No Update', value: 'NO_UPDATE' }
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
enable_batching: rsp_properties_1.enable_batching,
|
|
109
|
+
batch_size: rsp_properties_1.batch_size
|
|
110
|
+
},
|
|
111
|
+
perform: async (request, { settings, payload, auth }) => {
|
|
112
|
+
if (payload && payload.profileListName) {
|
|
113
|
+
const { profileListName, defaultPermissionStatus, htmlValue, insertOnNoMatch, matchColumnName1, matchColumnName2, matchOperator, optinValue, optoutValue, rejectRecordIfChannelEmpty, textValue, updateOnMatch, userData, mapTemplateName } = payload;
|
|
114
|
+
const baseUrl = (settings.baseUrl?.startsWith('https://') ? settings.baseUrl : `https://${settings.baseUrl}`)?.replace(/\/$/, '');
|
|
115
|
+
const endpoint = `${baseUrl}/rest/asyncApi/v1.3/lists/${profileListName}/members`;
|
|
116
|
+
const recordData = rsp_operations_1.buildRecordData(userData, mapTemplateName ?? '');
|
|
117
|
+
const requestBody = {
|
|
118
|
+
recordData: recordData,
|
|
119
|
+
mergeRule: {
|
|
120
|
+
defaultPermissionStatus,
|
|
121
|
+
htmlValue,
|
|
122
|
+
insertOnNoMatch,
|
|
123
|
+
matchColumnName1,
|
|
124
|
+
matchColumnName2,
|
|
125
|
+
matchOperator,
|
|
126
|
+
optinValue,
|
|
127
|
+
optoutValue,
|
|
128
|
+
rejectRecordIfChannelEmpty,
|
|
129
|
+
textValue,
|
|
130
|
+
updateOnMatch
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const token = auth?.accessToken ?? '';
|
|
134
|
+
const response = request(endpoint, {
|
|
135
|
+
method: 'POST',
|
|
136
|
+
headers: {
|
|
137
|
+
Authorization: token,
|
|
138
|
+
'Content-Type': 'application/json'
|
|
139
|
+
},
|
|
140
|
+
body: JSON.stringify(requestBody)
|
|
141
|
+
});
|
|
142
|
+
return response;
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
performBatch: async (request, { settings, payload }) => {
|
|
146
|
+
const { profileListName, defaultPermissionStatus, htmlValue, insertOnNoMatch, matchColumnName1, matchColumnName2, matchOperator, optinValue, optoutValue, rejectRecordIfChannelEmpty, textValue, updateOnMatch, mapTemplateName } = payload[0];
|
|
147
|
+
const payloadData = payload.map((obj) => obj.userData);
|
|
148
|
+
const recordData = rsp_operations_1.buildRecordData(payloadData, mapTemplateName ?? '');
|
|
149
|
+
const requestBody = {
|
|
150
|
+
recordData: recordData,
|
|
151
|
+
mergeRule: {
|
|
152
|
+
defaultPermissionStatus,
|
|
153
|
+
htmlValue,
|
|
154
|
+
insertOnNoMatch,
|
|
155
|
+
matchColumnName1,
|
|
156
|
+
matchColumnName2,
|
|
157
|
+
matchOperator,
|
|
158
|
+
optinValue,
|
|
159
|
+
optoutValue,
|
|
160
|
+
rejectRecordIfChannelEmpty,
|
|
161
|
+
textValue,
|
|
162
|
+
updateOnMatch
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
const baseUrl = (settings.baseUrl?.startsWith('https://') ? settings.baseUrl : `https://${settings.baseUrl}`)?.replace(/\/$/, '');
|
|
166
|
+
const endpoint = `${baseUrl}/rest/asyncApi/v1.3/lists/${profileListName}/members`;
|
|
167
|
+
return await request(endpoint, {
|
|
168
|
+
method: 'POST',
|
|
169
|
+
body: JSON.stringify(requestBody)
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
exports.default = action;
|
|
174
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/responsys/asyncMergeProfileListMembers/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Payload } from './asyncMergePetRecords/generated-types';
|
|
2
|
+
import { DynamicData, RecordData } from './types';
|
|
3
|
+
export declare const buildRecordData: (userData: DynamicData, mapTemplateName: string) => {
|
|
4
|
+
records: unknown[][];
|
|
5
|
+
fieldNames: string[];
|
|
6
|
+
mapTemplateName: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const buildRequestBodyPET: (payload: Payload, recordData: RecordData) => {
|
|
9
|
+
recordData: RecordData;
|
|
10
|
+
insertOnNoMatch: boolean | undefined;
|
|
11
|
+
updateOnMatch: string;
|
|
12
|
+
matchColumnName1: string;
|
|
13
|
+
matchColumnName2: string;
|
|
14
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildRequestBodyPET = exports.buildRecordData = void 0;
|
|
4
|
+
const buildRecordData = (userData, mapTemplateName) => {
|
|
5
|
+
if (Array.isArray(userData)) {
|
|
6
|
+
const keysFromFirstObject = Object.keys(userData[0]);
|
|
7
|
+
return {
|
|
8
|
+
records: userData.map((record) => Object.values(record)),
|
|
9
|
+
fieldNames: keysFromFirstObject,
|
|
10
|
+
mapTemplateName: mapTemplateName || ''
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const keysFromFirstObject = Object.keys(userData);
|
|
14
|
+
return {
|
|
15
|
+
records: [Object.values(userData)],
|
|
16
|
+
fieldNames: keysFromFirstObject,
|
|
17
|
+
mapTemplateName: mapTemplateName || ''
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
exports.buildRecordData = buildRecordData;
|
|
21
|
+
const buildRequestBodyPET = (payload, recordData) => {
|
|
22
|
+
const matchColumnName1 = payload.matchColumnName1 ? String(payload.matchColumnName1) : '';
|
|
23
|
+
const matchColumnName2 = payload.matchColumnName2 ? String(payload.matchColumnName2) : '';
|
|
24
|
+
return {
|
|
25
|
+
recordData: recordData,
|
|
26
|
+
insertOnNoMatch: payload.insertOnNoMatch,
|
|
27
|
+
updateOnMatch: payload.updateOnMatch,
|
|
28
|
+
matchColumnName1: matchColumnName1.replace(/_+$/, ''),
|
|
29
|
+
matchColumnName2: matchColumnName2.replace(/_+$/, '')
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
exports.buildRequestBodyPET = buildRequestBodyPET;
|
|
33
|
+
//# sourceMappingURL=rsp-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsp-operations.js","sourceRoot":"","sources":["../../../src/destinations/responsys/rsp-operations.ts"],"names":[],"mappings":";;;AAGO,MAAM,eAAe,GAAG,CAAC,QAAqB,EAAE,eAAuB,EAAE,EAAE;IAEhF,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACpD,OAAO;YACL,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,UAAU,EAAE,mBAAmB;YAC/B,eAAe,EAAE,eAAe,IAAI,EAAE;SACvC,CAAA;KACF;IACD,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjD,OAAO;QACL,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,UAAU,EAAE,mBAAmB;QAC/B,eAAe,EAAE,eAAe,IAAI,EAAE;KACvC,CAAA;AACH,CAAC,CAAA;AAhBY,QAAA,eAAe,mBAgB3B;AAUM,MAAM,mBAAmB,GAAG,CAAC,OAAgB,EAAE,UAAsB,EAAkB,EAAE;IAC9F,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzF,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACzF,OAAO;QACL,UAAU,EAAE,UAAU;QACtB,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACrD,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;KACtD,CAAA;AACH,CAAC,CAAA;AAVY,QAAA,mBAAmB,uBAU/B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.batch_size = exports.enable_batching = exports.userData = void 0;
|
|
4
|
+
exports.userData = {
|
|
5
|
+
label: 'Recepient Data',
|
|
6
|
+
description: 'Record data that represents Field Names and corresponding values for the recipient.',
|
|
7
|
+
type: 'object',
|
|
8
|
+
defaultObjectUI: 'keyvalue:only',
|
|
9
|
+
required: true,
|
|
10
|
+
default: { '@path': '$.' }
|
|
11
|
+
};
|
|
12
|
+
exports.enable_batching = {
|
|
13
|
+
label: 'Use Responsys Async API',
|
|
14
|
+
description: 'Once enabled, Segment will collect events into batches of 200 before sending to Responsys.',
|
|
15
|
+
type: 'boolean',
|
|
16
|
+
default: true,
|
|
17
|
+
unsafe_hidden: true
|
|
18
|
+
};
|
|
19
|
+
exports.batch_size = {
|
|
20
|
+
label: 'Batch Size',
|
|
21
|
+
description: 'Maximum number of events to include in each batch. Actual batch sizes may be lower.',
|
|
22
|
+
type: 'number',
|
|
23
|
+
required: false,
|
|
24
|
+
unsafe_hidden: true,
|
|
25
|
+
default: 200
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=rsp-properties.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rsp-properties.js","sourceRoot":"","sources":["../../../src/destinations/responsys/rsp-properties.ts"],"names":[],"mappings":";;;AAGa,QAAA,QAAQ,GAAe;IAClC,KAAK,EAAE,gBAAgB;IACvB,WAAW,EAAE,qFAAqF;IAClG,IAAI,EAAE,QAAQ;IACd,eAAe,EAAE,eAAe;IAChC,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;CAC3B,CAAA;AAEY,QAAA,eAAe,GAAe;IACzC,KAAK,EAAE,yBAAyB;IAChC,WAAW,EAAE,4FAA4F;IACzG,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,IAAI;CACpB,CAAA;AAEY,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,YAAY;IACnB,WAAW,EAAE,qFAAqF;IAClG,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,GAAG;CACb,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatPhones = exports.formatUserIds = exports.formatEmails = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const formatEmails = (email_addresses) => {
|
|
6
|
+
const result = [];
|
|
7
|
+
if (email_addresses) {
|
|
8
|
+
email_addresses.forEach((email) => {
|
|
9
|
+
result.push(hashAndEncode(email.toLowerCase()));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
return result;
|
|
13
|
+
};
|
|
14
|
+
exports.formatEmails = formatEmails;
|
|
15
|
+
function formatUserIds(userIds) {
|
|
16
|
+
const result = [];
|
|
17
|
+
if (userIds) {
|
|
18
|
+
userIds.forEach((userId) => {
|
|
19
|
+
result.push(hashAndEncode(userId.toLowerCase()));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
exports.formatUserIds = formatUserIds;
|
|
25
|
+
const formatPhones = (phone_numbers) => {
|
|
26
|
+
const result = [];
|
|
27
|
+
if (!phone_numbers)
|
|
28
|
+
return result;
|
|
29
|
+
phone_numbers.forEach((phone) => {
|
|
30
|
+
const validatedPhone = phone.match(/[0-9]{0,14}/g);
|
|
31
|
+
if (validatedPhone === null) {
|
|
32
|
+
throw new Error(`${phone} is not a valid E.164 phone number.`);
|
|
33
|
+
}
|
|
34
|
+
const formattedPhone = `+${phone.replace(/[^0-9]/g, '')}`;
|
|
35
|
+
result.push(hashAndEncode(formattedPhone.substring(0, 15)));
|
|
36
|
+
});
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
exports.formatPhones = formatPhones;
|
|
40
|
+
function hashAndEncode(property) {
|
|
41
|
+
return crypto_1.createHash('sha256').update(property).digest('hex');
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-offline-conversions/reportOfflineEvent/formatter.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AAK5B,MAAM,YAAY,GAAG,CAAC,eAAqC,EAAY,EAAE;IAC9E,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,eAAe,EAAE;QACnB,eAAe,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;KACH;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AARY,QAAA,YAAY,gBAQxB;AAOD,SAAgB,aAAa,CAAC,OAA6B;IACzD,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,OAAO,CAAC,CAAC,MAAc,EAAE,EAAE;YACjC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;KACH;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AARD,sCAQC;AAOM,MAAM,YAAY,GAAG,CAAC,aAAmC,EAAY,EAAE;IAC5E,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,CAAC,aAAa;QAAE,OAAO,MAAM,CAAA;IAEjC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;QACtC,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QAClD,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,qCAAqC,CAAC,CAAA;SAC/D;QAED,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAA;QAEzD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAhBY,QAAA,YAAY,gBAgBxB;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,OAAO,mBAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5D,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface Payload {
|
|
2
|
+
event: string;
|
|
3
|
+
event_id?: string;
|
|
4
|
+
timestamp?: string;
|
|
5
|
+
phone_numbers?: string[];
|
|
6
|
+
email_addresses?: string[];
|
|
7
|
+
order_id?: string;
|
|
8
|
+
shop_id?: string;
|
|
9
|
+
external_ids?: string[];
|
|
10
|
+
ttclid?: string;
|
|
11
|
+
ttp?: string;
|
|
12
|
+
lead_id?: string;
|
|
13
|
+
locale?: string;
|
|
14
|
+
url?: string;
|
|
15
|
+
referrer?: string;
|
|
16
|
+
ip?: string;
|
|
17
|
+
user_agent?: string;
|
|
18
|
+
contents?: {
|
|
19
|
+
price?: number;
|
|
20
|
+
quantity?: number;
|
|
21
|
+
content_category?: string;
|
|
22
|
+
content_id?: string;
|
|
23
|
+
content_name?: string;
|
|
24
|
+
brand?: string;
|
|
25
|
+
}[];
|
|
26
|
+
content_type?: string;
|
|
27
|
+
currency?: string;
|
|
28
|
+
value?: number;
|
|
29
|
+
description?: string;
|
|
30
|
+
query?: string;
|
|
31
|
+
limited_data_use?: boolean;
|
|
32
|
+
test_event_code?: string;
|
|
33
|
+
}
|
package/dist/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-types.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-offline-conversions/reportOfflineEvent/generated-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const common_fields_1 = require("../common_fields");
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const action = {
|
|
6
|
+
title: 'Track Payment Offline Conversion',
|
|
7
|
+
description: 'Send details of an in-store purchase or console purchase to the Tiktok Offline Events API',
|
|
8
|
+
fields: {
|
|
9
|
+
...common_fields_1.commonFields
|
|
10
|
+
},
|
|
11
|
+
perform: (request, { payload, settings }) => {
|
|
12
|
+
return utils_1.performOfflineEvent(request, settings, payload);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
exports.default = action;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/destinations/tiktok-offline-conversions/reportOfflineEvent/index.ts"],"names":[],"mappings":";;AAGA,oDAA+C;AAC/C,oCAA8C;AAE9C,MAAM,MAAM,GAAwC;IAClD,KAAK,EAAE,kCAAkC;IACzC,WAAW,EAAE,2FAA2F;IACxG,MAAM,EAAE;QACN,GAAG,4BAAY;KAChB;IACD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1C,OAAO,2BAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { RequestClient } from '@segment/actions-core';
|
|
2
|
+
import { Settings } from './generated-types';
|
|
3
|
+
import { Payload as ReportOfflineEventPayload } from './reportOfflineEvent/generated-types';
|
|
4
|
+
import { Payload as TrackNonPaymentOfflineConversionPayload } from './trackNonPaymentOfflineConversion/generated-types';
|
|
5
|
+
import { Payload as TrackPaymentOfflineConversionPayload } from './trackPaymentOfflineConversion/generated-types';
|
|
6
|
+
declare type OfflineEventPayload = ReportOfflineEventPayload | TrackNonPaymentOfflineConversionPayload | TrackPaymentOfflineConversionPayload;
|
|
7
|
+
export declare function performOfflineEvent(request: RequestClient, settings: Settings, payload: OfflineEventPayload): Promise<import("@segment/actions-core").ModifiedResponse<unknown>>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.performOfflineEvent = void 0;
|
|
4
|
+
const actions_core_1 = require("@segment/actions-core");
|
|
5
|
+
const formatter_1 = require("./formatter");
|
|
6
|
+
function performOfflineEvent(request, settings, payload) {
|
|
7
|
+
const phone_numbers = formatter_1.formatPhones(payload.phone_numbers);
|
|
8
|
+
const emails = formatter_1.formatEmails(payload.email_addresses);
|
|
9
|
+
const userIds = formatter_1.formatUserIds(payload.external_ids);
|
|
10
|
+
if (phone_numbers.length < 1 && emails.length < 1 && userIds.length < 1)
|
|
11
|
+
throw new actions_core_1.PayloadValidationError('TikTok Offline Conversions API requires an email address and/or phone number and or a userId');
|
|
12
|
+
const urlTtclid = payload.url
|
|
13
|
+
? (() => {
|
|
14
|
+
try {
|
|
15
|
+
return new URL(payload.url).searchParams.get('ttclid');
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
}
|
|
19
|
+
})()
|
|
20
|
+
: undefined;
|
|
21
|
+
return request('https://business-api.tiktok.com/open_api/v1.3/event/track/', {
|
|
22
|
+
method: 'post',
|
|
23
|
+
json: {
|
|
24
|
+
event_source: 'offline',
|
|
25
|
+
event_source_id: settings.eventSetID,
|
|
26
|
+
partner_name: 'Segment',
|
|
27
|
+
data: [
|
|
28
|
+
{
|
|
29
|
+
event: payload.event,
|
|
30
|
+
event_time: payload.timestamp
|
|
31
|
+
? Math.floor(new Date(payload.timestamp).getTime() / 1000)
|
|
32
|
+
: Math.floor(new Date().getTime() / 1000),
|
|
33
|
+
event_id: payload.event_id ? `${payload.event_id}` : undefined,
|
|
34
|
+
user: {
|
|
35
|
+
ttclid: payload.ttclid ? payload.ttclid : urlTtclid ? urlTtclid : undefined,
|
|
36
|
+
external_id: userIds,
|
|
37
|
+
phone: phone_numbers,
|
|
38
|
+
email: emails,
|
|
39
|
+
lead_id: payload.lead_id ? payload.lead_id : undefined,
|
|
40
|
+
ttp: payload.ttp ? payload.ttp : undefined,
|
|
41
|
+
ip: payload.ip ? payload.ip : undefined,
|
|
42
|
+
user_agent: payload.user_agent ? payload.user_agent : undefined,
|
|
43
|
+
locale: payload.locale ? payload.locale : undefined
|
|
44
|
+
},
|
|
45
|
+
properties: {
|
|
46
|
+
contents: payload.contents ? payload.contents : [],
|
|
47
|
+
content_type: payload.content_type ? payload.content_type : undefined,
|
|
48
|
+
currency: payload.currency ? payload.currency : undefined,
|
|
49
|
+
value: payload.value ? payload.value : undefined,
|
|
50
|
+
query: payload.query ? payload.query : undefined,
|
|
51
|
+
description: payload.description ? payload.description : undefined,
|
|
52
|
+
order_id: payload.order_id ? payload.order_id : undefined,
|
|
53
|
+
shop_id: payload.shop_id ? payload.shop_id : undefined
|
|
54
|
+
},
|
|
55
|
+
page: {
|
|
56
|
+
url: payload.url ? payload.url : undefined,
|
|
57
|
+
referrer: payload.referrer ? payload.referrer : undefined
|
|
58
|
+
},
|
|
59
|
+
limited_data_use: payload.limited_data_use ? payload.limited_data_use : false,
|
|
60
|
+
test_event_code: payload.test_event_code ? payload.test_event_code : undefined
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
exports.performOfflineEvent = performOfflineEvent;
|
|
67
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/destinations/tiktok-offline-conversions/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@segment/action-destinations",
|
|
3
3
|
"description": "Destination Actions engine and definitions.",
|
|
4
|
-
"version": "3.244.0-staging-
|
|
4
|
+
"version": "3.244.0-staging-3bb5d058",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/segmentio/action-destinations",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export declare enum ApiRegions {
|
|
2
|
-
US = "US \uD83C\uDDFA\uD83C\uDDF8",
|
|
3
|
-
EU = "EU \uD83C\uDDEA\uD83C\uDDFA"
|
|
4
|
-
}
|
|
5
|
-
export declare enum StrictMode {
|
|
6
|
-
ON = "1",
|
|
7
|
-
OFF = "0"
|
|
8
|
-
}
|
|
9
|
-
export declare function getConcatenatedName(firstName: unknown, lastName: unknown, name: unknown): unknown;
|
|
10
|
-
export declare function getApiServerUrl(apiRegion: string | undefined): "https://api-eu.mixpanel.com" | "https://api.mixpanel.com";
|
|
11
|
-
export declare function getBrowser(userAgent: string): string;
|
|
12
|
-
export declare function getBrowserVersion(userAgent: string): string | undefined;
|
|
13
|
-
export declare function cheapGuid(maxlen?: number): string;
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cheapGuid = exports.getBrowserVersion = exports.getBrowser = exports.getApiServerUrl = exports.getConcatenatedName = exports.StrictMode = exports.ApiRegions = void 0;
|
|
4
|
-
var ApiRegions;
|
|
5
|
-
(function (ApiRegions) {
|
|
6
|
-
ApiRegions["US"] = "US \uD83C\uDDFA\uD83C\uDDF8";
|
|
7
|
-
ApiRegions["EU"] = "EU \uD83C\uDDEA\uD83C\uDDFA";
|
|
8
|
-
})(ApiRegions = exports.ApiRegions || (exports.ApiRegions = {}));
|
|
9
|
-
var StrictMode;
|
|
10
|
-
(function (StrictMode) {
|
|
11
|
-
StrictMode["ON"] = "1";
|
|
12
|
-
StrictMode["OFF"] = "0";
|
|
13
|
-
})(StrictMode = exports.StrictMode || (exports.StrictMode = {}));
|
|
14
|
-
function getConcatenatedName(firstName, lastName, name) {
|
|
15
|
-
return name ?? (firstName && lastName ? `${firstName} ${lastName}` : undefined);
|
|
16
|
-
}
|
|
17
|
-
exports.getConcatenatedName = getConcatenatedName;
|
|
18
|
-
function getApiServerUrl(apiRegion) {
|
|
19
|
-
if (apiRegion == ApiRegions.EU) {
|
|
20
|
-
return 'https://api-eu.mixpanel.com';
|
|
21
|
-
}
|
|
22
|
-
return 'https://api.mixpanel.com';
|
|
23
|
-
}
|
|
24
|
-
exports.getApiServerUrl = getApiServerUrl;
|
|
25
|
-
function getBrowser(userAgent) {
|
|
26
|
-
if (userAgent.includes(' OPR/')) {
|
|
27
|
-
if (userAgent.includes('Mini')) {
|
|
28
|
-
return 'Opera Mini';
|
|
29
|
-
}
|
|
30
|
-
return 'Opera';
|
|
31
|
-
}
|
|
32
|
-
else if (/(BlackBerry|PlayBook|BB10)/i.test(userAgent)) {
|
|
33
|
-
return 'BlackBerry';
|
|
34
|
-
}
|
|
35
|
-
else if (userAgent.includes('IEMobile') || userAgent.includes('WPDesktop')) {
|
|
36
|
-
return 'Internet Explorer Mobile';
|
|
37
|
-
}
|
|
38
|
-
else if (userAgent.includes('SamsungBrowser/')) {
|
|
39
|
-
return 'Samsung Internet';
|
|
40
|
-
}
|
|
41
|
-
else if (userAgent.includes('Edge') || userAgent.includes('Edg/')) {
|
|
42
|
-
return 'Microsoft Edge';
|
|
43
|
-
}
|
|
44
|
-
else if (userAgent.includes('FBIOS')) {
|
|
45
|
-
return 'Facebook Mobile';
|
|
46
|
-
}
|
|
47
|
-
else if (userAgent.includes('Chrome')) {
|
|
48
|
-
return 'Chrome';
|
|
49
|
-
}
|
|
50
|
-
else if (userAgent.includes('CriOS')) {
|
|
51
|
-
return 'Chrome iOS';
|
|
52
|
-
}
|
|
53
|
-
else if (userAgent.includes('UCWEB') || userAgent.includes('UCBrowser')) {
|
|
54
|
-
return 'UC Browser';
|
|
55
|
-
}
|
|
56
|
-
else if (userAgent.includes('FxiOS')) {
|
|
57
|
-
return 'Firefox iOS';
|
|
58
|
-
}
|
|
59
|
-
else if (userAgent.includes('Safari')) {
|
|
60
|
-
return 'Safari';
|
|
61
|
-
}
|
|
62
|
-
else if (userAgent.includes('Android')) {
|
|
63
|
-
return 'Android Mobile';
|
|
64
|
-
}
|
|
65
|
-
else if (userAgent.includes('Konqueror')) {
|
|
66
|
-
return 'Konqueror';
|
|
67
|
-
}
|
|
68
|
-
else if (userAgent.includes('Firefox')) {
|
|
69
|
-
return 'Firefox';
|
|
70
|
-
}
|
|
71
|
-
else if (userAgent.includes('MSIE') || userAgent.includes('Trident/')) {
|
|
72
|
-
return 'Internet Explorer';
|
|
73
|
-
}
|
|
74
|
-
else if (userAgent.includes('Gecko')) {
|
|
75
|
-
return 'Mozilla';
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
return '';
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
exports.getBrowser = getBrowser;
|
|
82
|
-
function getBrowserVersion(userAgent) {
|
|
83
|
-
const browser = getBrowser(userAgent);
|
|
84
|
-
const versionRegexs = {
|
|
85
|
-
'Internet Explorer Mobile': /rv:(\d+(\.\d+)?)/,
|
|
86
|
-
'Microsoft Edge': /Edge?\/(\d+(\.\d+)?)/,
|
|
87
|
-
Chrome: /Chrome\/(\d+(\.\d+)?)/,
|
|
88
|
-
'Chrome iOS': /CriOS\/(\d+(\.\d+)?)/,
|
|
89
|
-
'UC Browser': /(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/,
|
|
90
|
-
Safari: /Version\/(\d+(\.\d+)?)/,
|
|
91
|
-
'Mobile Safari': /Version\/(\d+(\.\d+)?)/,
|
|
92
|
-
Opera: /(Opera|OPR)\/(\d+(\.\d+)?)/,
|
|
93
|
-
Firefox: /Firefox\/(\d+(\.\d+)?)/,
|
|
94
|
-
'Firefox iOS': /FxiOS\/(\d+(\.\d+)?)/,
|
|
95
|
-
Konqueror: /Konqueror:(\d+(\.\d+)?)/,
|
|
96
|
-
BlackBerry: /BlackBerry (\d+(\.\d+)?)/,
|
|
97
|
-
'Android Mobile': /android\s(\d+(\.\d+)?)/,
|
|
98
|
-
'Samsung Internet': /SamsungBrowser\/(\d+(\.\d+)?)/,
|
|
99
|
-
'Internet Explorer': /(rv:|MSIE )(\d+(\.\d+)?)/,
|
|
100
|
-
Mozilla: /rv:(\d+(\.\d+)?)/
|
|
101
|
-
};
|
|
102
|
-
const regex = versionRegexs[browser];
|
|
103
|
-
if (!regex)
|
|
104
|
-
return regex;
|
|
105
|
-
const matches = regex.exec(userAgent);
|
|
106
|
-
if (!matches) {
|
|
107
|
-
return undefined;
|
|
108
|
-
}
|
|
109
|
-
return matches[matches.length - 2];
|
|
110
|
-
}
|
|
111
|
-
exports.getBrowserVersion = getBrowserVersion;
|
|
112
|
-
function cheapGuid(maxlen) {
|
|
113
|
-
const guid = Math.random().toString(36).substring(2, 10) + Math.random().toString(36).substring(2, 10);
|
|
114
|
-
return maxlen ? guid.substring(0, maxlen) : guid;
|
|
115
|
-
}
|
|
116
|
-
exports.cheapGuid = cheapGuid;
|
|
117
|
-
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/destinations/mixpanel/utils.ts"],"names":[],"mappings":"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"}
|