@forinda/kickjs-cli 8.1.1 → 8.1.2

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.
Files changed (41) hide show
  1. package/dist/{agent-docs-a5Rrbd8P.mjs → agent-docs-CpchPx_4.mjs} +2 -2
  2. package/dist/{agent-docs-Qb8koyo6.mjs → agent-docs-hd9g5BZ0.mjs} +3 -3
  3. package/dist/{agent-docs-Qb8koyo6.mjs.map → agent-docs-hd9g5BZ0.mjs.map} +1 -1
  4. package/dist/{build-BDV2aZGn.mjs → build-BuX5GyB2.mjs} +2 -2
  5. package/dist/{build-DrlBrrUx.mjs → build-CSoDxP_l.mjs} +3 -3
  6. package/dist/{build-DrlBrrUx.mjs.map → build-CSoDxP_l.mjs.map} +1 -1
  7. package/dist/{builtins-CGstiV4W.mjs → builtins-C9oV1UJ8.mjs} +4 -4
  8. package/dist/{builtins-Br49aq_g.mjs → builtins-DZAyC6i1.mjs} +2 -2
  9. package/dist/cli.mjs +2 -2
  10. package/dist/{config-bbXqUZFh.mjs → config-CKc8SPb5.mjs} +2 -2
  11. package/dist/{config-DVWxuyAc.mjs → config-pV-Dz1VU.mjs} +3 -3
  12. package/dist/{config-DVWxuyAc.mjs.map → config-pV-Dz1VU.mjs.map} +1 -1
  13. package/dist/{doctor-BJ66k3fL.mjs → doctor-0EFr-nem.mjs} +4 -4
  14. package/dist/{doctor-BJ66k3fL.mjs.map → doctor-0EFr-nem.mjs.map} +1 -1
  15. package/dist/{fullstack-DL-toGRW.mjs → fullstack-B7VisErC.mjs} +4 -4
  16. package/dist/{fullstack-DL-toGRW.mjs.map → fullstack-B7VisErC.mjs.map} +1 -1
  17. package/dist/{fullstack-DcYbRWSo.mjs → fullstack-_VJCggLl.mjs} +3 -3
  18. package/dist/index.mjs +2 -2
  19. package/dist/{plugin-CD3PSr6C.mjs → plugin-BXA3Pr3s.mjs} +3 -3
  20. package/dist/{plugin-CD3PSr6C.mjs.map → plugin-BXA3Pr3s.mjs.map} +1 -1
  21. package/dist/{plugin-BdjZMdkS.mjs → plugin-YGLGfkea.mjs} +2 -2
  22. package/dist/{project-D0sZPh31.mjs → project-BTyBGoF8.mjs} +4 -4
  23. package/dist/{project-K2HAXsOa.mjs → project-Ds2Z5nQT.mjs} +5 -5
  24. package/dist/{project-K2HAXsOa.mjs.map → project-Ds2Z5nQT.mjs.map} +1 -1
  25. package/dist/{project-docs-B_TVxFkh.mjs → project-docs-DGtW5HLF.mjs} +2 -2
  26. package/dist/{project-docs-B_TVxFkh.mjs.map → project-docs-DGtW5HLF.mjs.map} +1 -1
  27. package/dist/{project-docs-D2q8FdWz.mjs → project-docs-RSAwCErC.mjs} +1 -1
  28. package/dist/{project-root-p1rZiyk5.mjs → project-root-BDQrT1-Y.mjs} +2 -2
  29. package/dist/{project-root-BtnNqtQD.mjs → project-root-ewZPp-03.mjs} +3 -3
  30. package/dist/{project-root-BtnNqtQD.mjs.map → project-root-ewZPp-03.mjs.map} +1 -1
  31. package/dist/{prompts-C0YBQQ8H.mjs → prompts-NAFJUzln.mjs} +2 -2
  32. package/dist/{prompts-C0YBQQ8H.mjs.map → prompts-NAFJUzln.mjs.map} +1 -1
  33. package/dist/{rolldown-runtime-F-gfS_x5.mjs → rolldown-runtime-DvSqBybi.mjs} +1 -1
  34. package/dist/{run-plugins-CNdLuCpw.mjs → run-plugins-dz4KA_bH.mjs} +4 -4
  35. package/dist/{run-plugins-CNdLuCpw.mjs.map → run-plugins-dz4KA_bH.mjs.map} +1 -1
  36. package/dist/{typegen-DO42IH1g.mjs → typegen-Cv4G6vtQ.mjs} +4 -4
  37. package/dist/{typegen-CNNYR9Gp.mjs → typegen-USmzo78B.mjs} +5 -5
  38. package/dist/typegen-USmzo78B.mjs.map +1 -0
  39. package/dist/{types-de1Czpr5.mjs → types-YIdB7Eof.mjs} +1 -1
  40. package/package.json +4 -4
  41. package/dist/typegen-CNNYR9Gp.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @forinda/kickjs-cli v8.1.1
