@reckona/mreact-router 0.0.90 → 0.0.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/render.js CHANGED
@@ -626,7 +626,7 @@ async function renderAppRequestInternal(options) {
626
626
  params: matched.params,
627
627
  queryClient,
628
628
  request: options.request,
629
- }, matched.route.file, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins));
629
+ }, matched.route.file, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins, undefined, options.importPolicy));
630
630
  const pageHtml = renderedPage.html;
631
631
  const pageHtmlForLayout = clientRoute
632
632
  ? withHydrationMarkers({
@@ -664,6 +664,7 @@ async function renderAppRequestInternal(options) {
664
664
  clientRouteInferenceCache,
665
665
  timing,
666
666
  vitePlugins: options.vitePlugins,
667
+ importPolicy: options.importPolicy,
667
668
  }));
668
669
  const metadata = await loadComposedRouteMetadata({
669
670
  appDir: options.appDir,
@@ -750,6 +751,7 @@ async function renderAppRequestInternal(options) {
750
751
  serverSourceFiles: options.serverSourceFiles,
751
752
  vitePlugins: options.vitePlugins,
752
753
  clientRouteInferenceCache,
754
+ importPolicy: options.importPolicy,
753
755
  script: clientScript,
754
756
  clientReferenceManifest: output.metadata.clientReferenceManifest,
755
757
  });
@@ -780,6 +782,7 @@ async function renderAppRequestInternal(options) {
780
782
  serverSourceFiles: options.serverSourceFiles,
781
783
  vitePlugins: options.vitePlugins,
782
784
  clientRouteInferenceCache,
785
+ importPolicy: options.importPolicy,
783
786
  clientRoute,
784
787
  script: clientScript,
785
788
  clientReferenceManifest: output.metadata.clientReferenceManifest,
@@ -827,7 +830,7 @@ async function renderAppRequestInternal(options) {
827
830
  params: matched.params,
828
831
  queryClient,
829
832
  request: options.request,
830
- }, matched.route.file, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins, timing));
833
+ }, matched.route.file, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins, timing, options.importPolicy));
831
834
  finishRenderTimingPhase(timing, phaseStartedAt, "pageRenderMs");
832
835
  const pageHtml = renderedPage.html;
833
836
  // Wrap the page (not the full document) with the hydration marker so
@@ -1670,9 +1673,9 @@ async function runServerModule(code, props, sourcefile, serverModules, serverMod
1670
1673
  const component = await loadServerComponent(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins);
1671
1674
  return component(props);
1672
1675
  }
1673
- async function runServerModuleWithSlots(code, props, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, timing) {
1676
+ async function runServerModuleWithSlots(code, props, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, timing, importPolicy) {
1674
1677
  const moduleLoadStartedAt = renderTimingPhaseStartedAt(timing);
1675
- const module = await loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins);
1678
+ const module = await loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy);
1676
1679
  finishRenderTimingPhase(timing, moduleLoadStartedAt, "pageModuleLoadMs");
1677
1680
  const component = selectServerComponent(module);
1678
1681
  const componentStartedAt = renderTimingPhaseStartedAt(timing);
@@ -1686,7 +1689,7 @@ async function runServerModuleWithSlots(code, props, sourcefile, serverModules,
1686
1689
  slots,
1687
1690
  };
1688
1691
  }
