@shopify/hydrogen 2025.7.0 → 2025.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/dev/{get-virtual-routes-KWSSQH4L.js → get-virtual-routes-ZEUPNZWL.js} +0 -36
  2. package/dist/dev/hydrogen-routes.js +1 -1
  3. package/dist/development/{get-virtual-routes-6PVSMJPH.js → get-virtual-routes-XE7G57DS.js} +3 -36
  4. package/dist/development/get-virtual-routes-XE7G57DS.js.map +1 -0
  5. package/dist/development/index.cjs +406 -124
  6. package/dist/development/index.cjs.map +1 -1
  7. package/dist/development/index.js +395 -81
  8. package/dist/development/index.js.map +1 -1
  9. package/dist/development/react-router-preset.d.ts +5 -5
  10. package/dist/development/react-router-preset.js +4 -4
  11. package/dist/development/react-router-preset.js.map +1 -1
  12. package/dist/oxygen/index.d.ts +120 -3
  13. package/dist/oxygen/index.js +111 -5
  14. package/dist/production/get-virtual-routes-MYYLGSAS.js +3 -0
  15. package/dist/production/get-virtual-routes-MYYLGSAS.js.map +1 -0
  16. package/dist/production/index.cjs +76 -76
  17. package/dist/production/index.cjs.map +1 -1
  18. package/dist/production/index.d.cts +76 -15
  19. package/dist/production/index.d.ts +76 -15
  20. package/dist/production/index.js +76 -76
  21. package/dist/production/index.js.map +1 -1
  22. package/dist/production/react-router-preset.d.ts +5 -5
  23. package/dist/production/react-router-preset.js +2 -2
  24. package/dist/vite/get-virtual-routes.d.ts +1 -17
  25. package/dist/vite/get-virtual-routes.js +0 -36
  26. package/package.json +6 -6
  27. package/dist/development/get-virtual-routes-6PVSMJPH.js.map +0 -1
  28. package/dist/oxygen/chunk-RVXKHOUX.js +0 -39
  29. package/dist/oxygen/chunk-T4YWBSCF.js +0 -14
  30. package/dist/oxygen/createRequestHandler.d.ts +0 -10
  31. package/dist/oxygen/createRequestHandler.js +0 -6
  32. package/dist/oxygen/getStorefrontHeaders-BqPh5S1b.d.ts +0 -69
  33. package/dist/oxygen/getStorefrontHeaders.d.ts +0 -1
  34. package/dist/oxygen/getStorefrontHeaders.js +0 -6
  35. package/dist/production/get-virtual-routes-JVKSNI4M.js +0 -3
  36. package/dist/production/get-virtual-routes-JVKSNI4M.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  import { Preset } from '@react-router/dev/config';
2
2
 
