workerstack 0.1.0-beta.0
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/CHANGELOG.md +13 -0
- package/LICENSE +21 -0
- package/README.md +138 -0
- package/dist/access.d.ts +131 -0
- package/dist/access.d.ts.map +1 -0
- package/dist/access.js +333 -0
- package/dist/access.js.map +1 -0
- package/dist/api/builder.d.ts +457 -0
- package/dist/api/builder.d.ts.map +1 -0
- package/dist/api/builder.js +45 -0
- package/dist/api/builder.js.map +1 -0
- package/dist/api/catalog.d.ts +8 -0
- package/dist/api/catalog.d.ts.map +1 -0
- package/dist/api/catalog.js +56 -0
- package/dist/api/catalog.js.map +1 -0
- package/dist/api/context.d.ts +47 -0
- package/dist/api/context.d.ts.map +1 -0
- package/dist/api/context.js +40 -0
- package/dist/api/context.js.map +1 -0
- package/dist/api/crud-router.d.ts +476 -0
- package/dist/api/crud-router.d.ts.map +1 -0
- package/dist/api/crud-router.js +354 -0
- package/dist/api/crud-router.js.map +1 -0
- package/dist/api/list-input-schema.d.ts +37 -0
- package/dist/api/list-input-schema.d.ts.map +1 -0
- package/dist/api/list-input-schema.js +63 -0
- package/dist/api/list-input-schema.js.map +1 -0
- package/dist/api/list-spec.d.ts +44 -0
- package/dist/api/list-spec.d.ts.map +1 -0
- package/dist/api/list-spec.js +49 -0
- package/dist/api/list-spec.js.map +1 -0
- package/dist/api/live-view.d.ts +14 -0
- package/dist/api/live-view.d.ts.map +1 -0
- package/dist/api/live-view.js +42 -0
- package/dist/api/live-view.js.map +1 -0
- package/dist/api/live-window.d.ts +40 -0
- package/dist/api/live-window.d.ts.map +1 -0
- package/dist/api/live-window.js +93 -0
- package/dist/api/live-window.js.map +1 -0
- package/dist/api/openapi.d.ts +6 -0
- package/dist/api/openapi.d.ts.map +1 -0
- package/dist/api/openapi.js +146 -0
- package/dist/api/openapi.js.map +1 -0
- package/dist/api/realtime-router.d.ts +94 -0
- package/dist/api/realtime-router.d.ts.map +1 -0
- package/dist/api/realtime-router.js +45 -0
- package/dist/api/realtime-router.js.map +1 -0
- package/dist/api/registry.d.ts +30 -0
- package/dist/api/registry.d.ts.map +1 -0
- package/dist/api/registry.js +236 -0
- package/dist/api/registry.js.map +1 -0
- package/dist/api/router.d.ts +15 -0
- package/dist/api/router.d.ts.map +1 -0
- package/dist/api/router.js +32 -0
- package/dist/api/router.js.map +1 -0
- package/dist/api/storage-router.d.ts +349 -0
- package/dist/api/storage-router.d.ts.map +1 -0
- package/dist/api/storage-router.js +155 -0
- package/dist/api/storage-router.js.map +1 -0
- package/dist/api/types.d.ts +55 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/auth-password.d.ts +27 -0
- package/dist/auth-password.d.ts.map +1 -0
- package/dist/auth-password.js +60 -0
- package/dist/auth-password.js.map +1 -0
- package/dist/auth.d.ts +59 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +146 -0
- package/dist/auth.js.map +1 -0
- package/dist/backend-internals.d.ts +35 -0
- package/dist/backend-internals.d.ts.map +1 -0
- package/dist/backend-internals.js +2 -0
- package/dist/backend-internals.js.map +1 -0
- package/dist/backend.d.ts +63 -0
- package/dist/backend.d.ts.map +1 -0
- package/dist/backend.js +59 -0
- package/dist/backend.js.map +1 -0
- package/dist/blueprint-generator.d.ts +21 -0
- package/dist/blueprint-generator.d.ts.map +1 -0
- package/dist/blueprint-generator.js +199 -0
- package/dist/blueprint-generator.js.map +1 -0
- package/dist/blueprint.d.ts +99 -0
- package/dist/blueprint.d.ts.map +1 -0
- package/dist/blueprint.js +257 -0
- package/dist/blueprint.js.map +1 -0
- package/dist/cli-skills.d.ts +16 -0
- package/dist/cli-skills.d.ts.map +1 -0
- package/dist/cli-skills.js +108 -0
- package/dist/cli-skills.js.map +1 -0
- package/dist/cli.d.ts +18 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +205 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/client.d.ts +53 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +111 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +4 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/live-view.d.ts +49 -0
- package/dist/client/live-view.d.ts.map +1 -0
- package/dist/client/live-view.js +184 -0
- package/dist/client/live-view.js.map +1 -0
- package/dist/client/react.d.ts +4 -0
- package/dist/client/react.d.ts.map +1 -0
- package/dist/client/react.js +6 -0
- package/dist/client/react.js.map +1 -0
- package/dist/client/realtime.d.ts +54 -0
- package/dist/client/realtime.d.ts.map +1 -0
- package/dist/client/realtime.js +105 -0
- package/dist/client/realtime.js.map +1 -0
- package/dist/client/rest.d.ts +2 -0
- package/dist/client/rest.d.ts.map +1 -0
- package/dist/client/rest.js +2 -0
- package/dist/client/rest.js.map +1 -0
- package/dist/client/rpc-client.d.ts +38 -0
- package/dist/client/rpc-client.d.ts.map +1 -0
- package/dist/client/rpc-client.js +59 -0
- package/dist/client/rpc-client.js.map +1 -0
- package/dist/client/solid.d.ts +7 -0
- package/dist/client/solid.d.ts.map +1 -0
- package/dist/client/solid.js +21 -0
- package/dist/client/solid.js.map +1 -0
- package/dist/client/svelte.d.ts +6 -0
- package/dist/client/svelte.d.ts.map +1 -0
- package/dist/client/svelte.js +9 -0
- package/dist/client/svelte.js.map +1 -0
- package/dist/client/vue.d.ts +5 -0
- package/dist/client/vue.d.ts.map +1 -0
- package/dist/client/vue.js +11 -0
- package/dist/client/vue.js.map +1 -0
- package/dist/codegen.d.ts +36 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +235 -0
- package/dist/codegen.js.map +1 -0
- package/dist/config.d.ts +129 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +75 -0
- package/dist/config.js.map +1 -0
- package/dist/cron.d.ts +4 -0
- package/dist/cron.d.ts.map +1 -0
- package/dist/cron.js +3 -0
- package/dist/cron.js.map +1 -0
- package/dist/crud-operations.d.ts +43 -0
- package/dist/crud-operations.d.ts.map +1 -0
- package/dist/crud-operations.js +249 -0
- package/dist/crud-operations.js.map +1 -0
- package/dist/database/adapter.d.ts +26 -0
- package/dist/database/adapter.d.ts.map +1 -0
- package/dist/database/adapter.js +2 -0
- package/dist/database/adapter.js.map +1 -0
- package/dist/database/libsql.d.ts +3 -0
- package/dist/database/libsql.d.ts.map +1 -0
- package/dist/database/libsql.js +39 -0
- package/dist/database/libsql.js.map +1 -0
- package/dist/db.d.ts +15 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +8 -0
- package/dist/db.js.map +1 -0
- package/dist/dev/binaries.d.ts +22 -0
- package/dist/dev/binaries.d.ts.map +1 -0
- package/dist/dev/binaries.js +119 -0
- package/dist/dev/binaries.js.map +1 -0
- package/dist/dev/env.d.ts +11 -0
- package/dist/dev/env.d.ts.map +1 -0
- package/dist/dev/env.js +71 -0
- package/dist/dev/env.js.map +1 -0
- package/dist/dev/index.d.ts +39 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +273 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/dev/processes.d.ts +37 -0
- package/dist/dev/processes.d.ts.map +1 -0
- package/dist/dev/processes.js +104 -0
- package/dist/dev/processes.js.map +1 -0
- package/dist/dev/push.d.ts +2 -0
- package/dist/dev/push.d.ts.map +1 -0
- package/dist/dev/push.js +30 -0
- package/dist/dev/push.js.map +1 -0
- package/dist/dialect.d.ts +17 -0
- package/dist/dialect.d.ts.map +1 -0
- package/dist/dialect.js +12 -0
- package/dist/dialect.js.map +1 -0
- package/dist/email/smtp.d.ts +20 -0
- package/dist/email/smtp.d.ts.map +1 -0
- package/dist/email/smtp.js +31 -0
- package/dist/email/smtp.js.map +1 -0
- package/dist/email.d.ts +26 -0
- package/dist/email.d.ts.map +1 -0
- package/dist/email.js +2 -0
- package/dist/email.js.map +1 -0
- package/dist/env-probe.d.ts +9 -0
- package/dist/env-probe.d.ts.map +1 -0
- package/dist/env-probe.js +72 -0
- package/dist/env-probe.js.map +1 -0
- package/dist/env.d.ts +62 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +86 -0
- package/dist/env.js.map +1 -0
- package/dist/errors.d.ts +153 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +106 -0
- package/dist/errors.js.map +1 -0
- package/dist/handler.d.ts +11 -0
- package/dist/handler.d.ts.map +1 -0
- package/dist/handler.js +21 -0
- package/dist/handler.js.map +1 -0
- package/dist/hosted-contract.d.ts +11 -0
- package/dist/hosted-contract.d.ts.map +1 -0
- package/dist/hosted-contract.js +50 -0
- package/dist/hosted-contract.js.map +1 -0
- package/dist/idempotency.d.ts +17 -0
- package/dist/idempotency.d.ts.map +1 -0
- package/dist/idempotency.js +65 -0
- package/dist/idempotency.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/inspect.d.ts +15 -0
- package/dist/inspect.d.ts.map +1 -0
- package/dist/inspect.js +44 -0
- package/dist/inspect.js.map +1 -0
- package/dist/internal-tables.d.ts +1767 -0
- package/dist/internal-tables.d.ts.map +1 -0
- package/dist/internal-tables.js +114 -0
- package/dist/internal-tables.js.map +1 -0
- package/dist/jobs/cron.d.ts +15 -0
- package/dist/jobs/cron.d.ts.map +1 -0
- package/dist/jobs/cron.js +74 -0
- package/dist/jobs/cron.js.map +1 -0
- package/dist/jobs/define.d.ts +186 -0
- package/dist/jobs/define.d.ts.map +1 -0
- package/dist/jobs/define.js +99 -0
- package/dist/jobs/define.js.map +1 -0
- package/dist/jobs/index.d.ts +9 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +7 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/queue.d.ts +13 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +71 -0
- package/dist/jobs/queue.js.map +1 -0
- package/dist/jobs/slots.d.ts +30 -0
- package/dist/jobs/slots.d.ts.map +1 -0
- package/dist/jobs/slots.js +53 -0
- package/dist/jobs/slots.js.map +1 -0
- package/dist/jobs/worker.d.ts +45 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/jobs/worker.js +605 -0
- package/dist/jobs/worker.js.map +1 -0
- package/dist/lifecycle.d.ts +10 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +37 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/list-query.d.ts +62 -0
- package/dist/list-query.d.ts.map +1 -0
- package/dist/list-query.js +190 -0
- package/dist/list-query.js.map +1 -0
- package/dist/live/apply.d.ts +13 -0
- package/dist/live/apply.d.ts.map +1 -0
- package/dist/live/apply.js +32 -0
- package/dist/live/apply.js.map +1 -0
- package/dist/live/index.d.ts +48 -0
- package/dist/live/index.d.ts.map +1 -0
- package/dist/live/index.js +108 -0
- package/dist/live/index.js.map +1 -0
- package/dist/live/protocol.d.ts +47 -0
- package/dist/live/protocol.d.ts.map +1 -0
- package/dist/live/protocol.js +12 -0
- package/dist/live/protocol.js.map +1 -0
- package/dist/live/sse.d.ts +22 -0
- package/dist/live/sse.d.ts.map +1 -0
- package/dist/live/sse.js +41 -0
- package/dist/live/sse.js.map +1 -0
- package/dist/logging.d.ts +8 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +6 -0
- package/dist/logging.js.map +1 -0
- package/dist/manifest-diff.d.ts +6 -0
- package/dist/manifest-diff.d.ts.map +1 -0
- package/dist/manifest-diff.js +42 -0
- package/dist/manifest-diff.js.map +1 -0
- package/dist/manifest.d.ts +87 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +237 -0
- package/dist/manifest.js.map +1 -0
- package/dist/messaging/email.d.ts +16 -0
- package/dist/messaging/email.d.ts.map +1 -0
- package/dist/messaging/email.js +8 -0
- package/dist/messaging/email.js.map +1 -0
- package/dist/messaging/index.d.ts +8 -0
- package/dist/messaging/index.d.ts.map +1 -0
- package/dist/messaging/index.js +4 -0
- package/dist/messaging/index.js.map +1 -0
- package/dist/messaging/journal.d.ts +4 -0
- package/dist/messaging/journal.d.ts.map +1 -0
- package/dist/messaging/journal.js +19 -0
- package/dist/messaging/journal.js.map +1 -0
- package/dist/messaging/runtime.d.ts +16 -0
- package/dist/messaging/runtime.d.ts.map +1 -0
- package/dist/messaging/runtime.js +213 -0
- package/dist/messaging/runtime.js.map +1 -0
- package/dist/messaging/standalone.d.ts +27 -0
- package/dist/messaging/standalone.d.ts.map +1 -0
- package/dist/messaging/standalone.js +18 -0
- package/dist/messaging/standalone.js.map +1 -0
- package/dist/messaging/telegram.d.ts +16 -0
- package/dist/messaging/telegram.d.ts.map +1 -0
- package/dist/messaging/telegram.js +5 -0
- package/dist/messaging/telegram.js.map +1 -0
- package/dist/messaging/types.d.ts +22 -0
- package/dist/messaging/types.d.ts.map +1 -0
- package/dist/messaging/types.js +17 -0
- package/dist/messaging/types.js.map +1 -0
- package/dist/platform.d.ts +25 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +24 -0
- package/dist/platform.js.map +1 -0
- package/dist/provision-internals.d.ts +23 -0
- package/dist/provision-internals.d.ts.map +1 -0
- package/dist/provision-internals.js +7 -0
- package/dist/provision-internals.js.map +1 -0
- package/dist/provision-runtime.d.ts +6 -0
- package/dist/provision-runtime.d.ts.map +1 -0
- package/dist/provision-runtime.js +41 -0
- package/dist/provision-runtime.js.map +1 -0
- package/dist/provision-schema.d.ts +16 -0
- package/dist/provision-schema.d.ts.map +1 -0
- package/dist/provision-schema.js +59 -0
- package/dist/provision-schema.js.map +1 -0
- package/dist/provision.d.ts +8 -0
- package/dist/provision.d.ts.map +1 -0
- package/dist/provision.js +16 -0
- package/dist/provision.js.map +1 -0
- package/dist/query/api.d.ts +10 -0
- package/dist/query/api.d.ts.map +1 -0
- package/dist/query/api.js +7 -0
- package/dist/query/api.js.map +1 -0
- package/dist/query/client.d.ts +28 -0
- package/dist/query/client.d.ts.map +1 -0
- package/dist/query/client.js +87 -0
- package/dist/query/client.js.map +1 -0
- package/dist/query/fetch.d.ts +3 -0
- package/dist/query/fetch.d.ts.map +1 -0
- package/dist/query/fetch.js +4 -0
- package/dist/query/fetch.js.map +1 -0
- package/dist/query/index.d.ts +8 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +4 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/infer.d.ts +25 -0
- package/dist/query/infer.d.ts.map +1 -0
- package/dist/query/infer.js +2 -0
- package/dist/query/infer.js.map +1 -0
- package/dist/query/react.d.ts +3 -0
- package/dist/query/react.d.ts.map +1 -0
- package/dist/query/react.js +2 -0
- package/dist/query/react.js.map +1 -0
- package/dist/query/realtime-flush.d.ts +26 -0
- package/dist/query/realtime-flush.d.ts.map +1 -0
- package/dist/query/realtime-flush.js +45 -0
- package/dist/query/realtime-flush.js.map +1 -0
- package/dist/query/realtime-stream.d.ts +3 -0
- package/dist/query/realtime-stream.d.ts.map +1 -0
- package/dist/query/realtime-stream.js +3 -0
- package/dist/query/realtime-stream.js.map +1 -0
- package/dist/query/realtime.d.ts +88 -0
- package/dist/query/realtime.d.ts.map +1 -0
- package/dist/query/realtime.js +255 -0
- package/dist/query/realtime.js.map +1 -0
- package/dist/rate-limit.d.ts +8 -0
- package/dist/rate-limit.d.ts.map +1 -0
- package/dist/rate-limit.js +46 -0
- package/dist/rate-limit.js.map +1 -0
- package/dist/readiness-probes.d.ts +4 -0
- package/dist/readiness-probes.d.ts.map +1 -0
- package/dist/readiness-probes.js +23 -0
- package/dist/readiness-probes.js.map +1 -0
- package/dist/readiness.d.ts +39 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +72 -0
- package/dist/readiness.js.map +1 -0
- package/dist/realtime/facade.d.ts +20 -0
- package/dist/realtime/facade.d.ts.map +1 -0
- package/dist/realtime/facade.js +37 -0
- package/dist/realtime/facade.js.map +1 -0
- package/dist/realtime/filter.d.ts +42 -0
- package/dist/realtime/filter.d.ts.map +1 -0
- package/dist/realtime/filter.js +86 -0
- package/dist/realtime/filter.js.map +1 -0
- package/dist/realtime/heartbeat.d.ts +20 -0
- package/dist/realtime/heartbeat.d.ts.map +1 -0
- package/dist/realtime/heartbeat.js +64 -0
- package/dist/realtime/heartbeat.js.map +1 -0
- package/dist/realtime/publisher.d.ts +19 -0
- package/dist/realtime/publisher.d.ts.map +1 -0
- package/dist/realtime/publisher.js +8 -0
- package/dist/realtime/publisher.js.map +1 -0
- package/dist/runtime.d.ts +141 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +463 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema-export.d.ts +2 -0
- package/dist/schema-export.d.ts.map +1 -0
- package/dist/schema-export.js +2 -0
- package/dist/schema-export.js.map +1 -0
- package/dist/scope.d.ts +4 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +13 -0
- package/dist/scope.js.map +1 -0
- package/dist/standard-schema.d.ts +13 -0
- package/dist/standard-schema.d.ts.map +1 -0
- package/dist/standard-schema.js +34 -0
- package/dist/standard-schema.js.map +1 -0
- package/dist/start/auth-client.d.ts +11 -0
- package/dist/start/auth-client.d.ts.map +1 -0
- package/dist/start/auth-client.js +15 -0
- package/dist/start/auth-client.js.map +1 -0
- package/dist/start/create-start-worker.d.ts +16 -0
- package/dist/start/create-start-worker.d.ts.map +1 -0
- package/dist/start/create-start-worker.js +24 -0
- package/dist/start/create-start-worker.js.map +1 -0
- package/dist/start/index.d.ts +66 -0
- package/dist/start/index.d.ts.map +1 -0
- package/dist/start/index.js +49 -0
- package/dist/start/index.js.map +1 -0
- package/dist/start/isomorphic-fetch.d.ts +22 -0
- package/dist/start/isomorphic-fetch.d.ts.map +1 -0
- package/dist/start/isomorphic-fetch.js +49 -0
- package/dist/start/isomorphic-fetch.js.map +1 -0
- package/dist/start/server-entry.d.ts +7 -0
- package/dist/start/server-entry.d.ts.map +1 -0
- package/dist/start/server-entry.js +8 -0
- package/dist/start/server-entry.js.map +1 -0
- package/dist/storage/background.d.ts +3 -0
- package/dist/storage/background.d.ts.map +1 -0
- package/dist/storage/background.js +3 -0
- package/dist/storage/background.js.map +1 -0
- package/dist/storage/buckets.d.ts +78 -0
- package/dist/storage/buckets.d.ts.map +1 -0
- package/dist/storage/buckets.js +177 -0
- package/dist/storage/buckets.js.map +1 -0
- package/dist/storage/delete.d.ts +8 -0
- package/dist/storage/delete.d.ts.map +1 -0
- package/dist/storage/delete.js +10 -0
- package/dist/storage/delete.js.map +1 -0
- package/dist/storage/file-meta.d.ts +37 -0
- package/dist/storage/file-meta.d.ts.map +1 -0
- package/dist/storage/file-meta.js +166 -0
- package/dist/storage/file-meta.js.map +1 -0
- package/dist/storage/index.d.ts +28 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +5 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/local.d.ts +15 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +56 -0
- package/dist/storage/local.js.map +1 -0
- package/dist/storage/operations.d.ts +54 -0
- package/dist/storage/operations.d.ts.map +1 -0
- package/dist/storage/operations.js +212 -0
- package/dist/storage/operations.js.map +1 -0
- package/dist/storage/registry.d.ts +11 -0
- package/dist/storage/registry.d.ts.map +1 -0
- package/dist/storage/registry.js +23 -0
- package/dist/storage/registry.js.map +1 -0
- package/dist/storage/s3.d.ts +35 -0
- package/dist/storage/s3.d.ts.map +1 -0
- package/dist/storage/s3.js +125 -0
- package/dist/storage/s3.js.map +1 -0
- package/dist/storage/sigv4.d.ts +24 -0
- package/dist/storage/sigv4.d.ts.map +1 -0
- package/dist/storage/sigv4.js +107 -0
- package/dist/storage/sigv4.js.map +1 -0
- package/dist/storage/sweep.d.ts +9 -0
- package/dist/storage/sweep.d.ts.map +1 -0
- package/dist/storage/sweep.js +17 -0
- package/dist/storage/sweep.js.map +1 -0
- package/dist/sync/collection.d.ts +106 -0
- package/dist/sync/collection.d.ts.map +1 -0
- package/dist/sync/collection.js +258 -0
- package/dist/sync/collection.js.map +1 -0
- package/dist/sync/index.d.ts +8 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +4 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/realtime-sync.d.ts +31 -0
- package/dist/sync/realtime-sync.d.ts.map +1 -0
- package/dist/sync/realtime-sync.js +46 -0
- package/dist/sync/realtime-sync.js.map +1 -0
- package/dist/sync/sync-client.d.ts +28 -0
- package/dist/sync/sync-client.d.ts.map +1 -0
- package/dist/sync/sync-client.js +52 -0
- package/dist/sync/sync-client.js.map +1 -0
- package/dist/sync/update-queue.d.ts +27 -0
- package/dist/sync/update-queue.d.ts.map +1 -0
- package/dist/sync/update-queue.js +66 -0
- package/dist/sync/update-queue.js.map +1 -0
- package/dist/testing/auth.d.ts +85 -0
- package/dist/testing/auth.d.ts.map +1 -0
- package/dist/testing/auth.js +140 -0
- package/dist/testing/auth.js.map +1 -0
- package/dist/testing/client.d.ts +6 -0
- package/dist/testing/client.d.ts.map +1 -0
- package/dist/testing/client.js +9 -0
- package/dist/testing/client.js.map +1 -0
- package/dist/testing/database.d.ts +6 -0
- package/dist/testing/database.d.ts.map +1 -0
- package/dist/testing/database.js +8 -0
- package/dist/testing/database.js.map +1 -0
- package/dist/testing/email.d.ts +15 -0
- package/dist/testing/email.d.ts.map +1 -0
- package/dist/testing/email.js +32 -0
- package/dist/testing/email.js.map +1 -0
- package/dist/testing/fixture.d.ts +51 -0
- package/dist/testing/fixture.d.ts.map +1 -0
- package/dist/testing/fixture.js +177 -0
- package/dist/testing/fixture.js.map +1 -0
- package/dist/testing/jobs.d.ts +40 -0
- package/dist/testing/jobs.d.ts.map +1 -0
- package/dist/testing/jobs.js +76 -0
- package/dist/testing/jobs.js.map +1 -0
- package/dist/testing/logs.d.ts +18 -0
- package/dist/testing/logs.d.ts.map +1 -0
- package/dist/testing/logs.js +53 -0
- package/dist/testing/logs.js.map +1 -0
- package/dist/testing/messaging.d.ts +21 -0
- package/dist/testing/messaging.d.ts.map +1 -0
- package/dist/testing/messaging.js +34 -0
- package/dist/testing/messaging.js.map +1 -0
- package/dist/testing/storage.d.ts +7 -0
- package/dist/testing/storage.d.ts.map +1 -0
- package/dist/testing/storage.js +29 -0
- package/dist/testing/storage.js.map +1 -0
- package/dist/testing/workers-fakes.d.ts +17 -0
- package/dist/testing/workers-fakes.d.ts.map +1 -0
- package/dist/testing/workers-fakes.js +98 -0
- package/dist/testing/workers-fakes.js.map +1 -0
- package/dist/testing.d.ts +12 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +5 -0
- package/dist/testing.js.map +1 -0
- package/dist/typeid.d.ts +46 -0
- package/dist/typeid.d.ts.map +1 -0
- package/dist/typeid.js +130 -0
- package/dist/typeid.js.map +1 -0
- package/dist/vite.d.ts +26 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +100 -0
- package/dist/vite.js.map +1 -0
- package/dist/worker-plan.d.ts +37 -0
- package/dist/worker-plan.d.ts.map +1 -0
- package/dist/worker-plan.js +63 -0
- package/dist/worker-plan.js.map +1 -0
- package/dist/workers/app.d.ts +19 -0
- package/dist/workers/app.d.ts.map +1 -0
- package/dist/workers/app.js +56 -0
- package/dist/workers/app.js.map +1 -0
- package/dist/workers/entry.d.ts +7 -0
- package/dist/workers/entry.d.ts.map +1 -0
- package/dist/workers/entry.js +8 -0
- package/dist/workers/entry.js.map +1 -0
- package/dist/workers/index.d.ts +23 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +39 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/r2.d.ts +24 -0
- package/dist/workers/r2.d.ts.map +1 -0
- package/dist/workers/r2.js +76 -0
- package/dist/workers/r2.js.map +1 -0
- package/dist/workers/rate-limiter.d.ts +9 -0
- package/dist/workers/rate-limiter.d.ts.map +1 -0
- package/dist/workers/rate-limiter.js +22 -0
- package/dist/workers/rate-limiter.js.map +1 -0
- package/dist/workers/realtime-hub.d.ts +20 -0
- package/dist/workers/realtime-hub.d.ts.map +1 -0
- package/dist/workers/realtime-hub.js +117 -0
- package/dist/workers/realtime-hub.js.map +1 -0
- package/dist/workers/registry.d.ts +13 -0
- package/dist/workers/registry.d.ts.map +1 -0
- package/dist/workers/registry.js +19 -0
- package/dist/workers/registry.js.map +1 -0
- package/dist/workers/scheduler.d.ts +13 -0
- package/dist/workers/scheduler.d.ts.map +1 -0
- package/dist/workers/scheduler.js +71 -0
- package/dist/workers/scheduler.js.map +1 -0
- package/dist/workers/types.d.ts +55 -0
- package/dist/workers/types.d.ts.map +1 -0
- package/dist/workers/types.js +4 -0
- package/dist/workers/types.js.map +1 -0
- package/dist/workers/wrangler.d.ts +62 -0
- package/dist/workers/wrangler.d.ts.map +1 -0
- package/dist/workers/wrangler.js +90 -0
- package/dist/workers/wrangler.js.map +1 -0
- package/package.json +286 -0
- package/skills/creating-workerstack-apps/SKILL.md +45 -0
- package/skills/creating-workerstack-apps/agents/openai.yaml +4 -0
- package/skills/creating-workerstack-apps/references/application-structure.md +219 -0
- package/skills/creating-workerstack-apps/references/runtime-integrations.md +96 -0
- package/skills/creating-workerstack-apps/references/verification.md +29 -0
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import '@orpc/openapi/extensions/route';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
import type { StorageOperations } from '../storage/operations.js';
|
|
4
|
+
import type { BucketStorageRegistry } from '../storage/registry.js';
|
|
5
|
+
import type { ApiContext } from './context.js';
|
|
6
|
+
export declare function buildStorageApiRouter(registry: BucketStorageRegistry, operations: StorageOperations): {
|
|
7
|
+
files: {
|
|
8
|
+
[k: string]: {
|
|
9
|
+
prepareUpload: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.StrictObjectSchema<{
|
|
10
|
+
readonly filename: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
11
|
+
readonly contentType: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
12
|
+
}, undefined>, v.VariantSchema<"mode", [v.StrictObjectSchema<{
|
|
13
|
+
readonly mode: v.LiteralSchema<"proxy", undefined>;
|
|
14
|
+
readonly uploadUrl: v.StringSchema<undefined>;
|
|
15
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
16
|
+
readonly mode: v.LiteralSchema<"presign", undefined>;
|
|
17
|
+
readonly fileId: v.StringSchema<undefined>;
|
|
18
|
+
readonly uploadUrl: v.StringSchema<undefined>;
|
|
19
|
+
readonly method: v.LiteralSchema<"PUT", undefined>;
|
|
20
|
+
readonly confirmUrl: v.StringSchema<undefined>;
|
|
21
|
+
}, undefined>], undefined>, {
|
|
22
|
+
readonly BAD_REQUEST: {
|
|
23
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
24
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
25
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
26
|
+
}, undefined>, {
|
|
27
|
+
readonly code: "BAD_REQUEST";
|
|
28
|
+
}>;
|
|
29
|
+
};
|
|
30
|
+
readonly UNAUTHORIZED: {
|
|
31
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
32
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
33
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
34
|
+
}, undefined>, {
|
|
35
|
+
readonly code: "UNAUTHORIZED";
|
|
36
|
+
}>;
|
|
37
|
+
};
|
|
38
|
+
readonly FORBIDDEN: {
|
|
39
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
40
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
41
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
42
|
+
}, undefined>, {
|
|
43
|
+
readonly code: "FORBIDDEN";
|
|
44
|
+
}>;
|
|
45
|
+
};
|
|
46
|
+
readonly NOT_FOUND: {
|
|
47
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
48
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
49
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
50
|
+
}, undefined>, {
|
|
51
|
+
readonly code: "NOT_FOUND";
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
54
|
+
readonly CONFLICT: {
|
|
55
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
56
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
57
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
58
|
+
}, undefined>, {
|
|
59
|
+
readonly code: "CONFLICT";
|
|
60
|
+
}>;
|
|
61
|
+
};
|
|
62
|
+
readonly PAYLOAD_TOO_LARGE: {
|
|
63
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
64
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
65
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
66
|
+
}, undefined>, {
|
|
67
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
68
|
+
}>;
|
|
69
|
+
};
|
|
70
|
+
readonly TOO_MANY_REQUESTS: {
|
|
71
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
72
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
73
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
74
|
+
}, undefined>, {
|
|
75
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
76
|
+
}>;
|
|
77
|
+
};
|
|
78
|
+
}>;
|
|
79
|
+
upload: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.StrictObjectSchema<{
|
|
80
|
+
readonly params: v.OptionalSchema<v.StrictObjectSchema<{}, undefined>, {}>;
|
|
81
|
+
readonly query: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, {}>;
|
|
82
|
+
readonly headers: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, {}>;
|
|
83
|
+
readonly body: v.StrictObjectSchema<{
|
|
84
|
+
readonly file: v.FileSchema<undefined>;
|
|
85
|
+
}, undefined>;
|
|
86
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
87
|
+
readonly status: v.LiteralSchema<201, undefined>;
|
|
88
|
+
readonly body: v.StrictObjectSchema<{
|
|
89
|
+
readonly fileId: v.StringSchema<undefined>;
|
|
90
|
+
readonly url: v.StringSchema<undefined>;
|
|
91
|
+
}, undefined>;
|
|
92
|
+
}, undefined>, {
|
|
93
|
+
readonly BAD_REQUEST: {
|
|
94
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
95
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
96
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
97
|
+
}, undefined>, {
|
|
98
|
+
readonly code: "BAD_REQUEST";
|
|
99
|
+
}>;
|
|
100
|
+
};
|
|
101
|
+
readonly UNAUTHORIZED: {
|
|
102
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
103
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
104
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
105
|
+
}, undefined>, {
|
|
106
|
+
readonly code: "UNAUTHORIZED";
|
|
107
|
+
}>;
|
|
108
|
+
};
|
|
109
|
+
readonly FORBIDDEN: {
|
|
110
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
111
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
112
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
113
|
+
}, undefined>, {
|
|
114
|
+
readonly code: "FORBIDDEN";
|
|
115
|
+
}>;
|
|
116
|
+
};
|
|
117
|
+
readonly NOT_FOUND: {
|
|
118
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
119
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
120
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
121
|
+
}, undefined>, {
|
|
122
|
+
readonly code: "NOT_FOUND";
|
|
123
|
+
}>;
|
|
124
|
+
};
|
|
125
|
+
readonly CONFLICT: {
|
|
126
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
127
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
128
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
129
|
+
}, undefined>, {
|
|
130
|
+
readonly code: "CONFLICT";
|
|
131
|
+
}>;
|
|
132
|
+
};
|
|
133
|
+
readonly PAYLOAD_TOO_LARGE: {
|
|
134
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
135
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
136
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
137
|
+
}, undefined>, {
|
|
138
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
139
|
+
}>;
|
|
140
|
+
};
|
|
141
|
+
readonly TOO_MANY_REQUESTS: {
|
|
142
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
143
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
144
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
145
|
+
}, undefined>, {
|
|
146
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
147
|
+
}>;
|
|
148
|
+
};
|
|
149
|
+
}>;
|
|
150
|
+
confirmUpload: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.StrictObjectSchema<{
|
|
151
|
+
readonly id: v.StringSchema<undefined>;
|
|
152
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
153
|
+
readonly fileId: v.StringSchema<undefined>;
|
|
154
|
+
readonly url: v.StringSchema<undefined>;
|
|
155
|
+
}, undefined>, {
|
|
156
|
+
readonly BAD_REQUEST: {
|
|
157
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
158
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
159
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
160
|
+
}, undefined>, {
|
|
161
|
+
readonly code: "BAD_REQUEST";
|
|
162
|
+
}>;
|
|
163
|
+
};
|
|
164
|
+
readonly UNAUTHORIZED: {
|
|
165
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
166
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
167
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
168
|
+
}, undefined>, {
|
|
169
|
+
readonly code: "UNAUTHORIZED";
|
|
170
|
+
}>;
|
|
171
|
+
};
|
|
172
|
+
readonly FORBIDDEN: {
|
|
173
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
174
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
175
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
176
|
+
}, undefined>, {
|
|
177
|
+
readonly code: "FORBIDDEN";
|
|
178
|
+
}>;
|
|
179
|
+
};
|
|
180
|
+
readonly NOT_FOUND: {
|
|
181
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
182
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
183
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
184
|
+
}, undefined>, {
|
|
185
|
+
readonly code: "NOT_FOUND";
|
|
186
|
+
}>;
|
|
187
|
+
};
|
|
188
|
+
readonly CONFLICT: {
|
|
189
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
190
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
191
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
192
|
+
}, undefined>, {
|
|
193
|
+
readonly code: "CONFLICT";
|
|
194
|
+
}>;
|
|
195
|
+
};
|
|
196
|
+
readonly PAYLOAD_TOO_LARGE: {
|
|
197
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
198
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
199
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
200
|
+
}, undefined>, {
|
|
201
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
202
|
+
}>;
|
|
203
|
+
};
|
|
204
|
+
readonly TOO_MANY_REQUESTS: {
|
|
205
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
206
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
207
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
208
|
+
}, undefined>, {
|
|
209
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
210
|
+
}>;
|
|
211
|
+
};
|
|
212
|
+
}>;
|
|
213
|
+
download: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.StrictObjectSchema<{
|
|
214
|
+
readonly params: v.StrictObjectSchema<{
|
|
215
|
+
readonly path: v.StringSchema<undefined>;
|
|
216
|
+
}, undefined>;
|
|
217
|
+
readonly query: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, {}>;
|
|
218
|
+
readonly headers: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, {}>;
|
|
219
|
+
readonly body: v.OptionalSchema<v.UndefinedSchema<undefined>, undefined>;
|
|
220
|
+
}, undefined>, v.UnionSchema<[v.StrictObjectSchema<{
|
|
221
|
+
readonly status: v.LiteralSchema<200, undefined>;
|
|
222
|
+
readonly headers: v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>, v.UndefinedSchema<undefined>], undefined>, undefined>;
|
|
223
|
+
readonly body: v.UnknownSchema;
|
|
224
|
+
}, undefined>, v.StrictObjectSchema<{
|
|
225
|
+
readonly status: v.LiteralSchema<302, undefined>;
|
|
226
|
+
readonly headers: v.RecordSchema<v.StringSchema<undefined>, v.UnionSchema<[v.StringSchema<undefined>, v.ArraySchema<v.StringSchema<undefined>, undefined>, v.UndefinedSchema<undefined>], undefined>, undefined>;
|
|
227
|
+
readonly body: v.OptionalSchema<v.UndefinedSchema<undefined>, undefined>;
|
|
228
|
+
}, undefined>], undefined>, {
|
|
229
|
+
readonly BAD_REQUEST: {
|
|
230
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
231
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
232
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
233
|
+
}, undefined>, {
|
|
234
|
+
readonly code: "BAD_REQUEST";
|
|
235
|
+
}>;
|
|
236
|
+
};
|
|
237
|
+
readonly UNAUTHORIZED: {
|
|
238
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
239
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
240
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
241
|
+
}, undefined>, {
|
|
242
|
+
readonly code: "UNAUTHORIZED";
|
|
243
|
+
}>;
|
|
244
|
+
};
|
|
245
|
+
readonly FORBIDDEN: {
|
|
246
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
247
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
248
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
249
|
+
}, undefined>, {
|
|
250
|
+
readonly code: "FORBIDDEN";
|
|
251
|
+
}>;
|
|
252
|
+
};
|
|
253
|
+
readonly NOT_FOUND: {
|
|
254
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
255
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
256
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
257
|
+
}, undefined>, {
|
|
258
|
+
readonly code: "NOT_FOUND";
|
|
259
|
+
}>;
|
|
260
|
+
};
|
|
261
|
+
readonly CONFLICT: {
|
|
262
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
263
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
264
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
265
|
+
}, undefined>, {
|
|
266
|
+
readonly code: "CONFLICT";
|
|
267
|
+
}>;
|
|
268
|
+
};
|
|
269
|
+
readonly PAYLOAD_TOO_LARGE: {
|
|
270
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
271
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
272
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
273
|
+
}, undefined>, {
|
|
274
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
275
|
+
}>;
|
|
276
|
+
};
|
|
277
|
+
readonly TOO_MANY_REQUESTS: {
|
|
278
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
279
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
280
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
281
|
+
}, undefined>, {
|
|
282
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
283
|
+
}>;
|
|
284
|
+
};
|
|
285
|
+
}>;
|
|
286
|
+
delete: import("@orpc/server").DecoratedProcedure<ApiContext<Record<string, unknown>, Record<string, unknown>, import("..").MessagingConfig, Record<never, never>> & object, object, v.StrictObjectSchema<{
|
|
287
|
+
readonly path: v.StringSchema<undefined>;
|
|
288
|
+
}, undefined>, v.UndefinedSchema<undefined>, {
|
|
289
|
+
readonly BAD_REQUEST: {
|
|
290
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
291
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"BAD_REQUEST", undefined>, "BAD_REQUEST">;
|
|
292
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
293
|
+
}, undefined>, {
|
|
294
|
+
readonly code: "BAD_REQUEST";
|
|
295
|
+
}>;
|
|
296
|
+
};
|
|
297
|
+
readonly UNAUTHORIZED: {
|
|
298
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
299
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"UNAUTHORIZED", undefined>, "UNAUTHORIZED">;
|
|
300
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
301
|
+
}, undefined>, {
|
|
302
|
+
readonly code: "UNAUTHORIZED";
|
|
303
|
+
}>;
|
|
304
|
+
};
|
|
305
|
+
readonly FORBIDDEN: {
|
|
306
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
307
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"FORBIDDEN", undefined>, "FORBIDDEN">;
|
|
308
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
309
|
+
}, undefined>, {
|
|
310
|
+
readonly code: "FORBIDDEN";
|
|
311
|
+
}>;
|
|
312
|
+
};
|
|
313
|
+
readonly NOT_FOUND: {
|
|
314
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
315
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"NOT_FOUND", undefined>, "NOT_FOUND">;
|
|
316
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
317
|
+
}, undefined>, {
|
|
318
|
+
readonly code: "NOT_FOUND";
|
|
319
|
+
}>;
|
|
320
|
+
};
|
|
321
|
+
readonly CONFLICT: {
|
|
322
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
323
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"CONFLICT", undefined>, "CONFLICT">;
|
|
324
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
325
|
+
}, undefined>, {
|
|
326
|
+
readonly code: "CONFLICT";
|
|
327
|
+
}>;
|
|
328
|
+
};
|
|
329
|
+
readonly PAYLOAD_TOO_LARGE: {
|
|
330
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
331
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"PAYLOAD_TOO_LARGE", undefined>, "PAYLOAD_TOO_LARGE">;
|
|
332
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
333
|
+
}, undefined>, {
|
|
334
|
+
readonly code: "PAYLOAD_TOO_LARGE";
|
|
335
|
+
}>;
|
|
336
|
+
};
|
|
337
|
+
readonly TOO_MANY_REQUESTS: {
|
|
338
|
+
readonly data: v.OptionalSchema<v.StrictObjectSchema<{
|
|
339
|
+
readonly code: v.OptionalSchema<v.LiteralSchema<"TOO_MANY_REQUESTS", undefined>, "TOO_MANY_REQUESTS">;
|
|
340
|
+
readonly details: v.OptionalSchema<v.UnknownSchema, undefined>;
|
|
341
|
+
}, undefined>, {
|
|
342
|
+
readonly code: "TOO_MANY_REQUESTS";
|
|
343
|
+
}>;
|
|
344
|
+
};
|
|
345
|
+
}>;
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
};
|
|
349
|
+
//# sourceMappingURL=storage-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-router.d.ts","sourceRoot":"","sources":["../../src/api/storage-router.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAE5B,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAkM3C,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc9B"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import '@orpc/openapi/extensions/route';
|
|
2
|
+
import * as v from 'valibot';
|
|
3
|
+
import { createApiBuilder } from './builder.js';
|
|
4
|
+
const uploadResultSchema = v.strictObject({
|
|
5
|
+
fileId: v.string(),
|
|
6
|
+
url: v.string(),
|
|
7
|
+
});
|
|
8
|
+
const prepareUploadSchema = v.variant('mode', [
|
|
9
|
+
v.strictObject({
|
|
10
|
+
mode: v.literal('proxy'),
|
|
11
|
+
uploadUrl: v.string(),
|
|
12
|
+
}),
|
|
13
|
+
v.strictObject({
|
|
14
|
+
mode: v.literal('presign'),
|
|
15
|
+
fileId: v.string(),
|
|
16
|
+
uploadUrl: v.string(),
|
|
17
|
+
method: v.literal('PUT'),
|
|
18
|
+
confirmUrl: v.string(),
|
|
19
|
+
}),
|
|
20
|
+
]);
|
|
21
|
+
const responseHeadersSchema = v.record(v.string(), v.union([v.string(), v.array(v.string()), v.undefined()]));
|
|
22
|
+
async function executionContext(context) {
|
|
23
|
+
const session = await context.getSession();
|
|
24
|
+
return {
|
|
25
|
+
request: context.request,
|
|
26
|
+
user: session.user,
|
|
27
|
+
session: { activeOrganizationId: session.activeOrganizationId },
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function headersRecord(headers) {
|
|
31
|
+
const result = {};
|
|
32
|
+
headers.forEach((value, key) => {
|
|
33
|
+
result[key] = value;
|
|
34
|
+
});
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
function buildBucketProcedures(name, operations, builder) {
|
|
38
|
+
const prepareUpload = builder.public
|
|
39
|
+
.route({
|
|
40
|
+
method: 'POST',
|
|
41
|
+
path: `/api/files/${name}/presign`,
|
|
42
|
+
summary: `Prepare upload to ${name}`,
|
|
43
|
+
tags: ['files'],
|
|
44
|
+
})
|
|
45
|
+
.input(v.strictObject({
|
|
46
|
+
filename: v.optional(v.string()),
|
|
47
|
+
contentType: v.optional(v.string()),
|
|
48
|
+
}))
|
|
49
|
+
.output(prepareUploadSchema)
|
|
50
|
+
.handler(({ input, context }) => executionContext(context).then((exec) => operations.prepareUpload(name, input, exec)));
|
|
51
|
+
const upload = builder.public
|
|
52
|
+
.route({
|
|
53
|
+
method: 'POST',
|
|
54
|
+
path: `/api/files/${name}`,
|
|
55
|
+
summary: `Upload to ${name}`,
|
|
56
|
+
tags: ['files'],
|
|
57
|
+
inputStructure: 'detailed',
|
|
58
|
+
outputStructure: 'detailed',
|
|
59
|
+
requestBodyHint: 'form-data',
|
|
60
|
+
})
|
|
61
|
+
.input(v.strictObject({
|
|
62
|
+
params: v.optional(v.strictObject({}), {}),
|
|
63
|
+
query: v.optional(v.record(v.string(), v.unknown()), {}),
|
|
64
|
+
headers: v.optional(v.record(v.string(), v.unknown()), {}),
|
|
65
|
+
body: v.strictObject({ file: v.file() }),
|
|
66
|
+
}))
|
|
67
|
+
.output(v.strictObject({
|
|
68
|
+
status: v.literal(201),
|
|
69
|
+
body: uploadResultSchema,
|
|
70
|
+
}))
|
|
71
|
+
.handler(async ({ input, context }) => {
|
|
72
|
+
const result = await operations.upload(name, input.body.file, await executionContext(context));
|
|
73
|
+
return {
|
|
74
|
+
status: result.status,
|
|
75
|
+
body: { fileId: result.fileId, url: result.url },
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
const confirmUpload = builder.public
|
|
79
|
+
.route({
|
|
80
|
+
method: 'POST',
|
|
81
|
+
path: `/api/files/${name}/{id}/confirm`,
|
|
82
|
+
summary: `Confirm upload to ${name}`,
|
|
83
|
+
tags: ['files'],
|
|
84
|
+
})
|
|
85
|
+
.input(v.strictObject({ id: v.string() }))
|
|
86
|
+
.output(uploadResultSchema)
|
|
87
|
+
.handler(({ input, context }) => executionContext(context).then((exec) => operations.confirmUpload(name, input.id, exec)));
|
|
88
|
+
const download = builder.public
|
|
89
|
+
.route({
|
|
90
|
+
method: 'GET',
|
|
91
|
+
path: `/api/files/${name}/{+path}`,
|
|
92
|
+
summary: `Download from ${name}`,
|
|
93
|
+
tags: ['files'],
|
|
94
|
+
inputStructure: 'detailed',
|
|
95
|
+
outputStructure: 'detailed',
|
|
96
|
+
})
|
|
97
|
+
.input(v.strictObject({
|
|
98
|
+
params: v.strictObject({ path: v.string() }),
|
|
99
|
+
query: v.optional(v.record(v.string(), v.string()), {}),
|
|
100
|
+
headers: v.optional(v.record(v.string(), v.unknown()), {}),
|
|
101
|
+
body: v.optional(v.undefined()),
|
|
102
|
+
}))
|
|
103
|
+
.output(v.union([
|
|
104
|
+
v.strictObject({
|
|
105
|
+
status: v.literal(200),
|
|
106
|
+
headers: responseHeadersSchema,
|
|
107
|
+
body: v.unknown(),
|
|
108
|
+
}),
|
|
109
|
+
v.strictObject({
|
|
110
|
+
status: v.literal(302),
|
|
111
|
+
headers: responseHeadersSchema,
|
|
112
|
+
body: v.optional(v.undefined()),
|
|
113
|
+
}),
|
|
114
|
+
]))
|
|
115
|
+
.handler(async ({ input, context }) => {
|
|
116
|
+
const result = await operations.download(name, input.params.path, await executionContext(context));
|
|
117
|
+
if (result.kind === 'redirect') {
|
|
118
|
+
return {
|
|
119
|
+
status: 302,
|
|
120
|
+
headers: { Location: result.url },
|
|
121
|
+
body: undefined,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
status: 200,
|
|
126
|
+
headers: headersRecord(result.headers),
|
|
127
|
+
body: result.body,
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
const deleteFile = builder.public
|
|
131
|
+
.route({
|
|
132
|
+
method: 'DELETE',
|
|
133
|
+
path: `/api/files/${name}/{+path}`,
|
|
134
|
+
summary: `Delete from ${name}`,
|
|
135
|
+
tags: ['files'],
|
|
136
|
+
successStatus: 204,
|
|
137
|
+
})
|
|
138
|
+
.input(v.strictObject({ path: v.string() }))
|
|
139
|
+
.output(v.undefined())
|
|
140
|
+
.handler(async ({ input, context }) => {
|
|
141
|
+
await operations.delete(name, input.path, await executionContext(context));
|
|
142
|
+
return undefined;
|
|
143
|
+
});
|
|
144
|
+
return { prepareUpload, upload, confirmUpload, download, delete: deleteFile };
|
|
145
|
+
}
|
|
146
|
+
export function buildStorageApiRouter(registry, operations) {
|
|
147
|
+
const builder = createApiBuilder();
|
|
148
|
+
return {
|
|
149
|
+
files: Object.fromEntries([...registry.keys()].map((name) => [
|
|
150
|
+
name,
|
|
151
|
+
buildBucketProcedures(name, operations, builder),
|
|
152
|
+
])),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=storage-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-router.js","sourceRoot":"","sources":["../../src/api/storage-router.ts"],"names":[],"mappings":"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","sourcesContent":["import '@orpc/openapi/extensions/route'\nimport * as v from 'valibot'\n\nimport type {\n StorageExecutionContext,\n StorageOperations,\n} from '../storage/operations'\nimport type { BucketStorageRegistry } from '../storage/registry'\nimport type { ApiContext } from './context'\n\nimport { createApiBuilder } from './builder'\n\nconst uploadResultSchema = v.strictObject({\n fileId: v.string(),\n url: v.string(),\n})\n\nconst prepareUploadSchema = v.variant('mode', [\n v.strictObject({\n mode: v.literal('proxy'),\n uploadUrl: v.string(),\n }),\n v.strictObject({\n mode: v.literal('presign'),\n fileId: v.string(),\n uploadUrl: v.string(),\n method: v.literal('PUT'),\n confirmUrl: v.string(),\n }),\n])\n\nconst responseHeadersSchema = v.record(\n v.string(),\n v.union([v.string(), v.array(v.string()), v.undefined()]),\n)\n\nasync function executionContext(\n context: ApiContext<Record<string, unknown>, Record<string, unknown>>,\n): Promise<StorageExecutionContext> {\n const session = await context.getSession()\n return {\n request: context.request,\n user: session.user,\n session: { activeOrganizationId: session.activeOrganizationId },\n }\n}\n\nfunction headersRecord(headers: Headers): Record<string, string> {\n const result: Record<string, string> = {}\n headers.forEach((value, key) => {\n result[key] = value\n })\n return result\n}\n\nfunction buildBucketProcedures(\n name: string,\n operations: StorageOperations,\n builder: ReturnType<\n typeof createApiBuilder<Record<string, unknown>, Record<string, unknown>>\n >,\n) {\n const prepareUpload = builder.public\n .route({\n method: 'POST',\n path: `/api/files/${name}/presign`,\n summary: `Prepare upload to ${name}`,\n tags: ['files'],\n })\n .input(\n v.strictObject({\n filename: v.optional(v.string()),\n contentType: v.optional(v.string()),\n }),\n )\n .output(prepareUploadSchema)\n .handler(({ input, context }) =>\n executionContext(context).then((exec) =>\n operations.prepareUpload(name, input, exec),\n ),\n )\n\n const upload = builder.public\n .route({\n method: 'POST',\n path: `/api/files/${name}`,\n summary: `Upload to ${name}`,\n tags: ['files'],\n inputStructure: 'detailed',\n outputStructure: 'detailed',\n requestBodyHint: 'form-data',\n })\n .input(\n v.strictObject({\n params: v.optional(v.strictObject({}), {}),\n query: v.optional(v.record(v.string(), v.unknown()), {}),\n headers: v.optional(v.record(v.string(), v.unknown()), {}),\n body: v.strictObject({ file: v.file() }),\n }),\n )\n .output(\n v.strictObject({\n status: v.literal(201),\n body: uploadResultSchema,\n }),\n )\n .handler(async ({ input, context }) => {\n const result = await operations.upload(\n name,\n input.body.file,\n await executionContext(context),\n )\n return {\n status: result.status,\n body: { fileId: result.fileId, url: result.url },\n }\n })\n\n const confirmUpload = builder.public\n .route({\n method: 'POST',\n path: `/api/files/${name}/{id}/confirm`,\n summary: `Confirm upload to ${name}`,\n tags: ['files'],\n })\n .input(v.strictObject({ id: v.string() }))\n .output(uploadResultSchema)\n .handler(({ input, context }) =>\n executionContext(context).then((exec) =>\n operations.confirmUpload(name, input.id, exec),\n ),\n )\n\n const download = builder.public\n .route({\n method: 'GET',\n path: `/api/files/${name}/{+path}`,\n summary: `Download from ${name}`,\n tags: ['files'],\n inputStructure: 'detailed',\n outputStructure: 'detailed',\n })\n .input(\n v.strictObject({\n params: v.strictObject({ path: v.string() }),\n query: v.optional(v.record(v.string(), v.string()), {}),\n headers: v.optional(v.record(v.string(), v.unknown()), {}),\n body: v.optional(v.undefined()),\n }),\n )\n .output(\n v.union([\n v.strictObject({\n status: v.literal(200),\n headers: responseHeadersSchema,\n body: v.unknown(),\n }),\n v.strictObject({\n status: v.literal(302),\n headers: responseHeadersSchema,\n body: v.optional(v.undefined()),\n }),\n ]),\n )\n .handler(async ({ input, context }) => {\n const result = await operations.download(\n name,\n input.params.path,\n await executionContext(context),\n )\n if (result.kind === 'redirect') {\n return {\n status: 302 as const,\n headers: { Location: result.url },\n body: undefined,\n }\n }\n return {\n status: 200 as const,\n headers: headersRecord(result.headers),\n body: result.body,\n }\n })\n\n const deleteFile = builder.public\n .route({\n method: 'DELETE',\n path: `/api/files/${name}/{+path}`,\n summary: `Delete from ${name}`,\n tags: ['files'],\n successStatus: 204,\n })\n .input(v.strictObject({ path: v.string() }))\n .output(v.undefined())\n .handler(async ({ input, context }) => {\n await operations.delete(name, input.path, await executionContext(context))\n return undefined\n })\n\n return { prepareUpload, upload, confirmUpload, download, delete: deleteFile }\n}\n\nexport function buildStorageApiRouter(\n registry: BucketStorageRegistry,\n operations: StorageOperations,\n) {\n const builder = createApiBuilder<\n Record<string, unknown>,\n Record<string, unknown>\n >()\n return {\n files: Object.fromEntries(\n [...registry.keys()].map((name) => [\n name,\n buildBucketProcedures(name, operations, builder),\n ]),\n ),\n }\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { AnyRouter } from '@orpc/server';
|
|
2
|
+
import type { Table } from 'drizzle-orm';
|
|
3
|
+
import type { AccessUser } from '../access.js';
|
|
4
|
+
import type { TableCrudProcedures } from './crud-router.js';
|
|
5
|
+
export interface ProtectedContextAdditions {
|
|
6
|
+
user: AccessUser;
|
|
7
|
+
session: {
|
|
8
|
+
activeOrganizationId: string | null;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
type AuthTableName = 'user' | 'session' | 'account' | 'verification';
|
|
12
|
+
type InferSelect<T> = T extends {
|
|
13
|
+
$inferSelect: infer R;
|
|
14
|
+
} ? R : never;
|
|
15
|
+
type DisabledKeys<TAccess> = {
|
|
16
|
+
[K in keyof TAccess & string]: TAccess[K] extends {
|
|
17
|
+
crud: false;
|
|
18
|
+
} ? K : never;
|
|
19
|
+
}[keyof TAccess & string];
|
|
20
|
+
type ExplicitKeys<TSchema, TAccess> = {
|
|
21
|
+
[K in keyof TAccess & keyof TSchema & string]: TAccess[K] extends {
|
|
22
|
+
crud: false;
|
|
23
|
+
} ? never : K extends AuthTableName ? TAccess[K] extends {
|
|
24
|
+
exposeAuthTable: true;
|
|
25
|
+
} ? K extends 'user' ? K : never : never : K;
|
|
26
|
+
}[keyof TAccess & keyof TSchema & string];
|
|
27
|
+
type ConventionKeys<TSchema> = {
|
|
28
|
+
[K in keyof TSchema & string]: K extends AuthTableName ? never : InferSelect<TSchema[K]> extends {
|
|
29
|
+
userId: unknown;
|
|
30
|
+
} ? K : never;
|
|
31
|
+
}[keyof TSchema & string];
|
|
32
|
+
export type ExposedApiTables<TSchema, TAccess> = [TAccess] extends [undefined] ? ConventionKeys<TSchema> : ExplicitKeys<TSchema, TAccess> | Exclude<ConventionKeys<TSchema>, DisabledKeys<TAccess> | (keyof TAccess & string)>;
|
|
33
|
+
/**
|
|
34
|
+
* Column allowlists declared in `access` reach the client as literal unions, so
|
|
35
|
+
* `list` can type `filters` and `sort` per table. Tables that declare nothing
|
|
36
|
+
* get `never` filters and `'id'` sorting, matching the runtime defaults.
|
|
37
|
+
*/
|
|
38
|
+
type FilterableOf<TAccess, K extends string> = K extends keyof TAccess ? TAccess[K] extends {
|
|
39
|
+
filterableColumns: readonly (infer F extends string)[];
|
|
40
|
+
} ? F : never : never;
|
|
41
|
+
type SortableOf<TAccess, K extends string> = K extends keyof TAccess ? TAccess[K] extends {
|
|
42
|
+
sortableColumns: readonly (infer S extends string)[];
|
|
43
|
+
} ? S : 'id' : 'id';
|
|
44
|
+
export type CrudApiRouterFor<TSchema extends Record<string, unknown>, TAccess = undefined, TLive extends boolean = false> = {
|
|
45
|
+
[K in ExposedApiTables<TSchema, TAccess> as TSchema[K] extends Table ? K : never]: TableCrudProcedures<Extract<TSchema[K], Table>, FilterableOf<TAccess, K>, SortableOf<TAccess, K>, TLive>;
|
|
46
|
+
};
|
|
47
|
+
type IsProcedure<T> = T extends {
|
|
48
|
+
'~orpc': unknown;
|
|
49
|
+
} ? true : false;
|
|
50
|
+
export type MergeApiRouterTypes<A, B> = {
|
|
51
|
+
[K in keyof A | keyof B]: K extends keyof A ? K extends keyof B ? IsProcedure<A[K]> extends true ? never : IsProcedure<B[K]> extends true ? never : A[K] extends Record<string, unknown> ? B[K] extends Record<string, unknown> ? MergeApiRouterTypes<A[K], B[K]> : never : never : A[K] : K extends keyof B ? B[K] : never;
|
|
52
|
+
};
|
|
53
|
+
export type UnifiedApiRouter<TCrud, TCustom extends AnyRouter | undefined> = TCustom extends AnyRouter ? MergeApiRouterTypes<TCrud, TCustom> : TCrud;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AnyRouter } from '@orpc/server'\nimport type { Table } from 'drizzle-orm'\n\nimport type { AccessUser } from '../access'\nimport type { TableCrudProcedures } from './crud-router'\n\nexport interface ProtectedContextAdditions {\n user: AccessUser\n session: {\n activeOrganizationId: string | null\n }\n}\n\ntype AuthTableName = 'user' | 'session' | 'account' | 'verification'\ntype InferSelect<T> = T extends { $inferSelect: infer R } ? R : never\n\ntype DisabledKeys<TAccess> = {\n [K in keyof TAccess & string]: TAccess[K] extends { crud: false } ? K : never\n}[keyof TAccess & string]\n\ntype ExplicitKeys<TSchema, TAccess> = {\n [K in keyof TAccess & keyof TSchema & string]: TAccess[K] extends {\n crud: false\n }\n ? never\n : K extends AuthTableName\n ? TAccess[K] extends { exposeAuthTable: true }\n ? K extends 'user'\n ? K\n : never\n : never\n : K\n}[keyof TAccess & keyof TSchema & string]\n\ntype ConventionKeys<TSchema> = {\n [K in keyof TSchema & string]: K extends AuthTableName\n ? never\n : InferSelect<TSchema[K]> extends { userId: unknown }\n ? K\n : never\n}[keyof TSchema & string]\n\nexport type ExposedApiTables<TSchema, TAccess> = [TAccess] extends [undefined]\n ? ConventionKeys<TSchema>\n :\n | ExplicitKeys<TSchema, TAccess>\n | Exclude<\n ConventionKeys<TSchema>,\n DisabledKeys<TAccess> | (keyof TAccess & string)\n >\n\n/**\n * Column allowlists declared in `access` reach the client as literal unions, so\n * `list` can type `filters` and `sort` per table. Tables that declare nothing\n * get `never` filters and `'id'` sorting, matching the runtime defaults.\n */\ntype FilterableOf<TAccess, K extends string> = K extends keyof TAccess\n ? TAccess[K] extends {\n filterableColumns: readonly (infer F extends string)[]\n }\n ? F\n : never\n : never\n\ntype SortableOf<TAccess, K extends string> = K extends keyof TAccess\n ? TAccess[K] extends { sortableColumns: readonly (infer S extends string)[] }\n ? S\n : 'id'\n : 'id'\n\nexport type CrudApiRouterFor<\n TSchema extends Record<string, unknown>,\n TAccess = undefined,\n TLive extends boolean = false,\n> = {\n [K in ExposedApiTables<TSchema, TAccess> as TSchema[K] extends Table\n ? K\n : never]: TableCrudProcedures<\n Extract<TSchema[K], Table>,\n FilterableOf<TAccess, K>,\n SortableOf<TAccess, K>,\n TLive\n >\n}\n\ntype IsProcedure<T> = T extends { '~orpc': unknown } ? true : false\n\nexport type MergeApiRouterTypes<A, B> = {\n [K in keyof A | keyof B]: K extends keyof A\n ? K extends keyof B\n ? IsProcedure<A[K]> extends true\n ? never\n : IsProcedure<B[K]> extends true\n ? never\n : A[K] extends Record<string, unknown>\n ? B[K] extends Record<string, unknown>\n ? MergeApiRouterTypes<A[K], B[K]>\n : never\n : never\n : A[K]\n : K extends keyof B\n ? B[K]\n : never\n}\n\nexport type UnifiedApiRouter<\n TCrud,\n TCustom extends AnyRouter | undefined,\n> = TCustom extends AnyRouter ? MergeApiRouterTypes<TCrud, TCustom> : TCrud\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { BetterAuthConfig } from './config.js';
|
|
2
|
+
type ScryptFn = (password: string, salt: string, keylen: number, options: {
|
|
3
|
+
N: number;
|
|
4
|
+
r: number;
|
|
5
|
+
p: number;
|
|
6
|
+
maxmem: number;
|
|
7
|
+
}) => Promise<Uint8Array>;
|
|
8
|
+
export declare function createPasswordHasher(options?: {
|
|
9
|
+
nativeScrypt?: ScryptFn | null;
|
|
10
|
+
}): {
|
|
11
|
+
hash(password: string): Promise<string>;
|
|
12
|
+
verify({ hash, password, }: {
|
|
13
|
+
hash: string;
|
|
14
|
+
password: string;
|
|
15
|
+
}): Promise<boolean>;
|
|
16
|
+
};
|
|
17
|
+
export declare const passwordHasher: {
|
|
18
|
+
hash(password: string): Promise<string>;
|
|
19
|
+
verify({ hash, password, }: {
|
|
20
|
+
hash: string;
|
|
21
|
+
password: string;
|
|
22
|
+
}): Promise<boolean>;
|
|
23
|
+
};
|
|
24
|
+
/** Only fills a gap: a user-supplied password hasher always wins. */
|
|
25
|
+
export declare function withPasswordDefaults<T extends Pick<BetterAuthConfig, 'emailAndPassword'>>(cfg: T): T;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=auth-password.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-password.d.ts","sourceRoot":"","sources":["../src/auth-password.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD,KAAK,QAAQ,GAAG,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KACzD,OAAO,CAAC,UAAU,CAAC,CAAA;AAwBxB,wBAAgB,oBAAoB,CAClC,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAO;mBAoBzB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gCAO1C;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC;EAMvB;AAED,eAAO,MAAM,cAAc;mBAlBF,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;gCAO1C;QACD,IAAI,EAAE,MAAM,CAAA;QACZ,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG,OAAO,CAAC,OAAO,CAAC;CAQ4B,CAAA;AAEpD,qEAAqE;AACrE,wBAAgB,oBAAoB,CAClC,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EACpD,GAAG,EAAE,CAAC,GAAG,CAAC,CAWX"}
|