view-contracts 0.4.2 → 0.4.3

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.
@@ -971,7 +971,7 @@ ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
971
971
  `,s=Bs(t,"entry.tsx");return await af(s,o,"utf8"),s}async function cf(t,e,r){let n=await He(t),o=(await wt(n.bindings)).views.find(M=>M.screenName===e);if(!o)throw new Error(`No view binding for screen "${e}"`);if(!o.targets.includes("react"))throw new Error(`Screen "${e}" is not a react target`);let s=he(t),[a,c,l]=await Promise.all([Dv(t,e),xv(t,n,e),vi(n,t)]),p=DP(o.exportName),f=tf(e),d=Bs(VP(),`view-contracts-preview-${process.pid}`);await LP(d,{recursive:!0});let m=await HP(d,a,c,p,f),g=$e(),y=[zt(s,"node_modules"),zt(g,"node_modules")],_=await jP({entryPoints:[m],bundle:!0,write:!1,format:"esm",platform:"browser",target:"es2022",jsx:"automatic",jsxImportSource:"react",absWorkingDir:s,nodePaths:y,alias:qP(s),logLevel:"silent"});if(_.errors.length>0)throw new Error(_.errors.map(M=>M.text).join(`
972
972
  `));let b=_.outputFiles[0]?.text??"";return{html:FP(),themeCss:l,bundleJs:b,version:r}}async function qv(t,e){let r=await wt((await He(t)).bindings);if(e){let i=r.views.find(o=>o.screenName===e);if(!i)throw new Error(`Unknown screen "${e}" in view-bindings.yaml`);if(!i.targets.includes("react"))throw new Error(`Screen "${e}" is not a react target`);return e}let n=r.views.find(i=>i.targets.includes("react"));if(!n)throw new Error("No react target views in view-bindings.yaml");return n.screenName}Mi();function Vi(t,e,r,n){t.writeHead(e,{"Content-Type":n,"Cache-Control":"no-store"}),t.end(r)}function WP(t,e,r){let n=t.url?.split("?")[0]??"/";if(n==="/"||n==="/index.html"){Vi(e,200,r.html,"text/html; charset=utf-8");return}if(n==="/bundle.js"){Vi(e,200,r.bundleJs,"text/javascript; charset=utf-8");return}if(n==="/theme.css"){Vi(e,200,r.themeCss,"text/css; charset=utf-8");return}if(n==="/__vc-reload"){Vi(e,200,JSON.stringify({version:r.version}),"application/json");return}Vi(e,404,"Not found","text/plain; charset=utf-8")}async function GP(t,e,r){let n=await He(t),i=he(t),{tokensPath:o,themePath:s}=Yt(n),a=await $v(t,n),c=cr($e(),"renderers/react/elements.yaml"),l=[cr(i,n.viewsDir),cr(i,o),cr(i,s),a,c];n.extensions&&l.push(cr(i,n.extensions)),n.design?.extensionsCss&&l.push(cr(i,n.design.extensionsCss)),l.push(cr(i,"contracts/view-models.ts")),l.push(cr(i,"src/components/extensions.tsx"));let p,f=()=>{p&&clearTimeout(p),p=setTimeout(()=>r(),150)},d=[];for(let g of l)await js(g)&&d.push(g);let m=d.map(g=>UP(g,{recursive:!0},()=>f()));return()=>{p&&clearTimeout(p);for(let g of m)g.close()}}async function Fv(t){let e=t.port??5173,r=t.host??"127.0.0.1",n=await qv(t.configPath,t.screen),i=0,o=await cf(t.configPath,n,i),s=!1,a=!1,c=async()=>{if(s){a=!0;return}s=!0;try{i+=1,o=await cf(t.configPath,n,i),console.log(`[preview] rebuilt (v${i})`)}catch(d){let m=d instanceof Error?d.message:String(d);console.error(`[preview] compile error:
