polen 0.11.0-next.5 → 0.11.0-next.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../src/template/routes/reference.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAkFnD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;CAKpB,CAAA"}
1
+ {"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../../src/template/routes/reference.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAoFnD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;CAKpB,CAAA"}
@@ -6,7 +6,6 @@ import { Box } from '@radix-ui/themes';
6
6
  import { Outlet } from 'react-router';
7
7
  import { MissingSchema } from '../components/MissingSchema.js';
8
8
  import { VersionSelector } from '../components/VersionSelector.js';
9
- import { useVersionPath } from '../hooks/useVersionPath.js';
10
9
  import { SidebarLayout } from '../layouts/index.js';
11
10
  import { VERSION_LATEST } from '../lib/schema-utils/constants.js';
12
11
  import { schemaSource } from '../sources/schema-source.js';
@@ -34,8 +33,11 @@ const Component = () => {
34
33
  const kindMap = GrafaidOld.getKindMap(data.schema);
35
34
  const sidebarItems = [];
36
35
  const kindEntries = Object.entries(kindMap.list).filter(([_, types]) => types.length > 0);
37
- // Build path prefix based on current version using new route structure
38
- const versionPath = useVersionPath();
36
+ // Build path prefix based on current version from loader data
37
+ // This ensures sidebar links always match the current version being viewed
38
+ const versionPath = data.currentVersion === VERSION_LATEST
39
+ ? ``
40
+ : `version/${data.currentVersion}/`;
39
41
  for (const [title, types] of kindEntries) {
40
42
  sidebarItems.push({
41
43
  type: `ItemSection`,
@@ -1 +1 @@
1
- {"version":3,"file":"reference.js","sourceRoot":"","sources":["../../../src/template/routes/reference.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference.js","sourceRoot":"","sources":["../../../src/template/routes/reference.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-source.d.ts","sourceRoot":"","sources":["../../../src/template/sources/schema-source.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAIvB,CAAA"}
1
+ {"version":3,"file":"schema-source.d.ts","sourceRoot":"","sources":["../../../src/template/sources/schema-source.ts"],"names":[],"mappings":"AA6DA,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAIvB,CAAA"}
@@ -10,11 +10,18 @@ const io = import.meta.env.SSR
10
10
  // Dynamic import to keep fs out of client bundle
11
11
  const { readFile } = await import('node:fs/promises');
12
12
  // Extract the path after the assets route
13
- // e.g., "/assets/schemas/latest.json" -> "schemas/latest.json"
14
- // e.g., "/demos/pokemon/assets/schemas/latest.json" -> "schemas/latest.json"
13
+ // The incoming path includes the base path from the client
14
+ // e.g., "/assets/schemas/latest.json" -> "schemas/latest.json" (no base path)
15
+ // e.g., "/demos/pokemon/assets/schemas/latest.json" -> "schemas/latest.json" (with base path)
16
+ const basePath = PROJECT_DATA.basePath;
15
17
  const assetsRoute = PROJECT_DATA.server.routes.assets;
16
- // Account for base path in the pattern
17
- const routePattern = new RegExp(`${assetsRoute}/(.+)$`);
18
+ // Escape special regex characters in paths
19
+ const escapeRegex = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
20
+ // Build precise pattern that accounts for base path
21
+ const pattern = basePath === '/' || basePath === ''
22
+ ? `^${escapeRegex(assetsRoute)}/(.+)$`
23
+ : `^${escapeRegex(basePath)}${escapeRegex(assetsRoute)}/(.+)$`;
24
+ const routePattern = new RegExp(pattern);
18
25
  const match = path.match(routePattern);
19
26
  const assetPath = match ? match[1] : path;
20
27
  // In SSR, we need to read from the correct location
@@ -1 +1 @@
1
- {"version":3,"file":"schema-source.js","sourceRoot":"","sources":["../../../src/template/sources/schema-source.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sCAAsC,CAAA;AAC/D,OAAO,uBAAuB,MAAM,uCAAuC,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,yCAAyC;AACzC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;IAC5B,CAAC,CAAC;QACA,oCAAoC;QACpC,IAAI,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAC3B,iDAAiD;YACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAErD,0CAA0C;YAC1C,+DAA+D;YAC/D,6EAA6E;YAC7E,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA;YACrD,uCAAuC;YACvC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,QAAQ,CAAC,CAAA;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;YACtC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAEzC,oDAAoD;YACpD,0DAA0D;YAC1D,uDAAuD;YACvD,IAAI,QAAgB,CAAA;YACpB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACxB,4CAA4C;gBAC5C,QAAQ,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAA;YAC9E,CAAC;iBAAM,CAAC;gBACN,qCAAqC;gBACrC,yEAAyE;gBACzE,QAAQ;oBACN,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAA;YACtI,CAAC;YAED,OAAO,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACpC,CAAC;KACF;IACD,CAAC,CAAC;QACA,+BAA+B;QAC/B,IAAI,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAA;YACzF,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;QACxB,CAAC;KACF,CAAA;AAEH,+CAA+C;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAC;IAC7C,EAAE;IACF,QAAQ,EAAE,uBAAuB,CAAC,QAAQ;IAC1C,UAAU,EAAE,kBAAkB,EAAE;CACjC,CAAC,CAAA;AAEF,yCAAyC;AACzC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC7C,YAAY,CAAC,UAAU,EAAE,CAAA;QAEzB,6DAA6D;QAC7D,oEAAoE;QACpE,gEAAgE;QAChE,8DAA8D;QAC9D,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"schema-source.js","sourceRoot":"","sources":["../../../src/template/sources/schema-source.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polen",
3
- "version": "0.11.0-next.5",
3
+ "version": "0.11.0-next.6",
4
4
  "type": "module",
5
5
  "description": "A framework for delightful GraphQL developer portals",
6
6
  "author": {
@@ -6,7 +6,6 @@ import { Box } from '@radix-ui/themes'
6
6
  import { Outlet } from 'react-router'
7
7
  import { MissingSchema } from '../components/MissingSchema.js'
8
8
  import { VersionSelector } from '../components/VersionSelector.js'
9
- import { useVersionPath } from '../hooks/useVersionPath.js'
10
9
  import { SidebarLayout } from '../layouts/index.js'
11
10
  import { VERSION_LATEST } from '../lib/schema-utils/constants.js'
12
11
  import { schemaSource } from '../sources/schema-source.js'
@@ -42,8 +41,11 @@ const Component = () => {
42
41
  const sidebarItems: Content.Item[] = []
43
42
  const kindEntries = Object.entries(kindMap.list).filter(([_, types]) => types.length > 0)
44
43
 
45
- // Build path prefix based on current version using new route structure
46
- const versionPath = useVersionPath()
44
+ // Build path prefix based on current version from loader data
45
+ // This ensures sidebar links always match the current version being viewed
46
+ const versionPath = data.currentVersion === VERSION_LATEST
47
+ ? ``
48
+ : `version/${data.currentVersion}/`
47
49
 
48
50
  for (const [title, types] of kindEntries) {
49
51
  sidebarItems.push({
@@ -12,11 +12,21 @@ const io = import.meta.env.SSR
12
12
  const { readFile } = await import('node:fs/promises')
13
13
 
14
14
  // Extract the path after the assets route
15
- // e.g., "/assets/schemas/latest.json" -> "schemas/latest.json"
16
- // e.g., "/demos/pokemon/assets/schemas/latest.json" -> "schemas/latest.json"
15
+ // The incoming path includes the base path from the client
16
+ // e.g., "/assets/schemas/latest.json" -> "schemas/latest.json" (no base path)
17
+ // e.g., "/demos/pokemon/assets/schemas/latest.json" -> "schemas/latest.json" (with base path)
18
+ const basePath = PROJECT_DATA.basePath
17
19
  const assetsRoute = PROJECT_DATA.server.routes.assets
18
- // Account for base path in the pattern
19
- const routePattern = new RegExp(`${assetsRoute}/(.+)$`)
20
+
21
+ // Escape special regex characters in paths
22
+ const escapeRegex = (str: string) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
23
+
24
+ // Build precise pattern that accounts for base path
25
+ const pattern = basePath === '/' || basePath === ''
26
+ ? `^${escapeRegex(assetsRoute)}/(.+)$`
27
+ : `^${escapeRegex(basePath)}${escapeRegex(assetsRoute)}/(.+)$`
28
+
29
+ const routePattern = new RegExp(pattern)
20
30
  const match = path.match(routePattern)
21
31
  const assetPath = match ? match[1] : path
22
32