@shivaedev/create-app 0.30.0 → 0.32.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,52 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.32.0 - 2026-10-31
4
+
5
+ ### Added
6
+
7
+ - Admin pages can declare a detail path under `route.detail`. `adminDocuments` and `adminPermissionGuard` use the registered page's permission for its list and detail paths.
8
+ - Identity permission layers accept native context keys for permission middleware.
9
+ - Generate frozen PostgreSQL auth migration modules containing checked-in SQL with no Better Auth runtime dependency. Check migrated databases against current auth options and report missing tables, fields, indexes, types and nullability changes.
10
+ - Generated applications ship frozen auth migrations, retain their Quality configuration, and include a PostgreSQL story that checks their current auth options for drift.
11
+ - Identity mounts accept a configured `accountRoleSeed` to grant a role to named provider accounts at boot and sign-in through the guarded `assignRole` path. The shared `ProviderAccounts` schema accepts empty lists for seeds while `AllowedAccounts` continues to require at least one account.
12
+
13
+ ### Changed
14
+
15
+ - Generated applications declare their owner seed from `AUTH_OWNER_ACCOUNTS`, with empty and unset lists granting nothing.
16
+
17
+ ### Fixed
18
+
19
+ - Generated apps use admin registration for permission layers and guard each admin document by its registered page.
20
+ - Execute live auth migration DDL through the native SQL transaction connection, so a preceding migration referencing users cannot block a later auth alteration through another pool.
21
+ - Trusted `assignRole` commands work without an application Reactivity Layer and preserve an existing service for commit invalidation.
22
+ - Generated apps mount with the system theme when browser storage is blocked. Theme choices still apply when storage cannot save them.
23
+
24
+ ### Breaking
25
+
26
+ - Admin registrations install their pages' permission middleware and require `AdminSessions` when their handler layer builds. Provide `Layer.succeed(AdminSessions, sessions)` once at the host instead of installing each page's `permissionLayer` by hand. Missing policy fails startup with the page id and permission name.
27
+ - Declare page middleware with identity’s `permissionMiddleware` so it provides `Identity` and `SessionUser` with the shared identity failures.
28
+ - Generated apps import `ReadStatistics` from `#ReadStatistics.ts` and `StatisticsPermission` from `#modules/notes/StatisticsPermission.ts`; migrate custom imports of `#appPermissions.ts` when applying the template update.
29
+
30
+ ## 0.31.0 - 2026-10-31
31
+
32
+ ### Added
33
+
34
+ - `migrateBetterAuth` runs Better Auth schema migrations using the database from Effect's SQL service. Applications pass auth configuration without a database pool.
35
+ - Generated applications mount roles through identity, migrate the stored default through a numbered migration, and bootstrap the first owner through `assignRole`.
36
+ - Declare the user role field and its sign-up default through identity, and adopt existing users with `migrateBetterAuth(options, { defaultRole })` without an application backfill. Fresh and upgraded PostgreSQL schemas have the same non-null text column and database default.
37
+ - Let identity's database story kit migrate schemas with or without roles, inspect the stored role column and user roles, and model a missing role.
38
+
39
+ ### Fixed
40
+
41
+ - Generated applications start with no quality baseline and rely on the jobs package’s peer installation of `pg-boss`.
42
+ - Loaded editors construct their form from the supplied row without an unreachable synchronous guard.
43
+ - Refuse missing stored roles with `Forbidden` and log the migration fix instead of failing requests with a defect.
44
+
45
+ ### Breaking
46
+
47
+ - `registerAdmin` reports missing or extra page handlers as defects when its handler Layer is built. Consumers that catch synchronous registration errors must instead observe Layer acquisition failures.
48
+ - Pass `defaultRole` alongside `roles` to `betterAuthMount`. Remove application-owned role `additionalFields` and Better Auth's `admin()` plugin if it was only supplying roles. Add and run a numbered `migrateBetterAuth(options, { defaultRole })` migration before deploying, then bootstrap administrators through `assignRole`.
49
+
3
50
  ## 0.30.0 - 2026-10-31
4
51
 
5
52
  ### Added
