cliodot 1.2.3 → 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 (135) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +2 -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 +50 -9
  7. package/dist/CommercialAppClient.d.ts.map +1 -1
  8. package/dist/CommercialAppClient.js +576 -1
  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 +1 -0
  17. package/dist/IdentityAppClient.d.ts.map +1 -1
  18. package/dist/IdentityAppClient.js +197 -1
  19. package/dist/MemoryAppClient.d.ts +1 -0
  20. package/dist/MemoryAppClient.d.ts.map +1 -1
  21. package/dist/MemoryAppClient.js +149 -1
  22. package/dist/MemoryClient.js +20 -1
  23. package/dist/OAuthAppClient.d.ts +1 -0
  24. package/dist/OAuthAppClient.d.ts.map +1 -1
  25. package/dist/OAuthAppClient.js +269 -1
  26. package/dist/ProviderServicesClient.d.ts +24 -0
  27. package/dist/ProviderServicesClient.d.ts.map +1 -0
  28. package/dist/ProviderServicesClient.js +158 -0
  29. package/dist/Surface.d.ts +2 -0
  30. package/dist/Surface.d.ts.map +1 -1
  31. package/dist/Surface.js +255 -1
  32. package/dist/ValidatorBuilder.js +24 -1
  33. package/dist/Webhooks.js +61 -1
  34. package/dist/WorkflowBuilder.js +279 -1
  35. package/dist/__tests__/CommercialAppClient.test.d.ts +2 -0
  36. package/dist/__tests__/CommercialAppClient.test.d.ts.map +1 -0
  37. package/dist/__tests__/CommercialAppClient.test.js +217 -0
  38. package/dist/__tests__/Events.test.js +191 -1
  39. package/dist/__tests__/IdentityAppClient.test.js +232 -1
  40. package/dist/__tests__/OAuthAppClient.test.js +300 -1
  41. package/dist/__tests__/ProviderServicesClient.test.d.ts +2 -0
  42. package/dist/__tests__/ProviderServicesClient.test.d.ts.map +1 -0
  43. package/dist/__tests__/ProviderServicesClient.test.js +131 -0
  44. package/dist/__tests__/Surface.test.js +150 -1
  45. package/dist/__tests__/errors.test.js +54 -1
  46. package/dist/__tests__/function.test.js +58 -1
  47. package/dist/__tests__/helpers.d.ts +5 -0
  48. package/dist/__tests__/helpers.d.ts.map +1 -0
  49. package/dist/__tests__/helpers.js +10 -0
  50. package/dist/__tests__/localhost-lookup.test.d.ts +2 -0
  51. package/dist/__tests__/localhost-lookup.test.d.ts.map +1 -0
  52. package/dist/__tests__/localhost-lookup.test.js +26 -0
  53. package/dist/__tests__/parse-api-error.test.js +26 -1
  54. package/dist/__tests__/runner.test.js +156 -1
  55. package/dist/connectors/builtin.js +354 -1
  56. package/dist/connectors/registry.js +300 -1
  57. package/dist/decorators/build.js +105 -1
  58. package/dist/decorators/connector.js +56 -1
  59. package/dist/decorators/index.js +34 -1
  60. package/dist/decorators/metadata.js +338 -1
  61. package/dist/decorators/steps.js +220 -1
  62. package/dist/decorators/workflow.js +52 -1
  63. package/dist/errors.js +76 -1
  64. package/dist/http/__tests__/cliodot-request.environment.test.d.ts +2 -0
  65. package/dist/http/__tests__/cliodot-request.environment.test.d.ts.map +1 -0
  66. package/dist/http/__tests__/cliodot-request.environment.test.js +37 -0
  67. package/dist/http/__tests__/cliodot-result.test.d.ts +2 -0
  68. package/dist/http/__tests__/cliodot-result.test.d.ts.map +1 -0
  69. package/dist/http/__tests__/cliodot-result.test.js +57 -0
  70. package/dist/http/__tests__/events-instance-id.test.d.ts +2 -0
  71. package/dist/http/__tests__/events-instance-id.test.d.ts.map +1 -0
  72. package/dist/http/__tests__/events-instance-id.test.js +45 -0
  73. package/dist/http/cliodot-request.d.ts +35 -0
  74. package/dist/http/cliodot-request.d.ts.map +1 -0
  75. package/dist/http/cliodot-request.js +105 -0
  76. package/dist/http/cliodot-result.d.ts +40 -0
  77. package/dist/http/cliodot-result.d.ts.map +1 -0
  78. package/dist/http/cliodot-result.js +139 -0
  79. package/dist/http/create-client.d.ts +3 -0
  80. package/dist/http/create-client.d.ts.map +1 -0
  81. package/dist/http/create-client.js +14 -0
  82. package/dist/http/events-instance-id.d.ts +11 -0
  83. package/dist/http/events-instance-id.d.ts.map +1 -0
  84. package/dist/http/events-instance-id.js +86 -0
  85. package/dist/http/localhost-lookup.d.ts +12 -0
  86. package/dist/http/localhost-lookup.d.ts.map +1 -0
  87. package/dist/http/localhost-lookup.js +67 -0
  88. package/dist/http/parse-api-error.js +56 -1
  89. package/dist/http/sanitize-execution-headers.js +79 -1
  90. package/dist/identity-offline-verify.js +174 -1
  91. package/dist/identity-token-cache.js +51 -1
  92. package/dist/index.d.ts +1 -1
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +108 -1
  95. package/dist/runner/ProcessorEngine.js +1311 -1
  96. package/dist/runner/connector.executor.js +1786 -1
  97. package/dist/runner/utilities/math.executor.js +153 -1
  98. package/dist/runner/utilities/random.executor.js +151 -1
  99. package/dist/runner/utilities/string.executor.js +825 -1
  100. package/dist/template.js +127 -1
  101. package/dist/transformers/StepsToNodesTransformer.js +214 -1
  102. package/dist/transformers/WorkflowTransformer.js +189 -1
  103. package/dist/types/auth-app.api.d.ts +2 -0
  104. package/dist/types/auth-app.api.d.ts.map +1 -1
  105. package/dist/types/auth-app.api.js +2 -1
  106. package/dist/types/builtin.js +2 -1
  107. package/dist/types/client.api.js +2 -1
  108. package/dist/types/commercial-app.api.d.ts +407 -11
  109. package/dist/types/commercial-app.api.d.ts.map +1 -1
  110. package/dist/types/commercial-app.api.js +2 -1
  111. package/dist/types/connector.js +2 -1
  112. package/dist/types/context.js +2 -1
  113. package/dist/types/event-app.api.d.ts +8 -0
  114. package/dist/types/event-app.api.d.ts.map +1 -1
  115. package/dist/types/event-app.api.js +2 -1
  116. package/dist/types/function.js +2 -1
  117. package/dist/types/identity-app.api.d.ts +2 -0
  118. package/dist/types/identity-app.api.d.ts.map +1 -1
  119. package/dist/types/identity-app.api.js +2 -1
  120. package/dist/types/index.js +23 -1
  121. package/dist/types/memory-app.api.d.ts +2 -0
  122. package/dist/types/memory-app.api.d.ts.map +1 -1
  123. package/dist/types/memory-app.api.js +2 -1
  124. package/dist/types/oauth-app.api.d.ts +2 -0
  125. package/dist/types/oauth-app.api.d.ts.map +1 -1
  126. package/dist/types/oauth-app.api.js +105 -1
  127. package/dist/types/provider-services.api.d.ts +98 -0
  128. package/dist/types/provider-services.api.d.ts.map +1 -0
  129. package/dist/types/provider-services.api.js +2 -0
  130. package/dist/types/validator.js +2 -1
  131. package/dist/types/webhook-app.api.js +2 -1
  132. package/dist/types/workflow.js +33 -1
  133. package/dist/validators/validators.js +478 -1
  134. package/dist/variable.js +37 -1
  135. package/package.json +3 -2
