@farm.js/core 0.1.0-beta.45 → 0.1.0-beta.47

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 (70) hide show
  1. package/dist/api/route-manager.cjs.map +1 -1
  2. package/dist/api/route-manager.mjs +2 -2
  3. package/dist/api.cjs.map +1 -1
  4. package/dist/api.mjs +3 -3
  5. package/dist/{chunk-EPBXX44K.mjs → chunk-3UUEBVR3.mjs} +3 -3
  6. package/dist/{chunk-IRYMQRYJ.mjs → chunk-ECLWCE4H.mjs} +2 -2
  7. package/dist/{chunk-IWPBMZGE.mjs → chunk-IHYFDXKQ.mjs} +4 -4
  8. package/dist/{chunk-FLGRRGVU.mjs → chunk-KTV3UWGE.mjs} +2 -2
  9. package/dist/{chunk-FLGRRGVU.mjs.map → chunk-KTV3UWGE.mjs.map} +1 -1
  10. package/dist/{chunk-MU2QKVYL.mjs → chunk-MP2SDRRB.mjs} +2 -2
  11. package/dist/{chunk-6NCLVPI7.mjs → chunk-MWYVMV3T.mjs} +124 -15
  12. package/dist/chunk-MWYVMV3T.mjs.map +1 -0
  13. package/dist/{chunk-QLCUQD3U.mjs → chunk-SHZF3DEB.mjs} +2 -2
  14. package/dist/{chunk-VHYARVB7.mjs → chunk-TIESOJ7Z.mjs} +2 -2
  15. package/dist/{chunk-KEPCW6EI.mjs → chunk-U5SPS2HR.mjs} +10 -1
  16. package/dist/chunk-U5SPS2HR.mjs.map +1 -0
  17. package/dist/client/lifecycle.mjs +2 -2
  18. package/dist/client-plugins.cjs +1 -1
  19. package/dist/client-plugins.cjs.map +1 -1
  20. package/dist/client-plugins.mjs +2 -2
  21. package/dist/client.cjs +1 -1
  22. package/dist/client.cjs.map +1 -1
  23. package/dist/client.mjs +2 -2
  24. package/dist/index.cjs +134 -12
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.mts +1 -1
  27. package/dist/index.d.ts +1 -1
  28. package/dist/index.mjs +11 -9
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/internal/build-runtime.cjs +132 -12
  31. package/dist/internal/build-runtime.cjs.map +1 -1
  32. package/dist/internal/build-runtime.d.mts +1 -1
  33. package/dist/internal/build-runtime.d.ts +1 -1
  34. package/dist/internal/build-runtime.mjs +6 -6
  35. package/dist/internal/client-runtime.cjs +1 -1
  36. package/dist/internal/client-runtime.cjs.map +1 -1
  37. package/dist/internal/client-runtime.mjs +2 -2
  38. package/dist/internal/config-runtime.cjs.map +1 -1
  39. package/dist/internal/config-runtime.d.mts +1 -1
  40. package/dist/internal/config-runtime.d.ts +1 -1
  41. package/dist/internal/config-runtime.mjs +1 -1
  42. package/dist/middleware.cjs.map +1 -1
  43. package/dist/middleware.mjs +3 -3
  44. package/dist/plugin.cjs +127 -11
  45. package/dist/plugin.cjs.map +1 -1
  46. package/dist/plugin.mjs +5 -5
  47. package/dist/server.cjs +129 -11
  48. package/dist/server.cjs.map +1 -1
  49. package/dist/server.d.mts +1 -1
  50. package/dist/server.d.ts +1 -1
  51. package/dist/server.mjs +7 -5
  52. package/dist/server.mjs.map +1 -1
  53. package/dist/testing.mjs +2 -2
  54. package/dist/{utils-CjZRiq-l.d.mts → utils-9OPxcT1T.d.mts} +9 -1
  55. package/dist/{utils-_LOF-V9f.d.ts → utils-CIIoLfn9.d.ts} +9 -1
  56. package/dist/version.cjs +1 -1
  57. package/dist/version.cjs.map +1 -1
  58. package/dist/version.mjs +1 -1
  59. package/dist/vite.cjs +127 -11
  60. package/dist/vite.cjs.map +1 -1
  61. package/dist/vite.mjs +5 -5
  62. package/package.json +3 -3
  63. package/dist/chunk-6NCLVPI7.mjs.map +0 -1
  64. package/dist/chunk-KEPCW6EI.mjs.map +0 -1
  65. /package/dist/{chunk-EPBXX44K.mjs.map → chunk-3UUEBVR3.mjs.map} +0 -0
  66. /package/dist/{chunk-IRYMQRYJ.mjs.map → chunk-ECLWCE4H.mjs.map} +0 -0
  67. /package/dist/{chunk-IWPBMZGE.mjs.map → chunk-IHYFDXKQ.mjs.map} +0 -0
  68. /package/dist/{chunk-MU2QKVYL.mjs.map → chunk-MP2SDRRB.mjs.map} +0 -0
  69. /package/dist/{chunk-QLCUQD3U.mjs.map → chunk-SHZF3DEB.mjs.map} +0 -0
  70. /package/dist/{chunk-VHYARVB7.mjs.map → chunk-TIESOJ7Z.mjs.map} +0 -0
