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
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
import yaml from "yaml";
|
|
2
|
-
import { Document } from "../../ai/document.ts";
|
|
3
|
-
import { alchemy } from "../../alchemy.ts";
|
|
4
|
-
import { StaticTextFile } from "../../fs/static-text-file.ts";
|
|
5
|
-
import type { Secret } from "../../secret.ts";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Image that can be themed for light/dark mode
|
|
9
|
-
*/
|
|
10
|
-
export interface ThemeableImage {
|
|
11
|
-
/**
|
|
12
|
-
* Image source URL
|
|
13
|
-
*/
|
|
14
|
-
src?: string;
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Image alt text
|
|
18
|
-
*/
|
|
19
|
-
alt?: string;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Light theme image URL
|
|
23
|
-
*/
|
|
24
|
-
light?: string;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Dark theme image URL
|
|
28
|
-
*/
|
|
29
|
-
dark?: string;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Hero action button configuration
|
|
34
|
-
*/
|
|
35
|
-
export interface HeroAction {
|
|
36
|
-
/**
|
|
37
|
-
* Color theme of the button
|
|
38
|
-
* @default "brand"
|
|
39
|
-
*/
|
|
40
|
-
theme?: "brand" | "alt";
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Label of the button
|
|
44
|
-
*/
|
|
45
|
-
text: string;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Destination link of the button
|
|
49
|
-
*/
|
|
50
|
-
link: string;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Link target attribute
|
|
54
|
-
*/
|
|
55
|
-
target?: string;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Link rel attribute
|
|
59
|
-
*/
|
|
60
|
-
rel?: string;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Hero section configuration
|
|
65
|
-
*/
|
|
66
|
-
export interface Hero {
|
|
67
|
-
/**
|
|
68
|
-
* The string shown top of text. Comes with brand color
|
|
69
|
-
* and expected to be short, such as product name.
|
|
70
|
-
*/
|
|
71
|
-
name?: string;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* The main text for the hero section. This will be defined
|
|
75
|
-
* as h1 tag.
|
|
76
|
-
*/
|
|
77
|
-
text: string;
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Tagline displayed below text
|
|
81
|
-
*/
|
|
82
|
-
tagline?: string;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* The image displayed next to the text and tagline area
|
|
86
|
-
*/
|
|
87
|
-
image?: string | ThemeableImage;
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Action buttons to display in home hero section
|
|
91
|
-
*/
|
|
92
|
-
actions?: HeroAction[];
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Feature item configuration
|
|
97
|
-
*/
|
|
98
|
-
export interface Feature {
|
|
99
|
-
/**
|
|
100
|
-
* Show icon on each feature box
|
|
101
|
-
*/
|
|
102
|
-
icon?: string | ThemeableImage;
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Title of the feature
|
|
106
|
-
*/
|
|
107
|
-
title: string;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Details of the feature
|
|
111
|
-
*/
|
|
112
|
-
details: string;
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Link when clicked on feature component
|
|
116
|
-
*/
|
|
117
|
-
link?: string;
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Link text to be shown inside feature component
|
|
121
|
-
*/
|
|
122
|
-
linkText?: string;
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* Link rel attribute
|
|
126
|
-
*/
|
|
127
|
-
rel?: string;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Link target attribute
|
|
131
|
-
*/
|
|
132
|
-
target?: string;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* VitePress home page configuration
|
|
137
|
-
*/
|
|
138
|
-
export interface HomePageConfig {
|
|
139
|
-
/**
|
|
140
|
-
* Use home page layout
|
|
141
|
-
*/
|
|
142
|
-
layout: "home";
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* Hero section configuration
|
|
146
|
-
*/
|
|
147
|
-
hero?: Hero;
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Features section configuration
|
|
151
|
-
*/
|
|
152
|
-
features?: Feature[];
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Whether to apply default markdown styles
|
|
156
|
-
* @default true
|
|
157
|
-
*/
|
|
158
|
-
markdownStyles?: boolean;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Properties for creating or updating a VitePress HomePage
|
|
163
|
-
*/
|
|
164
|
-
export interface HomePageProps {
|
|
165
|
-
/**
|
|
166
|
-
* Output directory for the home page markdown file
|
|
167
|
-
*/
|
|
168
|
-
outFile: string;
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Title of the home page document
|
|
172
|
-
*/
|
|
173
|
-
title: string;
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Hero section configuration
|
|
177
|
-
*/
|
|
178
|
-
hero?: Hero;
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Features section configuration
|
|
182
|
-
*/
|
|
183
|
-
features?: Feature[];
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* User prompt describing the design of the home page
|
|
187
|
-
*/
|
|
188
|
-
prompt?: string;
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Optional extension to the built-in system prompt
|
|
192
|
-
*/
|
|
193
|
-
system?: string;
|
|
194
|
-
|
|
195
|
-
/**
|
|
196
|
-
* Base URL for the OpenAI API
|
|
197
|
-
* @default 'https://api.openai.com/v1'
|
|
198
|
-
*/
|
|
199
|
-
baseURL?: string;
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* OpenAI API key to use for generating content
|
|
203
|
-
* If not provided, will use OPENAI_API_KEY environment variable
|
|
204
|
-
*/
|
|
205
|
-
apiKey?: Secret;
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Model configuration for the AI generator
|
|
209
|
-
*/
|
|
210
|
-
model?: import("../../ai/client").ModelConfig;
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Temperature for controlling randomness in generation
|
|
214
|
-
* @default 0.7
|
|
215
|
-
*/
|
|
216
|
-
temperature?: number;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Output type for the HomePage resource
|
|
221
|
-
*/
|
|
222
|
-
export type HomePage = StaticTextFile | Document;
|
|
223
|
-
|
|
224
|
-
/**
|
|
225
|
-
* Parse YAML frontmatter to home page config
|
|
226
|
-
*/
|
|
227
|
-
export function parseHomePage(content: string): HomePageConfig {
|
|
228
|
-
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
229
|
-
if (!match) {
|
|
230
|
-
throw new Error("Invalid frontmatter format");
|
|
231
|
-
}
|
|
232
|
-
return yaml.parse(match[1]) as HomePageConfig;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Resource for generating a VitePress homepage using AI.
|
|
237
|
-
* Creates an index.md file with the appropriate frontmatter and content
|
|
238
|
-
* based on the provided prompt and configuration.
|
|
239
|
-
*
|
|
240
|
-
* @example
|
|
241
|
-
* // Create a basic home page with just a prompt
|
|
242
|
-
* const homePage = await HomePage("docs-home", {
|
|
243
|
-
* outDir: "./docs",
|
|
244
|
-
* title: "My Project Documentation",
|
|
245
|
-
* prompt: "Create a welcoming homepage for a JavaScript utility library with modern design"
|
|
246
|
-
* });
|
|
247
|
-
*
|
|
248
|
-
* @example
|
|
249
|
-
* // Create a home page with hero and features configuration
|
|
250
|
-
* const detailedHome = await HomePage("product-home", {
|
|
251
|
-
* outDir: "./website",
|
|
252
|
-
* title: "Product Landing Page",
|
|
253
|
-
* prompt: "Create an engaging product page for our cloud database service",
|
|
254
|
-
* hero: {
|
|
255
|
-
* name: "CloudDB",
|
|
256
|
-
* text: "The database built for the cloud era",
|
|
257
|
-
* tagline: "Scalable, reliable, and developer-friendly",
|
|
258
|
-
* image: "/images/cloud-db-logo.png",
|
|
259
|
-
* actions: [
|
|
260
|
-
* { text: "Get Started", link: "/guide/", theme: "brand" },
|
|
261
|
-
* { text: "View on GitHub", link: "https://github.com/org/cloud-db" }
|
|
262
|
-
* ]
|
|
263
|
-
* },
|
|
264
|
-
* features: [
|
|
265
|
-
* {
|
|
266
|
-
* icon: "🚀",
|
|
267
|
-
* title: "Lightning Fast",
|
|
268
|
-
* details: "Optimized for performance at any scale"
|
|
269
|
-
* },
|
|
270
|
-
* {
|
|
271
|
-
* icon: "🔒",
|
|
272
|
-
* title: "Secure by Default",
|
|
273
|
-
* details: "Enterprise-grade security built in"
|
|
274
|
-
* }
|
|
275
|
-
* ]
|
|
276
|
-
* });
|
|
277
|
-
*
|
|
278
|
-
* @example
|
|
279
|
-
* // Create a home page with custom model settings
|
|
280
|
-
* const customHome = await HomePage("docs-home", {
|
|
281
|
-
* outDir: "./docs",
|
|
282
|
-
* title: "API Documentation",
|
|
283
|
-
* prompt: "Create a technical homepage for our REST API documentation",
|
|
284
|
-
* model: {
|
|
285
|
-
* id: "gpt-4o",
|
|
286
|
-
* provider: "openai"
|
|
287
|
-
* },
|
|
288
|
-
* temperature: 0.3,
|
|
289
|
-
* systemPromptExtension: "Make sure to use technical terminology appropriate for developers."
|
|
290
|
-
* });
|
|
291
|
-
*/
|
|
292
|
-
export async function HomePage(
|
|
293
|
-
id: string,
|
|
294
|
-
props: HomePageProps,
|
|
295
|
-
): Promise<HomePage> {
|
|
296
|
-
// Build the system prompt with optional extension
|
|
297
|
-
const systemPrompt = `
|
|
298
|
-
You are creating a VitePress homepage (index.md file).
|
|
299
|
-
|
|
300
|
-
VitePress uses YAML frontmatter to configure the homepage.
|
|
301
|
-
The homepage must have "layout: home" in its frontmatter.
|
|
302
|
-
|
|
303
|
-
The homepage can include:
|
|
304
|
-
- A hero section with name, text, tagline, image, and action buttons
|
|
305
|
-
- A features section with multiple feature items (title, icon, details)
|
|
306
|
-
- Additional markdown content below the frontmatter
|
|
307
|
-
|
|
308
|
-
Follow these guidelines:
|
|
309
|
-
1. Start with YAML frontmatter (--- at beginning and end)
|
|
310
|
-
2. Include "layout: home" in the frontmatter
|
|
311
|
-
3. Use the provided hero and features configuration if supplied
|
|
312
|
-
4. Add any additional sections or content based on the user's prompt
|
|
313
|
-
5. Create visually appealing, well-structured content
|
|
314
|
-
6. Ensure all links are properly formatted
|
|
315
|
-
7. Use appropriate markdown formatting for headings, lists, etc.
|
|
316
|
-
|
|
317
|
-
${props.system || ""}
|
|
318
|
-
`;
|
|
319
|
-
|
|
320
|
-
// Convert hero and features to YAML strings if provided
|
|
321
|
-
const heroYaml = props.hero ? JSON.stringify(props.hero, null, 2) : "";
|
|
322
|
-
const featuresYaml = props.features
|
|
323
|
-
? JSON.stringify(props.features, null, 2)
|
|
324
|
-
: "";
|
|
325
|
-
|
|
326
|
-
if (props.prompt) {
|
|
327
|
-
return Document(id, {
|
|
328
|
-
title: props.title,
|
|
329
|
-
path: props.outFile,
|
|
330
|
-
baseURL: props.baseURL,
|
|
331
|
-
apiKey: props.apiKey,
|
|
332
|
-
model: props.model ?? {
|
|
333
|
-
id: "claude-3-7-sonnet-latest",
|
|
334
|
-
provider: "anthropic",
|
|
335
|
-
},
|
|
336
|
-
temperature: props.temperature ?? 0.7,
|
|
337
|
-
prompt: await alchemy`
|
|
338
|
-
${systemPrompt}
|
|
339
|
-
|
|
340
|
-
Create a VitePress homepage based on the following description:
|
|
341
|
-
${props.prompt}
|
|
342
|
-
|
|
343
|
-
${
|
|
344
|
-
props.hero
|
|
345
|
-
? `Use this hero section configuration:
|
|
346
|
-
\`\`\`json
|
|
347
|
-
${heroYaml}
|
|
348
|
-
\`\`\``
|
|
349
|
-
: ""
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
${
|
|
353
|
-
props.features
|
|
354
|
-
? `Use these features:
|
|
355
|
-
\`\`\`json
|
|
356
|
-
${featuresYaml}
|
|
357
|
-
\`\`\``
|
|
358
|
-
: ""
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
The output should be a complete index.md file with proper YAML frontmatter and markdown content.
|
|
362
|
-
`,
|
|
363
|
-
});
|
|
364
|
-
}
|
|
365
|
-
return StaticTextFile(
|
|
366
|
-
id,
|
|
367
|
-
props.outFile,
|
|
368
|
-
`---
|
|
369
|
-
${yaml.stringify({
|
|
370
|
-
layout: "home",
|
|
371
|
-
name: props.title,
|
|
372
|
-
hero: props.hero,
|
|
373
|
-
features: props.features,
|
|
374
|
-
})}
|
|
375
|
-
---
|
|
376
|
-
`,
|
|
377
|
-
);
|
|
378
|
-
}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { parse as parseYaml } from "yaml";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Process markdown files with frontmatter to generate navigation items
|
|
7
|
-
* @param directoryPath The directory containing markdown files
|
|
8
|
-
* @param linkPrefix The prefix for navigation links
|
|
9
|
-
* @returns Sorted array of navigation items with text and link properties
|
|
10
|
-
*/
|
|
11
|
-
export async function processFrontmatterFiles(
|
|
12
|
-
directoryPath: string,
|
|
13
|
-
linkPrefix: string,
|
|
14
|
-
): Promise<
|
|
15
|
-
{
|
|
16
|
-
text: string;
|
|
17
|
-
link: string;
|
|
18
|
-
items?: {
|
|
19
|
-
text: string;
|
|
20
|
-
link: string;
|
|
21
|
-
items?: { text: string; link: string }[];
|
|
22
|
-
}[];
|
|
23
|
-
}[]
|
|
24
|
-
> {
|
|
25
|
-
const entries = await fs.readdir(directoryPath, { withFileTypes: true });
|
|
26
|
-
|
|
27
|
-
const processedEntries = await Promise.all(
|
|
28
|
-
entries
|
|
29
|
-
.filter((entry) => !entry.name.endsWith("index.md"))
|
|
30
|
-
.map(async (entry) => {
|
|
31
|
-
const fullPath = path.join(directoryPath, entry.name);
|
|
32
|
-
|
|
33
|
-
if (entry.isDirectory()) {
|
|
34
|
-
// Process subdirectory recursively
|
|
35
|
-
const items = await processFrontmatterFiles(
|
|
36
|
-
fullPath,
|
|
37
|
-
`${linkPrefix}/${entry.name}`,
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
// Create section for subdirectory
|
|
41
|
-
return {
|
|
42
|
-
text: entry.name.charAt(0).toUpperCase() + entry.name.slice(1),
|
|
43
|
-
collapsed: false,
|
|
44
|
-
items,
|
|
45
|
-
order: 10000, // Default order for directories
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// Process markdown file
|
|
50
|
-
if (!entry.name.endsWith(".md")) {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const content = await fs.readFile(fullPath, "utf-8");
|
|
55
|
-
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
56
|
-
let order = 10000;
|
|
57
|
-
let title;
|
|
58
|
-
|
|
59
|
-
if (frontmatterMatch) {
|
|
60
|
-
const frontmatter = parseYaml(frontmatterMatch[1]);
|
|
61
|
-
|
|
62
|
-
// Parse order as a number (supports both integers and floats)
|
|
63
|
-
if (frontmatter.order !== undefined) {
|
|
64
|
-
if (typeof frontmatter.order !== "number") {
|
|
65
|
-
throw new Error(
|
|
66
|
-
`Invalid order field in ${fullPath}: expected number, got ${typeof frontmatter.order}`,
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
order = frontmatter.order;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Get title from frontmatter
|
|
73
|
-
if (frontmatter.title) {
|
|
74
|
-
title = String(frontmatter.title).trim();
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// If no title in frontmatter, try to get first heading
|
|
79
|
-
if (!title) {
|
|
80
|
-
const headingMatch = content.match(/^#\s+(.+)$/m);
|
|
81
|
-
if (headingMatch) {
|
|
82
|
-
title = headingMatch[1].trim();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Fall back to filename if no title found
|
|
87
|
-
if (!title) {
|
|
88
|
-
const name = entry.name.replace(".md", "");
|
|
89
|
-
title = name.charAt(0).toUpperCase() + name.slice(1);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return {
|
|
93
|
-
text: title,
|
|
94
|
-
link: `${linkPrefix}/${entry.name}`,
|
|
95
|
-
order,
|
|
96
|
-
};
|
|
97
|
-
}),
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
// Filter out null entries and sort by order
|
|
101
|
-
return processedEntries
|
|
102
|
-
.filter((entry) => entry !== null)
|
|
103
|
-
.sort((a, b) => a.order - b.order)
|
|
104
|
-
.map(({ text, link, items }) =>
|
|
105
|
-
items ? { text, items, collapsed: true } : { text, link },
|
|
106
|
-
) as any;
|
|
107
|
-
}
|