@segment/action-destinations 3.492.2-async → 3.494.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.
- package/dist/destinations/display-video-360/index.js +2 -0
- package/dist/destinations/display-video-360/index.js.map +1 -1
- package/dist/destinations/display-video-360/shared.d.ts +6 -1
- package/dist/destinations/display-video-360/shared.js +41 -1
- package/dist/destinations/display-video-360/shared.js.map +1 -1
- package/dist/destinations/display-video-360/syncAudience/index.js +4 -4
- package/dist/destinations/display-video-360/syncAudience/index.js.map +1 -1
- package/dist/destinations/facebook-custom-audiences/constants.d.ts +1 -0
- package/dist/destinations/facebook-custom-audiences/constants.js +2 -1
- package/dist/destinations/facebook-custom-audiences/constants.js.map +1 -1
- package/dist/destinations/facebook-custom-audiences/sync/functions.d.ts +3 -2
- package/dist/destinations/facebook-custom-audiences/sync/functions.js +25 -1
- package/dist/destinations/facebook-custom-audiences/sync/functions.js.map +1 -1
- package/dist/destinations/facebook-custom-audiences/sync/index.js +8 -4
- package/dist/destinations/facebook-custom-audiences/sync/index.js.map +1 -1
- package/dist/destinations/facebook-custom-audiences/sync/types.d.ts +8 -0
- package/dist/destinations/iterable/updateUser/generated-types.d.ts +1 -0
- package/dist/destinations/iterable/updateUser/index.js +20 -2
- package/dist/destinations/iterable/updateUser/index.js.map +1 -1
- package/dist/destinations/klaviyo/config.d.ts +1 -0
- package/dist/destinations/klaviyo/config.js +2 -1
- package/dist/destinations/klaviyo/config.js.map +1 -1
- package/dist/destinations/klaviyo/functions.d.ts +1 -0
- package/dist/destinations/klaviyo/functions.js +28 -0
- package/dist/destinations/klaviyo/functions.js.map +1 -1
- package/dist/destinations/klaviyo/orderCompleted/index.js +1 -0
- package/dist/destinations/klaviyo/orderCompleted/index.js.map +1 -1
- package/dist/destinations/klaviyo/properties.js +4 -2
- package/dist/destinations/klaviyo/properties.js.map +1 -1
- package/dist/destinations/klaviyo/removeProfile/index.js +1 -0
- package/dist/destinations/klaviyo/removeProfile/index.js.map +1 -1
- package/dist/destinations/klaviyo/removeProfileFromList/index.js +1 -0
- package/dist/destinations/klaviyo/removeProfileFromList/index.js.map +1 -1
- package/dist/destinations/klaviyo/trackEvent/index.js +1 -0
- package/dist/destinations/klaviyo/trackEvent/index.js.map +1 -1
- package/dist/destinations/klaviyo/upsertProfile/index.js +1 -0
- package/dist/destinations/klaviyo/upsertProfile/index.js.map +1 -1
- package/dist/destinations/linkedin-audiences/api.d.ts +3 -2
- package/dist/destinations/linkedin-audiences/api.js +3 -2
- package/dist/destinations/linkedin-audiences/api.js.map +1 -1
- package/dist/destinations/linkedin-audiences/constants.d.ts +4 -0
- package/dist/destinations/linkedin-audiences/constants.js +7 -1
- package/dist/destinations/linkedin-audiences/constants.js.map +1 -1
- package/dist/destinations/linkedin-audiences/index.js +2 -2
- package/dist/destinations/linkedin-audiences/index.js.map +1 -1
- package/dist/destinations/linkedin-audiences/updateAudience/fields.js +8 -1
- package/dist/destinations/linkedin-audiences/updateAudience/fields.js.map +1 -1
- package/dist/destinations/linkedin-audiences/updateAudience/functions.d.ts +2 -2
- package/dist/destinations/linkedin-audiences/updateAudience/functions.js +2 -2
- package/dist/destinations/linkedin-audiences/updateAudience/functions.js.map +1 -1
- package/dist/destinations/linkedin-audiences/updateAudience/index.js +4 -4
- package/dist/destinations/linkedin-audiences/updateAudience/index.js.map +1 -1
- package/dist/destinations/linkedin-audiences/versioning-info.d.ts +1 -0
- package/dist/destinations/linkedin-audiences/versioning-info.js +2 -1
- package/dist/destinations/linkedin-audiences/versioning-info.js.map +1 -1
- package/dist/destinations/linkedin-conversions/constants.d.ts +1 -1
- package/dist/destinations/linkedin-conversions/versioning-info.d.ts +1 -1
- package/dist/destinations/linkedin-conversions/versioning-info.js +1 -1
- package/dist/destinations/linkedin-conversions/versioning-info.js.map +1 -1
- package/dist/destinations/memora/upsertProfile/index.js +2 -2
- package/dist/destinations/memora/upsertProfile/index.js.map +1 -1
- package/dist/destinations/moengage/trackEvent/generated-types.d.ts +1 -0
- package/dist/destinations/moengage/trackEvent/index.js +15 -1
- package/dist/destinations/moengage/trackEvent/index.js.map +1 -1
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.js +53 -5
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.js.map +1 -1
- package/dist/destinations/salesforce-marketing-cloud/index.js +2 -6
- package/dist/destinations/salesforce-marketing-cloud/index.js.map +1 -1
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.d.ts +1 -11
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js +2 -3
- package/dist/destinations/salesforce-marketing-cloud/sfmc-operations.js.map +1 -1
- package/dist/destinations/tiktok-audiences/functions.d.ts +2 -0
- package/dist/destinations/tiktok-audiences/functions.js +8 -5
- package/dist/destinations/tiktok-audiences/functions.js.map +1 -1
- package/dist/destinations/tiktok-audiences/index.js +2 -0
- package/dist/destinations/tiktok-audiences/index.js.map +1 -1
- package/dist/destinations/tiktok-audiences/syncAudience/functions.d.ts +5 -4
- package/dist/destinations/tiktok-audiences/syncAudience/functions.js +45 -28
- package/dist/destinations/tiktok-audiences/syncAudience/functions.js.map +1 -1
- package/dist/destinations/tiktok-audiences/syncAudience/generated-types.d.ts +5 -5
- package/dist/destinations/tiktok-audiences/syncAudience/index.d.ts +1 -1
- package/dist/destinations/tiktok-audiences/syncAudience/index.js +8 -6
- package/dist/destinations/tiktok-audiences/syncAudience/index.js.map +1 -1
- package/dist/destinations/youappi-audiences/sync/functions.js +11 -0
- package/dist/destinations/youappi-audiences/sync/functions.js.map +1 -1
- package/dist/destinations/youappi-audiences/sync/generated-types.d.ts +2 -2
- package/dist/destinations/youappi-audiences/sync/index.js +2 -4
- package/dist/destinations/youappi-audiences/sync/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.async.test.d.ts +0 -1
- package/dist/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.async.test.js +0 -603
- package/dist/destinations/salesforce-marketing-cloud/_tests_/asyncDataExtension.async.test.js.map +0 -1
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/fields.d.ts +0 -128
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/fields.js +0 -57
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/fields.js.map +0 -1
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.async.d.ts +0 -5
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.async.js +0 -125
- package/dist/destinations/salesforce-marketing-cloud/asyncDataExtension/index.async.js.map +0 -1
- package/dist/destinations/webhook/ssrf-utils.d.ts +0 -1
- package/dist/destinations/webhook/ssrf-utils.js +0 -75
- package/dist/destinations/webhook/ssrf-utils.js.map +0 -1
- package/dist/destinations/webhook-extensible/ssrf-utils.d.ts +0 -1
- package/dist/destinations/webhook-extensible/ssrf-utils.js +0 -75
- package/dist/destinations/webhook-extensible/ssrf-utils.js.map +0 -1
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { RequestClient, DynamicFieldResponse } from '@segment/actions-core';
|
|
2
|
-
import type { Settings } from '../generated-types';
|
|
3
|
-
import type { Payload } from './generated-types';
|
|
4
|
-
export declare const fields: {
|
|
5
|
-
keys: {
|
|
6
|
-
required: boolean;
|
|
7
|
-
dynamic: boolean;
|
|
8
|
-
placeholder?: string;
|
|
9
|
-
defaultObjectUI?: "keyvalue" | "object" | "keyvalue:only" | "object:only" | "arrayeditor";
|
|
10
|
-
unsafe_hidden?: boolean;
|
|
11
|
-
readOnly?: boolean;
|
|
12
|
-
depends_on?: import("@segment/actions-core/src/destination-kit/types").DependsOnConditions;
|
|
13
|
-
category?: "data" | "identifier" | "internal" | "config" | "sync" | "hashedPII";
|
|
14
|
-
displayMode?: "expanded" | "normal" | "collapsed";
|
|
15
|
-
disabledInputMethods?: ("function" | "literal" | "variable" | "enrichment" | "freeform")[];
|
|
16
|
-
minimum?: number;
|
|
17
|
-
maximum?: number;
|
|
18
|
-
label: string;
|
|
19
|
-
description: string;
|
|
20
|
-
type: import("@segment/actions-core/src/destination-kit/types").FieldTypeName;
|
|
21
|
-
allowNull?: boolean;
|
|
22
|
-
multiple?: boolean;
|
|
23
|
-
additionalProperties?: boolean;
|
|
24
|
-
default?: import("@segment/actions-core/src/destination-kit/types").FieldValue;
|
|
25
|
-
choices?: Array<string> | Array<{
|
|
26
|
-
value: string | number;
|
|
27
|
-
label: string;
|
|
28
|
-
}>;
|
|
29
|
-
properties?: Record<string, import("@segment/actions-core/src/destination-kit/types").Optional<import("@segment/actions-core").InputField, "description">>;
|
|
30
|
-
format?: "date" | "time" | "date-time" | "uri" | "uri-reference" | "uri-template" | "email" | "hostname" | "ipv4" | "ipv6" | "regex" | "uuid" | "password" | "text";
|
|
31
|
-
};
|
|
32
|
-
values: {
|
|
33
|
-
dynamic: boolean;
|
|
34
|
-
placeholder?: string;
|
|
35
|
-
defaultObjectUI?: "keyvalue" | "object" | "keyvalue:only" | "object:only" | "arrayeditor";
|
|
36
|
-
unsafe_hidden?: boolean;
|
|
37
|
-
readOnly?: boolean;
|
|
38
|
-
depends_on?: import("@segment/actions-core/src/destination-kit/types").DependsOnConditions;
|
|
39
|
-
category?: "data" | "identifier" | "internal" | "config" | "sync" | "hashedPII";
|
|
40
|
-
displayMode?: "expanded" | "normal" | "collapsed";
|
|
41
|
-
disabledInputMethods?: ("function" | "literal" | "variable" | "enrichment" | "freeform")[];
|
|
42
|
-
minimum?: number;
|
|
43
|
-
maximum?: number;
|
|
44
|
-
label: string;
|
|
45
|
-
description: string;
|
|
46
|
-
type: import("@segment/actions-core/src/destination-kit/types").FieldTypeName;
|
|
47
|
-
allowNull?: boolean;
|
|
48
|
-
multiple?: boolean;
|
|
49
|
-
additionalProperties?: boolean;
|
|
50
|
-
default?: import("@segment/actions-core/src/destination-kit/types").FieldValue;
|
|
51
|
-
choices?: Array<string> | Array<{
|
|
52
|
-
value: string | number;
|
|
53
|
-
label: string;
|
|
54
|
-
}>;
|
|
55
|
-
required?: boolean | import("@segment/actions-core/src/destination-kit/types").DependsOnConditions;
|
|
56
|
-
properties?: Record<string, import("@segment/actions-core/src/destination-kit/types").Optional<import("@segment/actions-core").InputField, "description">>;
|
|
57
|
-
format?: "date" | "time" | "date-time" | "uri" | "uri-reference" | "uri-template" | "email" | "hostname" | "ipv4" | "ipv6" | "regex" | "uuid" | "password" | "text";
|
|
58
|
-
};
|
|
59
|
-
enable_batching: {
|
|
60
|
-
label: string;
|
|
61
|
-
description: string;
|
|
62
|
-
type: "boolean";
|
|
63
|
-
default: boolean;
|
|
64
|
-
unsafe_hidden: boolean;
|
|
65
|
-
};
|
|
66
|
-
batch_bytes: {
|
|
67
|
-
label: string;
|
|
68
|
-
description: string;
|
|
69
|
-
type: "number";
|
|
70
|
-
required: boolean;
|
|
71
|
-
default: number;
|
|
72
|
-
unsafe_hidden: boolean;
|
|
73
|
-
};
|
|
74
|
-
batch_size: {
|
|
75
|
-
label: string;
|
|
76
|
-
description: string;
|
|
77
|
-
type: "number";
|
|
78
|
-
required: boolean;
|
|
79
|
-
minimum: number;
|
|
80
|
-
default: number;
|
|
81
|
-
maximum: number;
|
|
82
|
-
unsafe_hidden: boolean;
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
export declare const dynamicFields: {
|
|
86
|
-
keys: {
|
|
87
|
-
__keys__: (request: RequestClient, { settings, payload }: {
|
|
88
|
-
settings: Settings;
|
|
89
|
-
payload: Payload;
|
|
90
|
-
}) => Promise<DynamicFieldResponse>;
|
|
91
|
-
};
|
|
92
|
-
values: {
|
|
93
|
-
__keys__: (request: RequestClient, { settings, payload }: {
|
|
94
|
-
settings: Settings;
|
|
95
|
-
payload: Payload;
|
|
96
|
-
}) => Promise<DynamicFieldResponse>;
|
|
97
|
-
};
|
|
98
|
-
};
|
|
99
|
-
export declare const hooks: {
|
|
100
|
-
retlOnMappingSave: {
|
|
101
|
-
label: string;
|
|
102
|
-
description: string;
|
|
103
|
-
inputFields?: Record<string, Omit<import("@segment/actions-core").InputField, "dynamic"> & {
|
|
104
|
-
dynamic?: import("@segment/actions-core").RequestFn<any, any, DynamicFieldResponse, any, any, import("@segment/actions-core").AudienceMembership | import("@segment/actions-core").AudienceMembership[]> | undefined;
|
|
105
|
-
}> | undefined;
|
|
106
|
-
outputTypes?: Record<string, {
|
|
107
|
-
label: string;
|
|
108
|
-
description: string;
|
|
109
|
-
type: string;
|
|
110
|
-
required: boolean;
|
|
111
|
-
}>;
|
|
112
|
-
performHook: import("@segment/actions-core").RequestFn<any, any, import("@segment/actions-core").ActionHookResponse<any>, any, any, import("@segment/actions-core").AudienceMembership | import("@segment/actions-core").AudienceMembership[]>;
|
|
113
|
-
};
|
|
114
|
-
onMappingSave: {
|
|
115
|
-
label: string;
|
|
116
|
-
description: string;
|
|
117
|
-
inputFields?: Record<string, Omit<import("@segment/actions-core").InputField, "dynamic"> & {
|
|
118
|
-
dynamic?: import("@segment/actions-core").RequestFn<any, any, DynamicFieldResponse, any, any, import("@segment/actions-core").AudienceMembership | import("@segment/actions-core").AudienceMembership[]> | undefined;
|
|
119
|
-
}> | undefined;
|
|
120
|
-
outputTypes?: Record<string, {
|
|
121
|
-
label: string;
|
|
122
|
-
description: string;
|
|
123
|
-
type: string;
|
|
124
|
-
required: boolean;
|
|
125
|
-
}>;
|
|
126
|
-
performHook: import("@segment/actions-core").RequestFn<any, any, import("@segment/actions-core").ActionHookResponse<any>, any, any, import("@segment/actions-core").AudienceMembership | import("@segment/actions-core").AudienceMembership[]>;
|
|
127
|
-
};
|
|
128
|
-
};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hooks = exports.dynamicFields = exports.fields = void 0;
|
|
4
|
-
const sfmc_properties_1 = require("../sfmc-properties");
|
|
5
|
-
const sfmc_operations_1 = require("../sfmc-operations");
|
|
6
|
-
exports.fields = {
|
|
7
|
-
keys: { ...sfmc_properties_1.keys, required: true, dynamic: true },
|
|
8
|
-
values: { ...sfmc_properties_1.values_dataExtensionFields, dynamic: true },
|
|
9
|
-
enable_batching: {
|
|
10
|
-
label: 'Batch data to SFMC',
|
|
11
|
-
description: 'If true, data is batched before sending to the SFMC Data Extension.',
|
|
12
|
-
type: 'boolean',
|
|
13
|
-
default: true,
|
|
14
|
-
unsafe_hidden: true
|
|
15
|
-
},
|
|
16
|
-
batch_bytes: {
|
|
17
|
-
label: 'Batch Bytes',
|
|
18
|
-
description: 'The maximum size of a batch in bytes.',
|
|
19
|
-
type: 'number',
|
|
20
|
-
required: false,
|
|
21
|
-
default: 5000000,
|
|
22
|
-
unsafe_hidden: true
|
|
23
|
-
},
|
|
24
|
-
batch_size: {
|
|
25
|
-
label: 'Batch Size',
|
|
26
|
-
description: 'Maximum number of events to include in each batch. Actual batch sizes may be lower.',
|
|
27
|
-
type: 'number',
|
|
28
|
-
required: false,
|
|
29
|
-
minimum: 1000,
|
|
30
|
-
default: 28000,
|
|
31
|
-
maximum: 30000,
|
|
32
|
-
unsafe_hidden: true
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
exports.dynamicFields = {
|
|
36
|
-
keys: {
|
|
37
|
-
__keys__: async (request, { settings, payload }) => {
|
|
38
|
-
const dataExtensionId = payload.onMappingSave?.outputs?.id || payload.retlOnMappingSave?.outputs?.id || '';
|
|
39
|
-
return await (0, sfmc_operations_1.getDataExtensionFields)(request, settings.subdomain, settings, dataExtensionId, true);
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
values: {
|
|
43
|
-
__keys__: async (request, { settings, payload }) => {
|
|
44
|
-
const dataExtensionId = payload.onMappingSave?.outputs?.id || payload.retlOnMappingSave?.outputs?.id || '';
|
|
45
|
-
return await (0, sfmc_operations_1.getDataExtensionFields)(request, settings.subdomain, settings, dataExtensionId, false);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
exports.hooks = {
|
|
50
|
-
retlOnMappingSave: {
|
|
51
|
-
...sfmc_properties_1.dataExtensionHook
|
|
52
|
-
},
|
|
53
|
-
onMappingSave: {
|
|
54
|
-
...sfmc_properties_1.dataExtensionHook
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=fields.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/asyncDataExtension/fields.ts"],"names":[],"mappings":";;;AAGA,wDAAwF;AACxF,wDAA2D;AAE9C,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,EAAE,GAAG,sBAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IAChD,MAAM,EAAE,EAAE,GAAG,4CAA0B,EAAE,OAAO,EAAE,IAAI,EAAE;IACxD,eAAe,EAAE;QACf,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE,qEAAqE;QAClF,IAAI,EAAE,SAAkB;QACxB,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,IAAI;KACpB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE,QAAiB;QACvB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,OAAO;QAChB,aAAa,EAAE,IAAI;KACpB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,qFAAqF;QAClG,IAAI,EAAE,QAAiB;QACvB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,aAAa,EAAE,IAAI;KACpB;CACF,CAAA;AAEY,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE;QACJ,QAAQ,EAAE,KAAK,EACb,OAAsB,EACtB,EAAE,QAAQ,EAAE,OAAO,EAA4C,EAChC,EAAE;YACjC,MAAM,eAAe,GAClB,OAAe,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,IAAK,OAAe,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAA;YACtG,OAAO,MAAM,IAAA,wCAAsB,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA;QACnG,CAAC;KACF;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,KAAK,EACb,OAAsB,EACtB,EAAE,QAAQ,EAAE,OAAO,EAA4C,EAChC,EAAE;YACjC,MAAM,eAAe,GAClB,OAAe,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,IAAK,OAAe,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAA;YACtG,OAAO,MAAM,IAAA,wCAAsB,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;QACpG,CAAC;KACF;CACF,CAAA;AAEY,QAAA,KAAK,GAAG;IACnB,iBAAiB,EAAE;QACjB,GAAG,mCAAiB;KACrB;IACD,aAAa,EAAE;QACb,GAAG,mCAAiB;KACrB;CACF,CAAA"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const actions_core_1 = require("@segment/actions-core");
|
|
4
|
-
const sfmc_operations_1 = require("../sfmc-operations");
|
|
5
|
-
const fields_1 = require("./fields");
|
|
6
|
-
const asyncAction = {
|
|
7
|
-
title: 'Send Event asynchronously to Data Extension',
|
|
8
|
-
description: `Upsert event records asynchronously as rows into a data extension in Salesforce Marketing Cloud.`,
|
|
9
|
-
fields: fields_1.fields,
|
|
10
|
-
dynamicFields: fields_1.dynamicFields,
|
|
11
|
-
hooks: fields_1.hooks,
|
|
12
|
-
performBatch: async (request, { settings, payload, hookOutputs }) => {
|
|
13
|
-
const response = {
|
|
14
|
-
multiStatusResponse: new actions_core_1.MultiStatusResponse(),
|
|
15
|
-
jobId: undefined,
|
|
16
|
-
status: 200
|
|
17
|
-
};
|
|
18
|
-
const dataExtensionId = hookOutputs?.onMappingSave?.outputs?.id || hookOutputs?.retlOnMappingSave?.outputs?.id;
|
|
19
|
-
if (!dataExtensionId) {
|
|
20
|
-
throw new actions_core_1.IntegrationError('No Data Extension Connected', 'INVALID_CONFIGURATION', 400);
|
|
21
|
-
}
|
|
22
|
-
try {
|
|
23
|
-
const asyncUpsertResponse = await (0, sfmc_operations_1.asyncUpsertRowsV2)(request, settings.subdomain, payload, dataExtensionId, false);
|
|
24
|
-
response.jobId = asyncUpsertResponse.data.requestId;
|
|
25
|
-
response.status = asyncUpsertResponse.status;
|
|
26
|
-
if (asyncUpsertResponse.ok) {
|
|
27
|
-
for (let i = 0; i < payload.length; i++) {
|
|
28
|
-
response.multiStatusResponse.setSuccessResponseAtIndex(i, {
|
|
29
|
-
status: 200,
|
|
30
|
-
sent: JSON.stringify(payload[i]),
|
|
31
|
-
body: {}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
return response;
|
|
35
|
-
}
|
|
36
|
-
else if (asyncUpsertResponse.data.resultMessages && asyncUpsertResponse.data.resultMessages.length > 0) {
|
|
37
|
-
for (let i = 0; i < payload.length; i++) {
|
|
38
|
-
response.multiStatusResponse.setErrorResponseAtIndex(i, {
|
|
39
|
-
status: asyncUpsertResponse.status,
|
|
40
|
-
errormessage: asyncUpsertResponse?.data?.resultMessages[0]?.message ?? 'Unknown error',
|
|
41
|
-
sent: JSON.stringify(payload[i]),
|
|
42
|
-
body: {}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return response;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
throw new actions_core_1.IntegrationError(`SFMC API responded with ${JSON.stringify(asyncUpsertResponse.data)}.`, asyncUpsertResponse.statusText, asyncUpsertResponse.status);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
throw new actions_core_1.IntegrationError(`Failed to upsert rows asynchronously: ${error.message}`, 'BAD_REQUEST', 400);
|
|
53
|
-
}
|
|
54
|
-
return response;
|
|
55
|
-
},
|
|
56
|
-
performPoll: async (request, { settings, payload }) => {
|
|
57
|
-
const response = {
|
|
58
|
-
jobId: payload.jobId,
|
|
59
|
-
status: 200,
|
|
60
|
-
pollStatus: 'IN_PROGRESS'
|
|
61
|
-
};
|
|
62
|
-
try {
|
|
63
|
-
const statusResponse = await request(`https://${settings.subdomain}.rest.marketingcloudapis.com/data/v1/async/${payload.jobId}/status`, {
|
|
64
|
-
method: 'GET'
|
|
65
|
-
});
|
|
66
|
-
response.status = statusResponse.status;
|
|
67
|
-
if (!statusResponse.data.status) {
|
|
68
|
-
response.pollStatus = 'FAILED';
|
|
69
|
-
return response;
|
|
70
|
-
}
|
|
71
|
-
if (statusResponse.data.status.requestStatus === 'Pending' ||
|
|
72
|
-
statusResponse.data.status.requestStatus === 'Executing') {
|
|
73
|
-
response.pollStatus = 'IN_PROGRESS';
|
|
74
|
-
return response;
|
|
75
|
-
}
|
|
76
|
-
if (statusResponse.data.status.requestStatus === 'Error') {
|
|
77
|
-
response.pollStatus = 'FAILED';
|
|
78
|
-
return response;
|
|
79
|
-
}
|
|
80
|
-
if (statusResponse.data.status.requestStatus === 'Complete' && statusResponse.data.status.resultStatus === 'OK') {
|
|
81
|
-
response.pollStatus = 'COMPLETED';
|
|
82
|
-
return response;
|
|
83
|
-
}
|
|
84
|
-
response.pollStatus = 'COMPLETED';
|
|
85
|
-
response.multiStatusResponse = new actions_core_1.MultiStatusResponse();
|
|
86
|
-
const resultsResponse = await request(`https://${settings.subdomain}.rest.marketingcloudapis.com/data/v1/async/${payload.jobId}/results`, {
|
|
87
|
-
method: 'GET'
|
|
88
|
-
});
|
|
89
|
-
for (let i = 0; i < resultsResponse.data.items.length; i++) {
|
|
90
|
-
if (resultsResponse.data.items[i].status === 'OK') {
|
|
91
|
-
response.multiStatusResponse.setSuccessResponseAtIndex(i, {
|
|
92
|
-
status: 200,
|
|
93
|
-
sent: {},
|
|
94
|
-
body: 'OK'
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
response.multiStatusResponse.setErrorResponseAtIndex(i, {
|
|
99
|
-
status: 400,
|
|
100
|
-
errormessage: resultsResponse.data.items[i].message,
|
|
101
|
-
body: {}
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return response;
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
if (!(error instanceof actions_core_1.HTTPError)) {
|
|
109
|
-
response.status = 400;
|
|
110
|
-
response.pollStatus = 'FAILED';
|
|
111
|
-
return response;
|
|
112
|
-
}
|
|
113
|
-
if (error.response.status === 429 || error.response.status === 500) {
|
|
114
|
-
response.status = error.response.status;
|
|
115
|
-
response.pollStatus = 'IN_PROGRESS';
|
|
116
|
-
return response;
|
|
117
|
-
}
|
|
118
|
-
response.status = error.response.status;
|
|
119
|
-
response.pollStatus = 'FAILED';
|
|
120
|
-
return response;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
exports.default = asyncAction;
|
|
125
|
-
//# sourceMappingURL=index.async.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.async.js","sourceRoot":"","sources":["../../../../src/destinations/salesforce-marketing-cloud/asyncDataExtension/index.async.ts"],"names":[],"mappings":";;AAAA,wDAO8B;AAC9B,wDAAsD;AACtD,qCAAuD;AAuCvD,MAAM,WAAW,GAA6C;IAC5D,KAAK,EAAE,6CAA6C;IACpD,WAAW,EAAE,kGAAkG;IAC/G,MAAM,EAAN,eAAM;IACN,aAAa,EAAb,sBAAa;IACb,KAAK,EAAL,cAAK;IAEL,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE;QAClE,MAAM,QAAQ,GAAuB;YACnC,mBAAmB,EAAE,IAAI,kCAAmB,EAAE;YAC9C,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,GAAG;SACZ,CAAA;QAED,MAAM,eAAe,GACnB,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,IAAI,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAA;QAExF,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,+BAAgB,CAAC,6BAA6B,EAAE,uBAAuB,EAAE,GAAG,CAAC,CAAA;QACzF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,MAAM,IAAA,mCAAiB,EAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;YAGjH,QAAQ,CAAC,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAA;YACnD,QAAQ,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAA;YAG5C,IAAI,mBAAmB,CAAC,EAAE,EAAE,CAAC;gBAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,QAAQ,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,EAAE;wBACxD,MAAM,EAAE,GAAG;wBACX,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAChC,IAAI,EAAE,EAAE;qBACT,CAAC,CAAA;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAA;YACjB,CAAC;iBAEI,IAAI,mBAAmB,CAAC,IAAI,CAAC,cAAc,IAAI,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACxC,QAAQ,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,EAAE;wBACtD,MAAM,EAAE,mBAAmB,CAAC,MAAM;wBAClC,YAAY,EAAE,mBAAmB,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,eAAe;wBACtF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;wBAChC,IAAI,EAAE,EAAE;qBACT,CAAC,CAAA;gBACJ,CAAC;gBAED,OAAO,QAAQ,CAAA;YACjB,CAAC;iBAAM,CAAC;gBAEN,MAAM,IAAI,+BAAgB,CACxB,2BAA2B,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,EACtE,mBAAmB,CAAC,UAAU,EAC9B,mBAAmB,CAAC,MAAM,CAC3B,CAAA;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,MAAM,IAAI,+BAAgB,CAAC,yCAAyC,KAAK,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,CAAA;QAC1G,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACpD,MAAM,QAAQ,GAAiB;YAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,GAAG;YACX,UAAU,EAAE,aAAa;SAC1B,CAAA;QAED,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,OAAO,CAClC,WAAW,QAAQ,CAAC,SAAS,8CAA8C,OAAO,CAAC,KAAK,SAAS,EACjG;gBACE,MAAM,EAAE,KAAK;aACd,CACF,CAAA;YAGD,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAA;YAGvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAA;gBAC9B,OAAO,QAAQ,CAAA;YACjB,CAAC;YAGD,IACE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS;gBACtD,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,WAAW,EACxD,CAAC;gBACD,QAAQ,CAAC,UAAU,GAAG,aAAa,CAAA;gBACnC,OAAO,QAAQ,CAAA;YACjB,CAAC;YAGD,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBACzD,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAA;gBAC9B,OAAO,QAAQ,CAAA;YACjB,CAAC;YAGD,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,UAAU,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;gBAChH,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAA;gBACjC,OAAO,QAAQ,CAAA;YACjB,CAAC;YAGD,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAA;YACjC,QAAQ,CAAC,mBAAmB,GAAG,IAAI,kCAAmB,EAAE,CAAA;YAExD,MAAM,eAAe,GAAG,MAAM,OAAO,CACnC,WAAW,QAAQ,CAAC,SAAS,8CAA8C,OAAO,CAAC,KAAK,UAAU,EAClG;gBACE,MAAM,EAAE,KAAK;aACd,CACF,CAAA;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAE3D,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClD,QAAQ,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,CAAC,EAAE;wBACxD,MAAM,EAAE,GAAG;wBACX,IAAI,EAAE,EAAE;wBACR,IAAI,EAAE,IAAI;qBACX,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC,EAAE;wBACtD,MAAM,EAAE,GAAG;wBACX,YAAY,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;wBACnD,IAAI,EAAE,EAAE;qBACT,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAA;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,KAAK,YAAY,wBAAS,CAAC,EAAE,CAAC;gBAClC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAA;gBACrB,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAA;gBAC9B,OAAO,QAAQ,CAAA;YACjB,CAAC;YAGD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnE,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAA;gBACvC,QAAQ,CAAC,UAAU,GAAG,aAAa,CAAA;gBACnC,OAAO,QAAQ,CAAA;YACjB,CAAC;YAGD,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAA;YACvC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAA;YAC9B,OAAO,QAAQ,CAAA;QACjB,CAAC;IACH,CAAC;CACF,CAAA;AAED,kBAAe,WAAW,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function isRestrictedUrl(rawUrl: string): boolean;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isRestrictedUrl = isRestrictedUrl;
|
|
4
|
-
const net_1 = require("net");
|
|
5
|
-
const url_1 = require("url");
|
|
6
|
-
const RESTRICTED_CIDRS_V4 = [
|
|
7
|
-
[0x00000000, 0xff000000, '0.0.0.0/8'],
|
|
8
|
-
[0x0a000000, 0xff000000, '10.0.0.0/8'],
|
|
9
|
-
[0x64400000, 0xffc00000, '100.64.0.0/10'],
|
|
10
|
-
[0x7f000000, 0xff000000, '127.0.0.0/8'],
|
|
11
|
-
[0xa9fe0000, 0xffff0000, '169.254.0.0/16'],
|
|
12
|
-
[0xac100000, 0xfff00000, '172.16.0.0/12'],
|
|
13
|
-
[0xc0000000, 0xffffff00, '192.0.0.0/24'],
|
|
14
|
-
[0xc0000200, 0xffffff00, '192.0.2.0/24'],
|
|
15
|
-
[0xc0a80000, 0xffff0000, '192.168.0.0/16'],
|
|
16
|
-
[0xc6336400, 0xffffff00, '198.51.100.0/24'],
|
|
17
|
-
[0xcb007100, 0xffffff00, '203.0.113.0/24'],
|
|
18
|
-
[0xe0000000, 0xf0000000, '224.0.0.0/4'],
|
|
19
|
-
[0xf0000000, 0xf0000000, '240.0.0.0/4']
|
|
20
|
-
];
|
|
21
|
-
function ipv4ToInt(ip) {
|
|
22
|
-
return ip.split('.').reduce((acc, octet) => (acc << 8) | parseInt(octet, 10), 0) >>> 0;
|
|
23
|
-
}
|
|
24
|
-
function intToIpv4(n) {
|
|
25
|
-
return [(n >>> 24) & 0xff, (n >>> 16) & 0xff, (n >>> 8) & 0xff, n & 0xff].join('.');
|
|
26
|
-
}
|
|
27
|
-
function isRestrictedIPv4(ip) {
|
|
28
|
-
const int = ipv4ToInt(ip);
|
|
29
|
-
return RESTRICTED_CIDRS_V4.some(([network, mask]) => (int & mask) === network);
|
|
30
|
-
}
|
|
31
|
-
function isRestrictedIPv6(ip) {
|
|
32
|
-
const lower = ip.toLowerCase();
|
|
33
|
-
if (lower === '::1' || lower === '::')
|
|
34
|
-
return true;
|
|
35
|
-
if (lower.startsWith('fe8') || lower.startsWith('fe9') || lower.startsWith('fea') || lower.startsWith('feb')) {
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
if (lower.startsWith('fc') || lower.startsWith('fd'))
|
|
39
|
-
return true;
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
function normalizeHostname(hostname) {
|
|
43
|
-
const asInt = parseInt(hostname, 10);
|
|
44
|
-
if (asInt.toString() === hostname) {
|
|
45
|
-
const ip = intToIpv4(asInt);
|
|
46
|
-
return { ip, blocked: false };
|
|
47
|
-
}
|
|
48
|
-
if (/^[\d.x]+$/i.test(hostname) && !(0, net_1.isIPv4)(hostname)) {
|
|
49
|
-
return { ip: null, blocked: true };
|
|
50
|
-
}
|
|
51
|
-
return { ip: hostname, blocked: false };
|
|
52
|
-
}
|
|
53
|
-
function isRestrictedUrl(rawUrl) {
|
|
54
|
-
let parsed;
|
|
55
|
-
try {
|
|
56
|
-
parsed = new url_1.URL(rawUrl);
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:')
|
|
62
|
-
return true;
|
|
63
|
-
const hostname = parsed.hostname.replace(/^\[/, '').replace(/\]$/, '');
|
|
64
|
-
const { ip, blocked } = normalizeHostname(hostname);
|
|
65
|
-
if (blocked)
|
|
66
|
-
return true;
|
|
67
|
-
if (ip === null)
|
|
68
|
-
return true;
|
|
69
|
-
if ((0, net_1.isIPv4)(ip))
|
|
70
|
-
return isRestrictedIPv4(ip);
|
|
71
|
-
if ((0, net_1.isIPv6)(ip))
|
|
72
|
-
return isRestrictedIPv6(ip);
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=ssrf-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ssrf-utils.js","sourceRoot":"","sources":["../../../src/destinations/webhook/ssrf-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function isRestrictedUrl(rawUrl: string): boolean;
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isRestrictedUrl = isRestrictedUrl;
|
|
4
|
-
const net_1 = require("net");
|
|
5
|
-
const url_1 = require("url");
|
|
6
|
-
const RESTRICTED_CIDRS_V4 = [
|
|
7
|
-
[0x00000000, 0xff000000, '0.0.0.0/8'],
|
|
8
|
-
[0x0a000000, 0xff000000, '10.0.0.0/8'],
|
|
9
|
-
[0x64400000, 0xffc00000, '100.64.0.0/10'],
|
|
10
|
-
[0x7f000000, 0xff000000, '127.0.0.0/8'],
|
|
11
|
-
[0xa9fe0000, 0xffff0000, '169.254.0.0/16'],
|
|
12
|
-
[0xac100000, 0xfff00000, '172.16.0.0/12'],
|
|
13
|
-
[0xc0000000, 0xffffff00, '192.0.0.0/24'],
|
|
14
|
-
[0xc0000200, 0xffffff00, '192.0.2.0/24'],
|
|
15
|
-
[0xc0a80000, 0xffff0000, '192.168.0.0/16'],
|
|
16
|
-
[0xc6336400, 0xffffff00, '198.51.100.0/24'],
|
|
17
|
-
[0xcb007100, 0xffffff00, '203.0.113.0/24'],
|
|
18
|
-
[0xe0000000, 0xf0000000, '224.0.0.0/4'],
|
|
19
|
-
[0xf0000000, 0xf0000000, '240.0.0.0/4']
|
|
20
|
-
];
|
|
21
|
-
function ipv4ToInt(ip) {
|
|
22
|
-
return ip.split('.').reduce((acc, octet) => (acc << 8) | parseInt(octet, 10), 0) >>> 0;
|
|
23
|
-
}
|
|
24
|
-
function intToIpv4(n) {
|
|
25
|
-
return [(n >>> 24) & 0xff, (n >>> 16) & 0xff, (n >>> 8) & 0xff, n & 0xff].join('.');
|
|
26
|
-
}
|
|
27
|
-
function isRestrictedIPv4(ip) {
|
|
28
|
-
const int = ipv4ToInt(ip);
|
|
29
|
-
return RESTRICTED_CIDRS_V4.some(([network, mask]) => (int & mask) === network);
|
|
30
|
-
}
|
|
31
|
-
function isRestrictedIPv6(ip) {
|
|
32
|
-
const lower = ip.toLowerCase();
|
|
33
|
-
if (lower === '::1' || lower === '::')
|
|
34
|
-
return true;
|
|
35
|
-
if (lower.startsWith('fe8') || lower.startsWith('fe9') || lower.startsWith('fea') || lower.startsWith('feb')) {
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
if (lower.startsWith('fc') || lower.startsWith('fd'))
|
|
39
|
-
return true;
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
function normalizeHostname(hostname) {
|
|
43
|
-
const asInt = parseInt(hostname, 10);
|
|
44
|
-
if (asInt.toString() === hostname) {
|
|
45
|
-
const ip = intToIpv4(asInt);
|
|
46
|
-
return { ip, blocked: false };
|
|
47
|
-
}
|
|
48
|
-
if (/^[\d.x]+$/i.test(hostname) && !(0, net_1.isIPv4)(hostname)) {
|
|
49
|
-
return { ip: null, blocked: true };
|
|
50
|
-
}
|
|
51
|
-
return { ip: hostname, blocked: false };
|
|
52
|
-
}
|
|
53
|
-
function isRestrictedUrl(rawUrl) {
|
|
54
|
-
let parsed;
|
|
55
|
-
try {
|
|
56
|
-
parsed = new url_1.URL(rawUrl);
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:')
|
|
62
|
-
return true;
|
|
63
|
-
const hostname = parsed.hostname.replace(/^\[/, '').replace(/\]$/, '');
|
|
64
|
-
const { ip, blocked } = normalizeHostname(hostname);
|
|
65
|
-
if (blocked)
|
|
66
|
-
return true;
|
|
67
|
-
if (ip === null)
|
|
68
|
-
return true;
|
|
69
|
-
if ((0, net_1.isIPv4)(ip))
|
|
70
|
-
return isRestrictedIPv4(ip);
|
|
71
|
-
if ((0, net_1.isIPv6)(ip))
|
|
72
|
-
return isRestrictedIPv6(ip);
|
|
73
|
-
return false;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=ssrf-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ssrf-utils.js","sourceRoot":"","sources":["../../../src/destinations/webhook-extensible/ssrf-utils.ts"],"names":[],"mappings":"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"}
|