@rudderstack/integrations-lib 0.2.13 → 0.2.14
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/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -1
- package/build/sdks/index.d.ts +3 -0
- package/build/sdks/index.d.ts.map +1 -0
- package/build/sdks/index.js +9 -0
- package/build/sdks/sfmc/index.d.ts +47 -0
- package/build/sdks/sfmc/index.d.ts.map +1 -0
- package/build/sdks/sfmc/index.js +262 -0
- package/build/sdks/sfmc/index.test.d.ts +2 -0
- package/build/sdks/sfmc/index.test.d.ts.map +1 -0
- package/build/sdks/sfmc/index.test.js +741 -0
- package/build/sdks/sfmc/type.d.ts +111 -0
- package/build/sdks/sfmc/type.d.ts.map +1 -0
- package/build/sdks/sfmc/type.js +3 -0
- package/build/sdks/sfmc/utils.d.ts +25 -0
- package/build/sdks/sfmc/utils.d.ts.map +1 -0
- package/build/sdks/sfmc/utils.js +93 -0
- package/build/sdks/sfmc/utils.test.d.ts +2 -0
- package/build/sdks/sfmc/utils.test.d.ts.map +1 -0
- package/build/sdks/sfmc/utils.test.js +32 -0
- package/package.json +3 -2
package/build/index.d.ts
CHANGED
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -28,4 +28,5 @@ __exportStar(require("./structured-logger"), exports);
|
|
|
28
28
|
__exportStar(require("./network"), exports);
|
|
29
29
|
__exportStar(require("./utils"), exports);
|
|
30
30
|
__exportStar(require("./constants"), exports);
|
|
31
|
-
|
|
31
|
+
__exportStar(require("./sdks"), exports);
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnRUFBdUM7QUFXOUIsbUJBWEYsbUJBQVEsQ0FXRTtBQVRqQiwwQ0FBd0I7QUFDeEIseUNBQXVCO0FBQ3ZCLDJDQUF5QjtBQUN6QiwyQ0FBeUI7QUFDekIsc0RBQW9DO0FBQ3BDLDRDQUEwQjtBQUMxQiwwQ0FBd0I7QUFDeEIsOENBQTRCO0FBQzVCLHlDQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzZXRWYWx1ZSBmcm9tICcuL2xpYi9zZXQtdmFsdWUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdGFncyc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2xvZ2dlcic7XG5leHBvcnQgKiBmcm9tICcuL3N0cnVjdHVyZWQtbG9nZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbmV0d29yayc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RhbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vc2Rrcyc7XG5leHBvcnQgeyBzZXRWYWx1ZSB9O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdks/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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.SFMC = void 0;
|
|
7
|
+
const sfmc_1 = __importDefault(require("./sfmc"));
|
|
8
|
+
exports.SFMC = sfmc_1.default;
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2Rrcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFakIsZUFGRixjQUFJLENBRUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU0ZNQyBmcm9tICcuL3NmbWMnO1xuXG5leHBvcnQgeyBTRk1DIH07XG4iXX0=
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { AuthObject, BusinessUnit, ContactAttributesResponse, CreateDataExtensionResponse, DataExtension, DataExtensionBody, DataFolder } from './type';
|
|
2
|
+
import { RestError, SoapError } from './utils';
|
|
3
|
+
export default class SFMC {
|
|
4
|
+
authObject: AuthObject;
|
|
5
|
+
constructor(authObject: any);
|
|
6
|
+
private static validateAuthObject;
|
|
7
|
+
/**
|
|
8
|
+
* This function returns the access token. If the token is expired, it will generate a new token.
|
|
9
|
+
* @returns {Promise<AuthObject>} It returns the access token or error
|
|
10
|
+
*/
|
|
11
|
+
getAccessToken(): Promise<AuthObject>;
|
|
12
|
+
/**
|
|
13
|
+
* This method fetches the fields of a data extension. It requires the data extension id. The method returns the fields of the data extension. If the data extension is not found, it returns a RestError.
|
|
14
|
+
* @param dataExtensionId Id of the data extension whose fields are to be fetched
|
|
15
|
+
* @returns
|
|
16
|
+
*/
|
|
17
|
+
getDestinationFields(dataExtensionId: string): Promise<DataExtensionBody | RestError>;
|
|
18
|
+
/**
|
|
19
|
+
* This method fetches the contact attributes. The method returns the contact attributes. If the contact attributes are not found, it returns a RestError.
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
getContactAttributes(): Promise<ContactAttributesResponse | RestError>;
|
|
23
|
+
/**
|
|
24
|
+
* This method creates a data extension. It requires the data extension fields. The method returns the data extension created. If the data extension is not created, it returns a RestError.
|
|
25
|
+
* @param body DataExtension fields
|
|
26
|
+
* @returns
|
|
27
|
+
*/
|
|
28
|
+
createDataExtension(body: DataExtensionBody): Promise<CreateDataExtensionResponse | RestError>;
|
|
29
|
+
/**
|
|
30
|
+
* This method fetches the business units. The method returns the business units. If the business units are not found, it returns a SoapError.
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
33
|
+
getBusinessUnits(): Promise<BusinessUnit[] | SoapError>;
|
|
34
|
+
/**
|
|
35
|
+
* This method fetches the data folders. It business unit id is provided all data folder under that business id would be retrieved otherwise all the data folder will be retrieved. The method returns the data folders. If the data folders are not found, it returns a SoapError.
|
|
36
|
+
* @param businessUnitId this is the id of the business unit
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
getDataFolders(businessUnitId?: string): Promise<DataFolder[] | SoapError>;
|
|
40
|
+
/**
|
|
41
|
+
* This function fetches the data extensions. It the data folder id is provided all the data extension under that data folder will be retrieved otherwise all the data extensions under the access token will be fetched. The method returns the data extensions. If the data extensions are not found, it returns a SoapError.
|
|
42
|
+
* @param dataFolderId Id of the data folder
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
getDataExtensions(dataFolderId?: string): Promise<DataExtension[] | SoapError>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdks/sfmc/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EAEZ,yBAAyB,EACzB,2BAA2B,EAC3B,aAAa,EACb,iBAAiB,EAEjB,UAAU,EACX,MAAM,QAAQ,CAAC;AAChB,OAAO,EAML,SAAS,EACT,SAAS,EAEV,MAAM,SAAS,CAAC;AAEjB,MAAM,CAAC,OAAO,OAAO,IAAI;IACvB,UAAU,EAAE,UAAU,CAAC;gBAEX,UAAU,KAAA;IAKtB,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiCjC;;;OAGG;IACG,cAAc;IAWpB;;;;OAIG;IACG,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAkB3F;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAkB5E;;;;OAIG;IACG,mBAAmB,CACvB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAmBnD;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,GAAG,SAAS,CAAC;IAyC7D;;;;OAIG;IACG,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC;IAwChF;;;;OAIG;IACG,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC;CAiDrF"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
class SFMC {
|
|
9
|
+
constructor(authObject) {
|
|
10
|
+
SFMC.validateAuthObject(authObject);
|
|
11
|
+
this.authObject = authObject;
|
|
12
|
+
}
|
|
13
|
+
static validateAuthObject(authObject) {
|
|
14
|
+
if (!authObject) {
|
|
15
|
+
throw new Error('authObject is required. See the readme.');
|
|
16
|
+
}
|
|
17
|
+
const validations = [
|
|
18
|
+
{ key: 'clientId', type: 'string', required: true },
|
|
19
|
+
{ key: 'clientSecret', type: 'string', required: true },
|
|
20
|
+
{
|
|
21
|
+
key: 'subDomain',
|
|
22
|
+
type: 'string',
|
|
23
|
+
required: true,
|
|
24
|
+
regex: /^\w{28}$/gm,
|
|
25
|
+
regexMessage: 'subDomain must be a string of length 28',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
validations.forEach(({ key, type, required, regex, regexMessage }) => {
|
|
29
|
+
const value = authObject[key];
|
|
30
|
+
if (required && !value) {
|
|
31
|
+
throw new Error(`${key} is missing or invalid`);
|
|
32
|
+
}
|
|
33
|
+
if (typeof value !== type) {
|
|
34
|
+
throw new TypeError(`${key} must be a ${type}`);
|
|
35
|
+
}
|
|
36
|
+
if (regex && !regex.test(value)) {
|
|
37
|
+
throw new Error(regexMessage || `${key} does not match the required format`);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return authObject;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* This function returns the access token. If the token is expired, it will generate a new token.
|
|
44
|
+
* @returns {Promise<AuthObject>} It returns the access token or error
|
|
45
|
+
*/
|
|
46
|
+
async getAccessToken() {
|
|
47
|
+
if ((0, utils_1.isExpired)(this.authObject)) {
|
|
48
|
+
try {
|
|
49
|
+
await (0, utils_1.getToken)(this.authObject);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
throw new Error(`Unable to generate token, with error:${e}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return this.authObject;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* This method fetches the fields of a data extension. It requires the data extension id. The method returns the fields of the data extension. If the data extension is not found, it returns a RestError.
|
|
59
|
+
* @param dataExtensionId Id of the data extension whose fields are to be fetched
|
|
60
|
+
* @returns
|
|
61
|
+
*/
|
|
62
|
+
async getDestinationFields(dataExtensionId) {
|
|
63
|
+
try {
|
|
64
|
+
const restHeaders = {
|
|
65
|
+
Authorization: `Bearer ${(await this.getAccessToken()).access_token}`,
|
|
66
|
+
};
|
|
67
|
+
const requestOptions = {
|
|
68
|
+
method: 'GET',
|
|
69
|
+
baseURL: (0, utils_1.getUrl)(this.authObject.subDomain),
|
|
70
|
+
url: `/data/v1/customobjects/${dataExtensionId}/fields`,
|
|
71
|
+
headers: restHeaders,
|
|
72
|
+
};
|
|
73
|
+
const resp = await (0, axios_1.default)(requestOptions);
|
|
74
|
+
return resp.data;
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
throw new utils_1.RestError(err);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* This method fetches the contact attributes. The method returns the contact attributes. If the contact attributes are not found, it returns a RestError.
|
|
82
|
+
* @returns
|
|
83
|
+
*/
|
|
84
|
+
async getContactAttributes() {
|
|
85
|
+
try {
|
|
86
|
+
const restHeaders = {
|
|
87
|
+
Authorization: `Bearer ${(await this.getAccessToken()).access_token}`,
|
|
88
|
+
};
|
|
89
|
+
const requestOptions = {
|
|
90
|
+
method: 'GET',
|
|
91
|
+
baseURL: (0, utils_1.getUrl)(this.authObject.subDomain),
|
|
92
|
+
url: '/contacts/v1/attributeSetDefinitions',
|
|
93
|
+
headers: restHeaders,
|
|
94
|
+
};
|
|
95
|
+
const resp = await (0, axios_1.default)(requestOptions);
|
|
96
|
+
return resp.data;
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
throw new utils_1.RestError(err);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* This method creates a data extension. It requires the data extension fields. The method returns the data extension created. If the data extension is not created, it returns a RestError.
|
|
104
|
+
* @param body DataExtension fields
|
|
105
|
+
* @returns
|
|
106
|
+
*/
|
|
107
|
+
async createDataExtension(body) {
|
|
108
|
+
try {
|
|
109
|
+
const restHeaders = {
|
|
110
|
+
Authorization: `Bearer ${(await this.getAccessToken()).access_token}`,
|
|
111
|
+
};
|
|
112
|
+
const requestOptions = {
|
|
113
|
+
method: 'POST',
|
|
114
|
+
baseURL: (0, utils_1.getUrl)(this.authObject.subDomain),
|
|
115
|
+
url: '/data/v1/customobjects',
|
|
116
|
+
headers: restHeaders,
|
|
117
|
+
data: body,
|
|
118
|
+
};
|
|
119
|
+
const resp = await (0, axios_1.default)(requestOptions);
|
|
120
|
+
return resp.data;
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
throw new utils_1.RestError(err);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* This method fetches the business units. The method returns the business units. If the business units are not found, it returns a SoapError.
|
|
128
|
+
* @returns
|
|
129
|
+
*/
|
|
130
|
+
async getBusinessUnits() {
|
|
131
|
+
try {
|
|
132
|
+
const accessToken = (await this.getAccessToken()).access_token;
|
|
133
|
+
const requestOptions = {
|
|
134
|
+
method: 'POST',
|
|
135
|
+
baseURL: `https://${this.authObject.subDomain}.soap.marketingcloudapis.com`,
|
|
136
|
+
url: '/Service.asmx',
|
|
137
|
+
headers: {
|
|
138
|
+
SOAPAction: 'Retrieve',
|
|
139
|
+
'Content-Type': 'text/xml',
|
|
140
|
+
},
|
|
141
|
+
data: await (0, utils_1.xmlBuilder)('BusinessUnit', ['name', 'id'], accessToken),
|
|
142
|
+
};
|
|
143
|
+
const resp = await (0, axios_1.default)(requestOptions);
|
|
144
|
+
const parsedData = (0, utils_1.parseXML)(resp.data);
|
|
145
|
+
const res = parsedData.RetrieveResponseMsg?.Results;
|
|
146
|
+
const businessUnits = [];
|
|
147
|
+
if (res) {
|
|
148
|
+
if (Array.isArray(res)) {
|
|
149
|
+
res.forEach((eachRes) => {
|
|
150
|
+
businessUnits.push({
|
|
151
|
+
Name: eachRes.PartnerProperties[0].Value,
|
|
152
|
+
ID: eachRes.PartnerProperties[1].Value,
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
businessUnits.push({
|
|
158
|
+
Name: res.PartnerProperties[0].Value,
|
|
159
|
+
ID: res.PartnerProperties[1].Value,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
return businessUnits;
|
|
163
|
+
}
|
|
164
|
+
throw new utils_1.SoapError('No Business Units found');
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
throw new utils_1.SoapError(err);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* This method fetches the data folders. It business unit id is provided all data folder under that business id would be retrieved otherwise all the data folder will be retrieved. The method returns the data folders. If the data folders are not found, it returns a SoapError.
|
|
172
|
+
* @param businessUnitId this is the id of the business unit
|
|
173
|
+
* @returns
|
|
174
|
+
*/
|
|
175
|
+
async getDataFolders(businessUnitId) {
|
|
176
|
+
try {
|
|
177
|
+
const accessToken = (await this.getAccessToken()).access_token;
|
|
178
|
+
const requestOptions = {
|
|
179
|
+
method: 'POST',
|
|
180
|
+
baseURL: `https://${this.authObject.subDomain}.soap.marketingcloudapis.com`,
|
|
181
|
+
url: '/Service.asmx',
|
|
182
|
+
headers: {
|
|
183
|
+
SOAPAction: 'Retrieve',
|
|
184
|
+
'Content-Type': 'text/xml',
|
|
185
|
+
},
|
|
186
|
+
data: businessUnitId
|
|
187
|
+
? await (0, utils_1.xmlBuilder)('DataFolder', ['Name', 'ID', 'ParentFolder.ID'], accessToken, (0, utils_1.parseFilter)({ leftOperand: 'Client.ID', rightOperand: businessUnitId }))
|
|
188
|
+
: await (0, utils_1.xmlBuilder)('DataFolder', ['Name', 'ID', 'ParentFolder.ID'], accessToken),
|
|
189
|
+
};
|
|
190
|
+
const resp = await (0, axios_1.default)(requestOptions);
|
|
191
|
+
const parsedData = (0, utils_1.parseXML)(resp.data);
|
|
192
|
+
const res = parsedData.RetrieveResponseMsg?.Results;
|
|
193
|
+
const dataFolders = [];
|
|
194
|
+
if (res) {
|
|
195
|
+
if (Array.isArray(res)) {
|
|
196
|
+
res.forEach((eachRes) => {
|
|
197
|
+
dataFolders.push(eachRes);
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
dataFolders.push(res);
|
|
202
|
+
}
|
|
203
|
+
return dataFolders;
|
|
204
|
+
}
|
|
205
|
+
throw new utils_1.SoapError('No Data Folder found');
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
throw new utils_1.SoapError(err);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* This function fetches the data extensions. It the data folder id is provided all the data extension under that data folder will be retrieved otherwise all the data extensions under the access token will be fetched. The method returns the data extensions. If the data extensions are not found, it returns a SoapError.
|
|
213
|
+
* @param dataFolderId Id of the data folder
|
|
214
|
+
* @returns
|
|
215
|
+
*/
|
|
216
|
+
async getDataExtensions(dataFolderId) {
|
|
217
|
+
try {
|
|
218
|
+
const accessToken = (await this.getAccessToken()).access_token;
|
|
219
|
+
const requestOptions = {
|
|
220
|
+
method: 'POST',
|
|
221
|
+
baseURL: `https://${this.authObject.subDomain}.soap.marketingcloudapis.com`,
|
|
222
|
+
url: '/Service.asmx',
|
|
223
|
+
headers: {
|
|
224
|
+
SOAPAction: 'Retrieve',
|
|
225
|
+
'Content-Type': 'text/xml',
|
|
226
|
+
},
|
|
227
|
+
data: dataFolderId
|
|
228
|
+
? await (0, utils_1.xmlBuilder)('DataExtension', ['NAME', 'ObjectId', 'CategoryId'], accessToken, (0, utils_1.parseFilter)({ leftOperand: 'CategoryId', rightOperand: dataFolderId }))
|
|
229
|
+
: await (0, utils_1.xmlBuilder)('DataExtension', ['NAME', 'ObjectId', 'CategoryId'], accessToken),
|
|
230
|
+
};
|
|
231
|
+
const resp = await (0, axios_1.default)(requestOptions);
|
|
232
|
+
const parsedData = (0, utils_1.parseXML)(resp.data);
|
|
233
|
+
const res = parsedData.RetrieveResponseMsg?.Results;
|
|
234
|
+
const dataExtensions = [];
|
|
235
|
+
if (res) {
|
|
236
|
+
if (Array.isArray(res)) {
|
|
237
|
+
res.forEach((eachRes) => {
|
|
238
|
+
dataExtensions.push({
|
|
239
|
+
ObjectId: eachRes.PartnerProperties[0].Value,
|
|
240
|
+
Name: eachRes.PartnerProperties[1].Value,
|
|
241
|
+
CategoryId: eachRes.PartnerProperties[2].Value,
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
dataExtensions.push({
|
|
247
|
+
ObjectId: res.PartnerProperties[0].Value,
|
|
248
|
+
Name: res.PartnerProperties[1].Value,
|
|
249
|
+
CategoryId: res.PartnerProperties[2].Value,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
return dataExtensions;
|
|
253
|
+
}
|
|
254
|
+
throw new utils_1.SoapError('No Data Extension found');
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
throw new utils_1.SoapError(err);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
exports.default = SFMC;
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Rrcy9zZm1jL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0RBQTBCO0FBWTFCLG1DQVNpQjtBQUVqQixNQUFxQixJQUFJO0lBR3ZCLFlBQVksVUFBVTtRQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVPLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFlO1FBQy9DLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDNUQ7UUFFRCxNQUFNLFdBQVcsR0FBRztZQUNsQixFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ25ELEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDdkQ7Z0JBQ0UsR0FBRyxFQUFFLFdBQVc7Z0JBQ2hCLElBQUksRUFBRSxRQUFRO2dCQUNkLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxZQUFZO2dCQUNuQixZQUFZLEVBQUUseUNBQXlDO2FBQ3hEO1NBQ0YsQ0FBQztRQUVGLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFO1lBQ25FLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixJQUFJLFFBQVEsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsd0JBQXdCLENBQUMsQ0FBQzth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QyxDQUFDLE9BQU8sRUFBRSxFQUFFO3dCQUN0QixjQUFjLENBQUMsSUFBSSxDQUFDOzRCQUNsQixRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7NEJBQzVDLElBQUksRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSzs0QkFDeEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO3lCQUMvQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsY0FBYyxDQUFDLElBQUksQ0FBQzt3QkFDbEIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO3dCQUN4QyxJQUFJLEVBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7d0JBQ3BDLFVBQVUsRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztxQkFDM0MsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELE9BQU8sY0FBYyxDQUFDO2FBQ3ZCO1lBQ0QsTUFBTSxJQUFJLGlCQUFTLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUNoRDtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osTUFBTSxJQUFJLGlCQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDMUI7SUFDSCxDQUFDO0NBQ0Y7QUEvUUQsdUJBK1FDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7XG4gIEF1dGhPYmplY3QsXG4gIEJ1c2luZXNzVW5pdCxcbiAgQnVzaW5lc3NVbml0UmVzcG9uc2UsXG4gIENvbnRhY3RBdHRyaWJ1dGVzUmVzcG9uc2UsXG4gIENyZWF0ZURhdGFFeHRlbnNpb25SZXNwb25zZSxcbiAgRGF0YUV4dGVuc2lvbixcbiAgRGF0YUV4dGVuc2lvbkJvZHksXG4gIERhdGFFeHRlbnNpb25SZXNwb25zZSxcbiAgRGF0YUZvbGRlcixcbn0gZnJvbSAnLi90eXBlJztcbmltcG9ydCB7XG4gIGdldFVybCxcbiAgaXNFeHBpcmVkLFxuICBwYXJzZUZpbHRlcixcbiAgcGFyc2VYTUwsXG4gIGdldFRva2VuLFxuICBSZXN0RXJyb3IsXG4gIFNvYXBFcnJvcixcbiAgeG1sQnVpbGRlcixcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNGTUMge1xuICBhdXRoT2JqZWN0OiBBdXRoT2JqZWN0O1xuXG4gIGNvbnN0cnVjdG9yKGF1dGhPYmplY3QpIHtcbiAgICBTRk1DLnZhbGlkYXRlQXV0aE9iamVjdChhdXRoT2JqZWN0KTtcbiAgICB0aGlzLmF1dGhPYmplY3QgPSBhdXRoT2JqZWN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGVBdXRoT2JqZWN0KGF1dGhPYmplY3Q6IGFueSk6IGFueSB7XG4gICAgaWYgKCFhdXRoT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2F1dGhPYmplY3QgaXMgcmVxdWlyZWQuIFNlZSB0aGUgcmVhZG1lLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRpb25zID0gW1xuICAgICAgeyBrZXk6ICdjbGllbnRJZCcsIHR5cGU6ICdzdHJpbmcnLCByZXF1aXJlZDogdHJ1ZSB9LFxuICAgICAgeyBrZXk6ICdjbGllbnRTZWNyZXQnLCB0eXBlOiAnc3RyaW5nJywgcmVxdWlyZWQ6IHRydWUgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnc3ViRG9tYWluJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICByZWdleDogL15cXHd7Mjh9JC9nbSxcbiAgICAgICAgcmVnZXhNZXNzYWdlOiAnc3ViRG9tYWluIG11c3QgYmUgYSBzdHJpbmcgb2YgbGVuZ3RoIDI4JyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHZhbGlkYXRpb25zLmZvckVhY2goKHsga2V5LCB0eXBlLCByZXF1aXJlZCwgcmVnZXgsIHJlZ2V4TWVzc2FnZSB9KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF1dGhPYmplY3Rba2V5XTtcbiAgICAgIGlmIChyZXF1aXJlZCAmJiAhdmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2tleX0gaXMgbWlzc2luZyBvciBpbnZhbGlkYCk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSB0eXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7a2V5fSBtdXN0IGJlIGEgJHt0eXBlfWApO1xuICAgICAgfVxuICAgICAgaWYgKHJlZ2V4ICYmICFyZWdleC50ZXN0KHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVnZXhNZXNzYWdlIHx8IGAke2tleX0gZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVkIGZvcm1hdGApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF1dGhPYmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBhY2Nlc3MgdG9rZW4uIElmIHRoZSB0b2tlbiBpcyBleHBpcmVkLCBpdCB3aWxsIGdlbmVyYXRlIGEgbmV3IHRva2VuLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBdXRoT2JqZWN0Pn0gIEl0IHJldHVybnMgdGhlIGFjY2VzcyB0b2tlbiBvciBlcnJvclxuICAgKi9cbiAgYXN5bmMgZ2V0QWNjZXNzVG9rZW4oKSB7XG4gICAgaWYgKGlzRXhwaXJlZCh0aGlzLmF1dGhPYmplY3QpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBnZXRUb2tlbih0aGlzLmF1dGhPYmplY3QpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBnZW5lcmF0ZSB0b2tlbiwgd2l0aCBlcnJvcjoke2V9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmF1dGhPYmplY3Q7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgZmV0Y2hlcyB0aGUgZmllbGRzIG9mIGEgZGF0YSBleHRlbnNpb24uIEl0IHJlcXVpcmVzIHRoZSBkYXRhIGV4dGVuc2lvbiBpZC4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBmaWVsZHMgb2YgdGhlIGRhdGEgZXh0ZW5zaW9uLiBJZiB0aGUgZGF0YSBleHRlbnNpb24gaXMgbm90IGZvdW5kLCBpdCByZXR1cm5zIGEgUmVzdEVycm9yLlxuICAgKiBAcGFyYW0gZGF0YUV4dGVuc2lvbklkIElkIG9mIHRoZSBkYXRhIGV4dGVuc2lvbiB3aG9zZSBmaWVsZHMgYXJlIHRvIGJlIGZldGNoZWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGdldERlc3RpbmF0aW9uRmllbGRzKGRhdGFFeHRlbnNpb25JZDogc3RyaW5nKTogUHJvbWlzZTxEYXRhRXh0ZW5zaW9uQm9keSB8IFJlc3RFcnJvcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN0SGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAkeyhhd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKCkpLmFjY2Vzc190b2tlbn1gLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBiYXNlVVJMOiBnZXRVcmwodGhpcy5hdXRoT2JqZWN0LnN1YkRvbWFpbiksXG4gICAgICAgIHVybDogYC9kYXRhL3YxL2N1c3RvbW9iamVjdHMvJHtkYXRhRXh0ZW5zaW9uSWR9L2ZpZWxkc2AsXG4gICAgICAgIGhlYWRlcnM6IHJlc3RIZWFkZXJzLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBheGlvcyhyZXF1ZXN0T3B0aW9ucyk7XG4gICAgICByZXR1cm4gcmVzcC5kYXRhO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IFJlc3RFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBmZXRjaGVzIHRoZSBjb250YWN0IGF0dHJpYnV0ZXMuIFRoZSBtZXRob2QgcmV0dXJucyB0aGUgY29udGFjdCBhdHRyaWJ1dGVzLiBJZiB0aGUgY29udGFjdCBhdHRyaWJ1dGVzIGFyZSBub3QgZm91bmQsIGl0IHJldHVybnMgYSBSZXN0RXJyb3IuXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhc3luYyBnZXRDb250YWN0QXR0cmlidXRlcygpOiBQcm9taXNlPENvbnRhY3RBdHRyaWJ1dGVzUmVzcG9uc2UgfCBSZXN0RXJyb3I+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdEhlYWRlcnMgPSB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHsoYXdhaXQgdGhpcy5nZXRBY2Nlc3NUb2tlbigpKS5hY2Nlc3NfdG9rZW59YCxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgYmFzZVVSTDogZ2V0VXJsKHRoaXMuYXV0aE9iamVjdC5zdWJEb21haW4pLFxuICAgICAgICB1cmw6ICcvY29udGFjdHMvdjEvYXR0cmlidXRlU2V0RGVmaW5pdGlvbnMnLFxuICAgICAgICBoZWFkZXJzOiByZXN0SGVhZGVycyxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgYXhpb3MocmVxdWVzdE9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHJlc3AuZGF0YTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBSZXN0RXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIGRhdGEgZXh0ZW5zaW9uLiBJdCByZXF1aXJlcyB0aGUgZGF0YSBleHRlbnNpb24gZmllbGRzLiBUaGUgbWV0aG9kIHJldHVybnMgdGhlIGRhdGEgZXh0ZW5zaW9uIGNyZWF0ZWQuIElmIHRoZSBkYXRhIGV4dGVuc2lvbiBpcyBub3QgY3JlYXRlZCwgaXQgcmV0dXJucyBhIFJlc3RFcnJvci5cbiAgICogQHBhcmFtIGJvZHkgRGF0YUV4dGVuc2lvbiBmaWVsZHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGNyZWF0ZURhdGFFeHRlbnNpb24oXG4gICAgYm9keTogRGF0YUV4dGVuc2lvbkJvZHksXG4gICk6IFByb21pc2U8Q3JlYXRlRGF0YUV4dGVuc2lvblJlc3BvbnNlIHwgUmVzdEVycm9yPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3RIZWFkZXJzID0ge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7KGF3YWl0IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKSkuYWNjZXNzX3Rva2VufWAsXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBiYXNlVVJMOiBnZXRVcmwodGhpcy5hdXRoT2JqZWN0LnN1YkRvbWFpbiksXG4gICAgICAgIHVybDogJy9kYXRhL3YxL2N1c3RvbW9iamVjdHMnLFxuICAgICAgICBoZWFkZXJzOiByZXN0SGVhZGVycyxcbiAgICAgICAgZGF0YTogYm9keSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgYXhpb3MocmVxdWVzdE9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHJlc3AuZGF0YTtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IFJlc3RFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBmZXRjaGVzIHRoZSBidXNpbmVzcyB1bml0cy4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBidXNpbmVzcyB1bml0cy4gSWYgdGhlIGJ1c2luZXNzIHVuaXRzIGFyZSBub3QgZm91bmQsIGl0IHJldHVybnMgYSBTb2FwRXJyb3IuXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhc3luYyBnZXRCdXNpbmVzc1VuaXRzKCk6IFByb21pc2U8QnVzaW5lc3NVbml0W10gfCBTb2FwRXJyb3I+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSAoYXdhaXQgdGhpcy5nZXRBY2Nlc3NUb2tlbigpKS5hY2Nlc3NfdG9rZW47XG4gICAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJhc2VVUkw6IGBodHRwczovLyR7dGhpcy5hdXRoT2JqZWN0LnN1YkRvbWFpbn0uc29hcC5tYXJrZXRpbmdjbG91ZGFwaXMuY29tYCxcbiAgICAgICAgdXJsOiAnL1NlcnZpY2UuYXNteCcsXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBTT0FQQWN0aW9uOiAnUmV0cmlldmUnLFxuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC94bWwnLFxuICAgICAgICB9LFxuICAgICAgICBkYXRhOiBhd2FpdCB4bWxCdWlsZGVyKCdCdXNpbmVzc1VuaXQnLCBbJ25hbWUnLCAnaWQnXSwgYWNjZXNzVG9rZW4pLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBheGlvcyhyZXF1ZXN0T3B0aW9ucyk7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gcGFyc2VYTUwocmVzcC5kYXRhKTtcbiAgICAgIGNvbnN0IHJlcyA9IHBhcnNlZERhdGEuUmV0cmlldmVSZXNwb25zZU1zZz8uUmVzdWx0cyBhc1xuICAgICAgICB8IEJ1c2luZXNzVW5pdFJlc3BvbnNlXG4gICAgICAgIHwgQnVzaW5lc3NVbml0UmVzcG9uc2VbXTtcbiAgICAgIGNvbnN0IGJ1c2luZXNzVW5pdHM6IEJ1c2luZXNzVW5pdFtdID0gW107XG4gICAgICBpZiAocmVzKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcykpIHtcbiAgICAgICAgICByZXMuZm9yRWFjaCgoZWFjaFJlcykgPT4ge1xuICAgICAgICAgICAgYnVzaW5lc3NVbml0cy5wdXNoKHtcbiAgICAgICAgICAgICAgTmFtZTogZWFjaFJlcy5QYXJ0bmVyUHJvcGVydGllc1swXS5WYWx1ZSxcbiAgICAgICAgICAgICAgSUQ6IGVhY2hSZXMuUGFydG5lclByb3BlcnRpZXNbMV0uVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBidXNpbmVzc1VuaXRzLnB1c2goe1xuICAgICAgICAgICAgTmFtZTogcmVzLlBhcnRuZXJQcm9wZXJ0aWVzWzBdLlZhbHVlLFxuICAgICAgICAgICAgSUQ6IHJlcy5QYXJ0bmVyUHJvcGVydGllc1sxXS5WYWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVzaW5lc3NVbml0cztcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBTb2FwRXJyb3IoJ05vIEJ1c2luZXNzIFVuaXRzIGZvdW5kJyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgU29hcEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGZldGNoZXMgdGhlIGRhdGEgZm9sZGVycy4gSXQgYnVzaW5lc3MgdW5pdCBpZCBpcyBwcm92aWRlZCBhbGwgZGF0YSBmb2xkZXIgdW5kZXIgdGhhdCBidXNpbmVzcyBpZCB3b3VsZCBiZSByZXRyaWV2ZWQgb3RoZXJ3aXNlIGFsbCB0aGUgZGF0YSBmb2xkZXIgd2lsbCBiZSByZXRyaWV2ZWQuIFRoZSBtZXRob2QgcmV0dXJucyB0aGUgZGF0YSBmb2xkZXJzLiBJZiB0aGUgZGF0YSBmb2xkZXJzIGFyZSBub3QgZm91bmQsIGl0IHJldHVybnMgYSBTb2FwRXJyb3IuXG4gICAqIEBwYXJhbSBidXNpbmVzc1VuaXRJZCB0aGlzIGlzIHRoZSBpZCBvZiB0aGUgYnVzaW5lc3MgdW5pdFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgZ2V0RGF0YUZvbGRlcnMoYnVzaW5lc3NVbml0SWQ/OiBzdHJpbmcpOiBQcm9taXNlPERhdGFGb2xkZXJbXSB8IFNvYXBFcnJvcj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IChhd2FpdCB0aGlzLmdldEFjY2Vzc1Rva2VuKCkpLmFjY2Vzc190b2tlbjtcbiAgICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYmFzZVVSTDogYGh0dHBzOi8vJHt0aGlzLmF1dGhPYmplY3Quc3ViRG9tYWlufS5zb2FwLm1hcmtldGluZ2Nsb3VkYXBpcy5jb21gLFxuICAgICAgICB1cmw6ICcvU2VydmljZS5hc214JyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgIFNPQVBBY3Rpb246ICdSZXRyaWV2ZScsXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3htbCcsXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGE6IGJ1c2luZXNzVW5pdElkXG4gICAgICAgICAgPyBhd2FpdCB4bWxCdWlsZGVyKFxuICAgICAgICAgICAgICAnRGF0YUZvbGRlcicsXG4gICAgICAgICAgICAgIFsnTmFtZScsICdJRCcsICdQYXJlbnRGb2xkZXIuSUQnXSxcbiAgICAgICAgICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICAgIHBhcnNlRmlsdGVyKHsgbGVmdE9wZXJhbmQ6ICdDbGllbnQuSUQnLCByaWdodE9wZXJhbmQ6IGJ1c2luZXNzVW5pdElkIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogYXdhaXQgeG1sQnVpbGRlcignRGF0YUZvbGRlcicsIFsnTmFtZScsICdJRCcsICdQYXJlbnRGb2xkZXIuSUQnXSwgYWNjZXNzVG9rZW4pLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBheGlvcyhyZXF1ZXN0T3B0aW9ucyk7XG4gICAgICBjb25zdCBwYXJzZWREYXRhID0gcGFyc2VYTUwocmVzcC5kYXRhKTtcbiAgICAgIGNvbnN0IHJlcyA9IHBhcnNlZERhdGEuUmV0cmlldmVSZXNwb25zZU1zZz8uUmVzdWx0cyBhcyBEYXRhRm9sZGVyIHwgRGF0YUZvbGRlcltdO1xuICAgICAgY29uc3QgZGF0YUZvbGRlcnM6IERhdGFGb2xkZXJbXSA9IFtdO1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXMpKSB7XG4gICAgICAgICAgcmVzLmZvckVhY2goKGVhY2hSZXMpID0+IHtcbiAgICAgICAgICAgIGRhdGFGb2xkZXJzLnB1c2goZWFjaFJlcyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YUZvbGRlcnMucHVzaChyZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhRm9sZGVycztcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBTb2FwRXJyb3IoJ05vIERhdGEgRm9sZGVyIGZvdW5kJyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgU29hcEVycm9yKGVycik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gZmV0Y2hlcyB0aGUgZGF0YSBleHRlbnNpb25zLiBJdCB0aGUgZGF0YSBmb2xkZXIgaWQgaXMgcHJvdmlkZWQgYWxsIHRoZSBkYXRhIGV4dGVuc2lvbiB1bmRlciB0aGF0IGRhdGEgZm9sZGVyIHdpbGwgYmUgcmV0cmlldmVkIG90aGVyd2lzZSBhbGwgdGhlIGRhdGEgZXh0ZW5zaW9ucyB1bmRlciB0aGUgYWNjZXNzIHRva2VuIHdpbGwgYmUgZmV0Y2hlZC4gVGhlIG1ldGhvZCByZXR1cm5zIHRoZSBkYXRhIGV4dGVuc2lvbnMuIElmIHRoZSBkYXRhIGV4dGVuc2lvbnMgYXJlIG5vdCBmb3VuZCwgaXQgcmV0dXJucyBhIFNvYXBFcnJvci5cbiAgICogQHBhcmFtIGRhdGFGb2xkZXJJZCBJZCBvZiB0aGUgZGF0YSBmb2xkZXJcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzeW5jIGdldERhdGFFeHRlbnNpb25zKGRhdGFGb2xkZXJJZD86IHN0cmluZyk6IFByb21pc2U8RGF0YUV4dGVuc2lvbltdIHwgU29hcEVycm9yPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gKGF3YWl0IHRoaXMuZ2V0QWNjZXNzVG9rZW4oKSkuYWNjZXNzX3Rva2VuO1xuICAgICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBiYXNlVVJMOiBgaHR0cHM6Ly8ke3RoaXMuYXV0aE9iamVjdC5zdWJEb21haW59LnNvYXAubWFya2V0aW5nY2xvdWRhcGlzLmNvbWAsXG4gICAgICAgIHVybDogJy9TZXJ2aWNlLmFzbXgnLFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgU09BUEFjdGlvbjogJ1JldHJpZXZlJyxcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ3RleHQveG1sJyxcbiAgICAgICAgfSxcbiAgICAgICAgZGF0YTogZGF0YUZvbGRlcklkXG4gICAgICAgICAgPyBhd2FpdCB4bWxCdWlsZGVyKFxuICAgICAgICAgICAgICAnRGF0YUV4dGVuc2lvbicsXG4gICAgICAgICAgICAgIFsnTkFNRScsICdPYmplY3RJZCcsICdDYXRlZ29yeUlkJ10sXG4gICAgICAgICAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgICBwYXJzZUZpbHRlcih7IGxlZnRPcGVyYW5kOiAnQ2F0ZWdvcnlJZCcsIHJpZ2h0T3BlcmFuZDogZGF0YUZvbGRlcklkIH0pLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIDogYXdhaXQgeG1sQnVpbGRlcignRGF0YUV4dGVuc2lvbicsIFsnTkFNRScsICdPYmplY3RJZCcsICdDYXRlZ29yeUlkJ10sIGFjY2Vzc1Rva2VuKSxcbiAgICAgIH07XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgYXhpb3MocmVxdWVzdE9wdGlvbnMpO1xuICAgICAgY29uc3QgcGFyc2VkRGF0YSA9IHBhcnNlWE1MKHJlc3AuZGF0YSk7XG4gICAgICBjb25zdCByZXMgPSBwYXJzZWREYXRhLlJldHJpZXZlUmVzcG9uc2VNc2c/LlJlc3VsdHMgYXNcbiAgICAgICAgfCBEYXRhRXh0ZW5zaW9uUmVzcG9uc2VcbiAgICAgICAgfCBEYXRhRXh0ZW5zaW9uUmVzcG9uc2VbXTtcbiAgICAgIGNvbnN0IGRhdGFFeHRlbnNpb25zOiBEYXRhRXh0ZW5zaW9uW10gPSBbXTtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzKSkge1xuICAgICAgICAgIHJlcy5mb3JFYWNoKChlYWNoUmVzKSA9PiB7XG4gICAgICAgICAgICBkYXRhRXh0ZW5zaW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgT2JqZWN0SWQ6IGVhY2hSZXMuUGFydG5lclByb3BlcnRpZXNbMF0uVmFsdWUsXG4gICAgICAgICAgICAgIE5hbWU6IGVhY2hSZXMuUGFydG5lclByb3BlcnRpZXNbMV0uVmFsdWUsXG4gICAgICAgICAgICAgIENhdGVnb3J5SWQ6IGVhY2hSZXMuUGFydG5lclByb3BlcnRpZXNbMl0uVmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhRXh0ZW5zaW9ucy5wdXNoKHtcbiAgICAgICAgICAgIE9iamVjdElkOiByZXMuUGFydG5lclByb3BlcnRpZXNbMF0uVmFsdWUsXG4gICAgICAgICAgICBOYW1lOiByZXMuUGFydG5lclByb3BlcnRpZXNbMV0uVmFsdWUsXG4gICAgICAgICAgICBDYXRlZ29yeUlkOiByZXMuUGFydG5lclByb3BlcnRpZXNbMl0uVmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGFFeHRlbnNpb25zO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFNvYXBFcnJvcignTm8gRGF0YSBFeHRlbnNpb24gZm91bmQnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBTb2FwRXJyb3IoZXJyKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../src/sdks/sfmc/index.test.ts"],"names":[],"mappings":""}
|