Skip to content

Commit 76331af

Browse files
authored
feat: add RouterViewDepth component and improve import map handling (#206)
- Add RouterViewDepth component to router-vue package - Remove fixNestedScopesResolution usage in core package - Update rspack dependencies to latest versions - Update module federation dependencies
1 parent c204c5e commit 76331af

File tree

8 files changed

+118
-258
lines changed

8 files changed

+118
-258
lines changed

packages/core/src/core.ts

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
import type { ImportmapMode } from './render-context';
2323
import type { RenderContext, RenderContextOptions } from './render-context';
2424
import { type CacheHandle, createCache } from './utils/cache';
25-
import { fixNestedScopesResolution, getImportMap } from './utils/import-map';
25+
import { getImportMap } from './utils/import-map';
2626
import type { Middleware } from './utils/middleware';
2727
import { type ProjectPath, resolvePath } from './utils/resolve-path';
2828
import { getImportPreloadInfo as getStaticImportPaths } from './utils/static-import-lexer';
@@ -854,17 +854,15 @@ export class Esmx {
854854
let json: ImportMap = {};
855855
switch (env) {
856856
case 'client': {
857-
json = fixNestedScopesResolution(
858-
getImportMap({
859-
manifests,
860-
getScope(name, scope) {
861-
return `/${name}${scope}`;
862-
},
863-
getFile(name, file) {
864-
return `/${name}/${file}`;
865-
}
866-
})
867-
);
857+
json = getImportMap({
858+
manifests,
859+
getScope(name, scope) {
860+
return `/${name}${scope}`;
861+
},
862+
getFile(name, file) {
863+
return `/${name}/${file}`;
864+
}
865+
});
868866
break;
869867
}
870868
case 'server':

packages/router-vue/src/index.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ describe('index.ts - Package Entry Point', () => {
7979
// Components
8080
'RouterLink',
8181
'RouterView',
82+
'RouterViewDepth',
8283
// Plugin
8384
'RouterPlugin'
8485
];
@@ -102,6 +103,7 @@ describe('index.ts - Package Entry Point', () => {
102103
'getRoute',
103104
'RouterLink',
104105
'RouterView',
106+
'RouterViewDepth',
105107
'RouterPlugin'
106108
];
107109

packages/router-vue/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ export {
1111
} from './use';
1212

1313
export { RouterLink } from './router-link';
14-
export { RouterView } from './router-view';
14+
export { RouterView, RouterViewDepth } from './router-view';
1515

1616
export { RouterPlugin } from './plugin';

packages/router-vue/src/router-view.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -231,13 +231,13 @@ describe('router-view.ts - RouterView Component', () => {
231231
let injectedDepth: number | undefined;
232232

233233
// Use the same symbol key that RouterView uses internally
234-
const RouterViewDepthKey = Symbol('RouterViewDepth');
234+
const RouterViewDepth = Symbol('RouterViewDepth');
235235

236236
// Create a custom RouterView component that can capture the injected depth
237237
const TestRouterView = defineComponent({
238238
name: 'TestRouterView',
239239
setup() {
240-
injectedDepth = inject(RouterViewDepthKey, -1);
240+
injectedDepth = inject(RouterViewDepth, -1);
241241
return () => h(RouterView);
242242
}
243243
});
@@ -263,13 +263,13 @@ describe('router-view.ts - RouterView Component', () => {
263263
let parentDepth: number | undefined;
264264
let childDepth: number | undefined;
265265

266-
const RouterViewDepthKey = Symbol('RouterViewDepth');
266+
const RouterViewDepth = Symbol('RouterViewDepth');
267267

268268
const ParentTestComponent = defineComponent({
269269
name: 'ParentTestComponent',
270270
setup() {
271-
parentDepth = inject(RouterViewDepthKey, -1);
272-
provide(RouterViewDepthKey, 0); // Simulate parent RouterView
271+
parentDepth = inject(RouterViewDepth, -1);
272+
provide(RouterViewDepth, 0); // Simulate parent RouterView
273273
return () =>
274274
h('div', [h('span', 'Parent'), h(ChildTestComponent)]);
275275
}
@@ -278,7 +278,7 @@ describe('router-view.ts - RouterView Component', () => {
278278
const ChildTestComponent = defineComponent({
279279
name: 'ChildTestComponent',
280280
setup() {
281-
childDepth = inject(RouterViewDepthKey, -1);
281+
childDepth = inject(RouterViewDepth, -1);
282282
return () => h('div', 'Child');
283283
}
284284
});
@@ -362,14 +362,14 @@ describe('router-view.ts - RouterView Component', () => {
362362

363363
describe('Edge Cases and Error Handling', () => {
364364
it('should render null when no route matches at current depth', async () => {
365-
const RouterViewDepthKey = Symbol('RouterViewDepth');
365+
const RouterViewDepth = Symbol('RouterViewDepth');
366366

367367
const DeepRouterView = defineComponent({
368368
name: 'DeepRouterView',
369369
setup() {
370370
// Inject depth 0 from parent RouterView and provide depth 1
371-
const currentDepth = inject(RouterViewDepthKey, 0);
372-
provide(RouterViewDepthKey, currentDepth + 1);
371+
const currentDepth = inject(RouterViewDepth, 0);
372+
provide(RouterViewDepth, currentDepth + 1);
373373
return () => h(RouterView);
374374
}
375375
});

packages/router-vue/src/router-view.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { defineComponent, h, inject, provide } from 'vue';
22
import { useRoute } from './use';
33
import { resolveComponent } from './util';
44

5-
const RouterViewDepthKey = Symbol('RouterViewDepth');
5+
export const RouterViewDepth = Symbol('RouterViewDepth');
66

77
/**
88
* RouterView component for rendering matched route components.
@@ -39,11 +39,11 @@ export const RouterView = defineComponent({
3939

4040
// Get current RouterView depth from parent RouterView (if any)
4141
// This enables proper nested routing by tracking how deep we are in the component tree
42-
const depth = inject(RouterViewDepthKey, 0);
42+
const depth = inject(RouterViewDepth, 0);
4343

4444
// Provide depth + 1 to child RouterView components
4545
// This ensures each nested RouterView renders the correct route component
46-
provide(RouterViewDepthKey, depth + 1);
46+
provide(RouterViewDepth, depth + 1);
4747

4848
return () => {
4949
// Get the matched route configuration at current depth

packages/rspack-module-link-plugin/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"devDependencies": {
3535
"@biomejs/biome": "1.9.4",
3636
"@esmx/core": "workspace:*",
37-
"@rspack/core": "1.6.0-beta.1",
37+
"@rspack/core": "1.6.0",
3838
"@types/node": "^24.0.0",
3939
"@vitest/coverage-v8": "3.2.4",
4040
"typescript": "5.9.2",

packages/rspack/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
"@esmx/import": "workspace:*",
6767
"@esmx/rspack-module-link-plugin": "workspace:*",
6868
"@npmcli/arborist": "^9.0.1",
69-
"@rspack/core": "1.6.0-beta.1",
69+
"@rspack/core": "1.6.0",
7070
"css-loader": "^7.1.2",
7171
"less-loader": "^12.2.0",
7272
"node-polyfill-webpack-plugin": "^4.1.0",

0 commit comments

Comments
 (0)