@jskit-ai/kernel 0.1.148 → 0.1.149

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,147 +0,0 @@
1
- import assert from "node:assert/strict";
2
- import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import path from "node:path";
5
- import test from "node:test";
6
-
7
- import { loadInstalledPackageDescriptor, resolveDescriptorPathForInstalledPackage } from "../../internal/node/installedPackageDescriptor.js";
8
-
9
- async function createFixtureRoot(prefix) {
10
- return mkdtemp(path.join(tmpdir(), prefix));
11
- }
12
-
13
- async function writeDescriptorFile(filePath, descriptorSource) {
14
- await mkdir(path.dirname(filePath), { recursive: true });
15
- await writeFile(filePath, descriptorSource, "utf8");
16
- }
17
-
18
- test("resolveDescriptorPathForInstalledPackage returns empty string when descriptor is missing and required=false", async () => {
19
- const appRoot = await createFixtureRoot("kernel-package-descriptor-missing-");
20
- try {
21
- const descriptorPath = await resolveDescriptorPathForInstalledPackage({
22
- appRoot,
23
- packageId: "@example/missing",
24
- installedPackageState: {},
25
- required: false
26
- });
27
- assert.equal(descriptorPath, "");
28
- } finally {
29
- await rm(appRoot, { recursive: true, force: true });
30
- }
31
- });
32
-
33
- test("resolveDescriptorPathForInstalledPackage throws when descriptor is missing and required=true", async () => {
34
- const appRoot = await createFixtureRoot("kernel-package-descriptor-required-");
35
- try {
36
- await assert.rejects(
37
- () =>
38
- resolveDescriptorPathForInstalledPackage({
39
- appRoot,
40
- packageId: "@example/missing",
41
- installedPackageState: {},
42
- required: true
43
- }),
44
- /Unable to resolve package descriptor for @example\/missing\./
45
- );
46
- } finally {
47
- await rm(appRoot, { recursive: true, force: true });
48
- }
49
- });
50
-
51
- test("resolveDescriptorPathForInstalledPackage resolves descriptor using source.packagePath", async () => {
52
- const appRoot = await createFixtureRoot("kernel-package-descriptor-package-path-");
53
- try {
54
- const descriptorPath = path.join(appRoot, "packages", "local-example", "package.descriptor.mjs");
55
- await writeDescriptorFile(descriptorPath, "export default { packageId: \"@local/example\" };\n");
56
-
57
- const resolvedDescriptorPath = await resolveDescriptorPathForInstalledPackage({
58
- appRoot,
59
- packageId: "@local/example",
60
- installedPackageState: {
61
- source: {
62
- packagePath: "packages/local-example"
63
- }
64
- },
65
- required: true
66
- });
67
- assert.equal(resolvedDescriptorPath, descriptorPath);
68
- } finally {
69
- await rm(appRoot, { recursive: true, force: true });
70
- }
71
- });
72
-
73
- test("resolveDescriptorPathForInstalledPackage resolves descriptor from ancestor node_modules", async () => {
74
- const installRoot = await createFixtureRoot("kernel-package-descriptor-hoisted-");
75
- try {
76
- const appRoot = path.join(installRoot, "node_modules", "@example", "app");
77
- const descriptorPath = path.join(
78
- installRoot,
79
- "node_modules",
80
- "@jskit-ai",
81
- "shell-web",
82
- "package.descriptor.mjs"
83
- );
84
- await mkdir(appRoot, { recursive: true });
85
- await writeDescriptorFile(descriptorPath, "export default { packageId: \"@jskit-ai/shell-web\" };\n");
86
-
87
- const resolvedDescriptorPath = await resolveDescriptorPathForInstalledPackage({
88
- appRoot,
89
- packageId: "@jskit-ai/shell-web",
90
- installedPackageState: {},
91
- required: true
92
- });
93
- assert.equal(resolvedDescriptorPath, descriptorPath);
94
- } finally {
95
- await rm(installRoot, { recursive: true, force: true });
96
- }
97
- });
98
-
99
- test("resolveDescriptorPathForInstalledPackage resolves descriptor using jskit-cli descriptorPath fallback", async () => {
100
- const appRoot = await createFixtureRoot("kernel-package-descriptor-jskit-root-");
101
- try {
102
- const descriptorPath = path.join(
103
- appRoot,
104
- "node_modules",
105
- "@jskit-ai",
106
- "jskit-cli",
107
- "descriptors",
108
- "example.descriptor.mjs"
109
- );
110
- await writeDescriptorFile(descriptorPath, "export default { packageId: \"@example/test\" };\n");
111
-
112
- const resolvedDescriptorPath = await resolveDescriptorPathForInstalledPackage({
113
- appRoot,
114
- packageId: "@example/test",
115
- installedPackageState: {
116
- source: {
117
- descriptorPath: "descriptors/example.descriptor.mjs"
118
- }
119
- },
120
- required: true
121
- });
122
- assert.equal(resolvedDescriptorPath, descriptorPath);
123
- } finally {
124
- await rm(appRoot, { recursive: true, force: true });
125
- }
126
- });
127
-
128
- test("loadInstalledPackageDescriptor loads descriptor payload once resolved", async () => {
129
- const appRoot = await createFixtureRoot("kernel-package-descriptor-load-");
130
- try {
131
- const descriptorPath = path.join(appRoot, "node_modules", "@example", "ready", "package.descriptor.mjs");
132
- await writeDescriptorFile(descriptorPath, "export default { packageId: \"@example/ready\", version: \"1.0.0\" };\n");
133
-
134
- const descriptorRecord = await loadInstalledPackageDescriptor({
135
- appRoot,
136
- packageId: "@example/ready",
137
- installedPackageState: {},
138
- required: true
139
- });
140
-
141
- assert.equal(descriptorRecord.descriptorPath, descriptorPath);
142
- assert.equal(descriptorRecord.descriptor.packageId, "@example/ready");
143
- assert.equal(descriptorRecord.descriptor.version, "1.0.0");
144
- } finally {
145
- await rm(appRoot, { recursive: true, force: true });
146
- }
147
- });