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.
- package/LICENSE +201 -0
- package/README.md +81 -0
- package/dist/AuthAppClient.d.ts +1 -0
- package/dist/AuthAppClient.d.ts.map +1 -1
- package/dist/AuthAppClient.js +199 -1
- package/dist/CommercialAppClient.d.ts +178 -0
- package/dist/CommercialAppClient.d.ts.map +1 -0
- package/dist/CommercialAppClient.js +576 -0
- package/dist/ConnectorBuilder.js +104 -1
- package/dist/Events.d.ts +2 -0
- package/dist/Events.d.ts.map +1 -1
- package/dist/Events.js +325 -1
- package/dist/Flosync.js +296 -1
- package/dist/FlosyncClient.js +429 -1
- package/dist/FunctionBuilder.js +65 -1
- package/dist/IdentityAppClient.d.ts +23 -0
- package/dist/IdentityAppClient.d.ts.map +1 -0
- package/dist/IdentityAppClient.js +197 -0
- package/dist/MemoryAppClient.d.ts +28 -0
- package/dist/MemoryAppClient.d.ts.map +1 -0
- package/dist/MemoryAppClient.js +149 -0
- package/dist/MemoryClient.d.ts +8 -0
- package/dist/MemoryClient.d.ts.map +1 -0
- package/dist/MemoryClient.js +20 -0
- package/dist/OAuthAppClient.d.ts +1 -0
- package/dist/OAuthAppClient.d.ts.map +1 -1
- package/dist/OAuthAppClient.js +269 -1
- package/dist/ProviderServicesClient.d.ts +24 -0
- package/dist/ProviderServicesClient.d.ts.map +1 -0
- package/dist/ProviderServicesClient.js +158 -0
- package/dist/Surface.d.ts +2 -0
- package/dist/Surface.d.ts.map +1 -1
- package/dist/Surface.js +255 -1
- package/dist/ValidatorBuilder.js +24 -1
- package/dist/Webhooks.d.ts +20 -0
- package/dist/Webhooks.d.ts.map +1 -0
- package/dist/Webhooks.js +61 -0
- package/dist/WorkflowBuilder.js +279 -1
- package/dist/__tests__/CommercialAppClient.test.d.ts +2 -0
- package/dist/__tests__/CommercialAppClient.test.d.ts.map +1 -0
- package/dist/__tests__/CommercialAppClient.test.js +217 -0
- package/dist/__tests__/Events.test.js +191 -1
- package/dist/__tests__/IdentityAppClient.test.d.ts +2 -0
- package/dist/__tests__/IdentityAppClient.test.d.ts.map +1 -0
- package/dist/__tests__/IdentityAppClient.test.js +232 -0
- package/dist/__tests__/OAuthAppClient.test.js +300 -1
- package/dist/__tests__/ProviderServicesClient.test.d.ts +2 -0
- package/dist/__tests__/ProviderServicesClient.test.d.ts.map +1 -0
- package/dist/__tests__/ProviderServicesClient.test.js +131 -0
- package/dist/__tests__/Surface.test.js +150 -1
- package/dist/__tests__/errors.test.js +54 -1
- package/dist/__tests__/function.test.js +58 -1
- package/dist/__tests__/helpers.d.ts +5 -0
- package/dist/__tests__/helpers.d.ts.map +1 -0
- package/dist/__tests__/helpers.js +10 -0
- package/dist/__tests__/localhost-lookup.test.d.ts +2 -0
- package/dist/__tests__/localhost-lookup.test.d.ts.map +1 -0
- package/dist/__tests__/localhost-lookup.test.js +26 -0
- package/dist/__tests__/parse-api-error.test.js +26 -1
- package/dist/__tests__/runner.test.js +156 -1
- package/dist/connectors/builtin.js +354 -1
- package/dist/connectors/registry.js +300 -1
- package/dist/decorators/build.js +105 -1
- package/dist/decorators/connector.js +56 -1
- package/dist/decorators/index.js +34 -1
- package/dist/decorators/metadata.js +338 -1
- package/dist/decorators/steps.js +220 -1
- package/dist/decorators/workflow.js +52 -1
- package/dist/errors.js +76 -1
- package/dist/http/__tests__/cliodot-request.environment.test.d.ts +2 -0
- package/dist/http/__tests__/cliodot-request.environment.test.d.ts.map +1 -0
- package/dist/http/__tests__/cliodot-request.environment.test.js +37 -0
- package/dist/http/__tests__/cliodot-result.test.d.ts +2 -0
- package/dist/http/__tests__/cliodot-result.test.d.ts.map +1 -0
- package/dist/http/__tests__/cliodot-result.test.js +57 -0
- package/dist/http/__tests__/events-instance-id.test.d.ts +2 -0
- package/dist/http/__tests__/events-instance-id.test.d.ts.map +1 -0
- package/dist/http/__tests__/events-instance-id.test.js +45 -0
- package/dist/http/cliodot-request.d.ts +35 -0
- package/dist/http/cliodot-request.d.ts.map +1 -0
- package/dist/http/cliodot-request.js +105 -0
- package/dist/http/cliodot-result.d.ts +40 -0
- package/dist/http/cliodot-result.d.ts.map +1 -0
- package/dist/http/cliodot-result.js +139 -0
- package/dist/http/create-client.d.ts +3 -0
- package/dist/http/create-client.d.ts.map +1 -0
- package/dist/http/create-client.js +14 -0
- package/dist/http/events-instance-id.d.ts +11 -0
- package/dist/http/events-instance-id.d.ts.map +1 -0
- package/dist/http/events-instance-id.js +86 -0
- package/dist/http/localhost-lookup.d.ts +12 -0
- package/dist/http/localhost-lookup.d.ts.map +1 -0
- package/dist/http/localhost-lookup.js +67 -0
- package/dist/http/parse-api-error.js +56 -1
- package/dist/http/sanitize-execution-headers.js +79 -1
- package/dist/identity-offline-verify.d.ts +6 -0
- package/dist/identity-offline-verify.d.ts.map +1 -0
- package/dist/identity-offline-verify.js +174 -0
- package/dist/identity-token-cache.d.ts +6 -0
- package/dist/identity-token-cache.d.ts.map +1 -0
- package/dist/identity-token-cache.js +51 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +108 -1
- package/dist/runner/ProcessorEngine.js +1311 -1
- package/dist/runner/connector.executor.js +1786 -1
- package/dist/runner/utilities/math.executor.js +153 -1
- package/dist/runner/utilities/random.executor.js +151 -1
- package/dist/runner/utilities/string.executor.js +825 -1
- package/dist/template.js +127 -1
- package/dist/transformers/StepsToNodesTransformer.js +214 -1
- package/dist/transformers/WorkflowTransformer.js +189 -1
- package/dist/types/auth-app.api.d.ts +2 -0
- package/dist/types/auth-app.api.d.ts.map +1 -1
- package/dist/types/auth-app.api.js +2 -1
- package/dist/types/builtin.js +2 -1
- package/dist/types/client.api.js +2 -1
- package/dist/types/commercial-app.api.d.ts +963 -0
- package/dist/types/commercial-app.api.d.ts.map +1 -0
- package/dist/types/commercial-app.api.js +2 -0
- package/dist/types/connector.js +2 -1
- package/dist/types/context.js +2 -1
- package/dist/types/event-app.api.d.ts +8 -0
- package/dist/types/event-app.api.d.ts.map +1 -1
- package/dist/types/event-app.api.js +2 -1
- package/dist/types/function.js +2 -1
- package/dist/types/identity-app.api.d.ts +99 -0
- package/dist/types/identity-app.api.d.ts.map +1 -0
- package/dist/types/identity-app.api.js +2 -0
- package/dist/types/index.js +23 -1
- package/dist/types/memory-app.api.d.ts +140 -0
- package/dist/types/memory-app.api.d.ts.map +1 -0
- package/dist/types/memory-app.api.js +2 -0
- package/dist/types/oauth-app.api.d.ts +2 -0
- package/dist/types/oauth-app.api.d.ts.map +1 -1
- package/dist/types/oauth-app.api.js +105 -1
- package/dist/types/provider-services.api.d.ts +98 -0
- package/dist/types/provider-services.api.d.ts.map +1 -0
- package/dist/types/provider-services.api.js +2 -0
- package/dist/types/validator.js +2 -1
- package/dist/types/webhook-app.api.d.ts +2 -0
- package/dist/types/webhook-app.api.d.ts.map +1 -0
- package/dist/types/webhook-app.api.js +2 -0
- package/dist/types/workflow.js +33 -1
- package/dist/validators/validators.js +478 -1
- package/dist/variable.js +37 -1
- package/package.json +3 -2
package/dist/Flosync.js
CHANGED
|
@@ -1 +1,296 @@
|
|
|
1
|
-
'use strict';function _0x2a83(_0x239208,_0x173872){_0x239208=_0x239208-0x68;const _0x395672=_0x3956();let _0x2a8345=_0x395672[_0x239208];if(_0x2a83['cTOSJO']===undefined){var _0x989547=function(_0x1d7284){const _0x1d0edd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb288e='',_0x338ea0='';for(let _0x1ca699=0x0,_0x164ca7,_0x9cadc6,_0x4d36ef=0x0;_0x9cadc6=_0x1d7284['charAt'](_0x4d36ef++);~_0x9cadc6&&(_0x164ca7=_0x1ca699%0x4?_0x164ca7*0x40+_0x9cadc6:_0x9cadc6,_0x1ca699++%0x4)?_0xb288e+=String['fromCharCode'](0xff&_0x164ca7>>(-0x2*_0x1ca699&0x6)):0x0){_0x9cadc6=_0x1d0edd['indexOf'](_0x9cadc6);}for(let _0x4e0f1a=0x0,_0x5d6ac7=_0xb288e['length'];_0x4e0f1a<_0x5d6ac7;_0x4e0f1a++){_0x338ea0+='%'+('00'+_0xb288e['charCodeAt'](_0x4e0f1a)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x338ea0);};_0x2a83['GQxoeH']=_0x989547,_0x2a83['QnCuEZ']={},_0x2a83['cTOSJO']=!![];}const _0x45e957=_0x395672[0x0],_0x4622f9=_0x239208+_0x45e957,_0x3830cd=_0x2a83['QnCuEZ'][_0x4622f9];return!_0x3830cd?(_0x2a8345=_0x2a83['GQxoeH'](_0x2a8345),_0x2a83['QnCuEZ'][_0x4622f9]=_0x2a8345):_0x2a8345=_0x3830cd,_0x2a8345;}const _0x14e1f5=_0x2a83;(function(_0x1a0ad6,_0x4fdfca){const _0x1833e0=_0x2a83,_0x5cda3b=_0x1a0ad6();while(!![]){try{const _0x287b5a=parseInt(_0x1833e0(0xb5))/0x1*(-parseInt(_0x1833e0(0x78))/0x2)+-parseInt(_0x1833e0(0xc3))/0x3+-parseInt(_0x1833e0(0x9d))/0x4+-parseInt(_0x1833e0(0x87))/0x5*(parseInt(_0x1833e0(0xb3))/0x6)+-parseInt(_0x1833e0(0xc5))/0x7*(parseInt(_0x1833e0(0xbd))/0x8)+parseInt(_0x1833e0(0xaf))/0x9+parseInt(_0x1833e0(0x79))/0xa*(parseInt(_0x1833e0(0x70))/0xb);if(_0x287b5a===_0x4fdfca)break;else _0x5cda3b['push'](_0x5cda3b['shift']());}catch(_0x40d973){_0x5cda3b['push'](_0x5cda3b['shift']());}}}(_0x3956,0x1a93e));Object[_0x14e1f5(0xa1)](exports,_0x14e1f5(0x74),{'value':!![]}),exports[_0x14e1f5(0x6f)]=exports[_0x14e1f5(0xba)]=void 0x0;const WorkflowBuilder_1=require(_0x14e1f5(0xbf)),FunctionBuilder_1=require(_0x14e1f5(0x8c)),ProcessorEngine_1=require(_0x14e1f5(0xb8)),builtin_1=require('./connectors/builtin'),FlosyncClient_1=require(_0x14e1f5(0x97)),build_1=require(_0x14e1f5(0x9c)),registry_1=require(_0x14e1f5(0xbc)),sanitize_execution_headers_1=require(_0x14e1f5(0x7e));function _0x3956(){const _0x549dc2=['CxvLCNK','zNjVBuvUDhjPzxm','zxjYB3i','D29YA2zSB3DZqNLoyw1L','zMXVC3LUyW','nZa4oteWnePTqLbmtG','Cgf0AfbHCMfTCW','CNvUrNvUy3rPB25cEuLK','ChvZAa','x19LC01VzhvSzq','Cgf0Af9WyxjHBxm','CNvUv29YA2zSB3C','q29UBMvJDg9Yia','mZHVsvnQtLy','mtbetvfoDLu','rNvUy3rPB24GBM90igzVDw5KoIa','rNvUy3rPB25cDwLSzgvY','C2X1zW','y29UBMvJDgLVBL9Pza','lI9ODhrWl3nHBML0AxPLlwv4zwn1DgLVBI1OzwfKzxjZ','D29YA2zSB3C','DhjPz2DLCKLK','B2jQzwn0','AxnuExbLzenVBM5Ly3rVCKrLzG','yxbPu2vJCMv0','rMXVC3LUy0nSAwvUDa','CNvU','z2v0','mtqYntvXqMfXr0m','zw52','yxv0AgvUDgLJyxrL','Aw52B2TL','CMf3','lI9gDw5JDgLVBKj1AwXKzxi','ChvSBa','zNvUy3rPB25Z','BM9YBwfSAxPLuNvUugf5Bg9Hza','y29UzMLNDxjL','y2fSBf9ZDgfJAW','rMXVC3LUy0nSAwvUDcbUB3qGy29UzMLNDxjLzc4Gu2v0igfWAuTLEsbHBMqGyxbPu2vJCMv0igzVCIbYzw1VDguGAw52B2TLlG','y29UzMLN','v29YA2zSB3CGBM90igzVDw5KoIa','AgvHzgvYCW','lI9YDw5UzxiVy29UBMvJDg9YlMv4zwn1Dg9Y','lI9gBg9ZEw5Jq2XPzw50','uhjVy2vZC29Yrw5NAw5L','z2v0q2XPzw50','zgf0yq','C2fUAxrPEMvfEgvJDxrPB25izwfKzxjZ','lI9KzwnVCMf0B3jZl2j1AwXK','mJCXntuYrvrcDvLO','D29YA2zSB3DZ','ig5VDcbMB3vUzcbSB2nHBgX5lIbdB25MAwD1CMuGyxbPs2v5igfUzcbHCgLtzwnYzxqGDg8GCNvUignVBM5Ly3rVCNmGzNjVBsb5B3vYienSAw9KB3qGywnJB3vUDc4','A2v5CW','zgvMAw5LuhjVCgvYDhK','yM9KEq','DMfSDwvZ','Dg9Rzw5szwzYzxnOtwfYz2LUtxm','zgvIDwC','yMfZzvvYBa','tg9JywXsDw5UzxiGBM90igLUAxrPywXPEMvKlIbdywXSigzSB3n5BMmUy29UzMLNDxjLkcKGzMLYC3qU','zgf0ywjHC2u','CMvTB3rL','ChvSBez1BMn0Aw9U','CMvNAxn0zxjgDw5JDgLVBG','y3jLyxrLq2XPB2rVDenVBM5Ly3rVCG','AxnbCNjHEq','zxHLy3v0Aw9UsgvHzgvYCW','mtm5mdmYmgjcDw9HEa','ywn0Aw9UCW','zw52vMfYCW','yxbPs2v5','mZaWuw9JrLj4','BwfWCgvK','ndK5muHLtfbQqq','rMXVC3LUy0nSAwvUDcbUB3qGy29UzMLNDxjLzc4Gu2v0igfWAuTLEsbHBMqGyxbPu2vJCMv0igLUignVBMzPz3vYzsGPlG','Dg9Rzw5gywXSyMfJA1jLDxnLtxm','lI9YDw5UzxiVuhjVy2vZC29Yrw5NAw5L','C3rYAw5N','rMXVC3LUyW','x2LK','lI9JB25Uzwn0B3jZl3jLz2LZDhj5','mtq4mZaZmMLLBhnWwG','zxHLy3v0zq','lI9xB3jRzMXVD0j1AwXKzxi','Aw5JBhvKzxm','CMvNAxn0zxjdB25Uzwn0B3i','x19YyxDjza','ntK4mZa4uu9muNDM','C2v0','n1DvALzIvG','zMLSDgvY','y2XPzw50','y2fSBfn0ywnR','zNjVBq','CNvUqNLjza','y29UBMvJDg9YCW','y2XPB2rVDa','CNvUBMvY','BMfTzq','rNvUy3rPB24GBxvZDcbOyxzLif9PzcWGC2X1zYWGB3iGBMfTzq','CNvUq29UBMvJDg9Y','vw5RBM93BIbJB25Uzwn0B3iGywn0Aw9UigTLEtOG','rNvUy3rPB24GzxHLy3v0Aw9UigzHAwXLza','DgLTzw91Da','zNvUy3rPB24','CMvNAxn0zxi','DMfYCW','CNvUrNvUy3rPB24','BgvUz3rO','rMXVC3LUy0nSAwvUDcbUB3qGy29UzMLNDxjLzc4Gu2v0igfWAuTLEsbHBMqGyxbPu2vJCMv0igzVCIbYzw1VDguGCNvUlG','DhjPz2DLCG'];_0x3956=function(){return _0x549dc2;};return _0x3956();}class Flosync{constructor(){const _0x1b03a1=_0x14e1f5;this[_0x1b03a1(0x93)]={},this[_0x1b03a1(0x9e)]=new Map(),this[_0x1b03a1(0x6e)]=new Map(),this[_0x1b03a1(0x8e)]=new Map(),this[_0x1b03a1(0xcb)]=new Map();}[_0x14e1f5(0x90)](_0xb288e){const _0x3fe438=_0x14e1f5;this[_0x3fe438(0x93)]={...this['config'],..._0xb288e};const _0x338ea0=_0xb288e[_0x3fe438(0xcb)]||{},_0x1ca699=_0xb288e[_0x3fe438(0xcc)];_0x1ca699?.[_0x3fe438(0xa6)]&&_0x1ca699?.[_0x3fe438(0xb2)]&&this[_0x3fe438(0xcb)][_0x3fe438(0xc4)](_0x3fe438(0xcc),(0x0,builtin_1[_0x3fe438(0xac)])({'baseUrl':_0x1ca699[_0x3fe438(0xa6)],'apiKey':_0x1ca699[_0x3fe438(0xb2)]}));if(_0xb288e['apiKey']&&_0xb288e[_0x3fe438(0x83)]){const _0x9cadc6=this[_0x3fe438(0xc7)];!_0x9cadc6&&(this[_0x3fe438(0xc7)]=new FlosyncClient_1[(_0x3fe438(0x84))]({'baseUrl':this[_0x3fe438(0x93)][_0x3fe438(0xa6)],'apiKey':this[_0x3fe438(0x93)][_0x3fe438(0xb2)],'apiSecret':this[_0x3fe438(0x93)][_0x3fe438(0x83)],'tokenRefreshMarginMs':this[_0x3fe438(0x93)][_0x3fe438(0xa4)],'tokenFallbackReuseMs':this[_0x3fe438(0x93)][_0x3fe438(0xb7)],'debug':this[_0x3fe438(0x93)]['debug']}));}const _0x164ca7=new ProcessorEngine_1[(_0x3fe438(0x98))]({'workflows':this[_0x3fe438(0x9e)],'functions':this[_0x3fe438(0x8e)],'connectors':this['connectors'],'connectorConfig':_0x338ea0,'client':this[_0x3fe438(0xc7)]});return this[_0x3fe438(0xcd)]=_0x164ca7,this;}async[_0x14e1f5(0x89)](){const _0x289468=_0x14e1f5,_0x4d36ef=this[_0x289468(0x99)]();_0x4d36ef&&await _0x4d36ef[_0x289468(0x89)]();}[_0x14e1f5(0xc1)](_0x4e0f1a,_0x5d6ac7){const _0x21f568=_0x14e1f5;return this[_0x21f568(0xcb)]['set'](_0x4e0f1a,_0x5d6ac7),this;}[_0x14e1f5(0x7f)](_0x5bbb88,_0x1d10ed){return new WorkflowBuilder_1['WorkflowBuilder'](_0x5bbb88,_0x1d10ed);}[_0x14e1f5(0xd4)](_0xd89486,_0x4b252e){const _0x30d882=_0x14e1f5;return new FunctionBuilder_1[(_0x30d882(0x7b))](_0xd89486,_0x4b252e);}[_0x14e1f5(0xd5)](_0x2fac8b){const _0x5c3790=_0x14e1f5,_0x1d2ca2=Array[_0x5c3790(0xad)](_0x2fac8b)?_0x2fac8b:[_0x2fac8b];for(const _0x1d03a9 of _0x1d2ca2){this[_0x5c3790(0x9e)][_0x5c3790(0xc4)](_0x1d03a9[_0x5c3790(0xbb)],_0x1d03a9),this[_0x5c3790(0x6e)][_0x5c3790(0xc4)](_0x1d03a9[_0x5c3790(0xce)],_0x1d03a9);const _0x2667a6=_0x1d03a9[_0x5c3790(0xc2)];if(_0x2667a6&&_0x2667a6!==_0x1d03a9[_0x5c3790(0xbb)])this['workflows']['set'](_0x2667a6,_0x1d03a9);}return this;}['registerFromClass'](_0x17d832){const _0x59383c=_0x14e1f5,_0x2ae0ad=(0x0,build_1['buildWorkflowFromClass'])(_0x17d832);return this[_0x59383c(0xd5)](_0x2ae0ad);}async[_0x14e1f5(0x85)](_0x292363,_0x5c1452={},_0x43a90b){const _0x2ab463=_0x14e1f5,_0x43d13e=this[_0x2ab463(0x9e)][_0x2ab463(0x86)](_0x292363)??this['workflowsByName'][_0x2ab463(0x86)](_0x292363);if(_0x43d13e){const _0x2ef0b0=this['runner'];if(!_0x2ef0b0)throw new Error('LocalRunner\x20not\x20initialized.\x20Call\x20flosync.configure()\x20first.');const _0x2b81f6=this[_0x2ab463(0x8f)](_0x5c1452);_0x43a90b?.['executionHeaders']&&(_0x2b81f6['headers']={..._0x2b81f6['headers'],...(0x0,sanitize_execution_headers_1[_0x2ab463(0x9b)])(_0x43a90b['executionHeaders'])});if(this[_0x2ab463(0x93)][_0x2ab463(0xa5)])_0x2b81f6['debug']=!![];return _0x2ef0b0[_0x2ab463(0x76)](_0x43d13e,_0x2b81f6);}const _0x574d63=this[_0x2ab463(0x99)]();if(_0x574d63&&(_0x43a90b?.[_0x2ab463(0xa9)]??!![]))return this[_0x2ab463(0xca)](_0x292363,_0x5c1452,{'triggerId':_0x43a90b?.['triggerId'],'executionHeaders':_0x43a90b?.[_0x2ab463(0xae)]});throw new Error(_0x2ab463(0x94)+_0x292363);}async[_0x14e1f5(0xca)](_0x2ddf88,_0x312162={},_0x5c3ed5){const _0x214488=_0x14e1f5,_0x137d29=this[_0x214488(0x99)]();if(!_0x137d29)throw new Error(_0x214488(0x69));const _0x4bef99=_0x5c3ed5?.[_0x214488(0x80)]??_0x214488(0x6a),_0xc6bbfc=this['normalizeRunPayload'](_0x312162),_0x4a1d4f=(0x0,sanitize_execution_headers_1[_0x214488(0x9b)])(_0x5c3ed5?.[_0x214488(0xae)]??{});return _0x137d29[_0x214488(0x9e)]['run'](_0x2ddf88,_0x4bef99,{'payload':_0xc6bbfc,...Object[_0x214488(0xa0)](_0x4a1d4f)[_0x214488(0x68)]>0x0&&{'executionHeaders':_0x4a1d4f}});}async['runByWebhook'](_0x4108f2,_0x1ba241,_0x16b0e6={}){const _0x18dde6=_0x14e1f5,_0x4a77b3=this[_0x18dde6(0x99)]();if(!_0x4a77b3)throw new Error('FlosyncClient\x20not\x20configured.\x20Set\x20apiKey\x20and\x20apiSecret\x20for\x20remote\x20run.');return _0x4a77b3[_0x18dde6(0x9e)]['runByWebhook'](_0x4108f2,_0x1ba241,_0x16b0e6);}async[_0x14e1f5(0x72)](_0x3cba9d,_0x90981a={}){const _0x3a1c56=_0x14e1f5,_0x173739=this[_0x3a1c56(0x99)]();if(!_0x173739)throw new Error(_0x3a1c56(0x92));return _0x173739[_0x3a1c56(0x8e)][_0x3a1c56(0x8a)](_0x3cba9d,_0x90981a);}async[_0x14e1f5(0xd0)](_0x58d1cd,_0x10ab6d,_0x1c747b,_0x870302){const _0x20584f=_0x14e1f5;if((0x0,registry_1[_0x20584f(0x82)])(_0x58d1cd)){const _0x424e2f=_0x58d1cd,_0x3fd900=_0x10ab6d,_0x4ed332=_0x424e2f[_0x20584f(0xb0)][_0x3fd900];if(typeof _0x4ed332!==_0x20584f(0xb9))throw new Error(_0x20584f(0xd1)+String(_0x10ab6d));return this['runConnector'](_0x424e2f['id'],_0x4ed332,_0x1c747b,_0x870302);}const _0x1e320c=_0x58d1cd,_0x1d6a2e=_0x10ab6d,_0x1f3c37=this[_0x20584f(0xcb)][_0x20584f(0x86)](_0x1e320c);if(_0x1f3c37&&(_0x870302?.['remote']??![])===![]){const _0x2e89f2=this['runner'];if(_0x2e89f2){const _0x2df824={'headers':_0x1c747b?.['headers']??{},'connectorConfig':this['config'][_0x20584f(0xcb)]??{},'env':{},'trigger':{'body':_0x1c747b?.['body'],'data':_0x1c747b?.[_0x20584f(0xa2)]},'stepResults':{},'vars':_0x1c747b?.['vars']??{}},{executeConnectorAction:_0x136588}=require(_0x20584f(0x96)),_0xbdb2d1=await _0x136588(_0x1f3c37,_0x1d6a2e,{'body':_0x1c747b?.[_0x20584f(0xa2)],'params':_0x1c747b?.['params'],'pathParams':_0x1c747b?.[_0x20584f(0x71)],'headers':_0x1c747b?.['headers'],'database':_0x1c747b?.[_0x20584f(0xa8)],'connection_id':_0x1c747b?.[_0x20584f(0x7d)],'timeout':_0x1c747b?.[_0x20584f(0xd3)]},_0x2df824),_0x58865b=_0xbdb2d1?.[_0x20584f(0xb4)]??_0xbdb2d1?.[_0x20584f(0x8b)]??_0xbdb2d1;return _0x58865b;}}const _0x1e7f21=this[_0x20584f(0x99)]();if(_0x1e7f21&&(_0x870302?.[_0x20584f(0xa9)]??!![]))return _0x1e7f21[_0x20584f(0xcb)][_0x20584f(0xbe)](_0x1e320c,_0x1d6a2e,_0x1c747b);throw new Error(_0x20584f(0x77)+_0x1e320c+_0x20584f(0x9f));}['normalizeRunPayload'](_0x456e5d){const _0xcd9b50=_0x14e1f5;if(!_0x456e5d||typeof _0x456e5d!==_0xcd9b50(0x81))return{'trigger':{'data':_0x456e5d,'body':_0x456e5d}};if(Array['isArray'](_0x456e5d))return{'trigger':{'data':_0x456e5d,'body':_0x456e5d}};const _0x547208=[_0xcd9b50(0x95),_0xcd9b50(0xae),'pathParams',_0xcd9b50(0x75),'params','query',_0xcd9b50(0xd6),_0xcd9b50(0xb1),'env_vars',_0xcd9b50(0x88),_0xcd9b50(0x6a),'callStack','call_stack'],_0x10ff3b=_0xcd9b50(0xa2)in _0x456e5d||'data'in _0x456e5d||_0x456e5d['trigger']&&(_0xcd9b50(0xa2)in _0x456e5d[_0xcd9b50(0x6a)]||'data'in _0x456e5d['trigger']);let _0x45d47b;if(_0x10ff3b)_0x45d47b=_0x456e5d[_0xcd9b50(0xa2)]??_0x456e5d[_0xcd9b50(0x9a)]??_0x456e5d[_0xcd9b50(0x6a)]?.[_0xcd9b50(0xa2)]??_0x456e5d[_0xcd9b50(0x6a)]?.[_0xcd9b50(0x9a)];else{const _0x4df789=Object[_0xcd9b50(0x6c)](Object['entries'](_0x456e5d)[_0xcd9b50(0xc6)](([_0x4405d5])=>!_0x547208[_0xcd9b50(0xc0)](_0x4405d5)));_0x45d47b=Object[_0xcd9b50(0xa0)](_0x4df789)[_0xcd9b50(0x68)]>0x0?_0x4df789:_0x456e5d;}const _0x1b1767=_0x456e5d[_0xcd9b50(0x6a)]??{},_0xc3c83d=(0x0,sanitize_execution_headers_1[_0xcd9b50(0x9b)])(_0x456e5d[_0xcd9b50(0x95)]??_0x1b1767[_0xcd9b50(0x95)]??{}),_0x1bf034=(0x0,sanitize_execution_headers_1[_0xcd9b50(0x9b)])(_0x456e5d[_0xcd9b50(0xae)]);return{'body':_0x45d47b,'data':_0x45d47b,'trigger':{..._0x1b1767,'data':_0x1b1767[_0xcd9b50(0x9a)]??_0x45d47b,'body':_0x1b1767['body']??_0x45d47b},'headers':{..._0xc3c83d,..._0x1bf034},'pathParams':_0x456e5d[_0xcd9b50(0x71)]??_0x456e5d[_0xcd9b50(0x75)]??_0x1b1767['pathParams']??{},'params':_0x456e5d['params']??_0x1b1767['params']??{},'query':_0x456e5d[_0xcd9b50(0x6b)]??_0x1b1767['query']??{},'vars':_0x456e5d[_0xcd9b50(0xd6)]??_0x1b1767['vars']??{},'envVars':_0x456e5d[_0xcd9b50(0xb1)]??_0x456e5d['env_vars']??_0x456e5d[_0xcd9b50(0x88)]??{},'callStack':_0x456e5d[_0xcd9b50(0xc8)]??_0x456e5d[_0xcd9b50(0x91)]??[]};}['setRunner'](_0x3094f8){const _0x47962e=_0x14e1f5;return this[_0x47962e(0xcd)]=_0x3094f8,this;}[_0x14e1f5(0x99)](){const _0x25c2d7=_0x14e1f5;return this[_0x25c2d7(0xc7)]??null;}get['c'](){const _0x44ff77=_0x14e1f5;return this[_0x44ff77(0x99)]();}['setClient'](_0x3fdb00){const _0x319f45=_0x14e1f5;return this[_0x319f45(0xc7)]=_0x3fdb00,this;}async[_0x14e1f5(0x73)](_0x3b7dcb){const _0x4dcef7=_0x14e1f5,_0x412fbe=this[_0x4dcef7(0x99)]();if(!_0x412fbe)throw new Error(_0x4dcef7(0xb6));return _0x412fbe['workflows'][_0x4dcef7(0x73)](_0x3b7dcb);}async[_0x14e1f5(0x8d)](_0x295227){const _0x14a7e2=_0x14e1f5,_0x167f69=this[_0x14a7e2(0x99)]();if(!_0x167f69)throw new Error(_0x14a7e2(0xb6));const _0x36b99d=await _0x167f69[_0x14a7e2(0x9e)]['pull'](_0x295227);return this[_0x14a7e2(0xd5)](_0x36b99d),_0x36b99d;}['list'](){const _0xc61954=_0x14e1f5;return Array[_0xc61954(0xc9)](this[_0xc61954(0x9e)][_0xc61954(0xa3)]());}[_0x14e1f5(0xab)](_0x1f7f84){const _0x24f551=_0x14e1f5,_0x9c54f8=_0x1f7f84[_0x24f551(0xbb)]||_0x1f7f84[_0x24f551(0x7c)]||_0x1f7f84[_0x24f551(0xce)];if(!_0x9c54f8)throw new Error(_0x24f551(0xcf));this[_0x24f551(0x8e)][_0x24f551(0xc4)](_0x9c54f8,_0x1f7f84);if(_0x1f7f84[_0x24f551(0x7c)]&&_0x1f7f84['slug']!==_0x9c54f8)this['functions']['set'](_0x1f7f84[_0x24f551(0x7c)],_0x1f7f84);if(_0x1f7f84[_0x24f551(0xce)]&&_0x1f7f84[_0x24f551(0xce)]!==_0x9c54f8)this['functions'][_0x24f551(0xc4)](_0x1f7f84[_0x24f551(0xce)],_0x1f7f84);const _0x1288c6=_0x1f7f84[_0x24f551(0xc2)];if(_0x1288c6&&_0x1288c6!==_0x9c54f8)this[_0x24f551(0x8e)][_0x24f551(0xc4)](_0x1288c6,_0x1f7f84);return this;}async[_0x14e1f5(0xd7)](_0x372718,_0x2f9ceb={},_0x322cfa){const _0x169b56=_0x14e1f5,_0x1c2539=this[_0x169b56(0x8e)]['get'](_0x372718);if(_0x1c2539){const _0x408e45=this[_0x169b56(0xcd)];if(!_0x408e45)throw new Error(_0x169b56(0xa7));const _0x1963b4=await _0x408e45['runFunction'](_0x1c2539,_0x2f9ceb);if(!_0x1963b4['ok'])throw new Error(_0x1963b4[_0x169b56(0x6d)]||_0x169b56(0xd2));return _0x1963b4[_0x169b56(0x9a)];}const _0x474bbe=this[_0x169b56(0x99)]();if(_0x474bbe&&(_0x322cfa?.[_0x169b56(0xa9)]??!![]))return this[_0x169b56(0x72)](_0x372718,_0x2f9ceb);throw new Error(_0x169b56(0x7a)+_0x372718);}async['pushFunction'](_0x3d3532){const _0x3e5d4b=_0x14e1f5,_0xcab914=this['getClient']();if(!_0xcab914)throw new Error(_0x3e5d4b(0xb6));return _0xcab914[_0x3e5d4b(0x8e)]['push'](_0x3d3532);}async[_0x14e1f5(0xaa)](_0x1cf8af){const _0x3b9f51=_0x14e1f5,_0x5886c6=this[_0x3b9f51(0x99)]();if(!_0x5886c6)throw new Error(_0x3b9f51(0xb6));return _0x5886c6[_0x3b9f51(0x8e)]['pull'](_0x1cf8af);}}exports['Flosync']=Flosync,exports[_0x14e1f5(0x6f)]=new Flosync();
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flosync = exports.Flosync = void 0;
|
|
4
|
+
const WorkflowBuilder_1 = require("./WorkflowBuilder");
|
|
5
|
+
const FunctionBuilder_1 = require("./FunctionBuilder");
|
|
6
|
+
const ProcessorEngine_1 = require("./runner/ProcessorEngine");
|
|
7
|
+
const builtin_1 = require("./connectors/builtin");
|
|
8
|
+
const FlosyncClient_1 = require("./FlosyncClient");
|
|
9
|
+
const build_1 = require("./decorators/build");
|
|
10
|
+
const registry_1 = require("./connectors/registry");
|
|
11
|
+
const sanitize_execution_headers_1 = require("./http/sanitize-execution-headers");
|
|
12
|
+
class Flosync {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.config = {};
|
|
15
|
+
this.workflows = new Map();
|
|
16
|
+
this.workflowsByName = new Map();
|
|
17
|
+
this.functions = new Map();
|
|
18
|
+
this.connectors = new Map();
|
|
19
|
+
}
|
|
20
|
+
configure(config) {
|
|
21
|
+
this.config = { ...this.config, ...config };
|
|
22
|
+
const connectorConfig = config.connectors || {};
|
|
23
|
+
const cliodot = config.cliodot;
|
|
24
|
+
if (cliodot?.baseUrl && cliodot?.apiKey) {
|
|
25
|
+
this.connectors.set("cliodot", (0, builtin_1.createCliodotConnector)({ baseUrl: cliodot.baseUrl, apiKey: cliodot.apiKey }));
|
|
26
|
+
}
|
|
27
|
+
if (config.apiKey && config.apiSecret) {
|
|
28
|
+
const existing = this.client;
|
|
29
|
+
if (!existing) {
|
|
30
|
+
this.client = new FlosyncClient_1.FlosyncClient({
|
|
31
|
+
baseUrl: this.config.baseUrl,
|
|
32
|
+
apiKey: this.config.apiKey,
|
|
33
|
+
apiSecret: this.config.apiSecret,
|
|
34
|
+
tokenRefreshMarginMs: this.config.tokenRefreshMarginMs,
|
|
35
|
+
tokenFallbackReuseMs: this.config.tokenFallbackReuseMs,
|
|
36
|
+
debug: this.config.debug,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const runner = new ProcessorEngine_1.ProcessorEngine({
|
|
41
|
+
workflows: this.workflows,
|
|
42
|
+
functions: this.functions,
|
|
43
|
+
connectors: this.connectors,
|
|
44
|
+
connectorConfig,
|
|
45
|
+
client: this.client,
|
|
46
|
+
});
|
|
47
|
+
this.runner = runner;
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
async authenticate() {
|
|
51
|
+
const client = this.getClient();
|
|
52
|
+
if (client) {
|
|
53
|
+
await client.authenticate();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
registerConnector(id, connector) {
|
|
57
|
+
this.connectors.set(id, connector);
|
|
58
|
+
return this;
|
|
59
|
+
}
|
|
60
|
+
workflow(id, name) {
|
|
61
|
+
return new WorkflowBuilder_1.WorkflowBuilder(id, name);
|
|
62
|
+
}
|
|
63
|
+
function(id, name) {
|
|
64
|
+
return new FunctionBuilder_1.FunctionBuilder(id, name);
|
|
65
|
+
}
|
|
66
|
+
register(workflowOrWorkflows) {
|
|
67
|
+
const list = Array.isArray(workflowOrWorkflows) ? workflowOrWorkflows : [workflowOrWorkflows];
|
|
68
|
+
for (const w of list) {
|
|
69
|
+
this.workflows.set(w._id, w);
|
|
70
|
+
this.workflowsByName.set(w.name, w);
|
|
71
|
+
const rawId = w.__rawId;
|
|
72
|
+
if (rawId && rawId !== w._id)
|
|
73
|
+
this.workflows.set(rawId, w);
|
|
74
|
+
}
|
|
75
|
+
return this;
|
|
76
|
+
}
|
|
77
|
+
registerFromClass(workflowClass) {
|
|
78
|
+
const workflow = (0, build_1.buildWorkflowFromClass)(workflowClass);
|
|
79
|
+
return this.register(workflow);
|
|
80
|
+
}
|
|
81
|
+
async run(workflowIdOrName, payload = {}, options) {
|
|
82
|
+
const workflow = this.workflows.get(workflowIdOrName) ?? this.workflowsByName.get(workflowIdOrName);
|
|
83
|
+
if (workflow) {
|
|
84
|
+
const runner = this.runner;
|
|
85
|
+
if (!runner)
|
|
86
|
+
throw new Error("LocalRunner not initialized. Call flosync.configure() first.");
|
|
87
|
+
const normalized = this.normalizeRunPayload(payload);
|
|
88
|
+
if (options?.executionHeaders) {
|
|
89
|
+
normalized.headers = {
|
|
90
|
+
...normalized.headers,
|
|
91
|
+
...(0, sanitize_execution_headers_1.sanitizeExecutionHeaders)(options.executionHeaders),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (this.config.debug)
|
|
95
|
+
normalized.debug = true;
|
|
96
|
+
return runner.runWorkflow(workflow, normalized);
|
|
97
|
+
}
|
|
98
|
+
const client = this.getClient();
|
|
99
|
+
if (client && (options?.remote ?? true)) {
|
|
100
|
+
return this.runById(workflowIdOrName, payload, {
|
|
101
|
+
triggerId: options?.triggerId,
|
|
102
|
+
executionHeaders: options?.executionHeaders,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
throw new Error(`Workflow not found: ${workflowIdOrName}`);
|
|
106
|
+
}
|
|
107
|
+
async runById(workflowId, payload = {}, options) {
|
|
108
|
+
const client = this.getClient();
|
|
109
|
+
if (!client)
|
|
110
|
+
throw new Error("FlosyncClient not configured. Set apiKey and apiSecret for remote run.");
|
|
111
|
+
const triggerId = options?.triggerId ?? "trigger";
|
|
112
|
+
const normalized = this.normalizeRunPayload(payload);
|
|
113
|
+
const exec = (0, sanitize_execution_headers_1.sanitizeExecutionHeaders)(options?.executionHeaders ?? {});
|
|
114
|
+
return client.workflows.run(workflowId, triggerId, {
|
|
115
|
+
payload: normalized,
|
|
116
|
+
...(Object.keys(exec).length > 0 && { executionHeaders: exec }),
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
async runByWebhook(webhookPath, method, payload = {}) {
|
|
120
|
+
const client = this.getClient();
|
|
121
|
+
if (!client)
|
|
122
|
+
throw new Error("FlosyncClient not configured. Set apiKey and apiSecret for remote run.");
|
|
123
|
+
return client.workflows.runByWebhook(webhookPath, method, payload);
|
|
124
|
+
}
|
|
125
|
+
async runFunctionById(functionId, args = {}) {
|
|
126
|
+
const client = this.getClient();
|
|
127
|
+
if (!client)
|
|
128
|
+
throw new Error("FlosyncClient not configured. Set apiKey and apiSecret for remote invoke.");
|
|
129
|
+
return client.functions.invoke(functionId, args);
|
|
130
|
+
}
|
|
131
|
+
async runConnector(connectorIdOrDef, actionOrKey, options, runOptions) {
|
|
132
|
+
if ((0, registry_1.isTypedConnectorDef)(connectorIdOrDef)) {
|
|
133
|
+
const def = connectorIdOrDef;
|
|
134
|
+
const key = actionOrKey;
|
|
135
|
+
const mapped = def.actions[key];
|
|
136
|
+
if (typeof mapped !== "string") {
|
|
137
|
+
throw new Error(`Unknown connector action key: ${String(actionOrKey)}`);
|
|
138
|
+
}
|
|
139
|
+
return this.runConnector(def.id, mapped, options, runOptions);
|
|
140
|
+
}
|
|
141
|
+
const connectorId = connectorIdOrDef;
|
|
142
|
+
const action = actionOrKey;
|
|
143
|
+
const connector = this.connectors.get(connectorId);
|
|
144
|
+
if (connector && (runOptions?.remote ?? false) === false) {
|
|
145
|
+
const runner = this.runner;
|
|
146
|
+
if (runner) {
|
|
147
|
+
const state = {
|
|
148
|
+
headers: options?.headers ?? {},
|
|
149
|
+
connectorConfig: this.config.connectors ?? {},
|
|
150
|
+
env: {},
|
|
151
|
+
trigger: { body: options?.body, data: options?.body },
|
|
152
|
+
stepResults: {},
|
|
153
|
+
vars: options?.vars ?? {},
|
|
154
|
+
};
|
|
155
|
+
const { executeConnectorAction } = require("./runner/connector.executor");
|
|
156
|
+
const result = await executeConnectorAction(connector, action, {
|
|
157
|
+
body: options?.body,
|
|
158
|
+
params: options?.params,
|
|
159
|
+
pathParams: options?.pathParams,
|
|
160
|
+
headers: options?.headers,
|
|
161
|
+
database: options?.database,
|
|
162
|
+
connection_id: options?.connection_id,
|
|
163
|
+
timeout: options?.timeout,
|
|
164
|
+
}, state);
|
|
165
|
+
const out = result?.mapped ?? result?.raw ?? result;
|
|
166
|
+
return out;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const client = this.getClient();
|
|
170
|
+
if (client && (runOptions?.remote ?? true)) {
|
|
171
|
+
return client.connectors.execute(connectorId, action, options);
|
|
172
|
+
}
|
|
173
|
+
throw new Error(`Connector ${connectorId} not found locally. Configure apiKey and apiSecret to run connectors from your Cliodot account.`);
|
|
174
|
+
}
|
|
175
|
+
normalizeRunPayload(payload) {
|
|
176
|
+
if (!payload || typeof payload !== "object")
|
|
177
|
+
return { trigger: { data: payload, body: payload } };
|
|
178
|
+
if (Array.isArray(payload))
|
|
179
|
+
return { trigger: { data: payload, body: payload } };
|
|
180
|
+
const passthroughKeys = [
|
|
181
|
+
"headers",
|
|
182
|
+
"executionHeaders",
|
|
183
|
+
"pathParams",
|
|
184
|
+
"path_params",
|
|
185
|
+
"params",
|
|
186
|
+
"query",
|
|
187
|
+
"vars",
|
|
188
|
+
"envVars",
|
|
189
|
+
"env_vars",
|
|
190
|
+
"env",
|
|
191
|
+
"trigger",
|
|
192
|
+
"callStack",
|
|
193
|
+
"call_stack",
|
|
194
|
+
];
|
|
195
|
+
const hasExplicitBody = "body" in payload || "data" in payload || (payload.trigger && ("body" in payload.trigger || "data" in payload.trigger));
|
|
196
|
+
let data;
|
|
197
|
+
if (hasExplicitBody) {
|
|
198
|
+
data = payload.body ?? payload.data ?? payload.trigger?.body ?? payload.trigger?.data;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
const bodyLike = Object.fromEntries(Object.entries(payload).filter(([k]) => !passthroughKeys.includes(k)));
|
|
202
|
+
data = Object.keys(bodyLike).length > 0 ? bodyLike : payload;
|
|
203
|
+
}
|
|
204
|
+
const trigger = payload.trigger ?? {};
|
|
205
|
+
const headerBase = (0, sanitize_execution_headers_1.sanitizeExecutionHeaders)(payload.headers ?? trigger.headers ?? {});
|
|
206
|
+
const headerExec = (0, sanitize_execution_headers_1.sanitizeExecutionHeaders)(payload.executionHeaders);
|
|
207
|
+
return {
|
|
208
|
+
body: data,
|
|
209
|
+
data: data,
|
|
210
|
+
trigger: { ...trigger, data: trigger.data ?? data, body: trigger.body ?? data },
|
|
211
|
+
headers: { ...headerBase, ...headerExec },
|
|
212
|
+
pathParams: payload.pathParams ?? payload.path_params ?? trigger.pathParams ?? {},
|
|
213
|
+
params: payload.params ?? trigger.params ?? {},
|
|
214
|
+
query: payload.query ?? trigger.query ?? {},
|
|
215
|
+
vars: payload.vars ?? trigger.vars ?? {},
|
|
216
|
+
envVars: payload.envVars ?? payload.env_vars ?? payload.env ?? {},
|
|
217
|
+
callStack: payload.callStack ?? payload.call_stack ?? [],
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
setRunner(runner) {
|
|
221
|
+
this.runner = runner;
|
|
222
|
+
return this;
|
|
223
|
+
}
|
|
224
|
+
getClient() {
|
|
225
|
+
return this.client ?? null;
|
|
226
|
+
}
|
|
227
|
+
get c() {
|
|
228
|
+
return this.getClient();
|
|
229
|
+
}
|
|
230
|
+
setClient(client) {
|
|
231
|
+
this.client = client;
|
|
232
|
+
return this;
|
|
233
|
+
}
|
|
234
|
+
async push(workflow) {
|
|
235
|
+
const client = this.getClient();
|
|
236
|
+
if (!client)
|
|
237
|
+
throw new Error("FlosyncClient not configured. Set apiKey and apiSecret in configure().");
|
|
238
|
+
return client.workflows.push(workflow);
|
|
239
|
+
}
|
|
240
|
+
async pull(workflowId) {
|
|
241
|
+
const client = this.getClient();
|
|
242
|
+
if (!client)
|
|
243
|
+
throw new Error("FlosyncClient not configured. Set apiKey and apiSecret in configure().");
|
|
244
|
+
const wf = await client.workflows.pull(workflowId);
|
|
245
|
+
this.register(wf);
|
|
246
|
+
return wf;
|
|
247
|
+
}
|
|
248
|
+
list() {
|
|
249
|
+
return Array.from(this.workflows.values());
|
|
250
|
+
}
|
|
251
|
+
registerFunction(fn) {
|
|
252
|
+
const id = fn._id || fn.slug || fn.name;
|
|
253
|
+
if (!id)
|
|
254
|
+
throw new Error("Function must have _id, slug, or name");
|
|
255
|
+
this.functions.set(id, fn);
|
|
256
|
+
if (fn.slug && fn.slug !== id)
|
|
257
|
+
this.functions.set(fn.slug, fn);
|
|
258
|
+
if (fn.name && fn.name !== id)
|
|
259
|
+
this.functions.set(fn.name, fn);
|
|
260
|
+
const rawId = fn.__rawId;
|
|
261
|
+
if (rawId && rawId !== id)
|
|
262
|
+
this.functions.set(rawId, fn);
|
|
263
|
+
return this;
|
|
264
|
+
}
|
|
265
|
+
async runFunction(slugOrId, args = {}, options) {
|
|
266
|
+
const fn = this.functions.get(slugOrId);
|
|
267
|
+
if (fn) {
|
|
268
|
+
const runner = this.runner;
|
|
269
|
+
if (!runner)
|
|
270
|
+
throw new Error("LocalRunner not initialized. Call flosync.configure() first.");
|
|
271
|
+
const result = await runner.runFunction(fn, args);
|
|
272
|
+
if (!result.ok)
|
|
273
|
+
throw new Error(result.error || "Function execution failed");
|
|
274
|
+
return result.data;
|
|
275
|
+
}
|
|
276
|
+
const client = this.getClient();
|
|
277
|
+
if (client && (options?.remote ?? true)) {
|
|
278
|
+
return this.runFunctionById(slugOrId, args);
|
|
279
|
+
}
|
|
280
|
+
throw new Error(`Function not found: ${slugOrId}`);
|
|
281
|
+
}
|
|
282
|
+
async pushFunction(fn) {
|
|
283
|
+
const client = this.getClient();
|
|
284
|
+
if (!client)
|
|
285
|
+
throw new Error("FlosyncClient not configured. Set apiKey and apiSecret in configure().");
|
|
286
|
+
return client.functions.push(fn);
|
|
287
|
+
}
|
|
288
|
+
async pullFunction(functionId) {
|
|
289
|
+
const client = this.getClient();
|
|
290
|
+
if (!client)
|
|
291
|
+
throw new Error("FlosyncClient not configured. Set apiKey and apiSecret in configure().");
|
|
292
|
+
return client.functions.pull(functionId);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
exports.Flosync = Flosync;
|
|
296
|
+
exports.flosync = new Flosync();
|