@forinda/kickjs-cli 8.11.0 → 8.12.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.
Files changed (53) hide show
  1. package/dist/{agent-docs-DUxCvCBc.mjs → agent-docs-CuD2-X3w.mjs} +2 -2
  2. package/dist/{agent-docs-DGE_9641.mjs → agent-docs-ykxoPqXX.mjs} +3 -3
  3. package/dist/{agent-docs-DGE_9641.mjs.map → agent-docs-ykxoPqXX.mjs.map} +1 -1
  4. package/dist/{build-BUFgk6Ss.mjs → build-C-AsmCh1.mjs} +2 -2
  5. package/dist/{build-BQiF63pu.mjs → build-DQnV0GCD.mjs} +3 -3
  6. package/dist/{build-BQiF63pu.mjs.map → build-DQnV0GCD.mjs.map} +1 -1
  7. package/dist/{builtins-CaOnJmm8.mjs → builtins-BsYCQU80.mjs} +2 -2
  8. package/dist/{builtins-d9YrHyb1.mjs → builtins-Cjp9FT1m.mjs} +107 -107
  9. package/dist/cli.mjs +2 -2
  10. package/dist/config-DMFwBdWg.mjs +12 -0
  11. package/dist/config-DbnBakh8.mjs +13 -0
  12. package/dist/config-DbnBakh8.mjs.map +1 -0
  13. package/dist/{doctor-CYnItgYt.mjs → doctor-rEbeoAoO.mjs} +21 -21
  14. package/dist/doctor-rEbeoAoO.mjs.map +1 -0
  15. package/dist/{fullstack-D6ikgPKw.mjs → fullstack-DdSScENL.mjs} +3 -3
  16. package/dist/{fullstack--utMEADY.mjs → fullstack-XhuwRQEb.mjs} +4 -4
  17. package/dist/{fullstack--utMEADY.mjs.map → fullstack-XhuwRQEb.mjs.map} +1 -1
  18. package/dist/index.d.mts +8 -2
  19. package/dist/index.d.mts.map +1 -1
  20. package/dist/index.mjs +2 -2
  21. package/dist/package-manager-C8ekNwsa.mjs +11 -0
  22. package/dist/package-manager-DvXi-NGm.mjs +12 -0
  23. package/dist/package-manager-DvXi-NGm.mjs.map +1 -0
  24. package/dist/{plugin-C7ybMh21.mjs → plugin--9hxxgsD.mjs} +2 -2
  25. package/dist/{plugin-DS5g6A5U.mjs → plugin-CvlUt9NG.mjs} +2 -2
  26. package/dist/{project-CGCAZsQV.mjs → project-BN1DnrN3.mjs} +5 -5
  27. package/dist/{project-CGCAZsQV.mjs.map → project-BN1DnrN3.mjs.map} +1 -1
  28. package/dist/{project-CDUJMeIr.mjs → project-DBmrFgdd.mjs} +4 -4
  29. package/dist/{project-root-Da2aMneY.mjs → project-root-BXmtd-te.mjs} +2 -2
  30. package/dist/{project-root-ThZdP1t_.mjs → project-root-FMt83NHV.mjs} +3 -3
  31. package/dist/{project-root-ThZdP1t_.mjs.map → project-root-FMt83NHV.mjs.map} +1 -1
  32. package/dist/{prompts-Pzk_Seut.mjs → prompts-DJBDNwHt.mjs} +2 -2
  33. package/dist/{prompts-Pzk_Seut.mjs.map → prompts-DJBDNwHt.mjs.map} +1 -1
  34. package/dist/{rolldown-runtime-DAPeToCs.mjs → rolldown-runtime-C4d34LEE.mjs} +1 -1
  35. package/dist/{run-plugins-Du6FlB7_.mjs → run-plugins-9tjbMqS6.mjs} +80 -80
  36. package/dist/run-plugins-9tjbMqS6.mjs.map +1 -0
  37. package/dist/{typegen-9tepCLIZ.mjs → typegen-AGdhxyRc.mjs} +5 -5
  38. package/dist/{typegen-9tepCLIZ.mjs.map → typegen-AGdhxyRc.mjs.map} +1 -1
  39. package/dist/{typegen-BkpCnSQ3.mjs → typegen-Lf0UPhdl.mjs} +4 -4
  40. package/dist/{types-DJXxhn43.mjs → types-B5dY2mTz.mjs} +1 -1
  41. package/package.json +3 -3
  42. package/templates/base/files/tsconfig.json +3 -1
  43. package/templates/template-inertia/feature.json +1 -1
  44. package/templates/template-inertia/files/tsconfig.json +3 -1
  45. package/templates/template-inertia/files/vite.config.ts +3 -2
  46. package/dist/config-CcsYA02N.mjs +0 -13
  47. package/dist/config-CcsYA02N.mjs.map +0 -1
  48. package/dist/config-DhzyaY1S.mjs +0 -12
  49. package/dist/doctor-CYnItgYt.mjs.map +0 -1
  50. package/dist/package-manager-BaXE6gY_.mjs +0 -12
  51. package/dist/package-manager-BaXE6gY_.mjs.map +0 -1
  52. package/dist/package-manager-Ogog_AHE.mjs +0 -11
  53. package/dist/run-plugins-Du6FlB7_.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @forinda/kickjs-cli v8.11.0
2
+ * @forinda/kickjs-cli v8.12.0
3
3
  *
4
4
  * Copyright (c) Felix Orinda
