@segment/actions-core 3.9.1-alpha.3 → 3.9.1-canary.5

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 +12 -7
  2. package/dist/cjs/destination-kit/action.js +31 -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 +57 -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 +23 -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 +12 -7
  18. package/dist/esm/destination-kit/action.js +32 -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 +57 -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 +19 -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,28 @@ export interface ActionDefinition<Settings, Payload = any> extends BaseActionDef
21
22
  [K in keyof Payload]?: RequestFn<Settings, Payload, DynamicFieldResponse>;
22
23
  };
23
24
  perform: RequestFn<Settings, Payload>;
25
+ performBatch?: RequestFn<Settings, Payload[]>;
24
26
  }
25
27
  interface ExecuteDynamicFieldInput<Settings, Payload> {
26
28
  settings: Settings;
27
29
  payload: Payload;
28
30
  page?: string;
29
31
  }
32
+ interface ExecuteBundle<T = unknown, Data = unknown> {
33
+ data: Data;
34
+ settings: T;
35
+ mapping: JSONObject;
36
+ auth: AuthTokens | undefined;
37
+ }
30
38
  export declare class Action<Settings, Payload extends JSONLikeObject> extends EventEmitter {
31
39
  readonly definition: ActionDefinition<Settings, Payload>;
32
40
  readonly destinationName: string;
33
41
  readonly schema?: JSONSchema4;
42
+ readonly hasBatchSupport: boolean;
34
43
  private extendRequest;
35
- constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings, Payload>);
36
- execute(bundle: {
37
- data: unknown;
38
- settings: Settings;
39
- mapping: JSONObject;
40
- auth: AuthTokens | undefined;
41
- }): Promise<Result[]>;
44
+ constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings>);
45
+ execute(bundle: ExecuteBundle<Settings, InputData | undefined>): Promise<Result[]>;
46
+ executeBatch(bundle: ExecuteBundle<Settings, InputData[]>): Promise<void>;
42
47
  executeDynamicField(field: string, data: ExecuteDynamicFieldInput<Settings, Payload>): unknown;
43
48
  private performRequest;
44
49
  private createRequestClient;
@@ -10,12 +10,14 @@ const mapping_kit_1 = require("../mapping-kit");
10
10
  const fields_to_jsonschema_1 = require("./fields-to-jsonschema");
11
11
  const fetch_1 = require("../fetch");
12
12
  const schema_validation_1 = require("../schema-validation");
