@vibesdotdev/media 0.0.0-stage → 1.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +95 -2
  3. package/dist/analyzers/frame-guard.d.ts +6 -0
  4. package/dist/analyzers/frame-guard.d.ts.map +1 -0
  5. package/dist/analyzers/frame-guard.js +10 -0
  6. package/dist/analyzers/frame-guard.js.map +1 -0
  7. package/dist/analyzers/motion-math.d.ts +66 -0
  8. package/dist/analyzers/motion-math.d.ts.map +1 -0
  9. package/dist/analyzers/motion-math.js +356 -0
  10. package/dist/analyzers/motion-math.js.map +1 -0
  11. package/dist/analyzers/reference-motion-analyzer.impl.d.ts +23 -0
  12. package/dist/analyzers/reference-motion-analyzer.impl.d.ts.map +1 -0
  13. package/dist/analyzers/reference-motion-analyzer.impl.js +69 -0
  14. package/dist/analyzers/reference-motion-analyzer.impl.js.map +1 -0
  15. package/dist/analyzers/reference-motion.descriptor.d.ts +11 -0
  16. package/dist/analyzers/reference-motion.descriptor.d.ts.map +1 -0
  17. package/dist/analyzers/reference-motion.descriptor.js +21 -0
  18. package/dist/analyzers/reference-motion.descriptor.js.map +1 -0
  19. package/dist/capture-client.d.ts +34 -0
  20. package/dist/capture-client.d.ts.map +1 -0
  21. package/dist/capture-client.js +163 -0
  22. package/dist/capture-client.js.map +1 -0
  23. package/dist/config/media.uploads.config.descriptor.d.ts +27 -0
  24. package/dist/config/media.uploads.config.descriptor.d.ts.map +1 -0
  25. package/dist/config/media.uploads.config.descriptor.js +46 -0
  26. package/dist/config/media.uploads.config.descriptor.js.map +1 -0
  27. package/dist/config/uploads.d.ts +11 -0
  28. package/dist/config/uploads.d.ts.map +1 -0
  29. package/dist/config/uploads.js +25 -0
  30. package/dist/config/uploads.js.map +1 -0
  31. package/dist/docs/artifact-references.docs.descriptor.d.ts +4 -0
  32. package/dist/docs/artifact-references.docs.descriptor.d.ts.map +1 -0
  33. package/dist/docs/artifact-references.docs.descriptor.js +69 -0
  34. package/dist/docs/artifact-references.docs.descriptor.js.map +1 -0
  35. package/dist/docs/image-transform.docs.descriptor.d.ts +4 -0
  36. package/dist/docs/image-transform.docs.descriptor.d.ts.map +1 -0
  37. package/dist/docs/image-transform.docs.descriptor.js +52 -0
  38. package/dist/docs/image-transform.docs.descriptor.js.map +1 -0
  39. package/dist/index.d.ts +48 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +49 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/interfaces/capture-provider.d.ts +33 -0
  44. package/dist/interfaces/capture-provider.d.ts.map +1 -0
  45. package/dist/interfaces/capture-provider.js +10 -0
  46. package/dist/interfaces/capture-provider.js.map +1 -0
  47. package/dist/interfaces/image-transformer.d.ts +7 -0
  48. package/dist/interfaces/image-transformer.d.ts.map +1 -0
  49. package/dist/interfaces/image-transformer.js +2 -0
  50. package/dist/interfaces/image-transformer.js.map +1 -0
  51. package/dist/interfaces/index.d.ts +7 -0
  52. package/dist/interfaces/index.d.ts.map +1 -0
  53. package/dist/interfaces/index.js +5 -0
  54. package/dist/interfaces/index.js.map +1 -0
  55. package/dist/interfaces/motion-analyzer.d.ts +55 -0
  56. package/dist/interfaces/motion-analyzer.d.ts.map +1 -0
  57. package/dist/interfaces/motion-analyzer.js +14 -0
  58. package/dist/interfaces/motion-analyzer.js.map +1 -0
  59. package/dist/kinds/capture.d.ts +58 -0
  60. package/dist/kinds/capture.d.ts.map +1 -0
  61. package/dist/kinds/capture.js +34 -0
  62. package/dist/kinds/capture.js.map +1 -0
  63. package/dist/kinds/image-transform.d.ts +91 -0
  64. package/dist/kinds/image-transform.d.ts.map +1 -0
  65. package/dist/kinds/image-transform.js +12 -0
  66. package/dist/kinds/image-transform.js.map +1 -0
  67. package/dist/kinds/index.d.ts +10 -0
  68. package/dist/kinds/index.d.ts.map +1 -0
  69. package/dist/kinds/index.js +7 -0
  70. package/dist/kinds/index.js.map +1 -0
  71. package/dist/kinds/motion.d.ts +57 -0
  72. package/dist/kinds/motion.d.ts.map +1 -0
  73. package/dist/kinds/motion.js +34 -0
  74. package/dist/kinds/motion.js.map +1 -0
  75. package/dist/media.plugin.d.ts +23 -0
  76. package/dist/media.plugin.d.ts.map +1 -0
  77. package/dist/media.plugin.js +48 -0
  78. package/dist/media.plugin.js.map +1 -0
  79. package/dist/schemas/artifact-reference.d.ts +59 -0
  80. package/dist/schemas/artifact-reference.d.ts.map +1 -0
  81. package/dist/schemas/artifact-reference.js +77 -0
  82. package/dist/schemas/artifact-reference.js.map +1 -0
  83. package/dist/schemas/capture-descriptor.d.ts +71 -0
  84. package/dist/schemas/capture-descriptor.d.ts.map +1 -0
  85. package/dist/schemas/capture-descriptor.js +74 -0
  86. package/dist/schemas/capture-descriptor.js.map +1 -0
  87. package/dist/schemas/capture-options.d.ts +51 -0
  88. package/dist/schemas/capture-options.d.ts.map +1 -0
  89. package/dist/schemas/capture-options.js +68 -0
  90. package/dist/schemas/capture-options.js.map +1 -0
  91. package/dist/schemas/capture-parse.d.ts +10 -0
  92. package/dist/schemas/capture-parse.d.ts.map +1 -0
  93. package/dist/schemas/capture-parse.js +30 -0
  94. package/dist/schemas/capture-parse.js.map +1 -0
  95. package/dist/schemas/capture-state.d.ts +77 -0
  96. package/dist/schemas/capture-state.d.ts.map +1 -0
  97. package/dist/schemas/capture-state.js +25 -0
  98. package/dist/schemas/capture-state.js.map +1 -0
  99. package/dist/schemas/image-transform.d.ts +269 -0
  100. package/dist/schemas/image-transform.d.ts.map +1 -0
  101. package/dist/schemas/image-transform.js +161 -0
  102. package/dist/schemas/image-transform.js.map +1 -0
  103. package/dist/schemas/index.d.ts +20 -0
  104. package/dist/schemas/index.d.ts.map +1 -0
  105. package/dist/schemas/index.js +17 -0
  106. package/dist/schemas/index.js.map +1 -0
  107. package/dist/schemas/motion-analysis.d.ts +187 -0
  108. package/dist/schemas/motion-analysis.d.ts.map +1 -0
  109. package/dist/schemas/motion-analysis.js +213 -0
  110. package/dist/schemas/motion-analysis.js.map +1 -0
  111. package/dist/schemas/motion-descriptor.d.ts +53 -0
  112. package/dist/schemas/motion-descriptor.d.ts.map +1 -0
  113. package/dist/schemas/motion-descriptor.js +47 -0
  114. package/dist/schemas/motion-descriptor.js.map +1 -0
  115. package/dist/schemas/motion-frame.d.ts +63 -0
  116. package/dist/schemas/motion-frame.d.ts.map +1 -0
  117. package/dist/schemas/motion-frame.js +86 -0
  118. package/dist/schemas/motion-frame.js.map +1 -0
  119. package/dist/schemas/opaque-id.d.ts +10 -0
  120. package/dist/schemas/opaque-id.d.ts.map +1 -0
  121. package/dist/schemas/opaque-id.js +24 -0
  122. package/dist/schemas/opaque-id.js.map +1 -0
  123. package/dist/schemas/sharing-state.d.ts +43 -0
  124. package/dist/schemas/sharing-state.d.ts.map +1 -0
  125. package/dist/schemas/sharing-state.js +11 -0
  126. package/dist/schemas/sharing-state.js.map +1 -0
  127. package/dist/svelte/CaptureLoader.svelte +29 -0
  128. package/dist/svelte/CaptureLoader.svelte.d.ts +11 -0
  129. package/dist/svelte/CaptureLoader.svelte.d.ts.map +1 -0
  130. package/dist/svelte/CapturePanel.svelte +189 -0
  131. package/dist/svelte/CapturePanel.svelte.d.ts +12 -0
  132. package/dist/svelte/CapturePanel.svelte.d.ts.map +1 -0
  133. package/dist/svelte/MediaUploader.svelte +109 -0
  134. package/dist/svelte/MediaUploader.svelte.d.ts +5 -0
  135. package/dist/svelte/MediaUploader.svelte.d.ts.map +1 -0
  136. package/dist/svelte/capture-parse.d.ts +2 -0
  137. package/dist/svelte/capture-parse.d.ts.map +1 -0
  138. package/dist/svelte/capture-parse.js +1 -0
  139. package/dist/svelte/failure-message.d.ts +2 -0
  140. package/dist/svelte/failure-message.d.ts.map +1 -0
  141. package/dist/svelte/failure-message.js +1 -0
  142. package/dist/svelte/index.d.ts +8 -0
  143. package/dist/svelte/index.d.ts.map +1 -0
  144. package/dist/svelte/index.js +6 -0
  145. package/dist/svelte/runtime-log.d.ts +14 -0
  146. package/dist/svelte/runtime-log.d.ts.map +1 -0
  147. package/dist/svelte/runtime-log.js +19 -0
  148. package/dist/svelte/runtime.d.ts +9 -0
  149. package/dist/svelte/runtime.d.ts.map +1 -0
  150. package/dist/svelte/runtime.js +27 -0
  151. package/dist/svelte/sharing/README.md +38 -0
  152. package/dist/svelte/sharing/components/ShareButton.svelte +57 -0
  153. package/dist/svelte/sharing/components/ShareButton.svelte.d.ts +11 -0
  154. package/dist/svelte/sharing/components/ShareButton.svelte.d.ts.map +1 -0
  155. package/dist/svelte/sharing/components/ShareDialog.svelte +222 -0
  156. package/dist/svelte/sharing/components/ShareDialog.svelte.d.ts +8 -0
  157. package/dist/svelte/sharing/components/ShareDialog.svelte.d.ts.map +1 -0
  158. package/dist/svelte/sharing/components/ShareLoader.svelte +19 -0
  159. package/dist/svelte/sharing/components/ShareLoader.svelte.d.ts +7 -0
  160. package/dist/svelte/sharing/components/ShareLoader.svelte.d.ts.map +1 -0
  161. package/dist/svelte/sharing/index.d.ts +20 -0
  162. package/dist/svelte/sharing/index.d.ts.map +1 -0
  163. package/dist/svelte/sharing/index.js +19 -0
  164. package/dist/svelte/sharing/runtime.d.ts +44 -0
  165. package/dist/svelte/sharing/runtime.d.ts.map +1 -0
  166. package/dist/svelte/sharing/runtime.js +81 -0
  167. package/dist/svelte/sharing/state.svelte.d.ts +28 -0
  168. package/dist/svelte/sharing/state.svelte.d.ts.map +1 -0
  169. package/dist/svelte/sharing/state.svelte.js +101 -0
  170. package/dist/svelte/sharing/styles.css +8 -0
  171. package/dist/svelte/state.svelte.d.ts +38 -0
  172. package/dist/svelte/state.svelte.d.ts.map +1 -0
  173. package/dist/svelte/state.svelte.js +102 -0
  174. package/dist/svelte/styles.css +2 -0
  175. package/dist/svelte/uploader.d.ts +17 -0
  176. package/dist/svelte/uploader.d.ts.map +1 -0
  177. package/dist/svelte/uploader.js +9 -0
  178. package/dist/uploads/adapters/local/index.d.ts +9 -0
  179. package/dist/uploads/adapters/local/index.d.ts.map +1 -0
  180. package/dist/uploads/adapters/local/index.js +12 -0
  181. package/dist/uploads/adapters/local/index.js.map +1 -0
  182. package/dist/uploads/adapters/local/local-storage.descriptor.d.ts +24 -0
  183. package/dist/uploads/adapters/local/local-storage.descriptor.d.ts.map +1 -0
  184. package/dist/uploads/adapters/local/local-storage.descriptor.js +20 -0
  185. package/dist/uploads/adapters/local/local-storage.descriptor.js.map +1 -0
  186. package/dist/uploads/adapters/local/local-storage.impl.d.ts +123 -0
  187. package/dist/uploads/adapters/local/local-storage.impl.d.ts.map +1 -0
  188. package/dist/uploads/adapters/local/local-storage.impl.js +231 -0
  189. package/dist/uploads/adapters/local/local-storage.impl.js.map +1 -0
  190. package/dist/uploads/adapters/local/uploads-adapter-local.plugin.d.ts +9 -0
  191. package/dist/uploads/adapters/local/uploads-adapter-local.plugin.d.ts.map +1 -0
  192. package/dist/uploads/adapters/local/uploads-adapter-local.plugin.js +41 -0
  193. package/dist/uploads/adapters/local/uploads-adapter-local.plugin.js.map +1 -0
  194. package/dist/uploads/client/helper.d.ts +26 -0
  195. package/dist/uploads/client/helper.d.ts.map +1 -0
  196. package/dist/uploads/client/helper.js +27 -0
  197. package/dist/uploads/client/helper.js.map +1 -0
  198. package/dist/uploads/client/index.d.ts +11 -0
  199. package/dist/uploads/client/index.d.ts.map +1 -0
  200. package/dist/uploads/client/index.js +9 -0
  201. package/dist/uploads/client/index.js.map +1 -0
  202. package/dist/uploads/client/sharing-client.d.ts +45 -0
  203. package/dist/uploads/client/sharing-client.d.ts.map +1 -0
  204. package/dist/uploads/client/sharing-client.js +153 -0
  205. package/dist/uploads/client/sharing-client.js.map +1 -0
  206. package/dist/uploads/client/uploads-client.d.ts +200 -0
  207. package/dist/uploads/client/uploads-client.d.ts.map +1 -0
  208. package/dist/uploads/client/uploads-client.js +487 -0
  209. package/dist/uploads/client/uploads-client.js.map +1 -0
  210. package/dist/uploads/docs/uploads.docs.descriptor.d.ts +4 -0
  211. package/dist/uploads/docs/uploads.docs.descriptor.d.ts.map +1 -0
  212. package/dist/uploads/docs/uploads.docs.descriptor.js +65 -0
  213. package/dist/uploads/docs/uploads.docs.descriptor.js.map +1 -0
  214. package/dist/uploads/docs/uploads.share-links.docs.descriptor.d.ts +22 -0
  215. package/dist/uploads/docs/uploads.share-links.docs.descriptor.d.ts.map +1 -0
  216. package/dist/uploads/docs/uploads.share-links.docs.descriptor.js +86 -0
  217. package/dist/uploads/docs/uploads.share-links.docs.descriptor.js.map +1 -0
  218. package/dist/uploads/index.d.ts +12 -0
  219. package/dist/uploads/index.d.ts.map +1 -0
  220. package/dist/uploads/index.js +13 -0
  221. package/dist/uploads/index.js.map +1 -0
  222. package/dist/uploads/schemas/common.d.ts +135 -0
  223. package/dist/uploads/schemas/common.d.ts.map +1 -0
  224. package/dist/uploads/schemas/common.js +152 -0
  225. package/dist/uploads/schemas/common.js.map +1 -0
  226. package/dist/uploads/schemas/forms.d.ts +59 -0
  227. package/dist/uploads/schemas/forms.d.ts.map +1 -0
  228. package/dist/uploads/schemas/forms.js +41 -0
  229. package/dist/uploads/schemas/forms.js.map +1 -0
  230. package/dist/uploads/schemas/index.d.ts +18 -0
  231. package/dist/uploads/schemas/index.d.ts.map +1 -0
  232. package/dist/uploads/schemas/index.js +13 -0
  233. package/dist/uploads/schemas/index.js.map +1 -0
  234. package/dist/uploads/schemas/records.d.ts +81 -0
  235. package/dist/uploads/schemas/records.d.ts.map +1 -0
  236. package/dist/uploads/schemas/records.js +82 -0
  237. package/dist/uploads/schemas/records.js.map +1 -0
  238. package/dist/uploads/schemas/requests.d.ts +32 -0
  239. package/dist/uploads/schemas/requests.d.ts.map +1 -0
  240. package/dist/uploads/schemas/requests.js +30 -0
  241. package/dist/uploads/schemas/requests.js.map +1 -0
  242. package/dist/uploads/schemas/shares.d.ts +67 -0
  243. package/dist/uploads/schemas/shares.d.ts.map +1 -0
  244. package/dist/uploads/schemas/shares.js +39 -0
  245. package/dist/uploads/schemas/shares.js.map +1 -0
  246. package/dist/uploads/server/backend.d.ts +8 -0
  247. package/dist/uploads/server/backend.d.ts.map +1 -0
  248. package/dist/uploads/server/backend.js +11 -0
  249. package/dist/uploads/server/backend.js.map +1 -0
  250. package/dist/uploads/server/config.d.ts +5 -0
  251. package/dist/uploads/server/config.d.ts.map +1 -0
  252. package/dist/uploads/server/config.js +38 -0
  253. package/dist/uploads/server/config.js.map +1 -0
  254. package/dist/uploads/server/service.d.ts +77 -0
  255. package/dist/uploads/server/service.d.ts.map +1 -0
  256. package/dist/uploads/server/service.js +152 -0
  257. package/dist/uploads/server/service.js.map +1 -0
  258. package/dist/uploads/server/storage-client.d.ts +11 -0
  259. package/dist/uploads/server/storage-client.d.ts.map +1 -0
  260. package/dist/uploads/server/storage-client.js +23 -0
  261. package/dist/uploads/server/storage-client.js.map +1 -0
  262. package/dist/uploads/server/storage.d.ts +40 -0
  263. package/dist/uploads/server/storage.d.ts.map +1 -0
  264. package/dist/uploads/server/storage.js +59 -0
  265. package/dist/uploads/server/storage.js.map +1 -0
  266. package/dist/uploads/uploads.plugin.d.ts +11 -0
  267. package/dist/uploads/uploads.plugin.d.ts.map +1 -0
  268. package/dist/uploads/uploads.plugin.js +89 -0
  269. package/dist/uploads/uploads.plugin.js.map +1 -0
  270. package/dist/utils/attempt.d.ts +27 -0
  271. package/dist/utils/attempt.d.ts.map +1 -0
  272. package/dist/utils/attempt.js +39 -0
  273. package/dist/utils/attempt.js.map +1 -0
  274. package/dist/utils/failure-message.d.ts +8 -0
  275. package/dist/utils/failure-message.d.ts.map +1 -0
  276. package/dist/utils/failure-message.js +28 -0
  277. package/dist/utils/failure-message.js.map +1 -0
  278. package/package.json +257 -4
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Descriptor for uploads.share-links
3
+ */
4
+ const uploadsShareLinksMarkdown = `---
5
+ title: Uploads Share Links
6
+ summary: Revocable, owner-funded public share links for uploaded media
7
+ tags: [uploads, sharing, media, links]
8
+ parent: uploads
9
+ order: 2
10
+ ---
11
+
12
+ # Uploads Share Links
13
+
14
+ Share links turn a private media item into an anonymously-fetchable URL without
15
+ making the file public. Each link is opaque, high-entropy, and individually
16
+ revocable. Egress on share downloads is billed to the media **owner** — a share
17
+ link is owner-funded distribution, not free public egress — and \`maxDownloads\`
18
+ is the owner's hard cost cap.
19
+
20
+ ## What this provides
21
+
22
+ - **\`UploadsClient.createShareLink(fileId, { label?, expiresIn?, maxDownloads? })\`**
23
+ — creates a link, returns a \`ShareLink\` with an absolute public \`shareUrl\`.
24
+ - **\`UploadsClient.listShareLinks(fileId)\`** — lists a file's active + revoked links.
25
+ - **\`UploadsClient.revokeShareLink(fileId, shareId)\`** — soft-revokes a link.
26
+ - **\`ShareLink\` / \`CreateShareLinkOptions\`** wire types (\`@vibesdotdev/media/uploads/schemas\`).
27
+
28
+ ## Usage
29
+
30
+ \`\`\`ts
31
+ import { getVibesUploadsClient } from '@vibesdotdev/media/uploads/client';
32
+
33
+ const uploads = await getVibesUploadsClient(runtime);
34
+ const link = await uploads.createShareLink(fileId, { label: 'Twitter' });
35
+ // link.shareUrl → https://platform.vibes.dev/api/storage/shared/<token>
36
+ await uploads.revokeShareLink(fileId, link.id); // revocation is immediate at origin
37
+ \`\`\`
38
+
39
+ Before serialization, \`createShareLinkOptionsSchema\` validates label length
40
+ (at most 120 characters), positive integer expiry seconds and download caps.
41
+ Only parsed fields are serialized. Malformed or throwing options refuse with
42
+ \`INVALID_INPUT/upload-share-options-invalid\` before transport, without
43
+ retaining rejected values or accessor errors.
44
+
45
+ ## Routing
46
+
47
+ The canonical row (\`media_share_tokens\`) and HTTP routes live in
48
+ \`apps/platform-web\`:
49
+
50
+ - \`POST/GET /api/storage/files/[id]/shares\` — owner-only create / list.
51
+ - \`DELETE /api/storage/files/[id]/shares/[shareId]\` — owner-only revoke.
52
+ - \`GET /api/storage/shared/[token]\` — public, session-bypassed serving route.
53
+
54
+ The reusable UI (\`<ShareButton>\` / \`<ShareDialog>\`) lives in
55
+ \`@vibesdotdev/media/svelte/sharing\`.
56
+
57
+ ## Caveats
58
+
59
+ - A revoked token is immediately rejected at the origin, but a CDN copy cached
60
+ under the token may persist until its short \`max-age\` TTL expires.
61
+ - Tokens appear in URL paths, so they can land in CDN/access logs and browser
62
+ history. Treat a leaked token as a leaked file until revoked.
63
+
64
+ ## Related topics
65
+
66
+ - [\`uploads\`](uploads) — the uploads/store kind and client surface
67
+ `;
68
+ const descriptor = {
69
+ kind: 'docs/topic',
70
+ id: 'uploads.share-links',
71
+ title: 'Uploads Share Links',
72
+ summary: 'Revocable, owner-funded public share links for uploaded media',
73
+ body: {
74
+ type: 'markdown',
75
+ sourceType: 'raw',
76
+ source: uploadsShareLinksMarkdown
77
+ },
78
+ parent: 'uploads',
79
+ order: 2,
80
+ tags: ['uploads', 'sharing', 'media', 'links'],
81
+ surfaces: ['cli', 'web', 'in-app'],
82
+ hardware: ['consumer', 'cloud'],
83
+ enabled: true
84
+ };
85
+ export default descriptor;
86
+ //# sourceMappingURL=uploads.share-links.docs.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.share-links.docs.descriptor.js","sourceRoot":"","sources":["../../../src/uploads/docs/uploads.share-links.docs.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DjC,CAAC;AAEF,MAAM,UAAU,GAAG;IAClB,IAAI,EAAE,YAAqB;IAC3B,EAAE,EAAE,qBAAqB;IACzB,KAAK,EAAE,qBAAqB;IAC5B,OAAO,EAAE,+DAA+D;IACxE,IAAI,EAAE;QACL,IAAI,EAAE,UAAmB;QACzB,UAAU,EAAE,KAAc;QAC1B,MAAM,EAAE,yBAAyB;KACjC;IACD,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAU;IAC3C,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAU;IACxC,OAAO,EAAE,IAAI;CACb,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Uploads Module - Exports
3
+ *
4
+ * Runtime-resolved file/object storage. Provides the uploads/store kind,
5
+ * validation primitives, schemas, and the UploadsClient runtime client.
6
+ */
7
+ export { uploadKinds, uploadKindSchema, storageBackends, allowedMimeTypeSchema, MAX_FILE_SIZE, ALLOWED_MIME_TYPES, mimeTypeToExtension, extensionToMimeType, resolveMimeTypeFromExtension, resolveExtensionFromMimeType, UploadValidationError, validateUpload, uploadRequestSchema, uploadFileSchema, uploadResponseSchema, uploadServerResponseSchema, getUploadUrlRequestSchema, deleteUploadRequestSchema, shareLinkSchema, createShareLinkOptionsSchema, shareLinkResultSchema, shareLinkListResultSchema, } from './schemas/index.ts';
8
+ export type { UploadKind, StorageBackend, StorageResult, UploadOptions, StorageConfig, UploadServerResponse, UploadRequest, UploadFile, UploadResponse, GetUploadUrlRequest, DeleteUploadRequest, Upload, NewUpload, ShareLink, CreateShareLinkOptions, } from './schemas/index.ts';
9
+ export { UploadsClient, createUploadsClient, getVibesUploadsClient } from './client/index.ts';
10
+ export type { UploadResult, FileRecord, StorageUsageResult, } from './client/index.ts';
11
+ export { uploadsPlugin } from './uploads.plugin.ts';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/uploads/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACN,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,EACN,SAAS,EACT,SAAS,EACT,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC9F,YAAY,EACX,YAAY,EACZ,UAAU,EACV,kBAAkB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Uploads Module - Exports
3
+ *
4
+ * Runtime-resolved file/object storage. Provides the uploads/store kind,
5
+ * validation primitives, schemas, and the UploadsClient runtime client.
6
+ */
7
+ // Schemas (browser-safe)
8
+ export { uploadKinds, uploadKindSchema, storageBackends, allowedMimeTypeSchema, MAX_FILE_SIZE, ALLOWED_MIME_TYPES, mimeTypeToExtension, extensionToMimeType, resolveMimeTypeFromExtension, resolveExtensionFromMimeType, UploadValidationError, validateUpload, uploadRequestSchema, uploadFileSchema, uploadResponseSchema, uploadServerResponseSchema, getUploadUrlRequestSchema, deleteUploadRequestSchema, shareLinkSchema, createShareLinkOptionsSchema, shareLinkResultSchema, shareLinkListResultSchema, } from "./schemas/index.js";
9
+ // Client
10
+ export { UploadsClient, createUploadsClient, getVibesUploadsClient } from "./client/index.js";
11
+ // Plugin
12
+ export { uploadsPlugin } from "./uploads.plugin.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/uploads/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yBAAyB;AACzB,OAAO,EACN,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,oBAAoB,CAAC;AAmB5B,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAO9F,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Upload Schema - Common Types
3
+ *
4
+ * Shared types and utilities for file uploads.
5
+ */
6
+ import * as z from 'zod/v4';
7
+ import { CapabilityError } from '@vibesdotdev/kernel';
8
+ /**
9
+ * A caller's own limits for one upload. Owned here so the exported
10
+ * `validateUpload` primitive enforces the same contract the HTTP client
11
+ * request schema enforces: a size cap must be a positive safe integer
12
+ * (never NaN, negative, fractional, infinite, or unsafe), and an allowlist
13
+ * must be strings. `validateUpload` refuses non-conforming caps with
14
+ * `upload-limits-invalid` rather than silently comparing against them.
15
+ */
16
+ export declare const uploadLimitsSchema: z.ZodObject<{
17
+ maxSize: z.ZodOptional<z.ZodNumber>;
18
+ allowList: z.ZodOptional<z.ZodArray<z.ZodString>>;
19
+ }, z.core.$strip>;
20
+ export declare const uploadKinds: readonly ["media", "chat", "avatar", "document"];
21
+ export type UploadKind = z.infer<typeof uploadKindSchema>;
22
+ export declare const uploadKindSchema: z.ZodEnum<{
23
+ document: "document";
24
+ media: "media";
25
+ chat: "chat";
26
+ avatar: "avatar";
27
+ }>;
28
+ export declare const storageBackends: readonly ["local", "s3", "r2"];
29
+ export type StorageBackend = z.infer<typeof storageConfigSchema>['backend'];
30
+ export declare const storageResultSchema: z.ZodObject<{
31
+ storagePath: z.ZodString;
32
+ key: z.ZodOptional<z.ZodString>;
33
+ bucket: z.ZodOptional<z.ZodString>;
34
+ size: z.ZodNumber;
35
+ backend: z.ZodEnum<{
36
+ local: "local";
37
+ s3: "s3";
38
+ r2: "r2";
39
+ }>;
40
+ }, z.core.$strip>;
41
+ export type StorageResult = z.infer<typeof storageResultSchema>;
42
+ export declare const uploadBytesSchema: z.ZodPipe<z.ZodCustom<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>>, z.ZodTransform<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>>>;
43
+ export declare const uploadStorageOptionsSchema: z.ZodObject<{
44
+ kind: z.ZodEnum<{
45
+ document: "document";
46
+ media: "media";
47
+ chat: "chat";
48
+ avatar: "avatar";
49
+ }>;
50
+ userId: z.ZodString;
51
+ buffer: z.ZodPipe<z.ZodCustom<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>>, z.ZodTransform<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>>>;
52
+ contentType: z.ZodOptional<z.ZodString>;
53
+ originalName: z.ZodOptional<z.ZodString>;
54
+ conversationId: z.ZodOptional<z.ZodString>;
55
+ publicUpload: z.ZodOptional<z.ZodBoolean>;
56
+ }, z.core.$strip>;
57
+ export type UploadOptions = z.infer<typeof uploadStorageOptionsSchema>;
58
+ export declare const storageConfigSchema: z.ZodObject<{
59
+ backend: z.ZodEnum<{
60
+ local: "local";
61
+ s3: "s3";
62
+ r2: "r2";
63
+ }>;
64
+ localPath: z.ZodOptional<z.ZodString>;
65
+ s3Config: z.ZodOptional<z.ZodObject<{
66
+ bucket: z.ZodString;
67
+ region: z.ZodString;
68
+ endpoint: z.ZodOptional<z.ZodString>;
69
+ forcePathStyle: z.ZodOptional<z.ZodBoolean>;
70
+ publicBaseUrl: z.ZodOptional<z.ZodString>;
71
+ credentials: z.ZodOptional<z.ZodObject<{
72
+ accessKeyId: z.ZodString;
73
+ secretAccessKey: z.ZodString;
74
+ sessionToken: z.ZodOptional<z.ZodString>;
75
+ }, z.core.$strip>>;
76
+ }, z.core.$strip>>;
77
+ }, z.core.$strip>;
78
+ export type StorageConfig = z.infer<typeof storageConfigSchema>;
79
+ export declare const MAX_FILE_SIZE: number;
80
+ export declare const ALLOWED_MIME_TYPES: readonly ["image/jpeg", "image/png", "image/gif", "image/webp", "application/pdf", "text/plain", "text/markdown", "application/json"];
81
+ export declare const allowedMimeTypeSchema: z.ZodEnum<{
82
+ "image/jpeg": "image/jpeg";
83
+ "image/png": "image/png";
84
+ "image/gif": "image/gif";
85
+ "image/webp": "image/webp";
86
+ "application/pdf": "application/pdf";
87
+ "text/plain": "text/plain";
88
+ "text/markdown": "text/markdown";
89
+ "application/json": "application/json";
90
+ }>;
91
+ export declare const mimeTypeToExtension: {
92
+ readonly 'image/jpeg': "jpg";
93
+ readonly 'image/png': "png";
94
+ readonly 'image/gif': "gif";
95
+ readonly 'image/webp': "webp";
96
+ readonly 'application/pdf': "pdf";
97
+ readonly 'text/plain': "txt";
98
+ readonly 'text/markdown': "md";
99
+ readonly 'application/json': "json";
100
+ };
101
+ type AllowedMimeType = (typeof ALLOWED_MIME_TYPES)[number];
102
+ export declare const extensionToMimeType: Record<string, AllowedMimeType>;
103
+ export declare function resolveMimeTypeFromExtension(extension: string | undefined): string | null;
104
+ export declare function resolveExtensionFromMimeType(contentType: string | undefined): string | null;
105
+ /** The old validation codes, kept as `legacyCode`, and the typed refusal reason each now carries. */
106
+ declare const UPLOAD_VALIDATION_REASONS: {
107
+ readonly EMPTY_FILE: "upload-file-empty";
108
+ readonly FILE_TOO_LARGE: "upload-file-too-large";
109
+ readonly INVALID_MIME_TYPE: "upload-type-not-allowed";
110
+ readonly INVALID_SIZE: "upload-size-invalid";
111
+ readonly INVALID_LIMITS: "upload-limits-invalid";
112
+ };
113
+ export type UploadValidationLegacyCode = keyof typeof UPLOAD_VALIDATION_REASONS;
114
+ /** An upload that fails validation: `INVALID_INPUT` with the reason and the old code, naming no value. */
115
+ export declare class UploadValidationError extends CapabilityError {
116
+ readonly legacyCode: UploadValidationLegacyCode;
117
+ constructor(message: string, legacyCode: UploadValidationLegacyCode, options?: {
118
+ cause?: Error;
119
+ });
120
+ }
121
+ /** A caller's own limits for one upload: a size cap and a media-type allowlist, each replacing the package default. */
122
+ export type UploadLimits = z.input<typeof uploadLimitsSchema>;
123
+ /**
124
+ * Validates file metadata against constraints. The size must be a finite
125
+ * integer; the content type is compared by its media type alone. `limits`
126
+ * replaces the package size cap and allowlist for this one upload.
127
+ */
128
+ export declare function validateUpload(size: number, contentType?: string, limits?: UploadLimits): {
129
+ valid: true;
130
+ } | {
131
+ valid: false;
132
+ error: UploadValidationError;
133
+ };
134
+ export {};
135
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/uploads/schemas/common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,eAAO,MAAM,WAAW,kDAAmD,CAAC;AAC5E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,gBAAgB;;;;;EAAsB,CAAC;AAEpD,eAAO,MAAM,eAAe,gCAAiC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC,SAAS,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAG9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,iBAAiB,4JAC2B,CAAC;AAE1D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;iBAQrC,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEvE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;iBAW9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,aAAa,QAAmB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,uIASrB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;EAA6B,CAAC;AAEhE,eAAO,MAAM,mBAAmB;;;;;;;;;CASwC,CAAC;AAEzE,KAAK,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAM3D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAwC,CAAC;AAEzG,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGzF;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAI3F;AAED,qGAAqG;AACrG,QAAA,MAAM,yBAAyB;;;;;;CAMrB,CAAC;AAEX,MAAM,MAAM,0BAA0B,GAAG,MAAM,OAAO,yBAAyB,CAAC;AAEhF,0GAA0G;AAC1G,qBAAa,qBAAsB,SAAQ,eAAe;IACzD,SAAgB,UAAU,EAAE,0BAA0B,CAAC;gBAE3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,0BAA0B,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAUhG;AAOD,uHAAuH;AACvH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,wBAAgB,cAAc,CAC7B,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,MAAM,GAAE,YAAiB,GACvB;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAuClE"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Upload Schema - Common Types
3
+ *
4
+ * Shared types and utilities for file uploads.
5
+ */
6
+ import * as z from 'zod/v4';
7
+ import { CapabilityError } from '@vibesdotdev/kernel';
8
+ import { attemptSync } from "../../utils/attempt.js";
9
+ /**
10
+ * A caller's own limits for one upload. Owned here so the exported
11
+ * `validateUpload` primitive enforces the same contract the HTTP client
12
+ * request schema enforces: a size cap must be a positive safe integer
13
+ * (never NaN, negative, fractional, infinite, or unsafe), and an allowlist
14
+ * must be strings. `validateUpload` refuses non-conforming caps with
15
+ * `upload-limits-invalid` rather than silently comparing against them.
16
+ */
17
+ export const uploadLimitsSchema = z.object({
18
+ maxSize: z.number().int().positive().max(Number.MAX_SAFE_INTEGER).optional(),
19
+ allowList: z.array(z.string()).optional()
20
+ });
21
+ export const uploadKinds = ['media', 'chat', 'avatar', 'document'];
22
+ export const uploadKindSchema = z.enum(uploadKinds);
23
+ export const storageBackends = ['local', 's3', 'r2'];
24
+ export const storageResultSchema = z.object({
25
+ storagePath: z.string(), key: z.string().optional(), bucket: z.string().optional(),
26
+ size: z.number().int().nonnegative(), backend: z.enum(storageBackends)
27
+ });
28
+ export const uploadBytesSchema = z.custom(value => value instanceof Uint8Array)
29
+ .transform((value) => new Uint8Array(value));
30
+ export const uploadStorageOptionsSchema = z.object({
31
+ kind: uploadKindSchema,
32
+ userId: z.string(),
33
+ buffer: uploadBytesSchema,
34
+ contentType: z.string().optional(),
35
+ originalName: z.string().optional(),
36
+ conversationId: z.string().optional(),
37
+ publicUpload: z.boolean().optional()
38
+ });
39
+ export const storageConfigSchema = z.object({
40
+ backend: z.enum(storageBackends),
41
+ localPath: z.string().optional(),
42
+ s3Config: z.object({
43
+ bucket: z.string(), region: z.string(),
44
+ endpoint: z.string().optional(), forcePathStyle: z.boolean().optional(),
45
+ publicBaseUrl: z.string().optional(),
46
+ credentials: z.object({
47
+ accessKeyId: z.string(), secretAccessKey: z.string(), sessionToken: z.string().optional()
48
+ }).optional()
49
+ }).optional()
50
+ });
51
+ export const MAX_FILE_SIZE = 50 * 1024 * 1024; // 50MB
52
+ export const ALLOWED_MIME_TYPES = [
53
+ 'image/jpeg',
54
+ 'image/png',
55
+ 'image/gif',
56
+ 'image/webp',
57
+ 'application/pdf',
58
+ 'text/plain',
59
+ 'text/markdown',
60
+ 'application/json'
61
+ ];
62
+ export const allowedMimeTypeSchema = z.enum(ALLOWED_MIME_TYPES);
63
+ export const mimeTypeToExtension = {
64
+ 'image/jpeg': 'jpg',
65
+ 'image/png': 'png',
66
+ 'image/gif': 'gif',
67
+ 'image/webp': 'webp',
68
+ 'application/pdf': 'pdf',
69
+ 'text/plain': 'txt',
70
+ 'text/markdown': 'md',
71
+ 'application/json': 'json'
72
+ };
73
+ const extensionEntries = ALLOWED_MIME_TYPES.map((mimeType) => [mimeTypeToExtension[mimeType], mimeType]);
74
+ export const extensionToMimeType = Object.fromEntries(extensionEntries);
75
+ export function resolveMimeTypeFromExtension(extension) {
76
+ if (!extension)
77
+ return null;
78
+ return extensionToMimeType[extension.toLowerCase()] ?? null;
79
+ }
80
+ export function resolveExtensionFromMimeType(contentType) {
81
+ if (!contentType)
82
+ return null;
83
+ const mimeType = allowedMimeTypeSchema.safeParse(mediaTypeOf(contentType));
84
+ return mimeType.success ? mimeTypeToExtension[mimeType.data] : null;
85
+ }
86
+ /** The old validation codes, kept as `legacyCode`, and the typed refusal reason each now carries. */
87
+ const UPLOAD_VALIDATION_REASONS = {
88
+ EMPTY_FILE: 'upload-file-empty',
89
+ FILE_TOO_LARGE: 'upload-file-too-large',
90
+ INVALID_MIME_TYPE: 'upload-type-not-allowed',
91
+ INVALID_SIZE: 'upload-size-invalid',
92
+ INVALID_LIMITS: 'upload-limits-invalid'
93
+ };
94
+ /** An upload that fails validation: `INVALID_INPUT` with the reason and the old code, naming no value. */
95
+ export class UploadValidationError extends CapabilityError {
96
+ legacyCode;
97
+ constructor(message, legacyCode, options) {
98
+ super(message, 'INVALID_INPUT', {
99
+ reason: UPLOAD_VALIDATION_REASONS[legacyCode],
100
+ retryable: false,
101
+ details: { legacyCode },
102
+ cause: options?.cause
103
+ });
104
+ this.name = 'UploadValidationError';
105
+ this.legacyCode = legacyCode;
106
+ }
107
+ }
108
+ /** The media type alone: parameters after `;` dropped, trimmed and lower-cased. */
109
+ function mediaTypeOf(contentType) {
110
+ return (contentType.split(';')[0] ?? '').trim().toLowerCase();
111
+ }
112
+ /**
113
+ * Validates file metadata against constraints. The size must be a finite
114
+ * integer; the content type is compared by its media type alone. `limits`
115
+ * replaces the package size cap and allowlist for this one upload.
116
+ */
117
+ export function validateUpload(size, contentType, limits = {}) {
118
+ // Limits are validated through the owning schema, the same one the HTTP
119
+ // client request uses, so a NaN, negative, fractional, infinite, or unsafe
120
+ // cap is refused instead of silently loosening the comparison below.
121
+ const checkedLimits = attemptSync(() => uploadLimitsSchema.safeParse(limits));
122
+ if (!checkedLimits.ok || !checkedLimits.value.success) {
123
+ return {
124
+ valid: false,
125
+ error: new UploadValidationError('The upload limits are invalid.', 'INVALID_LIMITS')
126
+ };
127
+ }
128
+ if (!Number.isSafeInteger(size) || size < 0) {
129
+ return {
130
+ valid: false,
131
+ error: new UploadValidationError('The upload size is not a whole number of bytes.', 'INVALID_SIZE')
132
+ };
133
+ }
134
+ if (size === 0) {
135
+ return { valid: false, error: new UploadValidationError('The upload is empty.', 'EMPTY_FILE') };
136
+ }
137
+ if (size > (checkedLimits.value.data.maxSize ?? MAX_FILE_SIZE)) {
138
+ return {
139
+ valid: false,
140
+ error: new UploadValidationError('The upload is larger than the maximum size.', 'FILE_TOO_LARGE')
141
+ };
142
+ }
143
+ const allowList = checkedLimits.value.data.allowList?.map(mediaTypeOf) ?? ALLOWED_MIME_TYPES;
144
+ if (contentType && !allowList.some((allowed) => allowed === mediaTypeOf(contentType))) {
145
+ return {
146
+ valid: false,
147
+ error: new UploadValidationError('The upload type is not allowed.', 'INVALID_MIME_TYPE')
148
+ };
149
+ }
150
+ return { valid: true };
151
+ }
152
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/uploads/schemas/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Upload Schema - Form Validation
3
+ *
4
+ * Form schemas for file upload validation.
5
+ */
6
+ import * as z from 'zod/v4';
7
+ export declare const uploadRequestSchema: z.ZodObject<{
8
+ kind: z.ZodEnum<{
9
+ document: "document";
10
+ media: "media";
11
+ chat: "chat";
12
+ avatar: "avatar";
13
+ }>;
14
+ conversationId: z.ZodOptional<z.ZodUUID>;
15
+ publicUpload: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
16
+ }, z.core.$strip>;
17
+ export declare const uploadFileSchema: z.ZodObject<{
18
+ name: z.ZodString;
19
+ size: z.ZodNumber;
20
+ type: z.ZodOptional<z.ZodEnum<{
21
+ "image/jpeg": "image/jpeg";
22
+ "image/png": "image/png";
23
+ "image/gif": "image/gif";
24
+ "image/webp": "image/webp";
25
+ "application/pdf": "application/pdf";
26
+ "text/plain": "text/plain";
27
+ "text/markdown": "text/markdown";
28
+ "application/json": "application/json";
29
+ }>>;
30
+ }, z.core.$strip>;
31
+ export declare const uploadResponseSchema: z.ZodObject<{
32
+ id: z.ZodUUID;
33
+ storagePath: z.ZodString;
34
+ size: z.ZodNumber;
35
+ originalName: z.ZodOptional<z.ZodString>;
36
+ contentType: z.ZodOptional<z.ZodString>;
37
+ publicUrl: z.ZodOptional<z.ZodString>;
38
+ }, z.core.$strip>;
39
+ export declare const uploadServerResponseSchema: z.ZodObject<{
40
+ id: z.ZodString;
41
+ url: z.ZodString;
42
+ filename: z.ZodOptional<z.ZodString>;
43
+ mediaType: z.ZodOptional<z.ZodString>;
44
+ fileSize: z.ZodNumber;
45
+ }, z.core.$strip>;
46
+ export type UploadServerResponse = z.infer<typeof uploadServerResponseSchema>;
47
+ export declare const getUploadUrlRequestSchema: z.ZodObject<{
48
+ uploadId: z.ZodUUID;
49
+ expiresIn: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
50
+ }, z.core.$strip>;
51
+ export declare const deleteUploadRequestSchema: z.ZodObject<{
52
+ uploadId: z.ZodUUID;
53
+ }, z.core.$strip>;
54
+ export type UploadRequest = z.infer<typeof uploadRequestSchema>;
55
+ export type UploadFile = z.infer<typeof uploadFileSchema>;
56
+ export type UploadResponse = z.infer<typeof uploadResponseSchema>;
57
+ export type GetUploadUrlRequest = z.infer<typeof getUploadUrlRequestSchema>;
58
+ export type DeleteUploadRequest = z.infer<typeof deleteUploadRequestSchema>;
59
+ //# sourceMappingURL=forms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../../../src/uploads/schemas/forms.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,eAAO,MAAM,mBAAmB;;;;;;;;;iBAI9B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;iBAO/B,CAAC;AAGH,eAAO,MAAM,0BAA0B;;;;;;iBAMrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,yBAAyB;;;iBAGpC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;iBAEpC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Upload Schema - Form Validation
3
+ *
4
+ * Form schemas for file upload validation.
5
+ */
6
+ import * as z from 'zod/v4';
7
+ import { uploadKindSchema, allowedMimeTypeSchema, MAX_FILE_SIZE } from "./common.js";
8
+ export const uploadRequestSchema = z.object({
9
+ kind: uploadKindSchema,
10
+ conversationId: z.uuid().optional(),
11
+ publicUpload: z.boolean().optional().default(false)
12
+ });
13
+ export const uploadFileSchema = z.object({
14
+ name: z.string().min(1).max(255),
15
+ size: z.number().int().min(1).max(MAX_FILE_SIZE),
16
+ type: allowedMimeTypeSchema.optional()
17
+ });
18
+ export const uploadResponseSchema = z.object({
19
+ id: z.uuid(),
20
+ storagePath: z.string(),
21
+ size: z.number().int(),
22
+ originalName: z.string().optional(),
23
+ contentType: z.string().optional(),
24
+ publicUrl: z.string().optional()
25
+ });
26
+ // Server response from platform-web /api/storage/upload
27
+ export const uploadServerResponseSchema = z.object({
28
+ id: z.string().uuid(),
29
+ url: z.string().url(),
30
+ filename: z.string().optional(),
31
+ mediaType: z.string().optional(),
32
+ fileSize: z.number().int()
33
+ });
34
+ export const getUploadUrlRequestSchema = z.object({
35
+ uploadId: z.uuid(),
36
+ expiresIn: z.number().int().min(60).max(3600).optional().default(3600)
37
+ });
38
+ export const deleteUploadRequestSchema = z.object({
39
+ uploadId: z.uuid()
40
+ });
41
+ //# sourceMappingURL=forms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../../src/uploads/schemas/forms.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAErF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,gBAAgB;IACtB,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC;IAChD,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;IACZ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,wDAAwD;AACxD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CAC1B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;IAClB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACtE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE;CAClB,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Upload Schemas - Exports
3
+ *
4
+ * Browser-safe schema types and validation utilities.
5
+ * Table definitions are server-only and not exported here.
6
+ */
7
+ export { uploadStorageOptionsSchema, storageConfigSchema, storageResultSchema, uploadKinds, uploadKindSchema, storageBackends, allowedMimeTypeSchema, MAX_FILE_SIZE, ALLOWED_MIME_TYPES, mimeTypeToExtension, extensionToMimeType, resolveMimeTypeFromExtension, resolveExtensionFromMimeType, UploadValidationError, validateUpload, } from './common.ts';
8
+ export type { UploadKind, StorageBackend, StorageResult, UploadOptions, StorageConfig, } from './common.ts';
9
+ export { uploadRequestSchema, uploadFileSchema, uploadResponseSchema, uploadServerResponseSchema, getUploadUrlRequestSchema, deleteUploadRequestSchema, } from './forms.ts';
10
+ export type { UploadServerResponse, UploadRequest, UploadFile, UploadResponse, GetUploadUrlRequest, DeleteUploadRequest, } from './forms.ts';
11
+ export type { Upload, NewUpload, UploadUpdate } from './records.ts';
12
+ export { shareLinkSchema, createShareLinkOptionsSchema, shareLinkResultSchema, shareLinkListResultSchema, } from './shares.ts';
13
+ export type { ShareLink, CreateShareLinkOptions } from './shares.ts';
14
+ export { uploadClientOptionsSchema, uploadPayloadSchema } from './requests.ts';
15
+ export type { UploadClientOptions } from './requests.ts';
16
+ export { uploadLimitsSchema } from './common.ts';
17
+ export type { UploadLimits } from './common.ts';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/uploads/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACN,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,EACrB,cAAc,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACnB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGpE,OAAO,EACN,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC/E,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Upload Schemas - Exports
3
+ *
4
+ * Browser-safe schema types and validation utilities.
5
+ * Table definitions are server-only and not exported here.
6
+ */
7
+ export { uploadStorageOptionsSchema, storageConfigSchema, storageResultSchema, uploadKinds, uploadKindSchema, storageBackends, allowedMimeTypeSchema, MAX_FILE_SIZE, ALLOWED_MIME_TYPES, mimeTypeToExtension, extensionToMimeType, resolveMimeTypeFromExtension, resolveExtensionFromMimeType, UploadValidationError, validateUpload, } from "./common.js";
8
+ export { uploadRequestSchema, uploadFileSchema, uploadResponseSchema, uploadServerResponseSchema, getUploadUrlRequestSchema, deleteUploadRequestSchema, } from "./forms.js";
9
+ // Revocable share-link wire shapes (canonical row lives in platform-web)
10
+ export { shareLinkSchema, createShareLinkOptionsSchema, shareLinkResultSchema, shareLinkListResultSchema, } from "./shares.js";
11
+ export { uploadClientOptionsSchema, uploadPayloadSchema } from "./requests.js";
12
+ export { uploadLimitsSchema } from "./common.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/uploads/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACN,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,4BAA4B,EAC5B,4BAA4B,EAC5B,qBAAqB,EACrB,cAAc,GACd,MAAM,aAAa,CAAC;AAQrB,OAAO,EACN,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,YAAY,CAAC;AAapB,yEAAyE;AACzE,OAAO,EACN,eAAe,EACf,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}