@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
package/dist/node/schema.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
import * as
|
|
1
|
+
import * as _fragno_dev_db455 from "@fragno-dev/db";
|
|
2
|
+
import * as _fragno_dev_db_schema929 from "@fragno-dev/db/schema";
|
|
3
3
|
|
|
4
4
|
//#region src/schema.d.ts
|
|
5
|
-
declare const uploadSchema:
|
|
6
|
-
file:
|
|
7
|
-
upload:
|
|
8
|
-
upload_part:
|
|
5
|
+
declare const uploadSchema: _fragno_dev_db_schema929.Schema<{
|
|
6
|
+
file: _fragno_dev_db_schema929.Table<Record<"id", _fragno_dev_db_schema929.IdColumn<"varchar(128)", string | _fragno_dev_db_schema929.FragnoId | null, _fragno_dev_db_schema929.FragnoId>> & Record<"key", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"provider", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"uploaderId", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"filename", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"sizeBytes", _fragno_dev_db_schema929.Column<"bigint", bigint, bigint>> & Record<"contentType", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"checksum", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"visibility", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"tags", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"metadata", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"status", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"objectKey", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"createdAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>> & Record<"updatedAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>> & Record<"completedAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date | null>> & Record<"deletedAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date | null>> & Record<"errorCode", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"errorMessage", _fragno_dev_db_schema929.Column<"string", string | null, string | null>>, Record<string, _fragno_dev_db_schema929.AnyRelation>, Record<string, _fragno_dev_db_schema929.Index<_fragno_dev_db_schema929.AnyColumn[], readonly string[]>> & Record<"idx_file_provider_key", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string, string>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["provider", "key"]>> & Record<"idx_file_provider_key_status", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string, string>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["provider", "key", "status"]>> & Record<"idx_file_provider_key_uploaderId", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string | null, string | null>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["provider", "key", "uploaderId"]>> & Record<"idx_file_provider_key_status_uploaderId", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string | null, string | null>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["provider", "key", "status", "uploaderId"]>> & Record<"idx_file_uploaderId", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string | null, string | null>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["uploaderId"]>> & Record<"idx_file_createdAt", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["createdAt"]>> & Record<"idx_file_status_createdAt", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["status", "createdAt"]>>>;
|
|
7
|
+
upload: _fragno_dev_db_schema929.Table<Record<"id", _fragno_dev_db_schema929.IdColumn<"varchar(128)", string | _fragno_dev_db_schema929.FragnoId | null, _fragno_dev_db_schema929.FragnoId>> & Record<"key", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"provider", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"uploaderId", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"filename", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"expectedSizeBytes", _fragno_dev_db_schema929.Column<"bigint", bigint, bigint>> & Record<"contentType", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"checksum", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"visibility", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"tags", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"metadata", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"status", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"strategy", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"objectKey", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"storageUploadId", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"uploadUrl", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"uploadHeaders", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"bytesUploaded", _fragno_dev_db_schema929.Column<"bigint", bigint | null, bigint>> & Record<"partsUploaded", _fragno_dev_db_schema929.Column<"integer", number | null, number>> & Record<"partSizeBytes", _fragno_dev_db_schema929.Column<"integer", number | null, number | null>> & Record<"expiresAt", _fragno_dev_db_schema929.Column<"timestamp", Date | _fragno_dev_db455.DbNow, Date>> & Record<"createdAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>> & Record<"updatedAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>> & Record<"completedAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date | null>> & Record<"errorCode", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"errorMessage", _fragno_dev_db_schema929.Column<"string", string | null, string | null>>, Record<string, _fragno_dev_db_schema929.AnyRelation>, Record<string, _fragno_dev_db_schema929.Index<_fragno_dev_db_schema929.AnyColumn[], readonly string[]>> & Record<"idx_upload_provider_key", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string, string>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["provider", "key"]>> & Record<"idx_upload_status", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["status"]>> & Record<"idx_upload_expiresAt", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"timestamp", Date | _fragno_dev_db455.DbNow, Date>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["expiresAt"]>>>;
|
|
8
|
+
upload_part: _fragno_dev_db_schema929.Table<Record<"id", _fragno_dev_db_schema929.IdColumn<"varchar(128)", string | _fragno_dev_db_schema929.FragnoId | null, _fragno_dev_db_schema929.FragnoId>> & Record<"uploadId", _fragno_dev_db_schema929.Column<"bigint", string | bigint | _fragno_dev_db_schema929.FragnoId | _fragno_dev_db_schema929.FragnoReference, _fragno_dev_db_schema929.FragnoReference>> & Record<"partNumber", _fragno_dev_db_schema929.Column<"integer", number, number>> & Record<"etag", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"sizeBytes", _fragno_dev_db_schema929.Column<"bigint", bigint, bigint>> & Record<"createdAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>>, Record<string, _fragno_dev_db_schema929.AnyRelation> & Record<"upload", _fragno_dev_db_schema929.Relation<"one", _fragno_dev_db_schema929.Table<Record<"id", _fragno_dev_db_schema929.IdColumn<"varchar(128)", string | _fragno_dev_db_schema929.FragnoId | null, _fragno_dev_db_schema929.FragnoId>> & Record<"key", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"provider", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"uploaderId", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"filename", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"expectedSizeBytes", _fragno_dev_db_schema929.Column<"bigint", bigint, bigint>> & Record<"contentType", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"checksum", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"visibility", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"tags", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"metadata", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"status", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"strategy", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"objectKey", _fragno_dev_db_schema929.Column<"string", string, string>> & Record<"storageUploadId", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"uploadUrl", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"uploadHeaders", _fragno_dev_db_schema929.Column<"json", unknown, unknown>> & Record<"bytesUploaded", _fragno_dev_db_schema929.Column<"bigint", bigint | null, bigint>> & Record<"partsUploaded", _fragno_dev_db_schema929.Column<"integer", number | null, number>> & Record<"partSizeBytes", _fragno_dev_db_schema929.Column<"integer", number | null, number | null>> & Record<"expiresAt", _fragno_dev_db_schema929.Column<"timestamp", Date | _fragno_dev_db455.DbNow, Date>> & Record<"createdAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>> & Record<"updatedAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date>> & Record<"completedAt", _fragno_dev_db_schema929.Column<"timestamp", (Date | _fragno_dev_db455.DbNow) | null, Date | null>> & Record<"errorCode", _fragno_dev_db_schema929.Column<"string", string | null, string | null>> & Record<"errorMessage", _fragno_dev_db_schema929.Column<"string", string | null, string | null>>, Record<string, _fragno_dev_db_schema929.AnyRelation>, Record<string, _fragno_dev_db_schema929.Index<_fragno_dev_db_schema929.AnyColumn[], readonly string[]>> & Record<"idx_upload_provider_key", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>, _fragno_dev_db_schema929.Column<"string", string, string>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["provider", "key"]>> & Record<"idx_upload_status", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"string", string, string>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["status"]>> & Record<"idx_upload_expiresAt", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"timestamp", Date | _fragno_dev_db455.DbNow, Date>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["expiresAt"]>>>>>, Record<string, _fragno_dev_db_schema929.Index<_fragno_dev_db_schema929.AnyColumn[], readonly string[]>> & Record<"idx_upload_part_upload", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"bigint", string | bigint | _fragno_dev_db_schema929.FragnoId | _fragno_dev_db_schema929.FragnoReference, _fragno_dev_db_schema929.FragnoReference>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["uploadId"]>> & Record<"idx_upload_part_number", _fragno_dev_db_schema929.Index<readonly [_fragno_dev_db_schema929.Column<"bigint", string | bigint | _fragno_dev_db_schema929.FragnoId | _fragno_dev_db_schema929.FragnoReference, _fragno_dev_db_schema929.FragnoReference>, _fragno_dev_db_schema929.Column<"integer", number, number>] & _fragno_dev_db_schema929.AnyColumn[], readonly ["uploadId", "partNumber"]>>>;
|
|
9
9
|
}>;
|
|
10
10
|
//# sourceMappingURL=schema.d.ts.map
|
|
11
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","names":[],"sources":["../../src/schema.ts"],"sourcesContent":[],"mappings":";;;;cAEa,uCAAY
|
|
1
|
+
{"version":3,"file":"schema.d.ts","names":[],"sources":["../../src/schema.ts"],"sourcesContent":[],"mappings":";;;;cAEa,uCAAY;+GAuGvB,wBAAA,CAAA,QAAA;;;AAvGF,CAAA,CAAA"}
|
package/dist/node/schema.js
CHANGED
|
@@ -3,13 +3,22 @@ import { column, idColumn, referenceColumn, schema } from "@fragno-dev/db/schema
|
|
|
3
3
|
//#region src/schema.ts
|
|
4
4
|
const uploadSchema = schema("upload", (s) => {
|
|
5
5
|
return s.addTable("file", (t) => {
|
|
6
|
-
return t.addColumn("id", idColumn()).addColumn("
|
|
7
|
-
"
|
|
6
|
+
return t.addColumn("id", idColumn()).addColumn("key", column("string")).addColumn("provider", column("string")).addColumn("uploaderId", column("string").nullable()).addColumn("filename", column("string")).addColumn("sizeBytes", column("bigint")).addColumn("contentType", column("string")).addColumn("checksum", column("json").nullable()).addColumn("visibility", column("string")).addColumn("tags", column("json").nullable()).addColumn("metadata", column("json").nullable()).addColumn("status", column("string")).addColumn("objectKey", column("string")).addColumn("createdAt", column("timestamp").defaultTo((b) => b.now())).addColumn("updatedAt", column("timestamp").defaultTo((b) => b.now())).addColumn("completedAt", column("timestamp").nullable()).addColumn("deletedAt", column("timestamp").nullable()).addColumn("errorCode", column("string").nullable()).addColumn("errorMessage", column("string").nullable()).createIndex("idx_file_provider_key", ["provider", "key"], { unique: true }).createIndex("idx_file_provider_key_status", [
|
|
7
|
+
"provider",
|
|
8
|
+
"key",
|
|
9
|
+
"status"
|
|
10
|
+
]).createIndex("idx_file_provider_key_uploaderId", [
|
|
11
|
+
"provider",
|
|
12
|
+
"key",
|
|
13
|
+
"uploaderId"
|
|
14
|
+
]).createIndex("idx_file_provider_key_status_uploaderId", [
|
|
15
|
+
"provider",
|
|
16
|
+
"key",
|
|
8
17
|
"status",
|
|
9
18
|
"uploaderId"
|
|
10
19
|
]).createIndex("idx_file_uploaderId", ["uploaderId"]).createIndex("idx_file_createdAt", ["createdAt"]).createIndex("idx_file_status_createdAt", ["status", "createdAt"]);
|
|
11
20
|
}).addTable("upload", (t) => {
|
|
12
|
-
return t.addColumn("id", idColumn()).addColumn("
|
|
21
|
+
return t.addColumn("id", idColumn()).addColumn("key", column("string")).addColumn("provider", column("string")).addColumn("uploaderId", column("string").nullable()).addColumn("filename", column("string")).addColumn("expectedSizeBytes", column("bigint")).addColumn("contentType", column("string")).addColumn("checksum", column("json").nullable()).addColumn("visibility", column("string")).addColumn("tags", column("json").nullable()).addColumn("metadata", column("json").nullable()).addColumn("status", column("string")).addColumn("strategy", column("string")).addColumn("objectKey", column("string")).addColumn("storageUploadId", column("string").nullable()).addColumn("uploadUrl", column("string").nullable()).addColumn("uploadHeaders", column("json").nullable()).addColumn("bytesUploaded", column("bigint").defaultTo(0n)).addColumn("partsUploaded", column("integer").defaultTo(0)).addColumn("partSizeBytes", column("integer").nullable()).addColumn("expiresAt", column("timestamp")).addColumn("createdAt", column("timestamp").defaultTo((b) => b.now())).addColumn("updatedAt", column("timestamp").defaultTo((b) => b.now())).addColumn("completedAt", column("timestamp").nullable()).addColumn("errorCode", column("string").nullable()).addColumn("errorMessage", column("string").nullable()).createIndex("idx_upload_provider_key", ["provider", "key"]).createIndex("idx_upload_status", ["status"]).createIndex("idx_upload_expiresAt", ["expiresAt"]);
|
|
13
22
|
}).addTable("upload_part", (t) => {
|
|
14
23
|
return t.addColumn("id", idColumn()).addColumn("uploadId", referenceColumn()).addColumn("partNumber", column("integer")).addColumn("etag", column("string")).addColumn("sizeBytes", column("bigint")).addColumn("createdAt", column("timestamp").defaultTo((b) => b.now())).createIndex("idx_upload_part_upload", ["uploadId"]).createIndex("idx_upload_part_number", ["uploadId", "partNumber"], { unique: true });
|
|
15
24
|
}).addReference("upload", {
|
package/dist/node/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":[],"sources":["../../src/schema.ts"],"sourcesContent":["import { column, idColumn, referenceColumn, schema } from \"@fragno-dev/db/schema\";\n\nexport const uploadSchema = schema(\"upload\", (s) => {\n return s\n .addTable(\"file\", (t) => {\n return t\n .addColumn(\"id\", idColumn())\n .addColumn(\"
|
|
1
|
+
{"version":3,"file":"schema.js","names":[],"sources":["../../src/schema.ts"],"sourcesContent":["import { column, idColumn, referenceColumn, schema } from \"@fragno-dev/db/schema\";\n\nexport const uploadSchema = schema(\"upload\", (s) => {\n return s\n .addTable(\"file\", (t) => {\n return t\n .addColumn(\"id\", idColumn())\n .addColumn(\"key\", column(\"string\"))\n .addColumn(\"provider\", column(\"string\"))\n .addColumn(\"uploaderId\", column(\"string\").nullable())\n .addColumn(\"filename\", column(\"string\"))\n .addColumn(\"sizeBytes\", column(\"bigint\"))\n .addColumn(\"contentType\", column(\"string\"))\n .addColumn(\"checksum\", column(\"json\").nullable())\n .addColumn(\"visibility\", column(\"string\"))\n .addColumn(\"tags\", column(\"json\").nullable())\n .addColumn(\"metadata\", column(\"json\").nullable())\n .addColumn(\"status\", column(\"string\"))\n .addColumn(\"objectKey\", column(\"string\"))\n .addColumn(\n \"createdAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .addColumn(\n \"updatedAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .addColumn(\"completedAt\", column(\"timestamp\").nullable())\n .addColumn(\"deletedAt\", column(\"timestamp\").nullable())\n .addColumn(\"errorCode\", column(\"string\").nullable())\n .addColumn(\"errorMessage\", column(\"string\").nullable())\n .createIndex(\"idx_file_provider_key\", [\"provider\", \"key\"], {\n unique: true,\n })\n .createIndex(\"idx_file_provider_key_status\", [\"provider\", \"key\", \"status\"])\n .createIndex(\"idx_file_provider_key_uploaderId\", [\"provider\", \"key\", \"uploaderId\"])\n .createIndex(\"idx_file_provider_key_status_uploaderId\", [\n \"provider\",\n \"key\",\n \"status\",\n \"uploaderId\",\n ])\n .createIndex(\"idx_file_uploaderId\", [\"uploaderId\"])\n .createIndex(\"idx_file_createdAt\", [\"createdAt\"])\n .createIndex(\"idx_file_status_createdAt\", [\"status\", \"createdAt\"]);\n })\n .addTable(\"upload\", (t) => {\n return t\n .addColumn(\"id\", idColumn())\n .addColumn(\"key\", column(\"string\"))\n .addColumn(\"provider\", column(\"string\"))\n .addColumn(\"uploaderId\", column(\"string\").nullable())\n .addColumn(\"filename\", column(\"string\"))\n .addColumn(\"expectedSizeBytes\", column(\"bigint\"))\n .addColumn(\"contentType\", column(\"string\"))\n .addColumn(\"checksum\", column(\"json\").nullable())\n .addColumn(\"visibility\", column(\"string\"))\n .addColumn(\"tags\", column(\"json\").nullable())\n .addColumn(\"metadata\", column(\"json\").nullable())\n .addColumn(\"status\", column(\"string\"))\n .addColumn(\"strategy\", column(\"string\"))\n .addColumn(\"objectKey\", column(\"string\"))\n .addColumn(\"storageUploadId\", column(\"string\").nullable())\n .addColumn(\"uploadUrl\", column(\"string\").nullable())\n .addColumn(\"uploadHeaders\", column(\"json\").nullable())\n .addColumn(\"bytesUploaded\", column(\"bigint\").defaultTo(0n))\n .addColumn(\"partsUploaded\", column(\"integer\").defaultTo(0))\n .addColumn(\"partSizeBytes\", column(\"integer\").nullable())\n .addColumn(\"expiresAt\", column(\"timestamp\"))\n .addColumn(\n \"createdAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .addColumn(\n \"updatedAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .addColumn(\"completedAt\", column(\"timestamp\").nullable())\n .addColumn(\"errorCode\", column(\"string\").nullable())\n .addColumn(\"errorMessage\", column(\"string\").nullable())\n .createIndex(\"idx_upload_provider_key\", [\"provider\", \"key\"])\n .createIndex(\"idx_upload_status\", [\"status\"])\n .createIndex(\"idx_upload_expiresAt\", [\"expiresAt\"]);\n })\n .addTable(\"upload_part\", (t) => {\n return t\n .addColumn(\"id\", idColumn())\n .addColumn(\"uploadId\", referenceColumn())\n .addColumn(\"partNumber\", column(\"integer\"))\n .addColumn(\"etag\", column(\"string\"))\n .addColumn(\"sizeBytes\", column(\"bigint\"))\n .addColumn(\n \"createdAt\",\n column(\"timestamp\").defaultTo((b) => b.now()),\n )\n .createIndex(\"idx_upload_part_upload\", [\"uploadId\"])\n .createIndex(\"idx_upload_part_number\", [\"uploadId\", \"partNumber\"], {\n unique: true,\n });\n })\n .addReference(\"upload\", {\n type: \"one\",\n from: { table: \"upload_part\", column: \"uploadId\" },\n to: { table: \"upload\", column: \"id\" },\n });\n});\n"],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { FileStatus } from "../types.js";
|
|
2
2
|
|
|
3
3
|
//#region src/services/files.d.ts
|
|
4
|
-
|
|
4
|
+
type FileByKeyInput = {
|
|
5
|
+
provider: string;
|
|
6
|
+
fileKey: string;
|
|
7
|
+
};
|
|
5
8
|
type ListFilesInput = {
|
|
9
|
+
provider?: string;
|
|
6
10
|
prefix?: string;
|
|
7
11
|
pageSize: number;
|
|
8
12
|
cursor?: string;
|
|
@@ -16,5 +20,5 @@ type UpdateFileInput = {
|
|
|
16
20
|
metadata?: Record<string, unknown> | null;
|
|
17
21
|
};
|
|
18
22
|
//#endregion
|
|
19
|
-
export { ListFilesInput, UpdateFileInput };
|
|
23
|
+
export { FileByKeyInput, ListFilesInput, UpdateFileInput };
|
|
20
24
|
//# sourceMappingURL=files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","names":[],"sources":["../../../src/services/files.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"files.d.ts","names":[],"sources":["../../../src/services/files.ts"],"sourcesContent":[],"mappings":";;;AAUY,KAAA,cAAA,GAAc;EAKd,QAAA,EAAA,MAAA;EASA,OAAA,EAAA,MAAA;;KATA,cAAA;;;;;WAKD;;;KAIC,eAAA;;;;aAIC"}
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import { uploadSchema } from "../schema.js";
|
|
2
2
|
|
|
3
3
|
//#region src/services/files.ts
|
|
4
|
+
const buildFileHookPayload = (file, uploadId) => ({
|
|
5
|
+
provider: file.provider,
|
|
6
|
+
fileKey: file.key,
|
|
7
|
+
objectKey: file.objectKey,
|
|
8
|
+
uploadId,
|
|
9
|
+
uploaderId: file.uploaderId,
|
|
10
|
+
sizeBytes: Number(file.sizeBytes),
|
|
11
|
+
contentType: file.contentType
|
|
12
|
+
});
|
|
4
13
|
const createFileServices = (_config) => {
|
|
5
14
|
return {
|
|
6
|
-
findFileByKey: function(
|
|
7
|
-
return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("
|
|
15
|
+
findFileByKey: function(input) {
|
|
16
|
+
return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("idx_file_provider_key", (eb) => eb.and(eb("provider", "=", input.provider), eb("key", "=", input.fileKey))))).transformRetrieve(([file]) => file ?? null).build();
|
|
8
17
|
},
|
|
9
|
-
getFileByKey: function(
|
|
10
|
-
return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("
|
|
18
|
+
getFileByKey: function(input) {
|
|
19
|
+
return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("idx_file_provider_key", (eb) => eb.and(eb("provider", "=", input.provider), eb("key", "=", input.fileKey))))).transformRetrieve(([file]) => {
|
|
11
20
|
if (!file) throw new Error("FILE_NOT_FOUND");
|
|
12
21
|
return file;
|
|
13
22
|
}).build();
|
|
@@ -18,26 +27,26 @@ const createFileServices = (_config) => {
|
|
|
18
27
|
if (input.status && input.uploaderId) {
|
|
19
28
|
const status = input.status;
|
|
20
29
|
const uploaderId = input.uploaderId;
|
|
21
|
-
const ordered$1 = b.whereIndex("
|
|
30
|
+
const ordered$1 = b.whereIndex("idx_file_provider_key_status_uploaderId", (eb) => eb.and(input.provider !== void 0 ? eb("provider", "=", input.provider) : eb("provider", "starts with", ""), eb("key", "starts with", prefix), eb("status", "=", status), eb("uploaderId", "=", uploaderId))).orderByIndex("idx_file_provider_key_status_uploaderId", "asc").pageSize(input.pageSize);
|
|
22
31
|
return input.cursor ? ordered$1.after(input.cursor) : ordered$1;
|
|
23
32
|
}
|
|
24
33
|
if (input.status) {
|
|
25
34
|
const status = input.status;
|
|
26
|
-
const ordered$1 = b.whereIndex("
|
|
35
|
+
const ordered$1 = b.whereIndex("idx_file_provider_key_status", (eb) => eb.and(input.provider !== void 0 ? eb("provider", "=", input.provider) : eb("provider", "starts with", ""), eb("key", "starts with", prefix), eb("status", "=", status))).orderByIndex("idx_file_provider_key_status", "asc").pageSize(input.pageSize);
|
|
27
36
|
return input.cursor ? ordered$1.after(input.cursor) : ordered$1;
|
|
28
37
|
}
|
|
29
38
|
if (input.uploaderId) {
|
|
30
39
|
const uploaderId = input.uploaderId;
|
|
31
|
-
const ordered$1 = b.whereIndex("
|
|
40
|
+
const ordered$1 = b.whereIndex("idx_file_provider_key_uploaderId", (eb) => eb.and(input.provider !== void 0 ? eb("provider", "=", input.provider) : eb("provider", "starts with", ""), eb("key", "starts with", prefix), eb("uploaderId", "=", uploaderId))).orderByIndex("idx_file_provider_key_uploaderId", "asc").pageSize(input.pageSize);
|
|
32
41
|
return input.cursor ? ordered$1.after(input.cursor) : ordered$1;
|
|
33
42
|
}
|
|
34
|
-
const ordered = b.whereIndex("
|
|
43
|
+
const ordered = b.whereIndex("idx_file_provider_key", (eb) => eb.and(input.provider !== void 0 ? eb("provider", "=", input.provider) : eb("provider", "starts with", ""), eb("key", "starts with", prefix))).orderByIndex("idx_file_provider_key", "asc").pageSize(input.pageSize);
|
|
35
44
|
return input.cursor ? ordered.after(input.cursor) : ordered;
|
|
36
45
|
})).transformRetrieve(([result]) => result).build();
|
|
37
46
|
},
|
|
38
|
-
updateFile: function(
|
|
47
|
+
updateFile: function(fileByKey, input) {
|
|
39
48
|
const now = /* @__PURE__ */ new Date();
|
|
40
|
-
return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("
|
|
49
|
+
return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("idx_file_provider_key", (eb) => eb.and(eb("provider", "=", fileByKey.provider), eb("key", "=", fileByKey.fileKey))))).mutate(({ uow, retrieveResult: [file] }) => {
|
|
41
50
|
if (!file) throw new Error("FILE_NOT_FOUND");
|
|
42
51
|
if (file.status === "deleted") throw new Error("UPLOAD_INVALID_STATE");
|
|
43
52
|
const updatedFile = {
|
|
@@ -58,9 +67,9 @@ const createFileServices = (_config) => {
|
|
|
58
67
|
return updatedFile;
|
|
59
68
|
}).build();
|
|
60
69
|
},
|
|
61
|
-
markFileDeleted: function(
|
|
70
|
+
markFileDeleted: function(fileByKey, uploadId) {
|
|
62
71
|
const now = /* @__PURE__ */ new Date();
|
|
63
|
-
return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("
|
|
72
|
+
return this.serviceTx(uploadSchema).retrieve((uow) => uow.findFirst("file", (b) => b.whereIndex("idx_file_provider_key", (eb) => eb.and(eb("provider", "=", fileByKey.provider), eb("key", "=", fileByKey.fileKey))))).mutate(({ uow, retrieveResult: [file] }) => {
|
|
64
73
|
if (!file) throw new Error("FILE_NOT_FOUND");
|
|
65
74
|
if (file.status === "deleted") return file;
|
|
66
75
|
const updatedFile = {
|
|
@@ -74,14 +83,7 @@ const createFileServices = (_config) => {
|
|
|
74
83
|
updatedAt: updatedFile.updatedAt,
|
|
75
84
|
deletedAt: updatedFile.deletedAt
|
|
76
85
|
}).check());
|
|
77
|
-
uow.triggerHook("onFileDeleted", {
|
|
78
|
-
fileKey: file.fileKey,
|
|
79
|
-
fileKeyParts,
|
|
80
|
-
uploadId,
|
|
81
|
-
uploaderId: file.uploaderId,
|
|
82
|
-
sizeBytes: Number(file.sizeBytes),
|
|
83
|
-
contentType: file.contentType
|
|
84
|
-
});
|
|
86
|
+
uow.triggerHook("onFileDeleted", { ...buildFileHookPayload(file, uploadId) });
|
|
85
87
|
return updatedFile;
|
|
86
88
|
}).build();
|
|
87
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","names":["ordered"],"sources":["../../../src/services/files.ts"],"sourcesContent":["import type { DatabaseServiceContext } from \"@fragno-dev/db\";\nimport type {\n FileHookPayload,\n UploadFragmentResolvedConfig,\n UploadTimeoutPayload,\n} from \"../config\";\nimport type { FileKeyEncoded, FileKeyParts } from \"../keys\";\nimport { uploadSchema } from \"../schema\";\nimport type { FileStatus } from \"../types\";\n\nexport type ListFilesInput = {\n prefix?: string;\n pageSize: number;\n cursor?: string;\n status?: FileStatus;\n uploaderId?: string;\n};\n\nexport type UpdateFileInput = {\n filename?: string;\n visibility?: string;\n tags?: string[] | null;\n metadata?: Record<string, unknown> | null;\n};\n\ntype UploadHooks = {\n onFileReady: (payload: FileHookPayload) => void | Promise<void>;\n onUploadFailed: (payload: FileHookPayload) => void | Promise<void>;\n onFileDeleted: (payload: FileHookPayload) => void | Promise<void>;\n onUploadTimeout: (payload: UploadTimeoutPayload) => void | Promise<void>;\n};\n\ntype UploadServiceContext = DatabaseServiceContext<UploadHooks>;\n\nexport const createFileServices = (_config: UploadFragmentResolvedConfig) => {\n return {\n findFileByKey: function (this: UploadServiceContext, fileKey: FileKeyEncoded) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_key\", (eb) => eb(\"fileKey\", \"=\", fileKey)),\n ),\n )\n .transformRetrieve(([file]) => file ?? null)\n .build();\n },\n\n getFileByKey: function (this: UploadServiceContext, fileKey: FileKeyEncoded) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_key\", (eb) => eb(\"fileKey\", \"=\", fileKey)),\n ),\n )\n .transformRetrieve(([file]) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n return file;\n })\n .build();\n },\n\n listFiles: function (this: UploadServiceContext, input: ListFilesInput) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findWithCursor(\"file\", (b) => {\n const prefix = input.prefix ?? \"\";\n if (input.status && input.uploaderId) {\n const status = input.status;\n const uploaderId = input.uploaderId;\n const query = b.whereIndex(\"idx_file_key_status_uploaderId\", (eb) =>\n eb.and(\n eb(\"fileKey\", \"starts with\", prefix),\n eb(\"status\", \"=\", status),\n eb(\"uploaderId\", \"=\", uploaderId),\n ),\n );\n const ordered = query\n .orderByIndex(\"idx_file_key_status_uploaderId\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n if (input.status) {\n const status = input.status;\n const query = b.whereIndex(\"idx_file_key_status\", (eb) =>\n eb.and(eb(\"fileKey\", \"starts with\", prefix), eb(\"status\", \"=\", status)),\n );\n const ordered = query\n .orderByIndex(\"idx_file_key_status\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n if (input.uploaderId) {\n const uploaderId = input.uploaderId;\n const query = b.whereIndex(\"idx_file_key_uploaderId\", (eb) =>\n eb.and(eb(\"fileKey\", \"starts with\", prefix), eb(\"uploaderId\", \"=\", uploaderId)),\n );\n const ordered = query\n .orderByIndex(\"idx_file_key_uploaderId\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n const query = b.whereIndex(\"idx_file_key\", (eb) =>\n eb(\"fileKey\", \"starts with\", prefix),\n );\n const ordered = query.orderByIndex(\"idx_file_key\", \"asc\").pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }),\n )\n .transformRetrieve(([result]) => result)\n .build();\n },\n\n updateFile: function (\n this: UploadServiceContext,\n fileKey: FileKeyEncoded,\n input: UpdateFileInput,\n ) {\n const now = new Date();\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_key\", (eb) => eb(\"fileKey\", \"=\", fileKey)),\n ),\n )\n .mutate(({ uow, retrieveResult: [file] }) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n\n if (file.status === \"deleted\") {\n throw new Error(\"UPLOAD_INVALID_STATE\");\n }\n\n const updatedFile = {\n ...file,\n filename: input.filename ?? file.filename,\n visibility: (input.visibility ?? file.visibility) as string,\n tags: input.tags ?? file.tags,\n metadata: input.metadata ?? file.metadata,\n updatedAt: now,\n };\n\n uow.update(\"file\", file.id, (b) =>\n b\n .set({\n filename: updatedFile.filename,\n visibility: updatedFile.visibility,\n tags: updatedFile.tags,\n metadata: updatedFile.metadata,\n updatedAt: updatedFile.updatedAt,\n })\n .check(),\n );\n\n return updatedFile;\n })\n .build();\n },\n\n markFileDeleted: function (\n this: UploadServiceContext,\n fileKey: FileKeyEncoded,\n fileKeyParts: FileKeyParts,\n uploadId?: string,\n ) {\n const now = new Date();\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_key\", (eb) => eb(\"fileKey\", \"=\", fileKey)),\n ),\n )\n .mutate(({ uow, retrieveResult: [file] }) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n\n if (file.status === \"deleted\") {\n return file;\n }\n\n const updatedFile = {\n ...file,\n status: \"deleted\" as FileStatus,\n updatedAt: now,\n deletedAt: now,\n };\n\n uow.update(\"file\", file.id, (b) =>\n b\n .set({\n status: updatedFile.status,\n updatedAt: updatedFile.updatedAt,\n deletedAt: updatedFile.deletedAt,\n })\n .check(),\n );\n\n uow.triggerHook(\"onFileDeleted\", {\n fileKey: file.fileKey,\n fileKeyParts,\n uploadId,\n uploaderId: file.uploaderId,\n sizeBytes: Number(file.sizeBytes),\n contentType: file.contentType,\n });\n\n return updatedFile;\n })\n .build();\n },\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"files.js","names":["ordered"],"sources":["../../../src/services/files.ts"],"sourcesContent":["import type { DatabaseServiceContext } from \"@fragno-dev/db\";\n\nimport type {\n FileHookPayload,\n UploadFragmentResolvedConfig,\n UploadTimeoutPayload,\n} from \"../config\";\nimport { uploadSchema } from \"../schema\";\nimport type { FileStatus } from \"../types\";\n\nexport type FileByKeyInput = {\n provider: string;\n fileKey: string;\n};\n\nexport type ListFilesInput = {\n provider?: string;\n prefix?: string;\n pageSize: number;\n cursor?: string;\n status?: FileStatus;\n uploaderId?: string;\n};\n\nexport type UpdateFileInput = {\n filename?: string;\n visibility?: string;\n tags?: string[] | null;\n metadata?: Record<string, unknown> | null;\n};\n\ntype FileHookSource = {\n provider: string;\n key: string;\n uploaderId?: string | null;\n sizeBytes: bigint | number;\n contentType: string;\n objectKey: string;\n};\n\ntype UploadHooks = {\n onFileReady: (payload: FileHookPayload) => void | Promise<void>;\n onUploadFailed: (payload: FileHookPayload) => void | Promise<void>;\n onFileDeleted: (payload: FileHookPayload) => void | Promise<void>;\n cleanupStorageObject: (payload: FileHookPayload) => void | Promise<void>;\n onUploadTimeout: (payload: UploadTimeoutPayload) => void | Promise<void>;\n};\n\ntype UploadServiceContext = DatabaseServiceContext<UploadHooks>;\n\nconst buildFileHookPayload = (file: FileHookSource, uploadId?: string): FileHookPayload => ({\n provider: file.provider,\n fileKey: file.key,\n objectKey: file.objectKey,\n uploadId,\n uploaderId: file.uploaderId,\n sizeBytes: Number(file.sizeBytes),\n contentType: file.contentType,\n});\n\nexport const createFileServices = (_config: UploadFragmentResolvedConfig) => {\n return {\n findFileByKey: function (this: UploadServiceContext, input: FileByKeyInput) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_provider_key\", (eb) =>\n eb.and(eb(\"provider\", \"=\", input.provider), eb(\"key\", \"=\", input.fileKey)),\n ),\n ),\n )\n .transformRetrieve(([file]) => file ?? null)\n .build();\n },\n\n getFileByKey: function (this: UploadServiceContext, input: FileByKeyInput) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_provider_key\", (eb) =>\n eb.and(eb(\"provider\", \"=\", input.provider), eb(\"key\", \"=\", input.fileKey)),\n ),\n ),\n )\n .transformRetrieve(([file]) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n return file;\n })\n .build();\n },\n\n listFiles: function (this: UploadServiceContext, input: ListFilesInput) {\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findWithCursor(\"file\", (b) => {\n const prefix = input.prefix ?? \"\";\n\n if (input.status && input.uploaderId) {\n const status = input.status;\n const uploaderId = input.uploaderId;\n const query = b.whereIndex(\"idx_file_provider_key_status_uploaderId\", (eb) =>\n eb.and(\n input.provider !== undefined\n ? eb(\"provider\", \"=\", input.provider)\n : eb(\"provider\", \"starts with\", \"\"),\n eb(\"key\", \"starts with\", prefix),\n eb(\"status\", \"=\", status),\n eb(\"uploaderId\", \"=\", uploaderId),\n ),\n );\n const ordered = query\n .orderByIndex(\"idx_file_provider_key_status_uploaderId\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n if (input.status) {\n const status = input.status;\n const query = b.whereIndex(\"idx_file_provider_key_status\", (eb) =>\n eb.and(\n input.provider !== undefined\n ? eb(\"provider\", \"=\", input.provider)\n : eb(\"provider\", \"starts with\", \"\"),\n eb(\"key\", \"starts with\", prefix),\n eb(\"status\", \"=\", status),\n ),\n );\n const ordered = query\n .orderByIndex(\"idx_file_provider_key_status\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n if (input.uploaderId) {\n const uploaderId = input.uploaderId;\n const query = b.whereIndex(\"idx_file_provider_key_uploaderId\", (eb) =>\n eb.and(\n input.provider !== undefined\n ? eb(\"provider\", \"=\", input.provider)\n : eb(\"provider\", \"starts with\", \"\"),\n eb(\"key\", \"starts with\", prefix),\n eb(\"uploaderId\", \"=\", uploaderId),\n ),\n );\n const ordered = query\n .orderByIndex(\"idx_file_provider_key_uploaderId\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }\n\n const query = b.whereIndex(\"idx_file_provider_key\", (eb) =>\n eb.and(\n input.provider !== undefined\n ? eb(\"provider\", \"=\", input.provider)\n : eb(\"provider\", \"starts with\", \"\"),\n eb(\"key\", \"starts with\", prefix),\n ),\n );\n const ordered = query\n .orderByIndex(\"idx_file_provider_key\", \"asc\")\n .pageSize(input.pageSize);\n return input.cursor ? ordered.after(input.cursor) : ordered;\n }),\n )\n .transformRetrieve(([result]) => result)\n .build();\n },\n\n updateFile: function (\n this: UploadServiceContext,\n fileByKey: FileByKeyInput,\n input: UpdateFileInput,\n ) {\n const now = new Date();\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_provider_key\", (eb) =>\n eb.and(eb(\"provider\", \"=\", fileByKey.provider), eb(\"key\", \"=\", fileByKey.fileKey)),\n ),\n ),\n )\n .mutate(({ uow, retrieveResult: [file] }) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n\n if (file.status === \"deleted\") {\n throw new Error(\"UPLOAD_INVALID_STATE\");\n }\n\n const updatedFile = {\n ...file,\n filename: input.filename ?? file.filename,\n visibility: (input.visibility ?? file.visibility) as string,\n tags: input.tags ?? file.tags,\n metadata: input.metadata ?? file.metadata,\n updatedAt: now,\n };\n\n uow.update(\"file\", file.id, (b) =>\n b\n .set({\n filename: updatedFile.filename,\n visibility: updatedFile.visibility,\n tags: updatedFile.tags,\n metadata: updatedFile.metadata,\n updatedAt: updatedFile.updatedAt,\n })\n .check(),\n );\n\n return updatedFile;\n })\n .build();\n },\n\n markFileDeleted: function (\n this: UploadServiceContext,\n fileByKey: FileByKeyInput,\n uploadId?: string,\n ) {\n const now = new Date();\n return this.serviceTx(uploadSchema)\n .retrieve((uow) =>\n uow.findFirst(\"file\", (b) =>\n b.whereIndex(\"idx_file_provider_key\", (eb) =>\n eb.and(eb(\"provider\", \"=\", fileByKey.provider), eb(\"key\", \"=\", fileByKey.fileKey)),\n ),\n ),\n )\n .mutate(({ uow, retrieveResult: [file] }) => {\n if (!file) {\n throw new Error(\"FILE_NOT_FOUND\");\n }\n\n if (file.status === \"deleted\") {\n return file;\n }\n\n const updatedFile = {\n ...file,\n status: \"deleted\" as FileStatus,\n updatedAt: now,\n deletedAt: now,\n };\n\n uow.update(\"file\", file.id, (b) =>\n b\n .set({\n status: updatedFile.status,\n updatedAt: updatedFile.updatedAt,\n deletedAt: updatedFile.deletedAt,\n })\n .check(),\n );\n\n uow.triggerHook(\"onFileDeleted\", {\n ...buildFileHookPayload(file, uploadId),\n });\n\n return updatedFile;\n })\n .build();\n },\n };\n};\n"],"mappings":"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"}
|
|
@@ -1,30 +1,52 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { assertFileKey, splitFileKey } from "../file-key.js";
|
|
2
2
|
|
|
3
3
|
//#region src/services/helpers.ts
|
|
4
|
+
const normalizeKeyParts = (keyParts) => {
|
|
5
|
+
const normalized = [];
|
|
6
|
+
for (const part of keyParts) {
|
|
7
|
+
if (typeof part === "string") {
|
|
8
|
+
normalized.push(part);
|
|
9
|
+
continue;
|
|
10
|
+
}
|
|
11
|
+
if (typeof part === "number" && Number.isFinite(part) && Number.isInteger(part)) {
|
|
12
|
+
normalized.push(String(part));
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
throw new Error("INVALID_FILE_KEY");
|
|
16
|
+
}
|
|
17
|
+
return normalized;
|
|
18
|
+
};
|
|
4
19
|
const resolveFileKeyInput = (input) => {
|
|
5
20
|
const { keyParts, fileKey } = input;
|
|
6
21
|
if ((!keyParts || keyParts.length === 0) && (!fileKey || fileKey.length === 0)) throw new Error("INVALID_FILE_KEY");
|
|
7
|
-
if (keyParts && fileKey) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
throw new Error("INVALID_FILE_KEY");
|
|
13
|
-
}
|
|
14
|
-
if (encodeFileKey(keyParts) !== fileKey) throw new Error("INVALID_FILE_KEY");
|
|
22
|
+
if (keyParts && fileKey) try {
|
|
23
|
+
assertFileKey(fileKey);
|
|
24
|
+
const fromParts = normalizeKeyParts(keyParts).join("/");
|
|
25
|
+
assertFileKey(fromParts);
|
|
26
|
+
if (fromParts !== fileKey) throw new Error("INVALID_FILE_KEY");
|
|
15
27
|
return {
|
|
16
28
|
fileKey,
|
|
17
|
-
fileKeyParts:
|
|
29
|
+
fileKeyParts: splitFileKey(fileKey)
|
|
18
30
|
};
|
|
31
|
+
} catch {
|
|
32
|
+
throw new Error("INVALID_FILE_KEY");
|
|
33
|
+
}
|
|
34
|
+
if (keyParts) try {
|
|
35
|
+
const normalized = normalizeKeyParts(keyParts);
|
|
36
|
+
const normalizedFileKey = normalized.join("/");
|
|
37
|
+
assertFileKey(normalizedFileKey);
|
|
38
|
+
return {
|
|
39
|
+
fileKey: normalizedFileKey,
|
|
40
|
+
fileKeyParts: normalized
|
|
41
|
+
};
|
|
42
|
+
} catch {
|
|
43
|
+
throw new Error("INVALID_FILE_KEY");
|
|
19
44
|
}
|
|
20
|
-
if (keyParts) return {
|
|
21
|
-
fileKey: encodeFileKey(keyParts),
|
|
22
|
-
fileKeyParts: keyParts
|
|
23
|
-
};
|
|
24
45
|
try {
|
|
46
|
+
assertFileKey(fileKey);
|
|
25
47
|
return {
|
|
26
48
|
fileKey,
|
|
27
|
-
fileKeyParts:
|
|
49
|
+
fileKeyParts: splitFileKey(fileKey)
|
|
28
50
|
};
|
|
29
51
|
} catch {
|
|
30
52
|
throw new Error("INVALID_FILE_KEY");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","names":["
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["normalized: string[]"],"sources":["../../../src/services/helpers.ts"],"sourcesContent":["import { assertFileKey, splitFileKey, type FileKey } from \"../file-key\";\nimport type { FileKeyParts } from \"../keys\";\n\nexport type FileKeyInput = {\n keyParts?: FileKeyParts;\n fileKey?: FileKey;\n};\n\nconst normalizeKeyParts = (keyParts: FileKeyParts): readonly string[] => {\n const normalized: string[] = [];\n\n for (const part of keyParts) {\n if (typeof part === \"string\") {\n normalized.push(part);\n continue;\n }\n\n if (typeof part === \"number\" && Number.isFinite(part) && Number.isInteger(part)) {\n normalized.push(String(part));\n continue;\n }\n\n throw new Error(\"INVALID_FILE_KEY\");\n }\n\n return normalized;\n};\n\nexport const resolveFileKeyInput = (\n input: FileKeyInput,\n): {\n fileKey: FileKey;\n fileKeyParts: FileKeyParts;\n} => {\n const { keyParts, fileKey } = input;\n\n if ((!keyParts || keyParts.length === 0) && (!fileKey || fileKey.length === 0)) {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n\n if (keyParts && fileKey) {\n try {\n assertFileKey(fileKey);\n const fromParts = normalizeKeyParts(keyParts).join(\"/\");\n assertFileKey(fromParts);\n if (fromParts !== fileKey) {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n return { fileKey, fileKeyParts: splitFileKey(fileKey) };\n } catch {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n }\n\n if (keyParts) {\n try {\n const normalized = normalizeKeyParts(keyParts);\n const normalizedFileKey = normalized.join(\"/\");\n assertFileKey(normalizedFileKey);\n return { fileKey: normalizedFileKey, fileKeyParts: normalized };\n } catch {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n }\n\n try {\n assertFileKey(fileKey!);\n return { fileKey: fileKey!, fileKeyParts: splitFileKey(fileKey!) };\n } catch {\n throw new Error(\"INVALID_FILE_KEY\");\n }\n};\n"],"mappings":";;;AAQA,MAAM,qBAAqB,aAA8C;CACvE,MAAMA,aAAuB,EAAE;AAE/B,MAAK,MAAM,QAAQ,UAAU;AAC3B,MAAI,OAAO,SAAS,UAAU;AAC5B,cAAW,KAAK,KAAK;AACrB;;AAGF,MAAI,OAAO,SAAS,YAAY,OAAO,SAAS,KAAK,IAAI,OAAO,UAAU,KAAK,EAAE;AAC/E,cAAW,KAAK,OAAO,KAAK,CAAC;AAC7B;;AAGF,QAAM,IAAI,MAAM,mBAAmB;;AAGrC,QAAO;;AAGT,MAAa,uBACX,UAIG;CACH,MAAM,EAAE,UAAU,YAAY;AAE9B,MAAK,CAAC,YAAY,SAAS,WAAW,OAAO,CAAC,WAAW,QAAQ,WAAW,GAC1E,OAAM,IAAI,MAAM,mBAAmB;AAGrC,KAAI,YAAY,QACd,KAAI;AACF,gBAAc,QAAQ;EACtB,MAAM,YAAY,kBAAkB,SAAS,CAAC,KAAK,IAAI;AACvD,gBAAc,UAAU;AACxB,MAAI,cAAc,QAChB,OAAM,IAAI,MAAM,mBAAmB;AAErC,SAAO;GAAE;GAAS,cAAc,aAAa,QAAQ;GAAE;SACjD;AACN,QAAM,IAAI,MAAM,mBAAmB;;AAIvC,KAAI,SACF,KAAI;EACF,MAAM,aAAa,kBAAkB,SAAS;EAC9C,MAAM,oBAAoB,WAAW,KAAK,IAAI;AAC9C,gBAAc,kBAAkB;AAChC,SAAO;GAAE,SAAS;GAAmB,cAAc;GAAY;SACzD;AACN,QAAM,IAAI,MAAM,mBAAmB;;AAIvC,KAAI;AACF,gBAAc,QAAS;AACvB,SAAO;GAAW;GAAU,cAAc,aAAa,QAAS;GAAE;SAC5D;AACN,QAAM,IAAI,MAAM,mBAAmB"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { FileKeyEncoded, FileKeyParts } from "../keys.js";
|
|
2
1
|
import { UploadChecksum } from "../storage/types.js";
|
|
3
2
|
import { FileVisibility, UploadStrategy } from "../types.js";
|
|
4
3
|
|
|
5
4
|
//#region src/services/uploads.d.ts
|
|
5
|
+
|
|
6
6
|
type CreateUploadInput = {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
provider: string;
|
|
8
|
+
keyParts?: readonly (string | number)[];
|
|
9
|
+
fileKey?: string;
|
|
9
10
|
filename: string;
|
|
10
11
|
sizeBytes: number;
|
|
11
12
|
contentType: string;
|
|
@@ -28,8 +29,8 @@ type CompletePartsInput = {
|
|
|
28
29
|
};
|
|
29
30
|
type CreateUploadResult = {
|
|
30
31
|
uploadId: string;
|
|
31
|
-
fileKey:
|
|
32
|
-
|
|
32
|
+
fileKey: string;
|
|
33
|
+
provider: string;
|
|
33
34
|
status: "created" | "in_progress";
|
|
34
35
|
strategy: UploadStrategy;
|
|
35
36
|
expiresAt: Date;
|
|
@@ -40,8 +41,12 @@ type CreateUploadResult = {
|
|
|
40
41
|
uploadHeaders?: Record<string, string>;
|
|
41
42
|
partSizeBytes?: number;
|
|
42
43
|
maxParts?: number;
|
|
44
|
+
statusEndpoint: string;
|
|
45
|
+
progressEndpoint: string;
|
|
43
46
|
partsEndpoint?: string;
|
|
47
|
+
partsCompleteEndpoint?: string;
|
|
44
48
|
completeEndpoint: string;
|
|
49
|
+
abortEndpoint: string;
|
|
45
50
|
contentEndpoint?: string;
|
|
46
51
|
};
|
|
47
52
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploads.d.ts","names":[],"sources":["../../../src/services/uploads.ts"],"sourcesContent":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"uploads.d.ts","names":[],"sources":["../../../src/services/uploads.ts"],"sourcesContent":[],"mappings":";;;;;AAuBa,KAPD,iBAAA,GAOC;UAEE,EAAA,MAAA;UAEF,CAAA,EAAA,SAAA,CAAA,MAAA,GAAA,MAAA,CAAA,EAAA;EAAM,OAAA,CAAA,EAAA,MAAA;EAGP,QAAA,EAAA,MAAA;EAKA,SAAA,EAAA,MAAA;EAIA,WAAA,EAAA,MAAA;EAAkB,QAAA,CAAA,EAhBjB,cAgBiB,GAAA,IAAA;MAKlB,CAAA,EAAA,MAAA,EAAA;YACC,CAAA,EApBE,cAoBF;YAKO,CAAA,EAAA,MAAA;EAAM,QAAA,CAAA,EAvBb,MAuBa,CAAA,MAAA,EAAA,OAAA,CAAA;;KApBd,mBAAA;;;;KAKA,kBAAA;;;;;;;KAIA,kBAAA;;;;;YAKA;aACC;;;;;oBAKO"}
|