@fragno-dev/upload 0.1.1 → 0.1.3

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 (301) hide show
  1. package/README.md +148 -12
  2. package/dist/browser/client/clients.js +17 -9
  3. package/dist/browser/client/clients.js.map +1 -1
  4. package/dist/browser/client/helpers.d.ts +15 -6
  5. package/dist/browser/client/helpers.d.ts.map +1 -1
  6. package/dist/browser/client/helpers.js +176 -30
  7. package/dist/browser/client/helpers.js.map +1 -1
  8. package/dist/browser/client/node_modules/.pnpm/{@nanostores_query@0.3.4_nanostores@1.1.0 → @nanostores_query@0.3.4_nanostores@1.2.0}/node_modules/@nanostores/query/dist/nanoquery.js +6 -6
  9. package/dist/browser/client/node_modules/.pnpm/{@nanostores_query@0.3.4_nanostores@1.1.0 → @nanostores_query@0.3.4_nanostores@1.2.0}/node_modules/@nanostores/query/dist/nanoquery.js.map +1 -1
  10. package/dist/browser/client/node_modules/.pnpm/{@nanostores_solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10 → @nanostores_solid@1.1.1_nanostores@1.2.0_solid-js@1.9.10}/node_modules/@nanostores/solid/dist/index.js +2 -2
  11. package/dist/browser/client/node_modules/.pnpm/{@nanostores_solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10 → @nanostores_solid@1.1.1_nanostores@1.2.0_solid-js@1.9.10}/node_modules/@nanostores/solid/dist/index.js.map +1 -1
  12. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/atom/index.js +2 -1
  13. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/atom/index.js.map +1 -0
  14. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/clean-stores/index.js +6 -0
  15. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/clean-stores/index.js.map +1 -1
  16. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/computed/index.js +8 -5
  17. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/computed/index.js.map +1 -0
  18. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/lifecycle/index.js +1 -1
  19. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/lifecycle/index.js.map +1 -1
  20. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/listen-keys/index.js +1 -1
  21. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/listen-keys/index.js.map +1 -1
  22. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/map/index.js +1 -1
  23. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/map/index.js.map +1 -1
  24. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/task/index.js +1 -1
  25. package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/task/index.js.map +1 -1
  26. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/warn/index.js +16 -0
  27. package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/warn/index.js.map +1 -0
  28. package/dist/browser/client/packages/fragment-upload/src/definition.js +1 -42
  29. package/dist/browser/client/packages/fragment-upload/src/definition.js.map +1 -1
  30. package/dist/browser/client/packages/fragment-upload/src/routes/files.js +12 -5
  31. package/dist/browser/client/packages/fragment-upload/src/routes/files.js.map +1 -1
  32. package/dist/browser/client/packages/fragment-upload/src/routes/shared.js +3 -4
  33. package/dist/browser/client/packages/fragment-upload/src/routes/shared.js.map +1 -1
  34. package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js +32 -21
  35. package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js.map +1 -1
  36. package/dist/browser/client/packages/fragment-upload/src/schema.js +33 -3
  37. package/dist/browser/client/packages/fragment-upload/src/schema.js.map +1 -1
  38. package/dist/browser/client/packages/fragment-upload/src/types.d.ts +1 -2
  39. package/dist/browser/client/packages/fragment-upload/src/types.d.ts.map +1 -1
  40. package/dist/browser/client/packages/fragno/dist/client/client.js +28 -12
  41. package/dist/browser/client/packages/fragno/dist/client/client.js.map +1 -1
  42. package/dist/browser/client/packages/fragno/dist/client/client.svelte.js +11 -3
  43. package/dist/browser/client/packages/fragno/dist/client/client.svelte.js.map +1 -1
  44. package/dist/browser/client/packages/fragno/dist/client/react.js +104 -12
  45. package/dist/browser/client/packages/fragno/dist/client/react.js.map +1 -1
  46. package/dist/browser/client/packages/fragno/dist/client/solid.js +25 -11
  47. package/dist/browser/client/packages/fragno/dist/client/solid.js.map +1 -1
  48. package/dist/browser/client/packages/fragno/dist/client/vanilla.js +21 -1
  49. package/dist/browser/client/packages/fragno/dist/client/vanilla.js.map +1 -1
  50. package/dist/browser/client/packages/fragno/dist/client/vue.js +19 -11
  51. package/dist/browser/client/packages/fragno/dist/client/vue.js.map +1 -1
  52. package/dist/browser/client/react.d.ts +215 -192
  53. package/dist/browser/client/react.d.ts.map +1 -1
  54. package/dist/browser/client/react.js.map +1 -1
  55. package/dist/browser/client/solid.d.ts +218 -196
  56. package/dist/browser/client/solid.d.ts.map +1 -1
  57. package/dist/browser/client/solid.js.map +1 -1
  58. package/dist/browser/client/svelte.d.ts +216 -193
  59. package/dist/browser/client/svelte.d.ts.map +1 -1
  60. package/dist/browser/client/svelte.js.map +1 -1
  61. package/dist/browser/client/vanilla.d.ts +217 -195
  62. package/dist/browser/client/vanilla.d.ts.map +1 -1
  63. package/dist/browser/client/vanilla.js.map +1 -1
  64. package/dist/browser/client/vue.d.ts +217 -194
  65. package/dist/browser/client/vue.d.ts.map +1 -1
  66. package/dist/browser/client/vue.js.map +1 -1
  67. package/dist/cli/commands/files/delete.d.ts +4 -4
  68. package/dist/cli/commands/files/delete.d.ts.map +1 -1
  69. package/dist/cli/commands/files/delete.js +8 -10
  70. package/dist/cli/commands/files/delete.js.map +1 -1
  71. package/dist/cli/commands/files/download-url.d.ts +4 -4
  72. package/dist/cli/commands/files/download-url.d.ts.map +1 -1
  73. package/dist/cli/commands/files/download-url.js +8 -10
  74. package/dist/cli/commands/files/download-url.js.map +1 -1
  75. package/dist/cli/commands/files/download.d.ts +4 -4
  76. package/dist/cli/commands/files/download.d.ts.map +1 -1
  77. package/dist/cli/commands/files/download.js +10 -12
  78. package/dist/cli/commands/files/download.js.map +1 -1
  79. package/dist/cli/commands/files/get.d.ts +4 -4
  80. package/dist/cli/commands/files/get.d.ts.map +1 -1
  81. package/dist/cli/commands/files/get.js +8 -10
  82. package/dist/cli/commands/files/get.js.map +1 -1
  83. package/dist/cli/commands/files/list.d.ts +4 -4
  84. package/dist/cli/commands/files/list.d.ts.map +1 -1
  85. package/dist/cli/commands/files/list.js +6 -8
  86. package/dist/cli/commands/files/list.js.map +1 -1
  87. package/dist/cli/commands/files/update.d.ts +4 -4
  88. package/dist/cli/commands/files/update.d.ts.map +1 -1
  89. package/dist/cli/commands/files/update.js +8 -10
  90. package/dist/cli/commands/files/update.js.map +1 -1
  91. package/dist/cli/commands/files/upload.d.ts +4 -4
  92. package/dist/cli/commands/files/upload.d.ts.map +1 -1
  93. package/dist/cli/commands/files/upload.js +10 -12
  94. package/dist/cli/commands/files/upload.js.map +1 -1
  95. package/dist/cli/commands/uploads/abort.d.ts +2 -2
  96. package/dist/cli/commands/uploads/abort.d.ts.map +1 -1
  97. package/dist/cli/commands/uploads/abort.js.map +1 -1
  98. package/dist/cli/commands/uploads/complete.d.ts +2 -2
  99. package/dist/cli/commands/uploads/complete.d.ts.map +1 -1
  100. package/dist/cli/commands/uploads/complete.js.map +1 -1
  101. package/dist/cli/commands/uploads/content.d.ts +2 -2
  102. package/dist/cli/commands/uploads/content.d.ts.map +1 -1
  103. package/dist/cli/commands/uploads/content.js +1 -1
  104. package/dist/cli/commands/uploads/content.js.map +1 -1
  105. package/dist/cli/commands/uploads/create.d.ts +4 -4
  106. package/dist/cli/commands/uploads/create.d.ts.map +1 -1
  107. package/dist/cli/commands/uploads/create.js +8 -11
  108. package/dist/cli/commands/uploads/create.js.map +1 -1
  109. package/dist/cli/commands/uploads/get.d.ts +2 -2
  110. package/dist/cli/commands/uploads/get.d.ts.map +1 -1
  111. package/dist/cli/commands/uploads/get.js.map +1 -1
  112. package/dist/cli/commands/uploads/parts-complete.d.ts +2 -2
  113. package/dist/cli/commands/uploads/parts-complete.d.ts.map +1 -1
  114. package/dist/cli/commands/uploads/parts-complete.js.map +1 -1
  115. package/dist/cli/commands/uploads/parts-list.d.ts +2 -2
  116. package/dist/cli/commands/uploads/parts-list.d.ts.map +1 -1
  117. package/dist/cli/commands/uploads/parts-list.js.map +1 -1
  118. package/dist/cli/commands/uploads/parts-urls.d.ts +2 -2
  119. package/dist/cli/commands/uploads/parts-urls.d.ts.map +1 -1
  120. package/dist/cli/commands/uploads/parts-urls.js.map +1 -1
  121. package/dist/cli/commands/uploads/progress.d.ts +2 -2
  122. package/dist/cli/commands/uploads/progress.d.ts.map +1 -1
  123. package/dist/cli/commands/uploads/progress.js.map +1 -1
  124. package/dist/cli/commands/uploads/transfer.d.ts +4 -4
  125. package/dist/cli/commands/uploads/transfer.d.ts.map +1 -1
  126. package/dist/cli/commands/uploads/transfer.js +9 -12
  127. package/dist/cli/commands/uploads/transfer.js.map +1 -1
  128. package/dist/cli/index.d.ts +13 -13
  129. package/dist/cli/index.d.ts.map +1 -1
  130. package/dist/cli/index.js +14 -14
  131. package/dist/cli/index.js.map +1 -1
  132. package/dist/cli/utils/client.js +22 -5
  133. package/dist/cli/utils/client.js.map +1 -1
  134. package/dist/cli/utils/options.js +7 -43
  135. package/dist/cli/utils/options.js.map +1 -1
  136. package/dist/node/cli/commands/files/delete.d.ts +4 -4
  137. package/dist/node/cli/commands/files/delete.d.ts.map +1 -1
  138. package/dist/node/cli/commands/files/delete.js +8 -10
  139. package/dist/node/cli/commands/files/delete.js.map +1 -1
  140. package/dist/node/cli/commands/files/download-url.d.ts +4 -4
  141. package/dist/node/cli/commands/files/download-url.d.ts.map +1 -1
  142. package/dist/node/cli/commands/files/download-url.js +8 -10
  143. package/dist/node/cli/commands/files/download-url.js.map +1 -1
  144. package/dist/node/cli/commands/files/download.d.ts +4 -4
  145. package/dist/node/cli/commands/files/download.d.ts.map +1 -1
  146. package/dist/node/cli/commands/files/download.js +9 -11
  147. package/dist/node/cli/commands/files/download.js.map +1 -1
  148. package/dist/node/cli/commands/files/get.d.ts +4 -4
  149. package/dist/node/cli/commands/files/get.d.ts.map +1 -1
  150. package/dist/node/cli/commands/files/get.js +8 -10
  151. package/dist/node/cli/commands/files/get.js.map +1 -1
  152. package/dist/node/cli/commands/files/list.d.ts +4 -4
  153. package/dist/node/cli/commands/files/list.d.ts.map +1 -1
  154. package/dist/node/cli/commands/files/list.js +6 -8
  155. package/dist/node/cli/commands/files/list.js.map +1 -1
  156. package/dist/node/cli/commands/files/update.d.ts +4 -4
  157. package/dist/node/cli/commands/files/update.d.ts.map +1 -1
  158. package/dist/node/cli/commands/files/update.js +8 -10
  159. package/dist/node/cli/commands/files/update.js.map +1 -1
  160. package/dist/node/cli/commands/files/upload.d.ts +4 -4
  161. package/dist/node/cli/commands/files/upload.d.ts.map +1 -1
  162. package/dist/node/cli/commands/files/upload.js +9 -11
  163. package/dist/node/cli/commands/files/upload.js.map +1 -1
  164. package/dist/node/cli/commands/uploads/abort.d.ts +2 -2
  165. package/dist/node/cli/commands/uploads/abort.d.ts.map +1 -1
  166. package/dist/node/cli/commands/uploads/abort.js.map +1 -1
  167. package/dist/node/cli/commands/uploads/complete.d.ts +2 -2
  168. package/dist/node/cli/commands/uploads/complete.d.ts.map +1 -1
  169. package/dist/node/cli/commands/uploads/complete.js.map +1 -1
  170. package/dist/node/cli/commands/uploads/content.d.ts +2 -2
  171. package/dist/node/cli/commands/uploads/content.d.ts.map +1 -1
  172. package/dist/node/cli/commands/uploads/content.js.map +1 -1
  173. package/dist/node/cli/commands/uploads/create.d.ts +4 -4
  174. package/dist/node/cli/commands/uploads/create.d.ts.map +1 -1
  175. package/dist/node/cli/commands/uploads/create.js +8 -11
  176. package/dist/node/cli/commands/uploads/create.js.map +1 -1
  177. package/dist/node/cli/commands/uploads/get.d.ts +2 -2
  178. package/dist/node/cli/commands/uploads/get.d.ts.map +1 -1
  179. package/dist/node/cli/commands/uploads/get.js.map +1 -1
  180. package/dist/node/cli/commands/uploads/parts-complete.d.ts +2 -2
  181. package/dist/node/cli/commands/uploads/parts-complete.d.ts.map +1 -1
  182. package/dist/node/cli/commands/uploads/parts-complete.js.map +1 -1
  183. package/dist/node/cli/commands/uploads/parts-list.d.ts +2 -2
  184. package/dist/node/cli/commands/uploads/parts-list.d.ts.map +1 -1
  185. package/dist/node/cli/commands/uploads/parts-list.js.map +1 -1
  186. package/dist/node/cli/commands/uploads/parts-urls.d.ts +2 -2
  187. package/dist/node/cli/commands/uploads/parts-urls.d.ts.map +1 -1
  188. package/dist/node/cli/commands/uploads/parts-urls.js.map +1 -1
  189. package/dist/node/cli/commands/uploads/progress.d.ts +2 -2
  190. package/dist/node/cli/commands/uploads/progress.d.ts.map +1 -1
  191. package/dist/node/cli/commands/uploads/progress.js.map +1 -1
  192. package/dist/node/cli/commands/uploads/transfer.d.ts +4 -4
  193. package/dist/node/cli/commands/uploads/transfer.d.ts.map +1 -1
  194. package/dist/node/cli/commands/uploads/transfer.js +8 -11
  195. package/dist/node/cli/commands/uploads/transfer.js.map +1 -1
  196. package/dist/node/cli/index.d.ts +13 -13
  197. package/dist/node/cli/index.d.ts.map +1 -1
  198. package/dist/node/cli/index.js +14 -14
  199. package/dist/node/cli/index.js.map +1 -1
  200. package/dist/node/cli/utils/client.js +22 -5
  201. package/dist/node/cli/utils/client.js.map +1 -1
  202. package/dist/node/cli/utils/options.js +7 -43
  203. package/dist/node/cli/utils/options.js.map +1 -1
  204. package/dist/node/client/clients.d.ts +217 -194
  205. package/dist/node/client/clients.d.ts.map +1 -1
  206. package/dist/node/client/clients.js +17 -9
  207. package/dist/node/client/clients.js.map +1 -1
  208. package/dist/node/client/helpers.d.ts +15 -6
  209. package/dist/node/client/helpers.d.ts.map +1 -1
  210. package/dist/node/client/helpers.js +176 -30
  211. package/dist/node/client/helpers.js.map +1 -1
  212. package/dist/node/client/react.d.ts +217 -194
  213. package/dist/node/client/react.d.ts.map +1 -1
  214. package/dist/node/client/react.js.map +1 -1
  215. package/dist/node/client/solid.d.ts +218 -196
  216. package/dist/node/client/solid.d.ts.map +1 -1
  217. package/dist/node/client/solid.js.map +1 -1
  218. package/dist/node/client/svelte.d.ts +216 -193
  219. package/dist/node/client/svelte.d.ts.map +1 -1
  220. package/dist/node/client/svelte.js.map +1 -1
  221. package/dist/node/client/vanilla.d.ts +217 -195
  222. package/dist/node/client/vanilla.d.ts.map +1 -1
  223. package/dist/node/client/vanilla.js.map +1 -1
  224. package/dist/node/client/vue.d.ts +217 -194
  225. package/dist/node/client/vue.d.ts.map +1 -1
  226. package/dist/node/client/vue.js.map +1 -1
  227. package/dist/node/config.d.ts +6 -6
  228. package/dist/node/config.d.ts.map +1 -1
  229. package/dist/node/config.js.map +1 -1
  230. package/dist/node/definition.d.ts +588 -219
  231. package/dist/node/definition.d.ts.map +1 -1
  232. package/dist/node/definition.js +27 -3
  233. package/dist/node/definition.js.map +1 -1
  234. package/dist/node/file-key.d.ts +19 -0
  235. package/dist/node/file-key.d.ts.map +1 -0
  236. package/dist/node/file-key.js +47 -0
  237. package/dist/node/file-key.js.map +1 -0
  238. package/dist/node/index.d.ts +582 -175
  239. package/dist/node/index.d.ts.map +1 -1
  240. package/dist/node/index.js +3 -2
  241. package/dist/node/index.js.map +1 -1
  242. package/dist/node/routes/files.js +99 -64
  243. package/dist/node/routes/files.js.map +1 -1
  244. package/dist/node/routes/index.d.ts +1497 -721
  245. package/dist/node/routes/index.d.ts.map +1 -1
  246. package/dist/node/routes/shared.js +5 -9
  247. package/dist/node/routes/shared.js.map +1 -1
  248. package/dist/node/routes/uploads.js +105 -47
  249. package/dist/node/routes/uploads.js.map +1 -1
  250. package/dist/node/schema.d.ts +6 -6
  251. package/dist/node/schema.d.ts.map +1 -1
  252. package/dist/node/schema.js +12 -3
  253. package/dist/node/schema.js.map +1 -1
  254. package/dist/node/services/files.d.ts +6 -2
  255. package/dist/node/services/files.d.ts.map +1 -1
  256. package/dist/node/services/files.js +22 -20
  257. package/dist/node/services/files.js.map +1 -1
  258. package/dist/node/services/helpers.js +37 -15
  259. package/dist/node/services/helpers.js.map +1 -1
  260. package/dist/node/services/uploads.d.ts +10 -5
  261. package/dist/node/services/uploads.d.ts.map +1 -1
  262. package/dist/node/services/uploads.js +340 -63
  263. package/dist/node/services/uploads.js.map +1 -1
  264. package/dist/node/storage/fs.d.ts.map +1 -1
  265. package/dist/node/storage/fs.js +16 -10
  266. package/dist/node/storage/fs.js.map +1 -1
  267. package/dist/node/storage/object-key.js +36 -0
  268. package/dist/node/storage/object-key.js.map +1 -0
  269. package/dist/node/storage/r2-binding.d.ts +59 -0
  270. package/dist/node/storage/r2-binding.d.ts.map +1 -0
  271. package/dist/node/storage/r2-binding.js +245 -0
  272. package/dist/node/storage/r2-binding.js.map +1 -0
  273. package/dist/node/storage/r2.d.ts +6 -5
  274. package/dist/node/storage/r2.d.ts.map +1 -1
  275. package/dist/node/storage/s3.d.ts.map +1 -1
  276. package/dist/node/storage/s3.js +16 -10
  277. package/dist/node/storage/s3.js.map +1 -1
  278. package/dist/node/storage/types.d.ts +6 -5
  279. package/dist/node/storage/types.d.ts.map +1 -1
  280. package/dist/node/types.d.ts +1 -2
  281. package/dist/node/types.d.ts.map +1 -1
  282. package/package.json +26 -46
  283. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/atom/index.js.map +0 -1
  284. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/clean-stores/index.js +0 -6
  285. package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/computed/index.js.map +0 -1
  286. package/dist/browser/client/packages/fragment-upload/src/keys.d.ts +0 -7
  287. package/dist/browser/client/packages/fragment-upload/src/keys.d.ts.map +0 -1
  288. package/dist/browser/client/packages/fragment-upload/src/keys.js +0 -28
  289. package/dist/browser/client/packages/fragment-upload/src/keys.js.map +0 -1
  290. package/dist/browser/index-BdjKPO4J.d.ts +0 -177
  291. package/dist/browser/index-BdjKPO4J.d.ts.map +0 -1
  292. package/dist/browser/index.js +0 -3
  293. package/dist/browser/src-vdNJUbjT.js +0 -1982
  294. package/dist/browser/src-vdNJUbjT.js.map +0 -1
  295. package/dist/cli/keys.js +0 -32
  296. package/dist/cli/keys.js.map +0 -1
  297. package/dist/node/keys.d.ts +0 -12
  298. package/dist/node/keys.d.ts.map +0 -1
  299. package/dist/node/keys.js +0 -63
  300. package/dist/node/keys.js.map +0 -1
  301. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,4 +1,4 @@