1689
- async function loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins) {
1692
+ async function loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy) {
1690
1693
  const artifact = serverModules?.get(sourcefile)?.string;
1691
1694
  const codeHash = memoizedHashText(code);
1692
1695
  const prebuiltCode = prebuiltServerComponentModuleCode(artifact, code, codeHash);
@@ -1702,11 +1705,20 @@ async function loadServerModule(code, sourcefile, serverModules, serverModuleCac
1702
1705
  const moduleCode = prebuiltCode ?? code;
1703
1706
  const cacheKey = serverModuleCacheVersion === undefined
1704
1707
  ? undefined
1705
- : `server-component:${serverModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${vitePluginsCacheKey(vitePlugins)}`;
1708
+ : `server-component:${serverModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${importPolicyCacheKey(importPolicy)}:${vitePluginsCacheKey(vitePlugins)}`;
1706
1709
  return await importAppRouterSourceModule({
1707
1710
  cacheKey,
1708
1711
  code: moduleCode,
1709
1712
  label: `server-component:${sourcefile}`,
1713
+ plugins: importPolicy === undefined
1714
+ ? undefined
1715
+ : [
1716
+ createAppRouterImportPolicyPlugin({
1717
+ appDir: dirname(sourcefile),
1718
+ importPolicy,
1719
+ label: "Server component",
1720
+ }),
1721
+ ],
1710
1722
  ...(prebuiltCode === undefined
1711
1723
  ? {
1712
1724
  resolveDir: dirname(sourcefile),
@@ -1732,8 +1744,8 @@ async function importBuiltServerModuleFile(options) {
1732
1744
  file: options.file,
1733
1745
  });
1734
1746
  }
1735
- async function loadServerComponent(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins) {
1736
- const module = await loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins);
1747
+ async function loadServerComponent(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy) {
1748
+ const module = await loadServerModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy);
1737
1749
  return selectServerComponent(module);
1738
1750
  }
1739
1751
  function selectServerComponent(module) {
@@ -1761,8 +1773,9 @@ function runServerStreamModule(code, options) {
1761
1773
  serverModules: options.serverModules,
1762
1774
  serverModuleCacheVersion: options.serverModuleCacheVersion,
1763
1775
  vitePlugins: options.vitePlugins,
1776
+ importPolicy: options.importPolicy,
1764
1777
  });
1765
- const layoutShells = await layoutShellsForPage(options.appDir, options.pageFile, options.props, slots, options.serverModules, options.serverModuleCacheVersion, options.serverSourceFiles, options.clientRouteInferenceCache, options.vitePlugins);
1778
+ const layoutShells = await layoutShellsForPage(options.appDir, options.pageFile, options.props, slots, options.serverModules, options.serverModuleCacheVersion, options.serverSourceFiles, options.clientRouteInferenceCache, options.vitePlugins, options.importPolicy);
1766
1779
  const marker = options.clientRoute
1767
1780
  ? hydrationMarkerParts({
1768
1781
  assetBaseUrl: options.assetBaseUrl,
@@ -1786,7 +1799,7 @@ function runServerStreamModule(code, options) {
1786
1799
  sink.append(shell.prefix);
1787
1800
  }
1788
1801
  sink.append(marker?.prefix ?? "");
1789
- await appendServerStreamModule(code, sink, options.props, options.pageFile, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins);
1802
+ await appendServerStreamModule(code, sink, options.props, options.pageFile, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins, options.importPolicy);
1790
1803
  sink.append(marker?.suffix ?? "");
1791
1804
  for (const shell of [...layoutShells].reverse()) {
1792
1805
  sink.append(shell.suffix);
@@ -1895,7 +1908,7 @@ async function runServerStreamModuleWithLoading(code, options) {
1895
1908
  queryClient: options.queryClient,
1896
1909
  request: options.request,
1897
1910
  };
1898
- const layoutShells = await layoutShellsForPage(options.appDir, options.pageFile, loadingProps, {}, options.serverModules, options.serverModuleCacheVersion, options.serverSourceFiles, options.clientRouteInferenceCache, options.vitePlugins);
1911
+ const layoutShells = await layoutShellsForPage(options.appDir, options.pageFile, loadingProps, {}, options.serverModules, options.serverModuleCacheVersion, options.serverSourceFiles, options.clientRouteInferenceCache, options.vitePlugins, options.importPolicy);
1899
1912
  const loadingHtml = await renderServerFileToHtml(options.loadingFile, loadingProps, options.serverModules, options.serverModuleCacheVersion, options.serverSourceFiles, options.vitePlugins);
1900
1913
  const marker = options.clientRoute
1901
1914
  ? hydrationMarkerParts({
@@ -1926,7 +1939,7 @@ async function runServerStreamModuleWithLoading(code, options) {
1926
1939
  params: options.params,
1927
1940
  queryClient: options.queryClient,
1928
1941
  request: options.request,
1929
- }, options.pageFile, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins);
1942
+ }, options.pageFile, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins, options.importPolicy);
1930
1943
  }, {
1931
1944
  placeholder(boundarySink) {
1932
1945
  boundarySink.append(loadingHtml);
@@ -1965,8 +1978,8 @@ async function renderVisibleOutOfOrderFragment(sink, id, value, render, options)
1965
1978
  await fragmentSink.drain();
1966
1979
  sink.append(`<template data-mreact-oob-fragment="${escapeHtmlAttribute(id)}">${fragmentSink.toString()}</template>`);
1967
1980
  }
1968
- async function appendServerStreamModule(code, sink, props, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins) {
1969
- const module = await loadServerStreamModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins);
1981
+ async function appendServerStreamModule(code, sink, props, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy) {
1982
+ const module = await loadServerStreamModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy);
1970
1983
  const component = selectStreamComponent(module);
1971
1984
  await component(sink, props);
1972
1985
  }
@@ -1974,7 +1987,7 @@ async function renderServerStreamSlots(code, options) {
1974
1987
  if (!hasRouteSlotsExport(code)) {
1975
1988
  return {};
1976
1989
  }
1977
- const module = await loadServerStreamModule(code, options.pageFile, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins);
1990
+ const module = await loadServerStreamModule(code, options.pageFile, options.serverModules, options.serverModuleCacheVersion, options.vitePlugins, options.importPolicy);
1978
1991
  if (module.slots === undefined) {
1979
1992
  return {};
1980
1993
  }
@@ -1994,7 +2007,7 @@ async function renderServerStreamSlots(code, options) {
1994
2007
  function hasRouteSlotsExport(code) {
1995
2008
  return /^\s*export\s+const\s+slots\s*=/m.test(code);
1996
2009
  }
1997
- async function loadServerStreamModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins) {
2010
+ async function loadServerStreamModule(code, sourcefile, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy) {
1998
2011
  const artifactCode = serverModules?.get(sourcefile)?.stream;
1999
2012
  const codeHash = memoizedHashText(code);
2000
2013
  const prebuiltCode = prebuiltServerComponentModuleCode(artifactCode, code, codeHash);
@@ -2010,11 +2023,20 @@ async function loadServerStreamModule(code, sourcefile, serverModules, serverMod
2010
2023
  const moduleCode = prebuiltCode ?? code;
2011
2024
  const cacheKey = serverModuleCacheVersion === undefined
2012
2025
  ? undefined
2013
- : `server-stream-component:${serverModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${vitePluginsCacheKey(vitePlugins)}`;
2026
+ : `server-stream-component:${serverModuleCacheVersion}:${sourcefile}:${moduleCode === code ? codeHash : memoizedHashText(moduleCode)}:${importPolicyCacheKey(importPolicy)}:${vitePluginsCacheKey(vitePlugins)}`;
2014
2027
  return await importAppRouterSourceModule({
2015
2028
  cacheKey,
2016
2029
  code: moduleCode,
2017
2030
  label: `server-stream-component:${sourcefile}`,
2031
+ plugins: importPolicy === undefined
2032
+ ? undefined
2033
+ : [
2034
+ createAppRouterImportPolicyPlugin({
2035
+ appDir: dirname(sourcefile),
2036
+ importPolicy,
2037
+ label: "Server stream component",
2038
+ }),
2039
+ ],
2018
2040
  ...(prebuiltCode === undefined
2019
2041
  ? {
2020
2042
  resolveDir: dirname(sourcefile),
@@ -2043,7 +2065,7 @@ async function applyLayouts(options) {
2043
2065
  let shellHasOutOfOrderBoundary = false;
2044
2066
  const slotContext = createSlotRenderContext(options.slots);
2045
2067
  for (const shell of layoutFiles.reverse()) {
2046
- const rendered = await renderShellPrefixSuffix(options.appDir, shell, options.props, slotContext, options.serverModules, options.serverModuleCacheVersion, options.serverSourceFiles, options.clientRouteInferenceCache, options.timing, options.vitePlugins);
2068
+ const rendered = await renderShellPrefixSuffix(options.appDir, shell, options.props, slotContext, options.serverModules, options.serverModuleCacheVersion, options.serverSourceFiles, options.clientRouteInferenceCache, options.timing, options.vitePlugins, options.importPolicy);
2047
2069
  shellHasOutOfOrderBoundary ||= rendered.hasOutOfOrderBoundary;
2048
2070
  html = `${rendered.prefix}${html}${rendered.suffix}`;
2049
2071
  }
@@ -2062,12 +2084,12 @@ async function applyLayouts(options) {
2062
2084
  await sink.drain();
2063
2085
  return sink.toString();
2064
2086
  }
2065
- async function layoutShellsForPage(appDir, pageFile, props, slots, serverModules, serverModuleCacheVersion, serverSourceFiles, clientRouteInferenceCache, vitePlugins) {
2087
+ async function layoutShellsForPage(appDir, pageFile, props, slots, serverModules, serverModuleCacheVersion, serverSourceFiles, clientRouteInferenceCache, vitePlugins, importPolicy) {
2066
2088
  const layoutFiles = await shellFilesForPage(appDir, pageFile, serverModuleCacheVersion);
2067
2089
  const shells = [];
2068
2090
  const slotContext = createSlotRenderContext(slots);
2069
2091
  for (const shell of layoutFiles) {
2070
- shells.push(await renderShellPrefixSuffix(appDir, shell, props, slotContext, serverModules, serverModuleCacheVersion, serverSourceFiles, clientRouteInferenceCache, undefined, vitePlugins));
2092
+ shells.push(await renderShellPrefixSuffix(appDir, shell, props, slotContext, serverModules, serverModuleCacheVersion, serverSourceFiles, clientRouteInferenceCache, undefined, vitePlugins, importPolicy));
2071
2093
  }
2072
2094
  warnUnconsumedRouteSlots({
2073
2095
  appDir,
@@ -2077,11 +2099,11 @@ async function layoutShellsForPage(appDir, pageFile, props, slots, serverModules
2077
2099
  });
2078
2100
  return shells;
2079
2101
  }
2080
- async function renderShellPrefixSuffix(appDir, shell, props, slotContext, serverModules, serverModuleCacheVersion, serverSourceFiles, clientRouteInferenceCache, timing, vitePlugins) {
2102
+ async function renderShellPrefixSuffix(appDir, shell, props, slotContext, serverModules, serverModuleCacheVersion, serverSourceFiles, clientRouteInferenceCache, timing, vitePlugins, importPolicy) {
2081
2103
  const hasNamedSlots = Object.keys(slotContext.namedSlots).length > 0;
2082
2104
  const cacheKey = serverModuleCacheVersion === undefined || hasNamedSlots || shell.kind === "template"
2083
2105
  ? undefined
2084
- : `${appDir}\0${shell.file}\0${serverModuleCacheVersion}\0${vitePluginsCacheKey(vitePlugins)}`;
2106
+ : `${appDir}\0${shell.file}\0${serverModuleCacheVersion}\0${importPolicyCacheKey(importPolicy)}\0${vitePluginsCacheKey(vitePlugins)}`;
2085
2107
  if (cacheKey !== undefined) {
2086
2108
  const cached = readRouterRuntimeCacheEntry(renderedShellCache, cacheKey, renderedShellCacheCounters);
2087
2109
  if (cached !== undefined && cached !== "impure") {
@@ -2125,8 +2147,8 @@ async function renderShellPrefixSuffix(appDir, shell, props, slotContext, server
2125
2147
  }
2126
2148
  phaseStartedAt = renderTimingPhaseStartedAt(timing);
2127
2149
  const component = shellUsesAwait
2128
- ? selectStreamComponent(await loadServerStreamModule(output.code, shell.file, serverModules, serverModuleCacheVersion, vitePlugins))
2129
- : await loadServerComponent(output.code, shell.file, serverModules, serverModuleCacheVersion, vitePlugins);
2150
+ ? selectStreamComponent(await loadServerStreamModule(output.code, shell.file, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy))
2151
+ : await loadServerComponent(output.code, shell.file, serverModules, serverModuleCacheVersion, vitePlugins, importPolicy);
2130
2152
  addRenderTimingPhaseDuration(timing, phaseStartedAt, "layoutModuleLoadMs");
2131
2153
  phaseStartedAt = renderTimingPhaseStartedAt(timing);
2132
2154
  const layoutHtml = shellUsesAwait