cliodot 1.2.2 → 1.2.4

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 (147) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +81 -0
  3. package/dist/AuthAppClient.d.ts +1 -0
  4. package/dist/AuthAppClient.d.ts.map +1 -1
  5. package/dist/AuthAppClient.js +199 -1
  6. package/dist/CommercialAppClient.d.ts +178 -0
  7. package/dist/CommercialAppClient.d.ts.map +1 -0
  8. package/dist/CommercialAppClient.js +576 -0
  9. package/dist/ConnectorBuilder.js +104 -1
  10. package/dist/Events.d.ts +2 -0
  11. package/dist/Events.d.ts.map +1 -1
  12. package/dist/Events.js +325 -1
  13. package/dist/Flosync.js +296 -1
  14. package/dist/FlosyncClient.js +429 -1
  15. package/dist/FunctionBuilder.js +65 -1
  16. package/dist/IdentityAppClient.d.ts +23 -0
  17. package/dist/IdentityAppClient.d.ts.map +1 -0
  18. package/dist/IdentityAppClient.js +197 -0
  19. package/dist/MemoryAppClient.d.ts +28 -0
  20. package/dist/MemoryAppClient.d.ts.map +1 -0
  21. package/dist/MemoryAppClient.js +149 -0
  22. package/dist/MemoryClient.d.ts +8 -0
  23. package/dist/MemoryClient.d.ts.map +1 -0
  24. package/dist/MemoryClient.js +20 -0
  25. package/dist/OAuthAppClient.d.ts +1 -0
  26. package/dist/OAuthAppClient.d.ts.map +1 -1
  27. package/dist/OAuthAppClient.js +269 -1
  28. package/dist/ProviderServicesClient.d.ts +24 -0
  29. package/dist/ProviderServicesClient.d.ts.map +1 -0
  30. package/dist/ProviderServicesClient.js +158 -0
  31. package/dist/Surface.d.ts +2 -0
  32. package/dist/Surface.d.ts.map +1 -1
  33. package/dist/Surface.js +255 -1
  34. package/dist/ValidatorBuilder.js +24 -1
  35. package/dist/Webhooks.d.ts +20 -0
  36. package/dist/Webhooks.d.ts.map +1 -0
  37. package/dist/Webhooks.js +61 -0
  38. package/dist/WorkflowBuilder.js +279 -1
  39. package/dist/__tests__/CommercialAppClient.test.d.ts +2 -0
  40. package/dist/__tests__/CommercialAppClient.test.d.ts.map +1 -0
  41. package/dist/__tests__/CommercialAppClient.test.js +217 -0
  42. package/dist/__tests__/Events.test.js +191 -1
  43. package/dist/__tests__/IdentityAppClient.test.d.ts +2 -0
  44. package/dist/__tests__/IdentityAppClient.test.d.ts.map +1 -0
  45. package/dist/__tests__/IdentityAppClient.test.js +232 -0
  46. package/dist/__tests__/OAuthAppClient.test.js +300 -1
  47. package/dist/__tests__/ProviderServicesClient.test.d.ts +2 -0
  48. package/dist/__tests__/ProviderServicesClient.test.d.ts.map +1 -0
  49. package/dist/__tests__/ProviderServicesClient.test.js +131 -0
  50. package/dist/__tests__/Surface.test.js +150 -1
  51. package/dist/__tests__/errors.test.js +54 -1
  52. package/dist/__tests__/function.test.js +58 -1
  53. package/dist/__tests__/helpers.d.ts +5 -0
  54. package/dist/__tests__/helpers.d.ts.map +1 -0
  55. package/dist/__tests__/helpers.js +10 -0
  56. package/dist/__tests__/localhost-lookup.test.d.ts +2 -0
  57. package/dist/__tests__/localhost-lookup.test.d.ts.map +1 -0
  58. package/dist/__tests__/localhost-lookup.test.js +26 -0
  59. package/dist/__tests__/parse-api-error.test.js +26 -1
  60. package/dist/__tests__/runner.test.js +156 -1
  61. package/dist/connectors/builtin.js +354 -1
  62. package/dist/connectors/registry.js +300 -1
  63. package/dist/decorators/build.js +105 -1
  64. package/dist/decorators/connector.js +56 -1
  65. package/dist/decorators/index.js +34 -1
  66. package/dist/decorators/metadata.js +338 -1
  67. package/dist/decorators/steps.js +220 -1
  68. package/dist/decorators/workflow.js +52 -1
  69. package/dist/errors.js +76 -1
  70. package/dist/http/__tests__/cliodot-request.environment.test.d.ts +2 -0
  71. package/dist/http/__tests__/cliodot-request.environment.test.d.ts.map +1 -0
  72. package/dist/http/__tests__/cliodot-request.environment.test.js +37 -0
  73. package/dist/http/__tests__/cliodot-result.test.d.ts +2 -0
  74. package/dist/http/__tests__/cliodot-result.test.d.ts.map +1 -0
  75. package/dist/http/__tests__/cliodot-result.test.js +57 -0
  76. package/dist/http/__tests__/events-instance-id.test.d.ts +2 -0
  77. package/dist/http/__tests__/events-instance-id.test.d.ts.map +1 -0
  78. package/dist/http/__tests__/events-instance-id.test.js +45 -0
  79. package/dist/http/cliodot-request.d.ts +35 -0
  80. package/dist/http/cliodot-request.d.ts.map +1 -0
  81. package/dist/http/cliodot-request.js +105 -0
  82. package/dist/http/cliodot-result.d.ts +40 -0
  83. package/dist/http/cliodot-result.d.ts.map +1 -0
  84. package/dist/http/cliodot-result.js +139 -0
  85. package/dist/http/create-client.d.ts +3 -0
  86. package/dist/http/create-client.d.ts.map +1 -0
  87. package/dist/http/create-client.js +14 -0
  88. package/dist/http/events-instance-id.d.ts +11 -0
  89. package/dist/http/events-instance-id.d.ts.map +1 -0
  90. package/dist/http/events-instance-id.js +86 -0
  91. package/dist/http/localhost-lookup.d.ts +12 -0
  92. package/dist/http/localhost-lookup.d.ts.map +1 -0
  93. package/dist/http/localhost-lookup.js +67 -0
  94. package/dist/http/parse-api-error.js +56 -1
  95. package/dist/http/sanitize-execution-headers.js +79 -1
  96. package/dist/identity-offline-verify.d.ts +6 -0
  97. package/dist/identity-offline-verify.d.ts.map +1 -0
  98. package/dist/identity-offline-verify.js +174 -0
  99. package/dist/identity-token-cache.d.ts +6 -0
  100. package/dist/identity-token-cache.d.ts.map +1 -0
  101. package/dist/identity-token-cache.js +51 -0
  102. package/dist/index.d.ts +10 -0
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +108 -1
  105. package/dist/runner/ProcessorEngine.js +1311 -1
  106. package/dist/runner/connector.executor.js +1786 -1
  107. package/dist/runner/utilities/math.executor.js +153 -1
  108. package/dist/runner/utilities/random.executor.js +151 -1
  109. package/dist/runner/utilities/string.executor.js +825 -1
  110. package/dist/template.js +127 -1
  111. package/dist/transformers/StepsToNodesTransformer.js +214 -1
  112. package/dist/transformers/WorkflowTransformer.js +189 -1
  113. package/dist/types/auth-app.api.d.ts +2 -0
  114. package/dist/types/auth-app.api.d.ts.map +1 -1
  115. package/dist/types/auth-app.api.js +2 -1
  116. package/dist/types/builtin.js +2 -1
  117. package/dist/types/client.api.js +2 -1
  118. package/dist/types/commercial-app.api.d.ts +963 -0
  119. package/dist/types/commercial-app.api.d.ts.map +1 -0
  120. package/dist/types/commercial-app.api.js +2 -0
  121. package/dist/types/connector.js +2 -1
  122. package/dist/types/context.js +2 -1
  123. package/dist/types/event-app.api.d.ts +8 -0
  124. package/dist/types/event-app.api.d.ts.map +1 -1
  125. package/dist/types/event-app.api.js +2 -1
  126. package/dist/types/function.js +2 -1
  127. package/dist/types/identity-app.api.d.ts +99 -0
  128. package/dist/types/identity-app.api.d.ts.map +1 -0
  129. package/dist/types/identity-app.api.js +2 -0
  130. package/dist/types/index.js +23 -1
  131. package/dist/types/memory-app.api.d.ts +140 -0
  132. package/dist/types/memory-app.api.d.ts.map +1 -0
  133. package/dist/types/memory-app.api.js +2 -0
  134. package/dist/types/oauth-app.api.d.ts +2 -0
  135. package/dist/types/oauth-app.api.d.ts.map +1 -1
  136. package/dist/types/oauth-app.api.js +105 -1
  137. package/dist/types/provider-services.api.d.ts +98 -0
  138. package/dist/types/provider-services.api.d.ts.map +1 -0
  139. package/dist/types/provider-services.api.js +2 -0
  140. package/dist/types/validator.js +2 -1
  141. package/dist/types/webhook-app.api.d.ts +2 -0
  142. package/dist/types/webhook-app.api.d.ts.map +1 -0
  143. package/dist/types/webhook-app.api.js +2 -0
  144. package/dist/types/workflow.js +33 -1
  145. package/dist/validators/validators.js +478 -1
  146. package/dist/variable.js +37 -1
  147. package/package.json +3 -2
