alchemy 0.66.0 → 0.68.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/bin/alchemy.js +25554 -26250
- package/bin/alchemy.ts +6 -2
- package/bin/commands/configure.ts +194 -0
- package/bin/commands/login.ts +99 -55
- package/bin/commands/logout.ts +66 -0
- package/bin/services/find-workspace-root.ts +1 -1
- package/bin/trpc.ts +27 -2
- package/lib/alchemy.d.ts +6 -0
- package/lib/alchemy.d.ts.map +1 -1
- package/lib/alchemy.js +1 -0
- package/lib/alchemy.js.map +1 -1
- package/lib/apply.d.ts +2 -2
- package/lib/apply.d.ts.map +1 -1
- package/lib/apply.js +18 -15
- package/lib/apply.js.map +1 -1
- package/lib/auth.d.ts +72 -0
- package/lib/auth.d.ts.map +1 -0
- package/lib/auth.js +163 -0
- package/lib/auth.js.map +1 -0
- package/lib/aws/bucket.d.ts +12 -3
- package/lib/aws/bucket.d.ts.map +1 -1
- package/lib/aws/bucket.js +2 -2
- package/lib/aws/bucket.js.map +1 -1
- package/lib/aws/control/resource.d.ts +34 -3
- package/lib/aws/control/resource.d.ts.map +1 -1
- package/lib/aws/control/resource.js +3 -3
- package/lib/aws/control/resource.js.map +1 -1
- package/lib/aws/ec2/internet-gateway-attachment.d.ts +1 -2
- package/lib/aws/ec2/internet-gateway-attachment.d.ts.map +1 -1
- package/lib/aws/ec2/internet-gateway-attachment.js +4 -4
- package/lib/aws/ec2/internet-gateway-attachment.js.map +1 -1
- package/lib/aws/ec2/internet-gateway.d.ts +1 -2
- package/lib/aws/ec2/internet-gateway.d.ts.map +1 -1
- package/lib/aws/ec2/internet-gateway.js +2 -2
- package/lib/aws/ec2/internet-gateway.js.map +1 -1
- package/lib/aws/ec2/nat-gateway.d.ts +1 -2
- package/lib/aws/ec2/nat-gateway.d.ts.map +1 -1
- package/lib/aws/ec2/nat-gateway.js +2 -2
- package/lib/aws/ec2/nat-gateway.js.map +1 -1
- package/lib/aws/ec2/route-table-association.d.ts +1 -2
- package/lib/aws/ec2/route-table-association.d.ts.map +1 -1
- package/lib/aws/ec2/route-table-association.js +2 -2
- package/lib/aws/ec2/route-table-association.js.map +1 -1
- package/lib/aws/ec2/route-table.d.ts +1 -2
- package/lib/aws/ec2/route-table.d.ts.map +1 -1
- package/lib/aws/ec2/route-table.js +2 -2
- package/lib/aws/ec2/route-table.js.map +1 -1
- package/lib/aws/ec2/route.d.ts +1 -2
- package/lib/aws/ec2/route.d.ts.map +1 -1
- package/lib/aws/ec2/route.js +2 -2
- package/lib/aws/ec2/route.js.map +1 -1
- package/lib/aws/ec2/security-group-rule.d.ts +1 -2
- package/lib/aws/ec2/security-group-rule.d.ts.map +1 -1
- package/lib/aws/ec2/security-group-rule.js +2 -2
- package/lib/aws/ec2/security-group-rule.js.map +1 -1
- package/lib/aws/ec2/security-group.d.ts +1 -2
- package/lib/aws/ec2/security-group.d.ts.map +1 -1
- package/lib/aws/ec2/security-group.js +2 -2
- package/lib/aws/ec2/security-group.js.map +1 -1
- package/lib/aws/ec2/subnet.d.ts +1 -2
- package/lib/aws/ec2/subnet.d.ts.map +1 -1
- package/lib/aws/ec2/subnet.js +2 -2
- package/lib/aws/ec2/subnet.js.map +1 -1
- package/lib/aws/ec2/vpc.d.ts +1 -2
- package/lib/aws/ec2/vpc.d.ts.map +1 -1
- package/lib/aws/ec2/vpc.js +2 -2
- package/lib/aws/ec2/vpc.js.map +1 -1
- package/lib/aws/function.d.ts +116 -3
- package/lib/aws/function.d.ts.map +1 -1
- package/lib/aws/function.js +2 -2
- package/lib/aws/function.js.map +1 -1
- package/lib/aws/oidc/github-oidc-provider.d.ts +13 -2
- package/lib/aws/oidc/github-oidc-provider.d.ts.map +1 -1
- package/lib/aws/oidc/oidc-provider.d.ts +48 -3
- package/lib/aws/oidc/oidc-provider.d.ts.map +1 -1
- package/lib/aws/oidc/oidc-provider.js +2 -2
- package/lib/aws/oidc/oidc-provider.js.map +1 -1
- package/lib/aws/policy-attachment.d.ts +2 -3
- package/lib/aws/policy-attachment.d.ts.map +1 -1
- package/lib/aws/policy-attachment.js +1 -1
- package/lib/aws/policy-attachment.js.map +1 -1
- package/lib/aws/policy.d.ts +1 -2
- package/lib/aws/policy.d.ts.map +1 -1
- package/lib/aws/policy.js +4 -4
- package/lib/aws/policy.js.map +1 -1
- package/lib/aws/queue.d.ts +1 -2
- package/lib/aws/queue.d.ts.map +1 -1
- package/lib/aws/queue.js +4 -4
- package/lib/aws/queue.js.map +1 -1
- package/lib/aws/role.d.ts +1 -2
- package/lib/aws/role.d.ts.map +1 -1
- package/lib/aws/role.js +2 -2
- package/lib/aws/role.js.map +1 -1
- package/lib/aws/ses.d.ts +1 -2
- package/lib/aws/ses.d.ts.map +1 -1
- package/lib/aws/ses.js +2 -2
- package/lib/aws/ses.js.map +1 -1
- package/lib/aws/ssm-parameter.d.ts +1 -2
- package/lib/aws/ssm-parameter.d.ts.map +1 -1
- package/lib/aws/ssm-parameter.js +2 -2
- package/lib/aws/ssm-parameter.js.map +1 -1
- package/lib/aws/table.d.ts +1 -2
- package/lib/aws/table.d.ts.map +1 -1
- package/lib/aws/table.js +2 -2
- package/lib/aws/table.js.map +1 -1
- package/lib/cloudflare/account-api-token.d.ts +1 -2
- package/lib/cloudflare/account-api-token.d.ts.map +1 -1
- package/lib/cloudflare/account-api-token.js +2 -2
- package/lib/cloudflare/account-api-token.js.map +1 -1
- package/lib/cloudflare/ai-gateway.d.ts +1 -2
- package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
- package/lib/cloudflare/ai-gateway.js +2 -2
- package/lib/cloudflare/ai-gateway.js.map +1 -1
- package/lib/cloudflare/api-gateway-operation.d.ts +1 -2
- package/lib/cloudflare/api-gateway-operation.d.ts.map +1 -1
- package/lib/cloudflare/api-gateway-operation.js +2 -2
- package/lib/cloudflare/api-gateway-operation.js.map +1 -1
- package/lib/cloudflare/api-schema.d.ts +1 -2
- package/lib/cloudflare/api-schema.d.ts.map +1 -1
- package/lib/cloudflare/api-schema.js +2 -2
- package/lib/cloudflare/api-schema.js.map +1 -1
- package/lib/cloudflare/api-shield.d.ts +1 -2
- package/lib/cloudflare/api-shield.d.ts.map +1 -1
- package/lib/cloudflare/api-shield.js +2 -2
- package/lib/cloudflare/api-shield.js.map +1 -1
- package/lib/cloudflare/api.d.ts +18 -10
- package/lib/cloudflare/api.d.ts.map +1 -1
- package/lib/cloudflare/api.js +93 -38
- package/lib/cloudflare/api.js.map +1 -1
- package/lib/cloudflare/assets.d.ts +21 -43
- package/lib/cloudflare/assets.d.ts.map +1 -1
- package/lib/cloudflare/assets.js +78 -70
- package/lib/cloudflare/assets.js.map +1 -1
- package/lib/cloudflare/auth.d.ts +91 -17
- package/lib/cloudflare/auth.d.ts.map +1 -1
- package/lib/cloudflare/auth.js +141 -62
- package/lib/cloudflare/auth.js.map +1 -1
- package/lib/cloudflare/bindings.d.ts +17 -5
- package/lib/cloudflare/bindings.d.ts.map +1 -1
- package/lib/cloudflare/bindings.js +3 -1
- package/lib/cloudflare/bindings.js.map +1 -1
- package/lib/cloudflare/bound.d.ts +4 -3
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/bucket.d.ts +60 -8
- package/lib/cloudflare/bucket.d.ts.map +1 -1
- package/lib/cloudflare/bucket.js +161 -18
- package/lib/cloudflare/bucket.js.map +1 -1
- package/lib/cloudflare/bundle/internal-worker-bundle.d.ts +1 -1
- package/lib/cloudflare/bundle/internal-worker-bundle.d.ts.map +1 -1
- package/lib/cloudflare/bundle/internal-worker-bundle.js.map +1 -1
- package/lib/cloudflare/bundle/plugin-wasm.js +4 -2
- package/lib/cloudflare/bundle/plugin-wasm.js.map +1 -1
- package/lib/cloudflare/certificate-pack.d.ts +1 -2
- package/lib/cloudflare/certificate-pack.d.ts.map +1 -1
- package/lib/cloudflare/certificate-pack.js +4 -4
- package/lib/cloudflare/certificate-pack.js.map +1 -1
- package/lib/cloudflare/compatibility-date.gen.d.ts +1 -1
- package/lib/cloudflare/compatibility-date.gen.js +1 -1
- package/lib/cloudflare/container.d.ts +1 -2
- package/lib/cloudflare/container.d.ts.map +1 -1
- package/lib/cloudflare/container.js +6 -6
- package/lib/cloudflare/container.js.map +1 -1
- package/lib/cloudflare/custom-domain.d.ts +1 -2
- package/lib/cloudflare/custom-domain.d.ts.map +1 -1
- package/lib/cloudflare/custom-domain.js +2 -2
- package/lib/cloudflare/custom-domain.js.map +1 -1
- package/lib/cloudflare/d1-database.d.ts +2 -3
- package/lib/cloudflare/d1-database.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.js +5 -5
- package/lib/cloudflare/d1-database.js.map +1 -1
- package/lib/cloudflare/dispatch-namespace.d.ts +2 -3
- package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
- package/lib/cloudflare/dispatch-namespace.js +3 -3
- package/lib/cloudflare/dispatch-namespace.js.map +1 -1
- package/lib/cloudflare/dns-records.d.ts +1 -2
- package/lib/cloudflare/dns-records.d.ts.map +1 -1
- package/lib/cloudflare/dns-records.js +4 -4
- package/lib/cloudflare/dns-records.js.map +1 -1
- package/lib/cloudflare/email-address.d.ts +1 -2
- package/lib/cloudflare/email-address.d.ts.map +1 -1
- package/lib/cloudflare/email-address.js +6 -6
- package/lib/cloudflare/email-address.js.map +1 -1
- package/lib/cloudflare/email-catch-all.d.ts +1 -2
- package/lib/cloudflare/email-catch-all.d.ts.map +1 -1
- package/lib/cloudflare/email-catch-all.js +4 -4
- package/lib/cloudflare/email-catch-all.js.map +1 -1
- package/lib/cloudflare/email-routing.d.ts +1 -2
- package/lib/cloudflare/email-routing.d.ts.map +1 -1
- package/lib/cloudflare/email-routing.js +4 -4
- package/lib/cloudflare/email-routing.js.map +1 -1
- package/lib/cloudflare/email-rule.d.ts +1 -2
- package/lib/cloudflare/email-rule.d.ts.map +1 -1
- package/lib/cloudflare/email-rule.js +4 -4
- package/lib/cloudflare/email-rule.js.map +1 -1
- package/lib/cloudflare/hyperdrive-ref.d.ts +23 -0
- package/lib/cloudflare/hyperdrive-ref.d.ts.map +1 -0
- package/lib/cloudflare/hyperdrive-ref.js +52 -0
- package/lib/cloudflare/hyperdrive-ref.js.map +1 -0
- package/lib/cloudflare/hyperdrive.d.ts +1 -2
- package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
- package/lib/cloudflare/hyperdrive.js +4 -4
- package/lib/cloudflare/hyperdrive.js.map +1 -1
- package/lib/cloudflare/index.d.ts +2 -0
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +2 -0
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/kv-namespace.d.ts +2 -3
- package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
- package/lib/cloudflare/kv-namespace.js +5 -5
- package/lib/cloudflare/kv-namespace.js.map +1 -1
- package/lib/cloudflare/miniflare/build-worker-options.d.ts +2 -1
- package/lib/cloudflare/miniflare/build-worker-options.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/build-worker-options.js +11 -6
- package/lib/cloudflare/miniflare/build-worker-options.js.map +1 -1
- package/lib/cloudflare/miniflare/delete.js +1 -1
- package/lib/cloudflare/miniflare/delete.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-controller.d.ts +3 -1
- package/lib/cloudflare/miniflare/miniflare-controller.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-controller.js +24 -9
- package/lib/cloudflare/miniflare/miniflare-controller.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts +24 -13
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +90 -79
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
- package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/remote-binding-proxy.js +15 -4
- package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -1
- package/lib/cloudflare/miniflare/tunnel.d.ts +18 -0
- package/lib/cloudflare/miniflare/tunnel.d.ts.map +1 -0
- package/lib/cloudflare/miniflare/tunnel.js +79 -0
- package/lib/cloudflare/miniflare/tunnel.js.map +1 -0
- package/lib/cloudflare/next.d.ts.map +1 -1
- package/lib/cloudflare/next.js +3 -0
- package/lib/cloudflare/next.js.map +1 -1
- package/lib/cloudflare/permission-groups.d.ts +1 -2
- package/lib/cloudflare/permission-groups.d.ts.map +1 -1
- package/lib/cloudflare/permission-groups.js +1 -1
- package/lib/cloudflare/permission-groups.js.map +1 -1
- package/lib/cloudflare/pipeline.d.ts +2 -3
- package/lib/cloudflare/pipeline.d.ts.map +1 -1
- package/lib/cloudflare/pipeline.js +5 -5
- package/lib/cloudflare/pipeline.js.map +1 -1
- package/lib/cloudflare/queue-consumer.d.ts +1 -2
- package/lib/cloudflare/queue-consumer.d.ts.map +1 -1
- package/lib/cloudflare/queue-consumer.js +4 -4
- package/lib/cloudflare/queue-consumer.js.map +1 -1
- package/lib/cloudflare/queue.d.ts +1 -2
- package/lib/cloudflare/queue.d.ts.map +1 -1
- package/lib/cloudflare/queue.js +4 -4
- package/lib/cloudflare/queue.js.map +1 -1
- package/lib/cloudflare/quick-tunnel.d.ts +1 -1
- package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
- package/lib/cloudflare/react-router/plugin.js +13 -0
- package/lib/cloudflare/react-router/plugin.js.map +1 -1
- package/lib/cloudflare/redirect-rule.d.ts +1 -2
- package/lib/cloudflare/redirect-rule.d.ts.map +1 -1
- package/lib/cloudflare/redirect-rule.js +4 -4
- package/lib/cloudflare/redirect-rule.js.map +1 -1
- package/lib/cloudflare/route.d.ts +1 -2
- package/lib/cloudflare/route.d.ts.map +1 -1
- package/lib/cloudflare/route.js +4 -4
- package/lib/cloudflare/route.js.map +1 -1
- package/lib/cloudflare/ruleset.d.ts +1 -2
- package/lib/cloudflare/ruleset.d.ts.map +1 -1
- package/lib/cloudflare/ruleset.js +2 -2
- package/lib/cloudflare/ruleset.js.map +1 -1
- package/lib/cloudflare/secret-ref.d.ts +38 -0
- package/lib/cloudflare/secret-ref.d.ts.map +1 -0
- package/lib/cloudflare/secret-ref.js +38 -0
- package/lib/cloudflare/secret-ref.js.map +1 -0
- package/lib/cloudflare/secret.d.ts +2 -3
- package/lib/cloudflare/secret.d.ts.map +1 -1
- package/lib/cloudflare/secret.js +3 -3
- package/lib/cloudflare/secret.js.map +1 -1
- package/lib/cloudflare/secrets-store.d.ts +2 -3
- package/lib/cloudflare/secrets-store.d.ts.map +1 -1
- package/lib/cloudflare/secrets-store.js +3 -3
- package/lib/cloudflare/secrets-store.js.map +1 -1
- package/lib/cloudflare/tunnel.d.ts +2 -3
- package/lib/cloudflare/tunnel.d.ts.map +1 -1
- package/lib/cloudflare/tunnel.js +3 -3
- package/lib/cloudflare/tunnel.js.map +1 -1
- package/lib/cloudflare/user.d.ts +3 -2
- package/lib/cloudflare/user.d.ts.map +1 -1
- package/lib/cloudflare/user.js +7 -5
- package/lib/cloudflare/user.js.map +1 -1
- package/lib/cloudflare/vectorize-index.d.ts +2 -3
- package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-index.js +6 -6
- package/lib/cloudflare/vectorize-index.js.map +1 -1
- package/lib/cloudflare/vectorize-metadata-index.d.ts +2 -3
- package/lib/cloudflare/vectorize-metadata-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-metadata-index.js +4 -4
- package/lib/cloudflare/vectorize-metadata-index.js.map +1 -1
- package/lib/cloudflare/website.js +1 -1
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker-assets.d.ts +1 -29
- package/lib/cloudflare/worker-assets.d.ts.map +1 -1
- package/lib/cloudflare/worker-assets.js +9 -42
- package/lib/cloudflare/worker-assets.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts +1 -1
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +7 -9
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker-stub.d.ts +2 -3
- package/lib/cloudflare/worker-stub.d.ts.map +1 -1
- package/lib/cloudflare/worker-stub.js +3 -3
- package/lib/cloudflare/worker-stub.js.map +1 -1
- package/lib/cloudflare/worker-subdomain.d.ts +4 -3
- package/lib/cloudflare/worker-subdomain.d.ts.map +1 -1
- package/lib/cloudflare/worker-subdomain.js +5 -5
- package/lib/cloudflare/worker-subdomain.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +19 -5
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +18 -5
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts +2 -1
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +4 -6
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/cloudflare/zone.d.ts +1 -2
- package/lib/cloudflare/zone.d.ts.map +1 -1
- package/lib/cloudflare/zone.js +2 -2
- package/lib/cloudflare/zone.js.map +1 -1
- package/lib/context.d.ts +8 -8
- package/lib/context.d.ts.map +1 -1
- package/lib/context.js.map +1 -1
- package/lib/destroy.d.ts +1 -1
- package/lib/destroy.d.ts.map +1 -1
- package/lib/destroy.js.map +1 -1
- package/lib/dns/import-dns.d.ts +1 -2
- package/lib/dns/import-dns.d.ts.map +1 -1
- package/lib/dns/import-dns.js +2 -2
- package/lib/dns/import-dns.js.map +1 -1
- package/lib/docker/container.d.ts +1 -2
- package/lib/docker/container.d.ts.map +1 -1
- package/lib/docker/container.js +2 -3
- package/lib/docker/container.js.map +1 -1
- package/lib/docker/image.d.ts +1 -2
- package/lib/docker/image.d.ts.map +1 -1
- package/lib/docker/image.js +9 -9
- package/lib/docker/image.js.map +1 -1
- package/lib/docker/network.d.ts +1 -2
- package/lib/docker/network.d.ts.map +1 -1
- package/lib/docker/network.js +2 -3
- package/lib/docker/network.js.map +1 -1
- package/lib/docker/remote-image.d.ts +1 -2
- package/lib/docker/remote-image.d.ts.map +1 -1
- package/lib/docker/remote-image.js +2 -3
- package/lib/docker/remote-image.js.map +1 -1
- package/lib/docker/volume.d.ts +1 -2
- package/lib/docker/volume.d.ts.map +1 -1
- package/lib/docker/volume.js +2 -3
- package/lib/docker/volume.js.map +1 -1
- package/lib/esbuild/bundle.d.ts +1 -2
- package/lib/esbuild/bundle.d.ts.map +1 -1
- package/lib/esbuild/bundle.js +4 -4
- package/lib/esbuild/bundle.js.map +1 -1
- package/lib/fs/copy-file.d.ts +1 -2
- package/lib/fs/copy-file.d.ts.map +1 -1
- package/lib/fs/copy-file.js +2 -2
- package/lib/fs/copy-file.js.map +1 -1
- package/lib/fs/file.d.ts +1 -2
- package/lib/fs/file.d.ts.map +1 -1
- package/lib/fs/file.js +2 -2
- package/lib/fs/file.js.map +1 -1
- package/lib/fs/folder.d.ts +1 -2
- package/lib/fs/folder.d.ts.map +1 -1
- package/lib/fs/folder.js +2 -2
- package/lib/fs/folder.js.map +1 -1
- package/lib/github/comment.d.ts +1 -2
- package/lib/github/comment.d.ts.map +1 -1
- package/lib/github/comment.js +4 -4
- package/lib/github/comment.js.map +1 -1
- package/lib/github/repository-environment.d.ts +1 -2
- package/lib/github/repository-environment.d.ts.map +1 -1
- package/lib/github/repository-environment.js +2 -2
- package/lib/github/repository-environment.js.map +1 -1
- package/lib/github/repository-webhook.d.ts +1 -2
- package/lib/github/repository-webhook.d.ts.map +1 -1
- package/lib/github/repository-webhook.js +2 -2
- package/lib/github/repository-webhook.js.map +1 -1
- package/lib/github/secret.d.ts +1 -2
- package/lib/github/secret.d.ts.map +1 -1
- package/lib/github/secret.js +2 -2
- package/lib/github/secret.js.map +1 -1
- package/lib/llms.cloudflare.txt +1 -1
- package/lib/neon/api/client.gen.d.ts +13 -0
- package/lib/neon/api/client.gen.d.ts.map +1 -0
- package/lib/neon/api/client.gen.js +7 -0
- package/lib/neon/api/client.gen.js.map +1 -0
- package/lib/neon/api/sdk.gen.d.ts +880 -0
- package/lib/neon/api/sdk.gen.d.ts.map +1 -0
- package/lib/neon/api/sdk.gen.js +1527 -0
- package/lib/neon/api/sdk.gen.js.map +1 -0
- package/lib/neon/api/types.gen.d.ts +7250 -0
- package/lib/neon/api/types.gen.d.ts.map +1 -0
- package/lib/neon/api/types.gen.js +2 -0
- package/lib/neon/api/types.gen.js.map +1 -0
- package/lib/neon/api.d.ts +14 -49
- package/lib/neon/api.d.ts.map +1 -1
- package/lib/neon/api.js +36 -114
- package/lib/neon/api.js.map +1 -1
- package/lib/neon/branch.d.ts +141 -0
- package/lib/neon/branch.d.ts.map +1 -0
- package/lib/neon/branch.js +112 -0
- package/lib/neon/branch.js.map +1 -0
- package/lib/neon/index.d.ts +1 -1
- package/lib/neon/index.d.ts.map +1 -1
- package/lib/neon/index.js +1 -1
- package/lib/neon/index.js.map +1 -1
- package/lib/neon/project.d.ts +32 -242
- package/lib/neon/project.d.ts.map +1 -1
- package/lib/neon/project.js +90 -269
- package/lib/neon/project.js.map +1 -1
- package/lib/neon/utils.d.ts +49 -0
- package/lib/neon/utils.d.ts.map +1 -0
- package/lib/neon/utils.js +44 -0
- package/lib/neon/utils.js.map +1 -0
- package/lib/os/exec.d.ts +1 -2
- package/lib/os/exec.d.ts.map +1 -1
- package/lib/os/exec.js +2 -2
- package/lib/os/exec.js.map +1 -1
- package/lib/planetscale/api/client.gen.d.ts +12 -1749
- package/lib/planetscale/api/client.gen.d.ts.map +1 -1
- package/lib/planetscale/api/client.gen.js +6 -2400
- package/lib/planetscale/api/client.gen.js.map +1 -1
- package/lib/planetscale/api/sdk.gen.d.ts +1582 -0
- package/lib/planetscale/api/sdk.gen.d.ts.map +1 -0
- package/lib/planetscale/api/sdk.gen.js +2219 -0
- package/lib/planetscale/api/sdk.gen.js.map +1 -0
- package/lib/planetscale/api/types.gen.d.ts +594 -449
- package/lib/planetscale/api/types.gen.d.ts.map +1 -1
- package/lib/planetscale/api.d.ts +43 -0
- package/lib/planetscale/api.d.ts.map +1 -0
- package/lib/planetscale/api.js +53 -0
- package/lib/planetscale/api.js.map +1 -0
- package/lib/planetscale/branch.d.ts +2 -3
- package/lib/planetscale/branch.d.ts.map +1 -1
- package/lib/planetscale/branch.js +17 -15
- package/lib/planetscale/branch.js.map +1 -1
- package/lib/planetscale/database.d.ts +2 -3
- package/lib/planetscale/database.d.ts.map +1 -1
- package/lib/planetscale/database.js +34 -34
- package/lib/planetscale/database.js.map +1 -1
- package/lib/planetscale/index.d.ts +1 -1
- package/lib/planetscale/index.d.ts.map +1 -1
- package/lib/planetscale/index.js +1 -1
- package/lib/planetscale/index.js.map +1 -1
- package/lib/planetscale/password.d.ts +2 -3
- package/lib/planetscale/password.d.ts.map +1 -1
- package/lib/planetscale/password.js +11 -11
- package/lib/planetscale/password.js.map +1 -1
- package/lib/planetscale/role.d.ts +2 -3
- package/lib/planetscale/role.d.ts.map +1 -1
- package/lib/planetscale/role.js +18 -18
- package/lib/planetscale/role.js.map +1 -1
- package/lib/planetscale/utils.d.ts +1 -1
- package/lib/planetscale/utils.d.ts.map +1 -1
- package/lib/planetscale/utils.js +17 -33
- package/lib/planetscale/utils.js.map +1 -1
- package/lib/random/random-string.d.ts +1 -2
- package/lib/random/random-string.d.ts.map +1 -1
- package/lib/random/random-string.js +3 -3
- package/lib/random/random-string.js.map +1 -1
- package/lib/resource.d.ts +4 -1
- package/lib/resource.d.ts.map +1 -1
- package/lib/resource.js.map +1 -1
- package/lib/scope.d.ts +10 -1
- package/lib/scope.d.ts.map +1 -1
- package/lib/scope.js +3 -1
- package/lib/scope.js.map +1 -1
- package/lib/sentry/client-key.d.ts +1 -2
- package/lib/sentry/client-key.d.ts.map +1 -1
- package/lib/sentry/client-key.js +2 -2
- package/lib/sentry/client-key.js.map +1 -1
- package/lib/sentry/project.d.ts +1 -2
- package/lib/sentry/project.d.ts.map +1 -1
- package/lib/sentry/project.js +2 -2
- package/lib/sentry/project.js.map +1 -1
- package/lib/sentry/team.d.ts +1 -2
- package/lib/sentry/team.d.ts.map +1 -1
- package/lib/sentry/team.js +2 -2
- package/lib/sentry/team.js.map +1 -1
- package/lib/state/r2-rest-state-store.d.ts +1 -0
- package/lib/state/r2-rest-state-store.d.ts.map +1 -1
- package/lib/state/r2-rest-state-store.js +15 -34
- package/lib/state/r2-rest-state-store.js.map +1 -1
- package/lib/stripe/card.d.ts +1 -2
- package/lib/stripe/card.d.ts.map +1 -1
- package/lib/stripe/card.js +2 -2
- package/lib/stripe/card.js.map +1 -1
- package/lib/stripe/coupon.d.ts +1 -2
- package/lib/stripe/coupon.d.ts.map +1 -1
- package/lib/stripe/coupon.js +2 -2
- package/lib/stripe/coupon.js.map +1 -1
- package/lib/stripe/customer.d.ts +1 -2
- package/lib/stripe/customer.d.ts.map +1 -1
- package/lib/stripe/customer.js +2 -2
- package/lib/stripe/customer.js.map +1 -1
- package/lib/stripe/entitlements-feature.d.ts +1 -2
- package/lib/stripe/entitlements-feature.d.ts.map +1 -1
- package/lib/stripe/entitlements-feature.js +2 -2
- package/lib/stripe/entitlements-feature.js.map +1 -1
- package/lib/stripe/file.d.ts +1 -2
- package/lib/stripe/file.d.ts.map +1 -1
- package/lib/stripe/file.js +2 -2
- package/lib/stripe/file.js.map +1 -1
- package/lib/stripe/meter.d.ts +1 -2
- package/lib/stripe/meter.d.ts.map +1 -1
- package/lib/stripe/meter.js +1 -1
- package/lib/stripe/meter.js.map +1 -1
- package/lib/stripe/portal-configuration.d.ts +1 -2
- package/lib/stripe/portal-configuration.d.ts.map +1 -1
- package/lib/stripe/portal-configuration.js +2 -2
- package/lib/stripe/portal-configuration.js.map +1 -1
- package/lib/stripe/price.d.ts +1 -2
- package/lib/stripe/price.d.ts.map +1 -1
- package/lib/stripe/price.js +2 -2
- package/lib/stripe/price.js.map +1 -1
- package/lib/stripe/product-feature.d.ts +1 -2
- package/lib/stripe/product-feature.d.ts.map +1 -1
- package/lib/stripe/product-feature.js +2 -2
- package/lib/stripe/product-feature.js.map +1 -1
- package/lib/stripe/product.d.ts +1 -2
- package/lib/stripe/product.d.ts.map +1 -1
- package/lib/stripe/product.js +2 -2
- package/lib/stripe/product.js.map +1 -1
- package/lib/stripe/promotion-code.d.ts +1 -2
- package/lib/stripe/promotion-code.d.ts.map +1 -1
- package/lib/stripe/promotion-code.js +2 -2
- package/lib/stripe/promotion-code.js.map +1 -1
- package/lib/stripe/shipping-rate.d.ts +1 -2
- package/lib/stripe/shipping-rate.d.ts.map +1 -1
- package/lib/stripe/shipping-rate.js +2 -2
- package/lib/stripe/shipping-rate.js.map +1 -1
- package/lib/stripe/tax-rate.d.ts +1 -2
- package/lib/stripe/tax-rate.d.ts.map +1 -1
- package/lib/stripe/tax-rate.js +2 -2
- package/lib/stripe/tax-rate.js.map +1 -1
- package/lib/stripe/webhook.d.ts +16 -3
- package/lib/stripe/webhook.d.ts.map +1 -1
- package/lib/stripe/webhook.js +2 -2
- package/lib/stripe/webhook.js.map +1 -1
- package/lib/test/bun.d.ts.map +1 -1
- package/lib/test/bun.js +1 -0
- package/lib/test/bun.js.map +1 -1
- package/lib/test/options.d.ts +5 -0
- package/lib/test/options.d.ts.map +1 -1
- package/lib/test/vitest.d.ts.map +1 -1
- package/lib/test/vitest.js +1 -0
- package/lib/test/vitest.js.map +1 -1
- package/lib/upstash/redis.d.ts +1 -2
- package/lib/upstash/redis.d.ts.map +1 -1
- package/lib/upstash/redis.js.map +1 -1
- package/lib/util/api/client/client.gen.d.ts +3 -0
- package/lib/util/api/client/client.gen.d.ts.map +1 -0
- package/lib/util/api/client/client.gen.js +205 -0
- package/lib/util/api/client/client.gen.js.map +1 -0
- package/lib/util/api/client/index.d.ts +8 -0
- package/lib/util/api/client/index.d.ts.map +1 -0
- package/lib/util/api/client/index.js +6 -0
- package/lib/util/api/client/index.js.map +1 -0
- package/lib/util/api/client/types.gen.d.ts +125 -0
- package/lib/util/api/client/types.gen.d.ts.map +1 -0
- package/lib/util/api/client/types.gen.js +2 -0
- package/lib/util/api/client/types.gen.js.map +1 -0
- package/lib/util/api/client/utils.gen.d.ts +34 -0
- package/lib/util/api/client/utils.gen.d.ts.map +1 -0
- package/lib/util/api/client/utils.gen.js +231 -0
- package/lib/util/api/client/utils.gen.js.map +1 -0
- package/lib/util/api/core/auth.gen.d.ts +19 -0
- package/lib/util/api/core/auth.gen.d.ts.map +1 -0
- package/lib/util/api/core/auth.gen.js +15 -0
- package/lib/util/api/core/auth.gen.js.map +1 -0
- package/lib/util/api/core/bodySerializer.gen.d.ts +18 -0
- package/lib/util/api/core/bodySerializer.gen.d.ts.map +1 -0
- package/lib/util/api/core/bodySerializer.gen.js +58 -0
- package/lib/util/api/core/bodySerializer.gen.js.map +1 -0
- package/lib/util/api/core/params.gen.d.ts +34 -0
- package/lib/util/api/core/params.gen.d.ts.map +1 -0
- package/lib/util/api/core/params.gen.js +89 -0
- package/lib/util/api/core/params.gen.js.map +1 -0
- package/lib/util/api/core/pathSerializer.gen.d.ts +34 -0
- package/lib/util/api/core/pathSerializer.gen.d.ts.map +1 -0
- package/lib/util/api/core/pathSerializer.gen.js +115 -0
- package/lib/util/api/core/pathSerializer.gen.js.map +1 -0
- package/lib/util/api/core/serverSentEvents.gen.d.ts +72 -0
- package/lib/util/api/core/serverSentEvents.gen.d.ts.map +1 -0
- package/lib/util/api/core/serverSentEvents.gen.js +136 -0
- package/lib/util/api/core/serverSentEvents.gen.js.map +1 -0
- package/lib/util/api/core/types.gen.d.ts +79 -0
- package/lib/util/api/core/types.gen.d.ts.map +1 -0
- package/lib/util/api/core/types.gen.js +2 -0
- package/lib/util/api/core/types.gen.js.map +1 -0
- package/lib/util/api/core/utils.gen.d.ts +20 -0
- package/lib/util/api/core/utils.gen.d.ts.map +1 -0
- package/lib/util/api/core/utils.gen.js +88 -0
- package/lib/util/api/core/utils.gen.js.map +1 -0
- package/lib/util/http.d.ts +7 -2
- package/lib/util/http.d.ts.map +1 -1
- package/lib/util/http.js +29 -11
- package/lib/util/http.js.map +1 -1
- package/lib/util/idempotent-spawn.d.ts.map +1 -1
- package/lib/util/idempotent-spawn.js +5 -8
- package/lib/util/idempotent-spawn.js.map +1 -1
- package/lib/util/lock.d.ts +20 -0
- package/lib/util/lock.d.ts.map +1 -0
- package/lib/util/lock.js +45 -0
- package/lib/util/lock.js.map +1 -0
- package/lib/util/memoize.d.ts +6 -0
- package/lib/util/memoize.d.ts.map +1 -1
- package/lib/util/memoize.js +23 -0
- package/lib/util/memoize.js.map +1 -1
- package/lib/util/oauth-client.d.ts +71 -0
- package/lib/util/oauth-client.d.ts.map +1 -0
- package/lib/util/oauth-client.js +188 -0
- package/lib/util/oauth-client.js.map +1 -0
- package/lib/util/poll.d.ts +33 -0
- package/lib/util/poll.d.ts.map +1 -0
- package/lib/util/poll.js +19 -0
- package/lib/util/poll.js.map +1 -0
- package/lib/vercel/project-domain.d.ts +1 -2
- package/lib/vercel/project-domain.d.ts.map +1 -1
- package/lib/vercel/project-domain.js.map +1 -1
- package/lib/vercel/project.d.ts +1 -2
- package/lib/vercel/project.d.ts.map +1 -1
- package/lib/vercel/project.js +2 -2
- package/lib/vercel/project.js.map +1 -1
- package/package.json +5 -1
- package/src/alchemy.ts +7 -0
- package/src/apply.ts +32 -29
- package/src/auth.ts +253 -0
- package/src/aws/bucket.ts +3 -3
- package/src/aws/control/resource.ts +4 -6
- package/src/aws/ec2/internet-gateway-attachment.ts +5 -6
- package/src/aws/ec2/internet-gateway.ts +3 -5
- package/src/aws/ec2/nat-gateway.ts +3 -5
- package/src/aws/ec2/route-table-association.ts +3 -5
- package/src/aws/ec2/route-table.ts +3 -5
- package/src/aws/ec2/route.ts +3 -3
- package/src/aws/ec2/security-group-rule.ts +3 -5
- package/src/aws/ec2/security-group.ts +3 -5
- package/src/aws/ec2/subnet.ts +3 -3
- package/src/aws/ec2/vpc.ts +3 -3
- package/src/aws/function.ts +3 -3
- package/src/aws/oidc/oidc-provider.ts +3 -5
- package/src/aws/policy-attachment.ts +2 -4
- package/src/aws/policy.ts +5 -5
- package/src/aws/queue.ts +5 -5
- package/src/aws/role.ts +3 -3
- package/src/aws/ses.ts +3 -3
- package/src/aws/ssm-parameter.ts +3 -3
- package/src/aws/table.ts +3 -3
- package/src/cloudflare/account-api-token.ts +3 -4
- package/src/cloudflare/ai-gateway.ts +3 -5
- package/src/cloudflare/api-gateway-operation.ts +3 -4
- package/src/cloudflare/api-schema.ts +25 -26
- package/src/cloudflare/api-shield.ts +3 -4
- package/src/cloudflare/api.ts +122 -57
- package/src/cloudflare/assets.ts +95 -136
- package/src/cloudflare/auth.ts +160 -95
- package/src/cloudflare/bindings.ts +21 -4
- package/src/cloudflare/bound.ts +50 -52
- package/src/cloudflare/bucket.ts +321 -58
- package/src/cloudflare/bundle/internal-worker-bundle.ts +2 -1
- package/src/cloudflare/bundle/plugin-wasm.ts +5 -5
- package/src/cloudflare/certificate-pack.ts +5 -6
- package/src/cloudflare/compatibility-date.gen.ts +1 -1
- package/src/cloudflare/container.ts +7 -8
- package/src/cloudflare/custom-domain.ts +3 -5
- package/src/cloudflare/d1-database.ts +33 -34
- package/src/cloudflare/dispatch-namespace.ts +5 -6
- package/src/cloudflare/dns-records.ts +5 -5
- package/src/cloudflare/email-address.ts +7 -7
- package/src/cloudflare/email-catch-all.ts +6 -6
- package/src/cloudflare/email-routing.ts +5 -5
- package/src/cloudflare/email-rule.ts +5 -5
- package/src/cloudflare/hyperdrive-ref.ts +98 -0
- package/src/cloudflare/hyperdrive.ts +35 -36
- package/src/cloudflare/index.ts +2 -0
- package/src/cloudflare/kv-namespace.ts +31 -32
- package/src/cloudflare/miniflare/build-worker-options.ts +21 -12
- package/src/cloudflare/miniflare/delete.ts +1 -1
- package/src/cloudflare/miniflare/miniflare-controller.ts +27 -12
- package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +117 -102
- package/src/cloudflare/miniflare/remote-binding-proxy.ts +16 -4
- package/src/cloudflare/miniflare/tunnel.ts +116 -0
- package/src/cloudflare/next.ts +3 -0
- package/src/cloudflare/permission-groups.ts +4 -6
- package/src/cloudflare/pipeline.ts +29 -30
- package/src/cloudflare/queue-consumer.ts +5 -7
- package/src/cloudflare/queue.ts +42 -43
- package/src/cloudflare/react-router/plugin.ts +20 -0
- package/src/cloudflare/redirect-rule.ts +5 -5
- package/src/cloudflare/route.ts +5 -5
- package/src/cloudflare/ruleset.ts +3 -4
- package/src/cloudflare/secret-ref.ts +56 -0
- package/src/cloudflare/secret.ts +35 -36
- package/src/cloudflare/secrets-store.ts +5 -8
- package/src/cloudflare/tunnel.ts +5 -7
- package/src/cloudflare/user.ts +12 -9
- package/src/cloudflare/vectorize-index.ts +8 -12
- package/src/cloudflare/vectorize-metadata-index.ts +6 -8
- package/src/cloudflare/website.ts +1 -1
- package/src/cloudflare/worker-assets.ts +10 -56
- package/src/cloudflare/worker-metadata.ts +14 -12
- package/src/cloudflare/worker-stub.ts +5 -5
- package/src/cloudflare/worker-subdomain.ts +6 -7
- package/src/cloudflare/worker.ts +123 -92
- package/src/cloudflare/wrangler.json.ts +13 -11
- package/src/cloudflare/zone.ts +3 -3
- package/src/context.ts +9 -7
- package/src/destroy.ts +2 -2
- package/src/dns/import-dns.ts +3 -5
- package/src/docker/container.ts +3 -6
- package/src/docker/image.ts +13 -13
- package/src/docker/network.ts +3 -4
- package/src/docker/remote-image.ts +3 -6
- package/src/docker/volume.ts +3 -4
- package/src/esbuild/bundle.ts +10 -8
- package/src/fs/copy-file.ts +3 -3
- package/src/fs/file.ts +3 -3
- package/src/fs/folder.ts +3 -3
- package/src/github/comment.ts +5 -7
- package/src/github/repository-environment.ts +3 -5
- package/src/github/repository-webhook.ts +3 -5
- package/src/github/secret.ts +3 -5
- package/src/llms.cloudflare.txt +1 -1
- package/src/neon/api/client.gen.ts +28 -0
- package/src/neon/api/sdk.gen.ts +2596 -0
- package/src/neon/api/types.gen.ts +8287 -0
- package/src/neon/api.ts +51 -147
- package/src/neon/branch.ts +278 -0
- package/src/neon/index.ts +1 -1
- package/src/neon/project.ts +136 -721
- package/src/neon/utils.ts +105 -0
- package/src/os/exec.ts +3 -3
- package/src/planetscale/api/client.gen.ts +28 -2882
- package/src/planetscale/api/sdk.gen.ts +3336 -0
- package/src/planetscale/api/types.gen.ts +778 -450
- package/src/planetscale/api.ts +101 -0
- package/src/planetscale/branch.ts +20 -19
- package/src/planetscale/database.ts +69 -70
- package/src/planetscale/index.ts +1 -1
- package/src/planetscale/password.ts +18 -22
- package/src/planetscale/role.ts +21 -21
- package/src/planetscale/utils.ts +20 -74
- package/src/random/random-string.ts +4 -4
- package/src/resource.ts +6 -2
- package/src/scope.ts +12 -1
- package/src/sentry/client-key.ts +3 -5
- package/src/sentry/project.ts +3 -5
- package/src/sentry/team.ts +3 -3
- package/src/state/r2-rest-state-store.ts +15 -57
- package/src/stripe/card.ts +3 -3
- package/src/stripe/coupon.ts +3 -3
- package/src/stripe/customer.ts +3 -3
- package/src/stripe/entitlements-feature.ts +3 -5
- package/src/stripe/file.ts +3 -3
- package/src/stripe/meter.ts +3 -3
- package/src/stripe/portal-configuration.ts +3 -5
- package/src/stripe/price.ts +3 -3
- package/src/stripe/product-feature.ts +3 -5
- package/src/stripe/product.ts +3 -3
- package/src/stripe/promotion-code.ts +3 -5
- package/src/stripe/shipping-rate.ts +3 -5
- package/src/stripe/tax-rate.ts +3 -3
- package/src/stripe/webhook.ts +3 -5
- package/src/test/bun.ts +1 -0
- package/src/test/options.ts +6 -0
- package/src/test/vitest.ts +1 -0
- package/src/upstash/redis.ts +1 -3
- package/src/util/api/client/client.gen.ts +268 -0
- package/src/util/api/client/index.ts +25 -0
- package/src/util/api/client/types.gen.ts +268 -0
- package/src/util/api/client/utils.gen.ts +331 -0
- package/src/util/api/core/auth.gen.ts +42 -0
- package/src/util/api/core/bodySerializer.gen.ts +92 -0
- package/src/util/api/core/params.gen.ts +153 -0
- package/src/util/api/core/pathSerializer.gen.ts +181 -0
- package/src/util/api/core/serverSentEvents.gen.ts +264 -0
- package/src/util/api/core/types.gen.ts +118 -0
- package/src/util/api/core/utils.gen.ts +143 -0
- package/src/util/http.ts +38 -11
- package/src/util/idempotent-spawn.ts +5 -6
- package/src/util/lock.ts +48 -0
- package/src/util/memoize.ts +26 -0
- package/src/util/oauth-client.ts +238 -0
- package/src/util/poll.ts +55 -0
- package/src/vercel/project-domain.ts +1 -3
- package/src/vercel/project.ts +3 -3
- package/templates/rwsdk/.cursor/rules/alchemy_cloudflare.mdc +1 -1
- package/templates/rwsdk/package.json +3 -3
- package/workers/cloudflare-state-store.js +8 -5619
- package/workers/dofs-state-store.js +2 -802
- package/workers/remote-binding-proxy.js +3 -39
- package/workers/remote-binding-proxy.ts +126 -35
- package/workers/tunnel-proxy.js +43 -0
- package/workers/tunnel-proxy.ts +121 -0
- package/lib/cloudflare/asset-manifest.d.ts +0 -15
- package/lib/cloudflare/asset-manifest.d.ts.map +0 -1
- package/lib/cloudflare/asset-manifest.js +0 -1
- package/lib/cloudflare/asset-manifest.js.map +0 -1
- package/lib/cloudflare/oauth.d.ts +0 -22
- package/lib/cloudflare/oauth.d.ts.map +0 -1
- package/lib/cloudflare/oauth.js +0 -214
- package/lib/cloudflare/oauth.js.map +0 -1
- package/lib/neon/api-error.d.ts +0 -31
- package/lib/neon/api-error.d.ts.map +0 -1
- package/lib/neon/api-error.js +0 -73
- package/lib/neon/api-error.js.map +0 -1
- package/lib/planetscale/api/index.d.ts +0 -3
- package/lib/planetscale/api/index.d.ts.map +0 -1
- package/lib/planetscale/api/index.js +0 -4
- package/lib/planetscale/api/index.js.map +0 -1
- package/lib/util/neverthrow.d.ts +0 -16
- package/lib/util/neverthrow.d.ts.map +0 -1
- package/lib/util/neverthrow.js +0 -46
- package/lib/util/neverthrow.js.map +0 -1
- package/src/cloudflare/asset-manifest.ts +0 -16
- package/src/cloudflare/oauth.ts +0 -301
- package/src/neon/api-error.ts +0 -81
- package/src/planetscale/api/index.ts +0 -4
- package/src/util/neverthrow.ts +0 -64
|
@@ -190,46 +190,45 @@ export interface HyperdriveProps extends CloudflareApiOptions {
|
|
|
190
190
|
* Output returned after Cloudflare Hyperdrive creation/update.
|
|
191
191
|
* IMPORTANT: The interface name MUST match the exported resource name.
|
|
192
192
|
*/
|
|
193
|
-
export type Hyperdrive =
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
id: string;
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Name of the Hyperdrive configuration
|
|
202
|
-
*/
|
|
203
|
-
name: string;
|
|
193
|
+
export type Hyperdrive = Omit<HyperdriveProps, "origin" | "dev"> & {
|
|
194
|
+
/**
|
|
195
|
+
* The ID of the resource
|
|
196
|
+
*/
|
|
197
|
+
id: string;
|
|
204
198
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
199
|
+
/**
|
|
200
|
+
* Name of the Hyperdrive configuration
|
|
201
|
+
*/
|
|
202
|
+
name: string;
|
|
209
203
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
204
|
+
/**
|
|
205
|
+
* The Cloudflare-generated UUID of the hyperdrive
|
|
206
|
+
*/
|
|
207
|
+
hyperdriveId: string;
|
|
214
208
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
dev: {
|
|
220
|
-
/**
|
|
221
|
-
* The connection string to use for local development
|
|
222
|
-
*/
|
|
223
|
-
origin: Secret;
|
|
224
|
-
};
|
|
209
|
+
/**
|
|
210
|
+
* Database connection origin configuration
|
|
211
|
+
*/
|
|
212
|
+
origin: HyperdrivePublicOrigin | HyperdriveOriginWithAccess;
|
|
225
213
|
|
|
214
|
+
/**
|
|
215
|
+
* Local development configuration
|
|
216
|
+
* @internal
|
|
217
|
+
*/
|
|
218
|
+
dev: {
|
|
226
219
|
/**
|
|
227
|
-
*
|
|
228
|
-
* @internal
|
|
220
|
+
* The connection string to use for local development
|
|
229
221
|
*/
|
|
230
|
-
|
|
222
|
+
origin: Secret;
|
|
231
223
|
};
|
|
232
224
|
|
|
225
|
+
/**
|
|
226
|
+
* Resource type identifier for binding.
|
|
227
|
+
* @internal
|
|
228
|
+
*/
|
|
229
|
+
type: "hyperdrive";
|
|
230
|
+
};
|
|
231
|
+
|
|
233
232
|
/**
|
|
234
233
|
* Represents a Cloudflare Hyperdrive configuration.
|
|
235
234
|
*
|
|
@@ -356,7 +355,7 @@ const _Hyperdrive = Resource(
|
|
|
356
355
|
props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
|
|
357
356
|
|
|
358
357
|
if (this.scope.local) {
|
|
359
|
-
return
|
|
358
|
+
return {
|
|
360
359
|
id,
|
|
361
360
|
hyperdriveId: hyperdriveId || "",
|
|
362
361
|
name,
|
|
@@ -365,7 +364,7 @@ const _Hyperdrive = Resource(
|
|
|
365
364
|
mtls: props.mtls,
|
|
366
365
|
dev: props.dev,
|
|
367
366
|
type: "hyperdrive",
|
|
368
|
-
}
|
|
367
|
+
};
|
|
369
368
|
}
|
|
370
369
|
const api = await createCloudflareApi(props);
|
|
371
370
|
|
|
@@ -445,7 +444,7 @@ const _Hyperdrive = Resource(
|
|
|
445
444
|
}
|
|
446
445
|
|
|
447
446
|
// Construct the output object from API response and props
|
|
448
|
-
return
|
|
447
|
+
return {
|
|
449
448
|
id,
|
|
450
449
|
hyperdriveId: result.id, // Store the Cloudflare-assigned UUID
|
|
451
450
|
name: result.name,
|
|
@@ -454,7 +453,7 @@ const _Hyperdrive = Resource(
|
|
|
454
453
|
mtls: result.mtls,
|
|
455
454
|
dev: props.dev,
|
|
456
455
|
type: "hyperdrive",
|
|
457
|
-
}
|
|
456
|
+
};
|
|
458
457
|
},
|
|
459
458
|
);
|
|
460
459
|
|
package/src/cloudflare/index.ts
CHANGED
|
@@ -30,6 +30,7 @@ export * from "./email-address.ts";
|
|
|
30
30
|
export * from "./email-catch-all.ts";
|
|
31
31
|
export * from "./email-routing.ts";
|
|
32
32
|
export * from "./email-rule.ts";
|
|
33
|
+
export * from "./hyperdrive-ref.ts";
|
|
33
34
|
export * from "./hyperdrive.ts";
|
|
34
35
|
export * from "./images.ts";
|
|
35
36
|
export * from "./kv-namespace.ts";
|
|
@@ -49,6 +50,7 @@ export * from "./route.ts";
|
|
|
49
50
|
export * from "./rule.ts";
|
|
50
51
|
export * from "./ruleset.ts";
|
|
51
52
|
export * from "./secret-key.ts";
|
|
53
|
+
export * from "./secret-ref.ts";
|
|
52
54
|
export * from "./secret.ts";
|
|
53
55
|
export * from "./secrets-store.ts";
|
|
54
56
|
export * from "./state.ts";
|
|
@@ -95,47 +95,46 @@ export interface KVPair {
|
|
|
95
95
|
metadata?: any;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
export function isKVNamespace(resource:
|
|
99
|
-
return resource[ResourceKind] === "cloudflare::KVNamespace";
|
|
98
|
+
export function isKVNamespace(resource: any): resource is KVNamespace {
|
|
99
|
+
return resource?.[ResourceKind] === "cloudflare::KVNamespace";
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
/**
|
|
103
103
|
* Output returned after KV Namespace creation/update
|
|
104
104
|
*/
|
|
105
|
-
export type KVNamespace =
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
namespaceId: string;
|
|
105
|
+
export type KVNamespace = Omit<KVNamespaceProps, "delete" | "dev"> & {
|
|
106
|
+
type: "kv_namespace";
|
|
107
|
+
/**
|
|
108
|
+
* The ID of the namespace
|
|
109
|
+
*/
|
|
110
|
+
namespaceId: string;
|
|
112
111
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
/**
|
|
113
|
+
* Time at which the namespace was created
|
|
114
|
+
*/
|
|
115
|
+
createdAt: number;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Time at which the namespace was last modified
|
|
119
|
+
*/
|
|
120
|
+
modifiedAt: number;
|
|
117
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Development mode properties
|
|
124
|
+
* @internal
|
|
125
|
+
*/
|
|
126
|
+
dev: {
|
|
118
127
|
/**
|
|
119
|
-
*
|
|
128
|
+
* The ID of the KV namespace in development mode
|
|
120
129
|
*/
|
|
121
|
-
|
|
130
|
+
id: string;
|
|
122
131
|
|
|
123
132
|
/**
|
|
124
|
-
*
|
|
125
|
-
* @internal
|
|
133
|
+
* Whether the KV namespace is running remotely
|
|
126
134
|
*/
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* The ID of the KV namespace in development mode
|
|
130
|
-
*/
|
|
131
|
-
id: string;
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Whether the KV namespace is running remotely
|
|
135
|
-
*/
|
|
136
|
-
remote: boolean;
|
|
137
|
-
};
|
|
135
|
+
remote: boolean;
|
|
138
136
|
};
|
|
137
|
+
};
|
|
139
138
|
|
|
140
139
|
/**
|
|
141
140
|
* A Cloudflare KV Namespace is a key-value store that can be used to store data for your application.
|
|
@@ -221,7 +220,7 @@ const _KVNamespace = Resource(
|
|
|
221
220
|
};
|
|
222
221
|
|
|
223
222
|
if (local) {
|
|
224
|
-
return
|
|
223
|
+
return {
|
|
225
224
|
type: "kv_namespace",
|
|
226
225
|
namespaceId: this.output?.namespaceId ?? "",
|
|
227
226
|
title,
|
|
@@ -229,7 +228,7 @@ const _KVNamespace = Resource(
|
|
|
229
228
|
dev,
|
|
230
229
|
createdAt: this.output?.createdAt ?? Date.now(),
|
|
231
230
|
modifiedAt: Date.now(),
|
|
232
|
-
}
|
|
231
|
+
};
|
|
233
232
|
}
|
|
234
233
|
|
|
235
234
|
const api = await createCloudflareApi(props);
|
|
@@ -260,7 +259,7 @@ const _KVNamespace = Resource(
|
|
|
260
259
|
|
|
261
260
|
await insertKVRecords(api, result.namespaceId, props);
|
|
262
261
|
|
|
263
|
-
return
|
|
262
|
+
return {
|
|
264
263
|
type: "kv_namespace",
|
|
265
264
|
namespaceId: result.namespaceId,
|
|
266
265
|
title,
|
|
@@ -268,7 +267,7 @@ const _KVNamespace = Resource(
|
|
|
268
267
|
dev,
|
|
269
268
|
createdAt: result.createdAt,
|
|
270
269
|
modifiedAt: Date.now(),
|
|
271
|
-
}
|
|
270
|
+
};
|
|
272
271
|
},
|
|
273
272
|
);
|
|
274
273
|
|
|
@@ -2,12 +2,11 @@ import * as miniflare from "miniflare";
|
|
|
2
2
|
import { assertNever } from "../../util/assert-never.ts";
|
|
3
3
|
import type { HTTPServer } from "../../util/http.ts";
|
|
4
4
|
import type { CloudflareApi } from "../api.ts";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
type WorkerBindingSpec,
|
|
5
|
+
import type {
|
|
6
|
+
Binding,
|
|
7
|
+
Bindings,
|
|
8
|
+
WorkerBindingService,
|
|
9
|
+
WorkerBindingSpec,
|
|
11
10
|
} from "../bindings.ts";
|
|
12
11
|
import { isQueueEventSource, type EventSource } from "../event-source.ts";
|
|
13
12
|
import type { WorkerBundle, WorkerBundleSource } from "../worker-bundle.ts";
|
|
@@ -25,11 +24,11 @@ export interface MiniflareWorkerInput {
|
|
|
25
24
|
assets: AssetsConfig | undefined;
|
|
26
25
|
bundle: WorkerBundleSource;
|
|
27
26
|
port: number | undefined;
|
|
27
|
+
tunnel: boolean | undefined;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
type RemoteOnlyBindingType =
|
|
31
31
|
| "ai"
|
|
32
|
-
| "ai_gateway"
|
|
33
32
|
| "browser"
|
|
34
33
|
| "dispatch_namespace"
|
|
35
34
|
| "mtls_certificate"
|
|
@@ -92,13 +91,18 @@ export const buildWorkerOptions = async (
|
|
|
92
91
|
(options.bindings ??= {})[key] = binding;
|
|
93
92
|
continue;
|
|
94
93
|
}
|
|
95
|
-
if (binding === Self) {
|
|
94
|
+
if (binding.type === "cloudflare::Worker::Self") {
|
|
96
95
|
(options.serviceBindings ??= {})[key] = miniflare.kCurrentWorker;
|
|
97
96
|
continue;
|
|
98
97
|
}
|
|
99
98
|
switch (binding.type) {
|
|
100
|
-
case "ai":
|
|
101
|
-
|
|
99
|
+
case "ai": {
|
|
100
|
+
const existing = remoteBindings.find((b) => b.type === "ai");
|
|
101
|
+
if (existing) {
|
|
102
|
+
throw new Error(
|
|
103
|
+
`Workers cannot have multiple AI bindings. Binding "${key}" conflicts with "${existing.name}".`,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
102
106
|
remoteBindings.push({
|
|
103
107
|
type: "ai",
|
|
104
108
|
name: key,
|
|
@@ -180,7 +184,9 @@ export const buildWorkerOptions = async (
|
|
|
180
184
|
break;
|
|
181
185
|
}
|
|
182
186
|
case "hyperdrive": {
|
|
183
|
-
(
|
|
187
|
+
if (binding.dev) {
|
|
188
|
+
(options.hyperdrives ??= {})[key] = binding.dev.origin.unencrypted;
|
|
189
|
+
}
|
|
184
190
|
break;
|
|
185
191
|
}
|
|
186
192
|
case "images": {
|
|
@@ -459,7 +465,10 @@ const normalizeBundle = (bundle: WorkerBundle) => {
|
|
|
459
465
|
};
|
|
460
466
|
|
|
461
467
|
const isRemoteBinding = (binding: Binding) => {
|
|
462
|
-
if (
|
|
468
|
+
if (
|
|
469
|
+
typeof binding === "string" ||
|
|
470
|
+
binding.type === "cloudflare::Worker::Self"
|
|
471
|
+
) {
|
|
463
472
|
return false;
|
|
464
473
|
}
|
|
465
474
|
return (
|
|
@@ -113,7 +113,7 @@ async function cleanMiniflareDirectory(dotAlchemy: string) {
|
|
|
113
113
|
|
|
114
114
|
const removeDirectory = async (path: string, options?: RmDirOptions) => {
|
|
115
115
|
try {
|
|
116
|
-
await fs.
|
|
116
|
+
await fs.rm(path, options);
|
|
117
117
|
} catch (error) {
|
|
118
118
|
if (!isENOENT(error)) {
|
|
119
119
|
throw error;
|
|
@@ -10,8 +10,12 @@ import {
|
|
|
10
10
|
buildWorkerOptions,
|
|
11
11
|
type MiniflareWorkerInput,
|
|
12
12
|
} from "./build-worker-options.ts";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
createMiniflareWorkerProxy,
|
|
15
|
+
type MiniflareWorkerProxy,
|
|
16
|
+
} from "./miniflare-worker-proxy.ts";
|
|
14
17
|
import { getDefaultPersistPath } from "./paths.ts";
|
|
18
|
+
import { createTunnel, type Tunnel } from "./tunnel.ts";
|
|
15
19
|
|
|
16
20
|
declare global {
|
|
17
21
|
var ALCHEMY_MINIFLARE_CONTROLLER: MiniflareController | undefined;
|
|
@@ -21,6 +25,7 @@ export class MiniflareController {
|
|
|
21
25
|
abort = new AbortController();
|
|
22
26
|
miniflare: miniflare.Miniflare | undefined;
|
|
23
27
|
options = new Map<string, miniflare.WorkerOptions>();
|
|
28
|
+
tunnel: Tunnel | undefined;
|
|
24
29
|
localProxies = new Map<string, MiniflareWorkerProxy>();
|
|
25
30
|
remoteProxies = new Map<string, HTTPServer>();
|
|
26
31
|
mutex = new AsyncMutex();
|
|
@@ -40,21 +45,32 @@ export class MiniflareController {
|
|
|
40
45
|
assert(first.value, "First value is undefined");
|
|
41
46
|
this.options.set(input.name, first.value);
|
|
42
47
|
const miniflare = await this.update();
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
let url: URL;
|
|
49
|
+
if (input.tunnel) {
|
|
50
|
+
this.tunnel ??= await createTunnel(miniflare);
|
|
51
|
+
url = await this.tunnel.configureWorker({
|
|
52
|
+
api: input.api,
|
|
53
|
+
name: input.name,
|
|
54
|
+
});
|
|
55
|
+
} else {
|
|
56
|
+
const proxy = await createMiniflareWorkerProxy({
|
|
57
|
+
port: input.port ?? (await findOpenPort()),
|
|
58
|
+
getWorkerName: () => input.name,
|
|
59
|
+
miniflare,
|
|
60
|
+
mode: "local",
|
|
61
|
+
});
|
|
62
|
+
this.localProxies.set(input.name, proxy);
|
|
63
|
+
url = proxy.url;
|
|
64
|
+
}
|
|
49
65
|
void this.watch(input.id, watcher);
|
|
50
66
|
logger.task(input.id, {
|
|
51
|
-
message: `Ready at ${
|
|
67
|
+
message: `Ready at ${url}`,
|
|
52
68
|
status: "success",
|
|
53
69
|
resource: input.id,
|
|
54
70
|
prefix: "dev",
|
|
55
71
|
prefixColor: "cyanBright",
|
|
56
72
|
});
|
|
57
|
-
return
|
|
73
|
+
return url.toString();
|
|
58
74
|
}
|
|
59
75
|
|
|
60
76
|
private async watch(
|
|
@@ -76,9 +92,7 @@ export class MiniflareController {
|
|
|
76
92
|
|
|
77
93
|
private async update() {
|
|
78
94
|
return await this.mutex.lock(async () => {
|
|
79
|
-
const options: miniflare.MiniflareOptions
|
|
80
|
-
workers: miniflare.WorkerOptions[];
|
|
81
|
-
} = {
|
|
95
|
+
const options: miniflare.MiniflareOptions = {
|
|
82
96
|
workers: [],
|
|
83
97
|
defaultPersistRoot: path.resolve(
|
|
84
98
|
getDefaultPersistPath(Scope.current.rootDir),
|
|
@@ -147,6 +161,7 @@ export class MiniflareController {
|
|
|
147
161
|
this.abort.abort();
|
|
148
162
|
await Promise.all([
|
|
149
163
|
this.miniflare?.dispose(),
|
|
164
|
+
this.tunnel?.close(),
|
|
150
165
|
...this.localProxies.values().map((proxy) => proxy.close()),
|
|
151
166
|
...this.remoteProxies.values().map((proxy) => proxy.close()),
|
|
152
167
|
]);
|
|
@@ -1,126 +1,103 @@
|
|
|
1
1
|
import * as miniflare from "miniflare";
|
|
2
2
|
import { once } from "node:events";
|
|
3
3
|
import http from "node:http";
|
|
4
|
-
import type Stream from "node:stream";
|
|
5
4
|
import { Readable } from "node:stream";
|
|
6
5
|
import { WebSocket, WebSocketServer } from "ws";
|
|
7
|
-
import {
|
|
6
|
+
import { coupleWebSocket } from "../../util/http.ts";
|
|
8
7
|
|
|
9
|
-
interface
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
miniflare: miniflare.Miniflare;
|
|
8
|
+
export interface MiniflareWorkerProxy {
|
|
9
|
+
url: URL;
|
|
10
|
+
close: () => Promise<void>;
|
|
13
11
|
}
|
|
14
12
|
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
await this.handleRequest(req, res);
|
|
25
|
-
});
|
|
26
|
-
this.server.listen(this.options.port);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
get ready() {
|
|
30
|
-
if (!this.server.listening) {
|
|
31
|
-
return once(this.server, "listening");
|
|
32
|
-
}
|
|
33
|
-
return Promise.resolve();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
get url() {
|
|
37
|
-
return `http://localhost:${this.options.port}`;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
async close() {
|
|
41
|
-
await Promise.all([
|
|
42
|
-
new Promise((resolve) => this.wss.close(resolve)),
|
|
43
|
-
new Promise((resolve) => this.server.close(resolve)),
|
|
44
|
-
]);
|
|
45
|
-
}
|
|
13
|
+
export async function createMiniflareWorkerProxy(options: {
|
|
14
|
+
port: number;
|
|
15
|
+
transformRequest?: (request: RequestInfo) => void;
|
|
16
|
+
getWorkerName: (request: miniflare.Request) => string;
|
|
17
|
+
miniflare: miniflare.Miniflare;
|
|
18
|
+
mode: "local" | "remote";
|
|
19
|
+
}) {
|
|
20
|
+
const server = http.createServer();
|
|
21
|
+
const wss = new WebSocketServer({ noServer: true });
|
|
46
22
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (!server) {
|
|
23
|
+
server.on("upgrade", async (req, socket, head) => {
|
|
24
|
+
try {
|
|
25
|
+
const server = await createServerWebSocket(req);
|
|
26
|
+
coupleWebSocket(wss, req, socket, head, server);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
console.error(error);
|
|
54
29
|
socket.destroy();
|
|
55
|
-
return;
|
|
56
30
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
);
|
|
70
|
-
if (!target) {
|
|
71
|
-
logger.error(
|
|
72
|
-
`[Alchemy] Websocket connection failed: The worker "${this.options.name}" is not running.`,
|
|
31
|
+
});
|
|
32
|
+
server.on("request", async (req, res) => {
|
|
33
|
+
try {
|
|
34
|
+
const request = toMiniflareRequest(req);
|
|
35
|
+
const name = options.getWorkerName(request);
|
|
36
|
+
const worker = await options.miniflare.getWorker(name);
|
|
37
|
+
const response = await worker.fetch(request);
|
|
38
|
+
writeMiniflareResponseToNode(response, res);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.error(error);
|
|
41
|
+
const response = MiniflareWorkerProxyError.fromUnknown(error).toResponse(
|
|
42
|
+
options.mode,
|
|
73
43
|
);
|
|
74
|
-
|
|
44
|
+
writeMiniflareResponseToNode(response, res);
|
|
75
45
|
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
const toMiniflareRequest = (req: http.IncomingMessage): miniflare.Request => {
|
|
49
|
+
const info = parseIncomingMessage(req);
|
|
50
|
+
options.transformRequest?.(info);
|
|
51
|
+
return new miniflare.Request(info.url, {
|
|
52
|
+
method: info.method,
|
|
53
|
+
headers: info.headers,
|
|
54
|
+
body: info.body,
|
|
55
|
+
redirect: info.redirect,
|
|
56
|
+
duplex: info.duplex,
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const createServerWebSocket = async (req: http.IncomingMessage) => {
|
|
61
|
+
const name = options.getWorkerName(toMiniflareRequest(req));
|
|
62
|
+
const target = await options.miniflare.unsafeGetDirectURL(name);
|
|
76
63
|
const url = new URL(req.url ?? "/", target);
|
|
77
64
|
url.protocol = url.protocol.replace("http", "ws");
|
|
78
65
|
const protocols = req.headers["sec-websocket-protocol"]
|
|
79
66
|
?.split(",")
|
|
80
67
|
.map((p) => p.trim());
|
|
81
68
|
const server = new WebSocket(url, protocols);
|
|
82
|
-
|
|
83
|
-
return
|
|
84
|
-
|
|
85
|
-
once(server, "close", { signal: controller.signal }).then((args) => {
|
|
86
|
-
const [code, reason] = args as [number, string];
|
|
87
|
-
logger.error(
|
|
88
|
-
`[Alchemy] Websocket connection failed for worker "${this.options.name}": ${code} ${reason}`,
|
|
89
|
-
);
|
|
90
|
-
return null;
|
|
91
|
-
}),
|
|
92
|
-
]).finally(() => controller.abort());
|
|
93
|
-
}
|
|
69
|
+
await once(server, "open");
|
|
70
|
+
return server;
|
|
71
|
+
};
|
|
94
72
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
}
|
|
73
|
+
server.listen(options.port);
|
|
74
|
+
await once(server, "listening");
|
|
75
|
+
const url = new URL(`http://localhost:${options.port}`);
|
|
76
|
+
|
|
77
|
+
return {
|
|
78
|
+
url,
|
|
79
|
+
close: async () => {
|
|
80
|
+
await Promise.all([
|
|
81
|
+
new Promise((resolve) => server.close(resolve)),
|
|
82
|
+
new Promise((resolve) => wss.close(resolve)),
|
|
83
|
+
]);
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
interface RequestInfo {
|
|
89
|
+
method: string;
|
|
90
|
+
url: URL;
|
|
91
|
+
headers: miniflare.Headers;
|
|
92
|
+
body: miniflare.BodyInit | undefined;
|
|
93
|
+
redirect: "manual";
|
|
94
|
+
duplex: "half" | undefined;
|
|
119
95
|
}
|
|
120
96
|
|
|
121
|
-
const
|
|
97
|
+
const parseIncomingMessage = (req: http.IncomingMessage): RequestInfo => {
|
|
122
98
|
const method = req.method ?? "GET";
|
|
123
|
-
const
|
|
99
|
+
const protocol = req.headers["x-forwarded-proto"] ?? "http";
|
|
100
|
+
const url = new URL(req.url ?? "/", `${protocol}://${req.headers.host}`);
|
|
124
101
|
const headers = new miniflare.Headers();
|
|
125
102
|
for (const [key, value] of Object.entries(req.headers)) {
|
|
126
103
|
if (Array.isArray(value)) {
|
|
@@ -135,13 +112,14 @@ const toMiniflareRequest = (req: http.IncomingMessage) => {
|
|
|
135
112
|
["GET", "HEAD", "OPTIONS"].includes(method) || !req.readable
|
|
136
113
|
? undefined
|
|
137
114
|
: Readable.toWeb(req);
|
|
138
|
-
return
|
|
115
|
+
return {
|
|
139
116
|
method,
|
|
117
|
+
url,
|
|
140
118
|
headers,
|
|
141
119
|
body,
|
|
142
120
|
redirect: "manual",
|
|
143
121
|
duplex: body ? "half" : undefined,
|
|
144
|
-
}
|
|
122
|
+
};
|
|
145
123
|
};
|
|
146
124
|
|
|
147
125
|
const writeMiniflareResponseToNode = (
|
|
@@ -159,3 +137,40 @@ const writeMiniflareResponseToNode = (
|
|
|
159
137
|
out.end();
|
|
160
138
|
}
|
|
161
139
|
};
|
|
140
|
+
|
|
141
|
+
export class MiniflareWorkerProxyError extends Error {
|
|
142
|
+
constructor(
|
|
143
|
+
message: string,
|
|
144
|
+
readonly status: number,
|
|
145
|
+
options?: ErrorOptions,
|
|
146
|
+
) {
|
|
147
|
+
super(message, options);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
toResponse(mode: "local" | "remote"): miniflare.Response {
|
|
151
|
+
let text = `[Alchemy] ${this.message}`;
|
|
152
|
+
if (mode === "local" && this.cause) {
|
|
153
|
+
const cause =
|
|
154
|
+
this.cause instanceof Error
|
|
155
|
+
? (this.cause.stack ?? this.cause.message)
|
|
156
|
+
: String(this.cause);
|
|
157
|
+
text += `\n\n${cause}`;
|
|
158
|
+
}
|
|
159
|
+
return new miniflare.Response(text, {
|
|
160
|
+
status: this.status,
|
|
161
|
+
headers: {
|
|
162
|
+
"Content-Type": "text/plain",
|
|
163
|
+
"Alchemy-Error": this.message,
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
static fromUnknown(error: unknown): MiniflareWorkerProxyError {
|
|
169
|
+
if (error instanceof MiniflareWorkerProxyError) {
|
|
170
|
+
return error;
|
|
171
|
+
}
|
|
172
|
+
return new MiniflareWorkerProxyError("An unknown error occurred.", 500, {
|
|
173
|
+
cause: error,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|