@wren-js/core 0.17.0 → 0.18.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/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import{_ as e,b as t,d as n,f as r,g as i,h as a,l as o,m as s,t as c,u as l,v as u,y as d}from"./constants-B3i9jJ2c.mjs";import{c as f,d as p,f as m,l as h,n as ee,p as g}from"./constants-DiYpQ2qF.mjs";import{CONFIG_VALID_EXTENSIONS as _,DEFAULTS as v}from"./config.mjs";import{t as y}from"./utils-DduvrkBB.mjs";import{existsSync as te}from"node:fs";import{basename as ne,dirname as b,extname as re,isAbsolute as x,join as S,relative as C,resolve as w}from"node:path";import T from"node:process";import{parseArgs as ie}from"node:util";import{Visitor as E,createBuilder as ae,createServer as oe,defineConfig as se,isCSSRequest as ce,loadConfigFromFile as le,loadEnv as ue,mergeConfig as D,normalizePath as O,parseSync as k,perEnvironmentState as de,resolveEnvPrefix as fe,transformWithOxc as pe}from"vite";import{mkdir as me,readFile as A,readdir as he,rm as j,writeFile as M}from"node:fs/promises";import{pathToFileURL as ge}from"node:url";const N=e=>T.platform===`win32`?e.toUpperCase():e,_e=()=>{let e=/* @__PURE__ */ new Map;return(t,n)=>{for(let[t,n]of e)T.env[t]===n&&delete T.env[t];e.clear();let r=new Set(Object.keys(T.env).map(N)),i=ue(t,n,``);for(let[t,n]of Object.entries(i)){let i=N(t);r.has(i)||(T.env[t]=n,e.set(i,n))}}},ve=(e,t)=>{let n=n=>typeof n==`string`&&!Object.hasOwn(e,n)&&!t.some(e=>n.startsWith(e)),r=e=>n(e)&&Object.hasOwn(globalThis.process.env,e);return new Proxy(e,{get(e,t,n){return r(t)?globalThis.process.env[t]:Reflect.get(e,t,n)},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(r(t)?globalThis.process.env:e,t)},has(e,t){return Reflect.has(e,t)||r(t)},ownKeys(e){return[...Reflect.ownKeys(e),...Object.keys(globalThis.process.env).filter(n)]}})},P=`virtual:${d}-server-env`,F=`\0${P}`,I=`import.meta.env.`,ye=()=>{let e=de(({config:e})=>{let t=Object.fromEntries(Object.entries(e.env).map(([e,t])=>[I+e,JSON.stringify(t)]));for(let[n,r]of Object.entries(e.define??{}))n.startsWith(I)&&(t[n]=typeof r==`string`?r:JSON.stringify(r)??`undefined`);return t[`${I}SSR`]=`true`,t});return{applyToEnvironment:e=>e.config.consumer===`server`,load:{filter:{id:RegExp(`^${F}$`)},handler(){let t=Object.entries(e(this)).map(([e,t])=>`${JSON.stringify(e.slice(16))}: ${t}`),n=fe({envPrefix:this.environment.config.envPrefix});return`export default (${ve.toString()})({${t.join(`,`)}}, ${JSON.stringify(n)});`}},name:`${d}-server-env`,resolveId:{filter:{id:RegExp(`^${P}$`)},handler:()=>F},transform:{filter:{code:/\bimport\s*\.\s*meta\s*(?:\?\s*)?\.\s*env\b/,id:/\.[cm]?[jt]sx?(?:$|\?)/},handler(t,n){if(n===F)return null;let r=`__wrenServerEnv`;if(t.includes(r)||t.includes(`\\u`)){let{errors:e,program:i}=k(n.split(`?`)[0],t);if(e.length>0)return this.error(e[0].message);let a=/* @__PURE__ */ new Set;for(new E({Identifier:e=>void a.add(e.name)}).visit(i);a.has(r);)r+=`_`}return pe(t,n,{define:{...e(this),"import.meta.env":r},inject:{[r]:[P,`default`]},jsx:`preserve`,tsconfig:!1})}}}},L=e=>{let t=0;for(let n=e.indexOf(`
1
+ import{_ as e,b as t,d as n,f as r,g as i,h as a,l as o,m as s,t as c,u as l,v as u,y as d}from"./constants-ClxQx8NE.mjs";import{c as f,d as p,f as m,l as h,n as ee,p as g}from"./constants-DiYpQ2qF.mjs";import{CONFIG_VALID_EXTENSIONS as _,DEFAULTS as v}from"./config.mjs";import{t as y}from"./utils-DduvrkBB.mjs";import{existsSync as te}from"node:fs";import{basename as ne,dirname as b,extname as re,isAbsolute as x,join as S,relative as C,resolve as w}from"node:path";import T from"node:process";import{parseArgs as ie}from"node:util";import{Visitor as E,createBuilder as ae,createServer as oe,defineConfig as se,isCSSRequest as ce,loadConfigFromFile as le,loadEnv as ue,mergeConfig as D,normalizePath as O,parseSync as k,perEnvironmentState as de,resolveEnvPrefix as fe,transformWithOxc as pe}from"vite";import{mkdir as me,readFile as A,readdir as he,rm as j,writeFile as M}from"node:fs/promises";import{pathToFileURL as ge}from"node:url";const N=e=>T.platform===`win32`?e.toUpperCase():e,_e=()=>{let e=/* @__PURE__ */ new Map;return(t,n)=>{for(let[t,n]of e)T.env[t]===n&&delete T.env[t];e.clear();let r=new Set(Object.keys(T.env).map(N)),i=ue(t,n,``);for(let[t,n]of Object.entries(i)){let i=N(t);r.has(i)||(T.env[t]=n,e.set(i,n))}}},ve=(e,t)=>{let n=n=>typeof n==`string`&&!Object.hasOwn(e,n)&&!t.some(e=>n.startsWith(e)),r=e=>n(e)&&Object.hasOwn(globalThis.process.env,e);return new Proxy(e,{get(e,t,n){return r(t)?globalThis.process.env[t]:Reflect.get(e,t,n)},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(r(t)?globalThis.process.env:e,t)},has(e,t){return Reflect.has(e,t)||r(t)},ownKeys(e){return[...Reflect.ownKeys(e),...Object.keys(globalThis.process.env).filter(n)]}})},P=`virtual:${d}-server-env`,F=`\0${P}`,I=`import.meta.env.`,ye=()=>{let e=de(({config:e})=>{let t=Object.fromEntries(Object.entries(e.env).map(([e,t])=>[I+e,JSON.stringify(t)]));for(let[n,r]of Object.entries(e.define??{}))n.startsWith(I)&&(t[n]=typeof r==`string`?r:JSON.stringify(r)??`undefined`);return t[`${I}SSR`]=`true`,t});return{applyToEnvironment:e=>e.config.consumer===`server`,load:{filter:{id:RegExp(`^${F}$`)},handler(){let t=Object.entries(e(this)).map(([e,t])=>`${JSON.stringify(e.slice(16))}: ${t}`),n=fe({envPrefix:this.environment.config.envPrefix});return`export default (${ve.toString()})({${t.join(`,`)}}, ${JSON.stringify(n)});`}},name:`${d}-server-env`,resolveId:{filter:{id:RegExp(`^${P}$`)},handler:()=>F},transform:{filter:{code:/\bimport\s*\.\s*meta\s*(?:\?\s*)?\.\s*env\b/,id:/\.[cm]?[jt]sx?(?:$|\?)/},handler(t,n){if(n===F)return null;let r=`__wrenServerEnv`;if(t.includes(r)||t.includes(`\\u`)){let{errors:e,program:i}=k(n.split(`?`)[0],t);if(e.length>0)return this.error(e[0].message);let a=/* @__PURE__ */ new Set;for(new E({Identifier:e=>void a.add(e.name)}).visit(i);a.has(r);)r+=`_`}return pe(t,n,{define:{...e(this),"import.meta.env":r},inject:{[r]:[P,`default`]},jsx:`preserve`,tsconfig:!1})}}}},L=e=>{let t=0;for(let n=e.indexOf(`
2
2
  `);n!==-1;n=e.indexOf(`
3
3
  `,n+1))t++;return t},be=(e,t,n,r)=>{let i=L(e.slice(t,n))-L(r);return{end:n,start:t,text:i>0?r+`
4
4
  `.repeat(i):r}},xe=(e,t)=>{let n=``,r=0;for(let{end:i,start:a,text:o}of t.toSorted((e,t)=>e.start-t.start))n+=e.slice(r,a)+o,r=i;return n+e.slice(r)},R=/\/node_modules\//,Se=(e,t)=>{let n=O(e).split(`/`).filter(e=>e!==``&&e!==`.`&&e!==`..`).join(`/`),r=n?`(?:^|/)${n.replaceAll(/[$()*+.?[\\\]^{|}]/g,`\\$&`)}/.*`:``;return RegExp(`${r}${t.source}`)},z=e=>ne(e,re(e)),Ce=/[\p{Cc} "#<>?^`{}\u0080-\u{10FFFF}]+/gu,B=e=>e.toWellFormed().normalize(`NFC`).replaceAll(Ce,e=>encodeURIComponent(e)),V=e=>Object.fromEntries(e.toSorted(([e],[t])=>e<t?-1:1)),we=async(e,t,n)=>{let r=0,i=!1;await Promise.all(Array.from({length:Math.min(t,e.length)},async()=>{for(;!i&&r<e.length;){let t=e[r++];try{await n(t)}catch(e){throw i=!0,e}}}))},Te=e=>{let t=[];for(let{entries:n}of e)for(let{exportName:e,isType:r}of n){if(r)continue;let n=e.kind===`Default`?`default`:e.name;n!==null&&t.push(n)}return t},Ee=/^(?:[a-z][a-z\d+.-]*:|\/\/)/i,H=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},De=({value:e})=>{if(e?.type===`Literal`)return e.value;if(e?.type===`JSXExpressionContainer`)return H(e.expression)},Oe=(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=De(r)),n.kept.push(t))}return n},ke=({key:e})=>e.type===`Identifier`?e.name:e.type===`Literal`?e.value:null,Ae=({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||ke(e)!==`__html`)continue;let t=H(e.value);return t===void 0?void 0:[t,e.value.start+1]}},je=(e,t)=>{if(t)return Ae(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=H(r.expression);return i===void 0?void 0:[i,r.expression.start+1]},Me=({name:e})=>e.type===`JSXIdentifier`&&e.name===`script`,Ne=(e,t)=>{let n=[],r=[],{errors:i,program:a}=k(t,e);if(i.length>0)return{scripts:n,warnings:r};let o=0,s=/* @__PURE__ */ new Set,c=e=>{for(let t of e.children)s.add(t.start)},l=t=>{let{html:i,kept:a,src:c,type:l}=Oe(e,t.openingElement),u=c&&De(c),d=u!==void 0&&!Ee.test(u);if(l!==`module`){d&&g.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:s.has(t.start)?``:`<></>`,start:t.start};if(c){d&&n.push({...f,kind:`src`,src:u});return}let p=je(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:o++,kind:`inline`})};return new E({JSXElement(e){c(e),Me(e.openingElement)&&l(e)},JSXFragment:c}).visit(a),{scripts:n,warnings:r}},U=`virtual:${d}-page-scripts`,W=`__wrenPageScripts`,G=`${U}:route:`,K=`\0${G}`,q=`\0${f}`,Pe=/\?wren-script=(\d+)\.ts$/,Fe=`__wren-page-scripts.mjs`,J=`\0${h}`,Ie=(e,t)=>{let n=O(C(e,t));return n.startsWith(`../`)||x(n)?`@fs/${O(t).replace(/^\//,``)}`:n},Le=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:`${z(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:z(i.id)}},Re=async(e,t,n)=>{let r=await A(t,`utf8`),i=Ne(r,t).scripts.find(e=>e.kind===`inline`&&e.index===n);return i?.kind===`inline`?{code:`
