@forinda/kickjs-cli 6.1.0 → 6.1.1
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/README.md +1 -1
- package/dist/{agent-docs-DB5y-kvS.mjs → agent-docs-GpRHHdWC.mjs} +3 -3
- package/dist/{agent-docs-DB5y-kvS.mjs.map → agent-docs-GpRHHdWC.mjs.map} +1 -1
- package/dist/{build-9YFC7Rd4.mjs → build-D9X9QBkC.mjs} +3 -3
- package/dist/{build-9YFC7Rd4.mjs.map → build-D9X9QBkC.mjs.map} +1 -1
- package/dist/{builtins-mr3TIDa8.mjs → builtins-DHcybuaw.mjs} +2 -2
- package/dist/cli.mjs +6 -6
- package/dist/{config-Dc4XuP2E.mjs → config-DLy6JCCy.mjs} +3 -3
- package/dist/{config-Dc4XuP2E.mjs.map → config-DLy6JCCy.mjs.map} +1 -1
- package/dist/{doctor-shX-k8ju.mjs → doctor-CcVNNzGj.mjs} +6 -6
- package/dist/{doctor-shX-k8ju.mjs.map → doctor-CcVNNzGj.mjs.map} +1 -1
- package/dist/index.d.mts +8 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{plugin-DVOWYRqG.mjs → plugin-C6jhcq0N.mjs} +3 -3
- package/dist/{plugin-DVOWYRqG.mjs.map → plugin-C6jhcq0N.mjs.map} +1 -1
- package/dist/{project-docs-Cq_MswOY.mjs → project-docs-CqOymvmb.mjs} +2 -2
- package/dist/{project-docs-Cq_MswOY.mjs.map → project-docs-CqOymvmb.mjs.map} +1 -1
- package/dist/{project-root-C3u57Vec.mjs → project-root-yLxS5CqO.mjs} +3 -3
- package/dist/{project-root-C3u57Vec.mjs.map → project-root-yLxS5CqO.mjs.map} +1 -1
- package/dist/{rolldown-runtime-BMxBusPc.mjs → rolldown-runtime-BnMWUWuC.mjs} +1 -1
- package/dist/{run-plugins-COniKxrL.mjs → run-plugins-CubT9x_A.mjs} +5 -5
- package/dist/run-plugins-CubT9x_A.mjs.map +1 -0
- package/dist/{typegen-DPATg8Ix.mjs → typegen-BJwy65-p.mjs} +5 -5
- package/dist/{typegen-DPATg8Ix.mjs.map → typegen-BJwy65-p.mjs.map} +1 -1
- package/dist/{types-B2r_OeIa.mjs → types-D7d_Y66D.mjs} +1 -1
- package/package.json +4 -4
- package/dist/run-plugins-COniKxrL.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-root-
|
|
1
|
+
{"version":3,"file":"project-root-yLxS5CqO.mjs","names":[],"sources":["../src/utils/project-root.ts"],"sourcesContent":["import { existsSync } from 'node:fs'\nimport { dirname, parse, resolve } from 'node:path'\n\nconst CONFIG_FILENAMES = ['kick.config.ts', 'kick.config.js', 'kick.config.mjs', 'kick.config.json']\n\n/**\n * Walk up from `startDir` looking for the project root. A directory\n * counts as the root when it contains any of:\n * - `kick.config.{ts,js,mjs,json}` (strongest signal)\n * - `package.json` (fallback when no config file exists yet)\n *\n * Returns the absolute path of the first matching directory, or\n * `startDir` itself when nothing was found (no surprises — callers\n * that didn't find a config still get a reasonable cwd).\n *\n * `kick.config.*` wins over `package.json` when both appear at\n * different levels, so adopters running `kick typegen` from `src/`\n * land on the project root that owns the config, not on the nearest\n * workspace package boundary in a monorepo.\n */\nexport function findProjectRoot(startDir: string = process.cwd()): string {\n const start = resolve(startDir)\n const { root: fsRoot } = parse(start)\n\n let firstPackageJson: string | null = null\n let cursor = start\n while (true) {\n for (const name of CONFIG_FILENAMES) {\n if (existsSync(resolve(cursor, name))) return cursor\n }\n if (firstPackageJson === null && existsSync(resolve(cursor, 'package.json'))) {\n firstPackageJson = cursor\n }\n if (cursor === fsRoot) break\n const parent = dirname(cursor)\n if (parent === cursor) break\n cursor = parent\n }\n\n return firstPackageJson ?? start\n}\n"],"mappings":";;;;;;;;;;sLAGA,MAAM,EAAmB,CAAC,iBAAkB,iBAAkB,kBAAmB,kBAAkB,EAiBnG,SAAgB,EAAgB,EAAmB,QAAQ,IAAI,EAAW,CACxE,IAAM,EAAQ,EAAQ,CAAQ,EACxB,CAAE,KAAM,GAAW,EAAM,CAAK,EAEhC,EAAkC,KAClC,EAAS,EACb,OAAa,CACX,IAAK,IAAM,KAAQ,EACjB,GAAI,EAAW,EAAQ,EAAQ,CAAI,CAAC,EAAG,OAAO,EAKhD,GAHI,IAAqB,MAAQ,EAAW,EAAQ,EAAQ,cAAc,CAAC,IACzE,EAAmB,GAEjB,IAAW,EAAQ,MACvB,IAAM,EAAS,EAAQ,CAAM,EAC7B,GAAI,IAAW,EAAQ,MACvB,EAAS,CACX,CAEA,OAAO,GAAoB,CAC7B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @forinda/kickjs-cli v6.1.
|
|
2
|
+
* @forinda/kickjs-cli v6.1.1
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Felix Orinda
|
|
5
5
|
*
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @license MIT
|
|
10
10
|
*/
|
|
11
|
-
import{_ as e,b as t,c as n,d as r,f as i,g as a,h as o,l as s,m as c,p as l,s as u,u as d,v as f,y as p}from"./project-docs-
|
|
11
|
+
import{_ as e,b as t,c as n,d as r,f as i,g as a,h as o,l as s,m as c,p as l,s as u,u as d,v as f,y as p}from"./project-docs-CqOymvmb.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 x,a as S,b as re,c as ie,d as ae,f as oe,g as se,h as ce,i as le,j as ue,k as C,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-CcVNNzGj.mjs";import{a as w,i as T,o as be,s as xe,t as E}from"./config-DLy6JCCy.mjs";import{t as Se}from"./project-root-yLxS5CqO.mjs";import{n as D}from"./types-D7d_Y66D.mjs";import{t as Ce}from"./build-D9X9QBkC.mjs";import{n as we}from"./agent-docs-GpRHHdWC.mjs";import{n as Te}from"./plugin-C6jhcq0N.mjs";import{a as Ee,c as De,d as Oe,f as ke,g as Ae,h as je,i as Me,l as Ne,m as Pe,o as Fe,p as Ie,r as Le,s as Re,t as ze,u as Be}from"./typegen-BJwy65-p.mjs";import O,{basename as Ve,dirname as k,join as A,relative as j,resolve as M,sep as N}from"node:path";import{cpSync as He,existsSync as P,mkdirSync as Ue,readFileSync as F,readdirSync as We,rmSync as Ge,writeFileSync as Ke}from"node:fs";import{copyFile as qe,mkdir as Je,readFile as I,readdir as Ye,rm as Xe,stat as Ze,writeFile as L}from"node:fs/promises";import{execSync as Qe,fork as $e,spawn as et,spawnSync as tt}from"node:child_process";import{fileURLToPath as nt,pathToFileURL as R}from"node:url";import{arch as rt,platform as it,release as at}from"node:os";const z={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},zod:{pkg:`zod`,peers:[],description:`Zod schema validation (env, DTOs, OpenAPI) — wrap with fromZod()`},valibot:{pkg:`valibot`,peers:[],description:`Valibot schema validation — wrap with fromValibot()`},yup:{pkg:`yup`,peers:[],description:`Yup schema validation — wrap with fromYup()`},auth:{pkg:`@forinda/kickjs-auth`,peers:[`jsonwebtoken`],description:`JWT, API key, OAuth strategies, @Public, @Roles (+ optional argon2/bcryptjs)`,deprecated:`auth is moving to BYO — compose @LoadAuthUser/@RequireRole/@Public from defineContextDecorator (see the BYO Auth recipe in the docs)`},ai:{pkg:`@forinda/kickjs-ai`,peers:[`zod`],description:`AI toolkit — LLM providers, tool definitions from controllers`},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`},pg:{pkg:`@forinda/kickjs-db`,peers:[`pg`],description:`kick/db + PostgreSQL driver (use @forinda/kickjs-db/pg)`},sqlite:{pkg:`@forinda/kickjs-db`,peers:[`better-sqlite3`],description:`kick/db + SQLite driver (use @forinda/kickjs-db/sqlite)`},mysql:{pkg:`@forinda/kickjs-db`,peers:[`mysql2`],description:`kick/db + MySQL driver (use @forinda/kickjs-db/mysql)`},drizzle:{pkg:`@forinda/kickjs-drizzle`,peers:[`drizzle-orm`],description:`Drizzle ORM adapter + query builder`,deprecated:"early-adoption adapter, no longer maintained — wire Drizzle directly (BYO), or use @forinda/kickjs-db, the built-in Kick ORM (`kick add db` / pg / sqlite / mysql)"},prisma:{pkg:`@forinda/kickjs-prisma`,peers:[`@prisma/client`],description:`Prisma adapter + query builder`,deprecated:"early-adoption adapter, no longer maintained — wire Prisma directly (BYO), or use @forinda/kickjs-db, the built-in Kick ORM (`kick add db` / pg / sqlite / mysql)"},ws:{pkg:`@forinda/kickjs-ws`,peers:[`ws`],description:`WebSocket with @WsController decorators`},devtools:{pkg:`@forinda/kickjs-devtools`,peers:[],description:`Development dashboard — routes, DI, metrics, health`,dev:!0},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`},"queue:redis-pubsub":{pkg:`@forinda/kickjs-queue`,peers:[`ioredis`],description:`Lightweight pub/sub via Redis (no persistence)`},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 B(e,t=process.cwd()){let n=t;for(;;){if(P(M(n,e)))return n;let t=k(n);if(t===n)return null;n=t}}function ot(){return B(`pnpm-lock.yaml`)?`pnpm`:B(`yarn.lock`)?`yarn`:B(`bun.lockb`)||B(`bun.lock`)?`bun`:B(`package-lock.json`)?`npm`:null}function st(){let e=process.cwd();for(;e;){let t=M(e,`package.json`);if(P(t))try{let e=JSON.parse(F(t,`utf-8`)).packageManager;if(typeof e==`string`){let t=e.split(`@`)[0];if(E.includes(t))return t}}catch{}let n=k(e);if(n===e)return null;e=n}return null}async function ct(e){if(e&&E.includes(e))return{pm:e,source:`flag`};let t=await T(process.cwd());if(t?.packageManager&&E.includes(t.packageManager))return{pm:t.packageManager,source:`config`};let n=st();if(n)return{pm:n,source:`package.json`};let r=ot();return r?{pm:r,source:`lockfile`}:{pm:`npm`,source:`default`}}async function lt(e){let{pm:t}=await ct(e);return t}function ut(e=!1){let t=Object.entries(z),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(`, `)})`:``,a=t.deprecated?` [DEPRECATED — ${t.deprecated}]`:``;return` ${r} ${t.description}${i}${a}`};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):
|
|
@@ -545,9 +545,9 @@ server.on('exit', () => {
|
|
|
545
545
|
Cancelled.
|
|
546
546
|
`);return}await Xe(l,{recursive:!0,force:!0}),console.log(` Deleted: ${l}`);let d=A(n,`index.ts`);if(await f(d)){let e=await I(d,`utf-8`),t=e,n=RegExp(`^import\\s*\\{\\s*${C(s)}Module\\s*\\}\\s*from\\s*['"][^'"]*${C(c)}(?:/[^'"]*)?['"].*\\n?`,`gm`);e=e.replace(n,``),e=Kn(e,s),e=e.replace(/\n{3,}/g,`
|
|
547
547
|
|
|
548
|
-
`),e!==t&&(await L(d,e,`utf-8`),console.log(` Unregistered: ${s}Module from ${d}`))}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 T(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: 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=Se(process.cwd()),n=await T(t);if(e.list){let{mergeCliPlugins:e}=await import(`./plugin-
|
|
548
|
+
`),e!==t&&(await L(d,e,`utf-8`),console.log(` Unregistered: ${s}Module from ${d}`))}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 T(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: fail on plugin-typegen drift instead of writing`).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=Se(process.cwd()),n=await T(t);if(e.list){let{mergeCliPlugins:e}=await import(`./plugin-C6jhcq0N.mjs`).then(e=>e.t),{builtinCliPlugins:t}=await import(`./builtins-DHcybuaw.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(`
|
|
549
549
|
Registered typegen plugins:
|
|
550
|
-
`);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=Yn(e.schemaValidator)??n?.typegen?.schemaValidator??`zod`,i=Xn(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 Le(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{await ze(a);let r=await $t({cwd:t,config:n??null,silent:e.silent,check:e.check});e.check&&r.some(e=>e.status===`written`)&&process.exit(1),e.check||await Me(M(t,e.out??n?.typegen?.outDir??`.kickjs/types`),r,e.silent??!1)}}catch(e){e instanceof Re?console.error(`
|
|
550
|
+
`);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=Yn(e.schemaValidator)??n?.typegen?.schemaValidator??`zod`,i=Xn(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,noCache:e.cache===!1,schemaValidator:r,envFile:i,assetMap:n?.assetMap,runPlugins:!1};try{if(e.watch){let t=await Le(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{await ze(a);let r=await $t({cwd:t,config:n??null,silent:e.silent,check:e.check});e.check&&r.some(e=>e.status===`written`)&&process.exit(1),e.check||await Me(M(t,e.out??n?.typegen?.outDir??`.kickjs/types`),r,e.silent??!1)}}catch(e){e instanceof Re?console.error(`
|
|
551
551
|
`+e.message+`
|
|
552
552
|
`):e instanceof Error?console.error(`\n kick typegen failed: ${e.message}`):console.error(`\n kick typegen failed: ${JSON.stringify(e)}`),process.exit(1)}})}function Qn(e){let t=[];if(!P(e))return t;let n=We(e,{withFileTypes:!0});for(let r of n){let n=A(e,r.name);if(r.isDirectory()){if([`node_modules`,`dist`,`.kickjs`,`.git`].includes(r.name))continue;t.push(...Qn(n))}else r.isFile()&&/\.tsx?$/.test(r.name)&&!r.name.endsWith(`.d.ts`)&&t.push(n)}return t}function $n(e){try{return F(e,`utf-8`)}catch{return``}}const er=new Set([`secret`,`changeme`,`password`,`test`,`default`,``]);function tr(e,t){let n=$n(A(e,`.env`));if(n){let e=n.match(/^JWT_SECRET\s*=\s*['"]?([^'"\n]*)['"]?/m);if(e){let t=e[1].trim();if(er.has(t.toLowerCase())||t.length<32)return{severity:`CRITICAL`,message:`JWT_SECRET appears to be a default value or too short (< 32 chars) — change it`}}}for(let e of t)for(let t of[/JWT_SECRET['"]?\s*[:=]\s*['"]?(secret|changeme|password|test|default)['"]?/i,/secret\s*[:=]\s*['"]?(secret|changeme|password|test|default)['"]?/i])if(t.test(e))return{severity:`CRITICAL`,message:`JWT_SECRET appears to be a default value in source code — use an environment variable`};return null}function nr(e){for(let t of e)if(/cors\s*\(/.test(t)&&/origin\s*:\s*['"]\*['"]/.test(t))return{severity:`CRITICAL`,message:`CORS origin is '*' — restrict to your domains`};return null}function rr(e){for(let t of e)if(/rateLimit/i.test(t)||/@RateLimit/i.test(t))return null;return{severity:`WARNING`,message:`No rate limiting detected — add rateLimit() middleware or @RateLimit decorator`}}function ir(){return process.env.NODE_ENV===`production`?null:{severity:`WARNING`,message:`NODE_ENV is '${process.env.NODE_ENV??`undefined`}', not 'production'`}}function ar(e){let t=!1,n=!1;for(let r of e)/tokenStore/i.test(r)&&(t=!0),/MemoryTokenStore/i.test(r)&&(n=!0);return n?{severity:`WARNING`,message:`MemoryTokenStore detected — use a persistent store (Redis, DB) for production deployments`}:t?null:{severity:`WARNING`,message:`No token revocation store detected — consider adding one for auth token management`}}function or(e){for(let t of e)if(/helmet\s*\(/.test(t))return/security\s*\.\s*helmet\s*.*false/.test(t)?{severity:`WARNING`,message:`Helmet security headers are disabled — enable them for production`}:{severity:`INFO`,message:`Helmet security headers active`};return{severity:`WARNING`,message:`Helmet not detected — add helmet() middleware for security headers`}}function sr(e){for(let t of e)if(/AuthAdapter/i.test(t))return{severity:`INFO`,message:`AuthAdapter configured`};return{severity:`INFO`,message:`No AuthAdapter detected — add one if your app requires authentication`}}function cr(e){let t=Qn(A(e,`src`)).map(e=>$n(e)),n=[],r=tr(e,t);r&&n.push(r);let i=nr(t);i&&n.push(i);let a=rr(t);a&&n.push(a);let o=ir();o&&n.push(o);let s=ar(t);return s&&n.push(s),n.push(or(t)),n.push(sr(t)),n}function lr(t){t.command(`check`).description(`Audit project for common issues`).option(`--deploy`,`Run production readiness checks`).action(t=>{if(!t.deploy){console.log(`
|
|
553
553
|
Usage: kick check --deploy
|
|
@@ -624,4 +624,4 @@ declare global {
|
|
|
624
624
|
|
|
625
625
|
export {}
|
|
626
626
|
`}const wr=()=>({id:`kick/env`,outExtension:`.ts`,inputs:[`src/env.ts`,`src/**/env.ts`,`src/**/*.env.ts`],async generate(e){let t=Er(e);if(t===!1)return null;let n=await e.getScanResult({root:Tr(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 Cr(n.env,i,r)}});function Tr(e){return O.resolve(e.cwd,e.config?.typegen?.srcDir??`src`)}function Er(e){return e.config?.typegen?.envFile}function Dr(e){return O.resolve(e.cwd,e.config?.typegen?.srcDir??`src`)}function Or(e){let t=e.config?.typegen?.envFile;if(t!==!1)return t}function $(e){return{root:Dr(e),cwd:e.cwd,envFile:Or(e)}}const kr=[D({name:`kick/init`,register:ht}),D({name:`kick/generate`,register:Kt}),D({name:`kick/run`,register:on}),D({name:`kick/info`,register:dn}),D({name:`kick/inspect`,register:yn}),D({name:`kick/add`,register:pt}),D({name:`kick/list`,register:ft}),D({name:`kick/explain`,register:kn}),D({name:`kick/mcp`,register:Rn}),D({name:`kick/tinker`,register:Hn}),D({name:`kick/remove`,register:Jn}),D({name:`kick/typegen`,register:Zn}),D({name:`kick/check`,register:lr}),D({name:`kick/doctor`,register:me}),D({name:`kick/codemod`,register:dr}),D({name:`kick/registry`,typegens:[{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 Ie(t.classes,n,r)}}]}),D({name:`kick/services`,typegens:[{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 Pe(`ServiceToken`,Ne(t.classes,t.tokens,t.injects,n),"(no tokens discovered — declare with createToken<T>() or `kick g service <name>`)")}}]}),D({name:`kick/modules`,typegens:[{id:`kick/modules`,inputs:[`src/**/*.ts`],async generate(e){return Pe(`ModuleToken`,De((await e.getScanResult($(e))).classes),"(no @Module classes discovered — `kick g module <name>` to add one)")}}]}),D({name:`kick/plugins`,typegens:[{id:`kick/plugins`,inputs:[`src/**/*.ts`],async generate(e){return ke((await e.getScanResult($(e))).pluginsAndAdapters)}}]}),D({name:`kick/augmentations`,typegens:[{id:`kick/augmentations`,inputs:[`src/**/*.ts`],async generate(e){return Be((await e.getScanResult($(e))).augmentations)}}]}),D({name:`kick/context`,typegens:[{id:`kick/context`,inputs:[`src/**/*.ts`],async generate(e){let t=await e.getScanResult($(e));return t.contextKeys.length===0?null:Oe(t.contextKeys)}}]}),D({name:`kick/assets`,typegens:[fr()]}),D({name:`kick/routes`,typegens:[br()]}),D({name:`kick/env`,typegens:[wr()]})];export{Zt as applyDisableFilter,$t as runAllPluginTypegens,kr as t};
|
|
627
|
-
//# sourceMappingURL=run-plugins-
|
|
627
|
+
//# sourceMappingURL=run-plugins-CubT9x_A.mjs.map
|