@segment/actions-core 3.8.4-canary.16 → 3.9.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-request-client.js +1 -1
- package/dist/cjs/create-request-client.js.map +1 -1
- package/dist/cjs/create-test-integration.d.ts +0 -3
- package/dist/cjs/create-test-integration.js +0 -20
- package/dist/cjs/create-test-integration.js.map +1 -1
- package/dist/cjs/destination-kit/action.d.ts +7 -12
- package/dist/cjs/destination-kit/action.js +1 -31
- package/dist/cjs/destination-kit/action.js.map +1 -1
- package/dist/cjs/destination-kit/index.d.ts +6 -17
- package/dist/cjs/destination-kit/index.js +48 -71
- 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 +1 -5
- package/dist/cjs/mapping-kit/index.js +2 -15
- package/dist/cjs/mapping-kit/index.js.map +1 -1
- package/dist/cjs/schema-validation.d.ts +1 -6
- package/dist/cjs/schema-validation.js +8 -11
- 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 +0 -3
- package/dist/esm/create-test-integration.js +0 -20
- package/dist/esm/create-test-integration.js.map +1 -1
- package/dist/esm/destination-kit/action.d.ts +7 -12
- package/dist/esm/destination-kit/action.js +2 -32
- package/dist/esm/destination-kit/action.js.map +1 -1
- package/dist/esm/destination-kit/index.d.ts +6 -17
- package/dist/esm/destination-kit/index.js +48 -71
- 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 +1 -5
- package/dist/esm/mapping-kit/index.js +1 -13
- package/dist/esm/mapping-kit/index.js.map +1 -1
- package/dist/esm/schema-validation.d.ts +1 -6
- package/dist/esm/schema-validation.js +8 -11
- package/dist/esm/schema-validation.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +6 -7
- package/dist/cjs/retry.d.ts +0 -6
- package/dist/cjs/retry.js +0 -23
- package/dist/cjs/retry.js.map +0 -1
- package/dist/esm/retry.d.ts +0 -6
- package/dist/esm/retry.js +0 -19
- package/dist/esm/retry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-request-client.js","sourceRoot":"","sources":["../../src/create-request-client.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,mDAAmD,CAAA;AAClF,OAAO,cAAc,MAAM,6CAA6C,CAAA;AACxE,OAAO,eAAe,MAAM,8CAA8C,CAAA;AAC1E,OAAO,cAAqD,MAAM,kBAAkB,CAAA;AAGpF,MAAM,UAAU,GAAG,cAAc,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,OAAO,kBAAkB,MAAM,mDAAmD,CAAA;AAClF,OAAO,cAAc,MAAM,6CAA6C,CAAA;AACxE,OAAO,eAAe,MAAM,8CAA8C,CAAA;AAC1E,OAAO,cAAqD,MAAM,kBAAkB,CAAA;AAGpF,MAAM,UAAU,GAAG,cAAc,CAAC;IAChC,OAAO,EAAE,KAAK;IACd,OAAO,EAAE;QACP,YAAY,EAAE,SAAS;KACxB;IACD,aAAa,EAAE;QAEb,kBAAkB;KACnB;IACD,aAAa,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;CACjD,CAAC,CAAA;AAOF,MAAM,CAAC,OAAO,UAAU,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"}
|
|
@@ -14,9 +14,6 @@ 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']>;
|
|
20
17
|
}
|
|
21
18
|
export declare function createTestIntegration<T>(destination: DestinationDefinition<T>): TestDestination<T>;
|
|
22
19
|
export {};
|
|
@@ -23,26 +23,6 @@ class TestDestination extends Destination {
|
|
|
23
23
|
this.responses = [];
|
|
24
24
|
return responses;
|
|
25
25
|
}
|
|
26
|
-
async testBatchAction(action, { events, mapping, settings, useDefaultMappings, auth }) {
|
|
27
|
-
mapping = mapping ?? {};
|
|
28
|
-
if (useDefaultMappings) {
|
|
29
|
-
const fields = this.definition.actions[action].fields;
|
|
30
|
-
const defaultMappings = mapValues(fields, 'default');
|
|
31
|
-
mapping = { ...defaultMappings, ...mapping };
|
|
32
|
-
}
|
|
33
|
-
if (!events || !events.length) {
|
|
34
|
-
events = [{ type: 'track' }];
|
|
35
|
-
}
|
|
36
|
-
await super.executeBatch(action, {
|
|
37
|
-
events: events.map((event) => createTestEvent(event)),
|
|
38
|
-
mapping,
|
|
39
|
-
settings: settings ?? {},
|
|
40
|
-
auth
|
|
41
|
-
});
|
|
42
|
-
const responses = this.responses;
|
|
43
|
-
this.responses = [];
|
|
44
|
-
return responses;
|
|
45
|
-
}
|
|
46
26
|
}
|
|
47
27
|
export function createTestIntegration(destination) {
|
|
48
28
|
return new TestDestination(destination);
|
|
@@ -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;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;
|
|
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"}
|
|
@@ -2,7 +2,6 @@
|
|
|
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';
|
|
6
5
|
import type { DynamicFieldResponse, InputField, RequestExtension, ExecuteInput, Result } from './types';
|
|
7
6
|
import type { JSONSchema4 } from 'json-schema';
|
|
8
7
|
import { AuthTokens } from './parse-settings';
|
|
@@ -22,28 +21,24 @@ export interface ActionDefinition<Settings, Payload = any> extends BaseActionDef
|
|
|
22
21
|
[K in keyof Payload]?: RequestFn<Settings, Payload, DynamicFieldResponse>;
|
|
23
22
|
};
|
|
24
23
|
perform: RequestFn<Settings, Payload>;
|
|
25
|
-
performBatch?: RequestFn<Settings, Payload[]>;
|
|
26
24
|
}
|
|
27
25
|
interface ExecuteDynamicFieldInput<Settings, Payload> {
|
|
28
26
|
settings: Settings;
|
|
29
27
|
payload: Payload;
|
|
30
28
|
page?: string;
|
|
31
29
|
}
|
|
32
|
-
interface ExecuteBundle<T = unknown, Data = unknown> {
|
|
33
|
-
data: Data;
|
|
34
|
-
settings: T;
|
|
35
|
-
mapping: JSONObject;
|
|
36
|
-
auth: AuthTokens | undefined;
|
|
37
|
-
}
|
|
38
30
|
export declare class Action<Settings, Payload extends JSONLikeObject> extends EventEmitter {
|
|
39
31
|
readonly definition: ActionDefinition<Settings, Payload>;
|
|
40
32
|
readonly destinationName: string;
|
|
41
33
|
readonly schema?: JSONSchema4;
|
|
42
|
-
readonly hasBatchSupport: boolean;
|
|
43
34
|
private extendRequest;
|
|
44
|
-
constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings>);
|
|
45
|
-
execute(bundle:
|
|
46
|
-
|
|
35
|
+
constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings, Payload>);
|
|
36
|
+
execute(bundle: {
|
|
37
|
+
data: unknown;
|
|
38
|
+
settings: Settings;
|
|
39
|
+
mapping: JSONObject;
|
|
40
|
+
auth: AuthTokens | undefined;
|
|
41
|
+
}): Promise<Result[]>;
|
|
47
42
|
executeDynamicField(field: string, data: ExecuteDynamicFieldInput<Settings, Payload>): unknown;
|
|
48
43
|
private performRequest;
|
|
49
44
|
private createRequestClient;
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import createRequestClient from '../create-request-client';
|
|
3
|
-
import { transform
|
|
3
|
+
import { transform } from '../mapping-kit';
|
|
4
4
|
import { fieldsToJsonSchema } from './fields-to-jsonschema';
|
|
5
5
|
import { Response } from '../fetch';
|
|
6
6
|
import { validateSchema } from '../schema-validation';
|
|
7
|
-
import { IntegrationError } from '../errors';
|
|
8
7
|
export class Action extends EventEmitter {
|
|
9
8
|
constructor(destinationName, definition, extendRequest) {
|
|
10
9
|
super();
|
|
11
10
|
this.definition = definition;
|
|
12
11
|
this.destinationName = destinationName;
|
|
13
12
|
this.extendRequest = extendRequest;
|
|
14
|
-
this.hasBatchSupport = typeof definition.performBatch === 'function';
|
|
15
13
|
if (Object.keys(definition.fields ?? {}).length) {
|
|
16
14
|
this.schema = fieldsToJsonSchema(definition.fields);
|
|
17
15
|
}
|
|
@@ -21,8 +19,7 @@ export class Action extends EventEmitter {
|
|
|
21
19
|
const payload = transform(bundle.mapping, bundle.data);
|
|
22
20
|
results.push({ output: 'Mappings resolved' });
|
|
23
21
|
if (this.schema) {
|
|
24
|
-
|
|
25
|
-
validateSchema(payload, this.schema, { schemaKey });
|
|
22
|
+
validateSchema(payload, this.schema, `${this.destinationName}:${this.definition.title}`);
|
|
26
23
|
results.push({ output: 'Payload validated' });
|
|
27
24
|
}
|
|
28
25
|
const dataBundle = {
|
|
@@ -36,33 +33,6 @@ export class Action extends EventEmitter {
|
|
|
36
33
|
results.push({ output: output });
|
|
37
34
|
return results;
|
|
38
35
|
}
|
|
39
|
-
async executeBatch(bundle) {
|
|
40
|
-
if (!this.hasBatchSupport) {
|
|
41
|
-
throw new IntegrationError('This action does not support batched requests.', 'NotImplemented', 501);
|
|
42
|
-
}
|
|
43
|
-
let payloads = transformBatch(bundle.mapping, bundle.data);
|
|
44
|
-
if (this.schema) {
|
|
45
|
-
const schema = this.schema;
|
|
46
|
-
const schemaKey = `${this.destinationName}:${this.definition.title}`;
|
|
47
|
-
payloads = payloads.filter((payload) => validateSchema(payload, schema, {
|
|
48
|
-
schemaKey,
|
|
49
|
-
throwIfInvalid: false
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
if (payloads.length === 0) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
if (this.definition.performBatch) {
|
|
56
|
-
const data = {
|
|
57
|
-
rawData: bundle.data,
|
|
58
|
-
rawMapping: bundle.mapping,
|
|
59
|
-
settings: bundle.settings,
|
|
60
|
-
payload: payloads,
|
|
61
|
-
auth: bundle.auth
|
|
62
|
-
};
|
|
63
|
-
await this.performRequest(this.definition.performBatch, data);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
36
|
executeDynamicField(field, data) {
|
|
67
37
|
const fn = this.definition.dynamicFields?.[field];
|
|
68
38
|
if (typeof fn !== 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,mBAAmB,MAAM,0BAA0B,CAAA;AAE1D,OAAO,
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export interface SubscriptionStats {
|
|
|
16
16
|
destination: string;
|
|
17
17
|
action: string;
|
|
18
18
|
subscribe: string;
|
|
19
|
+
state: string;
|
|
19
20
|
input: JSONLikeObject;
|
|
20
21
|
output: Result[] | null;
|
|
21
22
|
}
|
|
@@ -80,20 +81,10 @@ interface EventInput<Settings> {
|
|
|
80
81
|
readonly settings: Settings;
|
|
81
82
|
readonly auth?: AuthTokens;
|
|
82
83
|
}
|
|
83
|
-
interface BatchEventInput<Settings> {
|
|
84
|
-
readonly events: SegmentEvent[];
|
|
85
|
-
readonly mapping: JSONObject;
|
|
86
|
-
readonly settings: Settings;
|
|
87
|
-
readonly auth?: AuthTokens;
|
|
88
|
-
}
|
|
89
84
|
export interface DecoratedResponse extends ModifiedResponse {
|
|
90
85
|
request: Request;
|
|
91
86
|
options: AllRequestOptions;
|
|
92
87
|
}
|
|
93
|
-
interface OnEventOptions {
|
|
94
|
-
onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
|
|
95
|
-
onComplete?: (stats: SubscriptionStats) => void;
|
|
96
|
-
}
|
|
97
88
|
export declare class Destination<Settings = JSONObject> {
|
|
98
89
|
readonly definition: DestinationDefinition<Settings>;
|
|
99
90
|
readonly name: string;
|
|
@@ -103,18 +94,16 @@ export declare class Destination<Settings = JSONObject> {
|
|
|
103
94
|
readonly responses: DecoratedResponse[];
|
|
104
95
|
readonly settingsSchema?: JSONSchema4;
|
|
105
96
|
constructor(destination: DestinationDefinition<Settings>);
|
|
106
|
-
validateSettings(settings: Settings): void;
|
|
107
97
|
testAuthentication(settings: Settings): Promise<void>;
|
|
108
98
|
refreshAccessToken(settings: Settings, oauthData: OAuth2ClientCredentials): Promise<RefreshAccessTokenResult> | undefined;
|
|
109
99
|
private partnerAction;
|
|
110
100
|
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
|
-
}[]>;
|
|
114
101
|
private onSubscription;
|
|
115
|
-
onEvent(event: SegmentEvent, settings: JSONObject, options?:
|
|
116
|
-
|
|
117
|
-
|
|
102
|
+
onEvent(event: SegmentEvent, settings: JSONObject, options?: {
|
|
103
|
+
onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
|
|
104
|
+
onComplete?: (stats: SubscriptionStats) => void;
|
|
105
|
+
}): Promise<Result[]>;
|
|
106
|
+
private onEventInternal;
|
|
118
107
|
private getSubscriptions;
|
|
119
108
|
private getDestinationSettings;
|
|
120
109
|
}
|
|
@@ -6,8 +6,8 @@ import createRequestClient from '../create-request-client';
|
|
|
6
6
|
import { validateSchema } from '../schema-validation';
|
|
7
7
|
import { IntegrationError, InvalidAuthenticationError } from '../errors';
|
|
8
8
|
import { getAuthData, getOAuth2Data, updateOAuthSettings } from './parse-settings';
|
|
9
|
-
import { retry } from '../retry';
|
|
10
9
|
export { fieldsToJsonSchema };
|
|
10
|
+
const RETRY_ATTEMPTS = 2;
|
|
11
11
|
const OAUTH2_SCHEME = 'oauth2';
|
|
12
12
|
export class Destination {
|
|
13
13
|
constructor(destination) {
|
|
@@ -24,25 +24,14 @@ export class Destination {
|
|
|
24
24
|
this.partnerAction(action, destination.actions[action]);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
validateSettings(settings) {
|
|
28
|
-
if (this.settingsSchema) {
|
|
29
|
-
try {
|
|
30
|
-
validateSchema(settings, this.settingsSchema, { schemaKey: `${this.name}:settings` });
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
if (error.name === 'AggregateAjvError' || error.name === 'ValidationError') {
|
|
34
|
-
error.status = 400;
|
|
35
|
-
}
|
|
36
|
-
throw error;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
27
|
async testAuthentication(settings) {
|
|
41
28
|
const destinationSettings = this.getDestinationSettings(settings);
|
|
42
29
|
const auth = getAuthData(settings);
|
|
43
30
|
const data = { settings: destinationSettings, auth };
|
|
44
|
-
const context = { settings: destinationSettings, payload:
|
|
45
|
-
this.
|
|
31
|
+
const context = { settings: destinationSettings, payload: {}, auth };
|
|
32
|
+
if (this.settingsSchema) {
|
|
33
|
+
validateSchema(settings, this.settingsSchema, `${this.name}:settings`);
|
|
34
|
+
}
|
|
46
35
|
if (!this.authentication?.testAuthentication) {
|
|
47
36
|
return;
|
|
48
37
|
}
|
|
@@ -61,7 +50,7 @@ export class Destination {
|
|
|
61
50
|
}
|
|
62
51
|
const context = {
|
|
63
52
|
settings,
|
|
64
|
-
payload:
|
|
53
|
+
payload: {},
|
|
65
54
|
auth: getAuthData(settings)
|
|
66
55
|
};
|
|
67
56
|
const options = this.extendRequest?.(context) ?? {};
|
|
@@ -81,10 +70,10 @@ export class Destination {
|
|
|
81
70
|
this.actions[slug] = action;
|
|
82
71
|
return this;
|
|
83
72
|
}
|
|
84
|
-
|
|
73
|
+
executeAction(actionSlug, { event, mapping, settings, auth }) {
|
|
85
74
|
const action = this.actions[actionSlug];
|
|
86
75
|
if (!action) {
|
|
87
|
-
return [];
|
|
76
|
+
return Promise.resolve([]);
|
|
88
77
|
}
|
|
89
78
|
return action.execute({
|
|
90
79
|
mapping,
|
|
@@ -93,53 +82,41 @@ export class Destination {
|
|
|
93
82
|
auth
|
|
94
83
|
});
|
|
95
84
|
}
|
|
96
|
-
async
|
|
97
|
-
const action = this.actions[actionSlug];
|
|
98
|
-
if (!action) {
|
|
99
|
-
return [];
|
|
100
|
-
}
|
|
101
|
-
await action.executeBatch({
|
|
102
|
-
mapping,
|
|
103
|
-
data: events,
|
|
104
|
-
settings,
|
|
105
|
-
auth
|
|
106
|
-
});
|
|
107
|
-
return [{ output: 'successfully processed batch of events' }];
|
|
108
|
-
}
|
|
109
|
-
async onSubscription(subscription, events, settings, auth, onComplete) {
|
|
85
|
+
async onSubscription(subscription, event, settings, auth, onComplete) {
|
|
110
86
|
const subscriptionStartedAt = time();
|
|
111
87
|
const actionSlug = subscription.partnerAction;
|
|
112
88
|
const input = {
|
|
89
|
+
event,
|
|
113
90
|
mapping: subscription.mapping || {},
|
|
114
91
|
settings,
|
|
115
92
|
auth
|
|
116
93
|
};
|
|
94
|
+
let state = 'pending';
|
|
117
95
|
let results = null;
|
|
118
96
|
try {
|
|
119
97
|
if (!subscription.subscribe || typeof subscription.subscribe !== 'string') {
|
|
98
|
+
state = 'skipped';
|
|
120
99
|
results = [{ output: 'invalid subscription' }];
|
|
121
100
|
return results;
|
|
122
101
|
}
|
|
123
102
|
const parsedSubscription = parseFql(subscription.subscribe);
|
|
124
103
|
if (parsedSubscription.error) {
|
|
104
|
+
state = 'skipped';
|
|
125
105
|
results = [{ output: `invalid subscription : ${parsedSubscription.error.message}` }];
|
|
126
106
|
return results;
|
|
127
107
|
}
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (subscribedEvents.length === 0) {
|
|
108
|
+
const isSubscribed = validate(parsedSubscription, event);
|
|
109
|
+
if (!isSubscribed) {
|
|
110
|
+
state = 'skipped';
|
|
132
111
|
results = [{ output: 'not subscribed' }];
|
|
133
112
|
return results;
|
|
134
113
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
else {
|
|
139
|
-
return await this.executeAction(actionSlug, { ...input, event: subscribedEvents[0] });
|
|
140
|
-
}
|
|
114
|
+
results = await this.executeAction(actionSlug, input);
|
|
115
|
+
state = 'done';
|
|
116
|
+
return results;
|
|
141
117
|
}
|
|
142
118
|
catch (error) {
|
|
119
|
+
state = 'errored';
|
|
143
120
|
results = [{ error }];
|
|
144
121
|
if (error.name === 'AggregateAjvError' || error.name === 'ValidationError') {
|
|
145
122
|
error.status = 400;
|
|
@@ -154,8 +131,9 @@ export class Destination {
|
|
|
154
131
|
destination: this.name,
|
|
155
132
|
action: actionSlug,
|
|
156
133
|
subscribe: subscription.subscribe,
|
|
134
|
+
state,
|
|
157
135
|
input: {
|
|
158
|
-
|
|
136
|
+
event: input.event,
|
|
159
137
|
mapping: input.mapping,
|
|
160
138
|
settings: input.settings
|
|
161
139
|
},
|
|
@@ -163,36 +141,35 @@ export class Destination {
|
|
|
163
141
|
});
|
|
164
142
|
}
|
|
165
143
|
}
|
|
166
|
-
onEvent(event, settings, options) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
144
|
+
async onEvent(event, settings, options) {
|
|
145
|
+
for (let i = 0; i < RETRY_ATTEMPTS; i++) {
|
|
146
|
+
try {
|
|
147
|
+
return await this.onEventInternal(event, settings, options?.onComplete);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
const statusCode = error?.status ?? error?.response?.status ?? 500;
|
|
151
|
+
if (!(statusCode === 401 && this.authentication?.scheme === OAUTH2_SCHEME)) {
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
const destinationSettings = this.getDestinationSettings(settings);
|
|
155
|
+
const oauthSettings = getOAuth2Data(settings);
|
|
156
|
+
const newTokens = await this.refreshAccessToken(destinationSettings, oauthSettings);
|
|
157
|
+
if (!newTokens) {
|
|
158
|
+
throw new InvalidAuthenticationError('Failed to refresh access token');
|
|
159
|
+
}
|
|
160
|
+
settings = updateOAuthSettings(settings, newTokens);
|
|
161
|
+
options?.onTokenRefresh?.(newTokens);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
throw new InvalidAuthenticationError();
|
|
171
165
|
}
|
|
172
|
-
async
|
|
166
|
+
async onEventInternal(event, settings, onComplete) {
|
|
173
167
|
const subscriptions = this.getSubscriptions(settings);
|
|
174
168
|
const destinationSettings = this.getDestinationSettings(settings);
|
|
175
|
-
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const results = await Promise.all(promises);
|
|
180
|
-
return [].concat(...results);
|
|
181
|
-
};
|
|
182
|
-
const onFailedAttempt = async (error) => {
|
|
183
|
-
const statusCode = error?.status ?? error?.response?.status ?? 500;
|
|
184
|
-
if (!(statusCode === 401 && this.authentication?.scheme === OAUTH2_SCHEME)) {
|
|
185
|
-
throw error;
|
|
186
|
-
}
|
|
187
|
-
const oauthSettings = getOAuth2Data(settings);
|
|
188
|
-
const newTokens = await this.refreshAccessToken(destinationSettings, oauthSettings);
|
|
189
|
-
if (!newTokens) {
|
|
190
|
-
throw new InvalidAuthenticationError('Failed to refresh access token');
|
|
191
|
-
}
|
|
192
|
-
settings = updateOAuthSettings(settings, newTokens);
|
|
193
|
-
options?.onTokenRefresh?.(newTokens);
|
|
194
|
-
};
|
|
195
|
-
return await retry(run, { retries: 2, onFailedAttempt });
|
|
169
|
+
const authData = getAuthData(settings);
|
|
170
|
+
const promises = subscriptions.map((subscription) => this.onSubscription(subscription, event, destinationSettings, authData, onComplete));
|
|
171
|
+
const results = await Promise.all(promises);
|
|
172
|
+
return [].concat(...results);
|
|
196
173
|
}
|
|
197
174
|
getSubscriptions(settings) {
|
|
198
175
|
const { subscription, subscriptions } = settings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAkB,MAAM,oCAAoC,CAAA;AAEvF,OAAO,EAAE,MAAM,EAAqD,MAAM,UAAU,CAAA;AACpF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGxC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,wBAAwB,CAAA;AAC9E,OAAO,mBAAsC,MAAM,0BAA0B,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAIrD,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAc,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;
|
|
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 = unknown> = (data: ExecuteInput<Settings, Payload>) => RequestOptions;
|
|
@@ -1,6 +1,2 @@
|
|
|
1
1
|
import { JSONObject, JSONLikeObject } from '../json-object';
|
|
2
|
-
export declare
|
|
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[];
|
|
2
|
+
export declare function transform(mapping: JSONLikeObject, data?: unknown): JSONObject;
|
|
@@ -77,7 +77,7 @@ function resolve(mapping, payload) {
|
|
|
77
77
|
export function transform(mapping, data = {}) {
|
|
78
78
|
const realType = realTypeOf(data);
|
|
79
79
|
if (realType !== 'object') {
|
|
80
|
-
throw new Error(`
|
|
80
|
+
throw new Error(`payload must be an object, got ${realType}`);
|
|
81
81
|
}
|
|
82
82
|
validate(mapping);
|
|
83
83
|
const cloned = cloneJson(mapping);
|
|
@@ -85,18 +85,6 @@ export function transform(mapping, data = {}) {
|
|
|
85
85
|
const cleaned = removeUndefined(resolved);
|
|
86
86
|
return cleaned;
|
|
87
87
|
}
|
|
88
|
-
export function transformBatch(mapping, data = []) {
|
|
89
|
-
const realType = realTypeOf(data);
|
|
90
|
-
if (!isArray(data)) {
|
|
91
|
-
throw new Error(`data must be an array, got ${realType}`);
|
|
92
|
-
}
|
|
93
|
-
validate(mapping);
|
|
94
|
-
return removeUndefined(data.map((d) => {
|
|
95
|
-
const cloned = cloneJson(mapping);
|
|
96
|
-
const resolved = resolve(cloned, d);
|
|
97
|
-
return resolved;
|
|
98
|
-
}));
|
|
99
|
-
}
|
|
100
88
|
function cloneJson(obj) {
|
|
101
89
|
return JSON.parse(JSON.stringify(obj));
|
|
102
90
|
}
|
|
@@ -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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"}
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
schemaKey?: string;
|
|
3
|
-
throwIfInvalid?: boolean;
|
|
4
|
-
}
|
|
5
|
-
export declare function validateSchema(obj: unknown, schema: object, options?: ValidationOptions): boolean;
|
|
6
|
-
export {};
|
|
1
|
+
export declare function validateSchema(obj: unknown, schema: object, schemaKey?: string): void;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { AggregateAjvError } from '@segment/ajv-human-errors';
|
|
2
2
|
import Ajv from 'ajv';
|
|
3
|
-
import addFormats from 'ajv-formats';
|
|
4
3
|
import dayjs from 'dayjs';
|
|
5
|
-
const ajv =
|
|
4
|
+
const ajv = new Ajv({
|
|
6
5
|
coerceTypes: true,
|
|
7
6
|
allErrors: true,
|
|
8
|
-
allowUnionTypes: true,
|
|
9
7
|
verbose: true,
|
|
10
|
-
removeAdditional: true
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
removeAdditional: true,
|
|
9
|
+
jsonPointers: true
|
|
10
|
+
});
|
|
11
|
+
ajv.addFormat('password', () => true);
|
|
12
|
+
ajv.addFormat('text', () => true);
|
|
13
13
|
ajv.addFormat('date-like', (data) => {
|
|
14
14
|
let date = dayjs(data);
|
|
15
15
|
if (String(Number(data)) === data) {
|
|
@@ -20,8 +20,7 @@ ajv.addFormat('date-like', (data) => {
|
|
|
20
20
|
}
|
|
21
21
|
return date.isValid();
|
|
22
22
|
});
|
|
23
|
-
export function validateSchema(obj, schema,
|
|
24
|
-
const { schemaKey, throwIfInvalid = true } = options ?? {};
|
|
23
|
+
export function validateSchema(obj, schema, schemaKey) {
|
|
25
24
|
let validate;
|
|
26
25
|
if (schemaKey) {
|
|
27
26
|
validate = ajv.getSchema(schemaKey) || ajv.addSchema(schema, schemaKey).getSchema(schemaKey);
|
|
@@ -29,10 +28,8 @@ export function validateSchema(obj, schema, options) {
|
|
|
29
28
|
else {
|
|
30
29
|
validate = ajv.compile(schema);
|
|
31
30
|
}
|
|
32
|
-
|
|
33
|
-
if (throwIfInvalid && !isValid && validate.errors) {
|
|
31
|
+
if (!validate(obj)) {
|
|
34
32
|
throw new AggregateAjvError(validate.errors);
|
|
35
33
|
}
|
|
36
|
-
return isValid;
|
|
37
34
|
}
|
|
38
35
|
//# sourceMappingURL=schema-validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../../src/schema-validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../../src/schema-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,GAAG,GAAG,IAAI,GAAG,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,KAAK,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,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;SAC3B;QAED,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;KAChC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AAMF,MAAM,UAAU,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,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KAC7C;AACH,CAAC"}
|