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 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/messaging/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AnyDb } from '../dialect'\nimport type { EmailAdapter, EmailMessage } from '../email'\nimport type { BaseEnv } from '../env'\nimport type { TelegramMessage } from './telegram'\nimport type {\n AnyMessagingDescriptor,\n MessagingConfig,\n MessagingFacades,\n} from './types'\n\nimport { insertMessage, updateMessage } from './journal'\nimport { isMessagingDescriptor } from './types'\n\nexport type MessagingAdapter = {\n send(input: any): Promise<{ id?: string }>\n}\n\nexport type CreateMessagingOptions = {\n env: BaseEnv\n db?: AnyDb\n fetchFn?: typeof fetch\n adapterOverrides?: Record<string, MessagingAdapter>\n}\n\ntype ManagedConfig = Record<string, Record<string, unknown>>\ntype CredentialSource = 'explicit' | 'managed' | 'capture'\n\nconst nonEmpty = (value: unknown): value is string =>\n typeof value === 'string' && value.trim().length > 0\n\nconst array = (value: string | string[] | undefined) =>\n value === undefined ? [] : Array.isArray(value) ? value : [value]\n\nfunction managedConfig(raw: string | undefined): ManagedConfig {\n if (!nonEmpty(raw)) return {}\n let value: unknown\n try {\n value = JSON.parse(raw)\n } catch {\n throw new Error(\n '[workerstack] WORKERSTACK_MESSAGING_CONFIG must be valid JSON',\n )\n }\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error(\n '[workerstack] WORKERSTACK_MESSAGING_CONFIG must be an object',\n )\n }\n return value as ManagedConfig\n}\n\nfunction consoleCapture(channel: string, kind: string, input: unknown) {\n console.log(\n `\\n${'─'.repeat(60)}\\n` +\n `💬 ${channel} (${kind}, captured — not sent)\\n` +\n `${'─'.repeat(60)}\\n` +\n `${JSON.stringify(input, null, 2)}\\n` +\n `${'─'.repeat(60)}`,\n )\n}\n\nfunction emailContent(input: EmailMessage, from: string) {\n return {\n recipients: {\n to: array(input.to),\n cc: array(input.cc),\n bcc: array(input.bcc),\n },\n content: {\n subject: input.subject,\n html: input.html,\n text: input.text,\n from,\n replyTo: input.replyTo,\n },\n }\n}\n\nfunction telegramContent(input: TelegramMessage) {\n return {\n recipients: { to: [String(input.to)] },\n content: { text: input.text, parseMode: input.parseMode },\n }\n}\n\nfunction createResendAdapter(\n apiKey: string,\n fetchFn: typeof fetch,\n): MessagingAdapter {\n return {\n async send(input: EmailMessage & { from: string; tags?: unknown }) {\n const response = await fetchFn('https://api.resend.com/emails', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n from: input.from,\n to: array(input.to),\n subject: input.subject,\n html: input.html,\n text: input.text,\n reply_to: input.replyTo,\n cc: array(input.cc),\n bcc: array(input.bcc),\n tags: input.tags,\n }),\n })\n if (!response.ok) {\n throw new Error(\n `resend API error (${response.status}): ${await response.text()}`,\n )\n }\n return (await response.json()) as { id?: string }\n },\n }\n}\n\nfunction createTelegramAdapter(\n token: string,\n fetchFn: typeof fetch,\n): MessagingAdapter {\n return {\n async send(input: TelegramMessage) {\n const response = await fetchFn(\n `https://api.telegram.org/bot${token}/sendMessage`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n chat_id: input.to,\n text: input.text,\n parse_mode: input.parseMode,\n }),\n },\n )\n if (!response.ok) {\n throw new Error(\n `telegram API error (${response.status}): ${await response.text()}`,\n )\n }\n const body = (await response.json()) as {\n result?: { message_id?: number }\n }\n return { id: body.result?.message_id?.toString() }\n },\n }\n}\n\nfunction providerConfig(\n descriptor: AnyMessagingDescriptor,\n managed: ManagedConfig,\n): Record<string, unknown> {\n const merged = { ...managed[descriptor.provider] }\n for (const [key, value] of Object.entries(\n descriptor.config as Record<string, unknown>,\n )) {\n if (typeof value === 'string' ? nonEmpty(value) : value !== undefined) {\n merged[key] = value\n }\n }\n return merged\n}\n\nexport function createMessaging<const TConfig extends MessagingConfig>(\n config: TConfig,\n options: CreateMessagingOptions,\n): MessagingFacades<TConfig> {\n const managed = managedConfig(options.env.WORKERSTACK_MESSAGING_CONFIG)\n const entries = Object.entries(config).map(([channel, descriptor]) => {\n if (!channel.trim())\n throw new Error('[workerstack] messaging channel names cannot be empty')\n if (!isMessagingDescriptor(descriptor)) {\n throw new Error(\n `[workerstack] messaging.${channel} is not a provider descriptor`,\n )\n }\n const merged = providerConfig(descriptor, managed)\n const override = options.adapterOverrides?.[channel]\n let adapter: MessagingAdapter | undefined = override\n let source: CredentialSource = override ? 'capture' : 'explicit'\n let from: string | undefined\n if (\n !adapter &&\n descriptor.kind === 'email' &&\n descriptor.provider === 'resend'\n ) {\n const own = descriptor.config as { apiKey?: string; from?: string }\n const apiKey = merged.apiKey\n from = nonEmpty(merged.from) ? merged.from : undefined\n if (nonEmpty(apiKey) && from) {\n source = nonEmpty(own.apiKey) ? 'explicit' : 'managed'\n adapter = createResendAdapter(apiKey, options.fetchFn ?? fetch)\n }\n } else if (!adapter && descriptor.kind === 'email') {\n const own = descriptor.config as {\n adapter?: EmailAdapter | EmailAdapter['send']\n from?: string\n }\n from = nonEmpty(merged.from) ? merged.from : undefined\n if (own.adapter && from) {\n adapter =\n typeof own.adapter === 'function'\n ? { send: own.adapter }\n : own.adapter\n }\n } else if (!adapter && descriptor.kind === 'telegram') {\n const own = descriptor.config as { botToken?: string }\n const token = merged.botToken\n if (nonEmpty(token)) {\n source = nonEmpty(own.botToken) ? 'explicit' : 'managed'\n adapter = createTelegramAdapter(token, options.fetchFn ?? fetch)\n }\n }\n const capture = !adapter || Boolean(override)\n if (capture) source = 'capture'\n\n return [\n channel,\n {\n async send(input: EmailMessage | TelegramMessage) {\n if (\n descriptor.kind === 'email' &&\n !(input as EmailMessage).html &&\n !(input as EmailMessage).text\n ) {\n throw new Error('email message needs html or text content')\n }\n const resolvedFrom =\n descriptor.kind === 'email'\n ? ((input as EmailMessage).from ?? from ?? 'unknown@localhost')\n : undefined\n const normalized =\n descriptor.kind === 'email'\n ? emailContent(input as EmailMessage, resolvedFrom!)\n : telegramContent(input as TelegramMessage)\n const id = `message_${crypto.randomUUID()}`\n const now = Date.now()\n await insertMessage(options.db, {\n id,\n channel,\n kind: descriptor.kind,\n provider: descriptor.provider,\n credentialSource: source,\n status: capture ? 'captured' : 'sending',\n recipientsJson: JSON.stringify(normalized.recipients),\n contentJson: JSON.stringify(normalized.content),\n createdAt: now,\n updatedAt: now,\n })\n if (capture) {\n await adapter?.send(input)\n if (!override && !options.env.BUNDERHOST_ENVIRONMENT_ID) {\n consoleCapture(channel, descriptor.kind, input)\n }\n return { id }\n }\n try {\n const outgoing =\n descriptor.kind === 'email'\n ? { ...input, from: resolvedFrom }\n : input\n const sent = await adapter!.send(outgoing)\n await updateMessage(\n options.db,\n id,\n {\n providerId: sent.id || undefined,\n status: 'sent',\n updatedAt: Date.now(),\n },\n 'sending',\n )\n return { id, providerId: sent.id || undefined }\n } catch (error) {\n await updateMessage(\n options.db,\n id,\n {\n status: 'failed',\n error: error instanceof Error ? error.message : String(error),\n updatedAt: Date.now(),\n },\n 'sending',\n )\n throw error\n }\n },\n },\n ]\n })\n return Object.fromEntries(entries) as MessagingFacades<TConfig>\n}\n"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AnyDb } from '../dialect.js';
|
|
2
|
+
import type { BaseEnv } from '../env.js';
|
|
3
|
+
import type { MessagingConfig, MessagingFacades } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* What a standalone messaging facade needs. `db` is the application's own
|
|
6
|
+
* connection: pass it so captured and sent messages reach the same journal the
|
|
7
|
+
* app writes, and omit it only when there is no database to write to.
|
|
8
|
+
*/
|
|
9
|
+
export type MessagingContext = {
|
|
10
|
+
env: BaseEnv;
|
|
11
|
+
db?: AnyDb;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Builds channel facades outside a started app, for code that runs before or
|
|
15
|
+
* beside it — a Better Auth builder sending an invitation, a script, a
|
|
16
|
+
* one-off worker. Channels behave exactly as they do on `app.messaging`,
|
|
17
|
+
* capture included.
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* export const auth = defineAuth(schema, ({ db, env }) => {
|
|
21
|
+
* const messaging = createMessaging({ email: resend({ from: env.EMAIL_FROM }) }, { env, db })
|
|
22
|
+
* return { …, sendInvitation: (to) => messaging.email.send({ to, … }) }
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function createMessaging<const TConfig extends MessagingConfig>(channels: TConfig, context: MessagingContext): MessagingFacades<TConfig>;
|
|
27
|
+
//# sourceMappingURL=standalone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/messaging/standalone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAIhE;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,OAAO,CAAA;IACZ,EAAE,CAAC,EAAE,KAAK,CAAA;CACX,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,CAAC,OAAO,SAAS,eAAe,EACnE,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,gBAAgB,GACxB,gBAAgB,CAAC,OAAO,CAAC,CAE3B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createMessaging as materialize } from './runtime.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds channel facades outside a started app, for code that runs before or
|
|
4
|
+
* beside it — a Better Auth builder sending an invitation, a script, a
|
|
5
|
+
* one-off worker. Channels behave exactly as they do on `app.messaging`,
|
|
6
|
+
* capture included.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* export const auth = defineAuth(schema, ({ db, env }) => {
|
|
10
|
+
* const messaging = createMessaging({ email: resend({ from: env.EMAIL_FROM }) }, { env, db })
|
|
11
|
+
* return { …, sendInvitation: (to) => messaging.email.send({ to, … }) }
|
|
12
|
+
* })
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export function createMessaging(channels, context) {
|
|
16
|
+
return materialize(channels, { env: context.env, db: context.db });
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=standalone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone.js","sourceRoot":"","sources":["../../src/messaging/standalone.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,IAAI,WAAW,EAAE,MAAM,WAAW,CAAA;AAY1D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAiB,EACjB,OAAyB;IAEzB,OAAO,WAAW,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;AACpE,CAAC","sourcesContent":["import type { AnyDb } from '../dialect'\nimport type { BaseEnv } from '../env'\nimport type { MessagingConfig, MessagingFacades } from './types'\n\nimport { createMessaging as materialize } from './runtime'\n\n/**\n * What a standalone messaging facade needs. `db` is the application's own\n * connection: pass it so captured and sent messages reach the same journal the\n * app writes, and omit it only when there is no database to write to.\n */\nexport type MessagingContext = {\n env: BaseEnv\n db?: AnyDb\n}\n\n/**\n * Builds channel facades outside a started app, for code that runs before or\n * beside it — a Better Auth builder sending an invitation, a script, a\n * one-off worker. Channels behave exactly as they do on `app.messaging`,\n * capture included.\n *\n * ```ts\n * export const auth = defineAuth(schema, ({ db, env }) => {\n * const messaging = createMessaging({ email: resend({ from: env.EMAIL_FROM }) }, { env, db })\n * return { …, sendInvitation: (to) => messaging.email.send({ to, … }) }\n * })\n * ```\n */\nexport function createMessaging<const TConfig extends MessagingConfig>(\n channels: TConfig,\n context: MessagingContext,\n): MessagingFacades<TConfig> {\n return materialize(channels, { env: context.env, db: context.db })\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type MessagingDescriptor } from './types.js';
|
|
2
|
+
export type TelegramMessage = {
|
|
3
|
+
to: string | number;
|
|
4
|
+
text: string;
|
|
5
|
+
parseMode?: 'HTML' | 'MarkdownV2';
|
|
6
|
+
};
|
|
7
|
+
export type SentTelegramMessage = {
|
|
8
|
+
id?: string;
|
|
9
|
+
providerId?: string;
|
|
10
|
+
};
|
|
11
|
+
export type TelegramConfig = {
|
|
12
|
+
botToken?: string;
|
|
13
|
+
};
|
|
14
|
+
export type TelegramDescriptor = MessagingDescriptor<'telegram', 'telegram', TelegramMessage, SentTelegramMessage, TelegramConfig>;
|
|
15
|
+
export declare function telegram(config?: TelegramConfig): TelegramDescriptor;
|
|
16
|
+
//# sourceMappingURL=telegram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/messaging/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAElD,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAClD,UAAU,EACV,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,cAAc,CACf,CAAA;AAED,wBAAgB,QAAQ,CAAC,MAAM,GAAE,cAAmB,GAAG,kBAAkB,CAExE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/messaging/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,MAAM,SAAS,CAAA;AAuB9D,MAAM,UAAU,QAAQ,CAAC,SAAyB,EAAE;IAClD,OAAO,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AACnD,CAAC","sourcesContent":["import { descriptor, type MessagingDescriptor } from './types'\n\nexport type TelegramMessage = {\n to: string | number\n text: string\n parseMode?: 'HTML' | 'MarkdownV2'\n}\n\nexport type SentTelegramMessage = {\n id?: string\n providerId?: string\n}\n\nexport type TelegramConfig = { botToken?: string }\n\nexport type TelegramDescriptor = MessagingDescriptor<\n 'telegram',\n 'telegram',\n TelegramMessage,\n SentTelegramMessage,\n TelegramConfig\n>\n\nexport function telegram(config: TelegramConfig = {}): TelegramDescriptor {\n return descriptor('telegram', 'telegram', config)\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const MESSAGING_DESCRIPTOR: unique symbol;
|
|
2
|
+
export type MessagingDescriptor<TKind extends string, TProvider extends string, TInput, TResult, TConfig = unknown> = {
|
|
3
|
+
readonly kind: TKind;
|
|
4
|
+
readonly provider: TProvider;
|
|
5
|
+
readonly config: Readonly<TConfig>;
|
|
6
|
+
readonly [MESSAGING_DESCRIPTOR]: {
|
|
7
|
+
readonly input: TInput;
|
|
8
|
+
readonly result: TResult;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export type AnyMessagingDescriptor = MessagingDescriptor<string, string, any, any, any>;
|
|
12
|
+
export type MessagingConfig = Record<string, AnyMessagingDescriptor>;
|
|
13
|
+
export type MessagingFacade<TDescriptor extends AnyMessagingDescriptor> = {
|
|
14
|
+
send(input: TDescriptor[typeof MESSAGING_DESCRIPTOR]['input']): Promise<TDescriptor[typeof MESSAGING_DESCRIPTOR]['result']>;
|
|
15
|
+
};
|
|
16
|
+
export type MessagingFacades<TConfig extends MessagingConfig> = {
|
|
17
|
+
readonly [K in keyof TConfig]: MessagingFacade<TConfig[K]>;
|
|
18
|
+
};
|
|
19
|
+
export type MessagingFacadesFor<TConfig extends MessagingConfig | undefined> = TConfig extends MessagingConfig ? MessagingFacades<TConfig> : Record<never, never>;
|
|
20
|
+
export declare function descriptor<TKind extends string, TProvider extends string, TInput, TResult, TConfig>(kind: TKind, provider: TProvider, config: TConfig): MessagingDescriptor<TKind, TProvider, TInput, TResult, TConfig>;
|
|
21
|
+
export declare function isMessagingDescriptor(value: unknown): value is AnyMessagingDescriptor;
|
|
22
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,EAAE,OAAO,MAEzC,CAAA;AAED,MAAM,MAAM,mBAAmB,CAC7B,KAAK,SAAS,MAAM,EACpB,SAAS,SAAS,MAAM,EACxB,MAAM,EACN,OAAO,EACP,OAAO,GAAG,OAAO,IACf;IACF,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAClC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE;QAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KACzB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CACtD,MAAM,EACN,MAAM,EACN,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;AAEpE,MAAM,MAAM,eAAe,CAAC,WAAW,SAAS,sBAAsB,IAAI;IACxE,IAAI,CACF,KAAK,EAAE,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC,OAAO,CAAC,GACvD,OAAO,CAAC,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;CAC/D,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,eAAe,IAAI;IAC9D,QAAQ,EAAE,CAAC,IAAI,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAA;AAED,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,eAAe,GAAG,SAAS,IACzE,OAAO,SAAS,eAAe,GAC3B,gBAAgB,CAAC,OAAO,CAAC,GACzB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAE1B,wBAAgB,UAAU,CACxB,KAAK,SAAS,MAAM,EACpB,SAAS,SAAS,MAAM,EACxB,MAAM,EACN,OAAO,EACP,OAAO,EAEP,IAAI,EAAE,KAAK,EACX,QAAQ,EAAE,SAAS,EACnB,MAAM,EAAE,OAAO,GACd,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAOjE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,sBAAsB,CAQjC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const MESSAGING_DESCRIPTOR = Symbol.for('workerstack.messaging-descriptor');
|
|
2
|
+
export function descriptor(kind, provider, config) {
|
|
3
|
+
return Object.freeze({
|
|
4
|
+
kind,
|
|
5
|
+
provider,
|
|
6
|
+
config: Object.freeze({ ...config }),
|
|
7
|
+
[MESSAGING_DESCRIPTOR]: undefined,
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export function isMessagingDescriptor(value) {
|
|
11
|
+
return (typeof value === 'object' &&
|
|
12
|
+
value !== null &&
|
|
13
|
+
MESSAGING_DESCRIPTOR in value &&
|
|
14
|
+
typeof value.kind === 'string' &&
|
|
15
|
+
typeof value.provider === 'string');
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/messaging/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAkB,MAAM,CAAC,GAAG,CAC3D,kCAAkC,CACnC,CAAA;AA2CD,MAAM,UAAU,UAAU,CAOxB,IAAW,EACX,QAAmB,EACnB,MAAe;IAEf,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QACJ,QAAQ;QACR,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;QACpC,CAAC,oBAAoB,CAAC,EAAE,SAAkB;KAC3C,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAc;IAEd,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,oBAAoB,IAAI,KAAK;QAC7B,OAAQ,KAAgC,CAAC,IAAI,KAAK,QAAQ;QAC1D,OAAQ,KAAgC,CAAC,QAAQ,KAAK,QAAQ,CAC/D,CAAA;AACH,CAAC","sourcesContent":["export const MESSAGING_DESCRIPTOR: unique symbol = Symbol.for(\n 'workerstack.messaging-descriptor',\n)\n\nexport type MessagingDescriptor<\n TKind extends string,\n TProvider extends string,\n TInput,\n TResult,\n TConfig = unknown,\n> = {\n readonly kind: TKind\n readonly provider: TProvider\n readonly config: Readonly<TConfig>\n readonly [MESSAGING_DESCRIPTOR]: {\n readonly input: TInput\n readonly result: TResult\n }\n}\n\nexport type AnyMessagingDescriptor = MessagingDescriptor<\n string,\n string,\n any,\n any,\n any\n>\n\nexport type MessagingConfig = Record<string, AnyMessagingDescriptor>\n\nexport type MessagingFacade<TDescriptor extends AnyMessagingDescriptor> = {\n send(\n input: TDescriptor[typeof MESSAGING_DESCRIPTOR]['input'],\n ): Promise<TDescriptor[typeof MESSAGING_DESCRIPTOR]['result']>\n}\n\nexport type MessagingFacades<TConfig extends MessagingConfig> = {\n readonly [K in keyof TConfig]: MessagingFacade<TConfig[K]>\n}\n\nexport type MessagingFacadesFor<TConfig extends MessagingConfig | undefined> =\n TConfig extends MessagingConfig\n ? MessagingFacades<TConfig>\n : Record<never, never>\n\nexport function descriptor<\n TKind extends string,\n TProvider extends string,\n TInput,\n TResult,\n TConfig,\n>(\n kind: TKind,\n provider: TProvider,\n config: TConfig,\n): MessagingDescriptor<TKind, TProvider, TInput, TResult, TConfig> {\n return Object.freeze({\n kind,\n provider,\n config: Object.freeze({ ...config }),\n [MESSAGING_DESCRIPTOR]: undefined as never,\n })\n}\n\nexport function isMessagingDescriptor(\n value: unknown,\n): value is AnyMessagingDescriptor {\n return (\n typeof value === 'object' &&\n value !== null &&\n MESSAGING_DESCRIPTOR in value &&\n typeof (value as AnyMessagingDescriptor).kind === 'string' &&\n typeof (value as AnyMessagingDescriptor).provider === 'string'\n )\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { RealtimePublisher } from './realtime/publisher.js';
|
|
2
|
+
import type { ResolvedBackend, ResolvedBucket } from './storage/buckets.js';
|
|
3
|
+
import type { StorageAdapter } from './storage/index.js';
|
|
4
|
+
export interface JobsPlatform {
|
|
5
|
+
/** A job became runnable at `runAt`. The host wakes a tick at that time. */
|
|
6
|
+
notify(runAt: number): void | Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export type RateLimitHit = {
|
|
9
|
+
allowed: boolean;
|
|
10
|
+
resetAt: number;
|
|
11
|
+
};
|
|
12
|
+
export interface RateLimitStore {
|
|
13
|
+
hit(key: string, windowMs: number, max: number, now?: number): Promise<RateLimitHit>;
|
|
14
|
+
}
|
|
15
|
+
export type StorageAdapterFactory = (backend: ResolvedBackend, bucket: ResolvedBucket) => StorageAdapter;
|
|
16
|
+
export interface Platform {
|
|
17
|
+
jobs: JobsPlatform;
|
|
18
|
+
/** Absent: the runtime uses a process-local memory publisher. */
|
|
19
|
+
realtime?: RealtimePublisher;
|
|
20
|
+
rateLimit: RateLimitStore;
|
|
21
|
+
storage: StorageAdapterFactory;
|
|
22
|
+
}
|
|
23
|
+
export declare function createMemoryRateLimitStore(): RateLimitStore;
|
|
24
|
+
export declare function resolvePlatform(partial?: Partial<Platform>): Platform;
|
|
25
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAIrD,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,WAAW,cAAc;IAC7B,GAAG,CACD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,CAAA;CACzB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,cAAc,KACnB,cAAc,CAAA;AAEnB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAA;IAClB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IAC5B,SAAS,EAAE,cAAc,CAAA;IACzB,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED,wBAAgB,0BAA0B,IAAI,cAAc,CAa3D;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,OAAO,CAAC,QAAQ,CAAM,GAAG,QAAQ,CAOzE"}
|
package/dist/platform.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createAdapter } from './storage/registry.js';
|
|
2
|
+
export function createMemoryRateLimitStore() {
|
|
3
|
+
const windows = new Map();
|
|
4
|
+
return {
|
|
5
|
+
async hit(key, windowMs, max, now = Date.now()) {
|
|
6
|
+
let window = windows.get(key);
|
|
7
|
+
if (!window || window.resetAt <= now) {
|
|
8
|
+
window = { count: 0, resetAt: now + windowMs };
|
|
9
|
+
windows.set(key, window);
|
|
10
|
+
}
|
|
11
|
+
window.count += 1;
|
|
12
|
+
return { allowed: window.count <= max, resetAt: window.resetAt };
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export function resolvePlatform(partial = {}) {
|
|
17
|
+
return {
|
|
18
|
+
jobs: partial.jobs ?? { notify() { } },
|
|
19
|
+
realtime: partial.realtime,
|
|
20
|
+
rateLimit: partial.rateLimit ?? createMemoryRateLimitStore(),
|
|
21
|
+
storage: partial.storage ?? createAdapter,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AA+BlD,MAAM,UAAU,0BAA0B;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA8C,CAAA;IACrE,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YAC5C,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;gBACrC,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,QAAQ,EAAE,CAAA;gBAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAC1B,CAAC;YACD,MAAM,CAAC,KAAK,IAAI,CAAC,CAAA;YACjB,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;QAClE,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAA6B,EAAE;IAC7D,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,MAAM,KAAI,CAAC,EAAE;QACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,0BAA0B,EAAE;QAC5D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,aAAa;KAC1C,CAAA;AACH,CAAC","sourcesContent":["// src/platform.ts — the services a host supplies to the core. A Worker gives\n// Durable Object backed ones; tests and Bun tooling get these defaults.\nimport type { RealtimePublisher } from './realtime/publisher'\nimport type { ResolvedBackend, ResolvedBucket } from './storage/buckets'\nimport type { StorageAdapter } from './storage/index'\n\nimport { createAdapter } from './storage/registry'\n\nexport interface JobsPlatform {\n /** A job became runnable at `runAt`. The host wakes a tick at that time. */\n notify(runAt: number): void | Promise<void>\n}\n\nexport type RateLimitHit = { allowed: boolean; resetAt: number }\n\nexport interface RateLimitStore {\n hit(\n key: string,\n windowMs: number,\n max: number,\n now?: number,\n ): Promise<RateLimitHit>\n}\n\nexport type StorageAdapterFactory = (\n backend: ResolvedBackend,\n bucket: ResolvedBucket,\n) => StorageAdapter\n\nexport interface Platform {\n jobs: JobsPlatform\n /** Absent: the runtime uses a process-local memory publisher. */\n realtime?: RealtimePublisher\n rateLimit: RateLimitStore\n storage: StorageAdapterFactory\n}\n\nexport function createMemoryRateLimitStore(): RateLimitStore {\n const windows = new Map<string, { count: number; resetAt: number }>()\n return {\n async hit(key, windowMs, max, now = Date.now()) {\n let window = windows.get(key)\n if (!window || window.resetAt <= now) {\n window = { count: 0, resetAt: now + windowMs }\n windows.set(key, window)\n }\n window.count += 1\n return { allowed: window.count <= max, resetAt: window.resetAt }\n },\n }\n}\n\nexport function resolvePlatform(partial: Partial<Platform> = {}): Platform {\n return {\n jobs: partial.jobs ?? { notify() {} },\n realtime: partial.realtime,\n rateLimit: partial.rateLimit ?? createMemoryRateLimitStore(),\n storage: partial.storage ?? createAdapter,\n }\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Driver } from './db.js';
|
|
2
|
+
import type { AnyDb } from './dialect.js';
|
|
3
|
+
/**
|
|
4
|
+
* Hidden handle connecting `workerstack()` to the optional
|
|
5
|
+
* `workerstack/provision` entry. Lives in its own module so the main entry
|
|
6
|
+
* never imports provisioning code.
|
|
7
|
+
*/
|
|
8
|
+
export declare const PROVISION_INTERNALS: unique symbol;
|
|
9
|
+
export interface ProvisionInternals {
|
|
10
|
+
/** Runtime db typed over the MERGED schema (user + internal tables). */
|
|
11
|
+
db: AnyDb;
|
|
12
|
+
/** Merged schema used for push. */
|
|
13
|
+
schema: Record<string, unknown>;
|
|
14
|
+
databaseUrl: string;
|
|
15
|
+
/** Resolved migrations folder (config `database.migrations`). */
|
|
16
|
+
migrationsFolder: string;
|
|
17
|
+
driver: Driver;
|
|
18
|
+
adapter: import('./database/adapter.js').DatabaseAdapter;
|
|
19
|
+
}
|
|
20
|
+
export interface WithProvisionInternals {
|
|
21
|
+
[PROVISION_INTERNALS]?: ProvisionInternals;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=provision-internals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-internals.d.ts","sourceRoot":"","sources":["../src/provision-internals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEtC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,OAAO,MAExC,CAAA;AAED,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,EAAE,EAAE,KAAK,CAAA;IACT,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,CAAA;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,oBAAoB,EAAE,eAAe,CAAA;CACtD;AAED,MAAM,WAAW,sBAAsB;IACrC,CAAC,mBAAmB,CAAC,CAAC,EAAE,kBAAkB,CAAA;CAC3C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hidden handle connecting `workerstack()` to the optional
|
|
3
|
+
* `workerstack/provision` entry. Lives in its own module so the main entry
|
|
4
|
+
* never imports provisioning code.
|
|
5
|
+
*/
|
|
6
|
+
export const PROVISION_INTERNALS = Symbol.for('workerstack.provision-internals');
|
|
7
|
+
//# sourceMappingURL=provision-internals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-internals.js","sourceRoot":"","sources":["../src/provision-internals.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAkB,MAAM,CAAC,GAAG,CAC1D,iCAAiC,CAClC,CAAA","sourcesContent":["import type { Driver } from './db'\n// src/provision-internals.ts\nimport type { AnyDb } from './dialect'\n\n/**\n * Hidden handle connecting `workerstack()` to the optional\n * `workerstack/provision` entry. Lives in its own module so the main entry\n * never imports provisioning code.\n */\nexport const PROVISION_INTERNALS: unique symbol = Symbol.for(\n 'workerstack.provision-internals',\n)\n\nexport interface ProvisionInternals {\n /** Runtime db typed over the MERGED schema (user + internal tables). */\n db: AnyDb\n /** Merged schema used for push. */\n schema: Record<string, unknown>\n databaseUrl: string\n /** Resolved migrations folder (config `database.migrations`). */\n migrationsFolder: string\n driver: Driver\n adapter: import('./database/adapter').DatabaseAdapter\n}\n\nexport interface WithProvisionInternals {\n [PROVISION_INTERNALS]?: ProvisionInternals\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Create the local backing directory for a file-based url. */
|
|
2
|
+
export declare function ensureLocalDataDir(url: string): Promise<void>;
|
|
3
|
+
export declare function getProvisionInternals(app: object): import("./provision-internals.js").ProvisionInternals;
|
|
4
|
+
/** Apply committed migrations, returning false when no journal exists. */
|
|
5
|
+
export declare function applyCommittedMigrations(app: object): Promise<boolean>;
|
|
6
|
+
//# sourceMappingURL=provision-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-runtime.d.ts","sourceRoot":"","sources":["../src/provision-runtime.ts"],"names":[],"mappings":"AAQA,+DAA+D;AAC/D,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMnE;AAWD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,sDAQhD;AAED,0EAA0E;AAC1E,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS5E"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { access, mkdir } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { PROVISION_INTERNALS, } from './provision-internals.js';
|
|
4
|
+
/** Create the local backing directory for a file-based url. */
|
|
5
|
+
export async function ensureLocalDataDir(url) {
|
|
6
|
+
const match = /^file:(.+)$/.exec(url);
|
|
7
|
+
if (!match)
|
|
8
|
+
return;
|
|
9
|
+
const filePath = match[1];
|
|
10
|
+
if (filePath === ':memory:')
|
|
11
|
+
return;
|
|
12
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
async function exists(path) {
|
|
15
|
+
try {
|
|
16
|
+
await access(path);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function getProvisionInternals(app) {
|
|
24
|
+
const internals = app[PROVISION_INTERNALS];
|
|
25
|
+
if (!internals) {
|
|
26
|
+
throw new Error('[workerstack] provision() expects the app returned by workerstack().');
|
|
27
|
+
}
|
|
28
|
+
return internals;
|
|
29
|
+
}
|
|
30
|
+
/** Apply committed migrations, returning false when no journal exists. */
|
|
31
|
+
export async function applyCommittedMigrations(app) {
|
|
32
|
+
const internals = getProvisionInternals(app);
|
|
33
|
+
const { db, databaseUrl, migrationsFolder, adapter } = internals;
|
|
34
|
+
const journal = join(migrationsFolder, 'meta', '_journal.json');
|
|
35
|
+
if (!(await exists(journal)))
|
|
36
|
+
return false;
|
|
37
|
+
await ensureLocalDataDir(databaseUrl);
|
|
38
|
+
await adapter.migrate(db, migrationsFolder);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=provision-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-runtime.js","sourceRoot":"","sources":["../src/provision-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EACL,mBAAmB,GAEpB,MAAM,uBAAuB,CAAA;AAE9B,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,CAAC,KAAK;QAAE,OAAM;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;IAC1B,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAM;IACnC,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACrD,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,SAAS,GAAI,GAA8B,CAAC,mBAAmB,CAAC,CAAA;IACtE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAA;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,GAAW;IACxD,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,SAAS,CAAA;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/D,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAE1C,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAA;IACrC,MAAM,OAAO,CAAC,OAAO,CAAC,EAAW,EAAE,gBAAgB,CAAC,CAAA;IACpD,OAAO,IAAI,CAAA;AACb,CAAC","sourcesContent":["import { access, mkdir } from 'node:fs/promises'\nimport { dirname, join } from 'node:path'\n\nimport {\n PROVISION_INTERNALS,\n type WithProvisionInternals,\n} from './provision-internals'\n\n/** Create the local backing directory for a file-based url. */\nexport async function ensureLocalDataDir(url: string): Promise<void> {\n const match = /^file:(.+)$/.exec(url)\n if (!match) return\n const filePath = match[1]!\n if (filePath === ':memory:') return\n await mkdir(dirname(filePath), { recursive: true })\n}\n\nasync function exists(path: string): Promise<boolean> {\n try {\n await access(path)\n return true\n } catch {\n return false\n }\n}\n\nexport function getProvisionInternals(app: object) {\n const internals = (app as WithProvisionInternals)[PROVISION_INTERNALS]\n if (!internals) {\n throw new Error(\n '[workerstack] provision() expects the app returned by workerstack().',\n )\n }\n return internals\n}\n\n/** Apply committed migrations, returning false when no journal exists. */\nexport async function applyCommittedMigrations(app: object): Promise<boolean> {\n const internals = getProvisionInternals(app)\n const { db, databaseUrl, migrationsFolder, adapter } = internals\n const journal = join(migrationsFolder, 'meta', '_journal.json')\n if (!(await exists(journal))) return false\n\n await ensureLocalDataDir(databaseUrl)\n await adapter.migrate(db as never, migrationsFolder)\n return true\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AnyDb } from './dialect.js';
|
|
2
|
+
/** Push the merged schema to the database via drizzle-kit/api. */
|
|
3
|
+
export declare function provisionSchema<TSchema extends Record<string, unknown>>(db: AnyDb, schema: TSchema, options?: {
|
|
4
|
+
force?: boolean;
|
|
5
|
+
databaseUrl?: string;
|
|
6
|
+
}): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Development provisioning: apply committed migrations when present,
|
|
9
|
+
* otherwise push the current schema through Drizzle Kit.
|
|
10
|
+
*/
|
|
11
|
+
export declare function provision(app: object, options?: {
|
|
12
|
+
force?: boolean;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
export type TestSchemaMode = 'auto' | 'push' | 'migrations';
|
|
15
|
+
export declare function provisionForTest(app: object, mode: TestSchemaMode): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=provision-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-schema.d.ts","sourceRoot":"","sources":["../src/provision-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAatC,kEAAkE;AAClE,wBAAsB,eAAe,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3E,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAClD,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAA;AAE3D,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { applyCommittedMigrations, ensureLocalDataDir, getProvisionInternals, } from './provision-runtime.js';
|
|
2
|
+
const DRIZZLE_KIT_HINT = '[workerstack] Schema push requires drizzle-kit, which is not installed.\n' +
|
|
3
|
+
' Development: run `bun add -d drizzle-kit` and import provision from `workerstack/provision-schema`.\n' +
|
|
4
|
+
' Production: generate migrations with `bunx drizzle-kit generate`, commit them, and use `workerstack/provision`.';
|
|
5
|
+
/** Push the merged schema to the database via drizzle-kit/api. */
|
|
6
|
+
export async function provisionSchema(db, schema, options) {
|
|
7
|
+
if (options?.databaseUrl) {
|
|
8
|
+
await ensureLocalDataDir(options.databaseUrl);
|
|
9
|
+
}
|
|
10
|
+
let kit;
|
|
11
|
+
try {
|
|
12
|
+
kit = await import('drizzle-kit/api');
|
|
13
|
+
}
|
|
14
|
+
catch (cause) {
|
|
15
|
+
throw new Error(DRIZZLE_KIT_HINT, { cause });
|
|
16
|
+
}
|
|
17
|
+
const result = await kit.pushSQLiteSchema(schema, db);
|
|
18
|
+
if (result.hasDataLoss && !options?.force) {
|
|
19
|
+
throw new Error('[workerstack] Schema push would cause data loss. Run `bunx drizzle-kit push` or call provision(app, { force: true }).');
|
|
20
|
+
}
|
|
21
|
+
for (const warning of result.warnings) {
|
|
22
|
+
console.warn(`[workerstack] ${warning}`);
|
|
23
|
+
}
|
|
24
|
+
if (result.statementsToExecute.length === 0)
|
|
25
|
+
return;
|
|
26
|
+
await result.apply();
|
|
27
|
+
console.log(`[workerstack] provisioned ${result.statementsToExecute.length} schema change(s)`);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Development provisioning: apply committed migrations when present,
|
|
31
|
+
* otherwise push the current schema through Drizzle Kit.
|
|
32
|
+
*/
|
|
33
|
+
export async function provision(app, options) {
|
|
34
|
+
if (await applyCommittedMigrations(app))
|
|
35
|
+
return;
|
|
36
|
+
const internals = getProvisionInternals(app);
|
|
37
|
+
await provisionSchema(internals.db, internals.schema, {
|
|
38
|
+
force: options?.force,
|
|
39
|
+
databaseUrl: internals.databaseUrl,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export async function provisionForTest(app, mode) {
|
|
43
|
+
if (mode === 'auto') {
|
|
44
|
+
await provision(app, { force: true });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const internals = getProvisionInternals(app);
|
|
48
|
+
if (mode === 'push') {
|
|
49
|
+
await provisionSchema(internals.db, internals.schema, {
|
|
50
|
+
force: true,
|
|
51
|
+
databaseUrl: internals.databaseUrl,
|
|
52
|
+
});
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (!(await applyCommittedMigrations(app))) {
|
|
56
|
+
throw new Error('[workerstack] committed migrations journal not found');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=provision-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-schema.js","sourceRoot":"","sources":["../src/provision-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,gBAAgB,GACpB,2EAA2E;IAC3E,yGAAyG;IACzG,mHAAmH,CAAA;AAErH,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAS,EACT,MAAe,EACf,OAAmD;IAEnD,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,MAAM,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,GAAqC,CAAA;IACzC,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAW,CAAC,CAAA;IAE9D,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAA;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,MAAM,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAEnD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACpB,OAAO,CAAC,GAAG,CACT,6BAA6B,MAAM,CAAC,mBAAmB,CAAC,MAAM,mBAAmB,CAClF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,OAA6B;IAE7B,IAAI,MAAM,wBAAwB,CAAC,GAAG,CAAC;QAAE,OAAM;IAC/C,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC5C,MAAM,eAAe,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE;QACpD,KAAK,EAAE,OAAO,EAAE,KAAK;QACrB,WAAW,EAAE,SAAS,CAAC,WAAW;KACnC,CAAC,CAAA;AACJ,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,IAAoB;IAEpB,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACrC,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC5C,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,eAAe,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE;YACpD,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;AACH,CAAC","sourcesContent":["import type { AnyDb } from './dialect'\n\nimport {\n applyCommittedMigrations,\n ensureLocalDataDir,\n getProvisionInternals,\n} from './provision-runtime'\n\nconst DRIZZLE_KIT_HINT =\n '[workerstack] Schema push requires drizzle-kit, which is not installed.\\n' +\n ' Development: run `bun add -d drizzle-kit` and import provision from `workerstack/provision-schema`.\\n' +\n ' Production: generate migrations with `bunx drizzle-kit generate`, commit them, and use `workerstack/provision`.'\n\n/** Push the merged schema to the database via drizzle-kit/api. */\nexport async function provisionSchema<TSchema extends Record<string, unknown>>(\n db: AnyDb,\n schema: TSchema,\n options?: { force?: boolean; databaseUrl?: string },\n): Promise<void> {\n if (options?.databaseUrl) {\n await ensureLocalDataDir(options.databaseUrl)\n }\n\n let kit: typeof import('drizzle-kit/api')\n try {\n kit = await import('drizzle-kit/api')\n } catch (cause) {\n throw new Error(DRIZZLE_KIT_HINT, { cause })\n }\n\n const result = await kit.pushSQLiteSchema(schema, db as never)\n\n if (result.hasDataLoss && !options?.force) {\n throw new Error(\n '[workerstack] Schema push would cause data loss. Run `bunx drizzle-kit push` or call provision(app, { force: true }).',\n )\n }\n for (const warning of result.warnings) {\n console.warn(`[workerstack] ${warning}`)\n }\n if (result.statementsToExecute.length === 0) return\n\n await result.apply()\n console.log(\n `[workerstack] provisioned ${result.statementsToExecute.length} schema change(s)`,\n )\n}\n\n/**\n * Development provisioning: apply committed migrations when present,\n * otherwise push the current schema through Drizzle Kit.\n */\nexport async function provision(\n app: object,\n options?: { force?: boolean },\n): Promise<void> {\n if (await applyCommittedMigrations(app)) return\n const internals = getProvisionInternals(app)\n await provisionSchema(internals.db, internals.schema, {\n force: options?.force,\n databaseUrl: internals.databaseUrl,\n })\n}\n\nexport type TestSchemaMode = 'auto' | 'push' | 'migrations'\n\nexport async function provisionForTest(\n app: object,\n mode: TestSchemaMode,\n): Promise<void> {\n if (mode === 'auto') {\n await provision(app, { force: true })\n return\n }\n\n const internals = getProvisionInternals(app)\n if (mode === 'push') {\n await provisionSchema(internals.db, internals.schema, {\n force: true,\n databaseUrl: internals.databaseUrl,\n })\n return\n }\n\n if (!(await applyCommittedMigrations(app))) {\n throw new Error('[workerstack] committed migrations journal not found')\n }\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply committed migrations for a Workerstack app.
|
|
3
|
+
*
|
|
4
|
+
* This production entrypoint has no Drizzle Kit dependency. Development
|
|
5
|
+
* schema push is deliberately isolated in `workerstack/provision-schema`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function provision(app: object): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=provision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision.d.ts","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { applyCommittedMigrations } from './provision-runtime.js';
|
|
2
|
+
const MIGRATIONS_REQUIRED = '[workerstack] No committed migrations journal was found.\n' +
|
|
3
|
+
' Production: generate migrations with `bunx drizzle-kit generate`, commit them, and keep using `workerstack/provision`.\n' +
|
|
4
|
+
' Development schema push: import provision from `workerstack/provision-schema`.';
|
|
5
|
+
/**
|
|
6
|
+
* Apply committed migrations for a Workerstack app.
|
|
7
|
+
*
|
|
8
|
+
* This production entrypoint has no Drizzle Kit dependency. Development
|
|
9
|
+
* schema push is deliberately isolated in `workerstack/provision-schema`.
|
|
10
|
+
*/
|
|
11
|
+
export async function provision(app) {
|
|
12
|
+
if (!(await applyCommittedMigrations(app))) {
|
|
13
|
+
throw new Error(MIGRATIONS_REQUIRED);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=provision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,MAAM,mBAAmB,GACvB,4DAA4D;IAC5D,4HAA4H;IAC5H,kFAAkF,CAAA;AAEpF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,IAAI,CAAC,CAAC,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;AACH,CAAC","sourcesContent":["import { applyCommittedMigrations } from './provision-runtime'\n\nconst MIGRATIONS_REQUIRED =\n '[workerstack] No committed migrations journal was found.\\n' +\n ' Production: generate migrations with `bunx drizzle-kit generate`, commit them, and keep using `workerstack/provision`.\\n' +\n ' Development schema push: import provision from `workerstack/provision-schema`.'\n\n/**\n * Apply committed migrations for a Workerstack app.\n *\n * This production entrypoint has no Drizzle Kit dependency. Development\n * schema push is deliberately isolated in `workerstack/provision-schema`.\n */\nexport async function provision(app: object): Promise<void> {\n if (!(await applyCommittedMigrations(app))) {\n throw new Error(MIGRATIONS_REQUIRED)\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AnyRouter, RouterClient } from '@orpc/server';
|
|
2
|
+
import { type RouterUtils } from '@orpc/tanstack-query';
|
|
3
|
+
import { type Fetch } from '../client/rpc-client.js';
|
|
4
|
+
export interface ApiClientOptions {
|
|
5
|
+
baseUrl?: string;
|
|
6
|
+
fetch?: Fetch;
|
|
7
|
+
}
|
|
8
|
+
export type ApiQueryUtils<TRouter extends AnyRouter> = RouterUtils<RouterClient<TRouter>>;
|
|
9
|
+
export declare function createApiClient<TRouter extends AnyRouter = AnyRouter>(options?: ApiClientOptions): ApiQueryUtils<TRouter>;
|
|
10
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/query/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAElE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,MAAM,MAAM,aAAa,CAAC,OAAO,SAAS,SAAS,IAAI,WAAW,CAChE,YAAY,CAAC,OAAO,CAAC,CACtB,CAAA;AAED,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,GAAG,SAAS,EACnE,OAAO,GAAE,gBAAqB,GAC7B,aAAa,CAAC,OAAO,CAAC,CAGxB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createTanstackQueryUtils, } from '@orpc/tanstack-query';
|
|
2
|
+
import { createRpcClient } from '../client/rpc-client.js';
|
|
3
|
+
export function createApiClient(options = {}) {
|
|
4
|
+
const client = createRpcClient(options);
|
|
5
|
+
return createTanstackQueryUtils(client);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/query/api.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,GAEzB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,eAAe,EAAc,MAAM,sBAAsB,CAAA;AAWlE,MAAM,UAAU,eAAe,CAC7B,UAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,eAAe,CAAU,OAAO,CAAC,CAAA;IAChD,OAAO,wBAAwB,CAAC,MAA0C,CAAC,CAAA;AAC7E,CAAC","sourcesContent":["import type { AnyRouter, RouterClient } from '@orpc/server'\n\nimport {\n createTanstackQueryUtils,\n type RouterUtils,\n} from '@orpc/tanstack-query'\n\nimport { createRpcClient, type Fetch } from '../client/rpc-client'\n\nexport interface ApiClientOptions {\n baseUrl?: string\n fetch?: Fetch\n}\n\nexport type ApiQueryUtils<TRouter extends AnyRouter> = RouterUtils<\n RouterClient<TRouter>\n>\n\nexport function createApiClient<TRouter extends AnyRouter = AnyRouter>(\n options: ApiClientOptions = {},\n): ApiQueryUtils<TRouter> {\n const client = createRpcClient<TRouter>(options)\n return createTanstackQueryUtils(client as unknown as RouterClient<TRouter>)\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { QueryClient } from '@tanstack/query-core';
|
|
2
|
+
import type { ApiQueryUtils } from './api.js';
|
|
3
|
+
import type { AnyWorkerstackApp, InferApiRouter, InferBuckets } from './infer.js';
|
|
4
|
+
import { type TransportFetch } from './fetch.js';
|
|
5
|
+
export type ClientOptions = {
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
fetch?: TransportFetch;
|
|
8
|
+
queryClient?: QueryClient;
|
|
9
|
+
};
|
|
10
|
+
export type UploadedFile = {
|
|
11
|
+
fileId: string;
|
|
12
|
+
url: string;
|
|
13
|
+
name: string;
|
|
14
|
+
};
|
|
15
|
+
export type FileBucketHelpers = {
|
|
16
|
+
url(idOrFileId: string): string;
|
|
17
|
+
upload(file: File): Promise<UploadedFile>;
|
|
18
|
+
delete(idOrFileId: string): Promise<void>;
|
|
19
|
+
};
|
|
20
|
+
type FileHelpers<TBuckets extends string> = {
|
|
21
|
+
files: {
|
|
22
|
+
[K in TBuckets]: FileBucketHelpers;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type WorkerstackClient<TApp extends AnyWorkerstackApp> = ApiQueryUtils<InferApiRouter<TApp>> & FileHelpers<InferBuckets<TApp>>;
|
|
26
|
+
export declare function createClient<TApp extends AnyWorkerstackApp>(options?: ClientOptions): WorkerstackClient<TApp>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/query/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAG9E,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,SAAS,CAAA;AAE1D,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACzC,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1C,CAAA;AAED,KAAK,WAAW,CAAC,QAAQ,SAAS,MAAM,IAAI;IAC1C,KAAK,EAAE;SAAG,CAAC,IAAI,QAAQ,GAAG,iBAAiB;KAAE,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,iBAAiB,CAAC,IAAI,SAAS,iBAAiB,IAAI,aAAa,CAC3E,cAAc,CAAC,IAAI,CAAC,CACrB,GACC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;AAuGjC,wBAAgB,YAAY,CAAC,IAAI,SAAS,iBAAiB,EACzD,OAAO,GAAE,aAAkB,GAC1B,iBAAiB,CAAC,IAAI,CAAC,CAKzB"}
|