@segment/actions-core 3.8.1 → 3.8.2-canary.18

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.
Files changed (34) hide show
  1. package/dist/cjs/destination-kit/action.d.ts +11 -7
  2. package/dist/cjs/destination-kit/action.js +38 -1
  3. package/dist/cjs/destination-kit/action.js.map +1 -1
  4. package/dist/cjs/destination-kit/index.d.ts +16 -6
  5. package/dist/cjs/destination-kit/index.js +56 -46
  6. package/dist/cjs/destination-kit/index.js.map +1 -1
  7. package/dist/cjs/destination-kit/types.d.ts +1 -1
  8. package/dist/cjs/mapping-kit/index.d.ts +5 -1
  9. package/dist/cjs/mapping-kit/index.js +15 -2
  10. package/dist/cjs/mapping-kit/index.js.map +1 -1
  11. package/dist/cjs/retry.d.ts +6 -0
  12. package/dist/cjs/retry.js +22 -0
  13. package/dist/cjs/retry.js.map +1 -0
  14. package/dist/cjs/schema-validation.d.ts +6 -1
  15. package/dist/cjs/schema-validation.js +5 -2
  16. package/dist/cjs/schema-validation.js.map +1 -1
  17. package/dist/esm/destination-kit/action.d.ts +11 -7
  18. package/dist/esm/destination-kit/action.js +39 -2
  19. package/dist/esm/destination-kit/action.js.map +1 -1
  20. package/dist/esm/destination-kit/index.d.ts +16 -6
  21. package/dist/esm/destination-kit/index.js +56 -46
  22. package/dist/esm/destination-kit/index.js.map +1 -1
  23. package/dist/esm/destination-kit/types.d.ts +1 -1
  24. package/dist/esm/mapping-kit/index.d.ts +5 -1
  25. package/dist/esm/mapping-kit/index.js +13 -1
  26. package/dist/esm/mapping-kit/index.js.map +1 -1
  27. package/dist/esm/retry.d.ts +6 -0
  28. package/dist/esm/retry.js +18 -0
  29. package/dist/esm/retry.js.map +1 -0
  30. package/dist/esm/schema-validation.d.ts +6 -1
  31. package/dist/esm/schema-validation.js +5 -2
  32. package/dist/esm/schema-validation.js.map +1 -1
  33. package/dist/tsconfig.build.tsbuildinfo +1 -1
  34. package/package.json +2 -2
@@ -2,6 +2,7 @@
2
2
  import { EventEmitter } from 'events';
3
3
  import createRequestClient from '../create-request-client';
4
4
  import { JSONLikeObject, JSONObject } from '../json-object';
5
+ import { InputData } from '../mapping-kit';
5
6
  import type { DynamicFieldResponse, InputField, RequestExtension, ExecuteInput, Result } from './types';
6
7
  import type { JSONSchema4 } from 'json-schema';
7
8
  import { AuthTokens } from './parse-settings';
@@ -21,24 +22,27 @@ export interface ActionDefinition<Settings, Payload = any> extends BaseActionDef
21
22
  [K in keyof Payload]?: RequestFn<Settings, Payload, DynamicFieldResponse>;
22
23
  };
23
24
  perform: RequestFn<Settings, Payload>;
25
+ performBatch?: RequestFn<Settings, Payload[]>;
24
26
  }
25
27
  interface ExecuteDynamicFieldInput<Settings, Payload> {
26
28
  settings: Settings;
27
29
  payload: Payload;
28
30
  page?: string;
29
31
  }
32
+ interface ExecuteBundle<T = unknown, Data = unknown> {
33
+ data: Data;
34
+ settings: T;
35
+ mapping: JSONObject;
36
+ auth: AuthTokens | undefined;
37
+ }
30
38
  export declare class Action<Settings, Payload extends JSONLikeObject> extends EventEmitter {
31
39
  readonly definition: ActionDefinition<Settings, Payload>;
32
40
  readonly destinationName: string;
33
41
  readonly schema?: JSONSchema4;
34
42
  private extendRequest;
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[]>;
43
+ constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings>);
44
+ execute(bundle: ExecuteBundle<Settings, InputData | undefined>): Promise<Result[]>;
45
+ executeBatch(bundle: ExecuteBundle<Settings, InputData[]>): Promise<void>;
42
46
  executeDynamicField(field: string, data: ExecuteDynamicFieldInput<Settings, Payload>): unknown;
