@uploadista/core 0.0.18-beta.2 → 0.0.18-beta.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 (97) hide show
  1. package/dist/{checksum-B1XGxTsI.cjs → checksum-Bs89yEZy.cjs} +1 -1
  2. package/dist/{checksum-DsSiXsPO.mjs → checksum-COoD-F1l.mjs} +2 -2
  3. package/dist/{checksum-DsSiXsPO.mjs.map → checksum-COoD-F1l.mjs.map} +1 -1
  4. package/dist/errors/index.cjs +1 -1
  5. package/dist/errors/index.d.cts +1 -1
  6. package/dist/errors/index.d.mts +1 -1
  7. package/dist/errors/index.mjs +1 -1
  8. package/dist/flow/index.cjs +1 -1
  9. package/dist/flow/index.d.cts +5 -5
  10. package/dist/flow/index.d.mts +5 -5
  11. package/dist/flow/index.mjs +1 -1
  12. package/dist/flow-B0AKihCK.cjs +1 -0
  13. package/dist/flow-CszNZOpc.mjs +2 -0
  14. package/dist/flow-CszNZOpc.mjs.map +1 -0
  15. package/dist/{index-CHQtirAp.d.mts → index-9gyMMEIB.d.cts} +2 -2
  16. package/dist/index-9gyMMEIB.d.cts.map +1 -0
  17. package/dist/{index-CoAMCnm6.d.cts → index-B9V5SSxl.d.mts} +2 -2
  18. package/dist/{index-CHQtirAp.d.mts.map → index-B9V5SSxl.d.mts.map} +1 -1
  19. package/dist/{index-C4zZWqtz.d.cts → index-BFSHumky.d.mts} +2 -2
  20. package/dist/{index-C4zZWqtz.d.cts.map → index-BFSHumky.d.mts.map} +1 -1
  21. package/dist/{index-zQ707AXp.d.mts → index-DFbu_-zn.d.cts} +2 -2
  22. package/dist/{index-zQ707AXp.d.mts.map → index-DFbu_-zn.d.cts.map} +1 -1
  23. package/dist/{index-D5ALjvAb.d.cts → index-cYpdknQ_.d.cts} +2059 -1155
  24. package/dist/index-cYpdknQ_.d.cts.map +1 -0
  25. package/dist/{index-DiHUjE9t.d.mts → index-xq80GmLX.d.mts} +2059 -1155
  26. package/dist/index-xq80GmLX.d.mts.map +1 -0
  27. package/dist/index.cjs +1 -1
  28. package/dist/index.d.cts +5 -5
  29. package/dist/index.d.mts +5 -5
  30. package/dist/index.mjs +1 -1
  31. package/dist/{stream-limiter-ByVdSC5T.mjs → stream-limiter-B9nsn2gb.mjs} +2 -2
  32. package/dist/{stream-limiter-ByVdSC5T.mjs.map → stream-limiter-B9nsn2gb.mjs.map} +1 -1
  33. package/dist/{stream-limiter-B6CRA3Zd.cjs → stream-limiter-jdTNLczW.cjs} +1 -1
  34. package/dist/streams/index.cjs +1 -1
  35. package/dist/streams/index.d.cts +2 -2
  36. package/dist/streams/index.d.mts +2 -2
  37. package/dist/streams/index.mjs +1 -1
  38. package/dist/testing/index.cjs +1 -1
  39. package/dist/testing/index.d.cts +4 -4
  40. package/dist/testing/index.d.mts +4 -4
  41. package/dist/testing/index.mjs +1 -1
  42. package/dist/types/index.cjs +1 -1
  43. package/dist/types/index.d.cts +5 -5
  44. package/dist/types/index.d.mts +5 -5
  45. package/dist/types/index.mjs +1 -1
  46. package/dist/types-Bbd8jExI.mjs +2 -0
  47. package/dist/types-Bbd8jExI.mjs.map +1 -0
  48. package/dist/types-CkVwVXLA.cjs +1 -0
  49. package/dist/upload/index.cjs +1 -1
  50. package/dist/upload/index.d.cts +4 -4
  51. package/dist/upload/index.d.mts +4 -4
  52. package/dist/upload/index.mjs +1 -1
  53. package/dist/{upload-DPX3jSQH.mjs → upload-Cnbo-Ks3.mjs} +2 -2
  54. package/dist/{upload-DPX3jSQH.mjs.map → upload-Cnbo-Ks3.mjs.map} +1 -1
  55. package/dist/{upload-uQfkhcMj.cjs → upload-CrEoWXaa.cjs} +1 -1
  56. package/dist/{uploadista-error-DigegPz2.d.cts → uploadista-error-CYCmAtkZ.d.cts} +2 -2
  57. package/dist/uploadista-error-CYCmAtkZ.d.cts.map +1 -0
  58. package/dist/{uploadista-error-B-kFH_SE.mjs → uploadista-error-CkSxSyNo.mjs} +2 -1
  59. package/dist/uploadista-error-CkSxSyNo.mjs.map +1 -0
  60. package/dist/{uploadista-error-Di9fniB1.cjs → uploadista-error-DIW99WZ1.cjs} +2 -1
  61. package/dist/{uploadista-error-DMMrZF03.d.mts → uploadista-error-DR0XimpE.d.mts} +2 -2
  62. package/dist/uploadista-error-DR0XimpE.d.mts.map +1 -0
  63. package/dist/utils/index.cjs +1 -1
  64. package/dist/utils/index.d.cts +2 -2
  65. package/dist/utils/index.d.mts +2 -2
  66. package/dist/utils/index.mjs +1 -1
  67. package/dist/{utils-C9dntrSe.mjs → utils-B-ZhQ6b0.mjs} +2 -2
  68. package/dist/{utils-C9dntrSe.mjs.map → utils-B-ZhQ6b0.mjs.map} +1 -1
  69. package/dist/{utils-B_unvkI4.cjs → utils-bCZ9j3Ve.cjs} +1 -1
  70. package/docs/CIRCUIT_BREAKER.md +335 -0
  71. package/package.json +7 -4
  72. package/src/errors/uploadista-error.ts +6 -1
  73. package/src/flow/README.md +102 -0
  74. package/src/flow/circuit-breaker-store.ts +382 -0
  75. package/src/flow/circuit-breaker.ts +99 -0
  76. package/src/flow/distributed-circuit-breaker.ts +437 -0
  77. package/src/flow/flow.ts +138 -0
  78. package/src/flow/index.ts +7 -0
  79. package/src/flow/node.ts +6 -0
  80. package/src/flow/nodes/transform-node.ts +43 -2
  81. package/src/flow/types/flow-types.ts +230 -0
  82. package/src/flow/utils/file-naming.ts +308 -0
  83. package/src/types/circuit-breaker-store.ts +222 -0
  84. package/src/types/index.ts +1 -0
  85. package/tests/flow/file-naming.test.ts +390 -0
  86. package/dist/flow-CAywogte.mjs +0 -2
  87. package/dist/flow-CAywogte.mjs.map +0 -1
  88. package/dist/flow-D7QeEZVs.cjs +0 -1
  89. package/dist/index-CoAMCnm6.d.cts.map +0 -1
  90. package/dist/index-D5ALjvAb.d.cts.map +0 -1
  91. package/dist/index-DiHUjE9t.d.mts.map +0 -1
  92. package/dist/types-Ce7ILjFt.cjs +0 -1
  93. package/dist/types-CnhCQFkg.mjs +0 -2
  94. package/dist/types-CnhCQFkg.mjs.map +0 -1
  95. package/dist/uploadista-error-B-kFH_SE.mjs.map +0 -1
  96. package/dist/uploadista-error-DMMrZF03.d.mts.map +0 -1
  97. package/dist/uploadista-error-DigegPz2.d.cts.map +0 -1
@@ -1 +1 @@
1
- const e=require(`./types-Ce7ILjFt.cjs`),t=require(`./uploadista-error-Di9fniB1.cjs`);let n=require(`effect`);var r=class extends n.Context.Tag(`UploadistaGenerateIdService`)(){};const i=r.Service,a=r.of({generateId:()=>n.Effect.succeed(crypto.randomUUID())}),o=n.Layer.succeed(r,a),s=r.of({generateId:()=>n.Effect.succeed(`${Date.now()}-${Math.random().toString(36).slice(2,11)}`)}),c=[`sha256`];function l(e){return c.includes(e)}function u(e,r){return n.Effect.gen(function*(){if(!l(r))return yield*t.n.fromCode(`UNSUPPORTED_CHECKSUM_ALGORITHM`,{body:`Checksum algorithm '${r}' is not supported. Supported algorithms: ${c.join(`, `)}`,details:{algorithm:r,supportedAlgorithms:c}}).toEffect();let i=r.toUpperCase().replace(/\d+/,`-$&`),a=yield*n.Effect.tryPromise({try:()=>crypto.subtle.digest(i,e),catch:e=>t.n.fromCode(`UNKNOWN_ERROR`,{body:`Failed to compute checksum: ${e instanceof Error?e.message:`Unknown error`}`,cause:e,details:{algorithm:r}})});return Array.from(new Uint8Array(a)).map(e=>e.toString(16).padStart(2,`0`)).join(``)})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return u}});
1
+ const e=require(`./types-CkVwVXLA.cjs`),t=require(`./uploadista-error-DIW99WZ1.cjs`);let n=require(`effect`);var r=class extends n.Context.Tag(`UploadistaGenerateIdService`)(){};const i=r.Service,a=r.of({generateId:()=>n.Effect.succeed(crypto.randomUUID())}),o=n.Layer.succeed(r,a),s=r.of({generateId:()=>n.Effect.succeed(`${Date.now()}-${Math.random().toString(36).slice(2,11)}`)}),c=[`sha256`];function l(e){return c.includes(e)}function u(e,r){return n.Effect.gen(function*(){if(!l(r))return yield*t.n.fromCode(`UNSUPPORTED_CHECKSUM_ALGORITHM`,{body:`Checksum algorithm '${r}' is not supported. Supported algorithms: ${c.join(`, `)}`,details:{algorithm:r,supportedAlgorithms:c}}).toEffect();let i=r.toUpperCase().replace(/\d+/,`-$&`),a=yield*n.Effect.tryPromise({try:()=>crypto.subtle.digest(i,e),catch:e=>t.n.fromCode(`UNKNOWN_ERROR`,{body:`Failed to compute checksum: ${e instanceof Error?e.message:`Unknown error`}`,cause:e,details:{algorithm:r}})});return Array.from(new Uint8Array(a)).map(e=>e.toString(16).padStart(2,`0`)).join(``)})}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return u}});
@@ -1,2 +1,2 @@
1
- import{n as e}from"./uploadista-error-B-kFH_SE.mjs";import{Context as t,Effect as n,Layer as r}from"effect";var i=class extends t.Tag(`UploadistaGenerateIdService`)(){};const a=i.Service,o=i.of({generateId:()=>n.succeed(crypto.randomUUID())}),s=r.succeed(i,o),c=i.of({generateId:()=>n.succeed(`${Date.now()}-${Math.random().toString(36).slice(2,11)}`)}),l=[`sha256`];function u(e){return l.includes(e)}function d(t,r){return n.gen(function*(){if(!u(r))return yield*e.fromCode(`UNSUPPORTED_CHECKSUM_ALGORITHM`,{body:`Checksum algorithm '${r}' is not supported. Supported algorithms: ${l.join(`, `)}`,details:{algorithm:r,supportedAlgorithms:l}}).toEffect();let i=r.toUpperCase().replace(/\d+/,`-$&`),a=yield*n.tryPromise({try:()=>crypto.subtle.digest(i,t),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{body:`Failed to compute checksum: ${t instanceof Error?t.message:`Unknown error`}`,cause:t,details:{algorithm:r}})});return Array.from(new Uint8Array(a)).map(e=>e.toString(16).padStart(2,`0`)).join(``)})}export{o as a,s as i,u as n,a as o,i as r,c as s,d as t};
2
- //# sourceMappingURL=checksum-DsSiXsPO.mjs.map
1
+ import{n as e}from"./uploadista-error-CkSxSyNo.mjs";import{Context as t,Effect as n,Layer as r}from"effect";var i=class extends t.Tag(`UploadistaGenerateIdService`)(){};const a=i.Service,o=i.of({generateId:()=>n.succeed(crypto.randomUUID())}),s=r.succeed(i,o),c=i.of({generateId:()=>n.succeed(`${Date.now()}-${Math.random().toString(36).slice(2,11)}`)}),l=[`sha256`];function u(e){return l.includes(e)}function d(t,r){return n.gen(function*(){if(!u(r))return yield*e.fromCode(`UNSUPPORTED_CHECKSUM_ALGORITHM`,{body:`Checksum algorithm '${r}' is not supported. Supported algorithms: ${l.join(`, `)}`,details:{algorithm:r,supportedAlgorithms:l}}).toEffect();let i=r.toUpperCase().replace(/\d+/,`-$&`),a=yield*n.tryPromise({try:()=>crypto.subtle.digest(i,t),catch:t=>e.fromCode(`UNKNOWN_ERROR`,{body:`Failed to compute checksum: ${t instanceof Error?t.message:`Unknown error`}`,cause:t,details:{algorithm:r}})});return Array.from(new Uint8Array(a)).map(e=>e.toString(16).padStart(2,`0`)).join(``)})}export{o as a,s as i,u as n,a as o,i as r,c as s,d as t};
2
+ //# sourceMappingURL=checksum-COoD-F1l.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"checksum-DsSiXsPO.mjs","names":[],"sources":["../src/utils/generate-id.ts","../src/utils/checksum.ts"],"sourcesContent":["import { Context, Effect, Layer } from \"effect\";\n\nexport type GenerateIdShape = {\n generateId: () => Effect.Effect<string>;\n};\n\n// Declaring a tag for a service that generates random id\nexport class GenerateId extends Context.Tag(\"UploadistaGenerateIdService\")<\n GenerateId,\n { readonly generateId: () => Effect.Effect<string> }\n>() {}\n\n/**\n * Effect-based ID generation services\n */\nexport const GenerateIdService = GenerateId.Service;\n\n/**\n * Generates a random UUID using Effect\n * @returns Effect that produces a random UUID string\n */\nexport const GenerateIdRandom = GenerateId.of({\n generateId: () => Effect.succeed(crypto.randomUUID()),\n});\n\nexport const GenerateIdLive = Layer.succeed(GenerateId, GenerateIdRandom);\n\n/**\n * Generates a timestamp-based ID using Effect\n * @returns Effect that produces a timestamp-based ID\n */\nexport const GenerateIdTimestamp = GenerateId.of({\n generateId: () =>\n Effect.succeed(`${Date.now()}-${Math.random().toString(36).slice(2, 11)}`),\n});\n","import { Effect } from \"effect\";\nimport { UploadistaError } from \"../errors/uploadista-error\";\n\n/**\n * Supported checksum algorithms\n */\nconst SUPPORTED_ALGORITHMS = [\"sha256\"] as const;\nexport type ChecksumAlgorithm = (typeof SUPPORTED_ALGORITHMS)[number];\n\n/**\n * Check if a checksum algorithm is supported\n */\nexport function isSupportedAlgorithm(\n algorithm: string,\n): algorithm is ChecksumAlgorithm {\n return SUPPORTED_ALGORITHMS.includes(algorithm as ChecksumAlgorithm);\n}\n\n/**\n * Compute checksum of file bytes using the Web Crypto API.\n * This works across all modern platforms: browsers, Node.js 15+, Deno, Bun, and Cloudflare Workers.\n *\n * @param bytes - File content as Uint8Array\n * @param algorithm - Hashing algorithm to use (currently only 'sha256' is supported)\n * @returns Effect that resolves to hex-encoded checksum string\n */\nexport function computeChecksum(\n bytes: Uint8Array,\n algorithm: string,\n): Effect.Effect<string, UploadistaError> {\n return Effect.gen(function* () {\n // Validate algorithm is supported\n if (!isSupportedAlgorithm(algorithm)) {\n return yield* UploadistaError.fromCode(\"UNSUPPORTED_CHECKSUM_ALGORITHM\", {\n body: `Checksum algorithm '${algorithm}' is not supported. Supported algorithms: ${SUPPORTED_ALGORITHMS.join(\", \")}`,\n details: { algorithm, supportedAlgorithms: SUPPORTED_ALGORITHMS },\n }).toEffect();\n }\n\n // Map algorithm name to Web Crypto API algorithm name\n const webCryptoAlgorithm = algorithm.toUpperCase().replace(/\\d+/, \"-$&\"); // \"sha256\" -> \"SHA-256\"\n\n // Compute hash using Web Crypto API (available in browsers, Node.js 15+, Deno, Bun, Cloudflare Workers)\n // Pass Uint8Array directly - it's a valid BufferSource\n const hashBuffer = yield* Effect.tryPromise({\n try: () =>\n crypto.subtle.digest(webCryptoAlgorithm, bytes as BufferSource),\n catch: (error) =>\n UploadistaError.fromCode(\"UNKNOWN_ERROR\", {\n body: `Failed to compute checksum: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n cause: error,\n details: { algorithm },\n }),\n });\n\n // Convert ArrayBuffer to hex string\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n\n return hashHex;\n });\n}\n"],"mappings":"4GAOA,IAAa,EAAb,cAAgC,EAAQ,IAAI,8BAA8B,EAGvE,AAAC,GAKJ,MAAa,EAAoB,EAAW,QAM/B,EAAmB,EAAW,GAAG,CAC5C,eAAkB,EAAO,QAAQ,OAAO,YAAY,CAAC,CACtD,CAAC,CAEW,EAAiB,EAAM,QAAQ,EAAY,EAAiB,CAM5D,EAAsB,EAAW,GAAG,CAC/C,eACE,EAAO,QAAQ,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAG,GAAG,GAAG,CAC7E,CAAC,CC5BI,EAAuB,CAAC,SAAS,CAMvC,SAAgB,EACd,EACgC,CAChC,OAAO,EAAqB,SAAS,EAA+B,CAWtE,SAAgB,EACd,EACA,EACwC,CACxC,OAAO,EAAO,IAAI,WAAa,CAE7B,GAAI,CAAC,EAAqB,EAAU,CAClC,OAAO,MAAO,EAAgB,SAAS,iCAAkC,CACvE,KAAM,uBAAuB,EAAU,4CAA4C,EAAqB,KAAK,KAAK,GAClH,QAAS,CAAE,YAAW,oBAAqB,EAAsB,CAClE,CAAC,CAAC,UAAU,CAIf,IAAM,EAAqB,EAAU,aAAa,CAAC,QAAQ,MAAO,MAAM,CAIlE,EAAa,MAAO,EAAO,WAAW,CAC1C,QACE,OAAO,OAAO,OAAO,EAAoB,EAAsB,CACjE,MAAQ,GACN,EAAgB,SAAS,gBAAiB,CACxC,KAAM,+BAA+B,aAAiB,MAAQ,EAAM,QAAU,kBAC9E,MAAO,EACP,QAAS,CAAE,YAAW,CACvB,CAAC,CACL,CAAC,CAQF,OALkB,MAAM,KAAK,IAAI,WAAW,EAAW,CAAC,CAErD,IAAK,GAAS,EAAK,SAAS,GAAG,CAAC,SAAS,EAAG,IAAI,CAAC,CACjD,KAAK,GAAG,EAGX"}
1
+ {"version":3,"file":"checksum-COoD-F1l.mjs","names":[],"sources":["../src/utils/generate-id.ts","../src/utils/checksum.ts"],"sourcesContent":["import { Context, Effect, Layer } from \"effect\";\n\nexport type GenerateIdShape = {\n generateId: () => Effect.Effect<string>;\n};\n\n// Declaring a tag for a service that generates random id\nexport class GenerateId extends Context.Tag(\"UploadistaGenerateIdService\")<\n GenerateId,\n { readonly generateId: () => Effect.Effect<string> }\n>() {}\n\n/**\n * Effect-based ID generation services\n */\nexport const GenerateIdService = GenerateId.Service;\n\n/**\n * Generates a random UUID using Effect\n * @returns Effect that produces a random UUID string\n */\nexport const GenerateIdRandom = GenerateId.of({\n generateId: () => Effect.succeed(crypto.randomUUID()),\n});\n\nexport const GenerateIdLive = Layer.succeed(GenerateId, GenerateIdRandom);\n\n/**\n * Generates a timestamp-based ID using Effect\n * @returns Effect that produces a timestamp-based ID\n */\nexport const GenerateIdTimestamp = GenerateId.of({\n generateId: () =>\n Effect.succeed(`${Date.now()}-${Math.random().toString(36).slice(2, 11)}`),\n});\n","import { Effect } from \"effect\";\nimport { UploadistaError } from \"../errors/uploadista-error\";\n\n/**\n * Supported checksum algorithms\n */\nconst SUPPORTED_ALGORITHMS = [\"sha256\"] as const;\nexport type ChecksumAlgorithm = (typeof SUPPORTED_ALGORITHMS)[number];\n\n/**\n * Check if a checksum algorithm is supported\n */\nexport function isSupportedAlgorithm(\n algorithm: string,\n): algorithm is ChecksumAlgorithm {\n return SUPPORTED_ALGORITHMS.includes(algorithm as ChecksumAlgorithm);\n}\n\n/**\n * Compute checksum of file bytes using the Web Crypto API.\n * This works across all modern platforms: browsers, Node.js 15+, Deno, Bun, and Cloudflare Workers.\n *\n * @param bytes - File content as Uint8Array\n * @param algorithm - Hashing algorithm to use (currently only 'sha256' is supported)\n * @returns Effect that resolves to hex-encoded checksum string\n */\nexport function computeChecksum(\n bytes: Uint8Array,\n algorithm: string,\n): Effect.Effect<string, UploadistaError> {\n return Effect.gen(function* () {\n // Validate algorithm is supported\n if (!isSupportedAlgorithm(algorithm)) {\n return yield* UploadistaError.fromCode(\"UNSUPPORTED_CHECKSUM_ALGORITHM\", {\n body: `Checksum algorithm '${algorithm}' is not supported. Supported algorithms: ${SUPPORTED_ALGORITHMS.join(\", \")}`,\n details: { algorithm, supportedAlgorithms: SUPPORTED_ALGORITHMS },\n }).toEffect();\n }\n\n // Map algorithm name to Web Crypto API algorithm name\n const webCryptoAlgorithm = algorithm.toUpperCase().replace(/\\d+/, \"-$&\"); // \"sha256\" -> \"SHA-256\"\n\n // Compute hash using Web Crypto API (available in browsers, Node.js 15+, Deno, Bun, Cloudflare Workers)\n // Pass Uint8Array directly - it's a valid BufferSource\n const hashBuffer = yield* Effect.tryPromise({\n try: () =>\n crypto.subtle.digest(webCryptoAlgorithm, bytes as BufferSource),\n catch: (error) =>\n UploadistaError.fromCode(\"UNKNOWN_ERROR\", {\n body: `Failed to compute checksum: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n cause: error,\n details: { algorithm },\n }),\n });\n\n // Convert ArrayBuffer to hex string\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray\n .map((byte) => byte.toString(16).padStart(2, \"0\"))\n .join(\"\");\n\n return hashHex;\n });\n}\n"],"mappings":"4GAOA,IAAa,EAAb,cAAgC,EAAQ,IAAI,8BAA8B,EAGvE,AAAC,GAKJ,MAAa,EAAoB,EAAW,QAM/B,EAAmB,EAAW,GAAG,CAC5C,eAAkB,EAAO,QAAQ,OAAO,YAAY,CAAC,CACtD,CAAC,CAEW,EAAiB,EAAM,QAAQ,EAAY,EAAiB,CAM5D,EAAsB,EAAW,GAAG,CAC/C,eACE,EAAO,QAAQ,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,MAAM,EAAG,GAAG,GAAG,CAC7E,CAAC,CC5BI,EAAuB,CAAC,SAAS,CAMvC,SAAgB,EACd,EACgC,CAChC,OAAO,EAAqB,SAAS,EAA+B,CAWtE,SAAgB,EACd,EACA,EACwC,CACxC,OAAO,EAAO,IAAI,WAAa,CAE7B,GAAI,CAAC,EAAqB,EAAU,CAClC,OAAO,MAAO,EAAgB,SAAS,iCAAkC,CACvE,KAAM,uBAAuB,EAAU,4CAA4C,EAAqB,KAAK,KAAK,GAClH,QAAS,CAAE,YAAW,oBAAqB,EAAsB,CAClE,CAAC,CAAC,UAAU,CAIf,IAAM,EAAqB,EAAU,aAAa,CAAC,QAAQ,MAAO,MAAM,CAIlE,EAAa,MAAO,EAAO,WAAW,CAC1C,QACE,OAAO,OAAO,OAAO,EAAoB,EAAsB,CACjE,MAAQ,GACN,EAAgB,SAAS,gBAAiB,CACxC,KAAM,+BAA+B,aAAiB,MAAQ,EAAM,QAAU,kBAC9E,MAAO,EACP,QAAS,CAAE,YAAW,CACvB,CAAC,CACL,CAAC,CAQF,OALkB,MAAM,KAAK,IAAI,WAAW,EAAW,CAAC,CAErD,IAAK,GAAS,EAAK,SAAS,GAAG,CAAC,SAAS,EAAG,IAAI,CAAC,CACjD,KAAK,GAAG,EAGX"}
@@ -1 +1 @@
1
- const e=require(`../uploadista-error-Di9fniB1.cjs`);require(`../errors-CRm1FHHT.cjs`),exports.ERRORS=e.t,exports.ERROR_CATALOG=e.t,exports.UploadistaError=e.n,exports.httpFailure=e.r,exports.isUploadistaError=e.i;
1
+ const e=require(`../uploadista-error-DIW99WZ1.cjs`);require(`../errors-CRm1FHHT.cjs`),exports.ERRORS=e.t,exports.ERROR_CATALOG=e.t,exports.UploadistaError=e.n,exports.httpFailure=e.r,exports.isUploadistaError=e.i;
@@ -1,3 +1,3 @@
1
- import { a as isUploadistaError, i as httpFailure, n as UploadistaError, r as UploadistaErrorCode, t as ERROR_CATALOG } from "../uploadista-error-DigegPz2.cjs";
1
+ import { a as isUploadistaError, i as httpFailure, n as UploadistaError, r as UploadistaErrorCode, t as ERROR_CATALOG } from "../uploadista-error-CYCmAtkZ.cjs";
2
2
  import "../index-_wQ5ClJU.cjs";
