@effect-kit/storage 0.0.0-stage → 0.0.0

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 (614) hide show
  1. package/LICENSE +204 -0
  2. package/README.md +369 -2
  3. package/dist/_virtual/_rolldown/runtime.js +17 -0
  4. package/dist/azure/account-admin.d.ts +116 -0
  5. package/dist/azure/account-admin.js +90 -0
  6. package/dist/azure/account-admin.js.map +1 -0
  7. package/dist/azure/admin.d.ts +68 -0
  8. package/dist/azure/admin.js +85 -0
  9. package/dist/azure/admin.js.map +1 -0
  10. package/dist/azure/archive.d.ts +95 -0
  11. package/dist/azure/archive.js +52 -0
  12. package/dist/azure/archive.js.map +1 -0
  13. package/dist/azure/events.d.ts +40 -0
  14. package/dist/azure/events.js +62 -0
  15. package/dist/azure/events.js.map +1 -0
  16. package/dist/azure/governance.d.ts +139 -0
  17. package/dist/azure/governance.js +59 -0
  18. package/dist/azure/governance.js.map +1 -0
  19. package/dist/azure/identity.d.ts +4 -0
  20. package/dist/azure/identity.js +8 -0
  21. package/dist/azure/identity.js.map +1 -0
  22. package/dist/azure/lifecycle.d.ts +21 -0
  23. package/dist/azure/lifecycle.js +193 -0
  24. package/dist/azure/lifecycle.js.map +1 -0
  25. package/dist/azure/signing.d.ts +17 -0
  26. package/dist/azure/signing.js +71 -0
  27. package/dist/azure/signing.js.map +1 -0
  28. package/dist/azure/uploads.d.ts +11 -0
  29. package/dist/azure/uploads.js +83 -0
  30. package/dist/azure/uploads.js.map +1 -0
  31. package/dist/azure.d.ts +427 -0
  32. package/dist/azure.js +77 -0
  33. package/dist/azure.js.map +1 -0
  34. package/dist/b2/admin.d.ts +149 -0
  35. package/dist/b2/admin.js +157 -0
  36. package/dist/b2/admin.js.map +1 -0
  37. package/dist/b2.d.ts +15 -0
  38. package/dist/b2.js +15 -0
  39. package/dist/b2.js.map +1 -0
  40. package/dist/browser.d.ts +7 -0
  41. package/dist/browser.js +11 -0
  42. package/dist/browser.js.map +1 -0
  43. package/dist/bun.d.ts +14 -0
  44. package/dist/bun.js +17 -0
  45. package/dist/bun.js.map +1 -0
  46. package/dist/cache.d.ts +18 -0
  47. package/dist/cache.js +116 -0
  48. package/dist/cache.js.map +1 -0
  49. package/dist/client/atoms/controller.d.ts +10 -0
  50. package/dist/client/atoms/controller.js +267 -0
  51. package/dist/client/atoms/controller.js.map +1 -0
  52. package/dist/client/atoms/state.d.ts +17 -0
  53. package/dist/client/atoms/state.js +11 -0
  54. package/dist/client/atoms/state.js.map +1 -0
  55. package/dist/client/atoms.d.ts +59 -0
  56. package/dist/client/atoms.js +39 -0
  57. package/dist/client/atoms.js.map +1 -0
  58. package/dist/client/fingerprint.js +28 -0
  59. package/dist/client/fingerprint.js.map +1 -0
  60. package/dist/client/store.d.ts +31 -0
  61. package/dist/client/store.js +56 -0
  62. package/dist/client/store.js.map +1 -0
  63. package/dist/client/transport.d.ts +11 -0
  64. package/dist/client/transport.js +78 -0
  65. package/dist/client/transport.js.map +1 -0
  66. package/dist/client.d.ts +259 -0
  67. package/dist/client.js +350 -0
  68. package/dist/client.js.map +1 -0
  69. package/dist/composition/layer.js +22 -0
  70. package/dist/composition/layer.js.map +1 -0
  71. package/dist/composition/representation/staging.js +46 -0
  72. package/dist/composition/representation/staging.js.map +1 -0
  73. package/dist/composition/representation/storage.js +188 -0
  74. package/dist/composition/representation/storage.js.map +1 -0
  75. package/dist/composition.d.ts +20 -0
  76. package/dist/composition.js +124 -0
  77. package/dist/composition.js.map +1 -0
  78. package/dist/compression.d.ts +16 -0
  79. package/dist/compression.js +38 -0
  80. package/dist/compression.js.map +1 -0
  81. package/dist/content.d.ts +590 -0
  82. package/dist/content.js +168 -0
  83. package/dist/content.js.map +1 -0
  84. package/dist/core/capabilities.d.ts +53 -0
  85. package/dist/core/capabilities.js +9 -0
  86. package/dist/core/capabilities.js.map +1 -0
  87. package/dist/core/contracts/multipart.d.ts +56 -0
  88. package/dist/core/contracts/resumable.d.ts +70 -0
  89. package/dist/core/errors.d.ts +55 -0
  90. package/dist/core/errors.js +55 -0
  91. package/dist/core/errors.js.map +1 -0
  92. package/dist/core/object.d.ts +97 -0
  93. package/dist/core/object.js +55 -0
  94. package/dist/core/object.js.map +1 -0
  95. package/dist/core/ranges.d.ts +17 -0
  96. package/dist/core/ranges.js +27 -0
  97. package/dist/core/ranges.js.map +1 -0
  98. package/dist/core/requests.d.ts +185 -0
  99. package/dist/core/requests.js +42 -0
  100. package/dist/core/requests.js.map +1 -0
  101. package/dist/core/storage.d.ts +249 -0
  102. package/dist/core/storage.js +173 -0
  103. package/dist/core/storage.js.map +1 -0
  104. package/dist/deno.d.ts +14 -0
  105. package/dist/deno.js +17 -0
  106. package/dist/deno.js.map +1 -0
  107. package/dist/encryption/age.d.ts +14 -0
  108. package/dist/encryption/age.js +46 -0
  109. package/dist/encryption/age.js.map +1 -0
  110. package/dist/encryption.d.ts +16 -0
  111. package/dist/encryption.js +16 -0
  112. package/dist/encryption.js.map +1 -0
  113. package/dist/events.d.ts +57 -0
  114. package/dist/events.js +106 -0
  115. package/dist/events.js.map +1 -0
  116. package/dist/filesystem.d.ts +23 -0
  117. package/dist/filesystem.js +75 -0
  118. package/dist/filesystem.js.map +1 -0
  119. package/dist/gcs/admin.d.ts +470 -0
  120. package/dist/gcs/admin.js +206 -0
  121. package/dist/gcs/admin.js.map +1 -0
  122. package/dist/gcs/events.d.ts +41 -0
  123. package/dist/gcs/events.js +45 -0
  124. package/dist/gcs/events.js.map +1 -0
  125. package/dist/gcs/governance.d.ts +158 -0
  126. package/dist/gcs/governance.js +100 -0
  127. package/dist/gcs/governance.js.map +1 -0
  128. package/dist/gcs/lifecycle.d.ts +161 -0
  129. package/dist/gcs/lifecycle.js +174 -0
  130. package/dist/gcs/lifecycle.js.map +1 -0
  131. package/dist/gcs/post.d.ts +31 -0
  132. package/dist/gcs/post.js +70 -0
  133. package/dist/gcs/post.js.map +1 -0
  134. package/dist/gcs/signing.d.ts +10 -0
  135. package/dist/gcs/signing.js +61 -0
  136. package/dist/gcs/signing.js.map +1 -0
  137. package/dist/gcs/uploads.d.ts +10 -0
  138. package/dist/gcs/uploads.js +76 -0
  139. package/dist/gcs/uploads.js.map +1 -0
  140. package/dist/gcs.d.ts +888 -0
  141. package/dist/gcs.js +91 -0
  142. package/dist/gcs.js.map +1 -0
  143. package/dist/hetzner/admin.d.ts +112 -0
  144. package/dist/hetzner/admin.js +19 -0
  145. package/dist/hetzner/admin.js.map +1 -0
  146. package/dist/hetzner.d.ts +15 -0
  147. package/dist/hetzner.js +15 -0
  148. package/dist/hetzner.js.map +1 -0
  149. package/dist/http/api.d.ts +236 -0
  150. package/dist/http/api.js +54 -0
  151. package/dist/http/api.js.map +1 -0
  152. package/dist/http/download.js +99 -0
  153. package/dist/http/download.js.map +1 -0
  154. package/dist/http/schema.d.ts +3 -0
  155. package/dist/http/schema.js +4 -0
  156. package/dist/http.d.ts +35 -0
  157. package/dist/http.js +178 -0
  158. package/dist/http.js.map +1 -0
  159. package/dist/index.d.ts +10 -0
  160. package/dist/index.js +9 -0
  161. package/dist/internal/http/control-plane.js +71 -0
  162. package/dist/internal/http/control-plane.js.map +1 -0
  163. package/dist/internal/listing-cursor.js +44 -0
  164. package/dist/internal/listing-cursor.js.map +1 -0
  165. package/dist/internal/node/provider-errors.js +16 -0
  166. package/dist/internal/node/provider-errors.js.map +1 -0
  167. package/dist/internal/node/upload-body.js +111 -0
  168. package/dist/internal/node/upload-body.js.map +1 -0
  169. package/dist/internal/provider-response.js +14 -0
  170. package/dist/internal/provider-response.js.map +1 -0
  171. package/dist/internal/public-urls.js +30 -0
  172. package/dist/internal/public-urls.js.map +1 -0
  173. package/dist/internal/read-condition.js +11 -0
  174. package/dist/internal/read-condition.js.map +1 -0
  175. package/dist/internal/request-validation.js +24 -0
  176. package/dist/internal/request-validation.js.map +1 -0
  177. package/dist/internal/signing-request.js +22 -0
  178. package/dist/internal/signing-request.js.map +1 -0
  179. package/dist/internal/web-upload-body.js +71 -0
  180. package/dist/internal/web-upload-body.js.map +1 -0
  181. package/dist/lifecycle/configuration-state.js +26 -0
  182. package/dist/lifecycle/configuration-state.js.map +1 -0
  183. package/dist/lifecycle/metadata.js +28 -0
  184. package/dist/lifecycle/metadata.js.map +1 -0
  185. package/dist/lifecycle.d.ts +269 -0
  186. package/dist/lifecycle.js +72 -0
  187. package/dist/lifecycle.js.map +1 -0
  188. package/dist/migrations.d.ts +537 -0
  189. package/dist/migrations.js +296 -0
  190. package/dist/migrations.js.map +1 -0
  191. package/dist/minio/admin.d.ts +112 -0
  192. package/dist/minio/admin.js +19 -0
  193. package/dist/minio/admin.js.map +1 -0
  194. package/dist/minio.d.ts +15 -0
  195. package/dist/minio.js +15 -0
  196. package/dist/minio.js.map +1 -0
  197. package/dist/mirror.d.ts +830 -0
  198. package/dist/mirror.js +290 -0
  199. package/dist/mirror.js.map +1 -0
  200. package/dist/node.d.ts +14 -0
  201. package/dist/node.js +17 -0
  202. package/dist/node.js.map +1 -0
  203. package/dist/providers/azure/blocks.js +94 -0
  204. package/dist/providers/azure/blocks.js.map +1 -0
  205. package/dist/providers/azure/config.d.ts +41 -0
  206. package/dist/providers/azure/config.js +62 -0
  207. package/dist/providers/azure/config.js.map +1 -0
  208. package/dist/providers/azure/mapping.js +83 -0
  209. package/dist/providers/azure/mapping.js.map +1 -0
  210. package/dist/providers/azure/native.js +88 -0
  211. package/dist/providers/azure/native.js.map +1 -0
  212. package/dist/providers/azure/primitives.js +203 -0
  213. package/dist/providers/azure/primitives.js.map +1 -0
  214. package/dist/providers/azure/properties.d.ts +180 -0
  215. package/dist/providers/azure/properties.js +55 -0
  216. package/dist/providers/azure/properties.js.map +1 -0
  217. package/dist/providers/azure/transport.js +14 -0
  218. package/dist/providers/azure/transport.js.map +1 -0
  219. package/dist/providers/azure/validation.js +11 -0
  220. package/dist/providers/azure/validation.js.map +1 -0
  221. package/dist/providers/filesystem/envelope.js +56 -0
  222. package/dist/providers/filesystem/envelope.js.map +1 -0
  223. package/dist/providers/filesystem/identity.js +68 -0
  224. package/dist/providers/filesystem/identity.js.map +1 -0
  225. package/dist/providers/filesystem/layout.d.ts +15 -0
  226. package/dist/providers/filesystem/layout.js +112 -0
  227. package/dist/providers/filesystem/layout.js.map +1 -0
  228. package/dist/providers/filesystem/list.js +82 -0
  229. package/dist/providers/filesystem/list.js.map +1 -0
  230. package/dist/providers/filesystem/operations.js +134 -0
  231. package/dist/providers/filesystem/operations.js.map +1 -0
  232. package/dist/providers/gcs/config.d.ts +34 -0
  233. package/dist/providers/gcs/config.js +60 -0
  234. package/dist/providers/gcs/config.js.map +1 -0
  235. package/dist/providers/gcs/iam.js +45 -0
  236. package/dist/providers/gcs/iam.js.map +1 -0
  237. package/dist/providers/gcs/mapping.js +118 -0
  238. package/dist/providers/gcs/mapping.js.map +1 -0
  239. package/dist/providers/gcs/native.d.ts +11 -0
  240. package/dist/providers/gcs/native.js +122 -0
  241. package/dist/providers/gcs/native.js.map +1 -0
  242. package/dist/providers/gcs/primitives.js +194 -0
  243. package/dist/providers/gcs/primitives.js.map +1 -0
  244. package/dist/providers/gcs/resumable.js +145 -0
  245. package/dist/providers/gcs/resumable.js.map +1 -0
  246. package/dist/providers/gcs/tier.d.ts +176 -0
  247. package/dist/providers/gcs/tier.js +34 -0
  248. package/dist/providers/gcs/tier.js.map +1 -0
  249. package/dist/providers/gcs/transport.js +123 -0
  250. package/dist/providers/gcs/transport.js.map +1 -0
  251. package/dist/providers/gcs/upload.js +28 -0
  252. package/dist/providers/gcs/upload.js.map +1 -0
  253. package/dist/providers/gcs/validation.js +10 -0
  254. package/dist/providers/gcs/validation.js.map +1 -0
  255. package/dist/providers/r2-workers/binding.d.ts +102 -0
  256. package/dist/providers/r2-workers/body.js +82 -0
  257. package/dist/providers/r2-workers/body.js.map +1 -0
  258. package/dist/providers/r2-workers/list.js +62 -0
  259. package/dist/providers/r2-workers/list.js.map +1 -0
  260. package/dist/providers/r2-workers/mapping.js +140 -0
  261. package/dist/providers/r2-workers/mapping.js.map +1 -0
  262. package/dist/providers/r2-workers/multipart.js +121 -0
  263. package/dist/providers/r2-workers/multipart.js.map +1 -0
  264. package/dist/providers/r2-workers/primitives.js +80 -0
  265. package/dist/providers/r2-workers/primitives.js.map +1 -0
  266. package/dist/providers/s3/admin-configuration.d.ts +19 -0
  267. package/dist/providers/s3/admin-configuration.js +171 -0
  268. package/dist/providers/s3/admin-configuration.js.map +1 -0
  269. package/dist/providers/s3/bulk-delete.d.ts +43 -0
  270. package/dist/providers/s3/bulk-delete.js +58 -0
  271. package/dist/providers/s3/bulk-delete.js.map +1 -0
  272. package/dist/providers/s3/config.d.ts +43 -0
  273. package/dist/providers/s3/config.js +89 -0
  274. package/dist/providers/s3/config.js.map +1 -0
  275. package/dist/providers/s3/copy.d.ts +115 -0
  276. package/dist/providers/s3/copy.js +122 -0
  277. package/dist/providers/s3/copy.js.map +1 -0
  278. package/dist/providers/s3/lifecycle-validation.js +33 -0
  279. package/dist/providers/s3/lifecycle-validation.js.map +1 -0
  280. package/dist/providers/s3/listing.js +56 -0
  281. package/dist/providers/s3/listing.js.map +1 -0
  282. package/dist/providers/s3/metadata.d.ts +10 -0
  283. package/dist/providers/s3/metadata.js +90 -0
  284. package/dist/providers/s3/metadata.js.map +1 -0
  285. package/dist/providers/s3/multipart.d.ts +41 -0
  286. package/dist/providers/s3/multipart.js +299 -0
  287. package/dist/providers/s3/multipart.js.map +1 -0
  288. package/dist/providers/s3/native-models.d.ts +82 -0
  289. package/dist/providers/s3/native-models.js +91 -0
  290. package/dist/providers/s3/native-models.js.map +1 -0
  291. package/dist/providers/s3/object-mapping.js +114 -0
  292. package/dist/providers/s3/object-mapping.js.map +1 -0
  293. package/dist/providers/s3/primitives.d.ts +8 -0
  294. package/dist/providers/s3/primitives.js +235 -0
  295. package/dist/providers/s3/primitives.js.map +1 -0
  296. package/dist/providers/s3/profile.d.ts +25 -0
  297. package/dist/providers/s3/profile.js +46 -0
  298. package/dist/providers/s3/profile.js.map +1 -0
  299. package/dist/providers/s3/request-extension.js +29 -0
  300. package/dist/providers/s3/request-extension.js.map +1 -0
  301. package/dist/providers/s3/service.js +55 -0
  302. package/dist/providers/s3/service.js.map +1 -0
  303. package/dist/providers/s3/signing-credentials.js +32 -0
  304. package/dist/providers/s3/signing-credentials.js.map +1 -0
  305. package/dist/providers/s3/tags.d.ts +10 -0
  306. package/dist/providers/s3/tags.js +65 -0
  307. package/dist/providers/s3/tags.js.map +1 -0
  308. package/dist/providers/s3/tier.d.ts +171 -0
  309. package/dist/providers/s3/tier.js +100 -0
  310. package/dist/providers/s3/tier.js.map +1 -0
  311. package/dist/providers/s3/transfer-driver.js +72 -0
  312. package/dist/providers/s3/transfer-driver.js.map +1 -0
  313. package/dist/providers/s3/transport.js +94 -0
  314. package/dist/providers/s3/transport.js.map +1 -0
  315. package/dist/providers/s3/upload-body.js +10 -0
  316. package/dist/providers/s3/upload-body.js.map +1 -0
  317. package/dist/providers/s3/validation.js +31 -0
  318. package/dist/providers/s3/validation.js.map +1 -0
  319. package/dist/providers/s3/versions.d.ts +10 -0
  320. package/dist/providers/s3/versions.js +143 -0
  321. package/dist/providers/s3/versions.js.map +1 -0
  322. package/dist/providers/s3-compatible/config.d.ts +36 -0
  323. package/dist/providers/s3-compatible/config.js +174 -0
  324. package/dist/providers/s3-compatible/config.js.map +1 -0
  325. package/dist/providers/s3-compatible/service.js +48 -0
  326. package/dist/providers/s3-compatible/service.js.map +1 -0
  327. package/dist/providers/supabase/config.d.ts +20 -0
  328. package/dist/providers/supabase/config.js +41 -0
  329. package/dist/providers/supabase/config.js.map +1 -0
  330. package/dist/providers/supabase/mapping.js +60 -0
  331. package/dist/providers/supabase/mapping.js.map +1 -0
  332. package/dist/providers/supabase/primitives.js +205 -0
  333. package/dist/providers/supabase/primitives.js.map +1 -0
  334. package/dist/providers/supabase/transport.js +64 -0
  335. package/dist/providers/supabase/transport.js.map +1 -0
  336. package/dist/providers/supabase/tus.js +163 -0
  337. package/dist/providers/supabase/tus.js.map +1 -0
  338. package/dist/providers/tigris/configuration.js +118 -0
  339. package/dist/providers/tigris/configuration.js.map +1 -0
  340. package/dist/providers/tigris/snapshots.js +87 -0
  341. package/dist/providers/tigris/snapshots.js.map +1 -0
  342. package/dist/providers/tigris/transport.js +18 -0
  343. package/dist/providers/tigris/transport.js.map +1 -0
  344. package/dist/providers/vercel/config.d.ts +16 -0
  345. package/dist/providers/vercel/config.js +48 -0
  346. package/dist/providers/vercel/config.js.map +1 -0
  347. package/dist/providers/vercel/mapping.js +79 -0
  348. package/dist/providers/vercel/mapping.js.map +1 -0
  349. package/dist/providers/vercel/multipart.js +113 -0
  350. package/dist/providers/vercel/multipart.js.map +1 -0
  351. package/dist/providers/vercel/primitives.js +168 -0
  352. package/dist/providers/vercel/primitives.js.map +1 -0
  353. package/dist/providers/vercel/transport.js +32 -0
  354. package/dist/providers/vercel/transport.js.map +1 -0
  355. package/dist/providers/wasabi/compliance.d.ts +52 -0
  356. package/dist/providers/wasabi/compliance.js +89 -0
  357. package/dist/providers/wasabi/compliance.js.map +1 -0
  358. package/dist/providers/wasabi/xml.js +55 -0
  359. package/dist/providers/wasabi/xml.js.map +1 -0
  360. package/dist/r2/admin.d.ts +126 -0
  361. package/dist/r2/admin.js +138 -0
  362. package/dist/r2/admin.js.map +1 -0
  363. package/dist/r2/events.d.ts +41 -0
  364. package/dist/r2/events.js +37 -0
  365. package/dist/r2/events.js.map +1 -0
  366. package/dist/r2-workers.d.ts +24 -0
  367. package/dist/r2-workers.js +115 -0
  368. package/dist/r2-workers.js.map +1 -0
  369. package/dist/r2.d.ts +15 -0
  370. package/dist/r2.js +15 -0
  371. package/dist/r2.js.map +1 -0
  372. package/dist/react.d.ts +73 -0
  373. package/dist/react.js +49 -0
  374. package/dist/react.js.map +1 -0
  375. package/dist/representation.d.ts +24 -0
  376. package/dist/representation.js +7 -0
  377. package/dist/representation.js.map +1 -0
  378. package/dist/runtime/bun-filesystem.js +136 -0
  379. package/dist/runtime/bun-filesystem.js.map +1 -0
  380. package/dist/runtime/file-target.d.ts +10 -0
  381. package/dist/runtime/file-target.js +66 -0
  382. package/dist/runtime/file-target.js.map +1 -0
  383. package/dist/runtime/filesystem.d.ts +6 -0
  384. package/dist/runtime/filesystem.js +68 -0
  385. package/dist/runtime/filesystem.js.map +1 -0
  386. package/dist/runtime/node-hash.d.ts +4 -0
  387. package/dist/runtime/node-hash.js +31 -0
  388. package/dist/runtime/node-hash.js.map +1 -0
  389. package/dist/runtime/node-protection.d.ts +4 -0
  390. package/dist/runtime/node-protection.js +46 -0
  391. package/dist/runtime/node-protection.js.map +1 -0
  392. package/dist/runtime/portable-hash.d.ts +3 -0
  393. package/dist/runtime/portable-hash.js +31 -0
  394. package/dist/runtime/portable-hash.js.map +1 -0
  395. package/dist/runtime/session-store.d.ts +12 -0
  396. package/dist/runtime/session-store.js +19 -0
  397. package/dist/runtime/session-store.js.map +1 -0
  398. package/dist/runtime/web-protection.d.ts +7 -0
  399. package/dist/runtime/web-protection.js +54 -0
  400. package/dist/runtime/web-protection.js.map +1 -0
  401. package/dist/s3/admin.d.ts +183 -0
  402. package/dist/s3/admin.js +197 -0
  403. package/dist/s3/admin.js.map +1 -0
  404. package/dist/s3/archive.d.ts +25 -0
  405. package/dist/s3/archive.js +113 -0
  406. package/dist/s3/archive.js.map +1 -0
  407. package/dist/s3/events.d.ts +42 -0
  408. package/dist/s3/events.js +69 -0
  409. package/dist/s3/events.js.map +1 -0
  410. package/dist/s3/governance.d.ts +319 -0
  411. package/dist/s3/governance.js +108 -0
  412. package/dist/s3/governance.js.map +1 -0
  413. package/dist/s3/lifecycle.d.ts +4 -0
  414. package/dist/s3/lifecycle.js +5 -0
  415. package/dist/s3/post.d.ts +31 -0
  416. package/dist/s3/post.js +93 -0
  417. package/dist/s3/post.js.map +1 -0
  418. package/dist/s3/signing.d.ts +105 -0
  419. package/dist/s3/signing.js +198 -0
  420. package/dist/s3/signing.js.map +1 -0
  421. package/dist/s3/uploads.d.ts +11 -0
  422. package/dist/s3/uploads.js +173 -0
  423. package/dist/s3/uploads.js.map +1 -0
  424. package/dist/s3.d.ts +37 -0
  425. package/dist/s3.js +114 -0
  426. package/dist/s3.js.map +1 -0
  427. package/dist/scaleway/admin.d.ts +112 -0
  428. package/dist/scaleway/admin.js +19 -0
  429. package/dist/scaleway/admin.js.map +1 -0
  430. package/dist/scaleway.d.ts +15 -0
  431. package/dist/scaleway.js +15 -0
  432. package/dist/scaleway.js.map +1 -0
  433. package/dist/session-events.d.ts +22 -0
  434. package/dist/session-events.js +22 -0
  435. package/dist/session-events.js.map +1 -0
  436. package/dist/sessions/checkpoint.d.ts +423 -0
  437. package/dist/sessions/checkpoint.js +102 -0
  438. package/dist/sessions/checkpoint.js.map +1 -0
  439. package/dist/sessions/download.d.ts +17 -0
  440. package/dist/sessions/download.js +111 -0
  441. package/dist/sessions/download.js.map +1 -0
  442. package/dist/sessions/native-upload.js +168 -0
  443. package/dist/sessions/native-upload.js.map +1 -0
  444. package/dist/sessions/store.d.ts +40 -0
  445. package/dist/sessions/store.js +77 -0
  446. package/dist/sessions/store.js.map +1 -0
  447. package/dist/sessions/upload.d.ts +10 -0
  448. package/dist/sessions/upload.js +329 -0
  449. package/dist/sessions/upload.js.map +1 -0
  450. package/dist/sessions.d.ts +98 -0
  451. package/dist/sessions.js +268 -0
  452. package/dist/sessions.js.map +1 -0
  453. package/dist/spaces/admin.d.ts +112 -0
  454. package/dist/spaces/admin.js +19 -0
  455. package/dist/spaces/admin.js.map +1 -0
  456. package/dist/spaces.d.ts +15 -0
  457. package/dist/spaces.js +15 -0
  458. package/dist/spaces.js.map +1 -0
  459. package/dist/supabase/admin.d.ts +77 -0
  460. package/dist/supabase/admin.js +74 -0
  461. package/dist/supabase/admin.js.map +1 -0
  462. package/dist/supabase/s3.d.ts +311 -0
  463. package/dist/supabase/s3.js +153 -0
  464. package/dist/supabase/s3.js.map +1 -0
  465. package/dist/supabase/signing.d.ts +23 -0
  466. package/dist/supabase/signing.js +93 -0
  467. package/dist/supabase/signing.js.map +1 -0
  468. package/dist/supabase/tus-uploads.d.ts +13 -0
  469. package/dist/supabase/tus-uploads.js +109 -0
  470. package/dist/supabase/tus-uploads.js.map +1 -0
  471. package/dist/supabase/uploads.d.ts +5 -0
  472. package/dist/supabase/uploads.js +32 -0
  473. package/dist/supabase/uploads.js.map +1 -0
  474. package/dist/supabase.d.ts +100 -0
  475. package/dist/supabase.js +50 -0
  476. package/dist/supabase.js.map +1 -0
  477. package/dist/testing/body-failure.js +18 -0
  478. package/dist/testing/body-failure.js.map +1 -0
  479. package/dist/testing/conformance/assertions.d.ts +10 -0
  480. package/dist/testing/conformance/assertions.js +21 -0
  481. package/dist/testing/conformance/assertions.js.map +1 -0
  482. package/dist/testing/conformance/core-cases.js +107 -0
  483. package/dist/testing/conformance/core-cases.js.map +1 -0
  484. package/dist/testing/conformance/list-cases.js +72 -0
  485. package/dist/testing/conformance/list-cases.js.map +1 -0
  486. package/dist/testing/conformance/read-cases.js +105 -0
  487. package/dist/testing/conformance/read-cases.js.map +1 -0
  488. package/dist/testing/conformance.d.ts +23 -0
  489. package/dist/testing/conformance.js +37 -0
  490. package/dist/testing/conformance.js.map +1 -0
  491. package/dist/testing/faults.d.ts +258 -0
  492. package/dist/testing/faults.js +111 -0
  493. package/dist/testing/faults.js.map +1 -0
  494. package/dist/testing/memory-list.js +79 -0
  495. package/dist/testing/memory-list.js.map +1 -0
  496. package/dist/testing/memory-state.d.ts +18 -0
  497. package/dist/testing/memory-state.js +57 -0
  498. package/dist/testing/memory-state.js.map +1 -0
  499. package/dist/testing/memory-upload.js +123 -0
  500. package/dist/testing/memory-upload.js.map +1 -0
  501. package/dist/testing/memory.d.ts +23 -0
  502. package/dist/testing/memory.js +121 -0
  503. package/dist/testing/memory.js.map +1 -0
  504. package/dist/testing.d.ts +6 -0
  505. package/dist/testing.js +6 -0
  506. package/dist/tigris/events.d.ts +42 -0
  507. package/dist/tigris/events.js +42 -0
  508. package/dist/tigris/events.js.map +1 -0
  509. package/dist/tigris/native.d.ts +438 -0
  510. package/dist/tigris/native.js +166 -0
  511. package/dist/tigris/native.js.map +1 -0
  512. package/dist/tigris.d.ts +15 -0
  513. package/dist/tigris.js +15 -0
  514. package/dist/tigris.js.map +1 -0
  515. package/dist/transfers/budget.js +50 -0
  516. package/dist/transfers/budget.js.map +1 -0
  517. package/dist/transfers/copy.js +250 -0
  518. package/dist/transfers/copy.js.map +1 -0
  519. package/dist/transfers/dependencies.d.ts +10 -0
  520. package/dist/transfers/dependencies.js +11 -0
  521. package/dist/transfers/dependencies.js.map +1 -0
  522. package/dist/transfers/download.js +132 -0
  523. package/dist/transfers/download.js.map +1 -0
  524. package/dist/transfers/managed-runtime.d.ts +34 -0
  525. package/dist/transfers/managed-runtime.js +30 -0
  526. package/dist/transfers/managed-runtime.js.map +1 -0
  527. package/dist/transfers/models.d.ts +160 -0
  528. package/dist/transfers/native-upload.js +195 -0
  529. package/dist/transfers/native-upload.js.map +1 -0
  530. package/dist/transfers/part-receipts.js +32 -0
  531. package/dist/transfers/part-receipts.js.map +1 -0
  532. package/dist/transfers/planner.d.ts +19 -0
  533. package/dist/transfers/planner.js +153 -0
  534. package/dist/transfers/planner.js.map +1 -0
  535. package/dist/transfers/reader.js +81 -0
  536. package/dist/transfers/reader.js.map +1 -0
  537. package/dist/transfers/runtime.d.ts +19 -0
  538. package/dist/transfers/runtime.js +132 -0
  539. package/dist/transfers/runtime.js.map +1 -0
  540. package/dist/transfers/sources.d.ts +22 -0
  541. package/dist/transfers/sources.js +83 -0
  542. package/dist/transfers/sources.js.map +1 -0
  543. package/dist/transfers/upload.js +235 -0
  544. package/dist/transfers/upload.js.map +1 -0
  545. package/dist/transfers.d.ts +31 -0
  546. package/dist/transfers.js +82 -0
  547. package/dist/transfers.js.map +1 -0
  548. package/dist/uploads/driver.d.ts +22 -0
  549. package/dist/uploads/driver.js +18 -0
  550. package/dist/uploads/driver.js.map +1 -0
  551. package/dist/uploads/policy.d.ts +39 -0
  552. package/dist/uploads/schema.d.ts +278 -0
  553. package/dist/uploads/schema.js +167 -0
  554. package/dist/uploads/schema.js.map +1 -0
  555. package/dist/uploads/signed-driver.d.ts +8 -0
  556. package/dist/uploads/signed-driver.js +36 -0
  557. package/dist/uploads/signed-driver.js.map +1 -0
  558. package/dist/uploads/store.d.ts +26 -0
  559. package/dist/uploads/store.js +51 -0
  560. package/dist/uploads/store.js.map +1 -0
  561. package/dist/uploads/verification.js +86 -0
  562. package/dist/uploads/verification.js.map +1 -0
  563. package/dist/uploads.d.ts +518 -0
  564. package/dist/uploads.js +330 -0
  565. package/dist/uploads.js.map +1 -0
  566. package/dist/vercel/authorized-uploads.d.ts +7 -0
  567. package/dist/vercel/authorized-uploads.js +15 -0
  568. package/dist/vercel/authorized-uploads.js.map +1 -0
  569. package/dist/vercel/client.d.ts +16 -0
  570. package/dist/vercel/client.js +28 -0
  571. package/dist/vercel/client.js.map +1 -0
  572. package/dist/vercel/signing.d.ts +19 -0
  573. package/dist/vercel/signing.js +120 -0
  574. package/dist/vercel/signing.js.map +1 -0
  575. package/dist/vercel/uploads.d.ts +36 -0
  576. package/dist/vercel/uploads.js +161 -0
  577. package/dist/vercel/uploads.js.map +1 -0
  578. package/dist/vercel.d.ts +86 -0
  579. package/dist/vercel.js +46 -0
  580. package/dist/vercel.js.map +1 -0
  581. package/dist/wasabi/admin.d.ts +112 -0
  582. package/dist/wasabi/admin.js +19 -0
  583. package/dist/wasabi/admin.js.map +1 -0
  584. package/dist/wasabi/native.d.ts +200 -0
  585. package/dist/wasabi/native.js +132 -0
  586. package/dist/wasabi/native.js.map +1 -0
  587. package/dist/wasabi.d.ts +15 -0
  588. package/dist/wasabi.js +15 -0
  589. package/dist/wasabi.js.map +1 -0
  590. package/dist/workflows/content/collection.js +122 -0
  591. package/dist/workflows/content/collection.js.map +1 -0
  592. package/dist/workflows/content/references.js +113 -0
  593. package/dist/workflows/content/references.js.map +1 -0
  594. package/dist/workflows/content/schema.d.ts +58 -0
  595. package/dist/workflows/content/schema.js +64 -0
  596. package/dist/workflows/content/schema.js.map +1 -0
  597. package/dist/workflows/endpoint.js +16 -0
  598. package/dist/workflows/endpoint.js.map +1 -0
  599. package/dist/workflows/migrations/schema.d.ts +149 -0
  600. package/dist/workflows/migrations/schema.js +58 -0
  601. package/dist/workflows/migrations/schema.js.map +1 -0
  602. package/dist/workflows/mirror/operations.js +175 -0
  603. package/dist/workflows/mirror/operations.js.map +1 -0
  604. package/dist/workflows/mirror/schema.d.ts +68 -0
  605. package/dist/workflows/mirror/schema.js +57 -0
  606. package/dist/workflows/mirror/schema.js.map +1 -0
  607. package/dist/workflows/mirror/view.js +103 -0
  608. package/dist/workflows/mirror/view.js.map +1 -0
  609. package/dist/workflows/objects.js +54 -0
  610. package/dist/workflows/objects.js.map +1 -0
  611. package/dist/workflows/store.d.ts +13 -0
  612. package/dist/workflows/store.js +58 -0
  613. package/dist/workflows/store.js.map +1 -0
  614. package/package.json +513 -3
