@segment/actions-core 2.3.2-alpha.2 → 3.0.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/cjs/create-test-integration.d.ts +3 -1
- package/dist/cjs/create-test-integration.js +3 -2
- package/dist/cjs/create-test-integration.js.map +1 -1
- package/dist/cjs/destination-kit/action.d.ts +20 -20
- package/dist/cjs/destination-kit/action.js +47 -114
- package/dist/cjs/destination-kit/action.js.map +1 -1
- package/dist/cjs/destination-kit/fields-to-jsonschema.d.ts +4 -2
- package/dist/cjs/destination-kit/fields-to-jsonschema.js.map +1 -1
- package/dist/cjs/destination-kit/index.d.ts +19 -9
- package/dist/cjs/destination-kit/index.js +52 -17
- package/dist/cjs/destination-kit/index.js.map +1 -1
- package/dist/cjs/destination-kit/parse-settings.d.ts +9 -0
- package/dist/cjs/destination-kit/parse-settings.js +32 -0
- package/dist/cjs/destination-kit/parse-settings.js.map +1 -0
- package/dist/cjs/destination-kit/types.d.ts +15 -2
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/mapping-kit/index.d.ts +1 -1
- package/dist/cjs/mapping-kit/index.js +5 -5
- package/dist/cjs/mapping-kit/index.js.map +1 -1
- package/dist/cjs/schema-validation.d.ts +1 -0
- package/dist/cjs/schema-validation.js +42 -0
- package/dist/cjs/schema-validation.js.map +1 -0
- package/dist/esm/create-test-integration.d.ts +3 -1
- package/dist/esm/create-test-integration.js +3 -2
- package/dist/esm/create-test-integration.js.map +1 -1
- package/dist/esm/destination-kit/action.d.ts +20 -20
- package/dist/esm/destination-kit/action.js +46 -112
- package/dist/esm/destination-kit/action.js.map +1 -1
- package/dist/esm/destination-kit/fields-to-jsonschema.d.ts +4 -2
- package/dist/esm/destination-kit/fields-to-jsonschema.js.map +1 -1
- package/dist/esm/destination-kit/index.d.ts +19 -9
- package/dist/esm/destination-kit/index.js +54 -19
- package/dist/esm/destination-kit/index.js.map +1 -1
- package/dist/esm/destination-kit/parse-settings.d.ts +9 -0
- package/dist/esm/destination-kit/parse-settings.js +26 -0
- package/dist/esm/destination-kit/parse-settings.js.map +1 -0
- package/dist/esm/destination-kit/types.d.ts +15 -2
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mapping-kit/index.d.ts +1 -1
- package/dist/esm/mapping-kit/index.js +5 -5
- package/dist/esm/mapping-kit/index.js.map +1 -1
- package/dist/esm/schema-validation.d.ts +1 -0
- package/dist/esm/schema-validation.js +35 -0
- package/dist/esm/schema-validation.js.map +1 -0
- package/package.json +2 -2
- package/dist/cjs/destination-kit/step.d.ts +0 -23
- package/dist/cjs/destination-kit/step.js +0 -47
- package/dist/cjs/destination-kit/step.js.map +0 -1
- package/dist/esm/destination-kit/step.d.ts +0 -23
- package/dist/esm/destination-kit/step.js +0 -42
- package/dist/esm/destination-kit/step.js.map +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateOAuthSettings = exports.getOAuth2Data = exports.getAuthData = void 0;
|
|
4
|
+
function getAuthData(settings) {
|
|
5
|
+
const oauthData = getOAuth2Data(settings);
|
|
6
|
+
return { accessToken: oauthData.accessToken, refreshToken: oauthData.refreshToken };
|
|
7
|
+
}
|
|
8
|
+
exports.getAuthData = getAuthData;
|
|
9
|
+
function getOAuth2Data(settings) {
|
|
10
|
+
const { oauth } = settings;
|
|
11
|
+
return {
|
|
12
|
+
accessToken: oauth?.access_token,
|
|
13
|
+
refreshToken: oauth?.refresh_token,
|
|
14
|
+
clientId: oauth?.clientId,
|
|
15
|
+
clientSecret: oauth?.clientSecret
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
exports.getOAuth2Data = getOAuth2Data;
|
|
19
|
+
function updateOAuthSettings(settings, oauthData) {
|
|
20
|
+
const { oauth, ...otherSettings } = settings;
|
|
21
|
+
if (oauth) {
|
|
22
|
+
const newOauth = oauth;
|
|
23
|
+
newOauth.access_token = oauthData.accessToken;
|
|
24
|
+
if (oauthData.refreshToken) {
|
|
25
|
+
newOauth.refresh_token = oauthData.refreshToken;
|
|
26
|
+
}
|
|
27
|
+
otherSettings['oauth'] = newOauth;
|
|
28
|
+
}
|
|
29
|
+
return otherSettings;
|
|
30
|
+
}
|
|
31
|
+
exports.updateOAuthSettings = updateOAuthSettings;
|
|
32
|
+
//# sourceMappingURL=parse-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-settings.js","sourceRoot":"","sources":["../../../src/destination-kit/parse-settings.ts"],"names":[],"mappings":";;;AAuBA,SAAgB,WAAW,CAAC,QAAoB;IAC9C,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACzC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAA;AACrF,CAAC;AAHD,kCAGC;AAOD,SAAgB,aAAa,CAAC,QAAoB;IAChD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAA;IAC1B,OAAO;QACL,WAAW,EAAG,KAAkC,EAAE,YAAY;QAC9D,YAAY,EAAG,KAAkC,EAAE,aAAa;QAChE,QAAQ,EAAG,KAAkC,EAAE,QAAQ;QACvD,YAAY,EAAG,KAAkC,EAAE,YAAY;KACrC,CAAA;AAC9B,CAAC;AARD,sCAQC;AAQD,SAAgB,mBAAmB,CAAC,QAAoB,EAAE,SAAmC;IAC3F,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,GAAG,QAAQ,CAAA;IAC5C,IAAI,KAAK,EAAE;QACT,MAAM,QAAQ,GAAG,KAAiC,CAAA;QAClD,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC,WAAW,CAAA;QAC7C,IAAI,SAAS,CAAC,YAAY,EAAE;YAC1B,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC,YAAY,CAAA;SAChD;QACD,aAAa,CAAC,OAAO,CAAC,GAAG,QAAgC,CAAA;KAC1D;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AAXD,kDAWC"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { RequestOptions } from '../request-client';
|
|
2
|
-
import type {
|
|
2
|
+
import type { JSONObject } from '../json-object';
|
|
3
|
+
import { AuthTokens } from './parse-settings';
|
|
4
|
+
export declare type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
|
|
5
|
+
export interface Result {
|
|
6
|
+
output?: JSONObject | string | null | undefined;
|
|
7
|
+
error?: JSONObject | null;
|
|
8
|
+
}
|
|
9
|
+
export interface ExecuteInput<Settings, Payload> {
|
|
10
|
+
readonly mapping?: JSONObject;
|
|
11
|
+
readonly settings: Settings;
|
|
12
|
+
payload: Payload;
|
|
13
|
+
page?: string;
|
|
14
|
+
readonly auth?: AuthTokens;
|
|
15
|
+
}
|
|
3
16
|
export interface DynamicFieldResponse {
|
|
4
17
|
body: {
|
|
5
18
|
data: DynamicFieldItem[];
|
|
@@ -23,7 +36,7 @@ export interface InputField {
|
|
|
23
36
|
placeholder?: string;
|
|
24
37
|
dynamic?: boolean;
|
|
25
38
|
required?: boolean;
|
|
26
|
-
properties?: Record<string, InputField
|
|
39
|
+
properties?: Record<string, Optional<InputField, 'description'>>;
|
|
27
40
|
format?: 'date' | 'time' | 'date-time' | 'uri' | 'uri-reference' | 'uri-template' | 'email' | 'hostname' | 'ipv4' | 'ipv6' | 'regex' | 'uuid' | 'password' | 'text';
|
|
28
41
|
}
|
|
29
42
|
export declare type FieldValue = string | number | boolean | object | Directive;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { Destination, fieldsToJsonSchema } from './destination-kit';
|
|
2
|
+
export { getAuthData } from './destination-kit/parse-settings';
|
|
2
3
|
export { transform } from './mapping-kit';
|
|
3
4
|
export { createTestEvent } from './create-test-event';
|
|
4
5
|
export { createTestIntegration } from './create-test-integration';
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,10 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Headers = exports.Response = exports.Request = exports.fetch = exports.isString = exports.isArray = exports.isObject = exports.realTypeOf = exports.duration = exports.time = exports.removeUndefined = exports.omit = exports.get = exports.RetryableError = exports.InvalidAuthenticationError = exports.IntegrationError = exports.defaultValues = exports.createTestIntegration = exports.createTestEvent = exports.transform = exports.fieldsToJsonSchema = exports.Destination = void 0;
|
|
6
|
+
exports.Headers = exports.Response = exports.Request = exports.fetch = exports.isString = exports.isArray = exports.isObject = exports.realTypeOf = exports.duration = exports.time = exports.removeUndefined = exports.omit = exports.get = exports.RetryableError = exports.InvalidAuthenticationError = exports.IntegrationError = exports.defaultValues = exports.createTestIntegration = exports.createTestEvent = exports.transform = exports.getAuthData = exports.fieldsToJsonSchema = exports.Destination = void 0;
|
|
7
7
|
var destination_kit_1 = require("./destination-kit");
|
|
8
8
|
Object.defineProperty(exports, "Destination", { enumerable: true, get: function () { return destination_kit_1.Destination; } });
|
|
9
9
|
Object.defineProperty(exports, "fieldsToJsonSchema", { enumerable: true, get: function () { return destination_kit_1.fieldsToJsonSchema; } });
|
|
10
|
+
var parse_settings_1 = require("./destination-kit/parse-settings");
|
|
11
|
+
Object.defineProperty(exports, "getAuthData", { enumerable: true, get: function () { return parse_settings_1.getAuthData; } });
|
|
10
12
|
var mapping_kit_1 = require("./mapping-kit");
|
|
11
13
|
Object.defineProperty(exports, "transform", { enumerable: true, get: function () { return mapping_kit_1.transform; } });
|
|
12
14
|
var create_test_event_1 = require("./create-test-event");
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAmE;AAA1D,8GAAA,WAAW,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AACxC,6CAAyC;AAAhC,wGAAA,SAAS,OAAA;AAClB,yDAAqD;AAA5C,oHAAA,eAAe,OAAA;AACxB,qEAAiE;AAAxD,gIAAA,qBAAqB,OAAA;AAC9B,uCAA0C;AAAjC,yGAAA,aAAa,OAAA;AACtB,mCAAuF;AAA9E,0GAAA,gBAAgB,OAAA;AAAE,oHAAA,0BAA0B,OAAA;AAAE,wGAAA,cAAc,OAAA;AACrE,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,+BAAuC;AAA9B,4FAAA,IAAI,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAEvB,+CAAwE;AAA/D,0GAAA,UAAU,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAAE,uGAAA,OAAO,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAGhD,iCAAsE;AAA7D,+GAAA,OAAO,OAAS;AAAE,gGAAA,OAAO,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,gGAAA,OAAO,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,qDAAmE;AAA1D,8GAAA,WAAW,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AACxC,mEAA8D;AAArD,6GAAA,WAAW,OAAA;AACpB,6CAAyC;AAAhC,wGAAA,SAAS,OAAA;AAClB,yDAAqD;AAA5C,oHAAA,eAAe,OAAA;AACxB,qEAAiE;AAAxD,gIAAA,qBAAqB,OAAA;AAC9B,uCAA0C;AAAjC,yGAAA,aAAa,OAAA;AACtB,mCAAuF;AAA9E,0GAAA,gBAAgB,OAAA;AAAE,oHAAA,0BAA0B,OAAA;AAAE,wGAAA,cAAc,OAAA;AACrE,6BAA2B;AAAlB,0FAAA,GAAG,OAAA;AACZ,+BAA6B;AAApB,4FAAA,IAAI,OAAA;AACb,uDAAoD;AAA3C,mHAAA,eAAe,OAAA;AACxB,+BAAuC;AAA9B,4FAAA,IAAI,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAEvB,+CAAwE;AAA/D,0GAAA,UAAU,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAAE,uGAAA,OAAO,OAAA;AAAE,wGAAA,QAAQ,OAAA;AAGhD,iCAAsE;AAA7D,+GAAA,OAAO,OAAS;AAAE,gGAAA,OAAO,OAAA;AAAE,iGAAA,QAAQ,OAAA;AAAE,gGAAA,OAAO,OAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { JSONObject, JSONLikeObject } from '../json-object';
|
|
2
|
-
export declare function transform(mapping: JSONLikeObject,
|
|
2
|
+
export declare function transform(mapping: JSONLikeObject, data?: unknown): JSONObject;
|
|
@@ -80,14 +80,14 @@ function resolve(mapping, payload) {
|
|
|
80
80
|
}
|
|
81
81
|
return mapping;
|
|
82
82
|
}
|
|
83
|
-
function transform(mapping,
|
|
84
|
-
const
|
|
85
|
-
if (
|
|
86
|
-
throw new Error(`payload must be an object, got ${
|
|
83
|
+
function transform(mapping, data = {}) {
|
|
84
|
+
const realType = real_type_of_1.realTypeOf(data);
|
|
85
|
+
if (realType !== 'object') {
|
|
86
|
+
throw new Error(`payload must be an object, got ${realType}`);
|
|
87
87
|
}
|
|
88
88
|
validate_1.default(mapping);
|
|
89
89
|
const cloned = cloneJson(mapping);
|
|
90
|
-
const resolved = resolve(cloned,
|
|
90
|
+
const resolved = resolve(cloned, data);
|
|
91
91
|
const cleaned = remove_undefined_1.removeUndefined(resolved);
|
|
92
92
|
return cleaned;
|
|
93
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mapping-kit/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mapping-kit/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function validateSchema(obj: unknown, schema: object, schemaKey?: string): void;
|
|
@@ -0,0 +1,42 @@
|
|
|
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.validateSchema = void 0;
|
|
7
|
+
const ajv_human_errors_1 = require("@segment/ajv-human-errors");
|
|
8
|
+
const ajv_1 = __importDefault(require("ajv"));
|
|
9
|
+
const dayjs_1 = __importDefault(require("dayjs"));
|
|
10
|
+
const ajv = new ajv_1.default({
|
|
11
|
+
coerceTypes: true,
|
|
12
|
+
allErrors: true,
|
|
13
|
+
verbose: true,
|
|
14
|
+
removeAdditional: true,
|
|
15
|
+
jsonPointers: true
|
|
16
|
+
});
|
|
17
|
+
ajv.addFormat('password', () => true);
|
|
18
|
+
ajv.addFormat('text', () => true);
|
|
19
|
+
ajv.addFormat('date-like', (data) => {
|
|
20
|
+
let date = dayjs_1.default(data);
|
|
21
|
+
if (String(Number(data)) === data) {
|
|
22
|
+
if (data.length === 13) {
|
|
23
|
+
date = dayjs_1.default(Number(data));
|
|
24
|
+
}
|
|
25
|
+
date = dayjs_1.default.unix(Number(data));
|
|
26
|
+
}
|
|
27
|
+
return date.isValid();
|
|
28
|
+
});
|
|
29
|
+
function validateSchema(obj, schema, schemaKey) {
|
|
30
|
+
let validate;
|
|
31
|
+
if (schemaKey) {
|
|
32
|
+
validate = ajv.getSchema(schemaKey) || ajv.addSchema(schema, schemaKey).getSchema(schemaKey);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
validate = ajv.compile(schema);
|
|
36
|
+
}
|
|
37
|
+
if (!validate(obj)) {
|
|
38
|
+
throw new ajv_human_errors_1.AggregateAjvError(validate.errors);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.validateSchema = validateSchema;
|
|
42
|
+
//# sourceMappingURL=schema-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../../src/schema-validation.ts"],"names":[],"mappings":";;;;;;AACA,gEAA6D;AAC7D,8CAAqB;AACrB,kDAAyB;AAEzB,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC;IAElB,WAAW,EAAE,IAAI;IAEjB,SAAS,EAAE,IAAI;IAEf,OAAO,EAAE,IAAI;IAEb,gBAAgB,EAAE,IAAI;IAEtB,YAAY,EAAE,IAAI;CACnB,CAAC,CAAA;AAGF,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AACrC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AACjC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE;IAC1C,IAAI,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,CAAA;IAEtB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;QAEjC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;YACtB,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;SAC3B;QAED,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;KAChC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AAMF,SAAgB,cAAc,CAAC,GAAY,EAAE,MAAc,EAAE,SAAkB;IAC7E,IAAI,QAA8B,CAAA;IAElC,IAAI,SAAS,EAAE;QAEb,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,SAAS,CAAE,CAAA;KAC9F;SAAM;QACL,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;KAC/B;IAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAElB,MAAM,IAAI,oCAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KAC7C;AACH,CAAC;AAdD,wCAcC"}
|
|
@@ -2,16 +2,18 @@ import { Destination } from './destination-kit';
|
|
|
2
2
|
import type { DestinationDefinition } from './destination-kit';
|
|
3
3
|
import type { JSONObject } from './json-object';
|
|
4
4
|
import type { SegmentEvent } from './segment-event';
|
|
5
|
+
import { AuthTokens } from './destination-kit/parse-settings';
|
|
5
6
|
interface InputData<Settings> {
|
|
6
7
|
event?: Partial<SegmentEvent>;
|
|
7
8
|
mapping?: JSONObject;
|
|
8
9
|
settings?: Settings;
|
|
9
10
|
useDefaultMappings?: boolean;
|
|
11
|
+
auth?: AuthTokens;
|
|
10
12
|
}
|
|
11
13
|
declare class TestDestination<T> extends Destination<T> {
|
|
12
14
|
responses: Destination['responses'];
|
|
13
15
|
constructor(destination: DestinationDefinition<T>);
|
|
14
|
-
testAction(action: string, { event, mapping, settings, useDefaultMappings }: InputData<T>): Promise<Destination['responses']>;
|
|
16
|
+
testAction(action: string, { event, mapping, settings, useDefaultMappings, auth }: InputData<T>): Promise<Destination['responses']>;
|
|
15
17
|
}
|
|
16
18
|
export declare function createTestIntegration<T>(destination: DestinationDefinition<T>): TestDestination<T>;
|
|
17
19
|
export {};
|
|
@@ -6,7 +6,7 @@ class TestDestination extends Destination {
|
|
|
6
6
|
super(destination);
|
|
7
7
|
this.responses = [];
|
|
8
8
|
}
|
|
9
|
-
async testAction(action, { event, mapping, settings, useDefaultMappings }) {
|
|
9
|
+
async testAction(action, { event, mapping, settings, useDefaultMappings, auth }) {
|
|
10
10
|
mapping = mapping ?? {};
|
|
11
11
|
if (useDefaultMappings) {
|
|
12
12
|
const fields = this.definition.actions[action].fields;
|
|
@@ -16,7 +16,8 @@ class TestDestination extends Destination {
|
|
|
16
16
|
await super.executeAction(action, {
|
|
17
17
|
event: createTestEvent(event),
|
|
18
18
|
mapping,
|
|
19
|
-
settings: settings ?? {}
|
|
19
|
+
settings: settings ?? {},
|
|
20
|
+
auth
|
|
20
21
|
});
|
|
21
22
|
const responses = this.responses;
|
|
22
23
|
this.responses = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-test-integration.js","sourceRoot":"","sources":["../../src/create-test-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"create-test-integration.js","sourceRoot":"","sources":["../../src/create-test-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAgCxC,MAAM,eAAmB,SAAQ,WAAc;IAG7C,YAAY,WAAqC;QAC/C,KAAK,CAAC,WAAW,CAAC,CAAA;QAHpB,cAAS,GAA6B,EAAE,CAAA;IAIxC,CAAC;IAGD,KAAK,CAAC,UAAU,CACd,MAAc,EACd,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAgB;QAEpE,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QAEvB,IAAI,kBAAkB,EAAE;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;YACrD,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;YACpD,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAgB,CAAA;SAC3D;QAED,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;YAChC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;YAC7B,OAAO;YACP,QAAQ,EAAE,QAAQ,IAAK,EAAQ;YAC/B,IAAI;SACL,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAChC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QAEnB,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAI,WAAqC;IAC5E,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAA;AACzC,CAAC"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import Ajv from 'ajv';
|
|
3
2
|
import { EventEmitter } from 'events';
|
|
4
3
|
import createRequestClient from '../create-request-client';
|
|
5
|
-
import { JSONLikeObject } from '../json-object';
|
|
6
|
-
import {
|
|
7
|
-
import type {
|
|
4
|
+
import { JSONLikeObject, JSONObject } from '../json-object';
|
|
5
|
+
import type { DynamicFieldResponse, InputField, RequestExtension, ExecuteInput, Result } from './types';
|
|
6
|
+
import type { JSONSchema4 } from 'json-schema';
|
|
7
|
+
import { AuthTokens } from './parse-settings';
|
|
8
8
|
declare type MaybePromise<T> = T | Promise<T>;
|
|
9
9
|
declare type RequestClient = ReturnType<typeof createRequestClient>;
|
|
10
10
|
export declare type RequestFn<Settings, Payload, Return = any> = (request: RequestClient, data: ExecuteInput<Settings, Payload>) => MaybePromise<Return>;
|
|
11
11
|
export interface ActionDefinition<Settings, Payload = any> {
|
|
12
12
|
title: string;
|
|
13
13
|
description: string;
|
|
14
|
+
platform?: 'cloud' | 'web';
|
|
14
15
|
defaultSubscription?: string;
|
|
15
16
|
hidden?: boolean;
|
|
16
17
|
fields: Record<string, InputField>;
|
|
@@ -19,28 +20,27 @@ export interface ActionDefinition<Settings, Payload = any> {
|
|
|
19
20
|
};
|
|
20
21
|
perform: RequestFn<Settings, Payload>;
|
|
21
22
|
}
|
|
22
|
-
export declare class Validate<Settings, Payload> extends Step<Settings, Payload> {
|
|
23
|
-
field: ExecuteInputField;
|
|
24
|
-
validate: Ajv.ValidateFunction;
|
|
25
|
-
constructor(field: ExecuteInputField, schema: object);
|
|
26
|
-
executeStep(data: ExecuteInput<Settings, Payload>): Promise<string>;
|
|
27
|
-
}
|
|
28
23
|
interface ExecuteDynamicFieldInput<Settings, Payload> {
|
|
29
24
|
settings: Settings;
|
|
30
25
|
payload: Payload;
|
|
31
26
|
page?: string;
|
|
32
27
|
}
|
|
33
|
-
declare type ExecuteInputField = 'payload' | 'settings';
|
|
34
28
|
export declare class Action<Settings, Payload extends JSONLikeObject> extends EventEmitter {
|
|
35
|
-
readonly
|
|
29
|
+
readonly definition: ActionDefinition<Settings, Payload>;
|
|
30
|
+
readonly destinationName: string;
|
|
31
|
+
readonly schema?: JSONSchema4;
|
|
36
32
|
private extendRequest;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings, Payload>);
|
|
34
|
+
execute(bundle: {
|
|
35
|
+
data: unknown;
|
|
36
|
+
settings: Settings;
|
|
37
|
+
mapping: JSONObject;
|
|
38
|
+
auth: AuthTokens | undefined;
|
|
39
|
+
}): Promise<Result[]>;
|
|
40
|
+
executeDynamicField(field: string, data: ExecuteDynamicFieldInput<Settings, Payload>): unknown;
|
|
41
|
+
private performRequest;
|
|
42
|
+
private createRequestClient;
|
|
43
|
+
private afterResponse;
|
|
44
|
+
private parseResponse;
|
|
45
45
|
}
|
|
46
46
|
export {};
|
|
@@ -1,137 +1,71 @@
|
|
|
1
|
-
import { AggregateAjvError } from '@segment/ajv-human-errors';
|
|
2
|
-
import Ajv from 'ajv';
|
|
3
|
-
import dayjs from 'dayjs';
|
|
4
1
|
import { EventEmitter } from 'events';
|
|
5
2
|
import createRequestClient from '../create-request-client';
|
|
6
3
|
import { transform } from '../mapping-kit';
|
|
7
4
|
import { fieldsToJsonSchema } from './fields-to-jsonschema';
|
|
8
5
|
import { Response } from '../fetch';
|
|
9
|
-
import {
|
|
10
|
-
class MapInput extends Step {
|
|
11
|
-
executeStep(data) {
|
|
12
|
-
if (data.mapping) {
|
|
13
|
-
data.payload = transform(data.mapping, data.payload);
|
|
14
|
-
}
|
|
15
|
-
return Promise.resolve('MapInput completed');
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
const ajv = new Ajv({
|
|
19
|
-
coerceTypes: true,
|
|
20
|
-
allErrors: true,
|
|
21
|
-
verbose: true,
|
|
22
|
-
removeAdditional: true,
|
|
23
|
-
jsonPointers: true
|
|
24
|
-
});
|
|
25
|
-
ajv.addFormat('password', () => true);
|
|
26
|
-
ajv.addFormat('text', () => true);
|
|
27
|
-
ajv.addFormat('date-like', (data) => {
|
|
28
|
-
let date = dayjs(data);
|
|
29
|
-
if (String(Number(data)) === data) {
|
|
30
|
-
if (data.length === 13) {
|
|
31
|
-
date = dayjs(Number(data));
|
|
32
|
-
}
|
|
33
|
-
date = dayjs.unix(Number(data));
|
|
34
|
-
}
|
|
35
|
-
return date.isValid();
|
|
36
|
-
});
|
|
37
|
-
export class Validate extends Step {
|
|
38
|
-
constructor(field, schema) {
|
|
39
|
-
super();
|
|
40
|
-
this.field = field;
|
|
41
|
-
this.validate = ajv.compile(schema);
|
|
42
|
-
}
|
|
43
|
-
executeStep(data) {
|
|
44
|
-
if (!this.validate(data[this.field])) {
|
|
45
|
-
throw new AggregateAjvError(this.validate.errors);
|
|
46
|
-
}
|
|
47
|
-
return Promise.resolve('Validate completed');
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
class Request extends Step {
|
|
51
|
-
constructor(extendRequest, requestFn) {
|
|
52
|
-
super();
|
|
53
|
-
this.extendRequest = extendRequest;
|
|
54
|
-
this.requestFn = requestFn;
|
|
55
|
-
}
|
|
56
|
-
async executeStep(data) {
|
|
57
|
-
if (!this.requestFn) {
|
|
58
|
-
return '';
|
|
59
|
-
}
|
|
60
|
-
const requestClient = this.createRequestClient(data);
|
|
61
|
-
const response = await this.requestFn(requestClient, data);
|
|
62
|
-
if (response instanceof Response) {
|
|
63
|
-
return response.data ?? response.content;
|
|
64
|
-
}
|
|
65
|
-
return response;
|
|
66
|
-
}
|
|
67
|
-
createRequestClient(data) {
|
|
68
|
-
const options = this.extendRequest?.(data) ?? {};
|
|
69
|
-
const client = createRequestClient(options, {
|
|
70
|
-
afterResponse: [
|
|
71
|
-
(request, options, response) => {
|
|
72
|
-
const modifiedResponse = response;
|
|
73
|
-
modifiedResponse.request = request;
|
|
74
|
-
modifiedResponse.options = options;
|
|
75
|
-
this.emit('response', modifiedResponse);
|
|
76
|
-
return modifiedResponse;
|
|
77
|
-
}
|
|
78
|
-
]
|
|
79
|
-
});
|
|
80
|
-
return client;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
6
|
+
import { validateSchema } from '../schema-validation';
|
|
83
7
|
export class Action extends EventEmitter {
|
|
84
|
-
constructor(definition, extendRequest) {
|
|
8
|
+
constructor(destinationName, definition, extendRequest) {
|
|
85
9
|
super();
|
|
86
|
-
this.
|
|
87
|
-
|
|
88
|
-
this.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
this.extendRequest = extendRequest;
|
|
10
|
+
this.definition = definition;
|
|
11
|
+
this.destinationName = destinationName;
|
|
12
|
+
this.extendRequest = extendRequest;
|
|
13
|
+
if (Object.keys(definition.fields ?? {}).length) {
|
|
14
|
+
this.schema = fieldsToJsonSchema(definition.fields);
|
|
92
15
|
}
|
|
93
|
-
this.loadDefinition(definition);
|
|
94
16
|
}
|
|
95
|
-
async execute(
|
|
96
|
-
const results =
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
17
|
+
async execute(bundle) {
|
|
18
|
+
const results = [];
|
|
19
|
+
const payload = transform(bundle.mapping, bundle.data);
|
|
20
|
+
results.push({ output: 'Mappings resolved' });
|
|
21
|
+
if (this.schema) {
|
|
22
|
+
validateSchema(payload, this.schema, `${this.destinationName}:${this.definition.title}`);
|
|
23
|
+
results.push({ output: 'Payload validated' });
|
|
100
24
|
}
|
|
25
|
+
const dataBundle = {
|
|
26
|
+
rawData: bundle.data,
|
|
27
|
+
rawMapping: bundle.mapping,
|
|
28
|
+
settings: bundle.settings,
|
|
29
|
+
payload,
|
|
30
|
+
auth: bundle.auth
|
|
31
|
+
};
|
|
32
|
+
const output = await this.performRequest(this.definition.perform, dataBundle);
|
|
33
|
+
results.push({ output: output });
|
|
101
34
|
return results;
|
|
102
35
|
}
|
|
103
36
|
executeDynamicField(field, data) {
|
|
104
|
-
|
|
37
|
+
const fn = this.definition.dynamicFields?.[field];
|
|
38
|
+
if (typeof fn !== 'function') {
|
|
105
39
|
return {
|
|
106
40
|
data: [],
|
|
107
41
|
pagination: {}
|
|
108
42
|
};
|
|
109
43
|
}
|
|
110
|
-
|
|
111
|
-
return step.executeStep(data);
|
|
44
|
+
return this.performRequest(fn, data);
|
|
112
45
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
Object.entries(definition.dynamicFields ?? {}).forEach(([field, callback]) => {
|
|
118
|
-
this.dynamicField(field, callback);
|
|
119
|
-
});
|
|
120
|
-
if (definition.perform) {
|
|
121
|
-
this.request(definition.perform);
|
|
122
|
-
}
|
|
46
|
+
async performRequest(requestFn, data) {
|
|
47
|
+
const requestClient = this.createRequestClient(data);
|
|
48
|
+
const response = await requestFn(requestClient, data);
|
|
49
|
+
return this.parseResponse(response);
|
|
123
50
|
}
|
|
124
|
-
|
|
125
|
-
const
|
|
126
|
-
|
|
51
|
+
createRequestClient(data) {
|
|
52
|
+
const options = this.extendRequest?.(data) ?? {};
|
|
53
|
+
return createRequestClient(options, {
|
|
54
|
+
afterResponse: [this.afterResponse.bind(this)]
|
|
55
|
+
});
|
|
127
56
|
}
|
|
128
|
-
|
|
129
|
-
|
|
57
|
+
afterResponse(request, options, response) {
|
|
58
|
+
const modifiedResponse = response;
|
|
59
|
+
modifiedResponse.request = request;
|
|
60
|
+
modifiedResponse.options = options;
|
|
61
|
+
this.emit('response', modifiedResponse);
|
|
62
|
+
return modifiedResponse;
|
|
130
63
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
64
|
+
parseResponse(response) {
|
|
65
|
+
if (response instanceof Response) {
|
|
66
|
+
return response.data ?? response.content;
|
|
67
|
+
}
|
|
68
|
+
return response;
|
|
135
69
|
}
|
|
136
70
|
}
|
|
137
71
|
//# sourceMappingURL=action.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { JSONSchema4 } from 'json-schema';
|
|
2
|
-
import type { InputField } from './types';
|
|
3
|
-
|
|
2
|
+
import type { InputField, Optional } from './types';
|
|
3
|
+
declare type MinimalInputField = Optional<InputField, 'description'>;
|
|
4
|
+
export declare function fieldsToJsonSchema(fields?: Record<string, MinimalInputField>): JSONSchema4;
|
|
5
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields-to-jsonschema.js","sourceRoot":"","sources":["../../../src/destination-kit/fields-to-jsonschema.ts"],"names":[],"mappings":"AAGA,SAAS,gBAAgB,CAAC,IAAmB;IAC3C,QAAQ,IAAI,EAAE;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,QAAQ,CAAA;QACjB,KAAK,UAAU;YACb,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC7B;YACE,OAAO,IAAI,CAAA;KACd;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"fields-to-jsonschema.js","sourceRoot":"","sources":["../../../src/destination-kit/fields-to-jsonschema.ts"],"names":[],"mappings":"AAGA,SAAS,gBAAgB,CAAC,IAAmB;IAC3C,QAAQ,IAAI,EAAE;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,OAAO,QAAQ,CAAA;QACjB,KAAK,UAAU;YACb,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC7B;YACE,OAAO,IAAI,CAAA;KACd;AACH,CAAC;AAID,MAAM,UAAU,kBAAkB,CAAC,SAA4C,EAAE;IAC/E,MAAM,QAAQ,GAAa,EAAE,CAAA;IAC7B,MAAM,UAAU,GAAgC,EAAE,CAAA;IAElD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACjD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAE/C,IAAI,MAAM,GAAgB;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAA0B;SAC1C,CAAA;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;YAC7B,MAAM,CAAC,MAAM,GAAG,WAAW,CAAA;YAE3B,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAA;SAClC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;YACpC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAA;SAC3B;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YAChC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;SACvB;QAED,IAAI,KAAK,CAAC,OAAO,EAAE;YACjB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAA;YAC1B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;SACtB;QAED,IAAI,KAAK,CAAC,SAAS,EAAE;YACnB,MAAM,CAAC,IAAI,GAAI,EAA4B,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAEtE,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACxE,MAAM,CAAC,MAAM,IAAI,SAAS,CAAA;aAC3B;SACF;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;YACnC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAA;SACtB;QAID,IAAI,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE;YAC/C,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,MAAM,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;aACpD;iBAAM;gBACL,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAA;aAChE;SACF;QAED,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;QAGxB,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACnB;KACF;IAED,OAAO;QACL,OAAO,EAAE,gCAAgC;QACzC,IAAI,EAAE,QAAQ;QACd,oBAAoB,EAAE,KAAK;QAC3B,UAAU;QACV,QAAQ;KACT,CAAA;AACH,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { JSONSchema4 } from 'json-schema';
|
|
1
|
+
import type { JSONSchema4 } from 'json-schema';
|
|
2
2
|
import { Action, ActionDefinition, RequestFn } from './action';
|
|
3
|
-
import { ExecuteInput, StepResult } from './step';
|
|
4
3
|
import { JSONLikeObject, JSONObject } from '../json-object';
|
|
5
4
|
import { SegmentEvent } from '../segment-event';
|
|
6
5
|
import { fieldsToJsonSchema } from './fields-to-jsonschema';
|
|
7
6
|
import { RequestClient } from '../create-request-client';
|
|
8
7
|
import type { ModifiedResponse } from '../types';
|
|
9
|
-
import type { InputField, RequestExtension } from './types';
|
|
8
|
+
import type { InputField, RequestExtension, ExecuteInput, Result } from './types';
|
|
10
9
|
import type { AllRequestOptions } from '../request-client';
|
|
10
|
+
import { AuthTokens } from './parse-settings';
|
|
11
11
|
export type { ActionDefinition, ExecuteInput, RequestFn };
|
|
12
12
|
export { fieldsToJsonSchema };
|
|
13
13
|
export interface SubscriptionStats {
|
|
@@ -17,7 +17,7 @@ export interface SubscriptionStats {
|
|
|
17
17
|
subscribe: string;
|
|
18
18
|
state: string;
|
|
19
19
|
input: JSONLikeObject;
|
|
20
|
-
output:
|
|
20
|
+
output: Result[] | null;
|
|
21
21
|
}
|
|
22
22
|
interface PartnerActions<Settings, Payload extends JSONLikeObject> {
|
|
23
23
|
[key: string]: Action<Settings, Payload>;
|
|
@@ -39,7 +39,7 @@ export interface Subscription {
|
|
|
39
39
|
subscribe: string;
|
|
40
40
|
mapping?: JSONObject;
|
|
41
41
|
}
|
|
42
|
-
export interface OAuth2ClientCredentials {
|
|
42
|
+
export interface OAuth2ClientCredentials extends AuthTokens {
|
|
43
43
|
clientId: string;
|
|
44
44
|
clientSecret: string;
|
|
45
45
|
}
|
|
@@ -49,6 +49,11 @@ export interface RefreshAccessTokenResult {
|
|
|
49
49
|
}
|
|
50
50
|
interface AuthSettings<Settings> {
|
|
51
51
|
settings: Settings;
|
|
52
|
+
auth: AuthTokens;
|
|
53
|
+
}
|
|
54
|
+
interface RefreshAuthSettings<Settings> {
|
|
55
|
+
settings: Settings;
|
|
56
|
+
auth: OAuth2ClientCredentials;
|
|
52
57
|
}
|
|
53
58
|
interface Authentication<Settings> {
|
|
54
59
|
scheme: 'basic' | 'custom' | 'oauth2';
|
|
@@ -63,13 +68,14 @@ export interface BasicAuthentication<Settings> extends Authentication<Settings>
|
|
|
63
68
|
}
|
|
64
69
|
export interface OAuth2Authentication<Settings> extends Authentication<Settings> {
|
|
65
70
|
scheme: 'oauth2';
|
|
66
|
-
refreshAccessToken?: (request: RequestClient, input:
|
|
71
|
+
refreshAccessToken?: (request: RequestClient, input: RefreshAuthSettings<Settings>) => Promise<RefreshAccessTokenResult>;
|
|
67
72
|
}
|
|
68
73
|
export declare type AuthenticationScheme<Settings = any> = BasicAuthentication<Settings> | CustomAuthentication<Settings> | OAuth2Authentication<Settings>;
|
|
69
74
|
interface EventInput<Settings> {
|
|
70
75
|
readonly event: SegmentEvent;
|
|
71
76
|
readonly mapping: JSONObject;
|
|
72
77
|
readonly settings: Settings;
|
|
78
|
+
readonly auth?: AuthTokens;
|
|
73
79
|
}
|
|
74
80
|
export interface DecoratedResponse extends ModifiedResponse {
|
|
75
81
|
request: Request;
|
|
@@ -85,11 +91,15 @@ export declare class Destination<Settings = JSONObject> {
|
|
|
85
91
|
readonly settingsSchema?: JSONSchema4;
|
|
86
92
|
constructor(destination: DestinationDefinition<Settings>);
|
|
87
93
|
testAuthentication(settings: Settings): Promise<void>;
|
|
88
|
-
refreshAccessToken(settings: Settings,
|
|
94
|
+
refreshAccessToken(settings: Settings, oauthData: OAuth2ClientCredentials): Promise<RefreshAccessTokenResult> | undefined;
|
|
89
95
|
private partnerAction;
|
|
90
|
-
protected executeAction(actionSlug: string, { event, mapping, settings }: EventInput<Settings>): Promise<
|
|
96
|
+
protected executeAction(actionSlug: string, { event, mapping, settings, auth }: EventInput<Settings>): Promise<Result[]>;
|
|
91
97
|
private onSubscription;
|
|
92
|
-
onEvent(event: SegmentEvent, settings: JSONObject,
|
|
98
|
+
onEvent(event: SegmentEvent, settings: JSONObject, options?: {
|
|
99
|
+
onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
|
|
100
|
+
onComplete?: (stats: SubscriptionStats) => void;
|
|
101
|
+
}): Promise<Result[]>;
|
|
102
|
+
private onEventInternal;
|
|
93
103
|
private getSubscriptions;
|
|
94
104
|
private getDestinationSettings;
|
|
95
105
|
}
|