@fragno-dev/upload 0.1.1
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/LICENSE.md +16 -0
- package/README.md +43 -0
- package/bin/run.js +5 -0
- package/dist/browser/client/clients.js +49 -0
- package/dist/browser/client/clients.js.map +1 -0
- package/dist/browser/client/helpers.d.ts +51 -0
- package/dist/browser/client/helpers.d.ts.map +1 -0
- package/dist/browser/client/helpers.js +242 -0
- package/dist/browser/client/helpers.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/@nanostores_query@0.3.4_nanostores@1.1.0/node_modules/@nanostores/query/dist/nanoquery.js +354 -0
- package/dist/browser/client/node_modules/.pnpm/@nanostores_query@0.3.4_nanostores@1.1.0/node_modules/@nanostores/query/dist/nanoquery.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/@nanostores_solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10/node_modules/@nanostores/solid/dist/index.js +14 -0
- package/dist/browser/client/node_modules/.pnpm/@nanostores_solid@1.1.1_nanostores@1.1.0_solid-js@1.9.10/node_modules/@nanostores/solid/dist/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanoevents@9.1.0/node_modules/nanoevents/index.js +17 -0
- package/dist/browser/client/node_modules/.pnpm/nanoevents@9.1.0/node_modules/nanoevents/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/atom/index.js +62 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/atom/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/clean-stores/index.js +6 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/clean-stores/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/computed/index.js +50 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/computed/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/lifecycle/index.js +99 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/lifecycle/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/listen-keys/index.js +11 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/listen-keys/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/map/index.js +25 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/map/index.js.map +1 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/task/index.js +24 -0
- package/dist/browser/client/node_modules/.pnpm/nanostores@1.1.0/node_modules/nanostores/task/index.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/definition.js +49 -0
- package/dist/browser/client/packages/fragment-upload/src/definition.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/keys.d.ts +7 -0
- package/dist/browser/client/packages/fragment-upload/src/keys.d.ts.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/keys.js +28 -0
- package/dist/browser/client/packages/fragment-upload/src/keys.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/routes/files.js +98 -0
- package/dist/browser/client/packages/fragment-upload/src/routes/files.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/routes/index.js +9 -0
- package/dist/browser/client/packages/fragment-upload/src/routes/index.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/routes/shared.js +41 -0
- package/dist/browser/client/packages/fragment-upload/src/routes/shared.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js +186 -0
- package/dist/browser/client/packages/fragment-upload/src/routes/uploads.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/schema.js +8 -0
- package/dist/browser/client/packages/fragment-upload/src/schema.js.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/storage/types.d.ts +9 -0
- package/dist/browser/client/packages/fragment-upload/src/storage/types.d.ts.map +1 -0
- package/dist/browser/client/packages/fragment-upload/src/types.d.ts +31 -0
- package/dist/browser/client/packages/fragment-upload/src/types.d.ts.map +1 -0
- package/dist/browser/client/packages/fragno/dist/api/error.js +48 -0
- package/dist/browser/client/packages/fragno/dist/api/error.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/api/internal/path.js +76 -0
- package/dist/browser/client/packages/fragno/dist/api/internal/path.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/api/internal/response-stream.js +81 -0
- package/dist/browser/client/packages/fragno/dist/api/internal/response-stream.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/api/internal/route.js +10 -0
- package/dist/browser/client/packages/fragno/dist/api/internal/route.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/api/request-input-context.js +185 -0
- package/dist/browser/client/packages/fragno/dist/api/request-input-context.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/api/request-output-context.js +119 -0
- package/dist/browser/client/packages/fragno/dist/api/request-output-context.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/api/route.js +17 -0
- package/dist/browser/client/packages/fragno/dist/api/route.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/client-error.js +92 -0
- package/dist/browser/client/packages/fragno/dist/client/client-error.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/client.js +495 -0
- package/dist/browser/client/packages/fragno/dist/client/client.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/client.svelte.js +120 -0
- package/dist/browser/client/packages/fragno/dist/client/client.svelte.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/internal/fetcher-merge.js +36 -0
- package/dist/browser/client/packages/fragno/dist/client/internal/fetcher-merge.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/internal/ndjson-streaming.js +139 -0
- package/dist/browser/client/packages/fragno/dist/client/internal/ndjson-streaming.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/react.js +70 -0
- package/dist/browser/client/packages/fragno/dist/client/react.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/solid.js +108 -0
- package/dist/browser/client/packages/fragno/dist/client/solid.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/vanilla.js +96 -0
- package/dist/browser/client/packages/fragno/dist/client/vanilla.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/client/vue.js +120 -0
- package/dist/browser/client/packages/fragno/dist/client/vue.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/util/async.js +40 -0
- package/dist/browser/client/packages/fragno/dist/util/async.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/util/content-type.js +49 -0
- package/dist/browser/client/packages/fragno/dist/util/content-type.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/util/nanostores.js +31 -0
- package/dist/browser/client/packages/fragno/dist/util/nanostores.js.map +1 -0
- package/dist/browser/client/packages/fragno/dist/util/ssr.js +18 -0
- package/dist/browser/client/packages/fragno/dist/util/ssr.js.map +1 -0
- package/dist/browser/client/react.d.ts +295 -0
- package/dist/browser/client/react.d.ts.map +1 -0
- package/dist/browser/client/react.js +11 -0
- package/dist/browser/client/react.js.map +1 -0
- package/dist/browser/client/solid.d.ts +303 -0
- package/dist/browser/client/solid.d.ts.map +1 -0
- package/dist/browser/client/solid.js +11 -0
- package/dist/browser/client/solid.js.map +1 -0
- package/dist/browser/client/svelte.d.ts +295 -0
- package/dist/browser/client/svelte.d.ts.map +1 -0
- package/dist/browser/client/svelte.js +11 -0
- package/dist/browser/client/svelte.js.map +1 -0
- package/dist/browser/client/vanilla.d.ts +296 -0
- package/dist/browser/client/vanilla.d.ts.map +1 -0
- package/dist/browser/client/vanilla.js +11 -0
- package/dist/browser/client/vanilla.js.map +1 -0
- package/dist/browser/client/vue.d.ts +295 -0
- package/dist/browser/client/vue.d.ts.map +1 -0
- package/dist/browser/client/vue.js +11 -0
- package/dist/browser/client/vue.js.map +1 -0
- package/dist/browser/index-BdjKPO4J.d.ts +177 -0
- package/dist/browser/index-BdjKPO4J.d.ts.map +1 -0
- package/dist/browser/index.js +3 -0
- package/dist/browser/src-vdNJUbjT.js +1982 -0
- package/dist/browser/src-vdNJUbjT.js.map +1 -0
- package/dist/cli/commands/files/delete.d.ts +40 -0
- package/dist/cli/commands/files/delete.d.ts.map +1 -0
- package/dist/cli/commands/files/delete.js +31 -0
- package/dist/cli/commands/files/delete.js.map +1 -0
- package/dist/cli/commands/files/download-url.d.ts +40 -0
- package/dist/cli/commands/files/download-url.d.ts.map +1 -0
- package/dist/cli/commands/files/download-url.js +31 -0
- package/dist/cli/commands/files/download-url.js.map +1 -0
- package/dist/cli/commands/files/download.d.ts +49 -0
- package/dist/cli/commands/files/download.d.ts.map +1 -0
- package/dist/cli/commands/files/download.js +65 -0
- package/dist/cli/commands/files/download.js.map +1 -0
- package/dist/cli/commands/files/get.d.ts +40 -0
- package/dist/cli/commands/files/get.d.ts.map +1 -0
- package/dist/cli/commands/files/get.js +31 -0
- package/dist/cli/commands/files/get.js.map +1 -0
- package/dist/cli/commands/files/list.d.ts +56 -0
- package/dist/cli/commands/files/list.d.ts.map +1 -0
- package/dist/cli/commands/files/list.js +53 -0
- package/dist/cli/commands/files/list.js.map +1 -0
- package/dist/cli/commands/files/update.d.ts +56 -0
- package/dist/cli/commands/files/update.d.ts.map +1 -0
- package/dist/cli/commands/files/update.js +53 -0
- package/dist/cli/commands/files/update.js.map +1 -0
- package/dist/cli/commands/files/upload.d.ts +73 -0
- package/dist/cli/commands/files/upload.d.ts.map +1 -0
- package/dist/cli/commands/files/upload.js +87 -0
- package/dist/cli/commands/files/upload.js.map +1 -0
- package/dist/cli/commands/uploads/abort.d.ts +37 -0
- package/dist/cli/commands/uploads/abort.d.ts.map +1 -0
- package/dist/cli/commands/uploads/abort.js +26 -0
- package/dist/cli/commands/uploads/abort.js.map +1 -0
- package/dist/cli/commands/uploads/complete.d.ts +41 -0
- package/dist/cli/commands/uploads/complete.d.ts.map +1 -0
- package/dist/cli/commands/uploads/complete.js +45 -0
- package/dist/cli/commands/uploads/complete.js.map +1 -0
- package/dist/cli/commands/uploads/content.d.ts +46 -0
- package/dist/cli/commands/uploads/content.d.ts.map +1 -0
- package/dist/cli/commands/uploads/content.js +43 -0
- package/dist/cli/commands/uploads/content.js.map +1 -0
- package/dist/cli/commands/uploads/create.d.ts +72 -0
- package/dist/cli/commands/uploads/create.d.ts.map +1 -0
- package/dist/cli/commands/uploads/create.js +84 -0
- package/dist/cli/commands/uploads/create.js.map +1 -0
- package/dist/cli/commands/uploads/get.d.ts +37 -0
- package/dist/cli/commands/uploads/get.d.ts.map +1 -0
- package/dist/cli/commands/uploads/get.js +26 -0
- package/dist/cli/commands/uploads/get.js.map +1 -0
- package/dist/cli/commands/uploads/parts-complete.d.ts +41 -0
- package/dist/cli/commands/uploads/parts-complete.d.ts.map +1 -0
- package/dist/cli/commands/uploads/parts-complete.js +44 -0
- package/dist/cli/commands/uploads/parts-complete.js.map +1 -0
- package/dist/cli/commands/uploads/parts-list.d.ts +37 -0
- package/dist/cli/commands/uploads/parts-list.d.ts.map +1 -0
- package/dist/cli/commands/uploads/parts-list.js +26 -0
- package/dist/cli/commands/uploads/parts-list.js.map +1 -0
- package/dist/cli/commands/uploads/parts-urls.d.ts +46 -0
- package/dist/cli/commands/uploads/parts-urls.d.ts.map +1 -0
- package/dist/cli/commands/uploads/parts-urls.js +57 -0
- package/dist/cli/commands/uploads/parts-urls.js.map +1 -0
- package/dist/cli/commands/uploads/progress.d.ts +45 -0
- package/dist/cli/commands/uploads/progress.d.ts.map +1 -0
- package/dist/cli/commands/uploads/progress.js +40 -0
- package/dist/cli/commands/uploads/progress.js.map +1 -0
- package/dist/cli/commands/uploads/transfer.d.ts +73 -0
- package/dist/cli/commands/uploads/transfer.d.ts.map +1 -0
- package/dist/cli/commands/uploads/transfer.js +170 -0
- package/dist/cli/commands/uploads/transfer.js.map +1 -0
- package/dist/cli/index.d.ts +27 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +198 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/keys.js +32 -0
- package/dist/cli/keys.js.map +1 -0
- package/dist/cli/utils/client.js +174 -0
- package/dist/cli/utils/client.js.map +1 -0
- package/dist/cli/utils/options.js +135 -0
- package/dist/cli/utils/options.js.map +1 -0
- package/dist/node/cli/commands/files/delete.d.ts +40 -0
- package/dist/node/cli/commands/files/delete.d.ts.map +1 -0
- package/dist/node/cli/commands/files/delete.js +31 -0
- package/dist/node/cli/commands/files/delete.js.map +1 -0
- package/dist/node/cli/commands/files/download-url.d.ts +40 -0
- package/dist/node/cli/commands/files/download-url.d.ts.map +1 -0
- package/dist/node/cli/commands/files/download-url.js +31 -0
- package/dist/node/cli/commands/files/download-url.js.map +1 -0
- package/dist/node/cli/commands/files/download.d.ts +49 -0
- package/dist/node/cli/commands/files/download.d.ts.map +1 -0
- package/dist/node/cli/commands/files/download.js +65 -0
- package/dist/node/cli/commands/files/download.js.map +1 -0
- package/dist/node/cli/commands/files/get.d.ts +40 -0
- package/dist/node/cli/commands/files/get.d.ts.map +1 -0
- package/dist/node/cli/commands/files/get.js +31 -0
- package/dist/node/cli/commands/files/get.js.map +1 -0
- package/dist/node/cli/commands/files/list.d.ts +56 -0
- package/dist/node/cli/commands/files/list.d.ts.map +1 -0
- package/dist/node/cli/commands/files/list.js +53 -0
- package/dist/node/cli/commands/files/list.js.map +1 -0
- package/dist/node/cli/commands/files/update.d.ts +56 -0
- package/dist/node/cli/commands/files/update.d.ts.map +1 -0
- package/dist/node/cli/commands/files/update.js +53 -0
- package/dist/node/cli/commands/files/update.js.map +1 -0
- package/dist/node/cli/commands/files/upload.d.ts +73 -0
- package/dist/node/cli/commands/files/upload.d.ts.map +1 -0
- package/dist/node/cli/commands/files/upload.js +87 -0
- package/dist/node/cli/commands/files/upload.js.map +1 -0
- package/dist/node/cli/commands/uploads/abort.d.ts +37 -0
- package/dist/node/cli/commands/uploads/abort.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/abort.js +26 -0
- package/dist/node/cli/commands/uploads/abort.js.map +1 -0
- package/dist/node/cli/commands/uploads/complete.d.ts +41 -0
- package/dist/node/cli/commands/uploads/complete.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/complete.js +45 -0
- package/dist/node/cli/commands/uploads/complete.js.map +1 -0
- package/dist/node/cli/commands/uploads/content.d.ts +46 -0
- package/dist/node/cli/commands/uploads/content.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/content.js +43 -0
- package/dist/node/cli/commands/uploads/content.js.map +1 -0
- package/dist/node/cli/commands/uploads/create.d.ts +72 -0
- package/dist/node/cli/commands/uploads/create.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/create.js +84 -0
- package/dist/node/cli/commands/uploads/create.js.map +1 -0
- package/dist/node/cli/commands/uploads/get.d.ts +37 -0
- package/dist/node/cli/commands/uploads/get.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/get.js +26 -0
- package/dist/node/cli/commands/uploads/get.js.map +1 -0
- package/dist/node/cli/commands/uploads/parts-complete.d.ts +41 -0
- package/dist/node/cli/commands/uploads/parts-complete.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/parts-complete.js +44 -0
- package/dist/node/cli/commands/uploads/parts-complete.js.map +1 -0
- package/dist/node/cli/commands/uploads/parts-list.d.ts +37 -0
- package/dist/node/cli/commands/uploads/parts-list.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/parts-list.js +26 -0
- package/dist/node/cli/commands/uploads/parts-list.js.map +1 -0
- package/dist/node/cli/commands/uploads/parts-urls.d.ts +46 -0
- package/dist/node/cli/commands/uploads/parts-urls.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/parts-urls.js +57 -0
- package/dist/node/cli/commands/uploads/parts-urls.js.map +1 -0
- package/dist/node/cli/commands/uploads/progress.d.ts +45 -0
- package/dist/node/cli/commands/uploads/progress.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/progress.js +40 -0
- package/dist/node/cli/commands/uploads/progress.js.map +1 -0
- package/dist/node/cli/commands/uploads/transfer.d.ts +73 -0
- package/dist/node/cli/commands/uploads/transfer.d.ts.map +1 -0
- package/dist/node/cli/commands/uploads/transfer.js +170 -0
- package/dist/node/cli/commands/uploads/transfer.js.map +1 -0
- package/dist/node/cli/index.d.ts +27 -0
- package/dist/node/cli/index.d.ts.map +1 -0
- package/dist/node/cli/index.js +198 -0
- package/dist/node/cli/index.js.map +1 -0
- package/dist/node/cli/utils/client.js +174 -0
- package/dist/node/cli/utils/client.js.map +1 -0
- package/dist/node/cli/utils/options.js +135 -0
- package/dist/node/cli/utils/options.js.map +1 -0
- package/dist/node/client/clients.d.ts +295 -0
- package/dist/node/client/clients.d.ts.map +1 -0
- package/dist/node/client/clients.js +49 -0
- package/dist/node/client/clients.js.map +1 -0
- package/dist/node/client/helpers.d.ts +51 -0
- package/dist/node/client/helpers.d.ts.map +1 -0
- package/dist/node/client/helpers.js +242 -0
- package/dist/node/client/helpers.js.map +1 -0
- package/dist/node/client/react.d.ts +295 -0
- package/dist/node/client/react.d.ts.map +1 -0
- package/dist/node/client/react.js +11 -0
- package/dist/node/client/react.js.map +1 -0
- package/dist/node/client/solid.d.ts +303 -0
- package/dist/node/client/solid.d.ts.map +1 -0
- package/dist/node/client/solid.js +11 -0
- package/dist/node/client/solid.js.map +1 -0
- package/dist/node/client/svelte.d.ts +295 -0
- package/dist/node/client/svelte.d.ts.map +1 -0
- package/dist/node/client/svelte.js +11 -0
- package/dist/node/client/svelte.js.map +1 -0
- package/dist/node/client/vanilla.d.ts +296 -0
- package/dist/node/client/vanilla.d.ts.map +1 -0
- package/dist/node/client/vanilla.js +11 -0
- package/dist/node/client/vanilla.js.map +1 -0
- package/dist/node/client/vue.d.ts +295 -0
- package/dist/node/client/vue.d.ts.map +1 -0
- package/dist/node/client/vue.js +11 -0
- package/dist/node/client/vue.js.map +1 -0
- package/dist/node/config.d.ts +41 -0
- package/dist/node/config.d.ts.map +1 -0
- package/dist/node/config.js +26 -0
- package/dist/node/config.js.map +1 -0
- package/dist/node/definition.d.ts +829 -0
- package/dist/node/definition.d.ts.map +1 -0
- package/dist/node/definition.js +59 -0
- package/dist/node/definition.js.map +1 -0
- package/dist/node/index.d.ts +1246 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +19 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/keys.d.ts +12 -0
- package/dist/node/keys.d.ts.map +1 -0
- package/dist/node/keys.js +63 -0
- package/dist/node/keys.js.map +1 -0
- package/dist/node/routes/files.js +450 -0
- package/dist/node/routes/files.js.map +1 -0
- package/dist/node/routes/index.d.ts +2023 -0
- package/dist/node/routes/index.d.ts.map +1 -0
- package/dist/node/routes/index.js +9 -0
- package/dist/node/routes/index.js.map +1 -0
- package/dist/node/routes/shared.js +66 -0
- package/dist/node/routes/shared.js.map +1 -0
- package/dist/node/routes/uploads.js +454 -0
- package/dist/node/routes/uploads.js.map +1 -0
- package/dist/node/schema.d.ts +14 -0
- package/dist/node/schema.d.ts.map +1 -0
- package/dist/node/schema.js +30 -0
- package/dist/node/schema.js.map +1 -0
- package/dist/node/services/files.d.ts +20 -0
- package/dist/node/services/files.d.ts.map +1 -0
- package/dist/node/services/files.js +93 -0
- package/dist/node/services/files.js.map +1 -0
- package/dist/node/services/helpers.js +36 -0
- package/dist/node/services/helpers.js.map +1 -0
- package/dist/node/services/index.js +4 -0
- package/dist/node/services/uploads.d.ts +50 -0
- package/dist/node/services/uploads.d.ts.map +1 -0
- package/dist/node/services/uploads.js +358 -0
- package/dist/node/services/uploads.js.map +1 -0
- package/dist/node/storage/fs.d.ts +16 -0
- package/dist/node/storage/fs.d.ts.map +1 -0
- package/dist/node/storage/fs.js +94 -0
- package/dist/node/storage/fs.js.map +1 -0
- package/dist/node/storage/r2.d.ts +103 -0
- package/dist/node/storage/r2.d.ts.map +1 -0
- package/dist/node/storage/r2.js +23 -0
- package/dist/node/storage/r2.js.map +1 -0
- package/dist/node/storage/s3.d.ts +44 -0
- package/dist/node/storage/s3.d.ts.map +1 -0
- package/dist/node/storage/s3.js +398 -0
- package/dist/node/storage/s3.js.map +1 -0
- package/dist/node/storage/types.d.ts +118 -0
- package/dist/node/storage/types.d.ts.map +1 -0
- package/dist/node/types.d.ts +32 -0
- package/dist/node/types.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +105 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { FragnoApiValidationError } from "./error.js";
|
|
2
|
+
|
|
3
|
+
//#region ../fragno/dist/api/request-input-context.js
|
|
4
|
+
var RequestInputContext = class RequestInputContext$1 {
|
|
5
|
+
#path;
|
|
6
|
+
#method;
|
|
7
|
+
#pathParams;
|
|
8
|
+
#searchParams;
|
|
9
|
+
#headers;
|
|
10
|
+
#body;
|
|
11
|
+
#parsedBody;
|
|
12
|
+
#inputSchema;
|
|
13
|
+
#shouldValidateInput;
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.#path = config.path;
|
|
16
|
+
this.#method = config.method;
|
|
17
|
+
this.#pathParams = config.pathParams;
|
|
18
|
+
this.#searchParams = config.searchParams;
|
|
19
|
+
this.#headers = config.headers;
|
|
20
|
+
this.#body = config.rawBody;
|
|
21
|
+
this.#parsedBody = config.parsedBody;
|
|
22
|
+
this.#inputSchema = config.inputSchema;
|
|
23
|
+
this.#shouldValidateInput = config.shouldValidateInput ?? true;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a RequestContext from a Request object for server-side handling
|
|
27
|
+
*/
|
|
28
|
+
static async fromRequest(config) {
|
|
29
|
+
return new RequestInputContext$1({
|
|
30
|
+
method: config.method,
|
|
31
|
+
path: config.path,
|
|
32
|
+
pathParams: config.state.pathParams,
|
|
33
|
+
searchParams: config.state.searchParams,
|
|
34
|
+
headers: config.state.headers,
|
|
35
|
+
parsedBody: config.state.body,
|
|
36
|
+
rawBody: config.rawBody,
|
|
37
|
+
inputSchema: config.inputSchema,
|
|
38
|
+
shouldValidateInput: config.shouldValidateInput
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a RequestContext for server-side rendering contexts (no Request object)
|
|
43
|
+
*/
|
|
44
|
+
static fromSSRContext(config) {
|
|
45
|
+
return new RequestInputContext$1({
|
|
46
|
+
method: config.method,
|
|
47
|
+
path: config.path,
|
|
48
|
+
pathParams: config.pathParams,
|
|
49
|
+
searchParams: config.searchParams ?? new URLSearchParams(),
|
|
50
|
+
headers: config.headers ?? new Headers(),
|
|
51
|
+
parsedBody: "body" in config ? config.body : void 0,
|
|
52
|
+
inputSchema: "inputSchema" in config ? config.inputSchema : void 0,
|
|
53
|
+
shouldValidateInput: false
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The HTTP method as string (e.g., `GET`, `POST`)
|
|
58
|
+
*/
|
|
59
|
+
get method() {
|
|
60
|
+
return this.#method;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The matched route path (e.g., `/users/:id`)
|
|
64
|
+
* @remarks `string`
|
|
65
|
+
*/
|
|
66
|
+
get path() {
|
|
67
|
+
return this.#path;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extracted path parameters as object (e.g., `{ id: '123' }`)
|
|
71
|
+
* @remarks `Record<string, string>`
|
|
72
|
+
*/
|
|
73
|
+
get pathParams() {
|
|
74
|
+
return this.#pathParams;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) object for query parameters
|
|
78
|
+
* @remarks `URLSearchParams`
|
|
79
|
+
*/
|
|
80
|
+
get query() {
|
|
81
|
+
return this.#searchParams;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object for request headers
|
|
85
|
+
* @remarks `Headers`
|
|
86
|
+
*/
|
|
87
|
+
get headers() {
|
|
88
|
+
return this.#headers;
|
|
89
|
+
}
|
|
90
|
+
get rawBody() {
|
|
91
|
+
return this.#body;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Access the request body as FormData.
|
|
95
|
+
*
|
|
96
|
+
* Use this method when handling file uploads or multipart form submissions.
|
|
97
|
+
* The request must have been sent with Content-Type: multipart/form-data.
|
|
98
|
+
*
|
|
99
|
+
* @throws Error if the request body is not FormData
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```typescript
|
|
103
|
+
* defineRoute({
|
|
104
|
+
* method: "POST",
|
|
105
|
+
* path: "/upload",
|
|
106
|
+
* async handler(ctx, res) {
|
|
107
|
+
* const formData = ctx.formData();
|
|
108
|
+
* const file = formData.get("file") as File;
|
|
109
|
+
* const description = formData.get("description") as string;
|
|
110
|
+
* // ... process file
|
|
111
|
+
* }
|
|
112
|
+
* });
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
formData() {
|
|
116
|
+
if (!(this.#parsedBody instanceof FormData)) throw new Error("Request body is not FormData. Ensure the request was sent with Content-Type: multipart/form-data.");
|
|
117
|
+
return this.#parsedBody;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Check if the request body is FormData.
|
|
121
|
+
*
|
|
122
|
+
* Useful for routes that accept both JSON and FormData payloads.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* defineRoute({
|
|
127
|
+
* method: "POST",
|
|
128
|
+
* path: "/upload",
|
|
129
|
+
* async handler(ctx, res) {
|
|
130
|
+
* if (ctx.isFormData()) {
|
|
131
|
+
* const formData = ctx.formData();
|
|
132
|
+
* // handle file upload
|
|
133
|
+
* } else {
|
|
134
|
+
* const json = await ctx.input.valid();
|
|
135
|
+
* // handle JSON payload
|
|
136
|
+
* }
|
|
137
|
+
* }
|
|
138
|
+
* });
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
isFormData() {
|
|
142
|
+
return this.#parsedBody instanceof FormData;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Access the request body as a ReadableStream (application/octet-stream).
|
|
146
|
+
*
|
|
147
|
+
* @throws Error if the request body is not a ReadableStream
|
|
148
|
+
*/
|
|
149
|
+
bodyStream() {
|
|
150
|
+
if (!(this.#parsedBody instanceof ReadableStream)) throw new Error("Request body is not a ReadableStream. Ensure the request was sent with Content-Type: application/octet-stream.");
|
|
151
|
+
return this.#parsedBody;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if the request body is a ReadableStream.
|
|
155
|
+
*/
|
|
156
|
+
isBodyStream() {
|
|
157
|
+
return this.#parsedBody instanceof ReadableStream;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Input validation context (only if inputSchema is defined)
|
|
161
|
+
* @remarks `InputContext`
|
|
162
|
+
*/
|
|
163
|
+
get input() {
|
|
164
|
+
if (!this.#inputSchema) return;
|
|
165
|
+
return {
|
|
166
|
+
schema: this.#inputSchema,
|
|
167
|
+
valid: async () => {
|
|
168
|
+
if (!this.#shouldValidateInput) return this.#parsedBody;
|
|
169
|
+
return this.#validateInput();
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
async #validateInput() {
|
|
174
|
+
if (!this.#inputSchema) throw new Error("No input schema defined for this route");
|
|
175
|
+
if (this.#parsedBody instanceof FormData || this.#parsedBody instanceof Blob) throw new Error("Schema validation is only supported for JSON data, not FormData or Blob");
|
|
176
|
+
if (this.#parsedBody instanceof ReadableStream) throw new Error("Schema validation is only supported for JSON data, not FormData, Blob, or ReadableStream");
|
|
177
|
+
const result = await this.#inputSchema["~standard"].validate(this.#parsedBody);
|
|
178
|
+
if (result.issues) throw new FragnoApiValidationError("Validation failed", result.issues);
|
|
179
|
+
return result.value;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
//#endregion
|
|
184
|
+
export { RequestInputContext };
|
|
185
|
+
//# sourceMappingURL=request-input-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-input-context.js","names":["FragnoApiValidationError","RequestInputContext","path","method","pathParams","searchParams","headers","body","parsedBody","inputSchema","shouldValidateInput","constructor","config","rawBody","fromRequest","state","fromSSRContext","URLSearchParams","Headers","query","formData","FormData","Error","isFormData","bodyStream","ReadableStream","isBodyStream","input","schema","valid","validateInput","#validateInput","Blob","result","validate","issues","value"],"sources":["../../../../../../../../fragno/dist/api/request-input-context.js"],"sourcesContent":["import { FragnoApiValidationError } from \"./error.js\";\n\n//#region src/api/request-input-context.ts\nvar RequestInputContext = class RequestInputContext {\n\t#path;\n\t#method;\n\t#pathParams;\n\t#searchParams;\n\t#headers;\n\t#body;\n\t#parsedBody;\n\t#inputSchema;\n\t#shouldValidateInput;\n\tconstructor(config) {\n\t\tthis.#path = config.path;\n\t\tthis.#method = config.method;\n\t\tthis.#pathParams = config.pathParams;\n\t\tthis.#searchParams = config.searchParams;\n\t\tthis.#headers = config.headers;\n\t\tthis.#body = config.rawBody;\n\t\tthis.#parsedBody = config.parsedBody;\n\t\tthis.#inputSchema = config.inputSchema;\n\t\tthis.#shouldValidateInput = config.shouldValidateInput ?? true;\n\t}\n\t/**\n\t* Create a RequestContext from a Request object for server-side handling\n\t*/\n\tstatic async fromRequest(config) {\n\t\treturn new RequestInputContext({\n\t\t\tmethod: config.method,\n\t\t\tpath: config.path,\n\t\t\tpathParams: config.state.pathParams,\n\t\t\tsearchParams: config.state.searchParams,\n\t\t\theaders: config.state.headers,\n\t\t\tparsedBody: config.state.body,\n\t\t\trawBody: config.rawBody,\n\t\t\tinputSchema: config.inputSchema,\n\t\t\tshouldValidateInput: config.shouldValidateInput\n\t\t});\n\t}\n\t/**\n\t* Create a RequestContext for server-side rendering contexts (no Request object)\n\t*/\n\tstatic fromSSRContext(config) {\n\t\treturn new RequestInputContext({\n\t\t\tmethod: config.method,\n\t\t\tpath: config.path,\n\t\t\tpathParams: config.pathParams,\n\t\t\tsearchParams: config.searchParams ?? new URLSearchParams(),\n\t\t\theaders: config.headers ?? new Headers(),\n\t\t\tparsedBody: \"body\" in config ? config.body : void 0,\n\t\t\tinputSchema: \"inputSchema\" in config ? config.inputSchema : void 0,\n\t\t\tshouldValidateInput: false\n\t\t});\n\t}\n\t/**\n\t* The HTTP method as string (e.g., `GET`, `POST`)\n\t*/\n\tget method() {\n\t\treturn this.#method;\n\t}\n\t/**\n\t* The matched route path (e.g., `/users/:id`)\n\t* @remarks `string`\n\t*/\n\tget path() {\n\t\treturn this.#path;\n\t}\n\t/**\n\t* Extracted path parameters as object (e.g., `{ id: '123' }`)\n\t* @remarks `Record<string, string>`\n\t*/\n\tget pathParams() {\n\t\treturn this.#pathParams;\n\t}\n\t/**\n\t* [URLSearchParams](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) object for query parameters\n\t* @remarks `URLSearchParams`\n\t*/\n\tget query() {\n\t\treturn this.#searchParams;\n\t}\n\t/**\n\t* [Headers](https://developer.mozilla.org/en-US/docs/Web/API/Headers) object for request headers\n\t* @remarks `Headers`\n\t*/\n\tget headers() {\n\t\treturn this.#headers;\n\t}\n\tget rawBody() {\n\t\treturn this.#body;\n\t}\n\t/**\n\t* Access the request body as FormData.\n\t*\n\t* Use this method when handling file uploads or multipart form submissions.\n\t* The request must have been sent with Content-Type: multipart/form-data.\n\t*\n\t* @throws Error if the request body is not FormData\n\t*\n\t* @example\n\t* ```typescript\n\t* defineRoute({\n\t* method: \"POST\",\n\t* path: \"/upload\",\n\t* async handler(ctx, res) {\n\t* const formData = ctx.formData();\n\t* const file = formData.get(\"file\") as File;\n\t* const description = formData.get(\"description\") as string;\n\t* // ... process file\n\t* }\n\t* });\n\t* ```\n\t*/\n\tformData() {\n\t\tif (!(this.#parsedBody instanceof FormData)) throw new Error(\"Request body is not FormData. Ensure the request was sent with Content-Type: multipart/form-data.\");\n\t\treturn this.#parsedBody;\n\t}\n\t/**\n\t* Check if the request body is FormData.\n\t*\n\t* Useful for routes that accept both JSON and FormData payloads.\n\t*\n\t* @example\n\t* ```typescript\n\t* defineRoute({\n\t* method: \"POST\",\n\t* path: \"/upload\",\n\t* async handler(ctx, res) {\n\t* if (ctx.isFormData()) {\n\t* const formData = ctx.formData();\n\t* // handle file upload\n\t* } else {\n\t* const json = await ctx.input.valid();\n\t* // handle JSON payload\n\t* }\n\t* }\n\t* });\n\t* ```\n\t*/\n\tisFormData() {\n\t\treturn this.#parsedBody instanceof FormData;\n\t}\n\t/**\n\t* Access the request body as a ReadableStream (application/octet-stream).\n\t*\n\t* @throws Error if the request body is not a ReadableStream\n\t*/\n\tbodyStream() {\n\t\tif (!(this.#parsedBody instanceof ReadableStream)) throw new Error(\"Request body is not a ReadableStream. Ensure the request was sent with Content-Type: application/octet-stream.\");\n\t\treturn this.#parsedBody;\n\t}\n\t/**\n\t* Check if the request body is a ReadableStream.\n\t*/\n\tisBodyStream() {\n\t\treturn this.#parsedBody instanceof ReadableStream;\n\t}\n\t/**\n\t* Input validation context (only if inputSchema is defined)\n\t* @remarks `InputContext`\n\t*/\n\tget input() {\n\t\tif (!this.#inputSchema) return;\n\t\treturn {\n\t\t\tschema: this.#inputSchema,\n\t\t\tvalid: async () => {\n\t\t\t\tif (!this.#shouldValidateInput) return this.#parsedBody;\n\t\t\t\treturn this.#validateInput();\n\t\t\t}\n\t\t};\n\t}\n\tasync #validateInput() {\n\t\tif (!this.#inputSchema) throw new Error(\"No input schema defined for this route\");\n\t\tif (this.#parsedBody instanceof FormData || this.#parsedBody instanceof Blob) throw new Error(\"Schema validation is only supported for JSON data, not FormData or Blob\");\n\t\tif (this.#parsedBody instanceof ReadableStream) throw new Error(\"Schema validation is only supported for JSON data, not FormData, Blob, or ReadableStream\");\n\t\tconst result = await this.#inputSchema[\"~standard\"].validate(this.#parsedBody);\n\t\tif (result.issues) throw new FragnoApiValidationError(\"Validation failed\", result.issues);\n\t\treturn result.value;\n\t}\n};\n\n//#endregion\nexport { RequestInputContext };\n//# sourceMappingURL=request-input-context.js.map"],"mappings":";;;AAGA,IAAIC,sBAAsB,MAAMA,sBAAoB;CACnD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACAU,YAAYC,QAAQ;AACnB,QAAK,OAAQA,OAAOV;AACpB,QAAK,SAAUU,OAAOT;AACtB,QAAK,aAAcS,OAAOR;AAC1B,QAAK,eAAgBQ,OAAOP;AAC5B,QAAK,UAAWO,OAAON;AACvB,QAAK,OAAQM,OAAOC;AACpB,QAAK,aAAcD,OAAOJ;AAC1B,QAAK,cAAeI,OAAOH;AAC3B,QAAK,sBAAuBG,OAAOF,uBAAuB;;;;;CAK3D,aAAaI,YAAYF,QAAQ;AAChC,SAAO,IAAIX,sBAAoB;GAC9BE,QAAQS,OAAOT;GACfD,MAAMU,OAAOV;GACbE,YAAYQ,OAAOG,MAAMX;GACzBC,cAAcO,OAAOG,MAAMV;GAC3BC,SAASM,OAAOG,MAAMT;GACtBE,YAAYI,OAAOG,MAAMR;GACzBM,SAASD,OAAOC;GAChBJ,aAAaG,OAAOH;GACpBC,qBAAqBE,OAAOF;GAC5B,CAAC;;;;;CAKH,OAAOM,eAAeJ,QAAQ;AAC7B,SAAO,IAAIX,sBAAoB;GAC9BE,QAAQS,OAAOT;GACfD,MAAMU,OAAOV;GACbE,YAAYQ,OAAOR;GACnBC,cAAcO,OAAOP,gBAAgB,IAAIY,iBAAiB;GAC1DX,SAASM,OAAON,WAAW,IAAIY,SAAS;GACxCV,YAAY,UAAUI,SAASA,OAAOL,OAAO,KAAK;GAClDE,aAAa,iBAAiBG,SAASA,OAAOH,cAAc,KAAK;GACjEC,qBAAqB;GACrB,CAAC;;;;;CAKH,IAAIP,SAAS;AACZ,SAAO,MAAK;;;;;;CAMb,IAAID,OAAO;AACV,SAAO,MAAK;;;;;;CAMb,IAAIE,aAAa;AAChB,SAAO,MAAK;;;;;;CAMb,IAAIe,QAAQ;AACX,SAAO,MAAK;;;;;;CAMb,IAAIb,UAAU;AACb,SAAO,MAAK;;CAEb,IAAIO,UAAU;AACb,SAAO,MAAK;;;;;;;;;;;;;;;;;;;;;;;;CAwBbO,WAAW;AACV,MAAI,EAAE,MAAK,sBAAuBC,UAAW,OAAM,IAAIC,MAAM,oGAAoG;AACjK,SAAO,MAAK;;;;;;;;;;;;;;;;;;;;;;;;CAwBbC,aAAa;AACZ,SAAO,MAAK,sBAAuBF;;;;;;;CAOpCG,aAAa;AACZ,MAAI,EAAE,MAAK,sBAAuBC,gBAAiB,OAAM,IAAIH,MAAM,iHAAiH;AACpL,SAAO,MAAK;;;;;CAKbI,eAAe;AACd,SAAO,MAAK,sBAAuBD;;;;;;CAMpC,IAAIE,QAAQ;AACX,MAAI,CAAC,MAAK,YAAc;AACxB,SAAO;GACNC,QAAQ,MAAK;GACbC,OAAO,YAAY;AAClB,QAAI,CAAC,MAAK,oBAAsB,QAAO,MAAK;AAC5C,WAAO,MAAK,eAAgB;;GAE7B;;CAEF,OAAM,gBAAiB;AACtB,MAAI,CAAC,MAAK,YAAc,OAAM,IAAIP,MAAM,yCAAyC;AACjF,MAAI,MAAK,sBAAuBD,YAAY,MAAK,sBAAuBW,KAAM,OAAM,IAAIV,MAAM,0EAA0E;AACxK,MAAI,MAAK,sBAAuBG,eAAgB,OAAM,IAAIH,MAAM,2FAA2F;EAC3J,MAAMW,SAAS,MAAM,MAAK,YAAa,aAAaC,SAAS,MAAK,WAAY;AAC9E,MAAID,OAAOE,OAAQ,OAAM,IAAInC,yBAAyB,qBAAqBiC,OAAOE,OAAO;AACzF,SAAOF,OAAOG"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { ResponseStream } from "./internal/response-stream.js";
|
|
2
|
+
|
|
3
|
+
//#region ../fragno/dist/api/request-output-context.js
|
|
4
|
+
/**
|
|
5
|
+
* Utility function to merge headers from multiple sources.
|
|
6
|
+
* Later headers override earlier ones.
|
|
7
|
+
*/
|
|
8
|
+
function mergeHeaders(...headerSources) {
|
|
9
|
+
const mergedHeaders = new Headers();
|
|
10
|
+
for (const headerSource of headerSources) {
|
|
11
|
+
if (!headerSource) continue;
|
|
12
|
+
if (headerSource instanceof Headers) for (const [key, value] of headerSource.entries()) mergedHeaders.set(key, value);
|
|
13
|
+
else if (Array.isArray(headerSource)) for (const [key, value] of headerSource) mergedHeaders.set(key, value);
|
|
14
|
+
else for (const [key, value] of Object.entries(headerSource)) mergedHeaders.set(key, value);
|
|
15
|
+
}
|
|
16
|
+
return mergedHeaders;
|
|
17
|
+
}
|
|
18
|
+
var OutputContext = class {
|
|
19
|
+
/**
|
|
20
|
+
* Creates an error response.
|
|
21
|
+
*
|
|
22
|
+
* Shortcut for `throw new FragnoApiError(...)`
|
|
23
|
+
*/
|
|
24
|
+
error = ({ message, code }, initOrStatus, headers) => {
|
|
25
|
+
if (typeof initOrStatus === "undefined") return Response.json({
|
|
26
|
+
message,
|
|
27
|
+
code
|
|
28
|
+
}, {
|
|
29
|
+
status: 500,
|
|
30
|
+
headers
|
|
31
|
+
});
|
|
32
|
+
if (typeof initOrStatus === "number") return Response.json({
|
|
33
|
+
message,
|
|
34
|
+
code
|
|
35
|
+
}, {
|
|
36
|
+
status: initOrStatus,
|
|
37
|
+
headers
|
|
38
|
+
});
|
|
39
|
+
const mergedHeaders = mergeHeaders(initOrStatus.headers, headers);
|
|
40
|
+
return Response.json({
|
|
41
|
+
message,
|
|
42
|
+
code
|
|
43
|
+
}, {
|
|
44
|
+
status: initOrStatus.status,
|
|
45
|
+
headers: mergedHeaders
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
empty = (initOrStatus, headers) => {
|
|
49
|
+
const defaultHeaders = {};
|
|
50
|
+
if (typeof initOrStatus === "undefined") {
|
|
51
|
+
const mergedHeaders$1 = mergeHeaders(defaultHeaders, headers);
|
|
52
|
+
return new Response(null, {
|
|
53
|
+
status: 201,
|
|
54
|
+
headers: mergedHeaders$1
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (typeof initOrStatus === "number") {
|
|
58
|
+
const mergedHeaders$1 = mergeHeaders(defaultHeaders, headers);
|
|
59
|
+
return new Response(null, {
|
|
60
|
+
status: initOrStatus,
|
|
61
|
+
headers: mergedHeaders$1
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const mergedHeaders = mergeHeaders(defaultHeaders, initOrStatus.headers, headers);
|
|
65
|
+
return new Response(null, {
|
|
66
|
+
status: initOrStatus.status,
|
|
67
|
+
headers: mergedHeaders
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
json = (object, initOrStatus, headers) => {
|
|
71
|
+
if (typeof initOrStatus === "undefined") return Response.json(object, {
|
|
72
|
+
status: 200,
|
|
73
|
+
headers
|
|
74
|
+
});
|
|
75
|
+
if (typeof initOrStatus === "number") return Response.json(object, {
|
|
76
|
+
status: initOrStatus,
|
|
77
|
+
headers
|
|
78
|
+
});
|
|
79
|
+
const mergedHeaders = mergeHeaders(initOrStatus.headers, headers);
|
|
80
|
+
return Response.json(object, {
|
|
81
|
+
status: initOrStatus.status,
|
|
82
|
+
headers: mergedHeaders
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
jsonStream = (cb, { onError, headers } = {}) => {
|
|
86
|
+
const defaultHeaders = {
|
|
87
|
+
"content-type": "application/x-ndjson; charset=utf-8",
|
|
88
|
+
"transfer-encoding": "chunked",
|
|
89
|
+
"cache-control": "no-cache"
|
|
90
|
+
};
|
|
91
|
+
const { readable, writable } = new TransformStream();
|
|
92
|
+
const stream = new ResponseStream(writable, readable);
|
|
93
|
+
(async () => {
|
|
94
|
+
try {
|
|
95
|
+
await cb(stream);
|
|
96
|
+
} catch (e) {
|
|
97
|
+
if (e === void 0) {} else if (e instanceof Error && onError) await onError(e, stream);
|
|
98
|
+
else console.error(e);
|
|
99
|
+
} finally {
|
|
100
|
+
stream.close();
|
|
101
|
+
}
|
|
102
|
+
})();
|
|
103
|
+
return new Response(stream.responseReadable, {
|
|
104
|
+
status: 200,
|
|
105
|
+
headers: mergeHeaders(defaultHeaders, headers)
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
var RequestOutputContext = class extends OutputContext {
|
|
110
|
+
#outputSchema;
|
|
111
|
+
constructor(outputSchema) {
|
|
112
|
+
super();
|
|
113
|
+
this.#outputSchema = outputSchema;
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
//#endregion
|
|
118
|
+
export { RequestOutputContext };
|
|
119
|
+
//# sourceMappingURL=request-output-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-output-context.js","names":["ResponseStream","mergeHeaders","headerSources","mergedHeaders","Headers","headerSource","key","value","entries","set","Array","isArray","Object","OutputContext","error","message","code","initOrStatus","headers","Response","json","status","empty","defaultHeaders","mergedHeaders$1","object","jsonStream","cb","onError","readable","writable","TransformStream","stream","e","Error","console","close","responseReadable","RequestOutputContext","outputSchema","constructor"],"sources":["../../../../../../../../fragno/dist/api/request-output-context.js"],"sourcesContent":["import { ResponseStream } from \"./internal/response-stream.js\";\n\n//#region src/api/request-output-context.ts\n/**\n* Utility function to merge headers from multiple sources.\n* Later headers override earlier ones.\n*/\nfunction mergeHeaders(...headerSources) {\n\tconst mergedHeaders = new Headers();\n\tfor (const headerSource of headerSources) {\n\t\tif (!headerSource) continue;\n\t\tif (headerSource instanceof Headers) for (const [key, value] of headerSource.entries()) mergedHeaders.set(key, value);\n\t\telse if (Array.isArray(headerSource)) for (const [key, value] of headerSource) mergedHeaders.set(key, value);\n\t\telse for (const [key, value] of Object.entries(headerSource)) mergedHeaders.set(key, value);\n\t}\n\treturn mergedHeaders;\n}\nvar OutputContext = class {\n\t/**\n\t* Creates an error response.\n\t*\n\t* Shortcut for `throw new FragnoApiError(...)`\n\t*/\n\terror = ({ message, code }, initOrStatus, headers) => {\n\t\tif (typeof initOrStatus === \"undefined\") return Response.json({\n\t\t\tmessage,\n\t\t\tcode\n\t\t}, {\n\t\t\tstatus: 500,\n\t\t\theaders\n\t\t});\n\t\tif (typeof initOrStatus === \"number\") return Response.json({\n\t\t\tmessage,\n\t\t\tcode\n\t\t}, {\n\t\t\tstatus: initOrStatus,\n\t\t\theaders\n\t\t});\n\t\tconst mergedHeaders = mergeHeaders(initOrStatus.headers, headers);\n\t\treturn Response.json({\n\t\t\tmessage,\n\t\t\tcode\n\t\t}, {\n\t\t\tstatus: initOrStatus.status,\n\t\t\theaders: mergedHeaders\n\t\t});\n\t};\n\tempty = (initOrStatus, headers) => {\n\t\tconst defaultHeaders = {};\n\t\tif (typeof initOrStatus === \"undefined\") {\n\t\t\tconst mergedHeaders$1 = mergeHeaders(defaultHeaders, headers);\n\t\t\treturn new Response(null, {\n\t\t\t\tstatus: 201,\n\t\t\t\theaders: mergedHeaders$1\n\t\t\t});\n\t\t}\n\t\tif (typeof initOrStatus === \"number\") {\n\t\t\tconst mergedHeaders$1 = mergeHeaders(defaultHeaders, headers);\n\t\t\treturn new Response(null, {\n\t\t\t\tstatus: initOrStatus,\n\t\t\t\theaders: mergedHeaders$1\n\t\t\t});\n\t\t}\n\t\tconst mergedHeaders = mergeHeaders(defaultHeaders, initOrStatus.headers, headers);\n\t\treturn new Response(null, {\n\t\t\tstatus: initOrStatus.status,\n\t\t\theaders: mergedHeaders\n\t\t});\n\t};\n\tjson = (object, initOrStatus, headers) => {\n\t\tif (typeof initOrStatus === \"undefined\") return Response.json(object, {\n\t\t\tstatus: 200,\n\t\t\theaders\n\t\t});\n\t\tif (typeof initOrStatus === \"number\") return Response.json(object, {\n\t\t\tstatus: initOrStatus,\n\t\t\theaders\n\t\t});\n\t\tconst mergedHeaders = mergeHeaders(initOrStatus.headers, headers);\n\t\treturn Response.json(object, {\n\t\t\tstatus: initOrStatus.status,\n\t\t\theaders: mergedHeaders\n\t\t});\n\t};\n\tjsonStream = (cb, { onError, headers } = {}) => {\n\t\tconst defaultHeaders = {\n\t\t\t\"content-type\": \"application/x-ndjson; charset=utf-8\",\n\t\t\t\"transfer-encoding\": \"chunked\",\n\t\t\t\"cache-control\": \"no-cache\"\n\t\t};\n\t\tconst { readable, writable } = new TransformStream();\n\t\tconst stream = new ResponseStream(writable, readable);\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tawait cb(stream);\n\t\t\t} catch (e) {\n\t\t\t\tif (e === void 0) {} else if (e instanceof Error && onError) await onError(e, stream);\n\t\t\t\telse console.error(e);\n\t\t\t} finally {\n\t\t\t\tstream.close();\n\t\t\t}\n\t\t})();\n\t\treturn new Response(stream.responseReadable, {\n\t\t\tstatus: 200,\n\t\t\theaders: mergeHeaders(defaultHeaders, headers)\n\t\t});\n\t};\n};\nvar RequestOutputContext = class extends OutputContext {\n\t#outputSchema;\n\tconstructor(outputSchema) {\n\t\tsuper();\n\t\tthis.#outputSchema = outputSchema;\n\t}\n};\n\n//#endregion\nexport { OutputContext, RequestOutputContext };\n//# sourceMappingURL=request-output-context.js.map"],"mappings":";;;;;;;AAOA,SAASC,aAAa,GAAGC,eAAe;CACvC,MAAMC,gBAAgB,IAAIC,SAAS;AACnC,MAAK,MAAMC,gBAAgBH,eAAe;AACzC,MAAI,CAACG,aAAc;AACnB,MAAIA,wBAAwBD,QAAS,MAAK,MAAM,CAACE,KAAKC,UAAUF,aAAaG,SAAS,CAAEL,eAAcM,IAAIH,KAAKC,MAAM;WAC5GG,MAAMC,QAAQN,aAAa,CAAE,MAAK,MAAM,CAACC,KAAKC,UAAUF,aAAcF,eAAcM,IAAIH,KAAKC,MAAM;MACvG,MAAK,MAAM,CAACD,KAAKC,UAAUK,OAAOJ,QAAQH,aAAa,CAAEF,eAAcM,IAAIH,KAAKC,MAAM;;AAE5F,QAAOJ;;AAER,IAAIU,gBAAgB,MAAM;;;;;;CAMzBC,SAAS,EAAEC,SAASC,QAAQC,cAAcC,YAAY;AACrD,MAAI,OAAOD,iBAAiB,YAAa,QAAOE,SAASC,KAAK;GAC7DL;GACAC;GACA,EAAE;GACFK,QAAQ;GACRH;GACA,CAAC;AACF,MAAI,OAAOD,iBAAiB,SAAU,QAAOE,SAASC,KAAK;GAC1DL;GACAC;GACA,EAAE;GACFK,QAAQJ;GACRC;GACA,CAAC;EACF,MAAMf,gBAAgBF,aAAagB,aAAaC,SAASA,QAAQ;AACjE,SAAOC,SAASC,KAAK;GACpBL;GACAC;GACA,EAAE;GACFK,QAAQJ,aAAaI;GACrBH,SAASf;GACT,CAAC;;CAEHmB,SAASL,cAAcC,YAAY;EAClC,MAAMK,iBAAiB,EAAE;AACzB,MAAI,OAAON,iBAAiB,aAAa;GACxC,MAAMO,kBAAkBvB,aAAasB,gBAAgBL,QAAQ;AAC7D,UAAO,IAAIC,SAAS,MAAM;IACzBE,QAAQ;IACRH,SAASM;IACT,CAAC;;AAEH,MAAI,OAAOP,iBAAiB,UAAU;GACrC,MAAMO,kBAAkBvB,aAAasB,gBAAgBL,QAAQ;AAC7D,UAAO,IAAIC,SAAS,MAAM;IACzBE,QAAQJ;IACRC,SAASM;IACT,CAAC;;EAEH,MAAMrB,gBAAgBF,aAAasB,gBAAgBN,aAAaC,SAASA,QAAQ;AACjF,SAAO,IAAIC,SAAS,MAAM;GACzBE,QAAQJ,aAAaI;GACrBH,SAASf;GACT,CAAC;;CAEHiB,QAAQK,QAAQR,cAAcC,YAAY;AACzC,MAAI,OAAOD,iBAAiB,YAAa,QAAOE,SAASC,KAAKK,QAAQ;GACrEJ,QAAQ;GACRH;GACA,CAAC;AACF,MAAI,OAAOD,iBAAiB,SAAU,QAAOE,SAASC,KAAKK,QAAQ;GAClEJ,QAAQJ;GACRC;GACA,CAAC;EACF,MAAMf,gBAAgBF,aAAagB,aAAaC,SAASA,QAAQ;AACjE,SAAOC,SAASC,KAAKK,QAAQ;GAC5BJ,QAAQJ,aAAaI;GACrBH,SAASf;GACT,CAAC;;CAEHuB,cAAcC,IAAI,EAAEC,SAASV,YAAY,EAAE,KAAK;EAC/C,MAAMK,iBAAiB;GACtB,gBAAgB;GAChB,qBAAqB;GACrB,iBAAiB;GACjB;EACD,MAAM,EAAEM,UAAUC,aAAa,IAAIC,iBAAiB;EACpD,MAAMC,SAAS,IAAIhC,eAAe8B,UAAUD,SAAS;AACrD,GAAC,YAAY;AACZ,OAAI;AACH,UAAMF,GAAGK,OAAO;YACRC,GAAG;AACX,QAAIA,MAAM,KAAK,GAAG,YAAYA,aAAaC,SAASN,QAAS,OAAMA,QAAQK,GAAGD,OAAO;QAChFG,SAAQrB,MAAMmB,EAAE;aACZ;AACTD,WAAOI,OAAO;;MAEZ;AACJ,SAAO,IAAIjB,SAASa,OAAOK,kBAAkB;GAC5ChB,QAAQ;GACRH,SAASjB,aAAasB,gBAAgBL,QAAO;GAC7C,CAAC;;;AAGJ,IAAIoB,uBAAuB,cAAczB,cAAc;CACtD;CACA2B,YAAYD,cAAc;AACzB,SAAO;AACP,QAAK,eAAgBA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//#region ../fragno/dist/api/route.js
|
|
2
|
+
/**
|
|
3
|
+
* Helper to resolve route factories into routes
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
function resolveRouteFactories(context, routesOrFactories) {
|
|
7
|
+
const routes = [];
|
|
8
|
+
for (const item of routesOrFactories) if (typeof item === "function") {
|
|
9
|
+
const factoryRoutes = item(context);
|
|
10
|
+
routes.push(...factoryRoutes);
|
|
11
|
+
} else routes.push(item);
|
|
12
|
+
return routes;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { resolveRouteFactories };
|
|
17
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","names":["resolveRouteFactories","context","routesOrFactories","routes","item","factoryRoutes","push","defineRoute","config","defineRoutes","_definition","create","fn","ctx"],"sources":["../../../../../../../../fragno/dist/api/route.js"],"sourcesContent":["//#region src/api/route.ts\n/**\n* Helper to resolve route factories into routes\n* @internal\n*/\nfunction resolveRouteFactories(context, routesOrFactories) {\n\tconst routes = [];\n\tfor (const item of routesOrFactories) if (typeof item === \"function\") {\n\t\tconst factoryRoutes = item(context);\n\t\troutes.push(...factoryRoutes);\n\t} else routes.push(item);\n\treturn routes;\n}\nfunction defineRoute(config) {\n\treturn config;\n}\nfunction defineRoutes(_definition) {\n\treturn { create: (fn) => {\n\t\treturn (ctx) => {\n\t\t\treturn fn({\n\t\t\t\t...ctx,\n\t\t\t\tdefineRoute\n\t\t\t});\n\t\t};\n\t} };\n}\n\n//#endregion\nexport { defineRoute, defineRoutes, resolveRouteFactories };\n//# sourceMappingURL=route.js.map"],"mappings":";;;;;AAKA,SAASA,sBAAsBC,SAASC,mBAAmB;CAC1D,MAAMC,SAAS,EAAE;AACjB,MAAK,MAAMC,QAAQF,kBAAmB,KAAI,OAAOE,SAAS,YAAY;EACrE,MAAMC,gBAAgBD,KAAKH,QAAQ;AACnCE,SAAOG,KAAK,GAAGD,cAAc;OACvBF,QAAOG,KAAKF,KAAK;AACxB,QAAOD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
//#region ../fragno/dist/client/client-error.js
|
|
2
|
+
/**
|
|
3
|
+
* Base error class for all Fragno client errors.
|
|
4
|
+
*/
|
|
5
|
+
var FragnoClientError = class extends Error {
|
|
6
|
+
#code;
|
|
7
|
+
constructor(message, code, options = {}) {
|
|
8
|
+
super(message, { cause: options.cause });
|
|
9
|
+
this.name = "FragnoClientError";
|
|
10
|
+
this.#code = code;
|
|
11
|
+
}
|
|
12
|
+
get code() {
|
|
13
|
+
return this.#code;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var FragnoClientFetchError = class extends FragnoClientError {
|
|
17
|
+
constructor(message, code, options = {}) {
|
|
18
|
+
super(message, code, options);
|
|
19
|
+
this.name = "FragnoClientFetchError";
|
|
20
|
+
}
|
|
21
|
+
static fromUnknownFetchError(error) {
|
|
22
|
+
if (!(error instanceof Error)) return new FragnoClientFetchNetworkError("Network request failed", { cause: error });
|
|
23
|
+
if (error.name === "AbortError") return new FragnoClientFetchAbortError("Request was aborted", { cause: error });
|
|
24
|
+
return new FragnoClientFetchNetworkError("Network request failed", { cause: error });
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Error thrown when a network request fails (e.g., no internet connection, DNS failure).
|
|
29
|
+
*/
|
|
30
|
+
var FragnoClientFetchNetworkError = class extends FragnoClientFetchError {
|
|
31
|
+
constructor(message = "Network request failed", options = {}) {
|
|
32
|
+
super(message, "NETWORK_ERROR", options);
|
|
33
|
+
this.name = "FragnoClientFetchNetworkError";
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Error thrown when a request is aborted (e.g., user cancels request, timeout).
|
|
38
|
+
*/
|
|
39
|
+
var FragnoClientFetchAbortError = class extends FragnoClientFetchError {
|
|
40
|
+
constructor(message = "Request was aborted", options = {}) {
|
|
41
|
+
super(message, "ABORT_ERROR", options);
|
|
42
|
+
this.name = "FragnoClientFetchAbortError";
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Error thrown when the API result is unexpected, e.g. no json is returned.
|
|
47
|
+
*/
|
|
48
|
+
var FragnoClientUnknownApiError = class extends FragnoClientError {
|
|
49
|
+
#status;
|
|
50
|
+
constructor(message = "Unknown API error", status, options = {}) {
|
|
51
|
+
super(message, "UNKNOWN_API_ERROR", options);
|
|
52
|
+
this.name = "FragnoClientUnknownApiError";
|
|
53
|
+
this.#status = status;
|
|
54
|
+
}
|
|
55
|
+
get status() {
|
|
56
|
+
return this.#status;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
var FragnoClientApiError = class FragnoClientApiError$1 extends FragnoClientError {
|
|
60
|
+
#status;
|
|
61
|
+
constructor({ message, code }, status, options = {}) {
|
|
62
|
+
super(message, code, options);
|
|
63
|
+
this.name = "FragnoClientApiError";
|
|
64
|
+
this.#status = status;
|
|
65
|
+
}
|
|
66
|
+
get status() {
|
|
67
|
+
return this.#status;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The error code returned by the API.
|
|
71
|
+
*
|
|
72
|
+
* The type is `TErrorCode` (the set of known error codes for this route), but may also be a string
|
|
73
|
+
* for forward compatibility with future error codes.
|
|
74
|
+
*/
|
|
75
|
+
get code() {
|
|
76
|
+
return super.code;
|
|
77
|
+
}
|
|
78
|
+
static async fromResponse(response) {
|
|
79
|
+
const unknown = await response.json();
|
|
80
|
+
const status = response.status;
|
|
81
|
+
if (!("message" in unknown || "code" in unknown)) return new FragnoClientUnknownApiError("Unknown API error", status);
|
|
82
|
+
if (!(typeof unknown.message === "string" && typeof unknown.code === "string")) return new FragnoClientUnknownApiError("Unknown API error", status);
|
|
83
|
+
return new FragnoClientApiError$1({
|
|
84
|
+
message: unknown.message,
|
|
85
|
+
code: unknown.code
|
|
86
|
+
}, status);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
//#endregion
|
|
91
|
+
export { FragnoClientApiError, FragnoClientError, FragnoClientFetchAbortError, FragnoClientFetchError, FragnoClientFetchNetworkError, FragnoClientUnknownApiError };
|
|
92
|
+
//# sourceMappingURL=client-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-error.js","names":["FragnoClientError","Error","code","constructor","message","options","cause","name","FragnoClientFetchError","fromUnknownFetchError","error","FragnoClientFetchNetworkError","FragnoClientFetchAbortError","FragnoClientUnknownApiError","status","FragnoClientApiError","fromResponse","response","unknown","json"],"sources":["../../../../../../../../fragno/dist/client/client-error.js"],"sourcesContent":["//#region src/client/client-error.ts\n/**\n* Base error class for all Fragno client errors.\n*/\nvar FragnoClientError = class extends Error {\n\t#code;\n\tconstructor(message, code, options = {}) {\n\t\tsuper(message, { cause: options.cause });\n\t\tthis.name = \"FragnoClientError\";\n\t\tthis.#code = code;\n\t}\n\tget code() {\n\t\treturn this.#code;\n\t}\n};\nvar FragnoClientFetchError = class extends FragnoClientError {\n\tconstructor(message, code, options = {}) {\n\t\tsuper(message, code, options);\n\t\tthis.name = \"FragnoClientFetchError\";\n\t}\n\tstatic fromUnknownFetchError(error) {\n\t\tif (!(error instanceof Error)) return new FragnoClientFetchNetworkError(\"Network request failed\", { cause: error });\n\t\tif (error.name === \"AbortError\") return new FragnoClientFetchAbortError(\"Request was aborted\", { cause: error });\n\t\treturn new FragnoClientFetchNetworkError(\"Network request failed\", { cause: error });\n\t}\n};\n/**\n* Error thrown when a network request fails (e.g., no internet connection, DNS failure).\n*/\nvar FragnoClientFetchNetworkError = class extends FragnoClientFetchError {\n\tconstructor(message = \"Network request failed\", options = {}) {\n\t\tsuper(message, \"NETWORK_ERROR\", options);\n\t\tthis.name = \"FragnoClientFetchNetworkError\";\n\t}\n};\n/**\n* Error thrown when a request is aborted (e.g., user cancels request, timeout).\n*/\nvar FragnoClientFetchAbortError = class extends FragnoClientFetchError {\n\tconstructor(message = \"Request was aborted\", options = {}) {\n\t\tsuper(message, \"ABORT_ERROR\", options);\n\t\tthis.name = \"FragnoClientFetchAbortError\";\n\t}\n};\n/**\n* Error thrown when the API result is unexpected, e.g. no json is returned.\n*/\nvar FragnoClientUnknownApiError = class extends FragnoClientError {\n\t#status;\n\tconstructor(message = \"Unknown API error\", status, options = {}) {\n\t\tsuper(message, \"UNKNOWN_API_ERROR\", options);\n\t\tthis.name = \"FragnoClientUnknownApiError\";\n\t\tthis.#status = status;\n\t}\n\tget status() {\n\t\treturn this.#status;\n\t}\n};\nvar FragnoClientApiError = class FragnoClientApiError extends FragnoClientError {\n\t#status;\n\tconstructor({ message, code }, status, options = {}) {\n\t\tsuper(message, code, options);\n\t\tthis.name = \"FragnoClientApiError\";\n\t\tthis.#status = status;\n\t}\n\tget status() {\n\t\treturn this.#status;\n\t}\n\t/**\n\t* The error code returned by the API.\n\t*\n\t* The type is `TErrorCode` (the set of known error codes for this route), but may also be a string\n\t* for forward compatibility with future error codes.\n\t*/\n\tget code() {\n\t\treturn super.code;\n\t}\n\tstatic async fromResponse(response) {\n\t\tconst unknown = await response.json();\n\t\tconst status = response.status;\n\t\tif (!(\"message\" in unknown || \"code\" in unknown)) return new FragnoClientUnknownApiError(\"Unknown API error\", status);\n\t\tif (!(typeof unknown.message === \"string\" && typeof unknown.code === \"string\")) return new FragnoClientUnknownApiError(\"Unknown API error\", status);\n\t\treturn new FragnoClientApiError({\n\t\t\tmessage: unknown.message,\n\t\t\tcode: unknown.code\n\t\t}, status);\n\t}\n};\n\n//#endregion\nexport { FragnoClientApiError, FragnoClientError, FragnoClientFetchAbortError, FragnoClientFetchError, FragnoClientFetchNetworkError, FragnoClientUnknownApiError };\n//# sourceMappingURL=client-error.js.map"],"mappings":";;;;AAIA,IAAIA,oBAAoB,cAAcC,MAAM;CAC3C;CACAE,YAAYC,SAASF,MAAMG,UAAU,EAAE,EAAE;AACxC,QAAMD,SAAS,EAAEE,OAAOD,QAAQC,OAAO,CAAC;AACxC,OAAKC,OAAO;AACZ,QAAK,OAAQL;;CAEd,IAAIA,OAAO;AACV,SAAO,MAAK;;;AAGd,IAAIM,yBAAyB,cAAcR,kBAAkB;CAC5DG,YAAYC,SAASF,MAAMG,UAAU,EAAE,EAAE;AACxC,QAAMD,SAASF,MAAMG,QAAQ;AAC7B,OAAKE,OAAO;;CAEb,OAAOE,sBAAsBC,OAAO;AACnC,MAAI,EAAEA,iBAAiBT,OAAQ,QAAO,IAAIU,8BAA8B,0BAA0B,EAAEL,OAAOI,OAAO,CAAC;AACnH,MAAIA,MAAMH,SAAS,aAAc,QAAO,IAAIK,4BAA4B,uBAAuB,EAAEN,OAAOI,OAAO,CAAC;AAChH,SAAO,IAAIC,8BAA8B,0BAA0B,EAAEL,OAAOI,OAAO,CAAC;;;;;;AAMtF,IAAIC,gCAAgC,cAAcH,uBAAuB;CACxEL,YAAYC,UAAU,0BAA0BC,UAAU,EAAE,EAAE;AAC7D,QAAMD,SAAS,iBAAiBC,QAAQ;AACxC,OAAKE,OAAO;;;;;;AAMd,IAAIK,8BAA8B,cAAcJ,uBAAuB;CACtEL,YAAYC,UAAU,uBAAuBC,UAAU,EAAE,EAAE;AAC1D,QAAMD,SAAS,eAAeC,QAAQ;AACtC,OAAKE,OAAO;;;;;;AAMd,IAAIM,8BAA8B,cAAcb,kBAAkB;CACjE;CACAG,YAAYC,UAAU,qBAAqBU,QAAQT,UAAU,EAAE,EAAE;AAChE,QAAMD,SAAS,qBAAqBC,QAAQ;AAC5C,OAAKE,OAAO;AACZ,QAAK,SAAUO;;CAEhB,IAAIA,SAAS;AACZ,SAAO,MAAK;;;AAGd,IAAIC,uBAAuB,MAAMA,+BAA6Bf,kBAAkB;CAC/E;CACAG,YAAY,EAAEC,SAASF,QAAQY,QAAQT,UAAU,EAAE,EAAE;AACpD,QAAMD,SAASF,MAAMG,QAAQ;AAC7B,OAAKE,OAAO;AACZ,QAAK,SAAUO;;CAEhB,IAAIA,SAAS;AACZ,SAAO,MAAK;;;;;;;;CAQb,IAAIZ,OAAO;AACV,SAAO,MAAMA;;CAEd,aAAac,aAAaC,UAAU;EACnC,MAAMC,UAAU,MAAMD,SAASE,MAAM;EACrC,MAAML,SAASG,SAASH;AACxB,MAAI,EAAE,aAAaI,WAAW,UAAUA,SAAU,QAAO,IAAIL,4BAA4B,qBAAqBC,OAAO;AACrH,MAAI,EAAE,OAAOI,QAAQd,YAAY,YAAY,OAAOc,QAAQhB,SAAS,UAAW,QAAO,IAAIW,4BAA4B,qBAAqBC,OAAO;AACnJ,SAAO,IAAIC,uBAAqB;GAC/BX,SAASc,QAAQd;GACjBF,MAAMgB,QAAQhB;GACd,EAAEY,OAAO"}
|