3
3
  /**
4
- * Official Hydrogen Preset for React Router 7.9.x
4
+ * Official Hydrogen Preset for React Router 7.12.x
5
5
  *
6
6
  * Provides optimal React Router configuration for Hydrogen applications on Oxygen.
7
7
  * Enables validated performance optimizations while ensuring CLI compatibility.
8
8
  *
9
- * React Router 7.9.x Feature Support Matrix for Hydrogen 2025.7.0
9
+ * React Router 7.12.x Feature Support Matrix for Hydrogen 2025.7.0
10
10
  *
11
11
  * +----------------------------------+----------+----------------------------------+
12
12
  * | Feature | Status | Notes |
@@ -19,9 +19,9 @@ import { Preset } from '@react-router/dev/config';
19
19
  * +----------------------------------+----------+----------------------------------+
20
20
  * | PERFORMANCE FLAGS |
21
21
  * +----------------------------------+----------+----------------------------------+
22
- * | unstable_optimizeDeps | Enabled | Build performance optimization |
23
22
  * | v8_middleware | Enabled | Required for Hydrogen context |
24
- * | unstable_splitRouteModules | Enabled | Route code splitting |
23
+ * | v8_splitRouteModules | Enabled | Route code splitting |
24
+ * | unstable_optimizeDeps | Enabled | Build performance optimization |
25
25
  * +----------------------------------+----------+----------------------------------+
26
26
  * | ROUTE DISCOVERY |
27
27
  * +----------------------------------+----------+----------------------------------+
@@ -35,7 +35,7 @@ import { Preset } from '@react-router/dev/config';
35
35
  * | serverBundles: () => {} | Blocked | Manifest incompatibility |
36
36
  * | buildEnd: () => {} | Blocked | CLI bypasses hook execution |
37
37
  * | unstable_subResourceIntegrity | Blocked | CSP nonce/hash conflict |
38
- * | unstable_viteEnvironmentApi | Blocked | CLI fallback detection used |
38
+ * | v8_viteEnvironmentApi | Blocked | CLI fallback detection used |
39
39
  * +----------------------------------+----------+----------------------------------+
40
40
  *
41
41
  * @version 2025.7.0
@@ -1,10 +1,10 @@
1
- function r(){return{name:"hydrogen-2025.7.0",reactRouterConfig:()=>({appDirectory:"app",buildDirectory:"dist",ssr:!0,future:{v8_middleware:!0,unstable_optimizeDeps:!0,unstable_splitRouteModules:!0,unstable_subResourceIntegrity:!1,unstable_viteEnvironmentApi:!1}}),reactRouterConfigResolved:({reactRouterConfig:e})=>{if(e.basename&&e.basename!=="/")throw new Error(`[Hydrogen Preset] basename is not supported in Hydrogen 2025.7.0.
1
+ function r(){return{name:"hydrogen-2025.7.0",reactRouterConfig:()=>({appDirectory:"app",buildDirectory:"dist",ssr:!0,future:{v8_middleware:!0,v8_splitRouteModules:!0,v8_viteEnvironmentApi:!1,unstable_optimizeDeps:!0,unstable_subResourceIntegrity:!1}}),reactRouterConfigResolved:({reactRouterConfig:e})=>{if(e.basename&&e.basename!=="/")throw new Error(`[Hydrogen Preset] basename is not supported in Hydrogen 2025.7.0.
2
2
  Reason: Requires major CLI infrastructure modernization.
3
3
  Workaround: Use reverse proxy or CDN path rewriting for subdirectory hosting.`);if(e.prerender)throw new Error(`[Hydrogen Preset] prerender is not supported in Hydrogen 2025.7.0.
4
4
  Reason: React Router plugin incompatibility with Hydrogen CLI build pipeline.
5
5
  Workaround: Use external static generation tools or server-side caching.`);if(e.serverBundles)throw new Error(`[Hydrogen Preset] serverBundles is not supported in Hydrogen 2025.7.0.
6
6
  Reason: React Router plugin manifest incompatibility with Hydrogen CLI.
7
- Alternative: Route-level code splitting via unstable_splitRouteModules is enabled.`);if(e.buildEnd)throw new Error(`[Hydrogen Preset] buildEnd is not supported in Hydrogen 2025.7.0.
7
+ Alternative: Route-level code splitting via v8_splitRouteModules is enabled.`);if(e.buildEnd)throw new Error(`[Hydrogen Preset] buildEnd is not supported in Hydrogen 2025.7.0.
8
8
  Reason: Hydrogen CLI bypasses React Router buildEnd hook execution.
9
9
  Workaround: Use external build scripts or package.json post-build hooks.`);if(e.future?.unstable_subResourceIntegrity===!0)throw new Error(`[Hydrogen Preset] unstable_subResourceIntegrity cannot be enabled.
10
10
  Reason: Conflicts with Hydrogen CSP nonce-based authentication.
@@ -1,7 +1,6 @@
1
1
  declare const VIRTUAL_ROUTES_DIR = "vite/virtual-routes/routes";
2
2
  declare const VIRTUAL_ROUTES_ROUTES_DIR_PARTS: string[];
3
3
  declare const VIRTUAL_ROUTES_DIR_PARTS: string[];
4
- declare const VIRTUAL_ROOT = "vite/virtual-routes/virtual-root";
5
4
  declare function getVirtualRoutesV3(): Promise<{
6
5
  routes: {
7
6
  id: string;
@@ -13,20 +12,5 @@ declare function getVirtualRoutesV3(): Promise<{
13
12
  file: string;
14
13
  };
15
14
  }>;
16
- declare const VIRTUAL_ROUTES_DIR_ORIG = "virtual-routes/routes";
17
- declare const VIRTUAL_ROOT_ORIG = "virtual-routes/virtual-root-with-layout";
18
- declare function getVirtualRoutes(): Promise<{
19
- routes: {
20
- id: string;
21
- path: string;
22
- file: string;
23
- index: boolean;
24
- }[];
25
- root: {
26
- id: string;
27
- path: string;
28
- file: string;
29
- };
30
- }>;
31
15
 
32
- export { VIRTUAL_ROOT, VIRTUAL_ROOT_ORIG, VIRTUAL_ROUTES_DIR, VIRTUAL_ROUTES_DIR_ORIG, VIRTUAL_ROUTES_DIR_PARTS, VIRTUAL_ROUTES_ROUTES_DIR_PARTS, getVirtualRoutes, getVirtualRoutesV3 };
16
+ export { VIRTUAL_ROUTES_DIR, VIRTUAL_ROUTES_DIR_PARTS, VIRTUAL_ROUTES_ROUTES_DIR_PARTS, getVirtualRoutesV3 };
@@ -1,7 +1,4 @@
1
1
  // src/vite/get-virtual-routes.ts
2
- import { fileURLToPath } from "url";
3
- import path from "path";
4
- import { readdir } from "fs/promises";
5
2
  var VIRTUAL_ROUTES_DIR = "vite/virtual-routes/routes";
6
3
  var VIRTUAL_ROUTES_ROUTES_DIR_PARTS = [
7
4
  "vite",
@@ -9,7 +6,6 @@ var VIRTUAL_ROUTES_ROUTES_DIR_PARTS = [
9
6
  "routes"
10
7
  ];
11
8
  var VIRTUAL_ROUTES_DIR_PARTS = ["vite", "virtual-routes"];
12
- var VIRTUAL_ROOT = "vite/virtual-routes/virtual-root";
13
9
  function getVirtualRoutesPath(pathParts, forFile) {
14
10
  const basePath = new URL("../", import.meta.url);
15
11
  const virtualRoutesPath = pathParts.reduce((working, dirPart) => {
@@ -65,41 +61,9 @@ async function getVirtualRoutesV3() {
65
61
  }
66
62
  };
67
63
  }
68
- var VIRTUAL_ROUTES_DIR_ORIG = "virtual-routes/routes";
69
- var VIRTUAL_ROOT_ORIG = "virtual-routes/virtual-root-with-layout";
70
- async function getVirtualRoutes() {
71
- const distPath = path.dirname(fileURLToPath(import.meta.url));
72
- const virtualRoutesPath = path.join(distPath, VIRTUAL_ROUTES_DIR_ORIG);
73
- const routes = await readdir(virtualRoutesPath, { recursive: true }).then(
74
- (files) => files.map((relativeFilePath) => {
75
- const absoluteFilePath = path.join(virtualRoutesPath, relativeFilePath);
76
- const id = relativeFilePath.replace(/\.[jt]sx?$/, "").replaceAll("\\", "/");
77
- const isIndex = /(^|\/)index$/.test(id);
78
- const routePath = id.replace(/(^|\/)index$/, "");
79
- return {
80
- id: `${VIRTUAL_ROUTES_DIR_ORIG}/${id}`,
81
- path: routePath,
82
- file: absoluteFilePath,
83
- index: isIndex
84
- };
85
- })
86
- );
87
- return {
88
- routes,
89
- root: {
90
- id: VIRTUAL_ROOT_ORIG,
91
- path: "",
92
- file: path.join(distPath, VIRTUAL_ROOT_ORIG + ".jsx")
93
- }
94
- };
95
- }
96
64
  export {
97
- VIRTUAL_ROOT,
98
- VIRTUAL_ROOT_ORIG,
99
65
  VIRTUAL_ROUTES_DIR,
100
- VIRTUAL_ROUTES_DIR_ORIG,
101
66
  VIRTUAL_ROUTES_DIR_PARTS,
102
67
  VIRTUAL_ROUTES_ROUTES_DIR_PARTS,
103
- getVirtualRoutes,
104
68
  getVirtualRoutesV3
105
69
  };
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "@shopify:registry": "https://registry.npmjs.org"
6
6
  },
7
7
  "type": "module",
8
- "version": "2025.7.0",
8
+ "version": "2025.7.2",
9
9
  "license": "MIT",
10
10
  "main": "dist/index.cjs",
11
11
  "module": "dist/production/index.js",
@@ -83,7 +83,7 @@
83
83
  "dist"
84
84
  ],
85
85
  "dependencies": {
86
- "@shopify/hydrogen-react": "2025.7.0",
86
+ "@shopify/hydrogen-react": "2025.7.1",
87
87
  "content-security-policy-builder": "^2.2.0",
88
88
  "flame-chart-js": "2.3.1",
89
89
  "isbot": "^5.1.21",
@@ -94,8 +94,8 @@
94
94
  "@shopify/graphql-client": "1.4.1"
95
95
  },
96
96
  "devDependencies": {
97
- "react-router": "7.9.2",
98
- "@react-router/dev": "7.9.2",
97
+ "react-router": "7.12.0",
98
+ "@react-router/dev": "7.12.0",
99
99
  "@shopify/generate-docs": "0.16.4",
100
100
  "@shopify/hydrogen-codegen": "*",
101
101
  "@testing-library/jest-dom": "^5.17.0",
@@ -108,8 +108,8 @@
108
108
  "vitest": "^3.2.4"
109
109
  },
110
110
  "peerDependencies": {
111
- "react-router": "7.9.2",
112
- "@react-router/dev": "7.9.2",
111
+ "react-router": "7.12.0",
112
+ "@react-router/dev": "7.12.0",
113
113
  "react": "18.3.1",
114
114
  "vite": "^5.1.0 || ^6.2.1"
115
115
  },
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/vite/get-virtual-routes.ts"],"names":[],"mappings":"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","file":"get-virtual-routes-6PVSMJPH.js","sourcesContent":["import {fileURLToPath} from 'node:url';\nimport path from 'node:path';\nimport {readdir} from 'node:fs/promises';\n\n// v3_routeConfig virtual routes constants\nexport const VIRTUAL_ROUTES_DIR = 'vite/virtual-routes/routes';\nexport const VIRTUAL_ROUTES_ROUTES_DIR_PARTS = [\n 'vite',\n 'virtual-routes',\n 'routes',\n];\nexport const VIRTUAL_ROUTES_DIR_PARTS = ['vite', 'virtual-routes'];\nexport const VIRTUAL_ROOT = 'vite/virtual-routes/virtual-root';\n\nfunction getVirtualRoutesPath(\n pathParts: Array<string>,\n forFile: string,\n): string {\n const basePath = new URL('../', import.meta.url);\n const virtualRoutesPath = pathParts.reduce((working, dirPart) => {\n return new URL(`${dirPart}/`, working);\n }, basePath);\n\n // Getting rid of the drive path (ie. '/C:/') in windows\n return new URL(forFile, virtualRoutesPath).pathname.replace(\n /^\\/[a-zA-Z]:\\//,\n '/',\n );\n}\n\nexport async function getVirtualRoutesV3() {\n return {\n routes: [\n {\n id: `${VIRTUAL_ROUTES_DIR}/graphiql`,\n path: 'graphiql',\n file: getVirtualRoutesPath(\n VIRTUAL_ROUTES_ROUTES_DIR_PARTS,\n 'graphiql.jsx',\n ),\n index: false,\n },\n {\n id: `${VIRTUAL_ROUTES_DIR}/subrequest-profiler`,\n path: 'subrequest-profiler',\n file: getVirtualRoutesPath(\n VIRTUAL_ROUTES_ROUTES_DIR_PARTS,\n 'subrequest-profiler.jsx',\n ),\n index: false,\n },\n {\n id: `${VIRTUAL_ROUTES_DIR}/[.]well-known.appspecific.com[.]chrome[.]devtools[.]json`,\n path: '.well-known/appspecific/com.chrome.devtools.json',\n file: getVirtualRoutesPath(\n VIRTUAL_ROUTES_ROUTES_DIR_PARTS,\n '[.]well-known.appspecific.com[.]chrome[.]devtools[.]json.jsx',\n ),\n index: false,\n },\n {\n id: `${VIRTUAL_ROUTES_DIR}/index`,\n path: '',\n file: getVirtualRoutesPath(\n VIRTUAL_ROUTES_ROUTES_DIR_PARTS,\n 'index.jsx',\n ),\n index: true,\n },\n ],\n layout: {\n file: getVirtualRoutesPath(VIRTUAL_ROUTES_DIR_PARTS, 'layout.jsx'),\n },\n };\n}\n\n// original virtual routes constants\nexport const VIRTUAL_ROUTES_DIR_ORIG = 'virtual-routes/routes';\nexport const VIRTUAL_ROOT_ORIG = 'virtual-routes/virtual-root-with-layout';\n\nexport async function getVirtualRoutes() {\n const distPath = path.dirname(fileURLToPath(import.meta.url));\n const virtualRoutesPath = path.join(distPath, VIRTUAL_ROUTES_DIR_ORIG);\n\n const routes = await readdir(virtualRoutesPath, {recursive: true}).then(\n (files) =>\n files.map((relativeFilePath) => {\n const absoluteFilePath = path.join(virtualRoutesPath, relativeFilePath);\n const id = relativeFilePath\n .replace(/\\.[jt]sx?$/, '')\n .replaceAll('\\\\', '/');\n const isIndex = /(^|\\/)index$/.test(id);\n const routePath = id.replace(/(^|\\/)index$/, '');\n\n return {\n id: `${VIRTUAL_ROUTES_DIR_ORIG}/${id}`,\n path: routePath,\n file: absoluteFilePath,\n index: isIndex,\n };\n }),\n );\n\n return {\n routes,\n root: {\n id: VIRTUAL_ROOT_ORIG,\n path: '',\n file: path.join(distPath, VIRTUAL_ROOT_ORIG + '.jsx'),\n },\n };\n}\n"]}
@@ -1,39 +0,0 @@
1
- // src/oxygen/createRequestHandler.ts
2
- import {
3
- createRequestHandler as createReactRouterRequestHandler
4
- } from "react-router";
5
- function createRequestHandler({
6
- build,
7
- mode,
8
- poweredByHeader = true,
9
- getLoadContext
10
- }) {
11
- const handleRequest = createReactRouterRequestHandler(build, mode);
12
- return async (request) => {
13
- const method = request.method;
14
- if ((method === "GET" || method === "HEAD") && request.body) {
15
- return new Response(`${method} requests cannot have a body`, {
16
- status: 400
17
- });
18
- }
19
- const url = new URL(request.url);
20
- if (url.pathname.includes("//")) {
21
- return new Response(null, {
22
- status: 301,
23
- headers: {
24
- location: url.pathname.replace(/\/+/g, "/")
25
- }
26
- });
27
- }
28
- const context = getLoadContext ? await getLoadContext(request) : void 0;
29
- const response = await handleRequest(request, context);
30
- if (poweredByHeader) {
31
- response.headers.append("powered-by", "Shopify, Hydrogen");
32
- }
33
- return response;
34
- };
35
- }
36
-
37
- export {
38
- createRequestHandler
39
- };
@@ -1,14 +0,0 @@
1
- // src/oxygen/getStorefrontHeaders.ts
2
- function getStorefrontHeaders(request) {
3
- const headers = request.headers;
4
- return {
5
- requestGroupId: headers.get("request-id"),
6
- buyerIp: headers.get("oxygen-buyer-ip"),
7
- cookie: headers.get("cookie"),
8
- purpose: headers.get("purpose")
9
- };
10
- }
11
-
12
- export {
13
- getStorefrontHeaders
14
- };
@@ -1,10 +0,0 @@
1
- import { ServerBuild } from 'react-router';
2
-
3
- declare function createRequestHandler<Context = unknown>({ build, mode, poweredByHeader, getLoadContext, }: {
4
- build: ServerBuild;
5
- mode?: string;
6
- poweredByHeader?: boolean;
7
- getLoadContext?: (request: Request) => Promise<Context> | Context;
8
- }): (request: Request) => Promise<Response>;
9
-
10
- export { createRequestHandler };
@@ -1,6 +0,0 @@
1
- import {
2
- createRequestHandler
3
- } from "./chunk-RVXKHOUX.js";
4
- export {
5
- createRequestHandler
6
- };
@@ -1,69 +0,0 @@
1
- type RequestEventPayload = {
2
- __fromVite?: boolean;
3
- url: string;
4
- eventType: 'request' | 'subrequest';
5
- requestId?: string | null;
6
- purpose?: string | null;
7
- startTime: number;
8
- endTime?: number;
9
- cacheStatus?: 'MISS' | 'HIT' | 'STALE' | 'PUT';
10
- waitUntil?: WaitUntil;
11
- graphql?: string | null;
12
- stackInfo?: {
13
- file?: string;
14
- func?: string;
15
- line?: number;
16
- column?: number;
17
- };
18
- responsePayload?: any;
19
- responseInit?: Omit<ResponseInit, 'headers'> & {
20
- headers?: [string, string][];
21
- };
22
- cache?: {
23
- status?: string;
24
- strategy?: string;
25
- key?: string | readonly unknown[];
26
- };
27
- displayName?: string;
28
- };
29
-
30
- type WaitUntil = (promise: Promise<unknown>) => void;
31
-
32
- type StorefrontHeaders = {
33
- /** A unique ID that correlates all sub-requests together. */
34
- requestGroupId: string | null;
35
- /** The IP address of the client. */
36
- buyerIp: string | null;
37
- /** The cookie header from the client */
38
- cookie: string | null;
39
- /** The purpose header value for debugging */
40
- purpose: string | null;
41
- };
42
-
43
- declare global {
44
- interface Window {
45
- privacyBanner: PrivacyBanner;
46
- Shopify: {
47
- customerPrivacy: CustomerPrivacy;
48
- };
49
- }
50
- interface Document {
51
- addEventListener<K extends keyof CustomEventMap>(
52
- type: K,
53
- listener: (this: Document, ev: CustomEventMap[K]) => void,
54
- ): void;
55
- removeEventListener<K extends keyof CustomEventMap>(
56
- type: K,
57
- listener: (this: Document, ev: CustomEventMap[K]) => void,
58
- ): void;
59
- dispatchEvent<K extends keyof CustomEventMap>(ev: CustomEventMap[K]): void;
60
- }
61
- var __H2O_LOG_EVENT: undefined | ((event: RequestEventPayload) => void);
62
- var __remix_devServerHooks:
63
- | undefined
64
- | {getCriticalCss: (...args: unknown[]) => any};
65
- }
66
-
67
- declare function getStorefrontHeaders(request: Request): StorefrontHeaders;
68
-
69
- export { type StorefrontHeaders as S, getStorefrontHeaders as g };
@@ -1 +0,0 @@
1
- export { g as getStorefrontHeaders } from './getStorefrontHeaders-BqPh5S1b.js';
@@ -1,6 +0,0 @@
1
- import {
2
- getStorefrontHeaders
3
- } from "./chunk-T4YWBSCF.js";
4
- export {
5
- getStorefrontHeaders
6
- };
@@ -1,3 +0,0 @@
1
- import {fileURLToPath}from'url';import i from'path';import {readdir}from'fs/promises';var s="vite/virtual-routes/routes",n=["vite","virtual-routes","routes"],m=["vite","virtual-routes"],_="vite/virtual-routes/virtual-root";function t(e,r){let p=new URL("../",import.meta.url),a=e.reduce((o,u)=>new URL(`${u}/`,o),p);return new URL(r,a).pathname.replace(/^\/[a-zA-Z]:\//,"/")}async function j(){return {routes:[{id:`${s}/graphiql`,path:"graphiql",file:t(n,"graphiql.jsx"),index:false},{id:`${s}/subrequest-profiler`,path:"subrequest-profiler",file:t(n,"subrequest-profiler.jsx"),index:false},{id:`${s}/[.]well-known.appspecific.com[.]chrome[.]devtools[.]json`,path:".well-known/appspecific/com.chrome.devtools.json",file:t(n,"[.]well-known.appspecific.com[.]chrome[.]devtools[.]json.jsx"),index:false},{id:`${s}/index`,path:"",file:t(n,"index.jsx"),index:true}],layout:{file:t(m,"layout.jsx")}}}var c="virtual-routes/routes",R="virtual-routes/virtual-root-with-layout";async function I(){let e=i.dirname(fileURLToPath(import.meta.url)),r=i.join(e,c);return {routes:await readdir(r,{recursive:true}).then(a=>a.map(o=>{let u=i.join(r,o),l=o.replace(/\.[jt]sx?$/,"").replaceAll("\\","/"),d=/(^|\/)index$/.test(l),x=l.replace(/(^|\/)index$/,"");return {id:`${c}/${l}`,path:x,file:u,index:d}})),root:{id:R,path:"",file:i.join(e,R+".jsx")}}}
2
- export{_ as VIRTUAL_ROOT,R as VIRTUAL_ROOT_ORIG,s as VIRTUAL_ROUTES_DIR,c as VIRTUAL_ROUTES_DIR_ORIG,m as VIRTUAL_ROUTES_DIR_PARTS,n as VIRTUAL_ROUTES_ROUTES_DIR_PARTS,I as getVirtualRoutes,j as getVirtualRoutesV3};//# sourceMappingURL=get-virtual-routes-JVKSNI4M.js.map
3
- //# sourceMappingURL=get-virtual-routes-JVKSNI4M.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/vite/get-virtual-routes.ts"],"names":["VIRTUAL_ROUTES_DIR","VIRTUAL_ROUTES_ROUTES_DIR_PARTS","VIRTUAL_ROUTES_DIR_PARTS","VIRTUAL_ROOT","getVirtualRoutesPath","pathParts","forFile","basePath","virtualRoutesPath","working","dirPart","getVirtualRoutesV3","VIRTUAL_ROUTES_DIR_ORIG","VIRTUAL_ROOT_ORIG","getVirtualRoutes","distPath","path","fileURLToPath","readdir","files","relativeFilePath","absoluteFilePath","id","isIndex","routePath"],"mappings":"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","file":"get-virtual-routes-JVKSNI4M.js","sourcesContent":["import {fileURLToPath} from 'node:url';\nimport path from 'node:path';\nimport {readdir} from 'node:fs/promises';\n\n// v3_routeConfig virtual routes constants\nexport const VIRTUAL_ROUTES_DIR = 'vite/virtual-routes/routes';\nexport const VIRTUAL_ROUTES_ROUTES_DIR_PARTS = [\n 'vite',\n 'virtual-routes',\n 'routes',\n];\nexport const VIRTUAL_ROUTES_DIR_PARTS = ['vite', 'virtual-routes'];\nexport const VIRTUAL_ROOT = 'vite/virtual-routes/virtual-root';\n\nfunction getVirtualRoutesPath(\n pathParts: Array<string>,\n forFile: string,\n): string {\n const basePath = new URL('../', import.meta.url);\n const virtualRoutesPath = pathParts.reduce((working, dirPart) => {\n return new URL(`${dirPart}/`, working);\n }, basePath);\n\n // Getting rid of the drive path (ie. '/C:/') in windows\n return new URL(forFile, virtualRoutesPath).pathname.replace(\n /^\\/[a-zA-Z]:\\//,\n '/',\n );\n}\n\nexport async function getVirtualRoutesV3() {\n return {\n routes: [\n {\n id: `${VIRTUAL_ROUTES_DIR}/graphiql`,\n path: 'graphiql',\n file: getVirtualRoutesPath(\n VIRTUAL_ROUTES_ROUTES_DIR_PARTS,\n 'graphiql.jsx',\n ),\n index: false,\n },\n {\n id: `${VIRTUAL_ROUTES_DIR}/subrequest-profiler`,\n path: 'subrequest-profiler',\n file: getVirtualRoutesPath(\n VIRTUAL_ROUTES_ROUTES_DIR_PARTS,\n 'subrequest-profiler.jsx',\n ),\n index: false,\n },\n {\n id: `${VIRTUAL_ROUTES_DIR}/[.]well-known.appspecific.com[.]chrome[.]devtools[.]json`,\n path: '.well-known/appspecific/com.chrome.devtools.json',\n file: getVirtualRoutesPath(\n VIRTUAL_ROUTES_ROUTES_DIR_PARTS,\n '[.]well-known.appspecific.com[.]chrome[.]devtools[.]json.jsx',\n ),\n index: false,\n },\n {\n id: `${VIRTUAL_ROUTES_DIR}/index`,\n path: '',\n file: getVirtualRoutesPath(\n VIRTUAL_ROUTES_ROUTES_DIR_PARTS,\n 'index.jsx',\n ),\n index: true,\n },\n ],\n layout: {\n file: getVirtualRoutesPath(VIRTUAL_ROUTES_DIR_PARTS, 'layout.jsx'),\n },\n };\n}\n\n// original virtual routes constants\nexport const VIRTUAL_ROUTES_DIR_ORIG = 'virtual-routes/routes';\nexport const VIRTUAL_ROOT_ORIG = 'virtual-routes/virtual-root-with-layout';\n\nexport async function getVirtualRoutes() {\n const distPath = path.dirname(fileURLToPath(import.meta.url));\n const virtualRoutesPath = path.join(distPath, VIRTUAL_ROUTES_DIR_ORIG);\n\n const routes = await readdir(virtualRoutesPath, {recursive: true}).then(\n (files) =>\n files.map((relativeFilePath) => {\n const absoluteFilePath = path.join(virtualRoutesPath, relativeFilePath);\n const id = relativeFilePath\n .replace(/\\.[jt]sx?$/, '')\n .replaceAll('\\\\', '/');\n const isIndex = /(^|\\/)index$/.test(id);\n const routePath = id.replace(/(^|\\/)index$/, '');\n\n return {\n id: `${VIRTUAL_ROUTES_DIR_ORIG}/${id}`,\n path: routePath,\n file: absoluteFilePath,\n index: isIndex,\n };\n }),\n );\n\n return {\n routes,\n root: {\n id: VIRTUAL_ROOT_ORIG,\n path: '',\n file: path.join(distPath, VIRTUAL_ROOT_ORIG + '.jsx'),\n },\n };\n}\n"]}