@reckona/mreact-router 0.0.201 → 0.0.202
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/README.md +1 -1
- package/dist/adapters/cloudflare.d.ts.map +1 -1
- package/dist/adapters/cloudflare.js +51 -4
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/node.d.ts +7 -0
- package/dist/adapters/node.d.ts.map +1 -1
- package/dist/adapters/node.js +7 -1
- package/dist/adapters/node.js.map +1 -1
- package/dist/adapters/static.d.ts.map +1 -1
- package/dist/adapters/static.js +14 -3
- package/dist/adapters/static.js.map +1 -1
- package/dist/build.d.ts +3 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +42 -5
- package/dist/build.js.map +1 -1
- package/dist/built-runtime.d.ts +4 -1
- package/dist/built-runtime.d.ts.map +1 -1
- package/dist/built-runtime.js.map +1 -1
- package/dist/cache.d.ts +26 -0
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +78 -12
- package/dist/cache.js.map +1 -1
- package/dist/cli-options.d.ts +4 -0
- package/dist/cli-options.d.ts.map +1 -1
- package/dist/cli-options.js +17 -0
- package/dist/cli-options.js.map +1 -1
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/node-server.d.ts +6 -0
- package/dist/node-server.d.ts.map +1 -1
- package/dist/node-server.js +19 -1
- package/dist/node-server.js.map +1 -1
- package/dist/prerender-entry.d.ts +5 -0
- package/dist/prerender-entry.d.ts.map +1 -0
- package/dist/prerender-entry.js +41 -0
- package/dist/prerender-entry.js.map +1 -0
- package/dist/render.d.ts +13 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +139 -87
- package/dist/render.js.map +1 -1
- package/dist/request-header-tracking.d.ts +44 -0
- package/dist/request-header-tracking.d.ts.map +1 -0
- package/dist/request-header-tracking.js +116 -0
- package/dist/request-header-tracking.js.map +1 -0
- package/dist/route-source.d.ts +16 -0
- package/dist/route-source.d.ts.map +1 -1
- package/dist/route-source.js +55 -1
- package/dist/route-source.js.map +1 -1
- package/dist/security-headers.d.ts +16 -0
- package/dist/security-headers.d.ts.map +1 -1
- package/dist/security-headers.js +37 -0
- package/dist/security-headers.js.map +1 -1
- package/dist/serve.d.ts +7 -0
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +94 -28
- package/dist/serve.js.map +1 -1
- package/package.json +11 -11
- package/src/adapters/cloudflare.ts +81 -9
- package/src/adapters/node.ts +14 -1
- package/src/adapters/static.ts +18 -5
- package/src/build.ts +71 -4
- package/src/built-runtime.ts +2 -2
- package/src/cache.ts +117 -11
- package/src/cli-options.ts +24 -0
- package/src/cli.ts +5 -0
- package/src/node-server.ts +27 -1
- package/src/prerender-entry.ts +56 -0
- package/src/render.ts +188 -98
- package/src/request-header-tracking.ts +161 -0
- package/src/route-source.ts +71 -0
- package/src/security-headers.ts +41 -0
- package/src/serve.ts +133 -30
package/dist/cli-options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,GAG7B,MAAM,aAAa,CAAC;AA4BrB,MAAM,UAAU,iBAAiB,CAAC,IAAuB;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAG,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACjG,MAAM,MAAM,GAAuB,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;IACpF,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,GAAG,sBAAsB,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACzE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YACjE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1D,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;YAC9B,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;YACpF,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7E,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;YAChC,MAAM,CAAC,YAAY,GAAG,oBAAoB,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;YAC1F,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YACnF,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACnD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YACjD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,iCAAiC,EAAE,CAAC;YAChD,MAAM,CAAC,0BAA0B,GAAG,IAAI,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACzD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAClD,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,GAAG,mBAAmB,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC5E,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,sBAAsB,EAAE,CAAC;YACrC,MAAM,CAAC,gBAAgB,GAAG,2BAA2B,CACnD,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,oBAAoB,CAAC,CACnD,CAAC;YACF,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,sBAAsB,EAAE,CAAC;YACrC,MAAM,CAAC,gBAAgB,GAAG,4BAA4B,CACpD,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,oBAAoB,CAAC,CACnD,CAAC;YACF,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,gBAAgB,GAAG,4BAA4B,CACpD,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAC5C,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,6BAA6B,EAAE,CAAC;YAC5C,MAAM,CAAC,sBAAsB,GAAG,8BAA8B,CAC5D,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,2BAA2B,CAAC,CAC1D,CAAC;YACF,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,8BAA8B,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,sBAAsB,GAAG,8BAA8B,CAC5D,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,MAAM,CAAC,CACnD,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,gBAAgB,GAAG,2BAA2B,CACnD,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAC5C,CAAC;YACF,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAA4B;IACxD,MAAM,kBAAkB,GAAG,4BAA4B,CACrD,4BAA4B,CAAC,cAAc,CAC5C,CAAC;IACF,MAAM,eAAe,GAAG,0BAA0B,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAE5F,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,+CAA+C;YAC/C,EAAE;YACF,qCAAqC;YACrC,EAAE;YACF,UAAU;YACV,2CAA2C;YAC3C,6CAA6C,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,eAAe,kGAAkG;YAC/M,oCAAoC;YACpC,oDAAoD;YACpD,+DAA+D;YAC/D,+EAA+E;YAC/E,wCAAwC;YACxC,oEAAoE;YACpE,cAAc;YACd,+BAA+B;YAC/B,EAAE;YACF,WAAW;YACX,qCAAqC;YACrC,2CAA2C;YAC3C,2CAA2C;YAC3C,oCAAoC;SACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QAC7B,OAAO;YACL,oDAAoD;YACpD,EAAE;YACF,kFAAkF;YAClF,EAAE;YACF,qBAAqB;YACrB,sEAAsE;YACtE,iDAAiD;YACjD,EAAE;YACF,kBAAkB;YAClB,8EAA8E;YAC9E,EAAE;YACF,UAAU;YACV,8DAA8D;YAC9D,2CAA2C;YAC3C,EAAE;YACF,WAAW;YACX,4BAA4B;YAC5B,2CAA2C;SAC5C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,iDAAiD;YACjD,EAAE;YACF,sEAAsE;YACtE,EAAE;YACF,UAAU;YACV,yDAAyD;YACzD,4EAA4E;YAC5E,EAAE;YACF,UAAU;YACV,8DAA8D;YAC9D,kHAAkH;YAClH,mCAAmC;YACnC,8IAA8I;YAC9I,qBAAqB;YACrB,0KAA0K;YAC1K,oBAAoB;YACpB,gFAAgF;YAChF,+DAA+D;YAC/D,8JAA8J;YAC9J,wCAAwC;YACxC,oEAAoE;YACpE,6CAA6C;YAC7C,EAAE;YACF,WAAW;YACX,iEAAiE;YACjE,6EAA6E;SAC9E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,+CAA+C;YAC/C,EAAE;YACF,6DAA6D;YAC7D,EAAE;YACF,UAAU;YACV,sIAAsI;YACtI,sCAAsC;YACtC,oEAAoE;YACpE,oCAAoC;YACpC,4DAA4D;YAC5D,4CAA4C;YAC5C,2CAA2C;YAC3C,EAAE;YACF,cAAc;YACd,wDAAwD;YACxD,6BAA6B;YAC7B,2EAA2E;YAC3E,+BAA+B;YAC/B,2FAA2F;YAC3F,4CAA4C;SAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO;YACL,6CAA6C;YAC7C,EAAE;YACF,iDAAiD;YACjD,EAAE;YACF,UAAU;YACV,2FAA2F;YAC3F,2EAA2E;YAC3E,4CAA4C;YAC5C,2CAA2C;YAC3C,EAAE;YACF,cAAc;YACd,wDAAwD;YACxD,oDAAoD;SACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,OAAO;QACL,0CAA0C;QAC1C,EAAE;QACF,WAAW;QACX,2EAA2E;QAC3E,qDAAqD,kBAAkB,wBAAwB;QAC/F,qFAAqF;QACrF,mHAAmH;QACnH,sEAAsE;QACtE,mDAAmD;QACnD,0FAA0F;QAC1F,yDAAyD;QACzD,0GAA0G;QAC1G,+DAA+D;QAC/D,2FAA2F;QAC3F,wDAAwD;QACxD,EAAE;QACF,UAAU;QACV,qEAAqE;QACrE,oFAAoF;QACpF,EAAE;QACF,WAAW;QACX,2CAA2C;QAC3C,2CAA2C;QAC3C,oCAAoC;QACpC,iEAAiE;QACjE,8BAA8B;KAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAAkC;IAElC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAwC;IAC5E,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,4BAA4B,CAAC,MAA4B;IAChE,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IACjD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAwC;IAC1E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAAwC,EACxC,GAA+C;IAE/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACvC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC9C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,SAA6B,EAC7B,GAAkC;IAElC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;IAC1B,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,SAA6B,EAC7B,GAAkC,EAClC,cAAkC;IAElC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC;IAC1B,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,SAAwC,EACxC,GAAuD;IAEvD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,yBAAyB,CAAC;IAC/C,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,SAAwC,EACxC,GAAyD;IAEzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,2BAA2B,CAAC;IACjD,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,KAAK,CAAC,KAAK;YACT,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;gBAC1C,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK;YACR,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3B,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,wCAAwC,CAClF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,yCAAyC,CAC1F,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5F,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,0DAA0D,CAC5G,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa;IAChD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,oEAAoE,CAChI,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAa;IACjD,IACE,KAAK,KAAK,KAAK;QACf,KAAK,KAAK,oBAAoB;QAC9B,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,MAAM,EAChB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kEAAkE,CAC1H,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CAAC,KAAa;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB,EAAE,KAAa,EAAE,IAAY;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAEhC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAwB;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC1C,OAAO,YAAY,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,UAAU,MAAM,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3I,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QACxC,OAAO,YAAY,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACzG,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC3C,OAAO,YAAY,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACzG,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC1C,OAAO,YAAY,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,gBAAgB,CAAC;IAChF,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,iCAAiC,EAAE,CAAC;QACrD,OAAO,YAAY,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,SAAS,uBAAuB,KAAK,CAAC,GAAG,4BAA4B,CAAC;IACnH,CAAC;IAED,OAAO,YAAY,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AACnE,CAAC","sourcesContent":["import type { AppRouterLogger, AppRouterLogEvent } from \"./logger.js\";\nimport {\n appRouterBuildTargetMetadata,\n type AppRouterBuildTarget,\n type AppRouterClientSourceMapMode,\n} from \"./config.js\";\nimport type { RequestHostPolicy } from \"./serve.js\";\nimport type { AwsLambdaGeneratedHandlerPreloadMode } from \"./build.js\";\n\nexport type CliRequestLogMode = \"requests\";\nexport type CliBuildTarget = AppRouterBuildTarget | \"all\";\n\nexport interface ParsedCliArguments {\n awsLambdaPreload?: AwsLambdaGeneratedHandlerPreloadMode | undefined;\n awsLambdaPreloadRoutes?: readonly string[] | undefined;\n clientSourceMaps?: AppRouterClientSourceMapMode | undefined;\n command: string;\n allowedHosts?: readonly string[] | undefined;\n from?: string | undefined;\n handler?: string | undefined;\n help?: boolean | undefined;\n host?: string | undefined;\n hostPolicy?: RequestHostPolicy | undefined;\n json?: boolean | undefined;\n log?: CliRequestLogMode | undefined;\n out?: string | undefined;\n port?: number | undefined;\n routeArg?: string | undefined;\n skipRuntimeDependencyCheck?: boolean | undefined;\n target?: CliBuildTarget | undefined;\n worker?: string | undefined;\n}\n\nexport function parseCliArguments(argv: readonly string[]): ParsedCliArguments {\n const first = argv[0];\n const rootHelp = first === \"--help\" || first === \"-h\";\n const command = rootHelp ? \"help\" : first === undefined || first.startsWith(\"-\") ? \"dev\" : first;\n const parsed: ParsedCliArguments = rootHelp ? { command, help: true } : { command };\n const startIndex = rootHelp || command === first ? 1 : 0;\n\n for (let index = startIndex; index < argv.length; index += 1) {\n const value = argv[index];\n\n if (value === undefined) {\n continue;\n }\n\n if (value === \"--help\" || value === \"-h\") {\n parsed.help = true;\n continue;\n }\n\n if (value === \"--json\") {\n if (command !== \"boundaries\") {\n throw new Error(\"--json is only supported by the boundaries command\");\n }\n parsed.json = true;\n continue;\n }\n\n if (value === \"--log\") {\n parsed.log = parseCliRequestLogMode(readOptionValue(argv, index, \"log\"));\n index += 1;\n continue;\n }\n\n if (value === \"--port\") {\n parsed.port = parseCliPort(readOptionValue(argv, index, \"port\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--port=\")) {\n parsed.port = parseCliPort(value.slice(\"--port=\".length));\n continue;\n }\n\n if (value === \"--host\") {\n parsed.host = readOptionValue(argv, index, \"host\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--host=\")) {\n parsed.host = value.slice(\"--host=\".length);\n continue;\n }\n\n if (value === \"--host-policy\") {\n parsed.hostPolicy = parseCliHostPolicy(readOptionValue(argv, index, \"host-policy\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--host-policy=\")) {\n parsed.hostPolicy = parseCliHostPolicy(value.slice(\"--host-policy=\".length));\n continue;\n }\n\n if (value === \"--allowed-hosts\") {\n parsed.allowedHosts = parseCliAllowedHosts(readOptionValue(argv, index, \"allowed-hosts\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--allowed-hosts=\")) {\n parsed.allowedHosts = parseCliAllowedHosts(value.slice(\"--allowed-hosts=\".length));\n continue;\n }\n\n if (value === \"--from\") {\n parsed.from = readOptionValue(argv, index, \"from\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--from=\")) {\n parsed.from = value.slice(\"--from=\".length);\n continue;\n }\n\n if (value === \"--out\") {\n parsed.out = readOptionValue(argv, index, \"out\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--out=\")) {\n parsed.out = value.slice(\"--out=\".length);\n continue;\n }\n\n if (value === \"--skip-runtime-dependency-check\") {\n parsed.skipRuntimeDependencyCheck = true;\n continue;\n }\n\n if (value === \"--handler\") {\n parsed.handler = readOptionValue(argv, index, \"handler\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--handler=\")) {\n parsed.handler = value.slice(\"--handler=\".length);\n continue;\n }\n\n if (value === \"--worker\") {\n parsed.worker = readOptionValue(argv, index, \"worker\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--worker=\")) {\n parsed.worker = value.slice(\"--worker=\".length);\n continue;\n }\n\n if (value.startsWith(\"--log=\")) {\n parsed.log = parseCliRequestLogMode(value.slice(\"--log=\".length));\n continue;\n }\n\n if (value === \"--target\") {\n parsed.target = parseCliBuildTarget(readOptionValue(argv, index, \"target\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--target=\")) {\n parsed.target = parseCliBuildTarget(value.slice(\"--target=\".length));\n continue;\n }\n\n if (value === \"--client-source-maps\") {\n parsed.clientSourceMaps = parseCliClientSourceMapMode(\n readOptionValue(argv, index, \"client-source-maps\"),\n );\n index += 1;\n continue;\n }\n\n if (value === \"--aws-lambda-preload\") {\n parsed.awsLambdaPreload = parseCliAwsLambdaPreloadMode(\n readOptionValue(argv, index, \"aws-lambda-preload\"),\n );\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--aws-lambda-preload=\")) {\n parsed.awsLambdaPreload = parseCliAwsLambdaPreloadMode(\n value.slice(\"--aws-lambda-preload=\".length),\n );\n continue;\n }\n\n if (value === \"--aws-lambda-preload-routes\") {\n parsed.awsLambdaPreloadRoutes = parseCliAwsLambdaPreloadRoutes(\n readOptionValue(argv, index, \"aws-lambda-preload-routes\"),\n );\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--aws-lambda-preload-routes=\")) {\n parsed.awsLambdaPreloadRoutes = parseCliAwsLambdaPreloadRoutes(\n value.slice(\"--aws-lambda-preload-routes=\".length),\n );\n continue;\n }\n\n if (value.startsWith(\"--client-source-maps=\")) {\n parsed.clientSourceMaps = parseCliClientSourceMapMode(\n value.slice(\"--client-source-maps=\".length),\n );\n continue;\n }\n\n if (value.startsWith(\"-\")) {\n throw new Error(`Unknown option ${value}`);\n }\n\n if (parsed.routeArg !== undefined) {\n throw new Error(`Unexpected argument ${value}`);\n }\n\n parsed.routeArg = value;\n }\n\n return parsed;\n}\n\nexport function formatCliHelp(command?: string | undefined): string {\n const defaultTargetLabel = formatBuildTargetDisplayList(\n appRouterBuildTargetMetadata.defaultTargets,\n );\n const allTargetValues = formatBuildTargetValueList(appRouterBuildTargetMetadata.allTargets);\n\n if (command === \"build\") {\n return [\n \"Usage: mreact-router build [appDir] [options]\",\n \"\",\n \"Build an mreact app router project.\",\n \"\",\n \"Options:\",\n \" --target=node|cloudflare|aws-lambda|all\",\n ` Select build artifacts. Defaults to ${defaultTargetLabel.toLowerCase()}. all selects ${allTargetValues}. aws-lambda writes .mreact/aws-lambda/mreact-handler.mjs and .mreact/server/import-policy.json.`,\n \" --client-source-maps=none|hidden\",\n \" Control production client source map output.\",\n \" --aws-lambda-preload=middleware|hot-route-requests|all|none\",\n \" Select generated Lambda initialization preload. Defaults to middleware.\",\n \" --aws-lambda-preload-routes=/,/login\",\n \" Select routes for hot-route-requests initialization preload.\",\n \" -h, --help\",\n \" Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router build --target=node\",\n \" mreact-router build --target=cloudflare\",\n \" mreact-router build --target=aws-lambda\",\n \" mreact-router build --target=all\",\n ].join(\"\\n\");\n }\n\n if (command === \"boundaries\") {\n return [\n \"Usage: mreact-router boundaries [appDir] [options]\",\n \"\",\n \"Inspect server and client component boundaries for every route without building.\",\n \"\",\n \"Project resolution:\",\n \" Without appDir, load the same Vite project configuration as build.\",\n \" With appDir, inspect that directory directly.\",\n \"\",\n \"Classifications:\",\n \" server-render, client-boundary, client-route, server-only, shared, unknown\",\n \"\",\n \"Options:\",\n \" --json Print a machine-readable versioned report.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router boundaries\",\n \" mreact-router boundaries src/app --json\",\n ].join(\"\\n\");\n }\n\n if (command === \"package\") {\n return [\n \"Usage: mreact-router package <target> [options]\",\n \"\",\n \"Package generated build output into a deployable artifact directory.\",\n \"\",\n \"Targets:\",\n \" aws-lambda Minimal AWS Lambda asset directory.\",\n \" cloudflare-pages Cloudflare Pages advanced mode output with _worker.js.\",\n \"\",\n \"Options:\",\n \" --from <dir> Build output directory. Default: .mreact\",\n \" --out <dir> Output directory. Defaults to .lambda for aws-lambda and .mreact/pages for cloudflare-pages.\",\n \" --skip-runtime-dependency-check\",\n \" For aws-lambda only, skip the production node_modules check when a later deploy step installs dependencies into the package directory.\",\n \" --handler <entry>\",\n \" For aws-lambda only, bundle a custom handler entry into mreact-handler.mjs. App-local extensionless TypeScript imports are bundled; package imports stay external.\",\n \" --worker <entry>\",\n \" For cloudflare-pages only, bundle a custom Worker entry into _worker.js.\",\n \" --aws-lambda-preload=middleware|hot-route-requests|all|none\",\n \" Override generated Lambda initialization preload. Omission preserves the build policy; legacy output without policy metadata falls back to middleware.\",\n \" --aws-lambda-preload-routes=/,/login\",\n \" Select routes for hot-route-requests initialization preload.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router package aws-lambda --from .mreact --out .lambda\",\n \" mreact-router package cloudflare-pages --from .mreact --out .mreact/pages\",\n ].join(\"\\n\");\n }\n\n if (command === \"start\") {\n return [\n \"Usage: mreact-router start [outDir] [options]\",\n \"\",\n \"Serve built mreact app router output with the Node adapter.\",\n \"\",\n \"Options:\",\n \" --host <host> Bind address. Default: 127.0.0.1. Use 0.0.0.0 inside containers behind explicit port publishing or a reverse proxy.\",\n \" --host-policy=strict|trusted-proxy\",\n \" Control Host header trust for request origin reconstruction.\",\n \" --allowed-hosts <host[,host...]>\",\n \" Exact Host header allow-list for public deployments.\",\n \" --log=requests Print request summaries.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Environment:\",\n \" HOST Bind address when --host is not set.\",\n \" MREACT_ROUTER_HOST_POLICY\",\n \" Host header trust policy when --host-policy is not set.\",\n \" MREACT_ROUTER_ALLOWED_HOSTS\",\n \" Comma-separated Host header allow-list when --allowed-hosts is not set.\",\n \" PORT TCP port. Default: 3001.\",\n ].join(\"\\n\");\n }\n\n if (command === \"dev\") {\n return [\n \"Usage: mreact-router dev [appDir] [options]\",\n \"\",\n \"Start the mreact app router development server.\",\n \"\",\n \"Options:\",\n \" --host <host> Bind address. Default: 127.0.0.1. Use 0.0.0.0 for LAN or device testing.\",\n \" --port <port> TCP port. Overrides PORT and vite.config.ts server.port.\",\n \" --log=requests Print request summaries.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Environment:\",\n \" HOST Bind address when --host is not set.\",\n \" PORT TCP port when --port is not set.\",\n ].join(\"\\n\");\n }\n\n return [\n \"Usage: mreact-router <command> [options]\",\n \"\",\n \"Commands:\",\n \" dev [appDir] Start the development server.\",\n ` build [appDir] Build ${defaultTargetLabel} artifacts by default.`,\n \" boundaries [appDir] Inspect route and component boundaries.\",\n \" build --target=aws-lambda Build Lambda artifacts including generated handler and import policy.\",\n \" start [outDir] Serve built Node output.\",\n \" package aws-lambda --from .mreact --out .lambda\",\n \" Package a minimal AWS Lambda asset directory.\",\n \" package aws-lambda --handler lambda/mreact-handler.ts\",\n \" Bundle a custom Lambda handler with app-local server imports.\",\n \" package cloudflare-pages --from .mreact --out .mreact/pages\",\n \" Package Cloudflare Pages advanced mode output.\",\n \" help [command] Show help.\",\n \"\",\n \"Options:\",\n \" -h, --help Show this help message.\",\n \" --log=requests Print request summaries for dev/start.\",\n \"\",\n \"Examples:\",\n \" mreact-router build --target=cloudflare\",\n \" mreact-router build --target=aws-lambda\",\n \" mreact-router build --target=all\",\n \" mreact-router package aws-lambda --from .mreact --out .lambda\",\n \" mreact-router build --help\",\n ].join(\"\\n\");\n}\n\nexport function buildTargetsFromCliTarget(\n target: CliBuildTarget | undefined,\n): readonly AppRouterBuildTarget[] | undefined {\n if (target === undefined) {\n return undefined;\n }\n\n return target === \"all\" ? appRouterBuildTargetMetadata.allTargets : [target];\n}\n\nfunction formatBuildTargetDisplayList(targets: readonly AppRouterBuildTarget[]): string {\n return targets.map(formatBuildTargetDisplayName).join(\", \");\n}\n\nfunction formatBuildTargetDisplayName(target: AppRouterBuildTarget): string {\n if (target === \"aws-lambda\") return \"AWS Lambda\";\n return target[0]?.toUpperCase() + target.slice(1);\n}\n\nfunction formatBuildTargetValueList(targets: readonly AppRouterBuildTarget[]): string {\n if (targets.length < 2) return targets[0] ?? \"\";\n return `${targets.slice(0, -1).join(\", \")}, and ${targets.at(-1)}`;\n}\n\nexport function resolveCliRequestLogMode(\n flagValue: CliRequestLogMode | undefined,\n env: { MREACT_ROUTER_LOG?: string | undefined },\n): CliRequestLogMode | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_LOG;\n if (envValue === undefined || envValue === \"\") {\n return undefined;\n }\n\n return parseCliRequestLogMode(envValue);\n}\n\nexport function resolveCliHost(\n flagValue: string | undefined,\n env: { HOST?: string | undefined },\n): string {\n if (flagValue !== undefined && flagValue !== \"\") {\n return flagValue;\n }\n\n const envValue = env.HOST;\n return envValue === undefined || envValue === \"\" ? \"127.0.0.1\" : envValue;\n}\n\nexport function resolveCliDevPort(\n flagValue: number | undefined,\n env: { PORT?: string | undefined },\n viteConfigPort: number | undefined,\n): number | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.PORT;\n return envValue === undefined || envValue === \"\" ? viteConfigPort : parseCliPort(envValue);\n}\n\nexport function resolveCliHostPolicy(\n flagValue: RequestHostPolicy | undefined,\n env: { MREACT_ROUTER_HOST_POLICY?: string | undefined },\n): RequestHostPolicy | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_HOST_POLICY;\n return envValue === undefined || envValue === \"\" ? undefined : parseCliHostPolicy(envValue);\n}\n\nexport function resolveCliAllowedHosts(\n flagValue: readonly string[] | undefined,\n env: { MREACT_ROUTER_ALLOWED_HOSTS?: string | undefined },\n): readonly string[] | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_ALLOWED_HOSTS;\n return envValue === undefined || envValue === \"\" ? undefined : parseCliAllowedHosts(envValue);\n}\n\nexport function createCliRequestLogger(): AppRouterLogger {\n return {\n error(event) {\n if (event.type === \"router:request:error\") {\n console.error(formatCliRequestLogEvent(event));\n }\n },\n info(event) {\n if (event.type === \"router:request:end\") {\n console.log(formatCliRequestLogEvent(event));\n }\n },\n };\n}\n\nfunction parseCliRequestLogMode(value: string): CliRequestLogMode {\n if (value === \"requests\") {\n return value;\n }\n\n throw new Error(`Unsupported log mode ${JSON.stringify(value)}. Expected \"requests\".`);\n}\n\nfunction parseCliPort(value: string): number {\n const port = Number(value);\n\n if (Number.isInteger(port) && port >= 0 && port <= 65535) {\n return port;\n }\n\n throw new Error(\n `Unsupported port ${JSON.stringify(value)}. Expected an integer from 0 to 65535.`,\n );\n}\n\nfunction parseCliHostPolicy(value: string): RequestHostPolicy {\n if (value === \"strict\" || value === \"trusted-proxy\") {\n return value;\n }\n\n throw new Error(\n `Unsupported host policy ${JSON.stringify(value)}. Expected \"strict\" or \"trusted-proxy\".`,\n );\n}\n\nfunction parseCliAllowedHosts(value: string): readonly string[] {\n return value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry !== \"\");\n}\n\nfunction parseCliBuildTarget(value: string): CliBuildTarget {\n if (value === \"node\" || value === \"cloudflare\" || value === \"aws-lambda\" || value === \"all\") {\n return value;\n }\n\n throw new Error(\n `Unsupported build target ${JSON.stringify(value)}. Expected \"node\", \"cloudflare\", \"aws-lambda\", or \"all\".`,\n );\n}\n\nfunction parseCliClientSourceMapMode(value: string): AppRouterClientSourceMapMode {\n if (value === \"none\" || value === \"hidden\" || value === \"linked\") {\n return value;\n }\n\n throw new Error(\n `Unsupported client source map mode ${JSON.stringify(value)} for --client-source-maps. Expected \"none\", \"hidden\", or \"linked\".`,\n );\n}\n\nfunction parseCliAwsLambdaPreloadMode(value: string): AwsLambdaGeneratedHandlerPreloadMode {\n if (\n value === \"all\" ||\n value === \"hot-route-requests\" ||\n value === \"middleware\" ||\n value === \"none\"\n ) {\n return value;\n }\n\n throw new Error(\n `Unsupported aws-lambda-preload ${JSON.stringify(value)}. Expected \"middleware\", \"hot-route-requests\", \"all\", or \"none\".`,\n );\n}\n\nfunction parseCliAwsLambdaPreloadRoutes(value: string): readonly string[] {\n const routes = value.split(\",\").filter((route) => route.startsWith(\"/\"));\n if (routes.length === 0 || routes.join(\",\") !== value) {\n throw new Error(\"aws-lambda-preload-routes must be a comma-separated list of absolute routes.\");\n }\n return routes;\n}\n\nfunction readOptionValue(values: readonly string[], index: number, name: string): string {\n const value = values[index + 1];\n\n if (value === undefined || value.startsWith(\"-\")) {\n throw new Error(`Missing value for --${name}`);\n }\n\n return value;\n}\n\nfunction formatCliRequestLogEvent(event: AppRouterLogEvent): string {\n if (event.type === \"router:request:error\") {\n return `[mreact] ${event.method} ${event.path} error ${event.durationMs}ms ${event.runtime} ${event.error.name}: ${event.error.message}`;\n }\n\n if (event.type === \"router:request:end\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} ${event.durationMs}ms ${event.runtime}`;\n }\n\n if (event.type === \"router:request:timing\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} ${event.durationMs}ms ${event.runtime}`;\n }\n\n if (event.type === \"router:render:timing\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} render timing`;\n }\n\n if (event.type === \"router:csp:inline-nonce-warning\") {\n return `[mreact] ${event.path} CSP ${event.directive} will block inline <${event.tag}> without a matching nonce`;\n }\n\n return `[mreact] ${event.method} ${event.path} ${event.runtime}`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AppRouterLogger, AppRouterLogEvent } from \"./logger.js\";\nimport {\n appRouterBuildTargetMetadata,\n type AppRouterBuildTarget,\n type AppRouterClientSourceMapMode,\n} from \"./config.js\";\nimport type { RequestHostPolicy } from \"./serve.js\";\nimport type { AwsLambdaGeneratedHandlerPreloadMode } from \"./build.js\";\n\nexport type CliRequestLogMode = \"requests\";\nexport type CliBuildTarget = AppRouterBuildTarget | \"all\";\n\nexport interface ParsedCliArguments {\n awsLambdaPreload?: AwsLambdaGeneratedHandlerPreloadMode | undefined;\n awsLambdaPreloadRoutes?: readonly string[] | undefined;\n clientSourceMaps?: AppRouterClientSourceMapMode | undefined;\n command: string;\n allowedHosts?: readonly string[] | undefined;\n from?: string | undefined;\n handler?: string | undefined;\n help?: boolean | undefined;\n host?: string | undefined;\n hostPolicy?: RequestHostPolicy | undefined;\n json?: boolean | undefined;\n log?: CliRequestLogMode | undefined;\n out?: string | undefined;\n port?: number | undefined;\n routeArg?: string | undefined;\n skipRuntimeDependencyCheck?: boolean | undefined;\n target?: CliBuildTarget | undefined;\n trustForwardedProto?: boolean | undefined;\n worker?: string | undefined;\n}\n\nexport function parseCliArguments(argv: readonly string[]): ParsedCliArguments {\n const first = argv[0];\n const rootHelp = first === \"--help\" || first === \"-h\";\n const command = rootHelp ? \"help\" : first === undefined || first.startsWith(\"-\") ? \"dev\" : first;\n const parsed: ParsedCliArguments = rootHelp ? { command, help: true } : { command };\n const startIndex = rootHelp || command === first ? 1 : 0;\n\n for (let index = startIndex; index < argv.length; index += 1) {\n const value = argv[index];\n\n if (value === undefined) {\n continue;\n }\n\n if (value === \"--help\" || value === \"-h\") {\n parsed.help = true;\n continue;\n }\n\n if (value === \"--json\") {\n if (command !== \"boundaries\") {\n throw new Error(\"--json is only supported by the boundaries command\");\n }\n parsed.json = true;\n continue;\n }\n\n if (value === \"--log\") {\n parsed.log = parseCliRequestLogMode(readOptionValue(argv, index, \"log\"));\n index += 1;\n continue;\n }\n\n if (value === \"--port\") {\n parsed.port = parseCliPort(readOptionValue(argv, index, \"port\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--port=\")) {\n parsed.port = parseCliPort(value.slice(\"--port=\".length));\n continue;\n }\n\n if (value === \"--host\") {\n parsed.host = readOptionValue(argv, index, \"host\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--host=\")) {\n parsed.host = value.slice(\"--host=\".length);\n continue;\n }\n\n if (value === \"--host-policy\") {\n parsed.hostPolicy = parseCliHostPolicy(readOptionValue(argv, index, \"host-policy\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--host-policy=\")) {\n parsed.hostPolicy = parseCliHostPolicy(value.slice(\"--host-policy=\".length));\n continue;\n }\n\n if (value === \"--allowed-hosts\") {\n parsed.allowedHosts = parseCliAllowedHosts(readOptionValue(argv, index, \"allowed-hosts\"));\n index += 1;\n continue;\n }\n\n if (value === \"--trust-forwarded-proto\") {\n if (command !== \"start\") {\n throw new Error(\"--trust-forwarded-proto is only supported by the start command\");\n }\n parsed.trustForwardedProto = true;\n continue;\n }\n\n if (value.startsWith(\"--allowed-hosts=\")) {\n parsed.allowedHosts = parseCliAllowedHosts(value.slice(\"--allowed-hosts=\".length));\n continue;\n }\n\n if (value === \"--from\") {\n parsed.from = readOptionValue(argv, index, \"from\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--from=\")) {\n parsed.from = value.slice(\"--from=\".length);\n continue;\n }\n\n if (value === \"--out\") {\n parsed.out = readOptionValue(argv, index, \"out\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--out=\")) {\n parsed.out = value.slice(\"--out=\".length);\n continue;\n }\n\n if (value === \"--skip-runtime-dependency-check\") {\n parsed.skipRuntimeDependencyCheck = true;\n continue;\n }\n\n if (value === \"--handler\") {\n parsed.handler = readOptionValue(argv, index, \"handler\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--handler=\")) {\n parsed.handler = value.slice(\"--handler=\".length);\n continue;\n }\n\n if (value === \"--worker\") {\n parsed.worker = readOptionValue(argv, index, \"worker\");\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--worker=\")) {\n parsed.worker = value.slice(\"--worker=\".length);\n continue;\n }\n\n if (value.startsWith(\"--log=\")) {\n parsed.log = parseCliRequestLogMode(value.slice(\"--log=\".length));\n continue;\n }\n\n if (value === \"--target\") {\n parsed.target = parseCliBuildTarget(readOptionValue(argv, index, \"target\"));\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--target=\")) {\n parsed.target = parseCliBuildTarget(value.slice(\"--target=\".length));\n continue;\n }\n\n if (value === \"--client-source-maps\") {\n parsed.clientSourceMaps = parseCliClientSourceMapMode(\n readOptionValue(argv, index, \"client-source-maps\"),\n );\n index += 1;\n continue;\n }\n\n if (value === \"--aws-lambda-preload\") {\n parsed.awsLambdaPreload = parseCliAwsLambdaPreloadMode(\n readOptionValue(argv, index, \"aws-lambda-preload\"),\n );\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--aws-lambda-preload=\")) {\n parsed.awsLambdaPreload = parseCliAwsLambdaPreloadMode(\n value.slice(\"--aws-lambda-preload=\".length),\n );\n continue;\n }\n\n if (value === \"--aws-lambda-preload-routes\") {\n parsed.awsLambdaPreloadRoutes = parseCliAwsLambdaPreloadRoutes(\n readOptionValue(argv, index, \"aws-lambda-preload-routes\"),\n );\n index += 1;\n continue;\n }\n\n if (value.startsWith(\"--aws-lambda-preload-routes=\")) {\n parsed.awsLambdaPreloadRoutes = parseCliAwsLambdaPreloadRoutes(\n value.slice(\"--aws-lambda-preload-routes=\".length),\n );\n continue;\n }\n\n if (value.startsWith(\"--client-source-maps=\")) {\n parsed.clientSourceMaps = parseCliClientSourceMapMode(\n value.slice(\"--client-source-maps=\".length),\n );\n continue;\n }\n\n if (value.startsWith(\"-\")) {\n throw new Error(`Unknown option ${value}`);\n }\n\n if (parsed.routeArg !== undefined) {\n throw new Error(`Unexpected argument ${value}`);\n }\n\n parsed.routeArg = value;\n }\n\n return parsed;\n}\n\nexport function formatCliHelp(command?: string | undefined): string {\n const defaultTargetLabel = formatBuildTargetDisplayList(\n appRouterBuildTargetMetadata.defaultTargets,\n );\n const allTargetValues = formatBuildTargetValueList(appRouterBuildTargetMetadata.allTargets);\n\n if (command === \"build\") {\n return [\n \"Usage: mreact-router build [appDir] [options]\",\n \"\",\n \"Build an mreact app router project.\",\n \"\",\n \"Options:\",\n \" --target=node|cloudflare|aws-lambda|all\",\n ` Select build artifacts. Defaults to ${defaultTargetLabel.toLowerCase()}. all selects ${allTargetValues}. aws-lambda writes .mreact/aws-lambda/mreact-handler.mjs and .mreact/server/import-policy.json.`,\n \" --client-source-maps=none|hidden\",\n \" Control production client source map output.\",\n \" --aws-lambda-preload=middleware|hot-route-requests|all|none\",\n \" Select generated Lambda initialization preload. Defaults to middleware.\",\n \" --aws-lambda-preload-routes=/,/login\",\n \" Select routes for hot-route-requests initialization preload.\",\n \" -h, --help\",\n \" Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router build --target=node\",\n \" mreact-router build --target=cloudflare\",\n \" mreact-router build --target=aws-lambda\",\n \" mreact-router build --target=all\",\n ].join(\"\\n\");\n }\n\n if (command === \"boundaries\") {\n return [\n \"Usage: mreact-router boundaries [appDir] [options]\",\n \"\",\n \"Inspect server and client component boundaries for every route without building.\",\n \"\",\n \"Project resolution:\",\n \" Without appDir, load the same Vite project configuration as build.\",\n \" With appDir, inspect that directory directly.\",\n \"\",\n \"Classifications:\",\n \" server-render, client-boundary, client-route, server-only, shared, unknown\",\n \"\",\n \"Options:\",\n \" --json Print a machine-readable versioned report.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router boundaries\",\n \" mreact-router boundaries src/app --json\",\n ].join(\"\\n\");\n }\n\n if (command === \"package\") {\n return [\n \"Usage: mreact-router package <target> [options]\",\n \"\",\n \"Package generated build output into a deployable artifact directory.\",\n \"\",\n \"Targets:\",\n \" aws-lambda Minimal AWS Lambda asset directory.\",\n \" cloudflare-pages Cloudflare Pages advanced mode output with _worker.js.\",\n \"\",\n \"Options:\",\n \" --from <dir> Build output directory. Default: .mreact\",\n \" --out <dir> Output directory. Defaults to .lambda for aws-lambda and .mreact/pages for cloudflare-pages.\",\n \" --skip-runtime-dependency-check\",\n \" For aws-lambda only, skip the production node_modules check when a later deploy step installs dependencies into the package directory.\",\n \" --handler <entry>\",\n \" For aws-lambda only, bundle a custom handler entry into mreact-handler.mjs. App-local extensionless TypeScript imports are bundled; package imports stay external.\",\n \" --worker <entry>\",\n \" For cloudflare-pages only, bundle a custom Worker entry into _worker.js.\",\n \" --aws-lambda-preload=middleware|hot-route-requests|all|none\",\n \" Override generated Lambda initialization preload. Omission preserves the build policy; legacy output without policy metadata falls back to middleware.\",\n \" --aws-lambda-preload-routes=/,/login\",\n \" Select routes for hot-route-requests initialization preload.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Examples:\",\n \" mreact-router package aws-lambda --from .mreact --out .lambda\",\n \" mreact-router package cloudflare-pages --from .mreact --out .mreact/pages\",\n ].join(\"\\n\");\n }\n\n if (command === \"start\") {\n return [\n \"Usage: mreact-router start [outDir] [options]\",\n \"\",\n \"Serve built mreact app router output with the Node adapter.\",\n \"\",\n \"Options:\",\n \" --host <host> Bind address. Default: 127.0.0.1. Use 0.0.0.0 inside containers behind explicit port publishing or a reverse proxy.\",\n \" --host-policy=strict|trusted-proxy\",\n \" Control Host header trust for request origin reconstruction.\",\n \" --allowed-hosts <host[,host...]>\",\n \" Exact Host header allow-list for public deployments.\",\n \" --trust-forwarded-proto\",\n \" Trust the first X-Forwarded-Proto value. Enable only when a trusted proxy overwrites the header and the Node port is not publicly reachable.\",\n \" --log=requests Print request summaries.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Environment:\",\n \" HOST Bind address when --host is not set.\",\n \" MREACT_ROUTER_HOST_POLICY\",\n \" Host header trust policy when --host-policy is not set.\",\n \" MREACT_ROUTER_ALLOWED_HOSTS\",\n \" Comma-separated Host header allow-list when --allowed-hosts is not set.\",\n \" MREACT_ROUTER_TRUST_FORWARDED_PROTO\",\n \" Set to 1 to trust X-Forwarded-Proto when the flag is not set.\",\n \" PORT TCP port. Default: 3001.\",\n ].join(\"\\n\");\n }\n\n if (command === \"dev\") {\n return [\n \"Usage: mreact-router dev [appDir] [options]\",\n \"\",\n \"Start the mreact app router development server.\",\n \"\",\n \"Options:\",\n \" --host <host> Bind address. Default: 127.0.0.1. Use 0.0.0.0 for LAN or device testing.\",\n \" --port <port> TCP port. Overrides PORT and vite.config.ts server.port.\",\n \" --log=requests Print request summaries.\",\n \" -h, --help Show this help message.\",\n \"\",\n \"Environment:\",\n \" HOST Bind address when --host is not set.\",\n \" PORT TCP port when --port is not set.\",\n ].join(\"\\n\");\n }\n\n return [\n \"Usage: mreact-router <command> [options]\",\n \"\",\n \"Commands:\",\n \" dev [appDir] Start the development server.\",\n ` build [appDir] Build ${defaultTargetLabel} artifacts by default.`,\n \" boundaries [appDir] Inspect route and component boundaries.\",\n \" build --target=aws-lambda Build Lambda artifacts including generated handler and import policy.\",\n \" start [outDir] Serve built Node output.\",\n \" package aws-lambda --from .mreact --out .lambda\",\n \" Package a minimal AWS Lambda asset directory.\",\n \" package aws-lambda --handler lambda/mreact-handler.ts\",\n \" Bundle a custom Lambda handler with app-local server imports.\",\n \" package cloudflare-pages --from .mreact --out .mreact/pages\",\n \" Package Cloudflare Pages advanced mode output.\",\n \" help [command] Show help.\",\n \"\",\n \"Options:\",\n \" -h, --help Show this help message.\",\n \" --log=requests Print request summaries for dev/start.\",\n \"\",\n \"Examples:\",\n \" mreact-router build --target=cloudflare\",\n \" mreact-router build --target=aws-lambda\",\n \" mreact-router build --target=all\",\n \" mreact-router package aws-lambda --from .mreact --out .lambda\",\n \" mreact-router build --help\",\n ].join(\"\\n\");\n}\n\nexport function buildTargetsFromCliTarget(\n target: CliBuildTarget | undefined,\n): readonly AppRouterBuildTarget[] | undefined {\n if (target === undefined) {\n return undefined;\n }\n\n return target === \"all\" ? appRouterBuildTargetMetadata.allTargets : [target];\n}\n\nfunction formatBuildTargetDisplayList(targets: readonly AppRouterBuildTarget[]): string {\n return targets.map(formatBuildTargetDisplayName).join(\", \");\n}\n\nfunction formatBuildTargetDisplayName(target: AppRouterBuildTarget): string {\n if (target === \"aws-lambda\") return \"AWS Lambda\";\n return target[0]?.toUpperCase() + target.slice(1);\n}\n\nfunction formatBuildTargetValueList(targets: readonly AppRouterBuildTarget[]): string {\n if (targets.length < 2) return targets[0] ?? \"\";\n return `${targets.slice(0, -1).join(\", \")}, and ${targets.at(-1)}`;\n}\n\nexport function resolveCliRequestLogMode(\n flagValue: CliRequestLogMode | undefined,\n env: { MREACT_ROUTER_LOG?: string | undefined },\n): CliRequestLogMode | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_LOG;\n if (envValue === undefined || envValue === \"\") {\n return undefined;\n }\n\n return parseCliRequestLogMode(envValue);\n}\n\nexport function resolveCliHost(\n flagValue: string | undefined,\n env: { HOST?: string | undefined },\n): string {\n if (flagValue !== undefined && flagValue !== \"\") {\n return flagValue;\n }\n\n const envValue = env.HOST;\n return envValue === undefined || envValue === \"\" ? \"127.0.0.1\" : envValue;\n}\n\nexport function resolveCliDevPort(\n flagValue: number | undefined,\n env: { PORT?: string | undefined },\n viteConfigPort: number | undefined,\n): number | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.PORT;\n return envValue === undefined || envValue === \"\" ? viteConfigPort : parseCliPort(envValue);\n}\n\nexport function resolveCliHostPolicy(\n flagValue: RequestHostPolicy | undefined,\n env: { MREACT_ROUTER_HOST_POLICY?: string | undefined },\n): RequestHostPolicy | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_HOST_POLICY;\n return envValue === undefined || envValue === \"\" ? undefined : parseCliHostPolicy(envValue);\n}\n\nexport function resolveCliAllowedHosts(\n flagValue: readonly string[] | undefined,\n env: { MREACT_ROUTER_ALLOWED_HOSTS?: string | undefined },\n): readonly string[] | undefined {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n const envValue = env.MREACT_ROUTER_ALLOWED_HOSTS;\n return envValue === undefined || envValue === \"\" ? undefined : parseCliAllowedHosts(envValue);\n}\n\nexport function resolveCliTrustForwardedProto(\n flagValue: boolean | undefined,\n env: { MREACT_ROUTER_TRUST_FORWARDED_PROTO?: string | undefined },\n): boolean {\n if (flagValue !== undefined) {\n return flagValue;\n }\n\n return env.MREACT_ROUTER_TRUST_FORWARDED_PROTO === \"1\";\n}\n\nexport function createCliRequestLogger(): AppRouterLogger {\n return {\n error(event) {\n if (event.type === \"router:request:error\") {\n console.error(formatCliRequestLogEvent(event));\n }\n },\n info(event) {\n if (event.type === \"router:request:end\") {\n console.log(formatCliRequestLogEvent(event));\n }\n },\n };\n}\n\nfunction parseCliRequestLogMode(value: string): CliRequestLogMode {\n if (value === \"requests\") {\n return value;\n }\n\n throw new Error(`Unsupported log mode ${JSON.stringify(value)}. Expected \"requests\".`);\n}\n\nfunction parseCliPort(value: string): number {\n const port = Number(value);\n\n if (Number.isInteger(port) && port >= 0 && port <= 65535) {\n return port;\n }\n\n throw new Error(\n `Unsupported port ${JSON.stringify(value)}. Expected an integer from 0 to 65535.`,\n );\n}\n\nfunction parseCliHostPolicy(value: string): RequestHostPolicy {\n if (value === \"strict\" || value === \"trusted-proxy\") {\n return value;\n }\n\n throw new Error(\n `Unsupported host policy ${JSON.stringify(value)}. Expected \"strict\" or \"trusted-proxy\".`,\n );\n}\n\nfunction parseCliAllowedHosts(value: string): readonly string[] {\n return value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry !== \"\");\n}\n\nfunction parseCliBuildTarget(value: string): CliBuildTarget {\n if (value === \"node\" || value === \"cloudflare\" || value === \"aws-lambda\" || value === \"all\") {\n return value;\n }\n\n throw new Error(\n `Unsupported build target ${JSON.stringify(value)}. Expected \"node\", \"cloudflare\", \"aws-lambda\", or \"all\".`,\n );\n}\n\nfunction parseCliClientSourceMapMode(value: string): AppRouterClientSourceMapMode {\n if (value === \"none\" || value === \"hidden\" || value === \"linked\") {\n return value;\n }\n\n throw new Error(\n `Unsupported client source map mode ${JSON.stringify(value)} for --client-source-maps. Expected \"none\", \"hidden\", or \"linked\".`,\n );\n}\n\nfunction parseCliAwsLambdaPreloadMode(value: string): AwsLambdaGeneratedHandlerPreloadMode {\n if (\n value === \"all\" ||\n value === \"hot-route-requests\" ||\n value === \"middleware\" ||\n value === \"none\"\n ) {\n return value;\n }\n\n throw new Error(\n `Unsupported aws-lambda-preload ${JSON.stringify(value)}. Expected \"middleware\", \"hot-route-requests\", \"all\", or \"none\".`,\n );\n}\n\nfunction parseCliAwsLambdaPreloadRoutes(value: string): readonly string[] {\n const routes = value.split(\",\").filter((route) => route.startsWith(\"/\"));\n if (routes.length === 0 || routes.join(\",\") !== value) {\n throw new Error(\"aws-lambda-preload-routes must be a comma-separated list of absolute routes.\");\n }\n return routes;\n}\n\nfunction readOptionValue(values: readonly string[], index: number, name: string): string {\n const value = values[index + 1];\n\n if (value === undefined || value.startsWith(\"-\")) {\n throw new Error(`Missing value for --${name}`);\n }\n\n return value;\n}\n\nfunction formatCliRequestLogEvent(event: AppRouterLogEvent): string {\n if (event.type === \"router:request:error\") {\n return `[mreact] ${event.method} ${event.path} error ${event.durationMs}ms ${event.runtime} ${event.error.name}: ${event.error.message}`;\n }\n\n if (event.type === \"router:request:end\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} ${event.durationMs}ms ${event.runtime}`;\n }\n\n if (event.type === \"router:request:timing\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} ${event.durationMs}ms ${event.runtime}`;\n }\n\n if (event.type === \"router:render:timing\") {\n return `[mreact] ${event.method} ${event.path} ${event.status} render timing`;\n }\n\n if (event.type === \"router:csp:inline-nonce-warning\") {\n return `[mreact] ${event.path} CSP ${event.directive} will block inline <${event.tag}> without a matching nonce`;\n }\n\n return `[mreact] ${event.method} ${event.path} ${event.runtime}`;\n}\n"]}
|
package/dist/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import { readFile } from "node:fs/promises";
|
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { buildApp, packageAwsLambdaArtifact, packageCloudflarePagesArtifact, } from "./build.js";
|
|
5
5
|
import { analyzeAppBoundaries, formatBoundaryReport, formatBoundaryReportJson, } from "./boundaries.js";
|
|
6
|
-
import { buildTargetsFromCliTarget, createCliRequestLogger, formatCliHelp, parseCliArguments, resolveCliAllowedHosts, resolveCliDevPort, resolveCliHost, resolveCliHostPolicy, resolveCliRequestLogMode, } from "./cli-options.js";
|
|
6
|
+
import { buildTargetsFromCliTarget, createCliRequestLogger, formatCliHelp, parseCliArguments, resolveCliAllowedHosts, resolveCliDevPort, resolveCliHost, resolveCliHostPolicy, resolveCliRequestLogMode, resolveCliTrustForwardedProto, } from "./cli-options.js";
|
|
7
7
|
import { startDevServer } from "./dev-server.js";
|
|
8
8
|
import { startServer } from "./serve.js";
|
|
9
9
|
import { loadMreactRouterViteConfigDetails } from "./vite-config.js";
|
|
@@ -132,6 +132,7 @@ if (parsed !== undefined) {
|
|
|
132
132
|
logger,
|
|
133
133
|
outDir: resolve(routeArg ?? ".mreact"),
|
|
134
134
|
port: Number(process.env.PORT ?? 3001),
|
|
135
|
+
trustForwardedProto: resolveCliTrustForwardedProto(parsed.trustForwardedProto, process.env),
|
|
135
136
|
});
|
|
136
137
|
console.log(`mreact app router serving built output at ${server.url}`);
|
|
137
138
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport {\n buildApp,\n packageAwsLambdaArtifact,\n packageCloudflarePagesArtifact,\n type BuildAppPhase,\n type BuildAppProgressEvent,\n} from \"./build.js\";\nimport {\n analyzeAppBoundaries,\n formatBoundaryReport,\n formatBoundaryReportJson,\n} from \"./boundaries.js\";\nimport {\n buildTargetsFromCliTarget,\n createCliRequestLogger,\n type CliBuildTarget,\n formatCliHelp,\n parseCliArguments,\n resolveCliAllowedHosts,\n resolveCliDevPort,\n resolveCliHost,\n resolveCliHostPolicy,\n resolveCliRequestLogMode,\n} from \"./cli-options.js\";\nimport { startDevServer } from \"./dev-server.js\";\nimport { startServer } from \"./serve.js\";\nimport { loadMreactRouterViteConfigDetails } from \"./vite-config.js\";\n\nlet parsed;\n\ntry {\n parsed = parseCliArguments(process.argv.slice(2));\n} catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n}\n\nif (parsed !== undefined) {\n const command = parsed.command;\n const routeArg = parsed.routeArg;\n\n try {\n if (parsed.help === true || command === \"help\") {\n console.log(formatCliHelp(command === \"help\" ? routeArg : command));\n } else {\n const logger =\n resolveCliRequestLogMode(parsed.log, process.env) === \"requests\"\n ? createCliRequestLogger()\n : undefined;\n\n if (command === \"build\") {\n const startedAt = performance.now();\n let activeBuildPhase: BuildAppPhase | undefined;\n console.log(`mreact-router build v${await readRouterCliVersion()}`);\n console.log(`Target: ${formatCliBuildTarget(parsed.target)}`);\n console.log(`Root: ${process.cwd()}`);\n console.log(\"Config: loading...\");\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n try {\n const result = await buildApp({\n ...loaded.project,\n ...(parsed.awsLambdaPreload === undefined\n ? {}\n : { awsLambdaPreload: parsed.awsLambdaPreload }),\n ...(parsed.awsLambdaPreloadRoutes === undefined\n ? {}\n : { awsLambdaPreloadRoutes: parsed.awsLambdaPreloadRoutes }),\n ...(parsed.clientSourceMaps === undefined\n ? {}\n : { clientSourceMaps: parsed.clientSourceMaps }),\n onBoundaryReport(report) {\n console.log(formatBoundaryReport(report).trimEnd());\n },\n onBuildProgress(event) {\n activeBuildPhase = updateBuildProgressLog(event, activeBuildPhase);\n },\n outDir: resolve(\".mreact\"),\n targets: buildTargetsFromCliTarget(parsed.target),\n viteConfig: loaded.viteConfig,\n });\n console.log(\n `Built ${result.routes.length} routes in ${formatDurationSeconds(performance.now() - startedAt)}.`,\n );\n } catch (error) {\n if (activeBuildPhase !== undefined) {\n throw new Error(\n `Build failed during ${formatBuildPhaseFailureLabel(activeBuildPhase)}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n throw error;\n }\n } else if (command === \"boundaries\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n const report = await analyzeAppBoundaries({\n ...loaded.project,\n viteConfig: loaded.viteConfig,\n });\n console.log(\n (parsed.json === true\n ? formatBoundaryReportJson(report)\n : formatBoundaryReport(report)\n ).trimEnd(),\n );\n } else if (command === \"package\") {\n if (routeArg === \"aws-lambda\") {\n const manifest = await packageAwsLambdaArtifact({\n ...(parsed.awsLambdaPreload === undefined\n ? {}\n : { awsLambdaPreload: parsed.awsLambdaPreload }),\n ...(parsed.awsLambdaPreloadRoutes === undefined\n ? {}\n : { awsLambdaPreloadRoutes: parsed.awsLambdaPreloadRoutes }),\n fromDir: resolve(parsed.from ?? \".mreact\"),\n ...(parsed.handler === undefined ? {} : { handlerEntry: resolve(parsed.handler) }),\n outDir: resolve(parsed.out ?? \".lambda\"),\n skipRuntimeDependencyCheck: parsed.skipRuntimeDependencyCheck,\n });\n console.log(\n `Packaged AWS Lambda artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else if (routeArg === \"cloudflare-pages\") {\n const manifest = await packageCloudflarePagesArtifact({\n fromDir: resolve(parsed.from ?? \".mreact\"),\n outDir: resolve(parsed.out ?? \".mreact/pages\"),\n ...(parsed.worker === undefined ? {} : { workerEntry: resolve(parsed.worker) }),\n });\n console.log(\n `Packaged Cloudflare Pages artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else {\n throw new Error(\n `Unsupported package target ${JSON.stringify(routeArg)}. Expected \"aws-lambda\" or \"cloudflare-pages\".`,\n );\n }\n } else if (command === \"dev\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"serve\", cwd: process.cwd() })\n : {\n project: { appDir: resolve(routeArg) },\n serverPort: undefined,\n viteConfig: undefined,\n };\n const server = await startDevServer({\n ...loaded.project,\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n port: resolveCliDevPort(parsed.port, process.env, loaded.serverPort),\n viteConfig: loaded.viteConfig,\n });\n console.log(`mreact app router ready at ${server.url}`);\n } else if (command === \"start\") {\n const server = await startServer({\n allowedHosts: resolveCliAllowedHosts(parsed.allowedHosts, process.env),\n hostPolicy: resolveCliHostPolicy(parsed.hostPolicy, process.env),\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n outDir: resolve(routeArg ?? \".mreact\"),\n port: Number(process.env.PORT ?? 3001),\n });\n console.log(`mreact app router serving built output at ${server.url}`);\n } else {\n console.error(`Unknown command: ${command}`);\n process.exitCode = 1;\n }\n }\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n }\n}\n\nasync function readRouterCliVersion(): Promise<string> {\n try {\n const source = await readFile(new URL(\"../package.json\", import.meta.url), \"utf8\");\n const json = JSON.parse(source) as { version?: unknown };\n\n return typeof json.version === \"string\" ? json.version : \"unknown\";\n } catch {\n return \"unknown\";\n }\n}\n\nfunction formatCliBuildTarget(target: CliBuildTarget | undefined): string {\n return target ?? \"default\";\n}\n\nfunction updateBuildProgressLog(\n event: BuildAppProgressEvent,\n activePhase: BuildAppPhase | undefined,\n): BuildAppPhase | undefined {\n if (event.kind === \"routes-discovered\") {\n console.log(`Routes: ${event.count} discovered`);\n return activePhase;\n }\n\n if (event.kind !== \"phase-start\") {\n return activePhase;\n }\n\n const message = buildPhaseProgressMessage(event.phase);\n if (message !== undefined) {\n console.log(message);\n }\n\n return event.phase;\n}\n\nfunction buildPhaseProgressMessage(phase: BuildAppPhase): string | undefined {\n switch (phase) {\n case \"scan\":\n return \"Routes: discovering...\";\n case \"serverModules\":\n return \"Server: building...\";\n case \"clientBundles\":\n return \"Client: building...\";\n case \"writeManifests\":\n return \"Artifacts: writing...\";\n default:\n return undefined;\n }\n}\n\nfunction formatBuildPhaseFailureLabel(phase: BuildAppPhase): string {\n switch (phase) {\n case \"scan\":\n return \"route discovery\";\n case \"collectFiles\":\n return \"source file collection\";\n case \"analyzeSources\":\n return \"source analysis\";\n case \"validate\":\n return \"production route validation\";\n case \"prepareOutput\":\n return \"output preparation\";\n case \"publicAssets\":\n return \"public asset collection\";\n case \"serverActionManifest\":\n return \"server action manifest generation\";\n case \"serverModules\":\n return \"server output build\";\n case \"importPolicy\":\n return \"import policy generation\";\n case \"serverModuleArtifacts\":\n return \"server artifact writing\";\n case \"clientBundles\":\n return \"client output build\";\n case \"navigationRuntime\":\n return \"navigation runtime build\";\n case \"prerender\":\n return \"static prerender\";\n case \"cloudflare\":\n return \"Cloudflare artifact generation\";\n case \"writeManifests\":\n return \"manifest writing\";\n case \"adapterArtifacts\":\n return \"adapter artifact writing\";\n }\n}\n\nfunction formatDurationSeconds(ms: number): string {\n const seconds = ms / 1000;\n\n if (seconds < 10) {\n return `${Math.round(seconds * 10) / 10}s`;\n }\n\n return `${Math.round(seconds)}s`;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n\nimport { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport {\n buildApp,\n packageAwsLambdaArtifact,\n packageCloudflarePagesArtifact,\n type BuildAppPhase,\n type BuildAppProgressEvent,\n} from \"./build.js\";\nimport {\n analyzeAppBoundaries,\n formatBoundaryReport,\n formatBoundaryReportJson,\n} from \"./boundaries.js\";\nimport {\n buildTargetsFromCliTarget,\n createCliRequestLogger,\n type CliBuildTarget,\n formatCliHelp,\n parseCliArguments,\n resolveCliAllowedHosts,\n resolveCliDevPort,\n resolveCliHost,\n resolveCliHostPolicy,\n resolveCliRequestLogMode,\n resolveCliTrustForwardedProto,\n} from \"./cli-options.js\";\nimport { startDevServer } from \"./dev-server.js\";\nimport { startServer } from \"./serve.js\";\nimport { loadMreactRouterViteConfigDetails } from \"./vite-config.js\";\n\nlet parsed;\n\ntry {\n parsed = parseCliArguments(process.argv.slice(2));\n} catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n}\n\nif (parsed !== undefined) {\n const command = parsed.command;\n const routeArg = parsed.routeArg;\n\n try {\n if (parsed.help === true || command === \"help\") {\n console.log(formatCliHelp(command === \"help\" ? routeArg : command));\n } else {\n const logger =\n resolveCliRequestLogMode(parsed.log, process.env) === \"requests\"\n ? createCliRequestLogger()\n : undefined;\n\n if (command === \"build\") {\n const startedAt = performance.now();\n let activeBuildPhase: BuildAppPhase | undefined;\n console.log(`mreact-router build v${await readRouterCliVersion()}`);\n console.log(`Target: ${formatCliBuildTarget(parsed.target)}`);\n console.log(`Root: ${process.cwd()}`);\n console.log(\"Config: loading...\");\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n try {\n const result = await buildApp({\n ...loaded.project,\n ...(parsed.awsLambdaPreload === undefined\n ? {}\n : { awsLambdaPreload: parsed.awsLambdaPreload }),\n ...(parsed.awsLambdaPreloadRoutes === undefined\n ? {}\n : { awsLambdaPreloadRoutes: parsed.awsLambdaPreloadRoutes }),\n ...(parsed.clientSourceMaps === undefined\n ? {}\n : { clientSourceMaps: parsed.clientSourceMaps }),\n onBoundaryReport(report) {\n console.log(formatBoundaryReport(report).trimEnd());\n },\n onBuildProgress(event) {\n activeBuildPhase = updateBuildProgressLog(event, activeBuildPhase);\n },\n outDir: resolve(\".mreact\"),\n targets: buildTargetsFromCliTarget(parsed.target),\n viteConfig: loaded.viteConfig,\n });\n console.log(\n `Built ${result.routes.length} routes in ${formatDurationSeconds(performance.now() - startedAt)}.`,\n );\n } catch (error) {\n if (activeBuildPhase !== undefined) {\n throw new Error(\n `Build failed during ${formatBuildPhaseFailureLabel(activeBuildPhase)}: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n throw error;\n }\n } else if (command === \"boundaries\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"build\", cwd: process.cwd() })\n : { project: { appDir: resolve(routeArg) }, viteConfig: undefined };\n const report = await analyzeAppBoundaries({\n ...loaded.project,\n viteConfig: loaded.viteConfig,\n });\n console.log(\n (parsed.json === true\n ? formatBoundaryReportJson(report)\n : formatBoundaryReport(report)\n ).trimEnd(),\n );\n } else if (command === \"package\") {\n if (routeArg === \"aws-lambda\") {\n const manifest = await packageAwsLambdaArtifact({\n ...(parsed.awsLambdaPreload === undefined\n ? {}\n : { awsLambdaPreload: parsed.awsLambdaPreload }),\n ...(parsed.awsLambdaPreloadRoutes === undefined\n ? {}\n : { awsLambdaPreloadRoutes: parsed.awsLambdaPreloadRoutes }),\n fromDir: resolve(parsed.from ?? \".mreact\"),\n ...(parsed.handler === undefined ? {} : { handlerEntry: resolve(parsed.handler) }),\n outDir: resolve(parsed.out ?? \".lambda\"),\n skipRuntimeDependencyCheck: parsed.skipRuntimeDependencyCheck,\n });\n console.log(\n `Packaged AWS Lambda artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else if (routeArg === \"cloudflare-pages\") {\n const manifest = await packageCloudflarePagesArtifact({\n fromDir: resolve(parsed.from ?? \".mreact\"),\n outDir: resolve(parsed.out ?? \".mreact/pages\"),\n ...(parsed.worker === undefined ? {} : { workerEntry: resolve(parsed.worker) }),\n });\n console.log(\n `Packaged Cloudflare Pages artifact with ${manifest.files.length} files (${manifest.totalBytes} bytes).`,\n );\n } else {\n throw new Error(\n `Unsupported package target ${JSON.stringify(routeArg)}. Expected \"aws-lambda\" or \"cloudflare-pages\".`,\n );\n }\n } else if (command === \"dev\") {\n const loaded =\n routeArg === undefined\n ? await loadMreactRouterViteConfigDetails({ command: \"serve\", cwd: process.cwd() })\n : {\n project: { appDir: resolve(routeArg) },\n serverPort: undefined,\n viteConfig: undefined,\n };\n const server = await startDevServer({\n ...loaded.project,\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n port: resolveCliDevPort(parsed.port, process.env, loaded.serverPort),\n viteConfig: loaded.viteConfig,\n });\n console.log(`mreact app router ready at ${server.url}`);\n } else if (command === \"start\") {\n const server = await startServer({\n allowedHosts: resolveCliAllowedHosts(parsed.allowedHosts, process.env),\n hostPolicy: resolveCliHostPolicy(parsed.hostPolicy, process.env),\n hostname: resolveCliHost(parsed.host, process.env),\n logger,\n outDir: resolve(routeArg ?? \".mreact\"),\n port: Number(process.env.PORT ?? 3001),\n trustForwardedProto: resolveCliTrustForwardedProto(\n parsed.trustForwardedProto,\n process.env,\n ),\n });\n console.log(`mreact app router serving built output at ${server.url}`);\n } else {\n console.error(`Unknown command: ${command}`);\n process.exitCode = 1;\n }\n }\n } catch (error) {\n console.error(error instanceof Error ? error.message : String(error));\n process.exitCode = 1;\n }\n}\n\nasync function readRouterCliVersion(): Promise<string> {\n try {\n const source = await readFile(new URL(\"../package.json\", import.meta.url), \"utf8\");\n const json = JSON.parse(source) as { version?: unknown };\n\n return typeof json.version === \"string\" ? json.version : \"unknown\";\n } catch {\n return \"unknown\";\n }\n}\n\nfunction formatCliBuildTarget(target: CliBuildTarget | undefined): string {\n return target ?? \"default\";\n}\n\nfunction updateBuildProgressLog(\n event: BuildAppProgressEvent,\n activePhase: BuildAppPhase | undefined,\n): BuildAppPhase | undefined {\n if (event.kind === \"routes-discovered\") {\n console.log(`Routes: ${event.count} discovered`);\n return activePhase;\n }\n\n if (event.kind !== \"phase-start\") {\n return activePhase;\n }\n\n const message = buildPhaseProgressMessage(event.phase);\n if (message !== undefined) {\n console.log(message);\n }\n\n return event.phase;\n}\n\nfunction buildPhaseProgressMessage(phase: BuildAppPhase): string | undefined {\n switch (phase) {\n case \"scan\":\n return \"Routes: discovering...\";\n case \"serverModules\":\n return \"Server: building...\";\n case \"clientBundles\":\n return \"Client: building...\";\n case \"writeManifests\":\n return \"Artifacts: writing...\";\n default:\n return undefined;\n }\n}\n\nfunction formatBuildPhaseFailureLabel(phase: BuildAppPhase): string {\n switch (phase) {\n case \"scan\":\n return \"route discovery\";\n case \"collectFiles\":\n return \"source file collection\";\n case \"analyzeSources\":\n return \"source analysis\";\n case \"validate\":\n return \"production route validation\";\n case \"prepareOutput\":\n return \"output preparation\";\n case \"publicAssets\":\n return \"public asset collection\";\n case \"serverActionManifest\":\n return \"server action manifest generation\";\n case \"serverModules\":\n return \"server output build\";\n case \"importPolicy\":\n return \"import policy generation\";\n case \"serverModuleArtifacts\":\n return \"server artifact writing\";\n case \"clientBundles\":\n return \"client output build\";\n case \"navigationRuntime\":\n return \"navigation runtime build\";\n case \"prerender\":\n return \"static prerender\";\n case \"cloudflare\":\n return \"Cloudflare artifact generation\";\n case \"writeManifests\":\n return \"manifest writing\";\n case \"adapterArtifacts\":\n return \"adapter artifact writing\";\n }\n}\n\nfunction formatDurationSeconds(ms: number): string {\n const seconds = ms / 1000;\n\n if (seconds < 10) {\n return `${Math.round(seconds * 10) / 10}s`;\n }\n\n return `${Math.round(seconds)}s`;\n}\n"]}
|
package/dist/node-server.d.ts
CHANGED
|
@@ -20,7 +20,13 @@ export interface StartNodeRequestServerOptions {
|
|
|
20
20
|
hostPolicy?: "strict" | "trusted-proxy" | undefined;
|
|
21
21
|
rawHost: string | undefined;
|
|
22
22
|
}) => string) | undefined;
|
|
23
|
+
trustForwardedProto?: boolean | undefined;
|
|
23
24
|
}
|
|
25
|
+
export declare function resolveNodeRequestProtocol(options: {
|
|
26
|
+
encrypted: boolean;
|
|
27
|
+
forwardedProto: string | readonly string[] | undefined;
|
|
28
|
+
trustForwardedProto?: boolean | undefined;
|
|
29
|
+
}): "http" | "https";
|
|
24
30
|
export declare function startNodeRequestServer(options: StartNodeRequestServerOptions): Promise<{
|
|
25
31
|
close(): Promise<void>;
|
|
26
32
|
server: Server;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-server.d.ts","sourceRoot":"","sources":["../src/node-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC,GAAG,SAAS,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC;IACpD,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;QACvB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;QAC7C,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC;QACpD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"node-server.d.ts","sourceRoot":"","sources":["../src/node-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,CAAC,GAAG,SAAS,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC;IACpD,MAAM,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;QACvB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;QAC7C,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,SAAS,CAAC;QACpD,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3C;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvD,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC3C,GAAG,MAAM,GAAG,OAAO,CAcnB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC;IAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAmFlE"}
|
package/dist/node-server.js
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { nodeRequestToWebRequest, sendResponse } from "./http.js";
|
|
3
3
|
import { emitRouterLog, logDurationMs, logError, logNow, nodeRequestPath, requestLogFields, } from "./logger.js";
|
|
4
|
+
export function resolveNodeRequestProtocol(options) {
|
|
5
|
+
if (options.encrypted) {
|
|
6
|
+
return "https";
|
|
7
|
+
}
|
|
8
|
+
if (options.trustForwardedProto !== true) {
|
|
9
|
+
return "http";
|
|
10
|
+
}
|
|
11
|
+
const forwarded = Array.isArray(options.forwardedProto)
|
|
12
|
+
? options.forwardedProto[0]
|
|
13
|
+
: options.forwardedProto;
|
|
14
|
+
const first = forwarded?.split(",", 1)[0]?.trim().toLowerCase();
|
|
15
|
+
return first === "https" ? "https" : "http";
|
|
16
|
+
}
|
|
4
17
|
export async function startNodeRequestServer(options) {
|
|
5
18
|
const server = createServer(async (incoming, outgoing) => {
|
|
6
19
|
const startedAt = logNow();
|
|
@@ -17,7 +30,12 @@ export async function startNodeRequestServer(options) {
|
|
|
17
30
|
hostPolicy: options.hostPolicy,
|
|
18
31
|
rawHost: incoming.headers.host,
|
|
19
32
|
});
|
|
20
|
-
const
|
|
33
|
+
const protocol = resolveNodeRequestProtocol({
|
|
34
|
+
encrypted: incoming.socket.encrypted === true,
|
|
35
|
+
forwardedProto: incoming.headers["x-forwarded-proto"],
|
|
36
|
+
trustForwardedProto: options.trustForwardedProto,
|
|
37
|
+
});
|
|
38
|
+
const request = nodeRequestToWebRequest(incoming, `${protocol}://${host}`);
|
|
21
39
|
const logFields = requestLogFields(request, "node");
|
|
22
40
|
emitRouterLog(options.logger, "info", {
|
|
23
41
|
...logFields,
|
package/dist/node-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-server.js","sourceRoot":"","sources":["../src/node-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAe,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EACL,aAAa,EACb,aAAa,EACb,QAAQ,EACR,MAAM,EACN,eAAe,EACf,gBAAgB,GAEjB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"node-server.js","sourceRoot":"","sources":["../src/node-server.ts"],"names":[],"mappings":"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","sourcesContent":["import { createServer, type Server } from \"node:http\";\nimport { nodeRequestToWebRequest, sendResponse } from \"./http.js\";\nimport {\n emitRouterLog,\n logDurationMs,\n logError,\n logNow,\n nodeRequestPath,\n requestLogFields,\n type AppRouterLogger,\n} from \"./logger.js\";\nimport type { HttpUpgradeHandler } from \"./upgrade.js\";\n\nexport interface StartNodeRequestServerOptions {\n allowedHosts?: readonly string[] | undefined;\n errorHandler?: ((error: unknown) => {\n body: string;\n status: number;\n headers?: Record<string, string>;\n }) | undefined;\n hostname?: string | undefined;\n hostPolicy?: \"strict\" | \"trusted-proxy\" | undefined;\n logger?: AppRouterLogger | undefined;\n onUpgrade?: HttpUpgradeHandler | undefined;\n port: number;\n render(request: Request): Promise<Response>;\n resolveHost?: ((options: {\n allowedHosts?: readonly string[] | undefined;\n fallbackHost: string;\n hostPolicy?: \"strict\" | \"trusted-proxy\" | undefined;\n rawHost: string | undefined;\n }) => string) | undefined;\n trustForwardedProto?: boolean | undefined;\n}\n\nexport function resolveNodeRequestProtocol(options: {\n encrypted: boolean;\n forwardedProto: string | readonly string[] | undefined;\n trustForwardedProto?: boolean | undefined;\n}): \"http\" | \"https\" {\n if (options.encrypted) {\n return \"https\";\n }\n\n if (options.trustForwardedProto !== true) {\n return \"http\";\n }\n\n const forwarded = Array.isArray(options.forwardedProto)\n ? options.forwardedProto[0]\n : options.forwardedProto;\n const first = forwarded?.split(\",\", 1)[0]?.trim().toLowerCase();\n return first === \"https\" ? \"https\" : \"http\";\n}\n\nexport async function startNodeRequestServer(\n options: StartNodeRequestServerOptions,\n): Promise<{ close(): Promise<void>; server: Server; url: string }> {\n const server = createServer(async (incoming, outgoing) => {\n const startedAt = logNow();\n const fallbackRequestFields = {\n method: incoming.method ?? \"GET\",\n path: nodeRequestPath(incoming.url),\n runtime: \"node\" as const,\n };\n\n try {\n const fallbackHost = `${options.hostname ?? \"127.0.0.1\"}:${options.port}`;\n const host = (options.resolveHost ?? defaultResolveRequestHost)({\n allowedHosts: options.allowedHosts,\n fallbackHost,\n hostPolicy: options.hostPolicy,\n rawHost: incoming.headers.host,\n });\n const protocol = resolveNodeRequestProtocol({\n encrypted: (incoming.socket as { encrypted?: boolean }).encrypted === true,\n forwardedProto: incoming.headers[\"x-forwarded-proto\"],\n trustForwardedProto: options.trustForwardedProto,\n });\n const request = nodeRequestToWebRequest(incoming, `${protocol}://${host}`);\n const logFields = requestLogFields(request, \"node\");\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n type: \"router:request:start\",\n });\n const response = await options.render(request);\n emitRouterLog(options.logger, \"info\", {\n ...logFields,\n durationMs: logDurationMs(startedAt),\n status: response.status,\n type: \"router:request:end\",\n });\n\n await sendResponse(outgoing, response);\n } catch (error) {\n // Log the full stack to stderr for operator visibility; never put\n // it in the response body where attackers can scrape it.\n emitRouterLog(options.logger, \"error\", {\n ...fallbackRequestFields,\n durationMs: logDurationMs(startedAt),\n error: logError(error),\n type: \"router:request:error\",\n });\n if (options.logger === undefined) {\n console.error(\"[mreact] startServer request failed:\", error);\n }\n const payload = options.errorHandler\n ? options.errorHandler(error)\n : { body: \"Internal Server Error\", status: 500 };\n outgoing.statusCode = payload.status;\n outgoing.setHeader(\n \"content-type\",\n payload.headers?.[\"content-type\"] ?? \"text/plain; charset=utf-8\",\n );\n for (const [name, value] of Object.entries(payload.headers ?? {})) {\n if (name.toLowerCase() === \"content-type\") continue;\n outgoing.setHeader(name, value);\n }\n outgoing.end(payload.body);\n }\n });\n\n if (options.onUpgrade !== undefined) {\n server.on(\"upgrade\", options.onUpgrade);\n }\n\n await new Promise<void>((resolve) =>\n server.listen(options.port, options.hostname ?? \"127.0.0.1\", resolve),\n );\n const address = server.address();\n const port = typeof address === \"object\" && address !== null ? address.port : options.port;\n\n return {\n server,\n url: `http://${options.hostname ?? \"127.0.0.1\"}:${port}`,\n close: () =>\n new Promise<void>((resolve, reject) =>\n server.close((error) => (error ? reject(error) : resolve())),\n ),\n };\n}\n\nfunction defaultResolveRequestHost(options: {\n allowedHosts?: readonly string[] | undefined;\n fallbackHost: string;\n hostPolicy?: \"strict\" | \"trusted-proxy\" | undefined;\n rawHost: string | undefined;\n}): string {\n const raw = options.rawHost;\n if (raw === undefined || raw === \"\") return options.fallbackHost;\n if (options.allowedHosts === undefined) {\n return options.hostPolicy === \"strict\" ? options.fallbackHost : raw;\n }\n return options.allowedHosts.includes(raw) ? raw : options.fallbackHost;\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BuiltPrerenderedRoute } from "./build.js";
|
|
2
|
+
export declare const PRERENDERED_ROUTE_SCHEMA_VERSION = 2;
|
|
3
|
+
export declare function isCurrentPrerenderedRoute(value: unknown): value is BuiltPrerenderedRoute;
|
|
4
|
+
export declare function isVisitorDependentResponse(response: Response): boolean;
|
|
5
|
+
//# sourceMappingURL=prerender-entry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerender-entry.d.ts","sourceRoot":"","sources":["../src/prerender-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAElD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAgBxF;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAEtE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export const PRERENDERED_ROUTE_SCHEMA_VERSION = 2;
|
|
2
|
+
export function isCurrentPrerenderedRoute(value) {
|
|
3
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
const entry = value;
|
|
7
|
+
return (entry.schemaVersion === PRERENDERED_ROUTE_SCHEMA_VERSION &&
|
|
8
|
+
isStringRecord(entry.headers) &&
|
|
9
|
+
isShareableHeaderRecord(entry.headers) &&
|
|
10
|
+
typeof entry.html === "string" &&
|
|
11
|
+
typeof entry.status === "number" &&
|
|
12
|
+
Number.isInteger(entry.status) &&
|
|
13
|
+
entry.status >= 100 &&
|
|
14
|
+
entry.status <= 599);
|
|
15
|
+
}
|
|
16
|
+
export function isVisitorDependentResponse(response) {
|
|
17
|
+
return isVisitorDependentHeaders(response.headers);
|
|
18
|
+
}
|
|
19
|
+
function isShareableHeaderRecord(headers) {
|
|
20
|
+
try {
|
|
21
|
+
return !isVisitorDependentHeaders(new Headers(headers));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function isVisitorDependentHeaders(headers) {
|
|
28
|
+
const cacheControl = headers.get("cache-control") ?? "";
|
|
29
|
+
const forbidsSharedStorage = cacheControl.split(",").some((directive) => /^(?:private|no-cache|no-store)(?:=|$)/i.test(directive.trim()));
|
|
30
|
+
return (headers.get("x-mreact-cache")?.toUpperCase() === "DYNAMIC" ||
|
|
31
|
+
headers.has("set-cookie") ||
|
|
32
|
+
headers.has("vary") ||
|
|
33
|
+
forbidsSharedStorage);
|
|
34
|
+
}
|
|
35
|
+
function isStringRecord(value) {
|
|
36
|
+
return (typeof value === "object" &&
|
|
37
|
+
value !== null &&
|
|
38
|
+
!Array.isArray(value) &&
|
|
39
|
+
Object.values(value).every((entry) => typeof entry === "string"));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=prerender-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prerender-entry.js","sourceRoot":"","sources":["../src/prerender-entry.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;AAElD,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,KAAuC,CAAC;IACtD,OAAO,CACL,KAAK,CAAC,aAAa,KAAK,gCAAgC;QACxD,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;QAC7B,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC;QACtC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;QAC9B,KAAK,CAAC,MAAM,IAAI,GAAG;QACnB,KAAK,CAAC,MAAM,IAAI,GAAG,CACpB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAkB;IAC3D,OAAO,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,uBAAuB,CAAC,OAA+B;IAC9D,IAAI,CAAC;QACH,OAAO,CAAC,yBAAyB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAgB;IACjD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IACxD,MAAM,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACtE,wCAAwC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAChE,CAAC;IAEF,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,KAAK,SAAS;QAC1D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;QACnB,oBAAoB,CACrB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CACjE,CAAC;AACJ,CAAC","sourcesContent":["import type { BuiltPrerenderedRoute } from \"./build.js\";\n\nexport const PRERENDERED_ROUTE_SCHEMA_VERSION = 2;\n\nexport function isCurrentPrerenderedRoute(value: unknown): value is BuiltPrerenderedRoute {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n\n const entry = value as Partial<BuiltPrerenderedRoute>;\n return (\n entry.schemaVersion === PRERENDERED_ROUTE_SCHEMA_VERSION &&\n isStringRecord(entry.headers) &&\n isShareableHeaderRecord(entry.headers) &&\n typeof entry.html === \"string\" &&\n typeof entry.status === \"number\" &&\n Number.isInteger(entry.status) &&\n entry.status >= 100 &&\n entry.status <= 599\n );\n}\n\nexport function isVisitorDependentResponse(response: Response): boolean {\n return isVisitorDependentHeaders(response.headers);\n}\n\nfunction isShareableHeaderRecord(headers: Record<string, string>): boolean {\n try {\n return !isVisitorDependentHeaders(new Headers(headers));\n } catch {\n return false;\n }\n}\n\nfunction isVisitorDependentHeaders(headers: Headers): boolean {\n const cacheControl = headers.get(\"cache-control\") ?? \"\";\n const forbidsSharedStorage = cacheControl.split(\",\").some((directive) =>\n /^(?:private|no-cache|no-store)(?:=|$)/i.test(directive.trim()),\n );\n\n return (\n headers.get(\"x-mreact-cache\")?.toUpperCase() === \"DYNAMIC\" ||\n headers.has(\"set-cookie\") ||\n headers.has(\"vary\") ||\n forbidsSharedStorage\n );\n}\n\nfunction isStringRecord(value: unknown): value is Record<string, string> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.values(value).every((entry) => typeof entry === \"string\")\n );\n}\n"]}
|
package/dist/render.d.ts
CHANGED
|
@@ -57,6 +57,19 @@ export interface RenderAppRequestOptions {
|
|
|
57
57
|
vitePlugins?: readonly PluginOption[] | undefined;
|
|
58
58
|
}
|
|
59
59
|
export interface RenderAppRequestRuntimeOptions extends RenderAppRequestOptions {
|
|
60
|
+
/**
|
|
61
|
+
* Receives whether the render depended on the incoming request headers.
|
|
62
|
+
*
|
|
63
|
+
* Callers that store the rendered HTML under a key which ignores headers,
|
|
64
|
+
* such as prerender regeneration, pass this to learn whether the result is
|
|
65
|
+
* only correct for the current visitor. Initialize it to a function returning
|
|
66
|
+
* `true`: a render that returns without reporting back stays header
|
|
67
|
+
* dependent. Call it only after draining the response body, because a
|
|
68
|
+
* streamed render can read headers while its deferred parts resolve.
|
|
69
|
+
*/
|
|
70
|
+
renderSignals?: {
|
|
71
|
+
headerDependent: () => boolean;
|
|
72
|
+
} | undefined;
|
|
60
73
|
serverRenderArtifactLoader?: AppRouterServerRenderArtifactLoader | undefined;
|
|
61
74
|
}
|
|
62
75
|
export interface AppRouterRenderPreload {
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
|