@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 +1 @@
1
- {"version":3,"file":"download-url.d.ts","names":[],"sources":["../../../../src/cli/commands/files/download-url.ts"],"sourcesContent":[],"mappings":";;;cAGa,yBAwBX,QAAA,CAxBkC;;;IAAvB,WAAA,EAAA,MAAA"}
1
+ {"version":3,"file":"download-url.d.ts","names":[],"sources":["../../../../src/cli/commands/files/download-url.ts"],"sourcesContent":[],"mappings":";;;cASa,yBAwBX,OAAA,CAxBkC;;;IAAvB,WAAA,EAAA,MAAA"}
@@ -1,4 +1,4 @@
1
- import { baseArgs, createClientFromContext, resolveFileKeyValue } from "../../utils/options.js";
1
+ import { baseArgs, createClientFromContext, resolveFileKeyValue, resolveProviderValue } from "../../utils/options.js";
2
2
  import { define } from "gunshi";
3
3
 
4
4
  //#region src/cli/commands/files/download-url.ts
@@ -7,21 +7,19 @@ const filesDownloadUrlCommand = define({
7
7
  description: "Get a signed download URL",
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
  },
19
19
  run: async (ctx) => {
20
- const resolvedKey = resolveFileKeyValue({
21
- fileKey: ctx.values["file-key"],
22
- keyParts: ctx.values["key-parts"]
23
- });
24
- const response = await createClientFromContext(ctx).getDownloadUrl(resolvedKey.fileKey);
20
+ const provider = resolveProviderValue(ctx.values["provider"]);
21
+ const resolvedKey = resolveFileKeyValue({ fileKey: ctx.values["file-key"] });
22
+ const response = await createClientFromContext(ctx).getDownloadUrl(provider, resolvedKey.fileKey);
25
23
  console.log(JSON.stringify(response, null, 2));
26
24
  }
27
25
  });
@@ -1 +1 @@
1
- {"version":3,"file":"download-url.js","names":[],"sources":["../../../../src/cli/commands/files/download-url.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext, resolveFileKeyValue } from \"../../utils/options.js\";\n\nexport const filesDownloadUrlCommand = define({\n name: \"download-url\",\n description: \"Get a signed download URL\",\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 },\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 client = createClientFromContext(ctx);\n const response = await client.getDownloadUrl(resolvedKey.fileKey);\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,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,cAAc,oBAAoB;GACtC,SAAS,IAAI,OAAO;GACpB,UAAU,IAAI,OAAO;GACtB,CAAC;EAGF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,eAAe,YAAY,QAAQ;AACjE,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"download-url.js","names":[],"sources":["../../../../src/cli/commands/files/download-url.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport {\n baseArgs,\n createClientFromContext,\n resolveFileKeyValue,\n resolveProviderValue,\n} from \"../../utils/options.js\";\n\nexport const filesDownloadUrlCommand = define({\n name: \"download-url\",\n description: \"Get a signed download URL\",\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 },\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 client = createClientFromContext(ctx);\n const response = await client.getDownloadUrl(provider, resolvedKey.fileKey);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AASA,MAAa,0BAA0B,OAAO;CAC5C,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,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;EAGF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,eAAe,UAAU,YAAY,QAAQ;AAC3E,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,12 +1,12 @@
1
- import * as gunshi13 from "gunshi";
1
+ import * as gunshi2 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/files/download.d.ts
4
- declare const filesDownloadCommand: gunshi13.Command<{
5
- "file-key": {
4
+ declare const filesDownloadCommand: gunshi2.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":"download.d.ts","names":[],"sources":["../../../../src/cli/commands/files/download.ts"],"sourcesContent":[],"mappings":";;;cAOa,sBAyEX,QAAA,CAzE+B;;;IAApB,WAAA,EAAA,MAyEX"}
1
+ {"version":3,"file":"download.d.ts","names":[],"sources":["../../../../src/cli/commands/files/download.ts"],"sourcesContent":[],"mappings":";;;cAca,sBAyEX,OAAA,CAzE+B;;;IAApB,WAAA,EAAA,MAyEX"}
@@ -1,6 +1,6 @@
1
- import { baseArgs, createClientFromContext, resolveFileKeyValue } from "../../utils/options.js";
2
- import { define } from "gunshi";
1
+ import { baseArgs, createClientFromContext, resolveFileKeyValue, resolveProviderValue } from "../../utils/options.js";
3
2
  import { createWriteStream } from "node:fs";
3
+ import { define } from "gunshi";
4
4
  import { Readable } from "node:stream";
5
5
  import { pipeline } from "node:stream/promises";
6
6
 
@@ -10,13 +10,13 @@ const filesDownloadCommand = define({
10
10
  description: "Download file contents",
11
11
  args: {
12
12
  ...baseArgs,
13
- "file-key": {
13
+ provider: {
14
14
  type: "string",
15
- description: "File key (encoded)"
15
+ description: "Storage provider"
16
16
  },
17
- "key-parts": {
17
+ "file-key": {
18
18
  type: "string",
19
- description: "File key parts as JSON array"
19
+ description: "File key"
20
20
  },
21
21
  output: {
22
22
  type: "string",
@@ -29,17 +29,15 @@ const filesDownloadCommand = define({
29
29
  }
30
30
  },
31
31
  run: async (ctx) => {
32
- const resolvedKey = resolveFileKeyValue({
33
- fileKey: ctx.values["file-key"],
34
- keyParts: ctx.values["key-parts"]
35
- });
32
+ const provider = resolveProviderValue(ctx.values["provider"]);
33
+ const resolvedKey = resolveFileKeyValue({ fileKey: ctx.values["file-key"] });
36
34
  const outputPath = ctx.values["output"];
37
35
  const toStdout = Boolean(ctx.values["stdout"]);
38
36
  if (!outputPath && !toStdout) throw new Error("Provide --output or --stdout.");
39
37
  const client = createClientFromContext(ctx);
40
38
  let response;
41
39
  try {
42
- const download = await client.getDownloadUrl(resolvedKey.fileKey);
40
+ const download = await client.getDownloadUrl(provider, resolvedKey.fileKey);
43
41
  response = await fetch(download.url, {
44
42
  method: "GET",
45
43
  headers: download.headers
@@ -47,7 +45,7 @@ const filesDownloadCommand = define({
47
45
  if (!response.ok) throw new Error(`Download failed (${response.status})`);
48
46
  } catch (error) {
49
47
  if ((error instanceof Error ? error.code : void 0) !== "SIGNED_URL_UNSUPPORTED") throw error;
50
- response = await client.downloadContent(resolvedKey.fileKey);
48
+ response = await client.downloadContent(provider, resolvedKey.fileKey);
51
49
  }
52
50
  if (!response.body) throw new Error("Response has no body");
53
51
  const bodyStream = Readable.fromWeb(response.body);
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","names":["response: Response"],"sources":["../../../../src/cli/commands/files/download.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { createWriteStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport type { ReadableStream as NodeReadableStream } from \"node:stream/web\";\nimport { pipeline } from \"node:stream/promises\";\nimport { baseArgs, createClientFromContext, resolveFileKeyValue } from \"../../utils/options.js\";\n\nexport const filesDownloadCommand = define({\n name: \"download\",\n description: \"Download file contents\",\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 output: {\n type: \"string\",\n short: \"o\",\n description: \"Output file path\",\n },\n stdout: {\n type: \"boolean\",\n description: \"Write content to stdout\",\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 outputPath = ctx.values[\"output\"] as string | undefined;\n const toStdout = Boolean(ctx.values[\"stdout\"]);\n\n if (!outputPath && !toStdout) {\n throw new Error(\"Provide --output or --stdout.\");\n }\n\n const client = createClientFromContext(ctx);\n\n let response: Response;\n try {\n const download = (await client.getDownloadUrl(resolvedKey.fileKey)) as {\n url: string;\n headers?: Record<string, string>;\n };\n response = await fetch(download.url, {\n method: \"GET\",\n headers: download.headers,\n });\n if (!response.ok) {\n throw new Error(`Download failed (${response.status})`);\n }\n } catch (error) {\n const code = error instanceof Error ? (error as Error & { code?: string }).code : undefined;\n if (code !== \"SIGNED_URL_UNSUPPORTED\") {\n throw error;\n }\n response = await client.downloadContent(resolvedKey.fileKey);\n }\n\n if (!response.body) {\n throw new Error(\"Response has no body\");\n }\n\n const bodyStream = Readable.fromWeb(response.body as unknown as NodeReadableStream);\n\n if (toStdout) {\n await pipeline(bodyStream, process.stdout);\n return;\n }\n\n await pipeline(bodyStream, createWriteStream(outputPath as string));\n console.log(`Downloaded to ${outputPath}`);\n },\n});\n"],"mappings":";;;;;;;AAOA,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,QAAQ;GACN,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,QAAQ;GACN,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,cAAc,oBAAoB;GACtC,SAAS,IAAI,OAAO;GACpB,UAAU,IAAI,OAAO;GACtB,CAAC;EAEF,MAAM,aAAa,IAAI,OAAO;EAC9B,MAAM,WAAW,QAAQ,IAAI,OAAO,UAAU;AAE9C,MAAI,CAAC,cAAc,CAAC,SAClB,OAAM,IAAI,MAAM,gCAAgC;EAGlD,MAAM,SAAS,wBAAwB,IAAI;EAE3C,IAAIA;AACJ,MAAI;GACF,MAAM,WAAY,MAAM,OAAO,eAAe,YAAY,QAAQ;AAIlE,cAAW,MAAM,MAAM,SAAS,KAAK;IACnC,QAAQ;IACR,SAAS,SAAS;IACnB,CAAC;AACF,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,oBAAoB,SAAS,OAAO,GAAG;WAElD,OAAO;AAEd,QADa,iBAAiB,QAAS,MAAoC,OAAO,YACrE,yBACX,OAAM;AAER,cAAW,MAAM,OAAO,gBAAgB,YAAY,QAAQ;;AAG9D,MAAI,CAAC,SAAS,KACZ,OAAM,IAAI,MAAM,uBAAuB;EAGzC,MAAM,aAAa,SAAS,QAAQ,SAAS,KAAsC;AAEnF,MAAI,UAAU;AACZ,SAAM,SAAS,YAAY,QAAQ,OAAO;AAC1C;;AAGF,QAAM,SAAS,YAAY,kBAAkB,WAAqB,CAAC;AACnE,UAAQ,IAAI,iBAAiB,aAAa;;CAE7C,CAAC"}
1
+ {"version":3,"file":"download.js","names":["response: Response"],"sources":["../../../../src/cli/commands/files/download.ts"],"sourcesContent":["import { createWriteStream } from \"node:fs\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport type { ReadableStream as NodeReadableStream } from \"node:stream/web\";\n\nimport { define } from \"gunshi\";\n\nimport {\n baseArgs,\n createClientFromContext,\n resolveFileKeyValue,\n resolveProviderValue,\n} from \"../../utils/options.js\";\n\nexport const filesDownloadCommand = define({\n name: \"download\",\n description: \"Download file contents\",\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 output: {\n type: \"string\",\n short: \"o\",\n description: \"Output file path\",\n },\n stdout: {\n type: \"boolean\",\n description: \"Write content to stdout\",\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 outputPath = ctx.values[\"output\"] as string | undefined;\n const toStdout = Boolean(ctx.values[\"stdout\"]);\n\n if (!outputPath && !toStdout) {\n throw new Error(\"Provide --output or --stdout.\");\n }\n\n const client = createClientFromContext(ctx);\n\n let response: Response;\n try {\n const download = (await client.getDownloadUrl(provider, resolvedKey.fileKey)) as {\n url: string;\n headers?: Record<string, string>;\n };\n response = await fetch(download.url, {\n method: \"GET\",\n headers: download.headers,\n });\n if (!response.ok) {\n throw new Error(`Download failed (${response.status})`);\n }\n } catch (error) {\n const code = error instanceof Error ? (error as Error & { code?: string }).code : undefined;\n if (code !== \"SIGNED_URL_UNSUPPORTED\") {\n throw error;\n }\n response = await client.downloadContent(provider, resolvedKey.fileKey);\n }\n\n if (!response.body) {\n throw new Error(\"Response has no body\");\n }\n\n const bodyStream = Readable.fromWeb(response.body as unknown as NodeReadableStream);\n\n if (toStdout) {\n await pipeline(bodyStream, process.stdout);\n return;\n }\n\n await pipeline(bodyStream, createWriteStream(outputPath as string));\n console.log(`Downloaded to ${outputPath}`);\n },\n});\n"],"mappings":";;;;;;;AAcA,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,QAAQ;GACN,MAAM;GACN,OAAO;GACP,aAAa;GACd;EACD,QAAQ;GACN,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,MAAM,aAAa,IAAI,OAAO;EAC9B,MAAM,WAAW,QAAQ,IAAI,OAAO,UAAU;AAE9C,MAAI,CAAC,cAAc,CAAC,SAClB,OAAM,IAAI,MAAM,gCAAgC;EAGlD,MAAM,SAAS,wBAAwB,IAAI;EAE3C,IAAIA;AACJ,MAAI;GACF,MAAM,WAAY,MAAM,OAAO,eAAe,UAAU,YAAY,QAAQ;AAI5E,cAAW,MAAM,MAAM,SAAS,KAAK;IACnC,QAAQ;IACR,SAAS,SAAS;IACnB,CAAC;AACF,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,oBAAoB,SAAS,OAAO,GAAG;WAElD,OAAO;AAEd,QADa,iBAAiB,QAAS,MAAoC,OAAO,YACrE,yBACX,OAAM;AAER,cAAW,MAAM,OAAO,gBAAgB,UAAU,YAAY,QAAQ;;AAGxE,MAAI,CAAC,SAAS,KACZ,OAAM,IAAI,MAAM,uBAAuB;EAGzC,MAAM,aAAa,SAAS,QAAQ,SAAS,KAAsC;AAEnF,MAAI,UAAU;AACZ,SAAM,SAAS,YAAY,QAAQ,OAAO;AAC1C;;AAGF,QAAM,SAAS,YAAY,kBAAkB,WAAqB,CAAC;AACnE,UAAQ,IAAI,iBAAiB,aAAa;;CAE7C,CAAC"}
@@ -1,12 +1,12 @@
1
- import * as gunshi11 from "gunshi";
1
+ import * as gunshi3 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/files/get.d.ts
4
- declare const filesGetCommand: gunshi11.Command<{
5
- "file-key": {
4
+ declare const filesGetCommand: gunshi3.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":"get.d.ts","names":[],"sources":["../../../../src/cli/commands/files/get.ts"],"sourcesContent":[],"mappings":";;;cAGa,iBAwBX,QAAA,CAxB0B;;;IAAf,WAAA,EAAA,MAwBX"}
1
+ {"version":3,"file":"get.d.ts","names":[],"sources":["../../../../src/cli/commands/files/get.ts"],"sourcesContent":[],"mappings":";;;cASa,iBAwBX,OAAA,CAxB0B;;;IAAf,WAAA,EAAA,MAwBX"}
@@ -1,4 +1,4 @@
1
- import { baseArgs, createClientFromContext, resolveFileKeyValue } from "../../utils/options.js";
1
+ import { baseArgs, createClientFromContext, resolveFileKeyValue, resolveProviderValue } from "../../utils/options.js";
2
2
  import { define } from "gunshi";
3
3
 
4
4
  //#region src/cli/commands/files/get.ts
@@ -7,21 +7,19 @@ const filesGetCommand = define({
7
7
  description: "Get 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
  },
19
19
  run: async (ctx) => {
20
- const resolvedKey = resolveFileKeyValue({
21
- fileKey: ctx.values["file-key"],
22
- keyParts: ctx.values["key-parts"]
23
- });
24
- const response = await createClientFromContext(ctx).getFile(resolvedKey.fileKey);
20
+ const provider = resolveProviderValue(ctx.values["provider"]);
21
+ const resolvedKey = resolveFileKeyValue({ fileKey: ctx.values["file-key"] });
22
+ const response = await createClientFromContext(ctx).getFile(provider, resolvedKey.fileKey);
25
23
  console.log(JSON.stringify(response, null, 2));
26
24
  }
27
25
  });
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","names":[],"sources":["../../../../src/cli/commands/files/get.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext, resolveFileKeyValue } from \"../../utils/options.js\";\n\nexport const filesGetCommand = define({\n name: \"get\",\n description: \"Get 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 },\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 client = createClientFromContext(ctx);\n const response = await client.getFile(resolvedKey.fileKey);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAa,kBAAkB,OAAO;CACpC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,YAAY;GACV,MAAM;GACN,aAAa;GACd;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,cAAc,oBAAoB;GACtC,SAAS,IAAI,OAAO;GACpB,UAAU,IAAI,OAAO;GACtB,CAAC;EAGF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,QAAQ,YAAY,QAAQ;AAC1D,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"get.js","names":[],"sources":["../../../../src/cli/commands/files/get.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport {\n baseArgs,\n createClientFromContext,\n resolveFileKeyValue,\n resolveProviderValue,\n} from \"../../utils/options.js\";\n\nexport const filesGetCommand = define({\n name: \"get\",\n description: \"Get 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 },\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 client = createClientFromContext(ctx);\n const response = await client.getFile(provider, resolvedKey.fileKey);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AASA,MAAa,kBAAkB,OAAO;CACpC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,YAAY;GACV,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;EAGF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,QAAQ,UAAU,YAAY,QAAQ;AACpE,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,12 +1,12 @@
1
- import * as gunshi10 from "gunshi";
1
+ import * as gunshi4 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/files/list.d.ts
4
- declare const filesListCommand: gunshi10.Command<{
5
- prefix: {
4
+ declare const filesListCommand: gunshi4.Command<{
5
+ provider: {
6
6
  type: "string";
7
7
  description: string;
8
8
  };
9
- "prefix-parts": {
9
+ prefix: {
10
10
  type: "string";
11
11
  description: string;
12
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","names":[],"sources":["../../../../src/cli/commands/files/list.ts"],"sourcesContent":[],"mappings":";;;cAGa,kBA+CX,QAAA,CA/C2B;;;IAAhB,WAAA,EAAA,MA+CX"}
1
+ {"version":3,"file":"list.d.ts","names":[],"sources":["../../../../src/cli/commands/files/list.ts"],"sourcesContent":[],"mappings":";;;cAIa,kBA+CX,OAAA,CA/C2B;;;IAAhB,WAAA,EAAA,MA+CX"}
@@ -7,13 +7,13 @@ const filesListCommand = define({
7
7
  description: "List files",
8
8
  args: {
9
9
  ...baseArgs,
10
- prefix: {
10
+ provider: {
11
11
  type: "string",
12
- description: "File key prefix (must end with '.')"
12
+ description: "Filter by storage provider"
13
13
  },
14
- "prefix-parts": {
14
+ prefix: {
15
15
  type: "string",
16
- description: "File key prefix parts as JSON array"
16
+ description: "File key prefix"
17
17
  },
18
18
  cursor: {
19
19
  type: "string",
@@ -33,11 +33,9 @@ const filesListCommand = define({
33
33
  }
34
34
  },
35
35
  run: async (ctx) => {
36
- const prefix = resolvePrefixValue({
37
- prefix: ctx.values["prefix"],
38
- prefixParts: ctx.values["prefix-parts"]
39
- });
36
+ const prefix = resolvePrefixValue({ prefix: ctx.values["prefix"] });
40
37
  const response = await createClientFromContext(ctx).listFiles({
38
+ provider: ctx.values["provider"],
41
39
  prefix,
42
40
  cursor: ctx.values["cursor"],
43
41
  pageSize: ctx.values["page-size"],
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","names":[],"sources":["../../../../src/cli/commands/files/list.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport { baseArgs, createClientFromContext, resolvePrefixValue } from \"../../utils/options.js\";\n\nexport const filesListCommand = define({\n name: \"list\",\n description: \"List files\",\n args: {\n ...baseArgs,\n prefix: {\n type: \"string\",\n description: \"File key prefix (must end with '.')\",\n },\n \"prefix-parts\": {\n type: \"string\",\n description: \"File key prefix parts as JSON array\",\n },\n cursor: {\n type: \"string\",\n description: \"Cursor for pagination\",\n },\n \"page-size\": {\n type: \"number\",\n description: \"Page size for pagination\",\n },\n status: {\n type: \"string\",\n description: \"Filter by status (ready, deleted)\",\n },\n \"uploader-id\": {\n type: \"string\",\n description: \"Filter by uploader id\",\n },\n },\n run: async (ctx) => {\n const prefix = resolvePrefixValue({\n prefix: ctx.values[\"prefix\"] as string | undefined,\n prefixParts: ctx.values[\"prefix-parts\"] as string | undefined,\n });\n\n const client = createClientFromContext(ctx);\n const response = await client.listFiles({\n prefix,\n cursor: ctx.values[\"cursor\"] as string | undefined,\n pageSize: ctx.values[\"page-size\"] as number | undefined,\n status: ctx.values[\"status\"] as string | undefined,\n uploaderId: ctx.values[\"uploader-id\"] as string | undefined,\n });\n\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAGA,MAAa,mBAAmB,OAAO;CACrC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,QAAQ;GACN,MAAM;GACN,aAAa;GACd;EACD,gBAAgB;GACd,MAAM;GACN,aAAa;GACd;EACD,QAAQ;GACN,MAAM;GACN,aAAa;GACd;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACD,QAAQ;GACN,MAAM;GACN,aAAa;GACd;EACD,eAAe;GACb,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,SAAS,mBAAmB;GAChC,QAAQ,IAAI,OAAO;GACnB,aAAa,IAAI,OAAO;GACzB,CAAC;EAGF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,UAAU;GACtC;GACA,QAAQ,IAAI,OAAO;GACnB,UAAU,IAAI,OAAO;GACrB,QAAQ,IAAI,OAAO;GACnB,YAAY,IAAI,OAAO;GACxB,CAAC;AAEF,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
1
+ {"version":3,"file":"list.js","names":[],"sources":["../../../../src/cli/commands/files/list.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport { baseArgs, createClientFromContext, resolvePrefixValue } from \"../../utils/options.js\";\n\nexport const filesListCommand = define({\n name: \"list\",\n description: \"List files\",\n args: {\n ...baseArgs,\n provider: {\n type: \"string\",\n description: \"Filter by storage provider\",\n },\n prefix: {\n type: \"string\",\n description: \"File key prefix\",\n },\n cursor: {\n type: \"string\",\n description: \"Cursor for pagination\",\n },\n \"page-size\": {\n type: \"number\",\n description: \"Page size for pagination\",\n },\n status: {\n type: \"string\",\n description: \"Filter by status (ready, deleted)\",\n },\n \"uploader-id\": {\n type: \"string\",\n description: \"Filter by uploader id\",\n },\n },\n run: async (ctx) => {\n const prefix = resolvePrefixValue({\n prefix: ctx.values[\"prefix\"] as string | undefined,\n });\n\n const client = createClientFromContext(ctx);\n const response = await client.listFiles({\n provider: ctx.values[\"provider\"] as string | undefined,\n prefix,\n cursor: ctx.values[\"cursor\"] as string | undefined,\n pageSize: ctx.values[\"page-size\"] as number | undefined,\n status: ctx.values[\"status\"] as string | undefined,\n uploaderId: ctx.values[\"uploader-id\"] as string | undefined,\n });\n\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AAIA,MAAa,mBAAmB,OAAO;CACrC,MAAM;CACN,aAAa;CACb,MAAM;EACJ,GAAG;EACH,UAAU;GACR,MAAM;GACN,aAAa;GACd;EACD,QAAQ;GACN,MAAM;GACN,aAAa;GACd;EACD,QAAQ;GACN,MAAM;GACN,aAAa;GACd;EACD,aAAa;GACX,MAAM;GACN,aAAa;GACd;EACD,QAAQ;GACN,MAAM;GACN,aAAa;GACd;EACD,eAAe;GACb,MAAM;GACN,aAAa;GACd;EACF;CACD,KAAK,OAAO,QAAQ;EAClB,MAAM,SAAS,mBAAmB,EAChC,QAAQ,IAAI,OAAO,WACpB,CAAC;EAGF,MAAM,WAAW,MADF,wBAAwB,IAAI,CACb,UAAU;GACtC,UAAU,IAAI,OAAO;GACrB;GACA,QAAQ,IAAI,OAAO;GACnB,UAAU,IAAI,OAAO;GACrB,QAAQ,IAAI,OAAO;GACnB,YAAY,IAAI,OAAO;GACxB,CAAC;AAEF,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
@@ -1,12 +1,12 @@
1
- import * as gunshi12 from "gunshi";
1
+ import * as gunshi5 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/files/update.d.ts
4
- declare const filesUpdateCommand: gunshi12.Command<{
5
- "file-key": {
4
+ declare const filesUpdateCommand: gunshi5.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":"update.d.ts","names":[],"sources":["../../../../src/cli/commands/files/update.ts"],"sourcesContent":[],"mappings":";;;cAQa,oBA6DX,QAAA,CA7D6B;;;IAAlB,WAAA,EAAA,MA6DX"}
1
+ {"version":3,"file":"update.d.ts","names":[],"sources":["../../../../src/cli/commands/files/update.ts"],"sourcesContent":[],"mappings":";;;cAUa,oBA6DX,OAAA,CA7D6B;;;IAAlB,WAAA,EAAA,MA6DX"}
@@ -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 gunshi9 from "gunshi";
1
+ import * as gunshi6 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/files/upload.d.ts
4
- declare const filesUploadCommand: gunshi9.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,OAAA,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,7 +1,7 @@
1
- import { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue } from "../../utils/options.js";
2
- import { define } from "gunshi";
1
+ import { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue, resolveProviderValue } from "../../utils/options.js";
3
2
  import { promises } from "node:fs";
4
3
  import path from "node:path";
4
+ import { define } from "gunshi";
5
5
 
6
6
  //#region src/cli/commands/files/upload.ts
7
7
  const DEFAULT_CONTENT_TYPE = "application/octet-stream";
@@ -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 gunshi5 from "gunshi";
1
+ import * as gunshi7 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/abort.d.ts
4
- declare const uploadsAbortCommand: gunshi5.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 gunshi6 from "gunshi";
1
+ import * as gunshi8 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/complete.d.ts
4
- declare const uploadsCompleteCommand: gunshi6.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 gunshi7 from "gunshi";
1
+ import * as gunshi9 from "gunshi";
2
2
 
3
3
  //#region src/cli/commands/uploads/content.d.ts
4
- declare const uploadsContentCommand: gunshi7.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,6 +1,6 @@
1
1
  import { baseArgs, createClientFromContext } from "../../utils/options.js";
2
- import { define } from "gunshi";
3
2
  import { createReadStream } from "node:fs";
3
+ import { define } from "gunshi";
4
4
  import { Readable } from "node:stream";
5
5
 
6
6
  //#region src/cli/commands/uploads/content.ts
@@ -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"}