@uploadista/core 0.0.2 → 0.0.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 (331) hide show
  1. package/README.md +6 -20
  2. package/dist/checksum-C5qE-5eg.js +2 -0
  3. package/dist/checksum-C5qE-5eg.js.map +1 -0
  4. package/dist/checksum-wSBuXX84.cjs +1 -0
  5. package/dist/errors/index.cjs +1 -1
  6. package/dist/errors/index.d.cts +2 -2
  7. package/dist/errors/index.d.ts +3 -3
  8. package/dist/errors/index.js +1 -2
  9. package/dist/flow/index.cjs +1 -1
  10. package/dist/flow/index.d.cts +5 -5
  11. package/dist/flow/index.d.ts +6 -24
  12. package/dist/flow/index.js +1 -24
  13. package/dist/flow-B0mMJM5Y.js +2 -0
  14. package/dist/flow-B0mMJM5Y.js.map +1 -0
  15. package/dist/flow-s5bgJsdb.cjs +1 -0
  16. package/dist/index-B46hb7yB.d.cts +36 -0
  17. package/dist/index-B46hb7yB.d.cts.map +1 -0
  18. package/dist/index-BnGZO47X.d.ts +3952 -0
  19. package/dist/index-BnGZO47X.d.ts.map +1 -0
  20. package/dist/{streams/stream-limiter.d.cts → index-C1mxuUxK.d.ts} +3 -3
  21. package/dist/index-C1mxuUxK.d.ts.map +1 -0
  22. package/dist/index-DM69UMgG.d.cts +4132 -0
  23. package/dist/index-DM69UMgG.d.cts.map +1 -0
  24. package/dist/index-DMJv8Tvo.d.ts +168 -0
  25. package/dist/index-DMJv8Tvo.d.ts.map +1 -0
  26. package/dist/index-GLPiXqj4.d.cts +168 -0
  27. package/dist/index-GLPiXqj4.d.cts.map +1 -0
  28. package/dist/index.cjs +1 -1
  29. package/dist/index.d.cts +5 -5
  30. package/dist/index.d.ts +6 -5
  31. package/dist/index.js +1 -5
  32. package/dist/stream-limiter-CTuiXkcq.js +2 -0
  33. package/dist/{stream-limiter-CoWKv39w.js.map → stream-limiter-CTuiXkcq.js.map} +1 -1
  34. package/dist/stream-limiter-DYGG4t9f.cjs +1 -0
  35. package/dist/streams/index.cjs +1 -0
  36. package/dist/streams/index.d.cts +3 -0
  37. package/dist/streams/index.d.ts +3 -0
  38. package/dist/streams/index.js +1 -0
  39. package/dist/streams-BiD_pOPH.cjs +0 -0
  40. package/dist/streams-Bs3GDNKJ.js +1 -0
  41. package/dist/types/index.cjs +1 -1
  42. package/dist/types/index.d.cts +5 -5
  43. package/dist/types/index.d.ts +6 -10
  44. package/dist/types/index.js +1 -9
  45. package/dist/types-Dj9g8ocl.cjs +1 -0
  46. package/dist/types-m26wrG-Z.js +2 -0
  47. package/dist/types-m26wrG-Z.js.map +1 -0
  48. package/dist/upload/index.cjs +1 -1
  49. package/dist/upload/index.d.cts +5 -5
  50. package/dist/upload/index.d.ts +6 -4
  51. package/dist/upload/index.js +1 -3
  52. package/dist/upload-BzU7ifyH.js +2 -0
  53. package/dist/upload-BzU7ifyH.js.map +1 -0
  54. package/dist/upload-DvLp6TXO.cjs +1 -0
  55. package/dist/uploadista-error-CAtkQiAv.d.cts +221 -0
  56. package/dist/uploadista-error-CAtkQiAv.d.cts.map +1 -0
  57. package/dist/{uploadista-error-BVsVxqvz.js → uploadista-error-CjfcFnVa.js} +9 -2
  58. package/dist/uploadista-error-CjfcFnVa.js.map +1 -0
  59. package/dist/uploadista-error-D9SONF9K.d.ts +221 -0
  60. package/dist/uploadista-error-D9SONF9K.d.ts.map +1 -0
  61. package/dist/{uploadista-error-BB-Wdiz9.cjs → uploadista-error-DdTP-Rjx.cjs} +9 -2
  62. package/dist/utils/index.cjs +1 -0
  63. package/dist/utils/index.d.cts +3 -0
  64. package/dist/utils/index.d.ts +3 -0
  65. package/dist/utils/index.js +1 -0
  66. package/dist/utils-BILytQlb.js +2 -0
  67. package/dist/utils-BILytQlb.js.map +1 -0
  68. package/dist/utils-BLsIUd8c.cjs +1 -0
  69. package/package.json +13 -17
  70. package/src/index.ts +2 -0
  71. package/src/streams/index.ts +1 -0
  72. package/src/utils/index.ts +5 -0
  73. package/tsdown.config.ts +2 -10
  74. package/.turbo/turbo-build.log +0 -5
  75. package/.turbo/turbo-check.log +0 -231
  76. package/.turbo/turbo-format.log +0 -5
  77. package/dist/chunk-CUT6urMc.cjs +0 -1
  78. package/dist/debounce-C2SeqcxD.js +0 -2
  79. package/dist/debounce-C2SeqcxD.js.map +0 -1
  80. package/dist/debounce-LZK7yS7Z.cjs +0 -1
  81. package/dist/errors/index.d.ts.map +0 -1
  82. package/dist/errors/uploadista-error.d.ts +0 -209
  83. package/dist/errors/uploadista-error.d.ts.map +0 -1
  84. package/dist/errors/uploadista-error.js +0 -322
  85. package/dist/flow/edge.d.ts +0 -47
  86. package/dist/flow/edge.d.ts.map +0 -1
  87. package/dist/flow/edge.js +0 -40
  88. package/dist/flow/event.d.ts +0 -206
  89. package/dist/flow/event.d.ts.map +0 -1
  90. package/dist/flow/event.js +0 -53
  91. package/dist/flow/flow-server.d.ts +0 -223
  92. package/dist/flow/flow-server.d.ts.map +0 -1
  93. package/dist/flow/flow-server.js +0 -614
  94. package/dist/flow/flow.d.ts +0 -238
  95. package/dist/flow/flow.d.ts.map +0 -1
  96. package/dist/flow/flow.js +0 -629
  97. package/dist/flow/index.d.ts.map +0 -1
  98. package/dist/flow/node.d.ts +0 -136
  99. package/dist/flow/node.d.ts.map +0 -1
  100. package/dist/flow/node.js +0 -153
  101. package/dist/flow/nodes/index.d.ts +0 -8
  102. package/dist/flow/nodes/index.d.ts.map +0 -1
  103. package/dist/flow/nodes/index.js +0 -7
  104. package/dist/flow/nodes/input-node.d.ts +0 -78
  105. package/dist/flow/nodes/input-node.d.ts.map +0 -1
  106. package/dist/flow/nodes/input-node.js +0 -233
  107. package/dist/flow/nodes/storage-node.d.ts +0 -67
  108. package/dist/flow/nodes/storage-node.d.ts.map +0 -1
  109. package/dist/flow/nodes/storage-node.js +0 -94
  110. package/dist/flow/nodes/streaming-input-node.d.ts +0 -69
  111. package/dist/flow/nodes/streaming-input-node.d.ts.map +0 -1
  112. package/dist/flow/nodes/streaming-input-node.js +0 -156
  113. package/dist/flow/nodes/transform-node.d.ts +0 -85
  114. package/dist/flow/nodes/transform-node.d.ts.map +0 -1
  115. package/dist/flow/nodes/transform-node.js +0 -107
  116. package/dist/flow/parallel-scheduler.d.ts +0 -175
  117. package/dist/flow/parallel-scheduler.d.ts.map +0 -1
  118. package/dist/flow/parallel-scheduler.js +0 -193
  119. package/dist/flow/plugins/credential-provider.d.ts +0 -47
  120. package/dist/flow/plugins/credential-provider.d.ts.map +0 -1
  121. package/dist/flow/plugins/credential-provider.js +0 -24
  122. package/dist/flow/plugins/image-ai-plugin.d.ts +0 -61
  123. package/dist/flow/plugins/image-ai-plugin.d.ts.map +0 -1
  124. package/dist/flow/plugins/image-ai-plugin.js +0 -21
  125. package/dist/flow/plugins/image-plugin.d.ts +0 -52
  126. package/dist/flow/plugins/image-plugin.d.ts.map +0 -1
  127. package/dist/flow/plugins/image-plugin.js +0 -22
  128. package/dist/flow/plugins/types/describe-image-node.d.ts +0 -16
  129. package/dist/flow/plugins/types/describe-image-node.d.ts.map +0 -1
  130. package/dist/flow/plugins/types/describe-image-node.js +0 -9
  131. package/dist/flow/plugins/types/index.d.ts +0 -9
  132. package/dist/flow/plugins/types/index.d.ts.map +0 -1
  133. package/dist/flow/plugins/types/index.js +0 -8
  134. package/dist/flow/plugins/types/optimize-node.d.ts +0 -20
  135. package/dist/flow/plugins/types/optimize-node.d.ts.map +0 -1
  136. package/dist/flow/plugins/types/optimize-node.js +0 -11
  137. package/dist/flow/plugins/types/remove-background-node.d.ts +0 -16
  138. package/dist/flow/plugins/types/remove-background-node.d.ts.map +0 -1
  139. package/dist/flow/plugins/types/remove-background-node.js +0 -9
  140. package/dist/flow/plugins/types/resize-node.d.ts +0 -21
  141. package/dist/flow/plugins/types/resize-node.d.ts.map +0 -1
  142. package/dist/flow/plugins/types/resize-node.js +0 -16
  143. package/dist/flow/plugins/zip-plugin.d.ts +0 -62
  144. package/dist/flow/plugins/zip-plugin.d.ts.map +0 -1
  145. package/dist/flow/plugins/zip-plugin.js +0 -21
  146. package/dist/flow/typed-flow.d.ts +0 -90
  147. package/dist/flow/typed-flow.d.ts.map +0 -1
  148. package/dist/flow/typed-flow.js +0 -59
  149. package/dist/flow/types/flow-file.d.ts +0 -45
  150. package/dist/flow/types/flow-file.d.ts.map +0 -1
  151. package/dist/flow/types/flow-file.js +0 -27
  152. package/dist/flow/types/flow-job.d.ts +0 -118
  153. package/dist/flow/types/flow-job.d.ts.map +0 -1
  154. package/dist/flow/types/flow-job.js +0 -11
  155. package/dist/flow/types/flow-types.d.ts +0 -321
  156. package/dist/flow/types/flow-types.d.ts.map +0 -1
  157. package/dist/flow/types/flow-types.js +0 -52
  158. package/dist/flow/types/index.d.ts +0 -4
  159. package/dist/flow/types/index.d.ts.map +0 -1
  160. package/dist/flow/types/index.js +0 -3
  161. package/dist/flow/types/run-args.d.ts +0 -38
  162. package/dist/flow/types/run-args.d.ts.map +0 -1
  163. package/dist/flow/types/run-args.js +0 -30
  164. package/dist/flow/types/type-validator.d.ts +0 -26
  165. package/dist/flow/types/type-validator.d.ts.map +0 -1
  166. package/dist/flow/types/type-validator.js +0 -134
  167. package/dist/flow/utils/resolve-upload-metadata.d.ts +0 -11
  168. package/dist/flow/utils/resolve-upload-metadata.d.ts.map +0 -1
  169. package/dist/flow/utils/resolve-upload-metadata.js +0 -28
  170. package/dist/flow-2zXnEiWL.cjs +0 -1
  171. package/dist/flow-CRaKy7Vj.js +0 -2
  172. package/dist/flow-CRaKy7Vj.js.map +0 -1
  173. package/dist/generate-id-Dm-Vboxq.d.ts +0 -34
  174. package/dist/generate-id-Dm-Vboxq.d.ts.map +0 -1
  175. package/dist/generate-id-LjJRLD6N.d.cts +0 -34
  176. package/dist/generate-id-LjJRLD6N.d.cts.map +0 -1
  177. package/dist/generate-id-xHp_Z7Cl.cjs +0 -1
  178. package/dist/generate-id-yohS1ZDk.js +0 -2
  179. package/dist/generate-id-yohS1ZDk.js.map +0 -1
  180. package/dist/index-BO8GZlbD.d.cts +0 -1040
  181. package/dist/index-BO8GZlbD.d.cts.map +0 -1
  182. package/dist/index-D-CoVpkZ.d.ts +0 -1004
  183. package/dist/index-D-CoVpkZ.d.ts.map +0 -1
  184. package/dist/index.d.ts.map +0 -1
  185. package/dist/logger/logger.cjs +0 -1
  186. package/dist/logger/logger.d.cts +0 -8
  187. package/dist/logger/logger.d.cts.map +0 -1
  188. package/dist/logger/logger.d.ts +0 -5
  189. package/dist/logger/logger.d.ts.map +0 -1
  190. package/dist/logger/logger.js +0 -10
  191. package/dist/logger/logger.js.map +0 -1
  192. package/dist/semaphore-0ZwjVpyF.js +0 -2
  193. package/dist/semaphore-0ZwjVpyF.js.map +0 -1
  194. package/dist/semaphore-BHprIjFI.d.cts +0 -37
  195. package/dist/semaphore-BHprIjFI.d.cts.map +0 -1
  196. package/dist/semaphore-DThupBkc.d.ts +0 -37
  197. package/dist/semaphore-DThupBkc.d.ts.map +0 -1
  198. package/dist/semaphore-DVrONiAV.cjs +0 -1
  199. package/dist/stream-limiter-CoWKv39w.js +0 -2
  200. package/dist/stream-limiter-JgOwmkMa.cjs +0 -1
  201. package/dist/streams/multi-stream.cjs +0 -1
  202. package/dist/streams/multi-stream.d.cts +0 -91
  203. package/dist/streams/multi-stream.d.cts.map +0 -1
  204. package/dist/streams/multi-stream.d.ts +0 -86
  205. package/dist/streams/multi-stream.d.ts.map +0 -1
  206. package/dist/streams/multi-stream.js +0 -149
  207. package/dist/streams/multi-stream.js.map +0 -1
  208. package/dist/streams/stream-limiter.cjs +0 -1
  209. package/dist/streams/stream-limiter.d.cts.map +0 -1
  210. package/dist/streams/stream-limiter.d.ts +0 -27
  211. package/dist/streams/stream-limiter.d.ts.map +0 -1
  212. package/dist/streams/stream-limiter.js +0 -49
  213. package/dist/streams/stream-splitter.cjs +0 -1
  214. package/dist/streams/stream-splitter.d.cts +0 -68
  215. package/dist/streams/stream-splitter.d.cts.map +0 -1
  216. package/dist/streams/stream-splitter.d.ts +0 -51
  217. package/dist/streams/stream-splitter.d.ts.map +0 -1
  218. package/dist/streams/stream-splitter.js +0 -175
  219. package/dist/streams/stream-splitter.js.map +0 -1
  220. package/dist/types/data-store-registry.d.ts +0 -13
  221. package/dist/types/data-store-registry.d.ts.map +0 -1
  222. package/dist/types/data-store-registry.js +0 -4
  223. package/dist/types/data-store.d.ts +0 -316
  224. package/dist/types/data-store.d.ts.map +0 -1
  225. package/dist/types/data-store.js +0 -157
  226. package/dist/types/event-broadcaster.d.ts +0 -28
  227. package/dist/types/event-broadcaster.d.ts.map +0 -1
  228. package/dist/types/event-broadcaster.js +0 -6
  229. package/dist/types/event-emitter.d.ts +0 -378
  230. package/dist/types/event-emitter.d.ts.map +0 -1
  231. package/dist/types/event-emitter.js +0 -223
  232. package/dist/types/index.d.ts.map +0 -1
  233. package/dist/types/input-file.d.ts +0 -104
  234. package/dist/types/input-file.d.ts.map +0 -1
  235. package/dist/types/input-file.js +0 -27
  236. package/dist/types/kv-store.d.ts +0 -281
  237. package/dist/types/kv-store.d.ts.map +0 -1
  238. package/dist/types/kv-store.js +0 -234
  239. package/dist/types/middleware.d.ts +0 -17
  240. package/dist/types/middleware.d.ts.map +0 -1
  241. package/dist/types/middleware.js +0 -21
  242. package/dist/types/upload-event.d.ts +0 -105
  243. package/dist/types/upload-event.d.ts.map +0 -1
  244. package/dist/types/upload-event.js +0 -71
  245. package/dist/types/upload-file.d.ts +0 -136
  246. package/dist/types/upload-file.d.ts.map +0 -1
  247. package/dist/types/upload-file.js +0 -34
  248. package/dist/types/websocket.d.ts +0 -144
  249. package/dist/types/websocket.d.ts.map +0 -1
  250. package/dist/types/websocket.js +0 -40
  251. package/dist/types-BT-cvi7T.cjs +0 -1
  252. package/dist/types-DhU2j-XF.js +0 -2
  253. package/dist/types-DhU2j-XF.js.map +0 -1
  254. package/dist/upload/convert-to-stream.d.ts +0 -38
  255. package/dist/upload/convert-to-stream.d.ts.map +0 -1
  256. package/dist/upload/convert-to-stream.js +0 -43
  257. package/dist/upload/convert-upload-to-flow-file.d.ts +0 -14
  258. package/dist/upload/convert-upload-to-flow-file.d.ts.map +0 -1
  259. package/dist/upload/convert-upload-to-flow-file.js +0 -21
  260. package/dist/upload/create-upload.d.ts +0 -68
  261. package/dist/upload/create-upload.d.ts.map +0 -1
  262. package/dist/upload/create-upload.js +0 -157
  263. package/dist/upload/index.d.ts.map +0 -1
  264. package/dist/upload/mime.d.ts +0 -24
  265. package/dist/upload/mime.d.ts.map +0 -1
  266. package/dist/upload/mime.js +0 -351
  267. package/dist/upload/upload-chunk.d.ts +0 -58
  268. package/dist/upload/upload-chunk.d.ts.map +0 -1
  269. package/dist/upload/upload-chunk.js +0 -277
  270. package/dist/upload/upload-server.d.ts +0 -221
  271. package/dist/upload/upload-server.d.ts.map +0 -1
  272. package/dist/upload/upload-server.js +0 -181
  273. package/dist/upload/upload-strategy-negotiator.d.ts +0 -148
  274. package/dist/upload/upload-strategy-negotiator.d.ts.map +0 -1
  275. package/dist/upload/upload-strategy-negotiator.js +0 -217
  276. package/dist/upload/upload-url.d.ts +0 -68
  277. package/dist/upload/upload-url.d.ts.map +0 -1
  278. package/dist/upload/upload-url.js +0 -142
  279. package/dist/upload/write-to-store.d.ts +0 -77
  280. package/dist/upload/write-to-store.d.ts.map +0 -1
  281. package/dist/upload/write-to-store.js +0 -147
  282. package/dist/upload-DLuICjpP.cjs +0 -1
  283. package/dist/upload-DaXO34dE.js +0 -2
  284. package/dist/upload-DaXO34dE.js.map +0 -1
  285. package/dist/uploadista-error-BVsVxqvz.js.map +0 -1
  286. package/dist/uploadista-error-CwxYs4EB.d.ts +0 -52
  287. package/dist/uploadista-error-CwxYs4EB.d.ts.map +0 -1
  288. package/dist/uploadista-error-kKlhLRhY.d.cts +0 -52
  289. package/dist/uploadista-error-kKlhLRhY.d.cts.map +0 -1
  290. package/dist/utils/checksum.d.ts +0 -22
  291. package/dist/utils/checksum.d.ts.map +0 -1
  292. package/dist/utils/checksum.js +0 -49
  293. package/dist/utils/debounce.cjs +0 -1
  294. package/dist/utils/debounce.d.cts +0 -38
  295. package/dist/utils/debounce.d.cts.map +0 -1
  296. package/dist/utils/debounce.d.ts +0 -36
  297. package/dist/utils/debounce.d.ts.map +0 -1
  298. package/dist/utils/debounce.js +0 -73
  299. package/dist/utils/generate-id.cjs +0 -1
  300. package/dist/utils/generate-id.d.cts +0 -2
  301. package/dist/utils/generate-id.d.ts +0 -32
  302. package/dist/utils/generate-id.d.ts.map +0 -1
  303. package/dist/utils/generate-id.js +0 -23
  304. package/dist/utils/md5.cjs +0 -1
  305. package/dist/utils/md5.d.cts +0 -73
  306. package/dist/utils/md5.d.cts.map +0 -1
  307. package/dist/utils/md5.d.ts +0 -71
  308. package/dist/utils/md5.d.ts.map +0 -1
  309. package/dist/utils/md5.js +0 -417
  310. package/dist/utils/md5.js.map +0 -1
  311. package/dist/utils/once.cjs +0 -1
  312. package/dist/utils/once.d.cts +0 -25
  313. package/dist/utils/once.d.cts.map +0 -1
  314. package/dist/utils/once.d.ts +0 -21
  315. package/dist/utils/once.d.ts.map +0 -1
  316. package/dist/utils/once.js +0 -54
  317. package/dist/utils/once.js.map +0 -1
  318. package/dist/utils/semaphore.cjs +0 -1
  319. package/dist/utils/semaphore.d.cts +0 -3
  320. package/dist/utils/semaphore.d.ts +0 -78
  321. package/dist/utils/semaphore.d.ts.map +0 -1
  322. package/dist/utils/semaphore.js +0 -134
  323. package/dist/utils/throttle.cjs +0 -1
  324. package/dist/utils/throttle.d.cts +0 -24
  325. package/dist/utils/throttle.d.cts.map +0 -1
  326. package/dist/utils/throttle.d.ts +0 -18
  327. package/dist/utils/throttle.d.ts.map +0 -1
  328. package/dist/utils/throttle.js +0 -20
  329. package/dist/utils/throttle.js.map +0 -1
  330. package/src/logger/logger.ts +0 -14
  331. /package/dist/{errors-CRm1FHHT.cjs → errors-D-K-vxsP.cjs} +0 -0
