@forinda/kickjs-cli 5.4.3 → 5.4.5

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @forinda/kickjs-cli v5.4.3
2
+ * @forinda/kickjs-cli v5.4.5
3
3
  *
4
4
  * Copyright (c) Felix Orinda
5
5
  *
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- import{A as e,C as t,D as n,E as r,F as i,I as a,L as o,M as s,N as c,O as l,P as u,R as d,S as f,T as p,_ as m,a as h,b as g,c as _,d as ee,f as v,g as y,h as te,j as ne,k as b,l as re,m as ie,n as ae,o as oe,p as se,s as ce,t as le,u as ue,v as de,w as x,x as fe,y as S}from"./generator-extension-DjQVbh56.mjs";import{a as C,i as w,o as pe,t as me}from"./config-CwM2Sr53.mjs";import{n as T}from"./types-5Ihp5Jca.mjs";import{n as he}from"./plugin-DWLsr4yd.mjs";import{a as ge,c as _e,i as ve,n as ye,o as be,s as xe,t as E}from"./typegen-B4_u3xBO.mjs";import D,{basename as Se,dirname as O,isAbsolute as Ce,join as k,relative as A,resolve as j,sep as we}from"node:path";import{cpSync as Te,existsSync as M,mkdirSync as N,readFileSync as P,readdirSync as Ee,rmSync as De,statSync as Oe,writeFileSync as ke}from"node:fs";import{copyFile as Ae,mkdir as je,readFile as F,readdir as Me,rm as Ne,stat as Pe,writeFile as I}from"node:fs/promises";import{execSync as Fe,fork as Ie,spawn as Le,spawnSync as Re}from"node:child_process";import{pathToFileURL as L}from"node:url";import{glob as ze}from"glob";import{groupAssetKeys as Be}from"@forinda/kickjs";import{arch as Ve,platform as He,release as Ue}from"node:os";import{detectCompositeReferences as We,generate as Ge,migrateDown as Ke,migrateLatest as qe,migrateRollback as Je,migrateStatus as Ye,migrateUp as Xe,renderSchemaSource as Ze,resolveDbConfig as Qe}from"@forinda/kickjs-db";const $e={kickjs:{pkg:`@forinda/kickjs`,peers:[`express`],description:`Unified framework: DI, decorators, routing, middleware`,core:!0},vite:{pkg:`@forinda/kickjs-vite`,peers:[`vite`],description:`Vite plugin: dev server, HMR, module discovery`,dev:!0,core:!0},cli:{pkg:`@forinda/kickjs-cli`,peers:[],description:`CLI tool and code generators`,dev:!0,core:!0},swagger:{pkg:`@forinda/kickjs-swagger`,peers:[],description:`OpenAPI spec + Swagger UI + ReDoc`},db:{pkg:`@forinda/kickjs-db`,peers:[],description:`kick/db core — schema DSL, migrations, KickDbClient, customType`},"db-pg":{pkg:`@forinda/kickjs-db-pg`,peers:[`pg`],description:`kick/db PostgreSQL dialect + adapter (pgDialect, pgAdapter)`},drizzle:{pkg:`@forinda/kickjs-drizzle`,peers:[`drizzle-orm`],description:`Drizzle ORM adapter + query builder`},prisma:{pkg:`@forinda/kickjs-prisma`,peers:[`@prisma/client`],description:`Prisma adapter + query builder`},ws:{pkg:`@forinda/kickjs-ws`,peers:[`socket.io`],description:`WebSocket with @WsController decorators`},devtools:{pkg:`@forinda/kickjs-devtools`,peers:[],description:`Development dashboard — routes, DI, metrics, health`,dev:!0},auth:{pkg:`@forinda/kickjs-auth`,peers:[`jsonwebtoken`],description:`Authentication — JWT, API key, and custom strategies`},queue:{pkg:`@forinda/kickjs-queue`,peers:[],description:`Queue adapter (BullMQ/RabbitMQ/Kafka)`},"queue:bullmq":{pkg:`@forinda/kickjs-queue`,peers:[`bullmq`,`ioredis`],description:`Queue with BullMQ + Redis`},"queue:rabbitmq":{pkg:`@forinda/kickjs-queue`,peers:[`amqplib`],description:`Queue with RabbitMQ`},"queue:kafka":{pkg:`@forinda/kickjs-queue`,peers:[`kafkajs`],description:`Queue with Kafka`},mcp:{pkg:`@forinda/kickjs-mcp`,peers:[`@modelcontextprotocol/sdk`],description:`Model Context Protocol server — expose @Controller endpoints as AI tools`},testing:{pkg:`@forinda/kickjs-testing`,peers:[],description:`Test utilities and TestModule builder`,dev:!0}};function R(e,t=process.cwd()){let n=t;for(;;){if(M(j(n,e)))return n;let t=O(n);if(t===n)return null;n=t}}function et(){return R(`pnpm-lock.yaml`)?`pnpm`:R(`yarn.lock`)?`yarn`:R(`bun.lockb`)||R(`bun.lock`)?`bun`:R(`package-lock.json`)?`npm`:null}function tt(){let e=process.cwd();for(;e;){let t=j(e,`package.json`);if(M(t))try{let e=JSON.parse(P(t,`utf-8`)).packageManager;if(typeof e==`string`){let t=e.split(`@`)[0];if(me.includes(t))return t}}catch{}let n=O(e);if(n===e)return null;e=n}return null}async function nt(e){if(e&&me.includes(e))return{pm:e,source:`flag`};let t=await w(process.cwd());if(t?.packageManager&&me.includes(t.packageManager))return{pm:t.packageManager,source:`config`};let n=tt();if(n)return{pm:n,source:`package.json`};let r=et();return r?{pm:r,source:`lockfile`}:{pm:`npm`,source:`default`}}async function rt(e){let{pm:t}=await nt(e);return t}function it(e=!1){let t=Object.entries($e),n=Math.max(...t.map(([e])=>e.length)),r=t.filter(([,e])=>e.core),i=t.filter(([,e])=>!e.core),a=([e,t])=>{let r=e.padEnd(n+2),i=t.peers.length?` (+ ${t.peers.join(`, `)})`:``;return` ${r} ${t.description}${i}`};console.log(`
11
+ import{A as e,C as t,D as n,E as r,F as i,I as a,L as o,M as s,N as c,O as l,P as u,R as d,S as f,T as p,_ as m,a as h,b as g,c as _,d as ee,f as v,g as y,h as te,j as ne,k as b,l as re,m as ie,n as ae,o as oe,p as se,s as ce,t as le,u as ue,v as de,w as x,x as fe,y as S}from"./generator-extension-C8B3jDpA.mjs";import{a as C,i as w,o as pe,t as me}from"./config-NWyl31UO.mjs";import{n as T}from"./types-UT7s54gu.mjs";import{n as he}from"./plugin-_Kc-Swdx.mjs";import{a as ge,c as _e,i as ve,n as ye,o as be,s as xe,t as E}from"./typegen-B-504b6a.mjs";import D,{basename as Se,dirname as O,isAbsolute as Ce,join as k,relative as A,resolve as j,sep as we}from"node:path";import{cpSync as Te,existsSync as M,mkdirSync as N,readFileSync as P,readdirSync as Ee,rmSync as De,statSync as Oe,writeFileSync as ke}from"node:fs";import{copyFile as Ae,mkdir as je,readFile as F,readdir as Me,rm as Ne,stat as Pe,writeFile as I}from"node:fs/promises";import{execSync as Fe,fork as Ie,spawn as Le,spawnSync as Re}from"node:child_process";import{pathToFileURL as L}from"node:url";import{glob as ze}from"glob";import{groupAssetKeys as Be}from"@forinda/kickjs";import{arch as Ve,platform as He,release as Ue}from"node:os";import{detectCompositeReferences as We,generate as Ge,migrateDown as Ke,migrateLatest as qe,migrateRollback as Je,migrateStatus as Ye,migrateUp as Xe,renderSchemaSource as Ze,resolveDbConfig as Qe}from"@forinda/kickjs-db";const $e={kickjs:{pkg:`@forinda/kickjs`,peers:[`express`],description:`Unified framework: DI, decorators, routing, middleware`,core:!0},vite:{pkg:`@forinda/kickjs-vite`,peers:[`vite`],description:`Vite plugin: dev server, HMR, module discovery`,dev:!0,core:!0},cli:{pkg:`@forinda/kickjs-cli`,peers:[],description:`CLI tool and code generators`,dev:!0,core:!0},swagger:{pkg:`@forinda/kickjs-swagger`,peers:[],description:`OpenAPI spec + Swagger UI + ReDoc`},db:{pkg:`@forinda/kickjs-db`,peers:[],description:`kick/db core — schema DSL, migrations, KickDbClient, customType`},"db-pg":{pkg:`@forinda/kickjs-db-pg`,peers:[`pg`],description:`kick/db PostgreSQL dialect + adapter (pgDialect, pgAdapter)`},drizzle:{pkg:`@forinda/kickjs-drizzle`,peers:[`drizzle-orm`],description:`Drizzle ORM adapter + query builder`},prisma:{pkg:`@forinda/kickjs-prisma`,peers:[`@prisma/client`],description:`Prisma adapter + query builder`},ws:{pkg:`@forinda/kickjs-ws`,peers:[`socket.io`],description:`WebSocket with @WsController decorators`},devtools:{pkg:`@forinda/kickjs-devtools`,peers:[],description:`Development dashboard — routes, DI, metrics, health`,dev:!0},auth:{pkg:`@forinda/kickjs-auth`,peers:[`jsonwebtoken`],description:`Authentication — JWT, API key, and custom strategies`},queue:{pkg:`@forinda/kickjs-queue`,peers:[],description:`Queue adapter (BullMQ/RabbitMQ/Kafka)`},"queue:bullmq":{pkg:`@forinda/kickjs-queue`,peers:[`bullmq`,`ioredis`],description:`Queue with BullMQ + Redis`},"queue:rabbitmq":{pkg:`@forinda/kickjs-queue`,peers:[`amqplib`],description:`Queue with RabbitMQ`},"queue:kafka":{pkg:`@forinda/kickjs-queue`,peers:[`kafkajs`],description:`Queue with Kafka`},mcp:{pkg:`@forinda/kickjs-mcp`,peers:[`@modelcontextprotocol/sdk`],description:`Model Context Protocol server — expose @Controller endpoints as AI tools`},testing:{pkg:`@forinda/kickjs-testing`,peers:[],description:`Test utilities and TestModule builder`,dev:!0}};function R(e,t=process.cwd()){let n=t;for(;;){if(M(j(n,e)))return n;let t=O(n);if(t===n)return null;n=t}}function et(){return R(`pnpm-lock.yaml`)?`pnpm`:R(`yarn.lock`)?`yarn`:R(`bun.lockb`)||R(`bun.lock`)?`bun`:R(`package-lock.json`)?`npm`:null}function tt(){let e=process.cwd();for(;e;){let t=j(e,`package.json`);if(M(t))try{let e=JSON.parse(P(t,`utf-8`)).packageManager;if(typeof e==`string`){let t=e.split(`@`)[0];if(me.includes(t))return t}}catch{}let n=O(e);if(n===e)return null;e=n}return null}async function nt(e){if(e&&me.includes(e))return{pm:e,source:`flag`};let t=await w(process.cwd());if(t?.packageManager&&me.includes(t.packageManager))return{pm:t.packageManager,source:`config`};let n=tt();if(n)return{pm:n,source:`package.json`};let r=et();return r?{pm:r,source:`lockfile`}:{pm:`npm`,source:`default`}}async function rt(e){let{pm:t}=await nt(e);return t}function it(e=!1){let t=Object.entries($e),n=Math.max(...t.map(([e])=>e.length)),r=t.filter(([,e])=>e.core),i=t.filter(([,e])=>!e.core),a=([e,t])=>{let r=e.padEnd(n+2),i=t.peers.length?` (+ ${t.peers.join(`, `)})`:``;return` ${r} ${t.description}${i}`};console.log(`
12
12
  Core packages (always installed by \`kick new\`):
13
13
  `);for(let e of r)console.log(a(e));if(e){console.log(`
14
14
  Optional packages (add as needed):
@@ -1048,7 +1048,7 @@ server.on('exit', () => {
1048
1048
  Cancelled.
1049
1049
  `);return}await Ne(d,{recursive:!0,force:!0}),console.log(` Deleted: ${d}`);let f=k(r,`index.ts`);if(await a(f)){let e=await F(f,`utf-8`),t=e,n=RegExp(`^import\\s*\\{\\s*${S(c)}Module\\s*\\}\\s*from\\s*['"][^'"]*${S(l)}(?:/[^'"]*)?['"].*\\n?`,`gm`);e=e.replace(n,``),e=Yn(e,c),e=e.replace(/\n{3,}/g,`
1050
1050
 
1051
- `),e!==t&&(await I(f,e,`utf-8`),console.log(` Unregistered: ${c}Module from ${f}`))}console.log(`\n Module '${l}' removed.\n`)}function Zn(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=C(await w(process.cwd())),r=t.modulesDir??n.dir??`src/modules`,i=t.pluralize===!1?!1:n.pluralize??!0;for(let n of e)await Xn({name:n,modulesDir:j(r),force:t.force,pluralize:i})})}function Qn(e){if(e!==void 0){if(e===`false`||e===`off`||e===`none`)return!1;if(e===`zod`)return`zod`;console.warn(` kick typegen: unknown --schema-validator '${e}' (only 'zod' and 'false' are supported). Falling back to project config.`)}}function $n(e){if(e!==void 0)return e===`false`||e===`off`||e===`none`?!1:e}function er(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: fail on plugin-typegen drift instead of writing`).option(`--list`,"List every registered typegen plugin id (use to populate `typegen.disable`)").action(async e=>{let t=process.cwd(),n=await w(t);if(e.list){let{mergeCliPlugins:e}=await import(`./plugin-DWLsr4yd.mjs`).then(e=>e.t),{builtinCliPlugins:t}=await import(`./builtins-C218lGrx.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(`
1051
+ `),e!==t&&(await I(f,e,`utf-8`),console.log(` Unregistered: ${c}Module from ${f}`))}console.log(`\n Module '${l}' removed.\n`)}function Zn(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=C(await w(process.cwd())),r=t.modulesDir??n.dir??`src/modules`,i=t.pluralize===!1?!1:n.pluralize??!0;for(let n of e)await Xn({name:n,modulesDir:j(r),force:t.force,pluralize:i})})}function Qn(e){if(e!==void 0){if(e===`false`||e===`off`||e===`none`)return!1;if(e===`zod`)return`zod`;console.warn(` kick typegen: unknown --schema-validator '${e}' (only 'zod' and 'false' are supported). Falling back to project config.`)}}function $n(e){if(e!==void 0)return e===`false`||e===`off`||e===`none`?!1:e}function er(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: fail on plugin-typegen drift instead of writing`).option(`--list`,"List every registered typegen plugin id (use to populate `typegen.disable`)").action(async e=>{let t=process.cwd(),n=await w(t);if(e.list){let{mergeCliPlugins:e}=await import(`./plugin-_Kc-Swdx.mjs`).then(e=>e.t),{builtinCliPlugins:t}=await import(`./builtins-CTv3_NFH.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(`
1052
1052
  Registered typegen plugins:
1053
1053
  `);for(let e of r.typegens){let t=i.has(e.id)?` (disabled)`:``;console.log(` ${e.id.padEnd(a+2)}inputs: ${e.inputs.join(`, `)||`(none)`}${t}`)}console.log();return}let r=Qn(e.schemaValidator)??n?.typegen?.schemaValidator??`zod`,i=$n(e.envFile)??n?.typegen?.envFile,a={cwd:t,srcDir:e.src??n?.typegen?.srcDir,outDir:e.out??n?.typegen?.outDir,silent:e.silent,allowDuplicates:e.allowDuplicates,schemaValidator:r,envFile:i,assetMap:n?.assetMap,runPlugins:!1};try{if(e.watch){let t=await ve(a);e.silent||console.log(` kick typegen: watching for changes (Ctrl-C to exit)`);let n=()=>{t(),process.exit(0)};process.on(`SIGINT`,n),process.on(`SIGTERM`,n),await new Promise(()=>{})}else{let{result:r}=await E(a),i=await W({cwd:t,config:n??null,silent:e.silent,check:e.check});e.check&&i.some(e=>e.status===`written`)&&process.exit(1),e.check||await ye(j(t,e.out??n?.typegen?.outDir??`.kickjs/types`),r.written,i,e.silent??!1)}}catch(e){e instanceof xe?console.error(`
1054
1054
  `+e.message+`
@@ -1126,4 +1126,4 @@ declare global {
1126
1126
 
1127
1127
  export {}
1128
1128
  `}const Pr=()=>({id:`kick/env`,outExtension:`.ts`,inputs:[`src/env.ts`,`src/**/env.ts`,`src/**/*.env.ts`],async generate(e){let t=Ir(e);if(t===!1)return null;let n=await e.getScanResult({root:Fr(e),cwd:e.cwd,envFile:t});if(!n.env)return null;let r=D.resolve(e.cwd,`.kickjs/types/kick__env.ts`);return Nr(n.env,r)}});function Fr(e){return D.resolve(e.cwd,e.config?.typegen?.srcDir??`src`)}function Ir(e){return e.config?.typegen?.envFile}const Lr=[T({name:`kick/init`,register:ct}),T({name:`kick/generate`,register:en}),T({name:`kick/run`,register:pn}),T({name:`kick/info`,register:mn}),T({name:`kick/inspect`,register:Sn}),T({name:`kick/add`,register:ot}),T({name:`kick/list`,register:at}),T({name:`kick/explain`,register:Mn}),T({name:`kick/mcp`,register:Vn}),T({name:`kick/tinker`,register:Gn}),T({name:`kick/remove`,register:Zn}),T({name:`kick/typegen`,register:er}),T({name:`kick/check`,register:fr}),T({name:`kick/db`,register:hr,typegens:[yr()]}),T({name:`kick/codemod`,register:_r}),T({name:`kick/assets`,typegens:[Sr()]}),T({name:`kick/routes`,typegens:[Ar()]}),T({name:`kick/env`,typegens:[Pr()]})];export{Lr as builtinCliPlugins,an as n,W as t};
1129
- //# sourceMappingURL=builtins-C218lGrx.mjs.map
1129
+ //# sourceMappingURL=builtins-CTv3_NFH.mjs.map