package/dist/cli.js CHANGED
@@ -285,7 +285,7 @@ ${s}${o}ERRORS${n}`);for(let[,u]of i)for(let f of u)c.push(` ${qb(f.message)}${
285
285
  `)};var f4=Ce("effect/cli/TerminalCapabilities",{defaultValue:()=>bde()}),l4=e=>e!==void 0&&e.length>0,Sde=e=>l4(e)&&e!=="0"&&e.toLowerCase()!=="false",Ede=e=>e.term==="dumb"?{canColor:!1,canAnimate:!1,canPrompt:!1}:{canColor:!l4(e.noColor)&&(Sde(e.forceColor)||e.stdoutIsTerminal),canAnimate:e.stdoutIsTerminal,canPrompt:e.stdinIsTerminal&&e.stdoutIsTerminal},bde=()=>{let e=globalThis.process;return Ede({noColor:e?.env?.NO_COLOR,forceColor:e?.env?.FORCE_COLOR,term:e?.env?.TERM,stdinIsTerminal:e?.stdin?.isTTY===!0,stdoutIsTerminal:e?.stdout?.isTTY===!0})};var kp=fu(e=>h(_f(e,c4)??v_({colors:Fe(e,f4).canColor})));var O_=e=>{let t=new Set,r=[];for(let n of e)t.has(n)||(t.add(n),r.push(n));return r},d4=(e,t)=>{let r=[e],n=e;for(let o=1;o<t.length;o++){let s=t[o],a;for(let i of n.subcommands)if(a=i.commands.find(c=>c.name===s),a)break;if(!a)break;r.push(a),n=a}return r},__=(e,t,r)=>{let o=d4(e,t).flatMap(s=>He(s).globalFlags);return O_([...r,...o])},Ide=e=>{let t=[],r=n=>{let o=He(n);for(let s of o.globalFlags)t.push(s);for(let s of n.subcommands)for(let a of s.commands)r(a)};return r(e),O_(t)},Cde=(e,t)=>{if(e.length<=1)return[];let r=new Set(t.map(o=>o.name)),n=[];for(let o of e.slice(0,-1)){let s=He(o);for(let a of s.contextConfig.flags){let i=Ct(a),c=Bn(a);for(let u of i)r.has(u.name)||u.hidden||(r.add(u.name),n.push(Lb(u,c)))}}return n},m4=(e,t)=>O_([...t,...Ide(e)]),Wb=(e,t,r)=>rt(function*(){let n=d4(e,t),o=n.length>0?n[n.length-1]:e,s=He(o).buildHelpDoc(t),a=Cde(n,s.flags),i=__(e,t,r),c=[];for(let u of i){let f=Ct(u.flag),p=Bn(u.flag);for(let d of f)d.hidden||c.push({...Lb(d,p),required:!1})}return{...s,flags:[...a,...s.flags],globalFlags:c}});var Vb=e=>({_tag:"Action",flag:e.flag,run:e.run}),wde=e=>t=>{h4+=1;let r=st(`effect/cli/GlobalFlag/${e}/${h4}`);return Object.assign(r,{_tag:"Setting",id:e,flag:t.flag})},h4=0,kde=Vb({flag:tg("help").pipe(jb("h"),hf("Show help information"),rg(!1)),run:D(function*(e,{builtIns:t,command:r,commandPath:n}){let o=yield*kp,s=yield*Wb(r,n,t);yield*Lr(o.formatHelpDoc(s))})}),Ade=Vb({flag:tg("version").pipe(jb("v"),hf("Show version information"),rg(!1)),run:D(function*(e,{command:t,version:r}){let n=yield*kp;yield*Lr(n.formatVersion(t.name,r))})}),P_=Vb({flag:tg("wizard").pipe(hf("Start wizard mode for a command"),rg(!1)),run:()=>H}),vde=Vb({flag:Bb("completions",[["bash","bash"],["zsh","zsh"],["fish","fish"],["powershell","powershell"],["sh","bash"],["pwsh","powershell"]]).pipe(Hb,zb("<bash|zsh|fish|powershell|sh|pwsh>"),hf("Print shell completion script")),run:D(function*(e,{command:t}){if(me(e))return;let r=S_(t);yield*Lr(s4(t.name,e.value,r))})}),Ap=wde("log-level")({flag:Bb("log-level",[["all","All"],["trace","Trace"],["debug","Debug"],["info","Info"],["warn","Warn"],["warning","Warn"],["error","Error"],["fatal","Fatal"],["none","None"]]).pipe(Hb,hf("Sets the minimum log level"),zb("<all|trace|debug|info|warn|warning|error|fatal|none>"))}),g4=[kde,Ade,P_,vde,Ap];var og=class extends Ce("effect/cli/CliConfig",{defaultValue:()=>Ode}){},Ode={builtIns:g4};var Ic={};kn(Ic,{annotate:()=>dme,annotateMerge:()=>mme,isCommand:()=>B_,make:()=>rme,provide:()=>gme,provideEffect:()=>yme,provideEffectDiscard:()=>Sme,provideSync:()=>xme,run:()=>Tme,runWith:()=>j_,unlisted:()=>pme,validate:()=>ome,withAlias:()=>lme,withDescription:()=>ume,withExamples:()=>hme,withGlobalFlags:()=>cme,withHandler:()=>nme,withSharedFlags:()=>ime,withShortDescription:()=>fme,withSubcommands:()=>ame,wizard:()=>Eme});function S4(e){let t=e.indexOf("--");return t===-1?{tokens:y4(e),trailingOperands:[]}:{tokens:y4(e.slice(0,t)),trailingOperands:e.slice(t+1)}}var _de=/^-(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/,y4=e=>{let t=[];for(let r of e)if(!r.startsWith("-")||_de.test(r))t.push({_tag:"Value",value:r});else if(r.startsWith("--")){let n=r.indexOf("=");if(n!==-1){let o=r.slice(2,n);if(o==="")t.push({_tag:"Value",value:r});else{let s=r.slice(n+1);t.push({_tag:"LongOption",name:o,raw:r,value:s})}}else t.push({_tag:"LongOption",name:r.slice(2),raw:r})}else if(r.length>1){let n=r.slice(1),o=n.indexOf("=");if(o!==-1){let s=Array.from(n.slice(0,o)),a=s.pop()??"";for(let i of s)t.push({_tag:"ShortOption",flag:i,raw:`-${i}`});t.push({_tag:"ShortOption",flag:a,raw:`-${a}`,value:n.slice(o+1)})}else for(let s of n)t.push({_tag:"ShortOption",flag:s,raw:`-${s}`})}else t.push({_tag:"Value",value:r});return t};var Fde=(e,t)=>{let r=e.length,n=t.length,o=Array.from({length:r+1},()=>new Array(n+1).fill(0));for(let s=0;s<=r;s++)o[s][0]=s;for(let s=0;s<=n;s++)o[0][s]=s;for(let s=1;s<=r;s++)for(let a=1;a<=n;a++){let i=e[s-1]===t[a-1]?0:1;o[s][a]=Math.min(o[s-1][a]+1,o[s][a-1]+1,o[s-1][a-1]+i)}return o[r][n]},R_=(e,t)=>{let r=t.map(o=>[Fde(e,o),o]).filter(([o])=>o<=2).sort(([o],[s])=>o-s);if(r.length===0)return[];let n=r[0][0];return r.filter(([o])=>o===n).map(([,o])=>o)};var $_=e=>qe(e.subcommand,{onNone:()=>[],onSome:t=>[t.name,...$_(t.parsedInput)]}),M_=(e,t,r=[])=>rt(function*(){let{tokens:n,trailingOperands:o}=e,s=[...r,t.name],a=He(t),c=a.config.flags.flatMap(Ct).filter(uf),u=Op(c),p=a.contextConfig.flags.flatMap(Ct).filter(uf),d=Op(p),m=new Set(p.map(N=>N.name)),g={command:t,commandPath:s,flagRegistry:u,inheritedFlagRegistry:d,localFlagNames:c.filter(N=>!m.has(N.name)).map(N=>N.name)},x=Wde(n,g);if(x._tag==="Leaf")return{flags:x.flags,arguments:[...x.arguments,...o],subcommand:k(),...x.errors.length>0&&{errors:x.errors}};let E={tokens:x.childTokens,trailingOperands:o},w=yield*M_(E,x.sub,s),C=[...x.errors,...w.errors??[]];return{flags:x.flags,arguments:[],subcommand:_({name:x.sub.name,parsedInput:w}),...C.length>0&&{errors:C}}}),Gb=e=>{let t=0;return{peek:()=>e[t],take:()=>e[t++],rest:()=>e.slice(t)}},I4=e=>!qO(e.primitiveType)||e.negation===!1?void 0:e.negation??`no-${e.name}`,Op=e=>{let t=new Map,r=new Map;for(let n of e){if(t.has(n.name))throw new Error(`Duplicate flag name "${n.name}" in command definition`);t.set(n.name,n);for(let s of n.aliases){if(t.has(s))throw new Error(`Duplicate flag/alias "${s}" in command definition (conflicts with "${t.get(s).name}")`);t.set(s,n)}let o=I4(n);if(o!==void 0){if(r.has(o))throw new Error(`Duplicate negation "${o}" in command definition (conflicts with "${r.get(o).name}")`);r.set(o,n)}}return{params:e,index:t,negations:r}},C4=e=>{let t=new Map,r=(n,o)=>{let s=t.get(n);if(s&&s!==o)throw new Error(`Duplicate subcommand name/alias "${n}" in command definition (conflicts with "${s.name}")`);t.set(n,o)};for(let n of e)for(let o of n.commands)r(o.name,o),o.alias&&o.alias!==o.name&&r(o.alias,o);return t},U_=e=>Object.fromEntries(e.map(t=>[t.name,[]])),Rde=e=>{let t=U_(e);return{add:(r,n)=>{n!==void 0&&t[r].push(n)},merge:r=>{for(let n in r){let o=r[n];if(o?.length)for(let s=0;s<o.length;s++)t[n].push(o[s])}},snapshot:()=>t}},Kb=e=>e._tag==="LongOption"||e._tag==="ShortOption",T4=e=>e._tag==="LongOption"?e.name:e.flag,vp=(e,t)=>{let r=T4(e),n=t.index.get(r);if(n&&n.name===r)return{param:n,negated:!1};let o=e._tag==="LongOption"?t.negations.get(e.name):void 0;if(o)return{param:o,negated:!0};if(n)return{param:n,negated:!1}},E4=(e,t,r)=>new ln({option:t.name,value:r,expected:`omit the value and use ${e.raw} by itself to set --${t.name} to false`,kind:"flag"}),Nde=e=>{let t=di(e.primitiveType);return new ln({option:e.name,value:"",expected:t===void 0?e.typeName??Wh(e.primitiveType):t.join(" | "),kind:"flag"})},b4=e=>e?._tag==="Value"&&(LV(e.value)||BV(e.value))?e.value:void 0,w4=(e,t,r,n=!1)=>{let o=sg(e,t,r,n);switch(o._tag){case"Value":return{_tag:"Value",value:o.value};case"Error":return{_tag:"Error",error:o.error}}},sg=(e,t,r,n=!1)=>{if(n){if(t.value!==void 0)return{_tag:"Error",error:E4(t,r,t.value),tokens:[]};let s=r.optionalValue===void 0?b4(e.peek()):void 0;if(s!==void 0){let a=e.take();return{_tag:"Error",error:E4(t,r,s),tokens:a===void 0?[]:[a]}}return{_tag:"Value",value:"false",tokens:[]}}if(t.value!==void 0)return{_tag:"Value",value:t.value,tokens:[]};if(r.optionalValue!==void 0)return{_tag:"Value",value:r.optionalValue,tokens:[]};if(qO(r.primitiveType)){let s=b4(e.peek()),a=s!==void 0?e.take():void 0;return{_tag:"Value",value:s??"true",tokens:a===void 0?[]:[a]}}let o=e.peek();if(o?._tag==="Value"){let s=e.take();return{_tag:"Value",value:o.value,tokens:s===void 0?[]:[s]}}return{_tag:"Error",error:Nde(r),tokens:[]}},$de=(e,t)=>{let r=U_(t.params),n=[],o=[],s=Gb(e);for(let a=s.take();a;a=s.take()){if(!Kb(a)){n.push(a);continue}let i=vp(a,t);if(!i){n.push(a);continue}let c=w4(s,a,i.param,i.negated);if(c._tag==="Error"){o.push(c.error);continue}c.value!==void 0&&r[i.param.name].push(c.value)}return{flagMap:r,remainder:n,errors:o}},Mde=e=>He(e).config.flags.flatMap(Ct).filter(uf),Ude=e=>He(e).contextConfig.flags.flatMap(Ct).filter(uf),k4=(e,t)=>{for(let r of t){let n=vp(e,r);if(n!==void 0)return n}},N_=(e,t,r,n)=>{e.push(r);let o=sg(t,r,n.param,n.negated);e.push(...o.tokens)},Dde=(e,t,r,n,o)=>{let s=Gb(t);sg(s,e,r.param,r.negated);for(let a=s.take();a;a=s.take()){if(Kb(a)){let i=k4(a,o);i!==void 0&&sg(s,a,i.param,i.negated);continue}if(a._tag==="Value")return n.has(a.value)}return!1},A4=(e,t,r)=>{let n=U_(r.params),o=[],s=(a,i,c)=>{let u=Op(Mde(i)),f=Op(Ude(i)),p=C4(i.subcommands),d=Gb(a),m=[],g=!0;for(let x=d.take();x;x=d.take()){if(Kb(x)){let E=k4(x,c);if(E!==void 0){N_(m,d,x,E);continue}let w=vp(x,f);if(w!==void 0){N_(m,d,x,w);continue}let C=vp(x,u),N=vp(x,r);if(C!==void 0&&(N===void 0||!g||!Dde(x,d.rest(),C,p,[u,f,r]))){N_(m,d,x,C);continue}if(N!==void 0){let P=sg(d,x,N.param,N.negated);if(P._tag==="Error"){o.push(P.error);continue}P.value!==void 0&&n[N.param.name].push(P.value);continue}m.push(x);continue}if(x._tag==="Value"&&g){let E=p.get(x.value);if(E!==void 0)return m.push(x),m.push(...s(d.rest(),E,[...c,f])),m;g=!1}m.push(x)}return m};return{flagMap:n,remainder:s(e,t,[]),errors:o}},Lde=(e,t,r)=>{let n=e._tag==="LongOption"?`--${e.name}`:`-${e.flag}`,o=[];for(let a of t){if(a.hidden)continue;o.push(a.name);let i=I4(a);i!==void 0&&o.push(i);for(let c of a.aliases)o.push(c)}let s=R_(T4(e),o).map(a=>a.length===1?`-${a}`:`--${a}`);return new yc({option:n,suggestions:s,command:r})},Bde=e=>({flags:Rde(e.params),arguments:[],errors:[],mode:{_tag:"AwaitingFirstValue"}}),jde=e=>({_tag:"Leaf",flags:e.flags.snapshot(),arguments:e.arguments,errors:e.errors}),zde=(e,t,r,n)=>{let{command:o,commandPath:s,inheritedFlagRegistry:a,localFlagNames:i}=r,c=C4(o.subcommands),u=c.get(e);if(u){let p=[...s,u.name],d=n.flags.snapshot();for(let g of i){let x=d[g];x!==void 0&&x.length>0&&n.errors.push(new yc({option:`--${g}`,suggestions:[],command:p}))}let m=$de(t.rest(),a);return n.flags.merge(m.flagMap),n.errors.push(...m.errors),{_tag:"Subcommand",result:{_tag:"Sub",flags:n.flags.snapshot(),sub:u,childTokens:m.remainder,errors:n.errors}}}if(!(He(o).config.arguments.length>0)&&c.size>0){let p=[];for(let[m,g]of c)g.unlisted||p.push(m);let d=R_(e,p);n.errors.push(new jh({subcommand:e,parent:s,suggestions:d}))}return{_tag:"Argument"}},Hde=(e,t,r,n)=>{let{commandPath:o,flagRegistry:s}=r,a=vp(e,s);if(!a){n.errors.push(Lde(e,s.params,o));return}let i=w4(t,e,a.param,a.negated);if(i._tag==="Error"){n.errors.push(i.error);return}n.flags.add(a.param.name,i.value)},qde=(e,t,r,n)=>{if(n.mode._tag==="AwaitingFirstValue"){let o=zde(e,t,r,n);if(o._tag==="Subcommand")return o.result;n.mode={_tag:"CollectingArguments"}}n.arguments.push(e)},Wde=(e,t)=>{let r=Gb(e),n=Bde(t.flagRegistry);for(let o=r.take();o;o=r.take()){if(Kb(o)){Hde(o,r,t,n);continue}if(o._tag==="Value"){let s=qde(o.value,r,t,n);if(s)return s}}return jde(n)};var L_=D(function*(e,t){let r=t?.commandPath??[e.name],n=Gde(e,r),o=(t?.prefix??r).map(a=>Ds(a)),{colors:s}=yield*Kh;return yield*Jb(o,s),yield*_4(n,o,n===e?"ROOT":n.name,s),{args:o.map(a=>a.value),displayArgs:o.map(a=>a.displayValue)}}),Gde=(e,t)=>{let r=e;for(let n of t.slice(1)){let o=r.subcommands.flatMap(s=>s.commands).find(s=>s.name===n||s.alias===n);if(o===void 0)break;r=o}return r},_4=D(function*(e,t,r,n){let o=He(e),s=e.subcommands.flatMap(c=>c.commands.filter(u=>!u.unlisted)),a=s.length===0?o.config:o.contextConfig;if(a.flags.length>0){yield*Lr(O4(r,"FLAGS",n));for(let c of a.flags)t.push(...yield*v4(c));(a.arguments.length>0||s.length>0)&&(yield*Jb(t,n))}if(a.arguments.length>0){yield*Lr(O4(r,"ARGUMENTS",n));for(let c of a.arguments)t.push(...yield*v4(c));s.length>0&&(yield*Jb(t,n))}if(s.length===0)return;let i=yield*pn(u_({message:"Command",choices:s.map(c=>({title:c.name,value:c,...c.shortDescription!==void 0?{description:c.shortDescription}:c.description!==void 0?{description:c.description}:{}}))}));yield*Lr(),t.push(Ds(i.name)),Kde(i)&&(yield*Jb(t,n)),yield*_4(i,t,i.name,n)}),Kde=e=>e.subcommands.some(r=>r.commands.some(n=>!n.unlisted))||He(e).config.orderedParams.length>0,v4=D(function*(e){let t=wp(e),r=Bn(e);if(r.isOptional&&!(yield*pn(i_({message:`Set ${D_(t)}?`,initial:!1}))))return yield*Lr(),[];let n=r.isVariadic?yield*pn(c_({message:`${D_(t)} count`,default:Nt(r.variadicMin,()=>0),min:Nt(r.variadicMin,()=>0),...fe(r.variadicMax)?{max:r.variadicMax.value}:{}})):1,o=[];for(let a=0;a<n;a++)o.push(yield*Jde(t));let s=t.kind===Zt?{flags:{[t.name]:o.map(a=>a.value)},arguments:[]}:{flags:{},arguments:o.map(a=>a.value)};return yield*e.parse(s),yield*Lr(),t.kind===jr?o:o.flatMap(a=>t.optionalValue!==void 0||a.value.startsWith("-")&&a.value.length>1?[Ds(`--${t.name}=${a.value}`,`--${t.name}=${a.displayValue}`)]:[Ds(`--${t.name}`),a])}),Jde=e=>{let t=Qde(e);switch(e.primitiveType._tag){case"Boolean":return R(pn(i_({message:t,label:{confirm:"true",deny:"false"},placeholder:{defaultConfirm:"(T/f)",defaultDeny:"(t/F)"}})),r=>Ds(String(r)));case"Choice":{let r=di(e.primitiveType)??[];return R(pn(u_({message:t,choices:r.map(n=>({title:n,value:n}))})),Ds)}case"Date":return R(pn(mG({message:t})),r=>Ds(r.toISOString()));case"Finite":return R(pn(hG({message:t})),r=>Ds(String(r)));case"Int":return R(pn(c_({message:t})),r=>Ds(String(r)));case"Redacted":return R(pn(gG({message:t})),r=>Ds(ya(r),"<redacted>"));default:return R(pn(xG({message:t})),Ds)}},Ds=(e,t=e)=>({value:e,displayValue:t}),Zde=e=>e.kind===Zt?`--${e.name}`:e.name,Qde=e=>D_(e),D_=e=>{let t=Or(e.description)?.trim(),r=e.kind===Zt&&t!==void 0&&t.length<=32?t:Yde(e.name);return e.kind===Zt?`${r} (${Zde(e)})`:r},Yde=e=>{let t=e.split(/[-_]+/).filter(r=>r.length>0);return t.length===0?e:[t[0][0].toUpperCase()+t[0].slice(1),...t.slice(1)].join(" ")},Jb=(e,t)=>Lr(N4("Current command",e.map(r=>r.displayValue),t,tG)),O4=(e,t,r)=>`${It(r,e.toUpperCase(),mi,bp)} ${It(r,"\xB7",Gh)} ${It(r,t,mi,nf)}`,P4=(e,t,r,n)=>[`${It(n,e,mi,bp)} ${It(n,`v${t}`,nf)} ${It(n,"\xB7 Command wizard",mi,nf)}`,...r===void 0||r.length===0?[]:[r],It(n,"Build a command interactively. Press Ctrl+C to cancel.",Gh),""].join(`
286
286
  `),F4=(e,t)=>N4("Command ready",e,t,bp,ab),R4=e=>`
287
287
  ${It(e,"Wizard cancelled.",sb)}`,N4=(e,t,r,n,o=nf)=>{let s=Xde(t);return[It(r,e,mi,o),...s.map(a=>It(r,a,n)),""].join(`
288
- `)},Xde=e=>{let r=" $ ",n=" ",o=e.map(eme),s=[],a=r;for(let i of o){let c=a===r||a===n?"":" ";a.length+c.length+i.length>88&&a!==r?(s.push(`${a} \\`),a=`${n}${i}`):a+=`${c}${i}`}return a!==r&&s.push(a),s},eme=e=>/^[A-Za-z0-9_./:@%+=,-]+$/.test(e)?e:`'${e.replaceAll("'",`'"'"'`)}'`;var B_=e=>O(e,Xh),rme=(e,t,r)=>{let n=Ub(t??{});return Tn({name:e,config:n,...At(r)?{handle:r}:{}})},nme=l(2,(e,t)=>Tn({...He(e),handle:t})),ome=l(2,(e,t)=>{let r=He(e);return Tn({...r,parse:n=>Cr(r.parse(n),t)})}),sme=e=>{let t=[],r=new Map,n=(a,i)=>{t.push(i);let c=r.get(a);c?c.push(i):r.set(a,[i])};for(let a of e){if(B_(a)){n(void 0,a);continue}for(let i of a.commands)n(a.group,i)}let o=[],s=r.get(void 0);s&&s.length>0&&o.push({group:void 0,commands:s});for(let[a,i]of r)a!==void 0&&o.push({group:a,commands:i});return{flat:t,groups:o}},ame=l(2,(e,t)=>{let r=sme(t);y_(e,r.flat);let n=He(e),o=new Map(r.flat.map(c=>[c.name,He(c)])),s=Symbol("effect/cli/SubcommandState"),a=D(function*(c){if(me(c.subcommand))return yield*n.parse(c);let u=o.get(c.subcommand.value.name);if(!u)return yield*n.parse(c);let f=yield*n.parseContext(c),p=yield*u.parse(c.subcommand.value.parsedInput);return{...f,[s]:{name:u.name,result:p}}}),i=D(function*(c,u){let p=c[s];if(p){let d=o.get(p.name);return d?yield*d.handle(p.result,[...u,d.name]).pipe(yn(n.service,c)):yield*new pi({commandPath:u,errors:[]})}return yield*n.handle(c,u)});return Tn({name:n.name,config:n.config,contextConfig:n.contextConfig,description:n.description,shortDescription:n.shortDescription,alias:n.alias,unlisted:n.unlisted,annotations:n.annotations,globalFlags:n.globalFlags,resolveExamples:n.resolveExamples,service:n.service,subcommands:r.groups,parse:a,parseContext:n.parseContext,handle:i})}),ime=l(2,(e,t)=>{let r=He(e),n=Ub(t),o=g_(r.config,n),s=g_(r.contextConfig,n);if(r.subcommands.length>0){let f=r.subcommands.flatMap(p=>p.commands);y_(e,f,{contextConfig:s})}let a=Db(n,{allowLeftovers:!0}),i=D(function*(f){let p=yield*r.parse(f),d=yield*a(f);return{...p,...d}}),c=D(function*(f){let p=yield*r.parseContext(f),d=yield*a(f);return{...p,...d}}),u=(f,p)=>r.handle(f,p);return Tn({name:r.name,config:o,contextConfig:s,description:r.description,shortDescription:r.shortDescription,alias:r.alias,unlisted:r.unlisted,annotations:r.annotations,globalFlags:r.globalFlags,resolveExamples:r.resolveExamples,service:r.service,subcommands:r.subcommands,parse:i,parseContext:c,handle:u})}),cme=l(2,(e,t)=>{let r=He(e),n=Array.from(new Set([...r.globalFlags,...t]));return Tn({...r,globalFlags:n})}),ume=l(2,(e,t)=>Tn({...He(e),description:t})),fme=l(2,(e,t)=>Tn({...He(e),shortDescription:t})),lme=l(2,(e,t)=>Tn({...He(e),alias:t})),pme=e=>Tn({...He(e),unlisted:!0}),dme=l(3,(e,t,r)=>{let n=He(e);return Tn({...n,annotations:fr(n.annotations,t,r)})}),mme=l(2,(e,t)=>{let r=He(e);return Tn({...r,annotations:Bc(r.annotations,t)})}),hme=l(2,(e,t)=>Tn({...He(e),resolveExamples:zr(t)?r=>t({commandPath:r}):()=>t})),Zb=(e,t)=>{let r=He(e);return Tn({...r,handle:(n,o)=>t(r.handle(n,o),n)})},gme=l(e=>B_(e[0]),(e,t,r)=>Zb(e,(n,o)=>iT(n,typeof t=="function"?t(o):t,r))),xme=l(3,(e,t,r)=>Zb(e,(n,o)=>yn(n,t,typeof r=="function"?r(o):r))),yme=l(3,(e,t,r)=>Zb(e,(n,o)=>uT(n,t,typeof r=="function"?r(o):r))),Sme=l(2,(e,t)=>Zb(e,(r,n)=>Ut(typeof t=="function"?t(n):t,r))),Eme=(e,t)=>R(L_(e,t),r=>r.args),bme=(e,t,r,n)=>{let o=new Set(t),s=[],a=new Set;for(let i of e){if(o.has(i))continue;let c=Ct(i.flag);for(let u of c){let f=r[u.name];if(!f||f.length===0)continue;let p=`--${u.name}`;a.has(p)||(a.add(p),s.push(new yc({option:p,suggestions:[],command:n})))}}return s},Ime=(e,t,r)=>rt(function*(){let{builtIns:n}=yield*og,o=yield*kp,s=yield*Wb(e,t.commandPath,n);yield*Lr(o.formatHelpDoc(s)),r&&t.errors.length>0&&(yield*rb(o.formatErrors(t.errors)))}),Cme=e=>rt(function*(){let t=yield*kp;yield*rb(t.formatError(e)),e[du]=!1}),Tme=l(2,(e,t)=>HS.use(({args:r})=>I(r,n=>j_(e,t)(n)))),j_=(e,t)=>{let r=He(e);return D(function*(n){let{builtIns:o}=yield*og,{tokens:s,trailingOperands:a}=S4(n),i=m4(e,o),c=i.flatMap(b=>Ct(b.flag)),u=Op(c.filter(uf)),{flagMap:f,remainder:p,errors:d}=A4(s,e,u),m={flags:f,arguments:[]},g=yield*M_({tokens:p,trailingOperands:a},e),x=[e.name,...$_(g)],E={builtIns:o,command:e,commandPath:x,version:t.version},w=__(e,x,o),C=bme(i,w,f,x);if(C.length>0||d.length>0){let b=g.errors??[];return yield*new pi({commandPath:x,errors:[...d,...C,...b]})}for(let b of w){if(b._tag!=="Action"||!Ct(b.flag).some(L=>{let Z=f[L.name];return Z!==void 0&&Z.length>0}))continue;let[,F]=yield*b.flag.parse(m);if(b===P_){let{colors:L}=yield*Kh;return yield*rt(function*(){yield*Lr(P4(e.name,t.version,e.description,L));let Z=[e.name,...n.filter(Ae=>Ae!=="--wizard"&&!Ae.startsWith("--wizard="))],he=yield*L_(e,{commandPath:x,prefix:Z});yield*Lr(F4(he.displayArgs,L)),(yield*pn(yG({message:"Run this command?",initial:!0,active:"yes",inactive:"no"})))&&(yield*Lr(),yield*j_(e,{...t,renderErrors:!1})(he.args.slice(1)))}).pipe(qa("QuitError",()=>Lr(R4(L))))}yield*b.run(F,E);return}if(g.errors&&g.errors.length>0)return yield*new pi({commandPath:x,errors:g.errors});let N=yield*YC(r.parse(g));if(N._tag==="Failure")return yield*new pi({commandPath:x,errors:[N.failure]});let P=r.handle(N.success,[e.name]),S=w.includes(Ap)?(yield*Ap.flag.parse(m))[1]:k();P=yn(P,Ap,S);for(let b of w){if(b._tag!=="Setting"||b===Ap)continue;let[,A]=yield*b.flag.parse(m);P=yn(P,b,A)}let y=qe(S,{onNone:()=>ur(),onSome:b=>Fa(z$,b)});yield*xn(P,y)},Kd(n=>RO(n)&&n._tag==="ShowHelp"?W(n):K(n),n=>Ut(Ime(e,n,t.renderErrors!==!1),T(n))),Kd(n=>t.renderErrors!==!1&&RO(n)&&n._tag==="UserError"?W(n):K(n),n=>Ut(Cme(n),T(n))),Kd(n=>dV(n)?W(n):K(n),n=>_n))};var qt=class extends ko.TaggedError("CreateAppError"){constructor(t,r){super(t),Object.defineProperty(this,"cause",{value:r?.cause})}};import{Buffer as _me}from"node:buffer";import{basename as Pme,join as V_,resolve as Fme}from"node:path";import{Buffer as H_}from"node:buffer";import{Buffer as $4}from"node:buffer";var ag=Pe.Record(Pe.String,Pe.String),z_=Pe.Array(Pe.Struct({content:Pe.String,path:Pe.String})),nTe=Pe.decodeUnknownSync(Pe.fromJsonString(z_));function ig(e,t=!1){let r=e.find(s=>s.path==="package.minimal.json"),n=e.find(s=>s.path==="quality-baseline.minimal.jsonl"),o=e.filter(s=>!["quality-baseline.minimal.jsonl","package.minimal.json"].includes(s.path));return t?o.filter(s=>!s.path.startsWith("src/modules/notes/")).map(s=>{if(s.path==="package.json"&&r!==void 0)return{...s,content:r.content};if(s.path==="quality-baseline.jsonl"&&n!==void 0)return{...s,content:n.content};if(!["src/modules.ts","src/server/modules.ts","src/server/workerModules.ts","src/client/modules.ts"].includes(s.path))return s;let a=$4.from(s.content,"base64").toString().replace(/^import .* from "#modules\/notes\/.*";\n/gmu,"").replace(/,?\s*\b(?:noteQueue|notesModule|notesRegistration|notesWorker)\b/gu,"");return{...s,content:$4.from(a).toString("base64")}}):o}var wme=Pe.Struct({dependencies:ag,devDependencies:ag,engines:ag,imports:ag,name:Pe.String,packageManager:Pe.String,private:Pe.Boolean,scripts:ag,type:Pe.String,version:Pe.String}),M4=Pe.decodeUnknownSync(Pe.fromJsonString(wme)),kme=["name","version","private","type","imports","scripts","dependencies","devDependencies","packageManager","engines"];function U4(e){return`${JSON.stringify(Object.fromEntries(kme.map(t=>[t,e[t]])),null," ")}
288
+ `)},Xde=e=>{let r=" $ ",n=" ",o=e.map(eme),s=[],a=r;for(let i of o){let c=a===r||a===n?"":" ";a.length+c.length+i.length>88&&a!==r?(s.push(`${a} \\`),a=`${n}${i}`):a+=`${c}${i}`}return a!==r&&s.push(a),s},eme=e=>/^[A-Za-z0-9_./:@%+=,-]+$/.test(e)?e:`'${e.replaceAll("'",`'"'"'`)}'`;var B_=e=>O(e,Xh),rme=(e,t,r)=>{let n=Ub(t??{});return Tn({name:e,config:n,...At(r)?{handle:r}:{}})},nme=l(2,(e,t)=>Tn({...He(e),handle:t})),ome=l(2,(e,t)=>{let r=He(e);return Tn({...r,parse:n=>Cr(r.parse(n),t)})}),sme=e=>{let t=[],r=new Map,n=(a,i)=>{t.push(i);let c=r.get(a);c?c.push(i):r.set(a,[i])};for(let a of e){if(B_(a)){n(void 0,a);continue}for(let i of a.commands)n(a.group,i)}let o=[],s=r.get(void 0);s&&s.length>0&&o.push({group:void 0,commands:s});for(let[a,i]of r)a!==void 0&&o.push({group:a,commands:i});return{flat:t,groups:o}},ame=l(2,(e,t)=>{let r=sme(t);y_(e,r.flat);let n=He(e),o=new Map(r.flat.map(c=>[c.name,He(c)])),s=Symbol("effect/cli/SubcommandState"),a=D(function*(c){if(me(c.subcommand))return yield*n.parse(c);let u=o.get(c.subcommand.value.name);if(!u)return yield*n.parse(c);let f=yield*n.parseContext(c),p=yield*u.parse(c.subcommand.value.parsedInput);return{...f,[s]:{name:u.name,result:p}}}),i=D(function*(c,u){let p=c[s];if(p){let d=o.get(p.name);return d?yield*d.handle(p.result,[...u,d.name]).pipe(yn(n.service,c)):yield*new pi({commandPath:u,errors:[]})}return yield*n.handle(c,u)});return Tn({name:n.name,config:n.config,contextConfig:n.contextConfig,description:n.description,shortDescription:n.shortDescription,alias:n.alias,unlisted:n.unlisted,annotations:n.annotations,globalFlags:n.globalFlags,resolveExamples:n.resolveExamples,service:n.service,subcommands:r.groups,parse:a,parseContext:n.parseContext,handle:i})}),ime=l(2,(e,t)=>{let r=He(e),n=Ub(t),o=g_(r.config,n),s=g_(r.contextConfig,n);if(r.subcommands.length>0){let f=r.subcommands.flatMap(p=>p.commands);y_(e,f,{contextConfig:s})}let a=Db(n,{allowLeftovers:!0}),i=D(function*(f){let p=yield*r.parse(f),d=yield*a(f);return{...p,...d}}),c=D(function*(f){let p=yield*r.parseContext(f),d=yield*a(f);return{...p,...d}}),u=(f,p)=>r.handle(f,p);return Tn({name:r.name,config:o,contextConfig:s,description:r.description,shortDescription:r.shortDescription,alias:r.alias,unlisted:r.unlisted,annotations:r.annotations,globalFlags:r.globalFlags,resolveExamples:r.resolveExamples,service:r.service,subcommands:r.subcommands,parse:i,parseContext:c,handle:u})}),cme=l(2,(e,t)=>{let r=He(e),n=Array.from(new Set([...r.globalFlags,...t]));return Tn({...r,globalFlags:n})}),ume=l(2,(e,t)=>Tn({...He(e),description:t})),fme=l(2,(e,t)=>Tn({...He(e),shortDescription:t})),lme=l(2,(e,t)=>Tn({...He(e),alias:t})),pme=e=>Tn({...He(e),unlisted:!0}),dme=l(3,(e,t,r)=>{let n=He(e);return Tn({...n,annotations:fr(n.annotations,t,r)})}),mme=l(2,(e,t)=>{let r=He(e);return Tn({...r,annotations:Bc(r.annotations,t)})}),hme=l(2,(e,t)=>Tn({...He(e),resolveExamples:zr(t)?r=>t({commandPath:r}):()=>t})),Zb=(e,t)=>{let r=He(e);return Tn({...r,handle:(n,o)=>t(r.handle(n,o),n)})},gme=l(e=>B_(e[0]),(e,t,r)=>Zb(e,(n,o)=>iT(n,typeof t=="function"?t(o):t,r))),xme=l(3,(e,t,r)=>Zb(e,(n,o)=>yn(n,t,typeof r=="function"?r(o):r))),yme=l(3,(e,t,r)=>Zb(e,(n,o)=>uT(n,t,typeof r=="function"?r(o):r))),Sme=l(2,(e,t)=>Zb(e,(r,n)=>Ut(typeof t=="function"?t(n):t,r))),Eme=(e,t)=>R(L_(e,t),r=>r.args),bme=(e,t,r,n)=>{let o=new Set(t),s=[],a=new Set;for(let i of e){if(o.has(i))continue;let c=Ct(i.flag);for(let u of c){let f=r[u.name];if(!f||f.length===0)continue;let p=`--${u.name}`;a.has(p)||(a.add(p),s.push(new yc({option:p,suggestions:[],command:n})))}}return s},Ime=(e,t,r)=>rt(function*(){let{builtIns:n}=yield*og,o=yield*kp,s=yield*Wb(e,t.commandPath,n);yield*Lr(o.formatHelpDoc(s)),r&&t.errors.length>0&&(yield*rb(o.formatErrors(t.errors)))}),Cme=e=>rt(function*(){let t=yield*kp;yield*rb(t.formatError(e)),e[du]=!1}),Tme=l(2,(e,t)=>HS.use(({args:r})=>I(r,n=>j_(e,t)(n)))),j_=(e,t)=>{let r=He(e);return D(function*(n){let{builtIns:o}=yield*og,{tokens:s,trailingOperands:a}=S4(n),i=m4(e,o),c=i.flatMap(b=>Ct(b.flag)),u=Op(c.filter(uf)),{flagMap:f,remainder:p,errors:d}=A4(s,e,u),m={flags:f,arguments:[]},g=yield*M_({tokens:p,trailingOperands:a},e),x=[e.name,...$_(g)],E={builtIns:o,command:e,commandPath:x,version:t.version},w=__(e,x,o),C=bme(i,w,f,x);if(C.length>0||d.length>0){let b=g.errors??[];return yield*new pi({commandPath:x,errors:[...d,...C,...b]})}for(let b of w){if(b._tag!=="Action"||!Ct(b.flag).some(L=>{let Z=f[L.name];return Z!==void 0&&Z.length>0}))continue;let[,F]=yield*b.flag.parse(m);if(b===P_){let{colors:L}=yield*Kh;return yield*rt(function*(){yield*Lr(P4(e.name,t.version,e.description,L));let Z=[e.name,...n.filter(Ae=>Ae!=="--wizard"&&!Ae.startsWith("--wizard="))],he=yield*L_(e,{commandPath:x,prefix:Z});yield*Lr(F4(he.displayArgs,L)),(yield*pn(yG({message:"Run this command?",initial:!0,active:"yes",inactive:"no"})))&&(yield*Lr(),yield*j_(e,{...t,renderErrors:!1})(he.args.slice(1)))}).pipe(qa("QuitError",()=>Lr(R4(L))))}yield*b.run(F,E);return}if(g.errors&&g.errors.length>0)return yield*new pi({commandPath:x,errors:g.errors});let N=yield*YC(r.parse(g));if(N._tag==="Failure")return yield*new pi({commandPath:x,errors:[N.failure]});let P=r.handle(N.success,[e.name]),S=w.includes(Ap)?(yield*Ap.flag.parse(m))[1]:k();P=yn(P,Ap,S);for(let b of w){if(b._tag!=="Setting"||b===Ap)continue;let[,A]=yield*b.flag.parse(m);P=yn(P,b,A)}let y=qe(S,{onNone:()=>ur(),onSome:b=>Fa(z$,b)});yield*xn(P,y)},Kd(n=>RO(n)&&n._tag==="ShowHelp"?W(n):K(n),n=>Ut(Ime(e,n,t.renderErrors!==!1),T(n))),Kd(n=>t.renderErrors!==!1&&RO(n)&&n._tag==="UserError"?W(n):K(n),n=>Ut(Cme(n),T(n))),Kd(n=>dV(n)?W(n):K(n),n=>_n))};var qt=class extends ko.TaggedError("CreateAppError"){constructor(t,r){super(t),Object.defineProperty(this,"cause",{value:r?.cause})}};import{Buffer as _me}from"node:buffer";import{basename as Pme,join as V_,resolve as Fme}from"node:path";import{Buffer as H_}from"node:buffer";import{Buffer as $4}from"node:buffer";var ag=Pe.Record(Pe.String,Pe.String),z_=Pe.Array(Pe.Struct({content:Pe.String,path:Pe.String})),nTe=Pe.decodeUnknownSync(Pe.fromJsonString(z_));function ig(e,t=!1){let r=e.find(o=>o.path==="package.minimal.json"),n=e.filter(o=>o.path!=="package.minimal.json");return t?n.filter(o=>!o.path.startsWith("src/modules/notes/")).map(o=>{if(o.path==="package.json"&&r!==void 0)return{...o,content:r.content};if(!["src/modules.ts","src/server/modules.ts","src/server/workerModules.ts","src/client/modules.ts"].includes(o.path))return o;let s=$4.from(o.content,"base64").toString().replace(/^import .* from "#modules\/notes\/.*";\n/gmu,"").replace(/,?\s*\b(?:noteQueue|notesModule|notesRegistration|notesWorker)\b/gu,"");return{...o,content:$4.from(s).toString("base64")}}):n}var wme=Pe.Struct({dependencies:ag,devDependencies:ag,engines:ag,imports:ag,name:Pe.String,packageManager:Pe.String,private:Pe.Boolean,scripts:ag,type:Pe.String,version:Pe.String}),M4=Pe.decodeUnknownSync(Pe.fromJsonString(wme)),kme=["name","version","private","type","imports","scripts","dependencies","devDependencies","packageManager","engines"];function U4(e){return`${JSON.stringify(Object.fromEntries(kme.map(t=>[t,e[t]])),null," ")}
289
289
  `}function Qb(e){return e.replaceAll(/[.-]/gu,"_").replace(/^[^a-z]/u,"app_$&").slice(0,58)}function D4(e,t,r){return e==="package.json"?H_.from(U4({...M4(t.toString()),name:r})):e===".env.example"?H_.from(t.toString().replaceAll("starter_dev",`${Qb(r)}_dev`).replaceAll("starter_test",`${Qb(r)}_test`)):["AGENTS.md","README.md"].includes(e)?H_.from(t.toString().replaceAll("{{appName}}",r)):t}import{Buffer as Ame}from"node:buffer";import{dirname as vme,join as q_}from"node:path";var L4=Pe.Struct({minimal:Pe.optional(Pe.Boolean),name:Pe.String,version:Pe.String}),Yb=".create-app.json",_p=G.fn("CreateApp.readTemplate")(function*(e){let t=yield*Yr.FileSystem;return yield*Pe.decodeUnknownEffect(Pe.fromJsonString(z_))(yield*t.readFileString(e))}),Xb=G.fn("CreateApp.writeGeneration")(function*(e,t){let r=yield*Yr.FileSystem;yield*r.writeFileString(q_(e,Yb),`${JSON.stringify(t,null," ")}
