@segment/actions-core 2.3.2-alpha.0 → 2.3.2-alpha.1
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/destination-kit/action.d.ts +18 -20
- package/dist/cjs/destination-kit/action.js +46 -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 +10 -22
- package/dist/cjs/destination-kit/index.js +17 -55
- package/dist/cjs/destination-kit/index.js.map +1 -1
- package/dist/cjs/destination-kit/types.d.ts +13 -2
- 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/destination-kit/action.d.ts +18 -20
- package/dist/esm/destination-kit/action.js +45 -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 +10 -22
- package/dist/esm/destination-kit/index.js +19 -57
- package/dist/esm/destination-kit/index.js.map +1 -1
- package/dist/esm/destination-kit/types.d.ts +13 -2
- 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/parse-settings.d.ts +0 -9
- package/dist/cjs/destination-kit/parse-settings.js +0 -32
- package/dist/cjs/destination-kit/parse-settings.js.map +0 -1
- package/dist/cjs/destination-kit/step.d.ts +0 -25
- package/dist/cjs/destination-kit/step.js +0 -47
- package/dist/cjs/destination-kit/step.js.map +0 -1
- package/dist/esm/destination-kit/parse-settings.d.ts +0 -9
- package/dist/esm/destination-kit/parse-settings.js +0 -26
- package/dist/esm/destination-kit/parse-settings.js.map +0 -1
- package/dist/esm/destination-kit/step.d.ts +0 -25
- package/dist/esm/destination-kit/step.js +0 -42
- package/dist/esm/destination-kit/step.js.map +0 -1
|
@@ -1,16 +1,16 @@
|
|
|
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';
|
|
8
7
|
declare type MaybePromise<T> = T | Promise<T>;
|
|
9
8
|
declare type RequestClient = ReturnType<typeof createRequestClient>;
|
|
10
9
|
export declare type RequestFn<Settings, Payload, Return = any> = (request: RequestClient, data: ExecuteInput<Settings, Payload>) => MaybePromise<Return>;
|
|
11
10
|
export interface ActionDefinition<Settings, Payload = any> {
|
|
12
11
|
title: string;
|
|
13
12
|
description: string;
|
|
13
|
+
platform?: 'cloud' | 'web';
|
|
14
14
|
defaultSubscription?: string;
|
|
15
15
|
hidden?: boolean;
|
|
16
16
|
fields: Record<string, InputField>;
|
|
@@ -19,28 +19,26 @@ export interface ActionDefinition<Settings, Payload = any> {
|
|
|
19
19
|
};
|
|
20
20
|
perform: RequestFn<Settings, Payload>;
|
|
21
21
|
}
|
|
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
22
|
interface ExecuteDynamicFieldInput<Settings, Payload> {
|
|
29
23
|
settings: Settings;
|
|
30
24
|
payload: Payload;
|
|
31
25
|
page?: string;
|
|
32
26
|
}
|
|
33
|
-
declare type ExecuteInputField = 'payload' | 'settings';
|
|
34
27
|
export declare class Action<Settings, Payload extends JSONLikeObject> extends EventEmitter {
|
|
35
|
-
readonly
|
|
28
|
+
readonly definition: ActionDefinition<Settings, Payload>;
|
|
29
|
+
readonly destinationName: string;
|
|
30
|
+
readonly schema?: JSONSchema4;
|
|
36
31
|
private extendRequest;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
private
|
|
32
|
+
constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings, Payload>);
|
|
33
|
+
execute(bundle: {
|
|
34
|
+
data: unknown;
|
|
35
|
+
settings: Settings;
|
|
36
|
+
mapping: JSONObject;
|
|
37
|
+
}): Promise<Result[]>;
|
|
38
|
+
executeDynamicField(field: string, data: ExecuteDynamicFieldInput<Settings, Payload>): unknown;
|
|
39
|
+
private performRequest;
|
|
40
|
+
private createRequestClient;
|
|
41
|
+
private afterResponse;
|
|
42
|
+
private parseResponse;
|
|
45
43
|
}
|
|
46
44
|
export {};
|
|
@@ -3,142 +3,74 @@ 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.Action =
|
|
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"));
|
|
6
|
+
exports.Action = void 0;
|
|
10
7
|
const events_1 = require("events");
|
|
11
8
|
const create_request_client_1 = __importDefault(require("../create-request-client"));
|
|
12
9
|
const mapping_kit_1 = require("../mapping-kit");
|
|
13
10
|
const fields_to_jsonschema_1 = require("./fields-to-jsonschema");
|
|
14
11
|
const fetch_1 = require("../fetch");
|
|
15
|
-
const
|
|
16
|
-
class MapInput extends step_1.Step {
|
|
17
|
-
executeStep(data) {
|
|
18
|
-
if (data.mapping) {
|
|
19
|
-
data.payload = mapping_kit_1.transform(data.mapping, data.payload);
|
|
20
|
-
}
|
|
21
|
-
return Promise.resolve('MapInput completed');
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
const ajv = new ajv_1.default({
|
|
25
|
-
coerceTypes: true,
|
|
26
|
-
allErrors: true,
|
|
27
|
-
verbose: true,
|
|
28
|
-
removeAdditional: true,
|
|
29
|
-
jsonPointers: true
|
|
30
|
-
});
|
|
31
|
-
ajv.addFormat('password', () => true);
|
|
32
|
-
ajv.addFormat('text', () => true);
|
|
33
|
-
ajv.addFormat('date-like', (data) => {
|
|
34
|
-
let date = dayjs_1.default(data);
|
|
35
|
-
if (String(Number(data)) === data) {
|
|
36
|
-
if (data.length === 13) {
|
|
37
|
-
date = dayjs_1.default(Number(data));
|
|
38
|
-
}
|
|
39
|
-
date = dayjs_1.default.unix(Number(data));
|
|
40
|
-
}
|
|
41
|
-
return date.isValid();
|
|
42
|
-
});
|
|
43
|
-
class Validate extends step_1.Step {
|
|
44
|
-
constructor(field, schema) {
|
|
45
|
-
super();
|
|
46
|
-
this.field = field;
|
|
47
|
-
this.validate = ajv.compile(schema);
|
|
48
|
-
}
|
|
49
|
-
executeStep(data) {
|
|
50
|
-
if (!this.validate(data[this.field])) {
|
|
51
|
-
throw new ajv_human_errors_1.AggregateAjvError(this.validate.errors);
|
|
52
|
-
}
|
|
53
|
-
return Promise.resolve('Validate completed');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.Validate = Validate;
|
|
57
|
-
class Request extends step_1.Step {
|
|
58
|
-
constructor(extendRequest, requestFn) {
|
|
59
|
-
super();
|
|
60
|
-
this.extendRequest = extendRequest;
|
|
61
|
-
this.requestFn = requestFn;
|
|
62
|
-
}
|
|
63
|
-
async executeStep(data) {
|
|
64
|
-
if (!this.requestFn) {
|
|
65
|
-
return '';
|
|
66
|
-
}
|
|
67
|
-
const requestClient = this.createRequestClient(data);
|
|
68
|
-
const response = await this.requestFn(requestClient, data);
|
|
69
|
-
if (response instanceof fetch_1.Response) {
|
|
70
|
-
return response.data ?? response.content;
|
|
71
|
-
}
|
|
72
|
-
return response;
|
|
73
|
-
}
|
|
74
|
-
createRequestClient(data) {
|
|
75
|
-
const options = this.extendRequest?.(data) ?? {};
|
|
76
|
-
const client = create_request_client_1.default(options, {
|
|
77
|
-
afterResponse: [
|
|
78
|
-
(request, options, response) => {
|
|
79
|
-
const modifiedResponse = response;
|
|
80
|
-
modifiedResponse.request = request;
|
|
81
|
-
modifiedResponse.options = options;
|
|
82
|
-
this.emit('response', modifiedResponse);
|
|
83
|
-
return modifiedResponse;
|
|
84
|
-
}
|
|
85
|
-
]
|
|
86
|
-
});
|
|
87
|
-
return client;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
12
|
+
const schema_validation_1 = require("../schema-validation");
|
|
90
13
|
class Action extends events_1.EventEmitter {
|
|
91
|
-
constructor(definition, extendRequest) {
|
|
14
|
+
constructor(destinationName, definition, extendRequest) {
|
|
92
15
|
super();
|
|
93
|
-
this.
|
|
94
|
-
|
|
95
|
-
this.
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
this.extendRequest = extendRequest;
|
|
16
|
+
this.definition = definition;
|
|
17
|
+
this.destinationName = destinationName;
|
|
18
|
+
this.extendRequest = extendRequest;
|
|
19
|
+
if (Object.keys(definition.fields ?? {}).length) {
|
|
20
|
+
this.schema = fields_to_jsonschema_1.fieldsToJsonSchema(definition.fields);
|
|
99
21
|
}
|
|
100
|
-
this.loadDefinition(definition);
|
|
101
22
|
}
|
|
102
|
-
async execute(
|
|
103
|
-
const results =
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
23
|
+
async execute(bundle) {
|
|
24
|
+
const results = [];
|
|
25
|
+
const payload = mapping_kit_1.transform(bundle.mapping, bundle.data);
|
|
26
|
+
results.push({ output: 'Mappings resolved' });
|
|
27
|
+
if (this.schema) {
|
|
28
|
+
schema_validation_1.validateSchema(payload, this.schema, `${this.destinationName}:${this.definition.title}`);
|
|
29
|
+
results.push({ output: 'Payload validated' });
|
|
107
30
|
}
|
|
31
|
+
const dataBundle = {
|
|
32
|
+
rawData: bundle.data,
|
|
33
|
+
rawMapping: bundle.mapping,
|
|
34
|
+
settings: bundle.settings,
|
|
35
|
+
payload
|
|
36
|
+
};
|
|
37
|
+
const output = await this.performRequest(this.definition.perform, dataBundle);
|
|
38
|
+
results.push({ output: output });
|
|
108
39
|
return results;
|
|
109
40
|
}
|
|
110
41
|
executeDynamicField(field, data) {
|
|
111
|
-
|
|
42
|
+
const fn = this.definition.dynamicFields?.[field];
|
|
43
|
+
if (typeof fn !== 'function') {
|
|
112
44
|
return {
|
|
113
45
|
data: [],
|
|
114
46
|
pagination: {}
|
|
115
47
|
};
|
|
116
48
|
}
|
|
117
|
-
|
|
118
|
-
return step.executeStep(data);
|
|
49
|
+
return this.performRequest(fn, data);
|
|
119
50
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
Object.entries(definition.dynamicFields ?? {}).forEach(([field, callback]) => {
|
|
125
|
-
this.dynamicField(field, callback);
|
|
126
|
-
});
|
|
127
|
-
if (definition.perform) {
|
|
128
|
-
this.request(definition.perform);
|
|
129
|
-
}
|
|
51
|
+
async performRequest(requestFn, data) {
|
|
52
|
+
const requestClient = this.createRequestClient(data);
|
|
53
|
+
const response = await requestFn(requestClient, data);
|
|
54
|
+
return this.parseResponse(response);
|
|
130
55
|
}
|
|
131
|
-
|
|
132
|
-
const
|
|
133
|
-
|
|
56
|
+
createRequestClient(data) {
|
|
57
|
+
const options = this.extendRequest?.(data) ?? {};
|
|
58
|
+
return create_request_client_1.default(options, {
|
|
59
|
+
afterResponse: [this.afterResponse.bind(this)]
|
|
60
|
+
});
|
|
134
61
|
}
|
|
135
|
-
|
|
136
|
-
|
|
62
|
+
afterResponse(request, options, response) {
|
|
63
|
+
const modifiedResponse = response;
|
|
64
|
+
modifiedResponse.request = request;
|
|
65
|
+
modifiedResponse.options = options;
|
|
66
|
+
this.emit('response', modifiedResponse);
|
|
67
|
+
return modifiedResponse;
|
|
137
68
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
69
|
+
parseResponse(response) {
|
|
70
|
+
if (response instanceof fetch_1.Response) {
|
|
71
|
+
return response.data ?? response.content;
|
|
72
|
+
}
|
|
73
|
+
return response;
|
|
142
74
|
}
|
|
143
75
|
}
|
|
144
76
|
exports.Action = Action;
|
|
@@ -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,SAAgB,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;AApED,gDAoEC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
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
|
-
import { JSONLikeObject, JSONObject } from '../json-object';
|
|
5
|
-
import { SegmentEvent } from '../segment-event';
|
|
6
3
|
import { fieldsToJsonSchema } from './fields-to-jsonschema';
|
|
7
4
|
import { RequestClient } from '../create-request-client';
|
|
5
|
+
import type { JSONLikeObject, JSONObject } from '../json-object';
|
|
6
|
+
import type { SegmentEvent } from '../segment-event';
|
|
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';
|
|
11
|
-
import { AuthTokens } from './parse-settings';
|
|
12
10
|
export type { ActionDefinition, ExecuteInput, RequestFn };
|
|
13
11
|
export { fieldsToJsonSchema };
|
|
14
12
|
export interface SubscriptionStats {
|
|
@@ -18,7 +16,7 @@ export interface SubscriptionStats {
|
|
|
18
16
|
subscribe: string;
|
|
19
17
|
state: string;
|
|
20
18
|
input: JSONLikeObject;
|
|
21
|
-
output:
|
|
19
|
+
output: Result[] | null;
|
|
22
20
|
}
|
|
23
21
|
interface PartnerActions<Settings, Payload extends JSONLikeObject> {
|
|
24
22
|
[key: string]: Action<Settings, Payload>;
|
|
@@ -40,7 +38,7 @@ export interface Subscription {
|
|
|
40
38
|
subscribe: string;
|
|
41
39
|
mapping?: JSONObject;
|
|
42
40
|
}
|
|
43
|
-
export interface OAuth2ClientCredentials
|
|
41
|
+
export interface OAuth2ClientCredentials {
|
|
44
42
|
clientId: string;
|
|
45
43
|
clientSecret: string;
|
|
46
44
|
}
|
|
@@ -50,11 +48,6 @@ export interface RefreshAccessTokenResult {
|
|
|
50
48
|
}
|
|
51
49
|
interface AuthSettings<Settings> {
|
|
52
50
|
settings: Settings;
|
|
53
|
-
auth: AuthTokens;
|
|
54
|
-
}
|
|
55
|
-
interface RefreshAuthSettings<Settings> {
|
|
56
|
-
settings: Settings;
|
|
57
|
-
auth: OAuth2ClientCredentials;
|
|
58
51
|
}
|
|
59
52
|
interface Authentication<Settings> {
|
|
60
53
|
scheme: 'basic' | 'custom' | 'oauth2';
|
|
@@ -69,14 +62,13 @@ export interface BasicAuthentication<Settings> extends Authentication<Settings>
|
|
|
69
62
|
}
|
|
70
63
|
export interface OAuth2Authentication<Settings> extends Authentication<Settings> {
|
|
71
64
|
scheme: 'oauth2';
|
|
72
|
-
refreshAccessToken?: (request: RequestClient, input:
|
|
65
|
+
refreshAccessToken?: (request: RequestClient, input: AuthSettings<Settings>, oauthConfig: OAuth2ClientCredentials) => Promise<RefreshAccessTokenResult> | undefined;
|
|
73
66
|
}
|
|
74
67
|
export declare type AuthenticationScheme<Settings = any> = BasicAuthentication<Settings> | CustomAuthentication<Settings> | OAuth2Authentication<Settings>;
|
|
75
68
|
interface EventInput<Settings> {
|
|
76
69
|
readonly event: SegmentEvent;
|
|
77
70
|
readonly mapping: JSONObject;
|
|
78
71
|
readonly settings: Settings;
|
|
79
|
-
readonly auth?: AuthTokens;
|
|
80
72
|
}
|
|
81
73
|
export interface DecoratedResponse extends ModifiedResponse {
|
|
82
74
|
request: Request;
|
|
@@ -92,15 +84,11 @@ export declare class Destination<Settings = JSONObject> {
|
|
|
92
84
|
readonly settingsSchema?: JSONSchema4;
|
|
93
85
|
constructor(destination: DestinationDefinition<Settings>);
|
|
94
86
|
testAuthentication(settings: Settings): Promise<void>;
|
|
95
|
-
refreshAccessToken(settings: Settings,
|
|
87
|
+
refreshAccessToken(settings: Settings, oauthClientCredentials: OAuth2ClientCredentials): Promise<RefreshAccessTokenResult> | undefined;
|
|
96
88
|
private partnerAction;
|
|
97
|
-
protected executeAction(actionSlug: string, { event, mapping, settings
|
|
89
|
+
protected executeAction(actionSlug: string, { event, mapping, settings }: EventInput<Settings>): Promise<Result[]>;
|
|
98
90
|
private onSubscription;
|
|
99
|
-
onEvent(event: SegmentEvent, settings: JSONObject,
|
|
100
|
-
onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
|
|
101
|
-
onComplete?: (stats: SubscriptionStats) => void;
|
|
102
|
-
}): Promise<StepResult[]>;
|
|
103
|
-
private onEventInternal;
|
|
91
|
+
onEvent(event: SegmentEvent, settings: JSONObject, onComplete?: (stats: SubscriptionStats) => void): Promise<Result[]>;
|
|
104
92
|
private getSubscriptions;
|
|
105
93
|
private getDestinationSettings;
|
|
106
94
|
}
|
|
@@ -11,9 +11,7 @@ const fields_to_jsonschema_1 = require("./fields-to-jsonschema");
|
|
|
11
11
|
Object.defineProperty(exports, "fieldsToJsonSchema", { enumerable: true, get: function () { return fields_to_jsonschema_1.fieldsToJsonSchema; } });
|
|
12
12
|
const create_request_client_1 = __importDefault(require("../create-request-client"));
|
|
13
13
|
const errors_1 = require("../errors");
|
|
14
|
-
const
|
|
15
|
-
const RETRY_ATTEMPTS = 2;
|
|
16
|
-
const OAUTH2_SCHEME = 'oauth2';
|
|
14
|
+
const schema_validation_1 = require("../schema-validation");
|
|
17
15
|
class Destination {
|
|
18
16
|
constructor(destination) {
|
|
19
17
|
this.definition = destination;
|
|
@@ -30,13 +28,9 @@ class Destination {
|
|
|
30
28
|
}
|
|
31
29
|
}
|
|
32
30
|
async testAuthentication(settings) {
|
|
33
|
-
const
|
|
34
|
-
const auth = parse_settings_1.getAuthData(settings);
|
|
35
|
-
const data = { settings: destinationSettings, auth };
|
|
36
|
-
const context = { settings: destinationSettings, payload: {}, auth };
|
|
31
|
+
const context = { settings, payload: {} };
|
|
37
32
|
if (this.settingsSchema) {
|
|
38
|
-
|
|
39
|
-
await step.executeStep(context);
|
|
33
|
+
schema_validation_1.validateSchema(settings, this.settingsSchema, `${this.name}:settings`);
|
|
40
34
|
}
|
|
41
35
|
if (!this.authentication?.testAuthentication) {
|
|
42
36
|
return;
|
|
@@ -44,30 +38,26 @@ class Destination {
|
|
|
44
38
|
const options = this.extendRequest?.(context) ?? {};
|
|
45
39
|
const requestClient = create_request_client_1.default(options);
|
|
46
40
|
try {
|
|
47
|
-
await this.authentication.testAuthentication(requestClient,
|
|
41
|
+
await this.authentication.testAuthentication(requestClient, { settings });
|
|
48
42
|
}
|
|
49
43
|
catch (error) {
|
|
50
44
|
throw new Error('Credentials are invalid');
|
|
51
45
|
}
|
|
52
46
|
}
|
|
53
|
-
refreshAccessToken(settings,
|
|
54
|
-
if (this.authentication?.scheme !==
|
|
47
|
+
refreshAccessToken(settings, oauthClientCredentials) {
|
|
48
|
+
if (this.authentication?.scheme !== 'oauth2') {
|
|
55
49
|
throw new errors_1.IntegrationError('refreshAccessToken is only valid with oauth2 authentication scheme', 'NotImplemented', 501);
|
|
56
50
|
}
|
|
57
|
-
const context = {
|
|
58
|
-
settings,
|
|
59
|
-
payload: {},
|
|
60
|
-
auth: parse_settings_1.getAuthData(settings)
|
|
61
|
-
};
|
|
51
|
+
const context = { settings, payload: {} };
|
|
62
52
|
const options = this.extendRequest?.(context) ?? {};
|
|
63
53
|
const requestClient = create_request_client_1.default(options);
|
|
64
54
|
if (!this.authentication?.refreshAccessToken) {
|
|
65
55
|
return undefined;
|
|
66
56
|
}
|
|
67
|
-
return this.authentication.refreshAccessToken(requestClient, { settings,
|
|
57
|
+
return this.authentication.refreshAccessToken(requestClient, { settings }, oauthClientCredentials);
|
|
68
58
|
}
|
|
69
59
|
partnerAction(slug, definition) {
|
|
70
|
-
const action = new action_1.Action(definition, this.extendRequest);
|
|
60
|
+
const action = new action_1.Action(this.name, definition, this.extendRequest);
|
|
71
61
|
action.on('response', (response) => {
|
|
72
62
|
if (response) {
|
|
73
63
|
this.responses.push(response);
|
|
@@ -76,26 +66,24 @@ class Destination {
|
|
|
76
66
|
this.actions[slug] = action;
|
|
77
67
|
return this;
|
|
78
68
|
}
|
|
79
|
-
executeAction(actionSlug, { event, mapping, settings
|
|
69
|
+
executeAction(actionSlug, { event, mapping, settings }) {
|
|
80
70
|
const action = this.actions[actionSlug];
|
|
81
71
|
if (!action) {
|
|
82
72
|
return Promise.resolve([]);
|
|
83
73
|
}
|
|
84
74
|
return action.execute({
|
|
85
75
|
mapping,
|
|
86
|
-
|
|
87
|
-
settings
|
|
88
|
-
auth
|
|
76
|
+
data: event,
|
|
77
|
+
settings
|
|
89
78
|
});
|
|
90
79
|
}
|
|
91
|
-
async onSubscription(subscription, event, settings,
|
|
80
|
+
async onSubscription(subscription, event, settings, onComplete) {
|
|
92
81
|
const subscriptionStartedAt = time_1.time();
|
|
93
82
|
const actionSlug = subscription.partnerAction;
|
|
94
83
|
const input = {
|
|
95
84
|
event,
|
|
96
85
|
mapping: subscription.mapping || {},
|
|
97
|
-
settings
|
|
98
|
-
auth
|
|
86
|
+
settings
|
|
99
87
|
};
|
|
100
88
|
let state = 'pending';
|
|
101
89
|
let results = null;
|
|
@@ -147,33 +135,10 @@ class Destination {
|
|
|
147
135
|
});
|
|
148
136
|
}
|
|
149
137
|
}
|
|
150
|
-
async onEvent(event, settings,
|
|
151
|
-
for (let i = 0; i < RETRY_ATTEMPTS; i++) {
|
|
152
|
-
try {
|
|
153
|
-
return await this.onEventInternal(event, settings, options?.onComplete);
|
|
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();
|
|
171
|
-
}
|
|
172
|
-
async onEventInternal(event, settings, onComplete) {
|
|
138
|
+
async onEvent(event, settings, onComplete) {
|
|
173
139
|
const subscriptions = this.getSubscriptions(settings);
|
|
174
140
|
const destinationSettings = this.getDestinationSettings(settings);
|
|
175
|
-
const
|
|
176
|
-
const promises = subscriptions.map((subscription) => this.onSubscription(subscription, event, destinationSettings, authData, onComplete));
|
|
141
|
+
const promises = subscriptions.map((subscription) => this.onSubscription(subscription, event, destinationSettings, onComplete));
|
|
177
142
|
const results = await Promise.all(promises);
|
|
178
143
|
return [].concat(...results);
|
|
179
144
|
}
|
|
@@ -183,9 +148,6 @@ class Destination {
|
|
|
183
148
|
if (subscription) {
|
|
184
149
|
parsedSubscriptions = [subscription];
|
|
185
150
|
}
|
|
186
|
-
else if (typeof subscriptions === 'string') {
|
|
187
|
-
parsedSubscriptions = JSON.parse(subscriptions);
|
|
188
|
-
}
|
|
189
151
|
else if (Array.isArray(subscriptions)) {
|
|
190
152
|
parsedSubscriptions = subscriptions;
|
|
191
153
|
}
|
|
@@ -195,7 +157,7 @@ class Destination {
|
|
|
195
157
|
return parsedSubscriptions;
|
|
196
158
|
}
|
|
197
159
|
getDestinationSettings(settings) {
|
|
198
|
-
const { subcription, subscriptions,
|
|
160
|
+
const { subcription, subscriptions, ...otherSettings } = settings;
|
|
199
161
|
return otherSettings;
|
|
200
162
|
}
|
|
201
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAgF;AAEhF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import type { RequestOptions } from '../request-client';
|
|
2
|
-
import type {
|
|
2
|
+
import type { JSONObject } from '../json-object';
|
|
3
|
+
export declare type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
|
|
4
|
+
export interface Result {
|
|
5
|
+
output?: JSONObject | string | null | undefined;
|
|
6
|
+
error?: JSONObject | null;
|
|
7
|
+
}
|
|
8
|
+
export interface ExecuteInput<Settings, Payload> {
|
|
9
|
+
readonly mapping?: JSONObject;
|
|
10
|
+
readonly settings: Settings;
|
|
11
|
+
payload: Payload;
|
|
12
|
+
page?: string;
|
|
13
|
+
}
|
|
3
14
|
export interface DynamicFieldResponse {
|
|
4
15
|
body: {
|
|
5
16
|
data: DynamicFieldItem[];
|
|
@@ -23,7 +34,7 @@ export interface InputField {
|
|
|
23
34
|
placeholder?: string;
|
|
24
35
|
dynamic?: boolean;
|
|
25
36
|
required?: boolean;
|
|
26
|
-
properties?: Record<string, InputField
|
|
37
|
+
properties?: Record<string, Optional<InputField, 'description'>>;
|
|
27
38
|
format?: 'date' | 'time' | 'date-time' | 'uri' | 'uri-reference' | 'uri-template' | 'email' | 'hostname' | 'ipv4' | 'ipv6' | 'regex' | 'uuid' | 'password' | 'text';
|
|
28
39
|
}
|
|
29
40
|
export declare type FieldValue = string | number | boolean | object | Directive;
|
|
@@ -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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"}
|