package/dist/Events.d.ts CHANGED
@@ -4,6 +4,8 @@ export declare class Events implements EventsApi {
4
4
  private readonly appId;
5
5
  private readonly apiKey?;
6
6
  private readonly appSecret?;
7
+ private readonly environment?;
8
+ readonly instanceId: string;
7
9
  private readonly axios;
8
10
  readonly debug: boolean;
9
11
  constructor(config: EventsConfig);
@@ -1 +1 @@
1
- {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../src/Events.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAElB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAuB/B,qBAAa,MAAO,YAAW,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,SAAgB,KAAK,EAAE,OAAO,CAAC;gBAEnB,MAAM,EAAE,YAAY;IAoBhC,OAAO,CACL,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,oBAAoB,CAAC;IAmChC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAatE,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAUtE,SAAS,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM;IAqBnD,MAAM,CACJ,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,iBAAiB;IAkLpB,OAAO,CAAC,gBAAgB;YAiBV,OAAO;CAkDtB"}
1
+ {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../src/Events.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAElB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAuB/B,qBAAa,MAAO,YAAW,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,SAAgB,KAAK,EAAE,OAAO,CAAC;gBAEnB,MAAM,EAAE,YAAY;IAyBhC,OAAO,CACL,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,oBAAoB,CAAC;IAmChC,SAAS,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IActE,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAUtE,SAAS,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM;IAsBnD,MAAM,CACJ,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,iBAAiB;IAoLpB,OAAO,CAAC,gBAAgB;YAuBV,OAAO;CAkDtB"}
package/dist/Events.js CHANGED
@@ -1 +1,325 @@
1
- 'use strict';const _0x54b8ed=_0x474a;(function(_0x1b5bb4,_0x4a7ee3){const _0x56ab34=_0x474a,_0x200869=_0x1b5bb4();while(!![]){try{const _0x13fce0=-parseInt(_0x56ab34(0x102))/0x1*(-parseInt(_0x56ab34(0x118))/0x2)+-parseInt(_0x56ab34(0x112))/0x3+-parseInt(_0x56ab34(0xf7))/0x4+-parseInt(_0x56ab34(0xf0))/0x5*(-parseInt(_0x56ab34(0xdf))/0x6)+parseInt(_0x56ab34(0xca))/0x7+-parseInt(_0x56ab34(0xf5))/0x8+-parseInt(_0x56ab34(0xfe))/0x9*(parseInt(_0x56ab34(0xd4))/0xa);if(_0x13fce0===_0x4a7ee3)break;else _0x200869['push'](_0x200869['shift']());}catch(_0x423969){_0x200869['push'](_0x200869['shift']());}}}(_0x4a7a,0x1b97a));var __importDefault=this&&this['__importDefault']||function(_0x4628c7){const _0x46f77a=_0x474a;return _0x4628c7&&_0x4628c7[_0x46f77a(0xd8)]?_0x4628c7:{'default':_0x4628c7};};Object[_0x54b8ed(0xd6)](exports,'__esModule',{'value':!![]}),exports['Events']=void 0x0;const axios_1=__importDefault(require(_0x54b8ed(0xd3))),errors_1=require(_0x54b8ed(0xe7)),parse_api_error_1=require(_0x54b8ed(0x10f));function _0x474a(_0x22c9c4,_0x4520e5){_0x22c9c4=_0x22c9c4-0xb4;const _0x4a7a6e=_0x4a7a();let _0x474a85=_0x4a7a6e[_0x22c9c4];if(_0x474a['dhmOVa']===undefined){var _0x590548=function(_0x47741b){const _0x5ecc2c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4628c7='',_0x38a069='';for(let _0x1a4334=0x0,_0x300c4b,_0x262eba,_0x5ea51e=0x0;_0x262eba=_0x47741b['charAt'](_0x5ea51e++);~_0x262eba&&(_0x300c4b=_0x1a4334%0x4?_0x300c4b*0x40+_0x262eba:_0x262eba,_0x1a4334++%0x4)?_0x4628c7+=String['fromCharCode'](0xff&_0x300c4b>>(-0x2*_0x1a4334&0x6)):0x0){_0x262eba=_0x5ecc2c['indexOf'](_0x262eba);}for(let _0x49c29f=0x0,_0x591417=_0x4628c7['length'];_0x49c29f<_0x591417;_0x49c29f++){_0x38a069+='%'+('00'+_0x4628c7['charCodeAt'](_0x49c29f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x38a069);};_0x474a['mvrjqD']=_0x590548,_0x474a['jnqbga']={},_0x474a['dhmOVa']=!![];}const _0x5c114a=_0x4a7a6e[0x0],_0x4108a6=_0x22c9c4+_0x5c114a,_0x283983=_0x474a['jnqbga'][_0x4108a6];return!_0x283983?(_0x474a85=_0x474a['mvrjqD'](_0x474a85),_0x474a['jnqbga'][_0x4108a6]=_0x474a85):_0x474a85=_0x283983,_0x474a85;}function trimBaseUrl(_0x38a069){const _0x1828c5=_0x54b8ed;return _0x38a069['trim']()[_0x1828c5(0x115)](/\/+$/,'');}function sanitizeEventApiErrorMessage(_0x1a4334,_0x300c4b){const _0x9feee9=_0x54b8ed;if(_0x300c4b===_0x9feee9(0xef))return _0x1a4334;if(/kafka|rabbitmq|redis.?streams|bullmq|nats|broker|KAFKA_|RABBITMQ_|REDIS_STREAMS_/i[_0x9feee9(0xe8)](_0x1a4334))return'Delivery\x20profile\x20is\x20not\x20ready.\x20Contact\x20your\x20administrator.';return _0x1a4334;}function _0x4a7a(){const _0x37b4f7=['rvjsx0nbtKnfteve','C3rYAw5N','uMvXDwvZDcbMywLSzwq6ia','yxbWBgLJyxrPB24VANnVBG','nM55DevREa','yxbWqxbPs2v5','y2XVC2u','CMvXDwvZDa','CMvJB25Uzwn0twf4rgvSyxLnCW','w0v2zw50C10GBgLZDgvUigrPC2nVBM5Ly3rLzdSGCMvJB25Uzwn0Aw5NigLUia','CgfYC2vbCgLfCNjVCK1LC3nHz2u','Dg9ju09tDhjPBMC','lI9LCNjVCNm','DgvZDa','CgfYC2vbCgLfCNjVCKnVzgu','l3yXl3b1yMXPC2G','rxzLBNrZihjLCxvPCMvZigjHC2vvCMW','zgvSyxLFBxm','l3yXl2XPC3rLBG','y2XPB2rVDefWAuvYCM9YrNjVBuf4Aw9Z','rvzftLrFrevmsvzfuLLFufjprKLmrv9ot1rFuKvbrfK','nZmYnZKWu2DYA0r6','D2fYBG','Dw5ZDwjZy3jPyMu','Bwf4','zxzLBNrZ','mty5nJG5nM9XAe1IAq','ywjVCNq','mJC0mZzJuNrlEMO','zgvMyxvSDa','B3jKzxjPBMDFA2v5','DhjPBq','C3vIC2nYAwjL','rxzLBNrZ','ChvIBgLZAa','nty0mdiXCxrjyMPQ','zNvUy3rPB24','DxrMoa','C2LNBMfS','mKvhwfL4Eq','C3vIC2nYAxb0Aw9UswqGAxmGCMvXDwLYzwq','BgLZDgvUvxjS','l3yXl3n1yNnJCMLIzq','C3rYzwfT','BwLU','zgf0yq','zMLSDgvY','Bwv0ywrHDge','Dg9tDhjPBMC','AxnbCNjHEq','BwfW','CMvJB25Uzwn0','lI9ODhrWl3bHCNnLlwfWAs1LCNjVCG','zgvZDhjVEq','yxbWu2vJCMv0','mtK4nZG5u1fksK5d','yMfZzvvYBa','rxzLBNqGCMvXDwvZDcbMywLSzwq','CMvWBgfJzq','Ec1JBgLVzg90lwfWCc1ZzwnYzxq','BMfTzq','mJa1mZCYA2PZtgDc','yxbWx2LK','C2v0','yxbWswq','Cg9W','Dgv4Dc9LDMvUDc1ZDhjLyw0','BgLZDgvUigHHBMrSzxiGAxmGCMvXDwLYzwq','zxzLBNqGAxmGCMvXDwLYzwq','C2XPy2u','BwvZC2fNzq','C3vIC2nYAxb0Aw9Ux2LK','yNvPBgrbDxrOsgvHzgvYCW','C3rHCNrZv2L0Aa','ue9tva','zw52AxjVBM1LBNq','zw5K','yxbPs2v5','q2XPB2rVDefWAuvYCM9Y','ChvIBgLZAgvYx2LK','y3jLyxrL','rxzLBNrZignYzwrLBNrPywXZihjLCxvPCMvKicHHCgLlzxKVyxbWqxbPs2v5ig9YigfWCfnLy3jLDcK','y29Kzq','DhjPBuvUza','nZyYotm3BuffB2zU','BgvUz3rO','r0vu','B2zM','zxjYB3i','l2v2zw50','qwjVCNrfCNjVCG','AM9PBG','zgf0ytO','yxHPB3m','mtbyr0Tzy3O','CNvUx2f0','zgvMAw5LuhjVCgvYDhK','zgvIDwC','x19LC01VzhvSzq','w0v2zw50C10GBgLZDgvUigzHAwXLza','BxmGkgf0DgvTChqG'];_0x4a7a=function(){return _0x37b4f7;};return _0x4a7a();}class Events{constructor(_0x262eba){const _0x57b1b0=_0x54b8ed;if(!_0x262eba['baseUrl']?.[_0x57b1b0(0xfa)]())throw new errors_1[(_0x57b1b0(0xc4))](_0x57b1b0(0xeb));if(!_0x262eba[_0x57b1b0(0xb6)]?.['trim']())throw new errors_1[(_0x57b1b0(0xc4))]('Events\x20requires\x20appId');this[_0x57b1b0(0x113)]=trimBaseUrl(_0x262eba[_0x57b1b0(0x113)]),this[_0x57b1b0(0xb6)]=_0x262eba[_0x57b1b0(0xb6)][_0x57b1b0(0xfa)](),this[_0x57b1b0(0xc3)]=_0x262eba[_0x57b1b0(0xc3)]?.[_0x57b1b0(0xfa)]()||_0x262eba[_0x57b1b0(0xe0)]?.[_0x57b1b0(0xfa)]()||undefined,this[_0x57b1b0(0x111)]=_0x262eba[_0x57b1b0(0x111)]?.[_0x57b1b0(0xfa)]()||undefined,this[_0x57b1b0(0xd7)]=_0x262eba[_0x57b1b0(0xd7)]??![],this[_0x57b1b0(0xd3)]=axios_1[_0x57b1b0(0xf8)][_0x57b1b0(0xc6)]({'baseURL':this[_0x57b1b0(0x113)]+_0x57b1b0(0xcf),'timeout':0x7530,'headers':{'Content-Type':_0x57b1b0(0xde)}});}[_0x54b8ed(0xfd)](_0x5ea51e,_0x49c29f,_0x591417={}){const _0x541757=_0x54b8ed;if(!_0x5ea51e?.[_0x541757(0xfa)]())throw new errors_1['CliodotApiError'](_0x541757(0xba));const _0x91d274={'event':_0x5ea51e[_0x541757(0xfa)](),'payload':_0x49c29f};return _0x591417[_0x541757(0xf9)]!==undefined&&(_0x91d274['ordering_key']=_0x591417[_0x541757(0xf9)]),_0x591417[_0x541757(0xec)]!==undefined&&(_0x91d274[_0x541757(0xec)]=_0x591417['delay_ms']),_0x591417['run_at']!==undefined&&(_0x91d274['run_at']=_0x591417[_0x541757(0xd5)]instanceof Date?_0x591417[_0x541757(0xd5)][_0x541757(0xe6)]():_0x591417[_0x541757(0xd5)]),_0x591417['id']!==undefined&&(_0x91d274['id']=_0x591417['id']),_0x591417[_0x541757(0xc5)]!==undefined&&(_0x91d274[_0x541757(0xc5)]=_0x591417[_0x541757(0xc5)]),_0x591417['metadata']!==undefined&&(_0x91d274['metadata']=_0x591417[_0x541757(0x10a)]),_0x591417['environment']!==undefined&&(_0x91d274[_0x541757(0xc1)]=_0x591417[_0x541757(0xc1)]),this[_0x541757(0xe2)](_0x541757(0xc0),_0x541757(0xea),_0x91d274);}[_0x54b8ed(0xfb)](_0x575a8a){const _0x3b2965=_0x54b8ed;if(!Array[_0x3b2965(0x10c)](_0x575a8a?.[_0x3b2965(0xf4)])||_0x575a8a[_0x3b2965(0xf4)][_0x3b2965(0xcb)]===0x0)throw new errors_1[(_0x3b2965(0xc4))]('events\x20is\x20required');const _0x15beb3={'events':_0x575a8a['events']['map'](_0x578e70=>String(_0x578e70)['trim']())[_0x3b2965(0x109)](Boolean)};return _0x575a8a[_0x3b2965(0x117)]?.[_0x3b2965(0xfa)]()&&(_0x15beb3[_0x3b2965(0x117)]=_0x575a8a[_0x3b2965(0x117)][_0x3b2965(0xfa)]()),this[_0x3b2965(0xe2)](_0x3b2965(0xc0),_0x3b2965(0x105),_0x15beb3);}[_0x54b8ed(0xf2)](_0x1f9ba5){const _0x1ab01a=_0x54b8ed;if(!_0x1f9ba5?.[_0x1ab01a(0xfa)]())throw new errors_1[(_0x1ab01a(0xc4))](_0x1ab01a(0x103));return this[_0x1ab01a(0xe2)]('DELETE','/v1/subscribe/'+encodeURIComponent(_0x1f9ba5[_0x1ab01a(0xfa)]()));}[_0x54b8ed(0x104)](_0x3e1554={}){const _0x4eb106=_0x54b8ed,_0x1c3c2b=new URLSearchParams();_0x1c3c2b[_0x4eb106(0xb5)](_0x4eb106(0xb4),this[_0x4eb106(0xb6)]);const _0x71a719=this['apiKey']||this[_0x4eb106(0x111)];if(!_0x71a719)throw new errors_1[(_0x4eb106(0xc4))](_0x4eb106(0xc7));_0x1c3c2b[_0x4eb106(0xb5)]('access_token',_0x71a719);if(_0x3e1554[_0x4eb106(0xbd)]?.[_0x4eb106(0xfa)]())_0x1c3c2b[_0x4eb106(0xb5)](_0x4eb106(0xbd),_0x3e1554[_0x4eb106(0xbd)][_0x4eb106(0xfa)]());else _0x3e1554[_0x4eb106(0xf4)]?.[_0x4eb106(0xcb)]&&_0x1c3c2b['set'](_0x4eb106(0xf4),_0x3e1554[_0x4eb106(0xf4)][_0x4eb106(0x10d)](_0x3e05b8=>String(_0x3e05b8)[_0x4eb106(0xfa)]())['filter'](Boolean)[_0x4eb106(0xd1)](','));return this[_0x4eb106(0x113)]+'/event/v1/listen?'+_0x1c3c2b[_0x4eb106(0x10b)]();}['listen'](_0x44fd96,_0x22018d){const _0x562b92=_0x54b8ed;if(typeof _0x22018d!==_0x562b92(0xff))throw new errors_1[(_0x562b92(0xc4))](_0x562b92(0xb9));if(!_0x44fd96?.['subscription_id']?.['trim']()&&!_0x44fd96?.[_0x562b92(0xf4)]?.[_0x562b92(0xcb)])throw new errors_1[(_0x562b92(0xc4))]('listen\x20requires\x20events\x20or\x20subscription_id');const _0x25240e={};if(_0x44fd96[_0x562b92(0xbd)]?.['trim']())_0x25240e[_0x562b92(0xbd)]=_0x44fd96[_0x562b92(0xbd)]['trim']();else _0x44fd96[_0x562b92(0xf4)]?.[_0x562b92(0xcb)]&&(_0x25240e['events']=_0x44fd96[_0x562b92(0xf4)][_0x562b92(0x10d)](_0x2237e9=>String(_0x2237e9)[_0x562b92(0xfa)]())[_0x562b92(0x109)](Boolean)[_0x562b92(0xd1)](','));const _0x1b95d7=_0x44fd96[_0x562b92(0x10e)]!==![],_0x2652d9=Math[_0x562b92(0xf3)](0x64,_0x44fd96['reconnectDelayMs']??0x3e8),_0x7ee9cd=Math[_0x562b92(0xf3)](_0x2652d9,_0x44fd96[_0x562b92(0xe3)]??0x7530);let _0x40c4d6=![],_0x430b3a=null,_0x115e74=null,_0x581e17=0x0,_0x4a1f73='';const _0x3d6c5f=()=>{_0x115e74&&(clearTimeout(_0x115e74),_0x115e74=null);},_0x1709ee=()=>{const _0x4ff793=_0x562b92;if(_0x40c4d6)return;_0x40c4d6=!![],_0x3d6c5f(),_0x430b3a?.[_0x4ff793(0xf6)](),_0x430b3a=null;},_0x1ddbd2=()=>{const _0x244016=_0x562b92;if(_0x40c4d6||!_0x1b95d7)return;_0x3d6c5f();const _0x4c8b53=Math[_0x244016(0x107)](_0x7ee9cd,_0x2652d9*Math['pow'](0x2,Math[_0x244016(0x107)](_0x581e17,0x8)));_0x581e17+=0x1,this[_0x244016(0xd7)]&&console[_0x244016(0xf1)](_0x244016(0xe4)+_0x4c8b53+_0x244016(0xda)+_0x581e17+')'),_0x115e74=setTimeout(()=>{_0x115e74=null,!_0x40c4d6&&void _0x7277be();},_0x4c8b53);},_0x7277be=async()=>{const _0x1c322f=_0x562b92;if(_0x40c4d6)return;_0x430b3a?.[_0x1c322f(0xf6)](),_0x430b3a=new AbortController(),_0x4a1f73='';const _0x1e050e=_0x430b3a[_0x1c322f(0x101)];try{const _0x1f6040=await this[_0x1c322f(0xd3)]({'method':_0x1c322f(0xcc),'url':_0x1c322f(0xed),'headers':{...this[_0x1c322f(0xbe)](),'Accept':_0x1c322f(0xb8)},'params':_0x25240e,'responseType':_0x1c322f(0x106),'signal':_0x1e050e,'timeout':0x0});if(_0x40c4d6){const _0x353aaf=_0x1f6040[_0x1c322f(0x108)];typeof _0x353aaf[_0x1c322f(0x110)]===_0x1c322f(0xff)&&_0x353aaf[_0x1c322f(0x110)]();return;}_0x581e17=0x0;const _0x35faf8=_0x1f6040[_0x1c322f(0x108)];await new Promise(_0x272904=>{const _0x341bfa=_0x1c322f,_0x16f7cc=_0x19e01b=>{const _0xe17008=_0x474a;if(_0x40c4d6)return;_0x4a1f73+=typeof _0x19e01b===_0xe17008(0xdc)?_0x19e01b:_0x19e01b[_0xe17008(0x10b)](_0xe17008(0x100));const _0x338b75=_0x4a1f73['split']('\x0a');_0x4a1f73=_0x338b75[_0xe17008(0xb7)]()??'';for(const _0x5b29e8 of _0x338b75){const _0x3ad2af=_0x5b29e8[_0xe17008(0xc9)]();if(!_0x3ad2af||_0x3ad2af[_0xe17008(0xbf)](':'))continue;if(!_0x3ad2af[_0xe17008(0xbf)](_0xe17008(0xd2)))continue;const _0x2aa6a0=_0x3ad2af[_0xe17008(0xbb)](0x5)[_0xe17008(0xfa)]();if(!_0x2aa6a0)continue;try{const _0x26eb38=JSON['parse'](_0x2aa6a0);_0x22018d(_0x26eb38);}catch{this[_0xe17008(0xd7)]&&console[_0xe17008(0xf1)]('[Events]\x20failed\x20to\x20parse\x20SSE\x20data',_0x2aa6a0);}}},_0x5af09a=()=>{const _0x60821c=_0x474a;_0x35faf8['off'](_0x60821c(0x108),_0x16f7cc),_0x35faf8[_0x60821c(0xcd)]('error',_0xa75984),_0x35faf8['off']('end',_0x214407),_0x35faf8[_0x60821c(0xcd)](_0x60821c(0xe1),_0x214407);},_0xa75984=_0x482382=>{const _0x31c11c=_0x474a;_0x5af09a();if(_0x40c4d6||_0x482382?.['name']===_0x31c11c(0xd0)){_0x272904();return;}this[_0x31c11c(0xd7)]&&console[_0x31c11c(0xce)]('[Events]\x20listen\x20stream\x20error',_0x482382),_0x272904();},_0x214407=()=>{_0x5af09a(),_0x272904();};_0x35faf8['on'](_0x341bfa(0x108),_0x16f7cc),_0x35faf8['on'](_0x341bfa(0xce),_0xa75984),_0x35faf8['on'](_0x341bfa(0xc2),_0x214407),_0x35faf8['on']('close',_0x214407);}),!_0x40c4d6&&_0x1ddbd2();}catch(_0x7d1024){if(_0x40c4d6||_0x7d1024?.[_0x1c322f(0x117)]===_0x1c322f(0xd0)||_0x7d1024?.[_0x1c322f(0xc8)]===_0x1c322f(0xdb))return;this['debug']&&console['error'](_0x1c322f(0xd9),_0x7d1024),_0x1ddbd2();}};return void _0x7277be(),{'close':_0x1709ee};}[_0x54b8ed(0xbe)](){const _0x314e30=_0x54b8ed,_0x47a930={'x-cliodot-app-id':this[_0x314e30(0xb6)]};if(this[_0x314e30(0xc3)])return _0x47a930['Authorization']='Bearer\x20'+this[_0x314e30(0xc3)],_0x47a930;if(this['appSecret'])return _0x47a930[_0x314e30(0x116)]=this[_0x314e30(0x111)],_0x47a930;throw new errors_1['CliodotApiError']('Events\x20credentials\x20required\x20(apiKey/appApiKey\x20or\x20appSecret)');}async['request'](_0x328e33,_0x1eb4de,_0x316c4e){const _0x2701d2=_0x54b8ed;try{const {data:_0x224758}=await this[_0x2701d2(0xd3)]({'method':_0x328e33,'url':_0x1eb4de,'headers':this[_0x2701d2(0xbe)](),'data':_0x316c4e});if(_0x224758?.['ok']===![]){const _0x50ff9a=(0x0,parse_api_error_1[_0x2701d2(0xe9)])(_0x224758);throw new errors_1[(_0x2701d2(0xc4))](sanitizeEventApiErrorMessage((0x0,parse_api_error_1[_0x2701d2(0xe5)])(_0x224758)||_0x2701d2(0x114),_0x50ff9a),{'data':_0x224758,'code':_0x50ff9a});}return _0x224758;}catch(_0xf5bc73){if(_0xf5bc73 instanceof errors_1[_0x2701d2(0xc4)])throw _0xf5bc73;const _0x3df34b=(0x0,errors_1[_0x2701d2(0xee)])(_0xf5bc73,_0x2701d2(0xdd)+_0x328e33+'\x20'+_0x1eb4de);throw new errors_1[(_0x2701d2(0xc4))](sanitizeEventApiErrorMessage(_0x3df34b[_0x2701d2(0xbc)],_0x3df34b[_0x2701d2(0xc8)]),{'status':_0x3df34b['status'],'data':_0x3df34b['data'],'code':_0x3df34b['code']||(/kafka|rabbitmq|redis.?streams|bullmq|broker|KAFKA_|RABBITMQ_/i['test'](_0x3df34b[_0x2701d2(0xbc)])?_0x2701d2(0xef):_0x3df34b[_0x2701d2(0xc8)])});}}}exports[_0x54b8ed(0xfc)]=Events;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Events = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const errors_1 = require("./errors");
9
+ const parse_api_error_1 = require("./http/parse-api-error");
10
+ const cliodot_request_1 = require("./http/cliodot-request");
11
+ const events_instance_id_1 = require("./http/events-instance-id");
12
+ function trimBaseUrl(url) {
13
+ return url.trim().replace(/\/+$/, "");
14
+ }
15
+ function sanitizeEventApiErrorMessage(message, code) {
16
+ if (code === "EVENT_DELIVERY_PROFILE_NOT_READY") {
17
+ return message;
18
+ }
19
+ if (/kafka|rabbitmq|redis.?streams|bullmq|nats|broker|KAFKA_|RABBITMQ_|REDIS_STREAMS_/i.test(message)) {
20
+ return "Delivery profile is not ready. Contact your administrator.";
21
+ }
22
+ return message;
23
+ }
24
+ class Events {
25
+ constructor(config) {
26
+ if (!config.baseUrl?.trim()) {
27
+ throw new errors_1.CliodotApiError("Events requires baseUrl");
28
+ }
29
+ if (!config.appId?.trim()) {
30
+ throw new errors_1.CliodotApiError("Events requires appId");
31
+ }
32
+ this.baseUrl = trimBaseUrl(config.baseUrl);
33
+ this.appId = config.appId.trim();
34
+ this.apiKey =
35
+ config.apiKey?.trim() || config.appApiKey?.trim() || undefined;
36
+ this.appSecret = config.appSecret?.trim() || undefined;
37
+ this.environment = config.environment;
38
+ this.instanceId = (0, events_instance_id_1.resolveEventsInstanceId)({
39
+ appId: this.appId,
40
+ instanceId: config.instanceId,
41
+ });
42
+ this.debug = config.debug ?? false;
43
+ this.axios = axios_1.default.create({
44
+ baseURL: `${this.baseUrl}/event`,
45
+ timeout: 30000,
46
+ headers: { "Content-Type": "application/json" },
47
+ });
48
+ }
49
+ publish(event, payload, options = {}) {
50
+ if (!event?.trim()) {
51
+ throw new errors_1.CliodotApiError("event is required");
52
+ }
53
+ const body = {
54
+ event: event.trim(),
55
+ payload,
56
+ };
57
+ if (options.ordering_key !== undefined) {
58
+ body.ordering_key = options.ordering_key;
59
+ }
60
+ if (options.delay_ms !== undefined) {
61
+ body.delay_ms = options.delay_ms;
62
+ }
63
+ if (options.run_at !== undefined) {
64
+ body.run_at =
65
+ options.run_at instanceof Date
66
+ ? options.run_at.toISOString()
67
+ : options.run_at;
68
+ }
69
+ if (options.id !== undefined) {
70
+ body.id = options.id;
71
+ }
72
+ if (options.publisher_id !== undefined) {
73
+ body.publisher_id = options.publisher_id;
74
+ }
75
+ if (options.metadata !== undefined) {
76
+ body.metadata = options.metadata;
77
+ }
78
+ if (options.environment !== undefined) {
79
+ body.environment = options.environment;
80
+ }
81
+ return this.request("POST", "/v1/publish", body);
82
+ }
83
+ subscribe(input) {
84
+ if (!Array.isArray(input?.events) || input.events.length === 0) {
85
+ throw new errors_1.CliodotApiError("events is required");
86
+ }
87
+ const body = {
88
+ events: input.events.map((e) => String(e).trim()).filter(Boolean),
89
+ instance_id: this.instanceId,
90
+ };
91
+ if (input.name?.trim()) {
92
+ body.name = input.name.trim();
93
+ }
94
+ return this.request("POST", "/v1/subscribe", body);
95
+ }
96
+ unsubscribe(subscriptionId) {
97
+ if (!subscriptionId?.trim()) {
98
+ throw new errors_1.CliodotApiError("subscriptionId is required");
99
+ }
100
+ return this.request("DELETE", `/v1/subscribe/${encodeURIComponent(subscriptionId.trim())}`);
101
+ }
102
+ listenUrl(options = {}) {
103
+ const params = new URLSearchParams();
104
+ params.set("app_id", this.appId);
105
+ const token = this.apiKey || this.appSecret;
106
+ if (!token) {
107
+ throw new errors_1.CliodotApiError("Events credentials required (apiKey/appApiKey or appSecret)");
108
+ }
109
+ params.set("access_token", token);
110
+ params.set("instance_id", this.instanceId);
111
+ if (options.subscription_id?.trim()) {
112
+ params.set("subscription_id", options.subscription_id.trim());
113
+ }
114
+ else if (options.events?.length) {
115
+ params.set("events", options.events.map((e) => String(e).trim()).filter(Boolean).join(","));
116
+ }
117
+ return `${this.baseUrl}/event/v1/listen?${params.toString()}`;
118
+ }
119
+ listen(options, handler) {
120
+ if (typeof handler !== "function") {
121
+ throw new errors_1.CliodotApiError("listen handler is required");
122
+ }
123
+ if (!options?.subscription_id?.trim() && !options?.events?.length) {
124
+ throw new errors_1.CliodotApiError("listen requires events or subscription_id");
125
+ }
126
+ const params = {
127
+ instance_id: this.instanceId,
128
+ };
129
+ if (options.subscription_id?.trim()) {
130
+ params.subscription_id = options.subscription_id.trim();
131
+ }
132
+ else if (options.events?.length) {
133
+ params.events = options.events
134
+ .map((e) => String(e).trim())
135
+ .filter(Boolean)
136
+ .join(",");
137
+ }
138
+ const reconnect = options.reconnect !== false;
139
+ const initialDelayMs = Math.max(100, options.reconnectDelayMs ?? 1000);
140
+ const maxDelayMs = Math.max(initialDelayMs, options.reconnectMaxDelayMs ?? 30000);
141
+ let closed = false;
142
+ let controller = null;
143
+ let reconnectTimer = null;
144
+ let attempt = 0;
145
+ let buffer = "";
146
+ const clearReconnectTimer = () => {
147
+ if (reconnectTimer) {
148
+ clearTimeout(reconnectTimer);
149
+ reconnectTimer = null;
150
+ }
151
+ };
152
+ const close = () => {
153
+ if (closed)
154
+ return;
155
+ closed = true;
156
+ clearReconnectTimer();
157
+ controller?.abort();
158
+ controller = null;
159
+ };
160
+ const scheduleReconnect = () => {
161
+ if (closed || !reconnect)
162
+ return;
163
+ clearReconnectTimer();
164
+ const delay = Math.min(maxDelayMs, initialDelayMs * Math.pow(2, Math.min(attempt, 8)));
165
+ attempt += 1;
166
+ if (this.debug) {
167
+ console.warn(`[Events] listen disconnected; reconnecting in ${delay}ms (attempt ${attempt})`);
168
+ }
169
+ reconnectTimer = setTimeout(() => {
170
+ reconnectTimer = null;
171
+ if (!closed) {
172
+ void connect();
173
+ }
174
+ }, delay);
175
+ };
176
+ const connect = async () => {
177
+ if (closed)
178
+ return;
179
+ controller?.abort();
180
+ controller = new AbortController();
181
+ buffer = "";
182
+ const signal = controller.signal;
183
+ try {
184
+ const response = await this.axios({
185
+ method: "GET",
186
+ url: "/v1/listen",
187
+ headers: {
188
+ ...this.buildAuthHeaders(),
189
+ Accept: "text/event-stream",
190
+ },
191
+ params,
192
+ responseType: "stream",
193
+ signal,
194
+ timeout: 0,
195
+ });
196
+ if (closed) {
197
+ const stream = response.data;
198
+ if (typeof stream.destroy === "function") {
199
+ stream.destroy();
200
+ }
201
+ return;
202
+ }
203
+ attempt = 0;
204
+ const stream = response.data;
205
+ await new Promise((resolve) => {
206
+ const onData = (chunk) => {
207
+ if (closed)
208
+ return;
209
+ buffer +=
210
+ typeof chunk === "string" ? chunk : chunk.toString("utf8");
211
+ const parts = buffer.split("\n");
212
+ buffer = parts.pop() ?? "";
213
+ for (const line of parts) {
214
+ const trimmed = line.trimEnd();
215
+ if (!trimmed || trimmed.startsWith(":"))
216
+ continue;
217
+ if (!trimmed.startsWith("data:"))
218
+ continue;
219
+ const raw = trimmed.slice(5).trim();
220
+ if (!raw)
221
+ continue;
222
+ try {
223
+ const message = JSON.parse(raw);
224
+ handler(message);
225
+ }
226
+ catch {
227
+ if (this.debug) {
228
+ console.warn("[Events] failed to parse SSE data", raw);
229
+ }
230
+ }
231
+ }
232
+ };
233
+ const cleanup = () => {
234
+ stream.off("data", onData);
235
+ stream.off("error", onError);
236
+ stream.off("end", onEnd);
237
+ stream.off("close", onEnd);
238
+ };
239
+ const onError = (err) => {
240
+ cleanup();
241
+ if (closed || err?.name === "AbortError") {
242
+ resolve();
243
+ return;
244
+ }
245
+ if (this.debug) {
246
+ console.error("[Events] listen stream error", err);
247
+ }
248
+ resolve();
249
+ };
250
+ const onEnd = () => {
251
+ cleanup();
252
+ resolve();
253
+ };
254
+ stream.on("data", onData);
255
+ stream.on("error", onError);
256
+ stream.on("end", onEnd);
257
+ stream.on("close", onEnd);
258
+ });
259
+ if (!closed) {
260
+ scheduleReconnect();
261
+ }
262
+ }
263
+ catch (err) {
264
+ if (closed ||
265
+ err?.name === "AbortError" ||
266
+ err?.code === "ERR_CANCELED") {
267
+ return;
268
+ }
269
+ if (this.debug) {
270
+ console.error("[Events] listen failed", err);
271
+ }
272
+ scheduleReconnect();
273
+ }
274
+ };
275
+ void connect();
276
+ return { close };
277
+ }
278
+ buildAuthHeaders() {
279
+ const headers = (0, events_instance_id_1.applyInstanceHeader)((0, cliodot_request_1.applyEnvironmentHeader)({
280
+ "x-cliodot-app-id": this.appId,
281
+ }, this.environment), this.instanceId);
282
+ if (this.apiKey) {
283
+ headers.Authorization = `Bearer ${this.apiKey}`;
284
+ return headers;
285
+ }
286
+ if (this.appSecret) {
287
+ headers["x-cliodot-app-secret"] = this.appSecret;
288
+ return headers;
289
+ }
290
+ throw new errors_1.CliodotApiError("Events credentials required (apiKey/appApiKey or appSecret)");
291
+ }
292
+ async request(method, path, body) {
293
+ try {
294
+ const { data } = await this.axios({
295
+ method,
296
+ url: path,
297
+ headers: this.buildAuthHeaders(),
298
+ data: body,
299
+ });
300
+ if (data?.ok === false) {
301
+ const code = (0, parse_api_error_1.parseApiErrorCode)(data);
302
+ throw new errors_1.CliodotApiError(sanitizeEventApiErrorMessage((0, parse_api_error_1.parseApiErrorMessage)(data) || "Event request failed", code), {
303
+ data,
304
+ code,
305
+ });
306
+ }
307
+ return data;
308
+ }
309
+ catch (err) {
310
+ if (err instanceof errors_1.CliodotApiError) {
311
+ throw err;
312
+ }
313
+ const apiErr = (0, errors_1.cliodotApiErrorFromAxios)(err, `Request failed: ${method} ${path}`);
314
+ throw new errors_1.CliodotApiError(sanitizeEventApiErrorMessage(apiErr.message, apiErr.code), {
315
+ status: apiErr.status,
316
+ data: apiErr.data,
317
+ code: apiErr.code ||
318
+ (/kafka|rabbitmq|redis.?streams|bullmq|broker|KAFKA_|RABBITMQ_/i.test(apiErr.message)
319
+ ? "EVENT_DELIVERY_PROFILE_NOT_READY"
320
+ : apiErr.code),
321
+ });
322
+ }
323
+ }
324
+ }
325
+ exports.Events = Events;