@ductape/sdk 0.0.4-v42 → 0.0.4-v44

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 (85) hide show
  1. package/dist/apps/services/app.service.d.ts +10 -0
  2. package/dist/apps/services/app.service.js +38 -69
  3. package/dist/apps/services/app.service.js.map +1 -1
  4. package/dist/apps/validators/joi-validators/create.appWebhook.validator.d.ts +1 -2
  5. package/dist/apps/validators/joi-validators/create.appWebhook.validator.js +2 -15
  6. package/dist/apps/validators/joi-validators/create.appWebhook.validator.js.map +1 -1
  7. package/dist/apps/validators/joi-validators/update.appWebhook.validator.d.ts +1 -2
  8. package/dist/apps/validators/joi-validators/update.appWebhook.validator.js +2 -14
  9. package/dist/apps/validators/joi-validators/update.appWebhook.validator.js.map +1 -1
  10. package/dist/database/adapters/base.adapter.d.ts +176 -0
  11. package/dist/database/adapters/base.adapter.js +31 -0
  12. package/dist/database/adapters/base.adapter.js.map +1 -0
  13. package/dist/database/adapters/dynamodb.adapter.d.ts +91 -0
  14. package/dist/database/adapters/dynamodb.adapter.js +1469 -0
  15. package/dist/database/adapters/dynamodb.adapter.js.map +1 -0
  16. package/dist/database/adapters/mongodb.adapter.d.ts +71 -0
  17. package/dist/database/adapters/mongodb.adapter.js +882 -0
  18. package/dist/database/adapters/mongodb.adapter.js.map +1 -0
  19. package/dist/database/adapters/mysql.adapter.d.ts +146 -0
  20. package/dist/database/adapters/mysql.adapter.js +1417 -0
  21. package/dist/database/adapters/mysql.adapter.js.map +1 -0
  22. package/dist/database/adapters/postgresql.adapter.d.ts +147 -0
  23. package/dist/database/adapters/postgresql.adapter.js +1472 -0
  24. package/dist/database/adapters/postgresql.adapter.js.map +1 -0
  25. package/dist/database/database.service.d.ts +195 -0
  26. package/dist/database/database.service.js +502 -0
  27. package/dist/database/database.service.js.map +1 -0
  28. package/dist/database/index.d.ts +18 -0
  29. package/dist/database/index.js +98 -0
  30. package/dist/database/index.js.map +1 -0
  31. package/dist/database/types/aggregation.types.d.ts +202 -0
  32. package/dist/database/types/aggregation.types.js +21 -0
  33. package/dist/database/types/aggregation.types.js.map +1 -0
  34. package/dist/database/types/connection.types.d.ts +132 -0
  35. package/dist/database/types/connection.types.js +6 -0
  36. package/dist/database/types/connection.types.js.map +1 -0
  37. package/dist/database/types/database.types.d.ts +174 -0
  38. package/dist/database/types/database.types.js +74 -0
  39. package/dist/database/types/database.types.js.map +1 -0
  40. package/dist/database/types/index.d.ts +12 -0
  41. package/dist/database/types/index.js +37 -0
  42. package/dist/database/types/index.js.map +1 -0
  43. package/dist/database/types/index.types.d.ts +220 -0
  44. package/dist/database/types/index.types.js +27 -0
  45. package/dist/database/types/index.types.js.map +1 -0
  46. package/dist/database/types/migration.types.d.ts +205 -0
  47. package/dist/database/types/migration.types.js +44 -0
  48. package/dist/database/types/migration.types.js.map +1 -0
  49. package/dist/database/types/query.types.d.ts +305 -0
  50. package/dist/database/types/query.types.js +57 -0
  51. package/dist/database/types/query.types.js.map +1 -0
  52. package/dist/database/types/result.types.d.ts +218 -0
  53. package/dist/database/types/result.types.js +6 -0
  54. package/dist/database/types/result.types.js.map +1 -0
  55. package/dist/database/types/schema.types.d.ts +190 -0
  56. package/dist/database/types/schema.types.js +69 -0
  57. package/dist/database/types/schema.types.js.map +1 -0
  58. package/dist/database/utils/helpers.d.ts +66 -0
  59. package/dist/database/utils/helpers.js +501 -0
  60. package/dist/database/utils/helpers.js.map +1 -0
  61. package/dist/database/utils/migration.utils.d.ts +151 -0
  62. package/dist/database/utils/migration.utils.js +476 -0
  63. package/dist/database/utils/migration.utils.js.map +1 -0
  64. package/dist/database/utils/transaction.d.ts +64 -0
  65. package/dist/database/utils/transaction.js +130 -0
  66. package/dist/database/utils/transaction.js.map +1 -0
  67. package/dist/database/validators/connection.validator.d.ts +20 -0
  68. package/dist/database/validators/connection.validator.js +267 -0
  69. package/dist/database/validators/connection.validator.js.map +1 -0
  70. package/dist/database/validators/query.validator.d.ts +31 -0
  71. package/dist/database/validators/query.validator.js +305 -0
  72. package/dist/database/validators/query.validator.js.map +1 -0
  73. package/dist/database/validators/schema.validator.d.ts +31 -0
  74. package/dist/database/validators/schema.validator.js +334 -0
  75. package/dist/database/validators/schema.validator.js.map +1 -0
  76. package/dist/index.d.ts +194 -146
  77. package/dist/index.js +232 -173
  78. package/dist/index.js.map +1 -1
  79. package/dist/processor/services/processor.service.js +61 -43
  80. package/dist/processor/services/processor.service.js.map +1 -1
  81. package/dist/test/test.processor.js +1 -3
  82. package/dist/test/test.processor.js.map +1 -1
  83. package/dist/types/appBuilder.types.d.ts +1 -1
  84. package/dist/types/processor.types.d.ts +2 -2
  85. package/package.json +3 -1