@@ -0,0 +1,278 @@
1
+ import { ObjectRef } from "../core/object.js";
2
+ import { Schema } from "effect";
3
+ export declare const UploadId: Schema.String;
4
+ export declare const UploadActor: Schema.Struct<{
5
+ readonly subject: Schema.NonEmptyString;
6
+ readonly tenantId: Schema.optional<Schema.NonEmptyString>;
7
+ }>;
8
+ export type UploadActor = typeof UploadActor.Type;
9
+ export declare const UploadFile: Schema.Struct<{
10
+ readonly name: Schema.String;
11
+ readonly size: Schema.Natural;
12
+ readonly contentType: Schema.String;
13
+ readonly sha256: Schema.String;
14
+ }>;
15
+ export declare const UploadInput: Schema.Struct<{
16
+ readonly purpose: Schema.NonEmptyString;
17
+ readonly file: Schema.Struct<{
18
+ readonly name: Schema.String;
19
+ readonly size: Schema.Natural;
20
+ readonly contentType: Schema.String;
21
+ readonly sha256: Schema.String;
22
+ }>;
23
+ readonly context: Schema.$Record<Schema.String, Schema.String>;
24
+ readonly strategy: Schema.optional<Schema.Literals<readonly ["auto", "single", "post", "multipart", "resumable", "proxy"]>>;
25
+ }>;
26
+ export type UploadInput = typeof UploadInput.Type;
27
+ export declare const UploadRequest: Schema.Struct<{
28
+ readonly version: Schema.Literal<1>;
29
+ readonly idempotencyKey: Schema.String;
30
+ readonly input: Schema.Struct<{
31
+ readonly purpose: Schema.NonEmptyString;
32
+ readonly file: Schema.Struct<{
33
+ readonly name: Schema.String;
34
+ readonly size: Schema.Natural;
35
+ readonly contentType: Schema.String;
36
+ readonly sha256: Schema.String;
37
+ }>;
38
+ readonly context: Schema.$Record<Schema.String, Schema.String>;
39
+ readonly strategy: Schema.optional<Schema.Literals<readonly ["auto", "single", "post", "multipart", "resumable", "proxy"]>>;
40
+ }>;
41
+ }>;
42
+ export declare const UploadErrorCode: Schema.Literals<readonly ["BadRequest", "Unauthorized", "Forbidden", "NotFound", "Conflict", "Expired", "Unsupported", "VerificationFailed", "Unavailable"]>;
43
+ declare const UploadError_base: Schema.Class<UploadError, Schema.TaggedStruct<"UploadError", {
44
+ readonly code: Schema.Literals<readonly ["BadRequest", "Unauthorized", "Forbidden", "NotFound", "Conflict", "Expired", "Unsupported", "VerificationFailed", "Unavailable"]>;
45
+ }>, import("effect/Cause").YieldableError>;
46
+ export declare class UploadError extends UploadError_base {}
47
+ export declare const failUpload: (code: typeof UploadErrorCode.Type) => UploadError;
48
+ export declare const UploadState: Schema.Literals<readonly ["reserving", "ready", "initiating", "uploading", "verifying", "publishing", "published", "aborted", "rejected"]>;
49
+ export declare const UploadStatus: Schema.Struct<{
50
+ readonly version: Schema.Literal<1>;
51
+ readonly id: Schema.String;
52
+ readonly state: Schema.Literals<readonly ["reserving", "ready", "initiating", "uploading", "verifying", "publishing", "published", "aborted", "rejected"]>;
53
+ readonly expiresAt: Schema.Number;
54
+ readonly cleanupPending: Schema.Boolean;
55
+ readonly result: Schema.optional<Schema.Unknown>;
56
+ }>;
57
+ export type UploadStatus = typeof UploadStatus.Type;
58
+ export declare const UploadGrant: Schema.Union<readonly [Schema.Struct<{
59
+ readonly _tag: Schema.Literal<"SignedRequest">;
60
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
61
+ readonly kind: Schema.String;
62
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
63
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
64
+ }>>>;
65
+ readonly method: Schema.Literal<"PUT">;
66
+ readonly url: Schema.String;
67
+ readonly headers: Schema.$Record<Schema.String, Schema.String>;
68
+ readonly expiresAt: Schema.Number;
69
+ readonly partReceipt: Schema.optional<Schema.String>;
70
+ }>, Schema.Struct<{
71
+ readonly _tag: Schema.Literal<"PostForm">;
72
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
73
+ readonly kind: Schema.String;
74
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
75
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
76
+ }>>>;
77
+ readonly url: Schema.String;
78
+ readonly fields: Schema.$Record<Schema.String, Schema.String>;
79
+ readonly expiresAt: Schema.Number;
80
+ }>, Schema.Struct<{
81
+ readonly _tag: Schema.Literal<"Multipart">;
82
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
83
+ readonly kind: Schema.String;
84
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
85
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
86
+ }>>>;
87
+ readonly partBytes: Schema.Int;
88
+ readonly checksum: Schema.optional<Schema.Literal<"sha256">>;
89
+ readonly expiresAt: Schema.Number;
90
+ readonly completed: Schema.$Array<Schema.Struct<{
91
+ readonly partNumber: Schema.Natural;
92
+ readonly etag: Schema.String;
93
+ }>>;
94
+ }>, Schema.Struct<{
95
+ readonly _tag: Schema.Literal<"Blocks">;
96
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
97
+ readonly kind: Schema.String;
98
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
99
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
100
+ }>>>;
101
+ readonly partBytes: Schema.Int;
102
+ readonly completed: Schema.$Array<Schema.Natural>;
103
+ readonly expiresAt: Schema.Number;
104
+ }>, Schema.Struct<{
105
+ readonly _tag: Schema.Literal<"Resumable">;
106
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
107
+ readonly kind: Schema.String;
108
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
109
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
110
+ }>>>;
111
+ readonly protocol: Schema.Literals<readonly ["gcs", "tus"]>;
112
+ readonly url: Schema.String;
113
+ readonly headers: Schema.$Record<Schema.String, Schema.String>;
114
+ readonly offset: Schema.Natural;
115
+ readonly chunkBytes: Schema.Int;
116
+ readonly expiresAt: Schema.Number;
117
+ }>, Schema.Struct<{
118
+ readonly _tag: Schema.Literal<"Proxy">;
119
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
120
+ readonly kind: Schema.String;
121
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
122
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
123
+ }>>>;
124
+ readonly expiresAt: Schema.Number;
125
+ }>]>;
126
+ export type UploadGrant = typeof UploadGrant.Type;
127
+ export declare const GrantResponse: Schema.Struct<{
128
+ readonly version: Schema.Literal<1>;
129
+ readonly id: Schema.String;
130
+ readonly grant: Schema.Union<readonly [Schema.Struct<{
131
+ readonly _tag: Schema.Literal<"SignedRequest">;
132
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
133
+ readonly kind: Schema.String;
134
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
135
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
136
+ }>>>;
137
+ readonly method: Schema.Literal<"PUT">;
138
+ readonly url: Schema.String;
139
+ readonly headers: Schema.$Record<Schema.String, Schema.String>;
140
+ readonly expiresAt: Schema.Number;
141
+ readonly partReceipt: Schema.optional<Schema.String>;
142
+ }>, Schema.Struct<{
143
+ readonly _tag: Schema.Literal<"PostForm">;
144
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
145
+ readonly kind: Schema.String;
146
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
147
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
148
+ }>>>;
149
+ readonly url: Schema.String;
150
+ readonly fields: Schema.$Record<Schema.String, Schema.String>;
151
+ readonly expiresAt: Schema.Number;
152
+ }>, Schema.Struct<{
153
+ readonly _tag: Schema.Literal<"Multipart">;
154
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
155
+ readonly kind: Schema.String;
156
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
157
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
158
+ }>>>;
159
+ readonly partBytes: Schema.Int;
160
+ readonly checksum: Schema.optional<Schema.Literal<"sha256">>;
161
+ readonly expiresAt: Schema.Number;
162
+ readonly completed: Schema.$Array<Schema.Struct<{
163
+ readonly partNumber: Schema.Natural;
164
+ readonly etag: Schema.String;
165
+ }>>;
166
+ }>, Schema.Struct<{
167
+ readonly _tag: Schema.Literal<"Blocks">;
168
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
169
+ readonly kind: Schema.String;
170
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
171
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
172
+ }>>>;
173
+ readonly partBytes: Schema.Int;
174
+ readonly completed: Schema.$Array<Schema.Natural>;
175
+ readonly expiresAt: Schema.Number;
176
+ }>, Schema.Struct<{
177
+ readonly _tag: Schema.Literal<"Resumable">;
178
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
179
+ readonly kind: Schema.String;
180
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
181
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
182
+ }>>>;
183
+ readonly protocol: Schema.Literals<readonly ["gcs", "tus"]>;
184
+ readonly url: Schema.String;
185
+ readonly headers: Schema.$Record<Schema.String, Schema.String>;
186
+ readonly offset: Schema.Natural;
187
+ readonly chunkBytes: Schema.Int;
188
+ readonly expiresAt: Schema.Number;
189
+ }>, Schema.Struct<{
190
+ readonly _tag: Schema.Literal<"Proxy">;
191
+ readonly constraints: Schema.optional<Schema.$Array<Schema.Struct<{
192
+ readonly kind: Schema.String;
193
+ readonly enforcement: Schema.Literals<readonly ["provider", "backend", "advisory"]>;
194
+ readonly value: Schema.Union<readonly [Schema.String, Schema.Number]>;
195
+ }>>>;
196
+ readonly expiresAt: Schema.Number;
197
+ }>]>;
198
+ }>;
199
+ export declare const PartRequest: Schema.Struct<{
200
+ readonly sha256: Schema.optional<Schema.String>;
201
+ readonly partNumber: Schema.Int;
202
+ }>;
203
+ export declare const PartsRequest: Schema.Struct<{
204
+ readonly parts: Schema.$Array<Schema.Struct<{
205
+ readonly partNumber: Schema.Int;
206
+ readonly receipt: Schema.NonEmptyString;
207
+ }>>;
208
+ }>;
209
+ export declare const UploadRecord: Schema.Struct<{
210
+ readonly version: Schema.Literal<1>;
211
+ readonly id: Schema.String;
212
+ readonly actor: Schema.Struct<{
213
+ readonly subject: Schema.NonEmptyString;
214
+ readonly tenantId: Schema.optional<Schema.NonEmptyString>;
215
+ }>;
216
+ readonly input: Schema.Struct<{
217
+ readonly purpose: Schema.NonEmptyString;
218
+ readonly file: Schema.Struct<{
219
+ readonly name: Schema.String;
220
+ readonly size: Schema.Natural;
221
+ readonly contentType: Schema.String;
222
+ readonly sha256: Schema.String;
223
+ }>;
224
+ readonly context: Schema.$Record<Schema.String, Schema.String>;
225
+ readonly strategy: Schema.optional<Schema.Literals<readonly ["auto", "single", "post", "multipart", "resumable", "proxy"]>>;
226
+ }>;
227
+ readonly storeId: Schema.String;
228
+ readonly key: Schema.String;
229
+ readonly stagingKey: Schema.String;
230
+ readonly publishedKey: Schema.String;
231
+ readonly context: Schema.$Record<Schema.String, Schema.String>;
232
+ readonly expiresAt: Schema.Number;
233
+ readonly grantExpiresAt: Schema.Number;
234
+ readonly state: Schema.Literals<readonly ["reserving", "ready", "initiating", "uploading", "verifying", "publishing", "published", "aborted", "rejected"]>;
235
+ readonly cleanupPending: Schema.Boolean;
236
+ readonly remote: Schema.optional<Schema.Redacted<Schema.Unknown>>;
237
+ readonly object: Schema.optional<Schema.Struct<{
238
+ readonly contentType: Schema.optional<Schema.String>;
239
+ readonly contentEncoding: Schema.optional<Schema.String>;
240
+ readonly contentLanguage: Schema.optional<Schema.String>;
241
+ readonly contentDisposition: Schema.optional<Schema.String>;
242
+ readonly cacheControl: Schema.optional<Schema.String>;
243
+ readonly customMetadata: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
244
+ readonly ref: Schema.Struct<{
245
+ readonly storeId: Schema.NonEmptyString;
246
+ readonly key: Schema.NonEmptyString;
247
+ readonly version: Schema.optional<Schema.Union<readonly [Schema.TaggedStruct<"S3Version", {
248
+ readonly id: Schema.NonEmptyString;
249
+ }>, Schema.TaggedStruct<"GcsGeneration", {
250
+ readonly id: Schema.NonEmptyString;
251
+ readonly metageneration: Schema.optional<Schema.NonEmptyString>;
252
+ }>, Schema.TaggedStruct<"AzureVersion", {
253
+ readonly id: Schema.NonEmptyString;
254
+ }>, Schema.TaggedStruct<"AzureSnapshot", {
255
+ readonly id: Schema.NonEmptyString;
256
+ }>, Schema.TaggedStruct<"OpaqueVersion", {
257
+ readonly provider: Schema.NonEmptyString;
258
+ readonly id: Schema.NonEmptyString;
259
+ }>]>>;
260
+ }>;
261
+ readonly size: Schema.optional<Schema.Natural>;
262
+ readonly etag: Schema.optional<Schema.String>;
263
+ readonly lastModified: Schema.optional<Schema.DateTimeUtcFromString>;
264
+ readonly checksums: Schema.optional<Schema.$Array<Schema.Struct<{
265
+ readonly algorithm: Schema.NonEmptyString;
266
+ readonly encoding: Schema.Literals<readonly ["hex", "base64"]>;
267
+ readonly scope: Schema.Literals<readonly ["full-object", "composite"]>;
268
+ readonly value: Schema.NonEmptyString;
269
+ readonly partCount: Schema.optional<Schema.Int>;
270
+ }>>>;
271
+ readonly storageClass: Schema.optional<Schema.NonEmptyString>;
272
+ }>>;
273
+ readonly result: Schema.optional<Schema.Unknown>;
274
+ }>;
275
+ export type UploadRecord = typeof UploadRecord.Type;
276
+ export type PublishedObject = typeof ObjectRef.Type;
277
+ export {};
278
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1,167 @@
1
+ import { ObjectMetadata, ObjectSize } from "../core/object.js";
2
+ import { Schema } from "effect";
3
+
4
+ // src/uploads/schema.ts
5
+ const UploadId = Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/u));
6
+ const UploadActor = Schema.Struct({
7
+ subject: Schema.NonEmptyString,
8
+ tenantId: Schema.optional(Schema.NonEmptyString)
9
+ });
10
+ const UploadFile = Schema.Struct({
11
+ name: Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(255), Schema.isPattern(/^[^\r\n\0/\\]+$/u)),
12
+ size: ObjectSize,
13
+ contentType: Schema.String.check(Schema.isPattern(/^[\w!#$&^.+-]+\/[\w!#$&^.+-]+$/u)),
14
+ sha256: Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/u))
15
+ });
16
+ const UploadInput = Schema.Struct({
17
+ purpose: Schema.NonEmptyString,
18
+ file: UploadFile,
19
+ context: Schema.Record(Schema.String, Schema.String),
20
+ strategy: Schema.optional(Schema.Literals([
21
+ "auto",
22
+ "single",
23
+ "post",
24
+ "multipart",
25
+ "resumable",
26
+ "proxy"
27
+ ]))
28
+ });
29
+ const UploadRequest = Schema.Struct({
30
+ version: Schema.Literal(1),
31
+ idempotencyKey: Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(200)),
32
+ input: UploadInput
33
+ });
34
+ const UploadErrorCode = Schema.Literals([
35
+ "BadRequest",
36
+ "Unauthorized",
37
+ "Forbidden",
38
+ "NotFound",
39
+ "Conflict",
40
+ "Expired",
41
+ "Unsupported",
42
+ "VerificationFailed",
43
+ "Unavailable"
44
+ ]);
45
+ var UploadError = class extends Schema.TaggedError()("UploadError", { code: UploadErrorCode }) {};
46
+ const failUpload = (code) => new UploadError({ code });
47
+ const UploadState = Schema.Literals([
48
+ "reserving",
49
+ "ready",
50
+ "initiating",
51
+ "uploading",
52
+ "verifying",
53
+ "publishing",
54
+ "published",
55
+ "aborted",
56
+ "rejected"
57
+ ]);
58
+ const UploadStatus = Schema.Struct({
59
+ version: Schema.Literal(1),
60
+ id: UploadId,
61
+ state: UploadState,
62
+ expiresAt: Schema.Number,
63
+ cleanupPending: Schema.Boolean,
64
+ result: Schema.optional(Schema.Unknown)
65
+ });
66
+ const Constraints = Schema.optional(Schema.Array(Schema.Struct({
67
+ kind: Schema.String,
68
+ enforcement: Schema.Literals([
69
+ "provider",
70
+ "backend",
71
+ "advisory"
72
+ ]),
73
+ value: Schema.Union([Schema.String, Schema.Number])
74
+ })));
75
+ const RequestGrant = Schema.Struct({
76
+ _tag: Schema.Literal("SignedRequest"),
77
+ constraints: Constraints,
78
+ method: Schema.Literal("PUT"),
79
+ url: Schema.String,
80
+ headers: Schema.Record(Schema.String, Schema.String),
81
+ expiresAt: Schema.Number,
82
+ partReceipt: Schema.optional(Schema.String)
83
+ });
84
+ const PostGrant = Schema.Struct({
85
+ _tag: Schema.Literal("PostForm"),
86
+ constraints: Constraints,
87
+ url: Schema.String,
88
+ fields: Schema.Record(Schema.String, Schema.String),
89
+ expiresAt: Schema.Number
90
+ });
91
+ const MultipartGrant = Schema.Struct({
92
+ _tag: Schema.Literal("Multipart"),
93
+ constraints: Constraints,
94
+ partBytes: Schema.Int.check(Schema.isGreaterThan(0)),
95
+ checksum: Schema.optional(Schema.Literal("sha256")),
96
+ expiresAt: Schema.Number,
97
+ completed: Schema.Array(Schema.Struct({
98
+ partNumber: Schema.Natural,
99
+ etag: Schema.String
100
+ }))
101
+ });
102
+ const ResumableGrant = Schema.Struct({
103
+ _tag: Schema.Literal("Resumable"),
104
+ constraints: Constraints,
105
+ protocol: Schema.Literals(["gcs", "tus"]),
106
+ url: Schema.String,
107
+ headers: Schema.Record(Schema.String, Schema.String),
108
+ offset: ObjectSize,
109
+ chunkBytes: Schema.Int.check(Schema.isGreaterThan(0)),
110
+ expiresAt: Schema.Number
111
+ });
112
+ const BlocksGrant = Schema.Struct({
113
+ _tag: Schema.Literal("Blocks"),
114
+ constraints: Constraints,
115
+ partBytes: Schema.Int.check(Schema.isGreaterThan(0)),
116
+ completed: Schema.Array(Schema.Natural),
117
+ expiresAt: Schema.Number
118
+ });
119
+ const UploadGrant = Schema.Union([
120
+ RequestGrant,
121
+ PostGrant,
122
+ MultipartGrant,
123
+ BlocksGrant,
124
+ ResumableGrant,
125
+ Schema.Struct({
126
+ _tag: Schema.Literal("Proxy"),
127
+ constraints: Constraints,
128
+ expiresAt: Schema.Number
129
+ })
130
+ ]);
131
+ const GrantResponse = Schema.Struct({
132
+ version: Schema.Literal(1),
133
+ id: UploadId,
134
+ grant: UploadGrant
135
+ });
136
+ const PartRequest = Schema.Struct({
137
+ sha256: Schema.optional(Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/u))),
138
+ partNumber: Schema.Int.check(Schema.isBetween({
139
+ minimum: 1,
140
+ maximum: 1e4
141
+ }))
142
+ });
143
+ const PartsRequest = Schema.Struct({ parts: Schema.Array(Schema.Struct({
144
+ partNumber: PartRequest.fields.partNumber,
145
+ receipt: Schema.NonEmptyString
146
+ })).check(Schema.isMaxLength(1e4)) });
147
+ const UploadRecord = Schema.Struct({
148
+ version: Schema.Literal(1),
149
+ id: UploadId,
150
+ actor: UploadActor,
151
+ input: UploadInput,
152
+ storeId: Schema.String,
153
+ key: Schema.String,
154
+ stagingKey: Schema.String,
155
+ publishedKey: Schema.String,
156
+ context: Schema.Record(Schema.String, Schema.String),
157
+ expiresAt: Schema.Number,
158
+ grantExpiresAt: Schema.Number,
159
+ state: UploadState,
160
+ cleanupPending: Schema.Boolean,
161
+ remote: Schema.optional(Schema.Redacted(Schema.Unknown)),
162
+ object: Schema.optional(ObjectMetadata),
163
+ result: Schema.optional(Schema.Unknown)
164
+ });
165
+
166
+ export { GrantResponse, PartRequest, PartsRequest, UploadActor, UploadError, UploadErrorCode, UploadFile, UploadGrant, UploadId, UploadInput, UploadRecord, UploadRequest, UploadState, UploadStatus, failUpload };
167
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","names":[],"sources":["../../src/uploads/schema.ts"],"sourcesContent":["import { Schema } from \"effect\";\n\nimport type { ObjectRef } from \"../core/object.js\";\nimport { ObjectMetadata, ObjectSize } from \"../core/object.js\";\n\nexport const UploadId = Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/u));\nexport const UploadActor = Schema.Struct({\n subject: Schema.NonEmptyString,\n tenantId: Schema.optional(Schema.NonEmptyString),\n});\nexport type UploadActor = typeof UploadActor.Type;\nexport const UploadFile = Schema.Struct({\n name: Schema.String.check(\n Schema.isMinLength(1),\n Schema.isMaxLength(255),\n Schema.isPattern(/^[^\\r\\n\\0/\\\\]+$/u),\n ),\n size: ObjectSize,\n contentType: Schema.String.check(Schema.isPattern(/^[\\w!#$&^.+-]+\\/[\\w!#$&^.+-]+$/u)),\n sha256: Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/u)),\n});\nexport const UploadInput = Schema.Struct({\n purpose: Schema.NonEmptyString,\n file: UploadFile,\n context: Schema.Record(Schema.String, Schema.String),\n strategy: Schema.optional(\n Schema.Literals([\"auto\", \"single\", \"post\", \"multipart\", \"resumable\", \"proxy\"]),\n ),\n});\nexport type UploadInput = typeof UploadInput.Type;\nexport const UploadRequest = Schema.Struct({\n version: Schema.Literal(1),\n idempotencyKey: Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(200)),\n input: UploadInput,\n});\nexport const UploadErrorCode = Schema.Literals([\n \"BadRequest\",\n \"Unauthorized\",\n \"Forbidden\",\n \"NotFound\",\n \"Conflict\",\n \"Expired\",\n \"Unsupported\",\n \"VerificationFailed\",\n \"Unavailable\",\n]);\nexport class UploadError extends Schema.TaggedError<UploadError>()(\"UploadError\", {\n code: UploadErrorCode,\n}) {}\nexport const failUpload = (code: typeof UploadErrorCode.Type) => new UploadError({ code });\nexport const UploadState = Schema.Literals([\n \"reserving\",\n \"ready\",\n \"initiating\",\n \"uploading\",\n \"verifying\",\n \"publishing\",\n \"published\",\n \"aborted\",\n \"rejected\",\n]);\nexport const UploadStatus = Schema.Struct({\n version: Schema.Literal(1),\n id: UploadId,\n state: UploadState,\n expiresAt: Schema.Number,\n cleanupPending: Schema.Boolean,\n result: Schema.optional(Schema.Unknown),\n});\nexport type UploadStatus = typeof UploadStatus.Type;\nconst Constraints = Schema.optional(\n Schema.Array(\n Schema.Struct({\n kind: Schema.String,\n enforcement: Schema.Literals([\"provider\", \"backend\", \"advisory\"]),\n value: Schema.Union([Schema.String, Schema.Number]),\n }),\n ),\n);\nconst RequestGrant = Schema.Struct({\n _tag: Schema.Literal(\"SignedRequest\"),\n constraints: Constraints,\n method: Schema.Literal(\"PUT\"),\n url: Schema.String,\n headers: Schema.Record(Schema.String, Schema.String),\n expiresAt: Schema.Number,\n partReceipt: Schema.optional(Schema.String),\n});\nconst PostGrant = Schema.Struct({\n _tag: Schema.Literal(\"PostForm\"),\n constraints: Constraints,\n url: Schema.String,\n fields: Schema.Record(Schema.String, Schema.String),\n expiresAt: Schema.Number,\n});\nconst MultipartGrant = Schema.Struct({\n _tag: Schema.Literal(\"Multipart\"),\n constraints: Constraints,\n partBytes: Schema.Int.check(Schema.isGreaterThan(0)),\n checksum: Schema.optional(Schema.Literal(\"sha256\")),\n expiresAt: Schema.Number,\n completed: Schema.Array(Schema.Struct({ partNumber: Schema.Natural, etag: Schema.String })),\n});\nconst ResumableGrant = Schema.Struct({\n _tag: Schema.Literal(\"Resumable\"),\n constraints: Constraints,\n protocol: Schema.Literals([\"gcs\", \"tus\"]),\n url: Schema.String,\n headers: Schema.Record(Schema.String, Schema.String),\n offset: ObjectSize,\n chunkBytes: Schema.Int.check(Schema.isGreaterThan(0)),\n expiresAt: Schema.Number,\n});\nconst BlocksGrant = Schema.Struct({\n _tag: Schema.Literal(\"Blocks\"),\n constraints: Constraints,\n partBytes: Schema.Int.check(Schema.isGreaterThan(0)),\n completed: Schema.Array(Schema.Natural),\n expiresAt: Schema.Number,\n});\nexport const UploadGrant = Schema.Union([\n RequestGrant,\n PostGrant,\n MultipartGrant,\n BlocksGrant,\n ResumableGrant,\n Schema.Struct({\n _tag: Schema.Literal(\"Proxy\"),\n constraints: Constraints,\n expiresAt: Schema.Number,\n }),\n]);\nexport type UploadGrant = typeof UploadGrant.Type;\nexport const GrantResponse = Schema.Struct({\n version: Schema.Literal(1),\n id: UploadId,\n grant: UploadGrant,\n});\nexport const PartRequest = Schema.Struct({\n sha256: Schema.optional(Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/u))),\n partNumber: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 10000 })),\n});\nexport const PartsRequest = Schema.Struct({\n parts: Schema.Array(\n Schema.Struct({ partNumber: PartRequest.fields.partNumber, receipt: Schema.NonEmptyString }),\n ).check(Schema.isMaxLength(10000)),\n});\nexport const UploadRecord = Schema.Struct({\n version: Schema.Literal(1),\n id: UploadId,\n actor: UploadActor,\n input: UploadInput,\n storeId: Schema.String,\n key: Schema.String,\n stagingKey: Schema.String,\n publishedKey: Schema.String,\n context: Schema.Record(Schema.String, Schema.String),\n expiresAt: Schema.Number,\n grantExpiresAt: Schema.Number,\n state: UploadState,\n cleanupPending: Schema.Boolean,\n remote: Schema.optional(Schema.Redacted(Schema.Unknown)),\n object: Schema.optional(ObjectMetadata),\n result: Schema.optional(Schema.Unknown),\n});\nexport type UploadRecord = typeof UploadRecord.Type;\nexport type PublishedObject = typeof ObjectRef.Type;\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import "./schema.js";
2
+ import "../core/errors.js";
3
+ import { StorageSigning } from "../core/capabilities.js";
4
+ import { Storage } from "../core/storage.js";
5
+ import { UploadGrantDriver } from "./driver.js";
6
+ import { Effect, Layer } from "effect";
7
+ export declare const SignedUploadGrants: Layer.Layer<UploadGrantDriver, never, Storage | StorageSigning>;
8
+ //# sourceMappingURL=signed-driver.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { failUpload } from "./schema.js";
2
+ import { Storage } from "../core/storage.js";
3
+ import { UploadGrantDriver } from "./driver.js";
4
+ import { StorageSigning } from "../core/capabilities.js";
5
+ import { Clock, DateTime, Effect, Layer, Redacted } from "effect";
6
+
7
+ // src/uploads/signed-driver.ts
8
+ const signedUploadDriver = (issue) => Layer.effect(UploadGrantDriver, Effect.gen(function* () {
9
+ const storage = yield* Storage;
10
+ return UploadGrantDriver.of({
11
+ begin: (record) => !["auto", "single"].includes(record.input.strategy ?? "auto") ? Effect.fail(failUpload("Unsupported")) : Effect.succeed(null),
12
+ grant: Effect.fnUntraced(function* (record, expiresAt) {
13
+ const grant = yield* issue(record, Math.max(1, Math.floor((expiresAt - (yield* Clock.currentTimeMillis)) / 1e3)), storage);
14
+ return {
15
+ _tag: "SignedRequest",
16
+ constraints: grant.constraints,
17
+ method: "PUT",
18
+ url: Redacted.value(grant.url),
19
+ headers: Redacted.value(grant.headers),
20
+ expiresAt: DateTime.toEpochMillis(grant.expiresAt)
21
+ };
22
+ }),
23
+ abort: () => Effect.void
24
+ });
25
+ }));
26
+ const SignedUploadGrants = Layer.unwrap(Effect.map(StorageSigning, (signing) => signedUploadDriver((record, expiresInSeconds, storage) => signing.sign({
27
+ ref: {
28
+ storeId: storage.storeId,
29
+ key: record.stagingKey
30
+ },
31
+ method: "PUT",
32
+ expiresInSeconds
33
+ }))));
34
+
35
+ export { SignedUploadGrants, signedUploadDriver };
36
+ //# sourceMappingURL=signed-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signed-driver.js","names":[],"sources":["../../src/uploads/signed-driver.ts"],"sourcesContent":["import { Clock, DateTime, Effect, Layer, Redacted } from \"effect\";\n\nimport { StorageSigning } from \"../core/capabilities.js\";\nimport type { SignedRequest } from \"../core/capabilities.js\";\nimport type { StorageError } from \"../core/errors.js\";\nimport { Storage, type StorageService } from \"../core/storage.js\";\nimport { UploadGrantDriver } from \"./driver.js\";\nimport { failUpload } from \"./schema.js\";\nimport type { UploadRecord } from \"./schema.js\";\n\nexport const signedUploadDriver = (\n issue: (\n record: UploadRecord,\n seconds: number,\n storage: StorageService,\n ) => Effect.Effect<SignedRequest, StorageError>,\n) =>\n Layer.effect(\n UploadGrantDriver,\n Effect.gen(function* () {\n const storage = yield* Storage;\n return UploadGrantDriver.of({\n begin: (record) =>\n ![\"auto\", \"single\"].includes(record.input.strategy ?? \"auto\")\n ? Effect.fail(failUpload(\"Unsupported\"))\n : Effect.succeed(null),\n grant: Effect.fnUntraced(function* (record, expiresAt) {\n const seconds = Math.max(\n 1,\n Math.floor((expiresAt - (yield* Clock.currentTimeMillis)) / 1000),\n );\n const grant = yield* issue(record, seconds, storage);\n return {\n _tag: \"SignedRequest\",\n constraints: grant.constraints,\n method: \"PUT\",\n url: Redacted.value(grant.url),\n headers: Redacted.value(grant.headers),\n expiresAt: DateTime.toEpochMillis(grant.expiresAt),\n };\n }),\n abort: () => Effect.void,\n });\n }),\n );\nexport const SignedUploadGrants = Layer.unwrap(\n Effect.map(StorageSigning, (signing) =>\n signedUploadDriver((record, expiresInSeconds, storage) =>\n signing.sign({\n ref: { storeId: storage.storeId, key: record.stagingKey },\n method: \"PUT\",\n expiresInSeconds,\n }),\n ),\n ),\n);\n"],"mappings":";;;;;;;AAUA,MAAa,sBACX,UAMA,MAAM,OACJ,mBACA,OAAO,IAAI,aAAa;CACtB,MAAM,UAAU,OAAO;CACvB,OAAO,kBAAkB,GAAG;EAC1B,QAAQ,WACN,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,SAAS,OAAO,MAAM,YAAY,MAAM,IACxD,OAAO,KAAK,WAAW,aAAa,CAAC,IACrC,OAAO,QAAQ,IAAI;EACzB,OAAO,OAAO,WAAW,WAAW,QAAQ,WAAW;GAKrD,MAAM,QAAQ,OAAO,MAAM,QAJX,KAAK,IACnB,GACA,KAAK,OAAO,aAAa,OAAO,MAAM,sBAAsB,GAAI,CAEzB,GAAG,OAAO;GACnD,OAAO;IACL,MAAM;IACN,aAAa,MAAM;IACnB,QAAQ;IACR,KAAK,SAAS,MAAM,MAAM,GAAG;IAC7B,SAAS,SAAS,MAAM,MAAM,OAAO;IACrC,WAAW,SAAS,cAAc,MAAM,SAAS;GACnD;EACF,CAAC;EACD,aAAa,OAAO;CACtB,CAAC;AACH,CAAC,CACH;AACF,MAAa,qBAAqB,MAAM,OACtC,OAAO,IAAI,iBAAiB,YAC1B,oBAAoB,QAAQ,kBAAkB,YAC5C,QAAQ,KAAK;CACX,KAAK;EAAE,SAAS,QAAQ;EAAS,KAAK,OAAO;CAAW;CACxD,QAAQ;CACR;AACF,CAAC,CACH,CACF,CACF"}
@@ -0,0 +1,26 @@
1
+ import { UploadError, UploadRecord, failUpload } from "./schema.js";
2
+ import { StorageError } from "../core/errors.js";
3
+ import { CheckpointProtection, SessionOwnership } from "../sessions/store.js";
4
+ import { Context, Effect, Layer } from "effect";
5
+ import { KeyValueStore } from "effect/persistence";
6
+ export interface UploadStoreOptions {
7
+ readonly namespace: string;
8
+ readonly ownership: "exclusive" | SessionOwnership;
9
+ readonly protection: CheckpointProtection;
10
+ readonly maximumRecordBytes?: number;
11
+ }
12
+ declare const UploadStore_base: Context.ServiceClass<UploadStore, "@effect-kit/storage/UploadStore", {
13
+ readonly exclusive: SessionOwnership["withExclusive"];
14
+ readonly read: (id: string) => Effect.Effect<UploadRecord | undefined, StorageError | ReturnType<typeof failUpload>>;
15
+ readonly write: (record: UploadRecord) => Effect.Effect<void, StorageError | ReturnType<typeof failUpload>>;
16
+ }>;
17
+ export declare class UploadStore extends UploadStore_base {
18
+ static readonly make: (options: UploadStoreOptions) => Effect.Effect<{
19
+ readonly exclusive: SessionOwnership["withExclusive"];
20
+ readonly read: (id: string) => Effect.Effect<UploadRecord | undefined, StorageError | ReturnType<typeof failUpload>>;
21
+ readonly write: (record: UploadRecord) => Effect.Effect<void, StorageError | ReturnType<typeof failUpload>>;
22
+ }, UploadError, KeyValueStore.KeyValueStore>;
23
+ static layer(options: UploadStoreOptions): Layer.Layer<UploadStore, UploadError, KeyValueStore.KeyValueStore>;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1,51 @@
1
+ import { UploadId, UploadRecord, failUpload } from "./schema.js";
2
+ import { Context, Effect, Layer, Redacted, Schema, Semaphore } from "effect";
3
+ import { KeyValueStore } from "effect/persistence";
4
+
5
+ // src/uploads/store.ts
6
+ var UploadStore = class UploadStore extends Context.Service()("@effect-kit/storage/UploadStore") {
7
+ static make = Effect.fnUntraced(function* (options) {
8
+ if (!/^[A-Za-z0-9_-]{1,100}$/u.test(options.namespace) || !options.ownership) return yield* failUpload("BadRequest");
9
+ const limit = options.maximumRecordBytes ?? 1048576;
10
+ if (!Number.isSafeInteger(limit) || limit < 1024) return yield* failUpload("BadRequest");
11
+ const kvs = yield* KeyValueStore.KeyValueStore;
12
+ let semaphore = locks.get(kvs);
13
+ if (!semaphore) {
14
+ semaphore = Semaphore.makeUnsafe(1);
15
+ locks.set(kvs, semaphore);
16
+ }
17
+ const lock = semaphore;
18
+ const key = (id) => `${options.namespace}:upload-intent:${id}`;
19
+ return UploadStore.of({
20
+ exclusive: (program) => lock.withPermit(options.ownership === "exclusive" ? program : options.ownership.withExclusive(program)),
21
+ read: Effect.fnUntraced(function* (id) {
22
+ yield* Schema.decodeUnknownEffect(UploadId)(id).pipe(Effect.mapError(() => failUpload("BadRequest")));
23
+ const encrypted = yield* kvs.get(key(id)).pipe(Effect.mapError(() => failUpload("Unavailable")));
24
+ if (encrypted === void 0) return void 0;
25
+ if (encrypted.length > limit * 2 + 4096) return yield* failUpload("Unavailable");
26
+ const json = yield* options.protection.open(Redacted.make(encrypted), key(id));
27
+ if (new TextEncoder().encode(json).length > limit) return yield* failUpload("Unavailable");
28
+ const record = yield* Schema.decodeUnknownEffect(Schema.fromJsonString(Schema.toCodecJson(UploadRecord)))(json).pipe(Effect.mapError(() => failUpload("Unavailable")));
29
+ if (record.id !== id) return yield* failUpload("Unavailable");
30
+ return record;
31
+ }),
32
+ write: Effect.fnUntraced(function* (record) {
33
+ const value = yield* Schema.encodeEffect(Schema.toCodecJson(UploadRecord))(record).pipe(Effect.mapError(() => failUpload("BadRequest")));
34
+ const json = yield* Effect.try({
35
+ try: () => JSON.stringify(value),
36
+ catch: () => failUpload("BadRequest")
37
+ });
38
+ if (new TextEncoder().encode(json).length > limit) return yield* failUpload("BadRequest");
39
+ const encrypted = yield* options.protection.seal(json, key(record.id));
40
+ yield* kvs.set(key(record.id), Redacted.value(encrypted)).pipe(Effect.mapError(() => failUpload("Unavailable")));
41
+ })
42
+ });
43
+ });
44
+ static layer(options) {
45
+ return Layer.effect(UploadStore, UploadStore.make(options));
46
+ }
47
+ };
48
+ const locks = /* @__PURE__ */ new WeakMap();
49
+
50
+ export { UploadStore };
51
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","names":[],"sources":["../../src/uploads/store.ts"],"sourcesContent":["import { Context, Effect, Layer, Redacted, Schema, Semaphore } from \"effect\";\nimport { KeyValueStore } from \"effect/persistence\";\n\nimport type { StorageError } from \"../core/errors.js\";\nimport type { CheckpointProtection, SessionOwnership } from \"../sessions/store.js\";\nimport { UploadId, UploadRecord, failUpload } from \"./schema.js\";\n\nexport interface UploadStoreOptions {\n readonly namespace: string;\n readonly ownership: \"exclusive\" | SessionOwnership;\n readonly protection: CheckpointProtection;\n readonly maximumRecordBytes?: number;\n}\nexport class UploadStore extends Context.Service<\n UploadStore,\n {\n readonly exclusive: SessionOwnership[\"withExclusive\"];\n readonly read: (\n id: string,\n ) => Effect.Effect<UploadRecord | undefined, StorageError | ReturnType<typeof failUpload>>;\n readonly write: (\n record: UploadRecord,\n ) => Effect.Effect<void, StorageError | ReturnType<typeof failUpload>>;\n }\n>()(\"@effect-kit/storage/UploadStore\") {\n static readonly make = Effect.fnUntraced(function* (options: UploadStoreOptions) {\n if (!/^[A-Za-z0-9_-]{1,100}$/u.test(options.namespace) || !options.ownership)\n return yield* failUpload(\"BadRequest\");\n const limit = options.maximumRecordBytes ?? 1024 * 1024;\n if (!Number.isSafeInteger(limit) || limit < 1024) return yield* failUpload(\"BadRequest\");\n const kvs = yield* KeyValueStore.KeyValueStore;\n let semaphore = locks.get(kvs);\n if (!semaphore) {\n semaphore = Semaphore.makeUnsafe(1);\n locks.set(kvs, semaphore);\n }\n const lock = semaphore;\n const key = (id: string) => `${options.namespace}:upload-intent:${id}`;\n return UploadStore.of({\n exclusive: (program) =>\n lock.withPermit(\n options.ownership === \"exclusive\" ? program : options.ownership.withExclusive(program),\n ),\n read: Effect.fnUntraced(function* (id) {\n yield* Schema.decodeUnknownEffect(UploadId)(id).pipe(\n Effect.mapError(() => failUpload(\"BadRequest\")),\n );\n const encrypted = yield* kvs\n .get(key(id))\n .pipe(Effect.mapError(() => failUpload(\"Unavailable\")));\n if (encrypted === undefined) return undefined;\n if (encrypted.length > limit * 2 + 4096) return yield* failUpload(\"Unavailable\");\n const json = yield* options.protection.open(Redacted.make(encrypted), key(id));\n if (new TextEncoder().encode(json).length > limit) return yield* failUpload(\"Unavailable\");\n const record = yield* Schema.decodeUnknownEffect(\n Schema.fromJsonString(Schema.toCodecJson(UploadRecord)),\n )(json).pipe(Effect.mapError(() => failUpload(\"Unavailable\")));\n if (record.id !== id) return yield* failUpload(\"Unavailable\");\n return record;\n }),\n write: Effect.fnUntraced(function* (record) {\n const value = yield* Schema.encodeEffect(Schema.toCodecJson(UploadRecord))(record).pipe(\n Effect.mapError(() => failUpload(\"BadRequest\")),\n );\n const json = yield* Effect.try({\n try: () => JSON.stringify(value),\n catch: () => failUpload(\"BadRequest\"),\n });\n if (new TextEncoder().encode(json).length > limit) return yield* failUpload(\"BadRequest\");\n const encrypted = yield* options.protection.seal(json, key(record.id));\n yield* kvs\n .set(key(record.id), Redacted.value(encrypted))\n .pipe(Effect.mapError(() => failUpload(\"Unavailable\")));\n }),\n });\n });\n static layer(options: UploadStoreOptions) {\n return Layer.effect(UploadStore, UploadStore.make(options));\n }\n}\nconst locks = new WeakMap<KeyValueStore.KeyValueStore, Semaphore.Semaphore>();\n"],"mappings":";;;;;AAaA,IAAa,cAAb,MAAa,oBAAoB,QAAQ,QAWvC,CAAC,CAAC,iCAAiC,CAAC,CAAC;CACrC,OAAgB,OAAO,OAAO,WAAW,WAAW,SAA6B;EAC/E,IAAI,CAAC,0BAA0B,KAAK,QAAQ,SAAS,KAAK,CAAC,QAAQ,WACjE,OAAO,OAAO,WAAW,YAAY;EACvC,MAAM,QAAQ,QAAQ,sBAAsB;EAC5C,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,MAAM,OAAO,OAAO,WAAW,YAAY;EACvF,MAAM,MAAM,OAAO,cAAc;EACjC,IAAI,YAAY,MAAM,IAAI,GAAG;EAC7B,IAAI,CAAC,WAAW;GACd,YAAY,UAAU,WAAW,CAAC;GAClC,MAAM,IAAI,KAAK,SAAS;EAC1B;EACA,MAAM,OAAO;EACb,MAAM,OAAO,OAAe,GAAG,QAAQ,UAAU,iBAAiB;EAClE,OAAO,YAAY,GAAG;GACpB,YAAY,YACV,KAAK,WACH,QAAQ,cAAc,cAAc,UAAU,QAAQ,UAAU,cAAc,OAAO,CACvF;GACF,MAAM,OAAO,WAAW,WAAW,IAAI;IACrC,OAAO,OAAO,oBAAoB,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,KAC9C,OAAO,eAAe,WAAW,YAAY,CAAC,CAChD;IACA,MAAM,YAAY,OAAO,IACtB,IAAI,IAAI,EAAE,CAAC,CAAC,CACZ,KAAK,OAAO,eAAe,WAAW,aAAa,CAAC,CAAC;IACxD,IAAI,cAAc,QAAW,OAAO;IACpC,IAAI,UAAU,SAAS,QAAQ,IAAI,MAAM,OAAO,OAAO,WAAW,aAAa;IAC/E,MAAM,OAAO,OAAO,QAAQ,WAAW,KAAK,SAAS,KAAK,SAAS,GAAG,IAAI,EAAE,CAAC;IAC7E,IAAI,IAAI,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,OAAO,OAAO,OAAO,WAAW,aAAa;IACzF,MAAM,SAAS,OAAO,OAAO,oBAC3B,OAAO,eAAe,OAAO,YAAY,YAAY,CAAC,CACxD,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,OAAO,eAAe,WAAW,aAAa,CAAC,CAAC;IAC7D,IAAI,OAAO,OAAO,IAAI,OAAO,OAAO,WAAW,aAAa;IAC5D,OAAO;GACT,CAAC;GACD,OAAO,OAAO,WAAW,WAAW,QAAQ;IAC1C,MAAM,QAAQ,OAAO,OAAO,aAAa,OAAO,YAAY,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KACjF,OAAO,eAAe,WAAW,YAAY,CAAC,CAChD;IACA,MAAM,OAAO,OAAO,OAAO,IAAI;KAC7B,WAAW,KAAK,UAAU,KAAK;KAC/B,aAAa,WAAW,YAAY;IACtC,CAAC;IACD,IAAI,IAAI,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,OAAO,OAAO,OAAO,WAAW,YAAY;IACxF,MAAM,YAAY,OAAO,QAAQ,WAAW,KAAK,MAAM,IAAI,OAAO,EAAE,CAAC;IACrE,OAAO,IACJ,IAAI,IAAI,OAAO,EAAE,GAAG,SAAS,MAAM,SAAS,CAAC,CAAC,CAC9C,KAAK,OAAO,eAAe,WAAW,aAAa,CAAC,CAAC;GAC1D,CAAC;EACH,CAAC;CACH,CAAC;CACD,OAAO,MAAM,SAA6B;EACxC,OAAO,MAAM,OAAO,aAAa,YAAY,KAAK,OAAO,CAAC;CAC5D;AACF;AACA,MAAM,wBAAQ,IAAI,QAA0D"}