@segment/actions-core 2.3.2-alpha.0 → 2.3.2-alpha.2
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/index.d.ts +5 -16
- package/dist/cjs/destination-kit/index.js +13 -51
- package/dist/cjs/destination-kit/index.js.map +1 -1
- package/dist/cjs/destination-kit/step.d.ts +0 -2
- package/dist/cjs/destination-kit/step.js.map +1 -1
- package/dist/esm/destination-kit/index.d.ts +5 -16
- package/dist/esm/destination-kit/index.js +14 -52
- package/dist/esm/destination-kit/index.js.map +1 -1
- package/dist/esm/destination-kit/step.d.ts +0 -2
- package/dist/esm/destination-kit/step.js.map +1 -1
- 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/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
|
@@ -8,7 +8,6 @@ import { RequestClient } from '../create-request-client';
|
|
|
8
8
|
import type { ModifiedResponse } from '../types';
|
|
9
9
|
import type { InputField, RequestExtension } from './types';
|
|
10
10
|
import type { AllRequestOptions } from '../request-client';
|
|
11
|
-
import { AuthTokens } from './parse-settings';
|
|
12
11
|
export type { ActionDefinition, ExecuteInput, RequestFn };
|
|
13
12
|
export { fieldsToJsonSchema };
|
|
14
13
|
export interface SubscriptionStats {
|
|
@@ -40,7 +39,7 @@ export interface Subscription {
|
|
|
40
39
|
subscribe: string;
|
|
41
40
|
mapping?: JSONObject;
|
|
42
41
|
}
|
|
43
|
-
export interface OAuth2ClientCredentials
|
|
42
|
+
export interface OAuth2ClientCredentials {
|
|
44
43
|
clientId: string;
|
|
45
44
|
clientSecret: string;
|
|
46
45
|
}
|
|
@@ -50,11 +49,6 @@ export interface RefreshAccessTokenResult {
|
|
|
50
49
|
}
|
|
51
50
|
interface AuthSettings<Settings> {
|
|
52
51
|
settings: Settings;
|
|
53
|
-
auth: AuthTokens;
|
|
54
|
-
}
|
|
55
|
-
interface RefreshAuthSettings<Settings> {
|
|
56
|
-
settings: Settings;
|
|
57
|
-
auth: OAuth2ClientCredentials;
|
|
58
52
|
}
|
|
59
53
|
interface Authentication<Settings> {
|
|
60
54
|
scheme: 'basic' | 'custom' | 'oauth2';
|
|
@@ -69,14 +63,13 @@ export interface BasicAuthentication<Settings> extends Authentication<Settings>
|
|
|
69
63
|
}
|
|
70
64
|
export interface OAuth2Authentication<Settings> extends Authentication<Settings> {
|
|
71
65
|
scheme: 'oauth2';
|
|
72
|
-
refreshAccessToken?: (request: RequestClient, input:
|
|
66
|
+
refreshAccessToken?: (request: RequestClient, input: AuthSettings<Settings>, oauthConfig: OAuth2ClientCredentials) => Promise<RefreshAccessTokenResult> | undefined;
|
|
73
67
|
}
|
|
74
68
|
export declare type AuthenticationScheme<Settings = any> = BasicAuthentication<Settings> | CustomAuthentication<Settings> | OAuth2Authentication<Settings>;
|
|
75
69
|
interface EventInput<Settings> {
|
|
76
70
|
readonly event: SegmentEvent;
|
|
77
71
|
readonly mapping: JSONObject;
|
|
78
72
|
readonly settings: Settings;
|
|
79
|
-
readonly auth?: AuthTokens;
|
|
80
73
|
}
|
|
81
74
|
export interface DecoratedResponse extends ModifiedResponse {
|
|
82
75
|
request: Request;
|
|
@@ -92,15 +85,11 @@ export declare class Destination<Settings = JSONObject> {
|
|
|
92
85
|
readonly settingsSchema?: JSONSchema4;
|
|
93
86
|
constructor(destination: DestinationDefinition<Settings>);
|
|
94
87
|
testAuthentication(settings: Settings): Promise<void>;
|
|
95
|
-
refreshAccessToken(settings: Settings,
|
|
88
|
+
refreshAccessToken(settings: Settings, oauthClientCredentials: OAuth2ClientCredentials): Promise<RefreshAccessTokenResult> | undefined;
|
|
96
89
|
private partnerAction;
|
|
97
|
-
protected executeAction(actionSlug: string, { event, mapping, settings
|
|
90
|
+
protected executeAction(actionSlug: string, { event, mapping, settings }: EventInput<Settings>): Promise<StepResult[]>;
|
|
98
91
|
private onSubscription;
|
|
99
|
-
onEvent(event: SegmentEvent, settings: JSONObject,
|
|
100
|
-
onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
|
|
101
|
-
onComplete?: (stats: SubscriptionStats) => void;
|
|
102
|
-
}): Promise<StepResult[]>;
|
|
103
|
-
private onEventInternal;
|
|
92
|
+
onEvent(event: SegmentEvent, settings: JSONObject, onComplete?: (stats: SubscriptionStats) => void): Promise<StepResult[]>;
|
|
104
93
|
private getSubscriptions;
|
|
105
94
|
private getDestinationSettings;
|
|
106
95
|
}
|
|
@@ -11,9 +11,6 @@ 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 parse_settings_1 = require("./parse-settings");
|
|
15
|
-
const RETRY_ATTEMPTS = 2;
|
|
16
|
-
const OAUTH2_SCHEME = 'oauth2';
|
|
17
14
|
class Destination {
|
|
18
15
|
constructor(destination) {
|
|
19
16
|
this.definition = destination;
|
|
@@ -30,10 +27,7 @@ class Destination {
|
|
|
30
27
|
}
|
|
31
28
|
}
|
|
32
29
|
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 };
|
|
30
|
+
const context = { settings, payload: {} };
|
|
37
31
|
if (this.settingsSchema) {
|
|
38
32
|
const step = new action_1.Validate('settings', this.settingsSchema);
|
|
39
33
|
await step.executeStep(context);
|
|
@@ -44,27 +38,23 @@ 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
60
|
const action = new action_1.Action(definition, this.extendRequest);
|
|
@@ -76,7 +66,7 @@ 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([]);
|
|
@@ -84,18 +74,16 @@ class Destination {
|
|
|
84
74
|
return action.execute({
|
|
85
75
|
mapping,
|
|
86
76
|
payload: event,
|
|
87
|
-
settings
|
|
88
|
-
auth
|
|
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,qCAAwE;AAExE,kCAAwC;AAGxC,iEAA2D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAgF;AAEhF,qCAAwE;AAExE,kCAAwC;AAGxC,iEAA2D;AAQlD,mGARA,yCAAkB,OAQA;AAP3B,qFAA6E;AAI7E,sCAA4C;AA4H5C,MAAa,WAAW;IAUtB,YAAY,WAA4C;QACtD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;QAChD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QAGnB,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE;YAC/B,IAAI,CAAC,cAAc,GAAG,yCAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;SACrE;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;YACrD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;SACxD;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAkB;QACzC,MAAM,OAAO,GAA+B,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAErE,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,IAAI,GAAG,IAAI,iBAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;YAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;SAChC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,EAAE;YAC5C,OAAM;SACP;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnD,MAAM,aAAa,GAAG,+BAAmB,CAAC,OAAO,CAAC,CAAA;QAElD,IAAI;YACF,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;SAC1E;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC3C;IACH,CAAC;IAED,kBAAkB,CAChB,QAAkB,EAClB,sBAA+C;QAE/C,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,KAAK,QAAQ,EAAE;YAC5C,MAAM,IAAI,yBAAgB,CACxB,oEAAoE,EACpE,gBAAgB,EAChB,GAAG,CACJ,CAAA;SACF;QAED,MAAM,OAAO,GAA+B,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnD,MAAM,aAAa,GAAG,+BAAmB,CAAC,OAAO,CAAC,CAAA;QAElD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,EAAE;YAC5C,OAAO,SAAS,CAAA;SACjB;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,EAAE,sBAAsB,CAAC,CAAA;IACpG,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,UAAsC;QACxE,MAAM,MAAM,GAAG,IAAI,eAAM,CAAe,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEvE,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YACjC,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aAC9B;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;QAE3B,OAAO,IAAI,CAAA;IACb,CAAC;IAES,aAAa,CACrB,UAAkB,EAClB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAwB;QAElD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACvC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;SAC3B;QAED,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,OAAO;YACP,OAAO,EAAE,KAAK;YACd,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,YAA0B,EAC1B,KAAmB,EACnB,QAAkB,EAClB,UAA+C;QAE/C,MAAM,qBAAqB,GAAG,WAAI,EAAE,CAAA;QACpC,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAA;QAC7C,MAAM,KAAK,GAAG;YACZ,KAAK;YACL,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,EAAE;YACnC,QAAQ;SACT,CAAA;QAED,IAAI,KAAK,GAAG,SAAS,CAAA;QACrB,IAAI,OAAO,GAAwB,IAAI,CAAA;QAEvC,IAAI;YACF,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,OAAO,YAAY,CAAC,SAAS,KAAK,QAAQ,EAAE;gBACzE,KAAK,GAAG,SAAS,CAAA;gBACjB,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAA;gBAC9C,OAAO,OAAO,CAAA;aACf;YAED,MAAM,kBAAkB,GAAG,6BAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;YAE3D,IAAK,kBAAqC,CAAC,KAAK,EAAE;gBAChD,KAAK,GAAG,SAAS,CAAA;gBACjB,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,0BAA2B,kBAAqC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBACxG,OAAO,OAAO,CAAA;aACf;YAED,MAAM,YAAY,GAAG,6BAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;YACxD,IAAI,CAAC,YAAY,EAAE;gBACjB,KAAK,GAAG,SAAS,CAAA;gBACjB,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAA;gBACxC,OAAO,OAAO,CAAA;aACf;YAED,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YACrD,KAAK,GAAG,MAAM,CAAA;YAEd,OAAO,OAAO,CAAA;SACf;QAAC,OAAO,KAAK,EAAE;YACd,KAAK,GAAG,SAAS,CAAA;YACjB,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YAErB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE;gBAC1E,KAAK,CAAC,MAAM,GAAG,GAAG,CAAA;aACnB;YAED,MAAM,KAAK,CAAA;SACZ;gBAAS;YACR,MAAM,mBAAmB,GAAG,WAAI,EAAE,CAAA;YAClC,MAAM,oBAAoB,GAAG,eAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;YAEjF,UAAU,EAAE,CAAC;gBACX,QAAQ,EAAE,oBAAoB;gBAC9B,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,KAAK;gBACL,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK,CAAC,KAAkC;oBAC/C,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,QAAQ,EAAE,KAAK,CAAC,QAAqC;iBACtD;gBACD,MAAM,EAAE,OAAO;aAChB,CAAC,CAAA;SACH;IACH,CAAC;IAMM,KAAK,CAAC,OAAO,CAClB,KAAmB,EACnB,QAAoB,EACpB,UAA+C;QAE/C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAEjE,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAClD,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAC1E,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE3C,OAAQ,EAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAA;IAChD,CAAC;IAEO,gBAAgB,CAAC,QAAoB;QAI3C,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAA;QAChD,IAAI,mBAA4B,CAAA;QAEhC,IAAI,YAAY,EAAE;YAChB,mBAAmB,GAAG,CAAC,YAAY,CAAC,CAAA;SACrC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACvC,mBAAmB,GAAG,aAAa,CAAA;SACpC;aAAM;YACL,mBAAmB,GAAG,EAAE,CAAA;SACzB;QAED,OAAO,mBAAqC,CAAA;IAC9C,CAAC;IAEO,sBAAsB,CAAC,QAAoB;QACjD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,GAAG,QAAQ,CAAA;QACjE,OAAO,aAAoC,CAAA;IAC7C,CAAC;CACF;AA1ND,kCA0NC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import { JSONObject } from '../json-object';
|
|
4
|
-
import { AuthTokens } from './parse-settings';
|
|
5
4
|
export interface StepResult {
|
|
6
5
|
output?: JSONObject | string | null | undefined;
|
|
7
6
|
error?: JSONObject | null;
|
|
@@ -11,7 +10,6 @@ export interface ExecuteInput<Settings, Payload> {
|
|
|
11
10
|
readonly settings: Settings;
|
|
12
11
|
payload: Payload;
|
|
13
12
|
page?: string;
|
|
14
|
-
readonly auth?: AuthTokens;
|
|
15
13
|
}
|
|
16
14
|
export declare class Step<Settings, Payload> extends EventEmitter {
|
|
17
15
|
executeStep?(data: ExecuteInput<Settings, Payload>): Promise<JSONObject | string | null | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../../src/destination-kit/step.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../../src/destination-kit/step.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAuBrC,MAAa,IAAwB,SAAQ,qBAAY;IAGvD,KAAK,CAAC,OAAO,CAAC,IAAqC;QACjD,MAAM,MAAM,GAAe;YACzB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;SACZ,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,MAAM,CAAA;SACd;QAED,IAAI;YACF,MAAM,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;SAC7C;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;SACjB;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AArBD,oBAqBC;AAKD,MAAa,KAAK;IAGhB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,IAA6B;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAqC;QACjD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;SACpC;QAED,MAAM,OAAO,GAAiB,EAAE,CAAA;QAEhC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAEvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,MAAK;aACN;SACF;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AA9BD,sBA8BC"}
|
|
@@ -8,7 +8,6 @@ import { RequestClient } from '../create-request-client';
|
|
|
8
8
|
import type { ModifiedResponse } from '../types';
|
|
9
9
|
import type { InputField, RequestExtension } from './types';
|
|
10
10
|
import type { AllRequestOptions } from '../request-client';
|
|
11
|
-
import { AuthTokens } from './parse-settings';
|
|
12
11
|
export type { ActionDefinition, ExecuteInput, RequestFn };
|
|
13
12
|
export { fieldsToJsonSchema };
|
|
14
13
|
export interface SubscriptionStats {
|
|
@@ -40,7 +39,7 @@ export interface Subscription {
|
|
|
40
39
|
subscribe: string;
|
|
41
40
|
mapping?: JSONObject;
|
|
42
41
|
}
|
|
43
|
-
export interface OAuth2ClientCredentials
|
|
42
|
+
export interface OAuth2ClientCredentials {
|
|
44
43
|
clientId: string;
|
|
45
44
|
clientSecret: string;
|
|
46
45
|
}
|
|
@@ -50,11 +49,6 @@ export interface RefreshAccessTokenResult {
|
|
|
50
49
|
}
|
|
51
50
|
interface AuthSettings<Settings> {
|
|
52
51
|
settings: Settings;
|
|
53
|
-
auth: AuthTokens;
|
|
54
|
-
}
|
|
55
|
-
interface RefreshAuthSettings<Settings> {
|
|
56
|
-
settings: Settings;
|
|
57
|
-
auth: OAuth2ClientCredentials;
|
|
58
52
|
}
|
|
59
53
|
interface Authentication<Settings> {
|
|
60
54
|
scheme: 'basic' | 'custom' | 'oauth2';
|
|
@@ -69,14 +63,13 @@ export interface BasicAuthentication<Settings> extends Authentication<Settings>
|
|
|
69
63
|
}
|
|
70
64
|
export interface OAuth2Authentication<Settings> extends Authentication<Settings> {
|
|
71
65
|
scheme: 'oauth2';
|
|
72
|
-
refreshAccessToken?: (request: RequestClient, input:
|
|
66
|
+
refreshAccessToken?: (request: RequestClient, input: AuthSettings<Settings>, oauthConfig: OAuth2ClientCredentials) => Promise<RefreshAccessTokenResult> | undefined;
|
|
73
67
|
}
|
|
74
68
|
export declare type AuthenticationScheme<Settings = any> = BasicAuthentication<Settings> | CustomAuthentication<Settings> | OAuth2Authentication<Settings>;
|
|
75
69
|
interface EventInput<Settings> {
|
|
76
70
|
readonly event: SegmentEvent;
|
|
77
71
|
readonly mapping: JSONObject;
|
|
78
72
|
readonly settings: Settings;
|
|
79
|
-
readonly auth?: AuthTokens;
|
|
80
73
|
}
|
|
81
74
|
export interface DecoratedResponse extends ModifiedResponse {
|
|
82
75
|
request: Request;
|
|
@@ -92,15 +85,11 @@ export declare class Destination<Settings = JSONObject> {
|
|
|
92
85
|
readonly settingsSchema?: JSONSchema4;
|
|
93
86
|
constructor(destination: DestinationDefinition<Settings>);
|
|
94
87
|
testAuthentication(settings: Settings): Promise<void>;
|
|
95
|
-
refreshAccessToken(settings: Settings,
|
|
88
|
+
refreshAccessToken(settings: Settings, oauthClientCredentials: OAuth2ClientCredentials): Promise<RefreshAccessTokenResult> | undefined;
|
|
96
89
|
private partnerAction;
|
|
97
|
-
protected executeAction(actionSlug: string, { event, mapping, settings
|
|
90
|
+
protected executeAction(actionSlug: string, { event, mapping, settings }: EventInput<Settings>): Promise<StepResult[]>;
|
|
98
91
|
private onSubscription;
|
|
99
|
-
onEvent(event: SegmentEvent, settings: JSONObject,
|
|
100
|
-
onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
|
|
101
|
-
onComplete?: (stats: SubscriptionStats) => void;
|
|
102
|
-
}): Promise<StepResult[]>;
|
|
103
|
-
private onEventInternal;
|
|
92
|
+
onEvent(event: SegmentEvent, settings: JSONObject, onComplete?: (stats: SubscriptionStats) => void): Promise<StepResult[]>;
|
|
104
93
|
private getSubscriptions;
|
|
105
94
|
private getDestinationSettings;
|
|
106
95
|
}
|
|
@@ -3,11 +3,8 @@ import { Action, Validate } from './action';
|
|
|
3
3
|
import { time, duration } from '../time';
|
|
4
4
|
import { fieldsToJsonSchema } from './fields-to-jsonschema';
|
|
5
5
|
import createRequestClient from '../create-request-client';
|
|
6
|
-
import { IntegrationError
|
|
7
|
-
import { getAuthData, getOAuth2Data, updateOAuthSettings } from './parse-settings';
|
|
6
|
+
import { IntegrationError } from '../errors';
|
|
8
7
|
export { fieldsToJsonSchema };
|
|
9
|
-
const RETRY_ATTEMPTS = 2;
|
|
10
|
-
const OAUTH2_SCHEME = 'oauth2';
|
|
11
8
|
export class Destination {
|
|
12
9
|
constructor(destination) {
|
|
13
10
|
this.definition = destination;
|
|
@@ -24,10 +21,7 @@ export class Destination {
|
|
|
24
21
|
}
|
|
25
22
|
}
|
|
26
23
|
async testAuthentication(settings) {
|
|
27
|
-
const
|
|
28
|
-
const auth = getAuthData(settings);
|
|
29
|
-
const data = { settings: destinationSettings, auth };
|
|
30
|
-
const context = { settings: destinationSettings, payload: {}, auth };
|
|
24
|
+
const context = { settings, payload: {} };
|
|
31
25
|
if (this.settingsSchema) {
|
|
32
26
|
const step = new Validate('settings', this.settingsSchema);
|
|
33
27
|
await step.executeStep(context);
|
|
@@ -38,27 +32,23 @@ export class Destination {
|
|
|
38
32
|
const options = this.extendRequest?.(context) ?? {};
|
|
39
33
|
const requestClient = createRequestClient(options);
|
|
40
34
|
try {
|
|
41
|
-
await this.authentication.testAuthentication(requestClient,
|
|
35
|
+
await this.authentication.testAuthentication(requestClient, { settings });
|
|
42
36
|
}
|
|
43
37
|
catch (error) {
|
|
44
38
|
throw new Error('Credentials are invalid');
|
|
45
39
|
}
|
|
46
40
|
}
|
|
47
|
-
refreshAccessToken(settings,
|
|
48
|
-
if (this.authentication?.scheme !==
|
|
41
|
+
refreshAccessToken(settings, oauthClientCredentials) {
|
|
42
|
+
if (this.authentication?.scheme !== 'oauth2') {
|
|
49
43
|
throw new IntegrationError('refreshAccessToken is only valid with oauth2 authentication scheme', 'NotImplemented', 501);
|
|
50
44
|
}
|
|
51
|
-
const context = {
|
|
52
|
-
settings,
|
|
53
|
-
payload: {},
|
|
54
|
-
auth: getAuthData(settings)
|
|
55
|
-
};
|
|
45
|
+
const context = { settings, payload: {} };
|
|
56
46
|
const options = this.extendRequest?.(context) ?? {};
|
|
57
47
|
const requestClient = createRequestClient(options);
|
|
58
48
|
if (!this.authentication?.refreshAccessToken) {
|
|
59
49
|
return undefined;
|
|
60
50
|
}
|
|
61
|
-
return this.authentication.refreshAccessToken(requestClient, { settings,
|
|
51
|
+
return this.authentication.refreshAccessToken(requestClient, { settings }, oauthClientCredentials);
|
|
62
52
|
}
|
|
63
53
|
partnerAction(slug, definition) {
|
|
64
54
|
const action = new Action(definition, this.extendRequest);
|
|
@@ -70,7 +60,7 @@ export class Destination {
|
|
|
70
60
|
this.actions[slug] = action;
|
|
71
61
|
return this;
|
|
72
62
|
}
|
|
73
|
-
executeAction(actionSlug, { event, mapping, settings
|
|
63
|
+
executeAction(actionSlug, { event, mapping, settings }) {
|
|
74
64
|
const action = this.actions[actionSlug];
|
|
75
65
|
if (!action) {
|
|
76
66
|
return Promise.resolve([]);
|
|
@@ -78,18 +68,16 @@ export class Destination {
|
|
|
78
68
|
return action.execute({
|
|
79
69
|
mapping,
|
|
80
70
|
payload: event,
|
|
81
|
-
settings
|
|
82
|
-
auth
|
|
71
|
+
settings
|
|
83
72
|
});
|
|
84
73
|
}
|
|
85
|
-
async onSubscription(subscription, event, settings,
|
|
74
|
+
async onSubscription(subscription, event, settings, onComplete) {
|
|
86
75
|
const subscriptionStartedAt = time();
|
|
87
76
|
const actionSlug = subscription.partnerAction;
|
|
88
77
|
const input = {
|
|
89
78
|
event,
|
|
90
79
|
mapping: subscription.mapping || {},
|
|
91
|
-
settings
|
|
92
|
-
auth
|
|
80
|
+
settings
|
|
93
81
|
};
|
|
94
82
|
let state = 'pending';
|
|
95
83
|
let results = null;
|
|
@@ -141,33 +129,10 @@ export class Destination {
|
|
|
141
129
|
});
|
|
142
130
|
}
|
|
143
131
|
}
|
|
144
|
-
async onEvent(event, settings,
|
|
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();
|
|
165
|
-
}
|
|
166
|
-
async onEventInternal(event, settings, onComplete) {
|
|
132
|
+
async onEvent(event, settings, onComplete) {
|
|
167
133
|
const subscriptions = this.getSubscriptions(settings);
|
|
168
134
|
const destinationSettings = this.getDestinationSettings(settings);
|
|
169
|
-
const
|
|
170
|
-
const promises = subscriptions.map((subscription) => this.onSubscription(subscription, event, destinationSettings, authData, onComplete));
|
|
135
|
+
const promises = subscriptions.map((subscription) => this.onSubscription(subscription, event, destinationSettings, onComplete));
|
|
171
136
|
const results = await Promise.all(promises);
|
|
172
137
|
return [].concat(...results);
|
|
173
138
|
}
|
|
@@ -177,9 +142,6 @@ export class Destination {
|
|
|
177
142
|
if (subscription) {
|
|
178
143
|
parsedSubscriptions = [subscription];
|
|
179
144
|
}
|
|
180
|
-
else if (typeof subscriptions === 'string') {
|
|
181
|
-
parsedSubscriptions = JSON.parse(subscriptions);
|
|
182
|
-
}
|
|
183
145
|
else if (Array.isArray(subscriptions)) {
|
|
184
146
|
parsedSubscriptions = subscriptions;
|
|
185
147
|
}
|
|
@@ -189,7 +151,7 @@ export class Destination {
|
|
|
189
151
|
return parsedSubscriptions;
|
|
190
152
|
}
|
|
191
153
|
getDestinationSettings(settings) {
|
|
192
|
-
const { subcription, subscriptions,
|
|
154
|
+
const { subcription, subscriptions, ...otherSettings } = settings;
|
|
193
155
|
return otherSettings;
|
|
194
156
|
}
|
|
195
157
|
}
|
|
@@ -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,6BAA6B,CAAA;AAEhF,OAAO,EAAE,MAAM,EAAoB,QAAQ,EAAa,MAAM,UAAU,CAAA;AAExE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,mBAAsC,MAAM,0BAA0B,CAAA;AAI7E,OAAO,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAkB,MAAM,6BAA6B,CAAA;AAEhF,OAAO,EAAE,MAAM,EAAoB,QAAQ,EAAa,MAAM,UAAU,CAAA;AAExE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,mBAAsC,MAAM,0BAA0B,CAAA;AAI7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAG5C,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAyH7B,MAAM,OAAO,WAAW;IAUtB,YAAY,WAA4C;QACtD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAA;QAChD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QAGnB,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE;YAC/B,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;SACrE;QAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;YACrD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;SACxD;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAkB;QACzC,MAAM,OAAO,GAA+B,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QAErE,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;YAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;SAChC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,EAAE;YAC5C,OAAM;SACP;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnD,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAElD,IAAI;YACF,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;SAC1E;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;SAC3C;IACH,CAAC;IAED,kBAAkB,CAChB,QAAkB,EAClB,sBAA+C;QAE/C,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,KAAK,QAAQ,EAAE;YAC5C,MAAM,IAAI,gBAAgB,CACxB,oEAAoE,EACpE,gBAAgB,EAChB,GAAG,CACJ,CAAA;SACF;QAED,MAAM,OAAO,GAA+B,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QACnD,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAElD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,EAAE;YAC5C,OAAO,SAAS,CAAA;SACjB;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,EAAE,sBAAsB,CAAC,CAAA;IACpG,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,UAAsC;QACxE,MAAM,MAAM,GAAG,IAAI,MAAM,CAAe,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEvE,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YACjC,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;aAC9B;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;QAE3B,OAAO,IAAI,CAAA;IACb,CAAC;IAES,aAAa,CACrB,UAAkB,EAClB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAwB;QAElD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACvC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;SAC3B;QAED,OAAO,MAAM,CAAC,OAAO,CAAC;YACpB,OAAO;YACP,OAAO,EAAE,KAAK;YACd,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,YAA0B,EAC1B,KAAmB,EACnB,QAAkB,EAClB,UAA+C;QAE/C,MAAM,qBAAqB,GAAG,IAAI,EAAE,CAAA;QACpC,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAA;QAC7C,MAAM,KAAK,GAAG;YACZ,KAAK;YACL,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,EAAE;YACnC,QAAQ;SACT,CAAA;QAED,IAAI,KAAK,GAAG,SAAS,CAAA;QACrB,IAAI,OAAO,GAAwB,IAAI,CAAA;QAEvC,IAAI;YACF,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,OAAO,YAAY,CAAC,SAAS,KAAK,QAAQ,EAAE;gBACzE,KAAK,GAAG,SAAS,CAAA;gBACjB,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAA;gBAC9C,OAAO,OAAO,CAAA;aACf;YAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;YAE3D,IAAK,kBAAqC,CAAC,KAAK,EAAE;gBAChD,KAAK,GAAG,SAAS,CAAA;gBACjB,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,0BAA2B,kBAAqC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBACxG,OAAO,OAAO,CAAA;aACf;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;YACxD,IAAI,CAAC,YAAY,EAAE;gBACjB,KAAK,GAAG,SAAS,CAAA;gBACjB,OAAO,GAAG,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAA;gBACxC,OAAO,OAAO,CAAA;aACf;YAED,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;YACrD,KAAK,GAAG,MAAM,CAAA;YAEd,OAAO,OAAO,CAAA;SACf;QAAC,OAAO,KAAK,EAAE;YACd,KAAK,GAAG,SAAS,CAAA;YACjB,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YAErB,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE;gBAC1E,KAAK,CAAC,MAAM,GAAG,GAAG,CAAA;aACnB;YAED,MAAM,KAAK,CAAA;SACZ;gBAAS;YACR,MAAM,mBAAmB,GAAG,IAAI,EAAE,CAAA;YAClC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAA;YAEjF,UAAU,EAAE,CAAC;gBACX,QAAQ,EAAE,oBAAoB;gBAC9B,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,YAAY,CAAC,SAAS;gBACjC,KAAK;gBACL,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK,CAAC,KAAkC;oBAC/C,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,QAAQ,EAAE,KAAK,CAAC,QAAqC;iBACtD;gBACD,MAAM,EAAE,OAAO;aAChB,CAAC,CAAA;SACH;IACH,CAAC;IAMM,KAAK,CAAC,OAAO,CAClB,KAAmB,EACnB,QAAoB,EACpB,UAA+C;QAE/C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACrD,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QAEjE,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAClD,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAC1E,CAAA;QAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE3C,OAAQ,EAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAA;IAChD,CAAC;IAEO,gBAAgB,CAAC,QAAoB;QAI3C,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAA;QAChD,IAAI,mBAA4B,CAAA;QAEhC,IAAI,YAAY,EAAE;YAChB,mBAAmB,GAAG,CAAC,YAAY,CAAC,CAAA;SACrC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACvC,mBAAmB,GAAG,aAAa,CAAA;SACpC;aAAM;YACL,mBAAmB,GAAG,EAAE,CAAA;SACzB;QAED,OAAO,mBAAqC,CAAA;IAC9C,CAAC;IAEO,sBAAsB,CAAC,QAAoB;QACjD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,GAAG,QAAQ,CAAA;QACjE,OAAO,aAAoC,CAAA;IAC7C,CAAC;CACF"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
3
|
import { JSONObject } from '../json-object';
|
|
4
|
-
import { AuthTokens } from './parse-settings';
|
|
5
4
|
export interface StepResult {
|
|
6
5
|
output?: JSONObject | string | null | undefined;
|
|
7
6
|
error?: JSONObject | null;
|
|
@@ -11,7 +10,6 @@ export interface ExecuteInput<Settings, Payload> {
|
|
|
11
10
|
readonly settings: Settings;
|
|
12
11
|
payload: Payload;
|
|
13
12
|
page?: string;
|
|
14
|
-
readonly auth?: AuthTokens;
|
|
15
13
|
}
|
|
16
14
|
export declare class Step<Settings, Payload> extends EventEmitter {
|
|
17
15
|
executeStep?(data: ExecuteInput<Settings, Payload>): Promise<JSONObject | string | null | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../../src/destination-kit/step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../../src/destination-kit/step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAuBrC,MAAM,OAAO,IAAwB,SAAQ,YAAY;IAGvD,KAAK,CAAC,OAAO,CAAC,IAAqC;QACjD,MAAM,MAAM,GAAe;YACzB,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;SACZ,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,MAAM,CAAA;SACd;QAED,IAAI;YACF,MAAM,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;SAC7C;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,KAAK,GAAG,CAAC,CAAA;SACjB;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAKD,MAAM,OAAO,KAAK;IAGhB;QACE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;IACjB,CAAC;IAED,IAAI,CAAC,IAA6B;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAqC;QACjD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;SACpC;QAED,MAAM,OAAO,GAAiB,EAAE,CAAA;QAEhC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAEvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAEpB,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChB,MAAK;aACN;SACF;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@segment/actions-core",
|
|
3
3
|
"description": "Core runtime for Destinations Actions.",
|
|
4
|
-
"version": "2.3.2-alpha.
|
|
4
|
+
"version": "2.3.2-alpha.2",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/segmentio/fab-5-engine",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"<rootDir>/dist/"
|
|
72
72
|
]
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "ff9a13b2514487e444571a77a550a3eaf9ecbaa4"
|
|
75
75
|
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { OAuth2ClientCredentials, RefreshAccessTokenResult } from '.';
|
|
2
|
-
import { JSONObject } from '../json-object';
|
|
3
|
-
export interface AuthTokens {
|
|
4
|
-
accessToken: string;
|
|
5
|
-
refreshToken: string;
|
|
6
|
-
}
|
|
7
|
-
export declare function getAuthData(settings: JSONObject): AuthTokens;
|
|
8
|
-
export declare function getOAuth2Data(settings: JSONObject): OAuth2ClientCredentials;
|
|
9
|
-
export declare function updateOAuthSettings(settings: JSONObject, oauthData: RefreshAccessTokenResult): JSONObject;
|
|
@@ -1,32 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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,9 +0,0 @@
|
|
|
1
|
-
import { OAuth2ClientCredentials, RefreshAccessTokenResult } from '.';
|
|
2
|
-
import { JSONObject } from '../json-object';
|
|
3
|
-
export interface AuthTokens {
|
|
4
|
-
accessToken: string;
|
|
5
|
-
refreshToken: string;
|
|
6
|
-
}
|
|
7
|
-
export declare function getAuthData(settings: JSONObject): AuthTokens;
|
|
8
|
-
export declare function getOAuth2Data(settings: JSONObject): OAuth2ClientCredentials;
|
|
9
|
-
export declare function updateOAuthSettings(settings: JSONObject, oauthData: RefreshAccessTokenResult): JSONObject;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export function getAuthData(settings) {
|
|
2
|
-
const oauthData = getOAuth2Data(settings);
|
|
3
|
-
return { accessToken: oauthData.accessToken, refreshToken: oauthData.refreshToken };
|
|
4
|
-
}
|
|
5
|
-
export function getOAuth2Data(settings) {
|
|
6
|
-
const { oauth } = settings;
|
|
7
|
-
return {
|
|
8
|
-
accessToken: oauth?.access_token,
|
|
9
|
-
refreshToken: oauth?.refresh_token,
|
|
10
|
-
clientId: oauth?.clientId,
|
|
11
|
-
clientSecret: oauth?.clientSecret
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
export function updateOAuthSettings(settings, oauthData) {
|
|
15
|
-
const { oauth, ...otherSettings } = settings;
|
|
16
|
-
if (oauth) {
|
|
17
|
-
const newOauth = oauth;
|
|
18
|
-
newOauth.access_token = oauthData.accessToken;
|
|
19
|
-
if (oauthData.refreshToken) {
|
|
20
|
-
newOauth.refresh_token = oauthData.refreshToken;
|
|
21
|
-
}
|
|
22
|
-
otherSettings['oauth'] = newOauth;
|
|
23
|
-
}
|
|
24
|
-
return otherSettings;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=parse-settings.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-settings.js","sourceRoot":"","sources":["../../../src/destination-kit/parse-settings.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,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;AAOD,MAAM,UAAU,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;AAQD,MAAM,UAAU,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"}
|