@@ -1 +1 @@
1
- import"./constants-DiYpQ2qF.mjs";var e=`0.17.0`;const t=`wrenjs`,n=e,r=`ROOT`,i=`PAGE`,a=`API`,o=`NOT_FOUND`,s=`LAYOUT`,c=`PROXY`,l=`___root`,u=`__layout`,d=`__not-found`,f=`__proxy`,p=`GET`,m=`DELETE`,h=`HEAD`,g=`OPTIONS`,_=`PATCH`,v=`POST`,y=`PUT`,b=[`GET`,m,h,g,_,v,`PUT`];export{c as _,g as a,n as b,y as c,f as d,l as f,i as g,o as h,h as i,u as l,s as m,m as n,_ as o,a as p,p as r,v as s,b as t,d as u,r as v,t as y};
1
+ import"./constants-DiYpQ2qF.mjs";var e=`0.18.0`;const t=`wrenjs`,n=e,r=`ROOT`,i=`PAGE`,a=`API`,o=`NOT_FOUND`,s=`LAYOUT`,c=`PROXY`,l=`___root`,u=`__layout`,d=`__not-found`,f=`__proxy`,p=`GET`,m=`DELETE`,h=`HEAD`,g=`OPTIONS`,_=`PATCH`,v=`POST`,y=`PUT`,b=[`GET`,m,h,g,_,v,`PUT`];export{c as _,g as a,n as b,y as c,f as d,l as f,i as g,o as h,h as i,u as l,s as m,m as n,_ as o,a as p,p as r,v as s,b as t,d as u,r as v,t as y};
@@ -1 +1 @@
1
- import{_ as e,a as t,b as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v,y}from"./constants-B3i9jJ2c.mjs";import{f as b}from"./constants-DiYpQ2qF.mjs";export{g as ENTRY_API_EXPORTS,d as ENTRY_FILEROUTE_API_EXPORT_DELETE,m as ENTRY_FILEROUTE_API_EXPORT_GET,c as ENTRY_FILEROUTE_API_EXPORT_HEAD,t as ENTRY_FILEROUTE_API_EXPORT_OPTIONS,f as ENTRY_FILEROUTE_API_EXPORT_PATCH,h as ENTRY_FILEROUTE_API_EXPORT_POST,r as ENTRY_FILEROUTE_API_EXPORT_PUT,l as ENTRY_FILEROUTE_LAYOUT,_ as ENTRY_FILEROUTE_NOT_FOUND,i as ENTRY_FILEROUTE_PROXY,a as ENTRY_FILEROUTE_ROOT,p as ENTRY_KIND_API,u as ENTRY_KIND_LAYOUT,s as ENTRY_KIND_NOT_FOUND,o as ENTRY_KIND_PAGE,e as ENTRY_KIND_PROXY,v as ENTRY_KIND_ROOT,b as ROUTE_MODULE_RE,y as WREN_NAME,n as WREN_VERSION};
1
+ import{_ as e,a as t,b as n,c as r,d as i,f as a,g as o,h as s,i as c,l,m as u,n as d,o as f,p,r as m,s as h,t as g,u as _,v,y}from"./constants-ClxQx8NE.mjs";import{f as b}from"./constants-DiYpQ2qF.mjs";export{g as ENTRY_API_EXPORTS,d as ENTRY_FILEROUTE_API_EXPORT_DELETE,m as ENTRY_FILEROUTE_API_EXPORT_GET,c as ENTRY_FILEROUTE_API_EXPORT_HEAD,t as ENTRY_FILEROUTE_API_EXPORT_OPTIONS,f as ENTRY_FILEROUTE_API_EXPORT_PATCH,h as ENTRY_FILEROUTE_API_EXPORT_POST,r as ENTRY_FILEROUTE_API_EXPORT_PUT,l as ENTRY_FILEROUTE_LAYOUT,_ as ENTRY_FILEROUTE_NOT_FOUND,i as ENTRY_FILEROUTE_PROXY,a as ENTRY_FILEROUTE_ROOT,p as ENTRY_KIND_API,u as ENTRY_KIND_LAYOUT,s as ENTRY_KIND_NOT_FOUND,o as ENTRY_KIND_PAGE,e as ENTRY_KIND_PROXY,v as ENTRY_KIND_ROOT,b as ROUTE_MODULE_RE,y as WREN_NAME,n as WREN_VERSION};
@@ -1 +1 @@
1
- import"../constants-B3i9jJ2c.mjs";import{t as e}from"../utils-DduvrkBB.mjs";function*t(e){e.e&&(yield e.e),e.w&&(yield e.w);for(let n of Object.values(e.s))yield*t(n);e.p&&(yield*t(e.p));for(let n of e.m??[])yield*t(n.node)}const n=async(e,t,n)=>{if(e.kind!==`PAGE`)return[];let r=await Promise.all([e.module(),...e.layouts?.map(e=>e())??[]]),i=r.find(({config:e})=>e?.prerender!==void 0);if(!n&&i?.config?.prerender!==!0)return[];if(!e.params?.length){if(!t)throw Error(`A static prerender route must have a pathname.`);return[t]}let[a]=r;if(!a.getStaticPaths)throw Error(`Prerendered route ${t} must export getStaticPaths().`);return a.getStaticPaths()},r=async(r,i=!1)=>{let{dynamicRoutes:a,staticRoutes:o={}}=r,s=await Promise.all([...Object.entries(o).map(([e,t])=>n(t,e,i)),...Array.from(t(a),e=>n(e,e.pattern,i))]);return[...new Set(s.flat().map(t=>e(t)))]};export{r as getPrerenderPaths};
1
+ import"../constants-ClxQx8NE.mjs";import{t as e}from"../utils-DduvrkBB.mjs";function*t(e){e.e&&(yield e.e),e.w&&(yield e.w);for(let n of Object.values(e.s))yield*t(n);e.p&&(yield*t(e.p));for(let n of e.m??[])yield*t(n.node)}const n=async(e,t,n)=>{if(e.kind!==`PAGE`)return[];let r=await Promise.all([e.module(),...e.layouts?.map(e=>e())??[]]),i=r.find(({config:e})=>e?.prerender!==void 0);if(!n&&i?.config?.prerender!==!0)return[];if(!e.params?.length){if(!t)throw Error(`A static prerender route must have a pathname.`);return[t]}let[a]=r;if(!a.getStaticPaths)throw Error(`Prerendered route ${t} must export getStaticPaths().`);return a.getStaticPaths()},r=async(r,i=!1)=>{let{dynamicRoutes:a,staticRoutes:o={}}=r,s=await Promise.all([...Object.entries(o).map(([e,t])=>n(t,e,i)),...Array.from(t(a),e=>n(e,e.pattern,i))]);return[...new Set(s.flat().map(t=>e(t)))]};export{r as getPrerenderPaths};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wren-js/core",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "description": "Framework agnostic utilities for the wrenjs meta-framework",
5
5
  "keywords": [
6
6
  "@wren-js/core",