43
47
  private performRequest;
44
48
  private createRequestClient;
@@ -25,7 +25,8 @@ class Action extends events_1.EventEmitter {
25
25
  const payload = mapping_kit_1.transform(bundle.mapping, bundle.data);
26
26
  results.push({ output: 'Mappings resolved' });
27
27
  if (this.schema) {
28
- schema_validation_1.validateSchema(payload, this.schema, `${this.destinationName}:${this.definition.title}`);
28
+ const schemaKey = `${this.destinationName}:${this.definition.title}`;
29
+ schema_validation_1.validateSchema(payload, this.schema, { schemaKey });
29
30
  results.push({ output: 'Payload validated' });
30
31
  }
31
32
  const dataBundle = {
@@ -39,6 +40,42 @@ class Action extends events_1.EventEmitter {
39
40
  results.push({ output: output });
40
41
  return results;
41
42
  }
43
+ async executeBatch(bundle) {
44
+ let payloads = mapping_kit_1.transformBatch(bundle.mapping, bundle.data);
45
+ if (this.schema) {
46
+ const schema = this.schema;
47
+ const schemaKey = `${this.destinationName}:${this.definition.title}`;
48
+ payloads = payloads.filter((payload) => schema_validation_1.validateSchema(payload, schema, {
49
+ schemaKey,
50
+ throwIfInvalid: false
51
+ }));
52
+ }
53
+ if (payloads.length === 0) {
54
+ return;
55
+ }
56
+ if (this.definition.performBatch) {
57
+ const data = {
58
+ rawData: bundle.data,
59
+ rawMapping: bundle.mapping,
60
+ settings: bundle.settings,
61
+ payload: payloads,
62
+ auth: bundle.auth
63
+ };
64
+ await this.performRequest(this.definition.performBatch, data);
65
+ return;
66
+ }
67
+ const promises = payloads.map((payload, i) => {
68
+ const data = {
69
+ rawData: bundle.data[i],
70
+ rawMapping: bundle.mapping,
71
+ settings: bundle.settings,
72
+ payload,
73
+ auth: bundle.auth
74
+ };
75
+ return this.performRequest(this.definition.perform, data);
76
+ });
77
+ await Promise.all(promises);
78
+ }
42
79
  executeDynamicField(field, data) {
43
80
  const fn = this.definition.dynamicFields?.[field];
44
81
  if (typeof fn !== 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,6 @@ export interface SubscriptionStats {
16
16
  destination: string;
17
17
  action: string;
18
18
  subscribe: string;
19
- state: string;
20
19
  input: JSONLikeObject;
21
20
  output: Result[] | null;
22
21
  }
@@ -81,10 +80,20 @@ interface EventInput<Settings> {
81
80
  readonly settings: Settings;
82
81
  readonly auth?: AuthTokens;
83
82
  }
83
+ interface BatchEventInput<Settings> {
84
+ readonly events: SegmentEvent[];
85
+ readonly mapping: JSONObject;
86
+ readonly settings: Settings;
87
+ readonly auth?: AuthTokens;
88
+ }
84
89
  export interface DecoratedResponse extends ModifiedResponse {
85
90
  request: Request;
86
91
  options: AllRequestOptions;
87
92
  }
93
+ interface OnEventOptions {
94
+ onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
95
+ onComplete?: (stats: SubscriptionStats) => void;
96
+ }
88
97
  export declare class Destination<Settings = JSONObject> {
89
98
  readonly definition: DestinationDefinition<Settings>;
90
99
  readonly name: string;
@@ -98,12 +107,13 @@ export declare class Destination<Settings = JSONObject> {
98
107
  refreshAccessToken(settings: Settings, oauthData: OAuth2ClientCredentials): Promise<RefreshAccessTokenResult> | undefined;
99
108
  private partnerAction;
100
109
  protected executeAction(actionSlug: string, { event, mapping, settings, auth }: EventInput<Settings>): Promise<Result[]>;
110
+ executeBatch(actionSlug: string, { events, mapping, settings, auth }: BatchEventInput<Settings>): Promise<{
111
+ output: string;
112
+ }[]>;
101
113
  private onSubscription;
102
- onEvent(event: SegmentEvent, settings: JSONObject, options?: {
103
- onTokenRefresh?: (tokens: RefreshAccessTokenResult) => void;
104
- onComplete?: (stats: SubscriptionStats) => void;
105
- }): Promise<Result[]>;
106
- private onEventInternal;
114
+ onEvent(event: SegmentEvent, settings: JSONObject, options?: OnEventOptions): Promise<Result[]>;
115
+ onBatch(events: SegmentEvent[], settings: JSONObject, options?: OnEventOptions): Promise<Result[]>;
116
+ private onSubscriptions;
107
117
  private getSubscriptions;
108
118
  private getDestinationSettings;
109
119
  }
@@ -13,7 +13,7 @@ const create_request_client_1 = __importDefault(require("../create-request-clien
13
13
  const schema_validation_1 = require("../schema-validation");
14
14
  const errors_1 = require("../errors");
15
15
  const parse_settings_1 = require("./parse-settings");
16
- const RETRY_ATTEMPTS = 2;
16
+ const retry_1 = require("../retry");
17
17
  const OAUTH2_SCHEME = 'oauth2';
18
18
  class Destination {
19
19
  constructor(destination) {
@@ -34,9 +34,9 @@ class Destination {
34
34
  const destinationSettings = this.getDestinationSettings(settings);
35
35
  const auth = parse_settings_1.getAuthData(settings);
36
36
  const data = { settings: destinationSettings, auth };
37
- const context = { settings: destinationSettings, payload: {}, auth };
37
+ const context = { settings: destinationSettings, payload: undefined, auth };
38
38
  if (this.settingsSchema) {
39
- schema_validation_1.validateSchema(settings, this.settingsSchema, `${this.name}:settings`);
39
+ schema_validation_1.validateSchema(settings, this.settingsSchema, { schemaKey: `${this.name}:settings` });
40
40
  }
41
41
  if (!this.authentication?.testAuthentication) {
42
42
  return;
@@ -56,7 +56,7 @@ class Destination {
56
56
  }
57
57
  const context = {
58
58
  settings,
59
- payload: {},
59
+ payload: undefined,
60
60
  auth: parse_settings_1.getAuthData(settings)
61
61
  };
62
62
  const options = this.extendRequest?.(context) ?? {};
@@ -76,10 +76,10 @@ class Destination {
76
76
  this.actions[slug] = action;
77
77
  return this;
78
78
  }
79
- executeAction(actionSlug, { event, mapping, settings, auth }) {
79
+ async executeAction(actionSlug, { event, mapping, settings, auth }) {
80
80
  const action = this.actions[actionSlug];
81
81
  if (!action) {
82
- return Promise.resolve([]);
82
+ return [];
83
83
  }
84
84
  return action.execute({
85
85
  mapping,
@@ -88,41 +88,52 @@ class Destination {
88
88
  auth
89
89
  });
90
90
  }
91
- async onSubscription(subscription, event, settings, auth, onComplete) {
91
+ async executeBatch(actionSlug, { events, mapping, settings, auth }) {
92
+ const action = this.actions[actionSlug];
93
+ if (!action) {
94
+ return [];
95
+ }
96
+ await action.executeBatch({
97
+ mapping,
98
+ data: events,
99
+ settings,
100
+ auth
101
+ });
102
+ return [{ output: 'successfully processed batch of events' }];
103
+ }
104
+ async onSubscription(subscription, events, settings, auth, onComplete) {
92
105
  const subscriptionStartedAt = time_1.time();
93
106
  const actionSlug = subscription.partnerAction;
94
107
  const input = {
95
- event,
96
108
  mapping: subscription.mapping || {},
97
109
  settings,
98
110
  auth
99
111
  };
100
- let state = 'pending';
101
112
  let results = null;
102
113
  try {
103
114
  if (!subscription.subscribe || typeof subscription.subscribe !== 'string') {
104
- state = 'skipped';
105
115
  results = [{ output: 'invalid subscription' }];
106
116
  return results;
107
117
  }
108
118
  const parsedSubscription = destination_subscriptions_1.parseFql(subscription.subscribe);
109
119
  if (parsedSubscription.error) {
110
- state = 'skipped';
111
120
  results = [{ output: `invalid subscription : ${parsedSubscription.error.message}` }];
112
121
  return results;
113
122
  }
114
- const isSubscribed = destination_subscriptions_1.validate(parsedSubscription, event);
115
- if (!isSubscribed) {
116
- state = 'skipped';
123
+ events = Array.isArray(events) ? events : [events];
124
+ const subscribedEvents = events.filter((event) => destination_subscriptions_1.validate(parsedSubscription, event));
125
+ if (subscribedEvents.length === 1) {
126
+ return await this.executeAction(actionSlug, { ...input, event: subscribedEvents[0] });
127
+ }
128
+ else if (subscribedEvents.length > 1) {
129
+ return await this.executeBatch(actionSlug, { ...input, events: subscribedEvents });
130
+ }
131
+ else {
117
132
  results = [{ output: 'not subscribed' }];
118
133
  return results;
119
134
  }
120
- results = await this.executeAction(actionSlug, input);
121
- state = 'done';
122
- return results;
123
135
  }
124
136
  catch (error) {
125
- state = 'errored';
126
137
  results = [{ error }];
127
138
  if (error.name === 'AggregateAjvError' || error.name === 'ValidationError') {
128
139
  error.status = 400;
@@ -137,9 +148,8 @@ class Destination {
137
148
  destination: this.name,
138
149
  action: actionSlug,
139
150
  subscribe: subscription.subscribe,
140
- state,
141
151
  input: {
142
- event: input.event,
152
+ data: events,
143
153
  mapping: input.mapping,
144
154
  settings: input.settings
145
155
  },
@@ -147,35 +157,35 @@ class Destination {
147
157
  });
148
158
  }
149
159
  }
150
- async onEvent(event, settings, options) {
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();
160
+ onEvent(event, settings, options) {
161
+ return this.onSubscriptions(event, settings, options);
162
+ }
163
+ onBatch(events, settings, options) {
164
+ return this.onSubscriptions(events, settings, options);
171
165
  }
172
- async onEventInternal(event, settings, onComplete) {
166
+ async onSubscriptions(data, settings, options) {
173
167
  const subscriptions = this.getSubscriptions(settings);
174
168
  const destinationSettings = this.getDestinationSettings(settings);
175
- const authData = parse_settings_1.getAuthData(settings);
176
- const promises = subscriptions.map((subscription) => this.onSubscription(subscription, event, destinationSettings, authData, onComplete));
177
- const results = await Promise.all(promises);
178
- return [].concat(...results);
169
+ const run = async () => {
170
+ const authData = parse_settings_1.getAuthData(settings);
171
+ const promises = subscriptions.map((subscription) => this.onSubscription(subscription, data, destinationSettings, authData, options?.onComplete));
172
+ const results = await Promise.all(promises);
173
+ return [].concat(...results);
174
+ };
175
+ const onFailedAttempt = async (error) => {
176
+ const statusCode = error?.status ?? error?.response?.status ?? 500;
177
+ if (!(statusCode === 401 && this.authentication?.scheme === OAUTH2_SCHEME)) {
178
+ throw error;
179
+ }
180
+ const oauthSettings = parse_settings_1.getOAuth2Data(settings);
181
+ const newTokens = await this.refreshAccessToken(destinationSettings, oauthSettings);
182
+ if (!newTokens) {
183
+ throw new errors_1.InvalidAuthenticationError('Failed to refresh access token');
184
+ }
185
+ settings = parse_settings_1.updateOAuthSettings(settings, newTokens);
186
+ options?.onTokenRefresh?.(newTokens);
187
+ };
188
+ return await retry_1.retry(run, { retries: 2, onFailedAttempt });
179
189
  }
180
190
  getSubscriptions(settings) {
181
191
  const { subscription, subscriptions } = settings;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/destination-kit/index.ts"],"names":[],"mappings":"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"}
@@ -68,4 +68,4 @@ export interface PathDirective {
68
68
  '@path': string;
69
69
  }
70
70
  export declare type Directive = IfDirective | TemplateDirective | PathDirective;
71
- export declare type RequestExtension<Settings, Payload = unknown> = (data: ExecuteInput<Settings, Payload>) => RequestOptions;
71
+ export declare type RequestExtension<Settings, Payload = undefined> = (data: ExecuteInput<Settings, Payload>) => RequestOptions;
@@ -1,2 +1,6 @@
1
1
  import { JSONObject, JSONLikeObject } from '../json-object';
2
- export declare function transform(mapping: JSONLikeObject, data?: unknown): JSONObject;
2
+ export declare type InputData = {
3
+ [key: string]: unknown;
4
+ };
5
+ export declare function transform(mapping: JSONLikeObject, data?: InputData | undefined): JSONObject;
6
+ export declare function transformBatch(mapping: JSONLikeObject, data?: Array<InputData> | undefined): JSONObject[];
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.transform = void 0;
6
+ exports.transformBatch = exports.transform = void 0;
7
7
  const get_1 = require("../get");
8
8
  const is_directive_1 = require("./is-directive");
9
9
  const placeholders_1 = require("./placeholders");
@@ -83,7 +83,7 @@ function resolve(mapping, payload) {
83
83
  function transform(mapping, data = {}) {
84
84
  const realType = real_type_of_1.realTypeOf(data);
85
85
  if (realType !== 'object') {
86
- throw new Error(`payload must be an object, got ${realType}`);
86
+ throw new Error(`data must be an object, got ${realType}`);
87
87
  }
88
88
  validate_1.default(mapping);
89
89
  const cloned = cloneJson(mapping);
@@ -92,6 +92,19 @@ function transform(mapping, data = {}) {
92
92
  return cleaned;
93
93
  }
94
94
  exports.transform = transform;
95
+ function transformBatch(mapping, data = []) {
96
+ const realType = real_type_of_1.realTypeOf(data);
97
+ if (!real_type_of_1.isArray(data)) {
98
+ throw new Error(`data must be an array, got ${realType}`);
99
+ }
100
+ validate_1.default(mapping);
101
+ return remove_undefined_1.removeUndefined(data.map((d) => {
102
+ const cloned = cloneJson(mapping);
103
+ const resolved = resolve(cloned, d);
104
+ return resolved;
105
+ }));
106
+ }
107
+ exports.transformBatch = transformBatch;
95
108
  function cloneJson(obj) {
96
109
  return JSON.parse(JSON.stringify(obj));
97
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mapping-kit/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mapping-kit/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface RetryOptions {
2
+ retries?: number;
3
+ onFailedAttempt?: (error: any, attemptCount: number) => PromiseLike<void> | void;
4
+ }
5
+ export declare function retry<T>(input: (attemptCount: number) => PromiseLike<T> | T, options?: RetryOptions): Promise<T>;
6
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retry = void 0;
4
+ async function retry(input, options) {
5
+ const retries = options?.retries ?? 2;
6
+ for (let attemptCount = 1; attemptCount <= retries; attemptCount++) {
7
+ try {
8
+ return await input(attemptCount);
9
+ }
10
+ catch (error) {
11
+ if (options?.onFailedAttempt) {
12
+ await options.onFailedAttempt(error, attemptCount);
13
+ }
14
+ if (!error || attemptCount >= retries) {
15
+ throw error;
16
+ }
17
+ }
18
+ }
19
+ throw new Error('Exhausted all retries.');
20
+ }
21
+ exports.retry = retry;
22
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/retry.ts"],"names":[],"mappings":";;;AAMO,KAAK,UAAU,KAAK,CACzB,KAAmD,EACnD,OAAsB;IAEtB,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC,CAAA;IAErC,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,IAAI,OAAO,EAAE,YAAY,EAAE,EAAE;QAClE,IAAI;YACF,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,CAAA;SACjC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,OAAO,EAAE,eAAe,EAAE;gBAC5B,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;aACnD;YAGD,IAAI,CAAC,KAAK,IAAI,YAAY,IAAI,OAAO,EAAE;gBACrC,MAAM,KAAK,CAAA;aACZ;SACF;KACF;IAGD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;AAC3C,CAAC;AAvBD,sBAuBC"}
@@ -1 +1,6 @@
1
- export declare function validateSchema(obj: unknown, schema: object, schemaKey?: string): void;
1
+ interface ValidationOptions {
2
+ schemaKey?: string;
3
+ throwIfInvalid?: boolean;
4
+ }
5
+ export declare function validateSchema(obj: unknown, schema: object, options?: ValidationOptions): boolean;
6
+ export {};
@@ -26,7 +26,8 @@ ajv.addFormat('date-like', (data) => {
26
26
  }
27
27
  return date.isValid();
28
28
  });
29
- function validateSchema(obj, schema, schemaKey) {
29
+ function validateSchema(obj, schema, options) {
30
+ const { schemaKey, throwIfInvalid = true } = options ?? {};
30
31
  let validate;
31
32
  if (schemaKey) {
32
33
  validate = ajv.getSchema(schemaKey) || ajv.addSchema(schema, schemaKey).getSchema(schemaKey);
@@ -34,9 +35,11 @@ function validateSchema(obj, schema, schemaKey) {
34
35
  else {
35
36
  validate = ajv.compile(schema);
36
37
  }
37
- if (!validate(obj)) {
38
+ const isValid = validate(obj);
39
+ if (throwIfInvalid && !isValid) {
38
40
  throw new ajv_human_errors_1.AggregateAjvError(validate.errors);
39
41
  }
42
+ return isValid;
40
43
  }
41
44
  exports.validateSchema = validateSchema;
42
45
  //# sourceMappingURL=schema-validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../../src/schema-validation.ts"],"names":[],"mappings":";;;;;;AACA,gEAA6D;AAC7D,8CAAqB;AACrB,kDAAyB;AAEzB,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC;IAElB,WAAW,EAAE,IAAI;IAEjB,SAAS,EAAE,IAAI;IAEf,OAAO,EAAE,IAAI;IAEb,gBAAgB,EAAE,IAAI;IAEtB,YAAY,EAAE,IAAI;CACnB,CAAC,CAAA;AAGF,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AACrC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AACjC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE;IAC1C,IAAI,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,CAAA;IAEtB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;QAEjC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;YACtB,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;SAC3B;QAED,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;KAChC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AAMF,SAAgB,cAAc,CAAC,GAAY,EAAE,MAAc,EAAE,SAAkB;IAC7E,IAAI,QAA8B,CAAA;IAElC,IAAI,SAAS,EAAE;QAEb,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,SAAS,CAAE,CAAA;KAC9F;SAAM;QACL,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;KAC/B;IAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAElB,MAAM,IAAI,oCAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KAC7C;AACH,CAAC;AAdD,wCAcC"}
1
+ {"version":3,"file":"schema-validation.js","sourceRoot":"","sources":["../../src/schema-validation.ts"],"names":[],"mappings":";;;;;;AACA,gEAA6D;AAC7D,8CAAqB;AACrB,kDAAyB;AAEzB,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC;IAElB,WAAW,EAAE,IAAI;IAEjB,SAAS,EAAE,IAAI;IAEf,OAAO,EAAE,IAAI;IAEb,gBAAgB,EAAE,IAAI;IAEtB,YAAY,EAAE,IAAI;CACnB,CAAC,CAAA;AAGF,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AACrC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;AACjC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE;IAC1C,IAAI,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,CAAA;IAEtB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE;QAEjC,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE;YACtB,IAAI,GAAG,eAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;SAC3B;QAED,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;KAChC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;AACvB,CAAC,CAAC,CAAA;AAWF,SAAgB,cAAc,CAAC,GAAY,EAAE,MAAc,EAAE,OAA2B;IACtF,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAC1D,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,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAY,CAAA;IAExC,IAAI,cAAc,IAAI,CAAC,OAAO,EAAE;QAE9B,MAAM,IAAI,oCAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;KAC7C;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAnBD,wCAmBC"}
@@ -2,6 +2,7 @@
2
2
  import { EventEmitter } from 'events';
3
3
  import createRequestClient from '../create-request-client';
4
4
  import { JSONLikeObject, JSONObject } from '../json-object';
5
+ import { InputData } from '../mapping-kit';
5
6
  import type { DynamicFieldResponse, InputField, RequestExtension, ExecuteInput, Result } from './types';
6
7
  import type { JSONSchema4 } from 'json-schema';
7
8
  import { AuthTokens } from './parse-settings';
@@ -21,24 +22,27 @@ export interface ActionDefinition<Settings, Payload = any> extends BaseActionDef
21
22
  [K in keyof Payload]?: RequestFn<Settings, Payload, DynamicFieldResponse>;
22
23
  };
23
24
  perform: RequestFn<Settings, Payload>;
25
+ performBatch?: RequestFn<Settings, Payload[]>;
24
26
  }
25
27
  interface ExecuteDynamicFieldInput<Settings, Payload> {
26
28
  settings: Settings;
27
29
  payload: Payload;
28
30
  page?: string;
29
31
  }
32
+ interface ExecuteBundle<T = unknown, Data = unknown> {
33
+ data: Data;
34
+ settings: T;
35
+ mapping: JSONObject;
36
+ auth: AuthTokens | undefined;
37
+ }
30
38
  export declare class Action<Settings, Payload extends JSONLikeObject> extends EventEmitter {
31
39
  readonly definition: ActionDefinition<Settings, Payload>;
32
40
  readonly destinationName: string;
33
41
  readonly schema?: JSONSchema4;
34
42
  private extendRequest;
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[]>;
43
+ constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings>);
44
+ execute(bundle: ExecuteBundle<Settings, InputData | undefined>): Promise<Result[]>;
45
+ executeBatch(bundle: ExecuteBundle<Settings, InputData[]>): Promise<void>;
42
46
  executeDynamicField(field: string, data: ExecuteDynamicFieldInput<Settings, Payload>): unknown;
43
47
  private performRequest;
44
48
  private createRequestClient;
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter } from 'events';
2
2
  import createRequestClient from '../create-request-client';
3
- import { transform } from '../mapping-kit';
3
+ import { transform, transformBatch } from '../mapping-kit';
4
4
  import { fieldsToJsonSchema } from './fields-to-jsonschema';
5
5
  import { Response } from '../fetch';
6
6
  import { validateSchema } from '../schema-validation';
@@ -19,7 +19,8 @@ export class Action extends EventEmitter {
19
19
  const payload = transform(bundle.mapping, bundle.data);
20
20
  results.push({ output: 'Mappings resolved' });
21
21
  if (this.schema) {
22
- validateSchema(payload, this.schema, `${this.destinationName}:${this.definition.title}`);
22
+ const schemaKey = `${this.destinationName}:${this.definition.title}`;
23
+ validateSchema(payload, this.schema, { schemaKey });
23
24
  results.push({ output: 'Payload validated' });
24
25
  }
25
26
  const dataBundle = {
@@ -33,6 +34,42 @@ export class Action extends EventEmitter {
33
34
  results.push({ output: output });
34
35
  return results;
35
36
  }
37
+ async executeBatch(bundle) {
38
+ let payloads = transformBatch(bundle.mapping, bundle.data);
39
+ if (this.schema) {
40
+ const schema = this.schema;
41
+ const schemaKey = `${this.destinationName}:${this.definition.title}`;
42
+ payloads = payloads.filter((payload) => validateSchema(payload, schema, {
43
+ schemaKey,
44
+ throwIfInvalid: false
45
+ }));
46
+ }
47
+ if (payloads.length === 0) {
48
+ return;
49
+ }
50
+ if (this.definition.performBatch) {
51
+ const data = {
52
+ rawData: bundle.data,
53
+ rawMapping: bundle.mapping,
54
+ settings: bundle.settings,
55
+ payload: payloads,
56
+ auth: bundle.auth
57
+ };
58
+ await this.performRequest(this.definition.performBatch, data);
59
+ return;
60
+ }
61
+ const promises = payloads.map((payload, i) => {
62
+ const data = {
63
+ rawData: bundle.data[i],
64
+ rawMapping: bundle.mapping,
65
+ settings: bundle.settings,
66
+ payload,
67
+ auth: bundle.auth
68
+ };
69
+ return this.performRequest(this.definition.perform, data);
70
+ });
71
+ await Promise.all(promises);
72
+ }
36
73
  executeDynamicField(field, data) {
37
74
  const fn = this.definition.dynamicFields?.[field];
38
75
  if (typeof fn !== 'function') {