@fragno-dev/upload 0.1.1

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 (355) hide show
  1. package/LICENSE.md +16 -0
  2. package/README.md +43 -0
  3. package/bin/run.js +5 -0
  4. package/dist/browser/client/clients.js +49 -0
  5. package/dist/browser/client/clients.js.map +1 -0
  6. package/dist/browser/client/helpers.d.ts +51 -0
  7. package/dist/browser/client/helpers.d.ts.map +1 -0
  8. package/dist/browser/client/helpers.js +242 -0
  9. package/dist/browser/client/helpers.js.map +1 -0
  10. package/dist/browser/client/node_modules/.pnpm/@nanostores_query@0.3.4_nanostores@1.1.0/node_modules/@nanostores/query/dist/nanoquery.js +354 -0
  11. package/dist/browser/client/node_modules/.pnpm/@nanostores_query@0.3.4_nanostores@1.1.0/node_modules/@nanostores/query/dist/nanoquery.js.map +1 -0
  12. package/dist/browser/client/node_modules/.pnpm/@nanostores_solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10/node_modules/@nanostores/solid/dist/index.js +14 -0
  13. package/dist/browser/client/node_modules/.pnpm/@nanostores_solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10/node_modules/@nanostores/solid/dist/index.js.map +1 -0
  14. package/dist/browser/client/node_modules/.pnpm/nanoevents@9.1.0/node_modules/nanoevents/index.js +17 -0
  15. package/dist/browser/client/node_modules/.pnpm/nanoevents@9.1.0/node_modules/nanoevents/index.js.map +1 -0
  16. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/atom/index.js +62 -0
  17. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/atom/index.js.map +1 -0
  18. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/clean-stores/index.js +6 -0
  19. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/clean-stores/index.js.map +1 -0
  20. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/computed/index.js +50 -0
  21. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/computed/index.js.map +1 -0
  22. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/lifecycle/index.js +99 -0
  23. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/lifecycle/index.js.map +1 -0
  24. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/listen-keys/index.js +11 -0
  25. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/listen-keys/index.js.map +1 -0
  26. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/map/index.js +25 -0
  27. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/map/index.js.map +1 -0
  28. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/task/index.js +24 -0
  29. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/task/index.js.map +1 -0
  30. package/dist/browser/client/packages/fragment-upload/src/definition.js +49 -0
  31. package/dist/browser/client/packages/fragment-upload/src/definition.js.map +1 -0
  32. package/dist/browser/client/packages/fragment-upload/src/keys.d.ts +7 -0
  33. package/dist/browser/client/packages/fragment-upload/src/keys.d.ts.map +1 -0
  34. package/dist/browser/client/packages/fragment-upload/src/keys.js +28 -0
  35. package/dist/browser/client/packages/fragment-upload/src/keys.js.map +1 -0
  36. package/dist/browser/client/packages/fragment-upload/src/routes/files.js +98 -0
  37. package/dist/browser/client/packages/fragment-upload/src/routes/files.js.map +1 -0
  38. package/dist/browser/client/packages/fragment-upload/src/routes/index.js +9 -0
  39. package/dist/browser/client/packages/fragment-upload/src/routes/index.js.map +1 -0
  40. package/dist/browser/client/packages/fragment-upload/src/routes/shared.js +41 -0
  41. package/dist/browser/client/packages/fragment-upload/src/routes/shared.js.map +1 -0
  42. package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js +186 -0
  43. package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js.map +1 -0
  44. package/dist/browser/client/packages/fragment-upload/src/schema.js +8 -0
  45. package/dist/browser/client/packages/fragment-upload/src/schema.js.map +1 -0
  46. package/dist/browser/client/packages/fragment-upload/src/storage/types.d.ts +9 -0
  47. package/dist/browser/client/packages/fragment-upload/src/storage/types.d.ts.map +1 -0
  48. package/dist/browser/client/packages/fragment-upload/src/types.d.ts +31 -0
  49. package/dist/browser/client/packages/fragment-upload/src/types.d.ts.map +1 -0
  50. package/dist/browser/client/packages/fragno/dist/api/error.js +48 -0
  51. package/dist/browser/client/packages/fragno/dist/api/error.js.map +1 -0
  52. package/dist/browser/client/packages/fragno/dist/api/internal/path.js +76 -0
  53. package/dist/browser/client/packages/fragno/dist/api/internal/path.js.map +1 -0
  54. package/dist/browser/client/packages/fragno/dist/api/internal/response-stream.js +81 -0
  55. package/dist/browser/client/packages/fragno/dist/api/internal/response-stream.js.map +1 -0
  56. package/dist/browser/client/packages/fragno/dist/api/internal/route.js +10 -0
  57. package/dist/browser/client/packages/fragno/dist/api/internal/route.js.map +1 -0
  58. package/dist/browser/client/packages/fragno/dist/api/request-input-context.js +185 -0
  59. package/dist/browser/client/packages/fragno/dist/api/request-input-context.js.map +1 -0
  60. package/dist/browser/client/packages/fragno/dist/api/request-output-context.js +119 -0
  61. package/dist/browser/client/packages/fragno/dist/api/request-output-context.js.map +1 -0
  62. package/dist/browser/client/packages/fragno/dist/api/route.js +17 -0
  63. package/dist/browser/client/packages/fragno/dist/api/route.js.map +1 -0
  64. package/dist/browser/client/packages/fragno/dist/client/client-error.js +92 -0
  65. package/dist/browser/client/packages/fragno/dist/client/client-error.js.map +1 -0
  66. package/dist/browser/client/packages/fragno/dist/client/client.js +495 -0
  67. package/dist/browser/client/packages/fragno/dist/client/client.js.map +1 -0
  68. package/dist/browser/client/packages/fragno/dist/client/client.svelte.js +120 -0
  69. package/dist/browser/client/packages/fragno/dist/client/client.svelte.js.map +1 -0
  70. package/dist/browser/client/packages/fragno/dist/client/internal/fetcher-merge.js +36 -0
  71. package/dist/browser/client/packages/fragno/dist/client/internal/fetcher-merge.js.map +1 -0
  72. package/dist/browser/client/packages/fragno/dist/client/internal/ndjson-streaming.js +139 -0
  73. package/dist/browser/client/packages/fragno/dist/client/internal/ndjson-streaming.js.map +1 -0
  74. package/dist/browser/client/packages/fragno/dist/client/react.js +70 -0
  75. package/dist/browser/client/packages/fragno/dist/client/react.js.map +1 -0
  76. package/dist/browser/client/packages/fragno/dist/client/solid.js +108 -0
  77. package/dist/browser/client/packages/fragno/dist/client/solid.js.map +1 -0
  78. package/dist/browser/client/packages/fragno/dist/client/vanilla.js +96 -0
  79. package/dist/browser/client/packages/fragno/dist/client/vanilla.js.map +1 -0
  80. package/dist/browser/client/packages/fragno/dist/client/vue.js +120 -0
  81. package/dist/browser/client/packages/fragno/dist/client/vue.js.map +1 -0
  82. package/dist/browser/client/packages/fragno/dist/util/async.js +40 -0
  83. package/dist/browser/client/packages/fragno/dist/util/async.js.map +1 -0
  84. package/dist/browser/client/packages/fragno/dist/util/content-type.js +49 -0
  85. package/dist/browser/client/packages/fragno/dist/util/content-type.js.map +1 -0
  86. package/dist/browser/client/packages/fragno/dist/util/nanostores.js +31 -0
  87. package/dist/browser/client/packages/fragno/dist/util/nanostores.js.map +1 -0
  88. package/dist/browser/client/packages/fragno/dist/util/ssr.js +18 -0
  89. package/dist/browser/client/packages/fragno/dist/util/ssr.js.map +1 -0
  90. package/dist/browser/client/react.d.ts +295 -0
  91. package/dist/browser/client/react.d.ts.map +1 -0
  92. package/dist/browser/client/react.js +11 -0
  93. package/dist/browser/client/react.js.map +1 -0
  94. package/dist/browser/client/solid.d.ts +303 -0
  95. package/dist/browser/client/solid.d.ts.map +1 -0
  96. package/dist/browser/client/solid.js +11 -0
  97. package/dist/browser/client/solid.js.map +1 -0
  98. package/dist/browser/client/svelte.d.ts +295 -0
  99. package/dist/browser/client/svelte.d.ts.map +1 -0
  100. package/dist/browser/client/svelte.js +11 -0
  101. package/dist/browser/client/svelte.js.map +1 -0
  102. package/dist/browser/client/vanilla.d.ts +296 -0
  103. package/dist/browser/client/vanilla.d.ts.map +1 -0
  104. package/dist/browser/client/vanilla.js +11 -0
  105. package/dist/browser/client/vanilla.js.map +1 -0
  106. package/dist/browser/client/vue.d.ts +295 -0
  107. package/dist/browser/client/vue.d.ts.map +1 -0
  108. package/dist/browser/client/vue.js +11 -0
  109. package/dist/browser/client/vue.js.map +1 -0
  110. package/dist/browser/index-BdjKPO4J.d.ts +177 -0
  111. package/dist/browser/index-BdjKPO4J.d.ts.map +1 -0
  112. package/dist/browser/index.js +3 -0
  113. package/dist/browser/src-vdNJUbjT.js +1982 -0
  114. package/dist/browser/src-vdNJUbjT.js.map +1 -0
  115. package/dist/cli/commands/files/delete.d.ts +40 -0
  116. package/dist/cli/commands/files/delete.d.ts.map +1 -0
  117. package/dist/cli/commands/files/delete.js +31 -0
  118. package/dist/cli/commands/files/delete.js.map +1 -0
  119. package/dist/cli/commands/files/download-url.d.ts +40 -0
  120. package/dist/cli/commands/files/download-url.d.ts.map +1 -0
  121. package/dist/cli/commands/files/download-url.js +31 -0
  122. package/dist/cli/commands/files/download-url.js.map +1 -0
  123. package/dist/cli/commands/files/download.d.ts +49 -0
  124. package/dist/cli/commands/files/download.d.ts.map +1 -0
  125. package/dist/cli/commands/files/download.js +65 -0
  126. package/dist/cli/commands/files/download.js.map +1 -0
  127. package/dist/cli/commands/files/get.d.ts +40 -0
  128. package/dist/cli/commands/files/get.d.ts.map +1 -0
  129. package/dist/cli/commands/files/get.js +31 -0
  130. package/dist/cli/commands/files/get.js.map +1 -0
  131. package/dist/cli/commands/files/list.d.ts +56 -0
  132. package/dist/cli/commands/files/list.d.ts.map +1 -0
  133. package/dist/cli/commands/files/list.js +53 -0
  134. package/dist/cli/commands/files/list.js.map +1 -0
  135. package/dist/cli/commands/files/update.d.ts +56 -0
  136. package/dist/cli/commands/files/update.d.ts.map +1 -0
  137. package/dist/cli/commands/files/update.js +53 -0
  138. package/dist/cli/commands/files/update.js.map +1 -0
  139. package/dist/cli/commands/files/upload.d.ts +73 -0
  140. package/dist/cli/commands/files/upload.d.ts.map +1 -0
  141. package/dist/cli/commands/files/upload.js +87 -0
  142. package/dist/cli/commands/files/upload.js.map +1 -0
  143. package/dist/cli/commands/uploads/abort.d.ts +37 -0
  144. package/dist/cli/commands/uploads/abort.d.ts.map +1 -0
  145. package/dist/cli/commands/uploads/abort.js +26 -0
  146. package/dist/cli/commands/uploads/abort.js.map +1 -0
  147. package/dist/cli/commands/uploads/complete.d.ts +41 -0
  148. package/dist/cli/commands/uploads/complete.d.ts.map +1 -0
  149. package/dist/cli/commands/uploads/complete.js +45 -0
  150. package/dist/cli/commands/uploads/complete.js.map +1 -0
  151. package/dist/cli/commands/uploads/content.d.ts +46 -0
  152. package/dist/cli/commands/uploads/content.d.ts.map +1 -0
  153. package/dist/cli/commands/uploads/content.js +43 -0
  154. package/dist/cli/commands/uploads/content.js.map +1 -0
  155. package/dist/cli/commands/uploads/create.d.ts +72 -0
  156. package/dist/cli/commands/uploads/create.d.ts.map +1 -0
  157. package/dist/cli/commands/uploads/create.js +84 -0
  158. package/dist/cli/commands/uploads/create.js.map +1 -0
  159. package/dist/cli/commands/uploads/get.d.ts +37 -0
  160. package/dist/cli/commands/uploads/get.d.ts.map +1 -0
  161. package/dist/cli/commands/uploads/get.js +26 -0
  162. package/dist/cli/commands/uploads/get.js.map +1 -0
  163. package/dist/cli/commands/uploads/parts-complete.d.ts +41 -0
  164. package/dist/cli/commands/uploads/parts-complete.d.ts.map +1 -0
  165. package/dist/cli/commands/uploads/parts-complete.js +44 -0
  166. package/dist/cli/commands/uploads/parts-complete.js.map +1 -0
  167. package/dist/cli/commands/uploads/parts-list.d.ts +37 -0
  168. package/dist/cli/commands/uploads/parts-list.d.ts.map +1 -0
  169. package/dist/cli/commands/uploads/parts-list.js +26 -0
  170. package/dist/cli/commands/uploads/parts-list.js.map +1 -0
  171. package/dist/cli/commands/uploads/parts-urls.d.ts +46 -0
  172. package/dist/cli/commands/uploads/parts-urls.d.ts.map +1 -0
  173. package/dist/cli/commands/uploads/parts-urls.js +57 -0
  174. package/dist/cli/commands/uploads/parts-urls.js.map +1 -0
  175. package/dist/cli/commands/uploads/progress.d.ts +45 -0
  176. package/dist/cli/commands/uploads/progress.d.ts.map +1 -0
  177. package/dist/cli/commands/uploads/progress.js +40 -0
  178. package/dist/cli/commands/uploads/progress.js.map +1 -0
  179. package/dist/cli/commands/uploads/transfer.d.ts +73 -0
  180. package/dist/cli/commands/uploads/transfer.d.ts.map +1 -0
  181. package/dist/cli/commands/uploads/transfer.js +170 -0
  182. package/dist/cli/commands/uploads/transfer.js.map +1 -0
  183. package/dist/cli/index.d.ts +27 -0
  184. package/dist/cli/index.d.ts.map +1 -0
  185. package/dist/cli/index.js +198 -0
  186. package/dist/cli/index.js.map +1 -0
  187. package/dist/cli/keys.js +32 -0
  188. package/dist/cli/keys.js.map +1 -0
  189. package/dist/cli/utils/client.js +174 -0
  190. package/dist/cli/utils/client.js.map +1 -0
  191. package/dist/cli/utils/options.js +135 -0
  192. package/dist/cli/utils/options.js.map +1 -0
  193. package/dist/node/cli/commands/files/delete.d.ts +40 -0
  194. package/dist/node/cli/commands/files/delete.d.ts.map +1 -0
  195. package/dist/node/cli/commands/files/delete.js +31 -0
  196. package/dist/node/cli/commands/files/delete.js.map +1 -0
  197. package/dist/node/cli/commands/files/download-url.d.ts +40 -0
  198. package/dist/node/cli/commands/files/download-url.d.ts.map +1 -0
  199. package/dist/node/cli/commands/files/download-url.js +31 -0
  200. package/dist/node/cli/commands/files/download-url.js.map +1 -0
  201. package/dist/node/cli/commands/files/download.d.ts +49 -0
  202. package/dist/node/cli/commands/files/download.d.ts.map +1 -0
  203. package/dist/node/cli/commands/files/download.js +65 -0
  204. package/dist/node/cli/commands/files/download.js.map +1 -0
  205. package/dist/node/cli/commands/files/get.d.ts +40 -0
  206. package/dist/node/cli/commands/files/get.d.ts.map +1 -0
  207. package/dist/node/cli/commands/files/get.js +31 -0
  208. package/dist/node/cli/commands/files/get.js.map +1 -0
  209. package/dist/node/cli/commands/files/list.d.ts +56 -0
  210. package/dist/node/cli/commands/files/list.d.ts.map +1 -0
  211. package/dist/node/cli/commands/files/list.js +53 -0
  212. package/dist/node/cli/commands/files/list.js.map +1 -0
  213. package/dist/node/cli/commands/files/update.d.ts +56 -0
  214. package/dist/node/cli/commands/files/update.d.ts.map +1 -0
  215. package/dist/node/cli/commands/files/update.js +53 -0
  216. package/dist/node/cli/commands/files/update.js.map +1 -0
  217. package/dist/node/cli/commands/files/upload.d.ts +73 -0
  218. package/dist/node/cli/commands/files/upload.d.ts.map +1 -0
  219. package/dist/node/cli/commands/files/upload.js +87 -0
  220. package/dist/node/cli/commands/files/upload.js.map +1 -0
  221. package/dist/node/cli/commands/uploads/abort.d.ts +37 -0
  222. package/dist/node/cli/commands/uploads/abort.d.ts.map +1 -0
  223. package/dist/node/cli/commands/uploads/abort.js +26 -0
  224. package/dist/node/cli/commands/uploads/abort.js.map +1 -0
  225. package/dist/node/cli/commands/uploads/complete.d.ts +41 -0
  226. package/dist/node/cli/commands/uploads/complete.d.ts.map +1 -0
  227. package/dist/node/cli/commands/uploads/complete.js +45 -0
  228. package/dist/node/cli/commands/uploads/complete.js.map +1 -0
  229. package/dist/node/cli/commands/uploads/content.d.ts +46 -0
  230. package/dist/node/cli/commands/uploads/content.d.ts.map +1 -0
  231. package/dist/node/cli/commands/uploads/content.js +43 -0
  232. package/dist/node/cli/commands/uploads/content.js.map +1 -0
  233. package/dist/node/cli/commands/uploads/create.d.ts +72 -0
  234. package/dist/node/cli/commands/uploads/create.d.ts.map +1 -0
  235. package/dist/node/cli/commands/uploads/create.js +84 -0
  236. package/dist/node/cli/commands/uploads/create.js.map +1 -0
  237. package/dist/node/cli/commands/uploads/get.d.ts +37 -0
  238. package/dist/node/cli/commands/uploads/get.d.ts.map +1 -0
  239. package/dist/node/cli/commands/uploads/get.js +26 -0
  240. package/dist/node/cli/commands/uploads/get.js.map +1 -0
  241. package/dist/node/cli/commands/uploads/parts-complete.d.ts +41 -0
  242. package/dist/node/cli/commands/uploads/parts-complete.d.ts.map +1 -0
  243. package/dist/node/cli/commands/uploads/parts-complete.js +44 -0
  244. package/dist/node/cli/commands/uploads/parts-complete.js.map +1 -0
  245. package/dist/node/cli/commands/uploads/parts-list.d.ts +37 -0
  246. package/dist/node/cli/commands/uploads/parts-list.d.ts.map +1 -0
  247. package/dist/node/cli/commands/uploads/parts-list.js +26 -0
  248. package/dist/node/cli/commands/uploads/parts-list.js.map +1 -0
  249. package/dist/node/cli/commands/uploads/parts-urls.d.ts +46 -0
  250. package/dist/node/cli/commands/uploads/parts-urls.d.ts.map +1 -0
  251. package/dist/node/cli/commands/uploads/parts-urls.js +57 -0
  252. package/dist/node/cli/commands/uploads/parts-urls.js.map +1 -0
  253. package/dist/node/cli/commands/uploads/progress.d.ts +45 -0
  254. package/dist/node/cli/commands/uploads/progress.d.ts.map +1 -0
  255. package/dist/node/cli/commands/uploads/progress.js +40 -0
  256. package/dist/node/cli/commands/uploads/progress.js.map +1 -0
  257. package/dist/node/cli/commands/uploads/transfer.d.ts +73 -0
  258. package/dist/node/cli/commands/uploads/transfer.d.ts.map +1 -0
  259. package/dist/node/cli/commands/uploads/transfer.js +170 -0
  260. package/dist/node/cli/commands/uploads/transfer.js.map +1 -0
  261. package/dist/node/cli/index.d.ts +27 -0
  262. package/dist/node/cli/index.d.ts.map +1 -0
  263. package/dist/node/cli/index.js +198 -0
  264. package/dist/node/cli/index.js.map +1 -0
  265. package/dist/node/cli/utils/client.js +174 -0
  266. package/dist/node/cli/utils/client.js.map +1 -0
  267. package/dist/node/cli/utils/options.js +135 -0
  268. package/dist/node/cli/utils/options.js.map +1 -0
  269. package/dist/node/client/clients.d.ts +295 -0
  270. package/dist/node/client/clients.d.ts.map +1 -0
  271. package/dist/node/client/clients.js +49 -0
  272. package/dist/node/client/clients.js.map +1 -0
  273. package/dist/node/client/helpers.d.ts +51 -0
  274. package/dist/node/client/helpers.d.ts.map +1 -0
  275. package/dist/node/client/helpers.js +242 -0
  276. package/dist/node/client/helpers.js.map +1 -0
  277. package/dist/node/client/react.d.ts +295 -0
  278. package/dist/node/client/react.d.ts.map +1 -0
  279. package/dist/node/client/react.js +11 -0
  280. package/dist/node/client/react.js.map +1 -0
  281. package/dist/node/client/solid.d.ts +303 -0
  282. package/dist/node/client/solid.d.ts.map +1 -0
  283. package/dist/node/client/solid.js +11 -0
  284. package/dist/node/client/solid.js.map +1 -0
  285. package/dist/node/client/svelte.d.ts +295 -0
  286. package/dist/node/client/svelte.d.ts.map +1 -0
  287. package/dist/node/client/svelte.js +11 -0
  288. package/dist/node/client/svelte.js.map +1 -0
  289. package/dist/node/client/vanilla.d.ts +296 -0
  290. package/dist/node/client/vanilla.d.ts.map +1 -0
  291. package/dist/node/client/vanilla.js +11 -0
  292. package/dist/node/client/vanilla.js.map +1 -0
  293. package/dist/node/client/vue.d.ts +295 -0
  294. package/dist/node/client/vue.d.ts.map +1 -0
  295. package/dist/node/client/vue.js +11 -0
  296. package/dist/node/client/vue.js.map +1 -0
  297. package/dist/node/config.d.ts +41 -0
  298. package/dist/node/config.d.ts.map +1 -0
  299. package/dist/node/config.js +26 -0
  300. package/dist/node/config.js.map +1 -0
  301. package/dist/node/definition.d.ts +829 -0
  302. package/dist/node/definition.d.ts.map +1 -0
  303. package/dist/node/definition.js +59 -0
  304. package/dist/node/definition.js.map +1 -0
  305. package/dist/node/index.d.ts +1246 -0
  306. package/dist/node/index.d.ts.map +1 -0
  307. package/dist/node/index.js +19 -0
  308. package/dist/node/index.js.map +1 -0
  309. package/dist/node/keys.d.ts +12 -0
  310. package/dist/node/keys.d.ts.map +1 -0
  311. package/dist/node/keys.js +63 -0
  312. package/dist/node/keys.js.map +1 -0
  313. package/dist/node/routes/files.js +450 -0
  314. package/dist/node/routes/files.js.map +1 -0
  315. package/dist/node/routes/index.d.ts +2023 -0
  316. package/dist/node/routes/index.d.ts.map +1 -0
  317. package/dist/node/routes/index.js +9 -0
  318. package/dist/node/routes/index.js.map +1 -0
  319. package/dist/node/routes/shared.js +66 -0
  320. package/dist/node/routes/shared.js.map +1 -0
  321. package/dist/node/routes/uploads.js +454 -0
  322. package/dist/node/routes/uploads.js.map +1 -0
  323. package/dist/node/schema.d.ts +14 -0
  324. package/dist/node/schema.d.ts.map +1 -0
  325. package/dist/node/schema.js +30 -0
  326. package/dist/node/schema.js.map +1 -0
  327. package/dist/node/services/files.d.ts +20 -0
  328. package/dist/node/services/files.d.ts.map +1 -0
  329. package/dist/node/services/files.js +93 -0
  330. package/dist/node/services/files.js.map +1 -0
  331. package/dist/node/services/helpers.js +36 -0
  332. package/dist/node/services/helpers.js.map +1 -0
  333. package/dist/node/services/index.js +4 -0
  334. package/dist/node/services/uploads.d.ts +50 -0
  335. package/dist/node/services/uploads.d.ts.map +1 -0
  336. package/dist/node/services/uploads.js +358 -0
  337. package/dist/node/services/uploads.js.map +1 -0
  338. package/dist/node/storage/fs.d.ts +16 -0
  339. package/dist/node/storage/fs.d.ts.map +1 -0
  340. package/dist/node/storage/fs.js +94 -0
  341. package/dist/node/storage/fs.js.map +1 -0
  342. package/dist/node/storage/r2.d.ts +103 -0
  343. package/dist/node/storage/r2.d.ts.map +1 -0
  344. package/dist/node/storage/r2.js +23 -0
  345. package/dist/node/storage/r2.js.map +1 -0
  346. package/dist/node/storage/s3.d.ts +44 -0
  347. package/dist/node/storage/s3.d.ts.map +1 -0
  348. package/dist/node/storage/s3.js +398 -0
  349. package/dist/node/storage/s3.js.map +1 -0
  350. package/dist/node/storage/types.d.ts +118 -0
  351. package/dist/node/storage/types.d.ts.map +1 -0
  352. package/dist/node/types.d.ts +32 -0
  353. package/dist/node/types.d.ts.map +1 -0
  354. package/dist/tsconfig.tsbuildinfo +1 -0
  355. package/package.json +105 -0
