@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["lastError: unknown","payload: BodyInit | undefined","init: RequestInit & { duplex?: \"half\" }"],"sources":["../../../src/cli/utils/client.ts"],"sourcesContent":["import { Readable } from \"node:stream\";\n\nexport type ClientConfig = {\n baseUrl: string;\n headers?: HeadersInit;\n timeoutMs: number;\n retries: number;\n retryDelayMs: number;\n};\n\ntype RequestOptions = {\n method?: string;\n query?: Record<string, string | number | boolean | undefined>;\n body?: BodyInit | null | unknown;\n json?: boolean;\n headers?: HeadersInit;\n retry?: boolean;\n};\n\ntype JsonRequestOptions = Omit<RequestOptions, \"body\" | \"json\"> & { body?: unknown };\n\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst buildUrl = (\n baseUrl: string,\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n) => {\n const base = new URL(baseUrl);\n const basePath = base.pathname.endsWith(\"/\") ? base.pathname.slice(0, -1) : base.pathname;\n const pathPart = path.startsWith(\"/\") ? path : `/${path}`;\n base.pathname = `${basePath}${pathPart}`;\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined) {\n continue;\n }\n base.searchParams.set(key, String(value));\n }\n }\n\n return base.toString();\n};\n\nconst shouldRetry = (response: Response) => {\n if (response.status >= 500) {\n return true;\n }\n return response.status === 429;\n};\n\nasync function fetchWithRetry(\n url: string,\n init: RequestInit,\n config: Pick<ClientConfig, \"timeoutMs\" | \"retries\" | \"retryDelayMs\">,\n) {\n let attempt = 0;\n let lastError: unknown;\n\n while (attempt <= config.retries) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), config.timeoutMs);\n\n try {\n const response = await fetch(url, { ...init, signal: controller.signal });\n clearTimeout(timeoutId);\n\n if (!response.ok && shouldRetry(response) && attempt < config.retries) {\n attempt += 1;\n await delay(config.retryDelayMs);\n continue;\n }\n\n return response;\n } catch (error) {\n clearTimeout(timeoutId);\n lastError = error;\n if (attempt >= config.retries) {\n throw error;\n }\n attempt += 1;\n await delay(config.retryDelayMs);\n }\n }\n\n throw lastError ?? new Error(\"Request failed\");\n}\n\nasync function fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeoutMs: number,\n): Promise<Response> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetch(url, { ...init, signal: controller.signal });\n } finally {\n clearTimeout(timeoutId);\n }\n}\n\nconst safeJsonParse = (text: string) => {\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return null;\n }\n};\n\nconst readErrorPayload = async (response: Response) => {\n const text = await response.text();\n const parsed = text ? safeJsonParse(text) : undefined;\n const errorPayload = parsed as { message?: string; code?: string } | undefined;\n return {\n text,\n parsed,\n message: errorPayload?.message ?? text ?? response.statusText,\n code: errorPayload?.code,\n };\n};\n\nasync function requestResponse(\n config: ClientConfig,\n path: string,\n { method = \"GET\", query, body, json, headers, retry = true }: RequestOptions = {},\n): Promise<Response> {\n const url = buildUrl(config.baseUrl, path, query);\n const mergedHeaders = new Headers(config.headers ?? {});\n\n if (headers) {\n const extra = new Headers(headers);\n for (const [key, value] of extra.entries()) {\n mergedHeaders.set(key, value);\n }\n }\n\n let payload: BodyInit | undefined;\n\n if (json && body !== undefined) {\n mergedHeaders.set(\"content-type\", \"application/json\");\n payload = JSON.stringify(body);\n } else {\n payload = body as BodyInit | undefined;\n }\n\n const init: RequestInit & { duplex?: \"half\" } = {\n method,\n headers: mergedHeaders,\n body: payload,\n };\n\n if (\n payload &&\n typeof payload === \"object\" &&\n (payload instanceof Readable || \"getReader\" in (payload as object))\n ) {\n init.duplex = \"half\";\n }\n\n const response = retry\n ? await fetchWithRetry(url, init, config)\n : await fetchWithTimeout(url, init, config.timeoutMs);\n\n if (!response.ok) {\n const { message, code } = await readErrorPayload(response);\n const error = new Error(\n `Request failed: ${response.status} ${message}${code ? ` (${code})` : \"\"}`,\n ) as Error & {\n code?: string;\n };\n if (code) {\n error.code = code;\n }\n throw error;\n }\n\n return response;\n}\n\nasync function requestJson<T>(\n config: ClientConfig,\n path: string,\n { method = \"GET\", query, body }: JsonRequestOptions = {},\n): Promise<T> {\n const response = await requestResponse(config, path, { method, query, body, json: true });\n const text = await response.text();\n const parsed = text ? safeJsonParse(text) : undefined;\n\n if (parsed === undefined) {\n return undefined as T;\n }\n\n if (parsed === null && text.trim() !== \"null\") {\n throw new Error(`Expected JSON response from ${path}`);\n }\n\n return parsed as T;\n}\n\nexport function createClient(config: ClientConfig) {\n return {\n buildUrl: (path: string, query?: Record<string, string | number | boolean | undefined>) =>\n buildUrl(config.baseUrl, path, query),\n requestResponse: (path: string, options?: RequestOptions) =>\n requestResponse(config, path, options),\n createUpload: (payload: Record<string, unknown>) =>\n requestJson(config, \"/uploads\", { method: \"POST\", body: payload }),\n getUpload: (uploadId: string) => requestJson(config, `/uploads/${uploadId}`),\n reportProgress: (\n uploadId: string,\n payload: { bytesUploaded?: number; partsUploaded?: number },\n ) => requestJson(config, `/uploads/${uploadId}/progress`, { method: \"POST\", body: payload }),\n getPartUrls: (uploadId: string, partNumbers: number[]) =>\n requestJson(config, `/uploads/${uploadId}/parts`, {\n method: \"POST\",\n body: { partNumbers },\n }),\n listParts: (uploadId: string) => requestJson(config, `/uploads/${uploadId}/parts`),\n completeParts: (\n uploadId: string,\n parts: { partNumber: number; etag: string; sizeBytes: number }[],\n ) =>\n requestJson(config, `/uploads/${uploadId}/parts/complete`, {\n method: \"POST\",\n body: { parts },\n }),\n completeUpload: (uploadId: string, parts?: { partNumber: number; etag: string }[]) =>\n requestJson(config, `/uploads/${uploadId}/complete`, {\n method: \"POST\",\n body: parts && parts.length > 0 ? { parts } : {},\n }),\n abortUpload: (uploadId: string) =>\n requestJson(config, `/uploads/${uploadId}/abort`, { method: \"POST\" }),\n uploadContent: async (uploadId: string, body: BodyInit, contentType: string) => {\n const response = await requestResponse(config, `/uploads/${uploadId}/content`, {\n method: \"PUT\",\n body,\n headers: { \"Content-Type\": contentType },\n retry: false,\n });\n return (await response.json()) as unknown;\n },\n createFile: async (form: FormData) => {\n const response = await requestResponse(config, \"/files\", {\n method: \"POST\",\n body: form,\n retry: false,\n });\n return (await response.json()) as unknown;\n },\n listFiles: (query: Record<string, string | number | boolean | undefined>) =>\n requestJson(config, \"/files\", { method: \"GET\", query }),\n getFile: (fileKey: string) => requestJson(config, `/files/${fileKey}`),\n updateFile: (fileKey: string, payload: Record<string, unknown>) =>\n requestJson(config, `/files/${fileKey}`, { method: \"PATCH\", body: payload }),\n deleteFile: (fileKey: string) => requestJson(config, `/files/${fileKey}`, { method: \"DELETE\" }),\n getDownloadUrl: (fileKey: string) => requestJson(config, `/files/${fileKey}/download-url`),\n downloadContent: (fileKey: string) =>\n requestResponse(config, `/files/${fileKey}/content`, { method: \"GET\" }),\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","names":["lastError: unknown","payload: BodyInit | undefined","init: RequestInit & { duplex?: \"half\" }"],"sources":["../../../src/cli/utils/client.ts"],"sourcesContent":["import { Readable } from \"node:stream\";\n\nexport type ClientConfig = {\n baseUrl: string;\n headers?: HeadersInit;\n timeoutMs: number;\n retries: number;\n retryDelayMs: number;\n};\n\ntype RequestOptions = {\n method?: string;\n query?: Record<string, string | number | boolean | undefined>;\n body?: BodyInit | null | unknown;\n json?: boolean;\n headers?: HeadersInit;\n retry?: boolean;\n};\n\ntype JsonRequestOptions = Omit<RequestOptions, \"body\" | \"json\"> & { body?: unknown };\n\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst buildUrl = (\n baseUrl: string,\n path: string,\n query?: Record<string, string | number | boolean | undefined>,\n) => {\n const base = new URL(baseUrl);\n const basePath = base.pathname.endsWith(\"/\") ? base.pathname.slice(0, -1) : base.pathname;\n const pathPart = path.startsWith(\"/\") ? path : `/${path}`;\n base.pathname = `${basePath}${pathPart}`;\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value === undefined) {\n continue;\n }\n base.searchParams.set(key, String(value));\n }\n }\n\n return base.toString();\n};\n\nconst shouldRetry = (response: Response) => {\n if (response.status >= 500) {\n return true;\n }\n return response.status === 429;\n};\n\nasync function fetchWithRetry(\n url: string,\n init: RequestInit,\n config: Pick<ClientConfig, \"timeoutMs\" | \"retries\" | \"retryDelayMs\">,\n) {\n let attempt = 0;\n let lastError: unknown;\n\n while (attempt <= config.retries) {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), config.timeoutMs);\n\n try {\n const response = await fetch(url, { ...init, signal: controller.signal });\n clearTimeout(timeoutId);\n\n if (!response.ok && shouldRetry(response) && attempt < config.retries) {\n attempt += 1;\n await delay(config.retryDelayMs);\n continue;\n }\n\n return response;\n } catch (error) {\n clearTimeout(timeoutId);\n lastError = error;\n if (attempt >= config.retries) {\n throw error;\n }\n attempt += 1;\n await delay(config.retryDelayMs);\n }\n }\n\n throw lastError ?? new Error(\"Request failed\");\n}\n\nasync function fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeoutMs: number,\n): Promise<Response> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetch(url, { ...init, signal: controller.signal });\n } finally {\n clearTimeout(timeoutId);\n }\n}\n\nconst safeJsonParse = (text: string) => {\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return null;\n }\n};\n\nconst readErrorPayload = async (response: Response) => {\n const text = await response.text();\n const parsed = text ? safeJsonParse(text) : undefined;\n const errorPayload = parsed as { message?: string; code?: string } | undefined;\n return {\n text,\n parsed,\n message: errorPayload?.message ?? text ?? response.statusText,\n code: errorPayload?.code,\n };\n};\n\nasync function requestResponse(\n config: ClientConfig,\n path: string,\n { method = \"GET\", query, body, json, headers, retry = true }: RequestOptions = {},\n): Promise<Response> {\n const url = buildUrl(config.baseUrl, path, query);\n const mergedHeaders = new Headers(config.headers ?? {});\n\n if (headers) {\n const extra = new Headers(headers);\n for (const [key, value] of extra.entries()) {\n mergedHeaders.set(key, value);\n }\n }\n\n let payload: BodyInit | undefined;\n\n if (json && body !== undefined) {\n mergedHeaders.set(\"content-type\", \"application/json\");\n payload = JSON.stringify(body);\n } else {\n payload = body as BodyInit | undefined;\n }\n\n const init: RequestInit & { duplex?: \"half\" } = {\n method,\n headers: mergedHeaders,\n body: payload,\n };\n\n if (\n payload &&\n typeof payload === \"object\" &&\n (payload instanceof Readable || \"getReader\" in (payload as object))\n ) {\n init.duplex = \"half\";\n }\n\n const response = retry\n ? await fetchWithRetry(url, init, config)\n : await fetchWithTimeout(url, init, config.timeoutMs);\n\n if (!response.ok) {\n const { message, code } = await readErrorPayload(response);\n const error = new Error(\n `Request failed: ${response.status} ${message}${code ? ` (${code})` : \"\"}`,\n ) as Error & {\n code?: string;\n };\n if (code) {\n error.code = code;\n }\n throw error;\n }\n\n return response;\n}\n\nasync function requestJson<T>(\n config: ClientConfig,\n path: string,\n { method = \"GET\", query, body }: JsonRequestOptions = {},\n): Promise<T> {\n const response = await requestResponse(config, path, { method, query, body, json: true });\n const text = await response.text();\n const parsed = text ? safeJsonParse(text) : undefined;\n\n if (parsed === undefined) {\n return undefined as T;\n }\n\n if (parsed === null && text.trim() !== \"null\") {\n throw new Error(`Expected JSON response from ${path}`);\n }\n\n return parsed as T;\n}\n\nexport function createClient(config: ClientConfig) {\n const buildByKeyQuery = (provider: string, fileKey: string) => ({\n provider,\n key: fileKey,\n });\n\n return {\n buildUrl: (path: string, query?: Record<string, string | number | boolean | undefined>) =>\n buildUrl(config.baseUrl, path, query),\n requestResponse: (path: string, options?: RequestOptions) =>\n requestResponse(config, path, options),\n createUpload: (payload: Record<string, unknown>) =>\n requestJson(config, \"/uploads\", { method: \"POST\", body: payload }),\n getUpload: (uploadId: string) => requestJson(config, `/uploads/${uploadId}`),\n reportProgress: (\n uploadId: string,\n payload: { bytesUploaded?: number; partsUploaded?: number },\n ) => requestJson(config, `/uploads/${uploadId}/progress`, { method: \"POST\", body: payload }),\n getPartUrls: (uploadId: string, partNumbers: number[]) =>\n requestJson(config, `/uploads/${uploadId}/parts`, {\n method: \"POST\",\n body: { partNumbers },\n }),\n listParts: (uploadId: string) => requestJson(config, `/uploads/${uploadId}/parts`),\n completeParts: (\n uploadId: string,\n parts: { partNumber: number; etag: string; sizeBytes: number }[],\n ) =>\n requestJson(config, `/uploads/${uploadId}/parts/complete`, {\n method: \"POST\",\n body: { parts },\n }),\n completeUpload: (uploadId: string, parts?: { partNumber: number; etag: string }[]) =>\n requestJson(config, `/uploads/${uploadId}/complete`, {\n method: \"POST\",\n body: parts && parts.length > 0 ? { parts } : {},\n }),\n abortUpload: (uploadId: string) =>\n requestJson(config, `/uploads/${uploadId}/abort`, { method: \"POST\" }),\n uploadContent: async (uploadId: string, body: BodyInit, contentType: string) => {\n const response = await requestResponse(config, `/uploads/${uploadId}/content`, {\n method: \"PUT\",\n body,\n headers: { \"Content-Type\": contentType },\n retry: false,\n });\n return (await response.json()) as unknown;\n },\n createFile: async (form: FormData) => {\n const response = await requestResponse(config, \"/files\", {\n method: \"POST\",\n body: form,\n retry: false,\n });\n return (await response.json()) as unknown;\n },\n listFiles: (query: Record<string, string | number | boolean | undefined>) =>\n requestJson(config, \"/files\", { method: \"GET\", query }),\n getFile: (provider: string, fileKey: string) =>\n requestJson(config, \"/files/by-key\", {\n method: \"GET\",\n query: buildByKeyQuery(provider, fileKey),\n }),\n updateFile: (provider: string, fileKey: string, payload: Record<string, unknown>) =>\n requestJson(config, \"/files/by-key\", {\n method: \"PATCH\",\n query: buildByKeyQuery(provider, fileKey),\n body: payload,\n }),\n deleteFile: (provider: string, fileKey: string) =>\n requestJson(config, \"/files/by-key\", {\n method: \"DELETE\",\n query: buildByKeyQuery(provider, fileKey),\n }),\n getDownloadUrl: (provider: string, fileKey: string) =>\n requestJson(config, \"/files/by-key/download-url\", {\n method: \"GET\",\n query: buildByKeyQuery(provider, fileKey),\n }),\n downloadContent: (provider: string, fileKey: string) =>\n requestResponse(config, \"/files/by-key/content\", {\n method: \"GET\",\n query: buildByKeyQuery(provider, fileKey),\n }),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { encodeFileKey, encodeFileKeyPrefix } from "../keys.js";
|
|
2
1
|
import { createClient } from "./client.js";
|
|
3
2
|
|
|
4
3
|
//#region src/cli/utils/options.ts
|
|
@@ -85,51 +84,16 @@ const parseJsonValue = (label, value) => {
|
|
|
85
84
|
throw new Error(`Invalid ${label} JSON: ${message}`);
|
|
86
85
|
}
|
|
87
86
|
};
|
|
88
|
-
const parseFileKeyParts = (label, value) => {
|
|
89
|
-
const parsed = parseJsonValue(label, value);
|
|
90
|
-
if (!Array.isArray(parsed)) throw new Error(`${label} must be a JSON array`);
|
|
91
|
-
for (const part of parsed) if (typeof part !== "string" && typeof part !== "number") throw new Error(`${label} must contain only strings or numbers`);
|
|
92
|
-
return parsed;
|
|
93
|
-
};
|
|
94
87
|
const resolveFileKeyValue = (input) => {
|
|
95
|
-
if (input.fileKey
|
|
96
|
-
|
|
97
|
-
fileKey: input.fileKey,
|
|
98
|
-
keyParts: void 0
|
|
99
|
-
};
|
|
100
|
-
if (input.keyParts) {
|
|
101
|
-
const parts = parseFileKeyParts("key-parts", input.keyParts);
|
|
102
|
-
return {
|
|
103
|
-
fileKey: encodeFileKey(parts),
|
|
104
|
-
keyParts: parts
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
throw new Error("Missing file key. Provide --file-key or --key-parts.");
|
|
108
|
-
};
|
|
109
|
-
const resolveOptionalFileKeyValue = (input) => {
|
|
110
|
-
if (input.fileKey && input.keyParts) throw new Error("Provide either --file-key or --key-parts, not both.");
|
|
111
|
-
if (input.fileKey) return {
|
|
112
|
-
fileKey: input.fileKey,
|
|
113
|
-
keyParts: void 0
|
|
114
|
-
};
|
|
115
|
-
if (input.keyParts) {
|
|
116
|
-
const parts = parseFileKeyParts("key-parts", input.keyParts);
|
|
117
|
-
return {
|
|
118
|
-
fileKey: encodeFileKey(parts),
|
|
119
|
-
keyParts: parts
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
return {
|
|
123
|
-
fileKey: void 0,
|
|
124
|
-
keyParts: void 0
|
|
125
|
-
};
|
|
88
|
+
if (input.fileKey) return { fileKey: input.fileKey };
|
|
89
|
+
throw new Error("Missing file key. Provide --file-key.");
|
|
126
90
|
};
|
|
127
|
-
const resolvePrefixValue = (input) =>
|
|
128
|
-
|
|
129
|
-
if (
|
|
130
|
-
|
|
91
|
+
const resolvePrefixValue = (input) => input.prefix;
|
|
92
|
+
const resolveProviderValue = (provider) => {
|
|
93
|
+
if (!provider) throw new Error("Missing provider. Provide --provider.");
|
|
94
|
+
return provider;
|
|
131
95
|
};
|
|
132
96
|
|
|
133
97
|
//#endregion
|
|
134
|
-
export { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue,
|
|
98
|
+
export { baseArgs, createClientFromContext, parseJsonValue, resolveFileKeyValue, resolvePrefixValue, resolveProviderValue };
|
|
135
99
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","names":[],"sources":["../../../src/cli/utils/options.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"options.js","names":[],"sources":["../../../src/cli/utils/options.ts"],"sourcesContent":["import { createClient, type ClientConfig } from \"./client.js\";\n\ntype CommandContext = { values: Record<string, unknown> };\n\nexport const baseArgs = {\n \"base-url\": {\n type: \"string\",\n short: \"b\",\n description: \"Upload fragment base URL (env: FRAGNO_UPLOAD_BASE_URL)\",\n },\n header: {\n type: \"string\",\n short: \"H\",\n description:\n \"Extra HTTP header (repeatable), format: 'Name: value' (env: FRAGNO_UPLOAD_HEADERS)\",\n multiple: true,\n },\n timeout: {\n type: \"number\",\n description: \"Request timeout in ms (env: FRAGNO_UPLOAD_TIMEOUT_MS, default: 15000)\",\n },\n retries: {\n type: \"number\",\n description: \"Retry count for network/5xx/429 (env: FRAGNO_UPLOAD_RETRIES, default: 2)\",\n },\n \"retry-delay\": {\n type: \"number\",\n description: \"Delay between retries in ms (env: FRAGNO_UPLOAD_RETRY_DELAY_MS, default: 500)\",\n },\n} as const;\n\nconst DEFAULT_TIMEOUT_MS = 15000;\nconst DEFAULT_RETRIES = 2;\nconst DEFAULT_RETRY_DELAY_MS = 500;\n\nconst parseNumberEnv = (value: string | undefined) => {\n if (!value) {\n return undefined;\n }\n const parsed = Number(value);\n if (Number.isNaN(parsed)) {\n return undefined;\n }\n return parsed;\n};\n\nconst normalizeHeaderValues = (value: unknown): string[] => {\n if (!value) {\n return [];\n }\n if (Array.isArray(value)) {\n return value.map(String);\n }\n return [String(value)];\n};\n\nconst parseEnvHeaders = () => {\n const envHeaders = process.env[\"FRAGNO_UPLOAD_HEADERS\"];\n if (!envHeaders) {\n return [];\n }\n return envHeaders\n .split(/\\n|;/)\n .map((entry) => entry.trim())\n .filter(Boolean);\n};\n\nconst buildHeaders = (values: string[]) => {\n const headers = new Headers();\n for (const value of values) {\n const index = value.indexOf(\":\");\n if (index === -1) {\n throw new Error(`Invalid header: ${value}`);\n }\n const name = value.slice(0, index).trim();\n const headerValue = value.slice(index + 1).trim();\n if (!name || !headerValue) {\n throw new Error(`Invalid header: ${value}`);\n }\n headers.append(name, headerValue);\n }\n return headers;\n};\n\nconst resolveTimeout = (ctx: CommandContext) =>\n (ctx.values[\"timeout\"] as number | undefined) ??\n parseNumberEnv(process.env[\"FRAGNO_UPLOAD_TIMEOUT_MS\"]) ??\n DEFAULT_TIMEOUT_MS;\n\nconst resolveRetries = (ctx: CommandContext) =>\n (ctx.values[\"retries\"] as number | undefined) ??\n parseNumberEnv(process.env[\"FRAGNO_UPLOAD_RETRIES\"]) ??\n DEFAULT_RETRIES;\n\nconst resolveRetryDelay = (ctx: CommandContext) =>\n (ctx.values[\"retry-delay\"] as number | undefined) ??\n parseNumberEnv(process.env[\"FRAGNO_UPLOAD_RETRY_DELAY_MS\"]) ??\n DEFAULT_RETRY_DELAY_MS;\n\nexport const resolveBaseUrl = (ctx: CommandContext) => {\n const baseUrl =\n (ctx.values[\"base-url\"] as string | undefined) ?? process.env[\"FRAGNO_UPLOAD_BASE_URL\"];\n if (!baseUrl) {\n throw new Error(\"Missing base URL. Provide --base-url or set FRAGNO_UPLOAD_BASE_URL.\");\n }\n return baseUrl.replace(/\\/$/, \"\");\n};\n\nexport const createClientFromContext = (ctx: CommandContext) => {\n const headerValues = normalizeHeaderValues(ctx.values[\"header\"]).concat(parseEnvHeaders());\n\n const clientConfig: ClientConfig = {\n baseUrl: resolveBaseUrl(ctx),\n headers: buildHeaders(headerValues),\n timeoutMs: resolveTimeout(ctx),\n retries: resolveRetries(ctx),\n retryDelayMs: resolveRetryDelay(ctx),\n };\n\n return createClient(clientConfig);\n};\n\nexport const parseJsonValue = (label: string, value: string | undefined) => {\n if (value === undefined) {\n return undefined;\n }\n try {\n return JSON.parse(value) as unknown;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${label} JSON: ${message}`);\n }\n};\n\nexport const resolveFileKeyValue = (input: { fileKey: string | undefined }) => {\n if (input.fileKey) {\n return { fileKey: input.fileKey };\n }\n\n throw new Error(\"Missing file key. Provide --file-key.\");\n};\n\nexport const resolveOptionalFileKeyValue = (input: { fileKey: string | undefined }) => {\n return { fileKey: input.fileKey };\n};\n\nexport const resolvePrefixValue = (input: { prefix: string | undefined }) => input.prefix;\n\nexport const resolveProviderValue = (provider: string | undefined) => {\n if (!provider) {\n throw new Error(\"Missing provider. Provide --provider.\");\n }\n\n return provider;\n};\n"],"mappings":";;;AAIA,MAAa,WAAW;CACtB,YAAY;EACV,MAAM;EACN,OAAO;EACP,aAAa;EACd;CACD,QAAQ;EACN,MAAM;EACN,OAAO;EACP,aACE;EACF,UAAU;EACX;CACD,SAAS;EACP,MAAM;EACN,aAAa;EACd;CACD,SAAS;EACP,MAAM;EACN,aAAa;EACd;CACD,eAAe;EACb,MAAM;EACN,aAAa;EACd;CACF;AAED,MAAM,qBAAqB;AAC3B,MAAM,kBAAkB;AACxB,MAAM,yBAAyB;AAE/B,MAAM,kBAAkB,UAA8B;AACpD,KAAI,CAAC,MACH;CAEF,MAAM,SAAS,OAAO,MAAM;AAC5B,KAAI,OAAO,MAAM,OAAO,CACtB;AAEF,QAAO;;AAGT,MAAM,yBAAyB,UAA6B;AAC1D,KAAI,CAAC,MACH,QAAO,EAAE;AAEX,KAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MAAM,IAAI,OAAO;AAE1B,QAAO,CAAC,OAAO,MAAM,CAAC;;AAGxB,MAAM,wBAAwB;CAC5B,MAAM,aAAa,QAAQ,IAAI;AAC/B,KAAI,CAAC,WACH,QAAO,EAAE;AAEX,QAAO,WACJ,MAAM,OAAO,CACb,KAAK,UAAU,MAAM,MAAM,CAAC,CAC5B,OAAO,QAAQ;;AAGpB,MAAM,gBAAgB,WAAqB;CACzC,MAAM,UAAU,IAAI,SAAS;AAC7B,MAAK,MAAM,SAAS,QAAQ;EAC1B,MAAM,QAAQ,MAAM,QAAQ,IAAI;AAChC,MAAI,UAAU,GACZ,OAAM,IAAI,MAAM,mBAAmB,QAAQ;EAE7C,MAAM,OAAO,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;EACzC,MAAM,cAAc,MAAM,MAAM,QAAQ,EAAE,CAAC,MAAM;AACjD,MAAI,CAAC,QAAQ,CAAC,YACZ,OAAM,IAAI,MAAM,mBAAmB,QAAQ;AAE7C,UAAQ,OAAO,MAAM,YAAY;;AAEnC,QAAO;;AAGT,MAAM,kBAAkB,QACrB,IAAI,OAAO,cACZ,eAAe,QAAQ,IAAI,4BAA4B,IACvD;AAEF,MAAM,kBAAkB,QACrB,IAAI,OAAO,cACZ,eAAe,QAAQ,IAAI,yBAAyB,IACpD;AAEF,MAAM,qBAAqB,QACxB,IAAI,OAAO,kBACZ,eAAe,QAAQ,IAAI,gCAAgC,IAC3D;AAEF,MAAa,kBAAkB,QAAwB;CACrD,MAAM,UACH,IAAI,OAAO,eAAsC,QAAQ,IAAI;AAChE,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,sEAAsE;AAExF,QAAO,QAAQ,QAAQ,OAAO,GAAG;;AAGnC,MAAa,2BAA2B,QAAwB;CAC9D,MAAM,eAAe,sBAAsB,IAAI,OAAO,UAAU,CAAC,OAAO,iBAAiB,CAAC;AAU1F,QAAO,aAR4B;EACjC,SAAS,eAAe,IAAI;EAC5B,SAAS,aAAa,aAAa;EACnC,WAAW,eAAe,IAAI;EAC9B,SAAS,eAAe,IAAI;EAC5B,cAAc,kBAAkB,IAAI;EACrC,CAEgC;;AAGnC,MAAa,kBAAkB,OAAe,UAA8B;AAC1E,KAAI,UAAU,OACZ;AAEF,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;UACjB,OAAO;EACd,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACtE,QAAM,IAAI,MAAM,WAAW,MAAM,SAAS,UAAU;;;AAIxD,MAAa,uBAAuB,UAA2C;AAC7E,KAAI,MAAM,QACR,QAAO,EAAE,SAAS,MAAM,SAAS;AAGnC,OAAM,IAAI,MAAM,wCAAwC;;AAO1D,MAAa,sBAAsB,UAA0C,MAAM;AAEnF,MAAa,wBAAwB,aAAiC;AACpE,KAAI,CAAC,SACH,OAAM,IAAI,MAAM,wCAAwC;AAG1D,QAAO"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as gunshi0 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/files/delete.d.ts
|
|
4
|
-
declare const filesDeleteCommand:
|
|
5
|
-
|
|
4
|
+
declare const filesDeleteCommand: gunshi0.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":"delete.d.ts","names":[],"sources":["../../../../../src/cli/commands/files/delete.ts"],"sourcesContent":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"delete.d.ts","names":[],"sources":["../../../../../src/cli/commands/files/delete.ts"],"sourcesContent":[],"mappings":";;;cASa,oBAwBX,OAAA,CAxB6B;;;IAAlB,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/delete.ts
|
|
@@ -7,21 +7,19 @@ const filesDeleteCommand = define({
|
|
|
7
7
|
description: "Delete a file",
|
|
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
|
},
|
|
19
19
|
run: async (ctx) => {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
const response = await createClientFromContext(ctx).deleteFile(resolvedKey.fileKey);
|
|
20
|
+
const provider = resolveProviderValue(ctx.values["provider"]);
|
|
21
|
+
const resolvedKey = resolveFileKeyValue({ fileKey: ctx.values["file-key"] });
|
|
22
|
+
const response = await createClientFromContext(ctx).deleteFile(provider, resolvedKey.fileKey);
|
|
25
23
|
console.log(JSON.stringify(response, null, 2));
|
|
26
24
|
}
|
|
27
25
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","names":[],"sources":["../../../../../src/cli/commands/files/delete.ts"],"sourcesContent":["import { define } from \"gunshi\";\nimport {
|
|
1
|
+
{"version":3,"file":"delete.js","names":[],"sources":["../../../../../src/cli/commands/files/delete.ts"],"sourcesContent":["import { define } from \"gunshi\";\n\nimport {\n baseArgs,\n createClientFromContext,\n resolveFileKeyValue,\n resolveProviderValue,\n} from \"../../utils/options.js\";\n\nexport const filesDeleteCommand = define({\n name: \"delete\",\n description: \"Delete a file\",\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.deleteFile(provider, resolvedKey.fileKey);\n console.log(JSON.stringify(response, null, 2));\n },\n});\n"],"mappings":";;;;AASA,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;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,WAAW,UAAU,YAAY,QAAQ;AACvE,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;;CAEjD,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as gunshi1 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/files/download-url.d.ts
|
|
4
|
-
declare const filesDownloadUrlCommand:
|
|
5
|
-
|
|
4
|
+
declare const filesDownloadUrlCommand: gunshi1.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":"download-url.d.ts","names":[],"sources":["../../../../../src/cli/commands/files/download-url.ts"],"sourcesContent":[],"mappings":";;;
|
|
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
|
-
|
|
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
|
},
|
|
19
19
|
run: async (ctx) => {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
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 {
|
|
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
|
|
1
|
+
import * as gunshi2 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/files/download.d.ts
|
|
4
|
-
declare const filesDownloadCommand:
|
|
5
|
-
|
|
4
|
+
declare const filesDownloadCommand: gunshi2.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":"download.d.ts","names":[],"sources":["../../../../../src/cli/commands/files/download.ts"],"sourcesContent":[],"mappings":";;;
|
|
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,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 { createWriteStream } from "node:fs";
|
|
3
3
|
import { Readable } from "node:stream";
|
|
4
4
|
import { pipeline } from "node:stream/promises";
|
|
@@ -10,13 +10,13 @@ const filesDownloadCommand = define({
|
|
|
10
10
|
description: "Download file contents",
|
|
11
11
|
args: {
|
|
12
12
|
...baseArgs,
|
|
13
|
-
|
|
13
|
+
provider: {
|
|
14
14
|
type: "string",
|
|
15
|
-
description: "
|
|
15
|
+
description: "Storage provider"
|
|
16
16
|
},
|
|
17
|
-
"key
|
|
17
|
+
"file-key": {
|
|
18
18
|
type: "string",
|
|
19
|
-
description: "File key
|
|
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
|
|
33
|
-
|
|
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 {
|
|
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
|
|
1
|
+
import * as gunshi3 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/files/get.d.ts
|
|
4
|
-
declare const filesGetCommand:
|
|
5
|
-
|
|
4
|
+
declare const filesGetCommand: gunshi3.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":"get.d.ts","names":[],"sources":["../../../../../src/cli/commands/files/get.ts"],"sourcesContent":[],"mappings":";;;
|
|
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
|
-
|
|
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
|
},
|
|
19
19
|
run: async (ctx) => {
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
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 {
|
|
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
|
|
1
|
+
import * as gunshi4 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/files/list.d.ts
|
|
4
|
-
declare const filesListCommand:
|
|
5
|
-
|
|
4
|
+
declare const filesListCommand: gunshi4.Command<{
|
|
5
|
+
provider: {
|
|
6
6
|
type: "string";
|
|
7
7
|
description: string;
|
|
8
8
|
};
|
|
9
|
-
|
|
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":";;;
|
|
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
|
-
|
|
10
|
+
provider: {
|
|
11
11
|
type: "string",
|
|
12
|
-
description: "
|
|
12
|
+
description: "Filter by storage provider"
|
|
13
13
|
},
|
|
14
|
-
|
|
14
|
+
prefix: {
|
|
15
15
|
type: "string",
|
|
16
|
-
description: "File key prefix
|
|
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
|
|
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
|
|
1
|
+
import * as gunshi5 from "gunshi";
|
|
2
2
|
|
|
3
3
|
//#region src/cli/commands/files/update.d.ts
|
|
4
|
-
declare const filesUpdateCommand:
|
|
5
|
-
|
|
4
|
+
declare const filesUpdateCommand: gunshi5.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":"update.d.ts","names":[],"sources":["../../../../../src/cli/commands/files/update.ts"],"sourcesContent":[],"mappings":";;;
|
|
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"}
|