2
+ * @forinda/kickjs-cli v8.1.2
3
3
  *
4
4
  * Copyright (c) Felix Orinda
5
5
  *
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- import{c as e,l as t,s as n}from"./project-docs-B_TVxFkh.mjs";import{a as r,c as i,d as a,i as o,l as s,n as c,o as l,r as u,s as d,t as f,u as p}from"./prompts-C0YBQQ8H.mjs";import{A as m,C as h,D as g,E as _,M as v,N as y,O as ee,P as b,S as te,T as ne,_ as re,a as ie,b as ae,c as oe,f as x,g as se,h as ce,i as le,j as ue,k as S,l as de,m as fe,p as pe,r as me,u as he,v as ge,w as _e,x as ve,y as ye}from"./doctor-BJ66k3fL.mjs";import{a as be,c as xe,o as Se,r as Ce,t as we,u as Te}from"./project-K2HAXsOa.mjs";import{a as Ee,c as De,i as Oe,l as ke,o as C,s as w}from"./config-DVWxuyAc.mjs";import{t as T}from"./project-root-BtnNqtQD.mjs";import{n as E}from"./types-de1Czpr5.mjs";import{t as Ae}from"./build-DrlBrrUx.mjs";import{n as je}from"./agent-docs-Qb8koyo6.mjs";import{n as Me}from"./plugin-CD3PSr6C.mjs";import{_ as Ne,a as Pe,c as Fe,d as Ie,f as Le,g as Re,h as ze,i as Be,l as Ve,m as He,o as Ue,p as We,r as Ge,s as Ke,t as D,u as qe}from"./typegen-CNNYR9Gp.mjs";import{createRequire as Je}from"node:module";import O,{basename as k,dirname as A,join as j,relative as Ye,resolve as M,sep as Xe}from"node:path";import{cpSync as Ze,existsSync as N,mkdirSync as Qe,readFileSync as P,readdirSync as $e,rmSync as et,writeFileSync as tt}from"node:fs";import{copyFile as nt,mkdir as rt,readFile as F,readdir as it,rm as at,stat as ot,writeFile as I}from"node:fs/promises";import{fork as st,spawn as ct,spawnSync as lt}from"node:child_process";import{fileURLToPath as ut,pathToFileURL as L}from"node:url";import{arch as dt,platform as ft,release as pt}from"node:os";import{createHash as mt}from"node:crypto";const ht=[{value:`swagger`,label:`Swagger`,hint:`OpenAPI docs`},{value:`ws`,label:`WebSocket`,hint:`rooms, heartbeat`},{value:`queue`,label:`Queue`,hint:`BullMQ/RabbitMQ/Kafka`},{value:`devtools`,label:`DevTools`,hint:`debug dashboard`}];function gt(e){e.command(`new [name]`).alias(`init`).description(`Create a new KickJS project (use "." for current directory)`).option(`-d, --directory <dir>`,`Target directory (defaults to project name)`).option(`--pm <manager>`,`Package manager: pnpm | npm | yarn | bun`).option(`--git`,`Initialize git repository`).option(`--no-git`,`Skip git initialization`).option(`--install`,`Install dependencies after scaffolding`).option(`--no-install`,`Skip dependency installation`).option(`-f, --force`,`Remove existing files without prompting`).option(`-t, --template <type>`,`Project template: rest | minimal | fullstack`).option(`--runtime <engine>`,`HTTP runtime: express | fastify | h3`).option(`-r, --repo <type>`,`Repository name (inmemory, or any DB name e.g. postgres)`).option(`-s, --schema <lib>`,`Schema library for env / DTOs: zod | valibot | yup (default: zod)`).option(`--packages <packages>`,`Comma-separated packages to include (e.g. swagger,ws,queue,devtools)`).option(`-y, --yes`,`Pick safe defaults for every prompt (template=minimal, repo=inmemory, no extras, git+install on)`).option(`--non-interactive`,`alias for --yes`).action(async(e,t)=>{c(`KickJS — Create a new project`);let n=!!(t.yes||t.nonInteractive);e||=n?`my-api`:await i({message:`Project name`,placeholder:`my-api`,defaultValue:`my-api`});let a;if(e===`.`?(a=M(`.`),e=k(a)):a=M(t.directory||e),N(a)){let i=$e(a);if(i.length>0){if(t.force)u.warn(`Clearing existing files in ${a}`);else if(n){u.warn(`Directory "${e}" is not empty. Pass --force to clear it.`),r(`Aborted.`);return}else{u.warn(`Directory "${e}" is not empty:`);let t=i.slice(0,5);for(let e of t)u.message(` - ${e}`);if(i.length>5&&u.message(` ... and ${i.length-5} more`),!await f({message:p.red(`Remove all existing files and proceed?`),initialValue:!1})){r(`Aborted.`);return}}for(let e of i)et(M(a,e),{recursive:!0,force:!0})}}let s=t.template;s||=n?`minimal`:await l({message:`Project template`,options:[{value:`rest`,label:`REST API`,hint:`Express + Swagger`},{value:`minimal`,label:`Minimal`,hint:`bare Express`},{value:`fullstack`,label:`Fullstack`,hint:`server + Vite React web, typed client`}]});let d=t.runtime;d||=n?`express`:await l({message:`HTTP runtime`,options:[{value:`express`,label:`Express`,hint:`default, zero-config`},{value:`fastify`,label:`Fastify`,hint:`fastify + @fastify/middie`},{value:`h3`,label:`h3`,hint:`Nitro / Nuxt engine`}]});let m=t.pm;m||=n?await xe(void 0):await l({message:`Package manager`,options:[{value:`pnpm`,label:`pnpm`},{value:`npm`,label:`npm`},{value:`yarn`,label:`yarn`},{value:`bun`,label:`bun`}]});let h=t.repo;h||=n?`inmemory`:await i({message:`Repository name`,placeholder:`inmemory (or a DB name, e.g. postgres)`,defaultValue:`inmemory`}),ke(h);let g=t.schema;g||=n?`zod`:await l({message:`Schema library (env + DTO validation)`,options:[{value:`zod`,label:`Zod`,hint:`default — broad ecosystem`},{value:`valibot`,label:`Valibot`,hint:`smaller bundle`},{value:`yup`,label:`Yup`,hint:`classic API`}]}),[`zod`,`valibot`,`yup`].includes(g)||(u.warn(`Unknown --schema "${g}", falling back to zod.`),g=`zod`);let _;if(t.packages!==void 0){let e=t.packages.trim().toLowerCase();_=e===``||e===`none`||e===`false`?[]:t.packages.split(`,`).map(e=>e.trim()).filter(Boolean)}else _=n?[]:await o({message:`Select packages to include`,options:[...ht],required:!1});let v;v=t.git===void 0?n?!0:await f({message:`Initialize git repository?`,initialValue:!0}):t.git;let y;if(y=t.install===void 0?n?!0:await f({message:`Install dependencies?`,initialValue:!0}):t.install,s===`fullstack`){let{initFullstackProject:t}=await import(`./fullstack-DL-toGRW.mjs`);await t({name:e,directory:a,packageManager:m,initGit:v,installDeps:y,schemaLib:g,runtime:d}),r(`Done! Next steps: ${p.cyan(`cd ${e} && ${m}${m===`pnpm`?` dev`:` run dev:server`}`)}`);return}await we({name:e,directory:a,packageManager:m,initGit:v,installDeps:y,template:s,defaultRepo:h,packages:_,schemaLib:g,runtime:d}),r(`Done! Next steps: ${p.cyan(`cd ${e} && ${m} dev`)}`)})}async function _t(e){let{name:n,outDir:r}=e,i=y(n),a=b(n),o=[],s=j(r,`${i}.plugin.ts`);return await t(s,`import {
11
+ import{c as e,l as t,s as n}from"./project-docs-DGtW5HLF.mjs";import{a as r,c as i,d as a,i as o,l as s,n as c,o as l,r as u,s as d,t as f,u as p}from"./prompts-NAFJUzln.mjs";import{A as m,C as h,D as g,E as _,M as v,N as y,O as ee,P as b,S as te,T as ne,_ as re,a as ie,b as ae,c as oe,f as x,g as se,h as ce,i as le,j as ue,k as S,l as de,m as fe,p as pe,r as me,u as he,v as ge,w as _e,x as ve,y as ye}from"./doctor-0EFr-nem.mjs";import{a as be,c as xe,o as Se,r as Ce,t as we,u as Te}from"./project-Ds2Z5nQT.mjs";import{a as Ee,c as De,i as Oe,l as ke,o as C,s as w}from"./config-pV-Dz1VU.mjs";import{t as T}from"./project-root-ewZPp-03.mjs";import{n as E}from"./types-YIdB7Eof.mjs";import{t as Ae}from"./build-CSoDxP_l.mjs";import{n as je}from"./agent-docs-hd9g5BZ0.mjs";import{n as Me}from"./plugin-BXA3Pr3s.mjs";import{_ as Ne,a as Pe,c as Fe,d as Ie,f as Le,g as Re,h as ze,i as Be,l as Ve,m as He,o as Ue,p as We,r as Ge,s as Ke,t as D,u as qe}from"./typegen-USmzo78B.mjs";import{createRequire as Je}from"node:module";import O,{basename as k,dirname as A,join as j,relative as Ye,resolve as M,sep as Xe}from"node:path";import{cpSync as Ze,existsSync as N,mkdirSync as Qe,readFileSync as P,readdirSync as $e,rmSync as et,writeFileSync as tt}from"node:fs";import{copyFile as nt,mkdir as rt,readFile as F,readdir as it,rm as at,stat as ot,writeFile as I}from"node:fs/promises";import{fork as st,spawn as ct,spawnSync as lt}from"node:child_process";import{fileURLToPath as ut,pathToFileURL as L}from"node:url";import{arch as dt,platform as ft,release as pt}from"node:os";import{createHash as mt}from"node:crypto";const ht=[{value:`swagger`,label:`Swagger`,hint:`OpenAPI docs`},{value:`ws`,label:`WebSocket`,hint:`rooms, heartbeat`},{value:`queue`,label:`Queue`,hint:`BullMQ/RabbitMQ/Kafka`},{value:`devtools`,label:`DevTools`,hint:`debug dashboard`}];function gt(e){e.command(`new [name]`).alias(`init`).description(`Create a new KickJS project (use "." for current directory)`).option(`-d, --directory <dir>`,`Target directory (defaults to project name)`).option(`--pm <manager>`,`Package manager: pnpm | npm | yarn | bun`).option(`--git`,`Initialize git repository`).option(`--no-git`,`Skip git initialization`).option(`--install`,`Install dependencies after scaffolding`).option(`--no-install`,`Skip dependency installation`).option(`-f, --force`,`Remove existing files without prompting`).option(`-t, --template <type>`,`Project template: rest | minimal | fullstack`).option(`--runtime <engine>`,`HTTP runtime: express | fastify | h3`).option(`-r, --repo <type>`,`Repository name (inmemory, or any DB name e.g. postgres)`).option(`-s, --schema <lib>`,`Schema library for env / DTOs: zod | valibot | yup (default: zod)`).option(`--packages <packages>`,`Comma-separated packages to include (e.g. swagger,ws,queue,devtools)`).option(`-y, --yes`,`Pick safe defaults for every prompt (template=minimal, repo=inmemory, no extras, git+install on)`).option(`--non-interactive`,`alias for --yes`).action(async(e,t)=>{c(`KickJS — Create a new project`);let n=!!(t.yes||t.nonInteractive);e||=n?`my-api`:await i({message:`Project name`,placeholder:`my-api`,defaultValue:`my-api`});let a;if(e===`.`?(a=M(`.`),e=k(a)):a=M(t.directory||e),N(a)){let i=$e(a);if(i.length>0){if(t.force)u.warn(`Clearing existing files in ${a}`);else if(n){u.warn(`Directory "${e}" is not empty. Pass --force to clear it.`),r(`Aborted.`);return}else{u.warn(`Directory "${e}" is not empty:`);let t=i.slice(0,5);for(let e of t)u.message(` - ${e}`);if(i.length>5&&u.message(` ... and ${i.length-5} more`),!await f({message:p.red(`Remove all existing files and proceed?`),initialValue:!1})){r(`Aborted.`);return}}for(let e of i)et(M(a,e),{recursive:!0,force:!0})}}let s=t.template;s||=n?`minimal`:await l({message:`Project template`,options:[{value:`rest`,label:`REST API`,hint:`Express + Swagger`},{value:`minimal`,label:`Minimal`,hint:`bare Express`},{value:`fullstack`,label:`Fullstack`,hint:`server + Vite React web, typed client`}]});let d=t.runtime;d||=n?`express`:await l({message:`HTTP runtime`,options:[{value:`express`,label:`Express`,hint:`default, zero-config`},{value:`fastify`,label:`Fastify`,hint:`fastify + @fastify/middie`},{value:`h3`,label:`h3`,hint:`Nitro / Nuxt engine`}]});let m=t.pm;m||=n?await xe(void 0):await l({message:`Package manager`,options:[{value:`pnpm`,label:`pnpm`},{value:`npm`,label:`npm`},{value:`yarn`,label:`yarn`},{value:`bun`,label:`bun`}]});let h=t.repo;h||=n?`inmemory`:await i({message:`Repository name`,placeholder:`inmemory (or a DB name, e.g. postgres)`,defaultValue:`inmemory`}),ke(h);let g=t.schema;g||=n?`zod`:await l({message:`Schema library (env + DTO validation)`,options:[{value:`zod`,label:`Zod`,hint:`default — broad ecosystem`},{value:`valibot`,label:`Valibot`,hint:`smaller bundle`},{value:`yup`,label:`Yup`,hint:`classic API`}]}),[`zod`,`valibot`,`yup`].includes(g)||(u.warn(`Unknown --schema "${g}", falling back to zod.`),g=`zod`);let _;if(t.packages!==void 0){let e=t.packages.trim().toLowerCase();_=e===``||e===`none`||e===`false`?[]:t.packages.split(`,`).map(e=>e.trim()).filter(Boolean)}else _=n?[]:await o({message:`Select packages to include`,options:[...ht],required:!1});let v;v=t.git===void 0?n?!0:await f({message:`Initialize git repository?`,initialValue:!0}):t.git;let y;if(y=t.install===void 0?n?!0:await f({message:`Install dependencies?`,initialValue:!0}):t.install,s===`fullstack`){let{initFullstackProject:t}=await import(`./fullstack-B7VisErC.mjs`);await t({name:e,directory:a,packageManager:m,initGit:v,installDeps:y,schemaLib:g,runtime:d}),r(`Done! Next steps: ${p.cyan(`cd ${e} && ${m}${m===`pnpm`?` dev`:` run dev:server`}`)}`);return}await we({name:e,directory:a,packageManager:m,initGit:v,installDeps:y,template:s,defaultRepo:h,packages:_,schemaLib:g,runtime:d}),r(`Done! Next steps: ${p.cyan(`cd ${e} && ${m} dev`)}`)})}async function _t(e){let{name:n,outDir:r}=e,i=y(n),a=b(n),o=[],s=j(r,`${i}.plugin.ts`);return await t(s,`import {
12
12
  definePlugin,
13
13
  type AppAdapter,
14
14
  type AppModuleEntry,
@@ -574,7 +574,7 @@ server.on('exit', () => {
574
574
  Cancelled.
575
575
  `);return}await at(l,{recursive:!0,force:!0}),console.log(` Deleted: ${l}`);let u=j(r,`index.ts`);if(await n(u)){let e=await F(u,`utf-8`),t=e,n=RegExp(`^import\\s*\\{\\s*${S(s)}Module\\s*\\}\\s*from\\s*['"][^'"]*${S(c)}(?:/[^'"]*)?['"].*\\n?`,`gm`);e=e.replace(n,``),e=Kn(e,s),e=e.replace(/\n{3,}/g,`
576
576
 
577
- `),e!==t&&(await I(u,e,`utf-8`),console.log(` Unregistered: ${s}Module from ${u}`))}console.log(`\n Module '${c}' removed.\n`)}function Jn(e){e.command(`remove`).alias(`rm`).description(`Remove generated code`).command(`module <names...>`).description(`Remove one or more modules (e.g. kick rm module user task)`).option(`--modules-dir <dir>`,`Modules directory`).option(`--no-pluralize`,`Use singular module name`).option(`-f, --force`,`Skip confirmation prompt`).action(async(e,t)=>{let n=w(await C(process.cwd())),r=t.modulesDir??n.dir??`src/modules`,i=t.pluralize===!1?!1:n.pluralize??!0;for(let n of e)await qn({name:n,modulesDir:M(r),force:t.force,pluralize:i})})}function Yn(e){if(e!==void 0){if(e===`false`||e===`off`||e===`none`)return!1;if(e===`zod`)return`zod`;if(e===`kickjs-schema`||e===`schema`)return`kickjs-schema`;console.warn(` kick typegen: unknown --schema-validator '${e}' (supported: 'zod', 'kickjs-schema', 'false'). Falling back to project config.`)}}function Xn(e){if(e!==void 0)return e===`false`||e===`off`||e===`none`?!1:e}function Zn(e){e.command(`typegen`).description(`Generate type-safe DI registry and module types into .kickjs/types/`).option(`-w, --watch`,`Watch source files and regenerate on change`).option(`-s, --src <dir>`,`Source directory to scan`,`src`).option(`-o, --out <dir>`,`Output directory`,`.kickjs/types`).option(`--silent`,`Suppress output`).option(`--allow-duplicates`,`Auto-namespace duplicate class names instead of failing (use with caution)`).option(`--schema-validator <name>`,`Schema validator for body/query/params typing (currently 'zod' or 'false')`).option(`--env-file <path>`,`Path to env schema file for KickEnv typing (default 'src/env.ts'; pass 'false' to disable)`).option(`--check`,`CI gate: exit non-zero if any generated file in .kickjs/types/ is out of date (routes, env, db, assets, adopter plugins) instead of writing it`).option(`--fix`,`Patch module import.meta.glob() calls to cover decorated classes that aren't loaded by any glob (orphans)`).option(`--list`,"List every registered typegen plugin id (use to populate `typegen.disable`)").option(`--no-cache`,`Disable the persistent scan cache; re-read + re-extract every file from cold`).action(async e=>{let t=T(process.cwd()),n=await C(t);if(e.list){let{mergeCliPlugins:e}=await import(`./plugin-CD3PSr6C.mjs`).then(e=>e.t),{builtinCliPlugins:t}=await import(`./builtins-Br49aq_g.mjs`),r=e([...t,...n?.plugins??[]],n?.commands??[]),i=new Set(n?.typegen?.disable??[]);if(r.typegens.length===0){console.log(` No typegen plugins registered.`);return}let a=Math.max(...r.typegens.map(e=>e.id.length));console.log(`
577
+ `),e!==t&&(await I(u,e,`utf-8`),console.log(` Unregistered: ${s}Module from ${u}`))}console.log(`\n Module '${c}' removed.\n`)}function Jn(e){e.command(`remove`).alias(`rm`).description(`Remove generated code`).command(`module <names...>`).description(`Remove one or more modules (e.g. kick rm module user task)`).option(`--modules-dir <dir>`,`Modules directory`).option(`--no-pluralize`,`Use singular module name`).option(`-f, --force`,`Skip confirmation prompt`).action(async(e,t)=>{let n=w(await C(process.cwd())),r=t.modulesDir??n.dir??`src/modules`,i=t.pluralize===!1?!1:n.pluralize??!0;for(let n of e)await qn({name:n,modulesDir:M(r),force:t.force,pluralize:i})})}function Yn(e){if(e!==void 0){if(e===`false`||e===`off`||e===`none`)return!1;if(e===`zod`)return`zod`;if(e===`kickjs-schema`||e===`schema`)return`kickjs-schema`;console.warn(` kick typegen: unknown --schema-validator '${e}' (supported: 'zod', 'kickjs-schema', 'false'). Falling back to project config.`)}}function Xn(e){if(e!==void 0)return e===`false`||e===`off`||e===`none`?!1:e}function Zn(e){e.command(`typegen`).description(`Generate type-safe DI registry and module types into .kickjs/types/`).option(`-w, --watch`,`Watch source files and regenerate on change`).option(`-s, --src <dir>`,`Source directory to scan`,`src`).option(`-o, --out <dir>`,`Output directory`,`.kickjs/types`).option(`--silent`,`Suppress output`).option(`--allow-duplicates`,`Auto-namespace duplicate class names instead of failing (use with caution)`).option(`--schema-validator <name>`,`Schema validator for body/query/params typing (currently 'zod' or 'false')`).option(`--env-file <path>`,`Path to env schema file for KickEnv typing (default 'src/env.ts'; pass 'false' to disable)`).option(`--check`,`CI gate: exit non-zero if any generated file in .kickjs/types/ is out of date (routes, env, db, assets, adopter plugins) instead of writing it`).option(`--fix`,`Patch module import.meta.glob() calls to cover decorated classes that aren't loaded by any glob (orphans)`).option(`--list`,"List every registered typegen plugin id (use to populate `typegen.disable`)").option(`--no-cache`,`Disable the persistent scan cache; re-read + re-extract every file from cold`).action(async e=>{let t=T(process.cwd()),n=await C(t);if(e.list){let{mergeCliPlugins:e}=await import(`./plugin-BXA3Pr3s.mjs`).then(e=>e.t),{builtinCliPlugins:t}=await import(`./builtins-DZAyC6i1.mjs`),r=e([...t,...n?.plugins??[]],n?.commands??[]),i=new Set(n?.typegen?.disable??[]);if(r.typegens.length===0){console.log(` No typegen plugins registered.`);return}let a=Math.max(...r.typegens.map(e=>e.id.length));console.log(`
578
578
  Registered typegen plugins:
579
579
  `);for(let e of r.typegens){let t=i.has(e.id)?` (disabled)`:``,n=`${e.id.replace(/\//g,`__`)}${e.outExtension??`.d.ts`}`;console.log(` ${e.id.padEnd(a+2)}→ .kickjs/types/${n}${t}`),console.log(` ${` `.repeat(a+2)} watches: ${e.inputs.join(`, `)||`(none)`}`)}console.log(`
580
580
  Disable one in kick.config.ts:
@@ -729,4 +729,4 @@ declare global {
729
729
  export {}
730
730
  `}const ni=()=>({id:`kick/env`,outExtension:`.ts`,inputs:[`src/env.ts`,`src/**/env.ts`,`src/**/*.env.ts`],async generate(e){let t=ii(e);if(t===!1)return null;let n=await e.getScanResult({root:ri(e),cwd:e.cwd,envFile:t});if(!n.env)return null;let r=e.config?.typegen?.schemaValidator??`zod`,i=O.resolve(e.cwd,`.kickjs/types/kick__env.ts`);return ti(n.env,i,r)}});function ri(e){return O.resolve(e.cwd,e.config?.typegen?.srcDir??`src`)}function ii(e){return e.config?.typegen?.envFile}function ai(e){return O.resolve(e.cwd,e.config?.typegen?.srcDir??`src`)}function oi(e){let t=e.config?.typegen?.envFile;if(t!==!1)return t}function $(e){return{root:ai(e),cwd:e.cwd,envFile:oi(e)}}const si=()=>({id:`kick/registry`,inputs:[`src/**/*.ts`],async generate(e){let t=await e.getScanResult($(e)),n=O.resolve(e.cwd,`.kickjs/types/kick__registry.d.ts`),r=new Set(t.collisions.map(e=>e.className));return We(t.classes,n,r)}}),ci=()=>({id:`kick/services`,inputs:[`src/**/*.ts`],async generate(e){let t=await e.getScanResult($(e)),n=new Set(t.collisions.map(e=>e.className));return ze(`ServiceToken`,Ve(t.classes,t.tokens,t.injects,n),"(no tokens discovered — declare with createToken<T>() or `kick g service <name>`)")}}),li=()=>({id:`kick/modules`,inputs:[`src/**/*.ts`],async generate(e){return ze(`ModuleToken`,Fe((await e.getScanResult($(e))).classes),"(no @Module classes discovered — `kick g module <name>` to add one)")}}),ui=()=>({id:`kick/plugins`,inputs:[`src/**/*.ts`],async generate(e){return Le((await e.getScanResult($(e))).pluginsAndAdapters)}}),di=()=>({id:`kick/augmentations`,inputs:[`src/**/*.ts`],async generate(e){return qe((await e.getScanResult($(e))).augmentations)}}),fi=()=>({id:`kick/context`,inputs:[`src/**/*.ts`],async generate(e){let t=await e.getScanResult($(e));return t.contextKeys.length===0?null:Ie(t.contextKeys)}}),pi=()=>({id:`kick/route-flags`,inputs:[`src/**/*.ts`],async generate(e){return He((await e.getScanResult($(e))).routeFlags)}}),mi={fastify:{subpath:`@forinda/kickjs/fastify`,typeName:`FastifyRuntimeTypes`},h3:{subpath:`@forinda/kickjs/h3`,typeName:`H3RuntimeTypes`}},hi=[E({name:`kick/init`,register:gt}),E({name:`kick/generate`,register:Kt}),E({name:`kick/run`,register:on}),E({name:`kick/info`,register:dn}),E({name:`kick/inspect`,register:yn}),E({name:`kick/add`,register:be}),E({name:`kick/list`,register:Se}),E({name:`kick/explain`,register:kn}),E({name:`kick/mcp`,register:Rn}),E({name:`kick/tinker`,register:Hn}),E({name:`kick/remove`,register:Jn}),E({name:`kick/typegen`,register:Zn}),E({name:`kick/check`,register:lr}),E({name:`kick/doctor`,register:me}),E({name:`kick/codemod`,register:dr}),E({name:`kick/registry`,typegens:[si()]}),E({name:`kick/services`,typegens:[ci()]}),E({name:`kick/modules`,typegens:[li()]}),E({name:`kick/plugins`,typegens:[ui()]}),E({name:`kick/augmentations`,typegens:[di()]}),E({name:`kick/context`,typegens:[fi()]}),E({name:`kick/route-flags`,typegens:[pi()]}),E({name:`kick/assets`,typegens:[fr()]}),E({name:`kick/routes`,typegens:[Sr()]}),E({name:`kick/client`,typegens:[ei()]}),E({name:`kick/env`,typegens:[ni()]}),E({name:`kick/runtime`,typegens:[{id:`kick/runtime`,outExtension:`.ts`,inputs:[`kick.config.ts`,`kick.config.js`,`kick.config.mjs`,`kick.config.json`],async generate(e){let t=e.config?.runtime;if(t!==`fastify`&&t!==`h3`)return null;let{subpath:n,typeName:r}=mi[t];return[`// Runtime escape-hatch types for the '${t}' engine (kick.config runtime).`,`declare module '@forinda/kickjs' {`,` interface KickRuntimeRegister {`,` runtime: import('${n}').${r}`,` }`,`}`,``,`export {}`,``].join(`
731
731
  `)}}]})];export{Zt as applyDisableFilter,U as runAllPluginTypegens,hi as t};
732
- //# sourceMappingURL=run-plugins-CNdLuCpw.mjs.map
732
+ //# sourceMappingURL=run-plugins-dz4KA_bH.mjs.map