rari 0.14.1 → 0.14.2

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.
Files changed (46) hide show
  1. package/dist/cli.mjs +1 -1
  2. package/dist/client.d.mts +5 -6
  3. package/dist/client.mjs +1 -1
  4. package/dist/{get-client-component-DOUGb2xc.mjs → get-client-component-B4Y2T40R.mjs} +1 -1
  5. package/dist/headers.d.mts +1 -1
  6. package/dist/image/index.mjs +1 -1
  7. package/dist/index.d.mts +3 -3
  8. package/dist/mdx.mjs +1 -1
  9. package/dist/{preload-modules-C1zd75Lc.mjs → preload-modules-xvnJ_8eh.mjs} +2 -2
  10. package/dist/proxy/RariRequest.d.mts +1 -1
  11. package/dist/proxy/RariResponse.d.mts +1 -1
  12. package/dist/{railway-BQNsu-l4.mjs → railway-bxKRJ0Cg.mjs} +1 -1
  13. package/dist/{render-DHDWCmpf.mjs → render-CXNCiz-E.mjs} +1 -1
  14. package/dist/router.d.mts +1 -3
  15. package/dist/router.mjs +1 -1
  16. package/dist/runtime/AppRouterProvider.d.mts +1 -2
  17. package/dist/runtime/AppRouterProvider.mjs +1 -1
  18. package/dist/runtime/ErrorBoundaryWrapper.mjs +1 -1
  19. package/dist/runtime/entry-client.mjs +2 -2
  20. package/dist/runtime/react-server-dom-shim.mjs +1 -1
  21. package/dist/runtime/rsc-client-runtime.d.mts +1 -1
  22. package/dist/runtime/rsc-client-runtime.mjs +1 -1
  23. package/dist/runtime/vendor/react-flight-client/ReactFlightClient.d.mts +1 -1
  24. package/dist/runtime/vendor/react-flight-client/ReactFlightClientConfig.d.mts +1 -1
  25. package/dist/runtime/vendor/react-flight-client/ReactFlightClientConfig.mjs +1 -1
  26. package/dist/{sitemap-generator-CB5dtfYm.mjs → sitemap-generator-BTG9lURQ.mjs} +1 -1
  27. package/dist/vite.d.mts +4 -4
  28. package/dist/vite.mjs +118 -17
  29. package/package.json +12 -12
  30. package/dist/rolldown-runtime-DR3Ue2cl.mjs +0 -1
  31. package/dist/routes-CTeHh8gJ.mjs +0 -1
  32. package/dist/server-build-z4tShJEq.mjs +0 -102
  33. /package/dist/{ReactFlightClientConfig-DdCyeIZx.d.mts → ReactFlightClientConfig-C_nD8rsi.d.mts} +0 -0
  34. /package/dist/{alias-resolver-D1GHg-4o.mjs → alias-resolver-BintHkb_.mjs} +0 -0
  35. /package/dist/{constants-B68HGlJT.mjs → constants-De7aSsCq.mjs} +0 -0
  36. /package/dist/{metadata-route-D0xSj7FK.d.mts → metadata-route-85WvBQcW.d.mts} +0 -0
  37. /package/dist/{navigate-hfIqe3MK.mjs → navigate-DuyUa6qD.mjs} +0 -0
  38. /package/dist/{regex-constants-iGdnDzFV.mjs → regex-constants-B4P386OY.mjs} +0 -0
  39. /package/dist/{robots-generator-Byiwomr5.mjs → robots-generator-l2O5neuR.mjs} +0 -0
  40. /package/dist/{runtime-client-CbbckLpl.mjs → runtime-client-DHeO6y_7.mjs} +0 -0
  41. /package/dist/{server-config-CGmxgSPb.d.mts → server-config-CwWYmtA0.d.mts} +0 -0
  42. /package/dist/{timer-utils-DnyOf3e6.mjs → timer-utils-Duul5JHq.mjs} +0 -0
  43. /package/dist/{types-DOgYNbON.d.mts → types-3dq9RGI5.d.mts} +0 -0
  44. /package/dist/{types-Bl4Eog4T.d.mts → types-m74grfbN.d.mts} +0 -0
  45. /package/dist/{types-R2tg78dF.d.mts → types-zPQ3RHgH.d.mts} +0 -0
  46. /package/dist/{utils-BK4N0qFr-BCy19luN.mjs → utils-BK4N0qFr-QFbF96eD.mjs} +0 -0
