one 1.21.1 → 1.21.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 (117) hide show
  1. package/dist/cjs/cli/build.cjs +1 -4
  2. package/dist/cjs/cli/build.native.js +1 -4
  3. package/dist/cjs/cli/build.native.js.map +1 -1
  4. package/dist/cjs/cli/buildPage.cjs +1 -1
  5. package/dist/cjs/cli/buildPage.native.js +1 -1
  6. package/dist/cjs/cli/buildPage.native.js.map +1 -1
  7. package/dist/cjs/daemon/ipc.cjs +21 -3
  8. package/dist/cjs/daemon/ipc.native.js +21 -3
  9. package/dist/cjs/daemon/ipc.native.js.map +1 -1
  10. package/dist/cjs/router/hmrImport.native.js +13 -2
  11. package/dist/cjs/router/hmrImport.native.js.map +1 -1
  12. package/dist/cjs/router/hmrImport.native.test.cjs +52 -0
  13. package/dist/cjs/router/hmrImport.native.test.native.js +61 -0
  14. package/dist/cjs/router/hmrImport.native.test.native.js.map +1 -0
  15. package/dist/cjs/router/routeHmr.cjs +32 -0
  16. package/dist/cjs/router/routeHmr.native.js +57 -0
  17. package/dist/cjs/router/routeHmr.native.js.map +1 -0
  18. package/dist/cjs/router/routeHmr.native.test.cjs +83 -0
  19. package/dist/cjs/router/routeHmr.native.test.native.js +95 -0
  20. package/dist/cjs/router/routeHmr.native.test.native.js.map +1 -0
  21. package/dist/cjs/router/useScreens.cjs +2 -0
  22. package/dist/cjs/router/useScreens.native.js +2 -0
  23. package/dist/cjs/router/useScreens.native.js.map +1 -1
  24. package/dist/cjs/router/useViteRoutes.cjs +7 -17
  25. package/dist/cjs/router/useViteRoutes.native.js +8 -18
  26. package/dist/cjs/router/useViteRoutes.native.js.map +1 -1
  27. package/dist/cjs/router/useViteRoutes.test.cjs +42 -0
  28. package/dist/cjs/router/useViteRoutes.test.native.js +55 -0
  29. package/dist/cjs/router/useViteRoutes.test.native.js.map +1 -0
  30. package/dist/cjs/utils/cleanUrl.cjs +12 -2
  31. package/dist/cjs/utils/cleanUrl.native.js +15 -3
  32. package/dist/cjs/utils/cleanUrl.native.js.map +1 -1
  33. package/dist/cjs/utils/cleanUrl.test.cjs +37 -0
  34. package/dist/cjs/utils/cleanUrl.test.native.js +37 -0
  35. package/dist/cjs/utils/cleanUrl.test.native.js.map +1 -1
  36. package/dist/esm/cli/build.mjs +1 -4
  37. package/dist/esm/cli/build.mjs.map +1 -1
  38. package/dist/esm/cli/build.native.js +1 -4
  39. package/dist/esm/cli/build.native.js.map +1 -1
  40. package/dist/esm/cli/buildPage.mjs +2 -2
  41. package/dist/esm/cli/buildPage.mjs.map +1 -1
  42. package/dist/esm/cli/buildPage.native.js +2 -2
  43. package/dist/esm/cli/buildPage.native.js.map +1 -1
  44. package/dist/esm/daemon/ipc.mjs +21 -3
  45. package/dist/esm/daemon/ipc.mjs.map +1 -1
  46. package/dist/esm/daemon/ipc.native.js +21 -3
  47. package/dist/esm/daemon/ipc.native.js.map +1 -1
  48. package/dist/esm/router/hmrImport.native.js +13 -2
  49. package/dist/esm/router/hmrImport.native.js.map +1 -1
  50. package/dist/esm/router/hmrImport.native.test.js +51 -0
  51. package/dist/esm/router/hmrImport.native.test.js.map +6 -0
  52. package/dist/esm/router/hmrImport.native.test.mjs +53 -0
  53. package/dist/esm/router/hmrImport.native.test.mjs.map +1 -0
  54. package/dist/esm/router/hmrImport.native.test.native.js +59 -0
  55. package/dist/esm/router/hmrImport.native.test.native.js.map +1 -0
  56. package/dist/esm/router/routeHmr.mjs +6 -0
  57. package/dist/esm/router/routeHmr.mjs.map +1 -0
  58. package/dist/esm/router/routeHmr.native.js +28 -0
  59. package/dist/esm/router/routeHmr.native.js.map +1 -0
  60. package/dist/esm/router/routeHmr.native.test.js +58 -0
  61. package/dist/esm/router/routeHmr.native.test.js.map +6 -0
  62. package/dist/esm/router/routeHmr.native.test.mjs +60 -0
  63. package/dist/esm/router/routeHmr.native.test.mjs.map +1 -0
  64. package/dist/esm/router/routeHmr.native.test.native.js +69 -0
  65. package/dist/esm/router/routeHmr.native.test.native.js.map +1 -0
  66. package/dist/esm/router/useScreens.mjs +1 -0
  67. package/dist/esm/router/useScreens.mjs.map +1 -1
  68. package/dist/esm/router/useScreens.native.js +2 -0
  69. package/dist/esm/router/useScreens.native.js.map +1 -1
  70. package/dist/esm/router/useViteRoutes.mjs +7 -17
  71. package/dist/esm/router/useViteRoutes.mjs.map +1 -1
  72. package/dist/esm/router/useViteRoutes.native.js +8 -18
  73. package/dist/esm/router/useViteRoutes.native.js.map +1 -1
  74. package/dist/esm/router/useViteRoutes.test.mjs +43 -0
  75. package/dist/esm/router/useViteRoutes.test.mjs.map +1 -0
  76. package/dist/esm/router/useViteRoutes.test.native.js +53 -0
  77. package/dist/esm/router/useViteRoutes.test.native.js.map +1 -0
  78. package/dist/esm/utils/cleanUrl.mjs +11 -3
  79. package/dist/esm/utils/cleanUrl.mjs.map +1 -1
  80. package/dist/esm/utils/cleanUrl.native.js +14 -4
  81. package/dist/esm/utils/cleanUrl.native.js.map +1 -1
  82. package/dist/esm/utils/cleanUrl.test.mjs +38 -1
  83. package/dist/esm/utils/cleanUrl.test.mjs.map +1 -1
  84. package/dist/esm/utils/cleanUrl.test.native.js +38 -1
  85. package/dist/esm/utils/cleanUrl.test.native.js.map +1 -1
  86. package/package.json +9 -9
  87. package/src/cli/build.ts +1 -1
  88. package/src/cli/buildPage.ts +12 -2
  89. package/src/daemon/ipc.ts +46 -4
  90. package/src/router/hmrImport.native.test.ts +55 -0
  91. package/src/router/hmrImport.native.ts +25 -5
  92. package/src/router/routeHmr.native.test.ts +71 -0
  93. package/src/router/routeHmr.native.ts +37 -0
  94. package/src/router/routeHmr.ts +8 -0
  95. package/src/router/useScreens.tsx +12 -0
  96. package/src/router/useViteRoutes.test.ts +49 -0
  97. package/src/router/useViteRoutes.tsx +12 -21
  98. package/src/utils/cleanUrl.test.ts +63 -1
  99. package/src/utils/cleanUrl.ts +25 -3
  100. package/types/cli/buildPage.d.ts.map +1 -1
  101. package/types/daemon/ipc.d.ts.map +1 -1
  102. package/types/router/hmrImport.native.d.ts +8 -3
  103. package/types/router/hmrImport.native.d.ts.map +1 -1
  104. package/types/router/hmrImport.native.test.d.ts +2 -0
  105. package/types/router/hmrImport.native.test.d.ts.map +1 -0
  106. package/types/router/routeHmr.d.ts +3 -0
  107. package/types/router/routeHmr.d.ts.map +1 -0
  108. package/types/router/routeHmr.native.d.ts +6 -0
  109. package/types/router/routeHmr.native.d.ts.map +1 -0
  110. package/types/router/routeHmr.native.test.d.ts +2 -0
  111. package/types/router/routeHmr.native.test.d.ts.map +1 -0
  112. package/types/router/useScreens.d.ts.map +1 -1
  113. package/types/router/useViteRoutes.d.ts.map +1 -1
  114. package/types/router/useViteRoutes.test.d.ts +2 -0
  115. package/types/router/useViteRoutes.test.d.ts.map +1 -0
  116. package/types/utils/cleanUrl.d.ts +2 -0
  117. package/types/utils/cleanUrl.d.ts.map +1 -1
