Skip to content

Commit 34703fb

Browse files
committed
refactor: rename static resolver to fixed
1 parent ca6d240 commit 34703fb

File tree

7 files changed

+38
-41
lines changed

7 files changed

+38
-41
lines changed

CLAUDE.md

-5 Bytes
Binary file not shown.

packages/experiments-playground/src/router/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { createWebHistory } from 'vue-router'
22
import {
33
experimental_createRouter,
4-
createStaticResolver,
4+
createFixedResolver,
55
MatcherPatternPathStatic,
66
MatcherPatternPathCustomParams,
77
normalizeRouteRecord,
@@ -115,7 +115,7 @@ const r_profiles_detail = normalizeRouteRecord({
115115

116116
export const router = experimental_createRouter({
117117
history: createWebHistory(),
118-
resolver: createStaticResolver<EXPERIMENTAL_RouteRecordNormalized_Matchable>([
118+
resolver: createFixedResolver<EXPERIMENTAL_RouteRecordNormalized_Matchable>([
119119
r_home,
120120
r_about,
121121
r_nested,

packages/router/src/encoding.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,3 @@ export function decode(
153153
}
154154
return '' + text
155155
}
156-
// TODO: just add the null check to the original function in encoding.ts

packages/router/src/experimental/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export type {
1313
EXPERIMENTAL_RouteRecordNormalized_Matchable,
1414
} from './router'
1515

16-
export { createStaticResolver } from './route-resolver/resolver-static'
16+
export { createFixedResolver } from './route-resolver/resolver-fixed'
1717
export {
1818
MatcherPatternPathStatic,
1919
MatcherPatternPathDynamic,

packages/router/src/experimental/route-resolver/resolver-static.spec.ts renamed to packages/router/src/experimental/route-resolver/resolver-fixed.spec.ts

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { describe, expect, it } from 'vitest'
2-
import { createStaticResolver } from './resolver-static'
2+
import { createFixedResolver } from './resolver-fixed'
33
import { NO_MATCH_LOCATION } from './resolver-abstract'
44
import { MatcherQueryParams } from './matchers/matcher-pattern'
55
import {
@@ -14,10 +14,10 @@ import {
1414
PAGE_QUERY_PATTERN_MATCHER,
1515
} from './matchers/test-utils'
1616

17-
describe('StaticResolver', () => {
17+
describe('fixed resolver', () => {
1818
describe('new matchers', () => {
1919
it('static path', () => {
20-
const resolver = createStaticResolver([
20+
const resolver = createFixedResolver([
2121
{ name: 'root', path: new MatcherPatternPathStatic('/') },
2222
{ name: 'users', path: new MatcherPatternPathStatic('/users') },
2323
])
@@ -40,7 +40,7 @@ describe('StaticResolver', () => {
4040
})
4141

4242
it('dynamic path', () => {
43-
const resolver = createStaticResolver([
43+
const resolver = createFixedResolver([
4444
{
4545
name: 'user-detail',
4646
path: USER_ID_PATH_PATTERN_MATCHER,
@@ -58,7 +58,7 @@ describe('StaticResolver', () => {
5858
describe('resolve()', () => {
5959
describe('absolute locations as strings', () => {
6060
it('resolves string locations with no params', () => {
61-
const resolver = createStaticResolver([
61+
const resolver = createFixedResolver([
6262
{ name: 'root', path: EMPTY_PATH_PATTERN_MATCHER },
6363
])
6464

@@ -71,7 +71,7 @@ describe('StaticResolver', () => {
7171
})
7272

7373
it('resolves a not found string', () => {
74-
const resolver = createStaticResolver([])
74+
const resolver = createFixedResolver([])
7575
expect(resolver.resolve('/bar?q=1#hash')).toEqual({
7676
...NO_MATCH_LOCATION,
7777
fullPath: '/bar?q=1#hash',
@@ -83,7 +83,7 @@ describe('StaticResolver', () => {
8383
})
8484

8585
it('resolves string locations with params', () => {
86-
const resolver = createStaticResolver([
86+
const resolver = createFixedResolver([
8787
{ name: 'user-detail', path: USER_ID_PATH_PATTERN_MATCHER },
8888
])
8989

@@ -102,7 +102,7 @@ describe('StaticResolver', () => {
102102
})
103103

104104
it('resolve string locations with query', () => {
105-
const resolver = createStaticResolver([
105+
const resolver = createFixedResolver([
106106
{
107107
name: 'any-path',
108108
path: ANY_PATH_PATTERN_MATCHER,
@@ -122,7 +122,7 @@ describe('StaticResolver', () => {
122122
})
123123

124124
it('resolves string locations with hash', () => {
125-
const resolver = createStaticResolver([
125+
const resolver = createFixedResolver([
126126
{
127127
name: 'any-path',
128128
path: ANY_PATH_PATTERN_MATCHER,
@@ -139,7 +139,7 @@ describe('StaticResolver', () => {
139139
})
140140

141141
it('combines path, query and hash params', () => {
142-
const resolver = createStaticResolver([
142+
const resolver = createFixedResolver([
143143
{
144144
name: 'user-detail',
145145
path: USER_ID_PATH_PATTERN_MATCHER,
@@ -156,7 +156,7 @@ describe('StaticResolver', () => {
156156

157157
describe('relative locations as strings', () => {
158158
it('resolves a simple object relative location', () => {
159-
const resolver = createStaticResolver([
159+
const resolver = createFixedResolver([
160160
{ name: 'any-path', path: ANY_PATH_PATTERN_MATCHER },
161161
])
162162

@@ -197,7 +197,7 @@ describe('StaticResolver', () => {
197197
})
198198

199199
it('resolves a simple string relative location', () => {
200-
const resolver = createStaticResolver([
200+
const resolver = createFixedResolver([
201201
{ name: 'any-path', path: ANY_PATH_PATTERN_MATCHER },
202202
])
203203

@@ -229,7 +229,7 @@ describe('StaticResolver', () => {
229229

230230
describe('absolute locations', () => {
231231
it('resolves an object location', () => {
232-
const resolver = createStaticResolver([
232+
const resolver = createFixedResolver([
233233
{ name: 'root', path: EMPTY_PATH_PATTERN_MATCHER },
234234
])
235235
expect(resolver.resolve({ path: '/' })).toMatchObject({
@@ -242,7 +242,7 @@ describe('StaticResolver', () => {
242242
})
243243

244244
it('resolves an absolute string location', () => {
245-
const resolver = createStaticResolver([
245+
const resolver = createFixedResolver([
246246
{ name: 'root', path: EMPTY_PATH_PATTERN_MATCHER },
247247
])
248248
expect(resolver.resolve('/')).toMatchObject({
@@ -255,7 +255,7 @@ describe('StaticResolver', () => {
255255
})
256256

257257
it('treats object path as pathname only (no query/hash parsing)', () => {
258-
const resolver = createStaticResolver([
258+
const resolver = createFixedResolver([
259259
{ name: 'any-path', path: ANY_PATH_PATTERN_MATCHER },
260260
])
261261
// Object with path containing query/hash should treat entire string as pathname
@@ -270,7 +270,7 @@ describe('StaticResolver', () => {
270270

271271
describe('named locations', () => {
272272
it('resolves named locations with no params', () => {
273-
const resolver = createStaticResolver([
273+
const resolver = createFixedResolver([
274274
{
275275
name: 'home',
276276
path: EMPTY_PATH_PATTERN_MATCHER,
@@ -288,7 +288,7 @@ describe('StaticResolver', () => {
288288
})
289289

290290
describe('encoding', () => {
291-
const resolver = createStaticResolver([
291+
const resolver = createFixedResolver([
292292
{ name: 'any-path', path: ANY_PATH_PATTERN_MATCHER },
293293
])
294294
describe('decodes', () => {
@@ -311,7 +311,7 @@ describe('StaticResolver', () => {
311311
})
312312

313313
it('passes a decoded query to the matcher', () => {
314-
const resolver = createStaticResolver([
314+
const resolver = createFixedResolver([
315315
{
316316
name: 'query',
317317
path: EMPTY_PATH_PATTERN_MATCHER,

packages/router/src/experimental/route-resolver/resolver-static.ts renamed to packages/router/src/experimental/route-resolver/resolver-fixed.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ import type {
2424
} from './matchers/matcher-pattern'
2525
import { warn } from '../../warning'
2626

27-
// TODO: find a better name than static that doesn't conflict with static params
28-
// maybe fixed or simple
29-
3027
export interface EXPERIMENTAL_ResolverRecord_Base {
3128
/**
3229
* Name of the matcher. Unique across all matchers. If missing, this record
@@ -49,10 +46,8 @@ export interface EXPERIMENTAL_ResolverRecord_Base {
4946
*/
5047
hash?: MatcherPatternHash
5148

52-
// TODO: here or in router
53-
// redirect?: RouteRecordRedirectOption
49+
parent?: EXPERIMENTAL_ResolverRecord | null // the parent can be matchable or not
5450

55-
parent?: EXPERIMENTAL_ResolverRecord | null // the parend can be matchable or not
5651
// TODO: implement aliases
5752
// aliasOf?: this
5853
}
@@ -70,20 +65,23 @@ export interface EXPERIMENTAL_ResolverRecord_Group
7065
hash?: undefined
7166
}
7267

68+
/**
69+
* A matchable record is a record that can be matched by a path, query or hash and will resolve to a location.
70+
*/
7371
export interface EXPERIMENTAL_ResolverRecord_Matchable
7472
extends EXPERIMENTAL_ResolverRecord_Base {
7573
name: RecordName
7674
path: MatcherPatternPath
7775
}
7876

79-
export type EXPERIMENTAL_ResolverRecord<T = {}> =
80-
| (EXPERIMENTAL_ResolverRecord_Matchable & T)
81-
| (EXPERIMENTAL_ResolverRecord_Group & T)
77+
export type EXPERIMENTAL_ResolverRecord<ExtensionT = {}> =
78+
| (EXPERIMENTAL_ResolverRecord_Matchable & ExtensionT)
79+
| (EXPERIMENTAL_ResolverRecord_Group & ExtensionT)
8280

83-
export type EXPERIMENTAL_ResolverStaticRecord<T = {}> =
84-
EXPERIMENTAL_ResolverRecord<T>
81+
export type EXPERIMENTAL_ResolverFixedRecord<ExtensionT = {}> =
82+
EXPERIMENTAL_ResolverRecord<ExtensionT>
8583

86-
export interface EXPERIMENTAL_ResolverStatic<TRecord>
84+
export interface EXPERIMENTAL_ResolverFixed<TRecord>
8785
extends EXPERIMENTAL_Resolver_Base<TRecord> {}
8886

8987
/**
@@ -102,16 +100,16 @@ export function buildMatched<T extends EXPERIMENTAL_ResolverRecord>(
102100
}
103101

104102
/**
105-
* Creates a simple resolver that must have all records defined at creation
103+
* Creates a fixed resolver that must have all records defined at creation
106104
* time.
107105
*
108106
* @template TRecord - extended type of the records
109107
* @param {TRecord[]} records - Ordered array of records that will be used to resolve routes
110108
* @returns a resolver that can be passed to the router
111109
*/
112-
export function createStaticResolver<
110+
export function createFixedResolver<
113111
TRecord extends EXPERIMENTAL_ResolverRecord_Matchable,
114-
>(records: TRecord[]): EXPERIMENTAL_ResolverStatic<TRecord> {
112+
>(records: TRecord[]): EXPERIMENTAL_ResolverFixed<TRecord> {
115113
// allows fast access to a matcher by name
116114
const recordMap = new Map<RecordName, TRecord>()
117115
for (const record of records) {
@@ -184,7 +182,7 @@ export function createStaticResolver<
184182
throw new Error(`Record "${String(name)}" not found`)
185183
}
186184

187-
if (typeof to === 'object' && to.hash?.startsWith('#')) {
185+
if (typeof to === 'object' && to.hash && to.hash.startsWith('#')) {
188186
warn(
189187
`A \`hash\` should always start with the character "#". Replace "${to.hash}" with "#${to.hash}".`
190188
)

packages/router/src/experimental/router.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ import {
8181
EXPERIMENTAL_ResolverRecord_Base,
8282
EXPERIMENTAL_ResolverRecord_Group,
8383
EXPERIMENTAL_ResolverRecord_Matchable,
84-
EXPERIMENTAL_ResolverStatic,
85-
} from './route-resolver/resolver-static'
84+
EXPERIMENTAL_ResolverFixed,
85+
} from './route-resolver/resolver-fixed'
8686
import {
8787
ResolverLocationAsNamed,
8888
ResolverLocationAsPathRelative,
@@ -383,7 +383,7 @@ export interface EXPERIMENTAL_RouterOptions
383383
*
384384
* @experimental
385385
*/
386-
resolver: EXPERIMENTAL_ResolverStatic<EXPERIMENTAL_RouteRecordNormalized_Matchable>
386+
resolver: EXPERIMENTAL_ResolverFixed<EXPERIMENTAL_RouteRecordNormalized_Matchable>
387387
}
388388

389389
/**

0 commit comments

Comments
 (0)