290
290
  `,{mode:420}),yield*r.chmod(q_(e,Yb),420)}),cg=G.fn("CreateApp.renderTemplate")(function*(e,t,r){let n=yield*Yr.FileSystem;for(let o of t){let s=q_(e,o.path),a=yield*G.try({catch:i=>new qt({message:`Failed to render template file ${o.path}`},{cause:i}),try:()=>D4(o.path,Ame.from(o.content,"base64"),r)});yield*n.makeDirectory(vme(s),{recursive:!0}),yield*n.writeFile(s,a,{mode:420})}});function eI(e,t,r=!1){return G.flatMap(ac.ChildProcessSpawner,n=>n.exitCode(As.make("git",t,{cwd:e,stderr:r?"inherit":"pipe",stdout:r?"inherit":"pipe"})))}function Ome(e){return/^[\w./=@:-]+$/u.test(e)?e:`'${e.replaceAll("'",`'"'"'`)}'`}var W_=G.fn("CreateApp.checkedGit")(function*(e,t,r=[]){let n=yield*eI(e,[...r,...t],!0);if(n!==0)return yield*new qt({message:`git ${t.map(Ome).join(" ")} failed (exit ${n}). The generated files remain in ${e}.`})}),B4=G.fn("CreateApp.initializeGit")(function*(e){return(yield*eI(e,["--version"]).pipe(G.catch(r=>r.reason._tag==="NotFound"?G.succeed(-1):G.fail(r))))!==0||(yield*eI(e,["rev-parse","--git-dir"]))===0?!1:(yield*W_(e,["init","--initial-branch=main"]),!0)}),j4=G.fn("CreateApp.commitGit")(function*(e){let r=(yield*eI(e,["-c","user.useConfigOnly=true","var","GIT_AUTHOR_IDENT"]))===0?[]:["-c","user.name=Create App","-c","user.email=create-app@localhost"];yield*W_(e,["add","--all"]),yield*W_(e,["commit","-m","Initialize a generated app"],r)});var z4=G.fn("CreateApp.createApp")(function*(e,t,r){let n=yield*Yr.FileSystem,o=Fme(e),s=Pme(o);if(!/^[a-z0-9][a-z0-9._-]*$/u.test(s)||s.length>214||["node_modules","favicon.ico"].includes(s))return yield*new qt({message:"The final folder name must be a lowercase npm package name."});if((yield*n.exists(o))&&((yield*n.stat(o)).type!=="Directory"||(yield*n.readDirectory(o)).length>0))return yield*new qt({message:`Refusing to write into ${e}: the destination must be an empty folder.`});let a=ig(yield*_p(t),r.minimal);yield*n.makeDirectory(o,{recursive:!0}),yield*cg(o,a,s),yield*Xb(o,{...r.minimal?{minimal:!0}:{},name:s,version:r.version}),yield*n.symlink("AGENTS.md",V_(o,"CLAUDE.md"));let i=Qb(s),c=yield*Zm.Crypto,u=_me.from(yield*c.randomBytes(32)).toString("base64url");yield*n.writeFileString(V_(o,".env.local"),`DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:55432/${i}_dev
291
291
  TEST_DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:55432/${i}_test
@@ -10,7 +10,7 @@ const appPaths = new Map([
10
10
  ["pnpm-workspace.copy.yaml", "pnpm-workspace.yaml"],
11
11
  ]);
12
12
  const excluded = new Set(["node_modules", "dist", "coverage", ".browser-check", "pnpm-lock.yaml", ".git"]);
13
- const rootExcluded = new Set(["published-versions.json", "AGENTS.md", "CLAUDE.md", "README.md", "quality.config.ts"]);
13
+ const rootExcluded = new Set(["published-versions.json", "AGENTS.md", "CLAUDE.md", "README.md"]);
14
14
  function included(path) {
15
15
  return !(rootExcluded.has(path) || excluded.has(basename(path))) && (!basename(path).startsWith(".env") || basename(path) === ".env.example");
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"packTemplate.js","sourceRoot":"","sources":["../src/packTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"packTemplate.js","sourceRoot":"","sources":["../src/packTemplate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,8CAA8C,CAAC;AACpE,eAAO,MAAM,QAAQ;;;GAA+E,CAAC;AACrG,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,eAAO,MAAM,cAAc;;;GAA4D,CAAC;AAExF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,UAAQ,GAAG,QAAQ,CAyBzE;AAED,QAAA,MAAM,QAAQ;;;;;;;;;;;EAWZ,CAAC;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;CAA4D,CAAC;AAexF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAC,IAAI,UAE1D;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;EAa9H;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,UAAQ,UAa1G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,2BAWpG"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,eAAO,MAAM,QAAQ,8CAA8C,CAAC;AACpE,eAAO,MAAM,QAAQ;;;GAA+E,CAAC;AACrG,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAC5C,eAAO,MAAM,cAAc;;;GAA4D,CAAC;AAExF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,UAAQ,GAAG,QAAQ,CAqBzE;AAED,QAAA,MAAM,QAAQ;;;;;;;;;;;EAWZ,CAAC;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;CAA4D,CAAC;AAexF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAC,IAAI,UAE1D;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;EAa9H;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,UAAQ,UAa1G;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,2BAWpG"}
package/dist/template.js CHANGED
@@ -6,8 +6,7 @@ export const Template = Schema.Array(Schema.Struct({ content: Schema.String, pat
6
6
  export const decodeTemplate = Schema.decodeUnknownSync(Schema.fromJsonString(Template));
7
7
  export function appTemplate(template, minimal = false) {
8
8
  const minimalManifest = template.find((entry) => entry.path === "package.minimal.json");
9
- const minimalBaseline = template.find((entry) => entry.path === "quality-baseline.minimal.jsonl");
10
- const files = template.filter((entry) => !["quality-baseline.minimal.jsonl", "package.minimal.json"].includes(entry.path));
9
+ const files = template.filter((entry) => entry.path !== "package.minimal.json");
11
10
  if (!minimal) {
12
11
  return files;
13
12
  }
@@ -17,9 +16,6 @@ export function appTemplate(template, minimal = false) {
17
16
  if (entry.path === "package.json" && minimalManifest !== undefined) {
18
17
  return { ...entry, content: minimalManifest.content };
19
18
  }
20
- if (entry.path === "quality-baseline.jsonl" && minimalBaseline !== undefined) {
21
- return { ...entry, content: minimalBaseline.content };
22
- }
23
19
  if (!["src/modules.ts", "src/server/modules.ts", "src/server/workerModules.ts", "src/client/modules.ts"].includes(entry.path)) {
24
20
  return entry;
25
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shivaedev/create-app",
3
- "version": "0.30.0",
3
+ "version": "0.32.0",
4
4
  "description": "Create and install a Platform application from the maintained starter",
5
5
  "homepage": "https://github.com/ShivaeDev/platform/tree/main/packages/create-app#readme",
6
6
  "bugs": {
@@ -44,13 +44,13 @@
44
44
  "README.md"
45
45
  ],
46
46
  "dependencies": {
47
- "@shivaedev/sql": "0.27.0"
47
+ "@shivaedev/sql": "0.28.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@effect/platform-node": "4.0.6",
51
51
  "@effect/platform-node-shared": "4.0.6",
52
- "@shivaedev/quality": "0.50.0",
53
- "@shivaedev/test-story": "0.30.0",
52
+ "@shivaedev/quality": "0.52.0",
53
+ "@shivaedev/test-story": "0.31.1",
54
54
  "@types/node": "24.19.2",
55
55
  "effect": "4.0.6",
56
56
  "esbuild": "0.28.2",
@@ -11,7 +11,7 @@ const appPaths = new Map([
11
11
  ["pnpm-workspace.copy.yaml", "pnpm-workspace.yaml"],
12
12
  ]);
13
13
  const excluded = new Set(["node_modules", "dist", "coverage", ".browser-check", "pnpm-lock.yaml", ".git"]);
14
- const rootExcluded = new Set(["published-versions.json", "AGENTS.md", "CLAUDE.md", "README.md", "quality.config.ts"]);
14
+ const rootExcluded = new Set(["published-versions.json", "AGENTS.md", "CLAUDE.md", "README.md"]);
15
15
  function included(path: string) {
16
16
  return !(rootExcluded.has(path) || excluded.has(basename(path))) && (!basename(path).startsWith(".env") || basename(path) === ".env.example");
17
17
  }
package/src/template.ts CHANGED
@@ -9,8 +9,7 @@ export const decodeTemplate = Schema.decodeUnknownSync(Schema.fromJsonString(Tem
9
9
 
10
10
  export function appTemplate(template: Template, minimal = false): Template {
11
11
  const minimalManifest = template.find((entry) => entry.path === "package.minimal.json");
12
- const minimalBaseline = template.find((entry) => entry.path === "quality-baseline.minimal.jsonl");
13
- const files = template.filter((entry) => !["quality-baseline.minimal.jsonl", "package.minimal.json"].includes(entry.path));
12
+ const files = template.filter((entry) => entry.path !== "package.minimal.json");
14
13
  if (!minimal) {
15
14
  return files;
16
15
  }
@@ -20,9 +19,6 @@ export function appTemplate(template: Template, minimal = false): Template {
20
19
  if (entry.path === "package.json" && minimalManifest !== undefined) {
21
20
  return { ...entry, content: minimalManifest.content };
22
21
  }
23
- if (entry.path === "quality-baseline.jsonl" && minimalBaseline !== undefined) {
24
- return { ...entry, content: minimalBaseline.content };
25
- }
26
22
  if (!["src/modules.ts", "src/server/modules.ts", "src/server/workerModules.ts", "src/client/modules.ts"].includes(entry.path)) {
27
23
  return entry;
28
24
  }