void 0.10.12 → 0.20.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/AGENTS_TEMPLATE.md +6 -0
- package/{skills/void/docs/node_modules/void/node_modules/pglite-server/LICENSE.md → LICENSE} +1 -1
- package/README.md +34 -8
- package/dist/{auth-qgMlYp7Z.d.mts → auth-DkcFflXV.d.mts} +10 -11
- package/dist/auth-W9WII-mN.mjs +630 -0
- package/dist/{auth-cmd-BqsdZJp5.mjs → auth-cmd-CYVhSNFy.mjs} +4 -3
- package/dist/{auth-migrations-BTZ-ATvQ.mjs → auth-migrations-9vif1uj8.mjs} +53 -12
- package/dist/{better-auth-shared-BQooDxbw.mjs → better-auth-shared-CYw1T3k4.mjs} +7 -10
- package/dist/{better-auth-shared-DealXecJ.d.mts → better-auth-shared-DSCeohOK.d.mts} +10 -5
- package/dist/{build-cmd-Bujrv5q-.mjs → build-cmd-CkVD1uOh.mjs} +6 -4
- package/dist/{cache-C11V8Fxq.mjs → cache-QcUfR-ff.mjs} +9 -5
- package/dist/{cancel-deploy-fwFYF04b.mjs → cancel-deploy-DsvWKFTe.mjs} +3 -2
- package/dist/cf-access-AJ1ehiFR.mjs +42 -0
- package/dist/cf-access-DsSsZUPr.mjs +67 -0
- package/dist/cli/cli.d.mts +1 -1
- package/dist/cli/cli.mjs +1592 -153
- package/dist/cli/env-schema-probe.d.mts +48 -61
- package/dist/cli/env-schema-probe.mjs +10 -58
- package/dist/{client-Gb71-XkG.mjs → client-CyCHWSO_.mjs} +61 -463
- package/dist/cloudflare-auth-DRkGe7-s.mjs +170 -0
- package/dist/cloudflare-cmd-D3ME2GAe.mjs +62 -0
- package/dist/cloudflare-connect-BivMefMA.mjs +56 -0
- package/dist/cloudflare-operations-CPTpRW6d.mjs +566 -0
- package/dist/{config-BkTvs43g.mjs → config-BQFq7QvD.mjs} +85 -41
- package/dist/{config-CutEMNGJ.mjs → config-NOG_U1aK.mjs} +10 -15
- package/dist/connect-D9Yr-T5f.mjs +79 -0
- package/dist/{create-project-DsYvl3TB.mjs → create-project-DMV-csEm.mjs} +26 -16
- package/dist/database-provider.d.mts +21 -0
- package/dist/database-provider.mjs +6 -0
- package/dist/{db-DOiJMRt2.mjs → db-BxoUWL0F.mjs} +600 -115
- package/dist/{delete-mh6p-zkQ.mjs → delete-iJOqxBz1.mjs} +9 -6
- package/dist/{deploy-u7Rv9q_q.mjs → deploy-CcDoeBIf.mjs} +3451 -1986
- package/dist/dev-inbox-DkgRWLkW.mjs +307 -0
- package/dist/{discover-CJHyvYfR.mjs → discover-xvfrgJeo.mjs} +3 -3
- package/dist/{magic-string.es-ZQjdJFFn.mjs → dist-BR1quN_w.mjs} +570 -216
- package/dist/{dist-DaKKDf8D.mjs → dist-BrsS7cai.mjs} +17 -2
- package/dist/{dist-BuiRJkTd.mjs → dist-m40_XgNh.mjs} +48 -33
- package/dist/{domain-DiaNQbrl.mjs → domain-gu_iaHmn.mjs} +41 -4
- package/dist/dotenv-VQxupEUv.mjs +181 -0
- package/dist/edge.d.mts +2 -0
- package/dist/edge.mjs +2 -0
- package/dist/email-Ce6SQq-i.mjs +182 -0
- package/dist/email-r6DHJyAB.mjs +262 -0
- package/dist/{entry-D7yy4xVH.mjs → entry-DU3oDoQ3.mjs} +2 -2
- package/dist/env-D4Emu-M_.mjs +95 -0
- package/dist/env-DmU2To0C.mjs +73 -0
- package/dist/env-helpers-CyKtOBpj.d.mts +22 -0
- package/dist/env-public-D_6u46fX.d.mts +135 -0
- package/dist/{env-types-QBj-ndax.mjs → env-types-BNPhro-M.mjs} +2 -2
- package/dist/{env-validation-Dea3v3ej.mjs → env-validation-ENpMy6Ez.mjs} +68 -122
- package/dist/{gen-o_w-8yI8.mjs → gen-BKw6qHIg.mjs} +70 -15
- package/dist/{github-cmd-DKcGUNsj.mjs → github-cmd-DJS5Ab-H.mjs} +39 -31
- package/dist/{handler-Cjh8uM3Y.d.mts → handler-D1hLsObx.d.mts} +124 -122
- package/dist/{head-nmvOgFjd.d.mts → head-Do8P4puT.d.mts} +9 -8
- package/dist/{headers-nsHIFixA.mjs → headers-D8QfRX9Y.mjs} +12 -10
- package/dist/inbound-BJ70in1n.d.mts +354 -0
- package/dist/inbound-CNKxb3FY.mjs +694 -0
- package/dist/index.d.mts +61 -34
- package/dist/index.mjs +1048 -321
- package/dist/{init-3rgHKBVi.mjs → init-Dx5cgKqK.mjs} +329 -271
- package/dist/link-D_rm5sRH.mjs +52 -0
- package/dist/{list-CPwFDZ_c.mjs → list-M8XShti7.mjs} +37 -5
- package/dist/{runner-kapo9aPs.mjs → local-d1-BE8KBbMy.mjs} +116 -6
- package/dist/{login-BT3H8PN3.mjs → login-C8-UuLnp.mjs} +17 -15
- package/dist/{logs-Bt313ax7.mjs → logs-DwFU7dMW.mjs} +16 -2
- package/dist/mime-BJD7d_qL.mjs +1216 -0
- package/dist/neon-DHwd2zvC.mjs +54 -0
- package/dist/{node-Da0UcsGA.mjs → node-BkaXcpAc.mjs} +29 -8
- package/dist/operator-cmd-DYWRbWUA.mjs +348 -0
- package/dist/{agents-CtgBYqld.mjs → output-tFQLLj26.mjs} +676 -211
- package/dist/{package-json-Cx1osYo6.mjs → package-json-CPoWX79C.mjs} +1 -1
- package/dist/pages/client.d.mts +43 -41
- package/dist/pages/client.mjs +40 -33
- package/dist/pages/head-client.d.mts +10 -12
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/index.d.mts +37 -14
- package/dist/pages/index.mjs +5 -5
- package/dist/pages/islands-plugin.d.mts +25 -27
- package/dist/pages/islands-plugin.mjs +6 -4
- package/dist/pages/prefetch.d.mts +6 -7
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -1
- package/dist/pages/serialize.d.mts +7 -8
- package/dist/platform-cmd-BEOVv1PN.mjs +123 -0
- package/dist/platform-domain-BszUfiS8.mjs +228 -0
- package/dist/platform-lifecycle-CjSr6xf0.mjs +4450 -0
- package/dist/platform-management-W30iCaTL.mjs +698 -0
- package/dist/platform-recovery-pHHv4ZSg.mjs +99 -0
- package/dist/{plugin-inference-DMeavIJ6.mjs → plugin-inference-BDRfZngg.mjs} +35 -19
- package/dist/prepare-BfJvFUtJ.mjs +14 -0
- package/dist/{prepare-BoKHgMNx.mjs → prepare-CBetXvsN.mjs} +15 -24
- package/dist/{preset-BjyR3lzz.mjs → preset-lAy0B0BQ.mjs} +25 -212
- package/dist/{project-cmd-D_w-4w5B.mjs → project-cmd-DCpk1cDt.mjs} +25 -12
- package/dist/{project-paths-BQd7OmIo.mjs → project-paths-SK8nMHPp.mjs} +3 -1
- package/dist/{project-tsconfig-B-QtXjLQ.mjs → project-tsconfig-Ql2XsSQp.mjs} +2 -2
- package/dist/{protocol-Bnb0LFp3.d.mts → protocol-C-pqYJjE.d.mts} +3 -4
- package/dist/{provision-rShh6MKY.mjs → provision-Blnstcm2.mjs} +78 -45
- package/dist/r2-conditions-D1Wk8i7b.mjs +30 -0
- package/dist/{requests-B8sZxaFM.mjs → requests-Dn8Vheh1.mjs} +5 -3
- package/dist/{resolve-project-BBMtLLV9.mjs → resolve-project--Vxawf7z.mjs} +2 -2
- package/dist/rollback-CtlPXEBi.mjs +166 -0
- package/dist/{rolldown-runtime-DJK8HYOj.mjs → rolldown-runtime-rQ84J-ij.mjs} +1 -1
- package/dist/{route-types-COI2DsZv.mjs → route-types-Da-DpyUp.mjs} +85 -26
- package/dist/routes-stub.d.mts +22 -23
- package/dist/runner-mysql-CgRFl3s6.mjs +61 -0
- package/dist/{runner-pg-CHM76xuC.mjs → runner-pg-DCkWPsWS.mjs} +18 -6
- package/dist/runtime/ai.d.mts +21 -14
- package/dist/runtime/ai.mjs +5 -4
- package/dist/runtime/auth-client-react.d.mts +3 -5
- package/dist/runtime/auth-client-solid.d.mts +3 -5
- package/dist/runtime/auth-client-svelte.d.mts +3 -5
- package/dist/runtime/auth-client-vue.d.mts +3 -5
- package/dist/runtime/auth-client.d.mts +3 -5
- package/dist/runtime/auth.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.d.mts +10 -0
- package/dist/runtime/better-auth-mysql.mjs +49 -0
- package/dist/runtime/better-auth-pg.d.mts +8 -9
- package/dist/runtime/better-auth-pg.mjs +2 -2
- package/dist/runtime/better-auth.d.mts +8 -9
- package/dist/runtime/better-auth.mjs +2 -2
- package/dist/runtime/client-react.d.mts +1 -1
- package/dist/runtime/client-solid.d.mts +1 -1
- package/dist/runtime/client-svelte.d.mts +1 -1
- package/dist/runtime/client-vue.d.mts +1 -1
- package/dist/runtime/client.d.mts +1 -1
- package/dist/runtime/db-mysql.d.mts +2 -0
- package/dist/runtime/db-mysql.mjs +1 -0
- package/dist/runtime/db.d.mts +10 -11
- package/dist/runtime/durable.d.mts +47 -0
- package/dist/runtime/durable.mjs +146 -0
- package/dist/runtime/email/testing.d.mts +112 -0
- package/dist/runtime/email/testing.mjs +283 -0
- package/dist/runtime/email.d.mts +30 -0
- package/dist/runtime/email.mjs +573 -0
- package/dist/runtime/env-helpers.d.mts +2 -2
- package/dist/runtime/env-helpers.mjs +5 -42
- package/dist/runtime/env-public-client.d.mts +10 -11
- package/dist/runtime/env-public-client.mjs +1 -1
- package/dist/runtime/env-public.d.mts +2 -2
- package/dist/runtime/env-public.mjs +104 -49
- package/dist/runtime/env.d.mts +19 -18
- package/dist/runtime/env.mjs +15 -2
- package/dist/runtime/fetch-stream.d.mts +20 -21
- package/dist/runtime/fetch.d.mts +15 -16
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/isr.d.mts +21 -22
- package/dist/runtime/isr.mjs +26 -8
- package/dist/runtime/kv.d.mts +9 -10
- package/dist/runtime/live-client.d.mts +5 -7
- package/dist/runtime/live-client.mjs +9 -7
- package/dist/runtime/live-server.d.mts +4 -5
- package/dist/runtime/live.d.mts +22 -24
- package/dist/runtime/live.mjs +1 -1
- package/dist/runtime/log.d.mts +16 -17
- package/dist/runtime/migration-handler-mysql.d.mts +4 -0
- package/dist/runtime/migration-handler-mysql.mjs +81 -0
- package/dist/runtime/migration-handler-pg.d.mts +2 -4
- package/dist/runtime/migration-handler.d.mts +5 -6
- package/dist/runtime/migration-handler.mjs +4 -3
- package/dist/runtime/queues.d.mts +3 -4
- package/dist/runtime/queues.mjs +2 -1
- package/dist/runtime/remote/binding-handler.d.mts +10 -12
- package/dist/runtime/remote/binding-handler.mjs +24 -3
- package/dist/runtime/remote/index.d.mts +5 -6
- package/dist/runtime/remote/index.mjs +21 -18
- package/dist/runtime/response.d.mts +10 -11
- package/dist/runtime/sandbox.d.mts +56 -55
- package/dist/runtime/sandbox.mjs +57 -49
- package/dist/runtime/schema-mysql.d.mts +1 -0
- package/dist/runtime/schema-mysql.mjs +2 -0
- package/dist/runtime/seed.d.mts +14 -9
- package/dist/runtime/sse-client.d.mts +6 -7
- package/dist/runtime/sse.d.mts +11 -12
- package/dist/runtime/storage.d.mts +3 -4
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +12 -12
- package/dist/runtime/ws-server.mjs +32 -4
- package/dist/runtime/ws.d.mts +19 -21
- package/dist/{scan-DYXkrasO.mjs → scan-BMH4rzlv.mjs} +53 -31
- package/dist/{scan-DEwlM_Xy.mjs → scan-CpK-57ug.mjs} +9 -5
- package/dist/{secret-Dt32J6RI.mjs → secret-BqTxGqki.mjs} +62 -5
- package/dist/{skills-CLjN0uUO.mjs → skills-Q46GZMO-.mjs} +6 -4
- package/dist/{standard-schema-DJ0HW7QP.d.mts → standard-schema-Fo_vCAZh.d.mts} +6 -6
- package/dist/{subcommand-prompt-BzV8iQZo.mjs → subcommand-prompt-WfySCQ7S.mjs} +67 -48
- package/dist/sveltekit.d.mts +12 -11
- package/dist/sveltekit.mjs +1 -1
- package/dist/types-BAp5AEBU.d.mts +79 -0
- package/dist/types-CKWnYgfy.d.mts +1 -0
- package/dist/{validate-Cw_RLeTj.mjs → validate-Bihr8WBi.mjs} +3 -3
- package/dist/wrangler--imS8n0d.mjs +1796 -0
- package/dist/{yarn-pnp-DJn3SAHF.mjs → yarn-pnp-DxSInkzL.mjs} +1 -1
- package/package.json +79 -65
- package/schema.json +35 -3
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +1 -1
- package/skills/void/SKILL.md +59 -2
- package/skills/void/docs/guide/ai.md +32 -14
- package/skills/void/docs/guide/app-types.md +6 -6
- package/skills/void/docs/guide/auth.md +14 -16
- package/skills/void/docs/guide/database/d1.md +6 -0
- package/skills/void/docs/guide/database/mysql.md +60 -0
- package/skills/void/docs/guide/database/postgresql.md +14 -9
- package/skills/void/docs/guide/database.md +39 -26
- package/skills/void/docs/guide/deployment.md +163 -22
- package/skills/void/docs/guide/durable-state.md +140 -0
- package/skills/void/docs/guide/edge/headers.md +5 -5
- package/skills/void/docs/guide/edge/prerendering.md +2 -0
- package/skills/void/docs/guide/edge/revalidation.md +21 -6
- package/skills/void/docs/guide/edge/rewrites.md +18 -14
- package/skills/void/docs/guide/edge/static-assets.md +23 -8
- package/skills/void/docs/guide/email.md +609 -0
- package/skills/void/docs/guide/env-migration.md +109 -0
- package/skills/void/docs/guide/env-vars.md +70 -248
- package/skills/void/docs/guide/index.md +15 -17
- package/skills/void/docs/guide/jobs.md +8 -5
- package/skills/void/docs/guide/live.md +7 -15
- package/skills/void/docs/guide/pages-routing/actions-and-forms.md +8 -4
- package/skills/void/docs/guide/pages-routing/islands.md +3 -3
- package/skills/void/docs/guide/pages-routing/loaders.md +6 -4
- package/skills/void/docs/guide/pages-routing/overview.md +7 -7
- package/skills/void/docs/guide/platform-administration.md +212 -0
- package/skills/void/docs/guide/platform-development.md +235 -0
- package/skills/void/docs/guide/queues.md +10 -10
- package/skills/void/docs/guide/quickstart.md +46 -67
- package/skills/void/docs/guide/remote-dev.md +8 -6
- package/skills/void/docs/guide/sandboxes.md +33 -16
- package/skills/void/docs/guide/self-hosted-platform.md +553 -0
- package/skills/void/docs/guide/server-routing.md +25 -5
- package/skills/void/docs/guide/sse.md +4 -4
- package/skills/void/docs/guide/ssg.md +5 -3
- package/skills/void/docs/guide/storage.md +2 -2
- package/skills/void/docs/guide/websockets.md +18 -7
- package/skills/void/docs/index.md +3 -3
- package/skills/void/docs/integrations/agents.md +6 -64
- package/skills/void/docs/integrations/cloudflare.md +165 -146
- package/skills/void/docs/integrations/frameworks/analog.md +4 -4
- package/skills/void/docs/integrations/frameworks/astro.md +5 -5
- package/skills/void/docs/integrations/frameworks/nuxt.md +5 -5
- package/skills/void/docs/integrations/frameworks/overview.md +3 -3
- package/skills/void/docs/integrations/frameworks/react-router.md +3 -3
- package/skills/void/docs/integrations/frameworks/sveltekit.md +3 -3
- package/skills/void/docs/integrations/frameworks/tanstack-start.md +2 -2
- package/skills/void/docs/integrations/nodejs-bun-deno.md +11 -4
- package/skills/void/docs/reference/api.md +42 -6
- package/skills/void/docs/reference/cli.md +637 -159
- package/skills/void/docs/reference/config.md +80 -25
- package/skills/void/docs/reference/resource-inference.md +13 -9
- package/skills/void/docs/reference/structure.md +10 -11
- package/AGENT_PROMPT.md +0 -19
- package/dist/cf-access-Bqw81xAf.mjs +0 -22
- package/dist/env-CZy5MorI.mjs +0 -299
- package/dist/env-helpers-z4stu8uc.d.mts +0 -52
- package/dist/env-mask-Dd47NbR6.mjs +0 -90
- package/dist/env-public-BfiLcMBk.d.mts +0 -140
- package/dist/link-CdGHSIy-.mjs +0 -45
- package/dist/mcp-DoM3_nhd.mjs +0 -377
- package/dist/project-paths-GpziKeQQ.d.mts +0 -25
- package/dist/providers-BNKRacMr.d.mts +0 -7
- package/dist/proxy-D-3_D-Gl.mjs +0 -5
- package/dist/rollback-CkvTFXx5.mjs +0 -90
- package/dist/runtime/isr-cache.d.mts +0 -207
- package/dist/runtime/isr-cache.mjs +0 -523
- package/dist/types-lLjNE9Qp.d.mts +0 -51
- package/getting-started-prompt.txt +0 -28
- package/skills/void/command/void.md +0 -7
- package/skills/void/docs/integrations/auth-providers.md +0 -0
- package/skills/void/docs/integrations/payment-processors.md +0 -0
- package/skills/void/docs/node_modules/@iconify/vue/README.md +0 -408
- package/skills/void/docs/node_modules/@iconify/vue/offline/readme.md +0 -5
- package/skills/void/docs/node_modules/@voidzero-dev/vitepress-theme/README.md +0 -103
- package/skills/void/docs/node_modules/oxc-minify/README.md +0 -78
- package/skills/void/docs/node_modules/reka-ui/README.md +0 -80
- package/skills/void/docs/node_modules/vitepress/README.md +0 -28
- package/skills/void/docs/node_modules/vitepress/template/api-examples.md +0 -49
- package/skills/void/docs/node_modules/vitepress/template/index.md +0 -28
- package/skills/void/docs/node_modules/vitepress/template/markdown-examples.md +0 -85
- package/skills/void/docs/node_modules/vitepress-plugin-group-icons/README.md +0 -101
- package/skills/void/docs/node_modules/void/AGENT_PROMPT.md +0 -19
- package/skills/void/docs/node_modules/void/CLAUDE.md +0 -219
- package/skills/void/docs/node_modules/void/README.md +0 -90
- package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/CHANGELOG.md +0 -685
- package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/README.md +0 -396
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/sandbox/README.md +0 -219
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/vite-plugin/README.md +0 -37
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/workers-types/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/@electric-sql/pglite/README.md +0 -189
- package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/CHANGELOG.md +0 -143
- package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/README.md +0 -1272
- package/skills/void/docs/node_modules/void/node_modules/@napi-rs/keyring/README.md +0 -19
- package/skills/void/docs/node_modules/void/node_modules/@types/better-sqlite3/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/node/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/pg/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/proper-lockfile/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/README.md +0 -22
- package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/vendor/vscode-jsonrpc/README.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +0 -153
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/engine-javascript/README.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/transformers/README.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@types/node/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/CHANGELOG.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/README.md +0 -565
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-exit/README.md +0 -127
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-anchor/README.md +0 -600
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-attrs/README.md +0 -386
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-container/README.md +0 -95
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-emoji/README.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-footnote/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/pathslash/README.md +0 -64
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/shiki/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tinyglobby/README.md +0 -25
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/AGENTS.md +0 -16
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/README.md +0 -220
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/build.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/check.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/create.md +0 -70
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/fmt.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/index.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/lint.md +0 -26
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/pack.md +0 -17
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/run.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/staged.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/test.md +0 -18
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/build.md +0 -40
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/cache.md +0 -107
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/check.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ci.md +0 -62
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/create.md +0 -341
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/dev.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/docker.md +0 -175
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/env.md +0 -167
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/fmt.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/implode.md +0 -23
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/index.md +0 -134
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/install.md +0 -199
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/lint.md +0 -50
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate.md +0 -197
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/pack.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/run.md +0 -356
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/test.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/vpx.md +0 -66
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/why.md +0 -39
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/index.md +0 -12
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/team.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/generator/README.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/monorepo/README.md +0 -29
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vue/README.md +0 -58
- package/skills/void/docs/node_modules/void/node_modules/arktype/README.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/better-auth/LICENSE.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/better-auth/README.md +0 -32
- package/skills/void/docs/node_modules/void/node_modules/better-sqlite3/README.md +0 -99
- package/skills/void/docs/node_modules/void/node_modules/blake3-jit/README.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/drizzle-arktype/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/drizzle-kit/README.md +0 -79
- package/skills/void/docs/node_modules/void/node_modules/drizzle-orm/README.md +0 -44
- package/skills/void/docs/node_modules/void/node_modules/drizzle-valibot/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/drizzle-zod/README.md +0 -65
- package/skills/void/docs/node_modules/void/node_modules/es-module-lexer/README.md +0 -403
- package/skills/void/docs/node_modules/void/node_modules/estree-walker/README.md +0 -48
- package/skills/void/docs/node_modules/void/node_modules/hono/README.md +0 -85
- package/skills/void/docs/node_modules/void/node_modules/ignore/README.md +0 -452
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/CHANGELOG.md +0 -76
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/LICENSE.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/README.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/SECURITY.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/magic-string/README.md +0 -325
- package/skills/void/docs/node_modules/void/node_modules/ofetch/README.md +0 -398
- package/skills/void/docs/node_modules/void/node_modules/pathslash/README.md +0 -64
- package/skills/void/docs/node_modules/void/node_modules/pg/README.md +0 -96
- package/skills/void/docs/node_modules/void/node_modules/pglite-server/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/picocolors/README.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/CHANGELOG.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/README.md +0 -183
- package/skills/void/docs/node_modules/void/node_modules/tinyglobby/README.md +0 -25
- package/skills/void/docs/node_modules/void/node_modules/valibot/LICENSE.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/valibot/README.md +0 -94
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/AGENTS.md +0 -16
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/README.md +0 -220
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/build.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/check.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/create.md +0 -70
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/fmt.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/index.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/lint.md +0 -26
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/pack.md +0 -17
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/run.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/staged.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/test.md +0 -18
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/build.md +0 -40
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/cache.md +0 -107
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/check.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ci.md +0 -62
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/create.md +0 -341
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/dev.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/docker.md +0 -175
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/env.md +0 -167
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/fmt.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/implode.md +0 -23
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/index.md +0 -134
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/install.md +0 -199
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/lint.md +0 -50
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate.md +0 -197
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/pack.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/run.md +0 -356
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/test.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/vpx.md +0 -66
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/why.md +0 -39
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/index.md +0 -12
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/team.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/generator/README.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/monorepo/README.md +0 -29
- package/skills/void/docs/node_modules/void/node_modules/wrangler/README.md +0 -63
- package/skills/void/docs/node_modules/void/node_modules/zod/README.md +0 -191
- package/skills/void/docs/node_modules/void/skills/migrate-vite-cloudflare-to-void/SKILL.md +0 -175
- package/skills/void/docs/node_modules/void/skills/void/SKILL.md +0 -76
- package/skills/void/docs/node_modules/void/skills/void/command/void.md +0 -7
- package/skills/void/docs/node_modules/void/test/e2e/README.md +0 -85
|
@@ -1,396 +0,0 @@
|
|
|
1
|
-
# `@clack/prompts`
|
|
2
|
-
|
|
3
|
-
Effortlessly build beautiful command-line apps 🪄 [Try the demo](https://stackblitz.com/edit/clack-prompts?file=index.js)
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
`@clack/prompts` is an opinionated, pre-styled wrapper around [`@clack/core`](https://www.npmjs.com/package/@clack/core).
|
|
10
|
-
|
|
11
|
-
- 🤏 80% smaller than other options
|
|
12
|
-
- 💎 Beautiful, minimal UI
|
|
13
|
-
- ✅ Simple API
|
|
14
|
-
- 🧱 Comes with `text`, `password`, `confirm`, `date`, `select`, `autocomplete`, `selectKey`, `multiselect`, `path`, and `spinner` components
|
|
15
|
-
|
|
16
|
-
## Basics
|
|
17
|
-
|
|
18
|
-
### Setup
|
|
19
|
-
|
|
20
|
-
The `intro` and `outro` functions will print a message to begin or end a prompt session, respectively.
|
|
21
|
-
|
|
22
|
-
```js
|
|
23
|
-
import { intro, outro } from '@clack/prompts';
|
|
24
|
-
|
|
25
|
-
intro(`create-my-app`);
|
|
26
|
-
// Do stuff
|
|
27
|
-
outro(`You're all set!`);
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Cancellation
|
|
31
|
-
|
|
32
|
-
The `isCancel` function is a guard that detects when a user cancels a question with `CTRL + C`. You should handle this situation for each prompt, optionally providing a nice cancellation message with the `cancel` utility.
|
|
33
|
-
|
|
34
|
-
```js
|
|
35
|
-
import { isCancel, cancel, text } from '@clack/prompts';
|
|
36
|
-
|
|
37
|
-
const value = await text({
|
|
38
|
-
message: 'What is the meaning of life?',
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
if (isCancel(value)) {
|
|
42
|
-
cancel('Operation cancelled.');
|
|
43
|
-
process.exit(0);
|
|
44
|
-
}
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Components
|
|
48
|
-
|
|
49
|
-
### Text
|
|
50
|
-
|
|
51
|
-
The text component accepts a single line of text.
|
|
52
|
-
|
|
53
|
-
```js
|
|
54
|
-
import { text } from '@clack/prompts';
|
|
55
|
-
|
|
56
|
-
const meaning = await text({
|
|
57
|
-
message: 'What is the meaning of life?',
|
|
58
|
-
placeholder: 'Not sure',
|
|
59
|
-
initialValue: '42',
|
|
60
|
-
validate(value) {
|
|
61
|
-
if (value.length === 0) return `Value is required!`;
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Password
|
|
67
|
-
|
|
68
|
-
The password prompt behaves like the [`text`](#text) prompt, but masks the input as the user types.
|
|
69
|
-
|
|
70
|
-
```js
|
|
71
|
-
import { password } from '@clack/prompts';
|
|
72
|
-
|
|
73
|
-
const secret = await password({
|
|
74
|
-
message: 'Set a password.',
|
|
75
|
-
mask: '*',
|
|
76
|
-
validate(value) {
|
|
77
|
-
if (!value || value.length < 8) return 'Password must be at least 8 characters.';
|
|
78
|
-
},
|
|
79
|
-
});
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Confirm
|
|
83
|
-
|
|
84
|
-
The `confirm` prompt accepts a yes or no choice, returning a boolean value corresponding to the user's selection.
|
|
85
|
-
|
|
86
|
-
```js
|
|
87
|
-
import { confirm } from '@clack/prompts';
|
|
88
|
-
|
|
89
|
-
const shouldContinue = await confirm({
|
|
90
|
-
message: 'Do you want to continue?',
|
|
91
|
-
});
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Date
|
|
95
|
-
|
|
96
|
-
The `date` prompt provides an interactive date picker, allowing users to navigate between year, month, and day segments and increment/decrement values using keyboard controls.
|
|
97
|
-
|
|
98
|
-
```js
|
|
99
|
-
import { date } from '@clack/prompts';
|
|
100
|
-
|
|
101
|
-
const birthday = await date({
|
|
102
|
-
message: 'Pick your birthday',
|
|
103
|
-
minDate: new Date('1900-01-01'),
|
|
104
|
-
initialValue: new Date(),
|
|
105
|
-
maxDate: new Date(),
|
|
106
|
-
});
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Select
|
|
110
|
-
|
|
111
|
-
The select component allows a user to choose one value from a list of options. The result is the `value` prop of a given option.
|
|
112
|
-
|
|
113
|
-
```js
|
|
114
|
-
import { select } from '@clack/prompts';
|
|
115
|
-
|
|
116
|
-
const projectType = await select({
|
|
117
|
-
message: 'Pick a project type.',
|
|
118
|
-
options: [
|
|
119
|
-
{ value: 'ts', label: 'TypeScript' },
|
|
120
|
-
{ value: 'js', label: 'JavaScript', disabled: true },
|
|
121
|
-
{ value: 'coffee', label: 'CoffeeScript', hint: 'oh no' },
|
|
122
|
-
],
|
|
123
|
-
});
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### Autocomplete
|
|
127
|
-
|
|
128
|
-
The `autocomplete` prompt combines text input with a searchable list of options. It's perfect for when you have a large list of options and want to help users find what they're looking for quickly.
|
|
129
|
-
|
|
130
|
-
```js
|
|
131
|
-
import { autocomplete } from '@clack/prompts';
|
|
132
|
-
|
|
133
|
-
const framework = await autocomplete({
|
|
134
|
-
message: 'Pick a framework.',
|
|
135
|
-
placeholder: 'Type to search...',
|
|
136
|
-
options: [
|
|
137
|
-
{ value: 'next', label: 'Next.js' },
|
|
138
|
-
{ value: 'nuxt', label: 'Nuxt' },
|
|
139
|
-
{ value: 'sveltekit', label: 'SvelteKit' },
|
|
140
|
-
{ value: 'remix', label: 'Remix' },
|
|
141
|
-
],
|
|
142
|
-
});
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
### Autocomplete Multi-Select
|
|
146
|
-
|
|
147
|
-
The `autocompleteMultiselect` prompt combines the search functionality of [autocomplete](#autocomplete) with the ability to select multiple options.
|
|
148
|
-
|
|
149
|
-
```js
|
|
150
|
-
import { autocomplete } from '@clack/prompts';
|
|
151
|
-
|
|
152
|
-
const framework = await autocomplete({
|
|
153
|
-
message: 'Search for a framework',
|
|
154
|
-
options: [
|
|
155
|
-
{ value: 'next', label: 'Next.js', hint: 'React framework' },
|
|
156
|
-
{ value: 'astro', label: 'Astro', hint: 'Content-focused' },
|
|
157
|
-
{ value: 'svelte', label: 'SvelteKit', hint: 'Compile-time framework' },
|
|
158
|
-
{ value: 'remix', label: 'Remix', hint: 'Full stack framework' },
|
|
159
|
-
{ value: 'nuxt', label: 'Nuxt', hint: 'Vue framework' },
|
|
160
|
-
],
|
|
161
|
-
placeholder: 'Type to search...',
|
|
162
|
-
maxItems: 5,
|
|
163
|
-
});
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
### Select Key
|
|
167
|
-
|
|
168
|
-
The `selectKey` component lets a user choose an option by pressing its single-character string `value` key directly.
|
|
169
|
-
|
|
170
|
-
```js
|
|
171
|
-
import { selectKey } from '@clack/prompts';
|
|
172
|
-
|
|
173
|
-
const action = await selectKey({
|
|
174
|
-
message: 'Pick an action.',
|
|
175
|
-
options: [
|
|
176
|
-
{ value: 'd', label: 'Deploy' },
|
|
177
|
-
{ value: 't', label: 'Run tests' },
|
|
178
|
-
{ value: 'q', label: 'Quit' },
|
|
179
|
-
],
|
|
180
|
-
});
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### Multi-Select
|
|
184
|
-
|
|
185
|
-
The `multiselect` component allows a user to choose many values from a list of options. The result is an array with all selected `value` props.
|
|
186
|
-
|
|
187
|
-
```js
|
|
188
|
-
import { multiselect } from '@clack/prompts';
|
|
189
|
-
|
|
190
|
-
const additionalTools = await multiselect({
|
|
191
|
-
message: 'Select additional tools.',
|
|
192
|
-
options: [
|
|
193
|
-
{ value: 'eslint', label: 'ESLint', hint: 'recommended' },
|
|
194
|
-
{ value: 'prettier', label: 'Prettier', disabled: true },
|
|
195
|
-
{ value: 'gh-action', label: 'GitHub Action' },
|
|
196
|
-
],
|
|
197
|
-
required: false,
|
|
198
|
-
});
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
It is also possible to select multiple items arranged into hierarchy by using `groupMultiselect`:
|
|
202
|
-
|
|
203
|
-
```js
|
|
204
|
-
import { groupMultiselect } from '@clack/prompts';
|
|
205
|
-
|
|
206
|
-
const basket = await groupMultiselect({
|
|
207
|
-
message: 'Select your favorite fruits and vegetables:',
|
|
208
|
-
options: {
|
|
209
|
-
fruits: [
|
|
210
|
-
{ value: 'apple', label: 'apple' },
|
|
211
|
-
{ value: 'banana', label: 'banana' },
|
|
212
|
-
{ value: 'cherry', label: 'cherry' },
|
|
213
|
-
],
|
|
214
|
-
vegetables: [
|
|
215
|
-
{ value: 'carrot', label: 'carrot' },
|
|
216
|
-
{ value: 'spinach', label: 'spinach' },
|
|
217
|
-
{ value: 'potato', label: 'potato' },
|
|
218
|
-
]
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### Multi-Line Text
|
|
224
|
-
|
|
225
|
-
The multi-line prompt accepts multiple lines of text input. By default, pressing `Enter` twice submits the input.
|
|
226
|
-
|
|
227
|
-
```js
|
|
228
|
-
import { multiline } from '@clack/prompts';
|
|
229
|
-
|
|
230
|
-
const bio = await multiline({
|
|
231
|
-
message: 'Tell us about yourself.',
|
|
232
|
-
placeholder: 'Start typing...',
|
|
233
|
-
validate(value) {
|
|
234
|
-
if (value.length === 0) return `value is required`;
|
|
235
|
-
},
|
|
236
|
-
});
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Set `showSubmit` to display an explicit submit button instead of double `Enter` submission:
|
|
240
|
-
|
|
241
|
-
```js
|
|
242
|
-
const bio = await multiline({
|
|
243
|
-
message: 'Tell us about yourself.',
|
|
244
|
-
showSubmit: true,
|
|
245
|
-
});
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
### Path
|
|
249
|
-
|
|
250
|
-
The `path` prompt extends [`autocomplete`](#autocomplete) to provide file and directory suggestions.
|
|
251
|
-
|
|
252
|
-
```js
|
|
253
|
-
import { path } from '@clack/prompts';
|
|
254
|
-
|
|
255
|
-
const targetDir = await path({
|
|
256
|
-
message: 'Select an existing directory.',
|
|
257
|
-
directory: true,
|
|
258
|
-
});
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
### Spinner
|
|
262
|
-
|
|
263
|
-
The spinner component surfaces a pending action, such as a long-running download or dependency installation.
|
|
264
|
-
|
|
265
|
-
```js
|
|
266
|
-
import { spinner } from '@clack/prompts';
|
|
267
|
-
|
|
268
|
-
const s = spinner();
|
|
269
|
-
s.start('Installing via npm');
|
|
270
|
-
// Do installation here
|
|
271
|
-
s.stop('Installed via npm');
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### Progress
|
|
275
|
-
|
|
276
|
-
The progress component extends the spinner component to add a progress bar to visualize the progression of an action.
|
|
277
|
-
|
|
278
|
-
```js
|
|
279
|
-
import { progress } from '@clack/prompts';
|
|
280
|
-
|
|
281
|
-
const p = progress({ max: 10 });
|
|
282
|
-
p.start('Downloading archive');
|
|
283
|
-
// Do download here
|
|
284
|
-
p.advance(3, 'Downloading (30%)');
|
|
285
|
-
// ...
|
|
286
|
-
p.advance(5, 'Downloading (80%)');
|
|
287
|
-
// ...
|
|
288
|
-
p.stop('Archive downloaded');
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
## Utilities
|
|
292
|
-
|
|
293
|
-
### Grouping
|
|
294
|
-
|
|
295
|
-
Grouping prompts together is a great way to keep your code organized. This accepts a JSON object with a name that can be used to reference the group later. The second argument is an optional but has a `onCancel` callback that will be called if the user cancels one of the prompts in the group.
|
|
296
|
-
|
|
297
|
-
```js
|
|
298
|
-
import * as p from '@clack/prompts';
|
|
299
|
-
|
|
300
|
-
const group = await p.group(
|
|
301
|
-
{
|
|
302
|
-
name: () => p.text({ message: 'What is your name?' }),
|
|
303
|
-
age: () => p.text({ message: 'What is your age?' }),
|
|
304
|
-
color: ({ results }) =>
|
|
305
|
-
p.multiselect({
|
|
306
|
-
message: `What is your favorite color ${results.name}?`,
|
|
307
|
-
options: [
|
|
308
|
-
{ value: 'red', label: 'Red' },
|
|
309
|
-
{ value: 'green', label: 'Green' },
|
|
310
|
-
{ value: 'blue', label: 'Blue' },
|
|
311
|
-
],
|
|
312
|
-
}),
|
|
313
|
-
},
|
|
314
|
-
{
|
|
315
|
-
// On Cancel callback that wraps the group
|
|
316
|
-
// So if the user cancels one of the prompts in the group this function will be called
|
|
317
|
-
onCancel: ({ results }) => {
|
|
318
|
-
p.cancel('Operation cancelled.');
|
|
319
|
-
process.exit(0);
|
|
320
|
-
},
|
|
321
|
-
}
|
|
322
|
-
);
|
|
323
|
-
|
|
324
|
-
console.log(group.name, group.age, group.color);
|
|
325
|
-
```
|
|
326
|
-
|
|
327
|
-
### Tasks
|
|
328
|
-
|
|
329
|
-
Execute multiple tasks in spinners.
|
|
330
|
-
|
|
331
|
-
```js
|
|
332
|
-
import { tasks } from '@clack/prompts';
|
|
333
|
-
|
|
334
|
-
await tasks([
|
|
335
|
-
{
|
|
336
|
-
title: 'Installing via npm',
|
|
337
|
-
task: async (message) => {
|
|
338
|
-
// Do installation here
|
|
339
|
-
return 'Installed via npm';
|
|
340
|
-
},
|
|
341
|
-
},
|
|
342
|
-
]);
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
### Logs
|
|
346
|
-
|
|
347
|
-
```js
|
|
348
|
-
import { log } from '@clack/prompts';
|
|
349
|
-
|
|
350
|
-
log.info('Info!');
|
|
351
|
-
log.success('Success!');
|
|
352
|
-
log.step('Step!');
|
|
353
|
-
log.warn('Warn!');
|
|
354
|
-
log.error('Error!');
|
|
355
|
-
log.message('Hello, World', { symbol: color.cyan('~') });
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
### Stream
|
|
360
|
-
|
|
361
|
-
When interacting with dynamic LLMs or other streaming message providers, use the `stream` APIs to log messages from an iterable, even an async one.
|
|
362
|
-
|
|
363
|
-
```js
|
|
364
|
-
import { stream } from '@clack/prompts';
|
|
365
|
-
|
|
366
|
-
stream.info((function *() { yield 'Info!'; })());
|
|
367
|
-
stream.success((function *() { yield 'Success!'; })());
|
|
368
|
-
stream.step((function *() { yield 'Step!'; })());
|
|
369
|
-
stream.warn((function *() { yield 'Warn!'; })());
|
|
370
|
-
stream.error((function *() { yield 'Error!'; })());
|
|
371
|
-
stream.message((function *() { yield 'Hello'; yield ", World" })(), { symbol: color.cyan('~') });
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-

|
|
375
|
-
|
|
376
|
-
### Task Log
|
|
377
|
-
|
|
378
|
-
When executing a sub-process or a similar sub-task, `taskLog` can be used to render the output continuously and clear it at the end if it was successful.
|
|
379
|
-
|
|
380
|
-
```js
|
|
381
|
-
import { taskLog } from '@clack/prompts';
|
|
382
|
-
|
|
383
|
-
const log = taskLog({
|
|
384
|
-
title: 'Running npm install'
|
|
385
|
-
});
|
|
386
|
-
|
|
387
|
-
for await (const line of npmInstall()) {
|
|
388
|
-
log.message(line);
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
if (success) {
|
|
392
|
-
log.success('Done!');
|
|
393
|
-
} else {
|
|
394
|
-
log.error('Failed!');
|
|
395
|
-
}
|
|
396
|
-
```
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
<img width="1362" height="450" alt="Image" src="https://github.com/user-attachments/assets/6f770ae3-0a14-4d2b-9aed-a304ee5446c5" />
|
|
2
|
-
|
|
3
|
-
# Cloudflare Sandbox SDK
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/@cloudflare/sandbox)
|
|
6
|
-
[](https://www.npmjs.com/package/@cloudflare/sandbox)
|
|
7
|
-
|
|
8
|
-
**Build secure, isolated code execution environments on Cloudflare.**
|
|
9
|
-
|
|
10
|
-
The Sandbox SDK lets you run untrusted code safely in isolated containers. Execute commands, manage files, run background processes, and expose services — all from your Workers applications.
|
|
11
|
-
|
|
12
|
-
Perfect for AI code execution, interactive development environments, data analysis platforms, CI/CD systems, and any application that needs secure code execution at the edge.
|
|
13
|
-
|
|
14
|
-
## Getting Started
|
|
15
|
-
|
|
16
|
-
### Prerequisites
|
|
17
|
-
|
|
18
|
-
1. Install [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) (version 16.17.0 or later)
|
|
19
|
-
2. Ensure Docker is running locally ([see setup guide](https://developers.cloudflare.com/sandbox/get-started/#ensure-docker-is-running-locally))
|
|
20
|
-
3. For deploying to production, sign up for a [Cloudflare account](https://dash.cloudflare.com/sign-up/workers-and-pages)
|
|
21
|
-
|
|
22
|
-
### 1. Create a new project
|
|
23
|
-
|
|
24
|
-
Create a new Sandbox SDK project using the minimal template:
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
npm create cloudflare@latest -- my-sandbox --template=cloudflare/sandbox-sdk/examples/minimal
|
|
28
|
-
cd my-sandbox
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### 2. Test locally
|
|
32
|
-
|
|
33
|
-
Start the development server:
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
npm run dev
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
> **Note:** First run builds the Docker container (2-3 minutes). Subsequent runs are much faster.
|
|
40
|
-
|
|
41
|
-
Test the endpoints:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
# Execute Python code
|
|
45
|
-
curl http://localhost:8787/run
|
|
46
|
-
|
|
47
|
-
# File operations
|
|
48
|
-
curl http://localhost:8787/file
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### 3. Deploy to production
|
|
52
|
-
|
|
53
|
-
Deploy your Worker and container:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
npx wrangler deploy
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
> **Wait for provisioning:** After first deployment, wait 2-3 minutes before making requests.
|
|
60
|
-
|
|
61
|
-
**📖 [View the complete getting started guide](https://developers.cloudflare.com/sandbox/get-started/)** for detailed instructions and explanations.
|
|
62
|
-
|
|
63
|
-
## Quick API Example
|
|
64
|
-
|
|
65
|
-
```typescript
|
|
66
|
-
import { getSandbox, proxyToSandbox, type Sandbox } from '@cloudflare/sandbox';
|
|
67
|
-
|
|
68
|
-
export { Sandbox } from '@cloudflare/sandbox';
|
|
69
|
-
|
|
70
|
-
type Env = {
|
|
71
|
-
Sandbox: DurableObjectNamespace<Sandbox>;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
export default {
|
|
75
|
-
async fetch(request: Request, env: Env): Promise<Response> {
|
|
76
|
-
// Required for preview URLs
|
|
77
|
-
const proxyResponse = await proxyToSandbox(request, env);
|
|
78
|
-
if (proxyResponse) return proxyResponse;
|
|
79
|
-
|
|
80
|
-
const url = new URL(request.url);
|
|
81
|
-
const sandbox = getSandbox(env.Sandbox, 'my-sandbox');
|
|
82
|
-
|
|
83
|
-
// Execute Python code
|
|
84
|
-
if (url.pathname === '/run') {
|
|
85
|
-
const result = await sandbox.exec('python3 -c "print(2 + 2)"');
|
|
86
|
-
return Response.json({ output: result.stdout, success: result.success });
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Work with files
|
|
90
|
-
if (url.pathname === '/file') {
|
|
91
|
-
await sandbox.writeFile('/workspace/hello.txt', 'Hello, Sandbox!');
|
|
92
|
-
const file = await sandbox.readFile('/workspace/hello.txt');
|
|
93
|
-
return Response.json({ content: file.content });
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return new Response('Try /run or /file');
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Quick tunnels
|
|
102
|
-
|
|
103
|
-
`sandbox.tunnels.get(port)` exposes a service running inside the
|
|
104
|
-
sandbox on a `*.trycloudflare.com` URL. No Cloudflare account or DNS
|
|
105
|
-
setup required — cloudflared opens a persistent QUIC connection to
|
|
106
|
-
Cloudflare's edge and Cloudflare hands back a hostname.
|
|
107
|
-
|
|
108
|
-
```ts
|
|
109
|
-
// Inside a Worker with an RPC-transport sandbox:
|
|
110
|
-
const tunnel = await sandbox.tunnels.get(8080);
|
|
111
|
-
console.log(tunnel.url);
|
|
112
|
-
// → https://random-words-here.trycloudflare.com
|
|
113
|
-
|
|
114
|
-
// Repeated calls for the same port return the same record:
|
|
115
|
-
const same = await sandbox.tunnels.get(8080);
|
|
116
|
-
console.log(same.url === tunnel.url); // true
|
|
117
|
-
|
|
118
|
-
// Tear down by port number or by the record:
|
|
119
|
-
await sandbox.tunnels.destroy(8080);
|
|
120
|
-
// or: await sandbox.tunnels.destroy(tunnel);
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
`get()` is idempotent: it consults a per-sandbox cache in Durable
|
|
124
|
-
Object storage, returns the cached record on a hit, and only spawns a
|
|
125
|
-
fresh cloudflared process on a miss. `list()` returns every cached
|
|
126
|
-
tunnel.
|
|
127
|
-
|
|
128
|
-
Notes:
|
|
129
|
-
|
|
130
|
-
- Requires the RPC transport. The route-based transport's `tunnels`
|
|
131
|
-
stub throws "RPC transport required".
|
|
132
|
-
- URLs do **not** survive a container restart. Cloudflare assigns the
|
|
133
|
-
hostname during cloudflared's startup handshake, so every restart
|
|
134
|
-
yields a new URL. The SDK clears its cache on container start, so
|
|
135
|
-
the next `get(port)` after a restart returns a fresh record.
|
|
136
|
-
- The first fetch through a brand-new URL can take a couple of
|
|
137
|
-
seconds while DNS propagates, even after `get()` resolves.
|
|
138
|
-
- `*.trycloudflare.com` buffers `text/event-stream` responses.
|
|
139
|
-
WebSockets work fine.
|
|
140
|
-
- Local builds behind a TLS-intercepting proxy (e.g. Cloudflare WARP)
|
|
141
|
-
need the host CA bundle injected at build time — see
|
|
142
|
-
[DOCKER_README.md](../../DOCKER_README.md).
|
|
143
|
-
|
|
144
|
-
## Documentation
|
|
145
|
-
|
|
146
|
-
**📖 [Full Documentation](https://developers.cloudflare.com/sandbox/)**
|
|
147
|
-
|
|
148
|
-
- [Get Started Guide](https://developers.cloudflare.com/sandbox/get-started/) - Step-by-step tutorial
|
|
149
|
-
- [API Reference](https://developers.cloudflare.com/sandbox/api/) - Complete API docs
|
|
150
|
-
- [Guides](https://developers.cloudflare.com/sandbox/guides/) - Execute commands, manage files, expose services
|
|
151
|
-
- [Examples](https://developers.cloudflare.com/sandbox/tutorials/) - AI agents, data analysis, CI/CD pipelines
|
|
152
|
-
|
|
153
|
-
## Key Features
|
|
154
|
-
|
|
155
|
-
- **Secure Isolation** - Each sandbox runs in its own container
|
|
156
|
-
- **Edge-Native** - Runs on Cloudflare's global network
|
|
157
|
-
- **Code Interpreter** - Execute Python and JavaScript with rich outputs
|
|
158
|
-
- **File System Access** - Read, write, and manage files
|
|
159
|
-
- **Command Execution** - Run any command with streaming support
|
|
160
|
-
- **Preview URLs** - Expose services with public URLs
|
|
161
|
-
- **Quick tunnels** - Zero-config `*.trycloudflare.com` URLs via `sandbox.tunnels.get(port)`
|
|
162
|
-
- **Git Integration** - Clone repositories directly
|
|
163
|
-
|
|
164
|
-
## Contributing
|
|
165
|
-
|
|
166
|
-
We welcome contributions from the community! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines on:
|
|
167
|
-
|
|
168
|
-
- Setting up your development environment
|
|
169
|
-
- Creating pull requests
|
|
170
|
-
- Code style and testing requirements
|
|
171
|
-
|
|
172
|
-
## Development
|
|
173
|
-
|
|
174
|
-
This repository contains the SDK source code. Quick start:
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
# Clone the repo
|
|
178
|
-
git clone https://github.com/cloudflare/sandbox-sdk
|
|
179
|
-
cd sandbox-sdk
|
|
180
|
-
|
|
181
|
-
# Install dependencies
|
|
182
|
-
npm install
|
|
183
|
-
|
|
184
|
-
# Run tests
|
|
185
|
-
npm test
|
|
186
|
-
|
|
187
|
-
# Build the project
|
|
188
|
-
npm run build
|
|
189
|
-
|
|
190
|
-
# Type checking and linting
|
|
191
|
-
npm run check
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
## Examples
|
|
195
|
-
|
|
196
|
-
See the [examples directory](./examples) for complete working examples:
|
|
197
|
-
|
|
198
|
-
- [Minimal](./examples/minimal) - Start here: exec commands, read/write files
|
|
199
|
-
- [Code Interpreter](./examples/code-interpreter) - Give [gpt-oss](https://developers.cloudflare.com/workers-ai/models/gpt-oss-120b/) on Workers AI a Python REPL
|
|
200
|
-
- [Claude Code](./examples/claude-code) - Run [Claude Code](https://claude.ai/code) headless on any repo
|
|
201
|
-
- [OpenAI Agents](./examples/openai-agents) - `Shell` and `Editor` tools for [OpenAI Agents SDK](https://openai.github.io/openai-agents-js/)
|
|
202
|
-
- [OpenCode](./examples/opencode) - [OpenCode](https://github.com/sst/opencode) web UI or [SDK](https://opencode.ai/docs/sdk/) in a sandbox
|
|
203
|
-
- [Git Repo Per Sandbox](./examples/git-repo-per-sandbox) - One Artifacts Git repo per sandbox
|
|
204
|
-
- [TypeScript Validator](./examples/typescript-validator) - Build with npm in sandbox, execute in [isolates](https://developers.cloudflare.com/workers/runtime-apis/bindings/worker-loader/)
|
|
205
|
-
|
|
206
|
-
## Status
|
|
207
|
-
|
|
208
|
-
**Beta** - The SDK is in active development. APIs may change before v1.0.
|
|
209
|
-
|
|
210
|
-
## License
|
|
211
|
-
|
|
212
|
-
[Apache License 2.0](LICENSE)
|
|
213
|
-
|
|
214
|
-
## Links
|
|
215
|
-
|
|
216
|
-
- [Documentation](https://developers.cloudflare.com/sandbox/)
|
|
217
|
-
- [GitHub Issues](https://github.com/cloudflare/sandbox-sdk/issues)
|
|
218
|
-
- [Developer Discord](https://discord.cloudflare.com)
|
|
219
|
-
- [Cloudflare Developers](https://twitter.com/CloudflareDev)
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# `@cloudflare/vite-plugin`
|
|
2
|
-
|
|
3
|
-
The Cloudflare Vite plugin enables a full-featured integration between [Vite](https://vite.dev/) and the [Workers runtime](https://developers.cloudflare.com/workers/runtime-apis/).
|
|
4
|
-
Your Worker code runs inside [workerd](https://github.com/cloudflare/workerd), matching the production behavior as closely as possible and providing confidence as you develop and deploy your applications.
|
|
5
|
-
|
|
6
|
-
```ts
|
|
7
|
-
// vite.config.ts
|
|
8
|
-
|
|
9
|
-
import { defineConfig } from "vite";
|
|
10
|
-
import { cloudflare } from "@cloudflare/vite-plugin";
|
|
11
|
-
|
|
12
|
-
export default defineConfig({
|
|
13
|
-
plugins: [cloudflare()],
|
|
14
|
-
});
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Documentation
|
|
18
|
-
|
|
19
|
-
Full documentation can be found [here](https://developers.cloudflare.com/workers/vite-plugin/).
|
|
20
|
-
|
|
21
|
-
## Features
|
|
22
|
-
|
|
23
|
-
- Uses the Vite [Environment API](https://vite.dev/guide/api-environment) to integrate Vite with the Workers runtime
|
|
24
|
-
- Provides direct access to [Workers runtime APIs](https://developers.cloudflare.com/workers/runtime-apis/) and [bindings](https://developers.cloudflare.com/workers/runtime-apis/bindings/)
|
|
25
|
-
- Builds your front-end assets for deployment to Cloudflare, enabling you to build static sites, SPAs, and full-stack applications
|
|
26
|
-
- Official support for [TanStack Start](https://tanstack.com/start/) and [React Router v7](https://reactrouter.com/) with server-side rendering
|
|
27
|
-
- Leverages Vite's hot module replacement for consistently fast updates
|
|
28
|
-
- Supports `vite preview` for previewing your build output in the Workers runtime prior to deployment
|
|
29
|
-
|
|
30
|
-
## Use cases
|
|
31
|
-
|
|
32
|
-
- [TanStack Start](https://tanstack.com/start/)
|
|
33
|
-
- [React Router v7](https://reactrouter.com/)
|
|
34
|
-
- Support for more full-stack frameworks is coming soon
|
|
35
|
-
- Static sites, such as single-page applications, with or without an integrated backend API
|
|
36
|
-
- Standalone Workers
|
|
37
|
-
- Multi-Worker applications
|