@@ -1 +1,54 @@
1
- 'use strict';function _0x1fa3(_0x406d94,_0x5982db){_0x406d94=_0x406d94-0x15a;const _0x4ea742=_0x4ea7();let _0x1fa3ce=_0x4ea742[_0x406d94];if(_0x1fa3['TjRyPo']===undefined){var _0x3e48c3=function(_0xdb1ba6){const _0x42d1cf='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x24324a='',_0x10a9e9='';for(let _0x2b33c6=0x0,_0x222560,_0x13ec6,_0x158eec=0x0;_0x13ec6=_0xdb1ba6['charAt'](_0x158eec++);~_0x13ec6&&(_0x222560=_0x2b33c6%0x4?_0x222560*0x40+_0x13ec6:_0x13ec6,_0x2b33c6++%0x4)?_0x24324a+=String['fromCharCode'](0xff&_0x222560>>(-0x2*_0x2b33c6&0x6)):0x0){_0x13ec6=_0x42d1cf['indexOf'](_0x13ec6);}for(let _0x4a46c6=0x0,_0x30c9fd=_0x24324a['length'];_0x4a46c6<_0x30c9fd;_0x4a46c6++){_0x10a9e9+='%'+('00'+_0x24324a['charCodeAt'](_0x4a46c6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10a9e9);};_0x1fa3['TriwPb']=_0x3e48c3,_0x1fa3['aUiIPn']={},_0x1fa3['TjRyPo']=!![];}const _0xc08567=_0x4ea742[0x0],_0x24d1e1=_0x406d94+_0xc08567,_0x3a4a08=_0x1fa3['aUiIPn'][_0x24d1e1];return!_0x3a4a08?(_0x1fa3ce=_0x1fa3['TriwPb'](_0x1fa3ce),_0x1fa3['aUiIPn'][_0x24d1e1]=_0x1fa3ce):_0x1fa3ce=_0x3a4a08,_0x1fa3ce;}const _0x1540f1=_0x1fa3;(function(_0x13749f,_0x47a7e9){const _0x3fb4dd=_0x1fa3,_0x2e8d03=_0x13749f();while(!![]){try{const _0x19137e=parseInt(_0x3fb4dd(0x178))/0x1*(-parseInt(_0x3fb4dd(0x17d))/0x2)+parseInt(_0x3fb4dd(0x17a))/0x3+parseInt(_0x3fb4dd(0x168))/0x4+parseInt(_0x3fb4dd(0x177))/0x5+-parseInt(_0x3fb4dd(0x16e))/0x6*(parseInt(_0x3fb4dd(0x166))/0x7)+parseInt(_0x3fb4dd(0x16d))/0x8*(parseInt(_0x3fb4dd(0x172))/0x9)+parseInt(_0x3fb4dd(0x17b))/0xa;if(_0x19137e===_0x47a7e9)break;else _0x2e8d03['push'](_0x2e8d03['shift']());}catch(_0x2aa7fe){_0x2e8d03['push'](_0x2e8d03['shift']());}}}(_0x4ea7,0x18924));Object[_0x1540f1(0x17c)](exports,_0x1540f1(0x15b),{'value':!![]});function _0x4ea7(){const _0x1ad539=['tM9Wzq','ntzes0jksNq','nM1vv3bPEa','yxbWBgLJyxrPB24VANnVBG','C3rHDhvZ','y29Kzq','mZK4mdDXCejXDxa','y29UzMLN','zxHWB3nLCYbVBMX5iefqssbIB2r5ig9UihjLC3bVBNnLl2rHDgeGzNjVBsbHEgLVCYbLCNjVCNm','q2XPB2rVDefWAuvYCM9Y','BM90','ntu3nJi1qNH5tfHl','mteWmZe1z0T6rwPL','uMvXDwvZDcbMywLSzwq','mZm2nZq0zefhCfzn','mtq4ntK2mgneD2LZBW','zgvMAw5LuhjVCgvYDhK','mLPmDvbNqG','AgvHzgvYCW','Dg9czuLUC3rHBMnLt2y','x19LC01VzhvSzq','CgfYC2u','Dg9czq','lI4VzxjYB3jZ','CMvZCg9UC2u','rvzftLrFu1vcu0nssujfuL9ot1rFrK9vtKq','CMvXDwvZDa','zgf0yq','Dw53CMfWCYbHEgLVCY1SAwTLihjLC3bVBNnLig9WDgLVBIbPzIbWyxnZzwqGDg8Gy29UC3rYDwn0B3i','Dg9iyxzLuhjVCgvYDhK','BwvZC2fNzq','mtm3oteXovzpAurpwq','C3rYAw5NAwz5','mtG1odrkCernqLm','u3vIC2nYAxb0Aw9Uig5VDcbMB3vUza','Dg9fCxvHBa','tM90iezVDw5K'];_0x4ea7=function(){return _0x1ad539;};return _0x4ea7();}const errors_1=require(_0x1540f1(0x15e));describe(_0x1540f1(0x175),()=>{const _0x236b70=_0x1540f1;it(_0x236b70(0x174),()=>{const _0xd237c=_0x236b70,_0x24324a={'ok':![],'error':_0xd237c(0x169),'code':_0xd237c(0x160)},_0x10a9e9=(0x0,errors_1['cliodotApiErrorFromAxios'])({'message':'Request\x20failed\x20with\x20status\x20code\x20404','response':{'status':0x194,'statusText':_0xd237c(0x16b),'headers':{'content-type':_0xd237c(0x16f)},'config':{'url':'/v1/subscribe/x','method':'delete'},'request':{},'data':_0x24324a}},_0xd237c(0x179));expect(_0x10a9e9)[_0xd237c(0x15a)](errors_1[_0xd237c(0x175)]),expect(_0x10a9e9['status'])[_0xd237c(0x15d)](0x194),expect(_0x10a9e9[_0xd237c(0x165)])[_0xd237c(0x15d)]('Subscription\x20not\x20found'),expect(_0x10a9e9[_0xd237c(0x171)])[_0xd237c(0x15d)](_0xd237c(0x160)),expect(_0x10a9e9[_0xd237c(0x15f)])[_0xd237c(0x16a)](_0x24324a),expect(_0x10a9e9[_0xd237c(0x162)])[_0xd237c(0x16a)](_0x24324a),expect(_0x10a9e9['response'])['not'][_0xd237c(0x164)](_0xd237c(0x173)),expect(_0x10a9e9[_0xd237c(0x15f)])['not'][_0xd237c(0x164)](_0xd237c(0x17e)),expect(_0x10a9e9[_0xd237c(0x15f)])[_0xd237c(0x176)][_0xd237c(0x164)](_0xd237c(0x161)),expect(JSON[_0xd237c(0x15c)](JSON[_0xd237c(0x167)](_0x10a9e9)))[_0xd237c(0x16a)]({'name':'CliodotApiError','message':_0xd237c(0x169),'status':0x194,'code':'EVENT_SUBSCRIBER_NOT_FOUND','data':_0x24324a,'response':_0x24324a});}),it(_0x236b70(0x163),()=>{const _0x16c3ca=_0x236b70,_0x2b33c6={'ok':![],'error':'Nope','code':'X'},_0x222560=new errors_1['CliodotApiError'](_0x16c3ca(0x16c),{'response':{'status':0x190,'headers':{},'config':{},'data':_0x2b33c6}});expect(_0x222560[_0x16c3ca(0x15f)])[_0x16c3ca(0x16a)](_0x2b33c6),expect(_0x222560[_0x16c3ca(0x162)])[_0x16c3ca(0x16a)](_0x2b33c6),expect(_0x222560[_0x16c3ca(0x170)])[_0x16c3ca(0x15d)](0x190);});});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const errors_1 = require("../errors");
4
+ describe("CliodotApiError", () => {
5
+ it("exposes only API body on response/data from axios errors", () => {
6
+ const body = {
7
+ ok: false,
8
+ error: "Subscription not found",
9
+ code: "EVENT_SUBSCRIBER_NOT_FOUND",
10
+ };
11
+ const err = (0, errors_1.cliodotApiErrorFromAxios)({
12
+ message: "Request failed with status code 404",
13
+ response: {
14
+ status: 404,
15
+ statusText: "Not Found",
16
+ headers: { "content-type": "application/json" },
17
+ config: { url: "/v1/subscribe/x", method: "delete" },
18
+ request: {},
19
+ data: body,
20
+ },
21
+ }, "Request failed");
22
+ expect(err).toBeInstanceOf(errors_1.CliodotApiError);
23
+ expect(err.status).toBe(404);
24
+ expect(err.message).toBe("Subscription not found");
25
+ expect(err.code).toBe("EVENT_SUBSCRIBER_NOT_FOUND");
26
+ expect(err.response).toEqual(body);
27
+ expect(err.data).toEqual(body);
28
+ expect(err.response).not.toHaveProperty("config");
29
+ expect(err.response).not.toHaveProperty("headers");
30
+ expect(err.response).not.toHaveProperty("request");
31
+ expect(JSON.parse(JSON.stringify(err))).toEqual({
32
+ name: "CliodotApiError",
33
+ message: "Subscription not found",
34
+ status: 404,
35
+ code: "EVENT_SUBSCRIBER_NOT_FOUND",
36
+ data: body,
37
+ response: body,
38
+ });
39
+ });
40
+ it("unwraps axios-like response option if passed to constructor", () => {
41
+ const body = { ok: false, error: "Nope", code: "X" };
42
+ const err = new errors_1.CliodotApiError("Nope", {
43
+ response: {
44
+ status: 400,
45
+ headers: {},
46
+ config: {},
47
+ data: body,
48
+ },
49
+ });
50
+ expect(err.response).toEqual(body);
51
+ expect(err.data).toEqual(body);
52
+ expect(err.status).toBe(400);
53
+ });
54
+ });
@@ -1 +1,58 @@
1
- 'use strict';const _0x11205f=_0x5626;(function(_0x4cbf98,_0x1c8b1d){const _0x4b32b2=_0x5626,_0x427476=_0x4cbf98();while(!![]){try{const _0x55c692=parseInt(_0x4b32b2(0x1cd))/0x1+-parseInt(_0x4b32b2(0x1cf))/0x2+parseInt(_0x4b32b2(0x1c9))/0x3*(-parseInt(_0x4b32b2(0x1e1))/0x4)+parseInt(_0x4b32b2(0x1be))/0x5+parseInt(_0x4b32b2(0x1bc))/0x6*(-parseInt(_0x4b32b2(0x1e4))/0x7)+parseInt(_0x4b32b2(0x1c1))/0x8*(parseInt(_0x4b32b2(0x1cc))/0x9)+-parseInt(_0x4b32b2(0x1c7))/0xa;if(_0x55c692===_0x1c8b1d)break;else _0x427476['push'](_0x427476['shift']());}catch(_0x4603c0){_0x427476['push'](_0x427476['shift']());}}}(_0x278f,0xd37d4));function _0x5626(_0xf18649,_0x5e22fc){_0xf18649=_0xf18649-0x1b8;const _0x278f9d=_0x278f();let _0x5626c4=_0x278f9d[_0xf18649];if(_0x5626['irVsEM']===undefined){var _0x43b01b=function(_0x28cd93){const _0x4e3279='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1968da='',_0x407f76='';for(let _0x386faa=0x0,_0x1322c6,_0x5aa650,_0x2b3a10=0x0;_0x5aa650=_0x28cd93['charAt'](_0x2b3a10++);~_0x5aa650&&(_0x1322c6=_0x386faa%0x4?_0x1322c6*0x40+_0x5aa650:_0x5aa650,_0x386faa++%0x4)?_0x1968da+=String['fromCharCode'](0xff&_0x1322c6>>(-0x2*_0x386faa&0x6)):0x0){_0x5aa650=_0x4e3279['indexOf'](_0x5aa650);}for(let _0x30405c=0x0,_0x5b1d0a=_0x1968da['length'];_0x30405c<_0x5b1d0a;_0x30405c++){_0x407f76+='%'+('00'+_0x1968da['charCodeAt'](_0x30405c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x407f76);};_0x5626['UobPpn']=_0x43b01b,_0x5626['YycYeS']={},_0x5626['irVsEM']=!![];}const _0x4b2f69=_0x278f9d[0x0],_0x1bb5b9=_0xf18649+_0x4b2f69,_0x4c79cc=_0x5626['YycYeS'][_0x1bb5b9];return!_0x4c79cc?(_0x5626c4=_0x5626['UobPpn'](_0x5626c4),_0x5626['YycYeS'][_0x1bb5b9]=_0x5626c4):_0x5626c4=_0x4c79cc,_0x5626c4;}function _0x278f(){const _0x4edcff=['zMXVC3LUyW','vvne','nteXExHstez2','Cgf5BwvUDc1MBg93','l3bHEq','yNvPBgq','B3v0Chv0rNjVBq','x19LC01VzhvSzq','zgvMAw5LuhjVCgvYDhK','E3SGDhjPz2DLCI5IB2r5lMfTB3vUDcb9Fq','DMfSAwrHDgu','mtiZmti2t2TlEu5m','DMfSAwrHDg9Y','ntaWody1nvfNC0jdCa','Dg9czurLzMLUzwq','C3rYAw5N','mZiZndrUrfffCuK','E3SGyxjNCY5JDxjYzw5JEsb9Fq','DMfSAwq','DhjHBNnMB3jT','CNvU','D29YA2zSB3C','ndi0mJiWmgXgyLnrzW','Dg9czvrYDxrOEq','mJG3n1zPrwj6rG','zM9YBwf0','Aw5WDxq','mJqYmw9QzefMta','mtqWmdCWnKLPANPLCW','E3SGC3rLCfjLC3vSDhmUDMfSAwrHDguGFx0','ntq2mJH3t3LTBLy','Dg9czq','CNvUrNvUy3rPB24','y2fSBa','DMfSAwrHDguTCgf5BwvUDa','DxnLCYbMDw5JDgLVBIbPBIb3B3jRzMXVDYb2AweGy2fSBcbZDgvW','CMvNAxn0zxjgDw5JDgLVBG','E3SGyxjNCY5HBw91BNqGFx0','CMvNAxn0zxi','C3rHDhvZq29Kzq','yM9KEq','BNvTyMvY','y3jLyxrLCYbHBMqGCNvUCYbHigz1BMn0Aw9UihDPDgGGDhjHBNnMB3jTigfUzcbVDxrWDxrgCM9T','rNvUy3rPB25cDwLSzgvY','E3SGC3rLCfjLC3vSDhmUDMfSAwrHDguUDMfSAwqGFx0','C3rLCa','ANnVBG','lI4VAw5KzxG','mJGXmLniwKvnta'];_0x278f=function(){return _0x4edcff;};return _0x278f();}Object[_0x11205f(0x1b9)](exports,_0x11205f(0x1b8),{'value':!![]});const index_1=require(_0x11205f(0x1e0));describe(_0x11205f(0x1dc),()=>{const _0x5e8584=_0x11205f;beforeEach(()=>{index_1['flosync']['configure']({'connectors':{}});}),it(_0x5e8584(0x1db),async()=>{const _0x4aac5e=_0x5e8584,_0x1968da=index_1['flosync']['function']('validate-payment')[_0x4aac5e(0x1cb)]({'amount':_0x4aac5e(0x1da),'currency':_0x4aac5e(0x1c0)})['step'](_0x4aac5e(0x1bb),_0x386faa=>_0x386faa[_0x4aac5e(0x1bd)]({'amount':_0x4aac5e(0x1d6),'currency':_0x4aac5e(0x1c2)}))[_0x4aac5e(0x1de)](_0x4aac5e(0x1ca),_0x1322c6=>_0x1322c6[_0x4aac5e(0x1c4)]({'valid':_0x4aac5e(0x1dd),'amount':_0x4aac5e(0x1d6)}))[_0x4aac5e(0x1e8)]('format')[_0x4aac5e(0x1e7)]();index_1['flosync']['registerFunction'](_0x1968da);const _0x407f76=await index_1[_0x4aac5e(0x1e2)][_0x4aac5e(0x1d1)](_0x4aac5e(0x1d3),{'amount':0x64,'currency':_0x4aac5e(0x1e3)});expect(_0x407f76)[_0x4aac5e(0x1bf)](),expect(_0x407f76['valid'])[_0x4aac5e(0x1d0)](!![]),expect(_0x407f76['amount'])[_0x4aac5e(0x1d0)](0x64);}),it(_0x5e8584(0x1d4),async()=>{const _0x5536b4=_0x5e8584,_0x5aa650=index_1[_0x5536b4(0x1e2)]['function'](_0x5536b4(0x1d3))['input']({'amount':_0x5536b4(0x1da),'currency':_0x5536b4(0x1c0)})['step'](_0x5536b4(0x1ca),_0x5b1d0a=>_0x5b1d0a[_0x5536b4(0x1c4)]({'valid':'true','amount':_0x5536b4(0x1d6),'currency':_0x5536b4(0x1c2)}))['outputFrom'](_0x5536b4(0x1ca))[_0x5536b4(0x1e7)]();index_1[_0x5536b4(0x1e2)][_0x5536b4(0x1d5)](_0x5aa650);const _0x2b3a10=index_1['flosync'][_0x5536b4(0x1c6)](_0x5536b4(0x1e5))['http']('POST',_0x5536b4(0x1e6))['step'](_0x5536b4(0x1bb),_0x27415d=>_0x27415d[_0x5536b4(0x1d2)](_0x5536b4(0x1d3),{'amount':_0x5536b4(0x1ba),'currency':'{{\x20trigger.body.currency\x20}}'}))[_0x5536b4(0x1de)]('respond',_0x3d83b8=>_0x3d83b8['responder'](_0x5536b4(0x1df),{'body':_0x5536b4(0x1ce)}))[_0x5536b4(0x1e7)]();index_1[_0x5536b4(0x1e2)][_0x5536b4(0x1d7)](_0x2b3a10);const _0x30405c=await index_1[_0x5536b4(0x1e2)][_0x5536b4(0x1c5)](_0x5536b4(0x1e5),{'body':{'amount':0x32,'currency':'NGN'}});expect(_0x30405c[_0x5536b4(0x1d8)])[_0x5536b4(0x1d0)](0xc8),expect(_0x30405c[_0x5536b4(0x1d9)][_0x5536b4(0x1c3)])[_0x5536b4(0x1bf)](),expect(_0x30405c[_0x5536b4(0x1d9)][_0x5536b4(0x1c3)])[_0x5536b4(0x1c8)](),expect(Number(_0x30405c[_0x5536b4(0x1d9)]['amount']))[_0x5536b4(0x1d0)](0x32);});});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ describe("FunctionBuilder", () => {
5
+ beforeEach(() => {
6
+ index_1.flosync.configure({ connectors: {} });
7
+ });
8
+ it("creates and runs a function with transform and outputFrom", async () => {
9
+ const validatePayment = index_1.flosync
10
+ .function("validate-payment")
11
+ .input({ amount: "number", currency: "string" })
12
+ .step("validate", (s) => s.validator({ amount: "{{ args.amount }}", currency: "{{ args.currency }}" }))
13
+ .step("format", (s) => s.transform({
14
+ valid: "{{ stepResults.validate.valid }}",
15
+ amount: "{{ args.amount }}",
16
+ }))
17
+ .outputFrom("format")
18
+ .build();
19
+ index_1.flosync.registerFunction(validatePayment);
20
+ const result = await index_1.flosync.runFunction("validate-payment", {
21
+ amount: 100,
22
+ currency: "USD",
23
+ });
24
+ expect(result).toBeDefined();
25
+ expect(result.valid).toBe(true);
26
+ expect(result.amount).toBe(100);
27
+ });
28
+ it("uses function in workflow via call step", async () => {
29
+ const validatePayment = index_1.flosync
30
+ .function("validate-payment")
31
+ .input({ amount: "number", currency: "string" })
32
+ .step("format", (s) => s.transform({
33
+ valid: "true",
34
+ amount: "{{ args.amount }}",
35
+ currency: "{{ args.currency }}",
36
+ }))
37
+ .outputFrom("format")
38
+ .build();
39
+ index_1.flosync.registerFunction(validatePayment);
40
+ const w = index_1.flosync
41
+ .workflow("payment-flow")
42
+ .http("POST", "/pay")
43
+ .step("validate", (s) => s.call("validate-payment", {
44
+ amount: "{{ trigger.body.amount }}",
45
+ currency: "{{ trigger.body.currency }}",
46
+ }))
47
+ .step("respond", (s) => s.responder("json", { body: "{{ stepResults.validate }}" }))
48
+ .build();
49
+ index_1.flosync.register(w);
50
+ const result = await index_1.flosync.run("payment-flow", {
51
+ body: { amount: 50, currency: "NGN" },
52
+ });
53
+ expect(result.statusCode).toBe(200);
54
+ expect(result.body.valid).toBeDefined();
55
+ expect(result.body.valid).toBeTruthy();
56
+ expect(Number(result.body.amount)).toBe(50);
57
+ });
58
+ });
@@ -0,0 +1,5 @@
1
+ import { type CliodotMethodResult } from "../http/cliodot-result";
2
+ export declare function assertOk<T extends object>(result: CliodotMethodResult<T>): asserts result is Extract<CliodotMethodResult<T>, {
3
+ ok: true;
4
+ }>;
5
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/__tests__/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE9F,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EACvC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAKjE"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertOk = assertOk;
4
+ const cliodot_result_1 = require("../http/cliodot-result");
5
+ function assertOk(result) {
6
+ expect((0, cliodot_result_1.isCliodotOk)(result)).toBe(true);
7
+ if ((0, cliodot_result_1.isCliodotFail)(result)) {
8
+ throw new Error(`${result.error.code}: ${result.error.message}`);
9
+ }
10
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=localhost-lookup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localhost-lookup.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/localhost-lookup.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const localhost_lookup_1 = require("../http/localhost-lookup");
4
+ describe("localhostAwareLookup", () => {
5
+ it("treats localhost and *.localhost as loopback", () => {
6
+ expect((0, localhost_lookup_1.isLoopbackHostname)("localhost")).toBe(true);
7
+ expect((0, localhost_lookup_1.isLoopbackHostname)("flash.localhost")).toBe(true);
8
+ expect((0, localhost_lookup_1.isLoopbackHostname)("FLASH.LOCALHOST")).toBe(true);
9
+ expect((0, localhost_lookup_1.isLoopbackHostname)("api.example.com")).toBe(false);
10
+ });
11
+ it("resolves *.localhost to 127.0.0.1 without DNS", (done) => {
12
+ (0, localhost_lookup_1.localhostAwareLookup)("flash.localhost", {}, (err, address, family) => {
13
+ expect(err).toBeNull();
14
+ expect(address).toBe("127.0.0.1");
15
+ expect(family).toBe(4);
16
+ done();
17
+ });
18
+ });
19
+ it("supports all:true lookups", (done) => {
20
+ (0, localhost_lookup_1.localhostAwareLookup)("flash.localhost", { all: true }, (err, address) => {
21
+ expect(err).toBeNull();
22
+ expect(address).toEqual([{ address: "127.0.0.1", family: 4 }]);
23
+ done();
24
+ });
25
+ });
26
+ });
@@ -1 +1,26 @@
1
- 'use strict';function _0xab7e(){const _0x3aa418=['mZy0nJi3mezZwhHrsa','lI4VAhr0Cc9WyxjZzs1HCgKTzxjYB3i','mZm4nti0mJLjwuLHB0u','tM8GCMvMCMvZAcb0B2TLBIbHDMfPBgfIBguGzM9YihrOAxmGy29UBMvJDgLVBG','ognTwNnQwa','mtfLveTxCLu','mJCYnJm1AgLSt0P4','mZiZndG0n3jqweDHDG','CgfYC2vbCgLfCNjVCK1LC3nHz2u','mtK2mdzlvwDgt00','ntC1mZu4n0DdzwDNsG','t0fvveHFufjpvKLervjFrvjst1i','Dg9czq','x19LC01VzhvSzq','ChjLzMvYCYb0B3aTBgv2zwWGBwvZC2fNzsbVDMvYig5LC3rLzcbLCNjVCIbVyMPLy3q','mtqWmZKXEeLbz0LJ','mJrvvgfTENC','ovPtzur6tq','mtjishnZCxe','sw52ywXPzcbVCIbLEhbPCMvKigv4y2HHBMDLignVzgu','zgvMAw5LuhjVCgvYDhK','ndHQCNrUC0C','t0fvveHFrvHdsefor0vFq09erv9jtLzbteLe'];_0xab7e=function(){return _0x3aa418;};return _0xab7e();}const _0x3b0101=_0x4453;(function(_0x4426f6,_0x33cdaa){const _0x586391=_0x4453,_0x4e4061=_0x4426f6();while(!![]){try{const _0x108fc2=-parseInt(_0x586391(0x100))/0x1*(parseInt(_0x586391(0x104))/0x2)+-parseInt(_0x586391(0xf3))/0x3*(-parseInt(_0x586391(0xf4))/0x4)+-parseInt(_0x586391(0x101))/0x5*(parseInt(_0x586391(0xf9))/0x6)+parseInt(_0x586391(0x105))/0x7*(-parseInt(_0x586391(0xff))/0x8)+parseInt(_0x586391(0xf5))/0x9*(-parseInt(_0x586391(0xfb))/0xa)+-parseInt(_0x586391(0x102))/0xb*(parseInt(_0x586391(0xf6))/0xc)+parseInt(_0x586391(0xfd))/0xd;if(_0x108fc2===_0x33cdaa)break;else _0x4e4061['push'](_0x4e4061['shift']());}catch(_0x531265){_0x4e4061['push'](_0x4e4061['shift']());}}}(_0xab7e,0xd1fd9));Object[_0x3b0101(0xf8)](exports,_0x3b0101(0xf1),{'value':!![]});const parse_api_error_1=require(_0x3b0101(0xfc));function _0x4453(_0x523d73,_0x42ff15){_0x523d73=_0x523d73-0xf0;const _0xab7e73=_0xab7e();let _0x445370=_0xab7e73[_0x523d73];if(_0x4453['GqyAkZ']===undefined){var _0x3be7fc=function(_0x3f7bed){const _0x4f510f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1b7e18='',_0x2a1a60='';for(let _0x508bf9=0x0,_0x2cb321,_0x377883,_0x239920=0x0;_0x377883=_0x3f7bed['charAt'](_0x239920++);~_0x377883&&(_0x2cb321=_0x508bf9%0x4?_0x2cb321*0x40+_0x377883:_0x377883,_0x508bf9++%0x4)?_0x1b7e18+=String['fromCharCode'](0xff&_0x2cb321>>(-0x2*_0x508bf9&0x6)):0x0){_0x377883=_0x4f510f['indexOf'](_0x377883);}for(let _0x18e840=0x0,_0x259513=_0x1b7e18['length'];_0x18e840<_0x259513;_0x18e840++){_0x2a1a60+='%'+('00'+_0x1b7e18['charCodeAt'](_0x18e840)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2a1a60);};_0x4453['dYqPhC']=_0x3be7fc,_0x4453['xsfJJZ']={},_0x4453['GqyAkZ']=!![];}const _0x2fa1f9=_0xab7e73[0x0],_0x41d4f8=_0x523d73+_0x2fa1f9,_0x3819aa=_0x4453['xsfJJZ'][_0x41d4f8];return!_0x3819aa?(_0x445370=_0x4453['dYqPhC'](_0x445370),_0x4453['xsfJJZ'][_0x41d4f8]=_0x445370):_0x445370=_0x3819aa,_0x445370;}describe('parseApiError',()=>{const _0x44f273=_0x3b0101;it(_0x44f273(0xf2),()=>{const _0x3ed240=_0x44f273,_0x1b7e18={'message':_0x3ed240(0xfe),'status':![],'statusCode':0x1a6,'data':null,'error':{'statusCode':0x1a6,'code':_0x3ed240(0x106)}};expect((0x0,parse_api_error_1[_0x3ed240(0x103)])(_0x1b7e18))[_0x3ed240(0xf0)](_0x3ed240(0xfe)),expect((0x0,parse_api_error_1['parseApiErrorCode'])(_0x1b7e18))['toBe']('OAUTH_PROVIDER_ERROR'),expect((0x0,parse_api_error_1['parseApiErrorStatus'])(_0x1b7e18))[_0x3ed240(0xf0)](0x1a6);}),it('reads\x20string\x20error\x20field',()=>{const _0x3fc67f=_0x44f273,_0x2a1a60={'ok':![],'error':_0x3fc67f(0xf7),'code':_0x3fc67f(0xfa)};expect((0x0,parse_api_error_1['parseApiErrorMessage'])(_0x2a1a60))[_0x3fc67f(0xf0)](_0x3fc67f(0xf7)),expect((0x0,parse_api_error_1['parseApiErrorCode'])(_0x2a1a60))[_0x3fc67f(0xf0)](_0x3fc67f(0xfa));});});
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const parse_api_error_1 = require("../http/parse-api-error");
4
+ describe("parseApiError", () => {
5
+ it("prefers top-level message over nested error object", () => {
6
+ const data = {
7
+ message: "No refresh token available for this connection",
8
+ status: false,
9
+ statusCode: 422,
10
+ data: null,
11
+ error: { statusCode: 422, code: "OAUTH_PROVIDER_ERROR" },
12
+ };
13
+ expect((0, parse_api_error_1.parseApiErrorMessage)(data)).toBe("No refresh token available for this connection");
14
+ expect((0, parse_api_error_1.parseApiErrorCode)(data)).toBe("OAUTH_PROVIDER_ERROR");
15
+ expect((0, parse_api_error_1.parseApiErrorStatus)(data)).toBe(422);
16
+ });
17
+ it("reads string error field", () => {
18
+ const data = {
19
+ ok: false,
20
+ error: "Invalid or expired exchange code",
21
+ code: "OAUTH_EXCHANGE_CODE_INVALID",
22
+ };
23
+ expect((0, parse_api_error_1.parseApiErrorMessage)(data)).toBe("Invalid or expired exchange code");
24
+ expect((0, parse_api_error_1.parseApiErrorCode)(data)).toBe("OAUTH_EXCHANGE_CODE_INVALID");
25
+ });
26
+ });
@@ -1 +1,156 @@
1
- 'use strict';const _0xe630d2=_0x3e54;(function(_0x12e91e,_0x273217){const _0xc166e4=_0x3e54,_0x45e570=_0x12e91e();while(!![]){try{const _0x318f81=-parseInt(_0xc166e4(0x171))/0x1*(-parseInt(_0xc166e4(0x1a4))/0x2)+parseInt(_0xc166e4(0x152))/0x3*(parseInt(_0xc166e4(0x17d))/0x4)+-parseInt(_0xc166e4(0x19c))/0x5+-parseInt(_0xc166e4(0x170))/0x6*(-parseInt(_0xc166e4(0x1a2))/0x7)+parseInt(_0xc166e4(0x184))/0x8*(-parseInt(_0xc166e4(0x153))/0x9)+parseInt(_0xc166e4(0x14f))/0xa*(parseInt(_0xc166e4(0x178))/0xb)+-parseInt(_0xc166e4(0x196))/0xc;if(_0x318f81===_0x273217)break;else _0x45e570['push'](_0x45e570['shift']());}catch(_0x36f80e){_0x45e570['push'](_0x45e570['shift']());}}}(_0x1b4d,0x3f9d8));function _0x3e54(_0x3473a6,_0x108f25){_0x3473a6=_0x3473a6-0x147;const _0x1b4d90=_0x1b4d();let _0x3e5498=_0x1b4d90[_0x3473a6];if(_0x3e54['MXfwnB']===undefined){var _0x557d12=function(_0x21cec6){const _0xe208ff='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x796d4d='',_0x3847ce='';for(let _0x1380a0=0x0,_0x284695,_0x557e6c,_0x3b4521=0x0;_0x557e6c=_0x21cec6['charAt'](_0x3b4521++);~_0x557e6c&&(_0x284695=_0x1380a0%0x4?_0x284695*0x40+_0x557e6c:_0x557e6c,_0x1380a0++%0x4)?_0x796d4d+=String['fromCharCode'](0xff&_0x284695>>(-0x2*_0x1380a0&0x6)):0x0){_0x557e6c=_0xe208ff['indexOf'](_0x557e6c);}for(let _0x340618=0x0,_0x37e523=_0x796d4d['length'];_0x340618<_0x37e523;_0x340618++){_0x3847ce+='%'+('00'+_0x796d4d['charCodeAt'](_0x340618)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3847ce);};_0x3e54['hLpvrl']=_0x557d12,_0x3e54['pQioJu']={},_0x3e54['MXfwnB']=!![];}const _0x50abb1=_0x1b4d90[0x0],_0x5af780=_0x3473a6+_0x50abb1,_0xeadb0d=_0x3e54['pQioJu'][_0x5af780];return!_0xeadb0d?(_0x3e5498=_0x3e54['hLpvrl'](_0x3e5498),_0x3e54['pQioJu'][_0x5af780]=_0x3e5498):_0x3e5498=_0xeadb0d,_0x3e5498;}Object[_0xe630d2(0x16a)](exports,_0xe630d2(0x162),{'value':!![]});const index_1=require(_0xe630d2(0x194));describe(_0xe630d2(0x18e),()=>{const _0x17323a=_0xe630d2;beforeEach(()=>{const _0x3312e5=_0x3e54;index_1[_0x3312e5(0x176)][_0x3312e5(0x14d)]({'connectors':{}});}),it(_0x17323a(0x19f),async()=>{const _0x521f05=_0x17323a,_0x796d4d=index_1[_0x521f05(0x176)][_0x521f05(0x18d)](_0x521f05(0x147))[_0x521f05(0x14a)](_0x521f05(0x18f),_0x521f05(0x14e))[_0x521f05(0x16f)]('validate',_0x1380a0=>_0x1380a0[_0x521f05(0x155)]({'amount':_0x521f05(0x167),'currency':_0x521f05(0x191)}))[_0x521f05(0x16f)](_0x521f05(0x195),_0x284695=>_0x284695['responder'](_0x521f05(0x18b),{'statusCode':0xc8,'body':_0x521f05(0x172)}))[_0x521f05(0x16e)]();index_1[_0x521f05(0x176)][_0x521f05(0x15f)](_0x796d4d);const _0x3847ce=await index_1['flosync'][_0x521f05(0x175)]('test-flow',{'body':{'amount':0x64,'currency':'USD'}});expect(_0x3847ce['statusCode'])[_0x521f05(0x168)](0xc8),expect(_0x3847ce[_0x521f05(0x182)])[_0x521f05(0x158)](),expect(_0x3847ce['body']['valid'])[_0x521f05(0x168)](!![]);}),it(_0x17323a(0x15c),async()=>{const _0x780ad8=_0x17323a,_0x557e6c=index_1[_0x780ad8(0x176)][_0x780ad8(0x18d)]('cond-flow')[_0x780ad8(0x14a)](_0x780ad8(0x18f),'/cond')[_0x780ad8(0x16f)](_0x780ad8(0x19d),_0x37e523=>_0x37e523[_0x780ad8(0x187)]('{{\x20trigger.body.amount\x20>\x200\x20}}')[_0x780ad8(0x17f)]('ok')[_0x780ad8(0x1a8)](_0x780ad8(0x15b)))[_0x780ad8(0x16f)]('ok',_0x51c891=>_0x51c891[_0x780ad8(0x156)](_0x780ad8(0x18b),{'statusCode':0xc8,'body':{'status':'ok'}}))[_0x780ad8(0x16f)](_0x780ad8(0x15b),_0x147cb2=>_0x147cb2['responder'](_0x780ad8(0x18b),{'statusCode':0x190,'body':{'status':_0x780ad8(0x15b)}}))[_0x780ad8(0x16e)]();index_1[_0x780ad8(0x176)]['register'](_0x557e6c);const _0x3b4521=await index_1[_0x780ad8(0x176)]['run'](_0x780ad8(0x161),{'body':{'amount':0xa}});expect(_0x3b4521['statusCode'])['toBe'](0xc8),expect(_0x3b4521[_0x780ad8(0x182)])[_0x780ad8(0x15d)]({'status':'ok'});const _0x340618=await index_1[_0x780ad8(0x176)][_0x780ad8(0x175)](_0x780ad8(0x161),{'body':{'amount':0x0}});expect(_0x340618[_0x780ad8(0x197)])[_0x780ad8(0x168)](0x190),expect(_0x340618[_0x780ad8(0x182)])['toEqual']({'status':_0x780ad8(0x15b)});}),it('runs\x20workflow\x20with\x20transform\x20step',async()=>{const _0x5228e0=_0x17323a,_0x66a452=index_1[_0x5228e0(0x176)][_0x5228e0(0x18d)](_0x5228e0(0x180))[_0x5228e0(0x14a)](_0x5228e0(0x18f),_0x5228e0(0x14c))[_0x5228e0(0x16f)](_0x5228e0(0x198),_0x29f591=>_0x29f591[_0x5228e0(0x198)]({'doubled':_0x5228e0(0x165),'upper':_0x5228e0(0x18a)}))[_0x5228e0(0x16f)](_0x5228e0(0x195),_0x14cd27=>_0x14cd27[_0x5228e0(0x156)]('json',{'body':_0x5228e0(0x17a)}))[_0x5228e0(0x16e)]();index_1['flosync'][_0x5228e0(0x15f)](_0x66a452);const _0x5a7476=await index_1[_0x5228e0(0x176)]['run'](_0x5228e0(0x180),{'body':{'value':0x5,'name':_0x5228e0(0x15e)}});expect(_0x5a7476[_0x5228e0(0x197)])[_0x5228e0(0x168)](0xc8),expect(_0x5a7476[_0x5228e0(0x182)])[_0x5228e0(0x158)](),expect(_0x5a7476[_0x5228e0(0x182)][_0x5228e0(0x193)])[_0x5228e0(0x168)](0xa),expect(_0x5a7476[_0x5228e0(0x182)][_0x5228e0(0x174)])['toBe'](_0x5228e0(0x154));}),it(_0x17323a(0x179),async()=>{const _0x22fea2=_0x17323a,_0x515a16=index_1['flosync'][_0x22fea2(0x18d)]('validator-else')['http']('POST','/v')[_0x22fea2(0x16f)]('validate',_0x3ff732=>_0x3ff732[_0x22fea2(0x155)]({'amount':_0x22fea2(0x167)})[_0x22fea2(0x17f)](_0x22fea2(0x16c))[_0x22fea2(0x1a8)]('error'))[_0x22fea2(0x16f)](_0x22fea2(0x16c),_0xf1935e=>_0xf1935e[_0x22fea2(0x156)]('json',{'statusCode':0xc8,'body':{'saved':!![]}}))[_0x22fea2(0x16f)](_0x22fea2(0x17c),_0x3fe07f=>_0x3fe07f[_0x22fea2(0x156)](_0x22fea2(0x18b),{'statusCode':0x190,'body':{'error':_0x22fea2(0x163)}}))[_0x22fea2(0x16e)]();index_1[_0x22fea2(0x176)]['register'](_0x515a16);const _0x208205=await index_1['flosync'][_0x22fea2(0x175)]('validator-else',{'body':{}});expect(_0x208205[_0x22fea2(0x197)])[_0x22fea2(0x168)](0x190),expect(_0x208205['body'][_0x22fea2(0x17c)])['toBe'](_0x22fea2(0x163));}),it(_0x17323a(0x1a5),async()=>{const _0x14d43e=_0x17323a,_0x40bd7c=index_1[_0x14d43e(0x176)][_0x14d43e(0x18d)](_0x14d43e(0x148))['http'](_0x14d43e(0x18f),_0x14d43e(0x19e))[_0x14d43e(0x16f)](_0x14d43e(0x195),_0x12088d=>_0x12088d[_0x14d43e(0x156)]('json',{'body':{'received':_0x14d43e(0x167)}}))[_0x14d43e(0x16e)]();index_1[_0x14d43e(0x176)][_0x14d43e(0x15f)](_0x40bd7c);const _0x524e41=await index_1['flosync'][_0x14d43e(0x175)](_0x14d43e(0x148),{'amount':0x2a});expect(_0x524e41[_0x14d43e(0x197)])[_0x14d43e(0x168)](0xc8),expect(Number(_0x524e41[_0x14d43e(0x182)][_0x14d43e(0x1a0)]))[_0x14d43e(0x168)](0x2a);}),it(_0x17323a(0x15a),async()=>{const _0x3c2393=_0x17323a,_0x26e126=index_1[_0x3c2393(0x176)][_0x3c2393(0x18d)](_0x3c2393(0x177))[_0x3c2393(0x14a)](_0x3c2393(0x18f),_0x3c2393(0x183))[_0x3c2393(0x16f)](_0x3c2393(0x195),_0x4cde38=>_0x4cde38[_0x3c2393(0x156)](_0x3c2393(0x18b),{'body':{'bodyAmount':_0x3c2393(0x167),'headerX':_0x3c2393(0x18c),'pathId':_0x3c2393(0x185),'queryPage':_0x3c2393(0x186),'varOverride':_0x3c2393(0x17e)}}))[_0x3c2393(0x16e)]();index_1['flosync'][_0x3c2393(0x15f)](_0x26e126);const _0x489730=await index_1['flosync'][_0x3c2393(0x175)](_0x3c2393(0x177),{'body':{'amount':0xa},'headers':{'x-request-id':_0x3c2393(0x151)},'pathParams':{'id':_0x3c2393(0x157)},'query':{'page':0x2},'vars':{'override':_0x3c2393(0x159)}});expect(_0x489730['statusCode'])['toBe'](0xc8),expect(Number(_0x489730[_0x3c2393(0x182)][_0x3c2393(0x17b)]))[_0x3c2393(0x168)](0xa),expect(_0x489730[_0x3c2393(0x182)][_0x3c2393(0x188)])[_0x3c2393(0x168)](_0x3c2393(0x151)),expect(_0x489730['body'][_0x3c2393(0x189)])[_0x3c2393(0x168)](_0x3c2393(0x157)),expect(Number(_0x489730[_0x3c2393(0x182)][_0x3c2393(0x199)]))['toBe'](0x2),expect(_0x489730['body'][_0x3c2393(0x1a9)])[_0x3c2393(0x168)](_0x3c2393(0x159));}),it(_0x17323a(0x16b),async()=>{const _0x221b9a=_0x17323a,_0x419535=index_1[_0x221b9a(0x176)][_0x221b9a(0x18d)](_0x221b9a(0x190))[_0x221b9a(0x14a)](_0x221b9a(0x18f),_0x221b9a(0x14e))[_0x221b9a(0x16f)]('respond',_0x5e0fac=>_0x5e0fac[_0x221b9a(0x156)](_0x221b9a(0x18b),{'body':{'viaBody':_0x221b9a(0x1a6),'viaTrigger':_0x221b9a(0x160)}}))[_0x221b9a(0x16e)]();index_1[_0x221b9a(0x176)]['register'](_0x419535);const _0xf72ad1=await index_1[_0x221b9a(0x176)][_0x221b9a(0x175)]('body-trigger-access',{'body':{'account':_0x221b9a(0x149),'email':_0x221b9a(0x1a1)}});expect(_0xf72ad1[_0x221b9a(0x197)])[_0x221b9a(0x168)](0xc8),expect(_0xf72ad1[_0x221b9a(0x182)][_0x221b9a(0x173)])[_0x221b9a(0x168)](_0x221b9a(0x149)),expect(_0xf72ad1[_0x221b9a(0x182)][_0x221b9a(0x169)])[_0x221b9a(0x168)](_0x221b9a(0x1a1));}),it(_0x17323a(0x192),async()=>{const _0x41b7bd=_0x17323a,_0x149292=index_1[_0x41b7bd(0x176)][_0x41b7bd(0x18d)](_0x41b7bd(0x16d))['step'](_0x41b7bd(0x195),_0x16f82d=>_0x16f82d[_0x41b7bd(0x156)](_0x41b7bd(0x18b),{'body':{'received':_0x41b7bd(0x166)}}))[_0x41b7bd(0x16e)]();index_1[_0x41b7bd(0x176)][_0x41b7bd(0x15f)](_0x149292);const _0x183a18=await index_1['flosync']['run'](_0x41b7bd(0x16d),{'body':{'amount':0x63}});expect(_0x183a18[_0x41b7bd(0x197)])['toBe'](0xc8),expect(Number(_0x183a18[_0x41b7bd(0x182)][_0x41b7bd(0x1a0)]))['toBe'](0x63);}),it(_0x17323a(0x164),async()=>{const _0x4ec41c=_0x17323a,_0x3feebf=index_1[_0x4ec41c(0x176)][_0x4ec41c(0x18d)]('job-flow')['job'](_0x4ec41c(0x181),_0x4ec41c(0x19b))[_0x4ec41c(0x16f)]('respond',_0x3e6af3=>_0x3e6af3['responder'](_0x4ec41c(0x18b),{'body':{'ok':!![]}}))[_0x4ec41c(0x16e)]();expect(_0x3feebf['trigger'][_0x4ec41c(0x14b)])[_0x4ec41c(0x168)](_0x4ec41c(0x150)),expect(_0x3feebf['trigger'][_0x4ec41c(0x19a)])[_0x4ec41c(0x168)]('0\x20*\x20*\x20*\x20*'),expect(_0x3feebf['trigger'][_0x4ec41c(0x1a3)])[_0x4ec41c(0x168)](_0x4ec41c(0x19b)),index_1[_0x4ec41c(0x176)]['register'](_0x3feebf);const _0x592a92=await index_1[_0x4ec41c(0x176)][_0x4ec41c(0x175)](_0x4ec41c(0x1a7),{});expect(_0x592a92[_0x4ec41c(0x197)])['toBe'](0xc8),expect(_0x592a92[_0x4ec41c(0x182)]['ok'])['toBe'](!![]);});});function _0x1b4d(){const _0x1ff0fd=['otKYmZiWC1bZzgj6','y2HLy2S','l3bSywLU','CNvUCYbHihnPBxbSzsb3B3jRzMXVDYb3AxrOihzHBgLKyxrVCIbHBMqGCMvZCg9UzgvY','CMvJzwL2zwq','DxnLCKbLEgfTCgXLlMnVBq','mZvQD3LzAeS','DgLTzxPVBMu','mtHxEwn1DKq','ywnJzxb0CYbWBgfPBIbVyMPLy3qGyxmGDhjPz2DLCIbIB2r5icHUBYbIB2r5igTLEsK','E3SGyM9KEs5Hy2nVDw50ih19','AM9IlwzSB3C','zwXZzq','DMfYt3zLCNjPzgu','DgvZDc1MBg93','CgXHAw4TyM9KEq','ywnJDc0X','Ahr0Ca','DhLWzq','l3rYyw5ZzM9YBq','y29UzMLNDxjL','l3rLC3q','mZbTBNbgB0C','AM9I','CMvXlteYmW','nNbAyxfltG','nZjnvuj1v3m','sevmte8','DMfSAwrHDg9Y','CMvZCg9UzgvY','DxnLCI00nty','Dg9czurLzMLUzwq','zNjVBs1WyxLSB2fK','CgfZC2vZigHLywrLCNmSihbHDgHqyxjHBxmSihbHCMfTCYWGCxvLCNKSihzHCNmGDg8GDgvTCgXHDguGy29UDgv4Da','zMfPBa','CNvUCYb3B3jRzMXVDYb3AxrOignVBMrPDgLVBIb0AgvUl2vSC2u','Dg9fCxvHBa','AgvSBg8','CMvNAxn0zxi','E3SGDhjPz2DLCI5LBwfPBcb9Fq','y29Uzc1MBg93','x19LC01VzhvSzq','vMfSAwrHDgLVBIbMywLSzwq','yNvPBgrZihDVCMTMBg93ihDPDgGGAM9IihrYAwDNzxi','E3SGDhjPz2DLCI5IB2r5lNzHBhvLicOGmIb9Fq','E3SGyM9KEs5HBw91BNqGFx0','E3SGDhjPz2DLCI5IB2r5lMfTB3vUDcb9Fq','Dg9czq','DMLHvhjPz2DLCG','zgvMAw5LuhjVCgvYDhK','C3vWCg9YDhmGE3SGyM9KEs54ih19igfUzcb7EYb0CMLNz2vYlNGGFx0GzM9YigjVzhKGzMLLBgrZ','C2f2zq','BwfUDwfSlwzSB3C','yNvPBgq','C3rLCa','ntu2mde0EKf0vePH','mti0otDxCxrlCvO','E3SGC3rLCfjLC3vSDhmUDMfSAwrHDguGFx0','DMLHqM9KEq','DxbWzxi','CNvU','zMXVC3LUyW','zNvSBc1WyxLSB2fK','mtC5mJy4mu9xvhvutG','DMfSAwrHDg9YigzHAwXZigfUzcb0CMLNz2vYCYbLBhnLigjYyw5JAa','E3SGC3rLCfjLC3vSDhmUDhjHBNnMB3jTih19','yM9KEufTB3vUDa','zxjYB3i','otqZndeYqxjHwMzN','E3SGDMfYCY5VDMvYCMLKzsb9Fq','DgHLBG','DhjHBNnMB3jTlwzSB3C','mcaQicOGkIaQ','yM9KEq','l3vZzxjZlZPPza','mtm2nJi0DMjgz0nV','E3SGCgf0AfbHCMfTCY5Pzcb9Fq','E3SGCxvLCNKUCgfNzsb9Fq','y29UzgL0Aw9U','AgvHzgvYwa','Cgf0AeLK','E3SGDxbWzxjJyxnLkhrYAwDNzxiUyM9KEs5Uyw1Lksb9Fq','ANnVBG','E3SGAgvHzgvYC1SNEc1Yzxf1zxn0lwLKj10GFx0','D29YA2zSB3C','uhjVy2vZC29Yrw5NAw5L','ue9tva','yM9KEs10CMLNz2vYlwfJy2vZCW','E3SGDhjPz2DLCI5IB2r5lMn1CNjLBMn5ih19','CNvUCYb3B3jRzMXVDYb3AxrOB3v0igH0DhaGDhjPz2DLCIaOBwfUDwfSkq','zg91yMXLza','lI4VAw5KzxG','CMvZCg9Uza','mteYodKZnZjPuwDluhO','C3rHDhvZq29Kzq','DhjHBNnMB3jT','CxvLCNLqywDL','y3jVBG','vvrd'];_0x1b4d=function(){return _0x1ff0fd;};return _0x1b4d();}
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const index_1 = require("../index");
4
+ describe("ProcessorEngine", () => {
5
+ beforeEach(() => {
6
+ index_1.flosync.configure({ connectors: {} });
7
+ });
8
+ it("runs a simple workflow with validator and responder", async () => {
9
+ const w = index_1.flosync
10
+ .workflow("test-flow")
11
+ .http("POST", "/test")
12
+ .step("validate", (s) => s.validator({ amount: "{{ trigger.body.amount }}", currency: "{{ trigger.body.currency }}" }))
13
+ .step("respond", (s) => s.responder("json", { statusCode: 200, body: "{{ stepResults.validate }}" }))
14
+ .build();
15
+ index_1.flosync.register(w);
16
+ const result = await index_1.flosync.run("test-flow", {
17
+ body: { amount: 100, currency: "USD" },
18
+ });
19
+ expect(result.statusCode).toBe(200);
20
+ expect(result.body).toBeDefined();
21
+ expect(result.body.valid).toBe(true);
22
+ });
23
+ it("runs workflow with condition then/else", async () => {
24
+ const w = index_1.flosync
25
+ .workflow("cond-flow")
26
+ .http("POST", "/cond")
27
+ .step("check", (s) => s.condition("{{ trigger.body.amount > 0 }}").then("ok").else("fail"))
28
+ .step("ok", (s) => s.responder("json", { statusCode: 200, body: { status: "ok" } }))
29
+ .step("fail", (s) => s.responder("json", { statusCode: 400, body: { status: "fail" } }))
30
+ .build();
31
+ index_1.flosync.register(w);
32
+ const okResult = await index_1.flosync.run("cond-flow", { body: { amount: 10 } });
33
+ expect(okResult.statusCode).toBe(200);
34
+ expect(okResult.body).toEqual({ status: "ok" });
35
+ const failResult = await index_1.flosync.run("cond-flow", { body: { amount: 0 } });
36
+ expect(failResult.statusCode).toBe(400);
37
+ expect(failResult.body).toEqual({ status: "fail" });
38
+ });
39
+ it("runs workflow with transform step", async () => {
40
+ const w = index_1.flosync
41
+ .workflow("transform-flow")
42
+ .http("POST", "/transform")
43
+ .step("transform", (s) => s.transform({
44
+ doubled: "{{ trigger.body.value * 2 }}",
45
+ upper: "{{ uppercase(trigger.body.name) }}",
46
+ }))
47
+ .step("respond", (s) => s.responder("json", { body: "{{ stepResults.transform }}" }))
48
+ .build();
49
+ index_1.flosync.register(w);
50
+ const result = await index_1.flosync.run("transform-flow", {
51
+ body: { value: 5, name: "hello" },
52
+ });
53
+ expect(result.statusCode).toBe(200);
54
+ expect(result.body).toBeDefined();
55
+ expect(result.body.doubled).toBe(10);
56
+ expect(result.body.upper).toBe("HELLO");
57
+ });
58
+ it("validator fails and triggers else branch", async () => {
59
+ const w = index_1.flosync
60
+ .workflow("validator-else")
61
+ .http("POST", "/v")
62
+ .step("validate", (s) => s.validator({ amount: "{{ trigger.body.amount }}" })
63
+ .then("save")
64
+ .else("error"))
65
+ .step("save", (s) => s.responder("json", { statusCode: 200, body: { saved: true } }))
66
+ .step("error", (s) => s.responder("json", { statusCode: 400, body: { error: "Validation failed" } }))
67
+ .build();
68
+ index_1.flosync.register(w);
69
+ const result = await index_1.flosync.run("validator-else", { body: {} });
70
+ expect(result.statusCode).toBe(400);
71
+ expect(result.body.error).toBe("Validation failed");
72
+ });
73
+ it("accepts plain object as trigger body (no body key)", async () => {
74
+ const w = index_1.flosync
75
+ .workflow("plain-body")
76
+ .http("POST", "/plain")
77
+ .step("respond", (s) => s.responder("json", { body: { received: "{{ trigger.body.amount }}" } }))
78
+ .build();
79
+ index_1.flosync.register(w);
80
+ const result = await index_1.flosync.run("plain-body", { amount: 42 });
81
+ expect(result.statusCode).toBe(200);
82
+ expect(Number(result.body.received)).toBe(42);
83
+ });
84
+ it("passes headers, pathParams, params, query, vars to template context", async () => {
85
+ const w = index_1.flosync
86
+ .workflow("full-payload")
87
+ .http("POST", "/users/:id")
88
+ .step("respond", (s) => s.responder("json", {
89
+ body: {
90
+ bodyAmount: "{{ trigger.body.amount }}",
91
+ headerX: "{{ headers['x-request-id'] }}",
92
+ pathId: "{{ pathParams.id }}",
93
+ queryPage: "{{ query.page }}",
94
+ varOverride: "{{ vars.override }}",
95
+ },
96
+ }))
97
+ .build();
98
+ index_1.flosync.register(w);
99
+ const result = await index_1.flosync.run("full-payload", {
100
+ body: { amount: 10 },
101
+ headers: { "x-request-id": "req-123" },
102
+ pathParams: { id: "user-456" },
103
+ query: { page: 2 },
104
+ vars: { override: "from-payload" },
105
+ });
106
+ expect(result.statusCode).toBe(200);
107
+ expect(Number(result.body.bodyAmount)).toBe(10);
108
+ expect(result.body.headerX).toBe("req-123");
109
+ expect(result.body.pathId).toBe("user-456");
110
+ expect(Number(result.body.queryPage)).toBe(2);
111
+ expect(result.body.varOverride).toBe("from-payload");
112
+ });
113
+ it("supports {{ body.x }} and {{ trigger.x }} for body fields", async () => {
114
+ const w = index_1.flosync
115
+ .workflow("body-trigger-access")
116
+ .http("POST", "/test")
117
+ .step("respond", (s) => s.responder("json", {
118
+ body: {
119
+ viaBody: "{{ body.account }}",
120
+ viaTrigger: "{{ trigger.email }}",
121
+ },
122
+ }))
123
+ .build();
124
+ index_1.flosync.register(w);
125
+ const result = await index_1.flosync.run("body-trigger-access", {
126
+ body: { account: "acct-1", email: "user@example.com" },
127
+ });
128
+ expect(result.statusCode).toBe(200);
129
+ expect(result.body.viaBody).toBe("acct-1");
130
+ expect(result.body.viaTrigger).toBe("user@example.com");
131
+ });
132
+ it("runs workflow without http trigger (manual)", async () => {
133
+ const w = index_1.flosync
134
+ .workflow("manual-flow")
135
+ .step("respond", (s) => s.responder("json", { body: { received: "{{ body.amount }}" } }))
136
+ .build();
137
+ index_1.flosync.register(w);
138
+ const result = await index_1.flosync.run("manual-flow", { body: { amount: 99 } });
139
+ expect(result.statusCode).toBe(200);
140
+ expect(Number(result.body.received)).toBe(99);
141
+ });
142
+ it("builds workflow with job trigger", async () => {
143
+ const w = index_1.flosync
144
+ .workflow("job-flow")
145
+ .job("0 * * * *", "UTC")
146
+ .step("respond", (s) => s.responder("json", { body: { ok: true } }))
147
+ .build();
148
+ expect(w.trigger.type).toBe("job");
149
+ expect(w.trigger.cron).toBe("0 * * * *");
150
+ expect(w.trigger.timezone).toBe("UTC");
151
+ index_1.flosync.register(w);
152
+ const result = await index_1.flosync.run("job-flow", {});
153
+ expect(result.statusCode).toBe(200);
154
+ expect(result.body.ok).toBe(true);
155
+ });
156
+ });