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
package/src/cloudflare/bound.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
Ai,
|
|
3
|
-
AiGateway,
|
|
4
3
|
AnalyticsEngineDataset,
|
|
5
4
|
D1Database,
|
|
6
5
|
DispatchNamespace,
|
|
@@ -21,7 +20,6 @@ import type {
|
|
|
21
20
|
} from "@cloudflare/workers-types";
|
|
22
21
|
import type { Pipeline } from "cloudflare:pipelines";
|
|
23
22
|
import type { Secret } from "../secret.ts";
|
|
24
|
-
import type { AiGateway as _AiGateway } from "./ai-gateway.ts";
|
|
25
23
|
import type { Ai as _Ai } from "./ai.ts";
|
|
26
24
|
import type { AnalyticsEngineDataset as _AnalyticsEngineDataset } from "./analytics-engine.ts";
|
|
27
25
|
import type { Assets } from "./assets.ts";
|
|
@@ -31,12 +29,14 @@ import type { R2Bucket as _R2Bucket } from "./bucket.ts";
|
|
|
31
29
|
import type { Container as _Container } from "./container.ts";
|
|
32
30
|
import type { D1Database as _D1Database } from "./d1-database.ts";
|
|
33
31
|
import type { DurableObjectNamespace as _DurableObjectNamespace } from "./durable-object-namespace.ts";
|
|
32
|
+
import type { HyperdriveRef } from "./hyperdrive-ref.ts";
|
|
34
33
|
import type { Hyperdrive as _Hyperdrive } from "./hyperdrive.ts";
|
|
35
34
|
import type { Images as _Images } from "./images.ts";
|
|
36
35
|
import type { Pipeline as _Pipeline } from "./pipeline.ts";
|
|
37
36
|
import type { Queue as _Queue } from "./queue.ts";
|
|
38
37
|
import type { RateLimit as _RateLimit } from "./rate-limit.ts";
|
|
39
38
|
import type { SecretKey } from "./secret-key.ts";
|
|
39
|
+
import type { SecretRef as CloudflareSecretRef } from "./secret-ref.ts";
|
|
40
40
|
import type { Secret as CloudflareSecret } from "./secret.ts";
|
|
41
41
|
import type { VectorizeIndex as _VectorizeIndex } from "./vectorize-index.ts";
|
|
42
42
|
import type { VersionMetadata as _VersionMetadata } from "./version-metadata.ts";
|
|
@@ -70,53 +70,51 @@ export type Bound<T extends Binding> = T extends _DurableObjectNamespace<
|
|
|
70
70
|
? Service
|
|
71
71
|
: T extends _R2Bucket
|
|
72
72
|
? R2Bucket
|
|
73
|
-
: T extends
|
|
74
|
-
?
|
|
75
|
-
: T extends
|
|
76
|
-
?
|
|
77
|
-
: T extends
|
|
78
|
-
?
|
|
79
|
-
: T extends
|
|
80
|
-
?
|
|
81
|
-
: T extends
|
|
82
|
-
?
|
|
83
|
-
: T extends
|
|
84
|
-
?
|
|
85
|
-
: T extends
|
|
86
|
-
?
|
|
87
|
-
: T extends
|
|
88
|
-
?
|
|
89
|
-
: T extends
|
|
90
|
-
?
|
|
91
|
-
: T extends
|
|
92
|
-
?
|
|
93
|
-
: T extends
|
|
94
|
-
?
|
|
95
|
-
: T extends
|
|
96
|
-
?
|
|
97
|
-
: T extends
|
|
98
|
-
?
|
|
99
|
-
: T extends
|
|
100
|
-
?
|
|
101
|
-
: T extends
|
|
102
|
-
?
|
|
103
|
-
: T extends
|
|
104
|
-
?
|
|
105
|
-
: T extends
|
|
106
|
-
?
|
|
107
|
-
: T extends
|
|
108
|
-
?
|
|
109
|
-
: T extends
|
|
110
|
-
?
|
|
111
|
-
: T extends
|
|
112
|
-
?
|
|
113
|
-
: T extends
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
>
|
|
122
|
-
: Service;
|
|
73
|
+
: T extends _Hyperdrive | HyperdriveRef
|
|
74
|
+
? Hyperdrive
|
|
75
|
+
: T extends Secret
|
|
76
|
+
? string
|
|
77
|
+
: T extends CloudflareSecret | CloudflareSecretRef
|
|
78
|
+
? SecretsStoreSecret
|
|
79
|
+
: T extends SecretKey
|
|
80
|
+
? CryptoKey
|
|
81
|
+
: T extends Assets
|
|
82
|
+
? Service
|
|
83
|
+
: T extends _Workflow<infer P>
|
|
84
|
+
? Workflow<P>
|
|
85
|
+
: T extends _D1Database
|
|
86
|
+
? D1Database
|
|
87
|
+
: T extends DispatchNamespace
|
|
88
|
+
? DispatchNamespace
|
|
89
|
+
: T extends _VectorizeIndex
|
|
90
|
+
? VectorizeIndex
|
|
91
|
+
: T extends _Queue<infer Body>
|
|
92
|
+
? Queue<Body>
|
|
93
|
+
: T extends _AnalyticsEngineDataset
|
|
94
|
+
? AnalyticsEngineDataset
|
|
95
|
+
: T extends _Pipeline<infer R>
|
|
96
|
+
? Pipeline<R>
|
|
97
|
+
: T extends _RateLimit
|
|
98
|
+
? RateLimit
|
|
99
|
+
: T extends string
|
|
100
|
+
? T
|
|
101
|
+
: T extends BrowserRendering
|
|
102
|
+
? Fetcher
|
|
103
|
+
: T extends _Ai<infer M>
|
|
104
|
+
? Ai<M>
|
|
105
|
+
: T extends _Images
|
|
106
|
+
? ImagesBinding
|
|
107
|
+
: T extends _VersionMetadata
|
|
108
|
+
? WorkerVersionMetadata
|
|
109
|
+
: T extends Self
|
|
110
|
+
? Service
|
|
111
|
+
: T extends Json<infer T>
|
|
112
|
+
? T
|
|
113
|
+
: T extends _Container<
|
|
114
|
+
infer Obj
|
|
115
|
+
>
|
|
116
|
+
? DurableObjectNamespace<
|
|
117
|
+
Obj &
|
|
118
|
+
Rpc.DurableObjectBranded
|
|
119
|
+
>
|
|
120
|
+
: Service;
|
package/src/cloudflare/bucket.ts
CHANGED
|
@@ -2,8 +2,9 @@ import { isDeepStrictEqual } from "node:util";
|
|
|
2
2
|
import type { Context } from "../context.ts";
|
|
3
3
|
import { Resource, ResourceKind } from "../resource.ts";
|
|
4
4
|
import { Scope } from "../scope.ts";
|
|
5
|
+
import { isRetryableError } from "../state/r2-rest-state-store.ts";
|
|
5
6
|
import { withExponentialBackoff } from "../util/retry.ts";
|
|
6
|
-
import { CloudflareApiError } from "./api-error.ts";
|
|
7
|
+
import { CloudflareApiError, handleApiError } from "./api-error.ts";
|
|
7
8
|
import {
|
|
8
9
|
extractCloudflareResult,
|
|
9
10
|
type CloudflareApiErrorPayload,
|
|
@@ -239,55 +240,107 @@ interface R2BucketCORSRule {
|
|
|
239
240
|
maxAgeSeconds?: number;
|
|
240
241
|
}
|
|
241
242
|
|
|
243
|
+
export type R2ObjectMetadata = {
|
|
244
|
+
key: string;
|
|
245
|
+
etag: string;
|
|
246
|
+
uploaded: Date;
|
|
247
|
+
size: number;
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
export type R2Object = R2ObjectMetadata & {
|
|
251
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
252
|
+
bytes(): Promise<Uint8Array>;
|
|
253
|
+
text(): Promise<string>;
|
|
254
|
+
json<T>(): Promise<T>;
|
|
255
|
+
blob(): Promise<Blob>;
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
export type PutR2ObjectResponse = {
|
|
259
|
+
key: string;
|
|
260
|
+
etag: string;
|
|
261
|
+
uploaded: Date;
|
|
262
|
+
version: string;
|
|
263
|
+
size: number;
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
export type R2Objects = {
|
|
267
|
+
objects: R2ObjectMetadata[];
|
|
268
|
+
} & (
|
|
269
|
+
| {
|
|
270
|
+
truncated: true;
|
|
271
|
+
cursor: string;
|
|
272
|
+
}
|
|
273
|
+
| {
|
|
274
|
+
truncated: false;
|
|
275
|
+
cursor?: never;
|
|
276
|
+
}
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
export type R2Bucket = _R2Bucket & {
|
|
280
|
+
head(key: string): Promise<R2ObjectMetadata | null>;
|
|
281
|
+
get(key: string): Promise<R2Object | null>;
|
|
282
|
+
put(
|
|
283
|
+
key: string,
|
|
284
|
+
value:
|
|
285
|
+
| ReadableStream
|
|
286
|
+
| ArrayBuffer
|
|
287
|
+
| ArrayBufferView
|
|
288
|
+
| string
|
|
289
|
+
| null
|
|
290
|
+
| Blob,
|
|
291
|
+
): Promise<PutR2ObjectResponse>;
|
|
292
|
+
delete(key: string): Promise<Response>;
|
|
293
|
+
list(options?: R2ListOptions): Promise<R2Objects>;
|
|
294
|
+
};
|
|
295
|
+
|
|
242
296
|
/**
|
|
243
297
|
* Output returned after R2 Bucket creation/update
|
|
244
298
|
*/
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
type: "r2_bucket";
|
|
299
|
+
type _R2Bucket = Omit<BucketProps, "delete" | "dev"> & {
|
|
300
|
+
/**
|
|
301
|
+
* Resource type identifier
|
|
302
|
+
*/
|
|
303
|
+
type: "r2_bucket";
|
|
251
304
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
305
|
+
/**
|
|
306
|
+
* The name of the bucket
|
|
307
|
+
*/
|
|
308
|
+
name: string;
|
|
256
309
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
310
|
+
/**
|
|
311
|
+
* Location of the bucket
|
|
312
|
+
*/
|
|
313
|
+
location: string;
|
|
261
314
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
315
|
+
/**
|
|
316
|
+
* Time at which the bucket was created
|
|
317
|
+
*/
|
|
318
|
+
creationDate: Date;
|
|
266
319
|
|
|
320
|
+
/**
|
|
321
|
+
* The `r2.dev` subdomain for the bucket, if `allowPublicAccess` is true
|
|
322
|
+
*/
|
|
323
|
+
domain: string | undefined;
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Development mode properties
|
|
327
|
+
* @internal
|
|
328
|
+
*/
|
|
329
|
+
dev: {
|
|
267
330
|
/**
|
|
268
|
-
* The
|
|
331
|
+
* The ID of the bucket in development mode
|
|
269
332
|
*/
|
|
270
|
-
|
|
333
|
+
id: string;
|
|
271
334
|
|
|
272
335
|
/**
|
|
273
|
-
*
|
|
274
|
-
* @internal
|
|
336
|
+
* Whether the bucket is running remotely
|
|
275
337
|
*/
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* The ID of the bucket in development mode
|
|
279
|
-
*/
|
|
280
|
-
id: string;
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Whether the bucket is running remotely
|
|
284
|
-
*/
|
|
285
|
-
remote: boolean;
|
|
286
|
-
};
|
|
338
|
+
remote: boolean;
|
|
287
339
|
};
|
|
340
|
+
};
|
|
288
341
|
|
|
289
|
-
export function isBucket(resource:
|
|
290
|
-
return resource[ResourceKind] === "cloudflare::R2Bucket";
|
|
342
|
+
export function isBucket(resource: any): resource is R2Bucket {
|
|
343
|
+
return resource?.[ResourceKind] === "cloudflare::R2Bucket";
|
|
291
344
|
}
|
|
292
345
|
|
|
293
346
|
/**
|
|
@@ -338,22 +391,95 @@ export async function R2Bucket(
|
|
|
338
391
|
id: string,
|
|
339
392
|
props: BucketProps = {},
|
|
340
393
|
): Promise<R2Bucket> {
|
|
341
|
-
|
|
394
|
+
const api = await createCloudflareApi(props);
|
|
395
|
+
const bucket = await _R2Bucket(id, {
|
|
342
396
|
...props,
|
|
343
397
|
dev: {
|
|
344
398
|
...(props.dev ?? {}),
|
|
345
399
|
force: Scope.current.local,
|
|
346
400
|
},
|
|
347
401
|
});
|
|
402
|
+
return {
|
|
403
|
+
...bucket,
|
|
404
|
+
head: async (key: string) =>
|
|
405
|
+
headObject(api, {
|
|
406
|
+
bucketName: bucket.name,
|
|
407
|
+
key,
|
|
408
|
+
}),
|
|
409
|
+
get: async (key: string) => {
|
|
410
|
+
const response = await getObject(api, {
|
|
411
|
+
bucketName: bucket.name,
|
|
412
|
+
key,
|
|
413
|
+
});
|
|
414
|
+
if (response.ok) {
|
|
415
|
+
return parseR2Object(key, response);
|
|
416
|
+
} else if (response.status === 404) {
|
|
417
|
+
return null;
|
|
418
|
+
} else {
|
|
419
|
+
throw await handleApiError(response, "get", "object", key);
|
|
420
|
+
}
|
|
421
|
+
},
|
|
422
|
+
list: async (options?: R2ListOptions): Promise<R2Objects> =>
|
|
423
|
+
listObjects(api, bucket.name, {
|
|
424
|
+
...options,
|
|
425
|
+
jurisdiction: bucket.jurisdiction,
|
|
426
|
+
}),
|
|
427
|
+
put: async (
|
|
428
|
+
key: string,
|
|
429
|
+
value: PutObjectObject,
|
|
430
|
+
): Promise<PutR2ObjectResponse> => {
|
|
431
|
+
const response = await putObject(api, {
|
|
432
|
+
bucketName: bucket.name,
|
|
433
|
+
key: key,
|
|
434
|
+
object: value,
|
|
435
|
+
});
|
|
436
|
+
const body = (await response.json()) as {
|
|
437
|
+
result: {
|
|
438
|
+
key: string;
|
|
439
|
+
etag: string;
|
|
440
|
+
uploaded: string;
|
|
441
|
+
version: string;
|
|
442
|
+
size: string;
|
|
443
|
+
};
|
|
444
|
+
};
|
|
445
|
+
return {
|
|
446
|
+
key: body.result.key,
|
|
447
|
+
etag: body.result.etag,
|
|
448
|
+
uploaded: new Date(body.result.uploaded),
|
|
449
|
+
version: body.result.version,
|
|
450
|
+
size: Number(body.result.size),
|
|
451
|
+
};
|
|
452
|
+
},
|
|
453
|
+
delete: async (key: string) =>
|
|
454
|
+
deleteObject(api, {
|
|
455
|
+
bucketName: bucket.name,
|
|
456
|
+
key: key,
|
|
457
|
+
}),
|
|
458
|
+
};
|
|
348
459
|
}
|
|
349
460
|
|
|
461
|
+
const parseR2Object = (key: string, response: Response): R2Object => ({
|
|
462
|
+
etag: response.headers.get("ETag")!,
|
|
463
|
+
uploaded: parseDate(response.headers),
|
|
464
|
+
key,
|
|
465
|
+
size: Number(response.headers.get("Content-Length")),
|
|
466
|
+
arrayBuffer: () => response.arrayBuffer(),
|
|
467
|
+
bytes: () => response.bytes(),
|
|
468
|
+
text: () => response.text(),
|
|
469
|
+
json: () => response.json(),
|
|
470
|
+
blob: () => response.blob(),
|
|
471
|
+
});
|
|
472
|
+
|
|
473
|
+
const parseDate = (headers: Headers) =>
|
|
474
|
+
new Date(headers.get("Last-Modified") ?? headers.get("Date")!);
|
|
475
|
+
|
|
350
476
|
const _R2Bucket = Resource(
|
|
351
477
|
"cloudflare::R2Bucket",
|
|
352
478
|
async function (
|
|
353
|
-
this: Context<
|
|
479
|
+
this: Context<_R2Bucket>,
|
|
354
480
|
id: string,
|
|
355
481
|
props: BucketProps = {},
|
|
356
|
-
): Promise<
|
|
482
|
+
): Promise<_R2Bucket> {
|
|
357
483
|
const bucketName =
|
|
358
484
|
props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
|
|
359
485
|
|
|
@@ -369,7 +495,7 @@ const _R2Bucket = Resource(
|
|
|
369
495
|
const adopt = props.adopt ?? this.scope.adopt;
|
|
370
496
|
|
|
371
497
|
if (this.scope.local && !props.dev?.remote) {
|
|
372
|
-
return
|
|
498
|
+
return {
|
|
373
499
|
name: this.output?.name ?? "",
|
|
374
500
|
location: this.output?.location ?? "",
|
|
375
501
|
creationDate: this.output?.creationDate ?? new Date(),
|
|
@@ -380,7 +506,7 @@ const _R2Bucket = Resource(
|
|
|
380
506
|
accountId: this.output?.accountId ?? "",
|
|
381
507
|
cors: props.cors,
|
|
382
508
|
dev,
|
|
383
|
-
}
|
|
509
|
+
};
|
|
384
510
|
}
|
|
385
511
|
|
|
386
512
|
const api = await createCloudflareApi(props);
|
|
@@ -426,7 +552,7 @@ const _R2Bucket = Resource(
|
|
|
426
552
|
if (props.lock?.length) {
|
|
427
553
|
await putBucketLockRules(api, bucketName, props);
|
|
428
554
|
}
|
|
429
|
-
return
|
|
555
|
+
return {
|
|
430
556
|
name: bucketName,
|
|
431
557
|
location: bucket.location,
|
|
432
558
|
creationDate: new Date(bucket.creation_date),
|
|
@@ -439,7 +565,7 @@ const _R2Bucket = Resource(
|
|
|
439
565
|
lock: props.lock,
|
|
440
566
|
cors: props.cors,
|
|
441
567
|
dev,
|
|
442
|
-
}
|
|
568
|
+
};
|
|
443
569
|
} else {
|
|
444
570
|
if (bucketName !== this.output.name) {
|
|
445
571
|
throw new Error(
|
|
@@ -466,7 +592,7 @@ const _R2Bucket = Resource(
|
|
|
466
592
|
if (!isDeepStrictEqual(this.output.lock ?? [], props.lock ?? [])) {
|
|
467
593
|
await putBucketLockRules(api, bucketName, props);
|
|
468
594
|
}
|
|
469
|
-
return
|
|
595
|
+
return {
|
|
470
596
|
...this.output,
|
|
471
597
|
allowPublicAccess,
|
|
472
598
|
dev,
|
|
@@ -474,7 +600,7 @@ const _R2Bucket = Resource(
|
|
|
474
600
|
lifecycle: props.lifecycle,
|
|
475
601
|
lock: props.lock,
|
|
476
602
|
domain,
|
|
477
|
-
}
|
|
603
|
+
};
|
|
478
604
|
}
|
|
479
605
|
},
|
|
480
606
|
);
|
|
@@ -613,17 +739,20 @@ async function emptyBucket(
|
|
|
613
739
|
) {
|
|
614
740
|
let cursor: string | undefined;
|
|
615
741
|
while (true) {
|
|
616
|
-
const result = await listObjects(api, bucketName,
|
|
617
|
-
|
|
742
|
+
const result = await listObjects(api, bucketName, {
|
|
743
|
+
jurisdiction: props.jurisdiction,
|
|
744
|
+
cursor,
|
|
745
|
+
});
|
|
746
|
+
if (result.objects.length) {
|
|
618
747
|
// Another undocumented API! But it lets us delete multiple objects at once instead of one by one.
|
|
619
748
|
await extractCloudflareResult(
|
|
620
|
-
`delete ${result.
|
|
749
|
+
`delete ${result.objects.length} objects from bucket "${bucketName}"`,
|
|
621
750
|
api.delete(
|
|
622
751
|
`/accounts/${api.accountId}/r2/buckets/${bucketName}/objects`,
|
|
623
752
|
{
|
|
624
753
|
headers: withJurisdiction(props),
|
|
625
754
|
method: "DELETE",
|
|
626
|
-
body: JSON.stringify(result.
|
|
755
|
+
body: JSON.stringify(result.objects.map((object) => object.key)),
|
|
627
756
|
},
|
|
628
757
|
),
|
|
629
758
|
);
|
|
@@ -642,21 +771,39 @@ async function emptyBucket(
|
|
|
642
771
|
export async function listObjects(
|
|
643
772
|
api: CloudflareApi,
|
|
644
773
|
bucketName: string,
|
|
645
|
-
props:
|
|
646
|
-
|
|
647
|
-
|
|
774
|
+
props: R2ListOptions & {
|
|
775
|
+
jurisdiction?: string;
|
|
776
|
+
},
|
|
777
|
+
): Promise<R2Objects> {
|
|
648
778
|
const params = new URLSearchParams({
|
|
649
779
|
per_page: "1000",
|
|
650
780
|
});
|
|
651
|
-
if (cursor) {
|
|
652
|
-
params.set("cursor", cursor);
|
|
781
|
+
if (props.cursor) {
|
|
782
|
+
params.set("cursor", props.cursor);
|
|
783
|
+
}
|
|
784
|
+
if (props.delimiter) {
|
|
785
|
+
params.set("delimiter", props.delimiter);
|
|
786
|
+
}
|
|
787
|
+
if (props.prefix) {
|
|
788
|
+
params.set("prefix", props.prefix);
|
|
789
|
+
}
|
|
790
|
+
if (props.startAfter) {
|
|
791
|
+
params.set("start_after", props.startAfter);
|
|
792
|
+
}
|
|
793
|
+
if (props.limit) {
|
|
794
|
+
params.set("limit", props.limit.toString());
|
|
653
795
|
}
|
|
654
796
|
const response = await api.get(
|
|
655
797
|
`/accounts/${api.accountId}/r2/buckets/${bucketName}/objects?${params.toString()}`,
|
|
656
798
|
{ headers: withJurisdiction(props) },
|
|
657
799
|
);
|
|
658
800
|
const json: {
|
|
659
|
-
result: {
|
|
801
|
+
result: {
|
|
802
|
+
key: string;
|
|
803
|
+
etag: string;
|
|
804
|
+
last_modified: string;
|
|
805
|
+
size: number;
|
|
806
|
+
}[];
|
|
660
807
|
result_info?: {
|
|
661
808
|
cursor: string;
|
|
662
809
|
is_truncated: boolean;
|
|
@@ -668,7 +815,11 @@ export async function listObjects(
|
|
|
668
815
|
if (!json.success) {
|
|
669
816
|
// 10006 indicates that the bucket does not exist, so there are no objects to list
|
|
670
817
|
if (json.errors.some((e) => e.code === 10006)) {
|
|
671
|
-
return {
|
|
818
|
+
return {
|
|
819
|
+
objects: [],
|
|
820
|
+
cursor: undefined,
|
|
821
|
+
truncated: false,
|
|
822
|
+
};
|
|
672
823
|
}
|
|
673
824
|
throw new CloudflareApiError(
|
|
674
825
|
`Failed to list objects in bucket "${bucketName}": ${json.errors.map((e) => `- [${e.code}] ${e.message}${e.documentation_url ? ` (${e.documentation_url})` : ""}`).join("\n")}`,
|
|
@@ -677,9 +828,17 @@ export async function listObjects(
|
|
|
677
828
|
);
|
|
678
829
|
}
|
|
679
830
|
return {
|
|
680
|
-
keys: json.result.map((object) => object.key),
|
|
831
|
+
// keys: json.result.map((object) => object.key),
|
|
832
|
+
objects: json.result.map((object) => ({
|
|
833
|
+
key: object.key,
|
|
834
|
+
etag: object.etag,
|
|
835
|
+
uploaded: new Date(object.last_modified),
|
|
836
|
+
size: object.size,
|
|
837
|
+
})),
|
|
838
|
+
delimitedPrefixes: [],
|
|
681
839
|
cursor: json.result_info?.cursor,
|
|
682
|
-
|
|
840
|
+
truncated: json.result_info?.is_truncated ?? false,
|
|
841
|
+
} as R2Objects;
|
|
683
842
|
}
|
|
684
843
|
|
|
685
844
|
/**
|
|
@@ -869,3 +1028,107 @@ export async function getBucketLockRules(
|
|
|
869
1028
|
: (json.result?.rules ?? []);
|
|
870
1029
|
return rules as R2BucketLockRule[];
|
|
871
1030
|
}
|
|
1031
|
+
|
|
1032
|
+
export async function headObject(
|
|
1033
|
+
api: CloudflareApi,
|
|
1034
|
+
{ bucketName, key }: { bucketName: string; key: string },
|
|
1035
|
+
): Promise<R2ObjectMetadata | null> {
|
|
1036
|
+
const response = await withRetries(
|
|
1037
|
+
async () =>
|
|
1038
|
+
await api.get(
|
|
1039
|
+
`/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
|
|
1040
|
+
),
|
|
1041
|
+
);
|
|
1042
|
+
// for some reason HEAD returns 404 for keys that exist, this is the best we can do without using S3 API
|
|
1043
|
+
response.body?.cancel();
|
|
1044
|
+
if (response.status === 404) {
|
|
1045
|
+
return null;
|
|
1046
|
+
} else if (!response.ok) {
|
|
1047
|
+
throw await handleApiError(response, "head", "object", key);
|
|
1048
|
+
}
|
|
1049
|
+
return {
|
|
1050
|
+
key,
|
|
1051
|
+
etag: response.headers.get("ETag")?.replace(/"/g, "")!,
|
|
1052
|
+
uploaded: parseDate(response.headers),
|
|
1053
|
+
size: Number(response.headers.get("Content-Length")),
|
|
1054
|
+
};
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
const withRetries = (f: () => Promise<Response>) => {
|
|
1058
|
+
return withExponentialBackoff(f, isRetryableError, 5, 1000);
|
|
1059
|
+
};
|
|
1060
|
+
|
|
1061
|
+
export async function getObject(
|
|
1062
|
+
api: CloudflareApi,
|
|
1063
|
+
{ bucketName, key }: { bucketName: string; key: string },
|
|
1064
|
+
) {
|
|
1065
|
+
return await withRetries(async () => {
|
|
1066
|
+
const response = await api.get(
|
|
1067
|
+
`/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
|
|
1068
|
+
{
|
|
1069
|
+
headers: {
|
|
1070
|
+
"Content-Type": "application/octet-stream",
|
|
1071
|
+
Accept: "application/octet-stream",
|
|
1072
|
+
},
|
|
1073
|
+
},
|
|
1074
|
+
);
|
|
1075
|
+
if (!response.ok && response.status !== 404) {
|
|
1076
|
+
throw await handleApiError(response, "get", "object", key);
|
|
1077
|
+
}
|
|
1078
|
+
return response;
|
|
1079
|
+
});
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
type PutObjectObject =
|
|
1083
|
+
| ReadableStream
|
|
1084
|
+
| ArrayBuffer
|
|
1085
|
+
| ArrayBufferView
|
|
1086
|
+
| string
|
|
1087
|
+
| Blob;
|
|
1088
|
+
|
|
1089
|
+
export async function putObject(
|
|
1090
|
+
api: CloudflareApi,
|
|
1091
|
+
{
|
|
1092
|
+
bucketName,
|
|
1093
|
+
key,
|
|
1094
|
+
object,
|
|
1095
|
+
}: {
|
|
1096
|
+
bucketName: string;
|
|
1097
|
+
key: string;
|
|
1098
|
+
object: PutObjectObject;
|
|
1099
|
+
},
|
|
1100
|
+
): Promise<Response> {
|
|
1101
|
+
// Using withExponentialBackoff for reliability
|
|
1102
|
+
return await withRetries(async () => {
|
|
1103
|
+
const response = await api.put(
|
|
1104
|
+
`/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
|
|
1105
|
+
object,
|
|
1106
|
+
{
|
|
1107
|
+
headers: {
|
|
1108
|
+
"Content-Type": "application/octet-stream",
|
|
1109
|
+
},
|
|
1110
|
+
},
|
|
1111
|
+
);
|
|
1112
|
+
if (!response.ok) {
|
|
1113
|
+
await handleApiError(response, "put", "object", key);
|
|
1114
|
+
}
|
|
1115
|
+
return response;
|
|
1116
|
+
});
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
export async function deleteObject(
|
|
1120
|
+
api: CloudflareApi,
|
|
1121
|
+
{ bucketName, key }: { bucketName: string; key: string },
|
|
1122
|
+
) {
|
|
1123
|
+
return await withRetries(async () => {
|
|
1124
|
+
const response = await api.delete(
|
|
1125
|
+
`/accounts/${api.accountId}/r2/buckets/${bucketName}/objects/${key}`,
|
|
1126
|
+
);
|
|
1127
|
+
|
|
1128
|
+
if (!response.ok && response.status !== 404) {
|
|
1129
|
+
await handleApiError(response, "delete", "object", key);
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
return response;
|
|
1133
|
+
});
|
|
1134
|
+
}
|
|
@@ -7,7 +7,8 @@ import type { WorkerBundle } from "../worker-bundle.ts";
|
|
|
7
7
|
export type InternalWorker =
|
|
8
8
|
| "cloudflare-state-store"
|
|
9
9
|
| "dofs-state-store"
|
|
10
|
-
| "remote-binding-proxy"
|
|
10
|
+
| "remote-binding-proxy"
|
|
11
|
+
| "tunnel-proxy";
|
|
11
12
|
|
|
12
13
|
export const getInternalWorkerBundle = memoize(async (name: InternalWorker) => {
|
|
13
14
|
const content = await fs.readFile(
|
|
@@ -35,11 +35,11 @@ export function createWasmPlugin() {
|
|
|
35
35
|
);
|
|
36
36
|
|
|
37
37
|
// Copy to outdir so it's included in the upload
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
const copyFrom = path.join(args.resolveDir, name);
|
|
39
|
+
const copyTo = path.join(outdir, name);
|
|
40
|
+
await fs.mkdir(path.dirname(copyTo), { recursive: true });
|
|
41
|
+
await fs.copyFile(copyFrom, copyTo);
|
|
42
|
+
|
|
43
43
|
modules.set(args.path, {
|
|
44
44
|
type: "wasm",
|
|
45
45
|
path: name,
|