void 0.1.6 → 0.7.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/AGENT_PROMPT.md +15 -0
- package/README.md +62 -123
- package/dist/auth-BdsJ0Aff.d.mts +43 -0
- package/dist/auth-cmd-Dx8oPKZC.mjs +43 -0
- package/dist/auth-migrations-BAtAck2g.mjs +117 -0
- package/dist/better-auth-shared-C9_GHSkR.d.mts +71 -0
- package/dist/better-auth-shared-CdYmQGry.mjs +163 -0
- package/dist/cache-W82I8ihI.mjs +47 -0
- package/dist/cancel-deploy-BOBTqqh0.mjs +59 -0
- package/dist/cf-access-Dee5cXxL.mjs +22 -0
- package/dist/chunk-DJd-R1mw.mjs +34 -0
- package/dist/cli/cli.d.mts +1 -0
- package/dist/cli/cli.mjs +1807 -0
- package/dist/client-snXOjrp1.mjs +565 -0
- package/dist/collect-CjeZgz5D.mjs +55 -0
- package/dist/config-BIa9HwVX.mjs +573 -0
- package/dist/config-BzM9Dy7T.mjs +37 -0
- package/dist/config-CvHtTM0q.mjs +30 -0
- package/dist/create-project-BIA15W7z.mjs +90 -0
- package/dist/db-DsRoMcfN.mjs +895 -0
- package/dist/defer-DcxEsVH1.mjs +49 -0
- package/dist/delete-DAP6yDc7.mjs +64 -0
- package/dist/deploy-BPKblFx6.mjs +2424 -0
- package/dist/discover-B7FkXBLB.mjs +40 -0
- package/dist/dist-DUyXJLkq.mjs +2667 -0
- package/dist/dist-Dayj3gCK.mjs +1287 -0
- package/dist/domain-BGofcQ6I.mjs +79 -0
- package/dist/dotenv-DwO4ti0Z.mjs +173 -0
- package/dist/drizzle-NnudE_UN.mjs +232 -0
- package/dist/env-CyG3tvU0.mjs +301 -0
- package/dist/env-helpers-Dr9Y7RnE.d.mts +52 -0
- package/dist/env-raw-BDL4TvdN.mjs +32 -0
- package/dist/env-types-DknSA4SO.mjs +64 -0
- package/dist/env-validation-DJKjR_8q.mjs +163 -0
- package/dist/fetch-error-BQ8sZ5Nd.mjs +266 -0
- package/dist/fetch-error-CVZ5CGA-.d.mts +20 -0
- package/dist/gen-U0Ktr4Zd.mjs +761 -0
- package/dist/handler-B0ds0OHJ.d.mts +269 -0
- package/dist/head-P-egrtFE.d.mts +45 -0
- package/dist/headers-DCXc7mDs.mjs +279 -0
- package/dist/index.d.mts +32 -0
- package/dist/index.mjs +4695 -0
- package/dist/init-C7wS5iGP.mjs +2625 -0
- package/dist/link-p2R6NbgN.mjs +49 -0
- package/dist/list-Bfel-QLc.mjs +113 -0
- package/dist/log-DXdqnmhF.mjs +26 -0
- package/dist/login-CkcXUiIu.mjs +72 -0
- package/dist/logs-DmkrRvx6.mjs +98 -0
- package/dist/magic-string.es-D6g9UnIy.mjs +1011 -0
- package/dist/mcp-CaQzfeUi.mjs +373 -0
- package/dist/node-DDfXj10V.mjs +54 -0
- package/dist/output-BwlcIYSR.mjs +139 -0
- package/dist/pages/client.d.mts +198 -0
- package/dist/pages/client.mjs +980 -0
- package/dist/pages/head-client.d.mts +15 -0
- package/dist/pages/head-client.mjs +90 -0
- package/dist/pages/head.d.mts +2 -0
- package/dist/pages/head.mjs +112 -0
- package/dist/pages/index.d.mts +38 -0
- package/dist/pages/index.mjs +76 -0
- package/dist/pages/islands-plugin.d.mts +50 -0
- package/dist/pages/islands-plugin.mjs +195 -0
- package/dist/pages/prefetch.d.mts +31 -0
- package/dist/pages/prefetch.mjs +90 -0
- package/dist/pages/protocol.d.mts +3 -0
- package/dist/pages/protocol.mjs +193 -0
- package/dist/pages/serialize.d.mts +10 -0
- package/dist/pages/serialize.mjs +14 -0
- package/dist/pathe.M-eThtNZ-D-kmWkCS.mjs +150 -0
- package/dist/plugin-inference-oZ6Ybu2_.mjs +2447 -0
- package/dist/prepare-BAtWufvm.mjs +99 -0
- package/dist/preset-D4I73kT4.mjs +221 -0
- package/dist/project-TqORyHn8.mjs +72 -0
- package/dist/project-cmd-B7lQp3F3.mjs +67 -0
- package/dist/project-slug-CKam8lF9.mjs +11 -0
- package/dist/project-tsconfig-DfkESbDL.mjs +63 -0
- package/dist/protocol-BWzXs2A2.d.mts +34 -0
- package/dist/providers-B3aMxWzP.mjs +67 -0
- package/dist/resolve-project-Br5BR03U.mjs +29 -0
- package/dist/rollback-gyC59l7U.mjs +92 -0
- package/dist/route-types-DReF1gUY.mjs +255 -0
- package/dist/routes-stub.d.mts +55 -0
- package/dist/routes-stub.mjs +1 -0
- package/dist/runner-6Ep3fNQu.mjs +123 -0
- package/dist/runner-pg-D0wWHYnr.mjs +57 -0
- package/dist/runtime/ai.d.mts +127 -0
- package/dist/runtime/ai.mjs +348 -0
- package/dist/runtime/auth-client-react.d.mts +8 -0
- package/dist/runtime/auth-client-react.mjs +6 -0
- package/dist/runtime/auth-client-solid.d.mts +8 -0
- package/dist/runtime/auth-client-solid.mjs +6 -0
- package/dist/runtime/auth-client-svelte.d.mts +8 -0
- package/dist/runtime/auth-client-svelte.mjs +6 -0
- package/dist/runtime/auth-client-vue.d.mts +8 -0
- package/dist/runtime/auth-client-vue.mjs +6 -0
- package/dist/runtime/auth-client.d.mts +8 -0
- package/dist/runtime/auth-client.mjs +6 -0
- package/dist/runtime/auth.d.mts +2 -0
- package/dist/runtime/auth.mjs +22 -0
- package/dist/runtime/better-auth-pg.d.mts +11 -0
- package/dist/runtime/better-auth-pg.mjs +51 -0
- package/dist/runtime/better-auth.d.mts +11 -0
- package/dist/runtime/better-auth.mjs +33 -0
- package/dist/runtime/client.d.mts +6 -0
- package/dist/runtime/client.mjs +5 -0
- package/dist/runtime/db-pg.d.mts +2 -0
- package/dist/runtime/db-pg.mjs +1 -0
- package/dist/runtime/db.d.mts +17 -0
- package/dist/runtime/db.mjs +30 -0
- package/dist/runtime/drizzle-arktype.d.mts +1 -0
- package/dist/runtime/drizzle-arktype.mjs +2 -0
- package/dist/runtime/drizzle-valibot.d.mts +1 -0
- package/dist/runtime/drizzle-valibot.mjs +2 -0
- package/dist/runtime/drizzle-zod.d.mts +1 -0
- package/dist/runtime/drizzle-zod.mjs +2 -0
- package/dist/runtime/env-helpers.d.mts +2 -0
- package/dist/runtime/env-helpers.mjs +173 -0
- package/dist/runtime/env-public-client.d.mts +22 -0
- package/dist/runtime/env-public-client.mjs +54 -0
- package/dist/runtime/env-public.d.mts +143 -0
- package/dist/runtime/env-public.mjs +366 -0
- package/dist/runtime/env.d.mts +13 -0
- package/dist/runtime/env.mjs +51 -0
- package/dist/runtime/fetch-stream.d.mts +51 -0
- package/dist/runtime/fetch-stream.mjs +81 -0
- package/dist/runtime/fetch.d.mts +59 -0
- package/dist/runtime/fetch.mjs +18 -0
- package/dist/runtime/handler.d.mts +3 -0
- package/dist/runtime/handler.mjs +85 -0
- package/dist/runtime/isr.d.mts +26 -0
- package/dist/runtime/isr.mjs +43 -0
- package/dist/runtime/kv.d.mts +48 -0
- package/dist/runtime/kv.mjs +106 -0
- package/dist/runtime/log.d.mts +24 -0
- package/dist/runtime/log.mjs +31 -0
- package/dist/runtime/migration-handler-pg.d.mts +6 -0
- package/dist/runtime/migration-handler-pg.mjs +85 -0
- package/dist/runtime/migration-handler.d.mts +19 -0
- package/dist/runtime/migration-handler.mjs +92 -0
- package/dist/runtime/queues.d.mts +7 -0
- package/dist/runtime/queues.mjs +8 -0
- package/dist/runtime/remote/binding-handler.d.mts +15 -0
- package/dist/runtime/remote/binding-handler.mjs +208 -0
- package/dist/runtime/remote/index.d.mts +8 -0
- package/dist/runtime/remote/index.mjs +461 -0
- package/dist/runtime/response.d.mts +14 -0
- package/dist/runtime/response.mjs +30 -0
- package/dist/runtime/sandbox.d.mts +17 -0
- package/dist/runtime/sandbox.mjs +19 -0
- package/dist/runtime/schema-d1.d.mts +1 -0
- package/dist/runtime/schema-d1.mjs +2 -0
- package/dist/runtime/schema-pg.d.mts +1 -0
- package/dist/runtime/schema-pg.mjs +2 -0
- package/dist/runtime/seed.d.mts +30 -0
- package/dist/runtime/seed.mjs +6 -0
- package/dist/runtime/storage.d.mts +7 -0
- package/dist/runtime/storage.mjs +14 -0
- package/dist/runtime/validator.d.mts +2 -0
- package/dist/runtime/validator.mjs +72 -0
- package/dist/runtime/ws-server.d.mts +26 -0
- package/dist/runtime/ws-server.mjs +296 -0
- package/dist/runtime/ws.d.mts +123 -0
- package/dist/runtime/ws.mjs +103 -0
- package/dist/scan-Ba4hFwlH.mjs +324 -0
- package/dist/scan-C6HMEIdW.mjs +318 -0
- package/dist/secret-CeRSukgM.mjs +109 -0
- package/dist/skills-ipldjlKE.mjs +62 -0
- package/dist/standard-schema-9CRjx-uR.d.mts +42 -0
- package/dist/subcommand-prompt-BKjuNAPb.mjs +349 -0
- package/dist/sveltekit.d.mts +20 -0
- package/dist/sveltekit.mjs +61 -0
- package/dist/types-mHOEwpW4.d.mts +57 -0
- package/dist/validate-CaMavMxu.mjs +146 -0
- package/dist/yarn-pnp-BFqMV_bl.mjs +196 -0
- package/getting-started-prompt.txt +26 -0
- package/package.json +322 -30
- package/schema.json +364 -0
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +175 -0
- package/skills/void/SKILL.md +75 -0
- package/skills/void/command/void.md +7 -0
- package/skills/void/docs/guide/ai.md +235 -0
- package/skills/void/docs/guide/app-types.md +103 -0
- package/skills/void/docs/guide/auth.md +257 -0
- package/skills/void/docs/guide/database/d1.md +106 -0
- package/skills/void/docs/guide/database/postgresql.md +106 -0
- package/skills/void/docs/guide/database.md +418 -0
- package/skills/void/docs/guide/deployment.md +98 -0
- package/skills/void/docs/guide/edge/headers.md +79 -0
- package/skills/void/docs/guide/edge/prerendering.md +83 -0
- package/skills/void/docs/guide/edge/redirects.md +116 -0
- package/skills/void/docs/guide/edge/revalidation.md +131 -0
- package/skills/void/docs/guide/edge/rewrites.md +354 -0
- package/skills/void/docs/guide/edge/static-assets.md +72 -0
- package/skills/void/docs/guide/env-vars.md +298 -0
- package/skills/void/docs/guide/index.md +80 -0
- package/skills/void/docs/guide/jobs.md +91 -0
- package/skills/void/docs/guide/kv.md +107 -0
- package/skills/void/docs/guide/pages-routing/actions-and-forms.md +419 -0
- package/skills/void/docs/guide/pages-routing/head.md +130 -0
- package/skills/void/docs/guide/pages-routing/islands.md +405 -0
- package/skills/void/docs/guide/pages-routing/layouts.md +362 -0
- package/skills/void/docs/guide/pages-routing/loaders.md +267 -0
- package/skills/void/docs/guide/pages-routing/markdown.md +625 -0
- package/skills/void/docs/guide/pages-routing/overview.md +236 -0
- package/skills/void/docs/guide/pages-routing/view-transitions.md +140 -0
- package/skills/void/docs/guide/queues.md +140 -0
- package/skills/void/docs/guide/quickstart.md +233 -0
- package/skills/void/docs/guide/remote-dev.md +67 -0
- package/skills/void/docs/guide/sandboxes.md +82 -0
- package/skills/void/docs/guide/server-routing.md +246 -0
- package/skills/void/docs/guide/ssg.md +74 -0
- package/skills/void/docs/guide/ssr.md +105 -0
- package/skills/void/docs/guide/storage.md +67 -0
- package/skills/void/docs/guide/type-safety.md +179 -0
- package/skills/void/docs/guide/typed-fetch.md +113 -0
- package/skills/void/docs/guide/websockets.md +190 -0
- package/skills/void/docs/index.md +48 -0
- package/skills/void/docs/integrations/agents.md +84 -0
- package/skills/void/docs/integrations/cloudflare.md +284 -0
- package/skills/void/docs/integrations/frameworks/analog.md +182 -0
- package/skills/void/docs/integrations/frameworks/astro.md +197 -0
- package/skills/void/docs/integrations/frameworks/nuxt.md +164 -0
- package/skills/void/docs/integrations/frameworks/overview.md +136 -0
- package/skills/void/docs/integrations/frameworks/react-router.md +137 -0
- package/skills/void/docs/integrations/frameworks/sveltekit.md +191 -0
- package/skills/void/docs/integrations/frameworks/tanstack-start.md +140 -0
- package/skills/void/docs/integrations/hono.md +97 -0
- package/skills/void/docs/integrations/nodejs-bun-deno.md +210 -0
- package/skills/void/docs/node_modules/@iconify/vue/README.md +408 -0
- package/skills/void/docs/node_modules/@iconify/vue/offline/readme.md +5 -0
- package/skills/void/docs/node_modules/@voidzero-dev/vitepress-theme/README.md +103 -0
- package/skills/void/docs/node_modules/oxc-minify/README.md +78 -0
- package/skills/void/docs/node_modules/reka-ui/README.md +80 -0
- package/skills/void/docs/node_modules/vitepress/README.md +28 -0
- package/skills/void/docs/node_modules/vitepress/template/api-examples.md +49 -0
- package/skills/void/docs/node_modules/vitepress/template/index.md +28 -0
- package/skills/void/docs/node_modules/vitepress/template/markdown-examples.md +85 -0
- package/skills/void/docs/node_modules/vitepress-plugin-group-icons/README.md +101 -0
- package/skills/void/docs/node_modules/void/AGENTS.md +204 -0
- package/skills/void/docs/node_modules/void/AGENT_PROMPT.md +15 -0
- package/skills/void/docs/node_modules/void/README.md +89 -0
- package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/CHANGELOG.md +591 -0
- package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/README.md +375 -0
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/sandbox/README.md +174 -0
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/vite-plugin/README.md +37 -0
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/workers-types/README.md +135 -0
- package/skills/void/docs/node_modules/void/node_modules/@electric-sql/pglite/README.md +189 -0
- package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/CHANGELOG.md +143 -0
- package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/README.md +1272 -0
- package/skills/void/docs/node_modules/void/node_modules/@napi-rs/keyring/README.md +19 -0
- package/skills/void/docs/node_modules/void/node_modules/@types/better-sqlite3/README.md +15 -0
- package/skills/void/docs/node_modules/void/node_modules/@types/node/README.md +15 -0
- package/skills/void/docs/node_modules/void/node_modules/@types/pg/README.md +15 -0
- package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/README.md +22 -0
- package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/vendor/vscode-jsonrpc/README.md +69 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +152 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/engine-javascript/README.md +9 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/transformers/README.md +9 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@types/node/README.md +15 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/CHANGELOG.md +24 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/README.md +565 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-exit/README.md +124 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-anchor/README.md +600 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-attrs/README.md +386 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-container/README.md +95 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-emoji/README.md +101 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/pathe/README.md +73 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/shiki/README.md +15 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tinyglobby/README.md +25 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tsdown/README.md +55 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite/LICENSE.md +2230 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite/README.md +20 -0
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vue/README.md +58 -0
- package/skills/void/docs/node_modules/void/node_modules/arktype/README.md +165 -0
- package/skills/void/docs/node_modules/void/node_modules/better-auth/LICENSE.md +20 -0
- package/skills/void/docs/node_modules/void/node_modules/better-auth/README.md +32 -0
- package/skills/void/docs/node_modules/void/node_modules/better-sqlite3/README.md +99 -0
- package/skills/void/docs/node_modules/void/node_modules/blake3-jit/README.md +108 -0
- package/skills/void/docs/node_modules/void/node_modules/drizzle-arktype/README.md +51 -0
- package/skills/void/docs/node_modules/void/node_modules/drizzle-kit/README.md +79 -0
- package/skills/void/docs/node_modules/void/node_modules/drizzle-orm/README.md +44 -0
- package/skills/void/docs/node_modules/void/node_modules/drizzle-valibot/README.md +51 -0
- package/skills/void/docs/node_modules/void/node_modules/drizzle-zod/README.md +65 -0
- package/skills/void/docs/node_modules/void/node_modules/es-module-lexer/README.md +390 -0
- package/skills/void/docs/node_modules/void/node_modules/estree-walker/README.md +48 -0
- package/skills/void/docs/node_modules/void/node_modules/hono/README.md +85 -0
- package/skills/void/docs/node_modules/void/node_modules/ignore/README.md +452 -0
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/CHANGELOG.md +76 -0
- package/{LICENSE → skills/void/docs/node_modules/void/node_modules/jsonc-parser/LICENSE.md} +21 -21
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/README.md +364 -0
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/SECURITY.md +41 -0
- package/skills/void/docs/node_modules/void/node_modules/magic-string/README.md +325 -0
- package/skills/void/docs/node_modules/void/node_modules/ofetch/README.md +398 -0
- package/skills/void/docs/node_modules/void/node_modules/pathe/README.md +73 -0
- package/skills/void/docs/node_modules/void/node_modules/pg/README.md +95 -0
- package/skills/void/docs/node_modules/void/node_modules/pglite-server/LICENSE.md +21 -0
- package/skills/void/docs/node_modules/void/node_modules/pglite-server/README.md +135 -0
- package/skills/void/docs/node_modules/void/node_modules/picocolors/README.md +21 -0
- package/skills/void/docs/node_modules/void/node_modules/tinyglobby/README.md +25 -0
- package/skills/void/docs/node_modules/void/node_modules/tsdown/README.md +55 -0
- package/skills/void/docs/node_modules/void/node_modules/valibot/LICENSE.md +9 -0
- package/skills/void/docs/node_modules/void/node_modules/valibot/README.md +94 -0
- package/skills/void/docs/node_modules/void/node_modules/vite/LICENSE.md +2230 -0
- package/skills/void/docs/node_modules/void/node_modules/vite/README.md +20 -0
- package/skills/void/docs/node_modules/void/node_modules/wrangler/README.md +63 -0
- package/skills/void/docs/node_modules/void/node_modules/zod/README.md +191 -0
- package/skills/void/docs/node_modules/void/skills/migrate-vite-cloudflare-to-void/SKILL.md +175 -0
- package/skills/void/docs/node_modules/void/skills/void/SKILL.md +75 -0
- package/skills/void/docs/node_modules/void/skills/void/command/void.md +7 -0
- package/skills/void/docs/reference/api.md +917 -0
- package/skills/void/docs/reference/cli.md +561 -0
- package/skills/void/docs/reference/config.md +408 -0
- package/skills/void/docs/reference/resource-inference.md +149 -0
- package/skills/void/docs/reference/structure.md +176 -0
- package/.npmignore +0 -29
- package/.travis.yml +0 -9
- package/favicon.ico +0 -0
- package/index.js +0 -14
- package/lib/Job.js +0 -150
- package/lib/Void.js +0 -99
- package/lib/scan.js +0 -19
- package/test/credentials.js +0 -20
- package/test/job.js +0 -64
- package/test/static/dir1/test6.html +0 -0
- package/test/static/dir2/test7.html +0 -0
- package/test/static/dir2/test8.html +0 -0
- package/test/static/dir2/test9.html +0 -0
- package/test/static/test1.html +0 -0
- package/test/static/test2.html +0 -0
- package/test/static/test3.html +0 -0
- package/test/void.js +0 -31
- /package/{test/static/dir1/test4.html → skills/void/docs/integrations/auth-providers.md} +0 -0
- /package/{test/static/dir1/test5.html → skills/void/docs/integrations/payment-processors.md} +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { n as cliTitle, s as import_picocolors } from "./output-BwlcIYSR.mjs";
|
|
2
|
+
import { _ as me, c as R, g as ge, y as ye } from "./dist-Dayj3gCK.mjs";
|
|
3
|
+
import { a as writeProjectConfig, r as readProjectConfig } from "./project-TqORyHn8.mjs";
|
|
4
|
+
import { n as PlatformClient, o as getSiteDomain, s as getToken } from "./client-snXOjrp1.mjs";
|
|
5
|
+
import { n as promptProjectSelection, t as promptAndCreateProject } from "./create-project-BIA15W7z.mjs";
|
|
6
|
+
//#region src/cli/link.ts
|
|
7
|
+
async function runLink(root, slug) {
|
|
8
|
+
console.log();
|
|
9
|
+
ge(cliTitle("project link"));
|
|
10
|
+
const existing = readProjectConfig(root);
|
|
11
|
+
if (existing) {
|
|
12
|
+
R.warn(`Already linked to ${import_picocolors.default.blue(existing.slug)}.${getSiteDomain(root)}`);
|
|
13
|
+
ye("To re-link, delete .void/project.json and run again.");
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const token = getToken(root);
|
|
17
|
+
if (!token) {
|
|
18
|
+
me("No auth token found. Run `void auth login` first.");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const client = new PlatformClient(token, { root });
|
|
22
|
+
const projects = await client.listProjects();
|
|
23
|
+
if (slug) {
|
|
24
|
+
const project = projects.find((p) => p.slug === slug);
|
|
25
|
+
if (!project) {
|
|
26
|
+
me(`project: No project found with slug '${slug}'.`);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
writeProjectConfig(root, {
|
|
30
|
+
projectId: project.id,
|
|
31
|
+
slug: project.slug
|
|
32
|
+
});
|
|
33
|
+
ye(`Linked to ${import_picocolors.default.blue(project.slug)}.${getSiteDomain(root)}`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const result = await promptProjectSelection(projects, "Select a project:", root);
|
|
37
|
+
if (result.action === "create") {
|
|
38
|
+
const config = await promptAndCreateProject(root, client);
|
|
39
|
+
ye(`Created and linked to ${import_picocolors.default.blue(config.slug)}.${getSiteDomain(root)}`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
writeProjectConfig(root, {
|
|
43
|
+
projectId: result.project.id,
|
|
44
|
+
slug: result.project.slug
|
|
45
|
+
});
|
|
46
|
+
ye(`Linked to ${import_picocolors.default.blue(result.project.slug)}.${getSiteDomain(root)}`);
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
export { runLink };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { a as ensureUtc, i as dim, l as tablePrefix, n as cliTitle, s as import_picocolors } from "./output-BwlcIYSR.mjs";
|
|
2
|
+
import { c as R, g as ge, y as ye } from "./dist-Dayj3gCK.mjs";
|
|
3
|
+
import { r as readProjectConfig } from "./project-TqORyHn8.mjs";
|
|
4
|
+
import { n as PlatformClient, s as getToken } from "./client-snXOjrp1.mjs";
|
|
5
|
+
import { r as resolveProjectBySlug } from "./resolve-project-Br5BR03U.mjs";
|
|
6
|
+
//#region src/cli/list.ts
|
|
7
|
+
async function runListCommand(root, slug) {
|
|
8
|
+
console.log();
|
|
9
|
+
ge(cliTitle("project status"));
|
|
10
|
+
const token = getToken(root);
|
|
11
|
+
if (!token) {
|
|
12
|
+
R.error("Not logged in. Run `void auth login` first.");
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
const client = new PlatformClient(token, { root });
|
|
16
|
+
let projectId;
|
|
17
|
+
let projectSlug;
|
|
18
|
+
if (slug) {
|
|
19
|
+
const config = resolveProjectBySlug(await client.listProjects(), slug);
|
|
20
|
+
if (!config) {
|
|
21
|
+
R.error(`project: No project found with slug '${slug}'.`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
projectId = config.projectId;
|
|
25
|
+
projectSlug = slug;
|
|
26
|
+
} else {
|
|
27
|
+
const linked = readProjectConfig(root);
|
|
28
|
+
if (!linked) {
|
|
29
|
+
R.error("No linked project found. Pass a project name: void project status <name>");
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
projectId = linked.projectId;
|
|
33
|
+
projectSlug = linked.slug;
|
|
34
|
+
}
|
|
35
|
+
await showDeployments(client, projectId, projectSlug);
|
|
36
|
+
}
|
|
37
|
+
async function showDeployments(client, projectId, slug) {
|
|
38
|
+
const { deployments, activeDeploymentId } = await client.listDeployments(projectId);
|
|
39
|
+
if (deployments.length === 0) {
|
|
40
|
+
ye(`No deployments for ${slug}.`);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const latest = deployments[0];
|
|
44
|
+
if (latest.status === "failed" && latest.error_message) R.error(`project: Latest deploy failed: '${latest.error_message}'.`);
|
|
45
|
+
const rows = deployments.map((d) => formatDeploymentRow(d, activeDeploymentId));
|
|
46
|
+
const idWidth = Math.max(2, ...rows.map((r) => r.id.length));
|
|
47
|
+
const typeWidth = Math.max(4, ...rows.map((r) => r.appType.length));
|
|
48
|
+
const statusWidth = Math.max(6, ...rows.map((r) => r.statusRaw.length));
|
|
49
|
+
const sourceWidth = Math.max(6, ...rows.map((r) => r.source.length));
|
|
50
|
+
const commitWidth = Math.max(6, ...rows.map((r) => r.commit.length));
|
|
51
|
+
const isrWidth = Math.max(3, ...rows.map((r) => r.isr.length));
|
|
52
|
+
const prefix = tablePrefix();
|
|
53
|
+
const header = `${prefix}${dim(`${"id".padEnd(idWidth)} ${"type".padEnd(typeWidth)} ${"status".padEnd(statusWidth)} ${"source".padEnd(sourceWidth)} ${"commit".padEnd(commitWidth)} ${"isr".padEnd(isrWidth)} deployed`)}`;
|
|
54
|
+
const lines = rows.map((row) => `${prefix}${row.id.padEnd(idWidth)} ${row.appType.padEnd(typeWidth)} ${row.statusColored}${"".padEnd(statusWidth - row.statusRaw.length)} ${row.source.padEnd(sourceWidth)} ${row.commit.padEnd(commitWidth)} ${row.isr.padEnd(isrWidth)} ${row.deployed}`);
|
|
55
|
+
console.log(prefix);
|
|
56
|
+
console.log(header);
|
|
57
|
+
for (const line of lines) console.log(line);
|
|
58
|
+
ye(`${slug} — ${deployments.length} deployment(s)`);
|
|
59
|
+
}
|
|
60
|
+
function computeDisplayStatus(d, activeDeploymentId) {
|
|
61
|
+
if (d.status === "failed") return "failed";
|
|
62
|
+
if (d.status !== "live") return d.status;
|
|
63
|
+
if (d.id === activeDeploymentId) return "live";
|
|
64
|
+
if (d.retained) return "retained";
|
|
65
|
+
return "evicted";
|
|
66
|
+
}
|
|
67
|
+
function colorStatus(status) {
|
|
68
|
+
switch (status) {
|
|
69
|
+
case "live": return import_picocolors.default.bold(import_picocolors.default.green(status));
|
|
70
|
+
case "retained": return dim(import_picocolors.default.green(status));
|
|
71
|
+
case "evicted": return dim(status);
|
|
72
|
+
case "failed":
|
|
73
|
+
case "canceled": return import_picocolors.default.red(status);
|
|
74
|
+
case "canceling": return import_picocolors.default.yellow(status);
|
|
75
|
+
default: return status;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function formatDeploymentRow(d, activeDeploymentId) {
|
|
79
|
+
let manifest = null;
|
|
80
|
+
if (d.manifest) try {
|
|
81
|
+
manifest = JSON.parse(d.manifest);
|
|
82
|
+
} catch {}
|
|
83
|
+
const appType = manifest?.type ?? (manifest?.framework ? "framework" : "void");
|
|
84
|
+
const isr = manifest?.revalidate && manifest.revalidate > 0 ? `${manifest.revalidate}s` : "-";
|
|
85
|
+
const source = d.source ?? "-";
|
|
86
|
+
const commit = d.commit ? d.commit.slice(0, 7) : "-";
|
|
87
|
+
const statusRaw = computeDisplayStatus(d, activeDeploymentId);
|
|
88
|
+
const statusColored = colorStatus(statusRaw);
|
|
89
|
+
const deployed = d.deployed_at ? formatRelativeTime(d.deployed_at) : "-";
|
|
90
|
+
return {
|
|
91
|
+
id: d.id,
|
|
92
|
+
appType,
|
|
93
|
+
statusRaw,
|
|
94
|
+
statusColored,
|
|
95
|
+
source,
|
|
96
|
+
commit,
|
|
97
|
+
isr,
|
|
98
|
+
deployed
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function formatRelativeTime(iso) {
|
|
102
|
+
const diffMs = Date.now() - new Date(ensureUtc(iso)).getTime();
|
|
103
|
+
if (diffMs < 0) return "just now";
|
|
104
|
+
const seconds = Math.floor(diffMs / 1e3);
|
|
105
|
+
if (seconds < 60) return "just now";
|
|
106
|
+
const minutes = Math.floor(seconds / 60);
|
|
107
|
+
if (minutes < 60) return `${minutes}m ago`;
|
|
108
|
+
const hours = Math.floor(minutes / 60);
|
|
109
|
+
if (hours < 24) return `${hours}h ago`;
|
|
110
|
+
return `${Math.floor(hours / 24)}d ago`;
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
export { runListCommand };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
//#region src/log.ts
|
|
2
|
+
const tag = "\x1B[1m\x1B[35m[void]\x1B[39m\x1B[22m";
|
|
3
|
+
const timeFormat = new Intl.DateTimeFormat(void 0, {
|
|
4
|
+
hour: "numeric",
|
|
5
|
+
minute: "numeric",
|
|
6
|
+
second: "numeric"
|
|
7
|
+
});
|
|
8
|
+
let showTimestamp = true;
|
|
9
|
+
function setShowTimestamp(value) {
|
|
10
|
+
showTimestamp = value;
|
|
11
|
+
}
|
|
12
|
+
function prefix() {
|
|
13
|
+
if (!showTimestamp) return tag;
|
|
14
|
+
return `\x1b[2m${timeFormat.format()}\x1b[22m ${tag}`;
|
|
15
|
+
}
|
|
16
|
+
function voidLog(msg) {
|
|
17
|
+
console.log(`${prefix()} ${msg}`);
|
|
18
|
+
}
|
|
19
|
+
function voidWarn(msg) {
|
|
20
|
+
console.log(`${prefix()} \x1b[33m${msg}\x1b[39m`);
|
|
21
|
+
}
|
|
22
|
+
function voidError(msg) {
|
|
23
|
+
console.log(`${prefix()} \x1b[31m${msg}\x1b[39m`);
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { voidWarn as i, voidError as n, voidLog as r, setShowTimestamp as t };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { n as cliTitle, r as createSpinner, s as import_picocolors } from "./output-BwlcIYSR.mjs";
|
|
2
|
+
import { _ as me, c as R, g as ge, i as Ee, x as q, y as ye } from "./dist-Dayj3gCK.mjs";
|
|
3
|
+
import { c as getTokenSource, d as runLogin, f as saveToken, i as isExpiredTokenError, l as isStagingMode, n as PlatformClient, s as getToken, u as removeToken } from "./client-snXOjrp1.mjs";
|
|
4
|
+
//#region src/cli/login.ts
|
|
5
|
+
async function promptForLoginToken(root = process.cwd()) {
|
|
6
|
+
const provider = await Ee({
|
|
7
|
+
message: "Choose a login provider:",
|
|
8
|
+
options: [{
|
|
9
|
+
value: "github",
|
|
10
|
+
label: "GitHub"
|
|
11
|
+
}, {
|
|
12
|
+
value: "google",
|
|
13
|
+
label: "Google"
|
|
14
|
+
}]
|
|
15
|
+
});
|
|
16
|
+
if (q(provider)) {
|
|
17
|
+
me("Login cancelled.");
|
|
18
|
+
process.exit(0);
|
|
19
|
+
}
|
|
20
|
+
const providerName = provider === "github" ? "GitHub" : "Google";
|
|
21
|
+
const s = createSpinner();
|
|
22
|
+
s.start(`Opening browser for ${providerName} login...`);
|
|
23
|
+
try {
|
|
24
|
+
const token = await runLogin(root, provider, (url) => {
|
|
25
|
+
s.message(`Waiting for ${providerName} login. If your browser didn't open, visit:\n${import_picocolors.default.cyan(url)}`);
|
|
26
|
+
});
|
|
27
|
+
saveToken(token, root);
|
|
28
|
+
s.stop("Logged in!");
|
|
29
|
+
return token;
|
|
30
|
+
} catch (err) {
|
|
31
|
+
s.stop("Login failed");
|
|
32
|
+
throw err;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function runLoginCommand(root = process.cwd()) {
|
|
36
|
+
console.log();
|
|
37
|
+
ge(cliTitle("login"));
|
|
38
|
+
const existing = getToken(root);
|
|
39
|
+
let expiredEnvToken = false;
|
|
40
|
+
if (existing) {
|
|
41
|
+
const tokenSource = getTokenSource();
|
|
42
|
+
const client = new PlatformClient(existing, { root });
|
|
43
|
+
try {
|
|
44
|
+
await client.whoami();
|
|
45
|
+
if (tokenSource === "ci") {
|
|
46
|
+
R.warn("Already authenticated via `VOID_TOKEN`.");
|
|
47
|
+
ye("Unset `VOID_TOKEN` to log in with a different account.");
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
R.warn("Already logged in.");
|
|
51
|
+
ye("To re-login, run `void auth logout` first.");
|
|
52
|
+
return;
|
|
53
|
+
} catch (error) {
|
|
54
|
+
if (!isExpiredTokenError(error)) throw error;
|
|
55
|
+
if (tokenSource === "ci") {
|
|
56
|
+
expiredEnvToken = true;
|
|
57
|
+
R.warn("`VOID_TOKEN` is invalid or expired. Continuing with a new login.");
|
|
58
|
+
} else {
|
|
59
|
+
removeToken(root);
|
|
60
|
+
R.warn("Stored auth token expired. Starting a new login.");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
await promptForLoginToken(root);
|
|
65
|
+
if (expiredEnvToken) {
|
|
66
|
+
ye(`${isStagingMode(root) ? "Staging token saved." : "Token saved."} Unset \`VOID_TOKEN\` to use it.`);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
ye(isStagingMode(root) ? "Staging token saved." : "Token saved.");
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
export { runLoginCommand as n, promptForLoginToken as t };
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { i as dim, n as cliTitle, s as import_picocolors } from "./output-BwlcIYSR.mjs";
|
|
2
|
+
import { c as R, g as ge, y as ye } from "./dist-Dayj3gCK.mjs";
|
|
3
|
+
import { r as readProjectConfig } from "./project-TqORyHn8.mjs";
|
|
4
|
+
import { n as PlatformClient, s as getToken } from "./client-snXOjrp1.mjs";
|
|
5
|
+
//#region src/cli/logs.ts
|
|
6
|
+
async function runLogsCommand(root, filter, range, deployment, level) {
|
|
7
|
+
console.log();
|
|
8
|
+
ge(cliTitle("project logs"));
|
|
9
|
+
const token = getToken(root);
|
|
10
|
+
if (!token) {
|
|
11
|
+
R.error("Not logged in. Run `void auth login` first.");
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
if (!/^\d+(m|h|d)$/.test(range)) {
|
|
15
|
+
R.error(`logs: Invalid range '${range}'. Use a format like 15m, 2h, or 3d.`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
const linked = readProjectConfig(root);
|
|
19
|
+
if (!linked) {
|
|
20
|
+
R.error("No linked project. Run `void project link` first.");
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
const client = new PlatformClient(token, { root });
|
|
24
|
+
let entries;
|
|
25
|
+
try {
|
|
26
|
+
entries = await client.getLogs(linked.projectId, range, 200, deployment || void 0, level || void 0);
|
|
27
|
+
} catch (err) {
|
|
28
|
+
R.error(err instanceof Error ? err.message : String(err));
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
entries = filterLogEntries(entries, level, filter);
|
|
32
|
+
if (entries.length === 0) {
|
|
33
|
+
ye(`No logs found in the last ${range}.`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
for (const entry of entries) printEntry(entry);
|
|
37
|
+
ye(dim(`${entries.length} log entries`));
|
|
38
|
+
}
|
|
39
|
+
function printEntry(entry) {
|
|
40
|
+
const time = formatTime(entry.timestamp);
|
|
41
|
+
const method = entry.method || "-";
|
|
42
|
+
const url = entry.url || "-";
|
|
43
|
+
const status = entry.status || "-";
|
|
44
|
+
const statusNum = parseInt(status, 10);
|
|
45
|
+
const coloredStatus = entry.outcome === "exception" || statusNum >= 500 ? import_picocolors.default.red(status) : statusNum >= 400 ? import_picocolors.default.yellow(status) : status;
|
|
46
|
+
console.log(`${dim(time)} ${method} ${url} ${coloredStatus}`);
|
|
47
|
+
for (const l of entry.logs) {
|
|
48
|
+
const text = l.message.map(String).join(" ");
|
|
49
|
+
const level = l.level ?? "log";
|
|
50
|
+
if (level === "error") console.log(` ${import_picocolors.default.red(`[${level}]`)} ${text}`);
|
|
51
|
+
else if (level === "warn") console.log(` ${import_picocolors.default.yellow(`[${level}]`)} ${text}`);
|
|
52
|
+
else console.log(` ${dim(`[${level}]`)} ${text}`);
|
|
53
|
+
}
|
|
54
|
+
for (const ex of entry.exceptions) console.log(` ${import_picocolors.default.red("[exception]")} ${ex.name}: ${ex.message}`);
|
|
55
|
+
}
|
|
56
|
+
function formatTime(ts) {
|
|
57
|
+
return new Date(ts).toLocaleTimeString("en-GB", { hour12: false });
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Filter log entries by `--level` then by `--filter` substring. Exported for tests.
|
|
61
|
+
*
|
|
62
|
+
* - `level === 'error'`: keep entries with any error-level log line, OR a
|
|
63
|
+
* non-empty `exceptions[]`, OR `outcome !== 'ok'` (exceptions and non-ok
|
|
64
|
+
* outcomes are inherently errors).
|
|
65
|
+
* - `level === 'warn' | 'info' | 'log' | 'debug'`: keep entries with at least
|
|
66
|
+
* one matching log line. Mirrors `journalctl -p` — does NOT include error.
|
|
67
|
+
* - `level` falsy or `'all'`: no level filter.
|
|
68
|
+
*
|
|
69
|
+
* `filter` is a plain substring search over log message text and exception
|
|
70
|
+
* name/message; case-insensitive. Applied after the level filter.
|
|
71
|
+
*/
|
|
72
|
+
function filterLogEntries(entries, level, filter) {
|
|
73
|
+
let result = entries;
|
|
74
|
+
if (level && level !== "all") result = result.filter((entry) => {
|
|
75
|
+
if (level === "error") {
|
|
76
|
+
if (entry.outcome !== "ok") return true;
|
|
77
|
+
if (entry.exceptions.length > 0) return true;
|
|
78
|
+
for (const l of entry.logs) if (l.level === "error") return true;
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
for (const l of entry.logs) if ((l.level ?? "log") === level) return true;
|
|
82
|
+
return false;
|
|
83
|
+
});
|
|
84
|
+
if (filter) {
|
|
85
|
+
const lower = filter.toLowerCase();
|
|
86
|
+
result = result.filter((entry) => {
|
|
87
|
+
for (const l of entry.logs) if (l.message.map(String).join(" ").toLowerCase().includes(lower)) return true;
|
|
88
|
+
for (const ex of entry.exceptions) {
|
|
89
|
+
if (ex.name.toLowerCase().includes(lower)) return true;
|
|
90
|
+
if (ex.message.toLowerCase().includes(lower)) return true;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
//#endregion
|
|
98
|
+
export { runLogsCommand };
|