@detergent-software/atk 3.0.0-dev.12 → 3.0.0-dev.14
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/build/commands/browse.js +2 -2
- package/build/commands/browse.js.map +1 -1
- package/build/commands/config.d.ts +1 -1
- package/build/commands/config.d.ts.map +1 -1
- package/build/commands/config.js +7 -3
- package/build/commands/config.js.map +1 -1
- package/build/commands/diff.d.ts.map +1 -1
- package/build/commands/diff.js +4 -118
- package/build/commands/diff.js.map +1 -1
- package/build/commands/info.js +2 -2
- package/build/commands/info.js.map +1 -1
- package/build/commands/install.js +2 -2
- package/build/commands/install.js.map +1 -1
- package/build/commands/list.js +2 -2
- package/build/commands/list.js.map +1 -1
- package/build/commands/search.d.ts.map +1 -1
- package/build/commands/search.js +2 -4
- package/build/commands/search.js.map +1 -1
- package/build/components/DiffView.d.ts +0 -2
- package/build/components/DiffView.d.ts.map +1 -1
- package/build/components/DiffView.js +11 -5
- package/build/components/DiffView.js.map +1 -1
- package/build/lib/config.d.ts +15 -20
- package/build/lib/config.d.ts.map +1 -1
- package/build/lib/config.js +37 -51
- package/build/lib/config.js.map +1 -1
- package/build/lib/diagnostics.d.ts +7 -0
- package/build/lib/diagnostics.d.ts.map +1 -1
- package/build/lib/diagnostics.js +54 -34
- package/build/lib/diagnostics.js.map +1 -1
- package/build/lib/diff-command.d.ts +40 -0
- package/build/lib/diff-command.d.ts.map +1 -0
- package/build/lib/diff-command.js +145 -0
- package/build/lib/diff-command.js.map +1 -0
- package/build/lib/diff.d.ts +7 -0
- package/build/lib/diff.d.ts.map +1 -1
- package/build/lib/diff.js +15 -10
- package/build/lib/diff.js.map +1 -1
- package/build/lib/lockfile.d.ts +4 -0
- package/build/lib/lockfile.d.ts.map +1 -1
- package/build/lib/lockfile.js +6 -0
- package/build/lib/lockfile.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,11 +8,17 @@ import { FileStatusIcon } from './StatusBadge.js';
|
|
|
8
8
|
*/
|
|
9
9
|
export default function DiffView({ diffs, installedVersion, latestVersion, name, sameVersion }) {
|
|
10
10
|
const hasChanges = diffs.some((d) => d.status !== 'unchanged');
|
|
11
|
-
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { bold: true, children: ["Diff for ", _jsx(Text, { color: 'cyan', children: name })] }), _jsxs(Text, { children: ["Installed: ", _jsxs(Text, { color: sameVersion ? 'green' : 'red', children: ["v", installedVersion] }), ' → ', "Latest: ", _jsxs(Text, { color: 'green', children: ["v", latestVersion] }), sameVersion && _jsx(Text, { dimColor: true, children: " (same version)" })] }), _jsx(Text, { children: " " }), !hasChanges ? (_jsx(Text, { color: 'green', children: "\u2713 No differences found. Local files match the registry." })) : (_jsxs(_Fragment, { children: [diffs.map((diff, index) => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { bold: true, children: ["Diff for ", _jsx(Text, { color: 'cyan', children: name })] }), _jsxs(Text, { children: ["Installed: ", _jsxs(Text, { color: sameVersion ? 'green' : 'red', children: ["v", installedVersion] }), ' → ', "Latest: ", _jsxs(Text, { color: 'green', children: ["v", latestVersion] }), sameVersion && _jsx(Text, { dimColor: true, children: " (same version)" })] }), _jsx(Text, { dimColor: true, children: '- registry + local' }), _jsx(Text, { children: " " }), !hasChanges ? (_jsx(Text, { color: 'green', children: "\u2713 No differences found. Local files match the registry." })) : (_jsxs(_Fragment, { children: [diffs.map((diff, index) => (_jsx(DiffFileEntry, { diff: diff, isLastEntry: index === diffs.length - 1 }, diff.fileName))), _jsx(Text, { children: " " }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsxs(Text, { bold: true, children: ["atk update ", name] }), " to update to the latest version."] })] }))] }));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Renders a single file entry within the diff view, including its status
|
|
15
|
+
* icon, metadata, and inline diff lines when available.
|
|
16
|
+
*/
|
|
17
|
+
function DiffFileEntry({ diff, isLastEntry }) {
|
|
18
|
+
const hasDiffLines = diff.diffLines && diff.diffLines.length > 0;
|
|
19
|
+
return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [' ', _jsx(FileStatusIcon, { status: diff.status }), " ", diff.fileName, diff.status === 'modified' && (_jsxs(Text, { dimColor: true, children: [' ', "(", diff.localLines, " lines local, ", diff.remoteLines, " lines remote)"] })), diff.status === 'added' && _jsx(Text, { dimColor: true, children: " (new in registry)" }), diff.status === 'removed' && (_jsx(Text, { dimColor: true, children: hasDiffLines ? ' (removed from registry)' : ' (file already deleted locally)' })), diff.status === 'missing-local' && _jsx(Text, { dimColor: true, children: " (file missing locally)" })] }), hasDiffLines && (_jsx(Box, { flexDirection: 'column', paddingLeft: 4, children: diff.diffLines.map((line, lineIndex) => (
|
|
20
|
+
// Index key is intentional: diff lines are a static, non-reorderable list
|
|
21
|
+
_jsx(DiffLineView, { line: line }, lineIndex))) })), hasDiffLines && !isLastEntry && _jsx(Text, { children: " " })] }));
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* Renders a single diff line with appropriate color and prefix based on its type.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiffView.js","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"DiffView.js","sourceRoot":"","sources":["../../src/components/DiffView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAuBlD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAiB;IAC3G,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAE/D,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,IAAI,gCACC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,IAAI,GAAQ,IACpC,EACP,MAAC,IAAI,8BACQ,MAAC,IAAI,IAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,kBAAI,gBAAgB,IAAQ,EAChF,KAAK,cACE,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,kBAAG,aAAa,IAAQ,EAClD,WAAW,IAAI,KAAC,IAAI,IAAC,QAAQ,sCAAuB,IAChD,EACP,KAAC,IAAI,IAAC,QAAQ,kBAAE,qBAAqB,GAAQ,EAC7C,KAAC,IAAI,oBAAS,EACb,CAAC,UAAU,CAAC,CAAC,CAAC,CACb,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,6EAA+D,CACnF,CAAC,CAAC,CAAC,CACF,8BACG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,KAAC,aAAa,IAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,IAAO,IAAI,CAAC,QAAQ,CAAI,CAC3F,CAAC,EACF,KAAC,IAAI,oBAAS,EACd,MAAC,IAAI,IAAC,QAAQ,2BACR,MAAC,IAAI,IAAC,IAAI,kCAAa,IAAI,IAAQ,yCAClC,IACN,CACJ,IACG,CACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAiD;IACzF,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,eACF,IAAI,EACL,KAAC,cAAc,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,OAAE,IAAI,CAAC,QAAQ,EACrD,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,CAC7B,MAAC,IAAI,IAAC,QAAQ,mBACX,GAAG,OACF,IAAI,CAAC,UAAU,oBAAgB,IAAI,CAAC,WAAW,sBAC5C,CACR,EACA,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,IAAI,IAAC,QAAQ,yCAA0B,EACnE,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAC5B,KAAC,IAAI,IAAC,QAAQ,kBACX,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,iCAAiC,GACzE,CACR,EACA,IAAI,CAAC,MAAM,KAAK,eAAe,IAAI,KAAC,IAAI,IAAC,QAAQ,8CAA+B,IAC5E,EACN,YAAY,IAAI,CACf,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,YACvC,IAAI,CAAC,SAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;gBACxC,0EAA0E;gBAC1E,KAAC,YAAY,IAAiB,IAAI,EAAE,IAAI,IAArB,SAAS,CAAgB,CAC7C,CAAC,GACE,CACP,EACA,YAAY,IAAI,CAAC,WAAW,IAAI,KAAC,IAAI,oBAAS,IAC3C,CACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,EAAE,IAAI,EAAsB;IAChD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,IAAI,GAAG,IAAI,CAAC,OAAO,GAAQ,CAAC;QAC1D,KAAK,SAAS;YACZ,OAAO,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAG,IAAI,CAAC,OAAO,GAAQ,CAAC;QACrD,KAAK,UAAU;YACb,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,IAAI,GAAG,IAAI,CAAC,OAAO,GAAQ,CAAC;QACxD,KAAK,aAAa;YAChB,OAAO,CACL,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YACpB,IAAI,CAAC,OAAO,GACR,CACR,CAAC;IACN,CAAC;AACH,CAAC"}
|
package/build/lib/config.d.ts
CHANGED
|
@@ -11,6 +11,15 @@ export declare function getConfigPath(): string;
|
|
|
11
11
|
* Get a single config value by key.
|
|
12
12
|
*/
|
|
13
13
|
export declare function getConfigValue(config: Config, key: string): unknown;
|
|
14
|
+
/**
|
|
15
|
+
* Get the path to the project-level config file (.atkrc.json in project root).
|
|
16
|
+
*/
|
|
17
|
+
export declare function getProjectConfigPath(projectDir: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Check whether a local project config (.atkrc.json) exists in the given directory.
|
|
20
|
+
* The config stores the developer's selected tools (`tools: string[]`).
|
|
21
|
+
*/
|
|
22
|
+
export declare function hasLocalConfig(projectDir: string): boolean;
|
|
14
23
|
/**
|
|
15
24
|
* List all known config keys with their current values and defaults.
|
|
16
25
|
*/
|
|
@@ -25,6 +34,12 @@ export declare function listConfigEntries(config: Config): Array<{
|
|
|
25
34
|
* Creates no file if none exists — defaults are used.
|
|
26
35
|
*/
|
|
27
36
|
export declare function loadConfig(): Promise<Config>;
|
|
37
|
+
/**
|
|
38
|
+
* Load the project-level config from .atkrc.json in the project directory.
|
|
39
|
+
* Returns null if no project config exists.
|
|
40
|
+
* Legacy `{ tool: string }` files are automatically migrated to `{ tools: string[] }` on read via schema preprocess.
|
|
41
|
+
*/
|
|
42
|
+
export declare function loadProjectConfig(projectDir: string): Promise<null | ProjectConfig>;
|
|
28
43
|
/**
|
|
29
44
|
* Reset a config key back to its default value.
|
|
30
45
|
* Returns the updated config.
|
|
@@ -34,26 +49,6 @@ export declare function resetConfigValue(config: Config, key: string): Config;
|
|
|
34
49
|
* Save the full config object to ~/.atkrc.json.
|
|
35
50
|
*/
|
|
36
51
|
export declare function saveConfig(config: Config): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* Get the path to the project-level config file (.atkrc.json in project root).
|
|
39
|
-
*/
|
|
40
|
-
export declare function getProjectConfigPath(projectDir: string): string;
|
|
41
|
-
/**
|
|
42
|
-
* Check whether a local project config (.atkrc.json) exists in the given directory.
|
|
43
|
-
* The config stores the developer's selected tools (`tools: string[]`).
|
|
44
|
-
*/
|
|
45
|
-
export declare function hasLocalConfig(projectDir: string): boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Load merged config: user-level config only.
|
|
48
|
-
* Project config now only stores `{ tools: string[] }` and does not contribute to Config fields.
|
|
49
|
-
*/
|
|
50
|
-
export declare function loadMergedConfig(projectDir: string): Promise<Config>;
|
|
51
|
-
/**
|
|
52
|
-
* Load the project-level config from .atkrc.json in the project directory.
|
|
53
|
-
* Returns null if no project config exists.
|
|
54
|
-
* Legacy `{ tool: string }` files are automatically migrated to `{ tools: string[] }` on read via schema preprocess.
|
|
55
|
-
*/
|
|
56
|
-
export declare function loadProjectConfig(projectDir: string): Promise<null | ProjectConfig>;
|
|
57
52
|
/**
|
|
58
53
|
* Save the project-level config to .atkrc.json in the project directory.
|
|
59
54
|
* Always writes the new `{ tools: string[] }` format, never the legacy `{ tool }` format.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,MAAM,EAGX,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAC;AAI7B;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAKnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CAQ5G;AAED;;;;GAIG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAUlD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC,CASzF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBpE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB9D;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAchG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CA2BjF"}
|
package/build/lib/config.js
CHANGED
|
@@ -2,9 +2,10 @@ import { existsSync } from 'node:fs';
|
|
|
2
2
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { dirname, join } from 'node:path';
|
|
5
|
+
import { z } from 'zod';
|
|
5
6
|
import { parseAndValidate } from './parse-json.js';
|
|
6
7
|
import { ConfigSchema, DEFAULT_CONFIG, ProjectConfigSchema, } from './schemas/config.js';
|
|
7
|
-
const
|
|
8
|
+
const ATKRC_FILENAME = '.atkrc.json';
|
|
8
9
|
/**
|
|
9
10
|
* Get the path to the ATK cache directory (~/.atk/cache/).
|
|
10
11
|
*/
|
|
@@ -15,29 +16,35 @@ export function getCacheDir(config) {
|
|
|
15
16
|
* Get the path to the user's config file (~/.atkrc.json).
|
|
16
17
|
*/
|
|
17
18
|
export function getConfigPath() {
|
|
18
|
-
return join(homedir(),
|
|
19
|
+
return join(homedir(), ATKRC_FILENAME);
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* Get a single config value by key.
|
|
22
23
|
*/
|
|
23
24
|
export function getConfigValue(config, key) {
|
|
24
|
-
if (!(key in
|
|
25
|
-
|
|
25
|
+
if (!(key in ConfigSchema.shape)) {
|
|
26
|
+
throw new Error(`Unknown config key: ${key}`);
|
|
26
27
|
}
|
|
27
28
|
return config[key];
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the path to the project-level config file (.atkrc.json in project root).
|
|
32
|
+
*/
|
|
33
|
+
export function getProjectConfigPath(projectDir) {
|
|
34
|
+
return join(projectDir, ATKRC_FILENAME);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check whether a local project config (.atkrc.json) exists in the given directory.
|
|
38
|
+
* The config stores the developer's selected tools (`tools: string[]`).
|
|
39
|
+
*/
|
|
40
|
+
export function hasLocalConfig(projectDir) {
|
|
41
|
+
return existsSync(getProjectConfigPath(projectDir));
|
|
42
|
+
}
|
|
29
43
|
/**
|
|
30
44
|
* List all known config keys with their current values and defaults.
|
|
31
45
|
*/
|
|
32
46
|
export function listConfigEntries(config) {
|
|
33
|
-
const allKeys =
|
|
34
|
-
'registryUrl',
|
|
35
|
-
'registryBranch',
|
|
36
|
-
'cacheDir',
|
|
37
|
-
'cacheTtlMinutes',
|
|
38
|
-
'githubToken',
|
|
39
|
-
'org',
|
|
40
|
-
];
|
|
47
|
+
const allKeys = Object.keys(ConfigSchema.shape);
|
|
41
48
|
return allKeys.map((key) => ({
|
|
42
49
|
isDefault: config[key] === undefined || config[key] === DEFAULT_CONFIG[key],
|
|
43
50
|
key,
|
|
@@ -58,6 +65,19 @@ export async function loadConfig() {
|
|
|
58
65
|
const parsed = parseAndValidate(raw, ConfigSchema, `Invalid config at ${configPath}`);
|
|
59
66
|
return { ...DEFAULT_CONFIG, ...parsed };
|
|
60
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Load the project-level config from .atkrc.json in the project directory.
|
|
70
|
+
* Returns null if no project config exists.
|
|
71
|
+
* Legacy `{ tool: string }` files are automatically migrated to `{ tools: string[] }` on read via schema preprocess.
|
|
72
|
+
*/
|
|
73
|
+
export async function loadProjectConfig(projectDir) {
|
|
74
|
+
const configPath = getProjectConfigPath(projectDir);
|
|
75
|
+
if (!existsSync(configPath)) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const raw = await readFile(configPath, 'utf-8');
|
|
79
|
+
return parseAndValidate(raw, ProjectConfigSchema, `Invalid project config at ${configPath}`);
|
|
80
|
+
}
|
|
61
81
|
/**
|
|
62
82
|
* Reset a config key back to its default value.
|
|
63
83
|
* Returns the updated config.
|
|
@@ -96,43 +116,6 @@ export async function saveConfig(config) {
|
|
|
96
116
|
}
|
|
97
117
|
await writeFile(configPath, JSON.stringify(toSave, null, '\t') + '\n', 'utf-8');
|
|
98
118
|
}
|
|
99
|
-
const PROJECT_CONFIG_FILENAME = '.atkrc.json';
|
|
100
|
-
/**
|
|
101
|
-
* Get the path to the project-level config file (.atkrc.json in project root).
|
|
102
|
-
*/
|
|
103
|
-
export function getProjectConfigPath(projectDir) {
|
|
104
|
-
return join(projectDir, PROJECT_CONFIG_FILENAME);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Check whether a local project config (.atkrc.json) exists in the given directory.
|
|
108
|
-
* The config stores the developer's selected tools (`tools: string[]`).
|
|
109
|
-
*/
|
|
110
|
-
export function hasLocalConfig(projectDir) {
|
|
111
|
-
return existsSync(getProjectConfigPath(projectDir));
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Load merged config: user-level config only.
|
|
115
|
-
* Project config now only stores `{ tools: string[] }` and does not contribute to Config fields.
|
|
116
|
-
*/
|
|
117
|
-
export async function loadMergedConfig(projectDir) {
|
|
118
|
-
// projectDir is accepted for API compatibility but project config
|
|
119
|
-
// no longer overrides any Config fields (it only stores the tools choice).
|
|
120
|
-
void projectDir;
|
|
121
|
-
return loadConfig();
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Load the project-level config from .atkrc.json in the project directory.
|
|
125
|
-
* Returns null if no project config exists.
|
|
126
|
-
* Legacy `{ tool: string }` files are automatically migrated to `{ tools: string[] }` on read via schema preprocess.
|
|
127
|
-
*/
|
|
128
|
-
export async function loadProjectConfig(projectDir) {
|
|
129
|
-
const configPath = getProjectConfigPath(projectDir);
|
|
130
|
-
if (!existsSync(configPath)) {
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
const raw = await readFile(configPath, 'utf-8');
|
|
134
|
-
return parseAndValidate(raw, ProjectConfigSchema, `Invalid project config at ${configPath}`);
|
|
135
|
-
}
|
|
136
119
|
/**
|
|
137
120
|
* Save the project-level config to .atkrc.json in the project directory.
|
|
138
121
|
* Always writes the new `{ tools: string[] }` format, never the legacy `{ tool }` format.
|
|
@@ -157,9 +140,12 @@ export function setConfigValue(config, key, value) {
|
|
|
157
140
|
if (!(key in ConfigSchema.shape)) {
|
|
158
141
|
throw new Error(`Unknown config key: ${key}`);
|
|
159
142
|
}
|
|
160
|
-
//
|
|
143
|
+
// Schema-driven type coercion: detect number fields from the Zod schema
|
|
144
|
+
// and coerce string CLI input to numbers automatically.
|
|
161
145
|
let coerced = value;
|
|
162
|
-
|
|
146
|
+
const fieldSchema = ConfigSchema.shape[key];
|
|
147
|
+
const jsonSchema = z.toJSONSchema(fieldSchema);
|
|
148
|
+
if ('type' in jsonSchema && jsonSchema.type === 'number') {
|
|
163
149
|
const num = Number(value);
|
|
164
150
|
if (Number.isNaN(num)) {
|
|
165
151
|
throw new Error(`Invalid value for ${key}: expected a number`);
|
package/build/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { DiagnosticCheck } from '../components/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check whether the given Node.js version string meets the project requirements.
|
|
4
|
+
*
|
|
5
|
+
* @param version - a Node.js-style version string such as `process.version` (e.g. "v24.5.0")
|
|
6
|
+
* @returns a `DiagnosticCheck` with status pass / warn / fail
|
|
7
|
+
*/
|
|
8
|
+
export declare function checkNodeVersion(version: string): DiagnosticCheck;
|
|
2
9
|
/**
|
|
3
10
|
* Run all environment diagnostic checks and return the results.
|
|
4
11
|
* Extracted from the `doctor` command so it can be tested independently.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAS9D;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,eAAe,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAS9D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAqBjE;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACnC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,eAAe,EAAE,CAAC,CA8L5B"}
|
package/build/lib/diagnostics.js
CHANGED
|
@@ -1,44 +1,52 @@
|
|
|
1
1
|
import { getGitHubToken, isGhCliAvailable, validateToken } from './auth.js';
|
|
2
2
|
import { loadConfig, loadProjectConfig } from './config.js';
|
|
3
3
|
import { detectTools, getAdapterDiagnostics } from './detector.js';
|
|
4
|
-
import { readLockfile } from './lockfile.js';
|
|
4
|
+
import { lockfileExists, readLockfile } from './lockfile.js';
|
|
5
5
|
import { findProjectRoot } from './paths.js';
|
|
6
6
|
import { fetchRegistry } from './registry.js';
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* Extracted from the `doctor` command so it can be tested independently.
|
|
8
|
+
* Check whether the given Node.js version string meets the project requirements.
|
|
10
9
|
*
|
|
11
|
-
* @param
|
|
12
|
-
* @
|
|
10
|
+
* @param version - a Node.js-style version string such as `process.version` (e.g. "v24.5.0")
|
|
11
|
+
* @returns a `DiagnosticCheck` with status pass / warn / fail
|
|
13
12
|
*/
|
|
14
|
-
export
|
|
15
|
-
const
|
|
16
|
-
const checks = [];
|
|
17
|
-
// Check Node.js version
|
|
18
|
-
progress('Checking Node.js...');
|
|
19
|
-
const nodeVersion = process.version;
|
|
20
|
-
const nodeMajor = parseInt(nodeVersion.slice(1), 10);
|
|
13
|
+
export function checkNodeVersion(version) {
|
|
14
|
+
const nodeMajor = parseInt(version.slice(1), 10);
|
|
21
15
|
if (nodeMajor >= 24) {
|
|
22
|
-
|
|
23
|
-
message: `${
|
|
16
|
+
return {
|
|
17
|
+
message: `${version} (recommended)`,
|
|
24
18
|
name: 'Node.js',
|
|
25
19
|
status: 'pass',
|
|
26
|
-
}
|
|
20
|
+
};
|
|
27
21
|
}
|
|
28
22
|
else if (nodeMajor >= 20) {
|
|
29
|
-
|
|
30
|
-
message: `${
|
|
23
|
+
return {
|
|
24
|
+
message: `${version} (Node 24+ recommended)`,
|
|
31
25
|
name: 'Node.js',
|
|
32
26
|
status: 'warn',
|
|
33
|
-
}
|
|
27
|
+
};
|
|
34
28
|
}
|
|
35
29
|
else {
|
|
36
|
-
|
|
37
|
-
message: `${
|
|
30
|
+
return {
|
|
31
|
+
message: `${version} (Node 20+ required, 24+ recommended)`,
|
|
38
32
|
name: 'Node.js',
|
|
39
33
|
status: 'fail',
|
|
40
|
-
}
|
|
34
|
+
};
|
|
41
35
|
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Run all environment diagnostic checks and return the results.
|
|
39
|
+
* Extracted from the `doctor` command so it can be tested independently.
|
|
40
|
+
*
|
|
41
|
+
* @param progress - callback to report progress messages
|
|
42
|
+
* @param projectRootOverride - optional explicit project root; when omitted, discovered via `findProjectRoot()`
|
|
43
|
+
*/
|
|
44
|
+
export async function runDiagnostics(progress, projectRootOverride) {
|
|
45
|
+
const projectDir = findProjectRoot(projectRootOverride);
|
|
46
|
+
const checks = [];
|
|
47
|
+
// Check Node.js version
|
|
48
|
+
progress('Checking Node.js...');
|
|
49
|
+
checks.push(checkNodeVersion(process.version));
|
|
42
50
|
// Check gh CLI
|
|
43
51
|
progress('Checking GitHub CLI...');
|
|
44
52
|
const ghAvailable = await isGhCliAvailable();
|
|
@@ -170,7 +178,9 @@ export async function runDiagnostics(progress, projectRootOverride) {
|
|
|
170
178
|
const projectConfig = await loadProjectConfig(projectDir);
|
|
171
179
|
if (projectConfig) {
|
|
172
180
|
checks.push({
|
|
173
|
-
message:
|
|
181
|
+
message: projectConfig.tools.length === 0
|
|
182
|
+
? 'Loaded (no tools configured)'
|
|
183
|
+
: `Loaded (tools: ${projectConfig.tools.join(', ')})`,
|
|
174
184
|
name: 'Project config',
|
|
175
185
|
status: 'pass',
|
|
176
186
|
});
|
|
@@ -194,23 +204,33 @@ export async function runDiagnostics(progress, projectRootOverride) {
|
|
|
194
204
|
}
|
|
195
205
|
// Check lockfile
|
|
196
206
|
progress('Checking lockfile...');
|
|
197
|
-
|
|
198
|
-
const lockfile = await readLockfile(projectDir);
|
|
199
|
-
const assetCount = (lockfile.assets ?? []).length;
|
|
200
|
-
checks.push({
|
|
201
|
-
message: `Found .atk-lock.json (${assetCount} asset${assetCount === 1 ? '' : 's'})`,
|
|
202
|
-
name: 'Lockfile',
|
|
203
|
-
status: 'pass',
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
+
if (!lockfileExists(projectDir)) {
|
|
207
208
|
checks.push({
|
|
208
|
-
detail: 'Run `atk setup` to initialize
|
|
209
|
-
message: 'No lockfile found
|
|
209
|
+
detail: 'Run `atk setup` to initialize',
|
|
210
|
+
message: 'No lockfile found',
|
|
210
211
|
name: 'Lockfile',
|
|
211
212
|
status: 'warn',
|
|
212
213
|
});
|
|
213
214
|
}
|
|
215
|
+
else {
|
|
216
|
+
try {
|
|
217
|
+
const lockfile = await readLockfile(projectDir);
|
|
218
|
+
const assetCount = (lockfile.assets ?? []).length;
|
|
219
|
+
checks.push({
|
|
220
|
+
message: `Found .atk-lock.json (${assetCount} asset${assetCount === 1 ? '' : 's'})`,
|
|
221
|
+
name: 'Lockfile',
|
|
222
|
+
status: 'pass',
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
checks.push({
|
|
227
|
+
detail: 'Run `atk setup` to re-initialize',
|
|
228
|
+
message: err instanceof Error ? err.message : 'Failed to read lockfile',
|
|
229
|
+
name: 'Lockfile',
|
|
230
|
+
status: 'warn',
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
}
|
|
214
234
|
return checks;
|
|
215
235
|
}
|
|
216
236
|
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { FileDiffEntry } from '../components/index.js';
|
|
2
|
+
import type { InstalledAsset, InstalledFile } from './schemas/lockfile.js';
|
|
3
|
+
import type { RegistryAsset } from './schemas/registry.js';
|
|
4
|
+
export type DiffOutcome = {
|
|
5
|
+
diffs: FileDiffEntry[];
|
|
6
|
+
installed: InstalledAsset;
|
|
7
|
+
latestVersion: string;
|
|
8
|
+
name: string;
|
|
9
|
+
outcome: 'results';
|
|
10
|
+
registryAsset: RegistryAsset;
|
|
11
|
+
sameVersion: boolean;
|
|
12
|
+
} | {
|
|
13
|
+
name: string;
|
|
14
|
+
outcome: 'not-in-registry';
|
|
15
|
+
} | {
|
|
16
|
+
name: string;
|
|
17
|
+
outcome: 'not-installed';
|
|
18
|
+
};
|
|
19
|
+
/** Describes a file to fetch for diff comparison, with its installed and remote paths. */
|
|
20
|
+
export interface FileFetchEntry {
|
|
21
|
+
file: InstalledFile;
|
|
22
|
+
installedPath: string;
|
|
23
|
+
remotePath: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Core logic for the `atk diff` command. Computes the diff between a locally
|
|
27
|
+
* installed asset and the latest version in the registry.
|
|
28
|
+
*
|
|
29
|
+
* @param name - Asset name (without org prefix)
|
|
30
|
+
* @param org - Org from the --org CLI flag or inline @org/name syntax (already merged)
|
|
31
|
+
* @param tool - Tool override from --tool CLI flag
|
|
32
|
+
* @param context - Number of context lines for unified diff output
|
|
33
|
+
* @param refresh - Whether to bypass the registry cache
|
|
34
|
+
* @param projectRoot - Optional project root override
|
|
35
|
+
* @param cliOrg - Org from the --org CLI flag
|
|
36
|
+
* @param inlineOrg - Org parsed from @org/name syntax
|
|
37
|
+
* @param progress - Callback to report progress messages to the UI
|
|
38
|
+
*/
|
|
39
|
+
export declare function computeDiffOutcome(name: string, org: string | undefined, tool: string | undefined, context: number, refresh: boolean, projectRoot: string | undefined, cliOrg: string | undefined, inlineOrg: string | undefined, progress: (message: string) => void): Promise<DiffOutcome>;
|
|
40
|
+
//# sourceMappingURL=diff-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-command.d.ts","sourceRoot":"","sources":["../../src/lib/diff-command.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAa3D,MAAM,MAAM,WAAW,GACnB;IACE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;CACtB,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAE/C,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAClC,OAAO,CAAC,WAAW,CAAC,CAqJtB"}
|