@segment/actions-core 3.8.4-alpha.3 → 3.8.4-canary.16
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-request-client.js +1 -1
- package/dist/cjs/create-request-client.js.map +1 -1
- package/dist/cjs/create-test-integration.d.ts +3 -0
- package/dist/cjs/create-test-integration.js +20 -0
- package/dist/cjs/create-test-integration.js.map +1 -1
- package/dist/cjs/destination-kit/action.d.ts +12 -7
- package/dist/cjs/destination-kit/action.js +31 -1
- package/dist/cjs/destination-kit/action.js.map +1 -1
- package/dist/cjs/destination-kit/index.d.ts +17 -6
- package/dist/cjs/destination-kit/index.js +71 -48
- package/dist/cjs/destination-kit/index.js.map +1 -1
- package/dist/cjs/destination-kit/types.d.ts +1 -1
- package/dist/cjs/mapping-kit/index.d.ts +5 -1
- package/dist/cjs/mapping-kit/index.js +15 -2
- package/dist/cjs/mapping-kit/index.js.map +1 -1
- package/dist/cjs/retry.d.ts +6 -0
- package/dist/cjs/retry.js +23 -0
- package/dist/cjs/retry.js.map +1 -0
- package/dist/cjs/schema-validation.d.ts +6 -1
- package/dist/cjs/schema-validation.js +11 -8
- package/dist/cjs/schema-validation.js.map +1 -1
- package/dist/esm/create-request-client.js +1 -1
- package/dist/esm/create-request-client.js.map +1 -1
- package/dist/esm/create-test-integration.d.ts +3 -0
- package/dist/esm/create-test-integration.js +20 -0
- package/dist/esm/create-test-integration.js.map +1 -1
- package/dist/esm/destination-kit/action.d.ts +12 -7
- package/dist/esm/destination-kit/action.js +32 -2
- package/dist/esm/destination-kit/action.js.map +1 -1
- package/dist/esm/destination-kit/index.d.ts +17 -6
- package/dist/esm/destination-kit/index.js +71 -48
- package/dist/esm/destination-kit/index.js.map +1 -1
- package/dist/esm/destination-kit/types.d.ts +1 -1
- package/dist/esm/mapping-kit/index.d.ts +5 -1
- package/dist/esm/mapping-kit/index.js +13 -1
- package/dist/esm/mapping-kit/index.js.map +1 -1
- package/dist/esm/retry.d.ts +6 -0
- package/dist/esm/retry.js +19 -0
- package/dist/esm/retry.js.map +1 -0
- package/dist/esm/schema-validation.d.ts +6 -1
- package/dist/esm/schema-validation.js +11 -8
- package/dist/esm/schema-validation.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +7 -6
|
@@ -10,7 +10,7 @@ const request_client_1 = __importDefault(require("./request-client"));
|
|
|
10
10
|
const baseClient = request_client_1.default({
|
|
11
11
|
timeout: 10000,
|
|
12
12
|
headers: {
|
|
13
|
-
'user-agent': 'Segment'
|
|
13
|
+
'user-agent': 'Segment (Actions)'
|
|
14
14
|
},
|
|
15
15
|
beforeRequest: [
|
|
16
16
|
add_basic_auth_header_1.default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-request-client.js","sourceRoot":"","sources":["../../src/create-request-client.ts"],"names":[],"mappings":";;;;;AAAA,8GAAkF;AAClF,kGAAwE;AACxE,oGAA0E;AAC1E,sEAAoF;AAGpF,MAAM,UAAU,GAAG,wBAAc,CAAC;IAChC,OAAO,EAAE,KAAK;IACd,OAAO,EAAE;QACP,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"create-request-client.js","sourceRoot":"","sources":["../../src/create-request-client.ts"],"names":[],"mappings":";;;;;AAAA,8GAAkF;AAClF,kGAAwE;AACxE,oGAA0E;AAC1E,sEAAoF;AAGpF,MAAM,UAAU,GAAG,wBAAc,CAAC;IAChC,OAAO,EAAE,KAAK;IACd,OAAO,EAAE;QACP,YAAY,EAAE,mBAAmB;KAClC;IACD,aAAa,EAAE;QAEb,+BAAkB;KACnB;IACD,aAAa,EAAE,CAAC,0BAAe,EAAE,yBAAc,CAAC;CACjD,CAAC,CAAA;AAOF,SAAwB,mBAAmB,CAAC,GAAG,cAAmC;IAChF,IAAI,MAAM,GAAG,UAAU,CAAA;IAIvB,KAAK,MAAM,OAAO,IAAI,cAAc,IAAI,EAAE,EAAE;QAC1C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;KAChC;IAGD,OAAO,CAAiB,GAAW,EAAE,OAAwB,EAAE,EAAE;QAC/D,OAAO,MAAM,CAAyB,GAAG,EAAE,OAAO,CAAC,CAAA;IACrD,CAAC,CAAA;AACH,CAAC;AAbD,sCAaC"}
|
|
@@ -14,6 +14,9 @@ declare class TestDestination<T> extends Destination<T> {
|
|
|
14
14
|
responses: Destination['responses'];
|
|
15
15
|
constructor(destination: DestinationDefinition<T>);
|
|
16
16
|
testAction(action: string, { event, mapping, settings, useDefaultMappings, auth }: InputData<T>): Promise<Destination['responses']>;
|
|
17
|
+
testBatchAction(action: string, { events, mapping, settings, useDefaultMappings, auth }: Omit<InputData<T>, 'event'> & {
|
|
18
|
+
events?: SegmentEvent[];
|
|
19
|
+
}): Promise<Destination['responses']>;
|
|
17
20
|
}
|
|
18
21
|
export declare function createTestIntegration<T>(destination: DestinationDefinition<T>): TestDestination<T>;
|
|
19
22
|
export {};
|
|
@@ -26,6 +26,26 @@ class TestDestination extends destination_kit_1.Destination {
|
|
|
26
26
|
this.responses = [];
|
|
27
27
|
return responses;
|
|
28
28
|
}
|
|
29
|
+
async testBatchAction(action, { events, mapping, settings, useDefaultMappings, auth }) {
|
|
30
|
+
mapping = mapping ?? {};
|
|
31
|
+
if (useDefaultMappings) {
|
|
32
|
+
const fields = this.definition.actions[action].fields;
|
|
33
|
+
const defaultMappings = map_values_1.mapValues(fields, 'default');
|
|
34
|
+
mapping = { ...defaultMappings, ...mapping };
|
|
35
|
+
}
|
|
36
|
+
if (!events || !events.length) {
|
|
37
|
+
events = [{ type: 'track' }];
|
|
38
|
+
}
|
|
39
|
+
await super.executeBatch(action, {
|
|
40
|
+
events: events.map((event) => create_test_event_1.createTestEvent(event)),
|
|
41
|
+
mapping,
|
|
42
|
+
settings: settings ?? {},
|
|
43
|
+
auth
|
|
44
|
+
});
|
|
45
|
+
const responses = this.responses;
|
|
46
|
+
this.responses = [];
|
|
47
|
+
return responses;
|
|
48
|
+
}
|
|
29
49
|
}
|
|
30
50
|
function createTestIntegration(destination) {
|
|
31
51
|
return new TestDestination(destination);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-test-integration.js","sourceRoot":"","sources":["../../src/create-test-integration.ts"],"names":[],"mappings":";;;AAAA,2DAAqD;AACrD,uDAA+C;AAC/C,6CAAwC;AAgCxC,MAAM,eAAmB,SAAQ,6BAAc;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,sBAAS,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,mCAAe,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,SAAgB,qBAAqB,CAAI,WAAqC;IAC5E,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAA;AACzC,CAAC;AAFD,sDAEC"}
|
|
1
|
+
{"version":3,"file":"create-test-integration.js","sourceRoot":"","sources":["../../src/create-test-integration.ts"],"names":[],"mappings":";;;AAAA,2DAAqD;AACrD,uDAA+C;AAC/C,6CAAwC;AAgCxC,MAAM,eAAmB,SAAQ,6BAAc;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,sBAAS,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,mCAAe,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;IAED,KAAK,CAAC,eAAe,CACnB,MAAc,EACd,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAA6D;QAElH,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,sBAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;YACpD,OAAO,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAgB,CAAA;SAC3D;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC7B,MAAM,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;SAC7B;QAED,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE;YAC/B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mCAAe,CAAC,KAAK,CAAC,CAAC;YACrD,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,SAAgB,qBAAqB,CAAI,WAAqC;IAC5E,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,CAAA;AACzC,CAAC;AAFD,sDAEC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import createRequestClient from '../create-request-client';
|
|
4
4
|
import { JSONLikeObject, JSONObject } from '../json-object';
|
|
5
|
+
import { InputData } from '../mapping-kit';
|
|
5
6
|
import type { DynamicFieldResponse, InputField, RequestExtension, ExecuteInput, Result } from './types';
|
|
6
7
|
import type { JSONSchema4 } from 'json-schema';
|
|
7
8
|
import { AuthTokens } from './parse-settings';
|
|
@@ -21,24 +22,28 @@ export interface ActionDefinition<Settings, Payload = any> extends BaseActionDef
|
|
|
21
22
|
[K in keyof Payload]?: RequestFn<Settings, Payload, DynamicFieldResponse>;
|
|
22
23
|
};
|
|
23
24
|
perform: RequestFn<Settings, Payload>;
|
|
25
|
+
performBatch?: RequestFn<Settings, Payload[]>;
|
|
24
26
|
}
|
|
25
27
|
interface ExecuteDynamicFieldInput<Settings, Payload> {
|
|
26
28
|
settings: Settings;
|
|
27
29
|
payload: Payload;
|
|
28
30
|
page?: string;
|
|
29
31
|
}
|
|
32
|
+
interface ExecuteBundle<T = unknown, Data = unknown> {
|
|
33
|
+
data: Data;
|
|
34
|
+
settings: T;
|
|
35
|
+
mapping: JSONObject;
|
|
36
|
+
auth: AuthTokens | undefined;
|
|
37
|
+
}
|
|
30
38
|
export declare class Action<Settings, Payload extends JSONLikeObject> extends EventEmitter {
|
|
31
39
|
readonly definition: ActionDefinition<Settings, Payload>;
|
|
32
40
|
readonly destinationName: string;
|
|
33
41
|
readonly schema?: JSONSchema4;
|
|
42
|
+
readonly hasBatchSupport: boolean;
|
|
34
43
|
private extendRequest;
|
|
35
|
-
constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings
|
|
36
|
-
execute(bundle:
|
|
37
|
-
|
|
38
|
-
settings: Settings;
|
|
39
|
-
mapping: JSONObject;
|
|
40
|
-
auth: AuthTokens | undefined;
|
|
41
|
-
}): Promise<Result[]>;
|
|
44
|
+
constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings>);
|
|
45
|
+
execute(bundle: ExecuteBundle<Settings, InputData | undefined>): Promise<Result[]>;
|
|
46
|
+
executeBatch(bundle: ExecuteBundle<Settings, InputData[]>): Promise<void>;
|
|
42
47
|
executeDynamicField(field: string, data: ExecuteDynamicFieldInput<Settings, Payload>): unknown;
|
|
43
48
|
private performRequest;
|
|
44
49
|
private createRequestClient;
|
|
@@ -10,12 +10,14 @@ const mapping_kit_1 = require("../mapping-kit");
|
|
|
10
10
|
const fields_to_jsonschema_1 = require("./fields-to-jsonschema");
|
|
11
11
|
const fetch_1 = require("../fetch");
|
|
12
12
|
const schema_validation_1 = require("../schema-validation");
|
|
13
|
+
const errors_1 = require("../errors");
|
|
13
14
|
class Action extends events_1.EventEmitter {
|
|
14
15
|
constructor(destinationName, definition, extendRequest) {
|
|
15
16
|
super();
|
|
16
17
|
this.definition = definition;
|
|
17
18
|
this.destinationName = destinationName;
|
|
18
19
|
this.extendRequest = extendRequest;
|
|
20
|
+
this.hasBatchSupport = typeof definition.performBatch === 'function';
|
|
19
21
|
if (Object.keys(definition.fields ?? {}).length) {
|
|
20
22
|
this.schema = fields_to_jsonschema_1.fieldsToJsonSchema(definition.fields);
|
|
21
23
|
}
|
|
@@ -25,7 +27,8 @@ class Action extends events_1.EventEmitter {
|
|
|
25
27
|
const payload = mapping_kit_1.transform(bundle.mapping, bundle.data);
|
|
26
28
|
results.push({ output: 'Mappings resolved' });
|
|
27
29
|
if (this.schema) {
|
|
28
|
-
|
|
30
|
+
const schemaKey = `${this.destinationName}:${this.definition.title}`;
|
|
31
|
+
schema_validation_1.validateSchema(payload, this.schema, { schemaKey });
|
|
29
32
|
results.push({ output: 'Payload validated' });
|
|
30
33
|
}
|
|
31
34
|
const dataBundle = {
|
|
@@ -39,6 +42,33 @@ class Action extends events_1.EventEmitter {
|
|
|
39
42
|
results.push({ output: output });
|
|
40
43
|
return results;
|
|
41
44
|
}
|
|
45
|
+
async executeBatch(bundle) {
|
|
46
|
+
if (!this.hasBatchSupport) {
|
|
47
|
+
throw new errors_1.IntegrationError('This action does not support batched requests.', 'NotImplemented', 501);
|
|
48
|
+
}
|
|
49
|
+
let payloads = mapping_kit_1.transformBatch(bundle.mapping, bundle.data);
|
|
50
|
+
if (this.schema) {
|
|
51
|
+
const schema = this.schema;
|
|
52
|
+
const schemaKey = `${this.destinationName}:${this.definition.title}`;
|
|
53
|
+
payloads = payloads.filter((payload) => schema_validation_1.validateSchema(payload, schema, {
|
|
54
|
+
schemaKey,
|
|
55
|
+
throwIfInvalid: false
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
if (payloads.length === 0) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (this.definition.performBatch) {
|
|
62
|
+
const data = {
|
|
63
|
+
rawData: bundle.data,
|
|
64
|
+
rawMapping: bundle.mapping,
|
|
65
|
+
settings: bundle.settings,
|
|
66
|
+
payload: payloads,
|
|
67
|
+
auth: bundle.auth
|
|
68
|
+
};
|
|
69
|
+
await this.performRequest(this.definition.performBatch, data);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
42
72
|
executeDynamicField(field, data) {
|
|
43
73
|
const fn = this.definition.dynamicFields?.[field];
|
|
44
74
|
if (typeof fn !== 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAqC;AACrC,qFAA0D;AAE1D,
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,6 @@ export interface SubscriptionStats {
|
|
|
16
16
|
destination: string;
|
|
17
17
|
action: string;
|
|
18
18
|
subscribe: string;
|
|
19
|
-
state: string;
|
|
20
19
|
input: JSONLikeObject;
|
|
21
20
|
output: Result[] | null;
|
|
22
21
|
}
|
|
@@ -81,10 +80,20 @@ interface EventInput<Settings> {
|
|
|
81
80
|
readonly settings: Settings;
|
|
82
81
|
readonly auth?: AuthTokens;
|
|
83
82
|
}
|
|
83
|
+
interface BatchEventInput<Settings> {
|
|
84
|
+
readonly events: SegmentEvent[];
|
|
85
|
+
readonly mapping: JSONObject;
|
|
86
|
+
readonly settings: Settings;
|
|
87
|
+
readonly auth?: AuthTokens;
|
|
88
|
+
}
|
|
84
89
|
export interface DecoratedResponse extends ModifiedResponse {
|
|
85
90
|
request: Request;
|
|
86
91
|
options: AllRequestOptions;
|
|
87
92
|
}
|
|
93
|
+
interface OnEventOptions {
|
|
94
|
+
onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
|
|
95
|
+
onComplete?: (stats: SubscriptionStats) => void;
|
|
96
|
+
}
|
|
88
97
|
export declare class Destination<Settings = JSONObject> {
|
|
89
98
|
readonly definition: DestinationDefinition<Settings>;
|
|
90
99
|
readonly name: string;
|
|
@@ -94,16 +103,18 @@ export declare class Destination<Settings = JSONObject> {
|
|
|
94
103
|
readonly responses: DecoratedResponse[];
|
|
95
104
|
readonly settingsSchema?: JSONSchema4;
|
|
96
105
|
constructor(destination: DestinationDefinition<Settings>);
|
|
106
|
+
validateSettings(settings: Settings): void;
|
|
97
107
|
testAuthentication(settings: Settings): Promise<void>;
|
|
98
108
|
refreshAccessToken(settings: Settings, oauthData: OAuth2ClientCredentials): Promise<RefreshAccessTokenResult> | undefined;
|
|
99
109
|
private partnerAction;
|
|
100
110
|
protected executeAction(actionSlug: string, { event, mapping, settings, auth }: EventInput<Settings>): Promise<Result[]>;
|
|
111
|
+
executeBatch(actionSlug: string, { events, mapping, settings, auth }: BatchEventInput<Settings>): Promise<{
|
|
112
|
+
output: string;
|
|
113
|
+
}[]>;
|
|
101
114
|
private onSubscription;
|
|
102
|
-
onEvent(event: SegmentEvent, settings: JSONObject, options?:
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}): Promise<Result[]>;
|
|
106
|
-
private onEventInternal;
|
|
115
|
+
onEvent(event: SegmentEvent, settings: JSONObject, options?: OnEventOptions): Promise<Result[]>;
|
|
116
|
+
onBatch(events: SegmentEvent[], settings: JSONObject, options?: OnEventOptions): Promise<Result[]>;
|
|
117
|
+
private onSubscriptions;
|
|
107
118
|
private getSubscriptions;
|
|
108
119
|
private getDestinationSettings;
|
|
109
120
|
}
|
|
@@ -13,7 +13,7 @@ const create_request_client_1 = __importDefault(require("../create-request-clien
|
|
|
13
13
|
const schema_validation_1 = require("../schema-validation");
|
|
14
14
|
const errors_1 = require("../errors");
|
|
15
15
|
const parse_settings_1 = require("./parse-settings");
|
|
16
|
-
const
|
|
16
|
+
const retry_1 = require("../retry");
|
|
17
17
|
const OAUTH2_SCHEME = 'oauth2';
|
|
18
18
|
class Destination {
|
|
19
19
|
constructor(destination) {
|
|
@@ -30,14 +30,25 @@ class Destination {
|
|
|
30
30
|
this.partnerAction(action, destination.actions[action]);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
validateSettings(settings) {
|
|
34
|
+
if (this.settingsSchema) {
|
|
35
|
+
try {
|
|
36
|
+
schema_validation_1.validateSchema(settings, this.settingsSchema, { schemaKey: `${this.name}:settings` });
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error.name === 'AggregateAjvError' || error.name === 'ValidationError') {
|
|
40
|
+
error.status = 400;
|
|
41
|
+
}
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
33
46
|
async testAuthentication(settings) {
|
|
34
47
|
const destinationSettings = this.getDestinationSettings(settings);
|
|
35
48
|
const auth = parse_settings_1.getAuthData(settings);
|
|
36
49
|
const data = { settings: destinationSettings, auth };
|
|
37
|
-
const context = { settings: destinationSettings, payload:
|
|
38
|
-
|
|
39
|
-
schema_validation_1.validateSchema(settings, this.settingsSchema, `${this.name}:settings`);
|
|
40
|
-
}
|
|
50
|
+
const context = { settings: destinationSettings, payload: undefined, auth };
|
|
51
|
+
this.validateSettings(destinationSettings);
|
|
41
52
|
if (!this.authentication?.testAuthentication) {
|
|
42
53
|
return;
|
|
43
54
|
}
|
|
@@ -56,7 +67,7 @@ class Destination {
|
|
|
56
67
|
}
|
|
57
68
|
const context = {
|
|
58
69
|
settings,
|
|
59
|
-
payload:
|
|
70
|
+
payload: undefined,
|
|
60
71
|
auth: parse_settings_1.getAuthData(settings)
|
|
61
72
|
};
|
|
62
73
|
const options = this.extendRequest?.(context) ?? {};
|
|
@@ -76,10 +87,10 @@ class Destination {
|
|
|
76
87
|
this.actions[slug] = action;
|
|
77
88
|
return this;
|
|
78
89
|
}
|
|
79
|
-
executeAction(actionSlug, { event, mapping, settings, auth }) {
|
|
90
|
+
async executeAction(actionSlug, { event, mapping, settings, auth }) {
|
|
80
91
|
const action = this.actions[actionSlug];
|
|
81
92
|
if (!action) {
|
|
82
|
-
return
|
|
93
|
+
return [];
|
|
83
94
|
}
|
|
84
95
|
return action.execute({
|
|
85
96
|
mapping,
|
|
@@ -88,41 +99,53 @@ class Destination {
|
|
|
88
99
|
auth
|
|
89
100
|
});
|
|
90
101
|
}
|
|
91
|
-
async
|
|
102
|
+
async executeBatch(actionSlug, { events, mapping, settings, auth }) {
|
|
103
|
+
const action = this.actions[actionSlug];
|
|
104
|
+
if (!action) {
|
|
105
|
+
return [];
|
|
106
|
+
}
|
|
107
|
+
await action.executeBatch({
|
|
108
|
+
mapping,
|
|
109
|
+
data: events,
|
|
110
|
+
settings,
|
|
111
|
+
auth
|
|
112
|
+
});
|
|
113
|
+
return [{ output: 'successfully processed batch of events' }];
|
|
114
|
+
}
|
|
115
|
+
async onSubscription(subscription, events, settings, auth, onComplete) {
|
|
92
116
|
const subscriptionStartedAt = time_1.time();
|
|
93
117
|
const actionSlug = subscription.partnerAction;
|
|
94
118
|
const input = {
|
|
95
|
-
event,
|
|
96
119
|
mapping: subscription.mapping || {},
|
|
97
120
|
settings,
|
|
98
121
|
auth
|
|
99
122
|
};
|
|
100
|
-
let state = 'pending';
|
|
101
123
|
let results = null;
|
|
102
124
|
try {
|
|
103
125
|
if (!subscription.subscribe || typeof subscription.subscribe !== 'string') {
|
|
104
|
-
state = 'skipped';
|
|
105
126
|
results = [{ output: 'invalid subscription' }];
|
|
106
127
|
return results;
|
|
107
128
|
}
|
|
108
129
|
const parsedSubscription = destination_subscriptions_1.parseFql(subscription.subscribe);
|
|
109
130
|
if (parsedSubscription.error) {
|
|
110
|
-
state = 'skipped';
|
|
111
131
|
results = [{ output: `invalid subscription : ${parsedSubscription.error.message}` }];
|
|
112
132
|
return results;
|
|
113
133
|
}
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
134
|
+
const isBatch = Array.isArray(events);
|
|
135
|
+
const allEvents = (isBatch ? events : [events]);
|
|
136
|
+
const subscribedEvents = allEvents.filter((event) => destination_subscriptions_1.validate(parsedSubscription, event));
|
|
137
|
+
if (subscribedEvents.length === 0) {
|
|
117
138
|
results = [{ output: 'not subscribed' }];
|
|
118
139
|
return results;
|
|
119
140
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
141
|
+
else if (isBatch) {
|
|
142
|
+
return await this.executeBatch(actionSlug, { ...input, events: subscribedEvents });
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
return await this.executeAction(actionSlug, { ...input, event: subscribedEvents[0] });
|
|
146
|
+
}
|
|
123
147
|
}
|
|
124
148
|
catch (error) {
|
|
125
|
-
state = 'errored';
|
|
126
149
|
results = [{ error }];
|
|
127
150
|
if (error.name === 'AggregateAjvError' || error.name === 'ValidationError') {
|
|
128
151
|
error.status = 400;
|
|
@@ -137,9 +160,8 @@ class Destination {
|
|
|
137
160
|
destination: this.name,
|
|
138
161
|
action: actionSlug,
|
|
139
162
|
subscribe: subscription.subscribe,
|
|
140
|
-
state,
|
|
141
163
|
input: {
|
|
142
|
-
|
|
164
|
+
data: events,
|
|
143
165
|
mapping: input.mapping,
|
|
144
166
|
settings: input.settings
|
|
145
167
|
},
|
|
@@ -147,35 +169,36 @@ class Destination {
|
|
|
147
169
|
});
|
|
148
170
|
}
|
|
149
171
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
catch (error) {
|
|
156
|
-
const statusCode = error?.status ?? error?.response?.status ?? 500;
|
|
157
|
-
if (!(statusCode === 401 && this.authentication?.scheme === OAUTH2_SCHEME)) {
|
|
158
|
-
throw error;
|
|
159
|
-
}
|
|
160
|
-
const destinationSettings = this.getDestinationSettings(settings);
|
|
161
|
-
const oauthSettings = parse_settings_1.getOAuth2Data(settings);
|
|
162
|
-
const newTokens = await this.refreshAccessToken(destinationSettings, oauthSettings);
|
|
163
|
-
if (!newTokens) {
|
|
164
|
-
throw new errors_1.InvalidAuthenticationError('Failed to refresh access token');
|
|
165
|
-
}
|
|
166
|
-
settings = parse_settings_1.updateOAuthSettings(settings, newTokens);
|
|
167
|
-
options?.onTokenRefresh?.(newTokens);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
throw new errors_1.InvalidAuthenticationError();
|
|
172
|
+
onEvent(event, settings, options) {
|
|
173
|
+
return this.onSubscriptions(event, settings, options);
|
|
174
|
+
}
|
|
175
|
+
onBatch(events, settings, options) {
|
|
176
|
+
return this.onSubscriptions(events, settings, options);
|
|
171
177
|
}
|
|
172
|
-
async
|
|
178
|
+
async onSubscriptions(data, settings, options) {
|
|
173
179
|
const subscriptions = this.getSubscriptions(settings);
|
|
174
180
|
const destinationSettings = this.getDestinationSettings(settings);
|
|
175
|
-
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
181
|
+
this.validateSettings(destinationSettings);
|
|
182
|
+
const run = async () => {
|
|
183
|
+
const authData = parse_settings_1.getAuthData(settings);
|
|
184
|
+
const promises = subscriptions.map((subscription) => this.onSubscription(subscription, data, destinationSettings, authData, options?.onComplete));
|
|
185
|
+
const results = await Promise.all(promises);
|
|
186
|
+
return [].concat(...results);
|
|
187
|
+
};
|
|
188
|
+
const onFailedAttempt = async (error) => {
|
|
189
|
+
const statusCode = error?.status ?? error?.response?.status ?? 500;
|
|
190
|
+
if (!(statusCode === 401 && this.authentication?.scheme === OAUTH2_SCHEME)) {
|
|
191
|
+
throw error;
|
|
192
|
+
}
|
|
193
|
+
const oauthSettings = parse_settings_1.getOAuth2Data(settings);
|
|
194
|
+
const newTokens = await this.refreshAccessToken(destinationSettings, oauthSettings);
|
|
195
|
+
if (!newTokens) {
|
|
196
|
+
throw new errors_1.InvalidAuthenticationError('Failed to refresh access token');
|
|
197
|
+
}
|
|
198
|
+
settings = parse_settings_1.updateOAuthSettings(settings, newTokens);
|
|
199
|
+
options?.onTokenRefresh?.(newTokens);
|
|
200
|
+
};
|
|
201
|
+
return await retry_1.retry(run, { retries: 2, onFailedAttempt });
|
|
179
202
|
}
|
|
180
203
|
getSubscriptions(settings) {
|
|
181
204
|
const { subscription, subscriptions } = settings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":";;;;;;AAAA,kFAAuF;AAEvF,qCAAoF;AACpF,kCAAwC;AAGxC,iEAA8E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,4 +72,4 @@ export interface PathDirective {
|
|
|
72
72
|
'@path': string;
|
|
73
73
|
}
|
|
74
74
|
export declare type Directive = IfDirective | TemplateDirective | PathDirective;
|
|
75
|
-
export declare type RequestExtension<Settings, Payload =
|
|
75
|
+
export declare type RequestExtension<Settings, Payload = undefined> = (data: ExecuteInput<Settings, Payload>) => RequestOptions;
|
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
import { JSONObject, JSONLikeObject } from '../json-object';
|
|
2
|
-
export declare
|
|
2
|
+
export declare type InputData = {
|
|
3
|
+
[key: string]: unknown;
|
|
4
|
+
};
|
|
5
|
+
export declare function transform(mapping: JSONLikeObject, data?: InputData | undefined): JSONObject;
|
|
6
|
+
export declare function transformBatch(mapping: JSONLikeObject, data?: Array<InputData> | undefined): JSONObject[];
|
|
@@ -3,7 +3,7 @@ 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.transform = void 0;
|
|
6
|
+
exports.transformBatch = exports.transform = void 0;
|
|
7
7
|
const get_1 = require("../get");
|
|
8
8
|
const is_directive_1 = require("./is-directive");
|
|
9
9
|
const placeholders_1 = require("./placeholders");
|
|
@@ -83,7 +83,7 @@ function resolve(mapping, payload) {
|
|
|
83
83
|
function transform(mapping, data = {}) {
|
|
84
84
|
const realType = real_type_of_1.realTypeOf(data);
|
|
85
85
|
if (realType !== 'object') {
|
|
86
|
-
throw new Error(`
|
|
86
|
+
throw new Error(`data must be an object, got ${realType}`);
|
|
87
87
|
}
|
|
88
88
|
validate_1.default(mapping);
|
|
89
89
|
const cloned = cloneJson(mapping);
|
|
@@ -92,6 +92,19 @@ function transform(mapping, data = {}) {
|
|
|
92
92
|
return cleaned;
|
|
93
93
|
}
|
|
94
94
|
exports.transform = transform;
|
|
95
|
+
function transformBatch(mapping, data = []) {
|
|
96
|
+
const realType = real_type_of_1.realTypeOf(data);
|
|
97
|
+
if (!real_type_of_1.isArray(data)) {
|
|
98
|
+
throw new Error(`data must be an array, got ${realType}`);
|
|
99
|
+
}
|
|
100
|
+
validate_1.default(mapping);
|
|
101
|
+
return remove_undefined_1.removeUndefined(data.map((d) => {
|
|
102
|
+
const cloned = cloneJson(mapping);
|
|
103
|
+
const resolved = resolve(cloned, d);
|
|
104
|
+
return resolved;
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
exports.transformBatch = transformBatch;
|
|
95
108
|
function cloneJson(obj) {
|
|
96
109
|
return JSON.parse(JSON.stringify(obj));
|
|
97
110
|
}
|
|
@@ -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,6 @@
|
|
|
1
|
+
interface RetryOptions {
|
|
2
|
+
retries?: number;
|
|
3
|
+
onFailedAttempt?: (error: any, attemptCount: number) => PromiseLike<void> | void;
|
|
4
|
+
}
|
|
5
|
+
export declare function retry<T>(input: (attemptCount: number) => PromiseLike<T> | T, options?: RetryOptions): Promise<T>;
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.retry = void 0;
|
|
4
|
+
const DEFAULT_RETRY_ATTEMPTS = 2;
|
|
5
|
+
async function retry(input, options) {
|
|
6
|
+
const retries = options?.retries ?? DEFAULT_RETRY_ATTEMPTS;
|
|
7
|
+
for (let attemptCount = 1; attemptCount <= retries; attemptCount++) {
|
|
8
|
+
try {
|
|
9
|
+
return await input(attemptCount);
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
if (options?.onFailedAttempt) {
|
|
13
|
+
await options.onFailedAttempt(error, attemptCount);
|
|
14
|
+
}
|
|
15
|
+
if (!error || attemptCount >= retries) {
|
|
16
|
+
throw error;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
throw new Error('Exhausted all retries.');
|
|
21
|
+
}
|
|
22
|
+
exports.retry = retry;
|
|
23
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/retry.ts"],"names":[],"mappings":";;;AAMA,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAEzB,KAAK,UAAU,KAAK,CACzB,KAAmD,EACnD,OAAsB;IAEtB,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,sBAAsB,CAAA;IAE1D,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,IAAI,OAAO,EAAE,YAAY,EAAE,EAAE;QAClE,IAAI;YACF,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,CAAA;SACjC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,OAAO,EAAE,eAAe,EAAE;gBAC5B,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;aACnD;YAGD,IAAI,CAAC,KAAK,IAAI,YAAY,IAAI,OAAO,EAAE;gBACrC,MAAM,KAAK,CAAA;aACZ;SACF;KACF;IAGD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;AAC3C,CAAC;AAvBD,sBAuBC"}
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
interface ValidationOptions {
|
|
2
|
+
schemaKey?: string;
|
|
3
|
+
throwIfInvalid?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function validateSchema(obj: unknown, schema: object, options?: ValidationOptions): boolean;
|
|
6
|
+
export {};
|