@@ -297,15 +297,27 @@ class ProcessorService {
297
297
  await this.productBuilderService.initializeProductByTag(product_tag);
298
298
  const { version, envs: appEnvs } = await this.productBuilderService.fetchApp(access_tag);
299
299
  const app = await this.productBuilderService.fetchThirdPartyAppByAccessTag(access_tag);
300
- const { webhooks } = app.versions.find((data) => data.tag === version);
300
+ const appVersion = app.versions.find((data) => data.tag === version);
301
+ if (!appVersion) {
302
+ throw new Error(`Version ${version} not found for app ${access_tag}`);
303
+ }
304
+ const { webhooks, actions } = appVersion;
301
305
  if (!webhooks) {
302
306
  throw new Error(`Webhooks not found for app ${access_tag}`);
303
307
  }
308
+ if (!actions) {
309
+ throw new Error(`Actions not found for app ${access_tag}`);
310
+ }
304
311
  await validators_1.RegisterWebhookEnvSchema.validateAsync(envs);
305
312
  const webhook = webhooks.find((data) => data.tag === webhook_tag);
306
313
  if (!webhook) {
307
314
  throw new Error(`Webhook tag ${webhook_tag} not found`);
308
315
  }
316
+ // Get the action associated with this webhook
317
+ const action = actions.find((act) => act.tag === webhook.action);
318
+ if (!action) {
319
+ throw new Error(`Action ${webhook.action} not found for webhook ${webhook_tag}`);
320
+ }
309
321
  const productEnvs = await this.productBuilderService.fetchEnvs();
310
322
  productEnvs.map((env) => {
311
323
  const exists = envs.findIndex((dbEnv) => dbEnv.slug === env.slug);
@@ -314,6 +326,7 @@ class ProcessorService {
314
326
  }
315
327
  });
316
328
  const dataArray = await Promise.all(envs.map(async (env) => {
329
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
317
330
  await this.validateActionDataMappingInput(env.auth, types_1.WebhookEventTypes.WEBHOOK_REGISTER);
318
331
  const productEnvData = productEnvs.find((data) => data.slug === env.slug);
319
332
  if (!productEnvData) {
@@ -324,44 +337,47 @@ class ProcessorService {
324
337
  throw new Error(`Error finding env data for ${env.slug}`);
325
338
  }
326
339
  const { app_env_slug: appEnv, product_env_slug: productEnv } = envData;
327
- const envWebhookData = webhook.envs.find((webhookEnv) => webhookEnv.slug === appEnv);
328
- if (!envWebhookData) {
329
- throw new Error(`Error finding webhook registration sample ${webhook_tag} for env ${env.slug}`);
340
+ // Get the action's environment configuration
341
+ const actionEnvConfig = (_a = action.envs) === null || _a === void 0 ? void 0 : _a.find((actionEnv) => actionEnv.slug === appEnv);
342
+ if (!actionEnvConfig) {
343
+ throw new Error(`Action ${action.tag} is not configured for env ${appEnv}`);
330
344
  }
331
345
  const uuid = (0, uuid_1.v4)();
332
346
  const url = `${urls_1.WEBHOOK_BASE_URL}/webhooks/v1/process/${uuid}`;
333
347
  let active = false;
334
- if (envWebhookData.sample) {
335
- const samples = {
336
- query: envWebhookData.sample_data.filter((data) => data.parent_key === 'query'),
337
- params: envWebhookData.sample_data.filter((data) => data.parent_key === 'params'),
338
- body: envWebhookData.sample_data.filter((data) => data.parent_key === 'body'),
339
- headers: envWebhookData.sample_data.filter((data) => data.parent_key === 'headers'),
340
- };
341
- let payload = (await this.constructJSONDataPayloads(env.auth, {}, samples, {
342
- app: access_tag,
343
- event: '',
344
- input: env.auth,
345
- type: types_1.FeatureEventTypes.ACTION,
346
- retries: 0,
347
- allow_fail: false,
348
- }));
349
- const { updatedObj, replacedUrl } = (0, processor_utils_1.updateUrlsInObject)(payload, url);
350
- if (replacedUrl && replacedUrl !== env.url && replacedUrl) {
351
- throw new Error(`Ductape expects the url ${replacedUrl} in request body to match inputted url ${env.url}`);
352
- }
353
- const exists = await this.fetchEnv(env.slug, {});
354
- if (!exists) {
355
- throw new Error(`Env ${env.slug} does not exist`);
356
- }
357
- payload = updatedObj;
358
- if (!replacedUrl) {
359
- payload.body.url = url;
360
- }
361
- const parsedUrl = new URL(envWebhookData.registration_url);
362
- await this.sendActionRequest(parsedUrl.origin, parsedUrl.pathname, payload, envWebhookData.method, env.slug);
363
- active = true;
364
- }
348
+ // Construct the registration payload using the action's configuration
349
+ const samples = {
350
+ query: ((_c = (_b = action.query) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.filter((data) => data.parent_key === 'query')) || [],
351
+ params: ((_e = (_d = action.params) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.filter((data) => data.parent_key === 'params')) || [],
352
+ body: ((_g = (_f = action.body) === null || _f === void 0 ? void 0 : _f.data) === null || _g === void 0 ? void 0 : _g.filter((data) => data.parent_key === 'body')) || [],
353
+ headers: ((_j = (_h = action.headers) === null || _h === void 0 ? void 0 : _h.data) === null || _j === void 0 ? void 0 : _j.filter((data) => data.parent_key === 'headers')) || [],
354
+ };
355
+ let payload = (await this.constructJSONDataPayloads(env.auth, {}, samples, {
356
+ app: access_tag,
357
+ event: '',
358
+ input: env.auth,
359
+ type: types_1.FeatureEventTypes.ACTION,
360
+ retries: 0,
361
+ allow_fail: false,
362
+ }));
363
+ const { updatedObj, replacedUrl } = (0, processor_utils_1.updateUrlsInObject)(payload, url);
364
+ if (replacedUrl && replacedUrl !== env.url && replacedUrl) {
365
+ throw new Error(`Ductape expects the url ${replacedUrl} in request body to match inputted url ${env.url}`);
366
+ }
367
+ const exists = await this.fetchEnv(env.slug, {});
368
+ if (!exists) {
369
+ throw new Error(`Env ${env.slug} does not exist`);
370
+ }
371
+ payload = updatedObj;
372
+ if (!replacedUrl) {
373
+ payload.body.url = url;
374
+ }
375
+ // Use the action's resource and base_url to construct the registration URL
376
+ const baseUrl = actionEnvConfig.base_url || action.base_url || '';
377
+ const resource = action.resource || '';
378
+ const registrationUrl = new URL(resource, baseUrl);
379
+ await this.sendActionRequest(registrationUrl.origin, registrationUrl.pathname, payload, action.method, env.slug);
380
+ active = true;
365
381
  return {
366
382
  appEnv,
367
383
  productEnv,
@@ -2525,12 +2541,13 @@ class ProcessorService {
2525
2541
  name: `Subscribe to broker topic`,
2526
2542
  };
2527
2543
  try {
2528
- await this.validateActionDataMappingInput(data.input, types_1.FeatureEventTypes.STORAGE);
2544
+ //await this.validateActionDataMappingInput(data.input, FeatureEventTypes.STORAGE);
2545
+ const input = { callback: data.callback };
2529
2546
  this.start = Date.now();
2530
2547
  this.productTag = data.product;
2531
2548
  const process_id = (0, processor_utils_1.generateObjectId)();
2532
- this.input = data;
2533
- this.baseLogs = Object.assign({ product_tag: this.productTag, product_id: this.productId, workspace_id: this.workspace_id, env: data.env, process_id, data: data.input }, additional_logs);
2549
+ this.input = Object.assign(Object.assign({}, data), { input });
2550
+ this.baseLogs = Object.assign({ product_tag: this.productTag, product_id: this.productId, workspace_id: this.workspace_id, env: data.env, process_id, data: input }, additional_logs);
2534
2551
  await this.intializeProduct(additional_logs);
2535
2552
  this.baseLogs.product_id = this.productId;
2536
2553
  this.process_id = process_id;
@@ -2543,7 +2560,7 @@ class ProcessorService {
2543
2560
  const payload = {
2544
2561
  type: types_1.FeatureEventTypes.SUBSCRIBE,
2545
2562
  event: data.event,
2546
- input: data.input,
2563
+ input: input,
2547
2564
  env: productEnv,
2548
2565
  retries: 0,
2549
2566
  allow_fail: false,
@@ -2574,10 +2591,11 @@ class ProcessorService {
2574
2591
  name: 'Publish to broker topic',
2575
2592
  };
2576
2593
  try {
2577
- await this.validateActionDataMappingInput(data.input, types_1.FeatureEventTypes.PUBLISH);
2594
+ const input = { message: data.message };
2595
+ await this.validateActionDataMappingInput(input, types_1.FeatureEventTypes.PUBLISH);
2578
2596
  this.start = Date.now();
2579
2597
  // clone
2580
- this.clone = (0, processor_utils_1.structuredClone)(data.input);
2598
+ this.clone = (0, processor_utils_1.structuredClone)(input);
2581
2599
  this.input = data;
2582
2600
  this.productTag = data.product;
2583
2601
  const process_id = (0, processor_utils_1.generateObjectId)();
@@ -2595,7 +2613,7 @@ class ProcessorService {
2595
2613
  type: types_1.FeatureEventTypes.PUBLISH,
2596
2614
  event: data.event,
2597
2615
  cache: data.cache,
2598
- input: data.input,
2616
+ input: input,
2599
2617
  env: productEnv,
2600
2618
  retries: 0,
2601
2619
  allow_fail: false,
@@ -2678,7 +2696,7 @@ class ProcessorService {
2678
2696
  event: job.event,
2679
2697
  cache: job.cache,
2680
2698
  session: job.session,
2681
- input: job.input
2699
+ message: job.input
2682
2700
  };
2683
2701
  jobInput = input;
2684
2702
  }