@jskit-ai/kernel 0.1.58 → 0.1.60

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,5 +1,6 @@
1
1
  import assert from "node:assert/strict";
2
2
  import test from "node:test";
3
+ import { createMemoryHistory, createRouter } from "vue-router";
3
4
  import { redirectToChild } from "./pageRedirects.js";
4
5
 
5
6
  test("redirectToChild resolves a child path and preserves incoming query and hash", () => {
@@ -38,3 +39,33 @@ test("redirectToChild uses child query and hash when the target declares them",
38
39
  hash: "#advanced"
39
40
  });
40
41
  });
42
+
43
+ test("redirectToChild can live on a host route that also renders a component", async () => {
44
+ const hostComponent = { name: "ContactHost" };
45
+ const childComponent = { name: "CommentsPage" };
46
+
47
+ const router = createRouter({
48
+ history: createMemoryHistory(),
49
+ routes: [
50
+ {
51
+ path: "/contacts/:contactId",
52
+ component: hostComponent,
53
+ redirect: redirectToChild("comments"),
54
+ children: [
55
+ {
56
+ path: "comments",
57
+ component: childComponent
58
+ }
59
+ ]
60
+ }
61
+ ]
62
+ });
63
+
64
+ await router.push("/contacts/1?tab=open#details");
65
+ await router.isReady();
66
+
67
+ assert.equal(router.currentRoute.value.fullPath, "/contacts/1/comments?tab=open#details");
68
+ assert.equal(router.currentRoute.value.matched.length, 2);
69
+ assert.equal(router.currentRoute.value.matched[0]?.components?.default, hostComponent);
70
+ assert.equal(router.currentRoute.value.matched[1]?.components?.default, childComponent);
71
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jskit-ai/kernel",
3
- "version": "0.1.58",
3
+ "version": "0.1.60",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "json-rest-schema": "1.x.x"
@@ -18,7 +18,7 @@ test("loadAppConfigFromModuleUrl merges public and server config", async () => {
18
18
  await mkdir(path.join(appRoot, "config"), { recursive: true });
19
19
  await writeFile(path.join(appRoot, "config", "public.js"), "export const config = { a: 1, shared: 'public' };", "utf8");
20
20
  await writeFile(path.join(appRoot, "config", "server.js"), "export const config = { b: 2, shared: 'server' };", "utf8");
21
- const moduleUrl = await createModuleUrlAt(path.join(appRoot, "packages", "main", "src", "server", "providers", "MainServiceProvider.js"));
21
+ const moduleUrl = await createModuleUrlAt(path.join(appRoot, "packages", "main", "src", "server", "MainServiceProvider.js"));
22
22
 
23
23
  const loaded = await loadAppConfigFromModuleUrl({ moduleUrl });
24
24
 
@@ -35,7 +35,7 @@ test("loadAppConfigFromModuleUrl tolerates missing server config", async () => {
35
35
  const appRoot = path.join(tempRoot, "app");
36
36
  await mkdir(path.join(appRoot, "config"), { recursive: true });
37
37
  await writeFile(path.join(appRoot, "config", "public.js"), "export const config = { a: 1 };", "utf8");
38
- const moduleUrl = await createModuleUrlAt(path.join(appRoot, "packages", "main", "src", "server", "providers", "MainServiceProvider.js"));
38
+ const moduleUrl = await createModuleUrlAt(path.join(appRoot, "packages", "main", "src", "server", "MainServiceProvider.js"));
39
39
 
40
40
  const loaded = await loadAppConfigFromModuleUrl({ moduleUrl });
41
41
 
@@ -46,7 +46,7 @@ test("loadAppConfigFromModuleUrl tolerates missing server config", async () => {
46
46
 
47
47
  test("loadAppConfigFromModuleUrl throws when app root cannot be resolved", async () => {
48
48
  const tempRoot = await mkdtemp(path.join(os.tmpdir(), "kernel-app-config-"));
49
- const moduleUrl = await createModuleUrlAt(path.join(tempRoot, "missing", "packages", "main", "src", "server", "providers", "MainServiceProvider.js"));
49
+ const moduleUrl = await createModuleUrlAt(path.join(tempRoot, "missing", "packages", "main", "src", "server", "MainServiceProvider.js"));
50
50
 
51
51
  await assert.rejects(
52
52
  loadAppConfigFromModuleUrl({ moduleUrl }),