5
5
  *
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- import{f as e,o as t,r as n}from"./config-DhzyaY1S.mjs";import{o as r,r as i}from"./package-manager-Ogog_AHE.mjs";import{existsSync as a,readFileSync as o,readdirSync as s,statSync as c,writeFileSync as l}from"node:fs";import{dirname as u,join as d,posix as f,resolve as p,sep as m}from"node:path";import{fileURLToPath as h}from"node:url";import{execFile as g,execFileSync as _,execSync as v,spawnSync as y}from"node:child_process";import{promisify as b}from"node:util";import{randomBytes as x}from"node:crypto";import{parseSync as S}from"oxc-parser";const C=b(g),w=/[&|<>^"'`(){}[\];!%\r\n\\]/;function T(e,t,n=process.platform){if(n!==`win32`)return[e,t];if(w.test(e)||t.some(e=>w.test(e)))return null;let r=[e,...t].map(e=>e.includes(` `)?`"${e}"`:e).join(` `);return[process.env.ComSpec||`cmd.exe`,[`/d`,`/s`,`/c`,r]]}function E(e,t,n={}){let r=T(e,t);if(!r)return null;try{return _(r[0],r[1],{encoding:`utf-8`,timeout:n.timeout??5e3,cwd:n.cwd,stdio:[`ignore`,`pipe`,`ignore`],windowsHide:!0}).toString().trim()||null}catch{return null}}function ee(e,t,n={}){let r=T(e,t);if(!r)throw Error(`Refusing to run '${e}': unsafe arguments`);_(r[0],r[1],{cwd:n.cwd,stdio:`inherit`,windowsHide:!0})}function D(e,t,n){v(e,{cwd:t,stdio:`inherit`,env:n?{...process.env,...n}:process.env})}function O(e,t,n){let r=y(process.execPath,[e],{cwd:n,stdio:`inherit`,env:{...process.env,...t}});r.status!==0&&process.exit(r.status??1)}async function k(e,t,n={}){let r=T(e,t);if(!r)return null;try{let{stdout:e}=await C(r[0],r[1],{encoding:`utf-8`,timeout:n.timeout??5e3,cwd:n.cwd,windowsHide:!0});return e.toString().trim()||null}catch{return null}}const te=u(h(import.meta.url)),A=[d(te,`..`,`templates`),d(te,`..`,`..`,`templates`)].find(e=>a(d(e,`base`)));function ne(e){return e.split(`/`).map(e=>e.startsWith(`_dot_`)?`.${e.slice(5)}`:e).join(`/`)}function j(e,t={}){let n=t.templatesDir??A,r=/* @__PURE__ */ new Map,i=[],l=[],u={},f=[],p={};for(let t of e){let e=d(n,t);if(!a(e))throw Error(`Unknown scaffold layer "${t}" (${e})`);let h=d(e,`feature.json`);if(a(h)){let e=JSON.parse(o(h,`utf-8`));i.push(...e.dependencies??[]),l.push(...e.devDependencies??[]),Object.assign(u,e.builds),f.push(...e.integrations??[]),Object.assign(p,e.scripts)}let g=d(e,`files`);if(a(g))for(let e of s(g,{recursive:!0,encoding:`utf-8`}).toSorted()){let t=d(g,e);if(!c(t).isFile())continue;let n=o(t,`utf-8`),i=ne(e.split(m).join(`/`));if(i.endsWith(`.append`)){let e=i.slice(0,-7);r.set(e,(r.get(e)??``)+n)}else r.set(i,n)}}f.push(...t.extra??[]);let h=t.vars??{},g=e=>e.replace(/\{\{(\w+)\}\}/g,(e,t)=>h[t]??e);for(let[e,t]of r)t.includes(`// @kick:`)&&r.set(e,re(t,f,g));return{files:r,dependencies:[...new Set(i)],devDependencies:[...new Set(l)],builds:u,integrations:f,scripts:p}}function M(e,t){let n=e=>e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?t[n]:e);return new Map([...e].map(([e,t])=>[e,n(t)]))}const N=/^([ \t]*)\/\/ @kick:([\w-]+)[ \t]*$/;function re(e,t,n=e=>e){let r=e.split(`
11
+ import{f as e,o as t,r as n}from"./config-DMFwBdWg.mjs";import{o as r,r as i}from"./package-manager-C8ekNwsa.mjs";import{existsSync as a,readFileSync as o,readdirSync as s,statSync as c,writeFileSync as l}from"node:fs";import{dirname as u,join as d,posix as f,resolve as p,sep as m}from"node:path";import{fileURLToPath as h}from"node:url";import{execFile as g,execFileSync as _,execSync as v,spawnSync as y}from"node:child_process";import{promisify as b}from"node:util";import{randomBytes as x}from"node:crypto";import{parseSync as S}from"oxc-parser";const C=b(g),w=/[&|<>^"'`(){}[\];!%\r\n\\]/;function T(e,t,n=process.platform){if(n!==`win32`)return[e,t];if(w.test(e)||t.some(e=>w.test(e)))return null;let r=[e,...t].map(e=>e.includes(` `)?`"${e}"`:e).join(` `);return[process.env.ComSpec||`cmd.exe`,[`/d`,`/s`,`/c`,r]]}function E(e,t,n={}){let r=T(e,t);if(!r)return null;try{return _(r[0],r[1],{encoding:`utf-8`,timeout:n.timeout??5e3,cwd:n.cwd,stdio:[`ignore`,`pipe`,`ignore`],windowsHide:!0}).toString().trim()||null}catch{return null}}function ee(e,t,n={}){let r=T(e,t);if(!r)throw Error(`Refusing to run '${e}': unsafe arguments`);_(r[0],r[1],{cwd:n.cwd,stdio:`inherit`,windowsHide:!0})}function D(e,t,n){v(e,{cwd:t,stdio:`inherit`,env:n?{...process.env,...n}:process.env})}function O(e,t,n){let r=y(process.execPath,[e],{cwd:n,stdio:`inherit`,env:{...process.env,...t}});r.status!==0&&process.exit(r.status??1)}async function k(e,t,n={}){let r=T(e,t);if(!r)return null;try{let{stdout:e}=await C(r[0],r[1],{encoding:`utf-8`,timeout:n.timeout??5e3,cwd:n.cwd,windowsHide:!0});return e.toString().trim()||null}catch{return null}}const te=u(h(import.meta.url)),A=[d(te,`..`,`templates`),d(te,`..`,`..`,`templates`)].find(e=>a(d(e,`base`)));function ne(e){return e.split(`/`).map(e=>e.startsWith(`_dot_`)?`.${e.slice(5)}`:e).join(`/`)}function j(e,t={}){let n=t.templatesDir??A,r=/* @__PURE__ */ new Map,i=[],l=[],u={},f=[],p={};for(let t of e){let e=d(n,t);if(!a(e))throw Error(`Unknown scaffold layer "${t}" (${e})`);let h=d(e,`feature.json`);if(a(h)){let e=JSON.parse(o(h,`utf-8`));i.push(...e.dependencies??[]),l.push(...e.devDependencies??[]),Object.assign(u,e.builds),f.push(...e.integrations??[]),Object.assign(p,e.scripts)}let g=d(e,`files`);if(a(g))for(let e of s(g,{recursive:!0,encoding:`utf-8`}).toSorted()){let t=d(g,e);if(!c(t).isFile())continue;let n=o(t,`utf-8`),i=ne(e.split(m).join(`/`));if(i.endsWith(`.append`)){let e=i.slice(0,-7);r.set(e,(r.get(e)??``)+n)}else r.set(i,n)}}f.push(...t.extra??[]);let h=t.vars??{},g=e=>e.replace(/\{\{(\w+)\}\}/g,(e,t)=>h[t]??e);for(let[e,t]of r)t.includes(`// @kick:`)&&r.set(e,re(t,f,g));return{files:r,dependencies:[...new Set(i)],devDependencies:[...new Set(l)],builds:u,integrations:f,scripts:p}}function M(e,t){let n=e=>e.replace(/\{\{(\w+)\}\}/g,(e,n)=>n in t?t[n]:e);return new Map([...e].map(([e,t])=>[e,n(t)]))}const N=/^([ \t]*)\/\/ @kick:([\w-]+)[ \t]*$/;function re(e,t,n=e=>e){let r=e.split(`
12
12
  `),i=new Set(r.map(e=>N.exec(e)?.[2]).filter(Boolean)),a=t.filter(e=>!e.slot||i.has(e.slot)),o=[];for(let e=0;e<r.length;e++){let t=N.exec(r[e]);if(!t){o.push(r[e]);continue}let[,i,s]=t,c=s===`imports`?ae(a.flatMap(e=>e.import?[e.import]:[])):a.filter(e=>e.slot===s&&e.code).map(e=>ie(`${n(e.code)},`,i));c.length>0?o.push(...c):o.at(-1)?.trimEnd().endsWith(`[`)&&r[e+1]?.trim().startsWith(`]`)&&(o.pop(),e++)}return o.join(`
13
13
  `)}function ie(e,t){return e.split(`
14
14
  `).map(e=>e&&t+e).join(`
@@ -125,8 +125,8 @@ CMD ["node", "dist/index.js"]
125
125
  `),console.log(Fe(l).replace(/^/gm,` `)),console.log())}}C?console.log(` Done!
126
126
  `):(console.log(` Finished with errors — the install above did not complete.
127
127
  `),process.exitCode=1)})}const $=u(h(import.meta.url));function Xe(t){return{kick:n(t,`kick`),runDev:e(t,`dev`),runBuild:e(t,`build`),runStart:e(t,`start`),runTest:e(t,`test`)}}const Ze=JSON.parse(o([d($,`..`,`package.json`),d($,`..`,`..`,`package.json`)].find(a),`utf-8`)),Qe=[`@forinda/kickjs`,`@forinda/kickjs-cli`,`@forinda/kickjs-schema`,`@forinda/kickjs-vite`,`@forinda/kickjs-swagger`,`@forinda/kickjs-ws`,`@forinda/kickjs-queue`,`@forinda/kickjs-devtools`,`@forinda/kickjs-testing`,`@forinda/kickjs-client`,`@forinda/kickjs-inertia`,`@forinda/kickjs-storage`],$e={react:{fallback:`^19.0.0`},"react-dom":{fallback:`^19.0.0`},"@types/react":{fallback:`^19.0.0`},"@types/react-dom":{fallback:`^19.0.0`},"@vitejs/plugin-react":{fallback:`^5.0.0`},"@inertiajs/react":{fallback:`^3.9.0`,cap:`^3`},"@inertiajs/core":{fallback:`^3.9.0`,cap:`^3`},"@types/node":{fallback:`^25.0.0`},"@types/supertest":{fallback:`^7.2.1`},supertest:{fallback:`^7.2.2`},vitest:{fallback:`^4.1.2`},"@swc/core":{fallback:`^1.15.21`},"unplugin-swc":{fallback:`^1.5.9`},oxfmt:{fallback:`^0.65.0`},oxlint:{fallback:`^1.80.0`},dotenv:{fallback:`^17.3.1`,cap:`^17`},"reflect-metadata":{fallback:`^0.2.2`},vite:{fallback:`^8.0.3`,cap:`^8`},typescript:{fallback:`^7.0.2`,cap:`^7`},"@typescript/typescript6":{fallback:`^6.0.2`,cap:`^6`},express:{fallback:`^5.1.0`,cap:`^5`},"@types/express":{fallback:`^5.0.6`,cap:`^5`},fastify:{fallback:`^5.0.0`,cap:`^5`},"@fastify/middie":{fallback:`^9.0.0`,cap:`^9`},h3:{fallback:`^2.0.2`,cap:`^2`},"serve-static":{fallback:`^2.2.0`,cap:`^2`},zod:{fallback:`^4.3.6`,cap:`^4`},valibot:{fallback:`^1.4.1`,cap:`^1`},"@valibot/to-json-schema":{fallback:`^1.8.0`,cap:`^1`},yup:{fallback:`^1.7.1`,cap:`^1`},ws:{fallback:`^8.18.0`,cap:`^8`},bullmq:{fallback:`^5.0.0`,cap:`^5`},ioredis:{fallback:`^5.0.0`,cap:`^5`}};function et(e){if(!e)return null;let t=e.trim();if(/^\d+\.\d+\.\d+/.test(t))return t.split(/\s/)[0];try{let e=JSON.parse(t),n=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`);return n.length>0?n[n.length-1]:null}catch{return null}}function tt(e){return e===`@forinda/kickjs-cli`?`^${Ze.version}`:`latest`}async function nt(e,t,n){let r=Array.from({length:e.length}),i=0,a=Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let t=i++;r[t]=await n(e[t])}});return await Promise.all(a),r}async function rt(){let e=[...Qe.map(e=>({name:e,fallback:tt(e),cap:void 0})),...Object.entries($e).map(([e,t])=>({name:e,...t}))],t=Date.now()+2e4,n=await nt(e,8,async({name:e,fallback:n,cap:r})=>{let i=t-Date.now();if(i<=0)return[e,n];let a=r?`${e}@${r}`:e,o=et(await k(`npm`,r?[`view`,a,`version`,`--json`]:[`view`,a,`version`],{timeout:i}));return[e,o?`^${o}`:n]});return Object.fromEntries(n)}function it(e,t){let n=E(`npm`,[`view`,`${e}@${t}`,`version`],{timeout:2e4});return n&&/^\d+\.\d+\.\d+/.test(n)?n:null}function at(e){return(e??``).replace(/^[\^~>=<\s]+/,``)}function ot(e,t){let n=e=>at(e).split(`-`)[0].split(`.`).map(e=>Number.parseInt(e,10)||0),[r=0,i=0,a=0]=n(e),[o=0,s=0,c=0]=n(t);return r===o?i===s?a>=c:i>s:r>o}function st(e,t,n){let r=E(`npm`,[`view`,`${e}@${t}`,`exports`,`--json`],{timeout:2e4});if(!r)return!1;try{let e=JSON.parse(r);return Object.prototype.hasOwnProperty.call(e,n)}catch{return!1}}async function ct(t){let{name:i,directory:o,packageManager:s=`pnpm`,template:c=`rest`,defaultRepo:l=`inmemory`,packages:u=[],schemaLib:f=`zod`,runtime:p=`express`}=t,m=o,h=e=>console.log(` ${e}`);console.log(`\n Creating KickJS project: ${i}\n`),t.versions||h(`Resolving package versions...`);let g=t.versions??await rt(),_=Object.keys(g).filter(e=>g[e]===`latest`);if(_.length>0&&h(`WARNING: could not reach npm for ${_.join(`, `)} — pinned to 'latest'`),p!==`express`){if(st(`@forinda/kickjs`,`latest`,`./${p}`))h(`Using @forinda/kickjs@latest (stable ships the ${p} runtime)`);else{let e=[`@forinda/kickjs`,`@forinda/kickjs-cli`,`@forinda/kickjs-vite`],t=[],n=!1;for(let r of e){let e=it(r,`alpha`);e&&ot(e,at(g[r]))&&(g[r]=`^${e}`,t.push(`${r}@^${e}`),r===`@forinda/kickjs`&&(n=!0))}h(n?`Using the alpha channel for the ${p} runtime: ${t.join(`, `)}`:`WARNING: could not resolve @forinda/kickjs@alpha — the ${p} runtime subpath may be missing. After install, run: ${s} add @forinda/kickjs@alpha`)}}let y=u.filter(e=>!a(d(A,`feature-${e}`)));y.length>0&&h(`WARNING: skipping unknown package(s): ${y.join(`, `)} — add them later with kick add`);let b=j([...dt({template:c,runtime:p,schemaLib:f,packages:u}),...t.platformConfig===!1?[]:[`host-config`],...t.extraLayers??[]],{vars:{name:i,version:Ze.version},extra:[{slot:`repo`,code:l===`inmemory`?`repo: 'inmemory'`:`repo: { name: '${l.replace(/\\/g,`\\\\`).replace(/'/g,`\\'`)}' }`},...t.spaClientDir?[ut(t.spaClientDir)]:[]]}),S=t.platformConfig===!1?void 0:F(s);await r(d(m,`package.json`),le(i,g,b,S));let C=ce(s,S);C&&await r(d(m,`.yarnrc.yml`),C);let w=M(b.files,{name:i,template:c,runtime:p,packageManager:s,...Xe(s),netlifyPublish:c===`inertia`?`dist/client`:`dist/public`,templateLabel:{rest:`REST API`,minimal:`Minimal`,inertia:`Inertia (React)`}[c],sessionSecret:x(32).toString(`hex`),packages:[...b.dependencies,...b.devDependencies].filter(e=>e.startsWith(`@forinda/`)).map(e=>`- \`${e}\``).join(`
128
- `)});for(let[e,t]of w)await r(d(m,e),t);if(t.platformConfig!==!1){let e=c===`inertia`?`inertia`:`api`;await r(d(m,`Dockerfile`),pe(e,s,i,S)),await r(d(m,`.dockerignore`),R())}let{generateAgentDocs:T}=await import(`./agent-docs-DUxCvCBc.mjs`).then(e=>e.t);await T({outDir:m,name:i,pm:s,template:c,only:`all`,force:!0});let E={...We,...Ke(u),...b.builds};if(t.approveInstallScripts!==!1&&Q(s,m,E),t.installDeps){console.log(`\n Installing dependencies with ${s}...\n`);try{v(`${s} install`,{cwd:m,stdio:`inherit`}),console.log(`
129
- Dependencies installed successfully!`)}catch{console.log(`\n Warning: ${s} install failed. Run it manually.`)}}try{let{runTypegen:e}=await import(`./typegen-BkpCnSQ3.mjs`).then(e=>e.n);await e({cwd:m,allowDuplicates:!0,silent:!0})}catch{}if(t.initGit)try{v(`git init`,{cwd:m,stdio:`pipe`}),v(`git branch -M main`,{cwd:m,stdio:`pipe`}),v(`git add -A`,{cwd:m,stdio:`pipe`}),v(`git commit -m "chore: initial commit from kick new"`,{cwd:m,stdio:`pipe`}),h(`Git repository initialized`)}catch{h(`Warning: git init failed (git may not be installed)`)}console.log(`
128
+ `)});for(let[e,t]of w)await r(d(m,e),t);if(t.platformConfig!==!1){let e=c===`inertia`?`inertia`:`api`;await r(d(m,`Dockerfile`),pe(e,s,i,S)),await r(d(m,`.dockerignore`),R())}let{generateAgentDocs:T}=await import(`./agent-docs-CuD2-X3w.mjs`).then(e=>e.t);await T({outDir:m,name:i,pm:s,template:c,only:`all`,force:!0});let E={...We,...Ke(u),...b.builds};if(t.approveInstallScripts!==!1&&Q(s,m,E),t.installDeps){console.log(`\n Installing dependencies with ${s}...\n`);try{v(`${s} install`,{cwd:m,stdio:`inherit`}),console.log(`
129
+ Dependencies installed successfully!`)}catch{console.log(`\n Warning: ${s} install failed. Run it manually.`)}}try{let{runTypegen:e}=await import(`./typegen-Lf0UPhdl.mjs`).then(e=>e.n);await e({cwd:m,allowDuplicates:!0,silent:!0})}catch{}if(t.initGit)try{v(`git init`,{cwd:m,stdio:`pipe`}),v(`git branch -M main`,{cwd:m,stdio:`pipe`}),v(`git add -A`,{cwd:m,stdio:`pipe`}),v(`git commit -m "chore: initial commit from kick new"`,{cwd:m,stdio:`pipe`}),h(`Git repository initialized`)}catch{h(`Warning: git init failed (git may not be installed)`)}console.log(`
130
130
  Project scaffolded successfully!`),console.log();let ee=m!==process.cwd();h(`Next steps:`),ee&&h(` cd ${i}`),t.installDeps||h(` ${s} install`);let D=n(s,`kick`),O={rest:`${D} g module user`,minimal:`# add your routes to src/index.ts`,inertia:`# pages: src/modules/pages + src/client/pages`};h(` ${O[c]??O.rest}`),h(` ${e(s,`dev`)}`);let k=e=>{let t=Math.max(...e.map(([e])=>e.length))+2;for(let[n,r]of e)h(` ${n.padEnd(t)}${r}`)};return h(``),h(`Commands:`),k([[e(s,`dev`),`Start dev server with Vite HMR`],[e(s,`build`),`Production build via Vite`],[e(s,`start`),`Run production build`]]),h(``),h(`Generators:`),k([[`${D} g module <name>`,`REST module (controller, service, DTOs, repository)`],[`${D} g scaffold <n> <f..>`,`CRUD module from field definitions`],[`${D} g controller <name>`,`Standalone controller`],[`${D} g service <name>`,`@Service() class`],[`${D} g middleware <name>`,`Global connect-style middleware`],[`${D} g guard <name>`,`Route guard (auth, roles, etc.)`],[`${D} g adapter <name>`,`AppAdapter with lifecycle hooks`],[`${D} g dto <name>`,`DTO schema (Zod / Valibot / Yup)`],[`${D} g config`,`Generate kick.config.ts`]]),h(``),h(`Add packages:`),k([[`${D} add <pkg>`,`Install a KickJS package + peers`],[`${D} add --list`,`Show all available packages`]]),h(``),h(`Available: ${Ie}`),h(``),{builds:E}}const lt=e=>`'${JSON.stringify(e).slice(1,-1).replaceAll(`\\"`,`"`).replaceAll(`'`,`\\'`)}'`;function ut(e){return{import:{from:`@forinda/kickjs/spa`,names:[`SpaAdapter`]},slot:`adapter`,code:`// Serves the built frontend from this origin in production.
131
131
  // Inert until the client build exists, so \`kick dev\` (where Vite
132
132
  // serves the client and proxies /api here) is unaffected.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @forinda/kickjs-cli v8.11.0
2
+ * @forinda/kickjs-cli v8.12.0
3
3
  *
4
4
  * Copyright (c) Felix Orinda
5
5
  *
@@ -8,4 +8,4 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- import{t as e}from"./rolldown-runtime-DAPeToCs.mjs";import{existsSync as t}from"node:fs";import{dirname as n,parse as r,resolve as i}from"node:path";var a=/* @__PURE__ */ e({findProjectRoot:()=>s});const o=[`kick.config.ts`,`kick.config.js`,`kick.config.mjs`,`kick.config.json`];function s(e=process.cwd()){let a=i(e),{root:s}=r(a),c=null,l=a;for(;;){for(let e of o)if(t(i(l,e)))return l;if(c===null&&t(i(l,`package.json`))&&(c=l),l===s)break;let e=n(l);if(e===l)break;l=e}return c??a}export{a as n,s as t};
11
+ import{t as e}from"./rolldown-runtime-C4d34LEE.mjs";import{existsSync as t}from"node:fs";import{dirname as n,parse as r,resolve as i}from"node:path";var a=/* @__PURE__ */ e({findProjectRoot:()=>s});const o=[`kick.config.ts`,`kick.config.js`,`kick.config.mjs`,`kick.config.json`];function s(e=process.cwd()){let a=i(e),{root:s}=r(a),c=null,l=a;for(;;){for(let e of o)if(t(i(l,e)))return l;if(c===null&&t(i(l,`package.json`))&&(c=l),l===s)break;let e=n(l);if(e===l)break;l=e}return c??a}export{a as n,s as t};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @forinda/kickjs-cli v8.11.0
2
+ * @forinda/kickjs-cli v8.12.0
3
3
  *
4
4
  * Copyright (c) Felix Orinda
5
5
  *
@@ -8,5 +8,5 @@
8
8
  *
9
9
  * @license MIT
10
10
  */
11
- import{t as e}from"./rolldown-runtime-DAPeToCs.mjs";import{dirname as t,parse as n,resolve as r}from"node:path";import{existsSync as i}from"node:fs";var a=/* @__PURE__ */ e({findProjectRoot:()=>s});const o=[`kick.config.ts`,`kick.config.js`,`kick.config.mjs`,`kick.config.json`];function s(e=process.cwd()){let a=r(e),{root:s}=n(a),c=null,l=a;for(;;){for(let e of o)if(i(r(l,e)))return l;if(c===null&&i(r(l,`package.json`))&&(c=l),l===s)break;let e=t(l);if(e===l)break;l=e}return c??a}export{a as n,s as t};
12
- //# sourceMappingURL=project-root-ThZdP1t_.mjs.map
11
+ import{t as e}from"./rolldown-runtime-C4d34LEE.mjs";import{dirname as t,parse as n,resolve as r}from"node:path";import{existsSync as i}from"node:fs";var a=/* @__PURE__ */ e({findProjectRoot:()=>s});const o=[`kick.config.ts`,`kick.config.js`,`kick.config.mjs`,`kick.config.json`];function s(e=process.cwd()){let a=r(e),{root:s}=n(a),c=null,l=a;for(;;){for(let e of o)if(i(r(l,e)))return l;if(c===null&&i(r(l,`package.json`))&&(c=l),l===s)break;let e=t(l);if(e===l)break;l=e}return c??a}export{a as n,s as t};
12
+ //# sourceMappingURL=project-root-FMt83NHV.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-root-ThZdP1t_.mjs","names":["__exportAll","project_root_exports","findProjectRoot","CONFIG_FILENAMES","start","resolve","startDir","fsRoot","parse","firstPackageJson","cursor","name","existsSync","parent","dirname"],"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":";;;;;;;;;;sMAGA,MAAMG,EAAmB,CAAC,iBAAkB,iBAAkB,kBAAmB,kBAAkB,EAiBnG,SAAgBD,EAAgB,EAAmB,QAAQ,IAAI,EAAW,CACxE,IAAME,EAAQC,EAAQC,CAAQ,EACxB,CAAE,KAAMC,GAAWC,EAAMJ,CAAK,EAEhCK,EAAkC,KAClCC,EAASN,EACb,OAAa,CACX,IAAK,IAAMO,KAAQR,EACjB,GAAIS,EAAWP,EAAQK,EAAQC,CAAI,CAAC,EAAG,OAAOD,EAKhD,GAHID,IAAqB,MAAQG,EAAWP,EAAQK,EAAQ,cAAc,CAAC,IACzE,EAAmBA,GAEjBA,IAAWH,EAAQ,MACvB,IAAMM,EAASC,EAAQJ,CAAM,EAC7B,GAAIG,IAAWH,EAAQ,MACvB,EAASG,CACX,CAEA,OAAOJ,GAAoBL,CAC7B"}
1
+ {"version":3,"file":"project-root-FMt83NHV.mjs","names":["__exportAll","project_root_exports","findProjectRoot","CONFIG_FILENAMES","start","resolve","startDir","fsRoot","parse","firstPackageJson","cursor","name","existsSync","parent","dirname"],"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":";;;;;;;;;;sMAGA,MAAMG,EAAmB,CAAC,iBAAkB,iBAAkB,kBAAmB,kBAAkB,EAiBnG,SAAgBD,EAAgB,EAAmB,QAAQ,IAAI,EAAW,CACxE,IAAME,EAAQC,EAAQC,CAAQ,EACxB,CAAE,KAAMC,GAAWC,EAAMJ,CAAK,EAEhCK,EAAkC,KAClCC,EAASN,EACb,OAAa,CACX,IAAK,IAAMO,KAAQR,EACjB,GAAIS,EAAWP,EAAQK,EAAQC,CAAI,CAAC,EAAG,OAAOD,EAKhD,GAHID,IAAqB,MAAQG,EAAWP,EAAQK,EAAQ,cAAc,CAAC,IACzE,EAAmBA,GAEjBA,IAAWH,EAAQ,MACvB,IAAMM,EAASC,EAAQJ,CAAM,EAC7B,GAAIG,IAAWH,EAAQ,MACvB,EAASG,CACX,CAEA,OAAOJ,GAAoBL,CAC7B"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @forinda/kickjs-cli v8.11.0
2
+ * @forinda/kickjs-cli v8.12.0
3
3
  *
4
4
  * Copyright (c) Felix Orinda
5
5
  *
@@ -9,4 +9,4 @@
9
9
  * @license MIT
10
10
  */
11
11
  import*as e from"@clack/prompts";import t from"picocolors";const n={GET:t.green,POST:t.cyan,PUT:t.yellow,PATCH:t.magenta,DELETE:t.red};function r(e){return(n[e]??t.dim)(e.padEnd(7))}function i(e){let n=`[${e}]`.padEnd(10);switch(e){case`CRITICAL`:return t.red(n);case`WARNING`:return t.yellow(n);case`INFO`:return t.blue(t.dim(n));default:return n}}t.green(`✓`),t.red(`✖`),t.yellow(`⚠`),t.blue(`ℹ`);function a(n){e.intro(t.bgCyan(t.black(` ${n} `)))}function o(t){e.outro(t)}function s(t){e.isCancel(t)&&(e.cancel(`Operation cancelled.`),process.exit(0))}async function c(t){let n=await e.text(t);return s(n),n}async function l(t){let n=await e.select(t);return s(n),n}async function u(t){let n=await e.multiselect(t);return s(n),n}async function d(t){let n=await e.confirm(t);return s(n),n}function f(){return e.spinner()}const p=e.log;export{o as a,c,i as d,u as i,r as l,a as n,l as o,p as r,f as s,d as t,t as u};
12
- //# sourceMappingURL=prompts-Pzk_Seut.mjs.map
12
+ //# sourceMappingURL=prompts-DJBDNwHt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts-Pzk_Seut.mjs","names":["colors","clack","pc","METHOD_COLOR_MAP","httpMethodColor","method","severityColor","tag","severity","intro","title","outro","message","handleCancel","value","text","opts","select","multiSelect","confirm","spinner","log"],"sources":["../src/utils/colors.ts","../src/utils/prompts.ts"],"sourcesContent":["import pc from 'picocolors'\n\nexport { pc as colors }\n\nconst METHOD_COLOR_MAP: Record<string, (s: string) => string> = {\n GET: pc.green,\n POST: pc.cyan,\n PUT: pc.yellow,\n PATCH: pc.magenta,\n DELETE: pc.red,\n}\n\n/** Color an HTTP method string for terminal display */\nexport function httpMethodColor(method: string): string {\n const fn = METHOD_COLOR_MAP[method] ?? pc.dim\n return fn(method.padEnd(7))\n}\n\n/** Color a severity tag for terminal display (padded to 10 chars) */\nexport function severityColor(severity: string): string {\n const tag = `[${severity}]`.padEnd(10)\n switch (severity) {\n case 'CRITICAL':\n return pc.red(tag)\n case 'WARNING':\n return pc.yellow(tag)\n case 'INFO':\n return pc.blue(pc.dim(tag))\n default:\n return tag\n }\n}\n","import * as clack from '@clack/prompts'\nimport { colors } from './colors'\n\nexport const symbols = {\n success: colors.green('✓'),\n error: colors.red('✖'),\n warning: colors.yellow('⚠'),\n info: colors.blue('ℹ'),\n}\n\n/** Show branded intro banner */\nexport function intro(title: string): void {\n clack.intro(colors.bgCyan(colors.black(` ${title} `)))\n}\n\n/** Show closing message */\nexport function outro(message: string): void {\n clack.outro(message)\n}\n\n/** Handle cancellation — print message and exit */\nfunction handleCancel(value: unknown): void {\n if (clack.isCancel(value)) {\n clack.cancel('Operation cancelled.')\n process.exit(0)\n }\n}\n\n/** Text input prompt */\nexport async function text(opts: {\n message: string\n placeholder?: string\n defaultValue?: string\n validate?: (value: string) => string | void\n}): Promise<string> {\n const value = await clack.text(opts as any)\n handleCancel(value)\n return value as string\n}\n\n/** Single select prompt */\nexport async function select<T>(opts: {\n message: string\n options: { value: T; label: string; hint?: string }[]\n initialValue?: T\n}): Promise<T> {\n const value = await clack.select(opts as any)\n handleCancel(value)\n return value as T\n}\n\n/** Multi-select prompt with checkboxes */\nexport async function multiSelect<T>(opts: {\n message: string\n options: { value: T; label: string; hint?: string }[]\n required?: boolean\n initialValues?: T[]\n}): Promise<T[]> {\n const value = await clack.multiselect(opts as any)\n handleCancel(value)\n return value as T[]\n}\n\n/** Yes/no confirmation prompt */\nexport async function confirm(opts: {\n message: string\n active?: string\n inactive?: string\n initialValue?: boolean\n}): Promise<boolean> {\n const value = await clack.confirm(opts)\n handleCancel(value)\n return value as boolean\n}\n\n/** Create a spinner for progress indication */\nexport function spinner() {\n return clack.spinner()\n}\n\n/** Log utilities for styled messages inside clack flow */\nexport const log = clack.log\n"],"mappings":";;;;;;;;;;2DAIA,MAAMG,EAA0D,CAC9D,IAAKD,EAAG,MACR,KAAMA,EAAG,KACT,IAAKA,EAAG,OACR,MAAOA,EAAG,QACV,OAAQA,EAAG,GACb,EAGA,SAAgBE,EAAgB,EAAwB,CAEtD,OADWD,EAAiBE,IAAWH,EAAG,IAAA,CAChCG,EAAO,OAAO,CAAC,CAAC,CAC5B,CAGA,SAAgBC,EAAc,EAA0B,CACtD,IAAMC,EAAM,IAAIC,EAAS,GAAG,OAAO,EAAE,EACrC,OAAQA,EAAR,CACE,IAAK,WACH,OAAON,EAAG,IAAIK,CAAG,EACnB,IAAK,UACH,OAAOL,EAAG,OAAOK,CAAG,EACtB,IAAK,OACH,OAAOL,EAAG,KAAKA,EAAG,IAAIK,CAAG,CAAC,EAC5B,QACE,OAAOA,CACX,CACF,CC3BWP,EAAO,MAAM,GAAG,EAClBA,EAAO,IAAI,GAAG,EACZA,EAAO,OAAO,GAAG,EACpBA,EAAO,KAAK,GAAG,EAIvB,SAAgBS,EAAM,EAAqB,CACzCR,EAAM,MAAMD,EAAO,OAAOA,EAAO,MAAM,IAAIU,EAAM,EAAE,CAAC,CAAC,CACvD,CAGA,SAAgBC,EAAM,EAAuB,CAC3CV,EAAM,MAAMW,CAAO,CACrB,CAGA,SAASC,EAAa,EAAsB,CACtCZ,EAAM,SAASa,CAAK,IACtBb,EAAM,OAAO,sBAAsB,EACnC,QAAQ,KAAK,CAAC,EAElB,CAGA,eAAsBc,EAAK,EAKP,CAClB,IAAMD,EAAQ,MAAMb,EAAM,KAAKe,CAAW,EAE1C,OADAH,EAAaC,CAAK,EACXA,CACT,CAGA,eAAsBG,EAAU,EAIjB,CACb,IAAMH,EAAQ,MAAMb,EAAM,OAAOe,CAAW,EAE5C,OADAH,EAAaC,CAAK,EACXA,CACT,CAGA,eAAsBI,EAAe,EAKpB,CACf,IAAMJ,EAAQ,MAAMb,EAAM,YAAYe,CAAW,EAEjD,OADAH,EAAaC,CAAK,EACXA,CACT,CAGA,eAAsBK,EAAQ,EAKT,CACnB,IAAML,EAAQ,MAAMb,EAAM,QAAQe,CAAI,EAEtC,OADAH,EAAaC,CAAK,EACXA,CACT,CAGA,SAAgBM,GAAU,CACxB,OAAOnB,EAAM,QAAQ,CACvB,CAGA,MAAaoB,EAAMpB,EAAM"}
1
+ {"version":3,"file":"prompts-DJBDNwHt.mjs","names":["colors","clack","pc","METHOD_COLOR_MAP","httpMethodColor","method","severityColor","tag","severity","intro","title","outro","message","handleCancel","value","text","opts","select","multiSelect","confirm","spinner","log"],"sources":["../src/utils/colors.ts","../src/utils/prompts.ts"],"sourcesContent":["import pc from 'picocolors'\n\nexport { pc as colors }\n\nconst METHOD_COLOR_MAP: Record<string, (s: string) => string> = {\n GET: pc.green,\n POST: pc.cyan,\n PUT: pc.yellow,\n PATCH: pc.magenta,\n DELETE: pc.red,\n}\n\n/** Color an HTTP method string for terminal display */\nexport function httpMethodColor(method: string): string {\n const fn = METHOD_COLOR_MAP[method] ?? pc.dim\n return fn(method.padEnd(7))\n}\n\n/** Color a severity tag for terminal display (padded to 10 chars) */\nexport function severityColor(severity: string): string {\n const tag = `[${severity}]`.padEnd(10)\n switch (severity) {\n case 'CRITICAL':\n return pc.red(tag)\n case 'WARNING':\n return pc.yellow(tag)\n case 'INFO':\n return pc.blue(pc.dim(tag))\n default:\n return tag\n }\n}\n","import * as clack from '@clack/prompts'\nimport { colors } from './colors'\n\nexport const symbols = {\n success: colors.green('✓'),\n error: colors.red('✖'),\n warning: colors.yellow('⚠'),\n info: colors.blue('ℹ'),\n}\n\n/** Show branded intro banner */\nexport function intro(title: string): void {\n clack.intro(colors.bgCyan(colors.black(` ${title} `)))\n}\n\n/** Show closing message */\nexport function outro(message: string): void {\n clack.outro(message)\n}\n\n/** Handle cancellation — print message and exit */\nfunction handleCancel(value: unknown): void {\n if (clack.isCancel(value)) {\n clack.cancel('Operation cancelled.')\n process.exit(0)\n }\n}\n\n/** Text input prompt */\nexport async function text(opts: {\n message: string\n placeholder?: string\n defaultValue?: string\n validate?: (value: string) => string | void\n}): Promise<string> {\n const value = await clack.text(opts as any)\n handleCancel(value)\n return value as string\n}\n\n/** Single select prompt */\nexport async function select<T>(opts: {\n message: string\n options: { value: T; label: string; hint?: string }[]\n initialValue?: T\n}): Promise<T> {\n const value = await clack.select(opts as any)\n handleCancel(value)\n return value as T\n}\n\n/** Multi-select prompt with checkboxes */\nexport async function multiSelect<T>(opts: {\n message: string\n options: { value: T; label: string; hint?: string }[]\n required?: boolean\n initialValues?: T[]\n}): Promise<T[]> {\n const value = await clack.multiselect(opts as any)\n handleCancel(value)\n return value as T[]\n}\n\n/** Yes/no confirmation prompt */\nexport async function confirm(opts: {\n message: string\n active?: string\n inactive?: string\n initialValue?: boolean\n}): Promise<boolean> {\n const value = await clack.confirm(opts)\n handleCancel(value)\n return value as boolean\n}\n\n/** Create a spinner for progress indication */\nexport function spinner() {\n return clack.spinner()\n}\n\n/** Log utilities for styled messages inside clack flow */\nexport const log = clack.log\n"],"mappings":";;;;;;;;;;2DAIA,MAAMG,EAA0D,CAC9D,IAAKD,EAAG,MACR,KAAMA,EAAG,KACT,IAAKA,EAAG,OACR,MAAOA,EAAG,QACV,OAAQA,EAAG,GACb,EAGA,SAAgBE,EAAgB,EAAwB,CAEtD,OADWD,EAAiBE,IAAWH,EAAG,IAAA,CAChCG,EAAO,OAAO,CAAC,CAAC,CAC5B,CAGA,SAAgBC,EAAc,EAA0B,CACtD,IAAMC,EAAM,IAAIC,EAAS,GAAG,OAAO,EAAE,EACrC,OAAQA,EAAR,CACE,IAAK,WACH,OAAON,EAAG,IAAIK,CAAG,EACnB,IAAK,UACH,OAAOL,EAAG,OAAOK,CAAG,EACtB,IAAK,OACH,OAAOL,EAAG,KAAKA,EAAG,IAAIK,CAAG,CAAC,EAC5B,QACE,OAAOA,CACX,CACF,CC3BWP,EAAO,MAAM,GAAG,EAClBA,EAAO,IAAI,GAAG,EACZA,EAAO,OAAO,GAAG,EACpBA,EAAO,KAAK,GAAG,EAIvB,SAAgBS,EAAM,EAAqB,CACzCR,EAAM,MAAMD,EAAO,OAAOA,EAAO,MAAM,IAAIU,EAAM,EAAE,CAAC,CAAC,CACvD,CAGA,SAAgBC,EAAM,EAAuB,CAC3CV,EAAM,MAAMW,CAAO,CACrB,CAGA,SAASC,EAAa,EAAsB,CACtCZ,EAAM,SAASa,CAAK,IACtBb,EAAM,OAAO,sBAAsB,EACnC,QAAQ,KAAK,CAAC,EAElB,CAGA,eAAsBc,EAAK,EAKP,CAClB,IAAMD,EAAQ,MAAMb,EAAM,KAAKe,CAAW,EAE1C,OADAH,EAAaC,CAAK,EACXA,CACT,CAGA,eAAsBG,EAAU,EAIjB,CACb,IAAMH,EAAQ,MAAMb,EAAM,OAAOe,CAAW,EAE5C,OADAH,EAAaC,CAAK,EACXA,CACT,CAGA,eAAsBI,EAAe,EAKpB,CACf,IAAMJ,EAAQ,MAAMb,EAAM,YAAYe,CAAW,EAEjD,OADAH,EAAaC,CAAK,EACXA,CACT,CAGA,eAAsBK,EAAQ,EAKT,CACnB,IAAML,EAAQ,MAAMb,EAAM,QAAQe,CAAI,EAEtC,OADAH,EAAaC,CAAK,EACXA,CACT,CAGA,SAAgBM,GAAU,CACxB,OAAOnB,EAAM,QAAQ,CACvB,CAGA,MAAaoB,EAAMpB,EAAM"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @forinda/kickjs-cli v8.11.0
2
+ * @forinda/kickjs-cli v8.12.0
3
3
  *
4
4
  * Copyright (c) Felix Orinda
5
5
  *