973
973
  ${m}`)}finally{s=!1,a&&(a=!1,c())}},l=BP((d,m)=>WP(d,m,o));await new Promise((d,m)=>{l.once("error",m),l.listen(e,r,()=>d())});let p=`http://${r}:${e}/`;console.log(`[preview] ${n} \u2192 ${p}`),console.log("[preview] watching views/ and design files (Ctrl+C to stop)");let f=await GP(t.configPath,n,()=>{c()});await new Promise(d=>{let m=()=>{f(),l.close(()=>d())};process.once("SIGINT",m),process.once("SIGTERM",m)})}async function uf(t){if(!t.extensions)return{allowlistExtra:t.allowlistExtra??[]};let e=await jo(t.extensions),r=[...new Set([...t.allowlistExtra??[],...Object.keys(e.extensions)])];return{extensionRegistry:e,allowlistExtra:r}}async function Hv(t){await new Promise((e,r)=>{let n=YP("npx",["micro-contracts",...t],{stdio:"inherit"});n.on("error",r),n.on("close",i=>{i===0?e():r(new Error(`micro-contracts exited with code ${i}`))})})}async function lf(t){let e=await He(t),r=await wt(e.bindings),{extensionRegistry:n,allowlistExtra:i}=await uf(e),o=he(t),{screens:s,partials:a}=await Uf(r.views.map(c=>({sourcePath:Et(o,c.source),exportName:c.exportName,screenName:c.screenName})),{allowlistExtra:i,extensionRegistry:n});return{screens:new Map(r.views.map((c,l)=>[c.screenName,s[l]])),partials:a}}function Nr(t,e){let r=KP(Wv(t),e).replace(/\\/g,"/");return r.startsWith(".")||(r=`./${r}`),r.replace(/\.tsx?$/,".js")}async function Bv(t,e,r){let n=await He(t),i=he(t),{allowlistExtra:o}=await uf(n),s=await wt(n.bindings);for(let a of r){let c=Et(n.generated.reactDir,"components",`${a.exportName}.generated.tsx`),l=Nr(c,Et(n.generated.reactDir,"runtime.ts")),p=Nr(c,Et(n.generated.reactDir,"extensions.generated.ts")),f=Nr(c,Et(i,"contracts/view-models.ts"));await of(a,c,{runtimeImportFrom:l,extensionsImportFrom:p,contractsImportFrom:f,allowlistExtra:o}),console.log(` ${a.exportName} \u2192 ${c}`)}for(let a of s.views){if(!a.targets.includes("react"))continue;let c=e.get(a.screenName);if(!c)throw new Error(`Missing View IR for ${a.screenName}`);let l=pp(n,a),p=Nr(l,Et(n.generated.reactDir,"runtime.ts")),f=Nr(l,Et(n.generated.reactDir,"extensions.generated.ts")),d=Nr(l,Et(i,"contracts/view-models.ts")),m=new Map;for(let g of r){let y=Tv(n.generated.reactDir,g);m.set(g.exportName,Nr(l,y))}await of(c,l,{runtimeImportFrom:p,extensionsImportFrom:f,contractsImportFrom:d,allowlistExtra:o,viewRefImportFrom:m}),console.log(` ${a.exportName} \u2192 ${l}`)}}async function Uv(t){let e=await He(t),r=await wt(e.bindings),n=he(t),o=["// Auto-generated view bridge registry \u2014 DO NOT EDIT",`// Generated from ${dp(n,e.bindings)}`,"","export const viewBridgeRegistry = {"];for(let s of r.views)o.push(` ${s.screenConst}: {`),o.push(` id: ${JSON.stringify(s.id)},`),o.push(` screenId: ${JSON.stringify(s.screenId)},`),o.push(` screenName: ${JSON.stringify(s.screenName)},`),o.push(` route: ${JSON.stringify(s.route)},`),o.push(` operationId: ${JSON.stringify(s.operationId)},`),o.push(` viewModel: ${JSON.stringify(s.viewModel)},`),o.push(` source: ${JSON.stringify(s.source)},`),o.push(` targets: ${JSON.stringify(s.targets)},`),o.push(" },");o.push("} as const;",""),o.push("export type ViewBridgeKey = keyof typeof viewBridgeRegistry;",""),await JP(Wv(Et(e.generated.bridge)),{recursive:!0}),await zP(Et(e.generated.bridge),o.join(`