13
+ const errors_1 = require("../errors");
13
14
  class Action extends events_1.EventEmitter {
14
15
  constructor(destinationName, definition, extendRequest) {
15
16
  super();
16
17
  this.definition = definition;
17
18
  this.destinationName = destinationName;
18
19
  this.extendRequest = extendRequest;
20
+ this.hasBatchSupport = typeof definition.performBatch === 'function';
19
21
  if (Object.keys(definition.fields ?? {}).length) {
20
22
  this.schema = fields_to_jsonschema_1.fieldsToJsonSchema(definition.fields);
21
23
  }
@@ -25,7 +27,8 @@ class Action extends events_1.EventEmitter {
25
27
  const payload = mapping_kit_1.transform(bundle.mapping, bundle.data);
26
28
  results.push({ output: 'Mappings resolved' });
27
29
  if (this.schema) {
28
- schema_validation_1.validateSchema(payload, this.schema, `${this.destinationName}:${this.definition.title}`);
30
+ const schemaKey = `${this.destinationName}:${this.definition.title}`;
31
+ schema_validation_1.validateSchema(payload, this.schema, { schemaKey });
29
32
  results.push({ output: 'Payload validated' });
30
33
  }
31
34
  const dataBundle = {
@@ -39,6 +42,33 @@ class Action extends events_1.EventEmitter {
39
42
  results.push({ output: output });
40
43
  return results;
41
44
  }
45
+ async executeBatch(bundle) {
46
+ if (!this.hasBatchSupport) {
47
+ throw new errors_1.IntegrationError('This action does not support batched requests.', 'NotImplemented', 501);
48
+ }
49
+ let payloads = mapping_kit_1.transformBatch(bundle.mapping, bundle.data);
50
+ if (this.schema) {
51
+ const schema = this.schema;
52
+ const schemaKey = `${this.destinationName}:${this.definition.title}`;
53
+ payloads = payloads.filter((payload) => schema_validation_1.validateSchema(payload, schema, {
54
+ schemaKey,
55
+ throwIfInvalid: false
56
+ }));
57
+ }
58
+ if (payloads.length === 0) {
59
+ return;
60
+ }
61
+ if (this.definition.performBatch) {
62
+ const data = {
63
+ rawData: bundle.data,
64
+ rawMapping: bundle.mapping,
65
+ settings: bundle.settings,
66
+ payload: payloads,
67
+ auth: bundle.auth
68
+ };
69
+ await this.performRequest(this.definition.performBatch, data);
70
+ }
71
+ }
42
72
  executeDynamicField(field, data) {
43
73
  const fn = this.definition.dynamicFields?.[field];
44
74
  if (typeof fn !== 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../../src/destination-kit/action.ts"],"names":[],"mappings":"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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,53 @@ 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
+ const isBatch = Array.isArray(events);
124
+ const allEvents = (isBatch ? events : [events]);
125
+ const subscribedEvents = allEvents.filter((event) => destination_subscriptions_1.validate(parsedSubscription, event));
126
+ if (subscribedEvents.length === 0) {
117
127
  results = [{ output: 'not subscribed' }];
118
128
  return results;
119
129
  }
120
- results = await this.executeAction(actionSlug, input);
121
- state = 'done';
122
- return results;
130
+ else if (isBatch) {
131
+ return await this.executeBatch(actionSlug, { ...input, events: subscribedEvents });
132
+ }
133
+ else {
134
+ return await this.executeAction(actionSlug, { ...input, event: subscribedEvents[0] });
135
+ }
123
136
  }
124
137
  catch (error) {
125
- state = 'errored';
126
138
  results = [{ error }];
127
139
  if (error.name === 'AggregateAjvError' || error.name === 'ValidationError') {
128
140
  error.status = 400;
@@ -137,9 +149,8 @@ class Destination {
137
149
  destination: this.name,
138
150
  action: actionSlug,
139
151
  subscribe: subscription.subscribe,
140
- state,
141
152
  input: {
142
- event: input.event,
153
+ data: events,
143
154
  mapping: input.mapping,
144
155
  settings: input.settings
145
156
  },
@@ -147,35 +158,35 @@ class Destination {
147
158
  });
148
159
  }
149
160
  }
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();
161
+ onEvent(event, settings, options) {
162
+ return this.onSubscriptions(event, settings, options);
163
+ }
164
+ onBatch(events, settings, options) {
165
+ return this.onSubscriptions(events, settings, options);
171
166
  }
172
- async onEventInternal(event, settings, onComplete) {
167
+ async onSubscriptions(data, settings, options) {
173
168
  const subscriptions = this.getSubscriptions(settings);
174
169
  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);
170
+ const run = async () => {
171
+ const authData = parse_settings_1.getAuthData(settings);
172
+ const promises = subscriptions.map((subscription) => this.onSubscription(subscription, data, destinationSettings, authData, options?.onComplete));
173
+ const results = await Promise.all(promises);
174
+ return [].concat(...results);
175
+ };
176
+ const onFailedAttempt = async (error) => {
177
+ const statusCode = error?.status ?? error?.response?.status ?? 500;
178
+ if (!(statusCode === 401 && this.authentication?.scheme === OAUTH2_SCHEME)) {
179
+ throw error;
180
+ }
181
+ const oauthSettings = parse_settings_1.getOAuth2Data(settings);
182
+ const newTokens = await this.refreshAccessToken(destinationSettings, oauthSettings);
183
+ if (!newTokens) {
184
+ throw new errors_1.InvalidAuthenticationError('Failed to refresh access token');
185
+ }
186
+ settings = parse_settings_1.updateOAuthSettings(settings, newTokens);
187
+ options?.onTokenRefresh?.(newTokens);
188
+ };
189
+ return await retry_1.retry(run, { retries: 2, onFailedAttempt });
179
190
  }
180
191
  getSubscriptions(settings) {
181
192
  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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"}
@@ -72,4 +72,4 @@ export interface PathDirective {
72
72
  '@path': string;
73
73
  }
74
74
  export declare type Directive = IfDirective | TemplateDirective | PathDirective;
75
- export declare type RequestExtension<Settings, Payload = unknown> = (data: ExecuteInput<Settings, Payload>) => RequestOptions;
75
+ export declare type RequestExtension<Settings, Payload = undefined> = (data: ExecuteInput<Settings, Payload>) => RequestOptions;
@@ -1,2 +1,6 @@
1
1
  import { JSONObject, JSONLikeObject } from '../json-object';
2
- export declare 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,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retry = void 0;
4
+ const DEFAULT_RETRY_ATTEMPTS = 2;
5
+ async function retry(input, options) {
6
+ const retries = options?.retries ?? DEFAULT_RETRY_ATTEMPTS;
7
+ for (let attemptCount = 1; attemptCount <= retries; attemptCount++) {
8
+ try {
9
+ return await input(attemptCount);
10
+ }
11
+ catch (error) {
12
+ if (options?.onFailedAttempt) {
13
+ await options.onFailedAttempt(error, attemptCount);
14
+ }
15
+ if (!error || attemptCount >= retries) {
16
+ throw error;
17
+ }
18
+ }
19
+ }
20
+ throw new Error('Exhausted all retries.');
21
+ }
22
+ exports.retry = retry;
23
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/retry.ts"],"names":[],"mappings":";;;AAMA,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAEzB,KAAK,UAAU,KAAK,CACzB,KAAmD,EACnD,OAAsB;IAEtB,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,sBAAsB,CAAA;IAE1D,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,IAAI,OAAO,EAAE,YAAY,EAAE,EAAE;QAClE,IAAI;YACF,OAAO,MAAM,KAAK,CAAC,YAAY,CAAC,CAAA;SACjC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,OAAO,EAAE,eAAe,EAAE;gBAC5B,MAAM,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;aACnD;YAGD,IAAI,CAAC,KAAK,IAAI,YAAY,IAAI,OAAO,EAAE;gBACrC,MAAM,KAAK,CAAA;aACZ;SACF;KACF;IAGD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;AAC3C,CAAC;AAvBD,sBAuBC"}
@@ -1 +1,6 @@
1
- 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,28 @@ export interface ActionDefinition<Settings, Payload = any> extends BaseActionDef
21
22
  [K in keyof Payload]?: RequestFn<Settings, Payload, DynamicFieldResponse>;
22
23
  };
23
24
  perform: RequestFn<Settings, Payload>;
25
+ performBatch?: RequestFn<Settings, Payload[]>;
24
26
  }
25
27
  interface ExecuteDynamicFieldInput<Settings, Payload> {
26
28
  settings: Settings;
27
29
  payload: Payload;
28
30
  page?: string;
29
31
  }
32
+ interface ExecuteBundle<T = unknown, Data = unknown> {
33
+ data: Data;
34
+ settings: T;
35
+ mapping: JSONObject;
36
+ auth: AuthTokens | undefined;
37
+ }
30
38
  export declare class Action<Settings, Payload extends JSONLikeObject> extends EventEmitter {
31
39
  readonly definition: ActionDefinition<Settings, Payload>;
32
40
  readonly destinationName: string;
33
41
  readonly schema?: JSONSchema4;
42
+ readonly hasBatchSupport: boolean;
34
43
  private extendRequest;
35
- constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings, Payload>);
36
- execute(bundle: {
37
- data: unknown;
38
- settings: Settings;
39
- mapping: JSONObject;
40
- auth: AuthTokens | undefined;
41
- }): Promise<Result[]>;
44
+ constructor(destinationName: string, definition: ActionDefinition<Settings, Payload>, extendRequest?: RequestExtension<Settings>);
45
+ execute(bundle: ExecuteBundle<Settings, InputData | undefined>): Promise<Result[]>;
46
+ executeBatch(bundle: ExecuteBundle<Settings, InputData[]>): Promise<void>;
42
47
  executeDynamicField(field: string, data: ExecuteDynamicFieldInput<Settings, Payload>): unknown;
43
48
  private performRequest;
44
49
  private createRequestClient;