@@ -1,21 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- // Effect-based Middleware service
3
- export class MiddlewareService extends Context.Tag("MiddlewareService")() {
4
- }
5
- export const MiddlewareServiceLive = Layer.succeed(MiddlewareService, MiddlewareService.of({
6
- execute: (middlewares, context, handler) => Effect.gen(function* () {
7
- if (middlewares.length === 0) {
8
- return yield* Effect.tryPromise({
9
- try: () => handler(),
10
- catch: (error) => error,
11
- });
12
- }
13
- const chain = middlewares.reduceRight((next, middleware) => {
14
- return () => middleware(context, next);
15
- }, handler);
16
- return yield* Effect.tryPromise({
17
- try: () => chain(),
18
- catch: (error) => error,
19
- });
20
- }),
21
- }));
@@ -1,105 +0,0 @@
1
- import { z } from "zod";
2
- export declare enum UploadEventType {
3
- UPLOAD_STARTED = "upload-started",
4
- UPLOAD_PROGRESS = "upload-progress",
5
- UPLOAD_COMPLETE = "upload-complete",
6
- UPLOAD_FAILED = "upload-failed",
7
- UPLOAD_VALIDATION_SUCCESS = "upload-validation-success",
8
- UPLOAD_VALIDATION_FAILED = "upload-validation-failed",
9
- UPLOAD_VALIDATION_WARNING = "upload-validation-warning"
10
- }
11
- export declare const uploadEventSchema: z.ZodUnion<readonly [z.ZodObject<{
12
- type: z.ZodUnion<readonly [z.ZodLiteral<UploadEventType.UPLOAD_STARTED>, z.ZodLiteral<UploadEventType.UPLOAD_COMPLETE>]>;
13
- data: z.ZodObject<{
14
- id: z.ZodString;
15
- size: z.ZodOptional<z.ZodNumber>;
16
- offset: z.ZodNumber;
17
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
18
- creationDate: z.ZodOptional<z.ZodString>;
19
- url: z.ZodOptional<z.ZodString>;
20
- sizeIsDeferred: z.ZodOptional<z.ZodBoolean>;
21
- checksum: z.ZodOptional<z.ZodString>;
22
- checksumAlgorithm: z.ZodOptional<z.ZodString>;
23
- storage: z.ZodObject<{
24
- id: z.ZodString;
25
- type: z.ZodString;
26
- path: z.ZodOptional<z.ZodString>;
27
- uploadId: z.ZodOptional<z.ZodString>;
28
- bucket: z.ZodOptional<z.ZodString>;
29
- }, z.core.$strip>;
30
- flow: z.ZodOptional<z.ZodObject<{
31
- flowId: z.ZodString;
32
- nodeId: z.ZodString;
33
- jobId: z.ZodString;
34
- }, z.core.$strip>>;
35
- }, z.core.$strip>;
36
- flow: z.ZodOptional<z.ZodObject<{
37
- flowId: z.ZodString;
38
- nodeId: z.ZodString;
39
- jobId: z.ZodString;
40
- }, z.core.$strip>>;
41
- }, z.core.$strip>, z.ZodObject<{
42
- type: z.ZodLiteral<UploadEventType.UPLOAD_PROGRESS>;
43
- data: z.ZodObject<{
44
- id: z.ZodString;
45
- progress: z.ZodNumber;
46
- total: z.ZodNumber;
47
- }, z.core.$strip>;
48
- flow: z.ZodOptional<z.ZodObject<{
49
- flowId: z.ZodString;
50
- nodeId: z.ZodString;
51
- jobId: z.ZodString;
52
- }, z.core.$strip>>;
53
- }, z.core.$strip>, z.ZodObject<{
54
- type: z.ZodLiteral<UploadEventType.UPLOAD_FAILED>;
55
- data: z.ZodObject<{
56
- id: z.ZodString;
57
- error: z.ZodString;
58
- }, z.core.$strip>;
59
- flow: z.ZodOptional<z.ZodObject<{
60
- flowId: z.ZodString;
61
- nodeId: z.ZodString;
62
- jobId: z.ZodString;
63
- }, z.core.$strip>>;
64
- }, z.core.$strip>, z.ZodObject<{
65
- type: z.ZodLiteral<UploadEventType.UPLOAD_VALIDATION_SUCCESS>;
66
- data: z.ZodObject<{
67
- id: z.ZodString;
68
- validationType: z.ZodEnum<{
69
- checksum: "checksum";
70
- mimetype: "mimetype";
71
- }>;
72
- algorithm: z.ZodOptional<z.ZodString>;
73
- }, z.core.$strip>;
74
- flow: z.ZodOptional<z.ZodObject<{
75
- flowId: z.ZodString;
76
- nodeId: z.ZodString;
77
- jobId: z.ZodString;
78
- }, z.core.$strip>>;
79
- }, z.core.$strip>, z.ZodObject<{
80
- type: z.ZodLiteral<UploadEventType.UPLOAD_VALIDATION_FAILED>;
81
- data: z.ZodObject<{
82
- id: z.ZodString;
83
- reason: z.ZodString;
84
- expected: z.ZodString;
85
- actual: z.ZodString;
86
- }, z.core.$strip>;
87
- flow: z.ZodOptional<z.ZodObject<{
88
- flowId: z.ZodString;
89
- nodeId: z.ZodString;
90
- jobId: z.ZodString;
91
- }, z.core.$strip>>;
92
- }, z.core.$strip>, z.ZodObject<{
93
- type: z.ZodLiteral<UploadEventType.UPLOAD_VALIDATION_WARNING>;
94
- data: z.ZodObject<{
95
- id: z.ZodString;
96
- message: z.ZodString;
97
- }, z.core.$strip>;
98
- flow: z.ZodOptional<z.ZodObject<{
99
- flowId: z.ZodString;
100
- nodeId: z.ZodString;
101
- jobId: z.ZodString;
102
- }, z.core.$strip>>;
103
- }, z.core.$strip>]>;
104
- export type UploadEvent = z.infer<typeof uploadEventSchema>;
105
- //# sourceMappingURL=upload-event.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-event.d.ts","sourceRoot":"","sources":["../../src/types/upload-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,oBAAY,eAAe;IACzB,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;IAC/B,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;CACxD;AAQD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAqD5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,71 +0,0 @@
1
- import { z } from "zod";
2
- import { uploadFileSchema } from "./upload-file";
3
- export var UploadEventType;
4
- (function (UploadEventType) {
5
- UploadEventType["UPLOAD_STARTED"] = "upload-started";
6
- UploadEventType["UPLOAD_PROGRESS"] = "upload-progress";
7
- UploadEventType["UPLOAD_COMPLETE"] = "upload-complete";
8
- UploadEventType["UPLOAD_FAILED"] = "upload-failed";
9
- UploadEventType["UPLOAD_VALIDATION_SUCCESS"] = "upload-validation-success";
10
- UploadEventType["UPLOAD_VALIDATION_FAILED"] = "upload-validation-failed";
11
- UploadEventType["UPLOAD_VALIDATION_WARNING"] = "upload-validation-warning";
12
- })(UploadEventType || (UploadEventType = {}));
13
- const flowContextSchema = z.object({
14
- flowId: z.string(),
15
- nodeId: z.string(),
16
- jobId: z.string(),
17
- }).optional();
18
- export const uploadEventSchema = z.union([
19
- z.object({
20
- type: z.union([
21
- z.literal(UploadEventType.UPLOAD_STARTED),
22
- z.literal(UploadEventType.UPLOAD_COMPLETE),
23
- ]),
24
- data: uploadFileSchema,
25
- flow: flowContextSchema,
26
- }),
27
- z.object({
28
- type: z.literal(UploadEventType.UPLOAD_PROGRESS),
29
- data: z.object({
30
- id: z.string(),
31
- progress: z.number(),
32
- total: z.number(),
33
- }),
34
- flow: flowContextSchema,
35
- }),
36
- z.object({
37
- type: z.literal(UploadEventType.UPLOAD_FAILED),
38
- data: z.object({
39
- id: z.string(),
40
- error: z.string(),
41
- }),
42
- flow: flowContextSchema,
43
- }),
44
- z.object({
45
- type: z.literal(UploadEventType.UPLOAD_VALIDATION_SUCCESS),
46
- data: z.object({
47
- id: z.string(),
48
- validationType: z.enum(["checksum", "mimetype"]),
49
- algorithm: z.string().optional(),
50
- }),
51
- flow: flowContextSchema,
52
- }),
53
- z.object({
54
- type: z.literal(UploadEventType.UPLOAD_VALIDATION_FAILED),
55
- data: z.object({
56
- id: z.string(),
57
- reason: z.string(),
58
- expected: z.string(),
59
- actual: z.string(),
60
- }),
61
- flow: flowContextSchema,
62
- }),
63
- z.object({
64
- type: z.literal(UploadEventType.UPLOAD_VALIDATION_WARNING),
65
- data: z.object({
66
- id: z.string(),
67
- message: z.string(),
68
- }),
69
- flow: flowContextSchema,
70
- }),
71
- ]);
@@ -1,136 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * Zod schema for validating UploadFile objects.
4
- *
5
- * This schema defines the structure and validation rules for upload file metadata.
6
- * Use this schema to parse and validate UploadFile data from external sources.
7
- *
8
- * @see {@link UploadFile} for the TypeScript type
9
- */
10
- export declare const uploadFileSchema: z.ZodObject<{
11
- id: z.ZodString;
12
- size: z.ZodOptional<z.ZodNumber>;
13
- offset: z.ZodNumber;
14
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
15
- creationDate: z.ZodOptional<z.ZodString>;
16
- url: z.ZodOptional<z.ZodString>;
17
- sizeIsDeferred: z.ZodOptional<z.ZodBoolean>;
18
- checksum: z.ZodOptional<z.ZodString>;
19
- checksumAlgorithm: z.ZodOptional<z.ZodString>;
20
- storage: z.ZodObject<{
21
- id: z.ZodString;
22
- type: z.ZodString;
23
- path: z.ZodOptional<z.ZodString>;
24
- uploadId: z.ZodOptional<z.ZodString>;
25
- bucket: z.ZodOptional<z.ZodString>;
26
- }, z.core.$strip>;
27
- flow: z.ZodOptional<z.ZodObject<{
28
- flowId: z.ZodString;
29
- nodeId: z.ZodString;
30
- jobId: z.ZodString;
31
- }, z.core.$strip>>;
32
- }, z.core.$strip>;
33
- /**
34
- * Represents an uploaded file with its metadata and storage information.
35
- *
36
- * This is the core data structure that tracks file uploads throughout their lifecycle.
37
- * It contains all metadata needed to resume uploads, track progress, and locate files
38
- * in storage backends.
39
- *
40
- * @property id - Unique identifier for this upload
41
- * @property offset - Current byte offset (how many bytes have been uploaded)
42
- * @property storage - Storage backend information
43
- * @property storage.id - Storage backend identifier (e.g., "s3-production")
44
- * @property storage.type - Storage backend type (e.g., "s3", "azure", "gcs")
45
- * @property storage.path - Optional path prefix within the storage backend
46
- * @property storage.uploadId - Optional backend-specific upload ID (e.g., S3 multipart upload ID)
47
- * @property storage.bucket - Optional bucket or container name
48
- * @property flow - Optional flow processing information (when file is part of a flow)
49
- * @property flow.flowId - ID of the flow processing this file
50
- * @property flow.nodeId - ID of the flow node that created this file
51
- * @property flow.jobId - ID of the flow job execution
52
- * @property size - Total file size in bytes (undefined if deferred)
53
- * @property metadata - Custom key-value metadata attached to the file
54
- * @property creationDate - ISO 8601 timestamp when upload was created
55
- * @property url - Optional public URL to access the file
56
- * @property sizeIsDeferred - True if file size is not known at upload start
57
- * @property checksum - Optional file checksum/hash value
58
- * @property checksumAlgorithm - Algorithm used for checksum (e.g., "md5", "sha256")
59
- *
60
- * @example
61
- * ```typescript
62
- * // Create an UploadFile for a new upload
63
- * const uploadFile: UploadFile = {
64
- * id: "upload_abc123",
65
- * offset: 0,
66
- * size: 1024000,
67
- * storage: {
68
- * id: "s3-production",
69
- * type: "s3",
70
- * bucket: "my-uploads",
71
- * path: "files/"
72
- * },
73
- * metadata: {
74
- * fileName: "image.jpg",
75
- * contentType: "image/jpeg",
76
- * userId: "user_123"
77
- * },
78
- * creationDate: new Date().toISOString(),
79
- * checksum: "5d41402abc4b2a76b9719d911017c592",
80
- * checksumAlgorithm: "md5"
81
- * };
82
- *
83
- * // UploadFile with flow processing
84
- * const flowFile: UploadFile = {
85
- * id: "upload_xyz789",
86
- * offset: 0,
87
- * size: 2048000,
88
- * storage: {
89
- * id: "s3-temp",
90
- * type: "s3",
91
- * bucket: "temp-processing"
92
- * },
93
- * flow: {
94
- * flowId: "flow_resize_optimize",
95
- * nodeId: "input_1",
96
- * jobId: "job_456"
97
- * }
98
- * };
99
- *
100
- * // Resume an interrupted upload
101
- * const resumingFile: UploadFile = {
102
- * id: "upload_resume",
103
- * offset: 524288, // Already uploaded 512KB
104
- * size: 1024000,
105
- * storage: {
106
- * id: "s3-production",
107
- * type: "s3",
108
- * uploadId: "multipart_xyz" // S3 multipart upload ID
109
- * }
110
- * };
111
- * ```
112
- */
113
- export type UploadFile = {
114
- id: string;
115
- offset: number;
116
- storage: {
117
- id: string;
118
- type: string;
119
- path?: string | undefined;
120
- uploadId?: string | undefined;
121
- bucket?: string | undefined;
122
- };
123
- flow?: {
124
- flowId: string;
125
- nodeId: string;
126
- jobId: string;
127
- };
128
- size?: number | undefined;
129
- metadata?: Record<string, string | number | boolean> | undefined;
130
- creationDate?: string | undefined;
131
- url?: string | undefined;
132
- sizeIsDeferred?: boolean | undefined;
133
- checksum?: string | undefined;
134
- checksumAlgorithm?: string | undefined;
135
- };
136
- //# sourceMappingURL=upload-file.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-file.d.ts","sourceRoot":"","sources":["../../src/types/upload-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;iBAwB3B,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,CAAC;IACF,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,SAAS,CAAC;IACjE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC"}
@@ -1,34 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * Zod schema for validating UploadFile objects.
4
- *
5
- * This schema defines the structure and validation rules for upload file metadata.
6
- * Use this schema to parse and validate UploadFile data from external sources.
7
- *
8
- * @see {@link UploadFile} for the TypeScript type
9
- */
10
- export const uploadFileSchema = z.object({
11
- id: z.string(),
12
- size: z.number().optional(),
13
- offset: z.number(),
14
- metadata: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),
15
- creationDate: z.string().optional(),
16
- url: z.string().optional(),
17
- sizeIsDeferred: z.boolean().optional(),
18
- checksum: z.string().optional(),
19
- checksumAlgorithm: z.string().optional(),
20
- storage: z.object({
21
- id: z.string(),
22
- type: z.string(),
23
- path: z.string().optional(),
24
- uploadId: z.string().optional(),
25
- bucket: z.string().optional(),
26
- }),
27
- flow: z
28
- .object({
29
- flowId: z.string(),
30
- nodeId: z.string(),
31
- jobId: z.string(),
32
- })
33
- .optional(),
34
- });
@@ -1,144 +0,0 @@
1
- import z from "zod";
2
- /**
3
- * Platform-agnostic WebSocket connection interface
4
- */
5
- export interface WebSocketConnection {
6
- send(data: string): void;
7
- close(code?: number, reason?: string): void;
8
- readonly readyState: number;
9
- readonly id: string;
10
- }
11
- /**
12
- * WebSocket message that can be sent/received
13
- */
14
- export declare const webSocketMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
15
- type: z.ZodLiteral<"upload_event">;
16
- payload: z.ZodUnion<readonly [z.ZodObject<{
17
- type: z.ZodUnion<readonly [z.ZodLiteral<import("./upload-event").UploadEventType.UPLOAD_STARTED>, z.ZodLiteral<import("./upload-event").UploadEventType.UPLOAD_COMPLETE>]>;
18
- data: z.ZodObject<{
19
- id: z.ZodString;
20
- size: z.ZodOptional<z.ZodNumber>;
21
- offset: z.ZodNumber;
22
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
23
- creationDate: z.ZodOptional<z.ZodString>;
24
- url: z.ZodOptional<z.ZodString>;
25
- sizeIsDeferred: z.ZodOptional<z.ZodBoolean>;
26
- checksum: z.ZodOptional<z.ZodString>;
27
- checksumAlgorithm: z.ZodOptional<z.ZodString>;
28
- storage: z.ZodObject<{
29
- id: z.ZodString;
30
- type: z.ZodString;
31
- path: z.ZodOptional<z.ZodString>;
32
- uploadId: z.ZodOptional<z.ZodString>;
33
- bucket: z.ZodOptional<z.ZodString>;
34
- }, z.core.$strip>;
35
- flow: z.ZodOptional<z.ZodObject<{
36
- flowId: z.ZodString;
37
- nodeId: z.ZodString;
38
- jobId: z.ZodString;
39
- }, z.core.$strip>>;
40
- }, z.core.$strip>;
41
- flow: z.ZodOptional<z.ZodObject<{
42
- flowId: z.ZodString;
43
- nodeId: z.ZodString;
44
- jobId: z.ZodString;
45
- }, z.core.$strip>>;
46
- }, z.core.$strip>, z.ZodObject<{
47
- type: z.ZodLiteral<import("./upload-event").UploadEventType.UPLOAD_PROGRESS>;
48
- data: z.ZodObject<{
49
- id: z.ZodString;
50
- progress: z.ZodNumber;
51
- total: z.ZodNumber;
52
- }, z.core.$strip>;
53
- flow: z.ZodOptional<z.ZodObject<{
54
- flowId: z.ZodString;
55
- nodeId: z.ZodString;
56
- jobId: z.ZodString;
57
- }, z.core.$strip>>;
58
- }, z.core.$strip>, z.ZodObject<{
59
- type: z.ZodLiteral<import("./upload-event").UploadEventType.UPLOAD_FAILED>;
60
- data: z.ZodObject<{
61
- id: z.ZodString;
62
- error: z.ZodString;
63
- }, z.core.$strip>;
64
- flow: z.ZodOptional<z.ZodObject<{
65
- flowId: z.ZodString;
66
- nodeId: z.ZodString;
67
- jobId: z.ZodString;
68
- }, z.core.$strip>>;
69
- }, z.core.$strip>, z.ZodObject<{
70
- type: z.ZodLiteral<import("./upload-event").UploadEventType.UPLOAD_VALIDATION_SUCCESS>;
71
- data: z.ZodObject<{
72
- id: z.ZodString;
73
- validationType: z.ZodEnum<{
74
- checksum: "checksum";
75
- mimetype: "mimetype";
76
- }>;
77
- algorithm: z.ZodOptional<z.ZodString>;
78
- }, z.core.$strip>;
79
- flow: z.ZodOptional<z.ZodObject<{
80
- flowId: z.ZodString;
81
- nodeId: z.ZodString;
82
- jobId: z.ZodString;
83
- }, z.core.$strip>>;
84
- }, z.core.$strip>, z.ZodObject<{
85
- type: z.ZodLiteral<import("./upload-event").UploadEventType.UPLOAD_VALIDATION_FAILED>;
86
- data: z.ZodObject<{
87
- id: z.ZodString;
88
- reason: z.ZodString;
89
- expected: z.ZodString;
90
- actual: z.ZodString;
91
- }, z.core.$strip>;
92
- flow: z.ZodOptional<z.ZodObject<{
93
- flowId: z.ZodString;
94
- nodeId: z.ZodString;
95
- jobId: z.ZodString;
96
- }, z.core.$strip>>;
97
- }, z.core.$strip>, z.ZodObject<{
98
- type: z.ZodLiteral<import("./upload-event").UploadEventType.UPLOAD_VALIDATION_WARNING>;
99
- data: z.ZodObject<{
100
- id: z.ZodString;
101
- message: z.ZodString;
102
- }, z.core.$strip>;
103
- flow: z.ZodOptional<z.ZodObject<{
104
- flowId: z.ZodString;
105
- nodeId: z.ZodString;
106
- jobId: z.ZodString;
107
- }, z.core.$strip>>;
108
- }, z.core.$strip>]>;
109
- timestamp: z.ZodOptional<z.ZodString>;
110
- }, z.core.$strip>, z.ZodObject<{
111
- type: z.ZodLiteral<"flow_event">;
112
- payload: z.ZodAny;
113
- timestamp: z.ZodOptional<z.ZodString>;
114
- }, z.core.$strip>, z.ZodObject<{
115
- type: z.ZodLiteral<"subscribed">;
116
- payload: z.ZodObject<{
117
- eventKey: z.ZodString;
118
- }, z.core.$strip>;
119
- timestamp: z.ZodOptional<z.ZodString>;
120
- }, z.core.$strip>, z.ZodObject<{
121
- type: z.ZodLiteral<"error">;
122
- message: z.ZodOptional<z.ZodString>;
123
- }, z.core.$strip>, z.ZodObject<{
124
- type: z.ZodLiteral<"pong">;
125
- timestamp: z.ZodOptional<z.ZodString>;
126
- }, z.core.$strip>, z.ZodObject<{
127
- type: z.ZodLiteral<"ping">;
128
- timestamp: z.ZodOptional<z.ZodString>;
129
- }, z.core.$strip>, z.ZodObject<{
130
- type: z.ZodLiteral<"connection">;
131
- message: z.ZodOptional<z.ZodString>;
132
- uploadId: z.ZodOptional<z.ZodString>;
133
- timestamp: z.ZodOptional<z.ZodString>;
134
- }, z.core.$strip>]>;
135
- export type WebSocketMessage<TEvent = unknown> = z.infer<typeof webSocketMessageSchema> | {
136
- type: "upload_event";
137
- payload: TEvent;
138
- timestamp?: string;
139
- } | {
140
- type: "flow_event";
141
- payload: TEvent;
142
- timestamp?: string;
143
- };
144
- //# sourceMappingURL=websocket.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/types/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkCjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,CAAC,MAAM,GAAG,OAAO,IACzC,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,GACtC;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -1,40 +0,0 @@
1
- import z from "zod";
2
- import { uploadEventSchema } from "./upload-event";
3
- /**
4
- * WebSocket message that can be sent/received
5
- */
6
- export const webSocketMessageSchema = z.union([
7
- z.object({
8
- type: z.literal("upload_event"),
9
- payload: uploadEventSchema,
10
- timestamp: z.string().optional(),
11
- }),
12
- z.object({
13
- type: z.literal("flow_event"),
14
- payload: z.any(), // FlowEvent doesn't have a zod schema, using z.any() for now
15
- timestamp: z.string().optional(),
16
- }),
17
- z.object({
18
- type: z.literal("subscribed"),
19
- payload: z.object({ eventKey: z.string() }),
20
- timestamp: z.string().optional(),
21
- }),
22
- z.object({
23
- type: z.literal("error"),
24
- message: z.string().optional(),
25
- }),
26
- z.object({
27
- type: z.literal("pong"),
28
- timestamp: z.string().optional(),
29
- }),
30
- z.object({
31
- type: z.literal("ping"),
32
- timestamp: z.string().optional(),
33
- }),
34
- z.object({
35
- type: z.literal("connection"),
36
- message: z.string().optional(),
37
- uploadId: z.string().optional(),
38
- timestamp: z.string().optional(),
39
- }),
40
- ]);
@@ -1 +0,0 @@
1
- const e=require(`./chunk-CUT6urMc.cjs`),t=require(`./uploadista-error-BB-Wdiz9.cjs`);let n=require(`effect`);n=e.__toESM(n);let r=require(`zod`);r=e.__toESM(r);var i=class extends n.Context.Tag(`UploadFileDataStore`)(){},a=class extends n.Context.Tag(`BufferedUploadFileDataStore`)(){},o=class extends n.Context.Tag(`UploadFileDataStores`)(){},s=class extends n.Context.Tag(`DataStoreRegistry`)(){},c=class{constructor(e,t){this.baseEmitter=e,this.eventToMessage=t}subscribe=(e,t)=>this.baseEmitter.subscribe(e,t);unsubscribe=e=>this.baseEmitter.unsubscribe(e);emit=(e,t)=>{let n=this.eventToMessage(t);return this.baseEmitter.emit(e,n)}};const l=e=>({eventToMessage:t=>JSON.stringify({type:e,payload:t,timestamp:new Date().toISOString()})});var u=class extends n.Context.Tag(`BaseEventEmitter`)(){},d=class extends n.Context.Tag(`UploadEventEmitter`)(){};const f=n.Layer.effect(d,n.Effect.gen(function*(){let e=yield*u;return new c(e,l(`upload_event`).eventToMessage)}));var p=class extends n.Context.Tag(`FlowEventEmitter`)(){};const m=n.Layer.effect(p,n.Effect.gen(function*(){let e=yield*u;return new c(e,l(`flow_event`).eventToMessage)})),h=r.z.object({uploadLengthDeferred:r.z.boolean().optional(),storageId:r.z.string(),size:r.z.number(),type:r.z.string(),fileName:r.z.string().optional(),lastModified:r.z.number().optional(),metadata:r.z.string().optional()});var g=class{constructor(e,t,n){this.baseStore=e,this.serialize=t,this.deserialize=n}get=e=>this.baseStore.get(e).pipe(n.Effect.flatMap(r=>{if(r===null)return n.Effect.fail(t.UploadistaError.fromCode(`FILE_NOT_FOUND`,{cause:`Key "${e}" not found`}));try{return n.Effect.succeed(this.deserialize(r))}catch(r){return n.Effect.fail(new t.UploadistaError({code:`VALIDATION_ERROR`,status:400,body:`Failed to deserialize value for key "${e}"`,cause:r}))}}));set=(e,r)=>{try{let t=this.serialize(r);return this.baseStore.set(e,t)}catch(r){return n.Effect.fail(new t.UploadistaError({code:`VALIDATION_ERROR`,status:400,body:`Failed to serialize value for key "${e}"`,cause:r}))}};delete=e=>this.baseStore.delete(e);list=()=>this.baseStore.list?this.baseStore.list():n.Effect.fail(new t.UploadistaError({code:`UNKNOWN_ERROR`,status:501,body:`List operation not supported by this store`}))};const _={serialize:e=>JSON.stringify(e),deserialize:e=>JSON.parse(e)};var v=class extends n.Context.Tag(`BaseKvStore`)(){},y=class extends n.Context.Tag(`UploadFileKVStore`)(){};const b=n.Layer.effect(y,n.Effect.gen(function*(){let e=yield*v;return new g(e,_.serialize,_.deserialize)}));var x=class extends n.Context.Tag(`FlowJobKVStore`)(){};const S=n.Layer.effect(x,n.Effect.gen(function*(){let e=yield*v;return new g(e,_.serialize,_.deserialize)}));var C=class extends n.Context.Tag(`MiddlewareService`)(){};const w=n.Layer.succeed(C,C.of({execute:(e,t,r)=>n.Effect.gen(function*(){if(e.length===0)return yield*n.Effect.tryPromise({try:()=>r(),catch:e=>e});let i=e.reduceRight((e,n)=>()=>n(t,e),r);return yield*n.Effect.tryPromise({try:()=>i(),catch:e=>e})})})),T=r.z.object({id:r.z.string(),size:r.z.number().optional(),offset:r.z.number(),metadata:r.z.record(r.z.string(),r.z.string()).optional(),creationDate:r.z.string().optional(),url:r.z.string().optional(),sizeIsDeferred:r.z.boolean().optional(),storage:r.z.object({id:r.z.string(),type:r.z.string(),path:r.z.string().optional(),uploadId:r.z.string().optional(),bucket:r.z.string().optional()})});let E=function(e){return e.UPLOAD_STARTED=`upload-started`,e.UPLOAD_PROGRESS=`upload-progress`,e.UPLOAD_COMPLETE=`upload-complete`,e.UPLOAD_FAILED=`upload-failed`,e}({});const D=r.z.union([r.z.object({type:r.z.union([r.z.literal(E.UPLOAD_STARTED),r.z.literal(E.UPLOAD_COMPLETE)]),data:T}),r.z.object({type:r.z.literal(E.UPLOAD_PROGRESS),data:r.z.object({id:r.z.string(),progress:r.z.number(),total:r.z.number()})}),r.z.object({type:r.z.literal(E.UPLOAD_FAILED),data:r.z.object({id:r.z.string(),error:r.z.string()})})]),O=r.default.union([r.default.object({type:r.default.literal(`upload_event`),payload:D,timestamp:r.default.string().optional()}),r.default.object({type:r.default.literal(`flow_event`),payload:r.default.any(),timestamp:r.default.string().optional()}),r.default.object({type:r.default.literal(`subscribed`),payload:r.default.object({uploadId:r.default.string()}),timestamp:r.default.string().optional()}),r.default.object({type:r.default.literal(`error`),message:r.default.string().optional()}),r.default.object({type:r.default.literal(`pong`),timestamp:r.default.string().optional()}),r.default.object({type:r.default.literal(`ping`),timestamp:r.default.string().optional()}),r.default.object({type:r.default.literal(`connection`),message:r.default.string().optional(),uploadId:r.default.string().optional(),timestamp:r.default.string().optional()})]);Object.defineProperty(exports,`BaseEventEmitterService`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`BaseKvStoreService`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`BufferedUploadFileDataStore`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`DataStoreRegistry`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`FlowEventEmitter`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`FlowJobKVStore`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`MiddlewareService`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`MiddlewareServiceLive`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`TypedEventEmitter`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`TypedKvStore`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`UploadEventEmitter`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`UploadEventType`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`UploadFileDataStore`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`UploadFileDataStores`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`UploadFileKVStore`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`eventToMessageSerializer`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`flowEventEmitter`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`flowJobKvStore`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`inputFileSchema`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`jsonSerializer`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`uploadEventEmitter`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`uploadEventSchema`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`uploadFileKvStore`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`uploadFileSchema`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`webSocketMessageSchema`,{enumerable:!0,get:function(){return O}});
@@ -1,2 +0,0 @@
1
- import{UploadistaError as e}from"./uploadista-error-BVsVxqvz.js";import{Context as t,Effect as n,Layer as r}from"effect";import i,{z as a}from"zod";var o=class extends t.Tag(`UploadFileDataStore`)(){},s=class extends t.Tag(`BufferedUploadFileDataStore`)(){},c=class extends t.Tag(`UploadFileDataStores`)(){},l=class extends t.Tag(`DataStoreRegistry`)(){},u=class{constructor(e,t){this.baseEmitter=e,this.eventToMessage=t}subscribe=(e,t)=>this.baseEmitter.subscribe(e,t);unsubscribe=e=>this.baseEmitter.unsubscribe(e);emit=(e,t)=>{let n=this.eventToMessage(t);return this.baseEmitter.emit(e,n)}};const d=e=>({eventToMessage:t=>JSON.stringify({type:e,payload:t,timestamp:new Date().toISOString()})});var f=class extends t.Tag(`BaseEventEmitter`)(){},p=class extends t.Tag(`UploadEventEmitter`)(){};const m=r.effect(p,n.gen(function*(){let e=yield*f;return new u(e,d(`upload_event`).eventToMessage)}));var h=class extends t.Tag(`FlowEventEmitter`)(){};const g=r.effect(h,n.gen(function*(){let e=yield*f;return new u(e,d(`flow_event`).eventToMessage)})),_=a.object({uploadLengthDeferred:a.boolean().optional(),storageId:a.string(),size:a.number(),type:a.string(),fileName:a.string().optional(),lastModified:a.number().optional(),metadata:a.string().optional()});var v=class{constructor(e,t,n){this.baseStore=e,this.serialize=t,this.deserialize=n}get=t=>this.baseStore.get(t).pipe(n.flatMap(r=>{if(r===null)return n.fail(e.fromCode(`FILE_NOT_FOUND`,{cause:`Key "${t}" not found`}));try{return n.succeed(this.deserialize(r))}catch(r){return n.fail(new e({code:`VALIDATION_ERROR`,status:400,body:`Failed to deserialize value for key "${t}"`,cause:r}))}}));set=(t,r)=>{try{let e=this.serialize(r);return this.baseStore.set(t,e)}catch(r){return n.fail(new e({code:`VALIDATION_ERROR`,status:400,body:`Failed to serialize value for key "${t}"`,cause:r}))}};delete=e=>this.baseStore.delete(e);list=()=>this.baseStore.list?this.baseStore.list():n.fail(new e({code:`UNKNOWN_ERROR`,status:501,body:`List operation not supported by this store`}))};const y={serialize:e=>JSON.stringify(e),deserialize:e=>JSON.parse(e)};var b=class extends t.Tag(`BaseKvStore`)(){},x=class extends t.Tag(`UploadFileKVStore`)(){};const S=r.effect(x,n.gen(function*(){let e=yield*b;return new v(e,y.serialize,y.deserialize)}));var C=class extends t.Tag(`FlowJobKVStore`)(){};const w=r.effect(C,n.gen(function*(){let e=yield*b;return new v(e,y.serialize,y.deserialize)}));var T=class extends t.Tag(`MiddlewareService`)(){};const E=r.succeed(T,T.of({execute:(e,t,r)=>n.gen(function*(){if(e.length===0)return yield*n.tryPromise({try:()=>r(),catch:e=>e});let i=e.reduceRight((e,n)=>()=>n(t,e),r);return yield*n.tryPromise({try:()=>i(),catch:e=>e})})})),D=a.object({id:a.string(),size:a.number().optional(),offset:a.number(),metadata:a.record(a.string(),a.string()).optional(),creationDate:a.string().optional(),url:a.string().optional(),sizeIsDeferred:a.boolean().optional(),storage:a.object({id:a.string(),type:a.string(),path:a.string().optional(),uploadId:a.string().optional(),bucket:a.string().optional()})});let O=function(e){return e.UPLOAD_STARTED=`upload-started`,e.UPLOAD_PROGRESS=`upload-progress`,e.UPLOAD_COMPLETE=`upload-complete`,e.UPLOAD_FAILED=`upload-failed`,e}({});const k=a.union([a.object({type:a.union([a.literal(O.UPLOAD_STARTED),a.literal(O.UPLOAD_COMPLETE)]),data:D}),a.object({type:a.literal(O.UPLOAD_PROGRESS),data:a.object({id:a.string(),progress:a.number(),total:a.number()})}),a.object({type:a.literal(O.UPLOAD_FAILED),data:a.object({id:a.string(),error:a.string()})})]),A=i.union([i.object({type:i.literal(`upload_event`),payload:k,timestamp:i.string().optional()}),i.object({type:i.literal(`flow_event`),payload:i.any(),timestamp:i.string().optional()}),i.object({type:i.literal(`subscribed`),payload:i.object({uploadId:i.string()}),timestamp:i.string().optional()}),i.object({type:i.literal(`error`),message:i.string().optional()}),i.object({type:i.literal(`pong`),timestamp:i.string().optional()}),i.object({type:i.literal(`ping`),timestamp:i.string().optional()}),i.object({type:i.literal(`connection`),message:i.string().optional(),uploadId:i.string().optional(),timestamp:i.string().optional()})]);export{f as BaseEventEmitterService,b as BaseKvStoreService,s as BufferedUploadFileDataStore,l as DataStoreRegistry,h as FlowEventEmitter,C as FlowJobKVStore,T as MiddlewareService,E as MiddlewareServiceLive,u as TypedEventEmitter,v as TypedKvStore,p as UploadEventEmitter,O as UploadEventType,o as UploadFileDataStore,c as UploadFileDataStores,x as UploadFileKVStore,d as eventToMessageSerializer,g as flowEventEmitter,w as flowJobKvStore,_ as inputFileSchema,y as jsonSerializer,m as uploadEventEmitter,k as uploadEventSchema,S as uploadFileKvStore,D as uploadFileSchema,A as webSocketMessageSchema};
2
- //# sourceMappingURL=types-DhU2j-XF.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-DhU2j-XF.js","names":["baseEmitter: BaseEventEmitter","eventToMessage: (event: TEvent) => string","baseStore: BaseKvStore","serialize: (data: TData) => string","deserialize: (str: string) => TData","z"],"sources":["../src/types/data-store.ts","../src/types/data-store-registry.ts","../src/types/event-emitter.ts","../src/types/input-file.ts","../src/types/kv-store.ts","../src/types/middleware.ts","../src/types/upload-file.ts","../src/types/upload-event.ts","../src/types/websocket.ts"],"sourcesContent":["import type { Effect, Stream } from \"effect\";\nimport { Context } from \"effect\";\nimport type { UploadistaError } from \"../errors/uploadista-error\";\nimport type { UploadFile } from \"./upload-file\";\n\nexport type DataStoreWriteOptions = {\n file_id: string;\n stream: Stream.Stream<Uint8Array, UploadistaError>;\n offset: number;\n};\n\nexport type UploadStrategy = \"single\" | \"parallel\";\n\nexport type DataStoreCapabilities = {\n supportsParallelUploads: boolean;\n supportsConcatenation: boolean;\n supportsDeferredLength: boolean;\n supportsResumableUploads: boolean;\n supportsTransactionalUploads: boolean;\n maxConcurrentUploads?: number;\n minChunkSize?: number;\n maxChunkSize?: number;\n maxParts?: number;\n optimalChunkSize?: number;\n requiresOrderedChunks: boolean;\n};\n\nexport type DataStore<TData = unknown> = {\n readonly bucket?: string;\n readonly path?: string;\n readonly create: (file: TData) => Effect.Effect<TData, UploadistaError>;\n readonly remove: (file_id: string) => Effect.Effect<void, UploadistaError>;\n readonly read: (\n file_id: string,\n ) => Effect.Effect<Uint8Array, UploadistaError>;\n readonly write: (\n options: DataStoreWriteOptions,\n dependencies: {\n onProgress?: (chunkSize: number) => void;\n },\n ) => Effect.Effect<number, UploadistaError>;\n readonly deleteExpired?: Effect.Effect<number, UploadistaError>;\n readonly getCapabilities: () => DataStoreCapabilities;\n readonly validateUploadStrategy: (\n strategy: UploadStrategy,\n ) => Effect.Effect<boolean, never>;\n};\n\nexport class UploadFileDataStore extends Context.Tag(\"UploadFileDataStore\")<\n UploadFileDataStore,\n DataStore<UploadFile>\n>() {}\n\nexport class BufferedUploadFileDataStore extends Context.Tag(\n \"BufferedUploadFileDataStore\",\n)<BufferedUploadFileDataStore, DataStore<UploadFile>>() {}\n\nexport type UploadFileDataStoresShape = {\n getDataStore: (\n storageId: string,\n isBuffer?: boolean,\n ) => Effect.Effect<DataStore<UploadFile>, UploadistaError>;\n};\n\nexport class UploadFileDataStores extends Context.Tag(\"UploadFileDataStores\")<\n UploadFileDataStores,\n UploadFileDataStoresShape\n>() {}\n","import { Context, type Effect } from \"effect\";\nimport type { UploadistaError } from \"../errors\";\nimport type { DataStore } from \"./data-store\";\nimport type { UploadFile } from \"./upload-file\";\n\n// Data Store Registry service for managing multiple data stores\nexport class DataStoreRegistry extends Context.Tag(\"DataStoreRegistry\")<\n DataStoreRegistry,\n {\n readonly register: <T extends DataStore<UploadFile>>(\n id: string,\n store: Effect.Effect<T, UploadistaError>,\n ) => Effect.Effect<void, never>;\n readonly get: (\n id: string,\n ) => Effect.Effect<DataStore<UploadFile>, UploadistaError>;\n readonly list: () => Effect.Effect<Array<string>, never>;\n }\n>() {}\n","import { Context, Effect, Layer } from \"effect\";\nimport type { UploadistaError } from \"../errors\";\nimport type { FlowEvent } from \"../flow/event\";\nimport type { UploadEvent } from \"./upload-event\";\nimport type { WebSocketConnection } from \"./websocket\";\n\n// Base untyped EventEmitter interface - emits raw strings\nexport interface BaseEventEmitter {\n readonly subscribe: (\n key: string,\n connection: WebSocketConnection,\n ) => Effect.Effect<void, UploadistaError>;\n readonly unsubscribe: (key: string) => Effect.Effect<void, UploadistaError>;\n readonly emit: (\n key: string,\n event: string,\n ) => Effect.Effect<void, UploadistaError>;\n}\n\n// Typed EventEmitter interface - handles serialization/deserialization\nexport type EventEmitter<TEvent> = {\n readonly subscribe: (\n key: string,\n connection: WebSocketConnection,\n ) => Effect.Effect<void, UploadistaError>;\n readonly unsubscribe: (key: string) => Effect.Effect<void, UploadistaError>;\n readonly emit: (\n key: string,\n event: TEvent,\n ) => Effect.Effect<void, UploadistaError>;\n};\n\n// Typed wrapper class that uses a base event emitter with serialization\nexport class TypedEventEmitter<TEvent> implements EventEmitter<TEvent> {\n constructor(\n private baseEmitter: BaseEventEmitter,\n private eventToMessage: (event: TEvent) => string,\n ) {}\n\n subscribe = (\n key: string,\n connection: WebSocketConnection,\n ): Effect.Effect<void, UploadistaError> =>\n this.baseEmitter.subscribe(key, connection);\n\n unsubscribe = (key: string): Effect.Effect<void, UploadistaError> =>\n this.baseEmitter.unsubscribe(key);\n\n emit = (key: string, event: TEvent): Effect.Effect<void, UploadistaError> => {\n const message = this.eventToMessage(event);\n return this.baseEmitter.emit(key, message);\n };\n}\n\n// Default JSON serialization helper\nexport const eventToMessageSerializer = (\n messageType: \"upload_event\" | \"flow_event\",\n) => ({\n eventToMessage: <T>(event: T): string =>\n JSON.stringify({\n type: messageType,\n payload: event,\n timestamp: new Date().toISOString(),\n }),\n});\n\n// Context tags\nexport class BaseEventEmitterService extends Context.Tag(\"BaseEventEmitter\")<\n BaseEventEmitterService,\n BaseEventEmitter\n>() {}\n\nexport class UploadEventEmitter extends Context.Tag(\"UploadEventEmitter\")<\n UploadEventEmitter,\n EventEmitter<UploadEvent>\n>() {}\n\nexport const uploadEventEmitter = Layer.effect(\n UploadEventEmitter,\n Effect.gen(function* () {\n const baseEmitter = yield* BaseEventEmitterService;\n return new TypedEventEmitter<UploadEvent>(\n baseEmitter,\n eventToMessageSerializer(\"upload_event\").eventToMessage,\n );\n }),\n);\n\nexport class FlowEventEmitter extends Context.Tag(\"FlowEventEmitter\")<\n FlowEventEmitter,\n EventEmitter<FlowEvent>\n>() {}\n\nexport const flowEventEmitter = Layer.effect(\n FlowEventEmitter,\n Effect.gen(function* () {\n const baseEmitter = yield* BaseEventEmitterService;\n return new TypedEventEmitter<FlowEvent>(\n baseEmitter,\n eventToMessageSerializer(\"flow_event\").eventToMessage,\n );\n }),\n);\n","import { z } from \"zod\";\n\nexport const inputFileSchema = z.object({\n uploadLengthDeferred: z.boolean().optional(),\n storageId: z.string(),\n size: z.number(),\n type: z.string(),\n fileName: z.string().optional(),\n lastModified: z.number().optional(),\n metadata: z.string().optional(),\n});\n\nexport type InputFile = z.infer<typeof inputFileSchema>;\n","import { Context, Effect, Layer } from \"effect\";\nimport { UploadistaError } from \"../errors\";\nimport type { FlowJob } from \"../flow\";\nimport type { UploadFile } from \"./upload-file\";\n\n// Base untyped KV store interface - stores raw strings\nexport interface BaseKvStore {\n readonly get: (key: string) => Effect.Effect<string | null, UploadistaError>;\n readonly set: (\n key: string,\n value: string,\n ) => Effect.Effect<void, UploadistaError>;\n readonly delete: (key: string) => Effect.Effect<void, UploadistaError>;\n readonly list?: () => Effect.Effect<Array<string>, UploadistaError>;\n}\n\n// Typed KV store interface - handles serialization/deserialization\nexport type KvStore<TData> = {\n readonly get: (key: string) => Effect.Effect<TData, UploadistaError>;\n readonly set: (\n key: string,\n value: TData,\n ) => Effect.Effect<void, UploadistaError>;\n readonly delete: (key: string) => Effect.Effect<void, UploadistaError>;\n readonly list?: () => Effect.Effect<Array<string>, UploadistaError>;\n};\n\n// Typed wrapper class that uses a base store with serialization\nexport class TypedKvStore<TData> implements KvStore<TData> {\n constructor(\n private baseStore: BaseKvStore,\n private serialize: (data: TData) => string,\n private deserialize: (str: string) => TData,\n ) {}\n\n get = (key: string): Effect.Effect<TData, UploadistaError> =>\n this.baseStore.get(key).pipe(\n Effect.flatMap((value) => {\n if (value === null) {\n return Effect.fail(\n UploadistaError.fromCode(\"FILE_NOT_FOUND\", {\n cause: `Key \"${key}\" not found`,\n }),\n );\n }\n try {\n return Effect.succeed(this.deserialize(value));\n } catch (error) {\n return Effect.fail(\n new UploadistaError({\n code: \"VALIDATION_ERROR\",\n status: 400,\n body: `Failed to deserialize value for key \"${key}\"`,\n cause: error,\n }),\n );\n }\n }),\n );\n\n set = (key: string, value: TData): Effect.Effect<void, UploadistaError> => {\n try {\n const serialized = this.serialize(value);\n return this.baseStore.set(key, serialized);\n } catch (error) {\n return Effect.fail(\n new UploadistaError({\n code: \"VALIDATION_ERROR\",\n status: 400,\n body: `Failed to serialize value for key \"${key}\"`,\n cause: error,\n }),\n );\n }\n };\n\n delete = (key: string): Effect.Effect<void, UploadistaError> =>\n this.baseStore.delete(key);\n\n list = (): Effect.Effect<Array<string>, UploadistaError> => {\n if (this.baseStore.list) {\n return this.baseStore.list();\n }\n return Effect.fail(\n new UploadistaError({\n code: \"UNKNOWN_ERROR\",\n status: 501,\n body: \"List operation not supported by this store\",\n }),\n );\n };\n}\n\n// Default JSON serialization helpers\nexport const jsonSerializer = {\n serialize: <T>(data: T): string => JSON.stringify(data),\n deserialize: <T>(str: string): T => JSON.parse(str),\n};\n\n// Context tags\nexport class BaseKvStoreService extends Context.Tag(\"BaseKvStore\")<\n BaseKvStoreService,\n BaseKvStore\n>() {}\n\nexport class UploadFileKVStore extends Context.Tag(\"UploadFileKVStore\")<\n UploadFileKVStore,\n KvStore<UploadFile>\n>() {}\n\nexport const uploadFileKvStore = Layer.effect(\n UploadFileKVStore,\n Effect.gen(function* () {\n const baseStore = yield* BaseKvStoreService;\n return new TypedKvStore<UploadFile>(\n baseStore,\n jsonSerializer.serialize,\n jsonSerializer.deserialize,\n );\n }),\n);\n\nexport class FlowJobKVStore extends Context.Tag(\"FlowJobKVStore\")<\n FlowJobKVStore,\n KvStore<FlowJob>\n>() {}\n\nexport const flowJobKvStore = Layer.effect(\n FlowJobKVStore,\n Effect.gen(function* () {\n const baseStore = yield* BaseKvStoreService;\n return new TypedKvStore<FlowJob>(\n baseStore,\n jsonSerializer.serialize,\n jsonSerializer.deserialize,\n );\n }),\n);\n","import { Context, Effect, Layer } from \"effect\";\nimport type { UploadistaError } from \"../errors\";\n\nexport type MiddlewareContext = {\n request: Request;\n uploadId?: string;\n metadata?: Record<string, string>;\n};\n\nexport type MiddlewareNext = () => Promise<Response>;\n\nexport type Middleware = (\n context: MiddlewareContext,\n next: MiddlewareNext,\n) => Promise<Response>;\n\n// Effect-based Middleware service\nexport class MiddlewareService extends Context.Tag(\"MiddlewareService\")<\n MiddlewareService,\n {\n readonly execute: (\n middlewares: Middleware[],\n context: MiddlewareContext,\n handler: MiddlewareNext,\n ) => Effect.Effect<Response, UploadistaError>;\n }\n>() {}\n\nexport const MiddlewareServiceLive = Layer.succeed(\n MiddlewareService,\n MiddlewareService.of({\n execute: (middlewares, context, handler) =>\n Effect.gen(function* () {\n if (middlewares.length === 0) {\n return yield* Effect.tryPromise({\n try: () => handler(),\n catch: (error) => error as UploadistaError,\n });\n }\n\n const chain = middlewares.reduceRight(\n (next: MiddlewareNext, middleware: Middleware) => {\n return () => middleware(context, next);\n },\n handler,\n );\n\n return yield* Effect.tryPromise({\n try: () => chain(),\n catch: (error) => error as UploadistaError,\n });\n }),\n }),\n);\n","import { z } from \"zod\";\n\nexport const uploadFileSchema = z.object({\n id: z.string(),\n size: z.number().optional(),\n offset: z.number(),\n metadata: z.record(z.string(), z.string()).optional(),\n creationDate: z.string().optional(),\n url: z.string().optional(),\n sizeIsDeferred: z.boolean().optional(),\n storage: z.object({\n id: z.string(),\n type: z.string(),\n path: z.string().optional(),\n uploadId: z.string().optional(),\n bucket: z.string().optional(),\n }),\n});\n\nexport type UploadFile = {\n id: string;\n offset: number;\n storage: {\n id: string;\n isBuffer?: boolean;\n type: string;\n path?: string | undefined;\n uploadId?: string | undefined;\n bucket?: string | undefined;\n };\n size?: number | undefined;\n metadata?: Record<string, string> | undefined;\n creationDate?: string | undefined;\n url?: string | undefined;\n sizeIsDeferred?: boolean | undefined;\n};\n","import { z } from \"zod\";\nimport { uploadFileSchema } from \"./upload-file\";\n\nexport enum UploadEventType {\n UPLOAD_STARTED = \"upload-started\",\n UPLOAD_PROGRESS = \"upload-progress\",\n UPLOAD_COMPLETE = \"upload-complete\",\n UPLOAD_FAILED = \"upload-failed\",\n}\n\nexport const uploadEventSchema = z.union([\n z.object({\n type: z.union([\n z.literal(UploadEventType.UPLOAD_STARTED),\n z.literal(UploadEventType.UPLOAD_COMPLETE),\n ]),\n data: uploadFileSchema,\n }),\n z.object({\n type: z.literal(UploadEventType.UPLOAD_PROGRESS),\n data: z.object({\n id: z.string(),\n progress: z.number(),\n total: z.number(),\n }),\n }),\n z.object({\n type: z.literal(UploadEventType.UPLOAD_FAILED),\n data: z.object({\n id: z.string(),\n error: z.string(),\n }),\n }),\n]);\n\nexport type UploadEvent = z.infer<typeof uploadEventSchema>;\n","import z from \"zod\";\nimport { uploadEventSchema } from \"./upload-event\";\n\n/**\n * Platform-agnostic WebSocket connection interface\n */\nexport interface WebSocketConnection {\n send(data: string): void;\n close(code?: number, reason?: string): void;\n readonly readyState: number;\n readonly id: string;\n}\n\n/**\n * WebSocket message that can be sent/received\n */\n\nexport const webSocketMessageSchema = z.union([\n z.object({\n type: z.literal(\"upload_event\"),\n payload: uploadEventSchema,\n timestamp: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"flow_event\"),\n payload: z.any(), // FlowEvent doesn't have a zod schema, using z.any() for now\n timestamp: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"subscribed\"),\n payload: z.object({ uploadId: z.string() }),\n timestamp: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"error\"),\n message: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"pong\"),\n timestamp: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"ping\"),\n timestamp: z.string().optional(),\n }),\n z.object({\n type: z.literal(\"connection\"),\n message: z.string().optional(),\n uploadId: z.string().optional(),\n timestamp: z.string().optional(),\n }),\n]);\n\nexport type WebSocketMessage<TEvent = unknown> =\n | z.infer<typeof webSocketMessageSchema>\n | {\n type: \"upload_event\";\n payload: TEvent;\n timestamp?: string;\n }\n | {\n type: \"flow_event\";\n payload: TEvent;\n timestamp?: string;\n };\n"],"mappings":"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"}