package/dist/plugin.mjs CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  import "./chunk-RQ633A5I.mjs";
7
7
  import {
8
8
  farmPlugin
9
- } from "./chunk-6NCLVPI7.mjs";
9
+ } from "./chunk-MWYVMV3T.mjs";
10
10
  import "./chunk-XJTDE4L4.mjs";
11
11
  import "./chunk-CAUVJN4X.mjs";
12
12
  import "./chunk-AMZZCRQ7.mjs";
@@ -36,15 +36,15 @@ import "./chunk-H53KVQUU.mjs";
36
36
  import "./chunk-QKVUNGAH.mjs";
37
37
  import "./chunk-HFQ2I2EA.mjs";
38
38
  import "./chunk-T4QJQK76.mjs";
39
- import "./chunk-VHYARVB7.mjs";
39
+ import "./chunk-TIESOJ7Z.mjs";
40
40
  import "./chunk-P7QDS5AT.mjs";
41
41
  import "./chunk-E6EPN5BT.mjs";
42
- import "./chunk-MU2QKVYL.mjs";
42
+ import "./chunk-MP2SDRRB.mjs";
43
43
  import "./chunk-XJ65E7MB.mjs";
44
44
  import "./chunk-FQYDHKKU.mjs";
45
45
  import "./chunk-SXWF4QRU.mjs";
46
46
  import "./chunk-GIELMNBG.mjs";
47
- import "./chunk-KEPCW6EI.mjs";
47
+ import "./chunk-U5SPS2HR.mjs";
48
48
  import "./chunk-QGOHVJ6J.mjs";
49
49
  import "./chunk-5B33VWGX.mjs";
50
50
  import "./chunk-YTMDIHQN.mjs";
@@ -63,7 +63,7 @@ import "./chunk-RBRLLZL5.mjs";
63
63
  import "./chunk-WZ5QFROO.mjs";
64
64
  import "./chunk-7ZMKVETU.mjs";
65
65
  import "./chunk-FXG2PS27.mjs";
66
- import "./chunk-FLGRRGVU.mjs";
66
+ import "./chunk-KTV3UWGE.mjs";
67
67
  import "./chunk-CGILA3WO.mjs";