3
3
  export { ERROR_CATALOG as ERRORS, ERROR_CATALOG, UploadistaError, UploadistaErrorCode, httpFailure, isUploadistaError };
@@ -1,3 +1,3 @@
1
- import { a as isUploadistaError, i as httpFailure, n as UploadistaError, r as UploadistaErrorCode, t as ERROR_CATALOG } from "../uploadista-error-DMMrZF03.mjs";
1
+ import { a as isUploadistaError, i as httpFailure, n as UploadistaError, r as UploadistaErrorCode, t as ERROR_CATALOG } from "../uploadista-error-DR0XimpE.mjs";
2
2
  import "../index-C-svZlpj.mjs";
3
3
  export { ERROR_CATALOG as ERRORS, ERROR_CATALOG, UploadistaError, UploadistaErrorCode, httpFailure, isUploadistaError };
@@ -1 +1 @@
1
- import{i as e,n as t,r as n,t as r}from"../uploadista-error-B-kFH_SE.mjs";import"../errors-CtPUOWNd.mjs";export{r as ERRORS,r as ERROR_CATALOG,t as UploadistaError,n as httpFailure,e as isUploadistaError};
1
+ import{i as e,n as t,r as n,t as r}from"../uploadista-error-CkSxSyNo.mjs";import"../errors-CtPUOWNd.mjs";export{r as ERRORS,r as ERROR_CATALOG,t as UploadistaError,n as httpFailure,e as isUploadistaError};
@@ -1 +1 @@
1
- require(`../types-Ce7ILjFt.cjs`),require(`../uploadista-error-Di9fniB1.cjs`),require(`../errors-CRm1FHHT.cjs`);const e=require(`../flow-D7QeEZVs.cjs`);require(`../upload-uQfkhcMj.cjs`),require(`../checksum-B1XGxTsI.cjs`),require(`../stream-limiter-B6CRA3Zd.cjs`),exports.CredentialProvider=e.N,exports.DocumentAiPlugin=e.M,exports.DocumentPlugin=e.j,exports.EventType=e.wt,exports.FlowProvider=e.F,exports.FlowServer=e.I,exports.FlowWaitUntil=e.L,exports.IMAGE_DESCRIPTION_OUTPUT_TYPE_ID=e.rt,exports.ImageAiPlugin=e.A,exports.ImagePlugin=e.k,exports.InputTypeRegistry=e.xt,exports.NodeType=e.ht,exports.OCR_OUTPUT_TYPE_ID=e.it,exports.OutputTypeRegistry=e.vt,exports.ParallelScheduler=e.nt,exports.STORAGE_OUTPUT_TYPE_ID=e.at,exports.STREAMING_INPUT_TYPE_ID=e.ot,exports.VideoPlugin=e.a,exports.VirusScanPlugin=e.i,exports.ZipPlugin=e.r,exports.blurTransformSchema=e.s,exports.brightnessTransformSchema=e.c,exports.completeNodeExecution=e.pt,exports.contrastTransformSchema=e.l,exports.createFlow=e.n,exports.createFlowEdge=e.Tt,exports.createFlowNode=e.gt,exports.createFlowServer=e.R,exports.createFlowWithSchema=e.B,exports.createInputNode=e.lt,exports.createTransformNode=e.P,exports.createTypeGuard=e.H,exports.describeImageParamsSchema=e.O,exports.describeVideoMetadataSchema=e.D,exports.extractFrameVideoParamsSchema=e.E,exports.filterOutputsByType=e.U,exports.flipTransformSchema=e.u,exports.flowServer=e.z,exports.getFirstOutputByType=e.W,exports.getFlowData=e.V,exports.getNodeData=e._t,exports.getOutputByNodeId=e.G,exports.getSingleOutputByType=e.K,exports.grayscaleTransformSchema=e.d,exports.hasOutputOfType=e.q,exports.imageDescriptionOutputSchema=e.st,exports.inputDataSchema=e.ut,exports.inputNodeParamsSchema=e.dt,exports.inputTypeRegistry=e.St,exports.isFinalizeOperation=e.J,exports.isImageDescriptionOutput=e.Y,exports.isInitOperation=e.X,exports.isOcrOutput=e.Z,exports.isStorageOutput=e.Q,exports.isUploadFile=e.$,exports.isUploadOperation=e.et,exports.isUrlOperation=e.tt,exports.logoTransformSchema=e.f,exports.ocrOutputSchema=e.ct,exports.optimizeParamsSchema=e.T,exports.outputTypeRegistry=e.yt,exports.removeBackgroundParamsSchema=e.w,exports.resizeParamsSchema=e.C,exports.resizeTransformSchema=e.p,exports.resizeVideoParamsSchema=e.S,exports.resolveUploadMetadata=e.ft,exports.rotateTransformSchema=e.m,exports.runArgsSchema=e.t,exports.sepiaTransformSchema=e.h,exports.sharpenTransformSchema=e.g,exports.textTransformSchema=e._,exports.transcodeVideoParamsSchema=e.x,exports.transformImageParamsSchema=e.v,exports.transformationSchema=e.y,exports.trimVideoParamsSchema=e.o,exports.validateFlowInput=e.Ct,exports.validateFlowOutput=e.bt,exports.waitingNodeExecution=e.mt,exports.watermarkTransformSchema=e.b;
1
+ require(`../types-CkVwVXLA.cjs`),require(`../uploadista-error-DIW99WZ1.cjs`),require(`../errors-CRm1FHHT.cjs`);const e=require(`../flow-B0AKihCK.cjs`);require(`../upload-CrEoWXaa.cjs`),require(`../checksum-Bs89yEZy.cjs`),require(`../stream-limiter-jdTNLczW.cjs`),exports.AVAILABLE_TEMPLATE_VARIABLES=e.F,exports.CredentialProvider=e.N,exports.DEFAULT_CIRCUIT_BREAKER_CONFIG=e.zt,exports.DistributedCircuitBreaker=e.Nt,exports.DistributedCircuitBreakerRegistry=e.Pt,exports.DocumentAiPlugin=e.M,exports.DocumentPlugin=e.j,exports.EventType=e.jt,exports.FlowProvider=e.H,exports.FlowServer=e.U,exports.FlowWaitUntil=e.W,exports.IMAGE_DESCRIPTION_OUTPUT_TYPE_ID=e.ut,exports.ImageAiPlugin=e.A,exports.ImagePlugin=e.k,exports.InputTypeRegistry=e.Ot,exports.NodeType=e.St,exports.OCR_OUTPUT_TYPE_ID=e.dt,exports.OutputTypeRegistry=e.Tt,exports.ParallelScheduler=e.lt,exports.STORAGE_OUTPUT_TYPE_ID=e.ft,exports.STREAMING_INPUT_TYPE_ID=e.pt,exports.VideoPlugin=e.a,exports.VirusScanPlugin=e.i,exports.ZipPlugin=e.r,exports.applyFileNaming=e.I,exports.blurTransformSchema=e.s,exports.brightnessTransformSchema=e.c,exports.buildNamingContext=e.L,exports.completeNodeExecution=e.bt,exports.contrastTransformSchema=e.l,exports.createFlow=e.n,exports.createFlowEdge=e.Mt,exports.createFlowNode=e.Ct,exports.createFlowServer=e.G,exports.createFlowWithSchema=e.q,exports.createInputNode=e.gt,exports.createTransformNode=e.P,exports.createTypeGuard=e.Y,exports.describeImageParamsSchema=e.O,exports.describeVideoMetadataSchema=e.D,exports.extractFrameVideoParamsSchema=e.E,exports.filterOutputsByType=e.X,exports.flipTransformSchema=e.u,exports.flowServer=e.K,exports.getBaseName=e.R,exports.getExtension=e.z,exports.getFirstOutputByType=e.Z,exports.getFlowData=e.J,exports.getNodeData=e.wt,exports.getOutputByNodeId=e.Q,exports.getSingleOutputByType=e.$,exports.grayscaleTransformSchema=e.d,exports.hasOutputOfType=e.et,exports.imageDescriptionOutputSchema=e.mt,exports.inputDataSchema=e._t,exports.inputNodeParamsSchema=e.vt,exports.inputTypeRegistry=e.kt,exports.interpolateFileName=e.B,exports.isFinalizeOperation=e.tt,exports.isImageDescriptionOutput=e.nt,exports.isInitOperation=e.rt,exports.isOcrOutput=e.it,exports.isStorageOutput=e.at,exports.isUploadFile=e.ot,exports.isUploadOperation=e.st,exports.isUrlOperation=e.ct,exports.kvCircuitBreakerStoreLayer=e.Ft,exports.logoTransformSchema=e.f,exports.makeKvCircuitBreakerStore=e.It,exports.makeMemoryCircuitBreakerStore=e.Lt,exports.memoryCircuitBreakerStoreLayer=e.Rt,exports.ocrOutputSchema=e.ht,exports.optimizeParamsSchema=e.T,exports.outputTypeRegistry=e.Et,exports.removeBackgroundParamsSchema=e.w,exports.resizeParamsSchema=e.C,exports.resizeTransformSchema=e.p,exports.resizeVideoParamsSchema=e.S,exports.resolveUploadMetadata=e.yt,exports.rotateTransformSchema=e.m,exports.runArgsSchema=e.t,exports.sepiaTransformSchema=e.h,exports.sharpenTransformSchema=e.g,exports.textTransformSchema=e._,exports.transcodeVideoParamsSchema=e.x,exports.transformImageParamsSchema=e.v,exports.transformationSchema=e.y,exports.trimVideoParamsSchema=e.o,exports.validateFlowInput=e.At,exports.validateFlowOutput=e.Dt,exports.validatePattern=e.V,exports.waitingNodeExecution=e.xt,exports.watermarkTransformSchema=e.b;
@@ -1,6 +1,6 @@
1
- import "../uploadista-error-DigegPz2.cjs";
1
+ import "../uploadista-error-CYCmAtkZ.cjs";
2
2
  import "../index-_wQ5ClJU.cjs";
3
- import { $ as VideoPluginLayer, $t as DocumentPlugin, A as isInitOperation, Ai as FlowEventJobEnd, An as FlowServerOptions, Ar as OutputValidationResult, At as blurTransformSchema, B as Plugin, Bi as ConditionValue, Br as FlowExecutionResult, Bt as textTransformSchema, C as filterOutputsByType, Ci as EventType, Cn as createInputNode, Cr as OcrOutput, Ct as SepiaTransform, D as hasOutputOfType, Di as FlowEventFlowError, Dn as FlowProviderShape, Dr as ocrOutputSchema, Dt as Transformation, E as getSingleOutputByType, Ei as FlowEventFlowEnd, En as FlowProvider, Er as imageDescriptionOutputSchema, Et as TransformImageParams, F as isUrlOperation, Fi as FlowEventNodeResponse, Fn as flowServer, Fr as InputValidationResult, Ft as logoTransformSchema, G as ZipPluginLayer, Gt as resizeParamsSchema, H as ZipInput, Hi as createFlowNode, Hr as getFlowData, Ht as transformationSchema, I as RemoveBackgroundParams, Ii as FlowEventNodeResume, In as FlowJob, Ir as inputTypeRegistry, It as resizeTransformSchema, J as ScanResult, Jt as ImageAiContext, K as ZipPluginShape, Kt as OptimizeParams, L as removeBackgroundParamsSchema, Li as FlowEventNodeStart, Ln as FlowJobStatus, Lr as validateFlowInput, Lt as rotateTransformSchema, M as isStorageOutput, Mi as FlowEventNodeEnd, Mn as FlowWaitUntil, Mr as validateFlowOutput, Mt as contrastTransformSchema, N as isUploadFile, Ni as FlowEventNodeError, Nn as WaitUntilCallback, Nr as InputTypeDefinition, Nt as flipTransformSchema, O as isFinalizeOperation, Oi as FlowEventFlowPause, On as FlowServer, Or as OutputTypeDefinition, Ot as TransformationType, P as isUploadOperation, Pi as FlowEventNodePause, Pn as createFlowServer, Pr as InputTypeRegistry, Pt as grayscaleTransformSchema, Q as VideoPlugin, Qt as DocumentMetadata, R as DescribeImageParams, Ri as ConditionField, Rn as FlowJobTask, Rr as Flow, Rt as sepiaTransformSchema, S as createTypeGuard, Si as waitingNodeExecution, Sn as InputNodeParams, Sr as OCR_OUTPUT_TYPE_ID, St as RotateTransform, T as getOutputByNodeId, Ti as FlowEventFlowCancel, Tn as inputNodeParamsSchema, Tr as STREAMING_INPUT_TYPE_ID, Tt as TextTransform, U as ZipParams, Ui as getNodeData, Ut as watermarkTransformSchema, V as PluginLayer, Vi as NodeType, Vr as createFlowWithSchema, Vt as transformImageParamsSchema, W as ZipPlugin, Wt as ResizeParams, X as VirusScanPluginLayer, Xt as ImageAiPluginLayer, Y as VirusScanPlugin, Yt as ImageAiPlugin, Z as VirusScanPluginShape, Zt as ImageAiPluginShape, _ as ExtractLayerService, _i as NodeExecutionResult, _n as ParallelScheduler, _t as FlipTransform, a as FlowInputMap, an as DocumentAiContext, at as ResizeVideoParams, b as FlowCondition, bi as TypedOutput, bn as createTransformNode, br as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, bt as OverlayPosition, c as FlowRequirements, cn as DocumentAiPluginShape, ct as extractFrameVideoParamsSchema, d as TypedFlow, di as BuiltInTypedOutput, dn as OcrResult, dt as ImagePlugin, en as DocumentPluginLayer, et as VideoPluginShape, f as TypedFlowConfig, fi as CustomTypedOutput, fn as OcrTaskType, ft as ImagePluginLayer, g as ExtractEffectRequirements, gi as NodeConnectionValidator, gn as ExecutionLevel, gt as ContrastTransform, h as ExtractEffectError, hi as FlowNodeData, hn as CredentialProviderShape, ht as BrightnessTransform, i as runArgsSchema, in as SplitPdfResult, it as transcodeVideoParamsSchema, j as isOcrOutput, ji as FlowEventJobStart, jn as FlowServerShape, jr as outputTypeRegistry, jt as brightnessTransformSchema, k as isImageDescriptionOutput, ki as FlowEventFlowStart, kn as FlowServerLayer, kr as OutputTypeRegistry, kt as WatermarkTransform, l as NodeDefinition, li as FlowEdge, ln as OcrParams, lt as DescribeVideoMetadata, m as createFlow, mi as FlowNode, mn as CredentialProviderLayer, mt as BlurTransform, n as resolveUploadMetadata, nn as MergePdfParams, nt as trimVideoParamsSchema, o as FlowOutputMap, on as DocumentAiPlugin, ot as resizeVideoParamsSchema, p as TypedFlowEdge, pi as FlowConfig, pn as CredentialProvider, pt as ImagePluginShape, q as ScanMetadata, qt as optimizeParamsSchema, r as RunArgs, rn as SplitPdfParams, rt as TranscodeVideoParams, s as FlowPluginRequirements, sn as DocumentAiPluginLayer, st as ExtractFrameVideoParams, t as ResolvedUploadMetadata, tn as DocumentPluginShape, tt as TrimVideoParams, u as NodeDefinitionsRecord, ui as createFlowEdge, un as OcrResolution, ut as describeVideoMetadataSchema, v as ExtractLayerServices, vi as NodeTypeMap, vn as ParallelSchedulerConfig, vt as GrayscaleTransform, w as getFirstOutputByType, wi as FlowEvent, wn as inputDataSchema, wr as STORAGE_OUTPUT_TYPE_ID, wt as SharpenTransform, x as NarrowedTypedOutput, xi as completeNodeExecution, xn as InputData, xr as ImageDescriptionOutput, xt as ResizeTransform, y as ResolveEffect, yi as TypeCompatibilityChecker, yn as TransformNodeConfig, yt as LogoTransform, z as describeImageParamsSchema, zi as ConditionOperator, zn as FlowJobTaskStatus, zr as FlowData, zt as sharpenTransformSchema } from "../index-D5ALjvAb.cjs";
4
- import "../index-CoAMCnm6.cjs";
5
- import "../index-C4zZWqtz.cjs";
6
- export { BlurTransform, BrightnessTransform, BuiltInTypedOutput, ConditionField, ConditionOperator, ConditionValue, ContrastTransform, CredentialProvider, CredentialProviderLayer, CredentialProviderShape, CustomTypedOutput, DescribeImageParams, DescribeVideoMetadata, DocumentAiContext, DocumentAiPlugin, DocumentAiPluginLayer, DocumentAiPluginShape, DocumentMetadata, DocumentPlugin, DocumentPluginLayer, DocumentPluginShape, EventType, ExecutionLevel, ExtractEffectError, ExtractEffectRequirements, ExtractFrameVideoParams, ExtractLayerService, ExtractLayerServices, FlipTransform, Flow, FlowCondition, FlowConfig, FlowData, FlowEdge, FlowEvent, FlowEventFlowCancel, FlowEventFlowEnd, FlowEventFlowError, FlowEventFlowPause, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodePause, FlowEventNodeResponse, FlowEventNodeResume, FlowEventNodeStart, FlowExecutionResult, FlowInputMap, FlowJob, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowNode, FlowNodeData, FlowOutputMap, FlowPluginRequirements, FlowProvider, FlowProviderShape, FlowRequirements, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, FlowWaitUntil, GrayscaleTransform, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, ImageAiContext, ImageAiPlugin, ImageAiPluginLayer, ImageAiPluginShape, ImageDescriptionOutput, ImagePlugin, ImagePluginLayer, ImagePluginShape, InputData, InputNodeParams, InputTypeDefinition, InputTypeRegistry, InputValidationResult, LogoTransform, MergePdfParams, NarrowedTypedOutput, NodeConnectionValidator, NodeDefinition, NodeDefinitionsRecord, NodeExecutionResult, NodeType, NodeTypeMap, OCR_OUTPUT_TYPE_ID, OcrOutput, OcrParams, OcrResolution, OcrResult, OcrTaskType, OptimizeParams, OutputTypeDefinition, OutputTypeRegistry, OutputValidationResult, OverlayPosition, ParallelScheduler, ParallelSchedulerConfig, Plugin, PluginLayer, RemoveBackgroundParams, ResizeParams, ResizeTransform, ResizeVideoParams, ResolveEffect, ResolvedUploadMetadata, RotateTransform, RunArgs, STORAGE_OUTPUT_TYPE_ID, STREAMING_INPUT_TYPE_ID, ScanMetadata, ScanResult, SepiaTransform, SharpenTransform, SplitPdfParams, SplitPdfResult, TextTransform, TranscodeVideoParams, TransformImageParams, TransformNodeConfig, Transformation, TransformationType, TrimVideoParams, TypeCompatibilityChecker, TypedFlow, TypedFlowConfig, TypedFlowEdge, TypedOutput, VideoPlugin, VideoPluginLayer, VideoPluginShape, VirusScanPlugin, VirusScanPluginLayer, VirusScanPluginShape, WaitUntilCallback, WatermarkTransform, ZipInput, ZipParams, ZipPlugin, ZipPluginLayer, ZipPluginShape, blurTransformSchema, brightnessTransformSchema, completeNodeExecution, contrastTransformSchema, createFlow, createFlowEdge, createFlowNode, createFlowServer, createFlowWithSchema, createInputNode, createTransformNode, createTypeGuard, describeImageParamsSchema, describeVideoMetadataSchema, extractFrameVideoParamsSchema, filterOutputsByType, flipTransformSchema, flowServer, getFirstOutputByType, getFlowData, getNodeData, getOutputByNodeId, getSingleOutputByType, grayscaleTransformSchema, hasOutputOfType, imageDescriptionOutputSchema, inputDataSchema, inputNodeParamsSchema, inputTypeRegistry, isFinalizeOperation, isImageDescriptionOutput, isInitOperation, isOcrOutput, isStorageOutput, isUploadFile, isUploadOperation, isUrlOperation, logoTransformSchema, ocrOutputSchema, optimizeParamsSchema, outputTypeRegistry, removeBackgroundParamsSchema, resizeParamsSchema, resizeTransformSchema, resizeVideoParamsSchema, resolveUploadMetadata, rotateTransformSchema, runArgsSchema, sepiaTransformSchema, sharpenTransformSchema, textTransformSchema, transcodeVideoParamsSchema, transformImageParamsSchema, transformationSchema, trimVideoParamsSchema, validateFlowInput, validateFlowOutput, waitingNodeExecution, watermarkTransformSchema };
3
+ import { $ as VideoPlugin, $i as makeMemoryCircuitBreakerStore, $t as DocumentMetadata, A as isImageDescriptionOutput, Ai as FlowEventFlowEnd, An as createInputNode, Ar as OcrOutput, At as WatermarkTransform, B as describeImageParamsSchema, Bi as FlowEventNodeResume, Bn as WaitUntilCallback, Br as InputTypeDefinition, Bt as sharpenTransformSchema, C as createTypeGuard, Ca as DEFAULT_CIRCUIT_BREAKER_CONFIG, Ci as TypeCompatibilityChecker, Cn as ExtractEffectRequirements, Ct as RotateTransform, D as getSingleOutputByType, Di as EventType, Dn as FlowCondition, Dr as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, Dt as TransformImageParams, E as getOutputByNodeId, Ei as waitingNodeExecution, En as ResolveEffect, Et as TextTransform, F as isUploadOperation, Fi as FlowEventJobStart, Fn as FlowServer, Fr as OutputTypeDefinition, Ft as grayscaleTransformSchema, G as ZipPlugin, Gi as NodeType, Gn as FlowJobTask, Gr as Flow, Gt as ResizeParams, H as PluginLayer, Hi as ConditionField, Hn as flowServer, Hr as InputValidationResult, Ht as transformImageParamsSchema, I as isUrlOperation, Ii as FlowEventNodeEnd, In as FlowServerLayer, Ir as OutputTypeRegistry, It as logoTransformSchema, J as ScanMetadata, Ji as AllowRequestResult, Jr as createFlowWithSchema, Jt as optimizeParamsSchema, K as ZipPluginLayer, Ki as createFlowNode, Kn as FlowJobTaskStatus, Kr as FlowData, Kt as resizeParamsSchema, L as RemoveBackgroundParams, Li as FlowEventNodeError, Ln as FlowServerOptions, Lr as OutputValidationResult, Lt as resizeTransformSchema, M as isOcrOutput, Mi as FlowEventFlowPause, Mn as inputNodeParamsSchema, Mr as STREAMING_INPUT_TYPE_ID, Mt as brightnessTransformSchema, N as isStorageOutput, Ni as FlowEventFlowStart, Nn as FlowProvider, Nr as imageDescriptionOutputSchema, Nt as contrastTransformSchema, O as hasOutputOfType, Oi as FlowEvent, On as InputData, Or as ImageDescriptionOutput, Ot as Transformation, P as isUploadFile, Pi as FlowEventJobEnd, Pn as FlowProviderShape, Pr as ocrOutputSchema, Pt as flipTransformSchema, Q as VirusScanPluginShape, Qi as makeKvCircuitBreakerStore, Qt as ImageAiPluginShape, R as removeBackgroundParamsSchema, Ri as FlowEventNodePause, Rn as FlowServerShape, Rr as outputTypeRegistry, Rt as rotateTransformSchema, S as NarrowedTypedOutput, Sa as CircuitBreakerState, Si as NodeTypeMap, Sn as ExtractEffectError, St as ResizeTransform, T as getFirstOutputByType, Ti as completeNodeExecution, Tn as ExtractLayerServices, Tt as SharpenTransform, U as ZipInput, Ui as ConditionOperator, Un as FlowJob, Ur as inputTypeRegistry, Ut as transformationSchema, V as Plugin, Vi as FlowEventNodeStart, Vn as createFlowServer, Vr as InputTypeRegistry, Vt as textTransformSchema, W as ZipParams, Wi as ConditionValue, Wn as FlowJobStatus, Wr as validateFlowInput, Wt as watermarkTransformSchema, X as VirusScanPlugin, Xi as DistributedCircuitBreakerRegistry, Xt as ImageAiPlugin, Y as ScanResult, Yi as DistributedCircuitBreaker, Yr as getFlowData, Yt as ImageAiContext, Z as VirusScanPluginLayer, Zi as kvCircuitBreakerStoreLayer, Zt as ImageAiPluginLayer, _ as NodeDefinitionsRecord, _i as FlowNode, _n as ExecutionLevel, _t as ContrastTransform, a as getExtension, an as SplitPdfResult, at as transcodeVideoParamsSchema, b as TypedFlowEdge, ba as CircuitBreakerEventHandler, bi as NodeConnectionValidator, bn as TransformNodeConfig, bt as LogoTransform, c as ResolvedUploadMetadata, ci as createFlowEdge, cn as DocumentAiPluginLayer, ct as ExtractFrameVideoParams, d as runArgsSchema, di as CustomTypedOutput, dn as OcrResolution, dt as describeVideoMetadataSchema, ea as memoryCircuitBreakerStoreLayer, en as DocumentPlugin, et as VideoPluginLayer, f as FlowInputMap, fi as FileNamingConfig, fn as OcrResult, ft as ImagePlugin, g as NodeDefinition, gi as FlowConfig, gn as CredentialProviderShape, gt as BrightnessTransform, h as FlowRequirements, hi as FlowCircuitBreakerFallback, hn as CredentialProviderLayer, ht as BlurTransform, i as getBaseName, in as SplitPdfParams, it as TranscodeVideoParams, j as isInitOperation, ji as FlowEventFlowError, jn as inputDataSchema, jr as STORAGE_OUTPUT_TYPE_ID, jt as blurTransformSchema, k as isFinalizeOperation, ki as FlowEventFlowCancel, kn as InputNodeParams, kr as OCR_OUTPUT_TYPE_ID, kt as TransformationType, l as resolveUploadMetadata, li as AutoNamingSuffixGenerator, ln as DocumentAiPluginShape, lt as extractFrameVideoParamsSchema, m as FlowPluginRequirements, mi as FlowCircuitBreakerConfig, mn as CredentialProvider, mt as ImagePluginShape, n as applyFileNaming, nn as DocumentPluginShape, nt as TrimVideoParams, o as interpolateFileName, on as DocumentAiContext, ot as ResizeVideoParams, p as FlowOutputMap, pi as FileNamingFunction, pn as OcrTaskType, pt as ImagePluginLayer, q as ZipPluginShape, qi as getNodeData, qr as FlowExecutionResult, qt as OptimizeParams, r as buildNamingContext, rn as MergePdfParams, rt as trimVideoParamsSchema, s as validatePattern, si as FlowEdge, sn as DocumentAiPlugin, st as resizeVideoParamsSchema, t as AVAILABLE_TEMPLATE_VARIABLES, tn as DocumentPluginLayer, tt as VideoPluginShape, u as RunArgs, ui as BuiltInTypedOutput, un as OcrParams, ut as DescribeVideoMetadata, v as TypedFlow, va as CircuitBreakerConfig, vi as FlowNodeData, vn as ParallelScheduler, vt as FlipTransform, w as filterOutputsByType, wi as TypedOutput, wn as ExtractLayerService, wt as SepiaTransform, x as createFlow, xa as CircuitBreakerFallback, xi as NodeExecutionResult, xn as createTransformNode, xt as OverlayPosition, y as TypedFlowConfig, ya as CircuitBreakerEvent, yi as NamingContext, yn as ParallelSchedulerConfig, yt as GrayscaleTransform, z as DescribeImageParams, zi as FlowEventNodeResponse, zn as FlowWaitUntil, zr as validateFlowOutput, zt as sepiaTransformSchema } from "../index-cYpdknQ_.cjs";
4
+ import "../index-9gyMMEIB.cjs";
5
+ import "../index-DFbu_-zn.cjs";
6
+ export { AVAILABLE_TEMPLATE_VARIABLES, AllowRequestResult, AutoNamingSuffixGenerator, BlurTransform, BrightnessTransform, BuiltInTypedOutput, CircuitBreakerConfig, CircuitBreakerEvent, CircuitBreakerEventHandler, CircuitBreakerFallback, CircuitBreakerState, ConditionField, ConditionOperator, ConditionValue, ContrastTransform, CredentialProvider, CredentialProviderLayer, CredentialProviderShape, CustomTypedOutput, DEFAULT_CIRCUIT_BREAKER_CONFIG, DescribeImageParams, DescribeVideoMetadata, DistributedCircuitBreaker, DistributedCircuitBreakerRegistry, DocumentAiContext, DocumentAiPlugin, DocumentAiPluginLayer, DocumentAiPluginShape, DocumentMetadata, DocumentPlugin, DocumentPluginLayer, DocumentPluginShape, EventType, ExecutionLevel, ExtractEffectError, ExtractEffectRequirements, ExtractFrameVideoParams, ExtractLayerService, ExtractLayerServices, FileNamingConfig, FileNamingFunction, FlipTransform, Flow, FlowCircuitBreakerConfig, FlowCircuitBreakerFallback, FlowCondition, FlowConfig, FlowData, FlowEdge, FlowEvent, FlowEventFlowCancel, FlowEventFlowEnd, FlowEventFlowError, FlowEventFlowPause, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodePause, FlowEventNodeResponse, FlowEventNodeResume, FlowEventNodeStart, FlowExecutionResult, FlowInputMap, FlowJob, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowNode, FlowNodeData, FlowOutputMap, FlowPluginRequirements, FlowProvider, FlowProviderShape, FlowRequirements, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, FlowWaitUntil, GrayscaleTransform, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, ImageAiContext, ImageAiPlugin, ImageAiPluginLayer, ImageAiPluginShape, ImageDescriptionOutput, ImagePlugin, ImagePluginLayer, ImagePluginShape, InputData, InputNodeParams, InputTypeDefinition, InputTypeRegistry, InputValidationResult, LogoTransform, MergePdfParams, NamingContext, NarrowedTypedOutput, NodeConnectionValidator, NodeDefinition, NodeDefinitionsRecord, NodeExecutionResult, NodeType, NodeTypeMap, OCR_OUTPUT_TYPE_ID, OcrOutput, OcrParams, OcrResolution, OcrResult, OcrTaskType, OptimizeParams, OutputTypeDefinition, OutputTypeRegistry, OutputValidationResult, OverlayPosition, ParallelScheduler, ParallelSchedulerConfig, Plugin, PluginLayer, RemoveBackgroundParams, ResizeParams, ResizeTransform, ResizeVideoParams, ResolveEffect, ResolvedUploadMetadata, RotateTransform, RunArgs, STORAGE_OUTPUT_TYPE_ID, STREAMING_INPUT_TYPE_ID, ScanMetadata, ScanResult, SepiaTransform, SharpenTransform, SplitPdfParams, SplitPdfResult, TextTransform, TranscodeVideoParams, TransformImageParams, TransformNodeConfig, Transformation, TransformationType, TrimVideoParams, TypeCompatibilityChecker, TypedFlow, TypedFlowConfig, TypedFlowEdge, TypedOutput, VideoPlugin, VideoPluginLayer, VideoPluginShape, VirusScanPlugin, VirusScanPluginLayer, VirusScanPluginShape, WaitUntilCallback, WatermarkTransform, ZipInput, ZipParams, ZipPlugin, ZipPluginLayer, ZipPluginShape, applyFileNaming, blurTransformSchema, brightnessTransformSchema, buildNamingContext, completeNodeExecution, contrastTransformSchema, createFlow, createFlowEdge, createFlowNode, createFlowServer, createFlowWithSchema, createInputNode, createTransformNode, createTypeGuard, describeImageParamsSchema, describeVideoMetadataSchema, extractFrameVideoParamsSchema, filterOutputsByType, flipTransformSchema, flowServer, getBaseName, getExtension, getFirstOutputByType, getFlowData, getNodeData, getOutputByNodeId, getSingleOutputByType, grayscaleTransformSchema, hasOutputOfType, imageDescriptionOutputSchema, inputDataSchema, inputNodeParamsSchema, inputTypeRegistry, interpolateFileName, isFinalizeOperation, isImageDescriptionOutput, isInitOperation, isOcrOutput, isStorageOutput, isUploadFile, isUploadOperation, isUrlOperation, kvCircuitBreakerStoreLayer, logoTransformSchema, makeKvCircuitBreakerStore, makeMemoryCircuitBreakerStore, memoryCircuitBreakerStoreLayer, ocrOutputSchema, optimizeParamsSchema, outputTypeRegistry, removeBackgroundParamsSchema, resizeParamsSchema, resizeTransformSchema, resizeVideoParamsSchema, resolveUploadMetadata, rotateTransformSchema, runArgsSchema, sepiaTransformSchema, sharpenTransformSchema, textTransformSchema, transcodeVideoParamsSchema, transformImageParamsSchema, transformationSchema, trimVideoParamsSchema, validateFlowInput, validateFlowOutput, validatePattern, waitingNodeExecution, watermarkTransformSchema };
@@ -1,6 +1,6 @@
1
- import "../uploadista-error-DMMrZF03.mjs";
1
+ import "../uploadista-error-DR0XimpE.mjs";
2
2
  import "../index-C-svZlpj.mjs";
