@g3nomaly/core 0.3.1 → 0.3.2
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/dist/cli/commands/add.d.ts +24 -4
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/add.js +37 -14
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/conflict.d.ts +52 -0
- package/dist/cli/commands/conflict.d.ts.map +1 -0
- package/dist/cli/commands/conflict.js +88 -0
- package/dist/cli/commands/conflict.js.map +1 -0
- package/dist/cli/commands/installFromSources.d.ts +42 -13
- package/dist/cli/commands/installFromSources.d.ts.map +1 -1
- package/dist/cli/commands/installFromSources.js +68 -19
- package/dist/cli/commands/installFromSources.js.map +1 -1
- package/dist/cli/commands/ls.d.ts +13 -3
- package/dist/cli/commands/ls.d.ts.map +1 -1
- package/dist/cli/commands/ls.js +26 -6
- package/dist/cli/commands/ls.js.map +1 -1
- package/dist/cli/commands/remove.d.ts +7 -1
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +15 -1
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/sources.d.ts +34 -10
- package/dist/cli/commands/sources.d.ts.map +1 -1
- package/dist/cli/commands/sources.js +17 -3
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/update.d.ts +11 -4
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +32 -14
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/dialogue.d.ts +65 -13
- package/dist/cli/dialogue.d.ts.map +1 -1
- package/dist/cli/dialogue.js +46 -7
- 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 +11 -3
- package/dist/cli/installDialogues.d.ts.map +1 -1
- package/dist/cli/installDialogues.js +22 -5
- package/dist/cli/installDialogues.js.map +1 -1
- package/dist/cli/pick.d.ts +11 -2
- package/dist/cli/pick.d.ts.map +1 -1
- package/dist/cli/pick.js +11 -2
- package/dist/cli/pick.js.map +1 -1
- package/dist/cli/report.d.ts +32 -8
- package/dist/cli/report.d.ts.map +1 -1
- package/dist/cli/report.js +26 -5
- package/dist/cli/report.js.map +1 -1
- package/dist/cli/theme.d.ts +4 -0
- package/dist/cli/theme.d.ts.map +1 -1
- package/dist/cli/theme.js +4 -0
- package/dist/cli/theme.js.map +1 -1
- package/dist/cli/types.d.ts +56 -5
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/config/config.d.ts +32 -7
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +37 -7
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +58 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -10
- package/dist/config/types.js.map +1 -1
- package/dist/hash/hash.d.ts +6 -8
- package/dist/hash/hash.d.ts.map +1 -1
- package/dist/hash/hash.js +7 -8
- package/dist/hash/hash.js.map +1 -1
- package/dist/hash/index.d.ts.map +1 -1
- package/dist/hash/index.js +1 -0
- package/dist/hash/index.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/installer/classify.d.ts +27 -1
- package/dist/installer/classify.d.ts.map +1 -1
- package/dist/installer/classify.js +36 -1
- package/dist/installer/classify.js.map +1 -1
- package/dist/installer/files.d.ts +10 -6
- package/dist/installer/files.d.ts.map +1 -1
- package/dist/installer/files.js +4 -3
- package/dist/installer/files.js.map +1 -1
- package/dist/installer/index.d.ts +1 -1
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +1 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/install.d.ts +18 -6
- package/dist/installer/install.d.ts.map +1 -1
- package/dist/installer/install.js +20 -7
- package/dist/installer/install.js.map +1 -1
- package/dist/installer/io.d.ts +6 -1
- package/dist/installer/io.d.ts.map +1 -1
- package/dist/installer/io.js +6 -1
- package/dist/installer/io.js.map +1 -1
- package/dist/installer/manifest.d.ts +29 -19
- package/dist/installer/manifest.d.ts.map +1 -1
- package/dist/installer/manifest.js +20 -10
- package/dist/installer/manifest.js.map +1 -1
- package/dist/installer/manifestSources.d.ts +18 -7
- package/dist/installer/manifestSources.d.ts.map +1 -1
- package/dist/installer/manifestSources.js +18 -7
- package/dist/installer/manifestSources.js.map +1 -1
- package/dist/installer/marketplace.d.ts +24 -12
- package/dist/installer/marketplace.d.ts.map +1 -1
- package/dist/installer/marketplace.js +18 -10
- package/dist/installer/marketplace.js.map +1 -1
- package/dist/installer/origin.d.ts +23 -7
- package/dist/installer/origin.d.ts.map +1 -1
- package/dist/installer/origin.js +14 -7
- package/dist/installer/origin.js.map +1 -1
- package/dist/installer/remove.d.ts +17 -5
- package/dist/installer/remove.d.ts.map +1 -1
- package/dist/installer/remove.js +17 -5
- package/dist/installer/remove.js.map +1 -1
- package/dist/installer/resolve.d.ts +80 -31
- package/dist/installer/resolve.d.ts.map +1 -1
- package/dist/installer/resolve.js +96 -29
- package/dist/installer/resolve.js.map +1 -1
- package/dist/installer/sourceRegistry.d.ts +59 -22
- package/dist/installer/sourceRegistry.d.ts.map +1 -1
- package/dist/installer/sourceRegistry.js +25 -10
- package/dist/installer/sourceRegistry.js.map +1 -1
- package/dist/installer/types.d.ts +72 -19
- package/dist/installer/types.d.ts.map +1 -1
- package/dist/installer/types.js +18 -8
- package/dist/installer/types.js.map +1 -1
- package/dist/registry/index.d.ts +0 -4
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -4
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/registry.handlers.d.ts +7 -0
- package/dist/registry/registry.handlers.d.ts.map +1 -1
- package/dist/registry/registry.handlers.js.map +1 -1
- package/dist/registry/registry.io.d.ts +23 -7
- package/dist/registry/registry.io.d.ts.map +1 -1
- package/dist/registry/registry.io.js +37 -14
- package/dist/registry/registry.io.js.map +1 -1
- package/dist/registry/registry.mutations.d.ts +10 -3
- package/dist/registry/registry.mutations.d.ts.map +1 -1
- package/dist/registry/registry.mutations.js +10 -3
- package/dist/registry/registry.mutations.js.map +1 -1
- package/dist/registry/registry.selectors.d.ts +41 -11
- package/dist/registry/registry.selectors.d.ts.map +1 -1
- package/dist/registry/registry.selectors.js +41 -11
- package/dist/registry/registry.selectors.js.map +1 -1
- package/dist/registry/registry.store.d.ts +22 -9
- package/dist/registry/registry.store.d.ts.map +1 -1
- package/dist/registry/registry.store.js +12 -3
- package/dist/registry/registry.store.js.map +1 -1
- package/dist/registry/registry.template.d.ts +12 -6
- package/dist/registry/registry.template.d.ts.map +1 -1
- package/dist/registry/registry.template.js +13 -6
- package/dist/registry/registry.template.js.map +1 -1
- package/dist/registry/types.d.ts +17 -3
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/registry/types.js +16 -6
- package/dist/registry/types.js.map +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +1 -0
- package/dist/security/index.js.map +1 -1
- package/dist/security/securityParser.d.ts +9 -8
- package/dist/security/securityParser.d.ts.map +1 -1
- package/dist/security/securityParser.js +12 -22
- package/dist/security/securityParser.js.map +1 -1
- package/dist/security/securityWorker.d.ts +11 -0
- package/dist/security/securityWorker.d.ts.map +1 -1
- package/dist/security/securityWorker.js +17 -38
- package/dist/security/securityWorker.js.map +1 -1
- package/dist/sources/checkout.d.ts +10 -4
- package/dist/sources/checkout.d.ts.map +1 -1
- package/dist/sources/checkout.js +10 -4
- package/dist/sources/checkout.js.map +1 -1
- package/dist/sources/git.d.ts +5 -3
- package/dist/sources/git.d.ts.map +1 -1
- package/dist/sources/git.js +5 -3
- package/dist/sources/git.js.map +1 -1
- package/dist/sources/local.d.ts +6 -4
- package/dist/sources/local.d.ts.map +1 -1
- package/dist/sources/local.js +6 -4
- package/dist/sources/local.js.map +1 -1
- package/dist/sources/npm.d.ts +10 -7
- package/dist/sources/npm.d.ts.map +1 -1
- package/dist/sources/npm.js +49 -15
- package/dist/sources/npm.js.map +1 -1
- package/dist/sources/parse.d.ts +24 -16
- package/dist/sources/parse.d.ts.map +1 -1
- package/dist/sources/parse.js +40 -18
- package/dist/sources/parse.js.map +1 -1
- package/dist/sources/process.d.ts +10 -7
- package/dist/sources/process.d.ts.map +1 -1
- package/dist/sources/process.js +10 -7
- package/dist/sources/process.js.map +1 -1
- package/dist/sources/register.d.ts +20 -5
- package/dist/sources/register.d.ts.map +1 -1
- package/dist/sources/register.js +20 -5
- package/dist/sources/register.js.map +1 -1
- package/dist/sources/types.d.ts +43 -8
- package/dist/sources/types.d.ts.map +1 -1
- package/dist/sources/types.js +21 -4
- package/dist/sources/types.js.map +1 -1
- package/dist/utils/errors.d.ts +6 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +6 -1
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/merge.d.ts +8 -2
- package/dist/utils/merge.d.ts.map +1 -1
- package/dist/utils/merge.js +9 -2
- package/dist/utils/merge.js.map +1 -1
- package/dist/utils/packageMeta.d.ts +16 -2
- package/dist/utils/packageMeta.d.ts.map +1 -1
- package/dist/utils/packageMeta.js +6 -2
- package/dist/utils/packageMeta.js.map +1 -1
- package/dist/utils/paths.d.ts +16 -5
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +16 -5
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/prompt.d.ts +6 -1
- package/dist/utils/prompt.d.ts.map +1 -1
- package/dist/utils/prompt.js +6 -1
- package/dist/utils/prompt.js.map +1 -1
- package/dist/utils/version.d.ts +7 -2
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +40 -3
- package/dist/utils/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
// packages/core/src/installer/classify.ts
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { FileState } from "./types";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* @brief Maps each file path of a manifest entry to the hash it was installed with.
|
|
6
|
+
*
|
|
7
|
+
* @param entry - Manifest entry to read. `undefined` when the package was never installed.
|
|
8
|
+
* @returns `path → hash` map, e.g. `{ "SKILL.md": "a1b2" }`. Empty when no file has a hash.
|
|
9
|
+
*/
|
|
5
10
|
export function recordedHashes(entry) {
|
|
6
11
|
const map = {};
|
|
7
12
|
for (const file of entry?.files ?? []) {
|
|
@@ -10,6 +15,15 @@ export function recordedHashes(entry) {
|
|
|
10
15
|
}
|
|
11
16
|
return map;
|
|
12
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* @brief Decides a file's state from what is on disk, what was recorded and what the package ships now.
|
|
20
|
+
*
|
|
21
|
+
* @param exists - Whether the file is on disk.
|
|
22
|
+
* @param currentHash - Hash of the file on disk. `null` when it does not exist.
|
|
23
|
+
* @param recordedHash - Hash recorded at install time. `undefined` when the file was never installed.
|
|
24
|
+
* @param latestHash - Hash of the package's current version of the file.
|
|
25
|
+
* @returns State that decides whether the file is written, kept or flagged as a conflict.
|
|
26
|
+
*/
|
|
13
27
|
function resolveState(exists, currentHash, recordedHash, latestHash) {
|
|
14
28
|
if (!exists)
|
|
15
29
|
return FileState.SafeUpdate;
|
|
@@ -26,6 +40,17 @@ function resolveState(exists, currentHash, recordedHash, latestHash) {
|
|
|
26
40
|
return FileState.UserOnly;
|
|
27
41
|
return FileState.Conflict;
|
|
28
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* @brief Classifies one file against its copy on disk and the install-time record.
|
|
45
|
+
*
|
|
46
|
+
* @param file - Registry entry of the file. Its `hash` is the package's current hash, or `undefined` to resolve it.
|
|
47
|
+
* @param installDir - Absolute folder the package is installed into.
|
|
48
|
+
* @param recordedHash - Hash recorded in the user manifest at install time. `undefined` when never installed.
|
|
49
|
+
* @param io - Filesystem boundary used to test for the file and hash it.
|
|
50
|
+
* @param resolveLatestHash - Looks up the package hash when `file.hash` is not set.
|
|
51
|
+
* @returns Classification that `applyClassifications` consumes.
|
|
52
|
+
* @throws {Error} When `file` has no hash and no `resolveLatestHash` is given.
|
|
53
|
+
*/
|
|
29
54
|
export async function classifyFile(file, installDir, recordedHash, io, resolveLatestHash) {
|
|
30
55
|
const destPath = path.join(installDir, file.path);
|
|
31
56
|
const latestHash = file.hash ?? (await resolveLatestHash?.(file));
|
|
@@ -37,6 +62,16 @@ export async function classifyFile(file, installDir, recordedHash, io, resolveLa
|
|
|
37
62
|
const state = resolveState(exists, currentHash, recordedHash, latestHash);
|
|
38
63
|
return { file, destPath, state, exists, currentHash, recordedHash, latestHash };
|
|
39
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* @brief Classifies every file in a registry entry, in the order given.
|
|
67
|
+
*
|
|
68
|
+
* @param files - Registry entries to classify.
|
|
69
|
+
* @param installDir - Absolute folder the package is installed into.
|
|
70
|
+
* @param recorded - Install-time hashes by file path, e.g. `{ "SKILL.md": "a1b2" }`. Missing paths were never installed.
|
|
71
|
+
* @param io - Filesystem boundary used to test for each file and hash it.
|
|
72
|
+
* @param resolveLatestHash - Looks up the package hash for files whose `hash` is not set.
|
|
73
|
+
* @returns One classification per file, in the same order.
|
|
74
|
+
*/
|
|
40
75
|
export async function classifyFiles(files, installDir, recorded, io, resolveLatestHash) {
|
|
41
76
|
const classifications = [];
|
|
42
77
|
for (const file of files) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/installer/classify.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/installer/classify.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGnC;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAmD;IAChF,MAAM,GAAG,GAA2B,EAAE,CAAA;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAA;IAC3C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY,CACnB,MAAe,EACf,WAA0B,EAC1B,YAAgC,EAChC,UAAkB;IAElB,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC,UAAU,CAAA;IACxC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAA;IAC7E,CAAC;IACD,MAAM,YAAY,GAAM,WAAW,KAAK,YAAY,CAAA;IACpD,MAAM,eAAe,GAAG,UAAU,KAAM,YAAY,CAAA;IACpD,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC,QAAQ,CAAA;IAChE,IAAI,CAAC,YAAY;QAAsB,OAAO,SAAS,CAAC,UAAU,CAAA;IAClE,IAAI,CAAC,eAAe;QAAmB,OAAO,SAAS,CAAC,QAAQ,CAAA;IAChE,OAAO,SAAS,CAAC,QAAQ,CAAA;AAC3B,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAO,EACP,UAAkB,EAClB,YAAgC,EAChC,EAAe,EACf,iBAAgD;IAEhD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACjD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IACjE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,qCAAqC,CAAC,CAAA;IACjF,CAAC;IACD,MAAM,MAAM,GAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACvC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/D,MAAM,KAAK,GAAS,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC,CAAA;IAC/E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,CAAA;AACjF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAmB,EACnB,UAAkB,EAClB,QAA4C,EAC5C,EAAe,EACf,iBAAgD;IAEhD,MAAM,eAAe,GAA4B,EAAE,CAAA;IACnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,eAAe,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAA;IACxG,CAAC;IACD,OAAO,eAAe,CAAA;AACxB,CAAC"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* @brief What `listFiles` leaves out. `node_modules` and `.git` are always skipped.
|
|
3
|
+
*
|
|
4
|
+
* @property skipDirs - Folder names, or folder paths relative to the listed root, e.g. `tests` or `.claude-plugin/types`.
|
|
5
|
+
* @property skipFiles - Tested against each file name, e.g. `/\.test\.tsx?$/`.
|
|
6
|
+
*/
|
|
2
7
|
export interface FileFilter {
|
|
3
|
-
/** Folder names, or folder paths relative to the listed root, e.g. `tests` or `.claude-plugin/types` */
|
|
4
8
|
skipDirs?: readonly string[];
|
|
5
|
-
/** Tested against each file name, e.g. `/\.test\.tsx?$/` */
|
|
6
9
|
skipFiles?: RegExp;
|
|
7
10
|
}
|
|
8
11
|
/**
|
|
9
|
-
*
|
|
10
|
-
* folders and files `filter` names.
|
|
12
|
+
* @brief Lists every file below a folder, leaving out the folders and files `filter` names.
|
|
11
13
|
*
|
|
12
|
-
* @param dir - Absolute folder to list
|
|
14
|
+
* @param dir - Absolute folder to list.
|
|
15
|
+
* @param filter - Folders and files to skip.
|
|
16
|
+
* @returns Paths relative to `dir`, sorted.
|
|
13
17
|
*/
|
|
14
18
|
export declare function listFiles(dir: string, filter?: FileFilter): string[];
|
|
15
19
|
//# sourceMappingURL=files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/installer/files.ts"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/installer/files.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAG,SAAS,MAAM,EAAE,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,UAAe,GAAG,MAAM,EAAE,CAUxE"}
|
package/dist/installer/files.js
CHANGED
|
@@ -3,10 +3,11 @@ import fs from "node:fs";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
const ALWAYS_SKIPPED = ["node_modules", ".git"];
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
* folders and files `filter` names.
|
|
6
|
+
* @brief Lists every file below a folder, leaving out the folders and files `filter` names.
|
|
8
7
|
*
|
|
9
|
-
* @param dir - Absolute folder to list
|
|
8
|
+
* @param dir - Absolute folder to list.
|
|
9
|
+
* @param filter - Folders and files to skip.
|
|
10
|
+
* @returns Paths relative to `dir`, sorted.
|
|
10
11
|
*/
|
|
11
12
|
export function listFiles(dir, filter = {}) {
|
|
12
13
|
const skipDirs = new Set([...ALWAYS_SKIPPED, ...(filter.skipDirs ?? [])]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/installer/files.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/installer/files.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAa5B,MAAM,cAAc,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,MAAM,GAAe,EAAE;IAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACzE,MAAM,IAAI,GAAG,CAAC,OAAe,EAAY,EAAE,CACzC,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,GAAG,GAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvF,OAAO,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IACJ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACzB,CAAC"}
|
|
@@ -14,6 +14,6 @@ export type { InstallManifest } from "./manifest";
|
|
|
14
14
|
export { manifestSources, registerSource, unregisterSource } from "./manifestSources";
|
|
15
15
|
export { loadSourceRegistry, offers, offerRegistry, entrySource } from "./sourceRegistry";
|
|
16
16
|
export type { SourceRegistry, SourceEntries, SourceOffer, ReadSource, FailedSource } from "./sourceRegistry";
|
|
17
|
-
export { parseRequest, formatRequest, resolveDependencies, resolveRequests, resolveInstalled, resolveUpdates, installedOrigins } from "./resolve";
|
|
17
|
+
export { parseRequest, formatRequest, resolveDependencies, resolveRequests, resolveInstalled, resolveUpdates, installedOrigins, installedForks } from "./resolve";
|
|
18
18
|
export type { EntryRequest, Resolution, ResolvedDependencies } from "./resolve";
|
|
19
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC3F,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC9G,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACzF,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC5G,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC3F,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAC9G,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACzF,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC5G,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACjK,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/installer/index.js
CHANGED
|
@@ -10,5 +10,5 @@ export { MANIFEST_DIRS, manifestFile, readMarketplace, resolveInside } from "./m
|
|
|
10
10
|
export { installManifestSchema, loadInstallManifest, installedEntries, saveInstallManifest } from "./manifest";
|
|
11
11
|
export { manifestSources, registerSource, unregisterSource } from "./manifestSources";
|
|
12
12
|
export { loadSourceRegistry, offers, offerRegistry, entrySource } from "./sourceRegistry";
|
|
13
|
-
export { parseRequest, formatRequest, resolveDependencies, resolveRequests, resolveInstalled, resolveUpdates, installedOrigins } from "./resolve";
|
|
13
|
+
export { parseRequest, formatRequest, resolveDependencies, resolveRequests, resolveInstalled, resolveUpdates, installedOrigins, installedForks } from "./resolve";
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE3F,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAE9G,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEzF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE/D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE3F,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAE9G,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEzF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import type { BaseFileEntry } from "../registry/types";
|
|
2
2
|
import type { ApplyOptions, ApplyResult, FileClassification, FileSource, InstallerIO } from "./types";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* @brief Builds a `FileSource` that copies each file from the package source tree.
|
|
5
|
+
*
|
|
6
|
+
* @param resolveSourcePath - Maps a file's relative path to its absolute path in the source tree.
|
|
7
|
+
* @returns Source that returns a `copy` content for every file.
|
|
8
|
+
*/
|
|
4
9
|
export declare function copySource<F extends BaseFileEntry>(resolveSourcePath: (relPath: string) => string): FileSource<F>;
|
|
5
10
|
/**
|
|
6
|
-
* Writes the files an install
|
|
7
|
-
*
|
|
8
|
-
* `
|
|
9
|
-
* `
|
|
10
|
-
*
|
|
11
|
+
* @brief Writes the files an install or update decision allows and reports the result per file.
|
|
12
|
+
*
|
|
13
|
+
* `SafeUpdate` files are always written. `UserOnly` and `Conflict` files are written only when
|
|
14
|
+
* `opts.decision` is `Overwrite` or `opts.force` is set. The result's `files` is what the caller
|
|
15
|
+
* registers in the user manifest. A kept file keeps the hash it was installed with, so its local
|
|
16
|
+
* change stays visible to every later run instead of becoming the new baseline.
|
|
17
|
+
*
|
|
18
|
+
* @param classifications - Per-file states from `classifyFiles`.
|
|
19
|
+
* @param source - Produces each file's content when it is written.
|
|
20
|
+
* @param opts - Conflict decision, `force` and `dryRun` flags.
|
|
21
|
+
* @param io - Filesystem boundary used to write and hash files.
|
|
22
|
+
* @returns Written, kept and missing-source paths, and the manifest entries to register.
|
|
11
23
|
*/
|
|
12
24
|
export declare function applyClassifications<F extends BaseFileEntry>(classifications: readonly FileClassification<F>[], source: FileSource<F>, opts: ApplyOptions, io: InstallerIO): Promise<ApplyResult<F>>;
|
|
13
25
|
//# sourceMappingURL=install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/installer/install.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErG
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/installer/install.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErG;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,aAAa,EAAE,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAEjH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,aAAa,EAChE,eAAe,EAAE,SAAS,kBAAkB,CAAC,CAAC,CAAC,EAAE,EACjD,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,WAAW,GACd,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CA4CzB"}
|
|
@@ -1,16 +1,28 @@
|
|
|
1
1
|
// packages/core/src/installer/install.ts
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { ConflictDecision, FileState } from "./types";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* @brief Builds a `FileSource` that copies each file from the package source tree.
|
|
6
|
+
*
|
|
7
|
+
* @param resolveSourcePath - Maps a file's relative path to its absolute path in the source tree.
|
|
8
|
+
* @returns Source that returns a `copy` content for every file.
|
|
9
|
+
*/
|
|
5
10
|
export function copySource(resolveSourcePath) {
|
|
6
11
|
return (file) => ({ kind: "copy", sourcePath: resolveSourcePath(file.path) });
|
|
7
12
|
}
|
|
8
13
|
/**
|
|
9
|
-
* Writes the files an install
|
|
10
|
-
*
|
|
11
|
-
* `
|
|
12
|
-
* `
|
|
13
|
-
*
|
|
14
|
+
* @brief Writes the files an install or update decision allows and reports the result per file.
|
|
15
|
+
*
|
|
16
|
+
* `SafeUpdate` files are always written. `UserOnly` and `Conflict` files are written only when
|
|
17
|
+
* `opts.decision` is `Overwrite` or `opts.force` is set. The result's `files` is what the caller
|
|
18
|
+
* registers in the user manifest. A kept file keeps the hash it was installed with, so its local
|
|
19
|
+
* change stays visible to every later run instead of becoming the new baseline.
|
|
20
|
+
*
|
|
21
|
+
* @param classifications - Per-file states from `classifyFiles`.
|
|
22
|
+
* @param source - Produces each file's content when it is written.
|
|
23
|
+
* @param opts - Conflict decision, `force` and `dryRun` flags.
|
|
24
|
+
* @param io - Filesystem boundary used to write and hash files.
|
|
25
|
+
* @returns Written, kept and missing-source paths, and the manifest entries to register.
|
|
14
26
|
*/
|
|
15
27
|
export async function applyClassifications(classifications, source, opts, io) {
|
|
16
28
|
const result = { written: [], kept: [], missingSource: [], files: [] };
|
|
@@ -51,7 +63,8 @@ export async function applyClassifications(classifications, source, opts, io) {
|
|
|
51
63
|
}
|
|
52
64
|
else {
|
|
53
65
|
result.kept.push(cl.file.path);
|
|
54
|
-
|
|
66
|
+
// An untracked file has no install-time hash; the source version is the baseline it differs from.
|
|
67
|
+
result.files.push({ ...cl.file, hash: cl.recordedHash ?? cl.latestHash });
|
|
55
68
|
}
|
|
56
69
|
break;
|
|
57
70
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/installer/install.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGrD
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/installer/install.ts"],"names":[],"mappings":"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"}
|
package/dist/installer/io.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import type { InstallerIO } from "./types";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* @brief Builds the real-filesystem `InstallerIO`, with any field replaced by `overrides`.
|
|
4
|
+
*
|
|
5
|
+
* @param overrides - Fields to replace, such as stubs in tests. Empty by default.
|
|
6
|
+
* @returns Filesystem boundary backed by `node:fs` and `hashFile`, except for the overridden fields.
|
|
7
|
+
*/
|
|
3
8
|
export declare function createInstallerIO(overrides?: Partial<InstallerIO>): InstallerIO;
|
|
4
9
|
//# sourceMappingURL=io.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/installer/io.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C
|
|
1
|
+
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/installer/io.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CAYnF"}
|
package/dist/installer/io.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
// packages/core/src/installer/io.ts
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import { hashFile } from "../hash/hash";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* @brief Builds the real-filesystem `InstallerIO`, with any field replaced by `overrides`.
|
|
6
|
+
*
|
|
7
|
+
* @param overrides - Fields to replace, such as stubs in tests. Empty by default.
|
|
8
|
+
* @returns Filesystem boundary backed by `node:fs` and `hashFile`, except for the overridden fields.
|
|
9
|
+
*/
|
|
5
10
|
export function createInstallerIO(overrides = {}) {
|
|
6
11
|
return {
|
|
7
12
|
exists: (path) => fs.existsSync(path),
|
package/dist/installer/io.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/installer/io.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGvC
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/installer/io.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGvC;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAS,GAAyB,EAAE;IACpE,OAAO;QACL,MAAM,EAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QACzC,SAAS,EAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;QAC/D,QAAQ,EAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA,CAAC,CAAC;QACzD,SAAS,EAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC;QAC1E,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;QACzC,OAAO,EAAK,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;QACxC,SAAS,EAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;QAC5D,QAAQ;QACR,GAAG,SAAS;KACb,CAAA;AACH,CAAC"}
|
|
@@ -3,23 +3,28 @@ import { type RegistryStore } from "../registry/registry.store";
|
|
|
3
3
|
import type { BaseRegistryEntry } from "../registry/types";
|
|
4
4
|
import { type SourceRecord } from "../sources/types";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
* the entries installed into it, as `{ "sources": {...}, "entries": {...} }`
|
|
8
|
-
* on disk.
|
|
6
|
+
* @brief Install manifest: the sources registered for an install target and the entries installed into it.
|
|
9
7
|
*
|
|
10
|
-
* Created by `loadInstallManifest` in each
|
|
11
|
-
* (`skills.json`, `mods.json`, the g3nui manifest). The installer changes
|
|
12
|
-
* `sources` directly and hands `store` to the core `add`, `update` and
|
|
13
|
-
* `
|
|
8
|
+
* On disk it is `{ "sources": {...}, "entries": {...} }`. Created by `loadInstallManifest` in each
|
|
9
|
+
* installer's project setup (`skills.json`, `mods.json`, the g3nui manifest). The installer changes
|
|
10
|
+
* `sources` directly and hands `store` to the core `add`, `update` and `remove` commands.
|
|
11
|
+
* `saveInstallManifest` writes both back.
|
|
12
|
+
*
|
|
13
|
+
* @property filePath - Absolute path of the file, e.g. `/home/me/app/.claude/skills.json`.
|
|
14
|
+
* @property sources - Sources registered for this target, by name.
|
|
15
|
+
* @property store - Installed entries by key.
|
|
14
16
|
*/
|
|
15
17
|
export interface InstallManifest {
|
|
16
|
-
/** Absolute path of the file, e.g. `/home/me/app/.claude/skills.json` */
|
|
17
18
|
filePath: string;
|
|
18
19
|
sources: SourceRecord;
|
|
19
|
-
/** Installed entries by key */
|
|
20
20
|
store: RegistryStore<BaseRegistryEntry>;
|
|
21
21
|
}
|
|
22
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* @brief Builds the zod schema of a manifest file whose entries match `entrySchema`.
|
|
24
|
+
*
|
|
25
|
+
* @param entrySchema - Schema each value of `entries` must match.
|
|
26
|
+
* @returns Strict object schema with `sources` and `entries`, both defaulting to empty.
|
|
27
|
+
*/
|
|
23
28
|
export declare function installManifestSchema<S extends z.ZodType>(entrySchema: S): z.ZodObject<{
|
|
24
29
|
sources: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
25
30
|
kind: z.ZodLiteral<"git">;
|
|
@@ -36,24 +41,29 @@ export declare function installManifestSchema<S extends z.ZodType>(entrySchema:
|
|
|
36
41
|
entries: z.ZodDefault<z.ZodRecord<z.ZodString, S>>;
|
|
37
42
|
}, z.core.$strict>;
|
|
38
43
|
/**
|
|
39
|
-
* Reads a manifest file and checks every entry against `entrySchema
|
|
40
|
-
* missing file reads as no sources and no entries.
|
|
44
|
+
* @brief Reads a manifest file and checks every entry against `entrySchema`. A missing file reads as no sources and no entries.
|
|
41
45
|
*
|
|
42
|
-
* @param filePath - Absolute path of the manifest
|
|
43
|
-
* @
|
|
46
|
+
* @param filePath - Absolute path of the manifest, e.g. `/home/me/app/.claude/skills.json`.
|
|
47
|
+
* @param entrySchema - Schema each installed entry must match.
|
|
48
|
+
* @returns The manifest, with its entries loaded into `store`.
|
|
49
|
+
* @throws {Error} Naming the file when it is not JSON or does not match the schema.
|
|
44
50
|
*/
|
|
45
51
|
export declare function loadInstallManifest(filePath: string, entrySchema: z.ZodType<BaseRegistryEntry>): InstallManifest;
|
|
46
52
|
/**
|
|
47
|
-
*
|
|
53
|
+
* @brief Reads the installed entries of a manifest, each checked against `entrySchema`.
|
|
48
54
|
*
|
|
49
|
-
* @
|
|
55
|
+
* @param manifest - Manifest whose `store` is read.
|
|
56
|
+
* @param entrySchema - Schema each entry must match.
|
|
57
|
+
* @returns Entries by key.
|
|
58
|
+
* @throws {ZodError} When an entry the install commands wrote does not match the schema.
|
|
50
59
|
*/
|
|
51
60
|
export declare function installedEntries<T extends BaseRegistryEntry>(manifest: InstallManifest, entrySchema: z.ZodType<T>): Record<string, T>;
|
|
52
61
|
/**
|
|
53
|
-
* Writes sources and entries back
|
|
54
|
-
* entry against `entrySchema`.
|
|
62
|
+
* @brief Writes sources and entries back to `manifest.filePath`, each sorted by name, after checking every entry against `entrySchema`.
|
|
55
63
|
*
|
|
56
|
-
* @
|
|
64
|
+
* @param manifest - Manifest to write.
|
|
65
|
+
* @param entrySchema - Schema each entry must match.
|
|
66
|
+
* @throws {ZodError} When an entry does not match the schema. Nothing is written then.
|
|
57
67
|
*/
|
|
58
68
|
export declare function saveInstallManifest(manifest: InstallManifest, entrySchema: z.ZodType<BaseRegistryEntry>): void;
|
|
59
69
|
//# sourceMappingURL=manifest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/installer/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGxE
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/installer/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAEpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGxE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAG,YAAY,CAAA;IACtB,KAAK,EAAK,aAAa,CAAC,iBAAiB,CAAC,CAAA;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;;;;;;;;;;;;;;mBAKxE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,eAAe,CAehH;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAErI;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAK9G"}
|
|
@@ -6,7 +6,12 @@ import { createRegistryStore } from "../registry/registry.store";
|
|
|
6
6
|
import { entries } from "../registry/registry.selectors";
|
|
7
7
|
import { SourceRecordSchema } from "../sources/types";
|
|
8
8
|
import { errorMessage } from "../utils/errors";
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* @brief Builds the zod schema of a manifest file whose entries match `entrySchema`.
|
|
11
|
+
*
|
|
12
|
+
* @param entrySchema - Schema each value of `entries` must match.
|
|
13
|
+
* @returns Strict object schema with `sources` and `entries`, both defaulting to empty.
|
|
14
|
+
*/
|
|
10
15
|
export function installManifestSchema(entrySchema) {
|
|
11
16
|
return z.strictObject({
|
|
12
17
|
sources: SourceRecordSchema.default({}),
|
|
@@ -14,11 +19,12 @@ export function installManifestSchema(entrySchema) {
|
|
|
14
19
|
});
|
|
15
20
|
}
|
|
16
21
|
/**
|
|
17
|
-
* Reads a manifest file and checks every entry against `entrySchema
|
|
18
|
-
* missing file reads as no sources and no entries.
|
|
22
|
+
* @brief Reads a manifest file and checks every entry against `entrySchema`. A missing file reads as no sources and no entries.
|
|
19
23
|
*
|
|
20
|
-
* @param filePath - Absolute path of the manifest
|
|
21
|
-
* @
|
|
24
|
+
* @param filePath - Absolute path of the manifest, e.g. `/home/me/app/.claude/skills.json`.
|
|
25
|
+
* @param entrySchema - Schema each installed entry must match.
|
|
26
|
+
* @returns The manifest, with its entries loaded into `store`.
|
|
27
|
+
* @throws {Error} Naming the file when it is not JSON or does not match the schema.
|
|
22
28
|
*/
|
|
23
29
|
export function loadInstallManifest(filePath, entrySchema) {
|
|
24
30
|
const store = createRegistryStore();
|
|
@@ -38,18 +44,22 @@ export function loadInstallManifest(filePath, entrySchema) {
|
|
|
38
44
|
return { filePath, sources: parsed.data.sources, store };
|
|
39
45
|
}
|
|
40
46
|
/**
|
|
41
|
-
*
|
|
47
|
+
* @brief Reads the installed entries of a manifest, each checked against `entrySchema`.
|
|
42
48
|
*
|
|
43
|
-
* @
|
|
49
|
+
* @param manifest - Manifest whose `store` is read.
|
|
50
|
+
* @param entrySchema - Schema each entry must match.
|
|
51
|
+
* @returns Entries by key.
|
|
52
|
+
* @throws {ZodError} When an entry the install commands wrote does not match the schema.
|
|
44
53
|
*/
|
|
45
54
|
export function installedEntries(manifest, entrySchema) {
|
|
46
55
|
return z.record(z.string(), entrySchema).parse(entries(manifest.store));
|
|
47
56
|
}
|
|
48
57
|
/**
|
|
49
|
-
* Writes sources and entries back
|
|
50
|
-
* entry against `entrySchema`.
|
|
58
|
+
* @brief Writes sources and entries back to `manifest.filePath`, each sorted by name, after checking every entry against `entrySchema`.
|
|
51
59
|
*
|
|
52
|
-
* @
|
|
60
|
+
* @param manifest - Manifest to write.
|
|
61
|
+
* @param entrySchema - Schema each entry must match.
|
|
62
|
+
* @throws {ZodError} When an entry does not match the schema. Nothing is written then.
|
|
53
63
|
*/
|
|
54
64
|
export function saveInstallManifest(manifest, entrySchema) {
|
|
55
65
|
const sorted = (record) => Object.fromEntries(Object.entries(record).sort(([a], [b]) => a.localeCompare(b)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/installer/manifest.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAsB,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExD,OAAO,EAAE,kBAAkB,EAAqB,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAoB9C
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/installer/manifest.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,mBAAmB,EAAsB,MAAM,4BAA4B,CAAA;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAExD,OAAO,EAAE,kBAAkB,EAAqB,MAAM,kBAAkB,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAoB9C;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAsB,WAAc;IACvE,OAAO,CAAC,CAAC,YAAY,CAAC;QACpB,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;KACvD,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,WAAyC;IAC7F,MAAM,KAAK,GAAG,mBAAmB,EAAE,CAAA;IACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IAErE,IAAI,GAAY,CAAA;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,uBAAuB,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC1E,CAAC;IACD,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAChE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,sCAAsC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAEtH,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;IACxD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAA8B,QAAyB,EAAE,WAAyB;IAChH,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AACzE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAyB,EAAE,WAAyC;IACtG,MAAM,MAAM,GAAG,CAAI,MAAyB,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClI,MAAM,OAAO,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,EAAE,CAAA;IAC/G,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAClE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AAC9E,CAAC"}
|
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
import type { RegisteredSource, SourceRecord, SourceSpec } from "../sources/types";
|
|
2
2
|
import type { InstallManifest } from "./manifest";
|
|
3
3
|
/**
|
|
4
|
-
* Sources of one or more manifests plus the built-in ones, each name once
|
|
5
|
-
*
|
|
6
|
-
* places, the first manifest's spec is used.
|
|
4
|
+
* @brief Sources of one or more manifests plus the built-in ones, each name once, built-in sources first.
|
|
5
|
+
*
|
|
6
|
+
* When two manifests register one name for different places, the first manifest's spec is used.
|
|
7
|
+
*
|
|
8
|
+
* @param manifests - Manifests to read sources from, in priority order.
|
|
9
|
+
* @param builtins - Sources shipped with the installer.
|
|
10
|
+
* @returns Every source once, by name.
|
|
7
11
|
*/
|
|
8
12
|
export declare function manifestSources(manifests: readonly InstallManifest[], builtins: SourceRecord): RegisteredSource[];
|
|
9
13
|
/**
|
|
10
|
-
* Registers a source in every manifest. Nothing changes unless every manifest accepts it.
|
|
14
|
+
* @brief Registers a source in every manifest. Nothing changes unless every manifest accepts it.
|
|
11
15
|
*
|
|
12
|
-
* @
|
|
16
|
+
* @param manifests - Manifests to register the source in.
|
|
17
|
+
* @param name - Name the source is registered under.
|
|
18
|
+
* @param spec - Where the source is read from.
|
|
19
|
+
* @param builtins - Sources shipped with the installer, which names cannot shadow.
|
|
20
|
+
* @throws {Error} When the name is built in, invalid, or already registered in any manifest.
|
|
13
21
|
*/
|
|
14
22
|
export declare function registerSource(manifests: readonly InstallManifest[], name: string, spec: SourceSpec, builtins: SourceRecord): void;
|
|
15
23
|
/**
|
|
16
|
-
* Unregisters a source from every manifest that has it.
|
|
24
|
+
* @brief Unregisters a source from every manifest that has it.
|
|
17
25
|
*
|
|
18
|
-
* @
|
|
26
|
+
* @param manifests - Manifests to remove the source from.
|
|
27
|
+
* @param name - Name of the source to remove.
|
|
28
|
+
* @param builtins - Sources shipped with the installer, which cannot be removed.
|
|
29
|
+
* @throws {Error} When the name is built in or no manifest registers it.
|
|
19
30
|
*/
|
|
20
31
|
export declare function unregisterSource(manifests: readonly InstallManifest[], name: string, builtins: SourceRecord): void;
|
|
21
32
|
//# sourceMappingURL=manifestSources.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifestSources.d.ts","sourceRoot":"","sources":["../../src/installer/manifestSources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD
|
|
1
|
+
{"version":3,"file":"manifestSources.d.ts","sourceRoot":"","sources":["../../src/installer/manifestSources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,gBAAgB,EAAE,CAMjH;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAGlI;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CAKlH"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
// packages/core/src/installer/manifestSources.ts
|
|
2
2
|
import { addSource, listSources, removeSource } from "../sources/register";
|
|
3
3
|
/**
|
|
4
|
-
* Sources of one or more manifests plus the built-in ones, each name once
|
|
5
|
-
*
|
|
6
|
-
* places, the first manifest's spec is used.
|
|
4
|
+
* @brief Sources of one or more manifests plus the built-in ones, each name once, built-in sources first.
|
|
5
|
+
*
|
|
6
|
+
* When two manifests register one name for different places, the first manifest's spec is used.
|
|
7
|
+
*
|
|
8
|
+
* @param manifests - Manifests to read sources from, in priority order.
|
|
9
|
+
* @param builtins - Sources shipped with the installer.
|
|
10
|
+
* @returns Every source once, by name.
|
|
7
11
|
*/
|
|
8
12
|
export function manifestSources(manifests, builtins) {
|
|
9
13
|
const byName = new Map();
|
|
@@ -15,18 +19,25 @@ export function manifestSources(manifests, builtins) {
|
|
|
15
19
|
return [...byName.values()];
|
|
16
20
|
}
|
|
17
21
|
/**
|
|
18
|
-
* Registers a source in every manifest. Nothing changes unless every manifest accepts it.
|
|
22
|
+
* @brief Registers a source in every manifest. Nothing changes unless every manifest accepts it.
|
|
19
23
|
*
|
|
20
|
-
* @
|
|
24
|
+
* @param manifests - Manifests to register the source in.
|
|
25
|
+
* @param name - Name the source is registered under.
|
|
26
|
+
* @param spec - Where the source is read from.
|
|
27
|
+
* @param builtins - Sources shipped with the installer, which names cannot shadow.
|
|
28
|
+
* @throws {Error} When the name is built in, invalid, or already registered in any manifest.
|
|
21
29
|
*/
|
|
22
30
|
export function registerSource(manifests, name, spec, builtins) {
|
|
23
31
|
const updated = manifests.map((manifest) => addSource(manifest.sources, name, spec, builtins));
|
|
24
32
|
manifests.forEach((manifest, index) => { manifest.sources = updated[index] ?? manifest.sources; });
|
|
25
33
|
}
|
|
26
34
|
/**
|
|
27
|
-
* Unregisters a source from every manifest that has it.
|
|
35
|
+
* @brief Unregisters a source from every manifest that has it.
|
|
28
36
|
*
|
|
29
|
-
* @
|
|
37
|
+
* @param manifests - Manifests to remove the source from.
|
|
38
|
+
* @param name - Name of the source to remove.
|
|
39
|
+
* @param builtins - Sources shipped with the installer, which cannot be removed.
|
|
40
|
+
* @throws {Error} When the name is built in or no manifest registers it.
|
|
30
41
|
*/
|
|
31
42
|
export function unregisterSource(manifests, name, builtins) {
|
|
32
43
|
const holding = manifests.filter((manifest) => manifest.sources[name] !== undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifestSources.js","sourceRoot":"","sources":["../../src/installer/manifestSources.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAI1E
|
|
1
|
+
{"version":3,"file":"manifestSources.js","sourceRoot":"","sources":["../../src/installer/manifestSources.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAI1E;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,SAAqC,EAAE,QAAsB;IAC3F,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAA;IAClD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7H,CAAC;IACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,SAAqC,EAAE,IAAY,EAAE,IAAgB,EAAE,QAAsB;IAC1H,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC9F,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAA,CAAC,CAAC,CAAC,CAAA;AACnG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAqC,EAAE,IAAY,EAAE,QAAsB;IAC1G,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAA;IACpF,8FAA8F;IAC9F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC1D,KAAK,MAAM,QAAQ,IAAI,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;AACnG,CAAC"}
|