@@ -1,102 +0,0 @@
1
- import{t as e}from"./rolldown-runtime-DR3Ue2cl.mjs";import{o as t,r as n,v as r,y as i}from"./regex-constants-iGdnDzFV.mjs";import{t as a}from"./alias-resolver-D1GHg-4o.mjs";import o from"node:fs";import s from"node:path";import c from"node:process";import{pathToFileURL as l}from"node:url";import{build as u}from"rolldown";const d=new Set([`return`,`throw`,`case`,`typeof`,`instanceof`,`new`,`delete`,`void`,`in`,`of`]);function f(e){return e===` `||e===` `||e===`\r`||e===`
2
- `||e===`\u2028`||e===`\u2029`||e===``}function p(e){return e===`\r`||e===`
3
- `||e===`\u2028`||e===`\u2029`}function m(e,t,n){for(;t<n&&f(e[t]);)t++;return t}function h(e,t,n){for(;t<n;){let r=m(e,t,n);if(r!==t){t=r;continue}if(e[t]===`/`&&e[t+1]===`/`){t=g(e,t,n);continue}if(e[t]===`/`&&e[t+1]===`*`){t=_(e,t,n);continue}break}return t}function g(e,t,n){for(;t<n&&!p(e[t]);)t++;return t}function _(e,t,n){for(t+=2;t<n-1&&(e[t]!==`*`||e[t+1]!==`/`);)t++;return t+2}function v(e,t,n,r){for(t++;t<n;){if(e[t]===`\\`){t+=2;continue}if(e[t]===r)return t+1;t++}return t}function y(e,t,n){t++;let r=e[t]===`/`;for(r&&t++;t<n&&(C(e[t])||e[t]===`.`||e[t]===`-`);)t++;let i=+!r;for(;t<n&&i>0;){let a=e[t]===`'`||e[t]===`"`||e[t]==="`"?e[t]:null;if(a){t=v(e,t,n,a);continue}if(e[t]===`{`){t++;let r=1;for(;t<n&&r>0;){let i=e[t]===`'`||e[t]===`"`||e[t]==="`"?e[t]:null;if(i){t=v(e,t,n,i);continue}e[t]===`{`&&r++,e[t]===`}`&&r--,t++}continue}if(e[t]===`/`&&e[t+1]===`>`){i--,t+=2;continue}if(e[t]===`>`){t++,r&&i--;continue}if(e[t]===`<`){let r=e[t+1];if(r===`/`||r===`.`||r===`>`||w(r)){for(r===`/`?(i--,t++):r!==`!`&&i++,t++;t<n&&(C(e[t])||e[t]===`.`||e[t]===`-`);)t++;continue}t++;continue}t++}return t}function b(e,t){let n=0,r=e.length;for(;n<r;){if(f(e[n])){n++;continue}if(e[n]===`/`&&e[n+1]===`/`){n=g(e,n,r);continue}if(e[n]===`/`&&e[n+1]===`*`){n=_(e,n,r);continue}let i=e[n]===`'`||e[n]===`"`?e[n]:null;if(i){let a=n+1,o=v(e,n,r,i);if(o>a){let i=e.slice(a,o-1),s=o;for(;s<r;){if(f(e[s])&&!p(e[s])){s++;continue}if(p(e[s])||e[s]===`;`){if(i===t)return!0;n=s+1;break}if(e[s]===`/`&&e[s+1]===`/`){s=g(e,s,r);continue}if(e[s]===`/`&&e[s+1]===`*`){s=_(e,s,r);continue}return!1}if(s>=r)return i===t;if(s<r&&(p(e[s])||e[s]===`;`))continue;return!1}}return!1}return!1}function x(e){return b(e,`use server`)}function S(e){return b(e,`use client`)}function C(e){return!!e&&(e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e>=`0`&&e<=`9`||e===`_`||e===`$`)}function w(e){return!!e&&(e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`||e===`_`||e===`$`)}function T(e){return!e||e===`(`||e===`[`||e===`{`||e===`,`||e===`;`||e===`=`||e===`:`||e===`?`||e===`!`||e===`+`||e===`-`||e===`*`||e===`%`||e===`&`||e===`|`||e===`^`||e===`~`||e===`<`||e===`>`}function E(e,t){let n=t-1;for(;n>=0;){if(f(e[n])){n--;continue}if(n>=1&&e[n]===`/`&&e[n-1]===`*`){for(n-=2;n>=1;){if(e[n]===`*`&&e[n-1]===`/`){n-=2;break}n--}if(n<0)return;continue}if(n>=1&&e[n]===`/`&&e[n-1]===`/`){n-=2;continue}let t=n;for(;t>=0&&e[t]!==`
4
- `&&e[t]!==`\r`;)t--;let r=t+1;for(;r<n&&(e[r]===` `||e[r]===` `);)r++;if(r<n&&e[r]===`/`&&e[r+1]===`/`){n=r-1;continue}break}if(n<0||!C(e[n]))return;let r=n;for(;n>=0&&C(e[n]);)n--;return e.slice(n+1,r+1)}function D(e,t){if(T(k(e,t)))return!0;let n=E(e,t);return n?d.has(n):!1}function O(e,t,n){t++;let r=!1;for(;t<n;){if(e[t]===`\\`){t+=2;continue}if(r){e[t]===`]`&&(r=!1),t++;continue}if(e[t]===`[`){r=!0,t++;continue}if(e[t]===`/`){for(t++;t<n&&C(e[t]);)t++;return t}if(p(e[t]))return t;t++}return t}function k(e,t){let n=t-1;for(;n>=0;){if(f(e[n])){n--;continue}if(n>=1&&e[n]===`/`&&e[n-1]===`*`){for(n-=2;n>=1;){if(e[n]===`*`&&e[n-1]===`/`){n-=2;break}n--}if(n<0)return;continue}if(n>=1&&e[n]===`/`&&e[n-1]===`/`){n-=2;continue}let t=n;for(;t>=0&&e[t]!==`
5
- `&&e[t]!==`\r`;)t--;let r=t+1;for(;r<n&&(e[r]===` `||e[r]===` `);)r++;if(r<n&&e[r]===`/`&&e[r+1]===`/`){n=r-1;continue}return e[n]}}function A(e){let t=0,n=e.length;for(;t<n;){if(f(e[t])){t++;continue}if(e[t]===`/`&&e[t+1]===`/`){t=g(e,t,n);continue}if(e[t]===`/`&&e[t+1]===`*`){t=_(e,t,n);continue}let r=e[t]===`'`||e[t]===`"`||e[t]==="`"?e[t]:null;if(r){t=v(e,t,n,r);continue}if(e[t]===`/`&&e[t+1]!==`/`&&e[t+1]!==`*`&&D(e,t)){t=O(e,t,n);continue}if(e[t]===`<`){let r=e[t+1];if(r===`/`||r===`.`||r===`>`||w(r)){t=y(e,t,n);continue}t++;continue}if(e.slice(t,t+6)===`export`){let r=t+6;if(r<n&&(f(e[r])||e[r]===`{`||e[r]===`/`&&(e[r+1]===`/`||e[r+1]===`*`))){let t=h(e,r,n);if(e.slice(t,t+7)===`default`){let r=t+7;if(r>=n||!C(e[r]))return!0}if(e[t]===`{`){let r=t+1;for(;r<n&&(r=h(e,r,n),e[r]!==`}`);){let t=r;for(;r<n&&C(e[r]);)r++;let i=e.slice(t,r);if(!i)break;r=h(e,r,n);let a=!1;if(e.slice(r,r+2)===`as`){a=!0;let t=r+2;if(t<n&&!C(e[t])){r=h(e,t,n);let i=r;for(;r<n&&C(e[r]);)r++;if(e.slice(i,r)===`default`)return!0}}if(!a&&i===`default`)return!0;if(e[r]===`,`){r++;continue}if(e[r]===`}`)break;r++}}}}t++}return!1}function j(e,t){let n=null;for(let r of t)if(e.endsWith(r)&&(n??=o.existsSync(e),n))return e;for(let n of t){let t=`${e}${n}`;if(o.existsSync(t))return t}return null}function M(e,t){if(o.existsSync(e)){if(!o.statSync(e).isDirectory())return null;for(let n of t){let t=s.join(e,`index${n}`);if(o.existsSync(t))return t}}return null}var N=e({ServerComponentBuilder:()=>q,createServerBuildPlugin:()=>Y,scanDirectory:()=>J});const P=/import\s*\(\s*["']([^"']+)["']\s*\)|import\s+["']([^"']+)["']/g,F=/from\s+['"]([^'"]+)['"]|import\s*\(\s*['"]([^'"]+)['"]\s*\)|import\s+['"]([^'"]+)['"]/g,I=/import(?:\s+(?:\w+|\{[^}]*\}|\*\s+as\s+\w+)(?:\s*,\s*(?:\w+|\{[^}]*\}|\*\s+as\s+\w+))*\s+from\s+)?['"]([^'"]+)['"]/g,L=/import\s+(\w+)\s+from\s+['"]([^'"]+)['"]/g,R=/import\s+(?:(\w+)|\{([^}]+)\})\s+from\s+['"]([^'"]+)['"];?\s*$/gm,z=/^proxy\.(?:tsx?|jsx?|mts|mjs)$/,B=/\\/g,V=/\.(tsx?|jsx?)$/,H=/\/components\/(\w+)(?:\.tsx?|\.jsx?)?$/,U=/[/\\]components[/\\](\w+)(?:\.tsx?|\.jsx?)?$/,W=/^(?:robots|sitemap)\.(?:tsx?|jsx?)$/,G=/^node:/,K=/\\/g;var q=class{serverComponents=new Map;serverActions=new Map;options;projectRoot;buildCache=new Map;htmlOnlyImports=new Set;fileImporters=new Map;getComponentCount(){return this.serverComponents.size+this.serverActions.size}getImportGraph(){let e=new Map;for(let[t,n]of this.fileImporters)e.set(t,new Set(n));return e}getHtmlOnlyImports(){return new Set(this.htmlOnlyImports)}constructor(e,t={}){this.projectRoot=e;let n=t.rscDir||`server`;this.options={outDir:t.outDir||s.join(e,`dist`),rscDir:n,manifestPath:t.manifestPath||s.join(n,`manifest.json`),serverConfigPath:t.serverConfigPath||s.join(n,`config.json`),minify:t.minify??c.env.NODE_ENV===`production`,alias:t.alias||{},define:t.define,csp:t.csp,cacheControl:t.cacheControl},this.parseHtmlImports()}parseHtmlImports(){let e=s.join(this.projectRoot,`index.html`);if(o.existsSync(e))try{let t=o.readFileSync(e,`utf-8`);for(let e of t.matchAll(P)){let t=e[1]||e[2];if(t.startsWith(`/src/`)){let e=s.join(this.projectRoot,t.slice(1));this.htmlOnlyImports.add(e)}}}catch(e){console.warn(`[server-build] Error parsing index.html:`,e)}}isHtmlOnlyImport(e){return this.htmlOnlyImports.has(e)}isServerComponent(e,t){if(e.includes(`node_modules`)||this.isHtmlOnlyImport(e))return!1;try{let n=t??(o.existsSync(e)?o.readFileSync(e,`utf-8`):null);return n===null?!1:!S(n)&&!x(n)}catch{return!1}}isClientComponent(e,t){try{let n=t??(o.existsSync(e)?o.readFileSync(e,`utf-8`):null);return n===null?!1:S(n)}catch{return!1}}buildImportGraph(e){this.fileImporters.clear();let t=e=>{if(!o.existsSync(e))return;let n=o.readdirSync(e,{withFileTypes:!0});for(let r of n){let n=s.join(e,r.name);if(r.isDirectory()){if(r.name===`node_modules`)continue;t(n)}else if(r.isFile()&&i.test(r.name))try{let e=o.readFileSync(n,`utf-8`),t;for(F.lastIndex=0,t=F.exec(e);t!==null;){let r=t[1]||t[2]||t[3],i=null;if(r.startsWith(`./`)||r.startsWith(`../`)){let e=s.dirname(n);i=s.resolve(e,r)}else if(r.startsWith(`@/`)){let e=r.slice(2);i=s.join(this.projectRoot,`src`,e)}if(i){let e=[``,`.ts`,`.tsx`,`.js`,`.jsx`],t=null;for(let n of e){let e=i+n;if(o.existsSync(e)&&o.statSync(e).isFile()){t=e;break}}t&&(this.fileImporters.has(t)||this.fileImporters.set(t,new Set),this.fileImporters.get(t).add(n))}t=F.exec(e)}}catch(e){e?.code!==`ENOENT`&&console.warn(`[rari] Unexpected error building import graph:`,n,e)}}};t(e)}isOnlyImportedByClientComponents(e){let t=this.fileImporters.get(e);if(!t||t.size===0)return!1;for(let e of t)if(!this.isClientComponent(e)&&!this.isOnlyImportedByClientComponents(e))return!1;return!0}addServerComponent(e,t){let n=t??o.readFileSync(e,`utf-8`);if(this.isServerAction(n)){let t=this.extractDependencies(n),r=this.hasNodeImports(n);this.serverActions.set(e,{filePath:e,originalCode:n,dependencies:t,hasNodeImports:r});return}if(!this.isServerComponent(e,n))return;let r=this.extractDependencies(n),i=this.hasNodeImports(n);this.serverComponents.set(e,{filePath:e,originalCode:n,dependencies:r,hasNodeImports:i})}isServerAction(e){return x(e)}extractDependencies(e){let t=[],n;for(I.lastIndex=0;n=I.exec(e),n!==null;){let e=n[1];!e.startsWith(`.`)&&!e.startsWith(`/`)&&!e.startsWith(`node:`)&&!this.isNodeBuiltin(e)&&t.push(e)}return[...new Set(t)]}isNodeBuiltin(e){return[`fs`,`path`,`os`,`crypto`,`util`,`stream`,`events`,`process`,`buffer`,`url`,`querystring`,`zlib`,`http`,`https`,`net`,`tls`,`child_process`,`cluster`,`worker_threads`].includes(e)}hasNodeImports(e){return e.includes(`from 'node:`)||e.includes(`from "node:`)||e.includes(`from 'fs'`)||e.includes(`from "fs"`)||e.includes(`from 'path'`)||e.includes(`from "path"`)||e.includes(`from 'os'`)||e.includes(`from "os"`)||e.includes(`from 'crypto'`)||e.includes(`from "crypto"`)||e.includes(`from 'util'`)||e.includes(`from "util"`)||e.includes(`from 'stream'`)||e.includes(`from "stream"`)||e.includes(`from 'events'`)||e.includes(`from "events"`)}async getTransformedComponentsForDevelopment(){let e=[];for(let[t]of this.serverComponents){let n=s.relative(this.projectRoot,t),r=this.getComponentId(n),i=await this.buildComponentCodeOnly(t);e.push({id:r,code:i})}for(let[t]of this.serverActions){let n=s.relative(this.projectRoot,t),r=this.getComponentId(n),i=await this.buildComponentCodeOnly(t);e.push({id:r,code:i})}return e}transformComponentImportsToGlobal(e){let t=[];for(let n of e.matchAll(L)){let[e,r,i]=n;if(!i.startsWith(`.`)&&!i.startsWith(`@`)&&!i.startsWith(`~`)&&!i.startsWith(`#`))continue;let a=null;if(i.startsWith(`.`)){if(i.includes(`/components/`)){let n=i.match(H);if(n){let i=n[1],a=[s.resolve(this.projectRoot,`src`,`components`,`${i}.tsx`),s.resolve(this.projectRoot,`src`,`components`,`${i}.ts`),s.resolve(this.projectRoot,`src`,`components`,`${i}.jsx`),s.resolve(this.projectRoot,`src`,`components`,`${i}.js`)],c=!1;for(let e of a)if(o.existsSync(e)&&this.isClientComponent(e)){c=!0;break}if(!c)continue;let l=`// Component reference: ${i}
6
- const ${r} = (props) => {
7
- let Component = globalThis['~clientComponents']?.['components/${i}']?.component
8
- || globalThis['components/${i}'];
9
-
10
- if (Component && typeof Component === 'object' && Component.default) {
11
- Component = Component.default;
12
- }
13
-
14
- if (!Component) {
15
- throw new Error('Component components/${i} not loaded');
16
- }
17
-
18
- if (typeof Component !== 'function') {
19
- throw new Error('Component components/${i} is not a function, got: ' + typeof Component);
20
- }
21
-
22
- return Component(props);
23
- }`;t.push({original:e,replacement:l})}}continue}let c=this.options.alias||{};for(let[e,t]of Object.entries(c))if(i.startsWith(`${e}/`)||i===e){let n=i.slice(e.length);a=s.join(t,n);break}if(a){let n=a.match(U);if(n){let i=n[1],c=s.isAbsolute(a)?a:s.resolve(this.projectRoot,a),l=[c,`${c}.tsx`,`${c}.ts`,`${c}.jsx`,`${c}.js`],u=!1,d=c;for(let e of l)if(o.existsSync(e)){d=e,this.isClientComponent(e)&&(u=!0);break}if(!u)continue;let f=s.relative(this.projectRoot,d),p=this.getComponentId(f),m=`// Component reference: ${i}
24
- const ${r} = (props) => {
25
- let Component = globalThis['~clientComponents']?.['${p}']?.component
26
- || globalThis['${p}'];
27
-
28
- if (Component && typeof Component === 'object' && Component.default) {
29
- Component = Component.default;
30
- }
31
-
32
- if (!Component) {
33
- throw new Error('Component ${p} not loaded');
34
- }
35
-
36
- if (typeof Component !== 'function') {
37
- throw new Error('Component ${p} is not a function, got: ' + typeof Component);
38
- }
39
-
40
- return Component(props);
41
- }`;t.push({original:e,replacement:m})}}}let n=e;for(let{original:e,replacement:r}of t)n=n.replace(e,r);return n}isPageComponent(e){return e.includes(`/app/`)||e.includes(`\\app\\`)}createBuildPlugins(e,n,r,i,c=!1){let u=s.dirname(i),d=z.test(s.basename(i)),f=this,p=new Map,m=new Map;return[{name:`virtual-module`,resolveId(t,n){if(t===e)return t;if(n===e&&(t.startsWith(`./`)||t.startsWith(`../`))){let e=s.resolve(u,t);for(let t of[`.ts`,`.tsx`,`.js`,`.jsx`,``]){let n=e+t;if(o.existsSync(n)&&o.statSync(n).isFile())return n}for(let t of[`.ts`,`.tsx`,`.js`,`.jsx`]){let n=s.join(e,`index${t}`);if(o.existsSync(n))return n}return e}return null},load(t){return t===e?{code:n,moduleType:r}:null}},{name:`resolve-client-server-boundaries`,resolveId:(t,n)=>{if(!n||n.includes(`node_modules`)||n.includes(`/packages/rari/dist`)||t.startsWith(`node:`)||f.isNodeBuiltin(t)||t===`react`||t===`react-dom`||t===`react/jsx-runtime`||t===`react/jsx-dev-runtime`)return null;let r=null;if(r=a(t,f.options.alias||{},f.projectRoot),!r&&(t.startsWith(`./`)||t.startsWith(`../`))){let i=n===e?u:s.dirname(n);r=s.resolve(i,t)}if(r)for(let e of[``,`.ts`,`.tsx`,`.js`,`.jsx`]){let t=r+e;if(o.existsSync(t)&&o.statSync(t).isFile()){if(f.isClientComponent(t)){let e=s.relative(f.projectRoot,t),n=(e.startsWith(`..`)?t:e).replace(K,`/`);return p.set(t,n),{id:`\0client-ref:${t}`}}try{let e=o.readFileSync(t,`utf-8`);if(x(e)){let n=s.relative(f.projectRoot,t),r=n.startsWith(`..`)?t:n,i=A(e);return m.set(t,{actionId:r,hasDefaultExport:i}),{id:`\0server-action:${t}`}}}catch(e){console.error(`[rari] Failed to read file for server action detection: ${t}`,e)}break}}return null},load(e){if(e.startsWith(`\0client-ref:`)){let t=e.slice(12),n=s.relative(f.projectRoot,t),r=(p.get(t)||(n.startsWith(`..`)?t:n)).replace(K,`/`);return{code:`
42
- function registerClientReference(clientReference, id, exportName) {
43
- const key = id + '#' + exportName;
44
- const clientProxy = {};
45
- Object.defineProperty(clientProxy, '$$typeof', {
46
- value: Symbol.for('react.client.reference'),
47
- enumerable: false
48
- });
49
- Object.defineProperty(clientProxy, '$$id', {
50
- value: key,
51
- enumerable: false
52
- });
53
- Object.defineProperty(clientProxy, '$$async', {
54
- value: false,
55
- enumerable: false
56
- });
57
- return clientProxy;
58
- }
59
-
60
- export default registerClientReference(null, ${JSON.stringify(r)}, "default");
61
- `,moduleType:`js`}}if(e.startsWith(`\0server-action:`)){let t=e.slice(15),n=s.relative(f.projectRoot,t).replace(K,`/`),r=n.startsWith(`src/`)?n.slice(4):n,i=s.join(f.options.outDir,f.options.rscDir,r.replace(V,`.js`)),a=l(s.resolve(f.projectRoot,i)).href;return{code:m.get(t)?.hasDefaultExport??!1?`export * from ${JSON.stringify(a)};\nexport { default } from ${JSON.stringify(a)};`:`export * from ${JSON.stringify(a)};`,moduleType:`js`}}return null}},{name:`use-transformed-server-components`,resolveId:(e,n)=>{if(!c)return null;if(e.startsWith(`file://`)){let n=e.replace(t,``);return o.existsSync(n)?{id:`\0transformed:${n}`}:null}let r=null;r=a(e,f.options.alias||{},f.projectRoot);let i=n?.startsWith(`\0`)?u:n?s.dirname(n):u;if(!r&&(e.startsWith(`./`)||e.startsWith(`../`))&&(r=s.resolve(i,e)),!r||i.includes(`node_modules`))return null;for(let e of[``,`.ts`,`.tsx`,`.js`,`.jsx`]){let t=r+e;if(o.existsSync(t)&&o.statSync(t).isFile()){if(f.isClientComponent(t))return null;let e=s.join(f.projectRoot,`src`);if(!t.startsWith(e))return null;let n=s.relative(e,t),r=s.join(f.options.outDir,f.options.rscDir,n.replace(V,`.js`));if(o.existsSync(r))return{id:`\0transformed:${r}`};break}}return null},load(e){if(e.startsWith(`\0transformed:`)){let t=e.slice(13);return{code:o.readFileSync(t,`utf-8`),moduleType:`js`}}return null}},{name:`resolve-aliases`,resolveId:e=>{if(e.startsWith(`\0`))return null;let t=f.options.alias||{};for(let[n,r]of Object.entries(t))if(e.startsWith(`${n}/`)||e===n){let t=e.slice(n.length),i=s.join(r,t),a=s.isAbsolute(i)?i:s.resolve(f.projectRoot,i);for(let e of[``,`.ts`,`.tsx`,`.js`,`.jsx`]){let t=a+e;if(o.existsSync(t)&&o.statSync(t).isFile())return t}for(let e of[`.ts`,`.tsx`,`.js`,`.jsx`]){let t=s.join(a,`index${e}`);if(o.existsSync(t))return t}return a}return null}},{name:`resolve-rari-proxy`,resolveId:e=>{if(d&&e===`rari`){let e=s.resolve(f.projectRoot,`node_modules/rari/dist/proxy/RariResponse.mjs`);if(o.existsSync(e))return e;let t=s.resolve(f.projectRoot,`node_modules/rari/src/proxy/RariResponse.ts`);if(o.existsSync(t))return t}return null}},{name:`externalize-deps`,resolveId:e=>e.startsWith(`\0`)?null:e.startsWith(`node:`)||f.isNodeBuiltin(e)||[`react`,`react-dom`,`react/jsx-runtime`,`react/jsx-dev-runtime`,`rari/image`].includes(e)?{id:e,external:!0}:e===`rari`||e===`rari/client`?null:!e.startsWith(`.`)&&!e.startsWith(`/`)?{id:e,external:!0}:null}]}async buildComponentCodeOnly(e){let t=await o.promises.readFile(e,`utf-8`),n=this.transformClientImports(t,e),r=this.isPageComponent(e),i=r?this.transformComponentImportsToGlobal(n):n,a=s.extname(e),l;l=a===`.tsx`?`tsx`:a===`.ts`?`ts`:a===`.jsx`?`jsx`:`js`;let d=`\0virtual:${e}`,f=await u({input:d,platform:`node`,write:!1,external:[G,`react`,`react-dom`,`react/jsx-runtime`,`react/jsx-dev-runtime`],output:{format:`esm`,minify:this.options.minify},moduleTypes:{[`.${l}`]:l},resolve:{mainFields:[`module`,`main`],conditionNames:[`import`,`module`,`default`],extensions:[`.ts`,`.tsx`,`.js`,`.jsx`]},transform:{jsx:`react`,define:{global:`globalThis`,"process.env.NODE_ENV":JSON.stringify(c.env.NODE_ENV||`production`),...this.options.define}},plugins:this.createBuildPlugins(d,i,l,e,r)});if(!f.output||f.output.length===0)throw Error(`No output generated from Rolldown`);let p=f.output.find(e=>e.type===`chunk`&&e.isEntry);if(!p||p.type!==`chunk`)throw Error(`No entry chunk found in Rolldown output`);let m=p.code;return m=`// Built: ${new Date().toISOString()}\n${m}`,m}async buildServerComponents(){let e=s.join(this.options.outDir,this.options.rscDir);await o.promises.mkdir(e,{recursive:!0});let t={components:{},buildTime:new Date().toISOString()};for(let[e,n]of this.serverComponents){if(this.isPageComponent(e))continue;let r=s.relative(this.projectRoot,e),i=this.getComponentId(r),a=s.join(this.options.rscDir,`${i}.js`),c=s.join(this.options.outDir,a),u=s.dirname(c);await o.promises.mkdir(u,{recursive:!0}),await this.buildSingleComponent(e,c);let d=l(s.resolve(this.projectRoot,c)).href;t.components[i]={id:i,filePath:e,relativePath:r,bundlePath:a,moduleSpecifier:d,dependencies:n.dependencies,hasNodeImports:n.hasNodeImports}}for(let[e,n]of this.serverComponents){if(!this.isPageComponent(e))continue;let r=s.relative(this.projectRoot,e),i=this.getComponentId(r),a=s.join(this.options.rscDir,`${i}.js`),c=s.join(this.options.outDir,a),u=s.dirname(c);await o.promises.mkdir(u,{recursive:!0}),await this.buildSingleComponent(e,c);let d=l(s.resolve(this.projectRoot,c)).href;t.components[i]={id:i,filePath:e,relativePath:r,bundlePath:a,moduleSpecifier:d,dependencies:n.dependencies,hasNodeImports:n.hasNodeImports}}for(let[e,n]of this.serverActions){let r=s.relative(this.projectRoot,e),i=this.getComponentId(r),a=s.join(this.options.rscDir,`${i}.js`),c=s.join(this.options.outDir,a),u=s.dirname(c);await o.promises.mkdir(u,{recursive:!0}),await this.buildSingleComponent(e,c);let d=l(s.resolve(this.projectRoot,c)).href;t.components[i]={id:i,filePath:e,relativePath:r,bundlePath:a,moduleSpecifier:d,dependencies:n.dependencies,hasNodeImports:n.hasNodeImports}}let n=s.join(this.options.outDir,this.options.manifestPath);await o.promises.writeFile(n,JSON.stringify(t,null,2),`utf-8`);let r={};this.options.csp&&(r.csp=this.options.csp),this.options.cacheControl&&(r.cacheControl=this.options.cacheControl);let i=s.join(this.options.outDir,this.options.serverConfigPath);if(Object.keys(r).length===0)try{await o.promises.unlink(i)}catch(e){e.code!==`ENOENT`&&console.warn(`Failed to remove server config file:`,e)}else await o.promises.writeFile(i,JSON.stringify(r,null,2),`utf-8`);return t}async buildSingleComponent(e,t,n=!1){let r=await o.promises.readFile(e,`utf-8`),i=this.transformClientImports(r,e),a=this.isPageComponent(e),l=a?this.transformComponentImportsToGlobal(i):i,d=s.extname(e),f;f=d===`.tsx`?`tsx`:d===`.ts`?`ts`:d===`.jsx`?`jsx`:`js`;let p=`\0virtual:${e}`,m=await u({input:p,platform:`node`,write:!1,external:[G,`react`,`react-dom`,`react/jsx-runtime`,`react/jsx-dev-runtime`],output:{format:`esm`,minify:this.options.minify},moduleTypes:{[`.${f}`]:f},resolve:{mainFields:[`module`,`main`],conditionNames:[`import`,`module`,`default`],extensions:[`.ts`,`.tsx`,`.js`,`.jsx`]},transform:{jsx:`react`,define:{global:`globalThis`,"process.env.NODE_ENV":JSON.stringify(c.env.NODE_ENV||`production`),...this.options.define}},plugins:this.createBuildPlugins(p,l,f,e,a)});if(!m.output||m.output.length===0)throw Error(`No output generated from Rolldown`);let h=m.output.find(e=>e.type===`chunk`&&e.isEntry);if(!h||h.type!==`chunk`)throw Error(`No entry chunk found in Rolldown output`);let g=h.code;g=`// Built: ${new Date().toISOString()}\n${g}`,await o.promises.writeFile(t,g,`utf-8`);let _=await o.promises.open(t,`r+`);if(await _.sync(),await _.close(),n)return g}transformClientImports(e,t){let n=e,r,i=[],a=!1,o=[`rari/image`];for(R.lastIndex=0;r=R.exec(e),r!==null;){let[e,n,c,l]=r,u=!1,d=l;if(o.includes(l))u=!0;else{let e=this.resolveImportPath(l,t);this.isClientComponent(e)&&(u=!0,d=s.relative(this.projectRoot,e).replace(K,`/`))}if(u){a=!0;let t=``;n?t=`const ${n} = registerClientReference(
62
- null,
63
- ${JSON.stringify(d)},
64
- "default"
65
- );`:c&&(t=c.split(`,`).map(e=>e.trim()).map(e=>{let[t,n]=e.includes(` as `)?e.split(` as `).map(e=>e.trim()):[e,e];return`const ${n} = registerClientReference(
66
- null,
67
- ${JSON.stringify(d)},
68
- ${JSON.stringify(t)}
69
- );`}).join(`
70
- `)),i.push({original:e,replacement:t})}}a&&(n=`
71
- function registerClientReference(clientReference, id, exportName) {
72
- const key = id + '#' + exportName;
73
-
74
- const clientProxy = {};
75
-
76
- Object.defineProperty(clientProxy, '$$typeof', {
77
- value: Symbol.for('react.client.reference'),
78
- enumerable: false
79
- });
80
-
81
- Object.defineProperty(clientProxy, '$$id', {
82
- value: key,
83
- enumerable: false
84
- });
85
-
86
- Object.defineProperty(clientProxy, '$$async', {
87
- value: false,
88
- enumerable: false
89
- });
90
-
91
- try {
92
- if (typeof globalThis.registerClientComponent === 'function') {
93
- globalThis.registerClientComponent(key, id, clientProxy);
94
- }
95
- } catch (error) {
96
- console.error('[rari] Build: Failed to register client reference:', error);
97
- }
98
-
99
- return clientProxy;
100
- }
101
-
102
- `+n);for(let{original:e,replacement:t}of i)n=n.replace(e,t);return n}resolveImportPath(e,t){let n=e,r=this.options.alias||{};for(let[t,i]of Object.entries(r))if(e.startsWith(`${t}/`)||e===t){let r=e.slice(t.length);n=s.join(i,r);break}s.isAbsolute(n)||(n=s.resolve(s.dirname(t),n));let i=[`.tsx`,`.jsx`,`.ts`,`.js`];return j(n,i)||M(n,i)||`${n}.tsx`}getComponentId(e){return e.replace(B,`/`).replace(V,``).replace(n,`_`).replace(r,``)}async rebuildComponent(e){let t=this.getComponentId(s.relative(this.projectRoot,e)),n=await o.promises.readFile(e,`utf-8`),r=this.extractDependencies(n),i={filePath:e,originalCode:n,dependencies:r,hasNodeImports:this.hasNodeImports(n)};this.isServerAction(n)?this.serverActions.set(e,i):this.serverComponents.set(e,i);let a=s.join(this.options.rscDir,`${t}.js`),c=s.join(this.options.outDir,a),l=this.buildCache.get(e),u=(await o.promises.stat(e)).mtimeMs;if(l&&l.timestamp>=u&&JSON.stringify(l.dependencies)===JSON.stringify(r))return await o.promises.writeFile(c,l.code,`utf-8`),await this.updateManifestForComponent(t,e,a),{componentId:t,bundlePath:s.join(this.options.outDir,a),success:!0};let d=s.dirname(c);await o.promises.mkdir(d,{recursive:!0});let f=await this.buildSingleComponent(e,c,!0);return this.buildCache.set(e,{code:f,timestamp:Date.now(),dependencies:r}),await this.updateManifestForComponent(t,e,a),{componentId:t,bundlePath:s.join(this.options.outDir,a),success:!0}}manifestCache=null;async updateManifestForComponent(e,t,n){let r=s.join(this.options.outDir,this.options.manifestPath),i;if(this.manifestCache)i=this.manifestCache;else if(o.existsSync(r)){let e=await o.promises.readFile(r,`utf-8`);i=JSON.parse(e),this.manifestCache=i}else i={components:{},buildTime:new Date().toISOString()},this.manifestCache=i;let a=this.serverComponents.get(t)||this.serverActions.get(t),c=s.join(this.options.outDir,n),u=l(s.resolve(this.projectRoot,c)).href;if(a)i.components[e]={id:e,filePath:t,relativePath:s.relative(this.projectRoot,t),bundlePath:n,moduleSpecifier:u,dependencies:a.dependencies,hasNodeImports:a.hasNodeImports};else{let r=await o.promises.readFile(t,`utf-8`);i.components[e]={id:e,filePath:t,relativePath:s.relative(this.projectRoot,t),bundlePath:n,moduleSpecifier:u,dependencies:this.extractDependencies(r),hasNodeImports:this.hasNodeImports(r)}}i.buildTime=new Date().toISOString(),await o.promises.writeFile(r,JSON.stringify(i,null,2),`utf-8`),this.manifestCache=i}clearCache(){this.buildCache.clear(),this.manifestCache=null}invalidateBuildCacheFor(e){this.buildCache.delete(e)}async getTransformedComponentCode(e){return await this.buildComponentCodeOnly(e)}};function J(e,t,n=!0){n&&t.buildImportGraph(e);let r=o.readdirSync(e,{withFileTypes:!0});for(let n of r){let r=s.join(e,n.name);if(n.isDirectory())J(r,t,!1);else if(n.isFile()&&i.test(n.name)){if(W.test(n.name)||n.name.endsWith(`.d.ts`))continue;try{let e=o.readFileSync(r,`utf-8`);if(x(e)){t.addServerComponent(r,e);continue}if(t.isOnlyImportedByClientComponents(r))continue;t.isServerComponent(r,e)&&t.addServerComponent(r,e)}catch(e){console.warn(`[server-build] Error checking ${r}:`,e instanceof Error?e.message:e)}}}}function Y(e={}){let t=null,n,r=!1,a={};return{name:`rari-server-build`,configResolved(i){n=i.root,r=i.command===`serve`;let o={};if(i.resolve?.alias){let e=i.resolve.alias;Array.isArray(e)?e.forEach(e=>{typeof e.find==`string`&&typeof e.replacement==`string`&&(o[e.find]=e.replacement)}):typeof e==`object`&&Object.entries(e).forEach(([e,t])=>{typeof t==`string`&&(o[e]=t)})}a=o,t=new q(n,{...e,alias:o})},buildStart(){if(!t)return;let e=c.env.NODE_ENV===`production`,r=[s.join(n,`dist`,`cache`,`og`),s.join(n,`dist`,`cache`,`images`)];e&&r.push(`/tmp/rari-og-cache`,`/tmp/rari-image-cache`);for(let e of r)try{o.existsSync(e)&&o.rmSync(e,{recursive:!0,force:!0})}catch(t){console.warn(`[rari] Failed to clear cache ${e}:`,t)}let i=s.join(n,`src`);o.existsSync(i)&&J(i,t)},async closeBundle(){if(t){await t.buildServerComponents();try{let{generateRobotsFile:e}=await import(`./robots-generator-Byiwomr5.mjs`);await e({appDir:s.join(n,`src`,`app`),outDir:s.join(n,`dist`),extensions:[`.ts`,`.tsx`,`.js`,`.jsx`]})}catch(e){console.warn(`[rari] Failed to generate robots.txt:`,e)}try{let{generateSitemapFiles:e}=await import(`./sitemap-generator-CB5dtfYm.mjs`);await e({appDir:s.join(n,`src`,`app`),outDir:s.join(n,`dist`),extensions:[`.ts`,`.tsx`,`.js`,`.jsx`],aliases:a})}catch(e){console.warn(`[rari] Failed to generate sitemap:`,e)}}},async handleHotUpdate({file:e}){if(!t||!r)return;let a=s.relative(n,e).replace(B,`/`);if(!(!a.startsWith(`src/`)||!i.test(a)))try{if(S(await o.promises.readFile(e,`utf-8`)))return;await t.buildServerComponents()}catch(e){console.error(`[rari] Build: Error rebuilding ${a}:`,e)}}}}export{A as a,j as i,N as n,S as o,M as r,x as s,Y as t};