1
- import { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue } from "../../utils/options.js";
1
+ import { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue, resolveProviderValue } from "../../utils/options.js";
2
2
  import { define } from "gunshi";
3
3
 
4
4
  //#region src/cli/commands/files/update.ts
@@ -7,13 +7,13 @@ const filesUpdateCommand = define({
7
7
  description: "Update file metadata",
8
8
  args: {
9
9
  ...baseArgs,
10
- "file-key": {
10
+ provider: {
11
11
  type: "string",
12
- description: "File key (encoded)"
12
+ description: "Storage provider"
13
13
  },
14
- "key-parts": {
14
+ "file-key": {
15
15
  type: "string",
16
- description: "File key parts as JSON array"
16
+ description: "File key"
17
17
  },
18
18
  filename: {
19
19
  type: "string",
@@ -33,17 +33,15 @@ const filesUpdateCommand = define({
33
33
  }
34
34
  },
35
35
  run: async (ctx) => {
36
- const resolvedKey = resolveFileKeyValue({
37
- fileKey: ctx.values["file-key"],
38
- keyParts: ctx.values["key-parts"]
39
- });
36
+ const provider = resolveProviderValue(ctx.values["provider"]);
37
+ const resolvedKey = resolveFileKeyValue({ fileKey: ctx.values["file-key"] });
40
38
  const payload = {};
41
39
  if (ctx.values["filename"]) payload["filename"] = ctx.values["filename"];
42
40
  if (ctx.values["visibility"]) payload["visibility"] = ctx.values["visibility"];
43
41
  if (ctx.values["tags"] !== void 0) payload["tags"] = parseJsonValue("tags", ctx.values["tags"]);
44
42
  if (ctx.values["metadata"] !== void 0) payload["metadata"] = parseJsonValue("metadata", ctx.values["metadata"]);
45
43
  if (Object.keys(payload).length === 0) throw new Error("Provide at least one field to update.");
46
- const response = await createClientFromContext(ctx).updateFile(resolvedKey.fileKey, payload);
44
+ const response = await createClientFromContext(ctx).updateFile(provider, resolvedKey.fileKey, payload);
47
45
  console.log(JSON.stringify(response, null, 2));
48
46
  }
49
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","names":["payload: Record<string, unknown>"],"sources":["../../../../../src/cli/commands/files/update.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport {\n baseArgs,\n createClientFromContext,\n parseJsonValue,\n resolveFileKeyValue,\n} from \"../../utils/options.js\";\n\nexport const filesUpdateCommand = define({\n name: \"update\",\n description: \"Update file metadata\",\n args: {\n ...baseArgs,\n \"file-key\": {\n type: \"string\",\n description: \"File key (encoded)\",\n },\n \"key-parts\": {\n type: \"string\",\n description: \"File key parts as JSON array\",\n },\n filename: {\n type: \"string\",\n description: \"New filename\",\n },\n visibility: {\n type: \"string\",\n description: \"Visibility (private, public, unlisted)\",\n },\n tags: {\n type: \"string\",\n description: \"Tags JSON array or null\",\n },\n metadata: {\n type: \"string\",\n description: \"Metadata JSON object or null\",\n },\n },\n run: async (ctx) => {\n const resolvedKey = resolveFileKeyValue({\n fileKey: ctx.values[\"file-key\"] as string | undefined,\n keyParts: ctx.values[\"key-parts\"] as string | undefined,\n });\n\n const payload: Record<string, unknown> = {};\n if (ctx.values[\"filename\"]) {\n payload[\"filename\"] = ctx.values[\"filename\"] as string;\n }\n if (ctx.values[\"visibility\"]) {\n payload[\"visibility\"] = ctx.values[\"visibility\"] as string;\n }\n if (ctx.values[\"tags\"] !== undefined) {\n payload[\"tags\"] = parseJsonValue(\"tags\", ctx.values[\"tags\"] as string | undefined);\n }\n if (ctx.values[\"metadata\"] !== undefined) {\n payload[\"metadata\"] = parseJsonValue(\n \"metadata\",\n ctx.values[\"metadata\"] as string | undefined,\n );\n }\n\n if (Object.keys(payload).length === 0) {\n throw new Error(\"Provide at least one field to update.\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.updateFile(resolvedKey.fileKey, payload);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAQA,MAAa,qBAAqB,OAAO;CACvC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,cAAc,oBAAoB;GACtC,SAAS,IAAI,OAAO;GACpB,UAAU,IAAI,OAAO;GACtB,CAAC;EAEF,MAAMA,UAAmC,EAAE;AAC3C,MAAI,IAAI,OAAO,YACb,SAAQ,cAAc,IAAI,OAAO;AAEnC,MAAI,IAAI,OAAO,cACb,SAAQ,gBAAgB,IAAI,OAAO;AAErC,MAAI,IAAI,OAAO,YAAY,OACzB,SAAQ,UAAU,eAAe,QAAQ,IAAI,OAAO,QAA8B;AAEpF,MAAI,IAAI,OAAO,gBAAgB,OAC7B,SAAQ,cAAc,eACpB,YACA,IAAI,OAAO,YACZ;AAGH,MAAI,OAAO,KAAK,QAAQ,CAAC,WAAW,EAClC,OAAM,IAAI,MAAM,wCAAwC;EAI1D,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,WAAW,YAAY,SAAS,QAAQ;AACtE,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"update.js","names":["payload: Record<string, unknown>"],"sources":["../../../../../src/cli/commands/files/update.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport {\n baseArgs,\n createClientFromContext,\n parseJsonValue,\n resolveFileKeyValue,\n resolveProviderValue,\n} from \"../../utils/options.js\";\n\nexport const filesUpdateCommand = define({\n name: \"update\",\n description: \"Update file metadata\",\n args: {\n ...baseArgs,\n provider: {\n type: \"string\",\n description: \"Storage provider\",\n },\n \"file-key\": {\n type: \"string\",\n description: \"File key\",\n },\n filename: {\n type: \"string\",\n description: \"New filename\",\n },\n visibility: {\n type: \"string\",\n description: \"Visibility (private, public, unlisted)\",\n },\n tags: {\n type: \"string\",\n description: \"Tags JSON array or null\",\n },\n metadata: {\n type: \"string\",\n description: \"Metadata JSON object or null\",\n },\n },\n run: async (ctx) => {\n const provider = resolveProviderValue(ctx.values[\"provider\"] as string | undefined);\n const resolvedKey = resolveFileKeyValue({\n fileKey: ctx.values[\"file-key\"] as string | undefined,\n });\n\n const payload: Record<string, unknown> = {};\n if (ctx.values[\"filename\"]) {\n payload[\"filename\"] = ctx.values[\"filename\"] as string;\n }\n if (ctx.values[\"visibility\"]) {\n payload[\"visibility\"] = ctx.values[\"visibility\"] as string;\n }\n if (ctx.values[\"tags\"] !== undefined) {\n payload[\"tags\"] = parseJsonValue(\"tags\", ctx.values[\"tags\"] as string | undefined);\n }\n if (ctx.values[\"metadata\"] !== undefined) {\n payload[\"metadata\"] = parseJsonValue(\n \"metadata\",\n ctx.values[\"metadata\"] as string | undefined,\n );\n }\n\n if (Object.keys(payload).length === 0) {\n throw new Error(\"Provide at least one field to update.\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.updateFile(provider, resolvedKey.fileKey, payload);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAUA,MAAa,qBAAqB,OAAO;CACvC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,qBAAqB,IAAI,OAAO,YAAkC;EACnF,MAAM,cAAc,oBAAoB,EACtC,SAAS,IAAI,OAAO,aACrB,CAAC;EAEF,MAAMA,UAAmC,EAAE;AAC3C,MAAI,IAAI,OAAO,YACb,SAAQ,cAAc,IAAI,OAAO;AAEnC,MAAI,IAAI,OAAO,cACb,SAAQ,gBAAgB,IAAI,OAAO;AAErC,MAAI,IAAI,OAAO,YAAY,OACzB,SAAQ,UAAU,eAAe,QAAQ,IAAI,OAAO,QAA8B;AAEpF,MAAI,IAAI,OAAO,gBAAgB,OAC7B,SAAQ,cAAc,eACpB,YACA,IAAI,OAAO,YACZ;AAGH,MAAI,OAAO,KAAK,QAAQ,CAAC,WAAW,EAClC,OAAM,IAAI,MAAM,wCAAwC;EAI1D,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,WAAW,UAAU,YAAY,SAAS,QAAQ;AAChF,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,17 +1,17 @@
1
- import * as gunshi11 from "gunshi";
1
+ import * as gunshi6 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/files/upload.d.ts
4
- declare const filesUploadCommand: gunshi11.Command<{
4
+ declare const filesUploadCommand: gunshi6.Command<{
5
5
  file: {
6
6
  type: "string";
7
7
  short: string;
8
8
  description: string;
9
9
  };
10
- "file-key": {
10
+ provider: {
11
11
  type: "string";
12
12
  description: string;
13
13
  };
14
- "key-parts": {
14
+ "file-key": {
15
15
  type: "string";
16
16
  description: string;
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","names":[],"sources":["../../../../../src/cli/commands/files/upload.ts"],"sourcesContent":[],"mappings":";;;cAYa,oBAuGX,QAAA,CAvG6B;;;IAAlB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"upload.d.ts","names":[],"sources":["../../../../../src/cli/commands/files/upload.ts"],"sourcesContent":[],"mappings":";;;cAea,oBAmGX,OAAA,CAnG6B;;;IAAlB,KAAA,EAAA,MAAA"}
@@ -1,4 +1,4 @@
1
- import { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue } from "../../utils/options.js";
1
+ import { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue, resolveProviderValue } from "../../utils/options.js";
2
2
  import { promises } from "node:fs";
3
3
  import path from "node:path";
4
4
  import { define } from "gunshi";
@@ -15,13 +15,13 @@ const filesUploadCommand = define({
15
15
  short: "f",
16
16
  description: "Path to file"
17
17
  },
18
- "file-key": {
18
+ provider: {
19
19
  type: "string",
20
- description: "File key (encoded)"
20
+ description: "Storage provider"
21
21
  },
22
- "key-parts": {
22
+ "file-key": {
23
23
  type: "string",
24
- description: "File key parts as JSON array"
24
+ description: "File key"
25
25
  },
26
26
  filename: {
27
27
  type: "string",
@@ -58,17 +58,15 @@ const filesUploadCommand = define({
58
58
  const fileBuffer = await promises.readFile(filePath);
59
59
  const filename = ctx.values["filename"] ?? path.basename(filePath);
60
60
  const contentType = ctx.values["content-type"] ?? DEFAULT_CONTENT_TYPE;
61
- const resolvedKey = resolveFileKeyValue({
62
- fileKey: ctx.values["file-key"],
63
- keyParts: ctx.values["key-parts"]
64
- });
61
+ const provider = resolveProviderValue(ctx.values["provider"]);
62
+ const resolvedKey = resolveFileKeyValue({ fileKey: ctx.values["file-key"] });
65
63
  const checksum = parseJsonValue("checksum", ctx.values["checksum"]);
66
64
  const tags = parseJsonValue("tags", ctx.values["tags"]);
67
65
  const metadata = parseJsonValue("metadata", ctx.values["metadata"]);
68
66
  const form = new FormData();
69
67
  form.append("file", new File([fileBuffer], filename, { type: contentType }));
70
- if (resolvedKey.fileKey) form.append("fileKey", resolvedKey.fileKey);
71
- if (resolvedKey.keyParts) form.append("keyParts", JSON.stringify(resolvedKey.keyParts));
68
+ form.append("provider", provider);
69
+ form.append("fileKey", resolvedKey.fileKey);
72
70
  if (checksum !== void 0) form.append("checksum", JSON.stringify(checksum));
73
71
  if (tags !== void 0) form.append("tags", JSON.stringify(tags));
74
72
  if (metadata !== void 0) form.append("metadata", JSON.stringify(metadata));
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","names":["fs"],"sources":["../../../../../src/cli/commands/files/upload.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\nimport {\n baseArgs,\n createClientFromContext,\n parseJsonValue,\n resolveFileKeyValue,\n} from \"../../utils/options.js\";\n\nconst DEFAULT_CONTENT_TYPE = \"application/octet-stream\";\n\nexport const filesUploadCommand = define({\n name: \"upload\",\n description: \"Upload a file via the /files endpoint\",\n args: {\n ...baseArgs,\n file: {\n type: \"string\",\n short: \"f\",\n description: \"Path to file\",\n },\n \"file-key\": {\n type: \"string\",\n description: \"File key (encoded)\",\n },\n \"key-parts\": {\n type: \"string\",\n description: \"File key parts as JSON array\",\n },\n filename: {\n type: \"string\",\n description: \"Override filename\",\n },\n \"content-type\": {\n type: \"string\",\n description: \"Content type (default: application/octet-stream)\",\n },\n checksum: {\n type: \"string\",\n description: \"Checksum JSON\",\n },\n tags: {\n type: \"string\",\n description: \"Tags as JSON array\",\n },\n visibility: {\n type: \"string\",\n description: \"Visibility (private, public, unlisted)\",\n },\n \"uploader-id\": {\n type: \"string\",\n description: \"Uploader id\",\n },\n metadata: {\n type: \"string\",\n description: \"Metadata JSON object\",\n },\n },\n run: async (ctx) => {\n const filePath = ctx.values[\"file\"] as string | undefined;\n if (!filePath) {\n throw new Error(\"Missing --file\");\n }\n\n const fileBuffer = await fs.readFile(filePath);\n const filename = (ctx.values[\"filename\"] as string | undefined) ?? path.basename(filePath);\n const contentType = (ctx.values[\"content-type\"] as string | undefined) ?? DEFAULT_CONTENT_TYPE;\n\n const resolvedKey = resolveFileKeyValue({\n fileKey: ctx.values[\"file-key\"] as string | undefined,\n keyParts: ctx.values[\"key-parts\"] as string | undefined,\n });\n\n const checksum = parseJsonValue(\"checksum\", ctx.values[\"checksum\"] as string | undefined);\n const tags = parseJsonValue(\"tags\", ctx.values[\"tags\"] as string | undefined);\n const metadata = parseJsonValue(\"metadata\", ctx.values[\"metadata\"] as string | undefined);\n\n const form = new FormData();\n form.append(\"file\", new File([fileBuffer], filename, { type: contentType }));\n\n if (resolvedKey.fileKey) {\n form.append(\"fileKey\", resolvedKey.fileKey);\n }\n if (resolvedKey.keyParts) {\n form.append(\"keyParts\", JSON.stringify(resolvedKey.keyParts));\n }\n if (checksum !== undefined) {\n form.append(\"checksum\", JSON.stringify(checksum));\n }\n if (tags !== undefined) {\n form.append(\"tags\", JSON.stringify(tags));\n }\n if (metadata !== undefined) {\n form.append(\"metadata\", JSON.stringify(metadata));\n }\n\n const uploaderId = ctx.values[\"uploader-id\"] as string | undefined;\n if (uploaderId) {\n form.append(\"uploaderId\", uploaderId);\n }\n\n const visibility = ctx.values[\"visibility\"] as string | undefined;\n if (visibility) {\n form.append(\"visibility\", visibility);\n }\n\n if (ctx.values[\"filename\"]) {\n form.append(\"filename\", filename);\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.createFile(form);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;;;AAUA,MAAM,uBAAuB;AAE7B,MAAa,qBAAqB,OAAO;CACvC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,MAAM;GACJ,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,gBAAgB;GACd,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,eAAe;GACb,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,iBAAiB;EAGnC,MAAM,aAAa,MAAMA,SAAG,SAAS,SAAS;EAC9C,MAAM,WAAY,IAAI,OAAO,eAAsC,KAAK,SAAS,SAAS;EAC1F,MAAM,cAAe,IAAI,OAAO,mBAA0C;EAE1E,MAAM,cAAc,oBAAoB;GACtC,SAAS,IAAI,OAAO;GACpB,UAAU,IAAI,OAAO;GACtB,CAAC;EAEF,MAAM,WAAW,eAAe,YAAY,IAAI,OAAO,YAAkC;EACzF,MAAM,OAAO,eAAe,QAAQ,IAAI,OAAO,QAA8B;EAC7E,MAAM,WAAW,eAAe,YAAY,IAAI,OAAO,YAAkC;EAEzF,MAAM,OAAO,IAAI,UAAU;AAC3B,OAAK,OAAO,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC,CAAC;AAE5E,MAAI,YAAY,QACd,MAAK,OAAO,WAAW,YAAY,QAAQ;AAE7C,MAAI,YAAY,SACd,MAAK,OAAO,YAAY,KAAK,UAAU,YAAY,SAAS,CAAC;AAE/D,MAAI,aAAa,OACf,MAAK,OAAO,YAAY,KAAK,UAAU,SAAS,CAAC;AAEnD,MAAI,SAAS,OACX,MAAK,OAAO,QAAQ,KAAK,UAAU,KAAK,CAAC;AAE3C,MAAI,aAAa,OACf,MAAK,OAAO,YAAY,KAAK,UAAU,SAAS,CAAC;EAGnD,MAAM,aAAa,IAAI,OAAO;AAC9B,MAAI,WACF,MAAK,OAAO,cAAc,WAAW;EAGvC,MAAM,aAAa,IAAI,OAAO;AAC9B,MAAI,WACF,MAAK,OAAO,cAAc,WAAW;AAGvC,MAAI,IAAI,OAAO,YACb,MAAK,OAAO,YAAY,SAAS;EAInC,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,WAAW,KAAK;AAC9C,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"upload.js","names":["fs"],"sources":["../../../../../src/cli/commands/files/upload.ts"],"sourcesContent":["import { promises as fs } from \"node:fs\";\nimport path from \"node:path\";\n\nimport { define } from \"gunshi\";\n\nimport {\n baseArgs,\n createClientFromContext,\n parseJsonValue,\n resolveFileKeyValue,\n resolveProviderValue,\n} from \"../../utils/options.js\";\n\nconst DEFAULT_CONTENT_TYPE = \"application/octet-stream\";\n\nexport const filesUploadCommand = define({\n name: \"upload\",\n description: \"Upload a file via the /files endpoint\",\n args: {\n ...baseArgs,\n file: {\n type: \"string\",\n short: \"f\",\n description: \"Path to file\",\n },\n provider: {\n type: \"string\",\n description: \"Storage provider\",\n },\n \"file-key\": {\n type: \"string\",\n description: \"File key\",\n },\n filename: {\n type: \"string\",\n description: \"Override filename\",\n },\n \"content-type\": {\n type: \"string\",\n description: \"Content type (default: application/octet-stream)\",\n },\n checksum: {\n type: \"string\",\n description: \"Checksum JSON\",\n },\n tags: {\n type: \"string\",\n description: \"Tags as JSON array\",\n },\n visibility: {\n type: \"string\",\n description: \"Visibility (private, public, unlisted)\",\n },\n \"uploader-id\": {\n type: \"string\",\n description: \"Uploader id\",\n },\n metadata: {\n type: \"string\",\n description: \"Metadata JSON object\",\n },\n },\n run: async (ctx) => {\n const filePath = ctx.values[\"file\"] as string | undefined;\n if (!filePath) {\n throw new Error(\"Missing --file\");\n }\n\n const fileBuffer = await fs.readFile(filePath);\n const filename = (ctx.values[\"filename\"] as string | undefined) ?? path.basename(filePath);\n const contentType = (ctx.values[\"content-type\"] as string | undefined) ?? DEFAULT_CONTENT_TYPE;\n const provider = resolveProviderValue(ctx.values[\"provider\"] as string | undefined);\n\n const resolvedKey = resolveFileKeyValue({\n fileKey: ctx.values[\"file-key\"] as string | undefined,\n });\n\n const checksum = parseJsonValue(\"checksum\", ctx.values[\"checksum\"] as string | undefined);\n const tags = parseJsonValue(\"tags\", ctx.values[\"tags\"] as string | undefined);\n const metadata = parseJsonValue(\"metadata\", ctx.values[\"metadata\"] as string | undefined);\n\n const form = new FormData();\n form.append(\"file\", new File([fileBuffer], filename, { type: contentType }));\n form.append(\"provider\", provider);\n\n form.append(\"fileKey\", resolvedKey.fileKey);\n if (checksum !== undefined) {\n form.append(\"checksum\", JSON.stringify(checksum));\n }\n if (tags !== undefined) {\n form.append(\"tags\", JSON.stringify(tags));\n }\n if (metadata !== undefined) {\n form.append(\"metadata\", JSON.stringify(metadata));\n }\n\n const uploaderId = ctx.values[\"uploader-id\"] as string | undefined;\n if (uploaderId) {\n form.append(\"uploaderId\", uploaderId);\n }\n\n const visibility = ctx.values[\"visibility\"] as string | undefined;\n if (visibility) {\n form.append(\"visibility\", visibility);\n }\n\n if (ctx.values[\"filename\"]) {\n form.append(\"filename\", filename);\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.createFile(form);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;;;AAaA,MAAM,uBAAuB;AAE7B,MAAa,qBAAqB,OAAO;CACvC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,MAAM;GACJ,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,gBAAgB;GACd,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,eAAe;GACb,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,iBAAiB;EAGnC,MAAM,aAAa,MAAMA,SAAG,SAAS,SAAS;EAC9C,MAAM,WAAY,IAAI,OAAO,eAAsC,KAAK,SAAS,SAAS;EAC1F,MAAM,cAAe,IAAI,OAAO,mBAA0C;EAC1E,MAAM,WAAW,qBAAqB,IAAI,OAAO,YAAkC;EAEnF,MAAM,cAAc,oBAAoB,EACtC,SAAS,IAAI,OAAO,aACrB,CAAC;EAEF,MAAM,WAAW,eAAe,YAAY,IAAI,OAAO,YAAkC;EACzF,MAAM,OAAO,eAAe,QAAQ,IAAI,OAAO,QAA8B;EAC7E,MAAM,WAAW,eAAe,YAAY,IAAI,OAAO,YAAkC;EAEzF,MAAM,OAAO,IAAI,UAAU;AAC3B,OAAK,OAAO,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC,CAAC;AAC5E,OAAK,OAAO,YAAY,SAAS;AAEjC,OAAK,OAAO,WAAW,YAAY,QAAQ;AAC3C,MAAI,aAAa,OACf,MAAK,OAAO,YAAY,KAAK,UAAU,SAAS,CAAC;AAEnD,MAAI,SAAS,OACX,MAAK,OAAO,QAAQ,KAAK,UAAU,KAAK,CAAC;AAE3C,MAAI,aAAa,OACf,MAAK,OAAO,YAAY,KAAK,UAAU,SAAS,CAAC;EAGnD,MAAM,aAAa,IAAI,OAAO;AAC9B,MAAI,WACF,MAAK,OAAO,cAAc,WAAW;EAGvC,MAAM,aAAa,IAAI,OAAO;AAC9B,MAAI,WACF,MAAK,OAAO,cAAc,WAAW;AAGvC,MAAI,IAAI,OAAO,YACb,MAAK,OAAO,YAAY,SAAS;EAInC,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,WAAW,KAAK;AAC9C,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as gunshi8 from "gunshi";
1
+ import * as gunshi7 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/abort.d.ts
4
- declare const uploadsAbortCommand: gunshi8.Command<{
4
+ declare const uploadsAbortCommand: gunshi7.Command<{
5
5
  "upload-id": {
6
6
  type: "string";
7
7
  short: string;
@@ -1 +1 @@
1
- {"version":3,"file":"abort.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/abort.ts"],"sourcesContent":[],"mappings":";;;cAGa,qBAqBX,OAAA,CArB8B;;;IAAnB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"abort.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/abort.ts"],"sourcesContent":[],"mappings":";;;cAIa,qBAqBX,OAAA,CArB8B;;;IAAnB,KAAA,EAAA,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"abort.js","names":[],"sources":["../../../../../src/cli/commands/uploads/abort.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nexport const uploadsAbortCommand = define({\n name: \"abort\",\n description: \"Abort an upload\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.abortUpload(uploadId);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAa,sBAAsB,OAAO;CACxC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAIxC,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,YAAY,SAAS;AACnD,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"abort.js","names":[],"sources":["../../../../../src/cli/commands/uploads/abort.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nexport const uploadsAbortCommand = define({\n name: \"abort\",\n description: \"Abort an upload\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.abortUpload(uploadId);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAIA,MAAa,sBAAsB,OAAO;CACxC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAIxC,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,YAAY,SAAS;AACnD,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as gunshi7 from "gunshi";
1
+ import * as gunshi8 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/complete.d.ts
4
- declare const uploadsCompleteCommand: gunshi7.Command<{
4
+ declare const uploadsCompleteCommand: gunshi8.Command<{
5
5
  "upload-id": {
6
6
  type: "string";
7
7
  short: string;
@@ -1 +1 @@
1
- {"version":3,"file":"complete.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/complete.ts"],"sourcesContent":[],"mappings":";;;cAGa,wBAkDX,OAAA,CAlDiC;;;IAAtB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"complete.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/complete.ts"],"sourcesContent":[],"mappings":";;;cAIa,wBAkDX,OAAA,CAlDiC;;;IAAtB,KAAA,EAAA,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"complete.js","names":["parts: { partNumber: number; etag: string }[] | undefined"],"sources":["../../../../../src/cli/commands/uploads/complete.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext, parseJsonValue } from \"../../utils/options.js\";\n\nexport const uploadsCompleteCommand = define({\n name: \"complete\",\n description: \"Complete an upload\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n parts: {\n type: \"string\",\n description: \"JSON array of parts (partNumber, etag) for multipart uploads\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const rawParts = parseJsonValue(\"parts\", ctx.values[\"parts\"] as string | undefined);\n let parts: { partNumber: number; etag: string }[] | undefined;\n\n if (rawParts !== undefined) {\n if (!Array.isArray(rawParts) || rawParts.length === 0) {\n throw new Error(\"--parts must be a non-empty JSON array\");\n }\n parts = rawParts.map((part) => {\n if (!part || typeof part !== \"object\") {\n throw new Error(\"Invalid parts payload\");\n }\n const payload = part as { partNumber?: unknown; etag?: unknown };\n if (typeof payload.partNumber !== \"number\" || !Number.isInteger(payload.partNumber)) {\n throw new Error(\"parts.partNumber must be an integer\");\n }\n if (typeof payload.etag !== \"string\" || payload.etag.length === 0) {\n throw new Error(\"parts.etag must be a string\");\n }\n return {\n partNumber: payload.partNumber,\n etag: payload.etag,\n };\n });\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.completeUpload(uploadId, parts);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAa,yBAAyB,OAAO;CAC3C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,OAAO;GACL,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,WAAW,eAAe,SAAS,IAAI,OAAO,SAA+B;EACnF,IAAIA;AAEJ,MAAI,aAAa,QAAW;AAC1B,OAAI,CAAC,MAAM,QAAQ,SAAS,IAAI,SAAS,WAAW,EAClD,OAAM,IAAI,MAAM,yCAAyC;AAE3D,WAAQ,SAAS,KAAK,SAAS;AAC7B,QAAI,CAAC,QAAQ,OAAO,SAAS,SAC3B,OAAM,IAAI,MAAM,wBAAwB;IAE1C,MAAM,UAAU;AAChB,QAAI,OAAO,QAAQ,eAAe,YAAY,CAAC,OAAO,UAAU,QAAQ,WAAW,CACjF,OAAM,IAAI,MAAM,sCAAsC;AAExD,QAAI,OAAO,QAAQ,SAAS,YAAY,QAAQ,KAAK,WAAW,EAC9D,OAAM,IAAI,MAAM,8BAA8B;AAEhD,WAAO;KACL,YAAY,QAAQ;KACpB,MAAM,QAAQ;KACf;KACD;;EAIJ,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,eAAe,UAAU,MAAM;AAC7D,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"complete.js","names":["parts: { partNumber: number; etag: string }[] | undefined"],"sources":["../../../../../src/cli/commands/uploads/complete.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext, parseJsonValue } from \"../../utils/options.js\";\n\nexport const uploadsCompleteCommand = define({\n name: \"complete\",\n description: \"Complete an upload\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n parts: {\n type: \"string\",\n description: \"JSON array of parts (partNumber, etag) for multipart uploads\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const rawParts = parseJsonValue(\"parts\", ctx.values[\"parts\"] as string | undefined);\n let parts: { partNumber: number; etag: string }[] | undefined;\n\n if (rawParts !== undefined) {\n if (!Array.isArray(rawParts) || rawParts.length === 0) {\n throw new Error(\"--parts must be a non-empty JSON array\");\n }\n parts = rawParts.map((part) => {\n if (!part || typeof part !== \"object\") {\n throw new Error(\"Invalid parts payload\");\n }\n const payload = part as { partNumber?: unknown; etag?: unknown };\n if (typeof payload.partNumber !== \"number\" || !Number.isInteger(payload.partNumber)) {\n throw new Error(\"parts.partNumber must be an integer\");\n }\n if (typeof payload.etag !== \"string\" || payload.etag.length === 0) {\n throw new Error(\"parts.etag must be a string\");\n }\n return {\n partNumber: payload.partNumber,\n etag: payload.etag,\n };\n });\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.completeUpload(uploadId, parts);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAIA,MAAa,yBAAyB,OAAO;CAC3C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,OAAO;GACL,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,WAAW,eAAe,SAAS,IAAI,OAAO,SAA+B;EACnF,IAAIA;AAEJ,MAAI,aAAa,QAAW;AAC1B,OAAI,CAAC,MAAM,QAAQ,SAAS,IAAI,SAAS,WAAW,EAClD,OAAM,IAAI,MAAM,yCAAyC;AAE3D,WAAQ,SAAS,KAAK,SAAS;AAC7B,QAAI,CAAC,QAAQ,OAAO,SAAS,SAC3B,OAAM,IAAI,MAAM,wBAAwB;IAE1C,MAAM,UAAU;AAChB,QAAI,OAAO,QAAQ,eAAe,YAAY,CAAC,OAAO,UAAU,QAAQ,WAAW,CACjF,OAAM,IAAI,MAAM,sCAAsC;AAExD,QAAI,OAAO,QAAQ,SAAS,YAAY,QAAQ,KAAK,WAAW,EAC9D,OAAM,IAAI,MAAM,8BAA8B;AAEhD,WAAO;KACL,YAAY,QAAQ;KACpB,MAAM,QAAQ;KACf;KACD;;EAIJ,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,eAAe,UAAU,MAAM;AAC7D,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as gunshi1 from "gunshi";
1
+ import * as gunshi9 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/content.d.ts
4
- declare const uploadsContentCommand: gunshi1.Command<{
4
+ declare const uploadsContentCommand: gunshi9.Command<{
5
5
  "upload-id": {
6
6
  type: "string";
7
7
  short: string;
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/content.ts"],"sourcesContent":[],"mappings":";;;cAOa,uBA0CX,OAAA,CA1CgC;;;IAArB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"content.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/content.ts"],"sourcesContent":[],"mappings":";;;cASa,uBA0CX,OAAA,CA1CgC;;;IAArB,KAAA,EAAA,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","names":[],"sources":["../../../../../src/cli/commands/uploads/content.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { createReadStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nconst DEFAULT_CONTENT_TYPE = \"application/octet-stream\";\n\nexport const uploadsContentCommand = define({\n name: \"content\",\n description: \"Upload file bytes via proxy upload\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n file: {\n type: \"string\",\n short: \"f\",\n description: \"Path to file\",\n },\n \"content-type\": {\n type: \"string\",\n description: \"Content type (default: application/octet-stream)\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const filePath = ctx.values[\"file\"] as string | undefined;\n if (!filePath) {\n throw new Error(\"Missing --file\");\n }\n\n const contentType = (ctx.values[\"content-type\"] as string | undefined) ?? DEFAULT_CONTENT_TYPE;\n\n const client = createClientFromContext(ctx);\n const stream = createReadStream(filePath);\n const response = await client.uploadContent(\n uploadId,\n Readable.toWeb(stream) as BodyInit,\n contentType,\n );\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;;;AAKA,MAAM,uBAAuB;AAE7B,MAAa,wBAAwB,OAAO;CAC1C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,gBAAgB;GACd,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,iBAAiB;EAGnC,MAAM,cAAe,IAAI,OAAO,mBAA0C;EAE1E,MAAM,SAAS,wBAAwB,IAAI;EAC3C,MAAM,SAAS,iBAAiB,SAAS;EACzC,MAAM,WAAW,MAAM,OAAO,cAC5B,UACA,SAAS,MAAM,OAAO,EACtB,YACD;AACD,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"content.js","names":[],"sources":["../../../../../src/cli/commands/uploads/content.ts"],"sourcesContent":["import { createReadStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\n\nimport { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nconst DEFAULT_CONTENT_TYPE = \"application/octet-stream\";\n\nexport const uploadsContentCommand = define({\n name: \"content\",\n description: \"Upload file bytes via proxy upload\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n file: {\n type: \"string\",\n short: \"f\",\n description: \"Path to file\",\n },\n \"content-type\": {\n type: \"string\",\n description: \"Content type (default: application/octet-stream)\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const filePath = ctx.values[\"file\"] as string | undefined;\n if (!filePath) {\n throw new Error(\"Missing --file\");\n }\n\n const contentType = (ctx.values[\"content-type\"] as string | undefined) ?? DEFAULT_CONTENT_TYPE;\n\n const client = createClientFromContext(ctx);\n const stream = createReadStream(filePath);\n const response = await client.uploadContent(\n uploadId,\n Readable.toWeb(stream) as BodyInit,\n contentType,\n );\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;;;AAOA,MAAM,uBAAuB;AAE7B,MAAa,wBAAwB,OAAO;CAC1C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,gBAAgB;GACd,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,iBAAiB;EAGnC,MAAM,cAAe,IAAI,OAAO,mBAA0C;EAE1E,MAAM,SAAS,wBAAwB,IAAI;EAC3C,MAAM,SAAS,iBAAiB,SAAS;EACzC,MAAM,WAAW,MAAM,OAAO,cAC5B,UACA,SAAS,MAAM,OAAO,EACtB,YACD;AACD,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,12 +1,12 @@
1
- import * as gunshi0 from "gunshi";
1
+ import * as gunshi10 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/create.d.ts
4
- declare const uploadsCreateCommand: gunshi0.Command<{
5
- "file-key": {
4
+ declare const uploadsCreateCommand: gunshi10.Command<{
5
+ provider: {
6
6
  type: "string";
7
7
  description: string;
8
8
  };
9
- "key-parts": {
9
+ "file-key": {
10
10
  type: "string";
11
11
  description: string;
12
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/create.ts"],"sourcesContent":[],"mappings":";;;cAQa,sBA0FX,OAAA,CA1F+B;;;IAApB,WAAA,EAAA,MA0FX"}
1
+ {"version":3,"file":"create.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/create.ts"],"sourcesContent":[],"mappings":";;;cAUa,sBAsFX,QAAA,CAtF+B;;;IAApB,WAAA,EAAA,MAsFX"}
@@ -1,4 +1,4 @@
1
- import { baseArgs, createClientFromContext, parseJsonValue, resolveOptionalFileKeyValue } from "../../utils/options.js";
1
+ import { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue, resolveProviderValue } from "../../utils/options.js";
2
2
  import { define } from "gunshi";
3
3
 
4
4
  //#region src/cli/commands/uploads/create.ts
@@ -7,13 +7,13 @@ const uploadsCreateCommand = define({
7
7
  description: "Create an upload session",
8
8
  args: {
9
9
  ...baseArgs,
10
- "file-key": {
10
+ provider: {
11
11
  type: "string",
12
- description: "File key (encoded)"
12
+ description: "Storage provider"
13
13
  },
14
- "key-parts": {
14
+ "file-key": {
15
15
  type: "string",
16
- description: "File key parts as JSON array"
16
+ description: "File key"
17
17
  },
18
18
  filename: {
19
19
  type: "string",
@@ -55,17 +55,14 @@ const uploadsCreateCommand = define({
55
55
  if (!filename) throw new Error("Missing --filename");
56
56
  if (sizeBytes === void 0) throw new Error("Missing --size-bytes");
57
57
  if (!contentType) throw new Error("Missing --content-type");
58
- const resolvedKey = resolveOptionalFileKeyValue({
59
- fileKey: ctx.values["file-key"],
60
- keyParts: ctx.values["key-parts"]
61
- });
62
- if (!resolvedKey.fileKey && !resolvedKey.keyParts) throw new Error("Missing file key. Provide --file-key or --key-parts.");
58
+ const provider = resolveProviderValue(ctx.values["provider"]);
59
+ const resolvedKey = resolveFileKeyValue({ fileKey: ctx.values["file-key"] });
63
60
  const checksum = parseJsonValue("checksum", ctx.values["checksum"]);
64
61
  const tags = parseJsonValue("tags", ctx.values["tags"]);
65
62
  const metadata = parseJsonValue("metadata", ctx.values["metadata"]);
66
63
  const response = await createClientFromContext(ctx).createUpload({
64
+ provider,
67
65
  fileKey: resolvedKey.fileKey,
68
- keyParts: resolvedKey.keyParts,
69
66
  filename,
70
67
  sizeBytes,
71
68
  contentType,
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","names":[],"sources":["../../../../../src/cli/commands/uploads/create.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport {\n baseArgs,\n createClientFromContext,\n parseJsonValue,\n resolveOptionalFileKeyValue,\n} from \"../../utils/options.js\";\n\nexport const uploadsCreateCommand = define({\n name: \"create\",\n description: \"Create an upload session\",\n args: {\n ...baseArgs,\n \"file-key\": {\n type: \"string\",\n description: \"File key (encoded)\",\n },\n \"key-parts\": {\n type: \"string\",\n description: \"File key parts as JSON array\",\n },\n filename: {\n type: \"string\",\n description: \"Filename\",\n },\n \"size-bytes\": {\n type: \"number\",\n description: \"Total size in bytes\",\n },\n \"content-type\": {\n type: \"string\",\n description: \"Content type\",\n },\n checksum: {\n type: \"string\",\n description: 'Checksum JSON, e.g. \\'{\"algo\":\"sha256\",\"value\":\"...\"}\\'',\n },\n tags: {\n type: \"string\",\n description: \"Tags as JSON array\",\n },\n visibility: {\n type: \"string\",\n description: \"Visibility (private, public, unlisted)\",\n },\n \"uploader-id\": {\n type: \"string\",\n description: \"Uploader id\",\n },\n metadata: {\n type: \"string\",\n description: \"Metadata JSON object\",\n },\n },\n run: async (ctx) => {\n const filename = ctx.values[\"filename\"] as string | undefined;\n const sizeBytes = ctx.values[\"size-bytes\"] as number | undefined;\n const contentType = ctx.values[\"content-type\"] as string | undefined;\n\n if (!filename) {\n throw new Error(\"Missing --filename\");\n }\n if (sizeBytes === undefined) {\n throw new Error(\"Missing --size-bytes\");\n }\n if (!contentType) {\n throw new Error(\"Missing --content-type\");\n }\n\n const resolvedKey = resolveOptionalFileKeyValue({\n fileKey: ctx.values[\"file-key\"] as string | undefined,\n keyParts: ctx.values[\"key-parts\"] as string | undefined,\n });\n\n if (!resolvedKey.fileKey && !resolvedKey.keyParts) {\n throw new Error(\"Missing file key. Provide --file-key or --key-parts.\");\n }\n\n const checksum = parseJsonValue(\"checksum\", ctx.values[\"checksum\"] as string | undefined);\n const tags = parseJsonValue(\"tags\", ctx.values[\"tags\"] as string | undefined);\n const metadata = parseJsonValue(\"metadata\", ctx.values[\"metadata\"] as string | undefined);\n\n const client = createClientFromContext(ctx);\n const response = await client.createUpload({\n fileKey: resolvedKey.fileKey,\n keyParts: resolvedKey.keyParts,\n filename,\n sizeBytes,\n contentType,\n checksum,\n tags,\n visibility: ctx.values[\"visibility\"] as string | undefined,\n uploaderId: ctx.values[\"uploader-id\"] as string | undefined,\n metadata,\n });\n\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAQA,MAAa,uBAAuB,OAAO;CACzC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,cAAc;GACZ,MAAM;GACN,aAAa;GACd;EACD,gBAAgB;GACd,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,eAAe;GACb,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;EAC5B,MAAM,YAAY,IAAI,OAAO;EAC7B,MAAM,cAAc,IAAI,OAAO;AAE/B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,qBAAqB;AAEvC,MAAI,cAAc,OAChB,OAAM,IAAI,MAAM,uBAAuB;AAEzC,MAAI,CAAC,YACH,OAAM,IAAI,MAAM,yBAAyB;EAG3C,MAAM,cAAc,4BAA4B;GAC9C,SAAS,IAAI,OAAO;GACpB,UAAU,IAAI,OAAO;GACtB,CAAC;AAEF,MAAI,CAAC,YAAY,WAAW,CAAC,YAAY,SACvC,OAAM,IAAI,MAAM,uDAAuD;EAGzE,MAAM,WAAW,eAAe,YAAY,IAAI,OAAO,YAAkC;EACzF,MAAM,OAAO,eAAe,QAAQ,IAAI,OAAO,QAA8B;EAC7E,MAAM,WAAW,eAAe,YAAY,IAAI,OAAO,YAAkC;EAGzF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,aAAa;GACzC,SAAS,YAAY;GACrB,UAAU,YAAY;GACtB;GACA;GACA;GACA;GACA;GACA,YAAY,IAAI,OAAO;GACvB,YAAY,IAAI,OAAO;GACvB;GACD,CAAC;AAEF,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"create.js","names":[],"sources":["../../../../../src/cli/commands/uploads/create.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport {\n baseArgs,\n createClientFromContext,\n parseJsonValue,\n resolveFileKeyValue,\n resolveProviderValue,\n} from \"../../utils/options.js\";\n\nexport const uploadsCreateCommand = define({\n name: \"create\",\n description: \"Create an upload session\",\n args: {\n ...baseArgs,\n provider: {\n type: \"string\",\n description: \"Storage provider\",\n },\n \"file-key\": {\n type: \"string\",\n description: \"File key\",\n },\n filename: {\n type: \"string\",\n description: \"Filename\",\n },\n \"size-bytes\": {\n type: \"number\",\n description: \"Total size in bytes\",\n },\n \"content-type\": {\n type: \"string\",\n description: \"Content type\",\n },\n checksum: {\n type: \"string\",\n description: 'Checksum JSON, e.g. \\'{\"algo\":\"sha256\",\"value\":\"...\"}\\'',\n },\n tags: {\n type: \"string\",\n description: \"Tags as JSON array\",\n },\n visibility: {\n type: \"string\",\n description: \"Visibility (private, public, unlisted)\",\n },\n \"uploader-id\": {\n type: \"string\",\n description: \"Uploader id\",\n },\n metadata: {\n type: \"string\",\n description: \"Metadata JSON object\",\n },\n },\n run: async (ctx) => {\n const filename = ctx.values[\"filename\"] as string | undefined;\n const sizeBytes = ctx.values[\"size-bytes\"] as number | undefined;\n const contentType = ctx.values[\"content-type\"] as string | undefined;\n\n if (!filename) {\n throw new Error(\"Missing --filename\");\n }\n if (sizeBytes === undefined) {\n throw new Error(\"Missing --size-bytes\");\n }\n if (!contentType) {\n throw new Error(\"Missing --content-type\");\n }\n\n const provider = resolveProviderValue(ctx.values[\"provider\"] as string | undefined);\n const resolvedKey = resolveFileKeyValue({\n fileKey: ctx.values[\"file-key\"] as string | undefined,\n });\n\n const checksum = parseJsonValue(\"checksum\", ctx.values[\"checksum\"] as string | undefined);\n const tags = parseJsonValue(\"tags\", ctx.values[\"tags\"] as string | undefined);\n const metadata = parseJsonValue(\"metadata\", ctx.values[\"metadata\"] as string | undefined);\n\n const client = createClientFromContext(ctx);\n const response = await client.createUpload({\n provider,\n fileKey: resolvedKey.fileKey,\n filename,\n sizeBytes,\n contentType,\n checksum,\n tags,\n visibility: ctx.values[\"visibility\"] as string | undefined,\n uploaderId: ctx.values[\"uploader-id\"] as string | undefined,\n metadata,\n });\n\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAUA,MAAa,uBAAuB,OAAO;CACzC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,cAAc;GACZ,MAAM;GACN,aAAa;GACd;EACD,gBAAgB;GACd,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,eAAe;GACb,MAAM;GACN,aAAa;GACd;EACD,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;EAC5B,MAAM,YAAY,IAAI,OAAO;EAC7B,MAAM,cAAc,IAAI,OAAO;AAE/B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,qBAAqB;AAEvC,MAAI,cAAc,OAChB,OAAM,IAAI,MAAM,uBAAuB;AAEzC,MAAI,CAAC,YACH,OAAM,IAAI,MAAM,yBAAyB;EAG3C,MAAM,WAAW,qBAAqB,IAAI,OAAO,YAAkC;EACnF,MAAM,cAAc,oBAAoB,EACtC,SAAS,IAAI,OAAO,aACrB,CAAC;EAEF,MAAM,WAAW,eAAe,YAAY,IAAI,OAAO,YAAkC;EACzF,MAAM,OAAO,eAAe,QAAQ,IAAI,OAAO,QAA8B;EAC7E,MAAM,WAAW,eAAe,YAAY,IAAI,OAAO,YAAkC;EAGzF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,aAAa;GACzC;GACA,SAAS,YAAY;GACrB;GACA;GACA;GACA;GACA;GACA,YAAY,IAAI,OAAO;GACvB,YAAY,IAAI,OAAO;GACvB;GACD,CAAC;AAEF,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as gunshi2 from "gunshi";
1
+ import * as gunshi11 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/get.d.ts
4
- declare const uploadsGetCommand: gunshi2.Command<{
4
+ declare const uploadsGetCommand: gunshi11.Command<{
5
5
  "upload-id": {
6
6
  type: "string";
7
7
  short: string;
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/get.ts"],"sourcesContent":[],"mappings":";;;cAGa,mBAqBX,OAAA,CArB4B;;;IAAjB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"get.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/get.ts"],"sourcesContent":[],"mappings":";;;cAIa,mBAqBX,QAAA,CArB4B;;;IAAjB,KAAA,EAAA,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","names":[],"sources":["../../../../../src/cli/commands/uploads/get.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nexport const uploadsGetCommand = define({\n name: \"get\",\n description: \"Get upload status\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.getUpload(uploadId);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAa,oBAAoB,OAAO;CACtC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAIxC,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,UAAU,SAAS;AACjD,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"get.js","names":[],"sources":["../../../../../src/cli/commands/uploads/get.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nexport const uploadsGetCommand = define({\n name: \"get\",\n description: \"Get upload status\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.getUpload(uploadId);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAIA,MAAa,oBAAoB,OAAO;CACtC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAIxC,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,UAAU,SAAS;AACjD,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as gunshi6 from "gunshi";
1
+ import * as gunshi12 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/parts-complete.d.ts
4
- declare const uploadsPartsCompleteCommand: gunshi6.Command<{
4
+ declare const uploadsPartsCompleteCommand: gunshi12.Command<{
5
5
  "upload-id": {
6
6
  type: "string";
7
7
  short: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parts-complete.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-complete.ts"],"sourcesContent":[],"mappings":";;;cAGa,6BAyDX,OAAA,CAzDsC;;;IAA3B,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"parts-complete.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-complete.ts"],"sourcesContent":[],"mappings":";;;cAIa,6BAyDX,QAAA,CAzDsC;;;IAA3B,KAAA,EAAA,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"parts-complete.js","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-complete.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext, parseJsonValue } from \"../../utils/options.js\";\n\nexport const uploadsPartsCompleteCommand = define({\n name: \"parts-complete\",\n description: \"Record completed parts\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n parts: {\n type: \"string\",\n description: \"JSON array of parts (partNumber, etag, sizeBytes)\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const rawParts = parseJsonValue(\"parts\", ctx.values[\"parts\"] as string | undefined);\n if (!Array.isArray(rawParts) || rawParts.length === 0) {\n throw new Error(\"--parts must be a non-empty JSON array\");\n }\n\n const parts = rawParts.map((part) => {\n if (!part || typeof part !== \"object\") {\n throw new Error(\"Invalid parts payload\");\n }\n const payload = part as { partNumber?: unknown; etag?: unknown; sizeBytes?: unknown };\n if (typeof payload.partNumber !== \"number\" || !Number.isInteger(payload.partNumber)) {\n throw new Error(\"parts.partNumber must be an integer\");\n }\n if (typeof payload.etag !== \"string\" || payload.etag.length === 0) {\n throw new Error(\"parts.etag must be a string\");\n }\n if (\n typeof payload.sizeBytes !== \"number\" ||\n !Number.isFinite(payload.sizeBytes) ||\n !Number.isInteger(payload.sizeBytes) ||\n payload.sizeBytes < 0 ||\n payload.sizeBytes > Number.MAX_SAFE_INTEGER\n ) {\n throw new Error(\"parts.sizeBytes must be a non-negative integer\");\n }\n return {\n partNumber: payload.partNumber,\n etag: payload.etag,\n sizeBytes: payload.sizeBytes,\n };\n });\n\n const client = createClientFromContext(ctx);\n const response = await client.completeParts(uploadId, parts);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAa,8BAA8B,OAAO;CAChD,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,OAAO;GACL,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,WAAW,eAAe,SAAS,IAAI,OAAO,SAA+B;AACnF,MAAI,CAAC,MAAM,QAAQ,SAAS,IAAI,SAAS,WAAW,EAClD,OAAM,IAAI,MAAM,yCAAyC;EAG3D,MAAM,QAAQ,SAAS,KAAK,SAAS;AACnC,OAAI,CAAC,QAAQ,OAAO,SAAS,SAC3B,OAAM,IAAI,MAAM,wBAAwB;GAE1C,MAAM,UAAU;AAChB,OAAI,OAAO,QAAQ,eAAe,YAAY,CAAC,OAAO,UAAU,QAAQ,WAAW,CACjF,OAAM,IAAI,MAAM,sCAAsC;AAExD,OAAI,OAAO,QAAQ,SAAS,YAAY,QAAQ,KAAK,WAAW,EAC9D,OAAM,IAAI,MAAM,8BAA8B;AAEhD,OACE,OAAO,QAAQ,cAAc,YAC7B,CAAC,OAAO,SAAS,QAAQ,UAAU,IACnC,CAAC,OAAO,UAAU,QAAQ,UAAU,IACpC,QAAQ,YAAY,KACpB,QAAQ,YAAY,OAAO,iBAE3B,OAAM,IAAI,MAAM,iDAAiD;AAEnE,UAAO;IACL,YAAY,QAAQ;IACpB,MAAM,QAAQ;IACd,WAAW,QAAQ;IACpB;IACD;EAGF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,cAAc,UAAU,MAAM;AAC5D,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"parts-complete.js","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-complete.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext, parseJsonValue } from \"../../utils/options.js\";\n\nexport const uploadsPartsCompleteCommand = define({\n name: \"parts-complete\",\n description: \"Record completed parts\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n parts: {\n type: \"string\",\n description: \"JSON array of parts (partNumber, etag, sizeBytes)\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const rawParts = parseJsonValue(\"parts\", ctx.values[\"parts\"] as string | undefined);\n if (!Array.isArray(rawParts) || rawParts.length === 0) {\n throw new Error(\"--parts must be a non-empty JSON array\");\n }\n\n const parts = rawParts.map((part) => {\n if (!part || typeof part !== \"object\") {\n throw new Error(\"Invalid parts payload\");\n }\n const payload = part as { partNumber?: unknown; etag?: unknown; sizeBytes?: unknown };\n if (typeof payload.partNumber !== \"number\" || !Number.isInteger(payload.partNumber)) {\n throw new Error(\"parts.partNumber must be an integer\");\n }\n if (typeof payload.etag !== \"string\" || payload.etag.length === 0) {\n throw new Error(\"parts.etag must be a string\");\n }\n if (\n typeof payload.sizeBytes !== \"number\" ||\n !Number.isFinite(payload.sizeBytes) ||\n !Number.isInteger(payload.sizeBytes) ||\n payload.sizeBytes < 0 ||\n payload.sizeBytes > Number.MAX_SAFE_INTEGER\n ) {\n throw new Error(\"parts.sizeBytes must be a non-negative integer\");\n }\n return {\n partNumber: payload.partNumber,\n etag: payload.etag,\n sizeBytes: payload.sizeBytes,\n };\n });\n\n const client = createClientFromContext(ctx);\n const response = await client.completeParts(uploadId, parts);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAIA,MAAa,8BAA8B,OAAO;CAChD,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,OAAO;GACL,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,WAAW,eAAe,SAAS,IAAI,OAAO,SAA+B;AACnF,MAAI,CAAC,MAAM,QAAQ,SAAS,IAAI,SAAS,WAAW,EAClD,OAAM,IAAI,MAAM,yCAAyC;EAG3D,MAAM,QAAQ,SAAS,KAAK,SAAS;AACnC,OAAI,CAAC,QAAQ,OAAO,SAAS,SAC3B,OAAM,IAAI,MAAM,wBAAwB;GAE1C,MAAM,UAAU;AAChB,OAAI,OAAO,QAAQ,eAAe,YAAY,CAAC,OAAO,UAAU,QAAQ,WAAW,CACjF,OAAM,IAAI,MAAM,sCAAsC;AAExD,OAAI,OAAO,QAAQ,SAAS,YAAY,QAAQ,KAAK,WAAW,EAC9D,OAAM,IAAI,MAAM,8BAA8B;AAEhD,OACE,OAAO,QAAQ,cAAc,YAC7B,CAAC,OAAO,SAAS,QAAQ,UAAU,IACnC,CAAC,OAAO,UAAU,QAAQ,UAAU,IACpC,QAAQ,YAAY,KACpB,QAAQ,YAAY,OAAO,iBAE3B,OAAM,IAAI,MAAM,iDAAiD;AAEnE,UAAO;IACL,YAAY,QAAQ;IACpB,MAAM,QAAQ;IACd,WAAW,QAAQ;IACpB;IACD;EAGF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,cAAc,UAAU,MAAM;AAC5D,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as gunshi5 from "gunshi";
1
+ import * as gunshi13 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/parts-list.d.ts
4
- declare const uploadsPartsListCommand: gunshi5.Command<{
4
+ declare const uploadsPartsListCommand: gunshi13.Command<{
5
5
  "upload-id": {
6
6
  type: "string";
7
7
  short: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parts-list.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-list.ts"],"sourcesContent":[],"mappings":";;;cAGa,yBAqBX,OAAA,CArBkC;;;IAAvB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"parts-list.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-list.ts"],"sourcesContent":[],"mappings":";;;cAIa,yBAqBX,QAAA,CArBkC;;;IAAvB,KAAA,EAAA,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"parts-list.js","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-list.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nexport const uploadsPartsListCommand = define({\n name: \"parts-list\",\n description: \"List uploaded parts\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.listParts(uploadId);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAa,0BAA0B,OAAO;CAC5C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAIxC,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,UAAU,SAAS;AACjD,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"parts-list.js","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-list.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nexport const uploadsPartsListCommand = define({\n name: \"parts-list\",\n description: \"List uploaded parts\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.listParts(uploadId);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAIA,MAAa,0BAA0B,OAAO;CAC5C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAIxC,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,UAAU,SAAS;AACjD,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as gunshi4 from "gunshi";
1
+ import * as gunshi14 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/parts-urls.d.ts
4
- declare const uploadsPartsUrlsCommand: gunshi4.Command<{
4
+ declare const uploadsPartsUrlsCommand: gunshi14.Command<{
5
5
  "upload-id": {
6
6
  type: "string";
7
7
  short: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parts-urls.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-urls.ts"],"sourcesContent":[],"mappings":";;;cAiCa,yBAmCX,OAAA,CAnCkC;;;IAAvB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"parts-urls.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/parts-urls.ts"],"sourcesContent":[],"mappings":";;;cAkCa,yBAmCX,QAAA,CAnCkC;;;IAAvB,KAAA,EAAA,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"parts-urls.js","names":["parts: number[]"],"sources":["../../../../../src/cli/commands/uploads/parts-urls.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext, parseJsonValue } from \"../../utils/options.js\";\n\nconst parsePartNumbers = (rawParts: unknown, rawPart: unknown): number[] => {\n const parts: number[] = [];\n\n if (rawParts) {\n const parsed = parseJsonValue(\"parts\", String(rawParts));\n if (!Array.isArray(parsed)) {\n throw new Error(\"--parts must be a JSON array of numbers\");\n }\n for (const value of parsed) {\n if (typeof value !== \"number\" || !Number.isInteger(value) || value < 1) {\n throw new Error(\"--parts must be a JSON array of positive integers\");\n }\n parts.push(value);\n }\n }\n\n if (rawPart) {\n const items = Array.isArray(rawPart) ? rawPart : [rawPart];\n for (const value of items) {\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 1) {\n throw new Error(\"--part must be a positive integer\");\n }\n parts.push(parsed);\n }\n }\n\n return Array.from(new Set(parts));\n};\n\nexport const uploadsPartsUrlsCommand = define({\n name: \"parts-urls\",\n description: \"Get signed URLs for multipart upload\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n parts: {\n type: \"string\",\n description: \"JSON array of part numbers\",\n },\n part: {\n type: \"number\",\n multiple: true,\n description: \"Part number (repeatable)\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const partNumbers = parsePartNumbers(ctx.values[\"parts\"], ctx.values[\"part\"]);\n if (!partNumbers.length) {\n throw new Error(\"Provide --parts or at least one --part\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.getPartUrls(uploadId, partNumbers);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAM,oBAAoB,UAAmB,YAA+B;CAC1E,MAAMA,QAAkB,EAAE;AAE1B,KAAI,UAAU;EACZ,MAAM,SAAS,eAAe,SAAS,OAAO,SAAS,CAAC;AACxD,MAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,0CAA0C;AAE5D,OAAK,MAAM,SAAS,QAAQ;AAC1B,OAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,IAAI,QAAQ,EACnE,OAAM,IAAI,MAAM,oDAAoD;AAEtE,SAAM,KAAK,MAAM;;;AAIrB,KAAI,SAAS;EACX,MAAM,QAAQ,MAAM,QAAQ,QAAQ,GAAG,UAAU,CAAC,QAAQ;AAC1D,OAAK,MAAM,SAAS,OAAO;GACzB,MAAM,SAAS,OAAO,MAAM;AAC5B,OAAI,CAAC,OAAO,UAAU,OAAO,IAAI,SAAS,EACxC,OAAM,IAAI,MAAM,oCAAoC;AAEtD,SAAM,KAAK,OAAO;;;AAItB,QAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC;;AAGnC,MAAa,0BAA0B,OAAO;CAC5C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,OAAO;GACL,MAAM;GACN,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,UAAU;GACV,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,cAAc,iBAAiB,IAAI,OAAO,UAAU,IAAI,OAAO,QAAQ;AAC7E,MAAI,CAAC,YAAY,OACf,OAAM,IAAI,MAAM,yCAAyC;EAI3D,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,YAAY,UAAU,YAAY;AAChE,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"parts-urls.js","names":["parts: number[]"],"sources":["../../../../../src/cli/commands/uploads/parts-urls.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext, parseJsonValue } from \"../../utils/options.js\";\n\nconst parsePartNumbers = (rawParts: unknown, rawPart: unknown): number[] => {\n const parts: number[] = [];\n\n if (rawParts) {\n const parsed = parseJsonValue(\"parts\", String(rawParts));\n if (!Array.isArray(parsed)) {\n throw new Error(\"--parts must be a JSON array of numbers\");\n }\n for (const value of parsed) {\n if (typeof value !== \"number\" || !Number.isInteger(value) || value < 1) {\n throw new Error(\"--parts must be a JSON array of positive integers\");\n }\n parts.push(value);\n }\n }\n\n if (rawPart) {\n const items = Array.isArray(rawPart) ? rawPart : [rawPart];\n for (const value of items) {\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 1) {\n throw new Error(\"--part must be a positive integer\");\n }\n parts.push(parsed);\n }\n }\n\n return Array.from(new Set(parts));\n};\n\nexport const uploadsPartsUrlsCommand = define({\n name: \"parts-urls\",\n description: \"Get signed URLs for multipart upload\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n parts: {\n type: \"string\",\n description: \"JSON array of part numbers\",\n },\n part: {\n type: \"number\",\n multiple: true,\n description: \"Part number (repeatable)\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const partNumbers = parsePartNumbers(ctx.values[\"parts\"], ctx.values[\"part\"]);\n if (!partNumbers.length) {\n throw new Error(\"Provide --parts or at least one --part\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.getPartUrls(uploadId, partNumbers);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAIA,MAAM,oBAAoB,UAAmB,YAA+B;CAC1E,MAAMA,QAAkB,EAAE;AAE1B,KAAI,UAAU;EACZ,MAAM,SAAS,eAAe,SAAS,OAAO,SAAS,CAAC;AACxD,MAAI,CAAC,MAAM,QAAQ,OAAO,CACxB,OAAM,IAAI,MAAM,0CAA0C;AAE5D,OAAK,MAAM,SAAS,QAAQ;AAC1B,OAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,MAAM,IAAI,QAAQ,EACnE,OAAM,IAAI,MAAM,oDAAoD;AAEtE,SAAM,KAAK,MAAM;;;AAIrB,KAAI,SAAS;EACX,MAAM,QAAQ,MAAM,QAAQ,QAAQ,GAAG,UAAU,CAAC,QAAQ;AAC1D,OAAK,MAAM,SAAS,OAAO;GACzB,MAAM,SAAS,OAAO,MAAM;AAC5B,OAAI,CAAC,OAAO,UAAU,OAAO,IAAI,SAAS,EACxC,OAAM,IAAI,MAAM,oCAAoC;AAEtD,SAAM,KAAK,OAAO;;;AAItB,QAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC;;AAGnC,MAAa,0BAA0B,OAAO;CAC5C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,OAAO;GACL,MAAM;GACN,aAAa;GACd;EACD,MAAM;GACJ,MAAM;GACN,UAAU;GACV,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,cAAc,iBAAiB,IAAI,OAAO,UAAU,IAAI,OAAO,QAAQ;AAC7E,MAAI,CAAC,YAAY,OACf,OAAM,IAAI,MAAM,yCAAyC;EAI3D,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,YAAY,UAAU,YAAY;AAChE,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,7 +1,7 @@
1
- import * as gunshi3 from "gunshi";
1
+ import * as gunshi15 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/progress.d.ts
4
- declare const uploadsProgressCommand: gunshi3.Command<{
4
+ declare const uploadsProgressCommand: gunshi15.Command<{
5
5
  "upload-id": {
6
6
  type: "string";
7
7
  short: string;
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/progress.ts"],"sourcesContent":[],"mappings":";;;cAGa,wBAoCX,OAAA,CApCiC;;;IAAtB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"progress.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/progress.ts"],"sourcesContent":[],"mappings":";;;cAIa,wBAoCX,QAAA,CApCiC;;;IAAtB,KAAA,EAAA,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","names":[],"sources":["../../../../../src/cli/commands/uploads/progress.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nexport const uploadsProgressCommand = define({\n name: \"progress\",\n description: \"Record upload progress\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n \"bytes-uploaded\": {\n type: \"number\",\n description: \"Total bytes uploaded\",\n },\n \"parts-uploaded\": {\n type: \"number\",\n description: \"Total parts uploaded\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const bytesUploaded = ctx.values[\"bytes-uploaded\"] as number | undefined;\n const partsUploaded = ctx.values[\"parts-uploaded\"] as number | undefined;\n\n if (bytesUploaded === undefined && partsUploaded === undefined) {\n throw new Error(\"Provide --bytes-uploaded, --parts-uploaded, or both.\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.reportProgress(uploadId, { bytesUploaded, partsUploaded });\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAa,yBAAyB,OAAO;CAC3C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,kBAAkB;GAChB,MAAM;GACN,aAAa;GACd;EACD,kBAAkB;GAChB,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,gBAAgB,IAAI,OAAO;EACjC,MAAM,gBAAgB,IAAI,OAAO;AAEjC,MAAI,kBAAkB,UAAa,kBAAkB,OACnD,OAAM,IAAI,MAAM,uDAAuD;EAIzE,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,eAAe,UAAU;GAAE;GAAe;GAAe,CAAC;AACxF,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"progress.js","names":[],"sources":["../../../../../src/cli/commands/uploads/progress.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext } from \"../../utils/options.js\";\n\nexport const uploadsProgressCommand = define({\n name: \"progress\",\n description: \"Record upload progress\",\n args: {\n ...baseArgs,\n \"upload-id\": {\n type: \"string\",\n short: \"i\",\n description: \"Upload id\",\n },\n \"bytes-uploaded\": {\n type: \"number\",\n description: \"Total bytes uploaded\",\n },\n \"parts-uploaded\": {\n type: \"number\",\n description: \"Total parts uploaded\",\n },\n },\n run: async (ctx) => {\n const uploadId = ctx.values[\"upload-id\"] as string | undefined;\n if (!uploadId) {\n throw new Error(\"Missing --upload-id\");\n }\n\n const bytesUploaded = ctx.values[\"bytes-uploaded\"] as number | undefined;\n const partsUploaded = ctx.values[\"parts-uploaded\"] as number | undefined;\n\n if (bytesUploaded === undefined && partsUploaded === undefined) {\n throw new Error(\"Provide --bytes-uploaded, --parts-uploaded, or both.\");\n }\n\n const client = createClientFromContext(ctx);\n const response = await client.reportProgress(uploadId, { bytesUploaded, partsUploaded });\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAIA,MAAa,yBAAyB,OAAO;CAC3C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,aAAa;GACX,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,kBAAkB;GAChB,MAAM;GACN,aAAa;GACd;EACD,kBAAkB;GAChB,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,WAAW,IAAI,OAAO;AAC5B,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,sBAAsB;EAGxC,MAAM,gBAAgB,IAAI,OAAO;EACjC,MAAM,gBAAgB,IAAI,OAAO;AAEjC,MAAI,kBAAkB,UAAa,kBAAkB,OACnD,OAAM,IAAI,MAAM,uDAAuD;EAIzE,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,eAAe,UAAU;GAAE;GAAe;GAAe,CAAC;AACxF,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,17 +1,17 @@
1
- import * as gunshi10 from "gunshi";
1
+ import * as gunshi0 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/transfer.d.ts
4
- declare const uploadsTransferCommand: gunshi10.Command<{
4
+ declare const uploadsTransferCommand: gunshi0.Command<{
5
5
  file: {
6
6
  type: "string";
7
7
  short: string;
8
8
  description: string;
9
9
  };
10
- "file-key": {
10
+ provider: {
11
11
  type: "string";
12
12
  description: string;
13
13
  };
14
- "key-parts": {
14
+ "file-key": {
15
15
  type: "string";
16
16
  description: string;
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/transfer.ts"],"sourcesContent":[],"mappings":";;;cAaa,wBAmMX,QAAA,CAnMiC;;;IAAtB,KAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"transfer.d.ts","names":[],"sources":["../../../../../src/cli/commands/uploads/transfer.ts"],"sourcesContent":[],"mappings":";;;cAgBa,wBA+LX,OAAA,CA/LiC;;;IAAtB,KAAA,EAAA,MAAA"}
@@ -1,4 +1,4 @@
1
- import { baseArgs, createClientFromContext, parseJsonValue, resolveOptionalFileKeyValue } from "../../utils/options.js";
1
+ import { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue, resolveProviderValue } from "../../utils/options.js";
2
2
  import { createReadStream, promises } from "node:fs";
3
3
  import path from "node:path";
4
4
  import { Readable } from "node:stream";
@@ -16,13 +16,13 @@ const uploadsTransferCommand = define({
16
16
  short: "f",
17
17
  description: "Path to file"
18
18
  },
19
- "file-key": {
19
+ provider: {
20
20
  type: "string",
21
- description: "File key (encoded)"
21
+ description: "Storage provider"
22
22
  },
23
- "key-parts": {
23
+ "file-key": {
24
24
  type: "string",
25
- description: "File key parts as JSON array"
25
+ description: "File key"
26
26
  },
27
27
  filename: {
28
28
  type: "string",
@@ -56,11 +56,8 @@ const uploadsTransferCommand = define({
56
56
  run: async (ctx) => {
57
57
  const filePath = ctx.values["file"];
58
58
  if (!filePath) throw new Error("Missing --file");
59
- const resolvedKey = resolveOptionalFileKeyValue({
60
- fileKey: ctx.values["file-key"],
61
- keyParts: ctx.values["key-parts"]
62
- });
63
- if (!resolvedKey.fileKey && !resolvedKey.keyParts) throw new Error("Missing file key. Provide --file-key or --key-parts.");
59
+ const provider = resolveProviderValue(ctx.values["provider"]);
60
+ const resolvedKey = resolveFileKeyValue({ fileKey: ctx.values["file-key"] });
64
61
  const sizeBytes = (await promises.stat(filePath)).size;
65
62
  const filename = ctx.values["filename"] ?? path.basename(filePath);
66
63
  const contentType = ctx.values["content-type"] ?? DEFAULT_CONTENT_TYPE;
@@ -69,8 +66,8 @@ const uploadsTransferCommand = define({
69
66
  const metadata = parseJsonValue("metadata", ctx.values["metadata"]);
70
67
  const client = createClientFromContext(ctx);
71
68
  const upload = await client.createUpload({
69
+ provider,
72
70
  fileKey: resolvedKey.fileKey,
73
- keyParts: resolvedKey.keyParts,
74
71
  filename,
75
72
  sizeBytes,
76
73
  contentType,