vinext 0.0.36 → 0.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +2 -2
  2. package/dist/cache.d.ts +2 -0
  3. package/dist/cache.js +2 -0
  4. package/dist/cli.js +6 -22
  5. package/dist/cli.js.map +1 -1
  6. package/dist/client/empty-module.d.ts +1 -0
  7. package/dist/client/empty-module.js +1 -0
  8. package/dist/client/entry.js +2 -0
  9. package/dist/client/entry.js.map +1 -1
  10. package/dist/client/instrumentation-client-state.d.ts +10 -0
  11. package/dist/client/instrumentation-client-state.js +19 -0
  12. package/dist/client/instrumentation-client-state.js.map +1 -0
  13. package/dist/client/instrumentation-client.d.ts +8 -0
  14. package/dist/client/instrumentation-client.js +8 -0
  15. package/dist/client/instrumentation-client.js.map +1 -0
  16. package/dist/cloudflare/tpr.js +1 -3
  17. package/dist/cloudflare/tpr.js.map +1 -1
  18. package/dist/deploy.js +9 -3
  19. package/dist/deploy.js.map +1 -1
  20. package/dist/entries/app-rsc-entry.js +34 -22
  21. package/dist/entries/app-rsc-entry.js.map +1 -1
  22. package/dist/entries/pages-client-entry.js +2 -0
  23. package/dist/entries/pages-client-entry.js.map +1 -1
  24. package/dist/entries/pages-server-entry.js +41 -260
  25. package/dist/entries/pages-server-entry.js.map +1 -1
  26. package/dist/entries/runtime-entry-module.d.ts +13 -1
  27. package/dist/entries/runtime-entry-module.js +18 -4
  28. package/dist/entries/runtime-entry-module.js.map +1 -1
  29. package/dist/index.d.ts +13 -11
  30. package/dist/index.js +101 -696
  31. package/dist/index.js.map +1 -1
  32. package/dist/plugins/fix-use-server-closure-collision.d.ts +29 -0
  33. package/dist/plugins/fix-use-server-closure-collision.js +204 -0
  34. package/dist/plugins/fix-use-server-closure-collision.js.map +1 -0
  35. package/dist/plugins/fonts.d.ts +39 -0
  36. package/dist/plugins/fonts.js +432 -0
  37. package/dist/plugins/fonts.js.map +1 -0
  38. package/dist/plugins/instrumentation-client.d.ts +7 -0
  39. package/dist/plugins/instrumentation-client.js +29 -0
  40. package/dist/plugins/instrumentation-client.js.map +1 -0
  41. package/dist/plugins/og-assets.d.ts +26 -0
  42. package/dist/plugins/og-assets.js +118 -0
  43. package/dist/plugins/og-assets.js.map +1 -0
  44. package/dist/server/api-handler.js +6 -23
  45. package/dist/server/api-handler.js.map +1 -1
  46. package/dist/server/app-browser-entry.js +5 -1
  47. package/dist/server/app-browser-entry.js.map +1 -1
  48. package/dist/server/dev-server.js +3 -1
  49. package/dist/server/dev-server.js.map +1 -1
  50. package/dist/server/instrumentation.d.ts +5 -1
  51. package/dist/server/instrumentation.js +15 -6
  52. package/dist/server/instrumentation.js.map +1 -1
  53. package/dist/server/middleware.d.ts +2 -0
  54. package/dist/server/middleware.js +14 -7
  55. package/dist/server/middleware.js.map +1 -1
  56. package/dist/server/normalize-path.d.ts +22 -1
  57. package/dist/server/normalize-path.js +32 -1
  58. package/dist/server/normalize-path.js.map +1 -1
  59. package/dist/server/pages-api-route.d.ts +23 -0
  60. package/dist/server/pages-api-route.js +40 -0
  61. package/dist/server/pages-api-route.js.map +1 -0
  62. package/dist/server/pages-media-type.d.ts +16 -0
  63. package/dist/server/pages-media-type.js +25 -0
  64. package/dist/server/pages-media-type.js.map +1 -0
  65. package/dist/server/pages-node-compat.d.ts +45 -0
  66. package/dist/server/pages-node-compat.js +148 -0
  67. package/dist/server/pages-node-compat.js.map +1 -0
  68. package/dist/server/prod-server.js +1 -0
  69. package/dist/server/prod-server.js.map +1 -1
  70. package/dist/shims/cache-for-request.d.ts +58 -0
  71. package/dist/shims/cache-for-request.js +74 -0
  72. package/dist/shims/cache-for-request.js.map +1 -0
  73. package/dist/shims/dynamic.js +25 -10
  74. package/dist/shims/dynamic.js.map +1 -1
  75. package/dist/shims/headers.js +1 -1
  76. package/dist/shims/image.js +24 -8
  77. package/dist/shims/image.js.map +1 -1
  78. package/dist/shims/layout-segment-context.js +9 -3
  79. package/dist/shims/layout-segment-context.js.map +1 -1
  80. package/dist/shims/link.js +2 -0
  81. package/dist/shims/link.js.map +1 -1
  82. package/dist/shims/navigation.js +2 -0
  83. package/dist/shims/navigation.js.map +1 -1
  84. package/dist/shims/server.d.ts +1 -0
  85. package/dist/shims/server.js +3 -0
  86. package/dist/shims/server.js.map +1 -1
  87. package/dist/shims/unified-request-context.d.ts +2 -0
  88. package/dist/shims/unified-request-context.js +1 -0
  89. package/dist/shims/unified-request-context.js.map +1 -1
  90. package/package.json +8 -4