@@ -0,0 +1,14 @@
1
+ import * as _fragno_dev_db382 from "@fragno-dev/db";
2
+ import * as _fragno_dev_db_schema855 from "@fragno-dev/db/schema";
3
+
4
+ //#region src/schema.d.ts
5
+ declare const uploadSchema: _fragno_dev_db_schema855.Schema<{
6
+ file: _fragno_dev_db_schema855.Table<Record<string, _fragno_dev_db_schema855.AnyColumn> & Record<"id", _fragno_dev_db_schema855.IdColumn<"varchar(30)", string | _fragno_dev_db_schema855.FragnoId | null, _fragno_dev_db_schema855.FragnoId>> & Record<"fileKey", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"uploaderId", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"filename", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"sizeBytes", _fragno_dev_db_schema855.Column<"bigint", bigint, bigint>> & Record<"contentType", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"checksum", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"visibility", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"tags", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"metadata", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"status", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"storageProvider", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"storageKey", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"createdAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>> & Record<"updatedAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>> & Record<"completedAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date | null>> & Record<"deletedAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date | null>> & Record<"errorCode", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"errorMessage", _fragno_dev_db_schema855.Column<"string", string | null, string | null>>, Record<string, _fragno_dev_db_schema855.AnyRelation>, Record<string, _fragno_dev_db_schema855.Index<_fragno_dev_db_schema855.AnyColumn[], readonly string[]>> & Record<"idx_file_key", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["fileKey"]>> & Record<"idx_file_key_status", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>, _fragno_dev_db_schema855.Column<"string", string, string>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["fileKey", "status"]>> & Record<"idx_file_key_uploaderId", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>, _fragno_dev_db_schema855.Column<"string", string | null, string | null>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["fileKey", "uploaderId"]>> & Record<"idx_file_key_status_uploaderId", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>, _fragno_dev_db_schema855.Column<"string", string, string>, _fragno_dev_db_schema855.Column<"string", string | null, string | null>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["fileKey", "status", "uploaderId"]>> & Record<"idx_file_uploaderId", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string | null, string | null>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["uploaderId"]>> & Record<"idx_file_createdAt", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["createdAt"]>> & Record<"idx_file_status_createdAt", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>, _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["status", "createdAt"]>>>;
7
+ upload: _fragno_dev_db_schema855.Table<Record<string, _fragno_dev_db_schema855.AnyColumn> & Record<"id", _fragno_dev_db_schema855.IdColumn<"varchar(30)", string | _fragno_dev_db_schema855.FragnoId | null, _fragno_dev_db_schema855.FragnoId>> & Record<"fileKey", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"uploaderId", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"filename", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"expectedSizeBytes", _fragno_dev_db_schema855.Column<"bigint", bigint, bigint>> & Record<"contentType", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"checksum", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"visibility", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"tags", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"metadata", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"status", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"strategy", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"storageProvider", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"storageKey", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"storageUploadId", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"uploadUrl", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"uploadHeaders", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"bytesUploaded", _fragno_dev_db_schema855.Column<"bigint", bigint | null, bigint>> & Record<"partsUploaded", _fragno_dev_db_schema855.Column<"integer", number | null, number>> & Record<"partSizeBytes", _fragno_dev_db_schema855.Column<"integer", number | null, number | null>> & Record<"expiresAt", _fragno_dev_db_schema855.Column<"timestamp", _fragno_dev_db382.DbNow | Date, Date>> & Record<"createdAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>> & Record<"updatedAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>> & Record<"completedAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date | null>> & Record<"errorCode", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"errorMessage", _fragno_dev_db_schema855.Column<"string", string | null, string | null>>, Record<string, _fragno_dev_db_schema855.AnyRelation>, Record<string, _fragno_dev_db_schema855.Index<_fragno_dev_db_schema855.AnyColumn[], readonly string[]>> & Record<"idx_upload_file_key", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["fileKey"]>> & Record<"idx_upload_status", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["status"]>> & Record<"idx_upload_expiresAt", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"timestamp", _fragno_dev_db382.DbNow | Date, Date>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["expiresAt"]>>>;
8
+ upload_part: _fragno_dev_db_schema855.Table<Record<string, _fragno_dev_db_schema855.AnyColumn> & Record<"id", _fragno_dev_db_schema855.IdColumn<"varchar(30)", string | _fragno_dev_db_schema855.FragnoId | null, _fragno_dev_db_schema855.FragnoId>> & Record<"uploadId", _fragno_dev_db_schema855.Column<"bigint", string | bigint | _fragno_dev_db_schema855.FragnoId | _fragno_dev_db_schema855.FragnoReference, _fragno_dev_db_schema855.FragnoReference>> & Record<"partNumber", _fragno_dev_db_schema855.Column<"integer", number, number>> & Record<"etag", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"sizeBytes", _fragno_dev_db_schema855.Column<"bigint", bigint, bigint>> & Record<"createdAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>>, Record<string, _fragno_dev_db_schema855.AnyRelation> & Record<"upload", _fragno_dev_db_schema855.Relation<"one", _fragno_dev_db_schema855.Table<Record<string, _fragno_dev_db_schema855.AnyColumn> & Record<"id", _fragno_dev_db_schema855.IdColumn<"varchar(30)", string | _fragno_dev_db_schema855.FragnoId | null, _fragno_dev_db_schema855.FragnoId>> & Record<"fileKey", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"uploaderId", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"filename", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"expectedSizeBytes", _fragno_dev_db_schema855.Column<"bigint", bigint, bigint>> & Record<"contentType", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"checksum", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"visibility", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"tags", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"metadata", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"status", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"strategy", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"storageProvider", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"storageKey", _fragno_dev_db_schema855.Column<"string", string, string>> & Record<"storageUploadId", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"uploadUrl", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"uploadHeaders", _fragno_dev_db_schema855.Column<"json", unknown, unknown>> & Record<"bytesUploaded", _fragno_dev_db_schema855.Column<"bigint", bigint | null, bigint>> & Record<"partsUploaded", _fragno_dev_db_schema855.Column<"integer", number | null, number>> & Record<"partSizeBytes", _fragno_dev_db_schema855.Column<"integer", number | null, number | null>> & Record<"expiresAt", _fragno_dev_db_schema855.Column<"timestamp", _fragno_dev_db382.DbNow | Date, Date>> & Record<"createdAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>> & Record<"updatedAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date>> & Record<"completedAt", _fragno_dev_db_schema855.Column<"timestamp", (_fragno_dev_db382.DbNow | Date) | null, Date | null>> & Record<"errorCode", _fragno_dev_db_schema855.Column<"string", string | null, string | null>> & Record<"errorMessage", _fragno_dev_db_schema855.Column<"string", string | null, string | null>>, Record<string, _fragno_dev_db_schema855.AnyRelation>, Record<string, _fragno_dev_db_schema855.Index<_fragno_dev_db_schema855.AnyColumn[], readonly string[]>> & Record<"idx_upload_file_key", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["fileKey"]>> & Record<"idx_upload_status", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"string", string, string>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["status"]>> & Record<"idx_upload_expiresAt", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"timestamp", _fragno_dev_db382.DbNow | Date, Date>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["expiresAt"]>>>>>, Record<string, _fragno_dev_db_schema855.Index<_fragno_dev_db_schema855.AnyColumn[], readonly string[]>> & Record<"idx_upload_part_upload", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"bigint", string | bigint | _fragno_dev_db_schema855.FragnoId | _fragno_dev_db_schema855.FragnoReference, _fragno_dev_db_schema855.FragnoReference>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["uploadId"]>> & Record<"idx_upload_part_number", _fragno_dev_db_schema855.Index<readonly [_fragno_dev_db_schema855.Column<"bigint", string | bigint | _fragno_dev_db_schema855.FragnoId | _fragno_dev_db_schema855.FragnoReference, _fragno_dev_db_schema855.FragnoReference>, _fragno_dev_db_schema855.Column<"integer", number, number>] & _fragno_dev_db_schema855.AnyColumn[], readonly ["uploadId", "partNumber"]>>>;
9
+ }>;
10
+ //# sourceMappingURL=schema.d.ts.map
11
+
12
+ //#endregion
13
+ export { uploadSchema };
14
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","names":[],"sources":["../../src/schema.ts"],"sourcesContent":[],"mappings":";;;;cAEa,uCAAY;sDAgGvB,wBAAA,CAAA,SAAA;;;AAhGF,CAAA,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { column, idColumn, referenceColumn, schema } from "@fragno-dev/db/schema";
2
+
3
+ //#region src/schema.ts
4
+ const uploadSchema = schema("upload", (s) => {
5
+ return s.addTable("file", (t) => {
6
+ return t.addColumn("id", idColumn()).addColumn("fileKey", column("string")).addColumn("uploaderId", column("string").nullable()).addColumn("filename", column("string")).addColumn("sizeBytes", column("bigint")).addColumn("contentType", column("string")).addColumn("checksum", column("json").nullable()).addColumn("visibility", column("string")).addColumn("tags", column("json").nullable()).addColumn("metadata", column("json").nullable()).addColumn("status", column("string")).addColumn("storageProvider", column("string")).addColumn("storageKey", column("string")).addColumn("createdAt", column("timestamp").defaultTo((b) => b.now())).addColumn("updatedAt", column("timestamp").defaultTo((b) => b.now())).addColumn("completedAt", column("timestamp").nullable()).addColumn("deletedAt", column("timestamp").nullable()).addColumn("errorCode", column("string").nullable()).addColumn("errorMessage", column("string").nullable()).createIndex("idx_file_key", ["fileKey"], { unique: true }).createIndex("idx_file_key_status", ["fileKey", "status"]).createIndex("idx_file_key_uploaderId", ["fileKey", "uploaderId"]).createIndex("idx_file_key_status_uploaderId", [
7
+ "fileKey",
8
+ "status",
9
+ "uploaderId"
10
+ ]).createIndex("idx_file_uploaderId", ["uploaderId"]).createIndex("idx_file_createdAt", ["createdAt"]).createIndex("idx_file_status_createdAt", ["status", "createdAt"]);
11
+ }).addTable("upload", (t) => {
12
+ return t.addColumn("id", idColumn()).addColumn("fileKey", column("string")).addColumn("uploaderId", column("string").nullable()).addColumn("filename", column("string")).addColumn("expectedSizeBytes", column("bigint")).addColumn("contentType", column("string")).addColumn("checksum", column("json").nullable()).addColumn("visibility", column("string")).addColumn("tags", column("json").nullable()).addColumn("metadata", column("json").nullable()).addColumn("status", column("string")).addColumn("strategy", column("string")).addColumn("storageProvider", column("string")).addColumn("storageKey", column("string")).addColumn("storageUploadId", column("string").nullable()).addColumn("uploadUrl", column("string").nullable()).addColumn("uploadHeaders", column("json").nullable()).addColumn("bytesUploaded", column("bigint").defaultTo(0n)).addColumn("partsUploaded", column("integer").defaultTo(0)).addColumn("partSizeBytes", column("integer").nullable()).addColumn("expiresAt", column("timestamp")).addColumn("createdAt", column("timestamp").defaultTo((b) => b.now())).addColumn("updatedAt", column("timestamp").defaultTo((b) => b.now())).addColumn("completedAt", column("timestamp").nullable()).addColumn("errorCode", column("string").nullable()).addColumn("errorMessage", column("string").nullable()).createIndex("idx_upload_file_key", ["fileKey"]).createIndex("idx_upload_status", ["status"]).createIndex("idx_upload_expiresAt", ["expiresAt"]);
13
+ }).addTable("upload_part", (t) => {
14
+ return t.addColumn("id", idColumn()).addColumn("uploadId", referenceColumn()).addColumn("partNumber", column("integer")).addColumn("etag", column("string")).addColumn("sizeBytes", column("bigint")).addColumn("createdAt", column("timestamp").defaultTo((b) => b.now())).createIndex("idx_upload_part_upload", ["uploadId"]).createIndex("idx_upload_part_number", ["uploadId", "partNumber"], { unique: true });
15
+ }).addReference("upload", {
16
+ type: "one",
17
+ from: {
18
+ table: "upload_part",
19
+ column: "uploadId"
20
+ },
21
+ to: {
22
+ table: "upload",
23
+ column: "id"
24
+ }
25
+ });
26
+ });
27
+
28
+ //#endregion
29
+ export { uploadSchema };
30
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../src/schema.ts"],"sourcesContent":["import { column, idColumn, referenceColumn, schema } from \"@fragno-dev/db/schema\";\n\nexport const uploadSchema = schema(\"upload\", (s) => {\n return s\n .addTable(\"file\", (t) => {\n return t\n .addColumn(\"id\", idColumn())\n .addColumn(\"fileKey\", column(\"string\"))\n .addColumn(\"uploaderId\", column(\"string\").nullable())\n .addColumn(\"filename\", column(\"string\"))\n .addColumn(\"sizeBytes\", column(\"bigint\"))\n .addColumn(\"contentType\", column(\"string\"))\n .addColumn(\"checksum\", column(\"json\").nullable())\n .addColumn(\"visibility\", column(\"string\"))\n .addColumn(\"tags\", column(\"json\").nullable())\n .addColumn(\"metadata\", column(\"json\").nullable())\n .addColumn(\"status\", column(\"string\"))\n .addColumn(\"storageProvider\", column(\"string\"))\n .addColumn(\"storageKey\", column(\"string\"))\n .addColumn(\n \"createdAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .addColumn(\n \"updatedAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .addColumn(\"completedAt\", column(\"timestamp\").nullable())\n .addColumn(\"deletedAt\", column(\"timestamp\").nullable())\n .addColumn(\"errorCode\", column(\"string\").nullable())\n .addColumn(\"errorMessage\", column(\"string\").nullable())\n .createIndex(\"idx_file_key\", [\"fileKey\"], { unique: true })\n .createIndex(\"idx_file_key_status\", [\"fileKey\", \"status\"])\n .createIndex(\"idx_file_key_uploaderId\", [\"fileKey\", \"uploaderId\"])\n .createIndex(\"idx_file_key_status_uploaderId\", [\"fileKey\", \"status\", \"uploaderId\"])\n .createIndex(\"idx_file_uploaderId\", [\"uploaderId\"])\n .createIndex(\"idx_file_createdAt\", [\"createdAt\"])\n .createIndex(\"idx_file_status_createdAt\", [\"status\", \"createdAt\"]);\n })\n .addTable(\"upload\", (t) => {\n return t\n .addColumn(\"id\", idColumn())\n .addColumn(\"fileKey\", column(\"string\"))\n .addColumn(\"uploaderId\", column(\"string\").nullable())\n .addColumn(\"filename\", column(\"string\"))\n .addColumn(\"expectedSizeBytes\", column(\"bigint\"))\n .addColumn(\"contentType\", column(\"string\"))\n .addColumn(\"checksum\", column(\"json\").nullable())\n .addColumn(\"visibility\", column(\"string\"))\n .addColumn(\"tags\", column(\"json\").nullable())\n .addColumn(\"metadata\", column(\"json\").nullable())\n .addColumn(\"status\", column(\"string\"))\n .addColumn(\"strategy\", column(\"string\"))\n .addColumn(\"storageProvider\", column(\"string\"))\n .addColumn(\"storageKey\", column(\"string\"))\n .addColumn(\"storageUploadId\", column(\"string\").nullable())\n .addColumn(\"uploadUrl\", column(\"string\").nullable())\n .addColumn(\"uploadHeaders\", column(\"json\").nullable())\n .addColumn(\"bytesUploaded\", column(\"bigint\").defaultTo(0n))\n .addColumn(\"partsUploaded\", column(\"integer\").defaultTo(0))\n .addColumn(\"partSizeBytes\", column(\"integer\").nullable())\n .addColumn(\"expiresAt\", column(\"timestamp\"))\n .addColumn(\n \"createdAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .addColumn(\n \"updatedAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .addColumn(\"completedAt\", column(\"timestamp\").nullable())\n .addColumn(\"errorCode\", column(\"string\").nullable())\n .addColumn(\"errorMessage\", column(\"string\").nullable())\n .createIndex(\"idx_upload_file_key\", [\"fileKey\"])\n .createIndex(\"idx_upload_status\", [\"status\"])\n .createIndex(\"idx_upload_expiresAt\", [\"expiresAt\"]);\n })\n .addTable(\"upload_part\", (t) => {\n return t\n .addColumn(\"id\", idColumn())\n .addColumn(\"uploadId\", referenceColumn())\n .addColumn(\"partNumber\", column(\"integer\"))\n .addColumn(\"etag\", column(\"string\"))\n .addColumn(\"sizeBytes\", column(\"bigint\"))\n .addColumn(\n \"createdAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .createIndex(\"idx_upload_part_upload\", [\"uploadId\"])\n .createIndex(\"idx_upload_part_number\", [\"uploadId\", \"partNumber\"], {\n unique: true,\n });\n })\n .addReference(\"upload\", {\n type: \"one\",\n from: { table: \"upload_part\", column: \"uploadId\" },\n to: { table: \"upload\", column: \"id\" },\n });\n});\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { FileStatus } from "../types.js";
2
+
3
+ //#region src/services/files.d.ts
4
+
5
+ type ListFilesInput = {
6
+ prefix?: string;
7
+ pageSize: number;
8
+ cursor?: string;
9
+ status?: FileStatus;
10
+ uploaderId?: string;
11
+ };
12
+ type UpdateFileInput = {
13
+ filename?: string;
14
+ visibility?: string;
15
+ tags?: string[] | null;
16
+ metadata?: Record<string, unknown> | null;
17
+ };
18
+ //#endregion
19
+ export { ListFilesInput, UpdateFileInput };
20
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","names":[],"sources":["../../../src/services/files.ts"],"sourcesContent":[],"mappings":";;;;AAkBY,KARA,cAAA,GAQe;;;;WAJhB;;;KAIC,eAAA;;;;aAIC"}
@@ -0,0 +1,93 @@
1
+ import { uploadSchema } from "../schema.js";
2
+
3
+ //#region src/services/files.ts
4
+ const createFileServices = (_config) => {
5
+ return {
6
+ findFileByKey: function(fileKey) {
7
+ return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("idx_file_key", (eb) => eb("fileKey", "=", fileKey)))).transformRetrieve(([file]) => file ?? null).build();
8
+ },
9
+ getFileByKey: function(fileKey) {
10
+ return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("idx_file_key", (eb) => eb("fileKey", "=", fileKey)))).transformRetrieve(([file]) => {
11
+ if (!file) throw new Error("FILE_NOT_FOUND");
12
+ return file;
13
+ }).build();
14
+ },
15
+ listFiles: function(input) {
16
+ return this.serviceTx(uploadSchema).retrieve((uow) => uow.findWithCursor("file", (b) => {
17
+ const prefix = input.prefix ?? "";
18
+ if (input.status && input.uploaderId) {
19
+ const status = input.status;
20
+ const uploaderId = input.uploaderId;
21
+ const ordered$1 = b.whereIndex("idx_file_key_status_uploaderId", (eb) => eb.and(eb("fileKey", "starts with", prefix), eb("status", "=", status), eb("uploaderId", "=", uploaderId))).orderByIndex("idx_file_key_status_uploaderId", "asc").pageSize(input.pageSize);
22
+ return input.cursor ? ordered$1.after(input.cursor) : ordered$1;
23
+ }
24
+ if (input.status) {
25
+ const status = input.status;
26
+ const ordered$1 = b.whereIndex("idx_file_key_status", (eb) => eb.and(eb("fileKey", "starts with", prefix), eb("status", "=", status))).orderByIndex("idx_file_key_status", "asc").pageSize(input.pageSize);
27
+ return input.cursor ? ordered$1.after(input.cursor) : ordered$1;
28
+ }
29
+ if (input.uploaderId) {
30
+ const uploaderId = input.uploaderId;
31
+ const ordered$1 = b.whereIndex("idx_file_key_uploaderId", (eb) => eb.and(eb("fileKey", "starts with", prefix), eb("uploaderId", "=", uploaderId))).orderByIndex("idx_file_key_uploaderId", "asc").pageSize(input.pageSize);
32
+ return input.cursor ? ordered$1.after(input.cursor) : ordered$1;
33
+ }
34
+ const ordered = b.whereIndex("idx_file_key", (eb) => eb("fileKey", "starts with", prefix)).orderByIndex("idx_file_key", "asc").pageSize(input.pageSize);
35
+ return input.cursor ? ordered.after(input.cursor) : ordered;
36
+ })).transformRetrieve(([result]) => result).build();
37
+ },
38
+ updateFile: function(fileKey, input) {
39
+ const now = /* @__PURE__ */ new Date();
40
+ return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("idx_file_key", (eb) => eb("fileKey", "=", fileKey)))).mutate(({ uow, retrieveResult: [file] }) => {
41
+ if (!file) throw new Error("FILE_NOT_FOUND");
42
+ if (file.status === "deleted") throw new Error("UPLOAD_INVALID_STATE");
43
+ const updatedFile = {
44
+ ...file,
45
+ filename: input.filename ?? file.filename,
46
+ visibility: input.visibility ?? file.visibility,
47
+ tags: input.tags ?? file.tags,
48
+ metadata: input.metadata ?? file.metadata,
49
+ updatedAt: now
50
+ };
51
+ uow.update("file", file.id, (b) => b.set({
52
+ filename: updatedFile.filename,
53
+ visibility: updatedFile.visibility,
54
+ tags: updatedFile.tags,
55
+ metadata: updatedFile.metadata,
56
+ updatedAt: updatedFile.updatedAt
57
+ }).check());
58
+ return updatedFile;
59
+ }).build();
60
+ },
61
+ markFileDeleted: function(fileKey, fileKeyParts, uploadId) {
62
+ const now = /* @__PURE__ */ new Date();
63
+ return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("idx_file_key", (eb) => eb("fileKey", "=", fileKey)))).mutate(({ uow, retrieveResult: [file] }) => {
64
+ if (!file) throw new Error("FILE_NOT_FOUND");
65
+ if (file.status === "deleted") return file;
66
+ const updatedFile = {
67
+ ...file,
68
+ status: "deleted",
69
+ updatedAt: now,
70
+ deletedAt: now
71
+ };
72
+ uow.update("file", file.id, (b) => b.set({
73
+ status: updatedFile.status,
74
+ updatedAt: updatedFile.updatedAt,
75
+ deletedAt: updatedFile.deletedAt
76
+ }).check());
77
+ uow.triggerHook("onFileDeleted", {
78
+ fileKey: file.fileKey,
79
+ fileKeyParts,
80
+ uploadId,
81
+ uploaderId: file.uploaderId,
82
+ sizeBytes: Number(file.sizeBytes),
83
+ contentType: file.contentType
84
+ });
85
+ return updatedFile;
86
+ }).build();
87
+ }
88
+ };
89
+ };
90
+
91
+ //#endregion
92
+ export { createFileServices };
93
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","names":["ordered"],"sources":["../../../src/services/files.ts"],"sourcesContent":["import type { DatabaseServiceContext } from \"@fragno-dev/db\";\nimport type {\n FileHookPayload,\n UploadFragmentResolvedConfig,\n UploadTimeoutPayload,\n} from \"../config\";\nimport type { FileKeyEncoded, FileKeyParts } from \"../keys\";\nimport { uploadSchema } from \"../schema\";\nimport type { FileStatus } from \"../types\";\n\nexport type ListFilesInput = {\n prefix?: string;\n pageSize: number;\n cursor?: string;\n status?: FileStatus;\n uploaderId?: string;\n};\n\nexport type UpdateFileInput = {\n filename?: string;\n visibility?: string;\n tags?: string[] | null;\n metadata?: Record<string, unknown> | null;\n};\n\ntype UploadHooks = {\n onFileReady: (payload: FileHookPayload) => void | Promise<void>;\n onUploadFailed: (payload: FileHookPayload) => void | Promise<void>;\n onFileDeleted: (payload: FileHookPayload) => void | Promise<void>;\n onUploadTimeout: (payload: UploadTimeoutPayload) => void | Promise<void>;\n};\n\ntype UploadServiceContext = DatabaseServiceContext<UploadHooks>;\n\nexport const createFileServices = (_config: UploadFragmentResolvedConfig) => {\n return {\n findFileByKey: function (this: UploadServiceContext, fileKey: FileKeyEncoded) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_key\", (eb) => eb(\"fileKey\", \"=\", fileKey)),\n ),\n )\n .transformRetrieve(([file]) => file ?? null)\n .build();\n },\n\n getFileByKey: function (this: UploadServiceContext, fileKey: FileKeyEncoded) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_key\", (eb) => eb(\"fileKey\", \"=\", fileKey)),\n ),\n )\n .transformRetrieve(([file]) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n return file;\n })\n .build();\n },\n\n listFiles: function (this: UploadServiceContext, input: ListFilesInput) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findWithCursor(\"file\", (b) => {\n const prefix = input.prefix ?? \"\";\n if (input.status && input.uploaderId) {\n const status = input.status;\n const uploaderId = input.uploaderId;\n const query = b.whereIndex(\"idx_file_key_status_uploaderId\", (eb) =>\n eb.and(\n eb(\"fileKey\", \"starts with\", prefix),\n eb(\"status\", \"=\", status),\n eb(\"uploaderId\", \"=\", uploaderId),\n ),\n );\n const ordered = query\n .orderByIndex(\"idx_file_key_status_uploaderId\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n if (input.status) {\n const status = input.status;\n const query = b.whereIndex(\"idx_file_key_status\", (eb) =>\n eb.and(eb(\"fileKey\", \"starts with\", prefix), eb(\"status\", \"=\", status)),\n );\n const ordered = query\n .orderByIndex(\"idx_file_key_status\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n if (input.uploaderId) {\n const uploaderId = input.uploaderId;\n const query = b.whereIndex(\"idx_file_key_uploaderId\", (eb) =>\n eb.and(eb(\"fileKey\", \"starts with\", prefix), eb(\"uploaderId\", \"=\", uploaderId)),\n );\n const ordered = query\n .orderByIndex(\"idx_file_key_uploaderId\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n const query = b.whereIndex(\"idx_file_key\", (eb) =>\n eb(\"fileKey\", \"starts with\", prefix),\n );\n const ordered = query.orderByIndex(\"idx_file_key\", \"asc\").pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }),\n )\n .transformRetrieve(([result]) => result)\n .build();\n },\n\n updateFile: function (\n this: UploadServiceContext,\n fileKey: FileKeyEncoded,\n input: UpdateFileInput,\n ) {\n const now = new Date();\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_key\", (eb) => eb(\"fileKey\", \"=\", fileKey)),\n ),\n )\n .mutate(({ uow, retrieveResult: [file] }) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n\n if (file.status === \"deleted\") {\n throw new Error(\"UPLOAD_INVALID_STATE\");\n }\n\n const updatedFile = {\n ...file,\n filename: input.filename ?? file.filename,\n visibility: (input.visibility ?? file.visibility) as string,\n tags: input.tags ?? file.tags,\n metadata: input.metadata ?? file.metadata,\n updatedAt: now,\n };\n\n uow.update(\"file\", file.id, (b) =>\n b\n .set({\n filename: updatedFile.filename,\n visibility: updatedFile.visibility,\n tags: updatedFile.tags,\n metadata: updatedFile.metadata,\n updatedAt: updatedFile.updatedAt,\n })\n .check(),\n );\n\n return updatedFile;\n })\n .build();\n },\n\n markFileDeleted: function (\n this: UploadServiceContext,\n fileKey: FileKeyEncoded,\n fileKeyParts: FileKeyParts,\n uploadId?: string,\n ) {\n const now = new Date();\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_key\", (eb) => eb(\"fileKey\", \"=\", fileKey)),\n ),\n )\n .mutate(({ uow, retrieveResult: [file] }) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n\n if (file.status === \"deleted\") {\n return file;\n }\n\n const updatedFile = {\n ...file,\n status: \"deleted\" as FileStatus,\n updatedAt: now,\n deletedAt: now,\n };\n\n uow.update(\"file\", file.id, (b) =>\n b\n .set({\n status: updatedFile.status,\n updatedAt: updatedFile.updatedAt,\n deletedAt: updatedFile.deletedAt,\n })\n .check(),\n );\n\n uow.triggerHook(\"onFileDeleted\", {\n fileKey: file.fileKey,\n fileKeyParts,\n uploadId,\n uploaderId: file.uploaderId,\n sizeBytes: Number(file.sizeBytes),\n contentType: file.contentType,\n });\n\n return updatedFile;\n })\n .build();\n },\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { decodeFileKey, encodeFileKey } from "../keys.js";
2
+
3
+ //#region src/services/helpers.ts
4
+ const resolveFileKeyInput = (input) => {
5
+ const { keyParts, fileKey } = input;
6
+ if ((!keyParts || keyParts.length === 0) && (!fileKey || fileKey.length === 0)) throw new Error("INVALID_FILE_KEY");
7
+ if (keyParts && fileKey) {
8
+ let decoded;
9
+ try {
10
+ decoded = decodeFileKey(fileKey);
11
+ } catch {
12
+ throw new Error("INVALID_FILE_KEY");
13
+ }
14
+ if (encodeFileKey(keyParts) !== fileKey) throw new Error("INVALID_FILE_KEY");
15
+ return {
16
+ fileKey,
17
+ fileKeyParts: decoded
18
+ };
19
+ }
20
+ if (keyParts) return {
21
+ fileKey: encodeFileKey(keyParts),
22
+ fileKeyParts: keyParts
23
+ };
24
+ try {
25
+ return {
26
+ fileKey,
27
+ fileKeyParts: decodeFileKey(fileKey)
28
+ };
29
+ } catch {
30
+ throw new Error("INVALID_FILE_KEY");
31
+ }
32
+ };
33
+
34
+ //#endregion
35
+ export { resolveFileKeyInput };
36
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","names":["decoded: FileKeyParts"],"sources":["../../../src/services/helpers.ts"],"sourcesContent":["import { decodeFileKey, encodeFileKey, type FileKeyEncoded, type FileKeyParts } from \"../keys\";\n\nexport type FileKeyInput = {\n keyParts?: FileKeyParts;\n fileKey?: FileKeyEncoded;\n};\n\nexport const resolveFileKeyInput = (\n input: FileKeyInput,\n): {\n fileKey: FileKeyEncoded;\n fileKeyParts: FileKeyParts;\n} => {\n const { keyParts, fileKey } = input;\n\n if ((!keyParts || keyParts.length === 0) && (!fileKey || fileKey.length === 0)) {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n\n if (keyParts && fileKey) {\n let decoded: FileKeyParts;\n try {\n decoded = decodeFileKey(fileKey);\n } catch {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n\n const encoded = encodeFileKey(keyParts);\n if (encoded !== fileKey) {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n\n return { fileKey, fileKeyParts: decoded };\n }\n\n if (keyParts) {\n return { fileKey: encodeFileKey(keyParts), fileKeyParts: keyParts };\n }\n\n try {\n return { fileKey: fileKey!, fileKeyParts: decodeFileKey(fileKey!) };\n } catch {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n};\n"],"mappings":";;;AAOA,MAAa,uBACX,UAIG;CACH,MAAM,EAAE,UAAU,YAAY;AAE9B,MAAK,CAAC,YAAY,SAAS,WAAW,OAAO,CAAC,WAAW,QAAQ,WAAW,GAC1E,OAAM,IAAI,MAAM,mBAAmB;AAGrC,KAAI,YAAY,SAAS;EACvB,IAAIA;AACJ,MAAI;AACF,aAAU,cAAc,QAAQ;UAC1B;AACN,SAAM,IAAI,MAAM,mBAAmB;;AAIrC,MADgB,cAAc,SAAS,KACvB,QACd,OAAM,IAAI,MAAM,mBAAmB;AAGrC,SAAO;GAAE;GAAS,cAAc;GAAS;;AAG3C,KAAI,SACF,QAAO;EAAE,SAAS,cAAc,SAAS;EAAE,cAAc;EAAU;AAGrE,KAAI;AACF,SAAO;GAAW;GAAU,cAAc,cAAc,QAAS;GAAE;SAC7D;AACN,QAAM,IAAI,MAAM,mBAAmB"}
@@ -0,0 +1,4 @@
1
+ import { createUploadServices } from "./uploads.js";
2
+ import { createFileServices } from "./files.js";
3
+
4
+ export { };
@@ -0,0 +1,50 @@
1
+ import { FileKeyEncoded, FileKeyParts } from "../keys.js";
2
+ import { UploadChecksum } from "../storage/types.js";
3
+ import { FileVisibility, UploadStrategy } from "../types.js";
4
+
5
+ //#region src/services/uploads.d.ts
6
+ type CreateUploadInput = {
7
+ keyParts?: FileKeyParts;
8
+ fileKey?: FileKeyEncoded;
9
+ filename: string;
10
+ sizeBytes: number;
11
+ contentType: string;
12
+ checksum?: UploadChecksum | null;
13
+ tags?: string[];
14
+ visibility?: FileVisibility;
15
+ uploaderId?: string;
16
+ metadata?: Record<string, unknown>;
17
+ };
18
+ type UploadProgressInput = {
19
+ bytesUploaded?: number;
20
+ partsUploaded?: number;
21
+ };
22
+ type CompletePartsInput = {
23
+ parts: {
24
+ partNumber: number;
25
+ etag: string;
26
+ sizeBytes: number;
27
+ }[];
28
+ };
29
+ type CreateUploadResult = {
30
+ uploadId: string;
31
+ fileKey: FileKeyEncoded;
32
+ fileKeyParts: FileKeyParts;
33
+ status: "created" | "in_progress";
34
+ strategy: UploadStrategy;
35
+ expiresAt: Date;
36
+ upload: {
37
+ mode: "single" | "multipart";
38
+ transport: "direct" | "proxy";
39
+ uploadUrl?: string;
40
+ uploadHeaders?: Record<string, string>;
41
+ partSizeBytes?: number;
42
+ maxParts?: number;
43
+ partsEndpoint?: string;
44
+ completeEndpoint: string;
45
+ contentEndpoint?: string;
46
+ };
47
+ };
48
+ //#endregion
49
+ export { CompletePartsInput, CreateUploadInput, CreateUploadResult, UploadProgressInput };
50
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","names":[],"sources":["../../../src/services/uploads.ts"],"sourcesContent":[],"mappings":";;;;;AAcY,KAAA,iBAAA,GAAiB;EAAA,QAAA,CAAA,EAChB,YADgB;SAChB,CAAA,EACD,cADC;UACD,EAAA,MAAA;WAIC,EAAA,MAAA;aAEE,EAAA,MAAA;UAEF,CAAA,EAJA,cAIA,GAAA,IAAA;EAAM,IAAA,CAAA,EAAA,MAAA,EAAA;EAGP,UAAA,CAAA,EALG,cAKgB;EAKnB,UAAA,CAAA,EAAA,MAAA;EAIA,QAAA,CAAA,EAZC,MAYD,CAAA,MAAkB,EAAA,OAAA,CAAA;CAAA;AAEnB,KAXC,mBAAA,GAWD;eACK,CAAA,EAAA,MAAA;eAEJ,CAAA,EAAA,MAAA;;AAMQ,KAfR,kBAAA,GAeQ;EAAM,KAAA,EAAA;;;;;;KAXd,kBAAA;;WAED;gBACK;;YAEJ;aACC;;;;;oBAKO"}