@@ -0,0 +1,71 @@
1
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
2
+
3
+ type RouteHmrModule = typeof import('./routeHmr.native')
4
+
5
+ describe('routeHmr.native', () => {
6
+ let routeHmr: RouteHmrModule
7
+ const realWindow = (globalThis as any).window
8
+ const realModuleUpdatedHook = globalThis.__VXRN_ON_MODULE_UPDATED__
9
+
10
+ beforeEach(async () => {
11
+ // the __VXRN_ON_MODULE_UPDATED__ registration is dev-gated and runs at module
12
+ // load, so stub NODE_ENV then re-import to exercise it
13
+ vi.stubEnv('NODE_ENV', 'development')
14
+ vi.resetModules()
15
+ routeHmr = await import('./routeHmr.native')
16
+ })
17
+
18
+ afterEach(() => {
19
+ vi.unstubAllEnvs()
20
+ globalThis.__VXRN_ON_MODULE_UPDATED__ = realModuleUpdatedHook
21
+ ;(globalThis as any).window = realWindow
22
+ })
23
+
24
+ it('registers globalThis.__VXRN_ON_MODULE_UPDATED__ in development', () => {
25
+ expect(typeof globalThis.__VXRN_ON_MODULE_UPDATED__).toBe('function')
26
+ })
27
+
28
+ it('bumps the epoch and notifies subscribers, and stops after unsubscribe', () => {
29
+ const before = routeHmr.getRouteHmrEpoch()
30
+ const listener = vi.fn()
31
+ const unsubscribe = routeHmr.subscribeRouteHmr(listener)
32
+
33
+ globalThis.__VXRN_ON_MODULE_UPDATED__!('app/index.tsx')
34
+ expect(routeHmr.getRouteHmrEpoch()).toBe(before + 1)
35
+ expect(listener).toHaveBeenCalledTimes(1)
36
+
37
+ unsubscribe()
38
+ globalThis.__VXRN_ON_MODULE_UPDATED__!('app/index.tsx')
39
+ expect(listener).toHaveBeenCalledTimes(1)
40
+ })
41
+
42
+ it('evicts the route cache for the updated file when window.__oneRouteCache is present', () => {
43
+ const clearFile = vi.fn()
44
+ ;(globalThis as any).window = { __oneRouteCache: { clearFile } }
45
+ globalThis.__VXRN_ON_MODULE_UPDATED__!('app/_layout.tsx')
46
+ expect(clearFile).toHaveBeenCalledWith('app/_layout.tsx')
47
+ })
48
+
49
+ it('does not throw when window / route cache is absent', () => {
50
+ ;(globalThis as any).window = undefined
51
+ expect(() => globalThis.__VXRN_ON_MODULE_UPDATED__!('x.tsx')).not.toThrow()
52
+ })
53
+
54
+ it('still notifies subscribers when route-cache eviction throws', () => {
55
+ const listener = vi.fn()
56
+ const unsubscribe = routeHmr.subscribeRouteHmr(listener)
57
+ ;(globalThis as any).window = {
58
+ __oneRouteCache: {
59
+ clearFile() {
60
+ throw new Error('cache eviction failed')
61
+ },
62
+ },
63
+ }
64
+
65
+ expect(() => globalThis.__VXRN_ON_MODULE_UPDATED__!('app/index.tsx')).toThrow(
66
+ 'cache eviction failed'
67
+ )
68
+ expect(listener).toHaveBeenCalledOnce()
69
+ unsubscribe()
70
+ })
71
+ })
@@ -0,0 +1,37 @@
1
+ // native Fast Refresh for One routes
2
+ //
3
+ // vxrn calls the global hook after committing an updated module. One evicts that
4
+ // route and bumps this external-store epoch so mounted screens load fresh exports.
5
+
6
+ declare global {
7
+ // vxrn's native HMR runtime invokes this (when defined) with each committed
8
+ // module id, so a framework can react to a hot update.
9
+ var __VXRN_ON_MODULE_UPDATED__: ((moduleId: string) => void) | undefined
10
+ }
11
+
12
+ let routeHmrEpoch = 0
13
+ const routeHmrListeners = new Set<() => void>()
14
+
15
+ export const subscribeRouteHmr = (onStoreChange: () => void) => {
16
+ routeHmrListeners.add(onStoreChange)
17
+ return () => {
18
+ routeHmrListeners.delete(onStoreChange)
19
+ }
20
+ }
21
+
22
+ export const getRouteHmrEpoch = () => routeHmrEpoch
23
+
24
+ if (process.env.NODE_ENV === 'development') {
25
+ globalThis.__VXRN_ON_MODULE_UPDATED__ = (id: string) => {
26
+ try {
27
+ const routeCache =
28
+ typeof window === 'undefined' ? undefined : (window as any).__oneRouteCache
29
+ if (typeof routeCache?.clearFile === 'function') {
30
+ routeCache.clearFile(id)
31
+ }
32
+ } finally {
33
+ routeHmrEpoch++
34
+ routeHmrListeners.forEach((listener) => listener())
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,8 @@
1
+ // web counterpart of routeHmr.native.ts. Web route Fast Refresh happens through
2
+ // the `one-hmr-update` event (see useScreens' web block), so this is a no-op store
3
+ // whose exports let useScreens import `./routeHmr` on either platform.
4
+ export const subscribeRouteHmr = (_onStoreChange: () => void): (() => void) => {
5
+ return () => {}
6
+ }
7
+
8
+ export const getRouteHmrEpoch = () => 0
@@ -28,6 +28,7 @@ import {
28
28
  import { SpaShellContext } from './SpaShellContext'
29
29
  import { NamedSlot } from '../views/Navigator'
30
30
  import { sortRoutesWithInitial } from './sortRoutes'
31
+ import { getRouteHmrEpoch, subscribeRouteHmr } from './routeHmr'
31
32
  import { getClientMatchesSnapshot } from '../useMatches'
32
33
 
33
34
  // `@react-navigation/core` does not expose the Screen or Group components directly, so we have to
@@ -395,6 +396,17 @@ export function getQualifiedRouteComponent(value: RouteNode) {
395
396
  }, [])
396
397
  }
397
398
 
399
+ // native Fast Refresh: subscribe to the route-hot epoch (the routeHmr.native
400
+ // store bumps it when vxrn reports a route module update) so this component
401
+ // re-renders and re-runs loadRoute() to pick up the edited module's exports
402
+ if (
403
+ process.env.NODE_ENV === 'development' &&
404
+ process.env.TAMAGUI_TARGET === 'native'
405
+ ) {
406
+ // eslint-disable-next-line react-hooks/rules-of-hooks
407
+ React.useSyncExternalStore(subscribeRouteHmr, getRouteHmrEpoch, getRouteHmrEpoch)
408
+ }
409
+
398
410
  // in spa-shell mode, only SSG/SSR layouts render on the server.
399
411
  // SPA layouts and leaf pages get a placeholder, swapped for real
400
412
  // content after hydration.
@@ -0,0 +1,49 @@
1
+ import { afterEach, describe, expect, it, vi } from 'vitest'
2
+
3
+ const mocks = vi.hoisted(() => ({
4
+ hmrImport: vi.fn(),
5
+ }))
6
+
7
+ vi.mock('./hmrImport', () => ({
8
+ hmrImport: mocks.hmrImport,
9
+ }))
10
+
11
+ import { globbedRoutesToRouteContext } from './useViteRoutes'
12
+
13
+ const realWindow = (globalThis as any).window
14
+
15
+ afterEach(() => {
16
+ vi.unstubAllEnvs()
17
+ mocks.hmrImport.mockReset()
18
+ ;(globalThis as any).window = realWindow
19
+ })
20
+
21
+ async function resolveRoute(context: ReturnType<typeof globbedRoutesToRouteContext>) {
22
+ try {
23
+ return context('./index.tsx')
24
+ } catch (pending) {
25
+ await pending
26
+ return context('./index.tsx')
27
+ }
28
+ }
29
+
30
+ describe('globbedRoutesToRouteContext HMR', () => {
31
+ it('evicts and reloads a route under a custom router root', async () => {
32
+ vi.stubEnv('NODE_ENV', 'development')
33
+ ;(globalThis as any).window = {}
34
+ const initialRoute = { default: () => 'initial' }
35
+ const updatedRoute = { default: () => 'updated' }
36
+ const context = globbedRoutesToRouteContext(
37
+ { '/routes/index.tsx': () => Promise.resolve(initialRoute) },
38
+ 'routes'
39
+ )
40
+
41
+ await expect(resolveRoute(context)).resolves.toBe(initialRoute)
42
+
43
+ mocks.hmrImport.mockResolvedValue(updatedRoute)
44
+ ;(globalThis as any).window.__oneRouteCache.clearFile('routes/index.tsx')
45
+
46
+ await expect(resolveRoute(context)).resolves.toBe(updatedRoute)
47
+ expect(mocks.hmrImport).toHaveBeenCalledWith('/routes/index.tsx')
48
+ })
49
+ })
@@ -221,24 +221,16 @@ export function globbedRoutesToRouteContext(
221
221
  },
222
222
  clearFile: (file: string) => {
223
223
  hmrVersion++
224
- // Clear only the specific file's cache
225
- // file is like "app/_layout.tsx", need to match against keys like "./_layout.tsx"
226
- const normalizedFile = file.replace(/^app\//, './')
227
- Object.keys(loadedRoutes).forEach((key) => {
228
- if (key === normalizedFile || key.endsWith(normalizedFile.replace('./', '/'))) {
229
- delete loadedRoutes[key]
230
- }
231
- })
232
- Object.keys(promises).forEach((key) => {
233
- if (key === normalizedFile || key.endsWith(normalizedFile.replace('./', '/'))) {
234
- delete promises[key]
235
- }
236
- })
237
- Object.keys(preloadedModules).forEach((key) => {
238
- if (key.includes(file)) {
239
- delete preloadedModules[key]
240
- }
241
- })
224
+ const normalizedFile = file.replace(/\\/g, '/').replace(/^\//, '')
225
+ const routeId = moduleKeys.find(
226
+ (key) =>
227
+ routePaths[key].replace(/\\/g, '/').replace(/^\//, '') === normalizedFile
228
+ )
229
+ if (!routeId) return
230
+
231
+ delete loadedRoutes[routeId]
232
+ delete promises[routeId]
233
+ delete preloadedModules[routePaths[routeId]]
242
234
  },
243
235
  getVersion: () => hmrVersion,
244
236
  }
@@ -264,11 +256,10 @@ export function globbedRoutesToRouteContext(
264
256
  }
265
257
 
266
258
  if (!promises[id]) {
267
- // In dev mode after HMR, use cache-busting import to get fresh module
268
- // hmrImport is platform-specific: .native.ts returns rejected promise, base uses dynamic import()
259
+ // in dev mode after HMR, load the fresh module through the platform runtime
269
260
  let importPromise: Promise<any>
270
261
  if (process.env.NODE_ENV === 'development' && hmrVersion > 0 && routePaths[id]) {
271
- importPromise = hmrImport(routePaths[id]).catch(() => routesSync[id]())
262
+ importPromise = hmrImport(routePaths[id])
272
263
  } else {
273
264
  importPromise = routesSync[id]()
274
265
  }
@@ -1,5 +1,10 @@
1
1
  import { describe, expect, it } from 'vitest'
2
- import { getLoaderPath, getPathFromLoaderPath } from './cleanUrl'
2
+ import {
3
+ encodeReservedFilenameChars,
4
+ getLoaderPath,
5
+ getPathFromLoaderPath,
6
+ getPreloadPath,
7
+ } from './cleanUrl'
3
8
 
4
9
  /**
5
10
  * tests the cleanUrl encode/decode roundtrip used for loader URLs.
@@ -91,6 +96,63 @@ describe('getLoaderPath format', () => {
91
96
  })
92
97
  })
93
98
 
99
+ describe('NTFS-reserved characters in route-derived names', () => {
100
+ // route patterns reach these functions verbatim when a dynamic route has no
101
+ // generateStaticParams (every dynamic +ssr/+spa route at build time)
102
+ it('roundtrips a root dynamic route pattern', () => {
103
+ expect(roundtrip('/:param')).toBe('/:param')
104
+ })
105
+
106
+ it('roundtrips a nested dynamic route pattern', () => {
107
+ expect(roundtrip('/dashboard/:appId')).toBe('/dashboard/:appId')
108
+ })
109
+
110
+ it('roundtrips a catch-all pattern', () => {
111
+ expect(roundtrip('/*')).toBe('/*')
112
+ })
113
+
114
+ it('roundtrips hostile concrete param values (chars that survive URL parsing raw)', () => {
115
+ // getLoaderPath URL-parses its input; WHATWG URL percent-encodes " < > |
116
+ // in pathnames but passes : and * through raw — those two are the ones
117
+ // that reach generated filenames verbatim (and are the NTFS killers)
118
+ expect(roundtrip('/blog/a:b*c')).toBe('/blog/a:b*c')
119
+ })
120
+
121
+ it('emits filesystem-legal names for the full reserved set via preload paths', () => {
122
+ // getPreloadPath does not URL-parse, so every reserved char reaches the
123
+ // encoder raw — assert none survive into the filename
124
+ expect(getPreloadPath('/blog/a:b*c"d<e>f|g?h')).not.toMatch(/[<>:"|?*]/)
125
+ })
126
+
127
+ it('roundtrips literal equals signs (self-escape)', () => {
128
+ expect(roundtrip('/foo=bar')).toBe('/foo=bar')
129
+ })
130
+
131
+ it('roundtrips equals followed by hex-looking characters', () => {
132
+ expect(roundtrip('/x=3ay')).toBe('/x=3ay')
133
+ })
134
+
135
+ it('emits no NTFS-reserved characters in loader filenames', () => {
136
+ expect(getLoaderPath('/dashboard/:appId', false)).not.toMatch(/[<>:"|?*]/)
137
+ })
138
+
139
+ it('emits no NTFS-reserved characters in preload filenames', () => {
140
+ expect(getPreloadPath('/:param')).not.toMatch(/[<>:"|?*]/)
141
+ expect(getPreloadPath('/*')).not.toMatch(/[<>:"|?*]/)
142
+ })
143
+
144
+ it('encodeReservedFilenameChars is identity for clean paths', () => {
145
+ expect(encodeReservedFilenameChars('/blog/my-slug.html')).toBe('/blog/my-slug.html')
146
+ })
147
+
148
+ it('encodes the html artifact path for non-prerendered dynamic routes', () => {
149
+ expect(encodeReservedFilenameChars('/dashboard/:appId.html')).toBe(
150
+ '/dashboard/=3aappId.html'
151
+ )
152
+ expect(encodeReservedFilenameChars('/*.html')).toBe('/=2a.html')
153
+ })
154
+ })
155
+
94
156
  describe('getPathFromLoaderPath', () => {
95
157
  it('strips /_one/assets prefix', () => {
96
158
  expect(getPathFromLoaderPath('/_one/assets/docs_intro_999_vxrn_loader.js')).toBe(
@@ -8,9 +8,31 @@ import {
8
8
  import { getURL } from '../getURL'
9
9
  import { removeSearch } from './removeSearch'
10
10
 
11
+ // Route patterns (`/:param`, `/*`) and concrete param values flow into
12
+ // generated artifact filenames. `< > : " | ? *` are reserved on Windows
13
+ // filesystems — a leading `:` segment fails outright and a mid-name `:`
14
+ // silently writes an NTFS alternate data stream — so encode them as `=hh`
15
+ // (hex char code), with literal `=` self-escaped first so decoding is
16
+ // unambiguous. Identity for paths without reserved characters.
17
+ export function encodeReservedFilenameChars(path: string) {
18
+ return path
19
+ .replaceAll('=', '=3d')
20
+ .replace(
21
+ /[<>:"|?*]/g,
22
+ (char) => `=${char.charCodeAt(0).toString(16).padStart(2, '0')}`
23
+ )
24
+ }
25
+
26
+ export function decodeReservedFilenameChars(path: string) {
27
+ return path.replace(/=([0-9a-f]{2})/g, (_match, hexCode) =>
28
+ String.fromCharCode(Number.parseInt(hexCode, 16))
29
+ )
30
+ }
31
+
11
32
  function cleanUrl(path: string) {
12
- return removeSearch(path)
13
- .replace(/\/$/, '') // remove trailing slash before encoding
33
+ return encodeReservedFilenameChars(
34
+ removeSearch(path).replace(/\/$/, '') // remove trailing slash before encoding
35
+ )
14
36
  .replaceAll('_', '__') // escape existing underscores
15
37
  .replaceAll('/', '_') // use underscore as path separator
16
38
  }
@@ -43,7 +65,7 @@ export function getLoaderPath(
43
65
  }
44
66
 
45
67
  export function getPathFromLoaderPath(loaderPath: string) {
46
- return (
68
+ return decodeReservedFilenameChars(
47
69
  loaderPath
48
70
  .replace(LOADER_JS_POSTFIX_REGEX, '')
49
71
  .replace(/^(\/_one)?\/assets/, '')
@@ -1 +1 @@
1
- {"version":3,"file":"buildPage.d.ts","sourceRoot":"","sources":["../../src/cli/buildPage.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAkBnD,wBAAgB,iBAAiB,SAUhC;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAC7B,mBAAmB,EAAE,GAAG,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,WAAW,CAAC,EAAE,OAAO,EACrB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAka7B"}
1
+ {"version":3,"file":"buildPage.d.ts","sourceRoot":"","sources":["../../src/cli/buildPage.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAkBnD,wBAAgB,iBAAiB,SAUhC;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,EAC7B,mBAAmB,EAAE,GAAG,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACxC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,WAAW,CAAC,EAAE,OAAO,EACrB,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAua7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../../src/daemon/ipc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAI/B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAiBnE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAGD,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAO7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,eAAe,IAAI,eAAe,EAAE,CASnD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAQpC;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EACzC,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAC1C,GAAG,CAAC,MAAM,CA+CZ;AAyED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAkCxD;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAuC9E;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,MAAM,CAAC,CAelB;AAED,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACvE,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC5C,CAAC,CAWD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjE;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAC,CAMR"}
1
+ {"version":3,"file":"ipc.d.ts","sourceRoot":"","sources":["../../src/daemon/ipc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAK/B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAwCnE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAGD,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAO7D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,eAAe,IAAI,eAAe,EAAE,CASnD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAQpC;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EACzC,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAC1C,GAAG,CAAC,MAAM,CA8DZ;AAyED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAqCxD;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAuC9E;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,OAAO,CAAC,MAAM,CAAC,CAelB;AAED,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACvE,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC5C,CAAC,CAWD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKjE;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAC,CAMR"}
@@ -1,6 +1,11 @@
1
1
  /**
2
- * Native stub: HMR cache-busting is not supported on native.
3
- * This avoids the dynamic import() syntax that Hermes cannot parse.
2
+ * native HMR re-import
3
+ *
4
+ * vxrn's native dev runtime re-registers the edited module into
5
+ * `globalThis.__rolldown_runtime__` before One evicts its route cache, so the
6
+ * fresh exports can be pulled straight from the runtime without dynamic `import()`
7
+ * (which Hermes cannot parse). Rejects when the runtime is unavailable so a
8
+ * broken development runtime is visible instead of serving a stale route.
4
9
  */
5
- export declare function hmrImport(_path: string): Promise<any>;
10
+ export declare function hmrImport(path: string): Promise<any>;
6
11
  //# sourceMappingURL=hmrImport.native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hmrImport.native.d.ts","sourceRoot":"","sources":["../../src/router/hmrImport.native.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAGrD"}
1
+ {"version":3,"file":"hmrImport.native.d.ts","sourceRoot":"","sources":["../../src/router/hmrImport.native.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAkBpD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hmrImport.native.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmrImport.native.test.d.ts","sourceRoot":"","sources":["../../src/router/hmrImport.native.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare const subscribeRouteHmr: (_onStoreChange: () => void) => (() => void);
2
+ export declare const getRouteHmrEpoch: () => number;
3
+ //# sourceMappingURL=routeHmr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routeHmr.d.ts","sourceRoot":"","sources":["../../src/router/routeHmr.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAEzE,CAAA;AAED,eAAO,MAAM,gBAAgB,cAAU,CAAA"}
@@ -0,0 +1,6 @@
1
+ declare global {
2
+ var __VXRN_ON_MODULE_UPDATED__: ((moduleId: string) => void) | undefined;
3
+ }
4
+ export declare const subscribeRouteHmr: (onStoreChange: () => void) => () => void;
5
+ export declare const getRouteHmrEpoch: () => number;
6
+ //# sourceMappingURL=routeHmr.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routeHmr.native.d.ts","sourceRoot":"","sources":["../../src/router/routeHmr.native.ts"],"names":[],"mappings":"AAKA,OAAO,CAAC,MAAM,CAAC;IAGb,IAAI,0BAA0B,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CACzE;AAKD,eAAO,MAAM,iBAAiB,GAAI,eAAe,MAAM,IAAI,eAK1D,CAAA;AAED,eAAO,MAAM,gBAAgB,cAAsB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=routeHmr.native.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routeHmr.native.test.d.ts","sourceRoot":"","sources":["../../src/router/routeHmr.native.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"useScreens.d.ts","sourceRoot":"","sources":["../../src/router/useScreens.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,EAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAA0D,MAAM,OAAO,CAAA;AAW9E,OAAO,EAIL,KAAK,SAAS,EAEf,MAAM,SAAS,CAAA;AAgDhB,eAAO,MAAQ,MAAM,OAAE,KAAK,KAAwC,CAAA;AA8IpE,MAAM,MAAM,WAAW,CACrB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,QAAQ,SAAS,YAAY,GAAG,YAAY,IAC1C;IACF,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,QAAQ,CAAA;IAElB,SAAS,CAAC,EACN,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,GAChC,CAAC,CAAC,IAAI,EAAE;QACN,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QACvC,UAAU,EAAE,GAAG,CAAA;KAChB,KAAK,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE3C,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAA;CAC7E,CAAA;AAkED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC/B,GACA,KAAK,CAAC,SAAS,EAAE,CAqBnB;AAuCD,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,0GAyJ1D;AAED,oGAAoG;AACpG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC,IAU/D;aAAmC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAAE,YAoBjE"}
1
+ {"version":3,"file":"useScreens.d.ts","sourceRoot":"","sources":["../../src/router/useScreens.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,SAAS,EACT,eAAe,EAChB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAA0D,MAAM,OAAO,CAAA;AAW9E,OAAO,EAIL,KAAK,SAAS,EAEf,MAAM,SAAS,CAAA;AAiDhB,eAAO,MAAQ,MAAM,OAAE,KAAK,KAAwC,CAAA;AA8IpE,MAAM,MAAM,WAAW,CACrB,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC1D,KAAK,SAAS,eAAe,GAAG,eAAe,EAC/C,QAAQ,SAAS,YAAY,GAAG,YAAY,IAC1C;IACF,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnC,OAAO,CAAC,EAAE,QAAQ,CAAA;IAElB,SAAS,CAAC,EACN,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,GAChC,CAAC,CAAC,IAAI,EAAE;QACN,KAAK,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QACvC,UAAU,EAAE,GAAG,CAAA;KAChB,KAAK,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE3C,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAA;CAC7E,CAAA;AAkED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAC/B,GACA,KAAK,CAAC,SAAS,EAAE,CAqBnB;AAuCD,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,SAAS,0GAoK1D;AAED,oGAAoG;AACpG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC,IAU/D;aAAmC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAAE,YAoBjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useViteRoutes.d.ts","sourceRoot":"","sources":["../../src/router/useViteRoutes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AASxC,wBAAgB,aAAa,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,GAAG,CAAC,YAAY,EAC1B,OAAO,CAAC,EAAE,MAAM,OAmBjB;AAKD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAErE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAEnD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AAgDD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDrE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,mBAAmB,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,GAAG,CAAC,YAAY,OAM3B;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,mBAAmB,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,GAAG,CAAC,YAAY,GACzB,GAAG,CAAC,YAAY,CAkJlB"}
1
+ {"version":3,"file":"useViteRoutes.d.ts","sourceRoot":"","sources":["../../src/router/useViteRoutes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AASxC,wBAAgB,aAAa,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,GAAG,CAAC,YAAY,EAC1B,OAAO,CAAC,EAAE,MAAM,OAmBjB;AAKD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAErE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAEnD;AAED,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAEjD;AAgDD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDrE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,mBAAmB,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,GAAG,CAAC,YAAY,OAM3B;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,mBAAmB,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,GAAG,CAAC,YAAY,GACzB,GAAG,CAAC,YAAY,CAyIlB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useViteRoutes.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViteRoutes.test.d.ts","sourceRoot":"","sources":["../../src/router/useViteRoutes.test.ts"],"names":[],"mappings":""}
@@ -1,3 +1,5 @@
1
+ export declare function encodeReservedFilenameChars(path: string): string;
2
+ export declare function decodeReservedFilenameChars(path: string): string;
1
3
  export declare function getPreloadPath(currentPath: string): string;
2
4
  export declare function getPreloadCSSPath(currentPath: string): string;
3
5
  export declare function getLoaderPath(currentPath: string, includeUrl?: boolean, cacheBust?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"cleanUrl.d.ts","sourceRoot":"","sources":["../../src/utils/cleanUrl.ts"],"names":[],"mappings":"AAoBA,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,UAEjD;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,UAEpD;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,UAAU,UAAW,EACrB,SAAS,CAAC,EAAE,MAAM,UAWnB;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,UASvD"}
1
+ {"version":3,"file":"cleanUrl.d.ts","sourceRoot":"","sources":["../../src/utils/cleanUrl.ts"],"names":[],"mappings":"AAgBA,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,UAOvD;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,UAIvD;AAaD,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,UAEjD;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,UAEpD;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,UAAU,UAAW,EACrB,SAAS,CAAC,EAAE,MAAM,UAWnB;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,UASvD"}