68
68
  export {
69
69
  FarmRuntimeShutdownError,
package/dist/server.cjs CHANGED
@@ -14828,6 +14828,7 @@ __export(server_exports2, {
14828
14828
  sqliteStorage: () => sqliteStorage,
14829
14829
  startDevServer: () => startDevServer,
14830
14830
  storageCacheAdapter: () => storageCacheAdapter,
14831
+ toRootRelativeUrlPath: () => toRootRelativeUrlPath,
14831
14832
  toViteModuleId: () => toViteModuleId,
14832
14833
  unstable_cache: () => unstable_cache,
14833
14834
  updateTag: () => updateTag,
@@ -14957,6 +14958,14 @@ function resolveAppPath(root, ...paths) {
14957
14958
  return import_path.default.resolve(root, ...paths);
14958
14959
  }
14959
14960
  __name(resolveAppPath, "resolveAppPath");
14961
+ function toRootRelativeUrlPath(absolutePath, projectRoot) {
14962
+ if (absolutePath === projectRoot) return "";
14963
+ if (absolutePath.startsWith(`${projectRoot}/`) || absolutePath.startsWith(`${projectRoot}\\`)) {
14964
+ return absolutePath.slice(projectRoot.length).replace(/\\/g, "/");
14965
+ }
14966
+ return void 0;
14967
+ }
14968
+ __name(toRootRelativeUrlPath, "toRootRelativeUrlPath");
14960
14969
  function toViteModuleId(filePath, root) {
14961
14970
  if (!import_path.default.isAbsolute(filePath)) return filePath;
14962
14971
  const relativePath2 = import_path.default.relative(root, filePath);
@@ -17123,9 +17132,8 @@ var _RouteManager = class _RouteManager {
17123
17132
  return this.clientManifestCache.manifest;
17124
17133
  }
17125
17134
  const toUrlPath = /* @__PURE__ */ __name((absolutePath) => {
17126
- if (absolutePath === normalizedProjectRoot || absolutePath.startsWith(`${normalizedProjectRoot}${import_path5.default.sep}`)) {
17127
- return absolutePath.slice(normalizedProjectRoot.length);
17128
- }
17135
+ const rootRelative = toRootRelativeUrlPath(absolutePath, normalizedProjectRoot);
17136
+ if (rootRelative !== void 0) return rootRelative;
17129
17137
  if (import_path5.default.isAbsolute(absolutePath)) {
17130
17138
  const normalized = absolutePath.replace(/\\/g, "/");
17131
17139
  return normalized.startsWith("/") ? `/@fs${normalized}` : `/@fs/${normalized}`;
@@ -17821,6 +17829,57 @@ __name(safeGlobFiles, "safeGlobFiles");
17821
17829
  // src/server/renderer.ts
17822
17830
  var fs3 = __toESM(require("fs"));
17823
17831
  var path11 = __toESM(require("path"));
17832
+
17833
+ // src/server/full-document.ts
17834
+ function stripContentsWrappers(markup) {
17835
+ let out = markup.replace(/^\s+/, "");
17836
+ const opener = /^<div\b[^>]*style="display\s*:\s*contents"[^>]*>/i;
17837
+ let match;
17838
+ while (match = opener.exec(out)) {
17839
+ out = out.slice(match[0].length).replace(/^\s+/, "");
17840
+ }
17841
+ return out;
17842
+ }
17843
+ __name(stripContentsWrappers, "stripContentsWrappers");
17844
+ function extractFarmFullDocument(markup) {
17845
+ const inner = stripContentsWrappers(markup);
17846
+ if (!/^<!doctype/i.test(inner) && !/^<html[\s>]/i.test(inner)) return null;
17847
+ const start = markup.search(/<!doctype|<html[\s>]/i);
17848
+ const closeIndex = markup.toLowerCase().lastIndexOf("</html>");
17849
+ if (start < 0 || closeIndex < 0) return null;
17850
+ return markup.slice(start, closeIndex + "</html>".length);
17851
+ }
17852
+ __name(extractFarmFullDocument, "extractFarmFullDocument");
17853
+ function opensFarmFullDocument(markup) {
17854
+ const inner = stripContentsWrappers(markup);
17855
+ return /^<!doctype/i.test(inner) || /^<html[\s>]/i.test(inner);
17856
+ }
17857
+ __name(opensFarmFullDocument, "opensFarmFullDocument");
17858
+ function composeFarmFullDocument(documentHtml, assets) {
17859
+ let html = documentHtml;
17860
+ if (assets.htmlAttributes) {
17861
+ html = html.replace(
17862
+ /<html\b([^>]*)>/i,
17863
+ (_match, attrs) => `<html${attrs}${assets.htmlAttributes}>`
17864
+ );
17865
+ }
17866
+ if (!/\sid=["']root["']/i.test(html)) {
17867
+ html = html.replace(/<body\b([^>]*)>/i, '<body$1><div id="root">').replace(/<\/body>/i, "</div></body>");
17868
+ }
17869
+ if (assets.headAssets) {
17870
+ html = html.replace(/<\/head>/i, () => ` ${assets.headAssets}
17871
+ </head>`);
17872
+ }
17873
+ if (assets.bodyFooter) {
17874
+ html = html.replace(/<\/body>/i, () => ` ${assets.bodyFooter}
17875
+ </body>`);
17876
+ }
17877
+ return /^\s*<!doctype/i.test(html) ? html : `<!DOCTYPE html>
17878
+ ${html}`;
17879
+ }
17880
+ __name(composeFarmFullDocument, "composeFarmFullDocument");
17881
+
17882
+ // src/server/renderer.ts
17824
17883
  var import_stream = require("stream");
17825
17884
 
17826
17885
  // src/middleware/server.ts
@@ -21175,7 +21234,7 @@ _setFarmThemeServerSnapshotResolver(() => {
21175
21234
  });
21176
21235
 
21177
21236
  // package.json
21178
- var version = "0.1.0-beta.45";
21237
+ var version = "0.1.0-beta.47";
21179
21238
 
21180
21239
  // src/version.ts
21181
21240
  var FARM_VERSION = version;
@@ -21284,6 +21343,16 @@ function warnSuppressedAsyncHydrationOnce(modulePath) {
21284
21343
  );
21285
21344
  }
21286
21345
  __name(warnSuppressedAsyncHydrationOnce, "warnSuppressedAsyncHydrationOnce");
21346
+ var fullDocumentRoutes = /* @__PURE__ */ new Set();
21347
+ var warnedFullDocumentLayout = false;
21348
+ function warnFarmFullDocumentLayout() {
21349
+ if (warnedFullDocumentLayout) return;
21350
+ warnedFullDocumentLayout = true;
21351
+ logger.warn(
21352
+ `A root layout returned a full <html> document. Farm.js owns the document shell, so a layout should return a fragment (its children) \u2014 like the docs example \u2014 and let the framework provide <html>/<head>/<body>. The document has been composed into the response, but returning a fragment avoids the ambiguity and keeps dev and production identical.`
21353
+ );
21354
+ }
21355
+ __name(warnFarmFullDocumentLayout, "warnFarmFullDocumentLayout");
21287
21356
  function hasRequestHeader(req, name2) {
21288
21357
  const value = req.headers[name2.toLowerCase()];
21289
21358
  return Array.isArray(value) ? value.length > 0 : Boolean(value);
@@ -22119,7 +22188,7 @@ var _ServerRenderer = class _ServerRenderer {
22119
22188
  );
22120
22189
  const clientLayouts = layouts.map((layout2, index) => ({
22121
22190
  pattern: layout2.pattern,
22122
- modulePath: layout2.modulePath.startsWith(this.config.root) ? layout2.modulePath.slice(this.config.root.length) : layout2.modulePath,
22191
+ modulePath: toRootRelativeUrlPath(layout2.modulePath, this.config.root) ?? layout2.modulePath,
22123
22192
  shouldHydrate: layoutHydrationMetadata[index]?.shouldHydrate === true,
22124
22193
  islandStrategy: layoutHydrationMetadata[index]?.islandStrategy ?? null
22125
22194
  }));
@@ -22695,7 +22764,7 @@ var _ServerRenderer = class _ServerRenderer {
22695
22764
  const routeSlots = (req.__FARM_ROUTE_SLOTS__ || []).map(
22696
22765
  (slot) => ({
22697
22766
  ...slot,
22698
- modulePath: typeof slot.modulePath === "string" && slot.modulePath.startsWith(this.config.root) ? slot.modulePath.slice(this.config.root.length) : slot.modulePath
22767
+ modulePath: typeof slot.modulePath === "string" ? toRootRelativeUrlPath(slot.modulePath, this.config.root) ?? slot.modulePath : slot.modulePath
22699
22768
  })
22700
22769
  );
22701
22770
  const deferredProps = prepareDeferredData({
@@ -22703,7 +22772,7 @@ var _ServerRenderer = class _ServerRenderer {
22703
22772
  slots: routeSlots
22704
22773
  });
22705
22774
  const pagePath = req.__FARM_PAGE_PATH__;
22706
- const relativePath2 = pagePath ? pagePath.startsWith(this.config.root) ? pagePath.slice(this.config.root.length) : pagePath : "/src/app/page.tsx";
22775
+ const relativePath2 = pagePath ? toRootRelativeUrlPath(pagePath, this.config.root) ?? pagePath : "/src/app/page.tsx";
22707
22776
  const deploymentId = this.getDeploymentId();
22708
22777
  const bootstrapScript = `<script>
22709
22778
  window.__FARM_PROPS__ = ${serializeInlineValue2(deferredProps.data.page)};
@@ -22737,7 +22806,27 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
22737
22806
  this.config.basePath,
22738
22807
  getTheme()
22739
22808
  );
22740
- const html = `<!DOCTYPE html>
22809
+ const fullDocument = extractFarmFullDocument(content);
22810
+ let html;
22811
+ if (fullDocument) {
22812
+ warnFarmFullDocumentLayout();
22813
+ html = composeFarmFullDocument(fullDocument, {
22814
+ htmlAttributes: `${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}`,
22815
+ headAssets: [
22816
+ themeDocument.head,
22817
+ `<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(deploymentId)}">`,
22818
+ metaTags,
22819
+ alternateTags,
22820
+ renderFarmFontDevHead(this.config.root || process.cwd()),
22821
+ `<link rel="stylesheet" href="/src/app/globals.css">`,
22822
+ `<script type="module" src="/@vite/client"></script>`,
22823
+ rendererHydrationScript,
22824
+ bootstrapScript
22825
+ ].filter(Boolean).join("\n "),
22826
+ bodyFooter: [deferredScript, `<script type="module" src="/@farm/client.js"></script>`].filter(Boolean).join("\n ")
22827
+ });
22828
+ } else {
22829
+ html = `<!DOCTYPE html>
22741
22830
  <html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
22742
22831
  <head>
22743
22832
  ${themeDocument.head}
@@ -22758,6 +22847,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
22758
22847
  <script type="module" src="/@farm/client.js"></script>
22759
22848
  </body>
22760
22849
  </html>`;
22850
+ }
22761
22851
  emitFarmEvent({
22762
22852
  type: "render.stream.shellReady",
22763
22853
  route,
@@ -22780,7 +22870,8 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
22780
22870
  }
22781
22871
  async renderWithSSR(element, req, res, clearMiddlewareData, options = {}) {
22782
22872
  const renderToPipeableStream2 = this.rendererRuntime.renderToPipeableStream;
22783
- if (!renderToPipeableStream2) {
22873
+ const fullDocumentRouteKey = options.observabilityRoute || req.__FARM_ROUTE__ || req.url || "/";
22874
+ if (!renderToPipeableStream2 || fullDocumentRoutes.has(fullDocumentRouteKey)) {
22784
22875
  return this.renderBufferedSSR(element, req, res, clearMiddlewareData, options);
22785
22876
  }
22786
22877
  return new Promise((resolve8, reject) => {
@@ -22799,7 +22890,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
22799
22890
  let didError = false;
22800
22891
  const pagePath = req.__FARM_PAGE_PATH__;
22801
22892
  const isClientComponent = req.__FARM_IS_CLIENT_COMPONENT__ === true;
22802
- const relativePath2 = pagePath ? pagePath.startsWith(this.config.root) ? pagePath.slice(this.config.root.length) : pagePath : "/src/app/page.tsx";
22893
+ const relativePath2 = pagePath ? toRootRelativeUrlPath(pagePath, this.config.root) ?? pagePath : "/src/app/page.tsx";
22803
22894
  const manifest = options.routeManifest ?? this.routeManager.generateClientManifest(this.config.root);
22804
22895
  const clientManifest = {
22805
22896
  clientEntry: "/@farm/client.js",
@@ -22847,7 +22938,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
22847
22938
  const routeSlotPayload = (req.__FARM_ROUTE_SLOTS__ || []).map(
22848
22939
  (slot) => ({
22849
22940
  ...slot,
22850
- modulePath: typeof slot.modulePath === "string" && slot.modulePath.startsWith(this.config.root) ? slot.modulePath.slice(this.config.root.length) : slot.modulePath
22941
+ modulePath: typeof slot.modulePath === "string" ? toRootRelativeUrlPath(slot.modulePath, this.config.root) ?? slot.modulePath : slot.modulePath
22851
22942
  })
22852
22943
  );
22853
22944
  const deferredProps = prepareDeferredData({
@@ -22927,6 +23018,7 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
22927
23018
  htmlParts.push(shell);
22928
23019
  staticShellParts?.push(shell);
22929
23020
  let firstChunk = true;
23021
+ let checkedFullDocument = false;
22930
23022
  const writableStream = new import_stream.Writable({
22931
23023
  write(chunk, encoding, callback) {
22932
23024
  if (firstChunk && process.env.FARM_VERBOSE) {
@@ -22934,6 +23026,13 @@ ${getFarmI18nClientSnapshot() ? `window.__FARM_I18N__ = ${serializeInlineValue2(
22934
23026
  firstChunk = false;
22935
23027
  }
22936
23028
  const chunkText = Buffer.isBuffer(chunk) ? chunk.toString() : String(chunk);
23029
+ if (!checkedFullDocument) {
23030
+ checkedFullDocument = true;
23031
+ if (opensFarmFullDocument(chunkText)) {
23032
+ fullDocumentRoutes.add(fullDocumentRouteKey);
23033
+ warnFarmFullDocumentLayout();
23034
+ }
23035
+ }
22937
23036
  htmlParts.push(chunkText);
22938
23037
  if (staticShellParts && !staticShellClosed) {
22939
23038
  const dynamicIndex = findPPRDynamicChunkIndex(chunkText);
@@ -23132,6 +23231,24 @@ ${i18nSnapshot ? `window.__FARM_I18N__ = ${serializeInlineValue2(i18nSnapshot)};
23132
23231
  getTheme()
23133
23232
  );
23134
23233
  const rendererHydrationScript = this.rendererRuntime.generateHydrationScript?.() || "";
23234
+ const fullDocument = extractFarmFullDocument(content);
23235
+ if (fullDocument) {
23236
+ warnFarmFullDocumentLayout();
23237
+ return composeFarmFullDocument(fullDocument, {
23238
+ htmlAttributes: `${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}`,
23239
+ headAssets: [
23240
+ themeDocument.head,
23241
+ `<meta name="farm-deployment-id" content="${escapeHtmlAttribute2(this.getDeploymentId())}">`,
23242
+ alternateLinks,
23243
+ fontHead,
23244
+ `<link rel="stylesheet" href="/src/app/globals.css" />`,
23245
+ `<script type="module" src="/@vite/client"></script>`,
23246
+ rendererHydrationScript,
23247
+ integrationManifestScript
23248
+ ].filter(Boolean).join("\n "),
23249
+ bodyFooter: clientScript.trim()
23250
+ });
23251
+ }
23135
23252
  return `<!DOCTYPE html>
23136
23253
  <html lang="${escapeHtmlAttribute2(i18nSnapshot?.locale || "en")}"${i18nSnapshot ? ` dir="${i18nSnapshot.direction}"` : ""}${themeDocument.attributes}>
23137
23254
  <head>
@@ -32372,6 +32489,7 @@ __name(assertFunction, "assertFunction");
32372
32489
  sqliteStorage,
32373
32490
  startDevServer,
32374
32491
  storageCacheAdapter,
32492
+ toRootRelativeUrlPath,
32375
32493
  toViteModuleId,
32376
32494
  unstable_cache,
32377
32495
  updateTag,