covara 0.0.1 → 0.6.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/README.md +839 -0
- package/dist/auth/adapter.d.ts +47 -0
- package/dist/auth/adapter.d.ts.map +1 -0
- package/dist/auth/adapter.js +144 -0
- package/dist/auth/adapter.js.map +1 -0
- package/dist/auth/adapters/authjs.d.ts +31 -0
- package/dist/auth/adapters/authjs.d.ts.map +1 -0
- package/dist/auth/adapters/authjs.js +143 -0
- package/dist/auth/adapters/authjs.js.map +1 -0
- package/dist/auth/adapters/jwt.d.ts +70 -0
- package/dist/auth/adapters/jwt.d.ts.map +1 -0
- package/dist/auth/adapters/jwt.js +368 -0
- package/dist/auth/adapters/jwt.js.map +1 -0
- package/dist/auth/adapters/oidc.d.ts +120 -0
- package/dist/auth/adapters/oidc.d.ts.map +1 -0
- package/dist/auth/adapters/oidc.js +280 -0
- package/dist/auth/adapters/oidc.js.map +1 -0
- package/dist/auth/adapters/passport.d.ts +44 -0
- package/dist/auth/adapters/passport.d.ts.map +1 -0
- package/dist/auth/adapters/passport.js +206 -0
- package/dist/auth/adapters/passport.js.map +1 -0
- package/dist/auth/api-keys.d.ts +68 -0
- package/dist/auth/api-keys.d.ts.map +1 -0
- package/dist/auth/api-keys.js +117 -0
- package/dist/auth/api-keys.js.map +1 -0
- package/dist/auth/config.d.ts +36 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +50 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/csrf.d.ts +18 -0
- package/dist/auth/csrf.d.ts.map +1 -0
- package/dist/auth/csrf.js +59 -0
- package/dist/auth/csrf.js.map +1 -0
- package/dist/auth/index.d.ts +25 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +22 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/login-throttle.d.ts +21 -0
- package/dist/auth/login-throttle.d.ts.map +1 -0
- package/dist/auth/login-throttle.js +50 -0
- package/dist/auth/login-throttle.js.map +1 -0
- package/dist/auth/magic-link.d.ts +13 -0
- package/dist/auth/magic-link.d.ts.map +1 -0
- package/dist/auth/magic-link.js +14 -0
- package/dist/auth/magic-link.js.map +1 -0
- package/dist/auth/middleware.d.ts +20 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +116 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/password-policy.d.ts +18 -0
- package/dist/auth/password-policy.d.ts.map +1 -0
- package/dist/auth/password-policy.js +72 -0
- package/dist/auth/password-policy.js.map +1 -0
- package/dist/auth/password-reset.d.ts +13 -0
- package/dist/auth/password-reset.d.ts.map +1 -0
- package/dist/auth/password-reset.js +17 -0
- package/dist/auth/password-reset.js.map +1 -0
- package/dist/auth/password.d.ts +11 -0
- package/dist/auth/password.d.ts.map +1 -0
- package/dist/auth/password.js +98 -0
- package/dist/auth/password.js.map +1 -0
- package/dist/auth/routes.d.ts +111 -0
- package/dist/auth/routes.d.ts.map +1 -0
- package/dist/auth/routes.js +417 -0
- package/dist/auth/routes.js.map +1 -0
- package/dist/auth/rsql.d.ts +33 -0
- package/dist/auth/rsql.d.ts.map +1 -0
- package/dist/auth/rsql.js +102 -0
- package/dist/auth/rsql.js.map +1 -0
- package/dist/auth/scope.d.ts +26 -0
- package/dist/auth/scope.d.ts.map +1 -0
- package/dist/auth/scope.js +166 -0
- package/dist/auth/scope.js.map +1 -0
- package/dist/auth/stores/drizzle.d.ts +39 -0
- package/dist/auth/stores/drizzle.d.ts.map +1 -0
- package/dist/auth/stores/drizzle.js +183 -0
- package/dist/auth/stores/drizzle.js.map +1 -0
- package/dist/auth/stores/index.d.ts +6 -0
- package/dist/auth/stores/index.d.ts.map +1 -0
- package/dist/auth/stores/index.js +4 -0
- package/dist/auth/stores/index.js.map +1 -0
- package/dist/auth/stores/redis.d.ts +25 -0
- package/dist/auth/stores/redis.d.ts.map +1 -0
- package/dist/auth/stores/redis.js +147 -0
- package/dist/auth/stores/redis.js.map +1 -0
- package/dist/auth/totp.d.ts +32 -0
- package/dist/auth/totp.d.ts.map +1 -0
- package/dist/auth/totp.js +126 -0
- package/dist/auth/totp.js.map +1 -0
- package/dist/auth/types.d.ts +82 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +53 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/verification.d.ts +32 -0
- package/dist/auth/verification.d.ts.map +1 -0
- package/dist/auth/verification.js +0 -0
- package/dist/auth/verification.js.map +1 -0
- package/dist/billing/credits.d.ts +29 -0
- package/dist/billing/credits.d.ts.map +1 -0
- package/dist/billing/credits.js +66 -0
- package/dist/billing/credits.js.map +1 -0
- package/dist/billing/index.d.ts +53 -0
- package/dist/billing/index.d.ts.map +1 -0
- package/dist/billing/index.js +139 -0
- package/dist/billing/index.js.map +1 -0
- package/dist/billing/lemonsqueezy.d.ts +29 -0
- package/dist/billing/lemonsqueezy.d.ts.map +1 -0
- package/dist/billing/lemonsqueezy.js +276 -0
- package/dist/billing/lemonsqueezy.js.map +1 -0
- package/dist/billing/paddle.d.ts +30 -0
- package/dist/billing/paddle.d.ts.map +1 -0
- package/dist/billing/paddle.js +247 -0
- package/dist/billing/paddle.js.map +1 -0
- package/dist/billing/polar.d.ts +31 -0
- package/dist/billing/polar.d.ts.map +1 -0
- package/dist/billing/polar.js +284 -0
- package/dist/billing/polar.js.map +1 -0
- package/dist/billing/router.d.ts +9 -0
- package/dist/billing/router.d.ts.map +1 -0
- package/dist/billing/router.js +75 -0
- package/dist/billing/router.js.map +1 -0
- package/dist/billing/stripe.d.ts +31 -0
- package/dist/billing/stripe.d.ts.map +1 -0
- package/dist/billing/stripe.js +319 -0
- package/dist/billing/stripe.js.map +1 -0
- package/dist/billing/types.d.ts +97 -0
- package/dist/billing/types.d.ts.map +1 -0
- package/dist/billing/types.js +9 -0
- package/dist/billing/types.js.map +1 -0
- package/dist/cli/create.d.ts +10 -0
- package/dist/cli/create.d.ts.map +1 -0
- package/dist/cli/create.js +79 -0
- package/dist/cli/create.js.map +1 -0
- package/dist/cli/generate.d.ts +16 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +105 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +185 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/options.d.ts +11 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +14 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/templates/configs.d.ts +12 -0
- package/dist/cli/templates/configs.d.ts.map +1 -0
- package/dist/cli/templates/configs.js +174 -0
- package/dist/cli/templates/configs.js.map +1 -0
- package/dist/cli/templates/deploy.d.ts +6 -0
- package/dist/cli/templates/deploy.d.ts.map +1 -0
- package/dist/cli/templates/deploy.js +147 -0
- package/dist/cli/templates/deploy.js.map +1 -0
- package/dist/cli/templates/index.d.ts +8 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/index.js +35 -0
- package/dist/cli/templates/index.js.map +1 -0
- package/dist/cli/templates/package-json.d.ts +3 -0
- package/dist/cli/templates/package-json.d.ts.map +1 -0
- package/dist/cli/templates/package-json.js +76 -0
- package/dist/cli/templates/package-json.js.map +1 -0
- package/dist/cli/templates/readme.d.ts +3 -0
- package/dist/cli/templates/readme.d.ts.map +1 -0
- package/dist/cli/templates/readme.js +109 -0
- package/dist/cli/templates/readme.js.map +1 -0
- package/dist/cli/templates/source.d.ts +11 -0
- package/dist/cli/templates/source.d.ts.map +1 -0
- package/dist/cli/templates/source.js +158 -0
- package/dist/cli/templates/source.js.map +1 -0
- package/dist/client/auth/auth-transport.d.ts +24 -0
- package/dist/client/auth/auth-transport.d.ts.map +1 -0
- package/dist/client/auth/auth-transport.js +78 -0
- package/dist/client/auth/auth-transport.js.map +1 -0
- package/dist/client/auth/index.d.ts +52 -0
- package/dist/client/auth/index.d.ts.map +1 -0
- package/dist/client/auth/index.js +350 -0
- package/dist/client/auth/index.js.map +1 -0
- package/dist/client/auth/oidc-client.d.ts +17 -0
- package/dist/client/auth/oidc-client.d.ts.map +1 -0
- package/dist/client/auth/oidc-client.js +159 -0
- package/dist/client/auth/oidc-client.js.map +1 -0
- package/dist/client/auth/token-manager.d.ts +51 -0
- package/dist/client/auth/token-manager.d.ts.map +1 -0
- package/dist/client/auth/token-manager.js +222 -0
- package/dist/client/auth/token-manager.js.map +1 -0
- package/dist/client/auth/types.d.ts +82 -0
- package/dist/client/auth/types.d.ts.map +1 -0
- package/dist/client/auth/types.js +2 -0
- package/dist/client/auth/types.js.map +1 -0
- package/dist/client/billing.d.ts +54 -0
- package/dist/client/billing.d.ts.map +1 -0
- package/dist/client/billing.js +58 -0
- package/dist/client/billing.js.map +1 -0
- package/dist/client/dates.d.ts +40 -0
- package/dist/client/dates.d.ts.map +1 -0
- package/dist/client/dates.js +56 -0
- package/dist/client/dates.js.map +1 -0
- package/dist/client/env.d.ts +24 -0
- package/dist/client/env.d.ts.map +1 -0
- package/dist/client/env.js +105 -0
- package/dist/client/env.js.map +1 -0
- package/dist/client/file-upload.d.ts +53 -0
- package/dist/client/file-upload.d.ts.map +1 -0
- package/dist/client/file-upload.js +162 -0
- package/dist/client/file-upload.js.map +1 -0
- package/dist/client/globals.d.ts +6 -0
- package/dist/client/globals.d.ts.map +1 -0
- package/dist/client/globals.js +23 -0
- package/dist/client/globals.js.map +1 -0
- package/dist/client/index.d.ts +60 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +266 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/indexeddb-storage.d.ts +22 -0
- package/dist/client/indexeddb-storage.d.ts.map +1 -0
- package/dist/client/indexeddb-storage.js +79 -0
- package/dist/client/indexeddb-storage.js.map +1 -0
- package/dist/client/jwt.d.ts +62 -0
- package/dist/client/jwt.d.ts.map +1 -0
- package/dist/client/jwt.js +164 -0
- package/dist/client/jwt.js.map +1 -0
- package/dist/client/live-store.d.ts +49 -0
- package/dist/client/live-store.d.ts.map +1 -0
- package/dist/client/live-store.js +638 -0
- package/dist/client/live-store.js.map +1 -0
- package/dist/client/mutation.d.ts +73 -0
- package/dist/client/mutation.d.ts.map +1 -0
- package/dist/client/mutation.js +72 -0
- package/dist/client/mutation.js.map +1 -0
- package/dist/client/offline.d.ts +110 -0
- package/dist/client/offline.d.ts.map +1 -0
- package/dist/client/offline.js +551 -0
- package/dist/client/offline.js.map +1 -0
- package/dist/client/query-builder.d.ts +130 -0
- package/dist/client/query-builder.d.ts.map +1 -0
- package/dist/client/query-builder.js +300 -0
- package/dist/client/query-builder.js.map +1 -0
- package/dist/client/query-cache.d.ts +64 -0
- package/dist/client/query-cache.d.ts.map +1 -0
- package/dist/client/query-cache.js +112 -0
- package/dist/client/query-cache.js.map +1 -0
- package/dist/client/query-types.d.ts +61 -0
- package/dist/client/query-types.d.ts.map +1 -0
- package/dist/client/query-types.js +2 -0
- package/dist/client/query-types.js.map +1 -0
- package/dist/client/react-billing.d.ts +24 -0
- package/dist/client/react-billing.d.ts.map +1 -0
- package/dist/client/react-billing.js +101 -0
- package/dist/client/react-billing.js.map +1 -0
- package/dist/client/react-files.d.ts +46 -0
- package/dist/client/react-files.d.ts.map +1 -0
- package/dist/client/react-files.js +174 -0
- package/dist/client/react-files.js.map +1 -0
- package/dist/client/react-jwt.d.ts +17 -0
- package/dist/client/react-jwt.d.ts.map +1 -0
- package/dist/client/react-jwt.js +73 -0
- package/dist/client/react-jwt.js.map +1 -0
- package/dist/client/react.d.ts +210 -0
- package/dist/client/react.d.ts.map +1 -0
- package/dist/client/react.js +599 -0
- package/dist/client/react.js.map +1 -0
- package/dist/client/repository.d.ts +49 -0
- package/dist/client/repository.d.ts.map +1 -0
- package/dist/client/repository.js +269 -0
- package/dist/client/repository.js.map +1 -0
- package/dist/client/resource-query-builder.d.ts +35 -0
- package/dist/client/resource-query-builder.d.ts.map +1 -0
- package/dist/client/resource-query-builder.js +177 -0
- package/dist/client/resource-query-builder.js.map +1 -0
- package/dist/client/subscription-manager.d.ts +37 -0
- package/dist/client/subscription-manager.d.ts.map +1 -0
- package/dist/client/subscription-manager.js +164 -0
- package/dist/client/subscription-manager.js.map +1 -0
- package/dist/client/tab-sync.d.ts +35 -0
- package/dist/client/tab-sync.d.ts.map +1 -0
- package/dist/client/tab-sync.js +129 -0
- package/dist/client/tab-sync.js.map +1 -0
- package/dist/client/transport.d.ts +50 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +205 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/client/typegen.d.ts +20 -0
- package/dist/client/typegen.d.ts.map +1 -0
- package/dist/client/typegen.js +578 -0
- package/dist/client/typegen.js.map +1 -0
- package/dist/client/types.d.ts +472 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/internal-schema.d.ts +3831 -0
- package/dist/db/internal-schema.d.ts.map +1 -0
- package/dist/db/internal-schema.js +130 -0
- package/dist/db/internal-schema.js.map +1 -0
- package/dist/db/migrate.d.ts +15 -0
- package/dist/db/migrate.d.ts.map +1 -0
- package/dist/db/migrate.js +127 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/pooling.d.ts +9 -0
- package/dist/db/pooling.d.ts.map +1 -0
- package/dist/db/pooling.js +42 -0
- package/dist/db/pooling.js.map +1 -0
- package/dist/db/seed.d.ts +24 -0
- package/dist/db/seed.d.ts.map +1 -0
- package/dist/db/seed.js +34 -0
- package/dist/db/seed.js.map +1 -0
- package/dist/email/builder.d.ts +38 -0
- package/dist/email/builder.d.ts.map +1 -0
- package/dist/email/builder.js +153 -0
- package/dist/email/builder.js.map +1 -0
- package/dist/email/cloudflare.d.ts +24 -0
- package/dist/email/cloudflare.d.ts.map +1 -0
- package/dist/email/cloudflare.js +146 -0
- package/dist/email/cloudflare.js.map +1 -0
- package/dist/email/index.d.ts +12 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +27 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/resend.d.ts +15 -0
- package/dist/email/resend.d.ts.map +1 -0
- package/dist/email/resend.js +114 -0
- package/dist/email/resend.js.map +1 -0
- package/dist/email/types.d.ts +36 -0
- package/dist/email/types.d.ts.map +1 -0
- package/dist/email/types.js +12 -0
- package/dist/email/types.js.map +1 -0
- package/dist/env/index.d.ts +52 -0
- package/dist/env/index.d.ts.map +1 -0
- package/dist/env/index.js +153 -0
- package/dist/env/index.js.map +1 -0
- package/dist/health/checks.d.ts +40 -0
- package/dist/health/checks.d.ts.map +1 -0
- package/dist/health/checks.js +166 -0
- package/dist/health/checks.js.map +1 -0
- package/dist/health/index.d.ts +26 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +104 -0
- package/dist/health/index.js.map +1 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/kv/durable-object.d.ts +192 -0
- package/dist/kv/durable-object.d.ts.map +1 -0
- package/dist/kv/durable-object.js +1059 -0
- package/dist/kv/durable-object.js.map +1 -0
- package/dist/kv/index.d.ts +56 -0
- package/dist/kv/index.d.ts.map +1 -0
- package/dist/kv/index.js +96 -0
- package/dist/kv/index.js.map +1 -0
- package/dist/kv/memory.d.ts +78 -0
- package/dist/kv/memory.d.ts.map +1 -0
- package/dist/kv/memory.js +599 -0
- package/dist/kv/memory.js.map +1 -0
- package/dist/kv/redis.d.ts +148 -0
- package/dist/kv/redis.d.ts.map +1 -0
- package/dist/kv/redis.js +405 -0
- package/dist/kv/redis.js.map +1 -0
- package/dist/kv/types.d.ts +132 -0
- package/dist/kv/types.d.ts.map +1 -0
- package/dist/kv/types.js +24 -0
- package/dist/kv/types.js.map +1 -0
- package/dist/middleware/error.d.ts +4 -0
- package/dist/middleware/error.d.ts.map +1 -0
- package/dist/middleware/error.js +63 -0
- package/dist/middleware/error.js.map +1 -0
- package/dist/middleware/idempotency.d.ts +21 -0
- package/dist/middleware/idempotency.d.ts.map +1 -0
- package/dist/middleware/idempotency.js +144 -0
- package/dist/middleware/idempotency.js.map +1 -0
- package/dist/middleware/logging.d.ts +3 -0
- package/dist/middleware/logging.d.ts.map +1 -0
- package/dist/middleware/logging.js +6 -0
- package/dist/middleware/logging.js.map +1 -0
- package/dist/middleware/observability.d.ts +104 -0
- package/dist/middleware/observability.d.ts.map +1 -0
- package/dist/middleware/observability.js +231 -0
- package/dist/middleware/observability.js.map +1 -0
- package/dist/middleware/rateLimit.d.ts +83 -0
- package/dist/middleware/rateLimit.d.ts.map +1 -0
- package/dist/middleware/rateLimit.js +255 -0
- package/dist/middleware/rateLimit.js.map +1 -0
- package/dist/middleware/securityHeaders.d.ts +18 -0
- package/dist/middleware/securityHeaders.d.ts.map +1 -0
- package/dist/middleware/securityHeaders.js +58 -0
- package/dist/middleware/securityHeaders.js.map +1 -0
- package/dist/middleware/versioning.d.ts +62 -0
- package/dist/middleware/versioning.d.ts.map +1 -0
- package/dist/middleware/versioning.js +178 -0
- package/dist/middleware/versioning.js.map +1 -0
- package/dist/oidc/backends/email-password.d.ts +3 -0
- package/dist/oidc/backends/email-password.d.ts.map +1 -0
- package/dist/oidc/backends/email-password.js +37 -0
- package/dist/oidc/backends/email-password.js.map +1 -0
- package/dist/oidc/backends/federated.d.ts +13 -0
- package/dist/oidc/backends/federated.d.ts.map +1 -0
- package/dist/oidc/backends/federated.js +225 -0
- package/dist/oidc/backends/federated.js.map +1 -0
- package/dist/oidc/backends/index.d.ts +3 -0
- package/dist/oidc/backends/index.d.ts.map +1 -0
- package/dist/oidc/backends/index.js +3 -0
- package/dist/oidc/backends/index.js.map +1 -0
- package/dist/oidc/body.d.ts +3 -0
- package/dist/oidc/body.d.ts.map +1 -0
- package/dist/oidc/body.js +23 -0
- package/dist/oidc/body.js.map +1 -0
- package/dist/oidc/discovery.d.ts +3 -0
- package/dist/oidc/discovery.d.ts.map +1 -0
- package/dist/oidc/discovery.js +66 -0
- package/dist/oidc/discovery.js.map +1 -0
- package/dist/oidc/endpoints/authorize.d.ts +12 -0
- package/dist/oidc/endpoints/authorize.d.ts.map +1 -0
- package/dist/oidc/endpoints/authorize.js +148 -0
- package/dist/oidc/endpoints/authorize.js.map +1 -0
- package/dist/oidc/endpoints/client-auth.d.ts +9 -0
- package/dist/oidc/endpoints/client-auth.d.ts.map +1 -0
- package/dist/oidc/endpoints/client-auth.js +52 -0
- package/dist/oidc/endpoints/client-auth.js.map +1 -0
- package/dist/oidc/endpoints/index.d.ts +9 -0
- package/dist/oidc/endpoints/index.d.ts.map +1 -0
- package/dist/oidc/endpoints/index.js +9 -0
- package/dist/oidc/endpoints/index.js.map +1 -0
- package/dist/oidc/endpoints/introspection.d.ts +9 -0
- package/dist/oidc/endpoints/introspection.d.ts.map +1 -0
- package/dist/oidc/endpoints/introspection.js +57 -0
- package/dist/oidc/endpoints/introspection.js.map +1 -0
- package/dist/oidc/endpoints/jwks.d.ts +4 -0
- package/dist/oidc/endpoints/jwks.d.ts.map +1 -0
- package/dist/oidc/endpoints/jwks.js +11 -0
- package/dist/oidc/endpoints/jwks.js.map +1 -0
- package/dist/oidc/endpoints/logout.d.ts +12 -0
- package/dist/oidc/endpoints/logout.d.ts.map +1 -0
- package/dist/oidc/endpoints/logout.js +92 -0
- package/dist/oidc/endpoints/logout.js.map +1 -0
- package/dist/oidc/endpoints/register.d.ts +9 -0
- package/dist/oidc/endpoints/register.d.ts.map +1 -0
- package/dist/oidc/endpoints/register.js +104 -0
- package/dist/oidc/endpoints/register.js.map +1 -0
- package/dist/oidc/endpoints/revocation.d.ts +9 -0
- package/dist/oidc/endpoints/revocation.d.ts.map +1 -0
- package/dist/oidc/endpoints/revocation.js +31 -0
- package/dist/oidc/endpoints/revocation.js.map +1 -0
- package/dist/oidc/endpoints/token.d.ts +11 -0
- package/dist/oidc/endpoints/token.d.ts.map +1 -0
- package/dist/oidc/endpoints/token.js +167 -0
- package/dist/oidc/endpoints/token.js.map +1 -0
- package/dist/oidc/endpoints/userinfo.d.ts +10 -0
- package/dist/oidc/endpoints/userinfo.d.ts.map +1 -0
- package/dist/oidc/endpoints/userinfo.js +58 -0
- package/dist/oidc/endpoints/userinfo.js.map +1 -0
- package/dist/oidc/index.d.ts +79 -0
- package/dist/oidc/index.d.ts.map +1 -0
- package/dist/oidc/index.js +44 -0
- package/dist/oidc/index.js.map +1 -0
- package/dist/oidc/keys/index.d.ts +2 -0
- package/dist/oidc/keys/index.d.ts.map +1 -0
- package/dist/oidc/keys/index.js +2 -0
- package/dist/oidc/keys/index.js.map +1 -0
- package/dist/oidc/keys/jwk.d.ts +3 -0
- package/dist/oidc/keys/jwk.d.ts.map +1 -0
- package/dist/oidc/keys/jwk.js +171 -0
- package/dist/oidc/keys/jwk.js.map +1 -0
- package/dist/oidc/provider.d.ts +10 -0
- package/dist/oidc/provider.d.ts.map +1 -0
- package/dist/oidc/provider.js +152 -0
- package/dist/oidc/provider.js.map +1 -0
- package/dist/oidc/rate-limit.d.ts +9 -0
- package/dist/oidc/rate-limit.d.ts.map +1 -0
- package/dist/oidc/rate-limit.js +61 -0
- package/dist/oidc/rate-limit.js.map +1 -0
- package/dist/oidc/stores/index.d.ts +124 -0
- package/dist/oidc/stores/index.d.ts.map +1 -0
- package/dist/oidc/stores/index.js +337 -0
- package/dist/oidc/stores/index.js.map +1 -0
- package/dist/oidc/tokens/index.d.ts +4 -0
- package/dist/oidc/tokens/index.d.ts.map +1 -0
- package/dist/oidc/tokens/index.js +158 -0
- package/dist/oidc/tokens/index.js.map +1 -0
- package/dist/oidc/types.d.ts +442 -0
- package/dist/oidc/types.d.ts.map +1 -0
- package/dist/oidc/types.js +2 -0
- package/dist/oidc/types.js.map +1 -0
- package/dist/oidc/ui/consent.d.ts +12 -0
- package/dist/oidc/ui/consent.d.ts.map +1 -0
- package/dist/oidc/ui/consent.js +180 -0
- package/dist/oidc/ui/consent.js.map +1 -0
- package/dist/oidc/ui/index.d.ts +3 -0
- package/dist/oidc/ui/index.d.ts.map +1 -0
- package/dist/oidc/ui/index.js +3 -0
- package/dist/oidc/ui/index.js.map +1 -0
- package/dist/oidc/ui/login.d.ts +12 -0
- package/dist/oidc/ui/login.d.ts.map +1 -0
- package/dist/oidc/ui/login.js +159 -0
- package/dist/oidc/ui/login.js.map +1 -0
- package/dist/oidc/util.d.ts +5 -0
- package/dist/oidc/util.d.ts.map +1 -0
- package/dist/oidc/util.js +67 -0
- package/dist/oidc/util.js.map +1 -0
- package/dist/openapi/generator.d.ts +131 -0
- package/dist/openapi/generator.d.ts.map +1 -0
- package/dist/openapi/generator.js +609 -0
- package/dist/openapi/generator.js.map +1 -0
- package/dist/openapi/index.d.ts +5 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +3 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi/schema.d.ts +51 -0
- package/dist/openapi/schema.d.ts.map +1 -0
- package/dist/openapi/schema.js +296 -0
- package/dist/openapi/schema.js.map +1 -0
- package/dist/resource/batch.d.ts +40 -0
- package/dist/resource/batch.d.ts.map +1 -0
- package/dist/resource/batch.js +144 -0
- package/dist/resource/batch.js.map +1 -0
- package/dist/resource/capabilities.d.ts +29 -0
- package/dist/resource/capabilities.d.ts.map +1 -0
- package/dist/resource/capabilities.js +224 -0
- package/dist/resource/capabilities.js.map +1 -0
- package/dist/resource/changelog.d.ts +41 -0
- package/dist/resource/changelog.d.ts.map +1 -0
- package/dist/resource/changelog.js +275 -0
- package/dist/resource/changelog.js.map +1 -0
- package/dist/resource/error.d.ts +110 -0
- package/dist/resource/error.d.ts.map +1 -0
- package/dist/resource/error.js +276 -0
- package/dist/resource/error.js.map +1 -0
- package/dist/resource/etag.d.ts +30 -0
- package/dist/resource/etag.d.ts.map +1 -0
- package/dist/resource/etag.js +148 -0
- package/dist/resource/etag.js.map +1 -0
- package/dist/resource/filter.d.ts +36 -0
- package/dist/resource/filter.d.ts.map +1 -0
- package/dist/resource/filter.js +1136 -0
- package/dist/resource/filter.js.map +1 -0
- package/dist/resource/hook.d.ts +13 -0
- package/dist/resource/hook.d.ts.map +1 -0
- package/dist/resource/hook.js +976 -0
- package/dist/resource/hook.js.map +1 -0
- package/dist/resource/mutate.d.ts +49 -0
- package/dist/resource/mutate.d.ts.map +1 -0
- package/dist/resource/mutate.js +247 -0
- package/dist/resource/mutate.js.map +1 -0
- package/dist/resource/operator-equivalence.d.ts +54 -0
- package/dist/resource/operator-equivalence.d.ts.map +1 -0
- package/dist/resource/operator-equivalence.js +342 -0
- package/dist/resource/operator-equivalence.js.map +1 -0
- package/dist/resource/pagination.d.ts +63 -0
- package/dist/resource/pagination.d.ts.map +1 -0
- package/dist/resource/pagination.js +266 -0
- package/dist/resource/pagination.js.map +1 -0
- package/dist/resource/procedures.d.ts +28 -0
- package/dist/resource/procedures.d.ts.map +1 -0
- package/dist/resource/procedures.js +197 -0
- package/dist/resource/procedures.js.map +1 -0
- package/dist/resource/query.d.ts +37 -0
- package/dist/resource/query.d.ts.map +1 -0
- package/dist/resource/query.js +246 -0
- package/dist/resource/query.js.map +1 -0
- package/dist/resource/relations.d.ts +70 -0
- package/dist/resource/relations.d.ts.map +1 -0
- package/dist/resource/relations.js +395 -0
- package/dist/resource/relations.js.map +1 -0
- package/dist/resource/search-outbox.d.ts +38 -0
- package/dist/resource/search-outbox.d.ts.map +1 -0
- package/dist/resource/search-outbox.js +121 -0
- package/dist/resource/search-outbox.js.map +1 -0
- package/dist/resource/search.d.ts +14 -0
- package/dist/resource/search.d.ts.map +1 -0
- package/dist/resource/search.js +267 -0
- package/dist/resource/search.js.map +1 -0
- package/dist/resource/secure-query.d.ts +55 -0
- package/dist/resource/secure-query.d.ts.map +1 -0
- package/dist/resource/secure-query.js +175 -0
- package/dist/resource/secure-query.js.map +1 -0
- package/dist/resource/subscription.d.ts +46 -0
- package/dist/resource/subscription.d.ts.map +1 -0
- package/dist/resource/subscription.js +684 -0
- package/dist/resource/subscription.js.map +1 -0
- package/dist/resource/track-mutations.d.ts +58 -0
- package/dist/resource/track-mutations.d.ts.map +1 -0
- package/dist/resource/track-mutations.js +721 -0
- package/dist/resource/track-mutations.js.map +1 -0
- package/dist/resource/types.d.ts +298 -0
- package/dist/resource/types.d.ts.map +1 -0
- package/dist/resource/types.js +2 -0
- package/dist/resource/types.js.map +1 -0
- package/dist/search/index.d.ts +11 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +22 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/memory.d.ts +6 -0
- package/dist/search/memory.d.ts.map +1 -0
- package/dist/search/memory.js +70 -0
- package/dist/search/memory.js.map +1 -0
- package/dist/search/opensearch.d.ts +47 -0
- package/dist/search/opensearch.d.ts.map +1 -0
- package/dist/search/opensearch.js +126 -0
- package/dist/search/opensearch.js.map +1 -0
- package/dist/search/postgres-fts.d.ts +16 -0
- package/dist/search/postgres-fts.d.ts.map +1 -0
- package/dist/search/postgres-fts.js +171 -0
- package/dist/search/postgres-fts.js.map +1 -0
- package/dist/search/sqlite-fts.d.ts +14 -0
- package/dist/search/sqlite-fts.d.ts.map +1 -0
- package/dist/search/sqlite-fts.js +185 -0
- package/dist/search/sqlite-fts.js.map +1 -0
- package/dist/search/types.d.ts +49 -0
- package/dist/search/types.d.ts.map +1 -0
- package/dist/search/types.js +2 -0
- package/dist/search/types.js.map +1 -0
- package/dist/server/app.d.ts +33 -0
- package/dist/server/app.d.ts.map +1 -0
- package/dist/server/app.js +82 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/context.d.ts +16 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +12 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/env.d.ts +4 -0
- package/dist/server/env.d.ts.map +1 -0
- package/dist/server/env.js +7 -0
- package/dist/server/env.js.map +1 -0
- package/dist/server/lifecycle.d.ts +6 -0
- package/dist/server/lifecycle.d.ts.map +1 -0
- package/dist/server/lifecycle.js +28 -0
- package/dist/server/lifecycle.js.map +1 -0
- package/dist/server/logger.d.ts +28 -0
- package/dist/server/logger.d.ts.map +1 -0
- package/dist/server/logger.js +58 -0
- package/dist/server/logger.js.map +1 -0
- package/dist/server/node.d.ts +18 -0
- package/dist/server/node.d.ts.map +1 -0
- package/dist/server/node.js +47 -0
- package/dist/server/node.js.map +1 -0
- package/dist/server/request.d.ts +4 -0
- package/dist/server/request.d.ts.map +1 -0
- package/dist/server/request.js +29 -0
- package/dist/server/request.js.map +1 -0
- package/dist/server/sse.d.ts +26 -0
- package/dist/server/sse.d.ts.map +1 -0
- package/dist/server/sse.js +115 -0
- package/dist/server/sse.js.map +1 -0
- package/dist/storage/index.d.ts +15 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +41 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/local.d.ts +25 -0
- package/dist/storage/local.d.ts.map +1 -0
- package/dist/storage/local.js +172 -0
- package/dist/storage/local.js.map +1 -0
- package/dist/storage/memory.d.ts +20 -0
- package/dist/storage/memory.d.ts.map +1 -0
- package/dist/storage/memory.js +82 -0
- package/dist/storage/memory.js.map +1 -0
- package/dist/storage/r2.d.ts +62 -0
- package/dist/storage/r2.d.ts.map +1 -0
- package/dist/storage/r2.js +124 -0
- package/dist/storage/r2.js.map +1 -0
- package/dist/storage/resource.d.ts +50 -0
- package/dist/storage/resource.d.ts.map +1 -0
- package/dist/storage/resource.js +346 -0
- package/dist/storage/resource.js.map +1 -0
- package/dist/storage/s3.d.ts +29 -0
- package/dist/storage/s3.d.ts.map +1 -0
- package/dist/storage/s3.js +202 -0
- package/dist/storage/s3.js.map +1 -0
- package/dist/storage/types.d.ts +75 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +17 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/validation.d.ts +11 -0
- package/dist/storage/validation.d.ts.map +1 -0
- package/dist/storage/validation.js +38 -0
- package/dist/storage/validation.js.map +1 -0
- package/dist/tasks/cloudflare-queues.d.ts +63 -0
- package/dist/tasks/cloudflare-queues.d.ts.map +1 -0
- package/dist/tasks/cloudflare-queues.js +172 -0
- package/dist/tasks/cloudflare-queues.js.map +1 -0
- package/dist/tasks/concurrency.d.ts +8 -0
- package/dist/tasks/concurrency.d.ts.map +1 -0
- package/dist/tasks/concurrency.js +27 -0
- package/dist/tasks/concurrency.js.map +1 -0
- package/dist/tasks/define.d.ts +25 -0
- package/dist/tasks/define.d.ts.map +1 -0
- package/dist/tasks/define.js +17 -0
- package/dist/tasks/define.js.map +1 -0
- package/dist/tasks/dlq.d.ts +29 -0
- package/dist/tasks/dlq.d.ts.map +1 -0
- package/dist/tasks/dlq.js +185 -0
- package/dist/tasks/dlq.js.map +1 -0
- package/dist/tasks/idempotency.d.ts +13 -0
- package/dist/tasks/idempotency.d.ts.map +1 -0
- package/dist/tasks/idempotency.js +21 -0
- package/dist/tasks/idempotency.js.map +1 -0
- package/dist/tasks/index.d.ts +27 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +15 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/integration.d.ts +18 -0
- package/dist/tasks/integration.d.ts.map +1 -0
- package/dist/tasks/integration.js +86 -0
- package/dist/tasks/integration.js.map +1 -0
- package/dist/tasks/lock.d.ts +9 -0
- package/dist/tasks/lock.d.ts.map +1 -0
- package/dist/tasks/lock.js +31 -0
- package/dist/tasks/lock.js.map +1 -0
- package/dist/tasks/queue.d.ts +11 -0
- package/dist/tasks/queue.d.ts.map +1 -0
- package/dist/tasks/queue.js +75 -0
- package/dist/tasks/queue.js.map +1 -0
- package/dist/tasks/recurring.d.ts +16 -0
- package/dist/tasks/recurring.d.ts.map +1 -0
- package/dist/tasks/recurring.js +173 -0
- package/dist/tasks/recurring.js.map +1 -0
- package/dist/tasks/retry.d.ts +4 -0
- package/dist/tasks/retry.d.ts.map +1 -0
- package/dist/tasks/retry.js +29 -0
- package/dist/tasks/retry.js.map +1 -0
- package/dist/tasks/scheduler.d.ts +22 -0
- package/dist/tasks/scheduler.d.ts.map +1 -0
- package/dist/tasks/scheduler.js +125 -0
- package/dist/tasks/scheduler.js.map +1 -0
- package/dist/tasks/storage.d.ts +17 -0
- package/dist/tasks/storage.d.ts.map +1 -0
- package/dist/tasks/storage.js +231 -0
- package/dist/tasks/storage.js.map +1 -0
- package/dist/tasks/types.d.ts +144 -0
- package/dist/tasks/types.d.ts.map +1 -0
- package/dist/tasks/types.js +2 -0
- package/dist/tasks/types.js.map +1 -0
- package/dist/tasks/worker.d.ts +21 -0
- package/dist/tasks/worker.d.ts.map +1 -0
- package/dist/tasks/worker.js +267 -0
- package/dist/tasks/worker.js.map +1 -0
- package/dist/ui/admin-auth.d.ts +65 -0
- package/dist/ui/admin-auth.d.ts.map +1 -0
- package/dist/ui/admin-auth.js +248 -0
- package/dist/ui/admin-auth.js.map +1 -0
- package/dist/ui/data-explorer.d.ts +11 -0
- package/dist/ui/data-explorer.d.ts.map +1 -0
- package/dist/ui/data-explorer.js +414 -0
- package/dist/ui/data-explorer.js.map +1 -0
- package/dist/ui/html/components/index.d.ts +75 -0
- package/dist/ui/html/components/index.d.ts.map +1 -0
- package/dist/ui/html/components/index.js +154 -0
- package/dist/ui/html/components/index.js.map +1 -0
- package/dist/ui/html/index.d.ts +6 -0
- package/dist/ui/html/index.d.ts.map +1 -0
- package/dist/ui/html/index.js +6 -0
- package/dist/ui/html/index.js.map +1 -0
- package/dist/ui/html/layout.d.ts +19 -0
- package/dist/ui/html/layout.d.ts.map +1 -0
- package/dist/ui/html/layout.js +162 -0
- package/dist/ui/html/layout.js.map +1 -0
- package/dist/ui/html/pages/admin-audit.d.ts +21 -0
- package/dist/ui/html/pages/admin-audit.d.ts.map +1 -0
- package/dist/ui/html/pages/admin-audit.js +130 -0
- package/dist/ui/html/pages/admin-audit.js.map +1 -0
- package/dist/ui/html/pages/api-explorer.d.ts +40 -0
- package/dist/ui/html/pages/api-explorer.d.ts.map +1 -0
- package/dist/ui/html/pages/api-explorer.js +153 -0
- package/dist/ui/html/pages/api-explorer.js.map +1 -0
- package/dist/ui/html/pages/changelog.d.ts +27 -0
- package/dist/ui/html/pages/changelog.d.ts.map +1 -0
- package/dist/ui/html/pages/changelog.js +129 -0
- package/dist/ui/html/pages/changelog.js.map +1 -0
- package/dist/ui/html/pages/dashboard.d.ts +20 -0
- package/dist/ui/html/pages/dashboard.d.ts.map +1 -0
- package/dist/ui/html/pages/dashboard.js +49 -0
- package/dist/ui/html/pages/dashboard.js.map +1 -0
- package/dist/ui/html/pages/data-explorer.d.ts +48 -0
- package/dist/ui/html/pages/data-explorer.d.ts.map +1 -0
- package/dist/ui/html/pages/data-explorer.js +251 -0
- package/dist/ui/html/pages/data-explorer.js.map +1 -0
- package/dist/ui/html/pages/errors.d.ts +13 -0
- package/dist/ui/html/pages/errors.d.ts.map +1 -0
- package/dist/ui/html/pages/errors.js +38 -0
- package/dist/ui/html/pages/errors.js.map +1 -0
- package/dist/ui/html/pages/filter-tester.d.ts +21 -0
- package/dist/ui/html/pages/filter-tester.d.ts.map +1 -0
- package/dist/ui/html/pages/filter-tester.js +161 -0
- package/dist/ui/html/pages/filter-tester.js.map +1 -0
- package/dist/ui/html/pages/index.d.ts +15 -0
- package/dist/ui/html/pages/index.d.ts.map +1 -0
- package/dist/ui/html/pages/index.js +15 -0
- package/dist/ui/html/pages/index.js.map +1 -0
- package/dist/ui/html/pages/kv-inspector.d.ts +20 -0
- package/dist/ui/html/pages/kv-inspector.d.ts.map +1 -0
- package/dist/ui/html/pages/kv-inspector.js +130 -0
- package/dist/ui/html/pages/kv-inspector.js.map +1 -0
- package/dist/ui/html/pages/requests.d.ts +23 -0
- package/dist/ui/html/pages/requests.d.ts.map +1 -0
- package/dist/ui/html/pages/requests.js +127 -0
- package/dist/ui/html/pages/requests.js.map +1 -0
- package/dist/ui/html/pages/resources.d.ts +27 -0
- package/dist/ui/html/pages/resources.d.ts.map +1 -0
- package/dist/ui/html/pages/resources.js +85 -0
- package/dist/ui/html/pages/resources.js.map +1 -0
- package/dist/ui/html/pages/sessions.d.ts +24 -0
- package/dist/ui/html/pages/sessions.d.ts.map +1 -0
- package/dist/ui/html/pages/sessions.js +157 -0
- package/dist/ui/html/pages/sessions.js.map +1 -0
- package/dist/ui/html/pages/subscriptions.d.ts +32 -0
- package/dist/ui/html/pages/subscriptions.d.ts.map +1 -0
- package/dist/ui/html/pages/subscriptions.js +138 -0
- package/dist/ui/html/pages/subscriptions.js.map +1 -0
- package/dist/ui/html/pages/tasks.d.ts +42 -0
- package/dist/ui/html/pages/tasks.d.ts.map +1 -0
- package/dist/ui/html/pages/tasks.js +225 -0
- package/dist/ui/html/pages/tasks.js.map +1 -0
- package/dist/ui/html/pages/users.d.ts +29 -0
- package/dist/ui/html/pages/users.d.ts.map +1 -0
- package/dist/ui/html/pages/users.js +192 -0
- package/dist/ui/html/pages/users.js.map +1 -0
- package/dist/ui/html/styles.d.ts +2 -0
- package/dist/ui/html/styles.d.ts.map +1 -0
- package/dist/ui/html/styles.js +675 -0
- package/dist/ui/html/styles.js.map +1 -0
- package/dist/ui/html/utils.d.ts +14 -0
- package/dist/ui/html/utils.d.ts.map +1 -0
- package/dist/ui/html/utils.js +76 -0
- package/dist/ui/html/utils.js.map +1 -0
- package/dist/ui/index.d.ts +13 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +7 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/kv-inspector.d.ts +11 -0
- package/dist/ui/kv-inspector.d.ts.map +1 -0
- package/dist/ui/kv-inspector.js +332 -0
- package/dist/ui/kv-inspector.js.map +1 -0
- package/dist/ui/middleware.d.ts +76 -0
- package/dist/ui/middleware.d.ts.map +1 -0
- package/dist/ui/middleware.js +1175 -0
- package/dist/ui/middleware.js.map +1 -0
- package/dist/ui/schema-registry.d.ts +82 -0
- package/dist/ui/schema-registry.d.ts.map +1 -0
- package/dist/ui/schema-registry.js +165 -0
- package/dist/ui/schema-registry.js.map +1 -0
- package/dist/ui/task-monitor.d.ts +12 -0
- package/dist/ui/task-monitor.d.ts.map +1 -0
- package/dist/ui/task-monitor.js +264 -0
- package/dist/ui/task-monitor.js.map +1 -0
- package/package.json +201 -7
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export { setGlobalStorage, getGlobalStorage, hasGlobalStorage, clearGlobalStorage, } from "./types.js";
|
|
2
|
+
export { MemoryStorageAdapter, createMemoryStorage } from "./memory.js";
|
|
3
|
+
export { LocalStorageAdapter, createLocalStorage } from "./local.js";
|
|
4
|
+
export { S3StorageAdapter, createS3Storage } from "./s3.js";
|
|
5
|
+
export { createR2Adapter, R2BindingAdapter, R2S3Adapter } from "./r2.js";
|
|
6
|
+
export { validateUpload } from "./validation.js";
|
|
7
|
+
export { useFileResource } from "./resource.js";
|
|
8
|
+
import { setGlobalStorage } from "./types.js";
|
|
9
|
+
import { createMemoryStorage } from "./memory.js";
|
|
10
|
+
import { createLocalStorage } from "./local.js";
|
|
11
|
+
import { createS3Storage } from "./s3.js";
|
|
12
|
+
import { createR2Adapter } from "./r2.js";
|
|
13
|
+
export const createStorage = (config) => {
|
|
14
|
+
switch (config.type) {
|
|
15
|
+
case "memory":
|
|
16
|
+
return createMemoryStorage();
|
|
17
|
+
case "local":
|
|
18
|
+
if (!config.local) {
|
|
19
|
+
throw new Error("Local storage configuration required when type is 'local'");
|
|
20
|
+
}
|
|
21
|
+
return createLocalStorage(config.local);
|
|
22
|
+
case "s3":
|
|
23
|
+
if (!config.s3) {
|
|
24
|
+
throw new Error("S3 storage configuration required when type is 's3'");
|
|
25
|
+
}
|
|
26
|
+
return createS3Storage(config.s3);
|
|
27
|
+
case "r2":
|
|
28
|
+
if (!config.r2) {
|
|
29
|
+
throw new Error("R2 storage configuration required when type is 'r2'");
|
|
30
|
+
}
|
|
31
|
+
return createR2Adapter(config.r2);
|
|
32
|
+
default:
|
|
33
|
+
throw new Error(`Unknown storage type: ${config.type}`);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
export const initializeStorage = (config) => {
|
|
37
|
+
const storage = createStorage(config);
|
|
38
|
+
setGlobalStorage(storage);
|
|
39
|
+
return storage;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAQtE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAM9C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAO7C,OAAO,EAAiC,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,eAAe,EAAwB,MAAM,MAAM,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,MAAqB,EAAkB,EAAE;IACrE,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,mBAAmB,EAAE,CAAC;QAC/B,KAAK,OAAO;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1C,KAAK,IAAI;YACP,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,IAAI;YACP,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,eAAe,CAAC,MAAM,CAAC,EAAqB,CAAC,CAAC;QACvD;YACE,MAAM,IAAI,KAAK,CAAC,yBAA0B,MAAwB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAqB,EAAkB,EAAE;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC1B,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
import { StorageAdapter, FileMetadata, UploadOptions, UploadResult, PresignedUrlOptions, PresignedUploadResult, LocalStorageConfig } from "./types.js";
|
|
3
|
+
export declare class LocalStorageAdapter implements StorageAdapter {
|
|
4
|
+
private basePath;
|
|
5
|
+
private baseUrl?;
|
|
6
|
+
private createDirectories;
|
|
7
|
+
constructor(config: LocalStorageConfig);
|
|
8
|
+
private getFilePath;
|
|
9
|
+
private getMetadataPath;
|
|
10
|
+
private ensureDirectory;
|
|
11
|
+
upload(key: string, data: Buffer | Readable, options?: UploadOptions): Promise<UploadResult>;
|
|
12
|
+
download(key: string): Promise<Buffer>;
|
|
13
|
+
downloadStream(key: string): Promise<Readable>;
|
|
14
|
+
delete(key: string): Promise<void>;
|
|
15
|
+
deleteMany(keys: string[]): Promise<void>;
|
|
16
|
+
exists(key: string): Promise<boolean>;
|
|
17
|
+
getMetadata(key: string): Promise<FileMetadata | null>;
|
|
18
|
+
getUrl(key: string): string | null;
|
|
19
|
+
getDownloadUrl(key: string, _options?: PresignedUrlOptions): Promise<string | null>;
|
|
20
|
+
getUploadUrl(_key: string, _options?: PresignedUrlOptions): Promise<PresignedUploadResult | null>;
|
|
21
|
+
supportsPresignedUrls(): boolean;
|
|
22
|
+
clear(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
export declare const createLocalStorage: (config: LocalStorageConfig) => StorageAdapter;
|
|
25
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAWjB,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAU;gBAEvB,MAAM,EAAE,kBAAkB;IAMtC,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;YAIT,eAAe;IAMvB,MAAM,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC;IAkDlB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAa9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBlC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAuB5D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO5B,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInB,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAIxC,qBAAqB,IAAI,OAAO;IAI1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ7B;AAED,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,cAE/D,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { createReadStream, createWriteStream } from "node:fs";
|
|
2
|
+
import { mkdir, unlink, stat, readFile, writeFile, access, rm } from "node:fs/promises";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
export class LocalStorageAdapter {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.basePath = resolve(config.basePath);
|
|
7
|
+
this.baseUrl = config.baseUrl;
|
|
8
|
+
this.createDirectories = config.createDirectories ?? true;
|
|
9
|
+
}
|
|
10
|
+
getFilePath(key) {
|
|
11
|
+
return join(this.basePath, key);
|
|
12
|
+
}
|
|
13
|
+
getMetadataPath(key) {
|
|
14
|
+
return join(this.basePath, `${key}.meta.json`);
|
|
15
|
+
}
|
|
16
|
+
async ensureDirectory(filePath) {
|
|
17
|
+
if (this.createDirectories) {
|
|
18
|
+
await mkdir(dirname(filePath), { recursive: true });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async upload(key, data, options) {
|
|
22
|
+
const filePath = this.getFilePath(key);
|
|
23
|
+
const metadataPath = this.getMetadataPath(key);
|
|
24
|
+
await this.ensureDirectory(filePath);
|
|
25
|
+
let size;
|
|
26
|
+
let existingMeta = null;
|
|
27
|
+
try {
|
|
28
|
+
const metaContent = await readFile(metadataPath, "utf-8");
|
|
29
|
+
existingMeta = JSON.parse(metaContent);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// No existing metadata
|
|
33
|
+
}
|
|
34
|
+
if (Buffer.isBuffer(data)) {
|
|
35
|
+
await writeFile(filePath, data);
|
|
36
|
+
size = data.length;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
await new Promise((resolvePromise, reject) => {
|
|
40
|
+
const writeStream = createWriteStream(filePath);
|
|
41
|
+
data.pipe(writeStream);
|
|
42
|
+
writeStream.on("finish", resolvePromise);
|
|
43
|
+
writeStream.on("error", reject);
|
|
44
|
+
data.on("error", reject);
|
|
45
|
+
});
|
|
46
|
+
const stats = await stat(filePath);
|
|
47
|
+
size = stats.size;
|
|
48
|
+
}
|
|
49
|
+
const now = new Date().toISOString();
|
|
50
|
+
const metadata = {
|
|
51
|
+
filename: options?.filename ?? key.split("/").pop() ?? key,
|
|
52
|
+
mimeType: options?.mimeType ?? "application/octet-stream",
|
|
53
|
+
size,
|
|
54
|
+
createdAt: existingMeta?.createdAt ?? now,
|
|
55
|
+
updatedAt: now,
|
|
56
|
+
customMetadata: options?.customMetadata,
|
|
57
|
+
};
|
|
58
|
+
await writeFile(metadataPath, JSON.stringify(metadata, null, 2));
|
|
59
|
+
return {
|
|
60
|
+
key,
|
|
61
|
+
url: this.getUrl(key) ?? undefined,
|
|
62
|
+
size,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
async download(key) {
|
|
66
|
+
const filePath = this.getFilePath(key);
|
|
67
|
+
try {
|
|
68
|
+
return await readFile(filePath);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (error.code === "ENOENT") {
|
|
72
|
+
throw new Error(`File not found: ${key}`);
|
|
73
|
+
}
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async downloadStream(key) {
|
|
78
|
+
const filePath = this.getFilePath(key);
|
|
79
|
+
try {
|
|
80
|
+
await access(filePath);
|
|
81
|
+
return createReadStream(filePath);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
if (error.code === "ENOENT") {
|
|
85
|
+
throw new Error(`File not found: ${key}`);
|
|
86
|
+
}
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async delete(key) {
|
|
91
|
+
const filePath = this.getFilePath(key);
|
|
92
|
+
const metadataPath = this.getMetadataPath(key);
|
|
93
|
+
try {
|
|
94
|
+
await unlink(filePath);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error.code !== "ENOENT") {
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
await unlink(metadataPath);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
if (error.code !== "ENOENT") {
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async deleteMany(keys) {
|
|
111
|
+
await Promise.all(keys.map((key) => this.delete(key)));
|
|
112
|
+
}
|
|
113
|
+
async exists(key) {
|
|
114
|
+
const filePath = this.getFilePath(key);
|
|
115
|
+
try {
|
|
116
|
+
await access(filePath);
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
async getMetadata(key) {
|
|
124
|
+
const metadataPath = this.getMetadataPath(key);
|
|
125
|
+
const filePath = this.getFilePath(key);
|
|
126
|
+
try {
|
|
127
|
+
const content = await readFile(metadataPath, "utf-8");
|
|
128
|
+
const meta = JSON.parse(content);
|
|
129
|
+
const stats = await stat(filePath);
|
|
130
|
+
return {
|
|
131
|
+
key,
|
|
132
|
+
filename: meta.filename,
|
|
133
|
+
mimeType: meta.mimeType,
|
|
134
|
+
size: stats.size,
|
|
135
|
+
createdAt: new Date(meta.createdAt),
|
|
136
|
+
updatedAt: meta.updatedAt ? new Date(meta.updatedAt) : undefined,
|
|
137
|
+
customMetadata: meta.customMetadata,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
getUrl(key) {
|
|
145
|
+
if (!this.baseUrl) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
return `${this.baseUrl}/${key}`;
|
|
149
|
+
}
|
|
150
|
+
async getDownloadUrl(key, _options) {
|
|
151
|
+
return this.getUrl(key);
|
|
152
|
+
}
|
|
153
|
+
async getUploadUrl(_key, _options) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
supportsPresignedUrls() {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
async clear() {
|
|
160
|
+
try {
|
|
161
|
+
await rm(this.basePath, { recursive: true, force: true });
|
|
162
|
+
await mkdir(this.basePath, { recursive: true });
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// Directory may not exist
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export const createLocalStorage = (config) => {
|
|
170
|
+
return new LocalStorageAdapter(config);
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
import { StorageAdapter, FileMetadata, UploadOptions, UploadResult, PresignedUrlOptions, PresignedUploadResult } from "./types.js";
|
|
3
|
+
export declare class MemoryStorageAdapter implements StorageAdapter {
|
|
4
|
+
private files;
|
|
5
|
+
upload(key: string, data: Buffer | Readable, options?: UploadOptions): Promise<UploadResult>;
|
|
6
|
+
download(key: string): Promise<Buffer>;
|
|
7
|
+
downloadStream(key: string): Promise<Readable>;
|
|
8
|
+
delete(key: string): Promise<void>;
|
|
9
|
+
deleteMany(keys: string[]): Promise<void>;
|
|
10
|
+
exists(key: string): Promise<boolean>;
|
|
11
|
+
getMetadata(key: string): Promise<FileMetadata | null>;
|
|
12
|
+
getUrl(_key: string): string | null;
|
|
13
|
+
getDownloadUrl(_key: string, _options?: PresignedUrlOptions): Promise<string | null>;
|
|
14
|
+
getUploadUrl(_key: string, _options?: PresignedUrlOptions): Promise<PresignedUploadResult | null>;
|
|
15
|
+
supportsPresignedUrls(): boolean;
|
|
16
|
+
clear(): void;
|
|
17
|
+
getKeys(): string[];
|
|
18
|
+
}
|
|
19
|
+
export declare const createMemoryStorage: () => StorageAdapter;
|
|
20
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/storage/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAOjB,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,KAAK,CAAiC;IAExC,MAAM,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC;IAgClB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAK5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI7B,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInB,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAIxC,qBAAqB,IAAI,OAAO;IAIhC,KAAK,IAAI,IAAI;IAIb,OAAO,IAAI,MAAM,EAAE;CAGpB;AAED,eAAO,MAAM,mBAAmB,QAAO,cAEtC,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
export class MemoryStorageAdapter {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.files = new Map();
|
|
5
|
+
}
|
|
6
|
+
async upload(key, data, options) {
|
|
7
|
+
let buffer;
|
|
8
|
+
if (Buffer.isBuffer(data)) {
|
|
9
|
+
buffer = data;
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
const chunks = [];
|
|
13
|
+
for await (const chunk of data) {
|
|
14
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
15
|
+
}
|
|
16
|
+
buffer = Buffer.concat(chunks);
|
|
17
|
+
}
|
|
18
|
+
const now = new Date();
|
|
19
|
+
const metadata = {
|
|
20
|
+
key,
|
|
21
|
+
filename: options?.filename ?? key.split("/").pop() ?? key,
|
|
22
|
+
mimeType: options?.mimeType ?? "application/octet-stream",
|
|
23
|
+
size: buffer.length,
|
|
24
|
+
createdAt: this.files.get(key)?.metadata.createdAt ?? now,
|
|
25
|
+
updatedAt: now,
|
|
26
|
+
customMetadata: options?.customMetadata,
|
|
27
|
+
};
|
|
28
|
+
this.files.set(key, { data: buffer, metadata });
|
|
29
|
+
return {
|
|
30
|
+
key,
|
|
31
|
+
size: buffer.length,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async download(key) {
|
|
35
|
+
const file = this.files.get(key);
|
|
36
|
+
if (!file) {
|
|
37
|
+
throw new Error(`File not found: ${key}`);
|
|
38
|
+
}
|
|
39
|
+
return file.data;
|
|
40
|
+
}
|
|
41
|
+
async downloadStream(key) {
|
|
42
|
+
const buffer = await this.download(key);
|
|
43
|
+
return Readable.from(buffer);
|
|
44
|
+
}
|
|
45
|
+
async delete(key) {
|
|
46
|
+
this.files.delete(key);
|
|
47
|
+
}
|
|
48
|
+
async deleteMany(keys) {
|
|
49
|
+
for (const key of keys) {
|
|
50
|
+
this.files.delete(key);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async exists(key) {
|
|
54
|
+
return this.files.has(key);
|
|
55
|
+
}
|
|
56
|
+
async getMetadata(key) {
|
|
57
|
+
const file = this.files.get(key);
|
|
58
|
+
return file?.metadata ?? null;
|
|
59
|
+
}
|
|
60
|
+
getUrl(_key) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
async getDownloadUrl(_key, _options) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
async getUploadUrl(_key, _options) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
supportsPresignedUrls() {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
clear() {
|
|
73
|
+
this.files.clear();
|
|
74
|
+
}
|
|
75
|
+
getKeys() {
|
|
76
|
+
return Array.from(this.files.keys());
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export const createMemoryStorage = () => {
|
|
80
|
+
return new MemoryStorageAdapter();
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/storage/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
import { StorageAdapter, FileMetadata, UploadOptions, UploadResult, PresignedUrlOptions, PresignedUploadResult } from "./types.js";
|
|
3
|
+
import { S3StorageAdapter } from "./s3.js";
|
|
4
|
+
export interface R2Bucket {
|
|
5
|
+
put(key: string, value: ArrayBuffer | ArrayBufferView, options?: unknown): Promise<unknown>;
|
|
6
|
+
get(key: string): Promise<R2Object | null>;
|
|
7
|
+
head(key: string): Promise<R2Object | null>;
|
|
8
|
+
delete(keys: string | string[]): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
interface R2Object {
|
|
11
|
+
key: string;
|
|
12
|
+
size: number;
|
|
13
|
+
etag?: string;
|
|
14
|
+
httpEtag?: string;
|
|
15
|
+
uploaded?: Date;
|
|
16
|
+
httpMetadata?: {
|
|
17
|
+
contentType?: string;
|
|
18
|
+
contentEncoding?: string;
|
|
19
|
+
cacheControl?: string;
|
|
20
|
+
};
|
|
21
|
+
customMetadata?: Record<string, string>;
|
|
22
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
23
|
+
body?: ReadableStream;
|
|
24
|
+
}
|
|
25
|
+
export interface R2S3Config {
|
|
26
|
+
accountId: string;
|
|
27
|
+
bucket: string;
|
|
28
|
+
accessKeyId: string;
|
|
29
|
+
secretAccessKey: string;
|
|
30
|
+
endpoint?: string;
|
|
31
|
+
presignedUrlExpiry?: number;
|
|
32
|
+
publicUrl?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface R2BindingConfig {
|
|
35
|
+
binding: R2Bucket;
|
|
36
|
+
publicUrl?: string;
|
|
37
|
+
}
|
|
38
|
+
export type R2StorageConfig = R2S3Config | R2BindingConfig;
|
|
39
|
+
declare class R2BindingAdapter implements StorageAdapter {
|
|
40
|
+
private bucket;
|
|
41
|
+
private publicUrl?;
|
|
42
|
+
constructor(config: R2BindingConfig);
|
|
43
|
+
upload(key: string, data: Buffer | Readable, options?: UploadOptions): Promise<UploadResult>;
|
|
44
|
+
download(key: string): Promise<Buffer>;
|
|
45
|
+
downloadStream(key: string): Promise<Readable>;
|
|
46
|
+
delete(key: string): Promise<void>;
|
|
47
|
+
deleteMany(keys: string[]): Promise<void>;
|
|
48
|
+
exists(key: string): Promise<boolean>;
|
|
49
|
+
getMetadata(key: string): Promise<FileMetadata | null>;
|
|
50
|
+
getUrl(key: string): string | null;
|
|
51
|
+
getDownloadUrl(key: string, _options?: PresignedUrlOptions): Promise<string | null>;
|
|
52
|
+
getUploadUrl(_key: string, _options?: PresignedUrlOptions): Promise<PresignedUploadResult | null>;
|
|
53
|
+
supportsPresignedUrls(): boolean;
|
|
54
|
+
}
|
|
55
|
+
declare class R2S3Adapter extends S3StorageAdapter {
|
|
56
|
+
private publicUrl?;
|
|
57
|
+
constructor(config: R2S3Config);
|
|
58
|
+
getUrl(key: string): string | null;
|
|
59
|
+
}
|
|
60
|
+
export declare const createR2Adapter: (config: R2StorageConfig) => StorageAdapter;
|
|
61
|
+
export { R2BindingAdapter, R2S3Adapter };
|
|
62
|
+
//# sourceMappingURL=r2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2.d.ts","sourceRoot":"","sources":["../../src/storage/r2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAExC,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,eAAe,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5F,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,YAAY,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,eAAe,CAAC;AAiB3D,cAAM,gBAAiB,YAAW,cAAc;IAC9C,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,MAAM,EAAE,eAAe;IAK7B,MAAM,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GAAG,QAAQ,EACvB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC;IAoBlB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAStC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAQ9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiB5D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO5B,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInB,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAIxC,qBAAqB,IAAI,OAAO;CAGjC;AAED,cAAM,WAAY,SAAQ,gBAAgB;IACxC,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,MAAM,EAAE,UAAU;IAc9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAMnC;AAED,eAAO,MAAM,eAAe,GAAI,QAAQ,eAAe,KAAG,cAKzD,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Readable } from "node:stream";
|
|
2
|
+
import { S3StorageAdapter } from "./s3.js";
|
|
3
|
+
const isBindingConfig = (config) => {
|
|
4
|
+
return "binding" in config && config.binding != null;
|
|
5
|
+
};
|
|
6
|
+
const toBuffer = async (data) => {
|
|
7
|
+
if (Buffer.isBuffer(data)) {
|
|
8
|
+
return data;
|
|
9
|
+
}
|
|
10
|
+
const chunks = [];
|
|
11
|
+
for await (const chunk of data) {
|
|
12
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
13
|
+
}
|
|
14
|
+
return Buffer.concat(chunks);
|
|
15
|
+
};
|
|
16
|
+
class R2BindingAdapter {
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.bucket = config.binding;
|
|
19
|
+
this.publicUrl = config.publicUrl;
|
|
20
|
+
}
|
|
21
|
+
async upload(key, data, options) {
|
|
22
|
+
const buffer = await toBuffer(data);
|
|
23
|
+
const object = (await this.bucket.put(key, buffer, {
|
|
24
|
+
httpMetadata: {
|
|
25
|
+
contentType: options?.mimeType,
|
|
26
|
+
contentEncoding: options?.contentEncoding,
|
|
27
|
+
cacheControl: options?.cacheControl,
|
|
28
|
+
},
|
|
29
|
+
customMetadata: options?.customMetadata,
|
|
30
|
+
}));
|
|
31
|
+
return {
|
|
32
|
+
key,
|
|
33
|
+
url: this.getUrl(key) ?? undefined,
|
|
34
|
+
etag: object?.etag ?? object?.httpEtag?.replace(/"/g, ""),
|
|
35
|
+
size: buffer.length,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async download(key) {
|
|
39
|
+
const object = await this.bucket.get(key);
|
|
40
|
+
if (!object) {
|
|
41
|
+
throw new Error(`File not found: ${key}`);
|
|
42
|
+
}
|
|
43
|
+
const bytes = await object.arrayBuffer();
|
|
44
|
+
return Buffer.from(bytes);
|
|
45
|
+
}
|
|
46
|
+
async downloadStream(key) {
|
|
47
|
+
const object = await this.bucket.get(key);
|
|
48
|
+
if (!object || !object.body) {
|
|
49
|
+
throw new Error(`File not found: ${key}`);
|
|
50
|
+
}
|
|
51
|
+
return Readable.fromWeb(object.body);
|
|
52
|
+
}
|
|
53
|
+
async delete(key) {
|
|
54
|
+
await this.bucket.delete(key);
|
|
55
|
+
}
|
|
56
|
+
async deleteMany(keys) {
|
|
57
|
+
if (keys.length === 0)
|
|
58
|
+
return;
|
|
59
|
+
await this.bucket.delete(keys);
|
|
60
|
+
}
|
|
61
|
+
async exists(key) {
|
|
62
|
+
const object = await this.bucket.head(key);
|
|
63
|
+
return object !== null;
|
|
64
|
+
}
|
|
65
|
+
async getMetadata(key) {
|
|
66
|
+
const object = await this.bucket.head(key);
|
|
67
|
+
if (!object) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
key,
|
|
72
|
+
filename: key.split("/").pop() ?? key,
|
|
73
|
+
mimeType: object.httpMetadata?.contentType ?? "application/octet-stream",
|
|
74
|
+
size: object.size,
|
|
75
|
+
createdAt: object.uploaded ?? new Date(),
|
|
76
|
+
etag: object.etag ?? object.httpEtag?.replace(/"/g, ""),
|
|
77
|
+
contentEncoding: object.httpMetadata?.contentEncoding,
|
|
78
|
+
customMetadata: object.customMetadata,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
getUrl(key) {
|
|
82
|
+
if (!this.publicUrl) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return `${this.publicUrl.replace(/\/$/, "")}/${key}`;
|
|
86
|
+
}
|
|
87
|
+
async getDownloadUrl(key, _options) {
|
|
88
|
+
return this.getUrl(key);
|
|
89
|
+
}
|
|
90
|
+
async getUploadUrl(_key, _options) {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
supportsPresignedUrls() {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
class R2S3Adapter extends S3StorageAdapter {
|
|
98
|
+
constructor(config) {
|
|
99
|
+
const endpoint = config.endpoint ?? `https://${config.accountId}.r2.cloudflarestorage.com`;
|
|
100
|
+
super({
|
|
101
|
+
bucket: config.bucket,
|
|
102
|
+
region: "auto",
|
|
103
|
+
endpoint,
|
|
104
|
+
accessKeyId: config.accessKeyId,
|
|
105
|
+
secretAccessKey: config.secretAccessKey,
|
|
106
|
+
presignedUrlExpiry: config.presignedUrlExpiry,
|
|
107
|
+
});
|
|
108
|
+
this.publicUrl = config.publicUrl;
|
|
109
|
+
}
|
|
110
|
+
getUrl(key) {
|
|
111
|
+
if (!this.publicUrl) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
return `${this.publicUrl.replace(/\/$/, "")}/${key}`;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export const createR2Adapter = (config) => {
|
|
118
|
+
if (isBindingConfig(config)) {
|
|
119
|
+
return new R2BindingAdapter(config);
|
|
120
|
+
}
|
|
121
|
+
return new R2S3Adapter(config);
|
|
122
|
+
};
|
|
123
|
+
export { R2BindingAdapter, R2S3Adapter };
|
|
124
|
+
//# sourceMappingURL=r2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2.js","sourceRoot":"","sources":["../../src/storage/r2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Hono } from "hono";
|
|
2
|
+
import type { SQLiteColumn } from "drizzle-orm/sqlite-core";
|
|
3
|
+
import type { PgColumn } from "drizzle-orm/pg-core";
|
|
4
|
+
import { Table, TableConfig } from "drizzle-orm";
|
|
5
|
+
import { StorageAdapter } from "./types.js";
|
|
6
|
+
import { type UploadValidationOptions } from "./validation.js";
|
|
7
|
+
import type { ScopeFunction } from "../resource/types.js";
|
|
8
|
+
type DrizzleColumn = SQLiteColumn | PgColumn;
|
|
9
|
+
export interface FileRecord {
|
|
10
|
+
id: string;
|
|
11
|
+
userId?: string | null;
|
|
12
|
+
filename: string;
|
|
13
|
+
mimeType: string;
|
|
14
|
+
size: number;
|
|
15
|
+
storagePath: string;
|
|
16
|
+
url?: string | null;
|
|
17
|
+
status: "pending" | "completed";
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
}
|
|
20
|
+
export interface FileTableSchema {
|
|
21
|
+
id: DrizzleColumn;
|
|
22
|
+
userId?: DrizzleColumn;
|
|
23
|
+
filename: DrizzleColumn;
|
|
24
|
+
mimeType: DrizzleColumn;
|
|
25
|
+
size: DrizzleColumn;
|
|
26
|
+
storagePath: DrizzleColumn;
|
|
27
|
+
url?: DrizzleColumn;
|
|
28
|
+
status: DrizzleColumn;
|
|
29
|
+
createdAt: DrizzleColumn;
|
|
30
|
+
}
|
|
31
|
+
export interface FileResourceConfig {
|
|
32
|
+
db: unknown;
|
|
33
|
+
schema: FileTableSchema;
|
|
34
|
+
id: DrizzleColumn;
|
|
35
|
+
storage?: StorageAdapter;
|
|
36
|
+
allowedMimeTypes?: string[];
|
|
37
|
+
maxFileSize?: number;
|
|
38
|
+
validation?: UploadValidationOptions;
|
|
39
|
+
generateKey?: (filename: string, userId?: string) => string;
|
|
40
|
+
auth?: {
|
|
41
|
+
read?: ScopeFunction;
|
|
42
|
+
create?: ScopeFunction;
|
|
43
|
+
delete?: ScopeFunction;
|
|
44
|
+
};
|
|
45
|
+
usePresignedUrls?: boolean;
|
|
46
|
+
presignedUrlExpiry?: number;
|
|
47
|
+
}
|
|
48
|
+
export declare const useFileResource: <TConfig extends TableConfig>(table: Table<TConfig> & FileTableSchema, config: FileResourceConfig) => Hono;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/storage/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAG1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAe,KAAK,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC9F,OAAO,EACL,cAAc,EAIf,MAAM,SAAS,CAAC;AAQjB,OAAO,EAAkB,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,kBAAkB,CAAC;AAKnE,KAAK,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAC;AAE7C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,aAAa,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,aAAa,CAAC;IAC3B,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,eAAe,CAAC;IACxB,EAAE,EAAE,aAAa,CAAC;IAClB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5D,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,aAAa,CAAC;QACrB,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,CAAC;IACF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAgED,eAAO,MAAM,eAAe,GAAI,OAAO,SAAS,WAAW,EACzD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,eAAe,EACvC,QAAQ,kBAAkB,KACzB,IAgbF,CAAC"}
|