974
- `),"utf-8"),console.log(`Bridge registry \u2192 ${e.generated.bridge} (${r.views.length} view(s))`)}var Gv={compile:async(t,e)=>{let{screens:r,partials:n}=await lf(await Kt(t.config));console.log(`Compiled ${r.size} screen(s) and ${n.length} partial(s) to View IR (in-memory)`)},renderReact:async(t,e)=>{let r=await Kt(t.config),{screens:n,partials:i}=await lf(r);await Bv(r,n,i)},renderBridge:async(t,e)=>{await Uv(await Kt(t.config))},build:async(t,e)=>{let r=await Kt(t.config),n=await He(r),i=await wt(n.bindings),{screens:o,partials:s}=await lf(r);console.log(`Compiled ${o.size} screen(s) and ${s.length} partial(s) to View IR (in-memory)`);let{tokensPath:a,themePath:c}=Yt(n),{tokenIR:l,themeIR:p}=await pn(a,c);await kr(n,r);let{allowlistExtra:f}=await uf(n),d=[...o.values(),...s];await qs(d,f),yi(d,p),await Nv(r,n),await Bv(r,o,s),await Uv(r),await Mv(r,n,i,{theme:p,tokens:l},{screens:o,partials:s}),await Lv(n,i),await jv(r,n,i)},contractsGenerate:async(t,e)=>{let r=await He(await Kt(t.config));await Hv(["generate","-c",r.microContractsConfig]),console.log("Contracts generated via micro-contracts")},contractsCheck:async(t,e)=>{let r=await He(await Kt(t.config));await Hv(["lint","-c",r.microContractsConfig])},preview:async(t,e)=>{try{await Fv({configPath:await Kt(t.config),port:t.port!=null?Number(t.port):void 0,host:t.host,screen:t.screen})}catch(r){console.error(r instanceof Error?r.message:r),process.exit(1)}}};var XP={version:"0.4.2"};Pf(Gv,XP.version).parseAsync(process.argv).catch(t=>{console.error(t instanceof Error?t.message:t),process.exit(1)});
974
+ `),"utf-8"),console.log(`Bridge registry \u2192 ${e.generated.bridge} (${r.views.length} view(s))`)}var Gv={compile:async(t,e)=>{let{screens:r,partials:n}=await lf(await Kt(t.config));console.log(`Compiled ${r.size} screen(s) and ${n.length} partial(s) to View IR (in-memory)`)},renderReact:async(t,e)=>{let r=await Kt(t.config),{screens:n,partials:i}=await lf(r);await Bv(r,n,i)},renderBridge:async(t,e)=>{await Uv(await Kt(t.config))},build:async(t,e)=>{let r=await Kt(t.config),n=await He(r),i=await wt(n.bindings),{screens:o,partials:s}=await lf(r);console.log(`Compiled ${o.size} screen(s) and ${s.length} partial(s) to View IR (in-memory)`);let{tokensPath:a,themePath:c}=Yt(n),{tokenIR:l,themeIR:p}=await pn(a,c);await kr(n,r);let{allowlistExtra:f}=await uf(n),d=[...o.values(),...s];await qs(d,f),yi(d,p),await Nv(r,n),await Bv(r,o,s),await Uv(r),await Mv(r,n,i,{theme:p,tokens:l},{screens:o,partials:s}),await Lv(n,i),await jv(r,n,i)},contractsGenerate:async(t,e)=>{let r=await He(await Kt(t.config));await Hv(["generate","-c",r.microContractsConfig]),console.log("Contracts generated via micro-contracts")},contractsCheck:async(t,e)=>{let r=await He(await Kt(t.config));await Hv(["lint","-c",r.microContractsConfig])},preview:async(t,e)=>{try{await Fv({configPath:await Kt(t.config),port:t.port!=null?Number(t.port):void 0,host:t.host,screen:t.screen})}catch(r){console.error(r instanceof Error?r.message:r),process.exit(1)}}};var XP={version:"0.4.3"};Pf(Gv,XP.version).parseAsync(process.argv).catch(t=>{console.error(t instanceof Error?t.message:t),process.exit(1)});
975
975
  /*! Bundled license information:
976
976
 
977
977
  js-yaml/dist/js-yaml.mjs: