sveld 0.37.0 → 0.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ import{T,A}from"./chunk-q2023ykg.js";export{T as TemplateParseNotImplementedError,A as parse};
@@ -0,0 +1 @@
1
+ import{s}from"./chunk-sty5s7z0.js";export{s as default};
@@ -1,4 +1,4 @@
1
- import{e}from"./chunk-jtm65qmd.js";import{existsSync as A,readdirSync as O,readFileSync as M,statSync as j}from"node:fs";import{createRequire as D}from"node:module";import m from"node:path";var C="__sveld_resolved_props__",w="__SveldResolvedProps__",L=/ \| undefined$/,G=/[^A-Za-z0-9_-]/g,U=/[^A-Za-z0-9_$]/g,q=/^[0-9]/,z=2,I=7,F=`TypeScript ${I} or later, which provides \`typescript/unstable/async\``;function X(t){if(!t)return!1;let s=Number.parseInt(t,10);return Number.isFinite(s)&&s>=I}async function V(t){let s;try{let o=D(m.join(t,"package.json")).resolve("typescript/package.json");s=JSON.parse(M(o,"utf8")).version}catch{return{installed:!1}}if(!X(s))return{installed:!0,version:s};try{let n=await import("./chunk-550yx3gf.js");return{installed:!0,version:s,module:n}}catch{return{installed:!0,version:s}}}class k{api;symbolFlags;typeFlags;tsconfigPath;overlay=new Map;constructor(t,s,n,o){this.api=t,this.symbolFlags=s,this.typeFlags=n,this.tsconfigPath=o}static async create(t=process.cwd(),{importTs:s=V}={}){let n=await s(t);if(!n.installed)return{ok:!1,reason:"not-installed",message:`requires the \`typescript\` package to be installed (${F}); none was found`};if(!n.module)return{ok:!1,reason:"unsupported-version",message:`requires ${F}; found \`typescript@${n.version??"unknown"}\` installed, which does not expose that module`};let o=Q(t);if(!o)return{ok:!1,reason:"no-tsconfig",message:`could not locate a tsconfig.json starting from "${t}"`};let r=n.module,i=new k(null,r.SymbolFlags,r.TypeFlags,o),a=new r.API({cwd:t,fs:i.createFileSystem()});return i.api=a,{ok:!0,resolver:i}}async expandAll(t){let s=new Map;if(t.length===0)return s;let n=new Map;for(let r of t){if(!r.metadata.canonicalPropsType)continue;if(r.metadata.referencesComponentGenerics)continue;let i=this.virtualFileName(r.filePath,r.moduleName);this.overlay.set(i,B(r.metadata)),n.set(i,r)}if(n.size===0)return s;let o=await this.api.updateSnapshot({openProject:this.tsconfigPath,fileChanges:{created:Array.from(n.keys())}});try{let[r]=n.keys(),i=await o.getDefaultProjectForFile(r);if(!i)return s;let a=i.checker,v=await Promise.all(Array.from(n,async([l,f])=>{let c=this.overlay.get(l);if(!c)return null;let g=Z(c),p=await a.getTypeAtPosition(l,g);if(!p)return null;let u=new Map,T=await a.getPropertiesOfType(p);for(let d of T){if(!d.name||d.name.startsWith("__"))continue;u.set(d.name,{name:d.name,symbols:[d],forceOptional:!1})}if((p.flags&this.typeFlags.Union)!==0){let d=await p.getTypes(),N=await Promise.all(d.map((E)=>a.getPropertiesOfType(E)));for(let E of N)for(let h of E){if(!h.name||h.name.startsWith("__")||u.has(h.name))continue;let b=u.get(h.name);if(b)b.symbols.push(h);else u.set(h.name,{name:h.name,symbols:[h],forceOptional:!0})}}return{filePath:f.filePath,groups:Array.from(u.values())}})),y=[],x=[];v.forEach((l,f)=>{if(!l)return;l.groups.forEach((c,g)=>{for(let p of c.symbols)y.push(p),x.push({fileIndex:f,groupIndex:g})})});let R=y.length>0?await a.getTypeOfSymbol(y):[],_=await Promise.all(R.map((l)=>l?a.typeToString(l):Promise.resolve("any"))),P=new Map;y.forEach((l,f)=>{let{fileIndex:c,groupIndex:g}=x[f],p=(l.flags&this.symbolFlags.Optional)!==0,u=_[f];if(p)u=u.replace(L,"");let T=P.get(c)??new Map,S=T.get(g)??[];S.push(u),T.set(g,S),P.set(c,T)}),v.forEach((l,f)=>{if(!l)return;let c=P.get(f),g=l.groups.map((p,u)=>{let T=c?.get(u)??[],S=!(p.forceOptional||p.symbols.some((d)=>(d.flags&this.symbolFlags.Optional)!==0));return{name:p.name,type:Array.from(new Set(T)).join(" | "),isRequired:S}});g.sort((p,u)=>p.name.localeCompare(u.name)),s.set(l.filePath,g)})}finally{await o.dispose?.()}return s}async checkExamples(t){let s=new Map;if(t.length===0)return s;let n=[];for(let r of t)for(let i of r.sources){let a=this.exampleFileName(r.filePath,r.moduleName,i.id);this.overlay.set(a,J(i)),n.push({filePath:r.filePath,source:i,file:a})}if(n.length===0)return s;let o=await this.api.updateSnapshot({openProject:this.tsconfigPath,fileChanges:{created:n.map((r)=>r.file)}});try{let[r]=n,i=await o.getDefaultProjectForFile(r.file);if(!i)return s;await Promise.all(n.map(async({filePath:a,source:v,file:y})=>{let[x,R]=await Promise.all([i.program.getSyntacticDiagnostics(y),i.program.getSemanticDiagnostics(y)]),_=[...x,...R];if(_.length===0)return;let P=this.overlay.get(y)??"",l=_.map((c)=>W(c,P)).sort((c,g)=>c.line-g.line).map((c)=>`Line ${c.line}: ${c.text}`).join(`
1
+ import{e}from"./chunk-q2023ykg.js";import{existsSync as A,readdirSync as O,readFileSync as M,statSync as j}from"node:fs";import{createRequire as D}from"node:module";import m from"node:path";var C="__sveld_resolved_props__",w="__SveldResolvedProps__",L=/ \| undefined$/,G=/[^A-Za-z0-9_-]/g,U=/[^A-Za-z0-9_$]/g,q=/^[0-9]/,z=2,I=7,F=`TypeScript ${I} or later, which provides \`typescript/unstable/async\``;function X(t){if(!t)return!1;let s=Number.parseInt(t,10);return Number.isFinite(s)&&s>=I}async function V(t){let s;try{let o=D(m.join(t,"package.json")).resolve("typescript/package.json");s=JSON.parse(M(o,"utf8")).version}catch{return{installed:!1}}if(!X(s))return{installed:!0,version:s};try{let n=await import("./chunk-k096ka38.js");return{installed:!0,version:s,module:n}}catch{return{installed:!0,version:s}}}class k{api;symbolFlags;typeFlags;tsconfigPath;overlay=new Map;constructor(t,s,n,o){this.api=t,this.symbolFlags=s,this.typeFlags=n,this.tsconfigPath=o}static async create(t=process.cwd(),{importTs:s=V}={}){let n=await s(t);if(!n.installed)return{ok:!1,reason:"not-installed",message:`requires the \`typescript\` package to be installed (${F}); none was found`};if(!n.module)return{ok:!1,reason:"unsupported-version",message:`requires ${F}; found \`typescript@${n.version??"unknown"}\` installed, which does not expose that module`};let o=Q(t);if(!o)return{ok:!1,reason:"no-tsconfig",message:`could not locate a tsconfig.json starting from "${t}"`};let r=n.module,i=new k(null,r.SymbolFlags,r.TypeFlags,o),a=new r.API({cwd:t,fs:i.createFileSystem()});return i.api=a,{ok:!0,resolver:i}}async expandAll(t){let s=new Map;if(t.length===0)return s;let n=new Map;for(let r of t){if(!r.metadata.canonicalPropsType)continue;if(r.metadata.referencesComponentGenerics)continue;let i=this.virtualFileName(r.filePath,r.moduleName);this.overlay.set(i,B(r.metadata)),n.set(i,r)}if(n.size===0)return s;let o=await this.api.updateSnapshot({openProject:this.tsconfigPath,fileChanges:{created:Array.from(n.keys())}});try{let[r]=n.keys(),i=await o.getDefaultProjectForFile(r);if(!i)return s;let a=i.checker,v=await Promise.all(Array.from(n,async([l,f])=>{let c=this.overlay.get(l);if(!c)return null;let g=Z(c),p=await a.getTypeAtPosition(l,g);if(!p)return null;let u=new Map,T=await a.getPropertiesOfType(p);for(let d of T){if(!d.name||d.name.startsWith("__"))continue;u.set(d.name,{name:d.name,symbols:[d],forceOptional:!1})}if((p.flags&this.typeFlags.Union)!==0){let d=await p.getTypes(),N=await Promise.all(d.map((E)=>a.getPropertiesOfType(E)));for(let E of N)for(let h of E){if(!h.name||h.name.startsWith("__")||u.has(h.name))continue;let b=u.get(h.name);if(b)b.symbols.push(h);else u.set(h.name,{name:h.name,symbols:[h],forceOptional:!0})}}return{filePath:f.filePath,groups:Array.from(u.values())}})),y=[],x=[];v.forEach((l,f)=>{if(!l)return;l.groups.forEach((c,g)=>{for(let p of c.symbols)y.push(p),x.push({fileIndex:f,groupIndex:g})})});let R=y.length>0?await a.getTypeOfSymbol(y):[],_=await Promise.all(R.map((l)=>l?a.typeToString(l):Promise.resolve("any"))),P=new Map;y.forEach((l,f)=>{let{fileIndex:c,groupIndex:g}=x[f],p=(l.flags&this.symbolFlags.Optional)!==0,u=_[f];if(p)u=u.replace(L,"");let T=P.get(c)??new Map,S=T.get(g)??[];S.push(u),T.set(g,S),P.set(c,T)}),v.forEach((l,f)=>{if(!l)return;let c=P.get(f),g=l.groups.map((p,u)=>{let T=c?.get(u)??[],S=!(p.forceOptional||p.symbols.some((d)=>(d.flags&this.symbolFlags.Optional)!==0));return{name:p.name,type:Array.from(new Set(T)).join(" | "),isRequired:S}});g.sort((p,u)=>p.name.localeCompare(u.name)),s.set(l.filePath,g)})}finally{await o.dispose?.()}return s}async checkExamples(t){let s=new Map;if(t.length===0)return s;let n=[];for(let r of t)for(let i of r.sources){let a=this.exampleFileName(r.filePath,r.moduleName,i.id);this.overlay.set(a,J(i)),n.push({filePath:r.filePath,source:i,file:a})}if(n.length===0)return s;let o=await this.api.updateSnapshot({openProject:this.tsconfigPath,fileChanges:{created:n.map((r)=>r.file)}});try{let[r]=n,i=await o.getDefaultProjectForFile(r.file);if(!i)return s;await Promise.all(n.map(async({filePath:a,source:v,file:y})=>{let[x,R]=await Promise.all([i.program.getSyntacticDiagnostics(y),i.program.getSemanticDiagnostics(y)]),_=[...x,...R];if(_.length===0)return;let P=this.overlay.get(y)??"",l=_.map((c)=>W(c,P)).sort((c,g)=>c.line-g.line).map((c)=>`Line ${c.line}: ${c.text}`).join(`
2
2
  `),f=s.get(a)??[];f.push({id:v.id,name:v.name,message:l}),s.set(a,f)}))}finally{await o.dispose?.()}return s}async dispose(){this.overlay.clear(),await this.api?.close?.()}createFileSystem(){return{readFile:(t)=>this.overlay.get(e(t)),fileExists:(t)=>this.overlay.has(e(t))?!0:void 0,getAccessibleEntries:(t)=>{let s=e(t),n=Array.from(this.overlay.keys()).filter((i)=>e(m.dirname(i))===s);if(n.length===0)return;let o=[],r=[];try{for(let i of O(t)){let a=m.join(t,i);try{(j(a).isDirectory()?r:o).push(i)}catch{}}}catch{}for(let i of n){let a=m.basename(i);if(!o.includes(a))o.push(a)}return{files:o,directories:r}}}}virtualFileName(t,s){let n=m.dirname(m.resolve(t));return e(m.join(n,`__sveld_resolved_${s}.ts`))}exampleFileName(t,s,n){let o=m.dirname(m.resolve(t)),r=n.replace(G,"_");return e(m.join(o,`__sveld_example_${s}_${r}.ts`))}}function B(t){return[...t.typeImportStatements,...t.localTypeDeclarations,`type ${w} = ${t.canonicalPropsType};`,`declare const ${C}: ${w};`].join(`
3
3
  `)}function H(t){let s=t.replace(U,"_");if(s===""||q.test(s))return`_${s}`;return s}function J(t){return`const ${H(t.name)} = null as unknown as (${t.type});
4
4
  ${t.code}