3
- import { $ as VideoPluginLayer, $t as DocumentPlugin, A as isInitOperation, Ai as FlowEventJobEnd, An as FlowServerOptions, Ar as OutputValidationResult, At as blurTransformSchema, B as Plugin, Bi as ConditionValue, Br as FlowExecutionResult, Bt as textTransformSchema, C as filterOutputsByType, Ci as EventType, Cn as createInputNode, Cr as OcrOutput, Ct as SepiaTransform, D as hasOutputOfType, Di as FlowEventFlowError, Dn as FlowProviderShape, Dr as ocrOutputSchema, Dt as Transformation, E as getSingleOutputByType, Ei as FlowEventFlowEnd, En as FlowProvider, Er as imageDescriptionOutputSchema, Et as TransformImageParams, F as isUrlOperation, Fi as FlowEventNodeResponse, Fn as flowServer, Fr as InputValidationResult, Ft as logoTransformSchema, G as ZipPluginLayer, Gt as resizeParamsSchema, H as ZipInput, Hi as createFlowNode, Hr as getFlowData, Ht as transformationSchema, I as RemoveBackgroundParams, Ii as FlowEventNodeResume, In as FlowJob, Ir as inputTypeRegistry, It as resizeTransformSchema, J as ScanResult, Jt as ImageAiContext, K as ZipPluginShape, Kt as OptimizeParams, L as removeBackgroundParamsSchema, Li as FlowEventNodeStart, Ln as FlowJobStatus, Lr as validateFlowInput, Lt as rotateTransformSchema, M as isStorageOutput, Mi as FlowEventNodeEnd, Mn as FlowWaitUntil, Mr as validateFlowOutput, Mt as contrastTransformSchema, N as isUploadFile, Ni as FlowEventNodeError, Nn as WaitUntilCallback, Nr as InputTypeDefinition, Nt as flipTransformSchema, O as isFinalizeOperation, Oi as FlowEventFlowPause, On as FlowServer, Or as OutputTypeDefinition, Ot as TransformationType, P as isUploadOperation, Pi as FlowEventNodePause, Pn as createFlowServer, Pr as InputTypeRegistry, Pt as grayscaleTransformSchema, Q as VideoPlugin, Qt as DocumentMetadata, R as DescribeImageParams, Ri as ConditionField, Rn as FlowJobTask, Rr as Flow, Rt as sepiaTransformSchema, S as createTypeGuard, Si as waitingNodeExecution, Sn as InputNodeParams, Sr as OCR_OUTPUT_TYPE_ID, St as RotateTransform, T as getOutputByNodeId, Ti as FlowEventFlowCancel, Tn as inputNodeParamsSchema, Tr as STREAMING_INPUT_TYPE_ID, Tt as TextTransform, U as ZipParams, Ui as getNodeData, Ut as watermarkTransformSchema, V as PluginLayer, Vi as NodeType, Vr as createFlowWithSchema, Vt as transformImageParamsSchema, W as ZipPlugin, Wt as ResizeParams, X as VirusScanPluginLayer, Xt as ImageAiPluginLayer, Y as VirusScanPlugin, Yt as ImageAiPlugin, Z as VirusScanPluginShape, Zt as ImageAiPluginShape, _ as ExtractLayerService, _i as NodeExecutionResult, _n as ParallelScheduler, _t as FlipTransform, a as FlowInputMap, an as DocumentAiContext, at as ResizeVideoParams, b as FlowCondition, bi as TypedOutput, bn as createTransformNode, br as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, bt as OverlayPosition, c as FlowRequirements, cn as DocumentAiPluginShape, ct as extractFrameVideoParamsSchema, d as TypedFlow, di as BuiltInTypedOutput, dn as OcrResult, dt as ImagePlugin, en as DocumentPluginLayer, et as VideoPluginShape, f as TypedFlowConfig, fi as CustomTypedOutput, fn as OcrTaskType, ft as ImagePluginLayer, g as ExtractEffectRequirements, gi as NodeConnectionValidator, gn as ExecutionLevel, gt as ContrastTransform, h as ExtractEffectError, hi as FlowNodeData, hn as CredentialProviderShape, ht as BrightnessTransform, i as runArgsSchema, in as SplitPdfResult, it as transcodeVideoParamsSchema, j as isOcrOutput, ji as FlowEventJobStart, jn as FlowServerShape, jr as outputTypeRegistry, jt as brightnessTransformSchema, k as isImageDescriptionOutput, ki as FlowEventFlowStart, kn as FlowServerLayer, kr as OutputTypeRegistry, kt as WatermarkTransform, l as NodeDefinition, li as FlowEdge, ln as OcrParams, lt as DescribeVideoMetadata, m as createFlow, mi as FlowNode, mn as CredentialProviderLayer, mt as BlurTransform, n as resolveUploadMetadata, nn as MergePdfParams, nt as trimVideoParamsSchema, o as FlowOutputMap, on as DocumentAiPlugin, ot as resizeVideoParamsSchema, p as TypedFlowEdge, pi as FlowConfig, pn as CredentialProvider, pt as ImagePluginShape, q as ScanMetadata, qt as optimizeParamsSchema, r as RunArgs, rn as SplitPdfParams, rt as TranscodeVideoParams, s as FlowPluginRequirements, sn as DocumentAiPluginLayer, st as ExtractFrameVideoParams, t as ResolvedUploadMetadata, tn as DocumentPluginShape, tt as TrimVideoParams, u as NodeDefinitionsRecord, ui as createFlowEdge, un as OcrResolution, ut as describeVideoMetadataSchema, v as ExtractLayerServices, vi as NodeTypeMap, vn as ParallelSchedulerConfig, vt as GrayscaleTransform, w as getFirstOutputByType, wi as FlowEvent, wn as inputDataSchema, wr as STORAGE_OUTPUT_TYPE_ID, wt as SharpenTransform, x as NarrowedTypedOutput, xi as completeNodeExecution, xn as InputData, xr as ImageDescriptionOutput, xt as ResizeTransform, y as ResolveEffect, yi as TypeCompatibilityChecker, yn as TransformNodeConfig, yt as LogoTransform, z as describeImageParamsSchema, zi as ConditionOperator, zn as FlowJobTaskStatus, zr as FlowData, zt as sharpenTransformSchema } from "../index-DiHUjE9t.mjs";
4
- import "../index-CHQtirAp.mjs";
5
- import "../index-zQ707AXp.mjs";
6
- export { BlurTransform, BrightnessTransform, BuiltInTypedOutput, ConditionField, ConditionOperator, ConditionValue, ContrastTransform, CredentialProvider, CredentialProviderLayer, CredentialProviderShape, CustomTypedOutput, DescribeImageParams, DescribeVideoMetadata, DocumentAiContext, DocumentAiPlugin, DocumentAiPluginLayer, DocumentAiPluginShape, DocumentMetadata, DocumentPlugin, DocumentPluginLayer, DocumentPluginShape, EventType, ExecutionLevel, ExtractEffectError, ExtractEffectRequirements, ExtractFrameVideoParams, ExtractLayerService, ExtractLayerServices, FlipTransform, Flow, FlowCondition, FlowConfig, FlowData, FlowEdge, FlowEvent, FlowEventFlowCancel, FlowEventFlowEnd, FlowEventFlowError, FlowEventFlowPause, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodePause, FlowEventNodeResponse, FlowEventNodeResume, FlowEventNodeStart, FlowExecutionResult, FlowInputMap, FlowJob, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowNode, FlowNodeData, FlowOutputMap, FlowPluginRequirements, FlowProvider, FlowProviderShape, FlowRequirements, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, FlowWaitUntil, GrayscaleTransform, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, ImageAiContext, ImageAiPlugin, ImageAiPluginLayer, ImageAiPluginShape, ImageDescriptionOutput, ImagePlugin, ImagePluginLayer, ImagePluginShape, InputData, InputNodeParams, InputTypeDefinition, InputTypeRegistry, InputValidationResult, LogoTransform, MergePdfParams, NarrowedTypedOutput, NodeConnectionValidator, NodeDefinition, NodeDefinitionsRecord, NodeExecutionResult, NodeType, NodeTypeMap, OCR_OUTPUT_TYPE_ID, OcrOutput, OcrParams, OcrResolution, OcrResult, OcrTaskType, OptimizeParams, OutputTypeDefinition, OutputTypeRegistry, OutputValidationResult, OverlayPosition, ParallelScheduler, ParallelSchedulerConfig, Plugin, PluginLayer, RemoveBackgroundParams, ResizeParams, ResizeTransform, ResizeVideoParams, ResolveEffect, ResolvedUploadMetadata, RotateTransform, RunArgs, STORAGE_OUTPUT_TYPE_ID, STREAMING_INPUT_TYPE_ID, ScanMetadata, ScanResult, SepiaTransform, SharpenTransform, SplitPdfParams, SplitPdfResult, TextTransform, TranscodeVideoParams, TransformImageParams, TransformNodeConfig, Transformation, TransformationType, TrimVideoParams, TypeCompatibilityChecker, TypedFlow, TypedFlowConfig, TypedFlowEdge, TypedOutput, VideoPlugin, VideoPluginLayer, VideoPluginShape, VirusScanPlugin, VirusScanPluginLayer, VirusScanPluginShape, WaitUntilCallback, WatermarkTransform, ZipInput, ZipParams, ZipPlugin, ZipPluginLayer, ZipPluginShape, blurTransformSchema, brightnessTransformSchema, completeNodeExecution, contrastTransformSchema, createFlow, createFlowEdge, createFlowNode, createFlowServer, createFlowWithSchema, createInputNode, createTransformNode, createTypeGuard, describeImageParamsSchema, describeVideoMetadataSchema, extractFrameVideoParamsSchema, filterOutputsByType, flipTransformSchema, flowServer, getFirstOutputByType, getFlowData, getNodeData, getOutputByNodeId, getSingleOutputByType, grayscaleTransformSchema, hasOutputOfType, imageDescriptionOutputSchema, inputDataSchema, inputNodeParamsSchema, inputTypeRegistry, isFinalizeOperation, isImageDescriptionOutput, isInitOperation, isOcrOutput, isStorageOutput, isUploadFile, isUploadOperation, isUrlOperation, logoTransformSchema, ocrOutputSchema, optimizeParamsSchema, outputTypeRegistry, removeBackgroundParamsSchema, resizeParamsSchema, resizeTransformSchema, resizeVideoParamsSchema, resolveUploadMetadata, rotateTransformSchema, runArgsSchema, sepiaTransformSchema, sharpenTransformSchema, textTransformSchema, transcodeVideoParamsSchema, transformImageParamsSchema, transformationSchema, trimVideoParamsSchema, validateFlowInput, validateFlowOutput, waitingNodeExecution, watermarkTransformSchema };
3
+ import { $ as VideoPlugin, $i as makeMemoryCircuitBreakerStore, $t as DocumentMetadata, A as isImageDescriptionOutput, Ai as FlowEventFlowEnd, An as createInputNode, Ar as OcrOutput, At as WatermarkTransform, B as describeImageParamsSchema, Bi as FlowEventNodeResume, Bn as WaitUntilCallback, Br as InputTypeDefinition, Bt as sharpenTransformSchema, C as createTypeGuard, Ca as DEFAULT_CIRCUIT_BREAKER_CONFIG, Ci as TypeCompatibilityChecker, Cn as ExtractEffectRequirements, Ct as RotateTransform, D as getSingleOutputByType, Di as EventType, Dn as FlowCondition, Dr as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, Dt as TransformImageParams, E as getOutputByNodeId, Ei as waitingNodeExecution, En as ResolveEffect, Et as TextTransform, F as isUploadOperation, Fi as FlowEventJobStart, Fn as FlowServer, Fr as OutputTypeDefinition, Ft as grayscaleTransformSchema, G as ZipPlugin, Gi as NodeType, Gn as FlowJobTask, Gr as Flow, Gt as ResizeParams, H as PluginLayer, Hi as ConditionField, Hn as flowServer, Hr as InputValidationResult, Ht as transformImageParamsSchema, I as isUrlOperation, Ii as FlowEventNodeEnd, In as FlowServerLayer, Ir as OutputTypeRegistry, It as logoTransformSchema, J as ScanMetadata, Ji as AllowRequestResult, Jr as createFlowWithSchema, Jt as optimizeParamsSchema, K as ZipPluginLayer, Ki as createFlowNode, Kn as FlowJobTaskStatus, Kr as FlowData, Kt as resizeParamsSchema, L as RemoveBackgroundParams, Li as FlowEventNodeError, Ln as FlowServerOptions, Lr as OutputValidationResult, Lt as resizeTransformSchema, M as isOcrOutput, Mi as FlowEventFlowPause, Mn as inputNodeParamsSchema, Mr as STREAMING_INPUT_TYPE_ID, Mt as brightnessTransformSchema, N as isStorageOutput, Ni as FlowEventFlowStart, Nn as FlowProvider, Nr as imageDescriptionOutputSchema, Nt as contrastTransformSchema, O as hasOutputOfType, Oi as FlowEvent, On as InputData, Or as ImageDescriptionOutput, Ot as Transformation, P as isUploadFile, Pi as FlowEventJobEnd, Pn as FlowProviderShape, Pr as ocrOutputSchema, Pt as flipTransformSchema, Q as VirusScanPluginShape, Qi as makeKvCircuitBreakerStore, Qt as ImageAiPluginShape, R as removeBackgroundParamsSchema, Ri as FlowEventNodePause, Rn as FlowServerShape, Rr as outputTypeRegistry, Rt as rotateTransformSchema, S as NarrowedTypedOutput, Sa as CircuitBreakerState, Si as NodeTypeMap, Sn as ExtractEffectError, St as ResizeTransform, T as getFirstOutputByType, Ti as completeNodeExecution, Tn as ExtractLayerServices, Tt as SharpenTransform, U as ZipInput, Ui as ConditionOperator, Un as FlowJob, Ur as inputTypeRegistry, Ut as transformationSchema, V as Plugin, Vi as FlowEventNodeStart, Vn as createFlowServer, Vr as InputTypeRegistry, Vt as textTransformSchema, W as ZipParams, Wi as ConditionValue, Wn as FlowJobStatus, Wr as validateFlowInput, Wt as watermarkTransformSchema, X as VirusScanPlugin, Xi as DistributedCircuitBreakerRegistry, Xt as ImageAiPlugin, Y as ScanResult, Yi as DistributedCircuitBreaker, Yr as getFlowData, Yt as ImageAiContext, Z as VirusScanPluginLayer, Zi as kvCircuitBreakerStoreLayer, Zt as ImageAiPluginLayer, _ as NodeDefinitionsRecord, _i as FlowNode, _n as ExecutionLevel, _t as ContrastTransform, a as getExtension, an as SplitPdfResult, at as transcodeVideoParamsSchema, b as TypedFlowEdge, ba as CircuitBreakerEventHandler, bi as NodeConnectionValidator, bn as TransformNodeConfig, bt as LogoTransform, c as ResolvedUploadMetadata, ci as createFlowEdge, cn as DocumentAiPluginLayer, ct as ExtractFrameVideoParams, d as runArgsSchema, di as CustomTypedOutput, dn as OcrResolution, dt as describeVideoMetadataSchema, ea as memoryCircuitBreakerStoreLayer, en as DocumentPlugin, et as VideoPluginLayer, f as FlowInputMap, fi as FileNamingConfig, fn as OcrResult, ft as ImagePlugin, g as NodeDefinition, gi as FlowConfig, gn as CredentialProviderShape, gt as BrightnessTransform, h as FlowRequirements, hi as FlowCircuitBreakerFallback, hn as CredentialProviderLayer, ht as BlurTransform, i as getBaseName, in as SplitPdfParams, it as TranscodeVideoParams, j as isInitOperation, ji as FlowEventFlowError, jn as inputDataSchema, jr as STORAGE_OUTPUT_TYPE_ID, jt as blurTransformSchema, k as isFinalizeOperation, ki as FlowEventFlowCancel, kn as InputNodeParams, kr as OCR_OUTPUT_TYPE_ID, kt as TransformationType, l as resolveUploadMetadata, li as AutoNamingSuffixGenerator, ln as DocumentAiPluginShape, lt as extractFrameVideoParamsSchema, m as FlowPluginRequirements, mi as FlowCircuitBreakerConfig, mn as CredentialProvider, mt as ImagePluginShape, n as applyFileNaming, nn as DocumentPluginShape, nt as TrimVideoParams, o as interpolateFileName, on as DocumentAiContext, ot as ResizeVideoParams, p as FlowOutputMap, pi as FileNamingFunction, pn as OcrTaskType, pt as ImagePluginLayer, q as ZipPluginShape, qi as getNodeData, qr as FlowExecutionResult, qt as OptimizeParams, r as buildNamingContext, rn as MergePdfParams, rt as trimVideoParamsSchema, s as validatePattern, si as FlowEdge, sn as DocumentAiPlugin, st as resizeVideoParamsSchema, t as AVAILABLE_TEMPLATE_VARIABLES, tn as DocumentPluginLayer, tt as VideoPluginShape, u as RunArgs, ui as BuiltInTypedOutput, un as OcrParams, ut as DescribeVideoMetadata, v as TypedFlow, va as CircuitBreakerConfig, vi as FlowNodeData, vn as ParallelScheduler, vt as FlipTransform, w as filterOutputsByType, wi as TypedOutput, wn as ExtractLayerService, wt as SepiaTransform, x as createFlow, xa as CircuitBreakerFallback, xi as NodeExecutionResult, xn as createTransformNode, xt as OverlayPosition, y as TypedFlowConfig, ya as CircuitBreakerEvent, yi as NamingContext, yn as ParallelSchedulerConfig, yt as GrayscaleTransform, z as DescribeImageParams, zi as FlowEventNodeResponse, zn as FlowWaitUntil, zr as validateFlowOutput, zt as sepiaTransformSchema } from "../index-xq80GmLX.mjs";
4
+ import "../index-B9V5SSxl.mjs";
5
+ import "../index-BFSHumky.mjs";
6
+ export { AVAILABLE_TEMPLATE_VARIABLES, AllowRequestResult, AutoNamingSuffixGenerator, BlurTransform, BrightnessTransform, BuiltInTypedOutput, CircuitBreakerConfig, CircuitBreakerEvent, CircuitBreakerEventHandler, CircuitBreakerFallback, CircuitBreakerState, ConditionField, ConditionOperator, ConditionValue, ContrastTransform, CredentialProvider, CredentialProviderLayer, CredentialProviderShape, CustomTypedOutput, DEFAULT_CIRCUIT_BREAKER_CONFIG, DescribeImageParams, DescribeVideoMetadata, DistributedCircuitBreaker, DistributedCircuitBreakerRegistry, DocumentAiContext, DocumentAiPlugin, DocumentAiPluginLayer, DocumentAiPluginShape, DocumentMetadata, DocumentPlugin, DocumentPluginLayer, DocumentPluginShape, EventType, ExecutionLevel, ExtractEffectError, ExtractEffectRequirements, ExtractFrameVideoParams, ExtractLayerService, ExtractLayerServices, FileNamingConfig, FileNamingFunction, FlipTransform, Flow, FlowCircuitBreakerConfig, FlowCircuitBreakerFallback, FlowCondition, FlowConfig, FlowData, FlowEdge, FlowEvent, FlowEventFlowCancel, FlowEventFlowEnd, FlowEventFlowError, FlowEventFlowPause, FlowEventFlowStart, FlowEventJobEnd, FlowEventJobStart, FlowEventNodeEnd, FlowEventNodeError, FlowEventNodePause, FlowEventNodeResponse, FlowEventNodeResume, FlowEventNodeStart, FlowExecutionResult, FlowInputMap, FlowJob, FlowJobStatus, FlowJobTask, FlowJobTaskStatus, FlowNode, FlowNodeData, FlowOutputMap, FlowPluginRequirements, FlowProvider, FlowProviderShape, FlowRequirements, FlowServer, FlowServerLayer, FlowServerOptions, FlowServerShape, FlowWaitUntil, GrayscaleTransform, IMAGE_DESCRIPTION_OUTPUT_TYPE_ID, ImageAiContext, ImageAiPlugin, ImageAiPluginLayer, ImageAiPluginShape, ImageDescriptionOutput, ImagePlugin, ImagePluginLayer, ImagePluginShape, InputData, InputNodeParams, InputTypeDefinition, InputTypeRegistry, InputValidationResult, LogoTransform, MergePdfParams, NamingContext, NarrowedTypedOutput, NodeConnectionValidator, NodeDefinition, NodeDefinitionsRecord, NodeExecutionResult, NodeType, NodeTypeMap, OCR_OUTPUT_TYPE_ID, OcrOutput, OcrParams, OcrResolution, OcrResult, OcrTaskType, OptimizeParams, OutputTypeDefinition, OutputTypeRegistry, OutputValidationResult, OverlayPosition, ParallelScheduler, ParallelSchedulerConfig, Plugin, PluginLayer, RemoveBackgroundParams, ResizeParams, ResizeTransform, ResizeVideoParams, ResolveEffect, ResolvedUploadMetadata, RotateTransform, RunArgs, STORAGE_OUTPUT_TYPE_ID, STREAMING_INPUT_TYPE_ID, ScanMetadata, ScanResult, SepiaTransform, SharpenTransform, SplitPdfParams, SplitPdfResult, TextTransform, TranscodeVideoParams, TransformImageParams, TransformNodeConfig, Transformation, TransformationType, TrimVideoParams, TypeCompatibilityChecker, TypedFlow, TypedFlowConfig, TypedFlowEdge, TypedOutput, VideoPlugin, VideoPluginLayer, VideoPluginShape, VirusScanPlugin, VirusScanPluginLayer, VirusScanPluginShape, WaitUntilCallback, WatermarkTransform, ZipInput, ZipParams, ZipPlugin, ZipPluginLayer, ZipPluginShape, applyFileNaming, blurTransformSchema, brightnessTransformSchema, buildNamingContext, completeNodeExecution, contrastTransformSchema, createFlow, createFlowEdge, createFlowNode, createFlowServer, createFlowWithSchema, createInputNode, createTransformNode, createTypeGuard, describeImageParamsSchema, describeVideoMetadataSchema, extractFrameVideoParamsSchema, filterOutputsByType, flipTransformSchema, flowServer, getBaseName, getExtension, getFirstOutputByType, getFlowData, getNodeData, getOutputByNodeId, getSingleOutputByType, grayscaleTransformSchema, hasOutputOfType, imageDescriptionOutputSchema, inputDataSchema, inputNodeParamsSchema, inputTypeRegistry, interpolateFileName, isFinalizeOperation, isImageDescriptionOutput, isInitOperation, isOcrOutput, isStorageOutput, isUploadFile, isUploadOperation, isUrlOperation, kvCircuitBreakerStoreLayer, logoTransformSchema, makeKvCircuitBreakerStore, makeMemoryCircuitBreakerStore, memoryCircuitBreakerStoreLayer, ocrOutputSchema, optimizeParamsSchema, outputTypeRegistry, removeBackgroundParamsSchema, resizeParamsSchema, resizeTransformSchema, resizeVideoParamsSchema, resolveUploadMetadata, rotateTransformSchema, runArgsSchema, sepiaTransformSchema, sharpenTransformSchema, textTransformSchema, transcodeVideoParamsSchema, transformImageParamsSchema, transformationSchema, trimVideoParamsSchema, validateFlowInput, validateFlowOutput, validatePattern, waitingNodeExecution, watermarkTransformSchema };
@@ -1 +1 @@
1
- import"../uploadista-error-B-kFH_SE.mjs";import"../errors-CtPUOWNd.mjs";import{$ as e,A as t,B as n,C as r,Ct as i,D as a,E as o,F as s,G as c,H as l,I as u,J as d,K as f,L as p,M as m,N as h,O as g,P as _,Q as v,R as y,S as b,St as x,T as S,Tt as C,U as w,V as T,W as E,X as D,Y as O,Z as k,_ as A,_t as j,a as M,at as N,b as P,bt as F,c as I,ct as L,d as R,dt as z,et as B,f as V,ft as H,g as U,gt as W,h as G,ht as K,i as q,it as J,j as Y,k as X,l as Z,lt as Q,m as $,mt as ee,n as te,nt as ne,o as re,ot as ie,p as ae,pt as oe,q as se,r as ce,rt as le,s as ue,st as de,t as fe,tt as pe,u as me,ut as he,v as ge,vt as _e,w as ve,wt as ye,x as be,xt as xe,y as Se,yt as Ce,z as we}from"../flow-CAywogte.mjs";import"../types-CnhCQFkg.mjs";import"../upload-DPX3jSQH.mjs";import"../checksum-DsSiXsPO.mjs";import"../stream-limiter-ByVdSC5T.mjs";export{h as CredentialProvider,m as DocumentAiPlugin,Y as DocumentPlugin,ye as EventType,s as FlowProvider,u as FlowServer,p as FlowWaitUntil,le as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID,t as ImageAiPlugin,X as ImagePlugin,xe as InputTypeRegistry,K as NodeType,J as OCR_OUTPUT_TYPE_ID,_e as OutputTypeRegistry,ne as ParallelScheduler,N as STORAGE_OUTPUT_TYPE_ID,ie as STREAMING_INPUT_TYPE_ID,M as VideoPlugin,q as VirusScanPlugin,ce as ZipPlugin,ue as blurTransformSchema,I as brightnessTransformSchema,oe as completeNodeExecution,Z as contrastTransformSchema,te as createFlow,C as createFlowEdge,W as createFlowNode,y as createFlowServer,n as createFlowWithSchema,Q as createInputNode,_ as createTransformNode,l as createTypeGuard,g as describeImageParamsSchema,a as describeVideoMetadataSchema,o as extractFrameVideoParamsSchema,w as filterOutputsByType,me as flipTransformSchema,we as flowServer,E as getFirstOutputByType,T as getFlowData,j as getNodeData,c as getOutputByNodeId,f as getSingleOutputByType,R as grayscaleTransformSchema,se as hasOutputOfType,de as imageDescriptionOutputSchema,he as inputDataSchema,z as inputNodeParamsSchema,x as inputTypeRegistry,d as isFinalizeOperation,O as isImageDescriptionOutput,D as isInitOperation,k as isOcrOutput,v as isStorageOutput,e as isUploadFile,B as isUploadOperation,pe as isUrlOperation,V as logoTransformSchema,L as ocrOutputSchema,S as optimizeParamsSchema,Ce as outputTypeRegistry,ve as removeBackgroundParamsSchema,r as resizeParamsSchema,ae as resizeTransformSchema,b as resizeVideoParamsSchema,H as resolveUploadMetadata,$ as rotateTransformSchema,fe as runArgsSchema,G as sepiaTransformSchema,U as sharpenTransformSchema,A as textTransformSchema,be as transcodeVideoParamsSchema,ge as transformImageParamsSchema,Se as transformationSchema,re as trimVideoParamsSchema,i as validateFlowInput,F as validateFlowOutput,ee as waitingNodeExecution,P as watermarkTransformSchema};
1
+ import"../uploadista-error-CkSxSyNo.mjs";import"../errors-CtPUOWNd.mjs";import{$ as e,A as t,At as n,B as r,C as i,Ct as a,D as o,Dt as s,E as c,Et as l,F as u,Ft as d,G as f,H as p,I as m,It as h,J as g,K as _,L as v,Lt as y,M as b,Mt as x,N as S,Nt as C,O as w,Ot as T,P as E,Pt as D,Q as O,R as k,Rt as A,S as j,St as M,T as N,Tt as P,U as F,V as I,W as L,X as R,Y as z,Z as B,_ as V,_t as H,a as U,at as W,b as G,bt as K,c as q,ct as J,d as Y,dt as X,et as Z,f as Q,ft as $,g as ee,gt as te,h as ne,ht as re,i as ie,it as ae,j as oe,jt as se,k as ce,kt as le,l as ue,lt as de,m as fe,mt as pe,n as me,nt as he,o as ge,ot as _e,p as ve,pt as ye,q as be,r as xe,rt as Se,s as Ce,st as we,t as Te,tt as Ee,u as De,ut as Oe,v as ke,vt as Ae,w as je,wt as Me,x as Ne,xt as Pe,y as Fe,yt as Ie,z as Le,zt as Re}from"../flow-CszNZOpc.mjs";import"../types-Bbd8jExI.mjs";import"../upload-Cnbo-Ks3.mjs";import"../checksum-COoD-F1l.mjs";import"../stream-limiter-B9nsn2gb.mjs";export{u as AVAILABLE_TEMPLATE_VARIABLES,S as CredentialProvider,Re as DEFAULT_CIRCUIT_BREAKER_CONFIG,C as DistributedCircuitBreaker,D as DistributedCircuitBreakerRegistry,b as DocumentAiPlugin,oe as DocumentPlugin,se as EventType,p as FlowProvider,F as FlowServer,L as FlowWaitUntil,Oe as IMAGE_DESCRIPTION_OUTPUT_TYPE_ID,t as ImageAiPlugin,ce as ImagePlugin,T as InputTypeRegistry,M as NodeType,X as OCR_OUTPUT_TYPE_ID,P as OutputTypeRegistry,de as ParallelScheduler,$ as STORAGE_OUTPUT_TYPE_ID,ye as STREAMING_INPUT_TYPE_ID,U as VideoPlugin,ie as VirusScanPlugin,xe as ZipPlugin,m as applyFileNaming,Ce as blurTransformSchema,q as brightnessTransformSchema,v as buildNamingContext,K as completeNodeExecution,ue as contrastTransformSchema,me as createFlow,x as createFlowEdge,a as createFlowNode,f as createFlowServer,be as createFlowWithSchema,te as createInputNode,E as createTransformNode,z as createTypeGuard,w as describeImageParamsSchema,o as describeVideoMetadataSchema,c as extractFrameVideoParamsSchema,R as filterOutputsByType,De as flipTransformSchema,_ as flowServer,k as getBaseName,Le as getExtension,B as getFirstOutputByType,g as getFlowData,Me as getNodeData,O as getOutputByNodeId,e as getSingleOutputByType,Y as grayscaleTransformSchema,Z as hasOutputOfType,pe as imageDescriptionOutputSchema,H as inputDataSchema,Ae as inputNodeParamsSchema,le as inputTypeRegistry,r as interpolateFileName,Ee as isFinalizeOperation,he as isImageDescriptionOutput,Se as isInitOperation,ae as isOcrOutput,W as isStorageOutput,_e as isUploadFile,we as isUploadOperation,J as isUrlOperation,d as kvCircuitBreakerStoreLayer,Q as logoTransformSchema,h as makeKvCircuitBreakerStore,y as makeMemoryCircuitBreakerStore,A as memoryCircuitBreakerStoreLayer,re as ocrOutputSchema,N as optimizeParamsSchema,l as outputTypeRegistry,je as removeBackgroundParamsSchema,i as resizeParamsSchema,ve as resizeTransformSchema,j as resizeVideoParamsSchema,Ie as resolveUploadMetadata,fe as rotateTransformSchema,Te as runArgsSchema,ne as sepiaTransformSchema,ee as sharpenTransformSchema,V as textTransformSchema,Ne as transcodeVideoParamsSchema,ke as transformImageParamsSchema,Fe as transformationSchema,ge as trimVideoParamsSchema,n as validateFlowInput,s as validateFlowOutput,I as validatePattern,Pe as waitingNodeExecution,G as watermarkTransformSchema};
@@ -0,0 +1 @@
1
+ const e=require(`./types-CkVwVXLA.cjs`),t=require(`./uploadista-error-DIW99WZ1.cjs`),n=require(`./upload-CrEoWXaa.cjs`);let r=require(`effect`),i=require(`zod`),a=require(`micromustache`);const o={enabled:!1,failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:6e4,fallback:{type:`fail`}},s=`uploadista:circuit-breaker:`;function c(t){let n=e=>`${s}${e}`,i=i=>r.Effect.gen(function*(){let r=n(i),a=yield*t.get(r);if(a===null)return null;try{return e.O.deserialize(a)}catch{return yield*t.delete(r),null}}),a=(r,i)=>{let a=n(r),o=e.O.serialize(i);return t.set(a,o)};return{getState:i,setState:a,incrementFailures:(t,n)=>r.Effect.gen(function*(){let r=Date.now(),o=yield*i(t);return o===null&&(o=e.S({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:n})),o=r-o.windowStart>n?{...o,failureCount:1,windowStart:r}:{...o,failureCount:o.failureCount+1},yield*a(t,o),o.failureCount}),resetFailures:e=>r.Effect.gen(function*(){let t=yield*i(e);t!==null&&(yield*a(e,{...t,failureCount:0,windowStart:Date.now()}))}),incrementHalfOpenSuccesses:e=>r.Effect.gen(function*(){let t=yield*i(e);if(t===null)return 1;let n={...t,halfOpenSuccesses:t.halfOpenSuccesses+1};return yield*a(e,n),n.halfOpenSuccesses}),getAllStats:()=>r.Effect.gen(function*(){let e=new Map;if(!t.list)return e;let n=yield*t.list(s),r=Date.now();for(let t of n){let n=t,a=yield*i(n);if(a!==null){let t=r-a.lastStateChange;e.set(n,{nodeType:n,state:a.state,failureCount:a.failureCount,halfOpenSuccesses:a.halfOpenSuccesses,timeSinceLastStateChange:t,timeUntilHalfOpen:a.state===`open`?Math.max(0,a.config.resetTimeout-t):void 0})}}return e}),delete:e=>t.delete(n(e))}}function l(){let t=new Map;return{getState:e=>r.Effect.succeed(t.get(e)??null),setState:(e,n)=>r.Effect.sync(()=>{t.set(e,n)}),incrementFailures:(n,i)=>r.Effect.sync(()=>{let r=Date.now(),a=t.get(n);return a===void 0&&(a=e.S({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:i})),a=r-a.windowStart>i?{...a,failureCount:1,windowStart:r}:{...a,failureCount:a.failureCount+1},t.set(n,a),a.failureCount}),resetFailures:e=>r.Effect.sync(()=>{let n=t.get(e);n!==void 0&&t.set(e,{...n,failureCount:0,windowStart:Date.now()})}),incrementHalfOpenSuccesses:e=>r.Effect.sync(()=>{let n=t.get(e);if(n===void 0)return 1;let r={...n,halfOpenSuccesses:n.halfOpenSuccesses+1};return t.set(e,r),r.halfOpenSuccesses}),getAllStats:()=>r.Effect.sync(()=>{let e=new Map,n=Date.now();for(let[r,i]of t){let t=n-i.lastStateChange;e.set(r,{nodeType:r,state:i.state,failureCount:i.failureCount,halfOpenSuccesses:i.halfOpenSuccesses,timeSinceLastStateChange:t,timeUntilHalfOpen:i.state===`open`?Math.max(0,i.config.resetTimeout-t):void 0})}return e}),delete:e=>r.Effect.sync(()=>{t.delete(e)})}}const u=r.Layer.effect(e.x,r.Effect.gen(function*(){return c(yield*e.C)})),d=r.Layer.succeed(e.x,l());var f=class{eventHandler;nodeType;config;store;constructor(e,t,n){this.nodeType=e,this.config={enabled:t.enabled??o.enabled,failureThreshold:t.failureThreshold??o.failureThreshold,resetTimeout:t.resetTimeout??o.resetTimeout,halfOpenRequests:t.halfOpenRequests??o.halfOpenRequests,windowDuration:t.windowDuration??o.windowDuration,fallback:t.fallback??o.fallback},this.store=n}setEventHandler(e){this.eventHandler=e}allowRequest(){let t=this;return r.Effect.gen(function*(){if(!t.config.enabled)return{allowed:!0,state:`closed`,failureCount:0};let n=yield*t.store.getState(t.nodeType),r=Date.now();if(n===null&&(n=e.S({failureThreshold:t.config.failureThreshold,resetTimeout:t.config.resetTimeout,halfOpenRequests:t.config.halfOpenRequests,windowDuration:t.config.windowDuration}),yield*t.store.setState(t.nodeType,n)),n.state===`open`&&r-n.lastStateChange>=t.config.resetTimeout){let e=n.state;n={...n,state:`half-open`,halfOpenSuccesses:0,lastStateChange:r},yield*t.store.setState(t.nodeType,n),yield*t.emitEvent(e,`half-open`,n.failureCount)}return{allowed:n.state!==`open`,state:n.state,failureCount:n.failureCount}})}getState(){let e=this;return r.Effect.gen(function*(){return(yield*e.store.getState(e.nodeType))?.state??`closed`})}getFailureCount(){let e=this;return r.Effect.gen(function*(){return(yield*e.store.getState(e.nodeType))?.failureCount??0})}recordSuccess(){let e=this;return r.Effect.gen(function*(){if(!e.config.enabled)return;let t=yield*e.store.getState(e.nodeType);t!==null&&(t.state===`half-open`?(yield*e.store.incrementHalfOpenSuccesses(e.nodeType))>=e.config.halfOpenRequests&&(yield*e.transitionTo(`closed`,t.failureCount)):t.state===`closed`&&(yield*e.store.resetFailures(e.nodeType)))})}recordFailure(e){let t=this;return r.Effect.gen(function*(){if(!t.config.enabled)return;let e=yield*t.store.getState(t.nodeType);if(e===null||e.state===`closed`){let e=yield*t.store.incrementFailures(t.nodeType,t.config.windowDuration);e>=t.config.failureThreshold&&(yield*t.transitionTo(`open`,e))}else e.state===`half-open`&&(yield*t.transitionTo(`open`,e.failureCount))})}getFallback(){return this.config.fallback}reset(){let t=this;return r.Effect.gen(function*(){let n=(yield*t.store.getState(t.nodeType))?.state??`closed`;yield*t.store.setState(t.nodeType,e.S({failureThreshold:t.config.failureThreshold,resetTimeout:t.config.resetTimeout,halfOpenRequests:t.config.halfOpenRequests,windowDuration:t.config.windowDuration})),n!==`closed`&&(yield*t.emitEvent(n,`closed`,0))})}transitionTo(e,t){let n=this;return r.Effect.gen(function*(){let r=yield*n.store.getState(n.nodeType),i=r?.state??`closed`;if(i===e)return;let a=Date.now(),o={state:e,failureCount:e===`closed`?0:t,lastStateChange:a,halfOpenSuccesses:0,windowStart:e===`closed`?a:r?.windowStart??a,config:{failureThreshold:n.config.failureThreshold,resetTimeout:n.config.resetTimeout,halfOpenRequests:n.config.halfOpenRequests,windowDuration:n.config.windowDuration}};yield*n.store.setState(n.nodeType,o),yield*n.emitEvent(i,e,t)})}emitEvent(e,t,n){let i=this;return r.Effect.gen(function*(){i.eventHandler&&(yield*i.eventHandler({nodeType:i.nodeType,previousState:e,newState:t,timestamp:Date.now(),failureCount:n}))})}},p=class{breakers=new Map;eventHandler;constructor(e){this.store=e}setEventHandler(e){this.eventHandler=e;for(let t of this.breakers.values())t.setEventHandler(e)}getOrCreate(e,t){let n=this.breakers.get(e);return n||(n=new f(e,t,this.store),this.eventHandler&&n.setEventHandler(this.eventHandler),this.breakers.set(e,n)),n}get(e){return this.breakers.get(e)}getAllStats(){return this.store.getAllStats()}resetAll(){let e=this;return r.Effect.gen(function*(){for(let t of e.breakers.values())yield*t.reset()})}clear(){this.breakers.clear()}};function m({source:e,target:t,sourcePort:n,targetPort:r}){return{source:e,target:t,sourcePort:n,targetPort:r}}let h=function(e){return e.JobStart=`job-start`,e.JobEnd=`job-end`,e.FlowStart=`flow-start`,e.FlowEnd=`flow-end`,e.FlowError=`flow-error`,e.FlowPause=`flow-pause`,e.FlowCancel=`flow-cancel`,e.NodeStart=`node-start`,e.NodeEnd=`node-end`,e.NodePause=`node-pause`,e.NodeResume=`node-resume`,e.NodeError=`node-error`,e.NodeStream=`node-stream`,e.NodeResponse=`node-response`,e}({});var g=class{types;constructor(){this.types=new Map}register(e){if(this.types.has(e.id))throw t.n.fromCode(`VALIDATION_ERROR`,{body:`Input type "${e.id}" is already registered. Types cannot be modified or re-registered.`,details:{typeId:e.id}});this.types.set(e.id,e)}get(e){return this.types.get(e)}list(){return Array.from(this.types.values())}validate(e,n){let r=this.types.get(e);if(!r)return{success:!1,error:t.n.fromCode(`VALIDATION_ERROR`,{body:`Input type "${e}" is not registered`,details:{typeId:e}})};try{return{success:!0,data:r.schema.parse(n)}}catch(n){return{success:!1,error:t.n.fromCode(`VALIDATION_ERROR`,{body:`Data validation failed for input type "${e}"`,cause:n,details:{typeId:e,validationErrors:n}})}}}has(e){return this.types.has(e)}size(){return this.types.size}};const _=new g;function v(e,t){return _.validate(e,t)}var y=class{types;constructor(){this.types=new Map}register(e){if(this.types.has(e.id))throw t.n.fromCode(`VALIDATION_ERROR`,{body:`Output type "${e.id}" is already registered. Types cannot be modified or re-registered.`,details:{typeId:e.id}});this.types.set(e.id,e)}get(e){return this.types.get(e)}list(){return Array.from(this.types.values())}validate(e,n){let r=this.types.get(e);if(!r)return{success:!1,error:t.n.fromCode(`VALIDATION_ERROR`,{body:`Output type "${e}" is not registered`,details:{typeId:e}})};try{return{success:!0,data:r.schema.parse(n)}}catch(n){return{success:!1,error:t.n.fromCode(`VALIDATION_ERROR`,{body:`Data validation failed for output type "${e}"`,cause:n,details:{typeId:e,validationErrors:n}})}}}has(e){return this.types.has(e)}size(){return this.types.size}};const b=new y;function x(e,t){return b.validate(e,t)}let S=function(e){return e.input=`input`,e.process=`process`,e.conditional=`conditional`,e.multiplex=`multiplex`,e.merge=`merge`,e}({});function C({id:e,name:n,description:i,type:a,inputSchema:o,outputSchema:s,run:c,condition:l,multiInput:u=!1,multiOutput:d=!1,pausable:f=!1,retry:p,inputTypeId:m,outputTypeId:h,keepOutput:g=!1,circuitBreaker:v}){return r.Effect.gen(function*(){return m&&!_.get(m)?yield*t.n.fromCode(`INVALID_INPUT_TYPE`,{body:`Input type "${m}" is not registered in inputTypeRegistry`,details:{inputTypeId:m,nodeId:e}}).toEffect():h&&!b.get(h)?yield*t.n.fromCode(`INVALID_OUTPUT_TYPE`,{body:`Output type "${h}" is not registered in outputTypeRegistry`,details:{outputTypeId:h,nodeId:e}}).toEffect():{id:e,name:n,description:i,type:a,inputTypeId:m,outputTypeId:h,keepOutput:g,inputSchema:o,outputSchema:s,pausable:f,run:({data:i,jobId:a,flowId:l,storageId:u,clientId:d})=>r.Effect.gen(function*(){let f=yield*c({data:yield*r.Effect.try({try:()=>o.parse(i),catch:r=>{let i=r instanceof Error?r.message:String(r);return t.n.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${e}) input validation failed: ${i}`,cause:r})}}),jobId:a,storageId:u,flowId:l,clientId:d});return f.type===`waiting`?{type:`waiting`,partialData:f.partialData,nodeType:h,nodeId:e}:{type:`complete`,data:yield*r.Effect.try({try:()=>s.parse(f.data),catch:r=>{let i=r instanceof Error?r.message:String(r);return t.n.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${e}) output validation failed: ${i}`,cause:r})}}),nodeType:h,nodeId:e}}),condition:l,multiInput:u,multiOutput:d,retry:p,circuitBreaker:v}})}const w=e=>({id:e.id,name:e.name,description:e.description,type:e.type,inputTypeId:e.inputTypeId,outputTypeId:e.outputTypeId}),T=e=>({type:`complete`,data:e}),E=e=>({type:`waiting`,partialData:e}),D=(e,t)=>{if(e===t)return!0;try{return!!(e&&t&&typeof e==`object`&&typeof t==`object`)}catch{return!0}};var O=class{typeChecker;constructor(e=D){this.typeChecker=e}validateConnection(e,t,n){return this.getCompatibleTypes(e.outputSchema,t.inputSchema)}getCompatibleTypes(e,t){return this.typeChecker(e,t)}validateFlow(e,t){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let e of t){let t=r.get(e.source),i=r.get(e.target);if(!t){n.push(`Source node ${e.source} not found`);continue}if(!i){n.push(`Target node ${e.target} not found`);continue}this.validateConnection(t,i,e)||n.push(`Schema mismatch: ${t.id} output schema incompatible with ${i.id} input schema`)}return{isValid:n.length===0,errors:n}}getExpectedInputSchemas(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i={};for(let t of n)if(t.target===e){let e=r.get(t.source);if(e){let n=t.sourcePort||t.source;i[n]=e.outputSchema}}return i}getActualOutputSchemas(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i={};for(let t of n)if(t.source===e){let e=r.get(t.target);if(e){let n=t.targetPort||t.target;i[n]=e.inputSchema}}return i}validateData(e,t){try{return t.parse(e),{isValid:!0,errors:[]}}catch(e){return e instanceof Error&&`errors`in e?{isValid:!1,errors:e.errors.map(e=>`${e.path.join(`.`)}: ${e.message}`)}:{isValid:!1,errors:[e instanceof Error?e.message:`Validation failed`]}}}};function k(e){if(!e)return{type:``,fileName:``,metadata:void 0,metadataJson:void 0};let t={...e},n=String(t.type||t.mimeType||t[`content-type`]||``);n&&(t.type||=n,t.mimeType||=n);let r=String(t.fileName||t.originalName||t.name||``);return r&&(t.fileName||=r,t.originalName||=r,t.name||=r),{type:n,fileName:r,metadata:t,metadataJson:JSON.stringify(t)}}const A=i.z.object({operation:i.z.literal(`init`),storageId:i.z.string(),metadata:i.z.record(i.z.string(),i.z.any()).optional()}),j=i.z.object({operation:i.z.literal(`finalize`),uploadId:i.z.string()}),M=i.z.object({operation:i.z.literal(`url`),url:i.z.string(),storageId:i.z.string().optional(),metadata:i.z.record(i.z.string(),i.z.any()).optional()}),N=i.z.union([A,j,M]),P=i.z.object({allowedMimeTypes:i.z.array(i.z.string()).optional(),minSize:i.z.number().positive().optional(),maxSize:i.z.number().positive().optional()});function ee(e,n){return r.Effect.gen(function*(){if(n){if(n.allowedMimeTypes&&n.allowedMimeTypes.length>0&&!n.allowedMimeTypes.some(t=>{if(t.endsWith(`/*`)){let n=t.slice(0,-2);return e.type.startsWith(n)}return e.type===t}))throw yield*t.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`File type "${e.type}" is not allowed. Allowed types: ${n.allowedMimeTypes.join(`, `)}`)}).toEffect();if(n.minSize!==void 0&&e.size<n.minSize)throw yield*t.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${e.size} bytes) is below minimum (${n.minSize} bytes)`)}).toEffect();if(n.maxSize!==void 0&&e.size>n.maxSize)throw yield*t.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${e.size} bytes) exceeds maximum (${n.maxSize} bytes)`)}).toEffect()}})}function te(i,a,o){let s=o?.keepOutput??!1;return r.Effect.gen(function*(){let o=yield*n.n;return yield*C({id:i,name:`Input`,description:`Handles file input through multiple methods - streaming upload (init/finalize) or direct URL fetch`,type:S.input,inputSchema:N,outputSchema:e.b,keepOutput:s,inputTypeId:R,outputTypeId:F,run:({data:e,flowId:s,jobId:c,clientId:l})=>r.Effect.gen(function*(){switch(e.operation){case`init`:{let t={storageId:e.storageId,size:e.metadata?.size||0,type:e.metadata?.mimeType||`application/octet-stream`,fileName:e.metadata?.originalName,lastModified:e.metadata?.size?Date.now():void 0,metadata:e.metadata?JSON.stringify(e.metadata):void 0,flow:{flowId:s,nodeId:i,jobId:c}};return E(yield*o.createUpload(t,l))}case`finalize`:{let t=yield*o.getUpload(e.uploadId),{type:n}=k(t.metadata);return yield*ee({type:n,size:t.size||0},a),T(t)}case`url`:{let t=yield*n.o(e.url),r=yield*n.a(t),u=e.metadata?.mimeType||t.headers.get(`content-type`)||`application/octet-stream`,d=e.metadata?.size||Number(t.headers.get(`content-length`)||0),f=e.metadata?.originalName||e.url.split(`/`).pop()||`file`;yield*ee({type:u,size:d},a);let p=new ReadableStream({start(e){e.enqueue(new Uint8Array(r)),e.close()}}),m={storageId:e.storageId||`buffer`,size:d,type:u,fileName:f,lastModified:Date.now(),metadata:e.metadata?JSON.stringify(e.metadata):void 0};return T({...yield*o.upload(m,l,p),flow:{flowId:s,nodeId:i,jobId:c}})}default:throw yield*t.n.fromCode(`VALIDATION_ERROR`,{cause:Error(`Invalid operation`)}).toEffect()}})})})}const F=`storage-output-v1`,I=`ocr-output-v1`,L=`image-description-output-v1`,R=`streaming-input-v1`,z=i.z.object({extractedText:i.z.string(),format:i.z.enum([`markdown`,`plain`,`structured`]),taskType:i.z.enum([`convertToMarkdown`,`freeOcr`,`parseFigure`,`locateObject`]),confidence:i.z.number().min(0).max(1).optional()}),B=i.z.object({description:i.z.string(),confidence:i.z.number().min(0).max(1).optional(),metadata:i.z.record(i.z.string(),i.z.unknown()).optional()});_.register({id:R,schema:N,version:`1.0.0`,description:`Streaming file input with init/finalize/url operations for flexible file ingestion`}),b.register({id:F,schema:e.b,version:`1.0.0`,description:`Storage output node that saves files to configured storage backend`}),b.register({id:I,schema:z,version:`1.0.0`,description:`OCR output node that extracts structured text from documents using AI`}),b.register({id:L,schema:B,version:`1.0.0`,description:`Image description output node that generates AI-powered descriptions of images`});var ne=class{maxConcurrency;constructor(e={}){this.maxConcurrency=e.maxConcurrency??4}groupNodesByExecutionLevel(e,t){let n={},r={};e.forEach(e=>{n[e.id]=[],r[e.id]=0}),t.forEach(e=>{n[e.source]?.push(e.target),r[e.target]=(r[e.target]||0)+1});let i=[],a=new Set,o=0;for(;a.size<e.length;){let e=Object.keys(r).filter(e=>r[e]===0&&!a.has(e));if(e.length===0)throw Error(`Cycle detected in flow graph - cannot execute in parallel`);i.push({level:o++,nodes:e}),e.forEach(e=>{a.add(e),delete r[e],n[e]?.forEach(e=>{r[e]!==void 0&&r[e]--})})}return i}executeNodesInParallel(e){return r.Effect.all(e.map(e=>e()),{concurrency:this.maxConcurrency})}canExecuteInParallel(e,t,n){return e.every(e=>(n[e]||[]).every(e=>t.has(e)))}getStats(){return{maxConcurrency:this.maxConcurrency}}};function V(e){return t=>{if(t.nodeType!==e)return!1;let n=b.get(e);return n?n.schema.safeParse(t.data).success:!1}}function H(t){return!t||typeof t!=`object`?!1:e.b.safeParse(t).success}const re=V(`storage-output-v1`),ie=V(I),ae=V(L);function U(e,t){return e.filter(t)}function oe(e,n){return r.Effect.gen(function*(){let r=U(e,n);return r.length===0?yield*t.n.fromCode(`OUTPUT_NOT_FOUND`,{body:`No output of the specified type was found in the flow results`}).toEffect():r.length>1?yield*t.n.fromCode(`MULTIPLE_OUTPUTS_FOUND`,{body:`Found ${r.length} outputs of the specified type, expected exactly one`,details:{foundCount:r.length,nodeIds:r.map(e=>e.nodeId)}}).toEffect():r[0]})}function se(e,t){return U(e,t)[0]}function ce(e,t){return e.find(e=>e.nodeId===t)}function le(e,t){return e.some(t)}function ue(e){return e.operation===`init`}function de(e){return e.operation===`finalize`}function fe(e){return e.operation===`url`}function pe(e){return e.operation===`init`||e.operation===`url`}const W=e=>({id:e.id,name:e.name,nodes:e.nodes.map(w),edges:e.edges});function G(n){return r.Effect.gen(function*(){let a=yield*r.Effect.all(n.nodes.map(e=>r.Effect.isEffect(e)?e:r.Effect.succeed(e))),{flowId:o,name:s,onEvent:c,checkJobStatus:l,edges:u,inputSchema:d,outputSchema:f,typeChecker:m,circuitBreaker:g}=n,_=a,v=new O(m),y=e=>{let t=e.circuitBreaker,n=e.name?g?.nodeTypeOverrides?.[e.name]:void 0,r=g?.defaults;if(!(!t&&!n&&!r))return{...r,...n,...t}},b=()=>{let e={},t={},n={};return _.forEach(r=>{e[r.id]=[],n[r.id]=[],t[r.id]=0}),u.forEach(r=>{e[r.source]?.push(r.target),n[r.target]?.push(r.source),t[r.target]=(t[r.target]||0)+1}),{graph:e,reverseGraph:n,inDegree:t}},x=()=>{let{graph:e,inDegree:t}=b(),n=[],r=[];for(Object.keys(t).forEach(e=>{t[e]===0&&n.push(e)});n.length>0;){let i=n.shift();if(!i)throw Error(`No current node found`);r.push(i),e[i]?.forEach(e=>{t[e]=(t[e]||0)-1,t[e]===0&&n.push(e)})}return r},S=(e,t)=>{if(!e.condition)return r.Effect.succeed(!0);let{field:n,operator:i,value:a}=e.condition,o=t,s=o?.metadata?.[n]||o?.[n],c=(()=>{switch(i){case`equals`:return s===a;case`notEquals`:return s!==a;case`greaterThan`:return Number(s)>Number(a);case`lessThan`:return Number(s)<Number(a);case`contains`:return String(s).includes(String(a));case`startsWith`:return String(s).startsWith(String(a));default:return!0}})();return r.Effect.succeed(c)},C=(e,t)=>{let{reverseGraph:n}=b(),r=n[e]||[],i={};return r.forEach(e=>{let n=t.get(e);n!==void 0&&(i[e]=n)}),i},w=e=>{let t=_.filter(e=>e.type===`input`),n={};return t.forEach(t=>{e&&typeof e==`object`&&t.id in e&&(n[t.id]=d.parse(e[t.id]))}),n},T=e=>!u.some(t=>t.source===e),E=e=>{let t=_.find(t=>t.id===e);return T(e)||t?.keepOutput===!0},D=e=>{let t=_.filter(e=>E(e.id)),n={};return t.forEach(t=>{let r=e.get(t.id);r!==void 0&&(n[t.id]=r)}),n},k=(e,t)=>{let n=_.filter(e=>E(e.id)),r=[];return n.forEach(n=>{let i=e.get(n.id);if(i!==void 0){let e=t.get(n.id);r.push({nodeId:n.id,nodeType:e,data:i,timestamp:new Date().toISOString()})}}),r},A=(t,n,i)=>r.Effect.gen(function*(){if(t.storage.id===n)return t;let a=yield*e._,o=yield*a.getDataStore(t.storage.id,i),s=yield*a.getDataStore(n,i),c=yield*o.read(t.id),l=r.Stream.make(c),u={...t,storage:{id:n,type:t.storage.type}},d=yield*s.create(u);return yield*s.write({file_id:d.id,stream:l,offset:0},{}),d}),j=(e,i,a,s,u,d,f,p)=>r.Effect.gen(function*(){let m=u.get(e);if(!m)return yield*t.n.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(l){let e=yield*l(d);if(e===`paused`)return yield*t.n.fromCode(`FLOW_PAUSED`,{cause:`Flow ${o} was paused by user at job ${d}`}).toEffect();if(e===`cancelled`)return yield*t.n.fromCode(`FLOW_CANCELLED`,{cause:`Flow ${o} was cancelled by user at job ${d}`}).toEffect()}c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeStart,nodeName:m.name,nodeType:m.type}));let g=m.retry?.maxRetries??0,_=m.retry?.retryDelay??1e3,v=m.retry?.exponentialBackoff??!0,b=y(m),x=b?.enabled&&m.name&&p?p.getOrCreate(m.name,b):null;if(x){let{allowed:n,state:i,failureCount:s}=yield*x.allowRequest();if(!n){let n=x.getFallback();return yield*r.Effect.logWarning(`Circuit breaker OPEN for node type "${m.name}" - applying fallback`),n.type===`skip`?(c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeEnd,nodeName:m.name})),{nodeId:e,result:a[e],success:!0,waiting:!1}):n.type===`default`?(c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeEnd,nodeName:m.name,result:n.value})),{nodeId:e,result:n.value,success:!0,waiting:!1}):yield*t.n.fromCode(`CIRCUIT_BREAKER_OPEN`,{body:`Circuit breaker is open for node type "${m.name}"`,details:{nodeType:m.name,nodeId:e,state:i,failureCount:s}}).toEffect()}}let w=0,T=null;for(;w<=g;)try{let l,u={};if(m.type===`input`){if(l=a[e],l===void 0)return yield*r.Effect.logError(`Input node ${e} has no input data`),yield*t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Input node ${e} has no input data`)}).toEffect()}else{if(u=C(e,s),Object.keys(u).length===0)return yield*r.Effect.logError(`Node ${e} has no input data`),yield*t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${e} has no input data`)}).toEffect();if(m.multiInput)l=u;else{let n=Object.keys(u)[0];if(!n)return yield*t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${e} has no input data`)}).toEffect();l=u[n]}}if(m.type===`conditional`&&!(yield*S(m,l)))return c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeEnd,nodeName:m.name})),{nodeId:e,result:l,success:!0,waiting:!1};let p=yield*m.run({data:l,inputs:u,jobId:d,flowId:o,storageId:i,clientId:f});if(p.type===`waiting`){let t=p.partialData;return c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodePause,nodeName:m.name,partialData:t})),{nodeId:e,result:t,success:!0,waiting:!0,nodeType:p.nodeType}}let g=p.data;if(E(e)&&(H(g)&&g.storage.id!==i&&(yield*r.Effect.logDebug(`Auto-persisting output node ${e} output from ${g.storage.id} to ${i}`),g=yield*A(g,i,f)),n.hooks?.onNodeOutput)){yield*r.Effect.logDebug(`Calling onNodeOutput hook for sink node ${e}`);let t=n.hooks.onNodeOutput({output:g,nodeId:e,flowId:o,jobId:d,storageId:i,clientId:f});g=yield*r.Effect.isEffect(t)?t:r.Effect.promise(()=>t)}return x&&(yield*x.recordSuccess()),c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeEnd,nodeName:m.name,result:g})),{nodeId:e,result:g,success:!0,waiting:!1,nodeType:p.nodeType}}catch(n){if(T=n instanceof t.n?n:t.n.fromCode(`FLOW_NODE_ERROR`,{cause:n}),x&&(yield*x.recordFailure(T.body)),w<g){w++;let t=v?_*2**(w-1):_;yield*r.Effect.logWarning(`Node ${e} (${m.name}) failed, retrying (${w}/${g}) after ${t}ms`),yield*r.Effect.sleep(t);continue}return c&&(yield*c({jobId:d,flowId:o,nodeId:e,eventType:h.NodeError,nodeName:m.name,error:T.body,retryCount:w})),yield*T.toEffect()}return T?yield*T.toEffect():yield*t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Unexpected error in retry loop`)}).toEffect()}),M=({inputs:a,storageId:s,jobId:l,resumeFrom:d,clientId:m})=>r.Effect.gen(function*(){let g=yield*r.Effect.serviceOption(e.x),v=g._tag===`Some`?new p(g.value):null;!d&&c&&(yield*c({jobId:l,eventType:h.FlowStart,flowId:o}));let y=w(a||{}),b,S,C;d?(b=d.executionOrder,S=d.nodeResults,C=d.currentIndex):(b=x(),S=new Map,C=0);let T=new Map;if(b.length!==_.length)return yield*t.n.fromCode(`FLOW_CYCLE_ERROR`).toEffect();let O=new Map(_.map(e=>[e.id,e]));if(n.parallelExecution?.enabled??!1){yield*r.Effect.logDebug(`Flow ${o}: Executing in parallel mode (maxConcurrency: ${n.parallelExecution?.maxConcurrency??4})`);let e=new ne({maxConcurrency:n.parallelExecution?.maxConcurrency??4}),t=e.groupNodesByExecutionLevel(_,u);yield*r.Effect.logDebug(`Flow ${o}: Grouped nodes into ${t.length} execution levels`);let i={};_.forEach(e=>{i[e.id]=[]}),u.forEach(e=>{i[e.target]?.push(e.source)});for(let n of t){yield*r.Effect.logDebug(`Flow ${o}: Executing level ${n.level} with nodes: ${n.nodes.join(`, `)}`);let t=n.nodes.map(e=>()=>r.Effect.gen(function*(){if(d&&e===d.executionOrder[C]&&c){let t=O.get(e);t&&(yield*c({jobId:l,flowId:o,nodeId:e,eventType:h.NodeResume,nodeName:t.name,nodeType:t.type}))}return{nodeId:e,nodeResult:yield*j(e,s,y,S,O,l,m,v)}})),i=yield*e.executeNodesInParallel(t);for(let{nodeId:e,nodeResult:t}of i){if(t.waiting)return t.result!==void 0&&(S.set(e,t.result),t.nodeType&&T.set(e,t.nodeType)),{type:`paused`,nodeId:e,executionState:{executionOrder:b,currentIndex:b.indexOf(e),inputs:y}};t.success&&(S.set(e,t.result),t.nodeType&&T.set(e,t.nodeType))}}}else{yield*r.Effect.logDebug(`Flow ${o}: Executing in sequential mode`);for(let e=C;e<b.length;e++){let n=b[e];if(!n)return yield*t.n.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(d&&e===C&&c){let e=O.get(n);e&&(yield*c({jobId:l,flowId:o,nodeId:n,eventType:h.NodeResume,nodeName:e.name,nodeType:e.type}))}let r=yield*j(n,s,y,S,O,l,m,v);if(r.waiting)return r.result!==void 0&&(S.set(r.nodeId,r.result),r.nodeType&&T.set(r.nodeId,r.nodeType)),{type:`paused`,nodeId:r.nodeId,executionState:{executionOrder:b,currentIndex:e,inputs:y}};r.success&&(S.set(r.nodeId,r.result),r.nodeType&&T.set(r.nodeId,r.nodeType))}}let A=D(S),M=k(S,T),N=i.z.record(i.z.string(),f).safeParse(A);if(!N.success){let e=`Flow output validation failed: ${N.error.message}. Expected outputs: ${JSON.stringify(Object.keys(D(S)))}. Output nodes (sinks + keepOutput): ${_.filter(e=>E(e.id)).map(e=>e.id).join(`, `)}`;return c&&(yield*c({jobId:l,eventType:h.FlowError,flowId:o,error:e})),yield*t.n.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:e,cause:N.error}).toEffect()}let P=N.data;return c&&(yield*c({jobId:l,eventType:h.FlowEnd,flowId:o,outputs:M,result:P})),{type:`completed`,result:P,outputs:M}});return{id:o,name:s,nodes:_,edges:u,inputSchema:d,outputSchema:f,onEvent:c,checkJobStatus:l,hooks:n.hooks,run:({inputs:e,storageId:t,jobId:n,clientId:r})=>M({inputs:e,storageId:t,jobId:n,clientId:r}),resume:({jobId:e,storageId:t,nodeResults:n,executionState:r,clientId:i})=>M({inputs:r.inputs,storageId:t,jobId:e,resumeFrom:{executionOrder:r.executionOrder,nodeResults:new Map(Object.entries(n)),currentIndex:r.currentIndex},clientId:i}),validateTypes:()=>{let e=_;return v.validateFlow(e,u)},validateInputs:e=>v.validateData(e,d),validateOutputs:e=>v.validateData(e,f)}})}var K=class e extends r.Context.Tag(`FlowWaitUntil`)(){static optional=r.Effect.serviceOption(e)},q=class extends r.Context.Tag(`FlowProvider`)(){},J=class extends r.Context.Tag(`FlowServer`)(){};const Y=e=>typeof e==`object`&&!!e&&`id`in e,me=e=>typeof e==`object`&&e&&`nodeId`in e&&`data`in e&&`timestamp`in e?e.data:e;function X(e,n,i){let a=t=>{let a=e=>r.Effect.gen(function*(){let n=yield*i.get(t);n&&(yield*i.set(t,{...n,...e,updatedAt:new Date}))});return o=>r.Effect.gen(function*(){switch(e.onEvent&&(yield*r.Effect.catchAll(e.onEvent(o),e=>(r.Effect.logError(`Original onEvent failed`,e),r.Effect.succeed({eventId:null})))),yield*n.emit(t,o),r.Effect.logInfo(`Updating job ${t} with event ${o.eventType}`),o.eventType){case h.FlowStart:yield*a({status:`running`});break;case h.FlowEnd:yield*r.Effect.gen(function*(){let e=yield*i.get(t);e&&o.outputs&&(yield*i.set(t,{...e,result:o.outputs,updatedAt:new Date}))});break;case h.FlowError:yield*a({status:`failed`,error:o.error});break;case h.NodeStart:yield*r.Effect.gen(function*(){let e=yield*i.get(t);if(e){let n=e.tasks.find(e=>e.nodeId===o.nodeId)?e.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`running`,updatedAt:new Date}:e):[...e.tasks,{nodeId:o.nodeId,status:`running`,createdAt:new Date,updatedAt:new Date}];yield*i.set(t,{...e,tasks:n,updatedAt:new Date})}});break;case h.NodePause:yield*r.Effect.gen(function*(){let e=yield*i.get(t);if(e){let n=e.tasks.find(e=>e.nodeId===o.nodeId)?e.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`paused`,result:o.partialData,updatedAt:new Date}:e):[...e.tasks,{nodeId:o.nodeId,status:`paused`,result:o.partialData,createdAt:new Date,updatedAt:new Date}];yield*i.set(t,{...e,tasks:n,updatedAt:new Date})}});break;case h.NodeResume:yield*r.Effect.gen(function*(){let e=yield*i.get(t);if(e){let n=e.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`running`,updatedAt:new Date}:e);yield*i.set(t,{...e,tasks:n,updatedAt:new Date})}});break;case h.NodeEnd:yield*r.Effect.gen(function*(){let n=yield*i.get(t);if(n){let a=n.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`completed`,result:o.result,updatedAt:new Date}:e),s=!e.edges.some(e=>e.source===o.nodeId),c=e.nodes.find(e=>e.id===o.nodeId)?.keepOutput===!0,l=o.result,u=me(l),d=n.intermediateFiles||[],f=s||c;f&&Y(u)&&u.id?(d=d.filter(e=>e!==u.id),c&&!s&&r.Effect.logInfo(`Preserving output from node ${o.nodeId} due to keepOutput flag`)):!f&&Y(u)&&u.id&&(d.includes(u.id)||d.push(u.id)),yield*i.set(t,{...n,tasks:a,intermediateFiles:d,updatedAt:new Date})}});break;case h.NodeError:yield*r.Effect.gen(function*(){let e=yield*i.get(t);if(e){let n=e.tasks.map(e=>e.nodeId===o.nodeId?{...e,status:`failed`,error:o.error,retryCount:o.retryCount,updatedAt:new Date}:e);yield*i.set(t,{...e,tasks:n,error:o.error,updatedAt:new Date})}});break}return{eventId:t}})},o=e=>e=>r.Effect.gen(function*(){let n=yield*i.get(e);return n?n.status===`paused`?`paused`:n.status===`cancelled`?`cancelled`:`running`:yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}))});return{...e,run:t=>r.Effect.gen(function*(){let n=t.jobId||crypto.randomUUID(),r=a(n),i=o(n);return yield*(yield*G({flowId:e.id,name:e.name,nodes:e.nodes,edges:e.edges,inputSchema:e.inputSchema,outputSchema:e.outputSchema,onEvent:r,checkJobStatus:i})).run({...t,jobId:n,clientId:t.clientId})}),resume:t=>r.Effect.gen(function*(){let n=t.jobId,r=a(n),i=o(n);return yield*(yield*G({flowId:e.id,name:e.name,nodes:e.nodes,edges:e.edges,inputSchema:e.inputSchema,outputSchema:e.outputSchema,onEvent:r,checkJobStatus:i})).resume(t)})}}function Z(){return r.Effect.gen(function*(){let i=yield*q,a=yield*e.c,o=yield*e.w,s=yield*n.n,c=(e,n)=>r.Effect.gen(function*(){let i=yield*o.get(e);return i?yield*o.set(e,{...i,...n}):yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}))}),l=(e,t)=>r.Effect.gen(function*(){let n=yield*o.get(e);!n||!n.intermediateFiles||n.intermediateFiles.length===0||(yield*r.Effect.logInfo(`Cleaning up ${n.intermediateFiles.length} intermediate files for job ${e}`),yield*r.Effect.all(n.intermediateFiles.map(e=>r.Effect.gen(function*(){yield*s.delete(e,t),yield*r.Effect.logDebug(`Deleted intermediate file ${e}`)}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to delete intermediate file ${e}: ${t}`),r.Effect.succeed(void 0)})))),{concurrency:5}),yield*c(e,{intermediateFiles:[]}))}),u=({jobId:e,flow:n,storageId:i,clientId:s,inputs:u})=>r.Effect.gen(function*(){console.log(`[FlowServer] executeFlowInBackground started for job: ${e}`),yield*c(e,{status:`running`}),console.log(`[FlowServer] Creating flowWithEvents for job: ${e}`);let t=X(n,a,o);console.log(`[FlowServer] Running flow for job: ${e}`);let r=yield*t.run({inputs:u,storageId:i,jobId:e,clientId:s});return console.log(`[FlowServer] Flow completed for job: ${e}, result type: ${r.type}`),r.type===`paused`?yield*c(e,{status:`paused`,pausedAt:r.nodeId,executionState:r.executionState,updatedAt:new Date}):(yield*c(e,{status:`completed`,updatedAt:new Date,endedAt:new Date}),yield*l(e,s)),r}).pipe(r.Effect.catchAll(n=>r.Effect.gen(function*(){yield*r.Effect.logError(`Flow execution failed`,n);let i=n instanceof t.n?n.body:String(n);yield*r.Effect.logInfo(`Updating job ${e} to failed status with error: ${i}`),yield*c(e,{status:`failed`,error:i,updatedAt:new Date}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to update job ${e}`,t),r.Effect.succeed(void 0)})));let u=yield*o.get(e);throw u&&(yield*a.emit(e,{jobId:e,eventType:h.FlowError,flowId:u.flowId,error:i}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to emit FlowError event for job ${e}`,t),r.Effect.succeed(void 0)})))),yield*l(e,s).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup intermediate files for job ${e}`,t),r.Effect.succeed(void 0)}))),n})));return{getFlow:(e,t)=>r.Effect.gen(function*(){return yield*i.getFlow(e,t)}),getFlowData:(e,t)=>r.Effect.gen(function*(){return W(yield*i.getFlow(e,t))}),runFlow:({flowId:e,storageId:n,clientId:a,inputs:s})=>r.Effect.gen(function*(){let c=yield*K.optional,l=yield*r.Effect.try({try:()=>tt.parse({inputs:s}),catch:e=>t.n.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{cause:e})}),d=crypto.randomUUID(),f=new Date,p={id:d,flowId:e,storageId:n,clientId:a,status:`started`,createdAt:f,updatedAt:f,tasks:[]};yield*o.set(d,p);let m=yield*i.getFlow(e,a);console.log(`[FlowServer] About to fork flow execution for job: ${d}`);let h=u({jobId:d,flow:m,storageId:n,clientId:a,inputs:l.inputs}).pipe(r.Effect.tapErrorCause(e=>r.Effect.logError(`Flow execution failed`,e)));if(r.Option.isSome(c)){console.log(`[FlowServer] Using waitUntil for job: ${d}`);let e=yield*r.Effect.runtime(),t=r.Runtime.runPromise(e)(h);c.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for job: ${d}`),yield*r.Effect.forkDaemon(h);return console.log(`[FlowServer] Flow execution started for job: ${d}`),p}),getJobStatus:e=>r.Effect.gen(function*(){return(yield*o.get(e))||(yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`})))}),resumeFlow:({jobId:e,nodeId:n,newData:s,clientId:u})=>r.Effect.gen(function*(){let d=yield*K.optional,f=yield*o.get(e);if(!f)return console.error(`Job not found`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}));if(f.status!==`paused`)return console.error(`Job is not paused`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} is not paused (status: ${f.status})`}));if(f.pausedAt!==n)return console.error(`Job is not paused at the expected node`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} is paused at node ${f.pausedAt}, not ${n}`}));if(!f.executionState)return console.error(`Job has no execution state`),yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} has no execution state`}));let p={...f.tasks.reduce((e,t)=>(t.result!==void 0&&(e[t.nodeId]=t.result),e),{}),[n]:s},m={...f.executionState.inputs,[n]:s};yield*c(e,{status:`running`});let g=yield*i.getFlow(f.flowId,f.clientId),_=r.Effect.gen(function*(){let n=X(g,a,o);if(!f.executionState)return yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} has no execution state`}));let i=yield*n.resume({jobId:e,storageId:f.storageId,nodeResults:p,executionState:{...f.executionState,inputs:m},clientId:f.clientId});return i.type===`paused`?yield*c(e,{status:`paused`,pausedAt:i.nodeId,executionState:i.executionState,updatedAt:new Date}):(yield*c(e,{status:`completed`,pausedAt:void 0,executionState:void 0,updatedAt:new Date,endedAt:new Date}),yield*l(e,u)),i}).pipe(r.Effect.catchAll(n=>r.Effect.gen(function*(){yield*r.Effect.logError(`Flow resume failed`,n);let i=n instanceof t.n?n.body:String(n);yield*r.Effect.logInfo(`Updating job ${e} to failed status with error: ${i}`),yield*c(e,{status:`failed`,error:i,updatedAt:new Date}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to update job ${e}`,t),r.Effect.succeed(void 0)})));let s=yield*o.get(e);throw s&&(yield*a.emit(e,{jobId:e,eventType:h.FlowError,flowId:s.flowId,error:i}).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logError(`Failed to emit FlowError event for job ${e}`,t),r.Effect.succeed(void 0)})))),yield*l(e,u).pipe(r.Effect.catchAll(t=>r.Effect.gen(function*(){return yield*r.Effect.logWarning(`Failed to cleanup intermediate files for job ${e}`,t),r.Effect.succeed(void 0)}))),n}))).pipe(r.Effect.tapErrorCause(e=>r.Effect.logError(`Flow resume failed`,e)));if(r.Option.isSome(d)){console.log(`[FlowServer] Using waitUntil for resume job: ${e}`);let t=yield*r.Effect.runtime(),n=r.Runtime.runPromise(t)(_);d.value(n)}else console.log(`[FlowServer] Using Effect.forkDaemon for resume job: ${e}`),yield*r.Effect.forkDaemon(_);return(yield*o.get(e))||(yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found after update`})))}),pauseFlow:(e,n)=>r.Effect.gen(function*(){let i=yield*o.get(e);if(!i)return yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}));if(n!==null&&i.clientId!==n)return yield*r.Effect.fail(t.n.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${n} is not authorized to pause job ${e}`}));if(i.status!==`running`)return yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} cannot be paused (current status: ${i.status})`}));let s=i.tasks.find(e=>e.status===`running`)?.nodeId;return yield*c(e,{status:`paused`,pausedAt:s,updatedAt:new Date}),yield*a.emit(e,{jobId:e,flowId:i.flowId,eventType:h.FlowPause,pausedAt:s}),(yield*o.get(e))||(yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found after pause`})))}),cancelFlow:(e,n)=>r.Effect.gen(function*(){let i=yield*o.get(e);return i?n!==null&&i.clientId!==n?yield*r.Effect.fail(t.n.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${n} is not authorized to cancel job ${e}`})):i.status!==`running`&&i.status!==`paused`&&i.status!==`started`?yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${e} cannot be cancelled (current status: ${i.status})`})):(yield*c(e,{status:`cancelled`,updatedAt:new Date,endedAt:new Date}),yield*a.emit(e,{jobId:e,flowId:i.flowId,eventType:h.FlowCancel}),yield*l(e,n),(yield*o.get(e))||(yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found after cancellation`})))):yield*r.Effect.fail(t.n.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${e} not found`}))}),subscribeToFlowEvents:(e,t)=>r.Effect.gen(function*(){yield*a.subscribe(e,t)}),unsubscribeFromFlowEvents:e=>r.Effect.gen(function*(){yield*a.unsubscribe(e)})}})}const he=r.Layer.effect(J,Z());function Q(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?e:e.substring(0,t)}function ge(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?``:e.substring(t+1)}function _e(e,t,n){let r=e.metadata??{},i=r.fileName??r.originalName??r.name??`unnamed`;return{baseName:Q(i),extension:ge(i),fileName:i,nodeType:t.nodeType,nodeId:t.nodeId,flowId:t.flowId,jobId:t.jobId,timestamp:new Date().toISOString(),...n}}function ve(e,t){try{let n={};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=String(r));return(0,a.render)(e,n)}catch{return e}}function ye(e,t,n){let r=t.fileName;if(!n)return r;try{if(n.mode===`auto`){if(n.autoSuffix){let e=n.autoSuffix(t);if(e){let{baseName:n,extension:r}=t;return r?`${n}-${e}.${r}`:`${n}-${e}`}}return r}if(n.mode===`custom`){if(n.rename)return n.rename(e,t)||r;if(n.pattern)return ve(n.pattern,t)||r}return r}catch{return r}}function be(e){if(!e||e.trim()===``)return{isValid:!1,error:`Pattern cannot be empty`};let t=(e.match(/\{\{/g)||[]).length,n=(e.match(/\}\}/g)||[]).length;if(t!==n)return{isValid:!1,error:`Unbalanced braces: ${t} opening, ${n} closing`};let r=e.match(/\{\{[^}]*[^a-zA-Z0-9_}][^}]*\}\}/g);return r?{isValid:!1,error:`Invalid variable syntax: ${r[0]}`}:{isValid:!0}}const xe=[{name:`baseName`,description:`Filename without extension`,example:`photo`},{name:`extension`,description:`File extension without dot`,example:`jpg`},{name:`fileName`,description:`Full original filename`,example:`photo.jpg`},{name:`nodeType`,description:`Type of processing node`,example:`resize`},{name:`nodeId`,description:`Specific node instance ID`,example:`resize-1`},{name:`flowId`,description:`Flow identifier`,example:`flow-abc`},{name:`jobId`,description:`Execution job ID`,example:`job-123`},{name:`timestamp`,description:`ISO 8601 processing time`,example:`2024-01-15T10:30:00Z`},{name:`width`,description:`Output width (image/video)`,example:`800`},{name:`height`,description:`Output height (image/video)`,example:`600`},{name:`format`,description:`Output format`,example:`webp`},{name:`quality`,description:`Quality setting`,example:`80`},{name:`pageNumber`,description:`Page number (documents)`,example:`1`}];function Se({id:t,name:i,description:a,outputTypeId:o,keepOutput:s,naming:c,nodeType:l=`transform`,namingVars:u,transform:d}){return r.Effect.gen(function*(){let f=yield*n.n;return yield*C({id:t,name:i,description:a,type:S.process,outputTypeId:o,keepOutput:s,inputSchema:e.b,outputSchema:e.b,run:({data:e,storageId:n,flowId:i,jobId:a,clientId:o})=>r.Effect.gen(function*(){let r={flowId:i,nodeId:t,jobId:a},s=yield*d(yield*f.read(e.id,o),e),p=s instanceof Uint8Array?s:s.bytes,m=s instanceof Uint8Array?void 0:s.type,h=s instanceof Uint8Array?void 0:s.fileName;!h&&c&&(h=ye(e,_e(e,{flowId:i,jobId:a,nodeId:t,nodeType:l},u),c));let g=new ReadableStream({start(e){e.enqueue(p),e.close()}}),{type:_,fileName:v,metadata:y,metadataJson:b}=k(e.metadata),x=yield*f.upload({storageId:n,size:p.byteLength,type:m??_,fileName:h??v,lastModified:0,metadata:b,flow:r},o,g),S=y?{...y,...m&&{mimeType:m,type:m,"content-type":m},...h&&{fileName:h,originalName:h,name:h,extension:h.split(`.`).pop()||y.extension}}:x.metadata;return T(S?{...x,metadata:S}:x)})})})}var Ce=class extends r.Context.Tag(`CredentialProvider`)(){},we=class extends r.Context.Tag(`DocumentAiPlugin`)(){},Te=class extends r.Context.Tag(`DocumentPlugin`)(){},Ee=class extends r.Context.Tag(`ImageAiPlugin`)(){},De=class extends r.Context.Tag(`ImagePlugin`)(){};const Oe=i.z.object({serviceType:i.z.enum([`replicate`]).optional()}),ke=i.z.object({duration:i.z.number().nonnegative(),width:i.z.number().positive(),height:i.z.number().positive(),codec:i.z.string(),format:i.z.string(),bitrate:i.z.number().nonnegative(),frameRate:i.z.number().positive(),aspectRatio:i.z.string(),hasAudio:i.z.boolean(),audioCodec:i.z.string().optional(),audioBitrate:i.z.number().nonnegative().optional(),size:i.z.number().nonnegative()}),Ae=i.z.object({timestamp:i.z.number().nonnegative(),format:i.z.enum([`png`,`jpeg`]).optional(),quality:i.z.number().min(1).max(100).optional()}),je=i.z.object({quality:i.z.number().min(0).max(100),format:i.z.enum([`jpeg`,`webp`,`png`,`avif`])}),Me=i.z.object({serviceType:i.z.enum([`replicate`]).optional()}),Ne=i.z.object({width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),fit:i.z.enum([`contain`,`cover`,`fill`])}).refine(e=>e.width||e.height,`Either width or height must be specified for resize`),Pe=i.z.object({width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),aspectRatio:i.z.enum([`keep`,`ignore`]).optional(),scaling:i.z.enum([`bicubic`,`bilinear`,`lanczos`]).optional()}).refine(e=>e.width||e.height,`Either width or height must be specified for video resize`),Fe=i.z.object({format:i.z.enum([`mp4`,`webm`,`mov`,`avi`]),codec:i.z.enum([`h264`,`h265`,`vp9`,`av1`]).optional(),videoBitrate:i.z.string().optional(),audioBitrate:i.z.string().optional(),audioCodec:i.z.enum([`aac`,`mp3`,`opus`,`vorbis`]).optional()}),Ie=i.z.object({type:i.z.literal(`resize`),width:i.z.number().positive().optional(),height:i.z.number().positive().optional(),fit:i.z.enum([`contain`,`cover`,`fill`])}),Le=i.z.object({type:i.z.literal(`blur`),sigma:i.z.number().min(.3).max(1e3)}),Re=i.z.object({type:i.z.literal(`rotate`),angle:i.z.number(),background:i.z.string().optional()}),ze=i.z.object({type:i.z.literal(`flip`),direction:i.z.enum([`horizontal`,`vertical`])}),Be=i.z.object({type:i.z.literal(`grayscale`)}),Ve=i.z.object({type:i.z.literal(`sepia`)}),$=i.z.object({type:i.z.literal(`brightness`),value:i.z.number().min(-100).max(100)}),He=i.z.object({type:i.z.literal(`contrast`),value:i.z.number().min(-100).max(100)}),Ue=i.z.object({type:i.z.literal(`sharpen`),sigma:i.z.number().positive().optional()}),We=i.z.object({type:i.z.literal(`watermark`),imagePath:i.z.string().min(1).url(),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),opacity:i.z.number().min(0).max(1),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),Ge=i.z.object({type:i.z.literal(`logo`),imagePath:i.z.string().min(1).url(),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),scale:i.z.number().min(.1).max(2),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),Ke=i.z.object({type:i.z.literal(`text`),text:i.z.string().min(1),position:i.z.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),fontSize:i.z.number().positive(),color:i.z.string().min(1),fontFamily:i.z.string().optional(),offsetX:i.z.number().optional(),offsetY:i.z.number().optional()}),qe=i.z.discriminatedUnion(`type`,[Ie,Le,Re,ze,Be,Ve,$,He,Ue,We,Ge,Ke]),Je=i.z.object({transformations:i.z.array(qe).min(1)}),Ye=i.z.object({startTime:i.z.number().nonnegative(),endTime:i.z.number().positive().optional(),duration:i.z.number().positive().optional()}).refine(e=>!e.endTime||!e.duration,`Cannot specify both endTime and duration`).refine(e=>!e.endTime||e.endTime>e.startTime,`endTime must be greater than startTime`);var Xe=class extends r.Context.Tag(`VideoPlugin`)(){},Ze=class extends r.Context.Tag(`VirusScanPlugin`)(){},Qe=class extends r.Context.Tag(`ZipPlugin`)(){};const $e=(e,t)=>{if(e.length===0)return t;let[n,...r]=e;return r.reduce((e,t)=>i.z.union([e,t]),n)};function et(e){return r.Effect.gen(function*(){let n=Object.entries(e.nodes),a=e=>r.Effect.isEffect(e)?e:r.Effect.succeed(e),o=yield*r.Effect.forEach(n,([e,n])=>r.Effect.flatMap(a(n),n=>n.id===e?r.Effect.succeed([e,n]):r.Effect.fail(t.n.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node key ${e} does not match node id ${n.id}`)})))),s=Object.fromEntries(o),c=o.map(([,e])=>e),l=o.filter(([,e])=>e.type===S.input).map(([,e])=>e.inputSchema),u=e.edges.map(e=>({source:s[e.source]?.id??e.source,target:s[e.target]?.id??e.target,sourcePort:e.sourcePort,targetPort:e.targetPort})),d=new Set(o.map(([e])=>s[e]?.id).filter(e=>e&&!u.some(t=>t.source===e))),f=o.filter(([,e])=>d.has(e.id)).map(([,e])=>e.outputSchema),p=e.inputSchema??$e(l,i.z.unknown()),m=e.outputSchema??$e(f,i.z.unknown());return yield*G({flowId:e.flowId,name:e.name,nodes:c,edges:u,inputSchema:p,outputSchema:m,typeChecker:e.typeChecker,onEvent:e.onEvent,parallelExecution:e.parallelExecution,hooks:e.hooks})})}const tt=i.z.object({inputs:i.z.record(i.z.string(),i.z.any())});Object.defineProperty(exports,`$`,{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return Ee}}),Object.defineProperty(exports,`At`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`B`,{enumerable:!0,get:function(){return ve}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return Ne}}),Object.defineProperty(exports,`Ct`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return ke}}),Object.defineProperty(exports,`Dt`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return Ae}}),Object.defineProperty(exports,`Et`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`F`,{enumerable:!0,get:function(){return xe}}),Object.defineProperty(exports,`Ft`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`G`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,`H`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,`I`,{enumerable:!0,get:function(){return ye}}),Object.defineProperty(exports,`It`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`J`,{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,`K`,{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,`L`,{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,`Lt`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,`Mt`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return Ce}}),Object.defineProperty(exports,`Nt`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return Oe}}),Object.defineProperty(exports,`Ot`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return Se}}),Object.defineProperty(exports,`Pt`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`Q`,{enumerable:!0,get:function(){return ce}}),Object.defineProperty(exports,`R`,{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,`Rt`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return Pe}}),Object.defineProperty(exports,`St`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,`Tt`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`U`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,`V`,{enumerable:!0,get:function(){return be}}),Object.defineProperty(exports,`W`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,`X`,{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,`Y`,{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,`Z`,{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,`_t`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,`at`,{enumerable:!0,get:function(){return re}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,`bt`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return $}}),Object.defineProperty(exports,`ct`,{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,`dt`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`et`,{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,`ft`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,`gt`,{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,`ht`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,`it`,{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return Te}}),Object.defineProperty(exports,`jt`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,`kt`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,`lt`,{enumerable:!0,get:function(){return ne}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,`mt`,{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,`nt`,{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,`ot`,{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,`pt`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`q`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,`rt`,{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,`st`,{enumerable:!0,get:function(){return pe}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return tt}}),Object.defineProperty(exports,`tt`,{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,`ut`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,`vt`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return Me}}),Object.defineProperty(exports,`wt`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return Fe}}),Object.defineProperty(exports,`xt`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,`yt`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`z`,{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,`zt`,{enumerable:!0,get:function(){return o}});
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./uploadista-error-CkSxSyNo.mjs";import{C as t,O as n,S as r,_ as i,b as a,c as o,w as s,x as c}from"./types-Bbd8jExI.mjs";import{a as l,n as u,o as d}from"./upload-Cnbo-Ks3.mjs";import{Context as f,Effect as p,Layer as m,Option as h,Runtime as g,Stream as _}from"effect";import{z as v}from"zod";import{render as y}from"micromustache";const b={enabled:!1,failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:6e4,fallback:{type:`fail`}},x=`uploadista:circuit-breaker:`;function S(e){let t=e=>`${x}${e}`,i=r=>p.gen(function*(){let i=t(r),a=yield*e.get(i);if(a===null)return null;try{return n.deserialize(a)}catch{return yield*e.delete(i),null}}),a=(r,i)=>{let a=t(r),o=n.serialize(i);return e.set(a,o)};return{getState:i,setState:a,incrementFailures:(e,t)=>p.gen(function*(){let n=Date.now(),o=yield*i(e);return o===null&&(o=r({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:t})),o=n-o.windowStart>t?{...o,failureCount:1,windowStart:n}:{...o,failureCount:o.failureCount+1},yield*a(e,o),o.failureCount}),resetFailures:e=>p.gen(function*(){let t=yield*i(e);t!==null&&(yield*a(e,{...t,failureCount:0,windowStart:Date.now()}))}),incrementHalfOpenSuccesses:e=>p.gen(function*(){let t=yield*i(e);if(t===null)return 1;let n={...t,halfOpenSuccesses:t.halfOpenSuccesses+1};return yield*a(e,n),n.halfOpenSuccesses}),getAllStats:()=>p.gen(function*(){let t=new Map;if(!e.list)return t;let n=yield*e.list(x),r=Date.now();for(let e of n){let n=e,a=yield*i(n);if(a!==null){let e=r-a.lastStateChange;t.set(n,{nodeType:n,state:a.state,failureCount:a.failureCount,halfOpenSuccesses:a.halfOpenSuccesses,timeSinceLastStateChange:e,timeUntilHalfOpen:a.state===`open`?Math.max(0,a.config.resetTimeout-e):void 0})}}return t}),delete:n=>e.delete(t(n))}}function C(){let e=new Map;return{getState:t=>p.succeed(e.get(t)??null),setState:(t,n)=>p.sync(()=>{e.set(t,n)}),incrementFailures:(t,n)=>p.sync(()=>{let i=Date.now(),a=e.get(t);return a===void 0&&(a=r({failureThreshold:5,resetTimeout:3e4,halfOpenRequests:3,windowDuration:n})),a=i-a.windowStart>n?{...a,failureCount:1,windowStart:i}:{...a,failureCount:a.failureCount+1},e.set(t,a),a.failureCount}),resetFailures:t=>p.sync(()=>{let n=e.get(t);n!==void 0&&e.set(t,{...n,failureCount:0,windowStart:Date.now()})}),incrementHalfOpenSuccesses:t=>p.sync(()=>{let n=e.get(t);if(n===void 0)return 1;let r={...n,halfOpenSuccesses:n.halfOpenSuccesses+1};return e.set(t,r),r.halfOpenSuccesses}),getAllStats:()=>p.sync(()=>{let t=new Map,n=Date.now();for(let[r,i]of e){let e=n-i.lastStateChange;t.set(r,{nodeType:r,state:i.state,failureCount:i.failureCount,halfOpenSuccesses:i.halfOpenSuccesses,timeSinceLastStateChange:e,timeUntilHalfOpen:i.state===`open`?Math.max(0,i.config.resetTimeout-e):void 0})}return t}),delete:t=>p.sync(()=>{e.delete(t)})}}const w=m.effect(c,p.gen(function*(){return S(yield*t)})),T=m.succeed(c,C());var E=class{eventHandler;nodeType;config;store;constructor(e,t,n){this.nodeType=e,this.config={enabled:t.enabled??b.enabled,failureThreshold:t.failureThreshold??b.failureThreshold,resetTimeout:t.resetTimeout??b.resetTimeout,halfOpenRequests:t.halfOpenRequests??b.halfOpenRequests,windowDuration:t.windowDuration??b.windowDuration,fallback:t.fallback??b.fallback},this.store=n}setEventHandler(e){this.eventHandler=e}allowRequest(){let e=this;return p.gen(function*(){if(!e.config.enabled)return{allowed:!0,state:`closed`,failureCount:0};let t=yield*e.store.getState(e.nodeType),n=Date.now();if(t===null&&(t=r({failureThreshold:e.config.failureThreshold,resetTimeout:e.config.resetTimeout,halfOpenRequests:e.config.halfOpenRequests,windowDuration:e.config.windowDuration}),yield*e.store.setState(e.nodeType,t)),t.state===`open`&&n-t.lastStateChange>=e.config.resetTimeout){let r=t.state;t={...t,state:`half-open`,halfOpenSuccesses:0,lastStateChange:n},yield*e.store.setState(e.nodeType,t),yield*e.emitEvent(r,`half-open`,t.failureCount)}return{allowed:t.state!==`open`,state:t.state,failureCount:t.failureCount}})}getState(){let e=this;return p.gen(function*(){return(yield*e.store.getState(e.nodeType))?.state??`closed`})}getFailureCount(){let e=this;return p.gen(function*(){return(yield*e.store.getState(e.nodeType))?.failureCount??0})}recordSuccess(){let e=this;return p.gen(function*(){if(!e.config.enabled)return;let t=yield*e.store.getState(e.nodeType);t!==null&&(t.state===`half-open`?(yield*e.store.incrementHalfOpenSuccesses(e.nodeType))>=e.config.halfOpenRequests&&(yield*e.transitionTo(`closed`,t.failureCount)):t.state===`closed`&&(yield*e.store.resetFailures(e.nodeType)))})}recordFailure(e){let t=this;return p.gen(function*(){if(!t.config.enabled)return;let e=yield*t.store.getState(t.nodeType);if(e===null||e.state===`closed`){let e=yield*t.store.incrementFailures(t.nodeType,t.config.windowDuration);e>=t.config.failureThreshold&&(yield*t.transitionTo(`open`,e))}else e.state===`half-open`&&(yield*t.transitionTo(`open`,e.failureCount))})}getFallback(){return this.config.fallback}reset(){let e=this;return p.gen(function*(){let t=(yield*e.store.getState(e.nodeType))?.state??`closed`;yield*e.store.setState(e.nodeType,r({failureThreshold:e.config.failureThreshold,resetTimeout:e.config.resetTimeout,halfOpenRequests:e.config.halfOpenRequests,windowDuration:e.config.windowDuration})),t!==`closed`&&(yield*e.emitEvent(t,`closed`,0))})}transitionTo(e,t){let n=this;return p.gen(function*(){let r=yield*n.store.getState(n.nodeType),i=r?.state??`closed`;if(i===e)return;let a=Date.now(),o={state:e,failureCount:e===`closed`?0:t,lastStateChange:a,halfOpenSuccesses:0,windowStart:e===`closed`?a:r?.windowStart??a,config:{failureThreshold:n.config.failureThreshold,resetTimeout:n.config.resetTimeout,halfOpenRequests:n.config.halfOpenRequests,windowDuration:n.config.windowDuration}};yield*n.store.setState(n.nodeType,o),yield*n.emitEvent(i,e,t)})}emitEvent(e,t,n){let r=this;return p.gen(function*(){r.eventHandler&&(yield*r.eventHandler({nodeType:r.nodeType,previousState:e,newState:t,timestamp:Date.now(),failureCount:n}))})}},D=class{breakers=new Map;eventHandler;constructor(e){this.store=e}setEventHandler(e){this.eventHandler=e;for(let t of this.breakers.values())t.setEventHandler(e)}getOrCreate(e,t){let n=this.breakers.get(e);return n||(n=new E(e,t,this.store),this.eventHandler&&n.setEventHandler(this.eventHandler),this.breakers.set(e,n)),n}get(e){return this.breakers.get(e)}getAllStats(){return this.store.getAllStats()}resetAll(){let e=this;return p.gen(function*(){for(let t of e.breakers.values())yield*t.reset()})}clear(){this.breakers.clear()}};function O({source:e,target:t,sourcePort:n,targetPort:r}){return{source:e,target:t,sourcePort:n,targetPort:r}}let k=function(e){return e.JobStart=`job-start`,e.JobEnd=`job-end`,e.FlowStart=`flow-start`,e.FlowEnd=`flow-end`,e.FlowError=`flow-error`,e.FlowPause=`flow-pause`,e.FlowCancel=`flow-cancel`,e.NodeStart=`node-start`,e.NodeEnd=`node-end`,e.NodePause=`node-pause`,e.NodeResume=`node-resume`,e.NodeError=`node-error`,e.NodeStream=`node-stream`,e.NodeResponse=`node-response`,e}({});var A=class{types;constructor(){this.types=new Map}register(t){if(this.types.has(t.id))throw e.fromCode(`VALIDATION_ERROR`,{body:`Input type "${t.id}" is already registered. Types cannot be modified or re-registered.`,details:{typeId:t.id}});this.types.set(t.id,t)}get(e){return this.types.get(e)}list(){return Array.from(this.types.values())}validate(t,n){let r=this.types.get(t);if(!r)return{success:!1,error:e.fromCode(`VALIDATION_ERROR`,{body:`Input type "${t}" is not registered`,details:{typeId:t}})};try{return{success:!0,data:r.schema.parse(n)}}catch(n){return{success:!1,error:e.fromCode(`VALIDATION_ERROR`,{body:`Data validation failed for input type "${t}"`,cause:n,details:{typeId:t,validationErrors:n}})}}}has(e){return this.types.has(e)}size(){return this.types.size}};const j=new A;function M(e,t){return j.validate(e,t)}var N=class{types;constructor(){this.types=new Map}register(t){if(this.types.has(t.id))throw e.fromCode(`VALIDATION_ERROR`,{body:`Output type "${t.id}" is already registered. Types cannot be modified or re-registered.`,details:{typeId:t.id}});this.types.set(t.id,t)}get(e){return this.types.get(e)}list(){return Array.from(this.types.values())}validate(t,n){let r=this.types.get(t);if(!r)return{success:!1,error:e.fromCode(`VALIDATION_ERROR`,{body:`Output type "${t}" is not registered`,details:{typeId:t}})};try{return{success:!0,data:r.schema.parse(n)}}catch(n){return{success:!1,error:e.fromCode(`VALIDATION_ERROR`,{body:`Data validation failed for output type "${t}"`,cause:n,details:{typeId:t,validationErrors:n}})}}}has(e){return this.types.has(e)}size(){return this.types.size}};const P=new N;function ee(e,t){return P.validate(e,t)}let F=function(e){return e.input=`input`,e.process=`process`,e.conditional=`conditional`,e.multiplex=`multiplex`,e.merge=`merge`,e}({});function I({id:t,name:n,description:r,type:i,inputSchema:a,outputSchema:o,run:s,condition:c,multiInput:l=!1,multiOutput:u=!1,pausable:d=!1,retry:f,inputTypeId:m,outputTypeId:h,keepOutput:g=!1,circuitBreaker:_}){return p.gen(function*(){return m&&!j.get(m)?yield*e.fromCode(`INVALID_INPUT_TYPE`,{body:`Input type "${m}" is not registered in inputTypeRegistry`,details:{inputTypeId:m,nodeId:t}}).toEffect():h&&!P.get(h)?yield*e.fromCode(`INVALID_OUTPUT_TYPE`,{body:`Output type "${h}" is not registered in outputTypeRegistry`,details:{outputTypeId:h,nodeId:t}}).toEffect():{id:t,name:n,description:r,type:i,inputTypeId:m,outputTypeId:h,keepOutput:g,inputSchema:a,outputSchema:o,pausable:d,run:({data:r,jobId:i,flowId:c,storageId:l,clientId:u})=>p.gen(function*(){let d=yield*s({data:yield*p.try({try:()=>a.parse(r),catch:r=>{let i=r instanceof Error?r.message:String(r);return e.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${t}) input validation failed: ${i}`,cause:r})}}),jobId:i,storageId:l,flowId:c,clientId:u});return d.type===`waiting`?{type:`waiting`,partialData:d.partialData,nodeType:h,nodeId:t}:{type:`complete`,data:yield*p.try({try:()=>o.parse(d.data),catch:r=>{let i=r instanceof Error?r.message:String(r);return e.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:`Node '${n}' (${t}) output validation failed: ${i}`,cause:r})}}),nodeType:h,nodeId:t}}),condition:c,multiInput:l,multiOutput:u,retry:f,circuitBreaker:_}})}const te=e=>({id:e.id,name:e.name,description:e.description,type:e.type,inputTypeId:e.inputTypeId,outputTypeId:e.outputTypeId}),L=e=>({type:`complete`,data:e}),ne=e=>({type:`waiting`,partialData:e}),re=(e,t)=>{if(e===t)return!0;try{return!!(e&&t&&typeof e==`object`&&typeof t==`object`)}catch{return!0}};var ie=class{typeChecker;constructor(e=re){this.typeChecker=e}validateConnection(e,t,n){return this.getCompatibleTypes(e.outputSchema,t.inputSchema)}getCompatibleTypes(e,t){return this.typeChecker(e,t)}validateFlow(e,t){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let e of t){let t=r.get(e.source),i=r.get(e.target);if(!t){n.push(`Source node ${e.source} not found`);continue}if(!i){n.push(`Target node ${e.target} not found`);continue}this.validateConnection(t,i,e)||n.push(`Schema mismatch: ${t.id} output schema incompatible with ${i.id} input schema`)}return{isValid:n.length===0,errors:n}}getExpectedInputSchemas(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i={};for(let t of n)if(t.target===e){let e=r.get(t.source);if(e){let n=t.sourcePort||t.source;i[n]=e.outputSchema}}return i}getActualOutputSchemas(e,t,n){let r=new Map(t.map(e=>[e.id,e])),i={};for(let t of n)if(t.source===e){let e=r.get(t.target);if(e){let n=t.targetPort||t.target;i[n]=e.inputSchema}}return i}validateData(e,t){try{return t.parse(e),{isValid:!0,errors:[]}}catch(e){return e instanceof Error&&`errors`in e?{isValid:!1,errors:e.errors.map(e=>`${e.path.join(`.`)}: ${e.message}`)}:{isValid:!1,errors:[e instanceof Error?e.message:`Validation failed`]}}}};function R(e){if(!e)return{type:``,fileName:``,metadata:void 0,metadataJson:void 0};let t={...e},n=String(t.type||t.mimeType||t[`content-type`]||``);n&&(t.type||=n,t.mimeType||=n);let r=String(t.fileName||t.originalName||t.name||``);return r&&(t.fileName||=r,t.originalName||=r,t.name||=r),{type:n,fileName:r,metadata:t,metadataJson:JSON.stringify(t)}}const ae=v.object({operation:v.literal(`init`),storageId:v.string(),metadata:v.record(v.string(),v.any()).optional()}),oe=v.object({operation:v.literal(`finalize`),uploadId:v.string()}),se=v.object({operation:v.literal(`url`),url:v.string(),storageId:v.string().optional(),metadata:v.record(v.string(),v.any()).optional()}),z=v.union([ae,oe,se]),ce=v.object({allowedMimeTypes:v.array(v.string()).optional(),minSize:v.number().positive().optional(),maxSize:v.number().positive().optional()});function B(t,n){return p.gen(function*(){if(n){if(n.allowedMimeTypes&&n.allowedMimeTypes.length>0&&!n.allowedMimeTypes.some(e=>{if(e.endsWith(`/*`)){let n=e.slice(0,-2);return t.type.startsWith(n)}return t.type===e}))throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`File type "${t.type}" is not allowed. Allowed types: ${n.allowedMimeTypes.join(`, `)}`)}).toEffect();if(n.minSize!==void 0&&t.size<n.minSize)throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${t.size} bytes) is below minimum (${n.minSize} bytes)`)}).toEffect();if(n.maxSize!==void 0&&t.size>n.maxSize)throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`File size (${t.size} bytes) exceeds maximum (${n.maxSize} bytes)`)}).toEffect()}})}function le(t,n,r){let i=r?.keepOutput??!1;return p.gen(function*(){let r=yield*u;return yield*I({id:t,name:`Input`,description:`Handles file input through multiple methods - streaming upload (init/finalize) or direct URL fetch`,type:F.input,inputSchema:z,outputSchema:a,keepOutput:i,inputTypeId:W,outputTypeId:V,run:({data:i,flowId:a,jobId:o,clientId:s})=>p.gen(function*(){switch(i.operation){case`init`:{let e={storageId:i.storageId,size:i.metadata?.size||0,type:i.metadata?.mimeType||`application/octet-stream`,fileName:i.metadata?.originalName,lastModified:i.metadata?.size?Date.now():void 0,metadata:i.metadata?JSON.stringify(i.metadata):void 0,flow:{flowId:a,nodeId:t,jobId:o}};return ne(yield*r.createUpload(e,s))}case`finalize`:{let e=yield*r.getUpload(i.uploadId),{type:t}=R(e.metadata);return yield*B({type:t,size:e.size||0},n),L(e)}case`url`:{let e=yield*d(i.url),c=yield*l(e),u=i.metadata?.mimeType||e.headers.get(`content-type`)||`application/octet-stream`,f=i.metadata?.size||Number(e.headers.get(`content-length`)||0),p=i.metadata?.originalName||i.url.split(`/`).pop()||`file`;yield*B({type:u,size:f},n);let m=new ReadableStream({start(e){e.enqueue(new Uint8Array(c)),e.close()}}),h={storageId:i.storageId||`buffer`,size:f,type:u,fileName:p,lastModified:Date.now(),metadata:i.metadata?JSON.stringify(i.metadata):void 0};return L({...yield*r.upload(h,s,m),flow:{flowId:a,nodeId:t,jobId:o}})}default:throw yield*e.fromCode(`VALIDATION_ERROR`,{cause:Error(`Invalid operation`)}).toEffect()}})})})}const V=`storage-output-v1`,H=`ocr-output-v1`,U=`image-description-output-v1`,W=`streaming-input-v1`,G=v.object({extractedText:v.string(),format:v.enum([`markdown`,`plain`,`structured`]),taskType:v.enum([`convertToMarkdown`,`freeOcr`,`parseFigure`,`locateObject`]),confidence:v.number().min(0).max(1).optional()}),K=v.object({description:v.string(),confidence:v.number().min(0).max(1).optional(),metadata:v.record(v.string(),v.unknown()).optional()});j.register({id:W,schema:z,version:`1.0.0`,description:`Streaming file input with init/finalize/url operations for flexible file ingestion`}),P.register({id:V,schema:a,version:`1.0.0`,description:`Storage output node that saves files to configured storage backend`}),P.register({id:H,schema:G,version:`1.0.0`,description:`OCR output node that extracts structured text from documents using AI`}),P.register({id:U,schema:K,version:`1.0.0`,description:`Image description output node that generates AI-powered descriptions of images`});var q=class{maxConcurrency;constructor(e={}){this.maxConcurrency=e.maxConcurrency??4}groupNodesByExecutionLevel(e,t){let n={},r={};e.forEach(e=>{n[e.id]=[],r[e.id]=0}),t.forEach(e=>{n[e.source]?.push(e.target),r[e.target]=(r[e.target]||0)+1});let i=[],a=new Set,o=0;for(;a.size<e.length;){let e=Object.keys(r).filter(e=>r[e]===0&&!a.has(e));if(e.length===0)throw Error(`Cycle detected in flow graph - cannot execute in parallel`);i.push({level:o++,nodes:e}),e.forEach(e=>{a.add(e),delete r[e],n[e]?.forEach(e=>{r[e]!==void 0&&r[e]--})})}return i}executeNodesInParallel(e){return p.all(e.map(e=>e()),{concurrency:this.maxConcurrency})}canExecuteInParallel(e,t,n){return e.every(e=>(n[e]||[]).every(e=>t.has(e)))}getStats(){return{maxConcurrency:this.maxConcurrency}}};function J(e){return t=>{if(t.nodeType!==e)return!1;let n=P.get(e);return n?n.schema.safeParse(t.data).success:!1}}function Y(e){return!e||typeof e!=`object`?!1:a.safeParse(e).success}const ue=J(`storage-output-v1`),de=J(H),fe=J(U);function X(e,t){return e.filter(t)}function pe(t,n){return p.gen(function*(){let r=X(t,n);return r.length===0?yield*e.fromCode(`OUTPUT_NOT_FOUND`,{body:`No output of the specified type was found in the flow results`}).toEffect():r.length>1?yield*e.fromCode(`MULTIPLE_OUTPUTS_FOUND`,{body:`Found ${r.length} outputs of the specified type, expected exactly one`,details:{foundCount:r.length,nodeIds:r.map(e=>e.nodeId)}}).toEffect():r[0]})}function me(e,t){return X(e,t)[0]}function he(e,t){return e.find(e=>e.nodeId===t)}function ge(e,t){return e.some(t)}function _e(e){return e.operation===`init`}function ve(e){return e.operation===`finalize`}function ye(e){return e.operation===`url`}function be(e){return e.operation===`init`||e.operation===`url`}const xe=e=>({id:e.id,name:e.name,nodes:e.nodes.map(te),edges:e.edges});function Z(t){return p.gen(function*(){let n=yield*p.all(t.nodes.map(e=>p.isEffect(e)?e:p.succeed(e))),{flowId:r,name:a,onEvent:o,checkJobStatus:s,edges:l,inputSchema:u,outputSchema:d,typeChecker:f,circuitBreaker:m}=t,h=n,g=new ie(f),y=e=>{let t=e.circuitBreaker,n=e.name?m?.nodeTypeOverrides?.[e.name]:void 0,r=m?.defaults;if(!(!t&&!n&&!r))return{...r,...n,...t}},b=()=>{let e={},t={},n={};return h.forEach(r=>{e[r.id]=[],n[r.id]=[],t[r.id]=0}),l.forEach(r=>{e[r.source]?.push(r.target),n[r.target]?.push(r.source),t[r.target]=(t[r.target]||0)+1}),{graph:e,reverseGraph:n,inDegree:t}},x=()=>{let{graph:e,inDegree:t}=b(),n=[],r=[];for(Object.keys(t).forEach(e=>{t[e]===0&&n.push(e)});n.length>0;){let i=n.shift();if(!i)throw Error(`No current node found`);r.push(i),e[i]?.forEach(e=>{t[e]=(t[e]||0)-1,t[e]===0&&n.push(e)})}return r},S=(e,t)=>{if(!e.condition)return p.succeed(!0);let{field:n,operator:r,value:i}=e.condition,a=t,o=a?.metadata?.[n]||a?.[n],s=(()=>{switch(r){case`equals`:return o===i;case`notEquals`:return o!==i;case`greaterThan`:return Number(o)>Number(i);case`lessThan`:return Number(o)<Number(i);case`contains`:return String(o).includes(String(i));case`startsWith`:return String(o).startsWith(String(i));default:return!0}})();return p.succeed(s)},C=(e,t)=>{let{reverseGraph:n}=b(),r=n[e]||[],i={};return r.forEach(e=>{let n=t.get(e);n!==void 0&&(i[e]=n)}),i},w=e=>{let t=h.filter(e=>e.type===`input`),n={};return t.forEach(t=>{e&&typeof e==`object`&&t.id in e&&(n[t.id]=u.parse(e[t.id]))}),n},T=e=>!l.some(t=>t.source===e),E=e=>{let t=h.find(t=>t.id===e);return T(e)||t?.keepOutput===!0},O=e=>{let t=h.filter(e=>E(e.id)),n={};return t.forEach(t=>{let r=e.get(t.id);r!==void 0&&(n[t.id]=r)}),n},A=(e,t)=>{let n=h.filter(e=>E(e.id)),r=[];return n.forEach(n=>{let i=e.get(n.id);if(i!==void 0){let e=t.get(n.id);r.push({nodeId:n.id,nodeType:e,data:i,timestamp:new Date().toISOString()})}}),r},j=(e,t,n)=>p.gen(function*(){if(e.storage.id===t)return e;let r=yield*i,a=yield*r.getDataStore(e.storage.id,n),o=yield*r.getDataStore(t,n),s=yield*a.read(e.id),c=_.make(s),l={...e,storage:{id:t,type:e.storage.type}},u=yield*o.create(l);return yield*o.write({file_id:u.id,stream:c,offset:0},{}),u}),M=(n,i,a,c,l,u,d,f)=>p.gen(function*(){let m=l.get(n);if(!m)return yield*e.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(s){let t=yield*s(u);if(t===`paused`)return yield*e.fromCode(`FLOW_PAUSED`,{cause:`Flow ${r} was paused by user at job ${u}`}).toEffect();if(t===`cancelled`)return yield*e.fromCode(`FLOW_CANCELLED`,{cause:`Flow ${r} was cancelled by user at job ${u}`}).toEffect()}o&&(yield*o({jobId:u,flowId:r,nodeId:n,eventType:k.NodeStart,nodeName:m.name,nodeType:m.type}));let h=m.retry?.maxRetries??0,g=m.retry?.retryDelay??1e3,_=m.retry?.exponentialBackoff??!0,v=y(m),b=v?.enabled&&m.name&&f?f.getOrCreate(m.name,v):null;if(b){let{allowed:t,state:i,failureCount:s}=yield*b.allowRequest();if(!t){let t=b.getFallback();return yield*p.logWarning(`Circuit breaker OPEN for node type "${m.name}" - applying fallback`),t.type===`skip`?(o&&(yield*o({jobId:u,flowId:r,nodeId:n,eventType:k.NodeEnd,nodeName:m.name})),{nodeId:n,result:a[n],success:!0,waiting:!1}):t.type===`default`?(o&&(yield*o({jobId:u,flowId:r,nodeId:n,eventType:k.NodeEnd,nodeName:m.name,result:t.value})),{nodeId:n,result:t.value,success:!0,waiting:!1}):yield*e.fromCode(`CIRCUIT_BREAKER_OPEN`,{body:`Circuit breaker is open for node type "${m.name}"`,details:{nodeType:m.name,nodeId:n,state:i,failureCount:s}}).toEffect()}}let x=0,w=null;for(;x<=h;)try{let s,l={};if(m.type===`input`){if(s=a[n],s===void 0)return yield*p.logError(`Input node ${n} has no input data`),yield*e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Input node ${n} has no input data`)}).toEffect()}else{if(l=C(n,c),Object.keys(l).length===0)return yield*p.logError(`Node ${n} has no input data`),yield*e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${n} has no input data`)}).toEffect();if(m.multiInput)s=l;else{let t=Object.keys(l)[0];if(!t)return yield*e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node ${n} has no input data`)}).toEffect();s=l[t]}}if(m.type===`conditional`&&!(yield*S(m,s)))return o&&(yield*o({jobId:u,flowId:r,nodeId:n,eventType:k.NodeEnd,nodeName:m.name})),{nodeId:n,result:s,success:!0,waiting:!1};let f=yield*m.run({data:s,inputs:l,jobId:u,flowId:r,storageId:i,clientId:d});if(f.type===`waiting`){let e=f.partialData;return o&&(yield*o({jobId:u,flowId:r,nodeId:n,eventType:k.NodePause,nodeName:m.name,partialData:e})),{nodeId:n,result:e,success:!0,waiting:!0,nodeType:f.nodeType}}let h=f.data;if(E(n)&&(Y(h)&&h.storage.id!==i&&(yield*p.logDebug(`Auto-persisting output node ${n} output from ${h.storage.id} to ${i}`),h=yield*j(h,i,d)),t.hooks?.onNodeOutput)){yield*p.logDebug(`Calling onNodeOutput hook for sink node ${n}`);let e=t.hooks.onNodeOutput({output:h,nodeId:n,flowId:r,jobId:u,storageId:i,clientId:d});h=yield*p.isEffect(e)?e:p.promise(()=>e)}return b&&(yield*b.recordSuccess()),o&&(yield*o({jobId:u,flowId:r,nodeId:n,eventType:k.NodeEnd,nodeName:m.name,result:h})),{nodeId:n,result:h,success:!0,waiting:!1,nodeType:f.nodeType}}catch(t){if(w=t instanceof e?t:e.fromCode(`FLOW_NODE_ERROR`,{cause:t}),b&&(yield*b.recordFailure(w.body)),x<h){x++;let e=_?g*2**(x-1):g;yield*p.logWarning(`Node ${n} (${m.name}) failed, retrying (${x}/${h}) after ${e}ms`),yield*p.sleep(e);continue}return o&&(yield*o({jobId:u,flowId:r,nodeId:n,eventType:k.NodeError,nodeName:m.name,error:w.body,retryCount:x})),yield*w.toEffect()}return w?yield*w.toEffect():yield*e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Unexpected error in retry loop`)}).toEffect()}),N=({inputs:n,storageId:i,jobId:a,resumeFrom:s,clientId:u})=>p.gen(function*(){let f=yield*p.serviceOption(c),m=f._tag===`Some`?new D(f.value):null;!s&&o&&(yield*o({jobId:a,eventType:k.FlowStart,flowId:r}));let g=w(n||{}),_,y,b;s?(_=s.executionOrder,y=s.nodeResults,b=s.currentIndex):(_=x(),y=new Map,b=0);let S=new Map;if(_.length!==h.length)return yield*e.fromCode(`FLOW_CYCLE_ERROR`).toEffect();let C=new Map(h.map(e=>[e.id,e]));if(t.parallelExecution?.enabled??!1){yield*p.logDebug(`Flow ${r}: Executing in parallel mode (maxConcurrency: ${t.parallelExecution?.maxConcurrency??4})`);let e=new q({maxConcurrency:t.parallelExecution?.maxConcurrency??4}),n=e.groupNodesByExecutionLevel(h,l);yield*p.logDebug(`Flow ${r}: Grouped nodes into ${n.length} execution levels`);let c={};h.forEach(e=>{c[e.id]=[]}),l.forEach(e=>{c[e.target]?.push(e.source)});for(let t of n){yield*p.logDebug(`Flow ${r}: Executing level ${t.level} with nodes: ${t.nodes.join(`, `)}`);let n=t.nodes.map(e=>()=>p.gen(function*(){if(s&&e===s.executionOrder[b]&&o){let t=C.get(e);t&&(yield*o({jobId:a,flowId:r,nodeId:e,eventType:k.NodeResume,nodeName:t.name,nodeType:t.type}))}return{nodeId:e,nodeResult:yield*M(e,i,g,y,C,a,u,m)}})),c=yield*e.executeNodesInParallel(n);for(let{nodeId:e,nodeResult:t}of c){if(t.waiting)return t.result!==void 0&&(y.set(e,t.result),t.nodeType&&S.set(e,t.nodeType)),{type:`paused`,nodeId:e,executionState:{executionOrder:_,currentIndex:_.indexOf(e),inputs:g}};t.success&&(y.set(e,t.result),t.nodeType&&S.set(e,t.nodeType))}}}else{yield*p.logDebug(`Flow ${r}: Executing in sequential mode`);for(let t=b;t<_.length;t++){let n=_[t];if(!n)return yield*e.fromCode(`FLOW_NODE_NOT_FOUND`).toEffect();if(s&&t===b&&o){let e=C.get(n);e&&(yield*o({jobId:a,flowId:r,nodeId:n,eventType:k.NodeResume,nodeName:e.name,nodeType:e.type}))}let c=yield*M(n,i,g,y,C,a,u,m);if(c.waiting)return c.result!==void 0&&(y.set(c.nodeId,c.result),c.nodeType&&S.set(c.nodeId,c.nodeType)),{type:`paused`,nodeId:c.nodeId,executionState:{executionOrder:_,currentIndex:t,inputs:g}};c.success&&(y.set(c.nodeId,c.result),c.nodeType&&S.set(c.nodeId,c.nodeType))}}let T=O(y),j=A(y,S),N=v.record(v.string(),d).safeParse(T);if(!N.success){let t=`Flow output validation failed: ${N.error.message}. Expected outputs: ${JSON.stringify(Object.keys(O(y)))}. Output nodes (sinks + keepOutput): ${h.filter(e=>E(e.id)).map(e=>e.id).join(`, `)}`;return o&&(yield*o({jobId:a,eventType:k.FlowError,flowId:r,error:t})),yield*e.fromCode(`FLOW_OUTPUT_VALIDATION_ERROR`,{body:t,cause:N.error}).toEffect()}let P=N.data;return o&&(yield*o({jobId:a,eventType:k.FlowEnd,flowId:r,outputs:j,result:P})),{type:`completed`,result:P,outputs:j}});return{id:r,name:a,nodes:h,edges:l,inputSchema:u,outputSchema:d,onEvent:o,checkJobStatus:s,hooks:t.hooks,run:({inputs:e,storageId:t,jobId:n,clientId:r})=>N({inputs:e,storageId:t,jobId:n,clientId:r}),resume:({jobId:e,storageId:t,nodeResults:n,executionState:r,clientId:i})=>N({inputs:r.inputs,storageId:t,jobId:e,resumeFrom:{executionOrder:r.executionOrder,nodeResults:new Map(Object.entries(n)),currentIndex:r.currentIndex},clientId:i}),validateTypes:()=>{let e=h;return g.validateFlow(e,l)},validateInputs:e=>g.validateData(e,u),validateOutputs:e=>g.validateData(e,d)}})}var Q=class e extends f.Tag(`FlowWaitUntil`)(){static optional=p.serviceOption(e)},Se=class extends f.Tag(`FlowProvider`)(){},Ce=class extends f.Tag(`FlowServer`)(){};const we=e=>typeof e==`object`&&!!e&&`id`in e,Te=e=>typeof e==`object`&&e&&`nodeId`in e&&`data`in e&&`timestamp`in e?e.data:e;function Ee(t,n,r){let i=e=>{let i=t=>p.gen(function*(){let n=yield*r.get(e);n&&(yield*r.set(e,{...n,...t,updatedAt:new Date}))});return a=>p.gen(function*(){switch(t.onEvent&&(yield*p.catchAll(t.onEvent(a),e=>(p.logError(`Original onEvent failed`,e),p.succeed({eventId:null})))),yield*n.emit(e,a),p.logInfo(`Updating job ${e} with event ${a.eventType}`),a.eventType){case k.FlowStart:yield*i({status:`running`});break;case k.FlowEnd:yield*p.gen(function*(){let t=yield*r.get(e);t&&a.outputs&&(yield*r.set(e,{...t,result:a.outputs,updatedAt:new Date}))});break;case k.FlowError:yield*i({status:`failed`,error:a.error});break;case k.NodeStart:yield*p.gen(function*(){let t=yield*r.get(e);if(t){let n=t.tasks.find(e=>e.nodeId===a.nodeId)?t.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`running`,updatedAt:new Date}:e):[...t.tasks,{nodeId:a.nodeId,status:`running`,createdAt:new Date,updatedAt:new Date}];yield*r.set(e,{...t,tasks:n,updatedAt:new Date})}});break;case k.NodePause:yield*p.gen(function*(){let t=yield*r.get(e);if(t){let n=t.tasks.find(e=>e.nodeId===a.nodeId)?t.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`paused`,result:a.partialData,updatedAt:new Date}:e):[...t.tasks,{nodeId:a.nodeId,status:`paused`,result:a.partialData,createdAt:new Date,updatedAt:new Date}];yield*r.set(e,{...t,tasks:n,updatedAt:new Date})}});break;case k.NodeResume:yield*p.gen(function*(){let t=yield*r.get(e);if(t){let n=t.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`running`,updatedAt:new Date}:e);yield*r.set(e,{...t,tasks:n,updatedAt:new Date})}});break;case k.NodeEnd:yield*p.gen(function*(){let n=yield*r.get(e);if(n){let i=n.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`completed`,result:a.result,updatedAt:new Date}:e),o=!t.edges.some(e=>e.source===a.nodeId),s=t.nodes.find(e=>e.id===a.nodeId)?.keepOutput===!0,c=a.result,l=Te(c),u=n.intermediateFiles||[],d=o||s;d&&we(l)&&l.id?(u=u.filter(e=>e!==l.id),s&&!o&&p.logInfo(`Preserving output from node ${a.nodeId} due to keepOutput flag`)):!d&&we(l)&&l.id&&(u.includes(l.id)||u.push(l.id)),yield*r.set(e,{...n,tasks:i,intermediateFiles:u,updatedAt:new Date})}});break;case k.NodeError:yield*p.gen(function*(){let t=yield*r.get(e);if(t){let n=t.tasks.map(e=>e.nodeId===a.nodeId?{...e,status:`failed`,error:a.error,retryCount:a.retryCount,updatedAt:new Date}:e);yield*r.set(e,{...t,tasks:n,error:a.error,updatedAt:new Date})}});break}return{eventId:e}})},a=t=>t=>p.gen(function*(){let n=yield*r.get(t);return n?n.status===`paused`?`paused`:n.status===`cancelled`?`cancelled`:`running`:yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))});return{...t,run:e=>p.gen(function*(){let n=e.jobId||crypto.randomUUID(),r=i(n),o=a(n);return yield*(yield*Z({flowId:t.id,name:t.name,nodes:t.nodes,edges:t.edges,inputSchema:t.inputSchema,outputSchema:t.outputSchema,onEvent:r,checkJobStatus:o})).run({...e,jobId:n,clientId:e.clientId})}),resume:e=>p.gen(function*(){let n=e.jobId,r=i(n),o=a(n);return yield*(yield*Z({flowId:t.id,name:t.name,nodes:t.nodes,edges:t.edges,inputSchema:t.inputSchema,outputSchema:t.outputSchema,onEvent:r,checkJobStatus:o})).resume(e)})}}function De(){return p.gen(function*(){let t=yield*Se,n=yield*o,r=yield*s,i=yield*u,a=(t,n)=>p.gen(function*(){let i=yield*r.get(t);return i?yield*r.set(t,{...i,...n}):yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))}),c=(e,t)=>p.gen(function*(){let n=yield*r.get(e);!n||!n.intermediateFiles||n.intermediateFiles.length===0||(yield*p.logInfo(`Cleaning up ${n.intermediateFiles.length} intermediate files for job ${e}`),yield*p.all(n.intermediateFiles.map(e=>p.gen(function*(){yield*i.delete(e,t),yield*p.logDebug(`Deleted intermediate file ${e}`)}).pipe(p.catchAll(t=>p.gen(function*(){return yield*p.logWarning(`Failed to delete intermediate file ${e}: ${t}`),p.succeed(void 0)})))),{concurrency:5}),yield*a(e,{intermediateFiles:[]}))}),l=({jobId:t,flow:i,storageId:o,clientId:s,inputs:l})=>p.gen(function*(){console.log(`[FlowServer] executeFlowInBackground started for job: ${t}`),yield*a(t,{status:`running`}),console.log(`[FlowServer] Creating flowWithEvents for job: ${t}`);let e=Ee(i,n,r);console.log(`[FlowServer] Running flow for job: ${t}`);let u=yield*e.run({inputs:l,storageId:o,jobId:t,clientId:s});return console.log(`[FlowServer] Flow completed for job: ${t}, result type: ${u.type}`),u.type===`paused`?yield*a(t,{status:`paused`,pausedAt:u.nodeId,executionState:u.executionState,updatedAt:new Date}):(yield*a(t,{status:`completed`,updatedAt:new Date,endedAt:new Date}),yield*c(t,s)),u}).pipe(p.catchAll(i=>p.gen(function*(){yield*p.logError(`Flow execution failed`,i);let o=i instanceof e?i.body:String(i);yield*p.logInfo(`Updating job ${t} to failed status with error: ${o}`),yield*a(t,{status:`failed`,error:o,updatedAt:new Date}).pipe(p.catchAll(e=>p.gen(function*(){return yield*p.logError(`Failed to update job ${t}`,e),p.succeed(void 0)})));let l=yield*r.get(t);throw l&&(yield*n.emit(t,{jobId:t,eventType:k.FlowError,flowId:l.flowId,error:o}).pipe(p.catchAll(e=>p.gen(function*(){return yield*p.logError(`Failed to emit FlowError event for job ${t}`,e),p.succeed(void 0)})))),yield*c(t,s).pipe(p.catchAll(e=>p.gen(function*(){return yield*p.logWarning(`Failed to cleanup intermediate files for job ${t}`,e),p.succeed(void 0)}))),i})));return{getFlow:(e,n)=>p.gen(function*(){return yield*t.getFlow(e,n)}),getFlowData:(e,n)=>p.gen(function*(){return xe(yield*t.getFlow(e,n))}),runFlow:({flowId:n,storageId:i,clientId:a,inputs:o})=>p.gen(function*(){let s=yield*Q.optional,c=yield*p.try({try:()=>ht.parse({inputs:o}),catch:t=>e.fromCode(`FLOW_INPUT_VALIDATION_ERROR`,{cause:t})}),u=crypto.randomUUID(),d=new Date,f={id:u,flowId:n,storageId:i,clientId:a,status:`started`,createdAt:d,updatedAt:d,tasks:[]};yield*r.set(u,f);let m=yield*t.getFlow(n,a);console.log(`[FlowServer] About to fork flow execution for job: ${u}`);let _=l({jobId:u,flow:m,storageId:i,clientId:a,inputs:c.inputs}).pipe(p.tapErrorCause(e=>p.logError(`Flow execution failed`,e)));if(h.isSome(s)){console.log(`[FlowServer] Using waitUntil for job: ${u}`);let e=yield*p.runtime(),t=g.runPromise(e)(_);s.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for job: ${u}`),yield*p.forkDaemon(_);return console.log(`[FlowServer] Flow execution started for job: ${u}`),f}),getJobStatus:t=>p.gen(function*(){return(yield*r.get(t))||(yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`})))}),resumeFlow:({jobId:i,nodeId:o,newData:s,clientId:l})=>p.gen(function*(){let u=yield*Q.optional,d=yield*r.get(i);if(!d)return console.error(`Job not found`),yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${i} not found`}));if(d.status!==`paused`)return console.error(`Job is not paused`),yield*p.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${i} is not paused (status: ${d.status})`}));if(d.pausedAt!==o)return console.error(`Job is not paused at the expected node`),yield*p.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${i} is paused at node ${d.pausedAt}, not ${o}`}));if(!d.executionState)return console.error(`Job has no execution state`),yield*p.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${i} has no execution state`}));let f={...d.tasks.reduce((e,t)=>(t.result!==void 0&&(e[t.nodeId]=t.result),e),{}),[o]:s},m={...d.executionState.inputs,[o]:s};yield*a(i,{status:`running`});let _=yield*t.getFlow(d.flowId,d.clientId),v=p.gen(function*(){let t=Ee(_,n,r);if(!d.executionState)return yield*p.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${i} has no execution state`}));let o=yield*t.resume({jobId:i,storageId:d.storageId,nodeResults:f,executionState:{...d.executionState,inputs:m},clientId:d.clientId});return o.type===`paused`?yield*a(i,{status:`paused`,pausedAt:o.nodeId,executionState:o.executionState,updatedAt:new Date}):(yield*a(i,{status:`completed`,pausedAt:void 0,executionState:void 0,updatedAt:new Date,endedAt:new Date}),yield*c(i,l)),o}).pipe(p.catchAll(t=>p.gen(function*(){yield*p.logError(`Flow resume failed`,t);let o=t instanceof e?t.body:String(t);yield*p.logInfo(`Updating job ${i} to failed status with error: ${o}`),yield*a(i,{status:`failed`,error:o,updatedAt:new Date}).pipe(p.catchAll(e=>p.gen(function*(){return yield*p.logError(`Failed to update job ${i}`,e),p.succeed(void 0)})));let s=yield*r.get(i);throw s&&(yield*n.emit(i,{jobId:i,eventType:k.FlowError,flowId:s.flowId,error:o}).pipe(p.catchAll(e=>p.gen(function*(){return yield*p.logError(`Failed to emit FlowError event for job ${i}`,e),p.succeed(void 0)})))),yield*c(i,l).pipe(p.catchAll(e=>p.gen(function*(){return yield*p.logWarning(`Failed to cleanup intermediate files for job ${i}`,e),p.succeed(void 0)}))),t}))).pipe(p.tapErrorCause(e=>p.logError(`Flow resume failed`,e)));if(h.isSome(u)){console.log(`[FlowServer] Using waitUntil for resume job: ${i}`);let e=yield*p.runtime(),t=g.runPromise(e)(v);u.value(t)}else console.log(`[FlowServer] Using Effect.forkDaemon for resume job: ${i}`),yield*p.forkDaemon(v);return(yield*r.get(i))||(yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${i} not found after update`})))}),pauseFlow:(t,i)=>p.gen(function*(){let o=yield*r.get(t);if(!o)return yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}));if(i!==null&&o.clientId!==i)return yield*p.fail(e.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${i} is not authorized to pause job ${t}`}));if(o.status!==`running`)return yield*p.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} cannot be paused (current status: ${o.status})`}));let s=o.tasks.find(e=>e.status===`running`)?.nodeId;return yield*a(t,{status:`paused`,pausedAt:s,updatedAt:new Date}),yield*n.emit(t,{jobId:t,flowId:o.flowId,eventType:k.FlowPause,pausedAt:s}),(yield*r.get(t))||(yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after pause`})))}),cancelFlow:(t,i)=>p.gen(function*(){let o=yield*r.get(t);return o?i!==null&&o.clientId!==i?yield*p.fail(e.fromCode(`FLOW_NOT_AUTHORIZED`,{cause:`Client ${i} is not authorized to cancel job ${t}`})):o.status!==`running`&&o.status!==`paused`&&o.status!==`started`?yield*p.fail(e.fromCode(`FLOW_JOB_ERROR`,{cause:`Job ${t} cannot be cancelled (current status: ${o.status})`})):(yield*a(t,{status:`cancelled`,updatedAt:new Date,endedAt:new Date}),yield*n.emit(t,{jobId:t,flowId:o.flowId,eventType:k.FlowCancel}),yield*c(t,i),(yield*r.get(t))||(yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found after cancellation`})))):yield*p.fail(e.fromCode(`FLOW_JOB_NOT_FOUND`,{cause:`Job ${t} not found`}))}),subscribeToFlowEvents:(e,t)=>p.gen(function*(){yield*n.subscribe(e,t)}),unsubscribeFromFlowEvents:e=>p.gen(function*(){yield*n.unsubscribe(e)})}})}const Oe=m.effect(Ce,De());function ke(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?e:e.substring(0,t)}function Ae(e){let t=e.lastIndexOf(`.`);return t===-1||t===0?``:e.substring(t+1)}function je(e,t,n){let r=e.metadata??{},i=r.fileName??r.originalName??r.name??`unnamed`;return{baseName:ke(i),extension:Ae(i),fileName:i,nodeType:t.nodeType,nodeId:t.nodeId,flowId:t.flowId,jobId:t.jobId,timestamp:new Date().toISOString(),...n}}function Me(e,t){try{let n={};for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=String(r));return y(e,n)}catch{return e}}function Ne(e,t,n){let r=t.fileName;if(!n)return r;try{if(n.mode===`auto`){if(n.autoSuffix){let e=n.autoSuffix(t);if(e){let{baseName:n,extension:r}=t;return r?`${n}-${e}.${r}`:`${n}-${e}`}}return r}if(n.mode===`custom`){if(n.rename)return n.rename(e,t)||r;if(n.pattern)return Me(n.pattern,t)||r}return r}catch{return r}}function Pe(e){if(!e||e.trim()===``)return{isValid:!1,error:`Pattern cannot be empty`};let t=(e.match(/\{\{/g)||[]).length,n=(e.match(/\}\}/g)||[]).length;if(t!==n)return{isValid:!1,error:`Unbalanced braces: ${t} opening, ${n} closing`};let r=e.match(/\{\{[^}]*[^a-zA-Z0-9_}][^}]*\}\}/g);return r?{isValid:!1,error:`Invalid variable syntax: ${r[0]}`}:{isValid:!0}}const Fe=[{name:`baseName`,description:`Filename without extension`,example:`photo`},{name:`extension`,description:`File extension without dot`,example:`jpg`},{name:`fileName`,description:`Full original filename`,example:`photo.jpg`},{name:`nodeType`,description:`Type of processing node`,example:`resize`},{name:`nodeId`,description:`Specific node instance ID`,example:`resize-1`},{name:`flowId`,description:`Flow identifier`,example:`flow-abc`},{name:`jobId`,description:`Execution job ID`,example:`job-123`},{name:`timestamp`,description:`ISO 8601 processing time`,example:`2024-01-15T10:30:00Z`},{name:`width`,description:`Output width (image/video)`,example:`800`},{name:`height`,description:`Output height (image/video)`,example:`600`},{name:`format`,description:`Output format`,example:`webp`},{name:`quality`,description:`Quality setting`,example:`80`},{name:`pageNumber`,description:`Page number (documents)`,example:`1`}];function Ie({id:e,name:t,description:n,outputTypeId:r,keepOutput:i,naming:o,nodeType:s=`transform`,namingVars:c,transform:l}){return p.gen(function*(){let d=yield*u;return yield*I({id:e,name:t,description:n,type:F.process,outputTypeId:r,keepOutput:i,inputSchema:a,outputSchema:a,run:({data:t,storageId:n,flowId:r,jobId:i,clientId:a})=>p.gen(function*(){let u={flowId:r,nodeId:e,jobId:i},f=yield*l(yield*d.read(t.id,a),t),p=f instanceof Uint8Array?f:f.bytes,m=f instanceof Uint8Array?void 0:f.type,h=f instanceof Uint8Array?void 0:f.fileName;!h&&o&&(h=Ne(t,je(t,{flowId:r,jobId:i,nodeId:e,nodeType:s},c),o));let g=new ReadableStream({start(e){e.enqueue(p),e.close()}}),{type:_,fileName:v,metadata:y,metadataJson:b}=R(t.metadata),x=yield*d.upload({storageId:n,size:p.byteLength,type:m??_,fileName:h??v,lastModified:0,metadata:b,flow:u},a,g),S=y?{...y,...m&&{mimeType:m,type:m,"content-type":m},...h&&{fileName:h,originalName:h,name:h,extension:h.split(`.`).pop()||y.extension}}:x.metadata;return L(S?{...x,metadata:S}:x)})})})}var Le=class extends f.Tag(`CredentialProvider`)(){},Re=class extends f.Tag(`DocumentAiPlugin`)(){},ze=class extends f.Tag(`DocumentPlugin`)(){},Be=class extends f.Tag(`ImageAiPlugin`)(){},Ve=class extends f.Tag(`ImagePlugin`)(){};const He=v.object({serviceType:v.enum([`replicate`]).optional()}),Ue=v.object({duration:v.number().nonnegative(),width:v.number().positive(),height:v.number().positive(),codec:v.string(),format:v.string(),bitrate:v.number().nonnegative(),frameRate:v.number().positive(),aspectRatio:v.string(),hasAudio:v.boolean(),audioCodec:v.string().optional(),audioBitrate:v.number().nonnegative().optional(),size:v.number().nonnegative()}),We=v.object({timestamp:v.number().nonnegative(),format:v.enum([`png`,`jpeg`]).optional(),quality:v.number().min(1).max(100).optional()}),Ge=v.object({quality:v.number().min(0).max(100),format:v.enum([`jpeg`,`webp`,`png`,`avif`])}),Ke=v.object({serviceType:v.enum([`replicate`]).optional()}),qe=v.object({width:v.number().positive().optional(),height:v.number().positive().optional(),fit:v.enum([`contain`,`cover`,`fill`])}).refine(e=>e.width||e.height,`Either width or height must be specified for resize`),Je=v.object({width:v.number().positive().optional(),height:v.number().positive().optional(),aspectRatio:v.enum([`keep`,`ignore`]).optional(),scaling:v.enum([`bicubic`,`bilinear`,`lanczos`]).optional()}).refine(e=>e.width||e.height,`Either width or height must be specified for video resize`),Ye=v.object({format:v.enum([`mp4`,`webm`,`mov`,`avi`]),codec:v.enum([`h264`,`h265`,`vp9`,`av1`]).optional(),videoBitrate:v.string().optional(),audioBitrate:v.string().optional(),audioCodec:v.enum([`aac`,`mp3`,`opus`,`vorbis`]).optional()}),Xe=v.object({type:v.literal(`resize`),width:v.number().positive().optional(),height:v.number().positive().optional(),fit:v.enum([`contain`,`cover`,`fill`])}),Ze=v.object({type:v.literal(`blur`),sigma:v.number().min(.3).max(1e3)}),Qe=v.object({type:v.literal(`rotate`),angle:v.number(),background:v.string().optional()}),$e=v.object({type:v.literal(`flip`),direction:v.enum([`horizontal`,`vertical`])}),et=v.object({type:v.literal(`grayscale`)}),tt=v.object({type:v.literal(`sepia`)}),$=v.object({type:v.literal(`brightness`),value:v.number().min(-100).max(100)}),nt=v.object({type:v.literal(`contrast`),value:v.number().min(-100).max(100)}),rt=v.object({type:v.literal(`sharpen`),sigma:v.number().positive().optional()}),it=v.object({type:v.literal(`watermark`),imagePath:v.string().min(1).url(),position:v.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),opacity:v.number().min(0).max(1),offsetX:v.number().optional(),offsetY:v.number().optional()}),at=v.object({type:v.literal(`logo`),imagePath:v.string().min(1).url(),position:v.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),scale:v.number().min(.1).max(2),offsetX:v.number().optional(),offsetY:v.number().optional()}),ot=v.object({type:v.literal(`text`),text:v.string().min(1),position:v.enum([`top-left`,`top-right`,`bottom-left`,`bottom-right`,`center`]),fontSize:v.number().positive(),color:v.string().min(1),fontFamily:v.string().optional(),offsetX:v.number().optional(),offsetY:v.number().optional()}),st=v.discriminatedUnion(`type`,[Xe,Ze,Qe,$e,et,tt,$,nt,rt,it,at,ot]),ct=v.object({transformations:v.array(st).min(1)}),lt=v.object({startTime:v.number().nonnegative(),endTime:v.number().positive().optional(),duration:v.number().positive().optional()}).refine(e=>!e.endTime||!e.duration,`Cannot specify both endTime and duration`).refine(e=>!e.endTime||e.endTime>e.startTime,`endTime must be greater than startTime`);var ut=class extends f.Tag(`VideoPlugin`)(){},dt=class extends f.Tag(`VirusScanPlugin`)(){},ft=class extends f.Tag(`ZipPlugin`)(){};const pt=(e,t)=>{if(e.length===0)return t;let[n,...r]=e;return r.reduce((e,t)=>v.union([e,t]),n)};function mt(t){return p.gen(function*(){let n=Object.entries(t.nodes),r=e=>p.isEffect(e)?e:p.succeed(e),i=yield*p.forEach(n,([t,n])=>p.flatMap(r(n),n=>n.id===t?p.succeed([t,n]):p.fail(e.fromCode(`FLOW_NODE_ERROR`,{cause:Error(`Node key ${t} does not match node id ${n.id}`)})))),a=Object.fromEntries(i),o=i.map(([,e])=>e),s=i.filter(([,e])=>e.type===F.input).map(([,e])=>e.inputSchema),c=t.edges.map(e=>({source:a[e.source]?.id??e.source,target:a[e.target]?.id??e.target,sourcePort:e.sourcePort,targetPort:e.targetPort})),l=new Set(i.map(([e])=>a[e]?.id).filter(e=>e&&!c.some(t=>t.source===e))),u=i.filter(([,e])=>l.has(e.id)).map(([,e])=>e.outputSchema),d=t.inputSchema??pt(s,v.unknown()),f=t.outputSchema??pt(u,v.unknown());return yield*Z({flowId:t.flowId,name:t.name,nodes:o,edges:c,inputSchema:d,outputSchema:f,typeChecker:t.typeChecker,onEvent:t.onEvent,parallelExecution:t.parallelExecution,hooks:t.hooks})})}const ht=v.object({inputs:v.record(v.string(),v.any())});export{pe as $,Be as A,M as At,Me as B,qe as C,I as Ct,Ue as D,ee as Dt,We as E,P as Et,Fe as F,w as Ft,De as G,Se as H,Ne as I,S as It,xe as J,Oe as K,je as L,C as Lt,Re as M,O as Mt,Le as N,E as Nt,He as O,A as Ot,Ie as P,D as Pt,he as Q,ke as R,T as Rt,Je as S,F as St,Ge as T,N as Tt,Ce as U,Pe as V,Q as W,X,J as Y,me as Z,ot as _,z as _t,ut as a,ue as at,it as b,L as bt,$ as c,ye as ct,et as d,H as dt,ge as et,at as f,V as ft,rt as g,le as gt,tt as h,G as ht,dt as i,de as it,ze as j,k as jt,Ve as k,j as kt,nt as l,q as lt,Qe as m,K as mt,mt as n,fe as nt,lt as o,Y as ot,Xe as p,W as pt,Z as q,ft as r,_e as rt,Ze as s,be as st,ht as t,ve as tt,$e as u,U as ut,ct as v,ce as vt,Ke as w,te as wt,Ye as x,ne as xt,st as y,R as yt,Ae as z,b as zt};
2
+ //# sourceMappingURL=flow-CszNZOpc.mjs.map