@g3nomaly/core 0.3.3 → 0.3.5
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.
- package/README.md +1 -1
- package/dist/cli/clash.d.ts +17 -0
- package/dist/cli/clash.d.ts.map +1 -0
- package/dist/cli/clash.js +75 -0
- package/dist/cli/clash.js.map +1 -0
- package/dist/cli/commands/installFromSources.d.ts +3 -3
- package/dist/cli/commands/installFromSources.d.ts.map +1 -1
- package/dist/cli/commands/installFromSources.js +54 -18
- package/dist/cli/commands/installFromSources.js.map +1 -1
- package/dist/cli/commands/sources.d.ts +6 -3
- package/dist/cli/commands/sources.d.ts.map +1 -1
- package/dist/cli/commands/sources.js +8 -4
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +23 -7
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/dialogue.d.ts +3 -1
- package/dist/cli/dialogue.d.ts.map +1 -1
- package/dist/cli/dialogue.js +7 -1
- package/dist/cli/dialogue.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/installDialogues.d.ts +2 -0
- package/dist/cli/installDialogues.d.ts.map +1 -1
- package/dist/cli/installDialogues.js +10 -0
- package/dist/cli/installDialogues.js.map +1 -1
- package/dist/cli/report.d.ts +4 -4
- package/dist/cli/report.d.ts.map +1 -1
- package/dist/cli/report.js +4 -4
- package/dist/cli/report.js.map +1 -1
- package/dist/cli/types.d.ts +4 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/config/config.d.ts +3 -3
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +3 -3
- package/dist/config/config.js.map +1 -1
- package/dist/config/index.d.ts +3 -3
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +15 -10
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +6 -5
- package/dist/config/types.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/manifest.d.ts +1 -1
- package/dist/installer/manifestSources.d.ts +3 -2
- package/dist/installer/manifestSources.d.ts.map +1 -1
- package/dist/installer/manifestSources.js +4 -3
- package/dist/installer/manifestSources.js.map +1 -1
- package/dist/installer/resolve.d.ts +26 -2
- package/dist/installer/resolve.d.ts.map +1 -1
- package/dist/installer/resolve.js +31 -18
- package/dist/installer/resolve.js.map +1 -1
- package/dist/sources/index.d.ts +3 -0
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +2 -0
- package/dist/sources/index.js.map +1 -1
- package/dist/sources/npm.d.ts +16 -3
- package/dist/sources/npm.d.ts.map +1 -1
- package/dist/sources/npm.js +11 -6
- package/dist/sources/npm.js.map +1 -1
- package/dist/sources/packageJson.d.ts +12 -0
- package/dist/sources/packageJson.d.ts.map +1 -1
- package/dist/sources/packageJson.js +32 -4
- package/dist/sources/packageJson.js.map +1 -1
- package/dist/sources/register.d.ts +3 -2
- package/dist/sources/register.d.ts.map +1 -1
- package/dist/sources/register.js +5 -4
- package/dist/sources/register.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,18 +10,42 @@ export interface EntryRequest {
|
|
|
10
10
|
name: string;
|
|
11
11
|
source?: string;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* @brief What one source offers under a name that several sources offer.
|
|
15
|
+
*
|
|
16
|
+
* @property source - Source name, e.g. `g3n-ui`.
|
|
17
|
+
* @property kind - `group` when the name is a group in that source, `entry` when it is an entry key.
|
|
18
|
+
* @property keys - Keys the choice installs: every entry of the group, or the one entry.
|
|
19
|
+
*/
|
|
20
|
+
export interface ClashChoice {
|
|
21
|
+
source: string;
|
|
22
|
+
kind: "group" | "entry";
|
|
23
|
+
keys: string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @brief A requested name that more than one source offers, as a group or an entry.
|
|
27
|
+
*
|
|
28
|
+
* @property name - The name as requested, lowercased, e.g. `forms`.
|
|
29
|
+
* @property choices - One choice per source offering the name, sorted by source.
|
|
30
|
+
*/
|
|
31
|
+
export interface Clash {
|
|
32
|
+
name: string;
|
|
33
|
+
choices: ClashChoice[];
|
|
34
|
+
}
|
|
13
35
|
/**
|
|
14
36
|
* @brief Entries a set of requests resolved to, and what could not be resolved.
|
|
15
37
|
*
|
|
16
38
|
* @property entries - Resolved entries by key, `registryDependencies` rewritten to the resolved keys.
|
|
17
39
|
* @property unknown - Requests and dependencies no source offers, e.g. `ghost` or `ghost@mine`.
|
|
18
|
-
* @property ambiguous - One message per
|
|
40
|
+
* @property ambiguous - One message per dependency more than one source offers, naming the qualified forms to pick from.
|
|
41
|
+
* @property clashes - Requested names more than one source offers; the caller settles each by naming its source.
|
|
19
42
|
* @property notes - Why an entry nobody named is in the set, e.g. `{ vocabulary: "dep of plan" }`.
|
|
20
43
|
*/
|
|
21
44
|
export interface Resolution<T extends OriginEntry> {
|
|
22
45
|
entries: Map<string, SourceOffer<T>>;
|
|
23
46
|
unknown: string[];
|
|
24
47
|
ambiguous: string[];
|
|
48
|
+
clashes: Clash[];
|
|
25
49
|
notes: Record<string, string>;
|
|
26
50
|
}
|
|
27
51
|
/**
|
|
@@ -39,7 +63,7 @@ export interface ResolvedDependencies<T extends OriginEntry> {
|
|
|
39
63
|
ambiguous: string[];
|
|
40
64
|
}
|
|
41
65
|
/**
|
|
42
|
-
* @brief Parses a typed request such as `emphasise` or `
|
|
66
|
+
* @brief Parses a typed request such as `emphasise`, `emphasise@g3n-skills` or `g3n-skills:emphasise`.
|
|
43
67
|
*
|
|
44
68
|
* Names are matched in lowercase. A leading `@` belongs to the name, as in
|
|
45
69
|
* `@shadcn/button@shadcn`, so the source starts at the first `@` after the first character.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/installer/resolve.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAK,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/installer/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
/** `<source>:<name>`, the other way to name a source, e.g. `g3n-ui:forms`. */
|
|
2
|
+
const SOURCE_PREFIX = /^([a-z0-9][a-z0-9._-]*):(.+)$/;
|
|
1
3
|
/**
|
|
2
|
-
* @brief Parses a typed request such as `emphasise` or `
|
|
4
|
+
* @brief Parses a typed request such as `emphasise`, `emphasise@g3n-skills` or `g3n-skills:emphasise`.
|
|
3
5
|
*
|
|
4
6
|
* Names are matched in lowercase. A leading `@` belongs to the name, as in
|
|
5
7
|
* `@shadcn/button@shadcn`, so the source starts at the first `@` after the first character.
|
|
@@ -8,6 +10,9 @@
|
|
|
8
10
|
* @returns Request with the lowercased name, and the source when one is given.
|
|
9
11
|
*/
|
|
10
12
|
export function parseRequest(token) {
|
|
13
|
+
const prefixed = SOURCE_PREFIX.exec(token);
|
|
14
|
+
if (prefixed !== null)
|
|
15
|
+
return { name: (prefixed[2] ?? "").toLowerCase(), source: prefixed[1] };
|
|
11
16
|
const at = token.indexOf("@", 1);
|
|
12
17
|
return at > 0
|
|
13
18
|
? { name: token.slice(0, at).toLowerCase(), source: token.slice(at + 1) }
|
|
@@ -40,28 +45,36 @@ function uniqueSources(offers) {
|
|
|
40
45
|
/**
|
|
41
46
|
* @brief Finds the entries one request names.
|
|
42
47
|
*
|
|
43
|
-
*
|
|
44
|
-
* same key. A name
|
|
45
|
-
* source for it, and
|
|
48
|
+
* Within one source, a group name expands to every entry in it and wins over
|
|
49
|
+
* an entry with the same key. A name several sources offer, as a group or an
|
|
50
|
+
* entry, is settled by the preferred source for it, and clashes otherwise.
|
|
46
51
|
*
|
|
47
52
|
* @param request - Request being matched, e.g. `{ name: "emphasise" }`.
|
|
48
53
|
* @param offers - Every offer to search, across all sources.
|
|
49
54
|
* @param preferred - Source to pick for a key several sources offer, by key, e.g. `{ emphasise: "g3n-skills" }`.
|
|
50
|
-
* @returns The matching offers,
|
|
55
|
+
* @returns The matching offers, a `{ clash }` when several sources offer the name, or `null` when none does.
|
|
51
56
|
*/
|
|
52
57
|
function matchRequest(request, offers, preferred) {
|
|
53
58
|
const pool = request.source === undefined ? offers : offers.filter((o) => sourceOf(o) === request.source);
|
|
54
|
-
const
|
|
55
|
-
const
|
|
56
|
-
|
|
59
|
+
const bySource = new Map();
|
|
60
|
+
for (const source of uniqueSources(pool)) {
|
|
61
|
+
const own = pool.filter((o) => sourceOf(o) === source);
|
|
62
|
+
const group = own.filter((o) => o.entry.group === request.name);
|
|
63
|
+
const entry = own.filter((o) => o.key === request.name);
|
|
64
|
+
if (group.length > 0)
|
|
65
|
+
bySource.set(source, { kind: "group", offers: group });
|
|
66
|
+
else if (entry.length > 0)
|
|
67
|
+
bySource.set(source, { kind: "entry", offers: entry });
|
|
68
|
+
}
|
|
69
|
+
if (bySource.size === 0)
|
|
57
70
|
return null;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return {
|
|
71
|
+
if (bySource.size === 1)
|
|
72
|
+
return [...bySource.values()][0]?.offers ?? null;
|
|
73
|
+
const pinned = bySource.get(preferred[request.name] ?? "");
|
|
74
|
+
if (pinned !== undefined)
|
|
75
|
+
return pinned.offers;
|
|
76
|
+
const choices = [...bySource].map(([source, match]) => ({ source, kind: match.kind, keys: match.offers.map((o) => o.key).sort() }));
|
|
77
|
+
return { clash: { name: request.name, choices } };
|
|
65
78
|
}
|
|
66
79
|
/**
|
|
67
80
|
* @brief Finds the entry one dependency token points at.
|
|
@@ -131,7 +144,7 @@ export function resolveDependencies(offer, offers, preferred = {}) {
|
|
|
131
144
|
*/
|
|
132
145
|
export function resolveRequests(tokens, offers, installed = {}) {
|
|
133
146
|
const preferred = { ...installed };
|
|
134
|
-
const result = { entries: new Map(), unknown: [], ambiguous: [], notes: {} };
|
|
147
|
+
const result = { entries: new Map(), unknown: [], ambiguous: [], clashes: [], notes: {} };
|
|
135
148
|
const named = new Set();
|
|
136
149
|
const add = (offer, note) => {
|
|
137
150
|
const existing = result.entries.get(offer.key);
|
|
@@ -156,8 +169,8 @@ export function resolveRequests(tokens, offers, installed = {}) {
|
|
|
156
169
|
const match = matchRequest(request, offers, preferred);
|
|
157
170
|
if (match === null)
|
|
158
171
|
result.unknown.push(formatRequest(request));
|
|
159
|
-
else if ("
|
|
160
|
-
result.
|
|
172
|
+
else if ("clash" in match)
|
|
173
|
+
result.clashes.push(match.clash);
|
|
161
174
|
else
|
|
162
175
|
requested.push(...match);
|
|
163
176
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/installer/resolve.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/installer/resolve.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/index.d.ts
CHANGED
|
@@ -2,4 +2,7 @@ export * from "./types";
|
|
|
2
2
|
export { parseSourceSpec, defaultSourceName, anchorLocalSpec } from "./parse";
|
|
3
3
|
export { listSources, addSource, removeSource } from "./register";
|
|
4
4
|
export { checkoutSource, describeSource } from "./checkout";
|
|
5
|
+
export { findInstalledPackage } from "./npm";
|
|
6
|
+
export { readDeclaredDependencies, RUNTIME_SECTIONS } from "./packageJson";
|
|
7
|
+
export type { DependencySection } from "./packageJson";
|
|
5
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/sources/index.js
CHANGED
|
@@ -3,4 +3,6 @@ export * from "./types";
|
|
|
3
3
|
export { parseSourceSpec, defaultSourceName, anchorLocalSpec } from "./parse";
|
|
4
4
|
export { listSources, addSource, removeSource } from "./register";
|
|
5
5
|
export { checkoutSource, describeSource } from "./checkout";
|
|
6
|
+
export { findInstalledPackage } from "./npm";
|
|
7
|
+
export { readDeclaredDependencies, RUNTIME_SECTIONS } from "./packageJson";
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/sources/npm.d.ts
CHANGED
|
@@ -3,14 +3,27 @@ import type { NpmSourceSpec, SourceCheckout } from "./types";
|
|
|
3
3
|
* @brief Resolves an npm source to a folder.
|
|
4
4
|
*
|
|
5
5
|
* A copy in `node_modules` at or above the project root is read in place when it satisfies `spec.version`
|
|
6
|
-
* (any copy does when no version is set).
|
|
6
|
+
* (any copy does when no version is set). A package the project's `package.json` declares is never
|
|
7
|
+
* downloaded: its version belongs to `bun install`. Any other package is downloaded from the registry
|
|
7
8
|
* in `npm_config_registry`, checked against its integrity hash and unpacked into a temporary folder.
|
|
8
9
|
*
|
|
9
10
|
* @param name - Name of the source.
|
|
10
11
|
* @param spec - npm spec with the package name and optional version.
|
|
11
|
-
* @param projectRoot - Absolute folder the `node_modules` lookup starts from.
|
|
12
|
+
* @param projectRoot - Absolute folder the `node_modules` lookup starts from, and whose `package.json` is read.
|
|
12
13
|
* @returns Checkout of the package folder.
|
|
13
|
-
* @throws {Error} When the
|
|
14
|
+
* @throws {Error} When `package.json` declares the package but no copy is installed, the registry has no
|
|
15
|
+
* matching version, or the download fails its integrity check.
|
|
14
16
|
*/
|
|
15
17
|
export declare function checkoutNpm(name: string, spec: NpmSourceSpec, projectRoot: string): Promise<SourceCheckout>;
|
|
18
|
+
/**
|
|
19
|
+
* @brief Finds the nearest installed copy of a package, at or above a folder.
|
|
20
|
+
*
|
|
21
|
+
* @param fromDir - Absolute folder the search starts from.
|
|
22
|
+
* @param pkg - Package name, e.g. `@g3nomaly/g3n-skills`.
|
|
23
|
+
* @returns Real path and version of `node_modules/<pkg>`, or `null` when no copy exists.
|
|
24
|
+
*/
|
|
25
|
+
export declare function findInstalledPackage(fromDir: string, pkg: string): {
|
|
26
|
+
dir: string;
|
|
27
|
+
version: string | undefined;
|
|
28
|
+
} | null;
|
|
16
29
|
//# sourceMappingURL=npm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/sources/npm.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAsB7D
|
|
1
|
+
{"version":3,"file":"npm.d.ts","sourceRoot":"","sources":["../../src/sources/npm.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAsB7D;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CASjH;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,IAAI,CAYtH"}
|
package/dist/sources/npm.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { z } from "zod";
|
|
5
|
-
import { readPackageVersion } from "./packageJson";
|
|
5
|
+
import { readDeclaredDependencies, readPackageVersion } from "./packageJson";
|
|
6
6
|
import { createTempDir, removeDir, runCommand } from "./process";
|
|
7
7
|
const DEFAULT_REGISTRY = "https://registry.npmjs.org/";
|
|
8
8
|
const RegistryEnvSchema = z.object({
|
|
@@ -22,20 +22,25 @@ const PackumentSchema = z.object({
|
|
|
22
22
|
* @brief Resolves an npm source to a folder.
|
|
23
23
|
*
|
|
24
24
|
* A copy in `node_modules` at or above the project root is read in place when it satisfies `spec.version`
|
|
25
|
-
* (any copy does when no version is set).
|
|
25
|
+
* (any copy does when no version is set). A package the project's `package.json` declares is never
|
|
26
|
+
* downloaded: its version belongs to `bun install`. Any other package is downloaded from the registry
|
|
26
27
|
* in `npm_config_registry`, checked against its integrity hash and unpacked into a temporary folder.
|
|
27
28
|
*
|
|
28
29
|
* @param name - Name of the source.
|
|
29
30
|
* @param spec - npm spec with the package name and optional version.
|
|
30
|
-
* @param projectRoot - Absolute folder the `node_modules` lookup starts from.
|
|
31
|
+
* @param projectRoot - Absolute folder the `node_modules` lookup starts from, and whose `package.json` is read.
|
|
31
32
|
* @returns Checkout of the package folder.
|
|
32
|
-
* @throws {Error} When the
|
|
33
|
+
* @throws {Error} When `package.json` declares the package but no copy is installed, the registry has no
|
|
34
|
+
* matching version, or the download fails its integrity check.
|
|
33
35
|
*/
|
|
34
36
|
export async function checkoutNpm(name, spec, projectRoot) {
|
|
35
|
-
const installed =
|
|
37
|
+
const installed = findInstalledPackage(projectRoot, spec.package);
|
|
36
38
|
if (installed !== null && accepts(installed.version, spec.version)) {
|
|
37
39
|
return { name, spec, dir: installed.dir, version: installed.version, dispose: () => { } };
|
|
38
40
|
}
|
|
41
|
+
if (installed === null && readDeclaredDependencies(projectRoot)[spec.package] !== undefined) {
|
|
42
|
+
throw new Error(`${spec.package} is in package.json but not installed: run \`bun install\``);
|
|
43
|
+
}
|
|
39
44
|
return downloadFromRegistry(name, spec);
|
|
40
45
|
}
|
|
41
46
|
/**
|
|
@@ -45,7 +50,7 @@ export async function checkoutNpm(name, spec, projectRoot) {
|
|
|
45
50
|
* @param pkg - Package name, e.g. `@g3nomaly/g3n-skills`.
|
|
46
51
|
* @returns Real path and version of `node_modules/<pkg>`, or `null` when no copy exists.
|
|
47
52
|
*/
|
|
48
|
-
function
|
|
53
|
+
export function findInstalledPackage(fromDir, pkg) {
|
|
49
54
|
let dir = fromDir;
|
|
50
55
|
while (true) {
|
|
51
56
|
const candidate = path.join(dir, "node_modules", pkg);
|
package/dist/sources/npm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/sources/npm.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"npm.js","sourceRoot":"","sources":["../../src/sources/npm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
/** `version` from `<dir>/package.json`, or `undefined` when the file or the field is missing. */
|
|
2
2
|
export declare function readPackageVersion(dir: string): string | undefined;
|
|
3
|
+
/** A section of `package.json` that declares packages. */
|
|
4
|
+
export type DependencySection = "dependencies" | "devDependencies" | "peerDependencies" | "optionalDependencies";
|
|
5
|
+
/** The sections a package the app imports at runtime may be declared in. */
|
|
6
|
+
export declare const RUNTIME_SECTIONS: readonly DependencySection[];
|
|
7
|
+
/**
|
|
8
|
+
* @brief Every package `<dir>/package.json` declares in the given sections.
|
|
9
|
+
*
|
|
10
|
+
* @param dir - Absolute folder holding the `package.json`, e.g. a project root.
|
|
11
|
+
* @param sections - Sections to read; all four by default.
|
|
12
|
+
* @returns Declared range by package name, e.g. `{ "radix-ui": "^1.4.0" }`; empty when the file is missing.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readDeclaredDependencies(dir: string, sections?: readonly DependencySection[]): Record<string, string>;
|
|
3
15
|
//# sourceMappingURL=packageJson.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageJson.d.ts","sourceRoot":"","sources":["../../src/sources/packageJson.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"packageJson.d.ts","sourceRoot":"","sources":["../../src/sources/packageJson.ts"],"names":[],"mappings":"AAsBA,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AAKjH,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,EAAE,SAAS,iBAAiB,EAAiE,CAAC;AAE3H;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,iBAAiB,EAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAI/H"}
|
|
@@ -2,12 +2,40 @@
|
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { z } from "zod";
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
const DependencySectionSchema = z.record(z.string(), z.string()).optional();
|
|
6
|
+
const PackageJsonSchema = z.object({
|
|
7
|
+
version: z.string().min(1).optional(),
|
|
8
|
+
dependencies: DependencySectionSchema,
|
|
9
|
+
devDependencies: DependencySectionSchema,
|
|
10
|
+
peerDependencies: DependencySectionSchema,
|
|
11
|
+
optionalDependencies: DependencySectionSchema,
|
|
12
|
+
});
|
|
13
|
+
/** `<dir>/package.json` parsed, or `undefined` when the file is missing. */
|
|
14
|
+
function readPackageJson(dir) {
|
|
8
15
|
const file = path.join(dir, "package.json");
|
|
9
16
|
if (!fs.existsSync(file))
|
|
10
17
|
return undefined;
|
|
11
|
-
return
|
|
18
|
+
return PackageJsonSchema.parse(JSON.parse(fs.readFileSync(file, "utf8")));
|
|
19
|
+
}
|
|
20
|
+
/** `version` from `<dir>/package.json`, or `undefined` when the file or the field is missing. */
|
|
21
|
+
export function readPackageVersion(dir) {
|
|
22
|
+
return readPackageJson(dir)?.version;
|
|
23
|
+
}
|
|
24
|
+
/** Every section, weakest first: a package declared in two sections takes the range of the later one. */
|
|
25
|
+
const SECTIONS = ["optionalDependencies", "peerDependencies", "devDependencies", "dependencies"];
|
|
26
|
+
/** The sections a package the app imports at runtime may be declared in. */
|
|
27
|
+
export const RUNTIME_SECTIONS = ["dependencies", "peerDependencies", "optionalDependencies"];
|
|
28
|
+
/**
|
|
29
|
+
* @brief Every package `<dir>/package.json` declares in the given sections.
|
|
30
|
+
*
|
|
31
|
+
* @param dir - Absolute folder holding the `package.json`, e.g. a project root.
|
|
32
|
+
* @param sections - Sections to read; all four by default.
|
|
33
|
+
* @returns Declared range by package name, e.g. `{ "radix-ui": "^1.4.0" }`; empty when the file is missing.
|
|
34
|
+
*/
|
|
35
|
+
export function readDeclaredDependencies(dir, sections = SECTIONS) {
|
|
36
|
+
const manifest = readPackageJson(dir);
|
|
37
|
+
if (manifest === undefined)
|
|
38
|
+
return {};
|
|
39
|
+
return Object.assign({}, ...SECTIONS.filter((section) => sections.includes(section)).map((section) => manifest[section]));
|
|
12
40
|
}
|
|
13
41
|
//# sourceMappingURL=packageJson.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packageJson.js","sourceRoot":"","sources":["../../src/sources/packageJson.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,
|
|
1
|
+
{"version":3,"file":"packageJson.js","sourceRoot":"","sources":["../../src/sources/packageJson.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAE5E,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,OAAO,EAAe,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClD,YAAY,EAAU,uBAAuB;IAC7C,eAAe,EAAO,uBAAuB;IAC7C,gBAAgB,EAAM,uBAAuB;IAC7C,oBAAoB,EAAE,uBAAuB;CAC9C,CAAC,CAAC;AAEH,4EAA4E;AAC5E,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,eAAe,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;AACvC,CAAC;AAKD,yGAAyG;AACzG,MAAM,QAAQ,GAAiC,CAAC,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAE/H,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAiC,CAAC,cAAc,EAAE,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;AAE3H;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,QAAQ,GAAiC,QAAQ;IACrG,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5H,CAAC"}
|
|
@@ -14,10 +14,11 @@ export declare function listSources(record: SourceRecord, builtins: SourceRecord
|
|
|
14
14
|
* @param name - Name to register under. Must match `SourceNameSchema`.
|
|
15
15
|
* @param spec - Where the source is read from.
|
|
16
16
|
* @param builtins - Sources shipped with the installer. Their names cannot be registered.
|
|
17
|
+
* @param replace - Point an already registered name at `spec` instead of refusing it.
|
|
17
18
|
* @returns A new record with the source added.
|
|
18
|
-
* @throws {Error} When the name is invalid, belongs to a built-in source, or is already registered.
|
|
19
|
+
* @throws {Error} When the name is invalid, belongs to a built-in source, or is already registered and `replace` is not set.
|
|
19
20
|
*/
|
|
20
|
-
export declare function addSource(record: SourceRecord, name: string, spec: SourceSpec, builtins: SourceRecord): SourceRecord;
|
|
21
|
+
export declare function addSource(record: SourceRecord, name: string, spec: SourceSpec, builtins: SourceRecord, replace?: boolean): SourceRecord;
|
|
21
22
|
/**
|
|
22
23
|
* @brief Removes a registered source.
|
|
23
24
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/sources/register.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAM5F;AAED
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/sources/register.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAM5F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,UAAQ,GAAG,YAAY,CAKrI;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,YAAY,CAKrG"}
|
package/dist/sources/register.js
CHANGED
|
@@ -21,15 +21,16 @@ export function listSources(record, builtins) {
|
|
|
21
21
|
* @param name - Name to register under. Must match `SourceNameSchema`.
|
|
22
22
|
* @param spec - Where the source is read from.
|
|
23
23
|
* @param builtins - Sources shipped with the installer. Their names cannot be registered.
|
|
24
|
+
* @param replace - Point an already registered name at `spec` instead of refusing it.
|
|
24
25
|
* @returns A new record with the source added.
|
|
25
|
-
* @throws {Error} When the name is invalid, belongs to a built-in source, or is already registered.
|
|
26
|
+
* @throws {Error} When the name is invalid, belongs to a built-in source, or is already registered and `replace` is not set.
|
|
26
27
|
*/
|
|
27
|
-
export function addSource(record, name, spec, builtins) {
|
|
28
|
+
export function addSource(record, name, spec, builtins, replace = false) {
|
|
28
29
|
const valid = SourceNameSchema.parse(name);
|
|
29
30
|
if (builtins[valid] !== undefined)
|
|
30
31
|
throw new Error(`"${valid}" is a built-in source and is always registered`);
|
|
31
|
-
if (record[valid] !== undefined)
|
|
32
|
-
throw new Error(`a source named "${valid}" is already registered`);
|
|
32
|
+
if (record[valid] !== undefined && !replace)
|
|
33
|
+
throw new Error(`a source named "${valid}" is already registered: pass -f to point it at the new source`);
|
|
33
34
|
return { ...record, [valid]: SourceSpecSchema.parse(spec) };
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/sources/register.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG7D;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,QAAsB;IACtE,MAAM,MAAM,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,OAAO;QACL,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3H,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/sources/register.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG7D;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,QAAsB;IACtE,MAAM,MAAM,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,OAAO;QACL,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3H,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,MAAoB,EAAE,IAAY,EAAE,IAAgB,EAAE,QAAsB,EAAE,OAAO,GAAG,KAAK;IACrH,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,iDAAiD,CAAC,CAAC;IAC/G,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,gEAAgE,CAAC,CAAC;IACvJ,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,MAAoB,EAAE,IAAY,EAAE,QAAsB;IACrF,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,8CAA8C,CAAC,CAAC;IAC1G,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,iBAAiB,CAAC,CAAC;IAC3F,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC"}
|