@wren-js/core 0.1.2 → 0.1.4

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/dist/cli.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import{C as e,S as t,_ as n,b as r,d as i,f as a,g as o,h as s,l as c,p as l,t as u,u as d,v as f,w as p,x as m,y as h}from"./constants-Cqd6fWdi.mjs";import{c as ee,l as g,n as te,s as _}from"./constants-B7Wo9Ox0.mjs";import{CONFIG_VALID_EXTENSIONS as ne,DEFAULTS as v}from"./config.mjs";import{t as y}from"./utils-0wezGh38.mjs";import{t as b}from"./trie-lookup-BLa5NWBJ.mjs";import{existsSync as re}from"node:fs";import{basename as ie,dirname as x,extname as ae,isAbsolute as oe,join as S,relative as C,resolve as w}from"node:path";import T,{cwd as se}from"node:process";import{parseArgs as ce}from"node:util";import{Visitor as le,createBuilder as ue,createServer as de,defineConfig as fe,loadConfigFromFile as pe,mergeConfig as E,normalizePath as D,parseSync as O}from"vite";import{mkdir as me,readFile as k,readdir as A,rm as j,writeFile as M}from"node:fs/promises";import{pathToFileURL as he}from"node:url";const ge=()=>se(),N=e=>e.split(`
1
+ import{C as e,S as t,_ as n,b as r,d as i,f as a,g as o,h as s,l as c,p as l,t as u,u as d,v as f,w as p,x as m,y as h}from"./constants-DqE-Q6__.mjs";import{c as ee,l as g,n as te,s as _}from"./constants-B7Wo9Ox0.mjs";import{CONFIG_VALID_EXTENSIONS as ne,DEFAULTS as v}from"./config.mjs";import{t as y}from"./utils-0wezGh38.mjs";import{t as b}from"./trie-lookup-BLa5NWBJ.mjs";import{existsSync as re}from"node:fs";import{basename as ie,dirname as x,extname as ae,isAbsolute as oe,join as S,relative as C,resolve as w}from"node:path";import T,{cwd as se}from"node:process";import{parseArgs as ce}from"node:util";import{Visitor as le,createBuilder as ue,createServer as de,defineConfig as fe,loadConfigFromFile as pe,mergeConfig as E,normalizePath as D,parseSync as O}from"vite";import{mkdir as me,readFile as k,readdir as A,rm as j,writeFile as M}from"node:fs/promises";import{pathToFileURL as he}from"node:url";const ge=()=>se(),N=e=>e.split(`
2
2
  `).length-1,_e=(e,t,n,r)=>{let i=N(e.slice(t,n))-N(r);return{end:n,start:t,text:i>0?r+`
3
- `.repeat(i):r}},ve=(e,t)=>{let n=e;for(let{end:e,start:r,text:i}of t.toSorted((e,t)=>t.start-e.start))n=n.slice(0,r)+i+n.slice(e);return n},ye=/\.[cm]?[jt]sx?$/,be=/^(?:[a-z][a-z\d+.-]*:|\/\/)/i,P=e=>{if(e.type===`Literal`&&typeof e.value==`string`)return e.value;if(e.type===`TemplateLiteral`&&e.expressions.length===0)return e.quasis[0]?.value.cooked??void 0},F=({value:e})=>{if(e?.type===`Literal`)return e.value;if(e?.type===`JSXExpressionContainer`)return P(e.expression)},xe=(e,t)=>{let n={kept:[]};for(let r of t.attributes){let t=e.slice(r.start,r.end);if(r.type!==`JSXAttribute`||r.name.type!==`JSXIdentifier`){n.kept.push(t);continue}let{name:i}=r.name;i===`src`?n.src=r:i===`dangerouslySetInnerHTML`?n.html=r:(i===`type`&&(n.type=F(r)),n.kept.push(t))}return n},Se=({key:e})=>e.type===`Identifier`?e.name:e.type===`Literal`?e.value:null,Ce=({value:e})=>{let t=e?.type===`JSXExpressionContainer`?e.expression:void 0;if(t?.type===`ObjectExpression`)for(let e of t.properties){if(e.type!==`Property`||e.computed||Se(e)!==`__html`)continue;let t=P(e.value);return t===void 0?void 0:[t,e.value.start+1]}},we=(e,t)=>{if(t)return Ce(t);let n=e.children.filter(e=>e.type!==`JSXText`||e.value.trim()!==``);if(n.length===0)return[``,e.start];if(n.length!==1)return;let[r]=n;if(r.type===`JSXText`)return[r.value,r.start];if(r.type!==`JSXExpressionContainer`)return;let i=P(r.expression);return i===void 0?void 0:[i,r.expression.start+1]},Te=({name:e})=>e.type===`JSXIdentifier`&&e.name===`script`,I=(e,t)=>{let n=[],r=[],{errors:i,program:a}=O(t,e);if(i.length>0)return{importOffset:0,scripts:n,warnings:r};let o=a.body.find(e=>e.type!==`ExpressionStatement`||typeof e.directive!=`string`)?.start??e.length,s=0,c=/* @__PURE__ */ new Set,l=e=>{for(let t of e.children)c.add(t.start)},u=t=>{let{html:i,kept:a,src:o,type:l}=xe(e,t.openingElement),u=o&&F(o),d=u!==void 0&&!be.test(u);if(l!==`module`){d&&ye.test(u)&&r.push(`<script src="${u}"> is not bundled; add type="module" to make it a page script.`);return}let f={attributes:a,end:t.end,replacement:c.has(t.start)?``:`<></>`,start:t.start};if(o){d&&n.push({...f,kind:`src`,src:u});return}let p=we(t,i);if(!p){r.push(`<script type="module"> content must be a static string to be bundled.`);return}let[m,h]=p;m.trim()!==``&&n.push({...f,code:m,codeStart:h,index:s++,kind:`inline`})};return new le({JSXElement(e){l(e),Te(e.openingElement)&&u(e)},JSXFragment:l}).visit(a),{importOffset:o,scripts:n,warnings:r}},L=`virtual:${e}-page-scripts`,R=`__wrenPageScripts`,z=`${L}:route:`,B=`\0${z}`,V=`\0${_}`,H=/\?wren-script=(\d+)\.ts$/,U=`__wren-page-scripts.mjs`,W=`\0${ee}`,Ee=/\.[cm]?[jt]sx?$/,De=(e,t)=>{let n=D(C(e,t));return n.startsWith(`../`)||oe(n)?`@fs/${D(t).replace(/^\//,``)}`:n},G=e=>ie(e,ae(e)),Oe=async(e,t,n)=>{let r=t.attributes.filter(e=>!/^type\b/.test(e));if(r.length>0&&e.warn(`Page script attributes are dropped when hoisted: ${r.join(` `)}`),t.kind===`inline`)return{id:`${n}?wren-script=${t.index}.ts`,name:`${G(n)}-${t.index}`};let i=await e.resolve(t.src,n);if(!i||i.external||i.id.includes(`/node_modules/`)){e.warn(`Page script "${t.src}" must resolve to a project file; left as is.`);return}return{id:i.id,name:G(i.id)}},ke=async(e,t,n)=>{let r=await k(t,`utf8`),i=I(r,t).scripts.find(e=>e.kind===`inline`&&e.index===n);return i?.kind===`inline`?{code:`
3
+ `.repeat(i):r}},ve=(e,t)=>{let n=e;for(let{end:e,start:r,text:i}of t.toSorted((e,t)=>t.start-e.start))n=n.slice(0,r)+i+n.slice(e);return n},ye=/\.[cm]?[jt]sx?$/,be=/^(?:[a-z][a-z\d+.-]*:|\/\/)/i,P=e=>{if(e.type===`Literal`&&typeof e.value==`string`)return e.value;if(e.type===`TemplateLiteral`&&e.expressions.length===0)return e.quasis[0]?.value.cooked??void 0},F=({value:e})=>{if(e?.type===`Literal`)return e.value;if(e?.type===`JSXExpressionContainer`)return P(e.expression)},xe=(e,t)=>{let n={kept:[]};for(let r of t.attributes){let t=e.slice(r.start,r.end);if(r.type!==`JSXAttribute`||r.name.type!==`JSXIdentifier`){n.kept.push(t);continue}let{name:i}=r.name;i===`src`?n.src=r:i===`dangerouslySetInnerHTML`?n.html=r:(i===`type`&&(n.type=F(r)),n.kept.push(t))}return n},Se=({key:e})=>e.type===`Identifier`?e.name:e.type===`Literal`?e.value:null,Ce=({value:e})=>{let t=e?.type===`JSXExpressionContainer`?e.expression:void 0;if(t?.type===`ObjectExpression`)for(let e of t.properties){if(e.type!==`Property`||e.computed||Se(e)!==`__html`)continue;let t=P(e.value);return t===void 0?void 0:[t,e.value.start+1]}},we=(e,t)=>{if(t)return Ce(t);let n=e.children.filter(e=>e.type!==`JSXText`||e.value.trim()!==``);if(n.length===0)return[``,e.start];if(n.length!==1)return;let[r]=n;if(r.type===`JSXText`)return[r.value,r.start];if(r.type!==`JSXExpressionContainer`)return;let i=P(r.expression);return i===void 0?void 0:[i,r.expression.start+1]},Te=({name:e})=>e.type===`JSXIdentifier`&&e.name===`script`,I=(e,t)=>{let n=[],r=[],{errors:i,program:a}=O(t,e);if(i.length>0)return{importOffset:0,scripts:n,warnings:r};let o=a.body.find(e=>e.type!==`ExpressionStatement`||typeof e.directive!=`string`)?.start??e.length,s=0,c=/* @__PURE__ */ new Set,l=e=>{for(let t of e.children)c.add(t.start)},u=t=>{let{html:i,kept:a,src:o,type:l}=xe(e,t.openingElement),u=o&&F(o),d=u!==void 0&&!be.test(u);if(l!==`module`){d&&ye.test(u)&&r.push(`<script src="${u}"> is not bundled; add type="module" to make it a page script.`);return}let f={attributes:a,end:t.end,replacement:c.has(t.start)?``:`<></>`,start:t.start};if(o){d&&n.push({...f,kind:`src`,src:u});return}let p=we(t,i);if(!p){r.push(`<script type="module"> content must be a static string to be bundled.`);return}let[m,h]=p;m.trim()!==``&&n.push({...f,code:m,codeStart:h,index:s++,kind:`inline`})};return new le({JSXElement(e){l(e),Te(e.openingElement)&&u(e)},JSXFragment:l}).visit(a),{importOffset:o,scripts:n,warnings:r}},L=`virtual:${e}-page-scripts`,R=`__wrenPageScripts`,z=`${L}:route:`,B=`\0${z}`,V=`\0${_}`,H=/\?wren-script=(\d+)\.ts$/,U=`__wren-page-scripts.mjs`,W=`\0${ee}`,Ee=/\.[cm]?[jt]sx?$/,De=(e,t)=>{let n=D(C(e,t));return n.startsWith(`../`)||oe(n)?`@fs/${D(t).replace(/^\//,``)}`:n},G=e=>ie(e,ae(e)),Oe=async(e,t,n)=>{let r=t.attributes.filter(e=>!/^type\b/.test(e));if(r.length>0&&e.warn(`Page script attributes are dropped when hoisted: ${r.join(` `)}`),t.kind===`inline`)return{id:`${n}?wren-script=${t.index}.ts`,name:`${G(n)}-${t.index}`};let i=await e.resolve(t.src,n);if(!i||i.external||i.id.includes(`/node_modules/`))e.warn(`Page script "${t.src}" must resolve to a project file; left as is.`);else return{id:i.id,name:G(i.id)}},ke=async(e,t,n)=>{let r=await k(t,`utf8`),i=I(r,t).scripts.find(e=>e.kind===`inline`&&e.index===n);return i?.kind===`inline`?{code:`
4
4
  `.repeat(N(r.slice(0,i.codeStart)))+i.code,map:null}:e.error(`Inline page script #${n} not found in ${t}.`)},Ae=t=>{let n=/* @__PURE__ */ new Map,r=/* @__PURE__ */ new Set,i=/* @__PURE__ */ new Map,a=/* @__PURE__ */ new Map,o=[],s=/* @__PURE__ */ new Map,c,l=[],u=(e,t)=>{let r=De(e,t.id),i=n.get(r)??{...t,index:n.size,key:r};return n.set(r,i),i},d=e=>{let t=o.indexOf(e);return t===-1?o.push(e)-1:t},f=(e,t)=>{let n=/* @__PURE__ */ new Set,r=/* @__PURE__ */ new Set,o=e=>{if(!r.has(e)){r.add(e);for(let t of i.get(e)??[])n.add(t);for(let t of a.get(e)?.values()??[])for(let e of t)n.add(e);for(let n of t(e))o(n)}};return o(e),[...n]},p=async(e,t,n,r)=>{let{scripts:a,warnings:o}=I(t,n),s=a.map(({end:e,replacement:n,start:r})=>_e(t,r,e,n));if(!r)return s;for(let t of o)e.warn(t);let c=await Promise.all(a.map(t=>Oe(e,t,n))),{root:l}=e.environment.config;return i.set(n,c.flatMap(e=>e?[u(l,e)]:[])),s.filter((e,t)=>c[t])},m=(e,t)=>{let n=t?`() => ${R}.routes[${d(e)}]`:`async () => (await import(${JSON.stringify(z+encodeURIComponent(e))})).default`;return`\n${t?`import ${R} from ${JSON.stringify(L)};`:``}export const ${te} = ${n};\n`},h=(e,t)=>{let n=f(t,t=>l.flatMap(({moduleGraph:n})=>{let r=n.getModuleById(t);return r?.file&&e.addWatchFile(r.file),Array.from(r?.importedModules??[],e=>e.id).filter(e=>e!==null)})),{base:r}=e.environment.config;return`export default ${JSON.stringify(n.map(e=>r+e.key))};`};return{buildApp:{async handler(t){let i=[...n.values()],a=i.filter(e=>!e.url).map(e=>e.key);if(a.length>0)throw Error(`[${e}] Page scripts were not bundled by the client environment (server environments must build first): ${a.join(`, `)}`);let c={routes:o.map(e=>f(e,e=>s.get(e)??[]).map(e=>e.url)),scripts:i.map(e=>e.url)},l=`export default ${JSON.stringify(c)};\n`;await Promise.all([...r].map(async e=>{let{build:n,root:r}=t.environments[e].config;await M(w(r,n.outDir,U),l)}))},order:`post`},buildEnd(){if(this.environment.mode===`build`)for(let e of this.getModuleIds()){let t=this.getModuleInfo(e);if(!t)continue;let n=[...t.importedIds,...t.dynamicallyImportedIds];s.set(e,[...s.get(e)??[],...n])}},buildStart(){let{mode:e,name:t}=this.environment;if(e===`build`&&t===`client`)for(let e of n.values())e.reference=this.emitFile({id:e.id,name:`scripts/${e.name}`,preserveSignature:`exports-only`,type:`chunk`})},configResolved(e){c=`${D(w(e.root,t))}/`},configureServer(e){l=Object.values(e.environments)},enforce:`pre`,generateBundle(){if(this.environment.name!==`client`)return;let{base:e}=this.environment.config;for(let t of n.values())t.reference&&(t.url=e+this.getFileName(t.reference))},load:{filter:{id:[H,RegExp(`^${W}`),RegExp(`^${B}`),RegExp(`^${V}$`)]},async handler(e){let{config:t,mode:n}=this.environment;if(e===V)return`export {};`;if(e.startsWith(W)){let r=e.slice(W.length),{index:i,key:a}=u(t.root,{id:r,name:G(r)});return n===`build`?`import ${R} from ${JSON.stringify(L)};export default ${R}.scripts[${i}];`:`export default ${JSON.stringify(t.base+a)};`}if(e.startsWith(B))return h(this,decodeURIComponent(e.slice(B.length)));let r=H.exec(e);return r?ke(this,e.slice(0,r.index),Number(r[1])):null}},name:`${e}-page-scripts`,renderChunk(e,t){if(!e.includes(L))return null;this.environment.config.build.write&&r.add(this.environment.name);let n=D(C(x(t.fileName),U)),i=n.startsWith(`.`)?n:`./${n}`;return{code:e.replaceAll(L,i),map:null}},async resolveId(e,t){if(e.startsWith(`virtual:wrenjs-hoist:`)){if(t&&this.environment.config.consumer===`server`){let n=await this.resolve(e.slice(_.length),t);if(!n?.id.startsWith(W))return this.error(`"${e}" must resolve to a Wren page script (${t}).`);let r=n.id.slice(W.length),i=u(this.environment.config.root,{id:r,name:G(r)}),o=a.get(t)??/* @__PURE__ */ new Map,s=o.get(this.environment.name)??/* @__PURE__ */ new Set;a.set(t,o.set(this.environment.name,s.add(i)))}return V}return e.startsWith(`virtual:wrenjs-script-url:`)||e.startsWith(z)?`\0${e}`:e===L?{external:!0,id:e}:null},sharedDuringBuild:!0,transform:{filter:{id:Ee},async handler(e,t){let{config:n,mode:r}=this.environment,o=n.consumer===`server`,s=o&&t.startsWith(c)&&g.test(t),l=e.includes(`<script`)?await p(this,e,t,o):[];if(l.length===0&&i.delete(t),a.get(t)?.delete(this.environment.name),l.length===0&&!s)return null;let u=s?m(t,r===`build`):``;return{code:ve(e,l)+u,map:null}}}}},je=async(e,t,n=`http://localhost`,r=!1)=>{let i=new URL(n);if(!/^https?:$/.test(i.protocol)||i.href!==`${i.origin}/`)throw Error(`build.prerender.origin must be an HTTP(S) origin.`);let a=/* @__PURE__ */ new Set,o=/* @__PURE__ */ new Set,s=async({pathname:e,response:n})=>{let r=y(e);if(n.status!==200)throw Error(`Cannot prerender ${r}: HTTP ${n.status}.`);let i=n.headers.get(`content-type`)?.startsWith(`text/html`)?S(r.slice(1),`index.html`):r.slice(1);if(a.has(r)||o.has(i))throw Error(`Conflicting prerender artifact: ${r}.`);a.add(r),o.add(i);let s=S(t,i);await me(x(s),{recursive:!0}),await M(s,new Uint8Array(await n.arrayBuffer()))},c=0;return await Promise.all(e.map(async e=>{let t=await e.getPaths(r);await Promise.all(t.map(async t=>{let n=y(t);if(a.has(n))throw Error(`Multiple prerender providers claim ${n}.`);let r=await e.render(new Request(new URL(n,i)));if(await Promise.all(r.map(s)),!a.has(n))throw Error(`Prerender renderer did not return ${n}.`);c++}))})),c},Me=(t,n)=>{let r=n.integrations?.flatMap(({prerender:e})=>e?[{...e,output:``,reference:``}]:[])??[];return{apply:`build`,buildApp:{async handler(e){if(!r.length)return;let t=await Promise.all(r.map(async({environment:e,output:t})=>{if(!t)throw Error(`No prerender entry was built for ${e}.`);return import(
5
5
  /* @vite-ignore */
6
6
  he(t).href)})),i=e.environments.client;if(!i)throw Error(`Prerendering requires a client output environment.`);let a=await je(t,w(e.config.root,i.config.build.outDir),n.build?.prerender?.origin,n.build?.output===`static`);e.config.logger.info(`Prerendered ${a} pages.`),await Promise.all(r.flatMap(({output:e})=>[j(e,{force:!0}),j(`${e}.map`,{force:!0})]))},order:`post`},buildStart(){for(let e of r)e.environment===this.environment.name&&(e.reference=this.emitFile({id:e.entry,preserveSignature:`strict`,type:`chunk`}))},generateBundle(){if(this.environment.config.build.write)for(let e of r)e.environment===this.environment.name&&(e.output=w(this.environment.config.root,this.environment.config.build.outDir,this.getFileName(e.reference)))},name:`${e}-prerender`,sharedDuringBuild:!0}},Ne={0:void 0,1:n,10:`API`,11:n,100:void 0,101:s,110:`API`,200:void 0,201:o,210:void 0,300:void 0,301:f,310:void 0,1e3:void 0,1001:h,1010:`API`},K=(e,t)=>{let n=t.includes(`default`),r=u.some(e=>t.includes(e)),o=e.replace(/\.[^/.]+$/,``),s=Number(n)+10*Number(r)+100*Number(o===c)+200*Number(o===d)+300*Number(o===i)+1e3*Number(o===a);return Ne[s]||void 0};let q=0;const J=e=>e.isFile()&&g.test(e.name),Y=async e=>{let{errors:t,module:n}=O(e,await k(e,`utf8`));if(t.length>0)throw SyntaxError(`Cannot parse ${e}: ${t.map(e=>e.message).join(`
@@ -47,4 +47,4 @@ he(t).href)})),i=e.environments.client;if(!i)throw Error(`Prerendering requires
47
47
  const manifest = deepFreeze(${a});
48
48
  export const { dynamicNotFounds, dynamicRoutes, staticNotFounds, staticRoutes } = manifest;
49
49
  export default manifest;
50
- `},$=`virtual:${e}-routes`,qe=[`\0${$}`],Je=(e,t,n)=>{let r=!1,i=D(w(e.config.root,t.router));if(D(n).startsWith(`${i}/`)){for(let t of Object.values(e.environments))for(let e of qe){let n=t.moduleGraph.getModuleById(e);n&&(r=!0,t.moduleGraph.invalidateModule(n))}r&&e.ws.send({type:`full-reload`})}},Ye=async(e,t,n=!0)=>Ke(await Ge(e,t),n),Xe=(t,n)=>{let r=typeof n.router==`string`,i=t.command===`build`;return{async buildApp(e){if(!n.integrations||n.integrations?.length===0){let t=await Ye(n,e.config.root,i);console.debug(`Generated route manifest:`),console.debug(t)}},async configureServer(e){let t=r?t=>Je(e,n,t):e=>void 0;e.watcher.on(`add`,t),e.watcher.on(`change`,t),e.watcher.on(`unlink`,t)},async load(e){return qe.includes(e)?Ye(n,this.environment.config.root,i):null},name:`${e}-route-manifest`,resolveId(e){return e===$?`\0${e}`:null}}},Ze=async(t,n)=>{let r=fe({appType:`custom`,build:{minify:!0,outDir:`dist`,rolldownOptions:{experimental:{nativeMagicString:!0},optimization:{inlineConst:{mode:`smart`,pass:2}}}},builder:{async buildApp(e){let t=Object.values(e.environments).toSorted((e,t)=>Number(e.config.consumer===`client`)-Number(t.config.consumer===`client`));for(let n of t){if(n.isBuilt)continue;let{build:t,input:r,isBundled:i}=n.config,a=t.rolldownOptions.input??(t.lib?t.lib.entry:void 0)??(typeof t.ssr==`string`?t.ssr:r);if(!(typeof a==`string`||Object.keys(a??{}).length>0)||!i){delete e.environments[n.name];continue}await e.build(n)}},sharedConfigBuild:!0,sharedPlugins:!0},plugins:[{api:{wrenConfig:n},name:`${e}-config`},Xe(t,n),Ae(n.router),Me(t,n)],resolve:{noExternal:[/^@wren-js\//],tsconfigPaths:!0}}),i=await Promise.all([n.adapter,...n.integrations??[]].map(async e=>e?.viteConfig(n,t))),a=r;for(let e of i)e&&(a=E(a,e));return a},Qe=async t=>{let n=ge(),r=ne.map(e=>D(w(n,`wren.config.${e}`))),i=r.find(e=>re(e)),a=i?await pe(t,i):null,o=/* @__PURE__ */ new Set([...r,...(a?.dependencies??[]).map(e=>D(w(e)))]),s=a?E(v,a.config):v,c=E(await Ze(t,s),s.vite??{});return{...c,configFile:!1,mode:t.mode,plugins:[...c.plugins??[],{apply:`serve`,configResolved(e){e.configFileDependencies.push(...o)},configureServer(e){let n=e.restart.bind(e),r;e.restart=i=>(r??=(async()=>{let r=await Qe(t),{inlineConfig:a}=e.config;for(let e of Object.keys(a))Reflect.deleteProperty(a,e);Object.assign(a,r),await n(i)})().finally(()=>{r=void 0}),r)},name:`${e}-config-reload`}]}},$e=async t=>{t.mode=t.command===`build`?`production`:T.env.NODE_ENV??`development`;let n=await Qe(t);if(t.command===`serve`){let t=await de(n);return await t.listen(),console.info(`${e} v${p}`),t.printUrls(),t.bindCLIShortcuts({print:!0}),t}return t.command===`build`?(await ue(n)).buildApp():Promise.resolve()},et=ce({allowPositionals:!0,args:T.argv,options:{help:{short:`h`,type:`boolean`},version:{short:`v`,type:`boolean`}}}).positionals[2];$e({command:et===`build`?`build`:`serve`,mode:T.env.NODE_ENV??`production`}).catch(e=>{console.error(e),T.exit(1)});export{};
50
+ `},$=`virtual:${e}-routes`,qe=[`\0${$}`],Je=(e,t,n)=>{let r=!1,i=D(w(e.config.root,t.router));if(D(n).startsWith(`${i}/`)){for(let t of Object.values(e.environments))for(let e of qe){let n=t.moduleGraph.getModuleById(e);n&&(r=!0,t.moduleGraph.invalidateModule(n))}r&&e.ws.send({type:`full-reload`})}},Ye=async(e,t,n=!0)=>Ke(await Ge(e,t),n),Xe=(t,n)=>{let r=typeof n.router==`string`,i=t.command===`build`;return{async buildApp(e){if(!n.integrations||n.integrations?.length===0){let t=await Ye(n,e.config.root,i);console.debug(`Generated route manifest:`),console.debug(t)}},async configureServer(e){let t=r?t=>Je(e,n,t):e=>void 0;e.watcher.on(`add`,t),e.watcher.on(`change`,t),e.watcher.on(`unlink`,t)},async load(e){return qe.includes(e)?Ye(n,this.environment.config.root,i):null},name:`${e}-route-manifest`,resolveId(e){return e===$?`\0${e}`:null}}},Ze=async(t,n)=>{let r=fe({appType:`custom`,build:{minify:!0,outDir:`dist`,rolldownOptions:{experimental:{nativeMagicString:!0},optimization:{inlineConst:{mode:`smart`,pass:2}}}},builder:{async buildApp(e){let t=Object.values(e.environments).toSorted((e,t)=>Number(e.config.consumer===`client`)-Number(t.config.consumer===`client`));for(let n of t){if(n.isBuilt)continue;let{build:t,input:r,isBundled:i}=n.config,a=t.rolldownOptions.input??(t.lib?t.lib.entry:void 0)??(typeof t.ssr==`string`?t.ssr:r);!(typeof a==`string`||Object.keys(a??{}).length>0)||!i?delete e.environments[n.name]:await e.build(n)}},sharedConfigBuild:!0,sharedPlugins:!0},plugins:[{api:{wrenConfig:n},name:`${e}-config`},Xe(t,n),Ae(n.router),Me(t,n)],resolve:{noExternal:[/^@wren-js\//],tsconfigPaths:!0}}),i=await Promise.all([n.adapter,...n.integrations??[]].map(async e=>e?.viteConfig(n,t))),a=r;for(let e of i)e&&(a=E(a,e));return a},Qe=async t=>{let n=ge(),r=ne.map(e=>D(w(n,`wren.config.${e}`))),i=r.find(e=>re(e)),a=i?await pe(t,i):null,o=/* @__PURE__ */ new Set([...r,...(a?.dependencies??[]).map(e=>D(w(e)))]),s=a?E(v,a.config):v,c=E(await Ze(t,s),s.vite??{});return{...c,configFile:!1,mode:t.mode,plugins:[...c.plugins??[],{apply:`serve`,configResolved(e){e.configFileDependencies.push(...o)},configureServer(e){let n=e.restart.bind(e),r;e.restart=i=>(r??=(async()=>{let r=await Qe(t),{inlineConfig:a}=e.config;for(let e of Object.keys(a))Reflect.deleteProperty(a,e);Object.assign(a,r),await n(i)})().finally(()=>{r=void 0}),r)},name:`${e}-config-reload`}]}},$e=async t=>{t.mode=t.command===`build`?`production`:T.env.NODE_ENV??`development`;let n=await Qe(t);if(t.command===`serve`){let t=await de(n);return await t.listen(),console.info(`${e} v${p}`),t.printUrls(),t.bindCLIShortcuts({print:!0}),t}return t.command===`build`?(await ue(n)).buildApp():Promise.resolve()},et=ce({allowPositionals:!0,args:T.argv,options:{help:{short:`h`,type:`boolean`},version:{short:`v`,type:`boolean`}}}).positionals[2];$e({command:et===`build`?`build`:`serve`,mode:T.env.NODE_ENV??`production`}).catch(e=>{console.error(e),T.exit(1)});export{};
package/dist/config.d.mts CHANGED
@@ -103,4 +103,5 @@ interface WrenIntegration {
103
103
  export declare const CONFIG_VALID_EXTENSIONS: readonly ["ts", "mts", "js", "mjs"];
104
104
  export declare function defineConfig(config?: WrenConfig): WrenConfig;
105
105
  export declare const DEFAULTS: WrenConfig;
106
- //#endregion
106
+ //#endregion
107
+ export {};
@@ -1 +1 @@
1
- import"./constants-B7Wo9Ox0.mjs";var e=`0.1.2`;const t=`wrenjs`,n=e,r=`ROOT`,i=`PAGE`,a=`API`,o=`NOT_FOUND`,s=`LAYOUT`,c=`PROXY`,l=[r,s,c],u=`___root`,d=`___root`,f=`__layout`,p=`__not-found`,m=`__proxy`,h=`GET`,g=`DELETE`,_=`HEAD`,v=`OPTIONS`,y=`PATCH`,b=`POST`,x=`PUT`,S=[`GET`,g,_,v,y,b,`PUT`],C=/* @__PURE__ */ new Set([`API`,i]),w=/* @__PURE__ */ new Set([o]);export{t as C,C as S,i as _,v as a,l as b,x as c,m as d,u as f,o as g,s as h,_ as i,f as l,a as m,g as n,y as o,d as p,h as r,b as s,S as t,p as u,c as v,n as w,w as x,r as y};
1
+ import"./constants-B7Wo9Ox0.mjs";var e=`0.1.4`;const t=`wrenjs`,n=e,r=`ROOT`,i=`PAGE`,a=`API`,o=`NOT_FOUND`,s=`LAYOUT`,c=`PROXY`,l=[r,s,c],u=`___root`,d=`___root`,f=`__layout`,p=`__not-found`,m=`__proxy`,h=`GET`,g=`DELETE`,_=`HEAD`,v=`OPTIONS`,y=`PATCH`,b=`POST`,x=`PUT`,S=[`GET`,g,_,v,y,b,`PUT`],C=/* @__PURE__ */ new Set([`API`,i]),w=/* @__PURE__ */ new Set([o]);export{t as C,C as S,i as _,v as a,l as b,x as c,m as d,u as f,o as g,s as h,_ as i,f as l,a as m,g as n,y as o,d as p,h as r,b as s,S as t,p as u,c as v,n as w,w as x,r as y};
@@ -1 +1 @@
1
- import{C as e,S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,w as x,x as S,y as C}from"./constants-Cqd6fWdi.mjs";import{l as w}from"./constants-B7Wo9Ox0.mjs";export{v as ENTRY_API_EXPORTS,p as ENTRY_FILEROUTE_API_EXPORT_DELETE,g as ENTRY_FILEROUTE_API_EXPORT_GET,u as ENTRY_FILEROUTE_API_EXPORT_HEAD,r as ENTRY_FILEROUTE_API_EXPORT_OPTIONS,m as ENTRY_FILEROUTE_API_EXPORT_PATCH,_ as ENTRY_FILEROUTE_API_EXPORT_POST,a as ENTRY_FILEROUTE_API_EXPORT_PUT,d as ENTRY_FILEROUTE_LAYOUT,y as ENTRY_FILEROUTE_NOT_FOUND,o as ENTRY_FILEROUTE_PROXY,s as ENTRY_FILEROUTE_ROOT,h as ENTRY_FILEROUTE_ROOT_LAYOUT,f as ENTRY_KIND_API,l as ENTRY_KIND_LAYOUT,c as ENTRY_KIND_NOT_FOUND,n as ENTRY_KIND_PAGE,b as ENTRY_KIND_PROXY,C as ENTRY_KIND_ROOT,i as ENTRY_WRAPPER_TYPES,S as FALLBACK_ENTRIES,t as ROUTE_ENTRIES,w as ROUTE_MODULE_RE,e as WREN_NAME,x as WREN_VERSION};
1
+ import{C as e,S as t,_ as n,a as r,b as i,c as a,d as o,f as s,g as c,h as l,i as u,l as d,m as f,n as p,o as m,p as h,r as g,s as _,t as v,u as y,v as b,w as x,x as S,y as C}from"./constants-DqE-Q6__.mjs";import{l as w}from"./constants-B7Wo9Ox0.mjs";export{v as ENTRY_API_EXPORTS,p as ENTRY_FILEROUTE_API_EXPORT_DELETE,g as ENTRY_FILEROUTE_API_EXPORT_GET,u as ENTRY_FILEROUTE_API_EXPORT_HEAD,r as ENTRY_FILEROUTE_API_EXPORT_OPTIONS,m as ENTRY_FILEROUTE_API_EXPORT_PATCH,_ as ENTRY_FILEROUTE_API_EXPORT_POST,a as ENTRY_FILEROUTE_API_EXPORT_PUT,d as ENTRY_FILEROUTE_LAYOUT,y as ENTRY_FILEROUTE_NOT_FOUND,o as ENTRY_FILEROUTE_PROXY,s as ENTRY_FILEROUTE_ROOT,h as ENTRY_FILEROUTE_ROOT_LAYOUT,f as ENTRY_KIND_API,l as ENTRY_KIND_LAYOUT,c as ENTRY_KIND_NOT_FOUND,n as ENTRY_KIND_PAGE,b as ENTRY_KIND_PROXY,C as ENTRY_KIND_ROOT,i as ENTRY_WRAPPER_TYPES,S as FALLBACK_ENTRIES,t as ROUTE_ENTRIES,w as ROUTE_MODULE_RE,e as WREN_NAME,x as WREN_VERSION};
@@ -1 +1 @@
1
- import{t as e}from"../utils-0wezGh38.mjs";import{n as t}from"../trie-lookup-BLa5NWBJ.mjs";import{dynamicNotFounds as n,dynamicRoutes as r,staticNotFounds as i,staticRoutes as a}from"virtual:wrenjs-routes";function o(o){let s=e(o);if(!s)return;let c=[],l=a?.[s]??t(r,s,c)??i?.[s]??t(n,s,c);if(!l)return;let u=l.params?.length?Object.fromEntries(l.params.map((e,t)=>[e,c[t]])):{},d=({layouts:e,module:t,proxies:n})=>({kind:l.kind,layouts:e,module:t,params:u,proxies:n}),f=l.stack();return f instanceof Promise?f.then(d):d(f)}export{o as matchRouteToStack};
1
+ import{t as e}from"../utils-0wezGh38.mjs";import{n as t}from"../trie-lookup-BLa5NWBJ.mjs";import{dynamicNotFounds as n,dynamicRoutes as r,staticNotFounds as i,staticRoutes as a}from"virtual:wrenjs-routes";function o(o){let s=e(o);if(!s)return;let c=[],l=a?.[s]??t(r,s,c)??i?.[s]??t(n,s,c);if(!l)return;let u=Object.fromEntries(l.params?.map((e,t)=>[e,c[t]])??[]),d=({layouts:e,module:t,proxies:n})=>({kind:l.kind,layouts:e,module:t,params:u,proxies:n}),f=l.stack();return f instanceof Promise?f.then(d):d(f)}export{o as matchRouteToStack};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wren-js/core",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Framework agnostic utilities for the wrenjs meta-framework",
5
5
  "keywords": [
6
6
  "@wren-js/core",
@@ -63,7 +63,7 @@
63
63
  },
64
64
  "devDependencies": {
65
65
  "typescript": "7.0.2",
66
- "vite-plus": "1.1.0"
66
+ "vite-plus": "1.2.0"
67
67
  },
68
68
  "scripts": {
69
69
  "build": "vp pack",