@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.
- package/README.md +148 -12
- package/dist/browser/client/clients.js +17 -9
- package/dist/browser/client/clients.js.map +1 -1
- package/dist/browser/client/helpers.d.ts +15 -6
- package/dist/browser/client/helpers.d.ts.map +1 -1
- package/dist/browser/client/helpers.js +176 -30
- package/dist/browser/client/helpers.js.map +1 -1
- 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
- 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
- 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
- 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
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/atom/index.js +2 -1
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/atom/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/clean-stores/index.js +6 -0
- 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
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/computed/index.js +8 -5
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/computed/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/lifecycle/index.js +1 -1
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/lifecycle/index.js.map +1 -1
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/listen-keys/index.js +1 -1
- 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
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/map/index.js +1 -1
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/map/index.js.map +1 -1
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/task/index.js +1 -1
- package/dist/browser/client/node_modules/.pnpm/{nanostores@1.1.0 → nanostores@1.2.0}/node_modules/nanostores/task/index.js.map +1 -1
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/warn/index.js +16 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.2.0/node_modules/nanostores/warn/index.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/definition.js +1 -42
- package/dist/browser/client/packages/fragment-upload/src/definition.js.map +1 -1
- package/dist/browser/client/packages/fragment-upload/src/routes/files.js +12 -5
- package/dist/browser/client/packages/fragment-upload/src/routes/files.js.map +1 -1
- package/dist/browser/client/packages/fragment-upload/src/routes/shared.js +3 -4
- package/dist/browser/client/packages/fragment-upload/src/routes/shared.js.map +1 -1
- package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js +32 -21
- package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js.map +1 -1
- package/dist/browser/client/packages/fragment-upload/src/schema.js +33 -3
- package/dist/browser/client/packages/fragment-upload/src/schema.js.map +1 -1
- package/dist/browser/client/packages/fragment-upload/src/types.d.ts +1 -2
- package/dist/browser/client/packages/fragment-upload/src/types.d.ts.map +1 -1
- package/dist/browser/client/packages/fragno/dist/client/client.js +28 -12
- package/dist/browser/client/packages/fragno/dist/client/client.js.map +1 -1
- package/dist/browser/client/packages/fragno/dist/client/client.svelte.js +11 -3
- package/dist/browser/client/packages/fragno/dist/client/client.svelte.js.map +1 -1
- package/dist/browser/client/packages/fragno/dist/client/react.js +104 -12
- package/dist/browser/client/packages/fragno/dist/client/react.js.map +1 -1
- package/dist/browser/client/packages/fragno/dist/client/solid.js +25 -11
- package/dist/browser/client/packages/fragno/dist/client/solid.js.map +1 -1
- package/dist/browser/client/packages/fragno/dist/client/vanilla.js +21 -1
- package/dist/browser/client/packages/fragno/dist/client/vanilla.js.map +1 -1
- package/dist/browser/client/packages/fragno/dist/client/vue.js +19 -11
- package/dist/browser/client/packages/fragno/dist/client/vue.js.map +1 -1
- package/dist/browser/client/react.d.ts +215 -192
- package/dist/browser/client/react.d.ts.map +1 -1
- package/dist/browser/client/react.js.map +1 -1
- package/dist/browser/client/solid.d.ts +218 -196
- package/dist/browser/client/solid.d.ts.map +1 -1
- package/dist/browser/client/solid.js.map +1 -1
- package/dist/browser/client/svelte.d.ts +216 -193
- package/dist/browser/client/svelte.d.ts.map +1 -1
- package/dist/browser/client/svelte.js.map +1 -1
- package/dist/browser/client/vanilla.d.ts +217 -195
- package/dist/browser/client/vanilla.d.ts.map +1 -1
- package/dist/browser/client/vanilla.js.map +1 -1
- package/dist/browser/client/vue.d.ts +217 -194
- package/dist/browser/client/vue.d.ts.map +1 -1
- package/dist/browser/client/vue.js.map +1 -1
- package/dist/cli/commands/files/delete.d.ts +4 -4
- package/dist/cli/commands/files/delete.d.ts.map +1 -1
- package/dist/cli/commands/files/delete.js +8 -10
- package/dist/cli/commands/files/delete.js.map +1 -1
- package/dist/cli/commands/files/download-url.d.ts +4 -4
- package/dist/cli/commands/files/download-url.d.ts.map +1 -1
- package/dist/cli/commands/files/download-url.js +8 -10
- package/dist/cli/commands/files/download-url.js.map +1 -1
- package/dist/cli/commands/files/download.d.ts +4 -4
- package/dist/cli/commands/files/download.d.ts.map +1 -1
- package/dist/cli/commands/files/download.js +10 -12
- package/dist/cli/commands/files/download.js.map +1 -1
- package/dist/cli/commands/files/get.d.ts +4 -4
- package/dist/cli/commands/files/get.d.ts.map +1 -1
- package/dist/cli/commands/files/get.js +8 -10
- package/dist/cli/commands/files/get.js.map +1 -1
- package/dist/cli/commands/files/list.d.ts +4 -4
- package/dist/cli/commands/files/list.d.ts.map +1 -1
- package/dist/cli/commands/files/list.js +6 -8
- package/dist/cli/commands/files/list.js.map +1 -1
- package/dist/cli/commands/files/update.d.ts +4 -4
- package/dist/cli/commands/files/update.d.ts.map +1 -1
- package/dist/cli/commands/files/update.js +8 -10
- package/dist/cli/commands/files/update.js.map +1 -1
- package/dist/cli/commands/files/upload.d.ts +4 -4
- package/dist/cli/commands/files/upload.d.ts.map +1 -1
- package/dist/cli/commands/files/upload.js +10 -12
- package/dist/cli/commands/files/upload.js.map +1 -1
- package/dist/cli/commands/uploads/abort.d.ts +2 -2
- package/dist/cli/commands/uploads/abort.d.ts.map +1 -1
- package/dist/cli/commands/uploads/abort.js.map +1 -1
- package/dist/cli/commands/uploads/complete.d.ts +2 -2
- package/dist/cli/commands/uploads/complete.d.ts.map +1 -1
- package/dist/cli/commands/uploads/complete.js.map +1 -1
- package/dist/cli/commands/uploads/content.d.ts +2 -2
- package/dist/cli/commands/uploads/content.d.ts.map +1 -1
- package/dist/cli/commands/uploads/content.js +1 -1
- package/dist/cli/commands/uploads/content.js.map +1 -1
- package/dist/cli/commands/uploads/create.d.ts +4 -4
- package/dist/cli/commands/uploads/create.d.ts.map +1 -1
- package/dist/cli/commands/uploads/create.js +8 -11
- package/dist/cli/commands/uploads/create.js.map +1 -1
- package/dist/cli/commands/uploads/get.d.ts +2 -2
- package/dist/cli/commands/uploads/get.d.ts.map +1 -1
- package/dist/cli/commands/uploads/get.js.map +1 -1
- package/dist/cli/commands/uploads/parts-complete.d.ts +2 -2
- package/dist/cli/commands/uploads/parts-complete.d.ts.map +1 -1
- package/dist/cli/commands/uploads/parts-complete.js.map +1 -1
- package/dist/cli/commands/uploads/parts-list.d.ts +2 -2
- package/dist/cli/commands/uploads/parts-list.d.ts.map +1 -1
- package/dist/cli/commands/uploads/parts-list.js.map +1 -1
- package/dist/cli/commands/uploads/parts-urls.d.ts +2 -2
- package/dist/cli/commands/uploads/parts-urls.d.ts.map +1 -1
- package/dist/cli/commands/uploads/parts-urls.js.map +1 -1
- package/dist/cli/commands/uploads/progress.d.ts +2 -2
- package/dist/cli/commands/uploads/progress.d.ts.map +1 -1
- package/dist/cli/commands/uploads/progress.js.map +1 -1
- package/dist/cli/commands/uploads/transfer.d.ts +4 -4
- package/dist/cli/commands/uploads/transfer.d.ts.map +1 -1
- package/dist/cli/commands/uploads/transfer.js +9 -12
- package/dist/cli/commands/uploads/transfer.js.map +1 -1
- package/dist/cli/index.d.ts +13 -13
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +14 -14
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/utils/client.js +22 -5
- package/dist/cli/utils/client.js.map +1 -1
- package/dist/cli/utils/options.js +7 -43
- package/dist/cli/utils/options.js.map +1 -1
- package/dist/node/cli/commands/files/delete.d.ts +4 -4
- package/dist/node/cli/commands/files/delete.d.ts.map +1 -1
- package/dist/node/cli/commands/files/delete.js +8 -10
- package/dist/node/cli/commands/files/delete.js.map +1 -1
- package/dist/node/cli/commands/files/download-url.d.ts +4 -4
- package/dist/node/cli/commands/files/download-url.d.ts.map +1 -1
- package/dist/node/cli/commands/files/download-url.js +8 -10
- package/dist/node/cli/commands/files/download-url.js.map +1 -1
- package/dist/node/cli/commands/files/download.d.ts +4 -4
- package/dist/node/cli/commands/files/download.d.ts.map +1 -1
- package/dist/node/cli/commands/files/download.js +9 -11
- package/dist/node/cli/commands/files/download.js.map +1 -1
- package/dist/node/cli/commands/files/get.d.ts +4 -4
- package/dist/node/cli/commands/files/get.d.ts.map +1 -1
- package/dist/node/cli/commands/files/get.js +8 -10
- package/dist/node/cli/commands/files/get.js.map +1 -1
- package/dist/node/cli/commands/files/list.d.ts +4 -4
- package/dist/node/cli/commands/files/list.d.ts.map +1 -1
- package/dist/node/cli/commands/files/list.js +6 -8
- package/dist/node/cli/commands/files/list.js.map +1 -1
- package/dist/node/cli/commands/files/update.d.ts +4 -4
- package/dist/node/cli/commands/files/update.d.ts.map +1 -1
- package/dist/node/cli/commands/files/update.js +8 -10
- package/dist/node/cli/commands/files/update.js.map +1 -1
- package/dist/node/cli/commands/files/upload.d.ts +4 -4
- package/dist/node/cli/commands/files/upload.d.ts.map +1 -1
- package/dist/node/cli/commands/files/upload.js +9 -11
- package/dist/node/cli/commands/files/upload.js.map +1 -1
- package/dist/node/cli/commands/uploads/abort.d.ts +2 -2
- package/dist/node/cli/commands/uploads/abort.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/abort.js.map +1 -1
- package/dist/node/cli/commands/uploads/complete.d.ts +2 -2
- package/dist/node/cli/commands/uploads/complete.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/complete.js.map +1 -1
- package/dist/node/cli/commands/uploads/content.d.ts +2 -2
- package/dist/node/cli/commands/uploads/content.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/content.js.map +1 -1
- package/dist/node/cli/commands/uploads/create.d.ts +4 -4
- package/dist/node/cli/commands/uploads/create.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/create.js +8 -11
- package/dist/node/cli/commands/uploads/create.js.map +1 -1
- package/dist/node/cli/commands/uploads/get.d.ts +2 -2
- package/dist/node/cli/commands/uploads/get.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/get.js.map +1 -1
- package/dist/node/cli/commands/uploads/parts-complete.d.ts +2 -2
- package/dist/node/cli/commands/uploads/parts-complete.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/parts-complete.js.map +1 -1
- package/dist/node/cli/commands/uploads/parts-list.d.ts +2 -2
- package/dist/node/cli/commands/uploads/parts-list.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/parts-list.js.map +1 -1
- package/dist/node/cli/commands/uploads/parts-urls.d.ts +2 -2
- package/dist/node/cli/commands/uploads/parts-urls.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/parts-urls.js.map +1 -1
- package/dist/node/cli/commands/uploads/progress.d.ts +2 -2
- package/dist/node/cli/commands/uploads/progress.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/progress.js.map +1 -1
- package/dist/node/cli/commands/uploads/transfer.d.ts +4 -4
- package/dist/node/cli/commands/uploads/transfer.d.ts.map +1 -1
- package/dist/node/cli/commands/uploads/transfer.js +8 -11
- package/dist/node/cli/commands/uploads/transfer.js.map +1 -1
- package/dist/node/cli/index.d.ts +13 -13
- package/dist/node/cli/index.d.ts.map +1 -1
- package/dist/node/cli/index.js +14 -14
- package/dist/node/cli/index.js.map +1 -1
- package/dist/node/cli/utils/client.js +22 -5
- package/dist/node/cli/utils/client.js.map +1 -1
- package/dist/node/cli/utils/options.js +7 -43
- package/dist/node/cli/utils/options.js.map +1 -1
- package/dist/node/client/clients.d.ts +217 -194
- package/dist/node/client/clients.d.ts.map +1 -1
- package/dist/node/client/clients.js +17 -9
- package/dist/node/client/clients.js.map +1 -1
- package/dist/node/client/helpers.d.ts +15 -6
- package/dist/node/client/helpers.d.ts.map +1 -1
- package/dist/node/client/helpers.js +176 -30
- package/dist/node/client/helpers.js.map +1 -1
- package/dist/node/client/react.d.ts +217 -194
- package/dist/node/client/react.d.ts.map +1 -1
- package/dist/node/client/react.js.map +1 -1
- package/dist/node/client/solid.d.ts +218 -196
- package/dist/node/client/solid.d.ts.map +1 -1
- package/dist/node/client/solid.js.map +1 -1
- package/dist/node/client/svelte.d.ts +216 -193
- package/dist/node/client/svelte.d.ts.map +1 -1
- package/dist/node/client/svelte.js.map +1 -1
- package/dist/node/client/vanilla.d.ts +217 -195
- package/dist/node/client/vanilla.d.ts.map +1 -1
- package/dist/node/client/vanilla.js.map +1 -1
- package/dist/node/client/vue.d.ts +217 -194
- package/dist/node/client/vue.d.ts.map +1 -1
- package/dist/node/client/vue.js.map +1 -1
- package/dist/node/config.d.ts +6 -6
- package/dist/node/config.d.ts.map +1 -1
- package/dist/node/config.js.map +1 -1
- package/dist/node/definition.d.ts +588 -219
- package/dist/node/definition.d.ts.map +1 -1
- package/dist/node/definition.js +27 -3
- package/dist/node/definition.js.map +1 -1
- package/dist/node/file-key.d.ts +19 -0
- package/dist/node/file-key.d.ts.map +1 -0
- package/dist/node/file-key.js +47 -0
- package/dist/node/file-key.js.map +1 -0
- package/dist/node/index.d.ts +582 -175
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +3 -2
- package/dist/node/index.js.map +1 -1
- package/dist/node/routes/files.js +99 -64
- package/dist/node/routes/files.js.map +1 -1
- package/dist/node/routes/index.d.ts +1497 -721
- package/dist/node/routes/index.d.ts.map +1 -1
- package/dist/node/routes/shared.js +5 -9
- package/dist/node/routes/shared.js.map +1 -1
- package/dist/node/routes/uploads.js +105 -47
- package/dist/node/routes/uploads.js.map +1 -1
- package/dist/node/schema.d.ts +6 -6
- package/dist/node/schema.d.ts.map +1 -1
- package/dist/node/schema.js +12 -3
- package/dist/node/schema.js.map +1 -1
- package/dist/node/services/files.d.ts +6 -2
- package/dist/node/services/files.d.ts.map +1 -1
- package/dist/node/services/files.js +22 -20
- package/dist/node/services/files.js.map +1 -1
- package/dist/node/services/helpers.js +37 -15
- package/dist/node/services/helpers.js.map +1 -1
- package/dist/node/services/uploads.d.ts +10 -5
- package/dist/node/services/uploads.d.ts.map +1 -1
- package/dist/node/services/uploads.js +340 -63
- package/dist/node/services/uploads.js.map +1 -1
- package/dist/node/storage/fs.d.ts.map +1 -1
- package/dist/node/storage/fs.js +16 -10
- package/dist/node/storage/fs.js.map +1 -1
- package/dist/node/storage/object-key.js +36 -0
- package/dist/node/storage/object-key.js.map +1 -0
- package/dist/node/storage/r2-binding.d.ts +59 -0
- package/dist/node/storage/r2-binding.d.ts.map +1 -0
- package/dist/node/storage/r2-binding.js +245 -0
- package/dist/node/storage/r2-binding.js.map +1 -0
- package/dist/node/storage/r2.d.ts +6 -5
- package/dist/node/storage/r2.d.ts.map +1 -1
- package/dist/node/storage/s3.d.ts.map +1 -1
- package/dist/node/storage/s3.js +16 -10
- package/dist/node/storage/s3.js.map +1 -1
- package/dist/node/storage/types.d.ts +6 -5
- package/dist/node/storage/types.d.ts.map +1 -1
- package/dist/node/types.d.ts +1 -2
- package/dist/node/types.d.ts.map +1 -1
- package/package.json +26 -46
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/atom/index.js.map +0 -1
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/clean-stores/index.js +0 -6
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/computed/index.js.map +0 -1
- package/dist/browser/client/packages/fragment-upload/src/keys.d.ts +0 -7
- package/dist/browser/client/packages/fragment-upload/src/keys.d.ts.map +0 -1
- package/dist/browser/client/packages/fragment-upload/src/keys.js +0 -28
- package/dist/browser/client/packages/fragment-upload/src/keys.js.map +0 -1
- package/dist/browser/index-BdjKPO4J.d.ts +0 -177
- package/dist/browser/index-BdjKPO4J.d.ts.map +0 -1
- package/dist/browser/index.js +0 -3
- package/dist/browser/src-vdNJUbjT.js +0 -1982
- package/dist/browser/src-vdNJUbjT.js.map +0 -1
- package/dist/cli/keys.js +0 -32
- package/dist/cli/keys.js.map +0 -1
- package/dist/node/keys.d.ts +0 -12
- package/dist/node/keys.d.ts.map +0 -1
- package/dist/node/keys.js +0 -63
- package/dist/node/keys.js.map +0 -1
- 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
|
-
|
|
10
|
+
provider: {
|
|
11
11
|
type: "string",
|
|
12
|
-
description: "
|
|
12
|
+
description: "Storage provider"
|
|
13
13
|
},
|
|
14
|
-
"key
|
|
14
|
+
"file-key": {
|
|
15
15
|
type: "string",
|
|
16
|
-
description: "File key
|
|
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
|
|
37
|
-
|
|
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
|
|
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
|
|
1
|
+
import * as gunshi6 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/files/upload.d.ts
|
|
4
|
-
declare const filesUploadCommand:
|
|
4
|
+
declare const filesUploadCommand: gunshi6.Command<{
|
|
5
5
|
file: {
|
|
6
6
|
type: "string";
|
|
7
7
|
short: string;
|
|
8
8
|
description: string;
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
provider: {
|
|
11
11
|
type: "string";
|
|
12
12
|
description: string;
|
|
13
13
|
};
|
|
14
|
-
"key
|
|
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":";;;
|
|
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
|
-
|
|
18
|
+
provider: {
|
|
19
19
|
type: "string",
|
|
20
|
-
description: "
|
|
20
|
+
description: "Storage provider"
|
|
21
21
|
},
|
|
22
|
-
"key
|
|
22
|
+
"file-key": {
|
|
23
23
|
type: "string",
|
|
24
|
-
description: "File key
|
|
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
|
|
62
|
-
|
|
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
|
-
|
|
71
|
-
|
|
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 {
|
|
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
|
|
1
|
+
import * as gunshi7 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/abort.d.ts
|
|
4
|
-
declare const uploadsAbortCommand:
|
|
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":";;;
|
|
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":";;;;
|
|
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
|
|
1
|
+
import * as gunshi8 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/complete.d.ts
|
|
4
|
-
declare const uploadsCompleteCommand:
|
|
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":";;;
|
|
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":";;;;
|
|
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
|
|
1
|
+
import * as gunshi9 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/content.d.ts
|
|
4
|
-
declare const uploadsContentCommand:
|
|
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":";;;
|
|
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 {
|
|
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
|
|
1
|
+
import * as gunshi10 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/create.d.ts
|
|
4
|
-
declare const uploadsCreateCommand:
|
|
5
|
-
|
|
4
|
+
declare const uploadsCreateCommand: gunshi10.Command<{
|
|
5
|
+
provider: {
|
|
6
6
|
type: "string";
|
|
7
7
|
description: string;
|
|
8
8
|
};
|
|
9
|
-
"key
|
|
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":";;;
|
|
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,
|
|
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
|
-
|
|
10
|
+
provider: {
|
|
11
11
|
type: "string",
|
|
12
|
-
description: "
|
|
12
|
+
description: "Storage provider"
|
|
13
13
|
},
|
|
14
|
-
"key
|
|
14
|
+
"file-key": {
|
|
15
15
|
type: "string",
|
|
16
|
-
description: "File key
|
|
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
|
|
59
|
-
|
|
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
|
|
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
|
|
1
|
+
import * as gunshi11 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/get.d.ts
|
|
4
|
-
declare const uploadsGetCommand:
|
|
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":";;;
|
|
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":";;;;
|
|
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
|
|
1
|
+
import * as gunshi12 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/parts-complete.d.ts
|
|
4
|
-
declare const uploadsPartsCompleteCommand:
|
|
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":";;;
|
|
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":";;;;
|
|
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
|
|
1
|
+
import * as gunshi13 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/parts-list.d.ts
|
|
4
|
-
declare const uploadsPartsListCommand:
|
|
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":";;;
|
|
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":";;;;
|
|
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
|
|
1
|
+
import * as gunshi14 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/parts-urls.d.ts
|
|
4
|
-
declare const uploadsPartsUrlsCommand:
|
|
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":";;;
|
|
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":";;;;
|
|
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
|
|
1
|
+
import * as gunshi15 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/progress.d.ts
|
|
4
|
-
declare const uploadsProgressCommand:
|
|
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":";;;
|
|
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":";;;;
|
|
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
|
|
1
|
+
import * as gunshi0 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/uploads/transfer.d.ts
|
|
4
|
-
declare const uploadsTransferCommand:
|
|
4
|
+
declare const uploadsTransferCommand: gunshi0.Command<{
|
|
5
5
|
file: {
|
|
6
6
|
type: "string";
|
|
7
7
|
short: string;
|
|
8
8
|
description: string;
|
|
9
9
|
};
|
|
10
|
-
|
|
10
|
+
provider: {
|
|
11
11
|
type: "string";
|
|
12
12
|
description: string;
|
|
13
13
|
};
|
|
14
|
-
"key
|
|
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":";;;
|
|
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,
|
|
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
|
-
|
|
19
|
+
provider: {
|
|
20
20
|
type: "string",
|
|
21
|
-
description: "
|
|
21
|
+
description: "Storage provider"
|
|
22
22
|
},
|
|
23
|
-
"key
|
|
23
|
+
"file-key": {
|
|
24
24
|
type: "string",
|
|
25
|
-
description: "File key
|
|
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
|
|
60
|
-
|
|
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,
|