@webtypen/webframez-react 0.0.33 → 0.0.35

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/client.cjs CHANGED
@@ -1 +1 @@
1
- var ae=Object.create;var y=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,ue=Object.prototype.hasOwnProperty;var le=(e,t)=>{for(var n in t)y(e,n,{get:t[n],enumerable:!0})},L=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ce(t))!ue.call(e,r)&&r!==n&&y(e,r,{get:()=>t[r],enumerable:!(o=se(t,r))||o.enumerable});return e};var H=(e,t,n)=>(n=e!=null?ae(de(e)):{},L(t||!e||!e.__esModule?y(n,"default",{value:e,enumerable:!0}):n,e)),fe=e=>L(y({},"__esModule",{value:!0}),e);var ve={};le(ve,{mountWebframezClient:()=>xe,useCookie:()=>ye,useRouter:()=>Ee});module.exports=fe(ve);var s=H(require("react"),1),Y=require("react-dom/client"),g=require("react-server-dom-webpack/client"),Z=require("@webtypen/webframez-react/route-slot");var pe=/^(?:[a-zA-Z][a-zA-Z\d+\-.]*:|\/\/|#)/;function u(e){if(typeof e!="string")return;let t=e.trim();return!t||t==="/"?"":t.replace(/\/+$/,"")}function U(e,t){let n=e.trim(),o=u(t);return!n||!o||pe.test(n)||n.startsWith("/")||o!=="/"&&(n===o||n.startsWith(`${o}/`))?n:o==="/"?n.startsWith("/")?n:`/${n}`:n.startsWith("/")?`${o}${n}`:`${o}/${n}`}function S(e,t){if(!e)return;let n=u(e.basename)??u(t),o=u(e.routeBasePath),r=u(e.transportBasePath),a={...e,...n!==void 0?{basename:n}:{},...o!==void 0?{routeBasePath:o}:{},...r!==void 0?{transportBasePath:r}:{}};return a.favicon&&(a.favicon=U(a.favicon,n)),a.links&&(a.links=a.links.map(c=>({...c,href:U(c.href,n)}))),a}var R=H(require("react"),1),$="webframez-route-children",W="__webframezRouteChildren",D="WebframezRouteChildren",N=()=>R.default.createElement($);N.displayName=D;N[W]=!0;var me=N;function z(e){if(e===$||e===me)return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;try{let t=e;return t[W]===!0||t.displayName===D||t.name==="RouteChildren"}catch{return!1}}function M(e){if(!e||typeof e!="object")return!1;try{return"type"in e&&"props"in e}catch{return!1}}function E(e,t){if(e==null||typeof e=="boolean")return e;if(Array.isArray(e)){let m=!1,f=e.map(p=>{let h=E(p,t);return h!==p&&(m=!0),h});return m?f:e}if(M(e)&&z(e.type))return t;let n=R.default.isValidElement(e);if(!n&&!M(e))return e;if(n&&z(e.type))return t;let o=e.props??{};if(!("children"in o))return e;let r=E(o.children,t);if(r===o.children)return e;if(n)return Array.isArray(r)?R.default.cloneElement(e,void 0,...r):R.default.cloneElement(e,void 0,r);let a=e,c={...a.props??{},children:r,...a.key!==void 0&&a.key!==null?{key:a.key}:{}};return R.default.createElement(a.type,c)}var d=require("react/jsx-runtime"),Re={push:()=>{},replace:()=>{},refresh:()=>{},refreshContext:()=>{}},A=typeof s.default.createContext=="function"?s.default.createContext(null):null,K="__WEBFRAMEZ_ROUTER__",ge="[data-webframez-head='true']";function v(e){return u(e)??""}function he(e,t){return t?e===t?"/":e.startsWith(`${t}/`)?e.slice(t.length)||"/":e||"/":e||"/"}function V(e,t){let n=!t||t==="/"?"/":t.startsWith("/")?t:`/${t}`;return e?n==="/"?e:`${e}${n}`:n}function _e(){return v(typeof window>"u"?globalThis.__RSC_ROUTE_BASE_PATH:window.__RSC_ROUTE_BASE_PATH)}function X(e){if(typeof window>"u")return e||"/";let t=v(window.__RSC_BASENAME),n=_e(),o=he(e||"/",t);return V(n,o)}function J(e){if(typeof window>"u")return e;let t=window.__RSC_ENDPOINT;return typeof t=="string"&&t.trim()!==""?t:e}function we(){return typeof window>"u"?null:window[K]??null}function Ce(e){typeof window>"u"||(window[K]=e)}function F(){let e={},t=typeof document>"u"?"":document.cookie;if(!t||t.trim()==="")return e;for(let n of t.split(";")){let o=n.trim();if(!o)continue;let r=o.indexOf("="),a=r>=0?o.slice(0,r).trim():o,c=r>=0?o.slice(r+1):"";a&&(e[a]=decodeURIComponent(c))}return e}function j(e,t,n={}){let o=[`${e}=${encodeURIComponent(t)}`];return n.path&&o.push(`Path=${n.path}`),n.domain&&o.push(`Domain=${n.domain}`),typeof n.maxAge=="number"&&o.push(`Max-Age=${Math.floor(n.maxAge)}`),n.expires&&o.push(`Expires=${n.expires.toUTCString()}`),n.sameSite&&o.push(`SameSite=${n.sameSite}`),n.secure&&o.push("Secure"),o.join("; ")}function ye(){return s.default.useMemo(()=>({all:()=>F(),get:e=>F()[e],set:(e,t,n)=>{typeof document>"u"||(document.cookie=j(e,t,n))},remove:(e,t)=>{typeof document>"u"||(document.cookie=j(e,"",{...t??{},maxAge:0}))}}),[])}function Ee(){let e=A?s.default.useContext(A):null;if(!e){let t=we();if(t)return t;if(typeof window>"u")return Re;throw new Error("useRouter must be used inside mountWebframezClient()")}return e}function Ae({active:e}){return(0,d.jsx)("div",{style:{position:"fixed",top:0,left:0,width:"100%",height:3,zIndex:9999,transformOrigin:"left",transform:e?"scaleX(1)":"scaleX(0)",transition:"transform 180ms ease",background:"linear-gradient(90deg, #0ea5e9, #22c55e)"}})}function G(e){let t=document.createElement("meta");t.setAttribute("data-webframez-head","true");let n=Object.entries(e).filter(([,o])=>!!o);for(let[o,r]of n)t.setAttribute(o,String(r));document.head.appendChild(t)}function q(e){let t=document.createElement("link");t.setAttribute("data-webframez-head","true");let n=Object.entries(e).filter(([,o])=>!!o);for(let[o,r]of n)t.setAttribute(o,String(r));document.head.appendChild(t)}function x(e){if(typeof document>"u")return;let t=S(e)??e;Q(t),document.title=t.title||"Webframez React";for(let n of document.head.querySelectorAll(ge))n.remove();t.description&&G({name:"description",content:t.description}),t.favicon&&q({rel:"icon",href:t.favicon});for(let n of t.meta??[])G(n);for(let n of t.links??[])q(n)}function Q(e){if(typeof window>"u")return;let t=S(e)??e,n=u(t.basename),o=u(t.routeBasePath),r=u(t.transportBasePath);window.__RSC_BASENAME=n??"",window.__RSC_ROUTE_BASE_PATH=o??"",r!==void 0&&(window.__RSC_ENDPOINT=V(r,"/rsc"))}function Pe(e){let t=new TextEncoder;return new ReadableStream({start(n){n.enqueue(t.encode(e)),n.close()}})}function Te(){if(typeof window>"u")return null;let e=window.__RSC_INITIAL_PAYLOAD;return typeof e!="string"||e===""?null:(delete window.__RSC_INITIAL_PAYLOAD,(0,g.createFromReadableStream)(Pe(e)))}function Se(e){let t=J(e),n=X(window.location.pathname);return Te()??(0,g.createFromFetch)(fetch(`${t}?path=${encodeURIComponent(n)}&search=${encodeURIComponent(window.location.search)}`,{cache:"no-store",credentials:"same-origin",headers:{Accept:"text/x-component"}}))}function Ne(e,t){return function(){let o=s.default.use(e),r=typeof o.contextModel<"u"&&typeof o.pageModel<"u",[a,c]=(0,s.useState)(o.model),[m,f]=(0,s.useState)(o.contextModel),[p,h]=(0,s.useState)(o.pageModel),[I,b]=(0,s.useState)(o.head),[ee,_]=(0,s.useState)(!1),[te,ne]=(0,s.useState)(!1),[oe,P]=(0,s.useState)(r);async function O(i){let C=J(t),l=X(i.pathname);return await(0,g.createFromFetch)(fetch(`${C}?path=${encodeURIComponent(l)}&search=${encodeURIComponent(i.search)}`,{cache:"no-store",credentials:"same-origin",headers:{Accept:"text/x-component"}}))}async function w(i,C="push"){_(!0);try{let l=await O(i);x(l.head),b(l.head),c(l.model),f(l.contextModel),h(l.pageModel),P(!0);let T=`${i.pathname}${i.search}`;C==="replace"?history.replaceState(null,"",T):C==="push"&&history.pushState(null,"",T)}catch(l){console.error("[webframez-react] Failed to render route",l),c((0,d.jsx)("p",{children:"Failed to load route."}))}finally{_(!1)}}async function re(){_(!0);try{let i=await O(new URL(window.location.href));if(x(i.head),b(i.head),Object.prototype.hasOwnProperty.call(i,"contextModel")){f(i.contextModel),P(!0);return}c(i.model),P(!1)}catch(i){console.error("[webframez-react] Failed to refresh route context",i)}finally{_(!1)}}(0,s.useEffect)(()=>{x(I)},[I]),(0,s.useEffect)(()=>{ne(!0);let i=()=>{w(new URL(window.location.href),"none")};return window.addEventListener("popstate",i),()=>{window.removeEventListener("popstate",i)}},[]);let k=s.default.useMemo(()=>({push:i=>{w(new URL(i,window.location.origin),"push")},replace:i=>{w(new URL(i,window.location.origin),"replace")},refresh:()=>{w(new URL(window.location.href),"none")},refreshContext:()=>{re()}}),[]);Ce(k);let ie=oe&&typeof p<"u"?m?(0,d.jsx)(Z.RouteChildrenSlotProvider,{page:p,children:E(m,p)}):p:a,B=(0,d.jsxs)(d.Fragment,{children:[te?(0,d.jsx)(Ae,{active:ee}):null,ie??(0,d.jsx)("p",{style:{padding:24},children:"Loading..."})]});return A?(0,d.jsx)(A.Provider,{value:k,children:B}):B}}function xe(e={}){let t=e.rootId??"root",n=document.getElementById(t);if(!n)throw new Error(`Missing #${t} element`);let o=typeof window<"u"&&window.__RSC_ENDPOINT,r=e.rscEndpoint??o??"/rsc",a=Promise.resolve(Se(r)).then(f=>(f?.head&&Q(f.head),f)),c=Ne(a,r);return(0,Y.hydrateRoot)(n,(0,d.jsx)(c,{}))}
1
+ var se=Object.create;var y=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var ue=Object.getPrototypeOf,le=Object.prototype.hasOwnProperty;var fe=(e,t)=>{for(var n in t)y(e,n,{get:t[n],enumerable:!0})},L=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of de(t))!le.call(e,r)&&r!==n&&y(e,r,{get:()=>t[r],enumerable:!(o=ce(t,r))||o.enumerable});return e};var H=(e,t,n)=>(n=e!=null?se(ue(e)):{},L(t||!e||!e.__esModule?y(n,"default",{value:e,enumerable:!0}):n,e)),pe=e=>L(y({},"__esModule",{value:!0}),e);var be={};fe(be,{mountWebframezClient:()=>ve,useCookie:()=>Ee,useRouter:()=>Ae});module.exports=pe(be);var s=H(require("react"),1),Z=require("react-dom/client"),g=require("react-server-dom-webpack/client"),K=require("@webtypen/webframez-react/route-slot");var me=/^(?:[a-zA-Z][a-zA-Z\d+\-.]*:|\/\/|#)/;function u(e){if(typeof e!="string")return;let t=e.trim();return!t||t==="/"?"":t.replace(/\/+$/,"")}function U(e,t){let n=e.trim(),o=u(t);return!n||!o||me.test(n)||n.startsWith("/")||o!=="/"&&(n===o||n.startsWith(`${o}/`))?n:o==="/"?n.startsWith("/")?n:`/${n}`:n.startsWith("/")?`${o}${n}`:`${o}/${n}`}function S(e,t){if(!e)return;let n=u(e.basename)??u(t),o=u(e.routeBasePath),r=u(e.transportBasePath),a={...e,...n!==void 0?{basename:n}:{},...o!==void 0?{routeBasePath:o}:{},...r!==void 0?{transportBasePath:r}:{}};return a.favicon&&(a.favicon=U(a.favicon,n)),a.links&&(a.links=a.links.map(c=>({...c,href:U(c.href,n)}))),a}var R=H(require("react"),1),$="webframez-route-children",W="__webframezRouteChildren",D="WebframezRouteChildren",N=()=>R.default.createElement($);N.displayName=D;N[W]=!0;var Re=N;function z(e){if(e===$||e===Re)return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;try{let t=e;return t[W]===!0||t.displayName===D||t.name==="RouteChildren"}catch{return!1}}function M(e){if(!e||typeof e!="object")return!1;try{return"type"in e&&"props"in e}catch{return!1}}function E(e,t){if(e==null||typeof e=="boolean")return e;if(Array.isArray(e)){let m=!1,f=e.map(p=>{let w=E(p,t);return w!==p&&(m=!0),w});return m?f:e}if(M(e)&&z(e.type))return t;let n=R.default.isValidElement(e);if(!n&&!M(e))return e;if(n&&z(e.type))return t;let o=e.props??{};if(!("children"in o))return e;let r=E(o.children,t);if(r===o.children)return e;if(n)return Array.isArray(r)?R.default.cloneElement(e,void 0,...r):R.default.cloneElement(e,void 0,r);let a=e,c={...a.props??{},children:r,...a.key!==void 0&&a.key!==null?{key:a.key}:{}};return R.default.createElement(a.type,c)}var d=require("react/jsx-runtime"),ge={push:()=>{},replace:()=>{},refresh:()=>{},refreshContext:()=>{}},A=typeof s.default.createContext=="function"?s.default.createContext(null):null,V="__WEBFRAMEZ_ROUTER__",we="[data-webframez-head='true']";function F(){if(typeof window>"u"||typeof document>"u")return;let e=()=>{window.scrollTo({top:0,left:0}),document.scrollingElement&&(document.scrollingElement.scrollTop=0),document.documentElement.scrollTop=0,document.body&&(document.body.scrollTop=0)};if(typeof window.requestAnimationFrame=="function"){window.requestAnimationFrame(e);return}window.setTimeout(e,0)}function v(e){return u(e)??""}function he(e,t){return t?e===t?"/":e.startsWith(`${t}/`)?e.slice(t.length)||"/":e||"/":e||"/"}function X(e,t){let n=!t||t==="/"?"/":t.startsWith("/")?t:`/${t}`;return e?n==="/"?e:`${e}${n}`:n}function _e(){return v(typeof window>"u"?globalThis.__RSC_ROUTE_BASE_PATH:window.__RSC_ROUTE_BASE_PATH)}function J(e){if(typeof window>"u")return e||"/";let t=v(window.__RSC_BASENAME),n=_e(),o=he(e||"/",t);return X(n,o)}function Q(e){if(typeof window>"u")return e;let t=window.__RSC_ENDPOINT;return typeof t=="string"&&t.trim()!==""?t:e}function Ce(){return typeof window>"u"?null:window[V]??null}function ye(e){typeof window>"u"||(window[V]=e)}function j(){let e={},t=typeof document>"u"?"":document.cookie;if(!t||t.trim()==="")return e;for(let n of t.split(";")){let o=n.trim();if(!o)continue;let r=o.indexOf("="),a=r>=0?o.slice(0,r).trim():o,c=r>=0?o.slice(r+1):"";a&&(e[a]=decodeURIComponent(c))}return e}function q(e,t,n={}){let o=[`${e}=${encodeURIComponent(t)}`];return n.path&&o.push(`Path=${n.path}`),n.domain&&o.push(`Domain=${n.domain}`),typeof n.maxAge=="number"&&o.push(`Max-Age=${Math.floor(n.maxAge)}`),n.expires&&o.push(`Expires=${n.expires.toUTCString()}`),n.sameSite&&o.push(`SameSite=${n.sameSite}`),n.secure&&o.push("Secure"),o.join("; ")}function Ee(){return s.default.useMemo(()=>({all:()=>j(),get:e=>j()[e],set:(e,t,n)=>{typeof document>"u"||(document.cookie=q(e,t,n))},remove:(e,t)=>{typeof document>"u"||(document.cookie=q(e,"",{...t??{},maxAge:0}))}}),[])}function Ae(){let e=A?s.default.useContext(A):null;if(!e){let t=Ce();if(t)return t;if(typeof window>"u")return ge;throw new Error("useRouter must be used inside mountWebframezClient()")}return e}function Te({active:e}){return(0,d.jsx)("div",{style:{position:"fixed",top:0,left:0,width:"100%",height:3,zIndex:9999,transformOrigin:"left",transform:e?"scaleX(1)":"scaleX(0)",transition:"transform 180ms ease",background:"linear-gradient(90deg, #0ea5e9, #22c55e)"}})}function G(e){let t=document.createElement("meta");t.setAttribute("data-webframez-head","true");let n=Object.entries(e).filter(([,o])=>!!o);for(let[o,r]of n)t.setAttribute(o,String(r));document.head.appendChild(t)}function Y(e){let t=document.createElement("link");t.setAttribute("data-webframez-head","true");let n=Object.entries(e).filter(([,o])=>!!o);for(let[o,r]of n)t.setAttribute(o,String(r));document.head.appendChild(t)}function x(e){if(typeof document>"u")return;let t=S(e)??e;ee(t),document.title=t.title||"Webframez React";for(let n of document.head.querySelectorAll(we))n.remove();t.description&&G({name:"description",content:t.description}),t.favicon&&Y({rel:"icon",href:t.favicon});for(let n of t.meta??[])G(n);for(let n of t.links??[])Y(n)}function ee(e){if(typeof window>"u")return;let t=S(e)??e,n=u(t.basename),o=u(t.routeBasePath),r=u(t.transportBasePath);window.__RSC_BASENAME=n??"",window.__RSC_ROUTE_BASE_PATH=o??"",r!==void 0&&(window.__RSC_ENDPOINT=X(r,"/rsc"))}function Pe(e){let t=new TextEncoder;return new ReadableStream({start(n){n.enqueue(t.encode(e)),n.close()}})}function Se(){if(typeof window>"u")return null;let e=window.__RSC_INITIAL_PAYLOAD;return typeof e!="string"||e===""?null:(delete window.__RSC_INITIAL_PAYLOAD,(0,g.createFromReadableStream)(Pe(e)))}function Ne(e){let t=Q(e),n=J(window.location.pathname);return Se()??(0,g.createFromFetch)(fetch(`${t}?path=${encodeURIComponent(n)}&search=${encodeURIComponent(window.location.search)}`,{cache:"no-store",credentials:"same-origin",headers:{Accept:"text/x-component"}}))}function xe(e,t){return function(){let o=s.default.use(e),r=typeof o.contextModel<"u"&&typeof o.pageModel<"u",[a,c]=(0,s.useState)(o.model),[m,f]=(0,s.useState)(o.contextModel),[p,w]=(0,s.useState)(o.pageModel),[b,I]=(0,s.useState)(o.head),[te,h]=(0,s.useState)(!1),[ne,oe]=(0,s.useState)(!1),[re,T]=(0,s.useState)(r);async function O(i){let C=Q(t),l=J(i.pathname);return await(0,g.createFromFetch)(fetch(`${C}?path=${encodeURIComponent(l)}&search=${encodeURIComponent(i.search)}`,{cache:"no-store",credentials:"same-origin",headers:{Accept:"text/x-component"}}))}async function _(i,C="push"){h(!0);try{let l=await O(i);x(l.head),I(l.head),c(l.model),f(l.contextModel),w(l.pageModel),T(!0);let P=`${i.pathname}${i.search}`;C==="replace"?(history.replaceState(null,"",P),F()):C==="push"&&(history.pushState(null,"",P),F())}catch(l){console.error("[webframez-react] Failed to render route",l),c((0,d.jsx)("p",{children:"Failed to load route."}))}finally{h(!1)}}async function ie(){h(!0);try{let i=await O(new URL(window.location.href));if(x(i.head),I(i.head),Object.prototype.hasOwnProperty.call(i,"contextModel")){f(i.contextModel),T(!0);return}c(i.model),T(!1)}catch(i){console.error("[webframez-react] Failed to refresh route context",i)}finally{h(!1)}}(0,s.useEffect)(()=>{x(b)},[b]),(0,s.useEffect)(()=>{oe(!0);let i=()=>{_(new URL(window.location.href),"none")};return window.addEventListener("popstate",i),()=>{window.removeEventListener("popstate",i)}},[]);let k=s.default.useMemo(()=>({push:i=>{_(new URL(i,window.location.origin),"push")},replace:i=>{_(new URL(i,window.location.origin),"replace")},refresh:()=>{_(new URL(window.location.href),"none")},refreshContext:()=>{ie()}}),[]);ye(k);let ae=re&&typeof p<"u"?m?(0,d.jsx)(K.RouteChildrenSlotProvider,{page:p,children:E(m,p)}):p:a,B=(0,d.jsxs)(d.Fragment,{children:[ne?(0,d.jsx)(Te,{active:te}):null,ae??(0,d.jsx)("p",{style:{padding:24},children:"Loading..."})]});return A?(0,d.jsx)(A.Provider,{value:k,children:B}):B}}function ve(e={}){let t=e.rootId??"root",n=document.getElementById(t);if(!n)throw new Error(`Missing #${t} element`);let o=typeof window<"u"&&window.__RSC_ENDPOINT,r=e.rscEndpoint??o??"/rsc",a=Promise.resolve(Ne(r)).then(f=>(f?.head&&ee(f.head),f)),c=xe(a,r);return(0,Z.hydrateRoot)(n,(0,d.jsx)(c,{}))}
package/dist/client.js CHANGED
@@ -1 +1 @@
1
- import R,{useEffect as $,useState as f}from"react";import{hydrateRoot as ie}from"react-dom/client";import{createFromFetch as G,createFromReadableStream as ae}from"react-server-dom-webpack/client";import{RouteChildrenSlotProvider as se}from"@webtypen/webframez-react/route-slot";var oe=/^(?:[a-zA-Z][a-zA-Z\d+\-.]*:|\/\/|#)/;function c(e){if(typeof e!="string")return;let t=e.trim();return!t||t==="/"?"":t.replace(/\/+$/,"")}function B(e,t){let n=e.trim(),o=c(t);return!n||!o||oe.test(n)||n.startsWith("/")||o!=="/"&&(n===o||n.startsWith(`${o}/`))?n:o==="/"?n.startsWith("/")?n:`/${n}`:n.startsWith("/")?`${o}${n}`:`${o}/${n}`}function T(e,t){if(!e)return;let n=c(e.basename)??c(t),o=c(e.routeBasePath),r=c(e.transportBasePath),a={...e,...n!==void 0?{basename:n}:{},...o!==void 0?{routeBasePath:o}:{},...r!==void 0?{transportBasePath:r}:{}};return a.favicon&&(a.favicon=B(a.favicon,n)),a.links&&(a.links=a.links.map(s=>({...s,href:B(s.href,n)}))),a}import g from"react";var U="webframez-route-children",z="__webframezRouteChildren",M="WebframezRouteChildren",S=()=>g.createElement(U);S.displayName=M;S[z]=!0;var re=S;function L(e){if(e===U||e===re)return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;try{let t=e;return t[z]===!0||t.displayName===M||t.name==="RouteChildren"}catch{return!1}}function H(e){if(!e||typeof e!="object")return!1;try{return"type"in e&&"props"in e}catch{return!1}}function y(e,t){if(e==null||typeof e=="boolean")return e;if(Array.isArray(e)){let m=!1,u=e.map(l=>{let h=y(l,t);return h!==l&&(m=!0),h});return m?u:e}if(H(e)&&L(e.type))return t;let n=g.isValidElement(e);if(!n&&!H(e))return e;if(n&&L(e.type))return t;let o=e.props??{};if(!("children"in o))return e;let r=y(o.children,t);if(r===o.children)return e;if(n)return Array.isArray(r)?g.cloneElement(e,void 0,...r):g.cloneElement(e,void 0,r);let a=e,s={...a.props??{},children:r,...a.key!==void 0&&a.key!==null?{key:a.key}:{}};return g.createElement(a.type,s)}import{Fragment as we,jsx as p,jsxs as Ce}from"react/jsx-runtime";var ce={push:()=>{},replace:()=>{},refresh:()=>{},refreshContext:()=>{}},E=typeof R.createContext=="function"?R.createContext(null):null,q="__WEBFRAMEZ_ROUTER__",de="[data-webframez-head='true']";function x(e){return c(e)??""}function ue(e,t){return t?e===t?"/":e.startsWith(`${t}/`)?e.slice(t.length)||"/":e||"/":e||"/"}function Y(e,t){let n=!t||t==="/"?"/":t.startsWith("/")?t:`/${t}`;return e?n==="/"?e:`${e}${n}`:n}function le(){return x(typeof window>"u"?globalThis.__RSC_ROUTE_BASE_PATH:window.__RSC_ROUTE_BASE_PATH)}function Z(e){if(typeof window>"u")return e||"/";let t=x(window.__RSC_BASENAME),n=le(),o=ue(e||"/",t);return Y(n,o)}function K(e){if(typeof window>"u")return e;let t=window.__RSC_ENDPOINT;return typeof t=="string"&&t.trim()!==""?t:e}function fe(){return typeof window>"u"?null:window[q]??null}function pe(e){typeof window>"u"||(window[q]=e)}function W(){let e={},t=typeof document>"u"?"":document.cookie;if(!t||t.trim()==="")return e;for(let n of t.split(";")){let o=n.trim();if(!o)continue;let r=o.indexOf("="),a=r>=0?o.slice(0,r).trim():o,s=r>=0?o.slice(r+1):"";a&&(e[a]=decodeURIComponent(s))}return e}function D(e,t,n={}){let o=[`${e}=${encodeURIComponent(t)}`];return n.path&&o.push(`Path=${n.path}`),n.domain&&o.push(`Domain=${n.domain}`),typeof n.maxAge=="number"&&o.push(`Max-Age=${Math.floor(n.maxAge)}`),n.expires&&o.push(`Expires=${n.expires.toUTCString()}`),n.sameSite&&o.push(`SameSite=${n.sameSite}`),n.secure&&o.push("Secure"),o.join("; ")}function Ie(){return R.useMemo(()=>({all:()=>W(),get:e=>W()[e],set:(e,t,n)=>{typeof document>"u"||(document.cookie=D(e,t,n))},remove:(e,t)=>{typeof document>"u"||(document.cookie=D(e,"",{...t??{},maxAge:0}))}}),[])}function be(){let e=E?R.useContext(E):null;if(!e){let t=fe();if(t)return t;if(typeof window>"u")return ce;throw new Error("useRouter must be used inside mountWebframezClient()")}return e}function me({active:e}){return p("div",{style:{position:"fixed",top:0,left:0,width:"100%",height:3,zIndex:9999,transformOrigin:"left",transform:e?"scaleX(1)":"scaleX(0)",transition:"transform 180ms ease",background:"linear-gradient(90deg, #0ea5e9, #22c55e)"}})}function F(e){let t=document.createElement("meta");t.setAttribute("data-webframez-head","true");let n=Object.entries(e).filter(([,o])=>!!o);for(let[o,r]of n)t.setAttribute(o,String(r));document.head.appendChild(t)}function j(e){let t=document.createElement("link");t.setAttribute("data-webframez-head","true");let n=Object.entries(e).filter(([,o])=>!!o);for(let[o,r]of n)t.setAttribute(o,String(r));document.head.appendChild(t)}function N(e){if(typeof document>"u")return;let t=T(e)??e;V(t),document.title=t.title||"Webframez React";for(let n of document.head.querySelectorAll(de))n.remove();t.description&&F({name:"description",content:t.description}),t.favicon&&j({rel:"icon",href:t.favicon});for(let n of t.meta??[])F(n);for(let n of t.links??[])j(n)}function V(e){if(typeof window>"u")return;let t=T(e)??e,n=c(t.basename),o=c(t.routeBasePath),r=c(t.transportBasePath);window.__RSC_BASENAME=n??"",window.__RSC_ROUTE_BASE_PATH=o??"",r!==void 0&&(window.__RSC_ENDPOINT=Y(r,"/rsc"))}function Re(e){let t=new TextEncoder;return new ReadableStream({start(n){n.enqueue(t.encode(e)),n.close()}})}function ge(){if(typeof window>"u")return null;let e=window.__RSC_INITIAL_PAYLOAD;return typeof e!="string"||e===""?null:(delete window.__RSC_INITIAL_PAYLOAD,ae(Re(e)))}function he(e){let t=K(e),n=Z(window.location.pathname);return ge()??G(fetch(`${t}?path=${encodeURIComponent(n)}&search=${encodeURIComponent(window.location.search)}`,{cache:"no-store",credentials:"same-origin",headers:{Accept:"text/x-component"}}))}function _e(e,t){return function(){let o=R.use(e),r=typeof o.contextModel<"u"&&typeof o.pageModel<"u",[a,s]=f(o.model),[m,u]=f(o.contextModel),[l,h]=f(o.pageModel),[v,I]=f(o.head),[X,_]=f(!1),[J,Q]=f(!1),[ee,A]=f(r);async function b(i){let C=K(t),d=Z(i.pathname);return await G(fetch(`${C}?path=${encodeURIComponent(d)}&search=${encodeURIComponent(i.search)}`,{cache:"no-store",credentials:"same-origin",headers:{Accept:"text/x-component"}}))}async function w(i,C="push"){_(!0);try{let d=await b(i);N(d.head),I(d.head),s(d.model),u(d.contextModel),h(d.pageModel),A(!0);let P=`${i.pathname}${i.search}`;C==="replace"?history.replaceState(null,"",P):C==="push"&&history.pushState(null,"",P)}catch(d){console.error("[webframez-react] Failed to render route",d),s(p("p",{children:"Failed to load route."}))}finally{_(!1)}}async function te(){_(!0);try{let i=await b(new URL(window.location.href));if(N(i.head),I(i.head),Object.prototype.hasOwnProperty.call(i,"contextModel")){u(i.contextModel),A(!0);return}s(i.model),A(!1)}catch(i){console.error("[webframez-react] Failed to refresh route context",i)}finally{_(!1)}}$(()=>{N(v)},[v]),$(()=>{Q(!0);let i=()=>{w(new URL(window.location.href),"none")};return window.addEventListener("popstate",i),()=>{window.removeEventListener("popstate",i)}},[]);let O=R.useMemo(()=>({push:i=>{w(new URL(i,window.location.origin),"push")},replace:i=>{w(new URL(i,window.location.origin),"replace")},refresh:()=>{w(new URL(window.location.href),"none")},refreshContext:()=>{te()}}),[]);pe(O);let ne=ee&&typeof l<"u"?m?p(se,{page:l,children:y(m,l)}):l:a,k=Ce(we,{children:[J?p(me,{active:X}):null,ne??p("p",{style:{padding:24},children:"Loading..."})]});return E?p(E.Provider,{value:O,children:k}):k}}function Oe(e={}){let t=e.rootId??"root",n=document.getElementById(t);if(!n)throw new Error(`Missing #${t} element`);let o=typeof window<"u"&&window.__RSC_ENDPOINT,r=e.rscEndpoint??o??"/rsc",a=Promise.resolve(he(r)).then(u=>(u?.head&&V(u.head),u)),s=_e(a,r);return ie(n,p(s,{}))}export{Oe as mountWebframezClient,Ie as useCookie,be as useRouter};
1
+ import R,{useEffect as $,useState as f}from"react";import{hydrateRoot as ae}from"react-dom/client";import{createFromFetch as G,createFromReadableStream as se}from"react-server-dom-webpack/client";import{RouteChildrenSlotProvider as ce}from"@webtypen/webframez-react/route-slot";var re=/^(?:[a-zA-Z][a-zA-Z\d+\-.]*:|\/\/|#)/;function c(e){if(typeof e!="string")return;let t=e.trim();return!t||t==="/"?"":t.replace(/\/+$/,"")}function B(e,t){let n=e.trim(),o=c(t);return!n||!o||re.test(n)||n.startsWith("/")||o!=="/"&&(n===o||n.startsWith(`${o}/`))?n:o==="/"?n.startsWith("/")?n:`/${n}`:n.startsWith("/")?`${o}${n}`:`${o}/${n}`}function P(e,t){if(!e)return;let n=c(e.basename)??c(t),o=c(e.routeBasePath),r=c(e.transportBasePath),a={...e,...n!==void 0?{basename:n}:{},...o!==void 0?{routeBasePath:o}:{},...r!==void 0?{transportBasePath:r}:{}};return a.favicon&&(a.favicon=B(a.favicon,n)),a.links&&(a.links=a.links.map(s=>({...s,href:B(s.href,n)}))),a}import g from"react";var U="webframez-route-children",z="__webframezRouteChildren",M="WebframezRouteChildren",S=()=>g.createElement(U);S.displayName=M;S[z]=!0;var ie=S;function L(e){if(e===U||e===ie)return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;try{let t=e;return t[z]===!0||t.displayName===M||t.name==="RouteChildren"}catch{return!1}}function H(e){if(!e||typeof e!="object")return!1;try{return"type"in e&&"props"in e}catch{return!1}}function y(e,t){if(e==null||typeof e=="boolean")return e;if(Array.isArray(e)){let m=!1,u=e.map(l=>{let w=y(l,t);return w!==l&&(m=!0),w});return m?u:e}if(H(e)&&L(e.type))return t;let n=g.isValidElement(e);if(!n&&!H(e))return e;if(n&&L(e.type))return t;let o=e.props??{};if(!("children"in o))return e;let r=y(o.children,t);if(r===o.children)return e;if(n)return Array.isArray(r)?g.cloneElement(e,void 0,...r):g.cloneElement(e,void 0,r);let a=e,s={...a.props??{},children:r,...a.key!==void 0&&a.key!==null?{key:a.key}:{}};return g.createElement(a.type,s)}import{Fragment as Ce,jsx as p,jsxs as ye}from"react/jsx-runtime";var de={push:()=>{},replace:()=>{},refresh:()=>{},refreshContext:()=>{}},E=typeof R.createContext=="function"?R.createContext(null):null,Y="__WEBFRAMEZ_ROUTER__",ue="[data-webframez-head='true']";function W(){if(typeof window>"u"||typeof document>"u")return;let e=()=>{window.scrollTo({top:0,left:0}),document.scrollingElement&&(document.scrollingElement.scrollTop=0),document.documentElement.scrollTop=0,document.body&&(document.body.scrollTop=0)};if(typeof window.requestAnimationFrame=="function"){window.requestAnimationFrame(e);return}window.setTimeout(e,0)}function x(e){return c(e)??""}function le(e,t){return t?e===t?"/":e.startsWith(`${t}/`)?e.slice(t.length)||"/":e||"/":e||"/"}function Z(e,t){let n=!t||t==="/"?"/":t.startsWith("/")?t:`/${t}`;return e?n==="/"?e:`${e}${n}`:n}function fe(){return x(typeof window>"u"?globalThis.__RSC_ROUTE_BASE_PATH:window.__RSC_ROUTE_BASE_PATH)}function K(e){if(typeof window>"u")return e||"/";let t=x(window.__RSC_BASENAME),n=fe(),o=le(e||"/",t);return Z(n,o)}function V(e){if(typeof window>"u")return e;let t=window.__RSC_ENDPOINT;return typeof t=="string"&&t.trim()!==""?t:e}function pe(){return typeof window>"u"?null:window[Y]??null}function me(e){typeof window>"u"||(window[Y]=e)}function D(){let e={},t=typeof document>"u"?"":document.cookie;if(!t||t.trim()==="")return e;for(let n of t.split(";")){let o=n.trim();if(!o)continue;let r=o.indexOf("="),a=r>=0?o.slice(0,r).trim():o,s=r>=0?o.slice(r+1):"";a&&(e[a]=decodeURIComponent(s))}return e}function F(e,t,n={}){let o=[`${e}=${encodeURIComponent(t)}`];return n.path&&o.push(`Path=${n.path}`),n.domain&&o.push(`Domain=${n.domain}`),typeof n.maxAge=="number"&&o.push(`Max-Age=${Math.floor(n.maxAge)}`),n.expires&&o.push(`Expires=${n.expires.toUTCString()}`),n.sameSite&&o.push(`SameSite=${n.sameSite}`),n.secure&&o.push("Secure"),o.join("; ")}function Ie(){return R.useMemo(()=>({all:()=>D(),get:e=>D()[e],set:(e,t,n)=>{typeof document>"u"||(document.cookie=F(e,t,n))},remove:(e,t)=>{typeof document>"u"||(document.cookie=F(e,"",{...t??{},maxAge:0}))}}),[])}function Oe(){let e=E?R.useContext(E):null;if(!e){let t=pe();if(t)return t;if(typeof window>"u")return de;throw new Error("useRouter must be used inside mountWebframezClient()")}return e}function Re({active:e}){return p("div",{style:{position:"fixed",top:0,left:0,width:"100%",height:3,zIndex:9999,transformOrigin:"left",transform:e?"scaleX(1)":"scaleX(0)",transition:"transform 180ms ease",background:"linear-gradient(90deg, #0ea5e9, #22c55e)"}})}function j(e){let t=document.createElement("meta");t.setAttribute("data-webframez-head","true");let n=Object.entries(e).filter(([,o])=>!!o);for(let[o,r]of n)t.setAttribute(o,String(r));document.head.appendChild(t)}function q(e){let t=document.createElement("link");t.setAttribute("data-webframez-head","true");let n=Object.entries(e).filter(([,o])=>!!o);for(let[o,r]of n)t.setAttribute(o,String(r));document.head.appendChild(t)}function N(e){if(typeof document>"u")return;let t=P(e)??e;X(t),document.title=t.title||"Webframez React";for(let n of document.head.querySelectorAll(ue))n.remove();t.description&&j({name:"description",content:t.description}),t.favicon&&q({rel:"icon",href:t.favicon});for(let n of t.meta??[])j(n);for(let n of t.links??[])q(n)}function X(e){if(typeof window>"u")return;let t=P(e)??e,n=c(t.basename),o=c(t.routeBasePath),r=c(t.transportBasePath);window.__RSC_BASENAME=n??"",window.__RSC_ROUTE_BASE_PATH=o??"",r!==void 0&&(window.__RSC_ENDPOINT=Z(r,"/rsc"))}function ge(e){let t=new TextEncoder;return new ReadableStream({start(n){n.enqueue(t.encode(e)),n.close()}})}function we(){if(typeof window>"u")return null;let e=window.__RSC_INITIAL_PAYLOAD;return typeof e!="string"||e===""?null:(delete window.__RSC_INITIAL_PAYLOAD,se(ge(e)))}function he(e){let t=V(e),n=K(window.location.pathname);return we()??G(fetch(`${t}?path=${encodeURIComponent(n)}&search=${encodeURIComponent(window.location.search)}`,{cache:"no-store",credentials:"same-origin",headers:{Accept:"text/x-component"}}))}function _e(e,t){return function(){let o=R.use(e),r=typeof o.contextModel<"u"&&typeof o.pageModel<"u",[a,s]=f(o.model),[m,u]=f(o.contextModel),[l,w]=f(o.pageModel),[v,b]=f(o.head),[J,h]=f(!1),[Q,ee]=f(!1),[te,A]=f(r);async function I(i){let C=V(t),d=K(i.pathname);return await G(fetch(`${C}?path=${encodeURIComponent(d)}&search=${encodeURIComponent(i.search)}`,{cache:"no-store",credentials:"same-origin",headers:{Accept:"text/x-component"}}))}async function _(i,C="push"){h(!0);try{let d=await I(i);N(d.head),b(d.head),s(d.model),u(d.contextModel),w(d.pageModel),A(!0);let T=`${i.pathname}${i.search}`;C==="replace"?(history.replaceState(null,"",T),W()):C==="push"&&(history.pushState(null,"",T),W())}catch(d){console.error("[webframez-react] Failed to render route",d),s(p("p",{children:"Failed to load route."}))}finally{h(!1)}}async function ne(){h(!0);try{let i=await I(new URL(window.location.href));if(N(i.head),b(i.head),Object.prototype.hasOwnProperty.call(i,"contextModel")){u(i.contextModel),A(!0);return}s(i.model),A(!1)}catch(i){console.error("[webframez-react] Failed to refresh route context",i)}finally{h(!1)}}$(()=>{N(v)},[v]),$(()=>{ee(!0);let i=()=>{_(new URL(window.location.href),"none")};return window.addEventListener("popstate",i),()=>{window.removeEventListener("popstate",i)}},[]);let O=R.useMemo(()=>({push:i=>{_(new URL(i,window.location.origin),"push")},replace:i=>{_(new URL(i,window.location.origin),"replace")},refresh:()=>{_(new URL(window.location.href),"none")},refreshContext:()=>{ne()}}),[]);me(O);let oe=te&&typeof l<"u"?m?p(ce,{page:l,children:y(m,l)}):l:a,k=ye(Ce,{children:[Q?p(Re,{active:J}):null,oe??p("p",{style:{padding:24},children:"Loading..."})]});return E?p(E.Provider,{value:O,children:k}):k}}function ke(e={}){let t=e.rootId??"root",n=document.getElementById(t);if(!n)throw new Error(`Missing #${t} element`);let o=typeof window<"u"&&window.__RSC_ENDPOINT,r=e.rscEndpoint??o??"/rsc",a=Promise.resolve(he(r)).then(u=>(u?.head&&X(u.head),u)),s=_e(a,r);return ae(n,p(s,{}))}export{ke as mountWebframezClient,Ie as useCookie,Oe as useRouter};
package/dist/http.cjs CHANGED
@@ -1299,16 +1299,16 @@ function createServerConsumerManifest(manifest) {
1299
1299
  }
1300
1300
  return requestKey;
1301
1301
  };
1302
- const addReference = (lookupKey, reference) => {
1302
+ const addReference = (lookupKey, exportName, reference) => {
1303
1303
  if (!lookupKey || lookupKey.trim() === "") {
1304
1304
  return;
1305
1305
  }
1306
- if (lookupKey in consumerManifest) {
1306
+ const normalizedExportName = exportName || "*";
1307
+ consumerManifest[lookupKey] ??= {};
1308
+ if (normalizedExportName in consumerManifest[lookupKey]) {
1307
1309
  return;
1308
1310
  }
1309
- consumerManifest[lookupKey] = {
1310
- "*": reference
1311
- };
1311
+ consumerManifest[lookupKey][normalizedExportName] = reference;
1312
1312
  };
1313
1313
  for (const [key, value] of Object.entries(manifest)) {
1314
1314
  if (!value || typeof value !== "object") {
@@ -1325,9 +1325,35 @@ function createServerConsumerManifest(manifest) {
1325
1325
  name: entry.name ?? "*",
1326
1326
  ...entry.async ? { async: entry.async } : {}
1327
1327
  };
1328
- addReference(key, reference);
1328
+ const hashIndex = key.lastIndexOf("#");
1329
+ const keyWithoutExport = hashIndex > -1 ? key.slice(0, hashIndex) : key;
1330
+ const keyExportName = hashIndex > -1 ? key.slice(hashIndex + 1) : "";
1331
+ const manifestExportName = typeof entry.name === "string" && entry.name !== "*" ? entry.name : "";
1332
+ const exportNames = new Set(
1333
+ [keyExportName, manifestExportName].filter((name) => name.trim() !== "")
1334
+ );
1335
+ addReference(
1336
+ key,
1337
+ "*",
1338
+ keyExportName ? { ...reference, name: keyExportName } : reference
1339
+ );
1340
+ addReference(keyWithoutExport, "*", reference);
1341
+ for (const exportName of exportNames) {
1342
+ const exportReference = {
1343
+ ...reference,
1344
+ name: exportName
1345
+ };
1346
+ addReference(keyWithoutExport, exportName, exportReference);
1347
+ addReference(key, "*", exportReference);
1348
+ }
1329
1349
  if (typeof entry.id === "number" && Number.isFinite(entry.id)) {
1330
- addReference(String(entry.id), reference);
1350
+ addReference(String(entry.id), "*", reference);
1351
+ for (const exportName of exportNames) {
1352
+ addReference(String(entry.id), exportName, {
1353
+ ...reference,
1354
+ name: exportName
1355
+ });
1356
+ }
1331
1357
  }
1332
1358
  }
1333
1359
  return consumerManifest;
package/dist/http.js CHANGED
@@ -1274,16 +1274,16 @@ function createServerConsumerManifest(manifest) {
1274
1274
  }
1275
1275
  return requestKey;
1276
1276
  };
1277
- const addReference = (lookupKey, reference) => {
1277
+ const addReference = (lookupKey, exportName, reference) => {
1278
1278
  if (!lookupKey || lookupKey.trim() === "") {
1279
1279
  return;
1280
1280
  }
1281
- if (lookupKey in consumerManifest) {
1281
+ const normalizedExportName = exportName || "*";
1282
+ consumerManifest[lookupKey] ??= {};
1283
+ if (normalizedExportName in consumerManifest[lookupKey]) {
1282
1284
  return;
1283
1285
  }
1284
- consumerManifest[lookupKey] = {
1285
- "*": reference
1286
- };
1286
+ consumerManifest[lookupKey][normalizedExportName] = reference;
1287
1287
  };
1288
1288
  for (const [key, value] of Object.entries(manifest)) {
1289
1289
  if (!value || typeof value !== "object") {
@@ -1300,9 +1300,35 @@ function createServerConsumerManifest(manifest) {
1300
1300
  name: entry.name ?? "*",
1301
1301
  ...entry.async ? { async: entry.async } : {}
1302
1302
  };
1303
- addReference(key, reference);
1303
+ const hashIndex = key.lastIndexOf("#");
1304
+ const keyWithoutExport = hashIndex > -1 ? key.slice(0, hashIndex) : key;
1305
+ const keyExportName = hashIndex > -1 ? key.slice(hashIndex + 1) : "";
1306
+ const manifestExportName = typeof entry.name === "string" && entry.name !== "*" ? entry.name : "";
1307
+ const exportNames = new Set(
1308
+ [keyExportName, manifestExportName].filter((name) => name.trim() !== "")
1309
+ );
1310
+ addReference(
1311
+ key,
1312
+ "*",
1313
+ keyExportName ? { ...reference, name: keyExportName } : reference
1314
+ );
1315
+ addReference(keyWithoutExport, "*", reference);
1316
+ for (const exportName of exportNames) {
1317
+ const exportReference = {
1318
+ ...reference,
1319
+ name: exportName
1320
+ };
1321
+ addReference(keyWithoutExport, exportName, exportReference);
1322
+ addReference(key, "*", exportReference);
1323
+ }
1304
1324
  if (typeof entry.id === "number" && Number.isFinite(entry.id)) {
1305
- addReference(String(entry.id), reference);
1325
+ addReference(String(entry.id), "*", reference);
1326
+ for (const exportName of exportNames) {
1327
+ addReference(String(entry.id), exportName, {
1328
+ ...reference,
1329
+ name: exportName
1330
+ });
1331
+ }
1306
1332
  }
1307
1333
  }
1308
1334
  return consumerManifest;
package/dist/index.cjs CHANGED
@@ -1336,16 +1336,16 @@ function createServerConsumerManifest(manifest) {
1336
1336
  }
1337
1337
  return requestKey;
1338
1338
  };
1339
- const addReference = (lookupKey, reference) => {
1339
+ const addReference = (lookupKey, exportName, reference) => {
1340
1340
  if (!lookupKey || lookupKey.trim() === "") {
1341
1341
  return;
1342
1342
  }
1343
- if (lookupKey in consumerManifest) {
1343
+ const normalizedExportName = exportName || "*";
1344
+ consumerManifest[lookupKey] ??= {};
1345
+ if (normalizedExportName in consumerManifest[lookupKey]) {
1344
1346
  return;
1345
1347
  }
1346
- consumerManifest[lookupKey] = {
1347
- "*": reference
1348
- };
1348
+ consumerManifest[lookupKey][normalizedExportName] = reference;
1349
1349
  };
1350
1350
  for (const [key, value] of Object.entries(manifest)) {
1351
1351
  if (!value || typeof value !== "object") {
@@ -1362,9 +1362,35 @@ function createServerConsumerManifest(manifest) {
1362
1362
  name: entry.name ?? "*",
1363
1363
  ...entry.async ? { async: entry.async } : {}
1364
1364
  };
1365
- addReference(key, reference);
1365
+ const hashIndex = key.lastIndexOf("#");
1366
+ const keyWithoutExport = hashIndex > -1 ? key.slice(0, hashIndex) : key;
1367
+ const keyExportName = hashIndex > -1 ? key.slice(hashIndex + 1) : "";
1368
+ const manifestExportName = typeof entry.name === "string" && entry.name !== "*" ? entry.name : "";
1369
+ const exportNames = new Set(
1370
+ [keyExportName, manifestExportName].filter((name) => name.trim() !== "")
1371
+ );
1372
+ addReference(
1373
+ key,
1374
+ "*",
1375
+ keyExportName ? { ...reference, name: keyExportName } : reference
1376
+ );
1377
+ addReference(keyWithoutExport, "*", reference);
1378
+ for (const exportName of exportNames) {
1379
+ const exportReference = {
1380
+ ...reference,
1381
+ name: exportName
1382
+ };
1383
+ addReference(keyWithoutExport, exportName, exportReference);
1384
+ addReference(key, "*", exportReference);
1385
+ }
1366
1386
  if (typeof entry.id === "number" && Number.isFinite(entry.id)) {
1367
- addReference(String(entry.id), reference);
1387
+ addReference(String(entry.id), "*", reference);
1388
+ for (const exportName of exportNames) {
1389
+ addReference(String(entry.id), exportName, {
1390
+ ...reference,
1391
+ name: exportName
1392
+ });
1393
+ }
1368
1394
  }
1369
1395
  }
1370
1396
  return consumerManifest;
package/dist/index.js CHANGED
@@ -1300,16 +1300,16 @@ function createServerConsumerManifest(manifest) {
1300
1300
  }
1301
1301
  return requestKey;
1302
1302
  };
1303
- const addReference = (lookupKey, reference) => {
1303
+ const addReference = (lookupKey, exportName, reference) => {
1304
1304
  if (!lookupKey || lookupKey.trim() === "") {
1305
1305
  return;
1306
1306
  }
1307
- if (lookupKey in consumerManifest) {
1307
+ const normalizedExportName = exportName || "*";
1308
+ consumerManifest[lookupKey] ??= {};
1309
+ if (normalizedExportName in consumerManifest[lookupKey]) {
1308
1310
  return;
1309
1311
  }
1310
- consumerManifest[lookupKey] = {
1311
- "*": reference
1312
- };
1312
+ consumerManifest[lookupKey][normalizedExportName] = reference;
1313
1313
  };
1314
1314
  for (const [key, value] of Object.entries(manifest)) {
1315
1315
  if (!value || typeof value !== "object") {
@@ -1326,9 +1326,35 @@ function createServerConsumerManifest(manifest) {
1326
1326
  name: entry.name ?? "*",
1327
1327
  ...entry.async ? { async: entry.async } : {}
1328
1328
  };
1329
- addReference(key, reference);
1329
+ const hashIndex = key.lastIndexOf("#");
1330
+ const keyWithoutExport = hashIndex > -1 ? key.slice(0, hashIndex) : key;
1331
+ const keyExportName = hashIndex > -1 ? key.slice(hashIndex + 1) : "";
1332
+ const manifestExportName = typeof entry.name === "string" && entry.name !== "*" ? entry.name : "";
1333
+ const exportNames = new Set(
1334
+ [keyExportName, manifestExportName].filter((name) => name.trim() !== "")
1335
+ );
1336
+ addReference(
1337
+ key,
1338
+ "*",
1339
+ keyExportName ? { ...reference, name: keyExportName } : reference
1340
+ );
1341
+ addReference(keyWithoutExport, "*", reference);
1342
+ for (const exportName of exportNames) {
1343
+ const exportReference = {
1344
+ ...reference,
1345
+ name: exportName
1346
+ };
1347
+ addReference(keyWithoutExport, exportName, exportReference);
1348
+ addReference(key, "*", exportReference);
1349
+ }
1330
1350
  if (typeof entry.id === "number" && Number.isFinite(entry.id)) {
1331
- addReference(String(entry.id), reference);
1351
+ addReference(String(entry.id), "*", reference);
1352
+ for (const exportName of exportNames) {
1353
+ addReference(String(entry.id), exportName, {
1354
+ ...reference,
1355
+ name: exportName
1356
+ });
1357
+ }
1332
1358
  }
1333
1359
  }
1334
1360
  return consumerManifest;
@@ -1302,16 +1302,16 @@ function createServerConsumerManifest(manifest) {
1302
1302
  }
1303
1303
  return requestKey;
1304
1304
  };
1305
- const addReference = (lookupKey, reference) => {
1305
+ const addReference = (lookupKey, exportName, reference) => {
1306
1306
  if (!lookupKey || lookupKey.trim() === "") {
1307
1307
  return;
1308
1308
  }
1309
- if (lookupKey in consumerManifest) {
1309
+ const normalizedExportName = exportName || "*";
1310
+ consumerManifest[lookupKey] ??= {};
1311
+ if (normalizedExportName in consumerManifest[lookupKey]) {
1310
1312
  return;
1311
1313
  }
1312
- consumerManifest[lookupKey] = {
1313
- "*": reference
1314
- };
1314
+ consumerManifest[lookupKey][normalizedExportName] = reference;
1315
1315
  };
1316
1316
  for (const [key, value] of Object.entries(manifest)) {
1317
1317
  if (!value || typeof value !== "object") {
@@ -1328,9 +1328,35 @@ function createServerConsumerManifest(manifest) {
1328
1328
  name: entry.name ?? "*",
1329
1329
  ...entry.async ? { async: entry.async } : {}
1330
1330
  };
1331
- addReference(key, reference);
1331
+ const hashIndex = key.lastIndexOf("#");
1332
+ const keyWithoutExport = hashIndex > -1 ? key.slice(0, hashIndex) : key;
1333
+ const keyExportName = hashIndex > -1 ? key.slice(hashIndex + 1) : "";
1334
+ const manifestExportName = typeof entry.name === "string" && entry.name !== "*" ? entry.name : "";
1335
+ const exportNames = new Set(
1336
+ [keyExportName, manifestExportName].filter((name) => name.trim() !== "")
1337
+ );
1338
+ addReference(
1339
+ key,
1340
+ "*",
1341
+ keyExportName ? { ...reference, name: keyExportName } : reference
1342
+ );
1343
+ addReference(keyWithoutExport, "*", reference);
1344
+ for (const exportName of exportNames) {
1345
+ const exportReference = {
1346
+ ...reference,
1347
+ name: exportName
1348
+ };
1349
+ addReference(keyWithoutExport, exportName, exportReference);
1350
+ addReference(key, "*", exportReference);
1351
+ }
1332
1352
  if (typeof entry.id === "number" && Number.isFinite(entry.id)) {
1333
- addReference(String(entry.id), reference);
1353
+ addReference(String(entry.id), "*", reference);
1354
+ for (const exportName of exportNames) {
1355
+ addReference(String(entry.id), exportName, {
1356
+ ...reference,
1357
+ name: exportName
1358
+ });
1359
+ }
1334
1360
  }
1335
1361
  }
1336
1362
  return consumerManifest;
@@ -1274,16 +1274,16 @@ function createServerConsumerManifest(manifest) {
1274
1274
  }
1275
1275
  return requestKey;
1276
1276
  };
1277
- const addReference = (lookupKey, reference) => {
1277
+ const addReference = (lookupKey, exportName, reference) => {
1278
1278
  if (!lookupKey || lookupKey.trim() === "") {
1279
1279
  return;
1280
1280
  }
1281
- if (lookupKey in consumerManifest) {
1281
+ const normalizedExportName = exportName || "*";
1282
+ consumerManifest[lookupKey] ??= {};
1283
+ if (normalizedExportName in consumerManifest[lookupKey]) {
1282
1284
  return;
1283
1285
  }
1284
- consumerManifest[lookupKey] = {
1285
- "*": reference
1286
- };
1286
+ consumerManifest[lookupKey][normalizedExportName] = reference;
1287
1287
  };
1288
1288
  for (const [key, value] of Object.entries(manifest)) {
1289
1289
  if (!value || typeof value !== "object") {
@@ -1300,9 +1300,35 @@ function createServerConsumerManifest(manifest) {
1300
1300
  name: entry.name ?? "*",
1301
1301
  ...entry.async ? { async: entry.async } : {}
1302
1302
  };
1303
- addReference(key, reference);
1303
+ const hashIndex = key.lastIndexOf("#");
1304
+ const keyWithoutExport = hashIndex > -1 ? key.slice(0, hashIndex) : key;
1305
+ const keyExportName = hashIndex > -1 ? key.slice(hashIndex + 1) : "";
1306
+ const manifestExportName = typeof entry.name === "string" && entry.name !== "*" ? entry.name : "";
1307
+ const exportNames = new Set(
1308
+ [keyExportName, manifestExportName].filter((name) => name.trim() !== "")
1309
+ );
1310
+ addReference(
1311
+ key,
1312
+ "*",
1313
+ keyExportName ? { ...reference, name: keyExportName } : reference
1314
+ );
1315
+ addReference(keyWithoutExport, "*", reference);
1316
+ for (const exportName of exportNames) {
1317
+ const exportReference = {
1318
+ ...reference,
1319
+ name: exportName
1320
+ };
1321
+ addReference(keyWithoutExport, exportName, exportReference);
1322
+ addReference(key, "*", exportReference);
1323
+ }
1304
1324
  if (typeof entry.id === "number" && Number.isFinite(entry.id)) {
1305
- addReference(String(entry.id), reference);
1325
+ addReference(String(entry.id), "*", reference);
1326
+ for (const exportName of exportNames) {
1327
+ addReference(String(entry.id), exportName, {
1328
+ ...reference,
1329
+ name: exportName
1330
+ });
1331
+ }
1306
1332
  }
1307
1333
  }
1308
1334
  return consumerManifest;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webtypen/webframez-react",
3
- "version": "0.0.33",
3
+ "version": "0.0.35",
4
4
  "description": "TypeScript React RSC addition for @webtypen/webframez-core",
5
5
  "homepage": "https://webtypen.de/",
6
6
  "author": {