create-raclette-app 0.1.23 → 0.1.25

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/CHANGELOG.md CHANGED
@@ -7,10 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.25] - 2026-04-17 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.23...v0.1.25" target="_blank" rel="noopener"><b>Overview of all changes</b></a>
11
+
12
+ ### Updated
13
+
14
+ - core release
15
+
16
+
17
+ ## [0.1.24] - 2026-04-15 <a href="https://gitlab.com/raclettejs/core-dev/-/compare/v0.1.23...v0.1.24" target="_blank" rel="noopener"><b>Overview of all changes</b></a>
18
+
19
+ ### Updated
20
+
21
+ - Versions
22
+
10
23
  ### Added
11
24
 
12
- - Yarn4 Support
25
+ - Yarn 4 support.
26
+
27
+ ### Changed
28
+
29
+ - Template `package.json` devDependencies sync from `@raclettejs/core` root (and services), matching core’s ESLint-related versions for easier `yarn link`.
13
30
 
14
31
  ### Fixed
15
32
 
16
- - EsLint working again
33
+ - ESLint setup for generated apps aligned with core services.
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'module'; const require = createRequire(import.meta.url);
3
- var A=(t=0)=>e=>`\x1B[${e+t}m`,x=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,N=(t=0)=>(e,o,r)=>`\x1B[${38+t};2;${e};${o};${r}m`,a={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},me=Object.keys(a.modifier),K=Object.keys(a.color),W=Object.keys(a.bgColor),ge=[...K,...W];function Y(){let t=new Map;for(let[e,o]of Object.entries(a)){for(let[r,n]of Object.entries(o))a[r]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},o[r]=a[r],t.set(n[0],n[1]);Object.defineProperty(a,e,{value:o,enumerable:!1})}return Object.defineProperty(a,"codes",{value:t,enumerable:!1}),a.color.close="\x1B[39m",a.bgColor.close="\x1B[49m",a.color.ansi=A(),a.color.ansi256=x(),a.color.ansi16m=N(),a.bgColor.ansi=A(10),a.bgColor.ansi256=x(10),a.bgColor.ansi16m=N(10),Object.defineProperties(a,{rgbToAnsi256:{value(e,o,r){return e===o&&o===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(o/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(e){let o=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!o)return[0,0,0];let[r]=o;r.length===3&&(r=[...r].map(s=>s+s).join(""));let n=Number.parseInt(r,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>a.rgbToAnsi256(...a.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let o,r,n;if(e>=232)o=((e-232)*10+8)/255,r=o,n=o;else{e-=16;let y=e%36;o=Math.floor(e/36)/5,r=Math.floor(y/6)/5,n=y%6/5}let s=Math.max(o,r,n)*2;if(s===0)return 30;let l=30+(Math.round(n)<<2|Math.round(r)<<1|Math.round(o));return s===2&&(l+=60),l},enumerable:!1},rgbToAnsi:{value:(e,o,r)=>a.ansi256ToAnsi(a.rgbToAnsi256(e,o,r)),enumerable:!1},hexToAnsi:{value:e=>a.ansi256ToAnsi(a.hexToAnsi256(e)),enumerable:!1}}),a}var U=Y(),m=U;import E from"node:process";import V from"node:os";import S from"node:tty";function f(t,e=globalThis.Deno?globalThis.Deno.args:E.argv){let o=t.startsWith("-")?"":t.length===1?"-":"--",r=e.indexOf(o+t),n=e.indexOf("--");return r!==-1&&(n===-1||r<n)}var{env:c}=E,w;f("no-color")||f("no-colors")||f("color=false")||f("color=never")?w=0:(f("color")||f("colors")||f("color=true")||f("color=always"))&&(w=1);function z(){if("FORCE_COLOR"in c)return c.FORCE_COLOR==="true"?1:c.FORCE_COLOR==="false"?0:c.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(c.FORCE_COLOR,10),3)}function J(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function Z(t,{streamIsTTY:e,sniffFlags:o=!0}={}){let r=z();r!==void 0&&(w=r);let n=o?w:r;if(n===0)return 0;if(o){if(f("color=16m")||f("color=full")||f("color=truecolor"))return 3;if(f("color=256"))return 2}if("TF_BUILD"in c&&"AGENT_NAME"in c)return 1;if(t&&!e&&n===void 0)return 0;let s=n||0;if(c.TERM==="dumb")return s;if(E.platform==="win32"){let l=V.release().split(".");return Number(l[0])>=10&&Number(l[2])>=10586?Number(l[2])>=14931?3:2:1}if("CI"in c)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(l=>l in c)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(l=>l in c)||c.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in c)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(c.TEAMCITY_VERSION)?1:0;if(c.COLORTERM==="truecolor"||c.TERM==="xterm-kitty"||c.TERM==="xterm-ghostty"||c.TERM==="wezterm")return 3;if("TERM_PROGRAM"in c){let l=Number.parseInt((c.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(c.TERM_PROGRAM){case"iTerm.app":return l>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(c.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(c.TERM)||"COLORTERM"in c?1:s}function F(t,e={}){let o=Z(t,{streamIsTTY:t&&t.isTTY,...e});return J(o)}var q={stdout:F({isTTY:S.isatty(1)}),stderr:F({isTTY:S.isatty(2)})},j=q;function P(t,e,o){let r=t.indexOf(e);if(r===-1)return t;let n=e.length,s=0,l="";do l+=t.slice(s,r)+e+o,s=r+n,r=t.indexOf(e,s);while(r!==-1);return l+=t.slice(s),l}function I(t,e,o,r){let n=0,s="";do{let l=t[r-1]==="\r";s+=t.slice(n,l?r-1:r)+e+(l?`\r
3
+ var A=(t=0)=>e=>`\x1B[${e+t}m`,x=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,N=(t=0)=>(e,r,o)=>`\x1B[${38+t};2;${e};${r};${o}m`,l={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},ge=Object.keys(l.modifier),W=Object.keys(l.color),Y=Object.keys(l.bgColor),de=[...W,...Y];function U(){let t=new Map;for(let[e,r]of Object.entries(l)){for(let[o,n]of Object.entries(r))l[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[o]=l[o],t.set(n[0],n[1]);Object.defineProperty(l,e,{value:r,enumerable:!1})}return Object.defineProperty(l,"codes",{value:t,enumerable:!1}),l.color.close="\x1B[39m",l.bgColor.close="\x1B[49m",l.color.ansi=A(),l.color.ansi256=x(),l.color.ansi16m=N(),l.bgColor.ansi=A(10),l.bgColor.ansi256=x(10),l.bgColor.ansi16m=N(10),Object.defineProperties(l,{rgbToAnsi256:{value(e,r,o){return e===r&&r===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(e){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(s=>s+s).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>l.rgbToAnsi256(...l.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,o,n;if(e>=232)r=((e-232)*10+8)/255,o=r,n=r;else{e-=16;let h=e%36;r=Math.floor(e/36)/5,o=Math.floor(h/6)/5,n=h%6/5}let s=Math.max(r,o,n)*2;if(s===0)return 30;let i=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(r));return s===2&&(i+=60),i},enumerable:!1},rgbToAnsi:{value:(e,r,o)=>l.ansi256ToAnsi(l.rgbToAnsi256(e,r,o)),enumerable:!1},hexToAnsi:{value:e=>l.ansi256ToAnsi(l.hexToAnsi256(e)),enumerable:!1}}),l}var V=U(),m=V;import R from"node:process";import z from"node:os";import S from"node:tty";function f(t,e=globalThis.Deno?globalThis.Deno.args:R.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(r+t),n=e.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:c}=R,w;f("no-color")||f("no-colors")||f("color=false")||f("color=never")?w=0:(f("color")||f("colors")||f("color=true")||f("color=always"))&&(w=1);function J(){if("FORCE_COLOR"in c)return c.FORCE_COLOR==="true"?1:c.FORCE_COLOR==="false"?0:c.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(c.FORCE_COLOR,10),3)}function Z(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function q(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let o=J();o!==void 0&&(w=o);let n=r?w:o;if(n===0)return 0;if(r){if(f("color=16m")||f("color=full")||f("color=truecolor"))return 3;if(f("color=256"))return 2}if("TF_BUILD"in c&&"AGENT_NAME"in c)return 1;if(t&&!e&&n===void 0)return 0;let s=n||0;if(c.TERM==="dumb")return s;if(R.platform==="win32"){let i=z.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in c)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(i=>i in c)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(i=>i in c)||c.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in c)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(c.TEAMCITY_VERSION)?1:0;if(c.COLORTERM==="truecolor"||c.TERM==="xterm-kitty"||c.TERM==="xterm-ghostty"||c.TERM==="wezterm")return 3;if("TERM_PROGRAM"in c){let i=Number.parseInt((c.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(c.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(c.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(c.TERM)||"COLORTERM"in c?1:s}function j(t,e={}){let r=q(t,{streamIsTTY:t&&t.isTTY,...e});return Z(r)}var H={stdout:j({isTTY:S.isatty(1)}),stderr:j({isTTY:S.isatty(2)})},F=H;function I(t,e,r){let o=t.indexOf(e);if(o===-1)return t;let n=e.length,s=0,i="";do i+=t.slice(s,o)+e+r,s=o+n,o=t.indexOf(e,s);while(o!==-1);return i+=t.slice(s),i}function P(t,e,r,o){let n=0,s="";do{let i=t[o-1]==="\r";s+=t.slice(n,i?o-1:o)+e+(i?`\r
4
4
  `:`
5
- `)+o,n=r+1,r=t.indexOf(`
6
- `,n)}while(r!==-1);return s+=t.slice(n),s}var{stdout:M,stderr:B}=j,R=Symbol("GENERATOR"),g=Symbol("STYLER"),h=Symbol("IS_EMPTY"),k=["ansi","ansi","ansi256","ansi16m"],d=Object.create(null),H=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let o=M?M.level:0;t.level=e.level===void 0?o:e.level};var Q=t=>{let e=(...o)=>o.join(" ");return H(e,t),Object.setPrototypeOf(e,b.prototype),e};function b(t){return Q(t)}Object.setPrototypeOf(b.prototype,Function.prototype);for(let[t,e]of Object.entries(m))d[t]={get(){let o=C(this,v(e.open,e.close,this[g]),this[h]);return Object.defineProperty(this,t,{value:o}),o}};d.visible={get(){let t=C(this,this[g],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var O=(t,e,o,...r)=>t==="rgb"?e==="ansi16m"?m[o].ansi16m(...r):e==="ansi256"?m[o].ansi256(m.rgbToAnsi256(...r)):m[o].ansi(m.rgbToAnsi(...r)):t==="hex"?O("rgb",e,o,...m.hexToRgb(...r)):m[o][t](...r),X=["rgb","hex","ansi256"];for(let t of X){d[t]={get(){let{level:o}=this;return function(...r){let n=v(O(t,k[o],"color",...r),m.color.close,this[g]);return C(this,n,this[h])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);d[e]={get(){let{level:o}=this;return function(...r){let n=v(O(t,k[o],"bgColor",...r),m.bgColor.close,this[g]);return C(this,n,this[h])}}}}var ee=Object.defineProperties(()=>{},{...d,level:{enumerable:!0,get(){return this[R].level},set(t){this[R].level=t}}}),v=(t,e,o)=>{let r,n;return o===void 0?(r=t,n=e):(r=o.openAll+t,n=e+o.closeAll),{open:t,close:e,openAll:r,closeAll:n,parent:o}},C=(t,e,o)=>{let r=(...n)=>te(r,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(r,ee),r[R]=t,r[g]=e,r[h]=o,r},te=(t,e)=>{if(t.level<=0||!e)return t[h]?"":e;let o=t[g];if(o===void 0)return e;let{openAll:r,closeAll:n}=o;if(e.includes("\x1B"))for(;o!==void 0;)e=P(e,o.close,o.open),o=o.parent;let s=e.indexOf(`
7
- `);return s!==-1&&(e=I(e,n,r,s)),r+e+n};Object.defineProperties(b.prototype,d);var oe=b(),Oe=b({level:B?B.level:0});var i=oe;import{Command as pe}from"commander";import p from"fs-extra";import u from"path";import{fileURLToPath as re}from"url";var _=t=>t.replace(/([a-z])([A-Z])/g,"$1_$2").toUpperCase(),ne=[{templateFileName:"gitignore",targetFileName:".gitignore"},{templateFileName:"yarnrc.yml",targetFileName:".yarnrc.yml"}],T=[{id:"projectName",enabled:!0,type:"input",message:"What is your project name?",default:"my-raclette-app",validate:t=>t.trim()?!0:"Project name is required",configKey:"projectName"},{id:"useRecommendedEslint",enabled:!0,type:"confirm",message:"Do you want to use the recommended ESLint config? (What the core devs use, but it's opinionated)",default:!1,configKey:"useRecommendedEslint"}],L=async(t,e=!1)=>{let o;if(e)o=await se(t);else{let s=t||"my-raclette-app";s==="."&&(s=u.basename(process.cwd())),o={projectName:s,useRecommendedEslint:!1}}if(!o.projectName)throw new Error("Project name is required");console.log(i.rgb(221,139,64)(`\u{1F9C0} Creating racletteJS app: ${o.projectName}`));let r,n;if(t==="."){r=process.cwd(),n=".";let s=await p.readdir(r),l=[".git",".gitignore","LICENSE",".DS_Store"];s.some(G=>!l.includes(G))&&(console.error(i.red("Current directory is not empty! Please use an empty directory or specify a project name.")),process.exit(1))}else n=$(o.projectName),r=u.resolve(process.cwd(),n),await p.pathExists(r)&&(console.error(i.red(`Directory ${n} already exists!`)),process.exit(1)),await p.ensureDir(r);await le(r,o),console.log(i.green("\u2705 racletteJS app created successfully!")),console.log(i.blue(`
8
- Next steps:`)),t!=="."&&console.log(i.white(` cd ${n}`)),console.log(i.white(" yarn install")),console.log(i.white(" yarn dev")),console.log(i.blue(`
9
- \u{1F4CB} Important notes:`)),console.log(i.white(" \u2022 First start might take a few minutes (Docker containers)")),console.log(i.white(" \u2022 If you have a slow internet connection you might run into a timeout")),console.log(i.white(' \u2022 If you get an error during first boot "process exited with code 1"')),console.log(i.white(" \u2022 yarn down")),console.log(i.white(" \u2022 yarn dev")),console.log(i.white(" \u2022 Visit workbench first: http://localhost:8083")),console.log(i.white(" \u2022 Create admin user, then access app: http://localhost:8081")),console.log(i.white(" > We recommend to use Docker Desktop if you are not experienced with Docker")),console.log(i.white(`
10
- Happy coding! \u{1F9C0}`))},se=async t=>{let{input:e,confirm:o}=await import("@inquirer/prompts");console.log(i.rgb(221,139,64)(`\u{1F9C0} Welcome to racletteJS App Interactive Setup!
11
- `));let r={};for(let n of T){if(!n.enabled)continue;let s;if(n.id==="projectName"&&t)s=t==="."?u.basename(process.cwd()):t;else switch(n.type){case"input":s=await e({message:n.message,default:n.default,validate:n.validate});break;case"confirm":s=await o({message:n.message,default:n.default});break;default:throw new Error(`Unknown step type: ${n.type}`)}r[n.configKey]=s}return await ie(r),r},ie=async t=>{let{confirm:e}=await import("@inquirer/prompts");console.log(i.blue(`
12
- \u{1F4CB} Configuration Summary:`));for(let r of T){if(!r.enabled)continue;let n=t[r.configKey],s=typeof n=="boolean"?n:n||"Not set";console.log(i.white(` ${r.id}: ${s}`))}await e({message:"Proceed with this configuration?",default:!0})||(console.log(i.yellow("Setup cancelled.")),process.exit(0))},le=async(t,e)=>{let o,r=typeof import.meta.url=="string"?u.dirname(re(import.meta.url)):process.cwd(),n=[u.join(r,"templates"),u.join(r,"..","templates"),u.join(r,"..","..","templates"),u.join(process.cwd(),"templates"),u.join(process.cwd(),"src","templates")];for(let s of n)if(await p.pathExists(s)){o=s;break}if(!o)throw new Error("Could not find templates directory. Please ensure the templates folder exists.");console.log(i.blue("\u{1F4C1} Copying template files...")),await p.copy(o,t),await ae(t),await ce(t,e)},ae=async t=>{for(let e of ne){let o=u.join(t,e.templateFileName),r=u.join(t,e.targetFileName);await p.pathExists(o)&&await p.move(o,r,{overwrite:!0})}},ce=async(t,e)=>{console.log(i.blue("\u{1F504} Processing template files..."));let o=await ue(t);for(let r of o){let n=u.extname(r);[".png",".jpg",".jpeg",".gif",".ico",".woff",".woff2",".ttf",".eot"].includes(n)||await fe(r,e)}},ue=async t=>{let e=[],o=async r=>{let n=await p.readdir(r);for(let s of n){let l=u.join(r,s);(await p.stat(l)).isDirectory()?s!=="node_modules"&&s!==".git"&&!s.startsWith(".")&&await o(l):e.push(l)}};return await o(t),e},fe=async(t,e)=>{if(!await p.pathExists(t))return;let o=await p.readFile(t,"utf-8");for(let r of T){if(!r.enabled)continue;let n=e[r.configKey];if(n!==void 0){let s=`{{${_(r.configKey)}}}`;o=o.replace(new RegExp(s,"g"),String(n))}}e.projectName&&(o=o.replace(/{{PROJECT_NAME_KEBAB}}/g,$(e.projectName)));for(let r of T){if(!r.enabled)continue;let n=e[r.configKey];if(n!==void 0){let s=new RegExp(`{{#if ${_(r.configKey)}}}([\\s\\S]*?){{\\/if}}`,"g");o=o.replace(s,n?"$1":"")}}o=o.replace(/^\s*\n/gm,""),await p.writeFile(t,o)},$=t=>t.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_]+/g,"-").toLowerCase();var D=new pe;D.name("create-raclette-app").description("Create a new racletteJS application").version("1.0.0").argument("[project-name]","Name of the project to create").option("-n, --non-interactive","Skip interactive prompts and use defaults").action(async(t,e)=>{try{let o=!e.nonInteractive;await L(t,o)}catch(o){console.error(i.red("Error creating racletteJS app:"),o),process.exit(1)}});D.parse();
5
+ `)+r,n=o+1,o=t.indexOf(`
6
+ `,n)}while(o!==-1);return s+=t.slice(n),s}var{stdout:M,stderr:B}=F,T=Symbol("GENERATOR"),g=Symbol("STYLER"),b=Symbol("IS_EMPTY"),_=["ansi","ansi","ansi256","ansi16m"],d=Object.create(null),Q=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=M?M.level:0;t.level=e.level===void 0?r:e.level};var X=t=>{let e=(...r)=>r.join(" ");return Q(e,t),Object.setPrototypeOf(e,y.prototype),e};function y(t){return X(t)}Object.setPrototypeOf(y.prototype,Function.prototype);for(let[t,e]of Object.entries(m))d[t]={get(){let r=C(this,v(e.open,e.close,this[g]),this[b]);return Object.defineProperty(this,t,{value:r}),r}};d.visible={get(){let t=C(this,this[g],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var O=(t,e,r,...o)=>t==="rgb"?e==="ansi16m"?m[r].ansi16m(...o):e==="ansi256"?m[r].ansi256(m.rgbToAnsi256(...o)):m[r].ansi(m.rgbToAnsi(...o)):t==="hex"?O("rgb",e,r,...m.hexToRgb(...o)):m[r][t](...o),ee=["rgb","hex","ansi256"];for(let t of ee){d[t]={get(){let{level:r}=this;return function(...o){let n=v(O(t,_[r],"color",...o),m.color.close,this[g]);return C(this,n,this[b])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);d[e]={get(){let{level:r}=this;return function(...o){let n=v(O(t,_[r],"bgColor",...o),m.bgColor.close,this[g]);return C(this,n,this[b])}}}}var te=Object.defineProperties(()=>{},{...d,level:{enumerable:!0,get(){return this[T].level},set(t){this[T].level=t}}}),v=(t,e,r)=>{let o,n;return r===void 0?(o=t,n=e):(o=r.openAll+t,n=e+r.closeAll),{open:t,close:e,openAll:o,closeAll:n,parent:r}},C=(t,e,r)=>{let o=(...n)=>oe(o,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(o,te),o[T]=t,o[g]=e,o[b]=r,o},oe=(t,e)=>{if(t.level<=0||!e)return t[b]?"":e;let r=t[g];if(r===void 0)return e;let{openAll:o,closeAll:n}=r;if(e.includes("\x1B"))for(;r!==void 0;)e=I(e,r.close,r.open),r=r.parent;let s=e.indexOf(`
7
+ `);return s!==-1&&(e=P(e,n,o,s)),o+e+n};Object.defineProperties(y.prototype,d);var re=y(),ve=y({level:B?B.level:0});var a=re;import{Command as pe}from"commander";import p from"fs-extra";import u from"path";var k=process.cwd(),L=t=>t.replace(/([a-z])([A-Z])/g,"$1_$2").toUpperCase(),ne=[{templateFileName:"gitignore",targetFileName:".gitignore"},{templateFileName:"yarnrc.yml",targetFileName:".yarnrc.yml"}],E=[{id:"projectName",enabled:!0,type:"input",message:"What is your project name?",default:"my-raclette-app",validate:t=>t.trim()?!0:"Project name is required",configKey:"projectName"},{id:"useRecommendedEslint",enabled:!0,type:"confirm",message:"Do you want to use the recommended ESLint config? (What the core devs use, but it's opinionated)",default:!1,configKey:"useRecommendedEslint"}],$=async(t,e=!1,r)=>{let o;if(e)o=await se(t);else{let i=t||"my-raclette-app";i==="."&&(i=u.basename(process.cwd())),o={projectName:i,useRecommendedEslint:r?.useRecommendedEslint??!1}}if(!o.projectName)throw new Error("Project name is required");console.log(a.rgb(221,139,64)(`\u{1F9C0} Creating racletteJS app: ${o.projectName}`));let n,s;if(t==="."){n=process.cwd(),s=".";let i=await p.readdir(n),h=[".git",".gitignore","LICENSE",".DS_Store"];i.some(K=>!h.includes(K))&&(console.error(a.red("Current directory is not empty! Please use an empty directory or specify a project name.")),process.exit(1))}else s=D(o.projectName),n=u.resolve(process.cwd(),s),await p.pathExists(n)&&(console.error(a.red(`Directory ${s} already exists!`)),process.exit(1)),await p.ensureDir(n);await ae(n,o),console.log(a.green("\u2705 racletteJS app created successfully!")),console.log(a.blue(`
8
+ Next steps:`)),t!=="."&&console.log(a.white(` cd ${s}`)),console.log(a.white(" yarn install")),console.log(a.white(" yarn dev")),console.log(a.blue(`
9
+ \u{1F4CB} Important notes:`)),console.log(a.white(" \u2022 First start might take a few minutes (Docker containers)")),console.log(a.white(" \u2022 If you have a slow internet connection you might run into a timeout")),console.log(a.white(' \u2022 If you get an error during first boot "process exited with code 1"')),console.log(a.white(" \u2022 yarn down")),console.log(a.white(" \u2022 yarn dev")),console.log(a.white(" \u2022 Visit workbench first: http://localhost:8083")),console.log(a.white(" \u2022 Create admin user, then access app: http://localhost:8081")),console.log(a.white(" > We recommend to use Docker Desktop if you are not experienced with Docker")),console.log(a.white(`
10
+ Happy coding! \u{1F9C0}`))},se=async t=>{let{input:e,confirm:r}=await import("@inquirer/prompts");console.log(a.rgb(221,139,64)(`\u{1F9C0} Welcome to racletteJS App Interactive Setup!
11
+ `));let o={};for(let n of E){if(!n.enabled)continue;let s;if(n.id==="projectName"&&t)s=t==="."?u.basename(process.cwd()):t;else switch(n.type){case"input":s=await e({message:n.message,default:n.default,validate:n.validate});break;case"confirm":s=await r({message:n.message,default:n.default});break;default:throw new Error(`Unknown step type: ${n.type}`)}o[n.configKey]=s}return await ie(o),o},ie=async t=>{let{confirm:e}=await import("@inquirer/prompts");console.log(a.blue(`
12
+ \u{1F4CB} Configuration Summary:`));for(let o of E){if(!o.enabled)continue;let n=t[o.configKey],s=typeof n=="boolean"?n:n||"Not set";console.log(a.white(` ${o.id}: ${s}`))}await e({message:"Proceed with this configuration?",default:!0})||(console.log(a.yellow("Setup cancelled.")),process.exit(0))},ae=async(t,e)=>{let r,o=process.argv[1]?u.dirname(process.argv[1]):process.cwd(),n=[u.join(o,"templates"),u.join(o,"..","templates"),u.join(o,"..","..","templates"),u.join(k,"templates"),u.join(k,"src","templates"),u.join(process.cwd(),"templates"),u.join(process.cwd(),"src","templates")];for(let s of n)if(await p.pathExists(s)){r=s;break}if(!r)throw new Error("Could not find templates directory. Please ensure the templates folder exists.");console.log(a.blue("\u{1F4C1} Copying template files...")),await p.copy(r,t),await le(t),await ce(t,e)},le=async t=>{for(let e of ne){let r=u.join(t,e.templateFileName),o=u.join(t,e.targetFileName);await p.pathExists(r)&&await p.move(r,o,{overwrite:!0})}},ce=async(t,e)=>{console.log(a.blue("\u{1F504} Processing template files..."));let r=await ue(t);for(let o of r){let n=u.extname(o);[".png",".jpg",".jpeg",".gif",".ico",".woff",".woff2",".ttf",".eot"].includes(n)||await fe(o,e)}},ue=async t=>{let e=[],r=async o=>{let n=await p.readdir(o);for(let s of n){let i=u.join(o,s);(await p.stat(i)).isDirectory()?s!=="node_modules"&&s!==".git"&&!s.startsWith(".")&&await r(i):e.push(i)}};return await r(t),e},fe=async(t,e)=>{if(!await p.pathExists(t))return;let r=await p.readFile(t,"utf-8");for(let o of E){if(!o.enabled)continue;let n=e[o.configKey];if(n!==void 0){let s=`{{${L(o.configKey)}}}`;r=r.replace(new RegExp(s,"g"),String(n))}}e.projectName&&(r=r.replace(/{{PROJECT_NAME_KEBAB}}/g,D(e.projectName)));for(let o of E){if(!o.enabled)continue;let n=e[o.configKey];if(n!==void 0){let s=new RegExp(`{{#if ${L(o.configKey)}}}([\\s\\S]*?){{\\/if}}`,"g");r=r.replace(s,n?"$1":"")}}r=r.replace(/^\s*\n/gm,""),await p.writeFile(t,r)},D=t=>t.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[\s_]+/g,"-").toLowerCase();var G=new pe;G.name("create-raclette-app").description("Create a new racletteJS application").version("1.0.0").argument("[project-name]","Name of the project to create").option("-n, --non-interactive","Skip interactive prompts and use defaults").action(async(t,e)=>{try{let r=!e.nonInteractive;await $(t,r)}catch(r){console.error(a.red("Error creating racletteJS app:"),r),process.exit(1)}});G.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-raclette-app",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "description": "CLI tool to create a racletteJS application boilerplate",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -23,6 +23,9 @@ id_rsa.pub
23
23
  # ignore reference folder
24
24
  **/*-ref
25
25
 
26
+ # yarn
27
+ .yarn/install-state.gz
28
+
26
29
  node_modules
27
30
  **/node_modules
28
31
 
@@ -17,36 +17,35 @@
17
17
  "lint:fix": "eslint --fix"
18
18
  },
19
19
  "dependencies": {
20
- "@raclettejs/workbench": "0.1.23",
21
- "@raclettejs/core": "0.1.23"
20
+ "@raclettejs/workbench": "0.1.25",
21
+ "@raclettejs/core": "0.1.25"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@eslint/js": "9.35.0",
25
- "@raclettejs/types": "0.1.23",
26
- "@sinclair/typebox": "0.34.41",
25
+ "@raclettejs/types": "0.1.25",
26
+ "@sinclair/typebox": "0.34.48",
27
27
  "@typescript-eslint/eslint-plugin": "^8.32.1",
28
28
  "@typescript-eslint/parser": "^8.32.1",
29
29
  "@vue/eslint-config-prettier": "^10.2.0",
30
30
  "@vue/eslint-config-typescript": "^14.5.0",
31
- "axios": "1.13.2",
31
+ "axios": "1.13.6",
32
32
  "eslint": "9.35.0",
33
- "eslint-config-prettier": "10.1.8",
34
- "eslint-config-standard": "^17.1.0",
35
- "eslint-flat-config-utils": "^2.0.1",
33
+ "eslint-config-prettier": "9.1.2",
34
+ "eslint-flat-config-utils": "3.0.2",
36
35
  "eslint-plugin-import": "2.32.0",
37
- "eslint-plugin-prefer-arrow-functions": "3.8.1",
38
- "eslint-plugin-prettier": "^5.4.0",
39
- "eslint-plugin-vue": "10.4.0",
40
- "fastify": "5.6.0",
41
- "globals": "16.4.0",
42
- "prettier": "3.6.2",
43
- "ramda": "0.31.3",
44
- "typescript": "5.9.2",
45
- "typescript-eslint": "8.44.0",
36
+ "eslint-plugin-prefer-arrow-functions": "3.9.1",
37
+ "eslint-plugin-prettier": "5.5.5",
38
+ "eslint-plugin-vue": "9.33.0",
39
+ "fastify": "5.8.2",
40
+ "globals": "17.4.0",
41
+ "prettier": "3.8.1",
42
+ "ramda": "0.32.0",
43
+ "typescript": "5.9.3",
44
+ "typescript-eslint": "8.57.1",
46
45
  "uuid": "13.0.0",
47
46
  "vite": "7.1.5",
48
- "vue": "3.5.25",
49
- "vue-eslint-parser": "10.2.0",
50
- "vuetify": "3.11.2"
47
+ "vue": "3.5.30",
48
+ "vue-eslint-parser": "9.4.3",
49
+ "vuetify": "4.0.5"
51
50
  }
52
51
  }
package/dist/index.js.map DELETED
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../node_modules/.store/chalk-npm-5.6.2-c1d291da8e/package/source/vendor/ansi-styles/index.js", "../node_modules/.store/chalk-npm-5.6.2-c1d291da8e/package/source/vendor/supports-color/index.js", "../node_modules/.store/chalk-npm-5.6.2-c1d291da8e/package/source/utilities.js", "../node_modules/.store/chalk-npm-5.6.2-c1d291da8e/package/source/index.js", "../src/index.ts", "../src/create-app.ts"],
4
- "sourcesContent": ["const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n", "import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n", "// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n", "import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n", "#!/usr/bin/env node\n\nimport chalk from \"chalk\"\nimport { Command } from \"commander\"\nimport { createRacletteApp } from \"./create-app\"\n\nconst program = new Command()\n\nprogram\n .name(\"create-raclette-app\")\n .description(\"Create a new racletteJS application\")\n .version(\"1.0.0\")\n .argument(\"[project-name]\", \"Name of the project to create\")\n .option(\"-n, --non-interactive\", \"Skip interactive prompts and use defaults\")\n .action(async (projectName, options) => {\n try {\n const interactive = !options.nonInteractive\n\n await createRacletteApp(projectName, interactive)\n } catch (error) {\n console.error(chalk.red(\"Error creating racletteJS app:\"), error)\n process.exit(1)\n }\n })\n\nprogram.parse()\n", "import { input, confirm } from \"@inquirer/prompts\"\nimport chalk from \"chalk\"\nimport fs from \"fs-extra\"\nimport path from \"path\"\nimport { fileURLToPath } from \"url\"\n\nexport const toUpperSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, \"$1_$2\").toUpperCase()\n}\n\ninterface ProjectConfig {\n projectName?: string\n useRecommendedEslint?: boolean\n // Add more config options here as needed\n}\n\ninterface WizardStep {\n id: string\n enabled: boolean\n type: \"input\" | \"confirm\"\n message: string\n default?: any\n validate?: (input: string) => boolean | string\n configKey: string\n}\n\nconst TEMPLATE_DOTFILE_MAP: ReadonlyArray<{\n templateFileName: string\n targetFileName: string\n}> = [\n { templateFileName: \"gitignore\", targetFileName: \".gitignore\" },\n { templateFileName: \"yarnrc.yml\", targetFileName: \".yarnrc.yml\" },\n]\n\nconst WIZARD_STEPS: WizardStep[] = [\n {\n id: \"projectName\",\n enabled: true,\n type: \"input\",\n message: \"What is your project name?\",\n default: \"my-raclette-app\",\n validate: (input: string) => {\n if (!input.trim()) {\n return \"Project name is required\"\n }\n\n return true\n },\n configKey: \"projectName\",\n },\n {\n id: \"useRecommendedEslint\",\n enabled: true,\n type: \"confirm\",\n message:\n \"Do you want to use the recommended ESLint config? (What the core devs use, but it's opinionated)\",\n default: false,\n configKey: \"useRecommendedEslint\",\n },\n // Add more steps here as needed\n]\n\nexport const createRacletteApp = async (\n projectName?: string,\n interactive = false,\n): Promise<void> => {\n let config: ProjectConfig\n\n if (interactive) {\n config = await runWizard(projectName)\n } else {\n // Non-interactive mode - use provided name or default\n let name = projectName || \"my-raclette-app\"\n\n // If project name is \".\", use current directory name\n if (name === \".\") {\n name = path.basename(process.cwd())\n }\n\n config = {\n projectName: name,\n useRecommendedEslint: false, // Default to standard config in non-interactive mode\n }\n }\n\n // Ensure projectName is defined\n if (!config.projectName) {\n throw new Error(\"Project name is required\")\n }\n\n console.log(\n chalk.rgb(\n 221,\n 139,\n 64,\n )(`\uD83E\uDDC0 Creating racletteJS app: ${config.projectName}`),\n )\n\n // Determine target directory and folder name\n let targetDir: string\n let folderName: string\n\n if (projectName === \".\") {\n // User wants to create in current directory\n targetDir = process.cwd()\n folderName = \".\" // For display purposes\n\n // Check if current directory is empty (has only common files)\n const existingFiles = await fs.readdir(targetDir)\n const allowedFiles = [\".git\", \".gitignore\", \"LICENSE\", \".DS_Store\"]\n const hasConflictingFiles = existingFiles.some(\n (file) => !allowedFiles.includes(file),\n )\n\n if (hasConflictingFiles) {\n console.error(\n chalk.red(\n \"Current directory is not empty! Please use an empty directory or specify a project name.\",\n ),\n )\n process.exit(1)\n }\n } else {\n // Use kebab-case for the folder name to avoid whitespace issues\n folderName = kebabCase(config.projectName)\n targetDir = path.resolve(process.cwd(), folderName)\n\n // Check if directory already exists\n if (await fs.pathExists(targetDir)) {\n console.error(chalk.red(`Directory ${folderName} already exists!`))\n process.exit(1)\n }\n\n // Create project directory\n await fs.ensureDir(targetDir)\n }\n\n // Copy template files\n await copyTemplateFiles(targetDir, config)\n\n console.log(chalk.green(\"\u2705 racletteJS app created successfully!\"))\n console.log(chalk.blue(\"\\nNext steps:\"))\n\n // Only show cd command if not creating in current directory\n if (projectName !== \".\") {\n console.log(chalk.white(` cd ${folderName}`))\n }\n\n console.log(chalk.white(\" yarn install\"))\n console.log(chalk.white(\" yarn dev\"))\n console.log(chalk.blue(\"\\n\uD83D\uDCCB Important notes:\"))\n console.log(\n chalk.white(\" \u2022 First start might take a few minutes (Docker containers)\"),\n )\n console.log(\n chalk.white(\n \" \u2022 If you have a slow internet connection you might run into a timeout\",\n ),\n )\n console.log(\n chalk.white(\n ' \u2022 If you get an error during first boot \"process exited with code 1\"',\n ),\n )\n console.log(chalk.white(\" \u2022 yarn down\"))\n console.log(chalk.white(\" \u2022 yarn dev\"))\n console.log(chalk.white(\" \u2022 Visit workbench first: http://localhost:8083\"))\n console.log(\n chalk.white(\n \" \u2022 Create admin user, then access app: http://localhost:8081\",\n ),\n )\n console.log(\n chalk.white(\n \" > We recommend to use Docker Desktop if you are not experienced with Docker\",\n ),\n )\n console.log(chalk.white(\"\\nHappy coding! \uD83E\uDDC0\"))\n}\n\nconst runWizard = async (\n providedProjectName?: string,\n): Promise<ProjectConfig> => {\n console.log(\n chalk.rgb(\n 221,\n 139,\n 64,\n )(\"\uD83E\uDDC0 Welcome to racletteJS App Interactive Setup!\\n\"),\n )\n\n const config: ProjectConfig = {}\n\n // Process each enabled step\n for (const step of WIZARD_STEPS) {\n if (!step.enabled) {\n continue\n }\n\n let value: any\n\n // Skip project name prompt if already provided\n if (step.id === \"projectName\" && providedProjectName) {\n // If project name is \".\", use current directory name\n value =\n providedProjectName === \".\"\n ? path.basename(process.cwd())\n : providedProjectName\n } else {\n // Run the appropriate prompt based on step type\n switch (step.type) {\n case \"input\":\n value = await input({\n message: step.message,\n default: step.default,\n validate: step.validate,\n })\n break\n case \"confirm\":\n value = await confirm({\n message: step.message,\n default: step.default,\n })\n break\n default:\n throw new Error(`Unknown step type: ${step.type}`)\n }\n }\n\n // Store the value in config using the configKey\n ;(config as any)[step.configKey] = value\n }\n\n // Show configuration summary\n await showConfigurationSummary(config)\n\n return config\n}\n\nconst showConfigurationSummary = async (\n config: ProjectConfig,\n): Promise<void> => {\n console.log(chalk.blue(\"\\n\uD83D\uDCCB Configuration Summary:\"))\n\n // Display each configuration value\n for (const step of WIZARD_STEPS) {\n if (!step.enabled) {\n continue\n }\n\n const value = (config as any)[step.configKey]\n const displayValue = typeof value === \"boolean\" ? value : value || \"Not set\"\n\n console.log(chalk.white(` ${step.id}: ${displayValue}`))\n }\n\n const confirmAnswer = await confirm({\n message: \"Proceed with this configuration?\",\n default: true,\n })\n\n if (!confirmAnswer) {\n console.log(chalk.yellow(\"Setup cancelled.\"))\n process.exit(0)\n }\n}\n\nconst copyTemplateFiles = async (\n targetDir: string,\n config: ProjectConfig,\n): Promise<void> => {\n // Find templates directory relative to the current file or project root\n let templatesDir: string | undefined\n\n // Try to find templates relative to the current file first\n const currentDir = path.dirname(fileURLToPath(import.meta.url))\n const possiblePaths = [\n path.join(currentDir, \"templates\"),\n path.join(currentDir, \"..\", \"templates\"),\n path.join(currentDir, \"..\", \"..\", \"templates\"), // For built/dist environments\n path.join(process.cwd(), \"templates\"),\n path.join(process.cwd(), \"src\", \"templates\"),\n ]\n\n for (const possiblePath of possiblePaths) {\n if (await fs.pathExists(possiblePath)) {\n templatesDir = possiblePath\n break\n }\n }\n\n if (!templatesDir) {\n throw new Error(\n \"Could not find templates directory. Please ensure the templates folder exists.\",\n )\n }\n\n console.log(chalk.blue(\"\uD83D\uDCC1 Copying template files...\"))\n\n // Copy all files from templates directory\n await fs.copy(templatesDir, targetDir)\n\n // Restore dotfile names that cannot be shipped as dotfiles in npm package templates.\n await restoreTemplateDotfiles(targetDir)\n\n // Process ALL template files dynamically\n await processAllTemplateFiles(targetDir, config)\n}\n\nconst restoreTemplateDotfiles = async (targetDir: string): Promise<void> => {\n for (const dotfile of TEMPLATE_DOTFILE_MAP) {\n const sourcePath = path.join(targetDir, dotfile.templateFileName)\n const targetPath = path.join(targetDir, dotfile.targetFileName)\n\n if (await fs.pathExists(sourcePath)) {\n await fs.move(sourcePath, targetPath, { overwrite: true })\n }\n }\n}\n\nconst processAllTemplateFiles = async (\n targetDir: string,\n config: ProjectConfig,\n): Promise<void> => {\n console.log(chalk.blue(\"\uD83D\uDD04 Processing template files...\"))\n\n const files = await getAllFiles(targetDir)\n\n for (const file of files) {\n // Skip certain file types that shouldn't be processed\n const ext = path.extname(file)\n const skipExtensions = [\n \".png\",\n \".jpg\",\n \".jpeg\",\n \".gif\",\n \".ico\",\n \".woff\",\n \".woff2\",\n \".ttf\",\n \".eot\",\n ]\n\n if (skipExtensions.includes(ext)) {\n continue\n }\n\n await processTemplateFile(file, config)\n }\n}\n\nconst getAllFiles = async (dir: string): Promise<string[]> => {\n const files: string[] = []\n\n const traverse = async (currentDir: string) => {\n const items = await fs.readdir(currentDir)\n\n for (const item of items) {\n const fullPath = path.join(currentDir, item)\n const stat = await fs.stat(fullPath)\n\n if (stat.isDirectory()) {\n // Skip node_modules and .git directories\n if (\n item !== \"node_modules\" &&\n item !== \".git\" &&\n !item.startsWith(\".\")\n ) {\n await traverse(fullPath)\n }\n } else {\n files.push(fullPath)\n }\n }\n }\n\n await traverse(dir)\n\n return files\n}\n\nconst processTemplateFile = async (\n filePath: string,\n config: ProjectConfig,\n): Promise<void> => {\n if (!(await fs.pathExists(filePath))) {\n return\n }\n\n let content = await fs.readFile(filePath, \"utf-8\")\n\n // Process template variables dynamically based on config\n for (const step of WIZARD_STEPS) {\n if (!step.enabled) {\n continue\n }\n\n const value = (config as any)[step.configKey]\n\n if (value !== undefined) {\n // Replace template variables like {{PROJECT_NAME}} etc.\n const placeholder = `{{${toUpperSnakeCase(step.configKey)}}}`\n\n content = content.replace(new RegExp(placeholder, \"g\"), String(value))\n }\n }\n\n // Handle special case for PROJECT_NAME_KEBAB (kebab-case version)\n if (config.projectName) {\n content = content.replace(\n /{{PROJECT_NAME_KEBAB}}/g,\n kebabCase(config.projectName),\n )\n }\n\n // Handle conditional blocks\n for (const step of WIZARD_STEPS) {\n if (!step.enabled) {\n continue\n }\n\n const value = (config as any)[step.configKey]\n\n if (value !== undefined) {\n const conditionalPattern = new RegExp(\n `{{#if ${toUpperSnakeCase(step.configKey)}}}([\\\\s\\\\S]*?){{\\\\/if}}`,\n \"g\",\n )\n\n content = content.replace(conditionalPattern, value ? \"$1\" : \"\")\n }\n }\n\n // Clean up empty lines left by removed conditional blocks\n content = content.replace(/^\\s*\\n/gm, \"\")\n\n await fs.writeFile(filePath, content)\n}\n\nexport const kebabCase = (str: string): string => {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase()\n}\n"],
5
- "mappings": "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",
6
- "names": ["process", "styles", "chalk", "styles", "input"]
7
- }