@@ -1,8 +1,8 @@
1
+ import { resolveEntryPath } from "./runtime-entry-module.js";
1
2
  import { isProxyFile } from "../server/middleware.js";
2
3
  import { generateMiddlewareMatcherCode, generateNormalizePathCode, generateRouteMatchNormalizationCode, generateSafeRegExpCode } from "../server/middleware-codegen.js";
3
4
  import { generateDevOriginCheckCode } from "../server/dev-origin-check.js";
4
5
  import fs from "node:fs";
5
- import { fileURLToPath } from "node:url";
6
6
  //#region src/entries/app-rsc-entry.ts
7
7
  /**
8
8
  * App Router RSC entry generator.
@@ -13,20 +13,22 @@ import { fileURLToPath } from "node:url";
13
13
  *
14
14
  * Previously housed in server/app-dev-server.ts.
15
15
  */
16
- const configMatchersPath = fileURLToPath(new URL("../config/config-matchers.js", import.meta.url)).replace(/\\/g, "/");
17
- const requestPipelinePath = fileURLToPath(new URL("../server/request-pipeline.js", import.meta.url)).replace(/\\/g, "/");
18
- const requestContextShimPath = fileURLToPath(new URL("../shims/request-context.js", import.meta.url)).replace(/\\/g, "/");
19
- const appRouteHandlerRuntimePath = fileURLToPath(new URL("../server/app-route-handler-runtime.js", import.meta.url)).replace(/\\/g, "/");
20
- const appRouteHandlerPolicyPath = fileURLToPath(new URL("../server/app-route-handler-policy.js", import.meta.url)).replace(/\\/g, "/");
21
- const appRouteHandlerExecutionPath = fileURLToPath(new URL("../server/app-route-handler-execution.js", import.meta.url)).replace(/\\/g, "/");
22
- const appRouteHandlerCachePath = fileURLToPath(new URL("../server/app-route-handler-cache.js", import.meta.url)).replace(/\\/g, "/");
23
- const appPageCachePath = fileURLToPath(new URL("../server/app-page-cache.js", import.meta.url)).replace(/\\/g, "/");
24
- const appPageExecutionPath = fileURLToPath(new URL("../server/app-page-execution.js", import.meta.url)).replace(/\\/g, "/");
25
- const appPageBoundaryRenderPath = fileURLToPath(new URL("../server/app-page-boundary-render.js", import.meta.url)).replace(/\\/g, "/");
26
- const appPageRenderPath = fileURLToPath(new URL("../server/app-page-render.js", import.meta.url)).replace(/\\/g, "/");
27
- const appPageRequestPath = fileURLToPath(new URL("../server/app-page-request.js", import.meta.url)).replace(/\\/g, "/");
28
- const appRouteHandlerResponsePath = fileURLToPath(new URL("../server/app-route-handler-response.js", import.meta.url)).replace(/\\/g, "/");
29
- const routeTriePath = fileURLToPath(new URL("../routing/route-trie.js", import.meta.url)).replace(/\\/g, "/");
16
+ const configMatchersPath = resolveEntryPath("../config/config-matchers.js", import.meta.url);
17
+ const requestPipelinePath = resolveEntryPath("../server/request-pipeline.js", import.meta.url);
18
+ const requestContextShimPath = resolveEntryPath("../shims/request-context.js", import.meta.url);
19
+ const normalizePathModulePath = resolveEntryPath("../server/normalize-path.js", import.meta.url);
20
+ const appRouteHandlerRuntimePath = resolveEntryPath("../server/app-route-handler-runtime.js", import.meta.url);
21
+ const appRouteHandlerPolicyPath = resolveEntryPath("../server/app-route-handler-policy.js", import.meta.url);
22
+ const appRouteHandlerExecutionPath = resolveEntryPath("../server/app-route-handler-execution.js", import.meta.url);
23
+ const appRouteHandlerCachePath = resolveEntryPath("../server/app-route-handler-cache.js", import.meta.url);
24
+ const appPageCachePath = resolveEntryPath("../server/app-page-cache.js", import.meta.url);
25
+ const appPageExecutionPath = resolveEntryPath("../server/app-page-execution.js", import.meta.url);
26
+ const appPageBoundaryRenderPath = resolveEntryPath("../server/app-page-boundary-render.js", import.meta.url);
27
+ const appPageRenderPath = resolveEntryPath("../server/app-page-render.js", import.meta.url);
28
+ const appPageRequestPath = resolveEntryPath("../server/app-page-request.js", import.meta.url);
29
+ const appRouteHandlerResponsePath = resolveEntryPath("../server/app-route-handler-response.js", import.meta.url);
30
+ const routeTriePath = resolveEntryPath("../routing/route-trie.js", import.meta.url);
31
+ const metadataRoutesPath = resolveEntryPath("../server/metadata-routes.js", import.meta.url);
30
32
  /**
31
33
  * Generate the virtual RSC entry module.
32
34
  *
@@ -213,8 +215,9 @@ import { LayoutSegmentProvider } from "vinext/layout-segment-context";
213
215
  import { MetadataHead, mergeMetadata, resolveModuleMetadata, ViewportHead, mergeViewport, resolveModuleViewport } from "vinext/metadata";
214
216
  ${middlewarePath ? `import * as middlewareModule from ${JSON.stringify(middlewarePath.replace(/\\/g, "/"))};` : ""}
215
217
  ${instrumentationPath ? `import * as _instrumentation from ${JSON.stringify(instrumentationPath.replace(/\\/g, "/"))};` : ""}
216
- ${effectiveMetaRoutes.length > 0 ? `import { sitemapToXml, robotsToText, manifestToJson } from ${JSON.stringify(fileURLToPath(new URL("../server/metadata-routes.js", import.meta.url)).replace(/\\/g, "/"))};` : ""}
218
+ ${effectiveMetaRoutes.length > 0 ? `import { sitemapToXml, robotsToText, manifestToJson } from ${JSON.stringify(metadataRoutesPath)};` : ""}
217
219
  import { requestContextFromRequest, normalizeHost, matchRedirect, matchRewrite, matchHeaders, isExternalUrl, proxyExternalRequest, sanitizeDestination } from ${JSON.stringify(configMatchersPath)};
220
+ import { decodePathParams as __decodePathParams } from ${JSON.stringify(normalizePathModulePath)};
218
221
  import { validateCsrfOrigin, validateImageUrl, guardProtocolRelativeUrl, hasBasePath, stripBasePath, normalizeTrailingSlash, processMiddlewareHeaders } from ${JSON.stringify(requestPipelinePath)};
219
222
  import {
220
223
  isKnownDynamicAppRoute as __isKnownDynamicAppRoute,
@@ -1438,10 +1441,14 @@ async function _handleRequest(request, __reqCtx, _mwCtx) {
1438
1441
  const __mwNextConfig = (__basePath || __i18nConfig) ? { basePath: __basePath, i18n: __i18nConfig ?? undefined } : undefined;
1439
1442
  const nextRequest = mwRequest instanceof NextRequest ? mwRequest : new NextRequest(mwRequest, __mwNextConfig ? { nextConfig: __mwNextConfig } : undefined);
1440
1443
  const mwFetchEvent = new NextFetchEvent({ page: cleanPathname });
1441
- const mwResponse = await middlewareFn(nextRequest, mwFetchEvent);
1442
- const _mwWaitUntil = mwFetchEvent.drainWaitUntil();
1443
- const _mwExecCtx = _getRequestExecutionContext();
1444
- if (_mwExecCtx && typeof _mwExecCtx.waitUntil === "function") { _mwExecCtx.waitUntil(_mwWaitUntil); }
1444
+ let mwResponse;
1445
+ try {
1446
+ mwResponse = await middlewareFn(nextRequest, mwFetchEvent);
1447
+ } finally {
1448
+ const _mwWaitUntil = mwFetchEvent.drainWaitUntil();
1449
+ const _mwExecCtx = _getRequestExecutionContext();
1450
+ if (_mwExecCtx && typeof _mwExecCtx.waitUntil === "function") { _mwExecCtx.waitUntil(_mwWaitUntil); }
1451
+ }
1445
1452
  if (mwResponse) {
1446
1453
  // Check for x-middleware-next (continue)
1447
1454
  if (mwResponse.headers.get("x-middleware-next") === "1") {
@@ -1823,7 +1830,12 @@ async function _handleRequest(request, __reqCtx, _mwCtx) {
1823
1830
  if (!isRscRequest) {
1824
1831
  const __pagesEntry = await import.meta.viteRsc.loadModule("ssr", "index");
1825
1832
  if (typeof __pagesEntry.renderPage === "function") {
1826
- const __pagesRes = await __pagesEntry.renderPage(request, decodeURIComponent(url.pathname) + (url.search || ""), {});
1833
+ // Use segment-wise decoding to preserve encoded path delimiters (%2F).
1834
+ // decodeURIComponent would turn /admin%2Fpanel into /admin/panel,
1835
+ // changing the path structure and bypassing middleware matchers.
1836
+ // Ported from Next.js: packages/next/src/server/lib/router-utils/decode-path-params.ts
1837
+ // https://github.com/vercel/next.js/blob/canary/packages/next/src/server/lib/router-utils/decode-path-params.ts
1838
+ const __pagesRes = await __pagesEntry.renderPage(request, __decodePathParams(url.pathname) + (url.search || ""), {});
1827
1839
  // Only return the Pages Router response if it matched a route
1828
1840
  // (non-404). A 404 means the path isn't a Pages route either,
1829
1841
  // so fall through to the App Router not-found page below.
@@ -1966,7 +1978,7 @@ async function _handleRequest(request, __reqCtx, _mwCtx) {
1966
1978
  markDynamicUsage,
1967
1979
  method,
1968
1980
  middlewareContext: _mwCtx,
1969
- params,
1981
+ params: makeThenableParams(params),
1970
1982
  reportRequestError: _reportRequestError,
1971
1983
  request,
1972
1984
  revalidateSeconds,