@forinda/kickjs-cli 8.7.3 → 8.7.4
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/dist/{agent-docs-DX6MnIhC.mjs → agent-docs-D1NiioiC.mjs} +3 -3
- package/dist/{agent-docs-DX6MnIhC.mjs.map → agent-docs-D1NiioiC.mjs.map} +1 -1
- package/dist/{agent-docs-DxhByfcn.mjs → agent-docs-eYzqOuhH.mjs} +2 -2
- package/dist/{build-Cy49Npr6.mjs → build-C8hFoe4D.mjs} +3 -3
- package/dist/{build-Cy49Npr6.mjs.map → build-C8hFoe4D.mjs.map} +1 -1
- package/dist/{build-haiUe62V.mjs → build-Dn_E-sU-.mjs} +2 -2
- package/dist/{builtins-cBxv0ObC.mjs → builtins-9-5q51ha.mjs} +2 -2
- package/dist/{builtins-C7hQTgMr.mjs → builtins-BVbO6V8X.mjs} +4 -4
- package/dist/cli.mjs +2 -2
- package/dist/{config-DA4jfB-g.mjs → config-Bz95PNHt.mjs} +3 -3
- package/dist/{config-DA4jfB-g.mjs.map → config-Bz95PNHt.mjs.map} +1 -1
- package/dist/{config-BjlPtfXg.mjs → config-SmN68KnC.mjs} +2 -2
- package/dist/{doctor-CRWYSXLv.mjs → doctor-Dkavyt1v.mjs} +4 -4
- package/dist/{doctor-CRWYSXLv.mjs.map → doctor-Dkavyt1v.mjs.map} +1 -1
- package/dist/{fs-DmggHklr.mjs → fs-BIgSYmdZ.mjs} +1 -1
- package/dist/{fs-DqQvl1kI.mjs → fs-BOhfpM_y.mjs} +2 -2
- package/dist/{fs-DqQvl1kI.mjs.map → fs-BOhfpM_y.mjs.map} +1 -1
- package/dist/{fullstack-CivXDwvd.mjs → fullstack-4Yb4WDLh.mjs} +3 -3
- package/dist/{fullstack-DTiu0FaD.mjs → fullstack-BJIm48KV.mjs} +4 -4
- package/dist/{fullstack-DTiu0FaD.mjs.map → fullstack-BJIm48KV.mjs.map} +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{plugin-Cwwfx-z7.mjs → plugin-CM08_8-x.mjs} +2 -2
- package/dist/{plugin-_0KxcX-d.mjs → plugin-q9-AlF6C.mjs} +2 -2
- package/dist/{project-B_XAZlBA.mjs → project-B3xCFdaS.mjs} +5 -5
- package/dist/{project-B_XAZlBA.mjs.map → project-B3xCFdaS.mjs.map} +1 -1
- package/dist/{project-7G5CnIBV.mjs → project-D_obb3C8.mjs} +4 -4
- package/dist/{project-root-Dv2lSYgP.mjs → project-root-BkMyQ-hx.mjs} +2 -2
- package/dist/{project-root-CVpGnUzY.mjs → project-root-gBoWn2mp.mjs} +3 -3
- package/dist/{project-root-CVpGnUzY.mjs.map → project-root-gBoWn2mp.mjs.map} +1 -1
- package/dist/{prompts-CSwiYnu4.mjs → prompts-_yTG-mXU.mjs} +2 -2
- package/dist/{prompts-CSwiYnu4.mjs.map → prompts-_yTG-mXU.mjs.map} +1 -1
- package/dist/{rolldown-runtime-B7NNy2_b.mjs → rolldown-runtime-dZfrrS4X.mjs} +1 -1
- package/dist/{run-plugins-aHP64nHF.mjs → run-plugins-BIQikATV.mjs} +4 -4
- package/dist/{run-plugins-aHP64nHF.mjs.map → run-plugins-BIQikATV.mjs.map} +1 -1
- package/dist/{typegen-DStWWgsC.mjs → typegen-CD1WVcaP.mjs} +4 -4
- package/dist/{typegen-Bg-J0TNG.mjs → typegen-F8fT5eSE.mjs} +5 -5
- package/dist/{typegen-Bg-J0TNG.mjs.map → typegen-F8fT5eSE.mjs.map} +1 -1
- package/dist/{types-D-Ip6xZx.mjs → types-DqUW9c4J.mjs} +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @forinda/kickjs-cli v8.7.
|
|
2
|
+
* @forinda/kickjs-cli v8.7.4
|
|
3
3
|
*
|
|
4
4
|
* Copyright (c) Felix Orinda
|
|
5
5
|
*
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @license MIT
|
|
10
10
|
*/
|
|
11
|
-
import{r as e,t}from"./fs-
|
|
11
|
+
import{r as e,t}from"./fs-BOhfpM_y.mjs";import{a as n,n as r,r as i,t as a,u as o}from"./prompts-_yTG-mXU.mjs";import{c as s,i as c}from"./project-B3xCFdaS.mjs";import{o as l}from"./config-Bz95PNHt.mjs";import{t as u}from"./project-root-gBoWn2mp.mjs";import{createRequire as d}from"node:module";import f,{dirname as p,join as m,relative as h,resolve as g}from"node:path";import{existsSync as _,readFileSync as v,readdirSync as y,statSync as b}from"node:fs";import{readFile as x,writeFile as S}from"node:fs/promises";import C from"pluralize";import{pathToFileURL as ee}from"node:url";import{defineGenerator as te}from"@forinda/kickjs-cli-kit";function w(e){return e.replace(/[-_\s]+(.)?/g,(e,t)=>t?t.toUpperCase():``).replace(/^(.)/,e=>e.toUpperCase())}function T(e){let t=w(e);return t.charAt(0).toLowerCase()+t.slice(1)}function E(e){return e.replace(/([a-z])([A-Z])/g,`$1-$2`).replace(/[\s_]+/g,`-`).toLowerCase()}function D(e){return C.plural(e)}function O(e){return C.plural(e)}function k(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}const ne={inmemory:`in-memory`,drizzle:`Drizzle`,prisma:`Prisma`};function re(e){return e.charAt(0).toUpperCase()+e.slice(1).replace(/-([a-z])/g,(e,t)=>t.toUpperCase())}function ie(e){return ne[e]??re(e)}function ae(e){return`create${e}Repository`}function A(e){return e??`define`}function j(e){let{pascal:t,kebab:n,plural:r=``,repo:i,style:a}=e,o=ae(t),s=A(a),c=`/**
|
|
12
12
|
* ${t} Module
|
|
13
13
|
*
|
|
14
14
|
* REST module with a flat folder structure.
|
|
@@ -958,7 +958,7 @@ export const ${l}Schema = ${P(u,`// Define your schema fields here\n name: ${d.
|
|
|
958
958
|
|
|
959
959
|
export type ${c}DTO = ${d.infer(`${l}Schema`)}
|
|
960
960
|
`),f.push(p),f}function Te(){let e=(process.env.LOG_LEVEL??process.env.KICKJS_LOG_LEVEL??``).toLowerCase();return e===`debug`||e===`trace`}var Ee=class extends Error{drifted;constructor(e){let t=e.map(e=>` ${e.id} → ${e.outFile}`).join(`
|
|
961
|
-
`);super(`kick typegen --check: ${e.length} generated file(s) are out of date:\n${t}\n Run \`kick typegen\` and commit the result.`),this.name=`TypegenDriftError`,this.drifted=e}};function De(e){return e}function Oe(e){let t=new Map;return{report(n,r){let i=r instanceof Error?r.message:String(r);t.get(n)!==i&&(t.set(n,i),e(` kick typegen: ${n} pass failed (${i}) — types in .kickjs/types may be stale`))},clear(e){t.delete(e)}}}const ke=`__kickjs_typegen_owner`;function Ae(e){let{cwd:t,config:n}=e,r=e.debounceMs??100,i=e.pipeline??{runTypegen:async e=>(await import(`./typegen-
|
|
961
|
+
`);super(`kick typegen --check: ${e.length} generated file(s) are out of date:\n${t}\n Run \`kick typegen\` and commit the result.`),this.name=`TypegenDriftError`,this.drifted=e}};function De(e){return e}function Oe(e){let t=new Map;return{report(n,r){let i=r instanceof Error?r.message:String(r);t.get(n)!==i&&(t.set(n,i),e(` kick typegen: ${n} pass failed (${i}) — types in .kickjs/types may be stale`))},clear(e){t.delete(e)}}}const ke=`__kickjs_typegen_owner`;function Ae(e){let{cwd:t,config:n}=e,r=e.debounceMs??100,i=e.pipeline??{runTypegen:async e=>(await import(`./typegen-F8fT5eSE.mjs`).then(e=>e.n)).runTypegen(e),runAllPluginTypegens:async e=>(await import(`./run-plugins-BIQikATV.mjs`).then(e=>e.n)).runAllPluginTypegens(e),writeTypegenArtifacts:async(e,t,n)=>(await import(`./typegen-F8fT5eSE.mjs`).then(e=>e.n)).writeTypegenArtifacts(e,t,n),buildAssets:async(e,t)=>(await import(`./build-C8hFoe4D.mjs`).then(e=>e.n)).buildAssets(e,t)},a=n?.typegen?.schemaValidator??`zod`,o=n?.typegen?.envFile,s=f.resolve(t,n?.typegen?.outDir??`.kickjs/types`),c=n?.assetMap?Object.values(n.assetMap).map(e=>e?.src).filter(e=>typeof e==`string`&&e.length>0).map(e=>f.resolve(t,e)):[],l=!!n?.assetMap&&Object.keys(n.assetMap).length>0,u=e=>e.replaceAll(`\\`,`/`),d=c.map(u),p=e=>{let t=u(e);return d.some(e=>t===e||t.startsWith(`${e}/`))},m=Oe(e.emitWarning),h=null,g=!1,_=new Set,v=new Set,y=!1,b=!1;function x(r,c){i.runTypegen({cwd:t,silent:!0,allowDuplicates:!0,schemaValidator:a,envFile:o,srcDir:n?.typegen?.srcDir,outDir:n?.typegen?.outDir,assetMap:n?.assetMap,changedFiles:r,runPlugins:!1}).then(()=>m.clear(`scan`)).catch(e=>m.report(`scan`,e)),i.runAllPluginTypegens({cwd:t,config:n,silent:!0,changedFiles:r,watch:!0}).then(e=>i.writeTypegenArtifacts(s,e,!0)).then(()=>m.clear(`plugins`)).catch(e=>m.report(`plugins`,e)).finally(()=>e.onPassComplete?.()),c&&n&&i.buildAssets(n,{cwd:t,silent:!0}).catch(()=>{})}function S(){let e=y?void 0:{changed:[..._],removed:[...v]},t=b;_.clear(),v.clear(),y=!1,b=!1,x(e,t)}return{assetSrcRoots:c,handleWatchEvent(e,t){if(!g&&!u(t).includes(`/.kickjs/`)){if(e===`unlinkDir`)y=!0,l&&(b=!0);else{if(t.endsWith(`.d.ts`))return;let n=/\.(ts|tsx|mts|cts)$/.test(t),r=p(t);if(!n&&!r)return;r&&l&&(b=!0),n&&(e===`unlink`?(v.add(t),_.delete(t)):(_.add(t),v.delete(t)))}h&&clearTimeout(h),h=setTimeout(S,r)}},runOnce(){g||x(void 0,l)},dispose(){g=!0,h&&clearTimeout(h),h=null}}}function je(e){return E(e).replace(/-/g,`_`)}function G(e){let t=e.cwd??process.cwd(),n=e.projectRoot??u(t),r=e.pluralize??!0,i=w(e.name),a=T(e.name),o=E(e.name),s=je(e.name),c={name:e.name,pascal:i,camel:a,kebab:o,snake:s,modulesDir:e.modulesDir??`src/modules`,cwd:t,projectRoot:n,args:e.args??[],flags:e.flags??{}};if(r){let e=D(o);c.pluralKebab=e,c.pluralPascal=w(e),c.pluralCamel=T(e)}return c}function Me(e,t){return g(e.cwd,t)}async function Ne(e){return import(ee(e).href)}const K=new Map;async function q(e){let t=K.get(e);if(t)return t;let n=Pe(e);return K.set(e,n),n}async function Pe(e){let t=g(e,`package.json`);if(!_(t))return{generators:[],loaded:[],failed:[]};let n=J(JSON.parse(await x(t,`utf-8`))),r=d(g(e,`package.json`)),i=[],a=[],o=[];for(let e of n){let t;try{t=r.resolve(`${e}/package.json`)}catch{continue}let n;try{n=JSON.parse(await x(t,`utf-8`))}catch(t){o.push({source:e,reason:`failed to parse package.json: ${t}`});continue}if(!n.kickjs?.generators)continue;let s=n.kickjs.generators,c=g(p(t),s);if(!_(c)){o.push({source:e,reason:`kickjs.generators points to missing file: ${s}`});continue}let l;try{l=await Ne(c)}catch(t){o.push({source:e,reason:`failed to import manifest: ${t}`});continue}let u=l.default;if(!Array.isArray(u)){o.push({source:e,reason:`manifest's default export is not an array of GeneratorSpec`});continue}for(let t of u){if(!Fe(t)){o.push({source:e,reason:`manifest entry is not a valid GeneratorSpec (missing name/files)`});continue}i.push({source:e,spec:t})}a.push(e)}return{generators:i,loaded:a,failed:o}}function J(e){let t=new Set;for(let n of[e.dependencies,e.devDependencies,e.peerDependencies])if(n)for(let e of Object.keys(n))t.add(e);return Array.from(t)}function Fe(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.name==`string`&&typeof t.files==`function`}async function Ie(e,t=[]){let n=e.cwd??process.cwd(),r=t.find(t=>t.spec.name===e.generatorName);if(r)return Y(r.spec,r.source,e,n);let i=Re(await q(n),e.generatorName);return i?Y(i.spec,i.source,e,n):null}async function Le(e,t=[]){let n=await q(e),r=new Set(t.map(e=>e.spec.name)),i=n.generators.filter(e=>!r.has(e.spec.name));return{generators:[...t,...i],loaded:n.loaded,failed:n.failed}}function Re(e,t){return e.generators.find(e=>e.spec.name===t)}async function Y(t,n,r,i){let a=G({name:r.itemName,args:r.args,flags:r.flags,modulesDir:r.modulesDir,pluralize:r.pluralize,cwd:i,projectRoot:r.projectRoot}),o=await t.files(a),s=[];for(let t of o){let n=Me(a,t.path);await e(n,t.content),s.push(n)}return{files:s,source:n}}function ze(e){return e}function Be(e){return e}function Ve(e){try{return JSON.parse(v(e,`utf-8`))}catch{return null}}function X(e){try{return v(e,`utf-8`)}catch{return null}}function He(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,``).replace(/(^|[^:"'\\])\/\/.*$/gm,`$1`).replace(/,(\s*[}\]])/g,`$1`);try{return JSON.parse(t)}catch{return null}}function Ue(e){let t=m(e,`tsconfig.json`);if(_(t))return Z(t,new Set)}function Z(e,t){if(t.has(e)||t.size>=16)return null;t.add(e);let n=X(e);if(n===null)return null;let r=He(n);if(typeof r!=`object`||!r)return null;let i=Array.isArray(r.extends)?r.extends:typeof r.extends==`string`?[r.extends]:[],a={};for(let n of i){if(typeof n!=`string`)continue;let r=We(p(e),n);if(!r)continue;let i=Z(r,t);i&&Object.assign(a,i.compilerOptions)}return r.compilerOptions={...a,...r.compilerOptions},r}function We(e,t){if(t.startsWith(`.`)||t.startsWith(`/`))return Q(g(e,t));let n=e;for(;;){let e=Q(m(n,`node_modules`,t));if(e)return e;let r=p(n);if(r===n)break;n=r}return null}function Q(e){if(_(e)){try{if(b(e).isDirectory()){let t=m(e,`tsconfig.json`);return _(t)?t:null}}catch{return null}return e}let t=`${e}.json`;return _(t)?t:null}function Ge(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ke(){let e=process.version,t=Number.parseInt(e.replace(/^v/,``).split(`.`)[0],10);return Number.isNaN(t)||t<20?{name:`Node version`,status:`fail`,message:e,fix:`KickJS requires Node 20 or newer.
|
|
962
962
|
Install a supported version via nvm / fnm / volta.`}:{name:`Node version`,status:`pass`,message:e}}function qe(e){if(!e.pkg)return{name:`@forinda/kickjs installed`,status:`warn`,message:`no package.json`};let t={...e.pkg.dependencies,...e.pkg.peerDependencies};return t[`@forinda/kickjs`]?{name:`@forinda/kickjs installed`,status:`pass`,message:t[`@forinda/kickjs`]}:{name:`@forinda/kickjs installed`,status:`fail`,fix:"This directory does not look like a KickJS project — `@forinda/kickjs` is not in your package.json. Run `kick doctor` from the project root, or scaffold a fresh project with `kick new <name>`."}}function Je(e){if(!e.pkg)return null;let t={...e.pkg.dependencies,...e.pkg.peerDependencies};return t[`@forinda/kickjs`]&&!t.express?{name:`express installed`,status:`fail`,fix:"`@forinda/kickjs` declares `express` as a required peer dependency, but your package.json does not include it. Install: pnpm add express"}:t.express?{name:`express installed`,status:`pass`,message:t.express}:null}const Ye={express:[],fastify:[`fastify`,`@fastify/middie`],h3:[`h3`]};function Xe(e){if(!e.pkg||e.runtime===`express`)return null;let t={...e.pkg.dependencies,...e.pkg.peerDependencies,...e.pkg.devDependencies},n=Ye[e.runtime].filter(e=>!t[e]),r=`runtime engine (${e.runtime})`;return n.length>0?{name:r,status:`fail`,fix:`Resolved runtime '${e.runtime}' is missing engine peer(s): ${n.join(`, `)}.\nInstall: pnpm add ${n.join(` `)}`}:{name:r,status:`pass`}}function Ze(e){if(!e.pkg||!Qe(e.cwd))return null;let t=c[e.runtime],n=`upload driver (${e.runtime})`;return t.prod?{...e.pkg.dependencies,...e.pkg.peerDependencies,...e.pkg.devDependencies}[t.prod]?{name:n,status:`pass`,message:t.prod}:{name:n,status:`fail`,fix:`This project uses file uploads on the '${e.runtime}' runtime, which needs '${t.prod}'.\nInstall it: kick add upload (or pnpm add ${t.prod})`}:{name:n,status:`pass`,message:`native multipart`}}const $=2e3;function Qe(e){let t=m(e,`src`);if(!_(t))return!1;let n=/@FileUpload\b|\bupload\.(single|array|none)\s*\(/,r=[t],i=0;for(;r.length>0&&i<$;){let e=r.pop(),t;try{t=y(e,{withFileTypes:!0})}catch{continue}for(let a of t){if(i>=$)break;let t=m(e,a.name);if(a.isDirectory()){a.name!==`node_modules`&&r.push(t);continue}if(/\.(ts|tsx|mts|cts)$/.test(a.name)&&(i++,n.test(X(t)??``)))return!0}}return!1}function $e(e){if(!e.pkg)return{name:`reflect-metadata installed`,status:`warn`,message:`no package.json`};let t={...e.pkg.dependencies,...e.pkg.peerDependencies,...e.pkg.devDependencies};return t[`reflect-metadata`]?{name:`reflect-metadata installed`,status:`pass`,message:t[`reflect-metadata`]}:{name:`reflect-metadata installed`,status:`fail`,fix:`KickJS decorators require the reflect-metadata polyfill.
|
|
963
963
|
Install it: pnpm add reflect-metadata
|
|
964
964
|
Then import it at the top of src/index.ts:
|
|
@@ -974,4 +974,4 @@ holding the whole environment the suite should run against
|
|
|
974
974
|
and supply env from the test runner.`}}const ut=[()=>Ke(),qe,Je,Xe,Ze,$e,et,tt,lt,it];async function dt(e,t={}){let n={cwd:e,pkg:Ve(m(e,`package.json`)),tsconfig:Ue(e),runtime:t.runtime??`express`},r=[...ut,...t.extraChecks??[]],i=[];for(let e of r){let t;try{t=await e(n)}catch(t){i.push({name:e.name||`doctor check`,status:`fail`,message:t instanceof Error?t.message:String(t)});continue}t!=null&&(Array.isArray(t)?i.push(...t):i.push(t))}return i}function ft(e){switch(e){case`pass`:return o.green(`✔`);case`warn`:return o.yellow(`⚠`);case`fail`:return o.red(`✖`)}}function pt(e){let t=ft(e.status),n=e.message?` ${o.dim(`(${e.message})`)}`:``;return`${t} ${e.name}${n}`}function mt(e){return e.split(`
|
|
975
975
|
`).map(e=>` ${o.dim(`→`)} ${e}`).join(`
|
|
976
976
|
`)}function ht(e){return e?.doctor?.checks??[]}function gt(e){e.command(`doctor`).description(`Pre-flight checks for your KickJS project (dev environment health)`).action(async()=>{let e=process.cwd(),t=ht(await l(e)),a=await s(e);r(`KickJS Doctor`);let c=await dt(e,{extraChecks:t,runtime:a});for(let e of c)i.message(pt(e)),e.fix&&e.status!==`pass`&&i.message(mt(e.fix));let u=c.filter(e=>e.status===`pass`).length,d=c.filter(e=>e.status===`warn`).length,f=c.filter(e=>e.status===`fail`).length,p=[o.green(`${u} passed`),d>0?o.yellow(`${d} warning${d===1?``:`s`}`):`${d} warnings`,f>0?o.red(`${f} error${f===1?``:`s`}`):`${f} errors`].join(`, `);f>0?(n(`${p} — fix the errors above before running the app`),process.exit(1)):n(d>0?`${p} — review the warnings`:o.green(`${p} — your environment looks good`))})}export{k as A,he as C,F as D,I as E,w as F,O as M,T as N,M as O,E as P,B as S,L as T,be as _,Ie as a,U as b,ke as c,De as d,Te as f,xe as g,Se as h,Le as i,D as j,j as k,Ae as l,Ce as m,ze as n,G as o,we as p,gt as r,te as s,Be as t,Ee as u,W as v,me as w,R as x,ve as y};
|
|
977
|
-
//# sourceMappingURL=doctor-
|
|
977
|
+
//# sourceMappingURL=doctor-Dkavyt1v.mjs.map
|