alchemy 0.62.2 → 0.63.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 +1518 -1204
- package/bin/commands/deploy.ts +2 -0
- package/bin/commands/dev.ts +2 -0
- package/bin/services/execute-alchemy.ts +11 -0
- package/bin/services/template-manager.ts +2 -0
- package/bin/types.ts +2 -1
- package/lib/alchemy.d.ts +6 -22
- package/lib/alchemy.d.ts.map +1 -1
- package/lib/alchemy.js +65 -169
- package/lib/alchemy.js.map +1 -1
- package/lib/apply.d.ts +0 -2
- package/lib/apply.d.ts.map +1 -1
- package/lib/apply.js +2 -16
- package/lib/apply.js.map +1 -1
- package/lib/aws/account-id.d.ts.map +1 -1
- package/lib/aws/account-id.js +3 -2
- package/lib/aws/account-id.js.map +1 -1
- package/lib/aws/bucket.d.ts +8 -2
- package/lib/aws/bucket.d.ts.map +1 -1
- package/lib/aws/bucket.js +21 -14
- package/lib/aws/bucket.js.map +1 -1
- package/lib/aws/ec2/security-group.d.ts +8 -2
- package/lib/aws/ec2/security-group.d.ts.map +1 -1
- package/lib/aws/ec2/security-group.js +7 -2
- package/lib/aws/ec2/security-group.js.map +1 -1
- package/lib/aws/function.d.ts +9 -3
- package/lib/aws/function.d.ts.map +1 -1
- package/lib/aws/function.js +35 -26
- package/lib/aws/function.js.map +1 -1
- package/lib/aws/policy-attachment.d.ts.map +1 -1
- package/lib/aws/policy-attachment.js +2 -1
- package/lib/aws/policy-attachment.js.map +1 -1
- package/lib/aws/policy.d.ts +8 -2
- package/lib/aws/policy.d.ts.map +1 -1
- package/lib/aws/policy.js +13 -4
- package/lib/aws/policy.js.map +1 -1
- package/lib/aws/queue.d.ts +8 -2
- package/lib/aws/queue.d.ts.map +1 -1
- package/lib/aws/queue.js +22 -14
- package/lib/aws/queue.js.map +1 -1
- package/lib/aws/role.d.ts +8 -2
- package/lib/aws/role.d.ts.map +1 -1
- package/lib/aws/role.js +10 -3
- package/lib/aws/role.js.map +1 -1
- package/lib/aws/ses.d.ts +1 -1
- package/lib/aws/ses.d.ts.map +1 -1
- package/lib/aws/ses.js +2 -1
- package/lib/aws/ses.js.map +1 -1
- package/lib/aws/ssm-parameter.d.ts +8 -2
- package/lib/aws/ssm-parameter.d.ts.map +1 -1
- package/lib/aws/ssm-parameter.js +15 -10
- package/lib/aws/ssm-parameter.js.map +1 -1
- package/lib/aws/table.d.ts +8 -2
- package/lib/aws/table.d.ts.map +1 -1
- package/lib/aws/table.js +17 -9
- package/lib/aws/table.js.map +1 -1
- package/lib/cloudflare/account-api-token.d.ts +2 -2
- package/lib/cloudflare/account-api-token.d.ts.map +1 -1
- package/lib/cloudflare/account-api-token.js +7 -6
- package/lib/cloudflare/account-api-token.js.map +1 -1
- package/lib/cloudflare/ai-gateway.d.ts +9 -4
- package/lib/cloudflare/ai-gateway.d.ts.map +1 -1
- package/lib/cloudflare/ai-gateway.js +20 -24
- package/lib/cloudflare/ai-gateway.js.map +1 -1
- package/lib/cloudflare/api-schema.d.ts +2 -2
- package/lib/cloudflare/api-schema.d.ts.map +1 -1
- package/lib/cloudflare/api-schema.js +6 -2
- package/lib/cloudflare/api-schema.js.map +1 -1
- package/lib/cloudflare/api-shield.d.ts +5 -1
- package/lib/cloudflare/api-shield.d.ts.map +1 -1
- package/lib/cloudflare/api-shield.js +6 -1
- package/lib/cloudflare/api-shield.js.map +1 -1
- package/lib/cloudflare/assets.d.ts +1 -1
- package/lib/cloudflare/assets.d.ts.map +1 -1
- package/lib/cloudflare/astro/astro.d.ts.map +1 -1
- package/lib/cloudflare/astro/astro.js +3 -1
- package/lib/cloudflare/astro/astro.js.map +1 -1
- package/lib/cloudflare/astro/plugin.d.ts +2 -1
- package/lib/cloudflare/astro/plugin.d.ts.map +1 -1
- package/lib/cloudflare/astro/plugin.js.map +1 -1
- package/lib/cloudflare/bindings.d.ts +2 -2
- package/lib/cloudflare/bindings.d.ts.map +1 -1
- package/lib/cloudflare/bound.d.ts +1 -1
- package/lib/cloudflare/bound.d.ts.map +1 -1
- package/lib/cloudflare/bucket.d.ts +120 -1
- package/lib/cloudflare/bucket.d.ts.map +1 -1
- package/lib/cloudflare/bucket.js +80 -2
- package/lib/cloudflare/bucket.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 +10 -4
- package/lib/cloudflare/container.d.ts.map +1 -1
- package/lib/cloudflare/container.js +12 -9
- package/lib/cloudflare/container.js.map +1 -1
- package/lib/cloudflare/custom-domain.js +2 -1
- package/lib/cloudflare/custom-domain.js.map +1 -1
- package/lib/cloudflare/d1-database.d.ts +1 -1
- package/lib/cloudflare/d1-database.d.ts.map +1 -1
- package/lib/cloudflare/d1-database.js +7 -3
- package/lib/cloudflare/d1-database.js.map +1 -1
- package/lib/cloudflare/dispatch-namespace.d.ts +2 -0
- package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
- package/lib/cloudflare/dispatch-namespace.js +7 -5
- package/lib/cloudflare/dispatch-namespace.js.map +1 -1
- package/lib/cloudflare/hyperdrive.d.ts +7 -1
- package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
- package/lib/cloudflare/hyperdrive.js +2 -1
- package/lib/cloudflare/hyperdrive.js.map +1 -1
- package/lib/cloudflare/kv-namespace.d.ts +3 -0
- package/lib/cloudflare/kv-namespace.d.ts.map +1 -1
- package/lib/cloudflare/kv-namespace.js +11 -2
- package/lib/cloudflare/kv-namespace.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js +3 -1
- package/lib/cloudflare/miniflare/miniflare-worker-proxy.js.map +1 -1
- package/lib/cloudflare/miniflare/paths.d.ts +4 -0
- package/lib/cloudflare/miniflare/paths.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/paths.js +11 -0
- package/lib/cloudflare/miniflare/paths.js.map +1 -1
- package/lib/cloudflare/pipeline.d.ts +14 -3
- package/lib/cloudflare/pipeline.d.ts.map +1 -1
- package/lib/cloudflare/pipeline.js +31 -2
- package/lib/cloudflare/pipeline.js.map +1 -1
- package/lib/cloudflare/queue-consumer.js +1 -1
- package/lib/cloudflare/queue-consumer.js.map +1 -1
- package/lib/cloudflare/queue.d.ts +6 -4
- package/lib/cloudflare/queue.d.ts.map +1 -1
- package/lib/cloudflare/queue.js +13 -9
- package/lib/cloudflare/queue.js.map +1 -1
- package/lib/cloudflare/react-router/plugin.d.ts +1 -1
- package/lib/cloudflare/react-router/plugin.d.ts.map +1 -1
- package/lib/cloudflare/react-router/react-router.d.ts.map +1 -1
- package/lib/cloudflare/react-router/react-router.js +32 -2
- package/lib/cloudflare/react-router/react-router.js.map +1 -1
- package/lib/cloudflare/redwood/plugin.d.ts +2 -1
- package/lib/cloudflare/redwood/plugin.d.ts.map +1 -1
- package/lib/cloudflare/redwood/plugin.js.map +1 -1
- package/lib/cloudflare/route.js +1 -1
- package/lib/cloudflare/route.js.map +1 -1
- package/lib/cloudflare/ruleset.d.ts +3 -1
- package/lib/cloudflare/ruleset.d.ts.map +1 -1
- package/lib/cloudflare/ruleset.js +3 -2
- package/lib/cloudflare/ruleset.js.map +1 -1
- package/lib/cloudflare/secret.d.ts +6 -23
- package/lib/cloudflare/secret.d.ts.map +1 -1
- package/lib/cloudflare/secret.js +8 -4
- package/lib/cloudflare/secret.js.map +1 -1
- package/lib/cloudflare/secrets-store.d.ts +1 -1
- package/lib/cloudflare/secrets-store.d.ts.map +1 -1
- package/lib/cloudflare/secrets-store.js +5 -2
- package/lib/cloudflare/secrets-store.js.map +1 -1
- package/lib/cloudflare/tunnel.d.ts +5 -1
- package/lib/cloudflare/tunnel.d.ts.map +1 -1
- package/lib/cloudflare/tunnel.js +5 -1
- package/lib/cloudflare/tunnel.js.map +1 -1
- package/lib/cloudflare/vectorize-index.d.ts +7 -1
- package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-index.js +5 -2
- package/lib/cloudflare/vectorize-index.js.map +1 -1
- package/lib/cloudflare/vite/plugin.d.ts +2 -1
- package/lib/cloudflare/vite/plugin.d.ts.map +1 -1
- package/lib/cloudflare/vite/plugin.js.map +1 -1
- package/lib/cloudflare/vite/vite.d.ts +1 -1
- package/lib/cloudflare/vite/vite.d.ts.map +1 -1
- package/lib/cloudflare/vite/vite.js +1 -1
- package/lib/cloudflare/vite/vite.js.map +1 -1
- package/lib/cloudflare/website.js +1 -1
- package/lib/cloudflare/website.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +1 -1
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +12 -7
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/wrangler.json.d.ts +1 -1
- package/lib/cloudflare/wrangler.json.d.ts.map +1 -1
- package/lib/cloudflare/wrangler.json.js +5 -3
- package/lib/cloudflare/wrangler.json.js.map +1 -1
- package/lib/docker/container.d.ts +6 -0
- package/lib/docker/container.d.ts.map +1 -1
- package/lib/docker/container.js +5 -1
- package/lib/docker/container.js.map +1 -1
- package/lib/docker/network.d.ts +8 -2
- package/lib/docker/network.d.ts.map +1 -1
- package/lib/docker/network.js +7 -2
- package/lib/docker/network.js.map +1 -1
- package/lib/docker/volume.d.ts +8 -2
- package/lib/docker/volume.d.ts.map +1 -1
- package/lib/docker/volume.js +6 -4
- package/lib/docker/volume.js.map +1 -1
- package/lib/esbuild/bundle.d.ts +1 -1
- package/lib/fs/index.d.ts +0 -8
- package/lib/fs/index.d.ts.map +1 -1
- package/lib/fs/index.js +0 -8
- package/lib/fs/index.js.map +1 -1
- package/lib/github/client.d.ts +1 -1
- package/lib/github/client.d.ts.map +1 -1
- package/lib/github/client.js +2 -1
- package/lib/github/client.js.map +1 -1
- package/lib/github/repository-environment.d.ts +8 -2
- package/lib/github/repository-environment.d.ts.map +1 -1
- package/lib/github/repository-environment.js +16 -12
- package/lib/github/repository-environment.js.map +1 -1
- package/lib/neon/project.d.ts +7 -1
- package/lib/neon/project.d.ts.map +1 -1
- package/lib/neon/project.js +10 -6
- package/lib/neon/project.js.map +1 -1
- package/lib/planetscale/branch.d.ts +4 -2
- package/lib/planetscale/branch.d.ts.map +1 -1
- package/lib/planetscale/branch.js +18 -12
- package/lib/planetscale/branch.js.map +1 -1
- package/lib/planetscale/database.d.ts +8 -2
- package/lib/planetscale/database.d.ts.map +1 -1
- package/lib/planetscale/database.js +24 -16
- package/lib/planetscale/database.js.map +1 -1
- package/lib/planetscale/password.d.ts +8 -2
- package/lib/planetscale/password.d.ts.map +1 -1
- package/lib/planetscale/password.js +2 -2
- package/lib/planetscale/password.js.map +1 -1
- package/lib/resource.d.ts +0 -2
- package/lib/resource.d.ts.map +1 -1
- package/lib/resource.js +1 -9
- package/lib/resource.js.map +1 -1
- package/lib/scope.d.ts +9 -3
- package/lib/scope.d.ts.map +1 -1
- package/lib/scope.js +21 -34
- package/lib/scope.js.map +1 -1
- package/lib/sentry/client-key.d.ts +7 -1
- package/lib/sentry/client-key.d.ts.map +1 -1
- package/lib/sentry/client-key.js +45 -6
- package/lib/sentry/client-key.js.map +1 -1
- package/lib/sentry/project.d.ts +8 -2
- package/lib/sentry/project.d.ts.map +1 -1
- package/lib/sentry/project.js +35 -5
- package/lib/sentry/project.js.map +1 -1
- package/lib/sentry/team.d.ts +8 -2
- package/lib/sentry/team.d.ts.map +1 -1
- package/lib/sentry/team.js +36 -6
- package/lib/sentry/team.js.map +1 -1
- package/lib/serde.d.ts +0 -5
- package/lib/serde.d.ts.map +1 -1
- package/lib/serde.js +0 -28
- package/lib/serde.js.map +1 -1
- package/lib/state/d1-state-store.d.ts +1 -1
- package/lib/state/d1-state-store.d.ts.map +1 -1
- package/lib/state/d1-state-store.js +5 -5
- package/lib/state/d1-state-store.js.map +1 -1
- package/lib/state/sqlite-state-store.d.ts.map +1 -1
- package/lib/state/sqlite-state-store.js +7 -11
- package/lib/state/sqlite-state-store.js.map +1 -1
- package/lib/stripe/card.d.ts.map +1 -1
- package/lib/stripe/card.js +3 -2
- package/lib/stripe/card.js.map +1 -1
- package/lib/stripe/client.d.ts +2 -2
- package/lib/stripe/client.d.ts.map +1 -1
- package/lib/stripe/client.js +4 -3
- package/lib/stripe/client.js.map +1 -1
- package/lib/stripe/coupon.d.ts.map +1 -1
- package/lib/stripe/coupon.js +4 -3
- package/lib/stripe/coupon.js.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.map +1 -1
- package/lib/stripe/entitlements-feature.js +3 -2
- package/lib/stripe/entitlements-feature.js.map +1 -1
- package/lib/stripe/file.d.ts.map +1 -1
- package/lib/stripe/file.js +3 -2
- package/lib/stripe/file.js.map +1 -1
- package/lib/stripe/meter.js +2 -2
- package/lib/stripe/meter.js.map +1 -1
- package/lib/stripe/portal-configuration.d.ts.map +1 -1
- package/lib/stripe/portal-configuration.js +3 -2
- package/lib/stripe/portal-configuration.js.map +1 -1
- package/lib/stripe/price.d.ts.map +1 -1
- package/lib/stripe/price.js +3 -2
- package/lib/stripe/price.js.map +1 -1
- package/lib/stripe/product-feature.d.ts.map +1 -1
- package/lib/stripe/product-feature.js +3 -2
- package/lib/stripe/product-feature.js.map +1 -1
- package/lib/stripe/product.d.ts.map +1 -1
- package/lib/stripe/product.js +3 -2
- package/lib/stripe/product.js.map +1 -1
- package/lib/stripe/promotion-code.d.ts.map +1 -1
- package/lib/stripe/promotion-code.js +3 -2
- package/lib/stripe/promotion-code.js.map +1 -1
- package/lib/stripe/shipping-rate.d.ts.map +1 -1
- package/lib/stripe/shipping-rate.js +4 -3
- package/lib/stripe/shipping-rate.js.map +1 -1
- package/lib/stripe/tax-rate.d.ts.map +1 -1
- package/lib/stripe/tax-rate.js +3 -2
- package/lib/stripe/tax-rate.js.map +1 -1
- package/lib/stripe/webhook.d.ts.map +1 -1
- package/lib/stripe/webhook.js +4 -3
- package/lib/stripe/webhook.js.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 +8 -2
- package/lib/upstash/redis.d.ts.map +1 -1
- package/lib/upstash/redis.js +5 -4
- package/lib/upstash/redis.js.map +1 -1
- package/lib/util/ignore-matcher.d.ts.map +1 -1
- package/lib/util/ignore-matcher.js +3 -1
- package/lib/util/ignore-matcher.js.map +1 -1
- package/lib/util/peer.d.ts +10 -0
- package/lib/util/peer.d.ts.map +1 -0
- package/lib/util/peer.js +42 -0
- package/lib/util/peer.js.map +1 -0
- package/lib/util/telemetry/constants.d.ts.map +1 -1
- package/lib/util/telemetry/constants.js +2 -2
- package/lib/util/telemetry/constants.js.map +1 -1
- package/lib/vercel/project.d.ts +7 -1
- package/lib/vercel/project.d.ts.map +1 -1
- package/lib/vercel/project.js +28 -0
- package/lib/vercel/project.js.map +1 -1
- package/package.json +88 -74
- package/src/alchemy.ts +76 -222
- package/src/apply.ts +6 -19
- package/src/aws/account-id.ts +6 -3
- package/src/aws/bucket.ts +43 -32
- package/src/aws/ec2/security-group.ts +15 -3
- package/src/aws/function.ts +65 -39
- package/src/aws/policy-attachment.ts +10 -6
- package/src/aws/policy.ts +33 -15
- package/src/aws/queue.ts +50 -29
- package/src/aws/role.ts +37 -20
- package/src/aws/ses.ts +24 -20
- package/src/aws/ssm-parameter.ts +40 -20
- package/src/aws/table.ts +35 -17
- package/src/cloudflare/account-api-token.ts +9 -7
- package/src/cloudflare/ai-gateway.ts +37 -34
- package/src/cloudflare/api-schema.ts +33 -26
- package/src/cloudflare/api-shield.ts +15 -2
- package/src/cloudflare/astro/astro.ts +5 -1
- package/src/cloudflare/astro/plugin.ts +2 -1
- package/src/cloudflare/bindings.ts +2 -2
- package/src/cloudflare/bound.ts +1 -1
- package/src/cloudflare/bucket.ts +242 -3
- package/src/cloudflare/compatibility-date.gen.ts +1 -1
- package/src/cloudflare/container.ts +23 -12
- package/src/cloudflare/custom-domain.ts +2 -2
- package/src/cloudflare/d1-database.ts +11 -4
- package/src/cloudflare/dispatch-namespace.ts +10 -7
- package/src/cloudflare/hyperdrive.ts +13 -3
- package/src/cloudflare/kv-namespace.ts +25 -2
- package/src/cloudflare/miniflare/miniflare-worker-proxy.ts +3 -1
- package/src/cloudflare/miniflare/paths.ts +13 -0
- package/src/cloudflare/pipeline.ts +76 -28
- package/src/cloudflare/queue-consumer.ts +1 -1
- package/src/cloudflare/queue.ts +65 -54
- package/src/cloudflare/react-router/react-router.ts +28 -2
- package/src/cloudflare/redwood/plugin.ts +3 -2
- package/src/cloudflare/route.ts +1 -1
- package/src/cloudflare/ruleset.ts +7 -2
- package/src/cloudflare/secret.ts +20 -31
- package/src/cloudflare/secrets-store.ts +7 -3
- package/src/cloudflare/tunnel.ts +13 -2
- package/src/cloudflare/vectorize-index.ts +14 -3
- package/src/cloudflare/vite/plugin.ts +3 -2
- package/src/cloudflare/vite/vite.ts +2 -3
- package/src/cloudflare/website.ts +1 -1
- package/src/cloudflare/worker.ts +35 -23
- package/src/cloudflare/wrangler.json.ts +7 -4
- package/src/docker/container.ts +13 -1
- package/src/docker/network.ts +18 -3
- package/src/docker/volume.ts +17 -6
- package/src/fs/index.ts +0 -8
- package/src/github/client.ts +6 -2
- package/src/github/repository-environment.ts +27 -13
- package/src/neon/project.ts +20 -6
- package/src/planetscale/branch.ts +24 -13
- package/src/planetscale/database.ts +38 -17
- package/src/planetscale/password.ts +10 -3
- package/src/resource.ts +1 -10
- package/src/scope.ts +29 -38
- package/src/sentry/client-key.ts +74 -6
- package/src/sentry/project.ts +59 -6
- package/src/sentry/team.ts +55 -7
- package/src/serde.ts +0 -44
- package/src/state/d1-state-store.ts +13 -6
- package/src/state/sqlite-state-store.ts +16 -17
- package/src/stripe/card.ts +5 -2
- package/src/stripe/client.ts +10 -3
- package/src/stripe/coupon.ts +4 -3
- package/src/stripe/customer.ts +2 -2
- package/src/stripe/entitlements-feature.ts +5 -2
- package/src/stripe/file.ts +3 -2
- package/src/stripe/meter.ts +2 -2
- package/src/stripe/portal-configuration.ts +5 -2
- package/src/stripe/price.ts +3 -2
- package/src/stripe/product-feature.ts +5 -2
- package/src/stripe/product.ts +3 -2
- package/src/stripe/promotion-code.ts +3 -2
- package/src/stripe/shipping-rate.ts +4 -3
- package/src/stripe/tax-rate.ts +3 -2
- package/src/stripe/webhook.ts +4 -3
- package/src/test/vitest.ts +1 -0
- package/src/upstash/redis.ts +15 -5
- package/src/util/ignore-matcher.ts +3 -1
- package/src/util/peer.ts +53 -0
- package/src/util/telemetry/constants.ts +2 -2
- package/src/vercel/project.ts +46 -1
- package/templates/astro/_gitignore +2 -1
- package/templates/hono/README.md +19 -0
- package/templates/hono/_env +1 -0
- package/templates/hono/_env.example +1 -0
- package/templates/hono/_gitignore +34 -0
- package/templates/hono/alchemy.run.ts +22 -0
- package/templates/hono/package.json +18 -0
- package/templates/hono/src/index.ts +17 -0
- package/templates/hono/tsconfig.json +13 -0
- package/templates/hono/types/env.d.ts +16 -0
- package/templates/nuxt/_gitignore +2 -1
- package/templates/react-router/_gitignore +1 -0
- package/templates/react-router/vite.config.ts +5 -3
- package/templates/rwsdk/_gitignore +2 -3
- package/templates/sveltekit/_gitignore +2 -1
- package/templates/tanstack-start/_gitignore +2 -1
- package/templates/typescript/_gitignore +2 -1
- package/templates/vite/_gitignore +2 -1
- package/workers/cloudflare-state-store.js +69 -74
- package/workers/dofs-state-store.js +1 -1
- package/bin/bootstrap-s3.ts +0 -255
- package/lib/ai/ark.d.ts +0 -12
- package/lib/ai/ark.d.ts.map +0 -1
- package/lib/ai/ark.js +0 -87
- package/lib/ai/ark.js.map +0 -1
- package/lib/ai/astro-file.d.ts +0 -138
- package/lib/ai/astro-file.d.ts.map +0 -1
- package/lib/ai/astro-file.js +0 -158
- package/lib/ai/astro-file.js.map +0 -1
- package/lib/ai/client.d.ts +0 -51
- package/lib/ai/client.d.ts.map +0 -1
- package/lib/ai/client.js +0 -58
- package/lib/ai/client.js.map +0 -1
- package/lib/ai/css-file.d.ts +0 -132
- package/lib/ai/css-file.d.ts.map +0 -1
- package/lib/ai/css-file.js +0 -142
- package/lib/ai/css-file.js.map +0 -1
- package/lib/ai/data.d.ts +0 -152
- package/lib/ai/data.d.ts.map +0 -1
- package/lib/ai/data.js +0 -120
- package/lib/ai/data.js.map +0 -1
- package/lib/ai/document.d.ts +0 -208
- package/lib/ai/document.d.ts.map +0 -1
- package/lib/ai/document.js +0 -206
- package/lib/ai/document.js.map +0 -1
- package/lib/ai/html-file.d.ts +0 -129
- package/lib/ai/html-file.d.ts.map +0 -1
- package/lib/ai/html-file.js +0 -139
- package/lib/ai/html-file.js.map +0 -1
- package/lib/ai/index.d.ts +0 -11
- package/lib/ai/index.d.ts.map +0 -1
- package/lib/ai/index.js +0 -11
- package/lib/ai/index.js.map +0 -1
- package/lib/ai/json-file.d.ts +0 -161
- package/lib/ai/json-file.d.ts.map +0 -1
- package/lib/ai/json-file.js +0 -188
- package/lib/ai/json-file.js.map +0 -1
- package/lib/ai/typescript-file.d.ts +0 -140
- package/lib/ai/typescript-file.d.ts.map +0 -1
- package/lib/ai/typescript-file.js +0 -146
- package/lib/ai/typescript-file.js.map +0 -1
- package/lib/ai/vue-file.d.ts +0 -127
- package/lib/ai/vue-file.d.ts.map +0 -1
- package/lib/ai/vue-file.js +0 -137
- package/lib/ai/vue-file.js.map +0 -1
- package/lib/ai/yaml-file.d.ts +0 -170
- package/lib/ai/yaml-file.d.ts.map +0 -1
- package/lib/ai/yaml-file.js +0 -201
- package/lib/ai/yaml-file.js.map +0 -1
- package/lib/fs/static-astro-file.d.ts +0 -35
- package/lib/fs/static-astro-file.d.ts.map +0 -1
- package/lib/fs/static-astro-file.js +0 -40
- package/lib/fs/static-astro-file.js.map +0 -1
- package/lib/fs/static-css-file.d.ts +0 -25
- package/lib/fs/static-css-file.d.ts.map +0 -1
- package/lib/fs/static-css-file.js +0 -30
- package/lib/fs/static-css-file.js.map +0 -1
- package/lib/fs/static-html-file.d.ts +0 -32
- package/lib/fs/static-html-file.d.ts.map +0 -1
- package/lib/fs/static-html-file.js +0 -37
- package/lib/fs/static-html-file.js.map +0 -1
- package/lib/fs/static-json-file.d.ts +0 -18
- package/lib/fs/static-json-file.d.ts.map +0 -1
- package/lib/fs/static-json-file.js +0 -19
- package/lib/fs/static-json-file.js.map +0 -1
- package/lib/fs/static-text-file.d.ts +0 -13
- package/lib/fs/static-text-file.d.ts.map +0 -1
- package/lib/fs/static-text-file.js +0 -9
- package/lib/fs/static-text-file.js.map +0 -1
- package/lib/fs/static-typescript-file.d.ts +0 -20
- package/lib/fs/static-typescript-file.d.ts.map +0 -1
- package/lib/fs/static-typescript-file.js +0 -16
- package/lib/fs/static-typescript-file.js.map +0 -1
- package/lib/fs/static-vue-file.d.ts +0 -29
- package/lib/fs/static-vue-file.d.ts.map +0 -1
- package/lib/fs/static-vue-file.js +0 -34
- package/lib/fs/static-vue-file.js.map +0 -1
- package/lib/fs/static-yaml-file.d.ts +0 -23
- package/lib/fs/static-yaml-file.d.ts.map +0 -1
- package/lib/fs/static-yaml-file.js +0 -10
- package/lib/fs/static-yaml-file.js.map +0 -1
- package/lib/internal/docs/providers.d.ts +0 -34
- package/lib/internal/docs/providers.d.ts.map +0 -1
- package/lib/internal/docs/providers.js +0 -200
- package/lib/internal/docs/providers.js.map +0 -1
- package/lib/runtime/bind.d.ts +0 -25
- package/lib/runtime/bind.d.ts.map +0 -1
- package/lib/runtime/bind.js +0 -76
- package/lib/runtime/bind.js.map +0 -1
- package/lib/runtime/global.d.ts +0 -8
- package/lib/runtime/global.d.ts.map +0 -1
- package/lib/runtime/global.js +0 -3
- package/lib/runtime/global.js.map +0 -1
- package/lib/runtime/plugin.d.ts +0 -35
- package/lib/runtime/plugin.d.ts.map +0 -1
- package/lib/runtime/plugin.js +0 -134
- package/lib/runtime/plugin.js.map +0 -1
- package/lib/runtime/shims.d.ts +0 -6
- package/lib/runtime/shims.d.ts.map +0 -1
- package/lib/runtime/shims.js +0 -27
- package/lib/runtime/shims.js.map +0 -1
- package/lib/runtime/state.d.ts +0 -5
- package/lib/runtime/state.d.ts.map +0 -1
- package/lib/runtime/state.js +0 -4
- package/lib/runtime/state.js.map +0 -1
- package/lib/web/astro.d.ts +0 -148
- package/lib/web/astro.d.ts.map +0 -1
- package/lib/web/astro.js +0 -419
- package/lib/web/astro.js.map +0 -1
- package/lib/web/shadcn-component.d.ts +0 -30
- package/lib/web/shadcn-component.d.ts.map +0 -1
- package/lib/web/shadcn-component.js +0 -25
- package/lib/web/shadcn-component.js.map +0 -1
- package/lib/web/shadcn.d.ts +0 -98
- package/lib/web/shadcn.d.ts.map +0 -1
- package/lib/web/shadcn.js +0 -102
- package/lib/web/shadcn.js.map +0 -1
- package/lib/web/tailwind.d.ts +0 -65
- package/lib/web/tailwind.d.ts.map +0 -1
- package/lib/web/tailwind.js +0 -98
- package/lib/web/tailwind.js.map +0 -1
- package/lib/web/vite.d.ts +0 -96
- package/lib/web/vite.d.ts.map +0 -1
- package/lib/web/vite.js +0 -232
- package/lib/web/vite.js.map +0 -1
- package/lib/web/vitepress/config.d.ts +0 -12
- package/lib/web/vitepress/config.d.ts.map +0 -1
- package/lib/web/vitepress/config.js +0 -33
- package/lib/web/vitepress/config.js.map +0 -1
- package/lib/web/vitepress/custom-theme.d.ts +0 -174
- package/lib/web/vitepress/custom-theme.d.ts.map +0 -1
- package/lib/web/vitepress/custom-theme.js +0 -337
- package/lib/web/vitepress/custom-theme.js.map +0 -1
- package/lib/web/vitepress/dependencies.d.ts +0 -13
- package/lib/web/vitepress/dependencies.d.ts.map +0 -1
- package/lib/web/vitepress/dependencies.js +0 -37
- package/lib/web/vitepress/dependencies.js.map +0 -1
- package/lib/web/vitepress/home-page.d.ts +0 -247
- package/lib/web/vitepress/home-page.d.ts.map +0 -1
- package/lib/web/vitepress/home-page.js +0 -146
- package/lib/web/vitepress/home-page.js.map +0 -1
- package/lib/web/vitepress/index.d.ts +0 -6
- package/lib/web/vitepress/index.d.ts.map +0 -1
- package/lib/web/vitepress/index.js +0 -6
- package/lib/web/vitepress/index.js.map +0 -1
- package/lib/web/vitepress/process-front-matter-files.d.ts +0 -19
- package/lib/web/vitepress/process-front-matter-files.d.ts.map +0 -1
- package/lib/web/vitepress/process-front-matter-files.js +0 -73
- package/lib/web/vitepress/process-front-matter-files.js.map +0 -1
- package/lib/web/vitepress/vitepress.d.ts +0 -75
- package/lib/web/vitepress/vitepress.d.ts.map +0 -1
- package/lib/web/vitepress/vitepress.js +0 -254
- package/lib/web/vitepress/vitepress.js.map +0 -1
- package/src/ai/ark.ts +0 -118
- package/src/ai/astro-file.ts +0 -270
- package/src/ai/client.ts +0 -117
- package/src/ai/css-file.ts +0 -247
- package/src/ai/data.ts +0 -221
- package/src/ai/document.ts +0 -367
- package/src/ai/html-file.ts +0 -244
- package/src/ai/index.ts +0 -10
- package/src/ai/json-file.ts +0 -325
- package/src/ai/typescript-file.ts +0 -259
- package/src/ai/vue-file.ts +0 -242
- package/src/ai/yaml-file.ts +0 -328
- package/src/fs/static-astro-file.ts +0 -45
- package/src/fs/static-css-file.ts +0 -35
- package/src/fs/static-html-file.ts +0 -42
- package/src/fs/static-json-file.ts +0 -38
- package/src/fs/static-text-file.ts +0 -23
- package/src/fs/static-typescript-file.ts +0 -37
- package/src/fs/static-vue-file.ts +0 -39
- package/src/fs/static-yaml-file.ts +0 -33
- package/src/internal/docs/providers.ts +0 -286
- package/src/runtime/bind.ts +0 -95
- package/src/runtime/global.ts +0 -10
- package/src/runtime/plugin.ts +0 -163
- package/src/runtime/shims.js +0 -34
- package/src/runtime/state.ts +0 -9
- package/src/web/astro.ts +0 -643
- package/src/web/shadcn-component.ts +0 -72
- package/src/web/shadcn.ts +0 -221
- package/src/web/tailwind.ts +0 -167
- package/src/web/vite.ts +0 -407
- package/src/web/vitepress/config.ts +0 -50
- package/src/web/vitepress/custom-theme.ts +0 -514
- package/src/web/vitepress/dependencies.ts +0 -69
- package/src/web/vitepress/home-page.ts +0 -378
- package/src/web/vitepress/index.ts +0 -5
- package/src/web/vitepress/process-front-matter-files.ts +0 -107
- package/src/web/vitepress/vitepress.ts +0 -372
- package/templates/sveltekit/bun.lock +0 -1099
package/src/stripe/meter.ts
CHANGED
|
@@ -155,7 +155,7 @@ export const Meter = Resource(
|
|
|
155
155
|
_logicalId: string,
|
|
156
156
|
props: MeterProps,
|
|
157
157
|
): Promise<Meter> {
|
|
158
|
-
const stripe = createStripeClient({ apiKey: props.apiKey });
|
|
158
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
159
159
|
|
|
160
160
|
const currentOutputId = this.output?.id;
|
|
161
161
|
|
|
@@ -303,7 +303,7 @@ export const Meter = Resource(
|
|
|
303
303
|
stripeAPIResponse = await stripe.billing.meters.create(createParams);
|
|
304
304
|
} catch (error) {
|
|
305
305
|
logger.warn("Error creating/updating meter:", error);
|
|
306
|
-
if (isStripeConflictError(error) && props.adopt) {
|
|
306
|
+
if (isStripeConflictError(error) && (props.adopt ?? this.scope.adopt)) {
|
|
307
307
|
throw new Error(
|
|
308
308
|
"Meter adoption is not supported - meters cannot be uniquely identified for adoption",
|
|
309
309
|
);
|
|
@@ -312,7 +312,7 @@ export const PortalConfiguration = Resource(
|
|
|
312
312
|
_id: string,
|
|
313
313
|
props: PortalConfigurationProps,
|
|
314
314
|
): Promise<PortalConfiguration> {
|
|
315
|
-
const stripe = createStripeClient({ apiKey: props.apiKey });
|
|
315
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
316
316
|
|
|
317
317
|
if (this.phase === "delete") {
|
|
318
318
|
try {
|
|
@@ -499,7 +499,10 @@ export const PortalConfiguration = Resource(
|
|
|
499
499
|
configuration =
|
|
500
500
|
await stripe.billingPortal.configurations.create(createParams);
|
|
501
501
|
} catch (error) {
|
|
502
|
-
if (
|
|
502
|
+
if (
|
|
503
|
+
isStripeConflictError(error) &&
|
|
504
|
+
(props.adopt ?? this.scope.adopt)
|
|
505
|
+
) {
|
|
503
506
|
throw new Error(
|
|
504
507
|
"PortalConfiguration adoption is not supported - portal configurations cannot be uniquely identified for adoption",
|
|
505
508
|
);
|
package/src/stripe/price.ts
CHANGED
|
@@ -353,7 +353,8 @@ export const Price = Resource(
|
|
|
353
353
|
_id: string,
|
|
354
354
|
props: PriceProps,
|
|
355
355
|
): Promise<Price> {
|
|
356
|
-
const
|
|
356
|
+
const adopt = props.adopt ?? this.scope.adopt;
|
|
357
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
357
358
|
|
|
358
359
|
if (this.phase === "delete") {
|
|
359
360
|
try {
|
|
@@ -475,7 +476,7 @@ export const Price = Resource(
|
|
|
475
476
|
limit: 1,
|
|
476
477
|
});
|
|
477
478
|
if (existingPrices.data.length > 0) {
|
|
478
|
-
if (
|
|
479
|
+
if (adopt) {
|
|
479
480
|
const existingPrice = existingPrices.data[0];
|
|
480
481
|
const updateParams: Stripe.PriceUpdateParams & {
|
|
481
482
|
expand?: string[];
|
|
@@ -97,7 +97,7 @@ export const ProductFeature = Resource(
|
|
|
97
97
|
_id: string,
|
|
98
98
|
props: ProductFeatureProps,
|
|
99
99
|
): Promise<ProductFeature> {
|
|
100
|
-
const stripe = createStripeClient({ apiKey: props.apiKey });
|
|
100
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
101
101
|
|
|
102
102
|
if (this.phase === "delete") {
|
|
103
103
|
try {
|
|
@@ -124,7 +124,10 @@ export const ProductFeature = Resource(
|
|
|
124
124
|
entitlement_feature: props.entitlementFeature,
|
|
125
125
|
});
|
|
126
126
|
} catch (error) {
|
|
127
|
-
if (
|
|
127
|
+
if (
|
|
128
|
+
isStripeConflictError(error) &&
|
|
129
|
+
(props.adopt ?? this.scope.adopt)
|
|
130
|
+
) {
|
|
128
131
|
throw new Error(
|
|
129
132
|
"ProductFeature adoption is not supported - product features cannot be uniquely identified for adoption",
|
|
130
133
|
);
|
package/src/stripe/product.ts
CHANGED
|
@@ -157,7 +157,8 @@ export const Product = Resource(
|
|
|
157
157
|
_id: string,
|
|
158
158
|
props: ProductProps,
|
|
159
159
|
): Promise<Product> {
|
|
160
|
-
const
|
|
160
|
+
const adopt = props.adopt ?? this.scope.adopt;
|
|
161
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
161
162
|
|
|
162
163
|
if (this.phase === "delete") {
|
|
163
164
|
try {
|
|
@@ -202,7 +203,7 @@ export const Product = Resource(
|
|
|
202
203
|
metadata: props.metadata,
|
|
203
204
|
tax_code: props.taxCode,
|
|
204
205
|
};
|
|
205
|
-
if (
|
|
206
|
+
if (adopt) {
|
|
206
207
|
const existingProducts = await stripe.products.list({
|
|
207
208
|
limit: 100,
|
|
208
209
|
});
|
|
@@ -156,7 +156,8 @@ export const PromotionCode = Resource(
|
|
|
156
156
|
_id: string,
|
|
157
157
|
props: PromotionCodeProps,
|
|
158
158
|
): Promise<PromotionCode> {
|
|
159
|
-
const
|
|
159
|
+
const adopt = props.adopt ?? this.scope.adopt;
|
|
160
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
160
161
|
|
|
161
162
|
if (this.phase === "delete") {
|
|
162
163
|
try {
|
|
@@ -203,7 +204,7 @@ export const PromotionCode = Resource(
|
|
|
203
204
|
try {
|
|
204
205
|
promotionCode = await stripe.promotionCodes.create(createParams);
|
|
205
206
|
} catch (error) {
|
|
206
|
-
if (isStripeConflictError(error) &&
|
|
207
|
+
if (isStripeConflictError(error) && adopt) {
|
|
207
208
|
if (props.code) {
|
|
208
209
|
const existingPromotionCodes = await stripe.promotionCodes.list({
|
|
209
210
|
code: props.code,
|
|
@@ -209,7 +209,8 @@ export const ShippingRate = Resource(
|
|
|
209
209
|
_id: string,
|
|
210
210
|
props: ShippingRateProps,
|
|
211
211
|
): Promise<ShippingRate> {
|
|
212
|
-
const
|
|
212
|
+
const adopt = props.adopt ?? this.scope.adopt;
|
|
213
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
213
214
|
|
|
214
215
|
if (this.phase === "delete") {
|
|
215
216
|
try {
|
|
@@ -286,7 +287,7 @@ export const ShippingRate = Resource(
|
|
|
286
287
|
try {
|
|
287
288
|
shippingRate = await stripe.shippingRates.create(createParams);
|
|
288
289
|
} catch (error) {
|
|
289
|
-
if (isStripeConflictError(error) &&
|
|
290
|
+
if (isStripeConflictError(error) && adopt) {
|
|
290
291
|
throw new Error(
|
|
291
292
|
"ShippingRate adoption is not supported - shipping rates cannot be uniquely identified for adoption",
|
|
292
293
|
);
|
|
@@ -295,7 +296,7 @@ export const ShippingRate = Resource(
|
|
|
295
296
|
}
|
|
296
297
|
}
|
|
297
298
|
} catch (error) {
|
|
298
|
-
if (isStripeConflictError(error) &&
|
|
299
|
+
if (isStripeConflictError(error) && adopt) {
|
|
299
300
|
throw new Error(
|
|
300
301
|
"ShippingRate adoption is not supported - shipping rates cannot be uniquely identified for adoption",
|
|
301
302
|
);
|
package/src/stripe/tax-rate.ts
CHANGED
|
@@ -143,7 +143,8 @@ export const TaxRate = Resource(
|
|
|
143
143
|
_id: string,
|
|
144
144
|
props: TaxRateProps,
|
|
145
145
|
): Promise<TaxRate> {
|
|
146
|
-
const
|
|
146
|
+
const adopt = props.adopt ?? this.scope.adopt;
|
|
147
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
147
148
|
|
|
148
149
|
if (this.phase === "delete") {
|
|
149
150
|
try {
|
|
@@ -185,7 +186,7 @@ export const TaxRate = Resource(
|
|
|
185
186
|
tax_type: props.taxType,
|
|
186
187
|
});
|
|
187
188
|
} catch (error) {
|
|
188
|
-
if (isStripeConflictError(error) &&
|
|
189
|
+
if (isStripeConflictError(error) && adopt) {
|
|
189
190
|
throw new Error(
|
|
190
191
|
"TaxRate adoption is not supported - tax rates cannot be uniquely identified for adoption",
|
|
191
192
|
);
|
package/src/stripe/webhook.ts
CHANGED
|
@@ -155,7 +155,8 @@ export const WebhookEndpoint = Resource(
|
|
|
155
155
|
_id: string,
|
|
156
156
|
props: WebhookEndpointProps,
|
|
157
157
|
) {
|
|
158
|
-
const
|
|
158
|
+
const adopt = props.adopt ?? this.scope.adopt;
|
|
159
|
+
const stripe = await createStripeClient({ apiKey: props.apiKey });
|
|
159
160
|
|
|
160
161
|
if (this.phase === "delete") {
|
|
161
162
|
try {
|
|
@@ -197,7 +198,7 @@ export const WebhookEndpoint = Resource(
|
|
|
197
198
|
try {
|
|
198
199
|
webhook = await stripe.webhookEndpoints.create(createParams);
|
|
199
200
|
} catch (error) {
|
|
200
|
-
if (isStripeConflictError(error) &&
|
|
201
|
+
if (isStripeConflictError(error) && adopt) {
|
|
201
202
|
const existingWebhooks = await stripe.webhookEndpoints.list({
|
|
202
203
|
limit: 100,
|
|
203
204
|
});
|
|
@@ -223,7 +224,7 @@ export const WebhookEndpoint = Resource(
|
|
|
223
224
|
}
|
|
224
225
|
}
|
|
225
226
|
} catch (error) {
|
|
226
|
-
if (isStripeConflictError(error) &&
|
|
227
|
+
if (isStripeConflictError(error) && adopt) {
|
|
227
228
|
const existingWebhooks = await stripe.webhookEndpoints.list({
|
|
228
229
|
limit: 100,
|
|
229
230
|
});
|
package/src/test/vitest.ts
CHANGED
package/src/upstash/redis.ts
CHANGED
|
@@ -26,8 +26,10 @@ export type UpstashRegion =
|
|
|
26
26
|
export interface UpstashRedisProps {
|
|
27
27
|
/**
|
|
28
28
|
* Name of the database
|
|
29
|
+
*
|
|
30
|
+
* @default ${app}-${stage}-${id}
|
|
29
31
|
*/
|
|
30
|
-
name
|
|
32
|
+
name?: string;
|
|
31
33
|
|
|
32
34
|
/**
|
|
33
35
|
* Primary region for the database
|
|
@@ -71,6 +73,11 @@ export interface UpstashRedis
|
|
|
71
73
|
*/
|
|
72
74
|
id: string;
|
|
73
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Name of the database.
|
|
78
|
+
*/
|
|
79
|
+
name: string;
|
|
80
|
+
|
|
74
81
|
/**
|
|
75
82
|
* Type of the database in terms of pricing model
|
|
76
83
|
*/
|
|
@@ -157,7 +164,7 @@ export const UpstashRedis = Resource(
|
|
|
157
164
|
"upstash::Redis",
|
|
158
165
|
async function (
|
|
159
166
|
this: Context<UpstashRedis>,
|
|
160
|
-
|
|
167
|
+
id: string,
|
|
161
168
|
props: UpstashRedisProps,
|
|
162
169
|
): Promise<UpstashRedis> {
|
|
163
170
|
const api = new UpstashApi({
|
|
@@ -165,6 +172,9 @@ export const UpstashRedis = Resource(
|
|
|
165
172
|
email: props.email,
|
|
166
173
|
});
|
|
167
174
|
|
|
175
|
+
const databaseName =
|
|
176
|
+
props.name ?? this.output?.name ?? this.scope.createPhysicalName(id);
|
|
177
|
+
|
|
168
178
|
if (this.phase === "delete") {
|
|
169
179
|
await deleteRedisDatabase(api, this.output.id);
|
|
170
180
|
return this.destroy();
|
|
@@ -177,8 +187,8 @@ export const UpstashRedis = Resource(
|
|
|
177
187
|
|
|
178
188
|
if (this.phase === "update") {
|
|
179
189
|
// Update name if changed
|
|
180
|
-
if (
|
|
181
|
-
await renameRedisDatabase(api, this.output.id,
|
|
190
|
+
if (databaseName !== this.output.name) {
|
|
191
|
+
await renameRedisDatabase(api, this.output.id, databaseName);
|
|
182
192
|
}
|
|
183
193
|
|
|
184
194
|
// Update read regions if changed
|
|
@@ -208,7 +218,7 @@ export const UpstashRedis = Resource(
|
|
|
208
218
|
if (this.phase === "create") {
|
|
209
219
|
database = await createRedisDatabase(api, {
|
|
210
220
|
budget: props.budget,
|
|
211
|
-
name:
|
|
221
|
+
name: databaseName,
|
|
212
222
|
primary_region: props.primaryRegion,
|
|
213
223
|
read_regions: props.readRegions,
|
|
214
224
|
region: "global",
|
package/src/util/peer.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
detectPackageManager,
|
|
3
|
+
type PackageManager,
|
|
4
|
+
} from "./detect-package-manager.ts";
|
|
5
|
+
|
|
6
|
+
export class PeerDependencyError extends Error {
|
|
7
|
+
constructor(input: {
|
|
8
|
+
feature?: string;
|
|
9
|
+
missing: string[];
|
|
10
|
+
packageManager?: PackageManager;
|
|
11
|
+
}) {
|
|
12
|
+
super(
|
|
13
|
+
[
|
|
14
|
+
`Missing peer ${input.missing.length} ${input.missing.length === 1 ? "dependency" : "dependencies"}${input.feature ? ` for ${input.feature}` : ""}:`,
|
|
15
|
+
...input.missing.map((dep) => `- "${dep}"`),
|
|
16
|
+
"",
|
|
17
|
+
"Please install with:",
|
|
18
|
+
` ${input.packageManager ?? "npm"} install ${input.missing.join(" ")}`,
|
|
19
|
+
].join("\n"),
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const extractPackageName = (error: unknown) => {
|
|
25
|
+
const message =
|
|
26
|
+
typeof error === "object" &&
|
|
27
|
+
error !== null &&
|
|
28
|
+
"message" in error &&
|
|
29
|
+
typeof error.message === "string"
|
|
30
|
+
? error.message
|
|
31
|
+
: undefined;
|
|
32
|
+
const match = message?.match(/Cannot find (package|module) '([^']+)'/);
|
|
33
|
+
return match?.[2];
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export async function importPeer<T>(promise: Promise<T>, feature?: string) {
|
|
37
|
+
try {
|
|
38
|
+
return await promise;
|
|
39
|
+
} catch (err) {
|
|
40
|
+
const name = extractPackageName(err);
|
|
41
|
+
if (!name) {
|
|
42
|
+
throw err;
|
|
43
|
+
}
|
|
44
|
+
const packageManager = await detectPackageManager();
|
|
45
|
+
const error = new PeerDependencyError({
|
|
46
|
+
feature,
|
|
47
|
+
missing: [name],
|
|
48
|
+
packageManager,
|
|
49
|
+
});
|
|
50
|
+
Error.captureStackTrace(error, importPeer);
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -7,7 +7,7 @@ export const TELEMETRY_DISABLED =
|
|
|
7
7
|
|
|
8
8
|
// TODO(sam): replace with permanent URL
|
|
9
9
|
export const POSTHOG_CLIENT_API_HOST =
|
|
10
|
-
process.env.
|
|
10
|
+
process.env.ALCHEMY_POSTHOG_CLIENT_API_HOST ?? "https://ph.alchemy.run";
|
|
11
11
|
export const POSTHOG_PROJECT_ID =
|
|
12
|
-
process.env.
|
|
12
|
+
process.env.ALCHEMY_POSTHOG_PROJECT_ID ??
|
|
13
13
|
"phc_A51Mi7Q63TvnNrvRMgvBxE1il0DAL66rVg4LdWPRsfK";
|
package/src/vercel/project.ts
CHANGED
|
@@ -47,8 +47,10 @@ export interface ProjectProps {
|
|
|
47
47
|
*
|
|
48
48
|
* Maximum length: `100`
|
|
49
49
|
* Example: `a-project-name`
|
|
50
|
+
*
|
|
51
|
+
* @default ${app}-${stage}-${id}
|
|
50
52
|
*/
|
|
51
|
-
name
|
|
53
|
+
name?: string;
|
|
52
54
|
|
|
53
55
|
/**
|
|
54
56
|
* Opt-in to preview toolbar on the project level
|
|
@@ -244,6 +246,11 @@ export interface Project extends Resource<"vercel::Project">, ProjectProps {
|
|
|
244
246
|
*/
|
|
245
247
|
id: string;
|
|
246
248
|
|
|
249
|
+
/**
|
|
250
|
+
* The name for the project
|
|
251
|
+
*/
|
|
252
|
+
name: string;
|
|
253
|
+
|
|
247
254
|
/**
|
|
248
255
|
* The account ID that the project belongs to
|
|
249
256
|
*/
|
|
@@ -369,6 +376,31 @@ export const Project = Resource(
|
|
|
369
376
|
id: string,
|
|
370
377
|
{ accessToken, ...props }: ProjectProps & { accessToken?: Secret },
|
|
371
378
|
): Promise<Project> {
|
|
379
|
+
// it's possible that `this.output.name` is undefined because a previous version
|
|
380
|
+
// of alchemy had a bug where it didn't set the name on the output
|
|
381
|
+
// so, we try to find the project by ID and use the name from the API response
|
|
382
|
+
const lookupName = async () => {
|
|
383
|
+
if (!this.output) {
|
|
384
|
+
return undefined;
|
|
385
|
+
} else if (this.output.name) {
|
|
386
|
+
return this.output.name;
|
|
387
|
+
}
|
|
388
|
+
const name = await getProjectName(
|
|
389
|
+
await createVercelApi({
|
|
390
|
+
baseUrl: "https://api.vercel.com/v9",
|
|
391
|
+
accessToken,
|
|
392
|
+
}),
|
|
393
|
+
this.output.id,
|
|
394
|
+
);
|
|
395
|
+
if (name) {
|
|
396
|
+
this.output.name = name;
|
|
397
|
+
}
|
|
398
|
+
return name;
|
|
399
|
+
};
|
|
400
|
+
|
|
401
|
+
const projectName =
|
|
402
|
+
props.name ?? (await lookupName()) ?? this.scope.createPhysicalName(id);
|
|
403
|
+
|
|
372
404
|
switch (this.phase) {
|
|
373
405
|
case "delete": {
|
|
374
406
|
const api = await createVercelApi({
|
|
@@ -423,6 +455,7 @@ export const Project = Resource(
|
|
|
423
455
|
|
|
424
456
|
return this({
|
|
425
457
|
id: data.id,
|
|
458
|
+
name: projectName,
|
|
426
459
|
accountId: data.accountId,
|
|
427
460
|
createdAt: data.createdAt,
|
|
428
461
|
updatedAt: data.updatedAt,
|
|
@@ -492,3 +525,15 @@ export async function updateEnvironmentVariables(
|
|
|
492
525
|
await api.delete(`/projects/${output.id}/env/${previousEnv.id}`);
|
|
493
526
|
}
|
|
494
527
|
}
|
|
528
|
+
|
|
529
|
+
async function getProjectName(
|
|
530
|
+
api: VercelApi,
|
|
531
|
+
id: string,
|
|
532
|
+
): Promise<string | undefined> {
|
|
533
|
+
const response = await api.get(`/v9/projects/${id}`);
|
|
534
|
+
if (!response.ok) {
|
|
535
|
+
throw new Error(`API error: ${response.statusText}`);
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
return ((await response.json()) as { name: string }).name;
|
|
539
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
### Minimal Hono + Alchemy Template
|
|
2
|
+
|
|
3
|
+
### Run
|
|
4
|
+
- bun install
|
|
5
|
+
- bun run dev
|
|
6
|
+
|
|
7
|
+
### Deploy
|
|
8
|
+
- bun run deploy
|
|
9
|
+
- bun run destroy
|
|
10
|
+
|
|
11
|
+
### Alchemy
|
|
12
|
+
- Resource: defined in `alchemy.run.ts` (Worker + KV)
|
|
13
|
+
- Binding: `KV` bound to Worker as `c.env.KV`
|
|
14
|
+
- Types: inferred in `types/env.d.ts`
|
|
15
|
+
|
|
16
|
+
### References
|
|
17
|
+
- Alchemy Getting Started: https://alchemy.run/getting-started
|
|
18
|
+
- Alchemy CLI: https://alchemy.run/concepts/cli
|
|
19
|
+
- Bindings: https://alchemy.run/concepts/bindings
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALCHEMY_PASSWORD=change-me
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALCHEMY_PASSWORD=change-me
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# prod
|
|
2
|
+
dist/
|
|
3
|
+
|
|
4
|
+
# dev
|
|
5
|
+
.yarn/
|
|
6
|
+
!.yarn/releases
|
|
7
|
+
.vscode/*
|
|
8
|
+
!.vscode/launch.json
|
|
9
|
+
!.vscode/*.code-snippets
|
|
10
|
+
.idea/workspace.xml
|
|
11
|
+
.idea/usage.statistics.xml
|
|
12
|
+
.idea/shelf
|
|
13
|
+
|
|
14
|
+
# deps
|
|
15
|
+
node_modules/
|
|
16
|
+
.wrangler
|
|
17
|
+
.alchemy
|
|
18
|
+
|
|
19
|
+
# env
|
|
20
|
+
.env
|
|
21
|
+
.env.production
|
|
22
|
+
.dev.vars
|
|
23
|
+
|
|
24
|
+
# logs
|
|
25
|
+
logs/
|
|
26
|
+
*.log
|
|
27
|
+
npm-debug.log*
|
|
28
|
+
yarn-debug.log*
|
|
29
|
+
yarn-error.log*
|
|
30
|
+
pnpm-debug.log*
|
|
31
|
+
lerna-debug.log*
|
|
32
|
+
|
|
33
|
+
# misc
|
|
34
|
+
.DS_Store
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="@types/node" />
|
|
2
|
+
|
|
3
|
+
import alchemy from "alchemy";
|
|
4
|
+
import { KVNamespace, Worker } from "alchemy/cloudflare";
|
|
5
|
+
|
|
6
|
+
const app = await alchemy("{projectName}");
|
|
7
|
+
|
|
8
|
+
const kv = await KVNamespace("kv", {
|
|
9
|
+
title: "kv",
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
export const worker = await Worker("worker", {
|
|
13
|
+
name: `${app.name}-${app.stage}`,
|
|
14
|
+
entrypoint: "src/index.ts",
|
|
15
|
+
bindings: {
|
|
16
|
+
KV: kv,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
console.log(worker.url);
|
|
21
|
+
|
|
22
|
+
await app.finalize();
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@alchemy.run/hono-template",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"scripts": {
|
|
5
|
+
"check": "tsc --noEmit",
|
|
6
|
+
"dev": "alchemy dev",
|
|
7
|
+
"deploy": "alchemy deploy",
|
|
8
|
+
"destroy": "alchemy destroy"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"hono": "^4.9.2"
|
|
12
|
+
},
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"@cloudflare/workers-types": "^4.20250820.0",
|
|
15
|
+
"@types/node": "^24.3.0",
|
|
16
|
+
"alchemy": "workspace:*"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Hono } from 'hono'
|
|
2
|
+
|
|
3
|
+
const app = new Hono<{ Bindings: Env }>()
|
|
4
|
+
|
|
5
|
+
app.get('/', (c) => {
|
|
6
|
+
return c.text('Hello Hono!')
|
|
7
|
+
})
|
|
8
|
+
|
|
9
|
+
app.get('/kv', async (c) => {
|
|
10
|
+
const key = 'hello'
|
|
11
|
+
const value = `world@${Date.now()}`
|
|
12
|
+
await c.env.KV.put(key, value)
|
|
13
|
+
const got = await c.env.KV.get(key)
|
|
14
|
+
return c.json({ key, value: got })
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
export default app
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ESNext",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "Bundler",
|
|
6
|
+
"strict": true,
|
|
7
|
+
"skipLibCheck": true,
|
|
8
|
+
"lib": ["ESNext"],
|
|
9
|
+
"jsx": "react-jsx",
|
|
10
|
+
"jsxImportSource": "hono/jsx",
|
|
11
|
+
"types": ["@cloudflare/workers-types"]
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// This file infers types for the cloudflare:workers environment from your Alchemy Worker.
|
|
2
|
+
// @see https://alchemy.run/concepts/bindings/#type-safe-bindings
|
|
3
|
+
|
|
4
|
+
import type { worker } from "../alchemy.run.ts";
|
|
5
|
+
|
|
6
|
+
export type CloudflareEnv = typeof worker.Env;
|
|
7
|
+
|
|
8
|
+
declare global {
|
|
9
|
+
type Env = CloudflareEnv;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare module "cloudflare:workers" {
|
|
13
|
+
namespace Cloudflare {
|
|
14
|
+
export interface Env extends CloudflareEnv {}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { reactRouter } from "@react-router/dev/vite";
|
|
2
2
|
import tailwindcss from "@tailwindcss/vite";
|
|
3
3
|
import alchemy from "alchemy/cloudflare/react-router";
|
|
4
|
-
import { defineConfig } from "vite";
|
|
4
|
+
import { defineConfig, type PluginOption } from "vite";
|
|
5
5
|
import tsconfigPaths from "vite-tsconfig-paths";
|
|
6
6
|
|
|
7
7
|
export default defineConfig({
|
|
8
8
|
plugins: [
|
|
9
|
-
alchemy(),
|
|
9
|
+
alchemy() as PluginOption,
|
|
10
10
|
tailwindcss(),
|
|
11
11
|
reactRouter(),
|
|
12
|
-
tsconfigPaths(
|
|
12
|
+
tsconfigPaths({
|
|
13
|
+
root: "."
|
|
14
|
+
}),
|
|
13
15
|
],
|
|
14
16
|
});
|