@vltpkg/cli-sdk 0.0.0-2 → 0.0.0-21
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 +3 -0
- package/dist/esm/commands/cache.d.ts +65 -0
- package/dist/esm/commands/cache.d.ts.map +1 -0
- package/dist/esm/commands/cache.js +257 -0
- package/dist/esm/commands/cache.js.map +1 -0
- package/dist/esm/commands/ci.d.ts +10 -0
- package/dist/esm/commands/ci.d.ts.map +1 -0
- package/dist/esm/commands/ci.js +29 -0
- package/dist/esm/commands/ci.js.map +1 -0
- package/dist/esm/commands/config.d.ts.map +1 -1
- package/dist/esm/commands/config.js +2 -52
- package/dist/esm/commands/config.js.map +1 -1
- package/dist/esm/commands/exec-cache.d.ts +49 -0
- package/dist/esm/commands/exec-cache.d.ts.map +1 -0
- package/dist/esm/commands/exec-cache.js +134 -0
- package/dist/esm/commands/exec-cache.js.map +1 -0
- package/dist/esm/commands/exec-local.d.ts +6 -0
- package/dist/esm/commands/exec-local.d.ts.map +1 -0
- package/dist/esm/commands/exec-local.js +24 -0
- package/dist/esm/commands/exec-local.js.map +1 -0
- package/dist/esm/commands/exec.d.ts +4 -0
- package/dist/esm/commands/exec.d.ts.map +1 -1
- package/dist/esm/commands/exec.js +69 -10
- package/dist/esm/commands/exec.js.map +1 -1
- package/dist/esm/commands/gui.d.ts.map +1 -1
- package/dist/esm/commands/gui.js +1 -2
- package/dist/esm/commands/gui.js.map +1 -1
- package/dist/esm/commands/help.d.ts +1 -1
- package/dist/esm/commands/help.d.ts.map +1 -1
- package/dist/esm/commands/help.js +25 -3
- package/dist/esm/commands/help.js.map +1 -1
- package/dist/esm/commands/init.d.ts +4 -5
- package/dist/esm/commands/init.d.ts.map +1 -1
- package/dist/esm/commands/init.js +95 -9
- package/dist/esm/commands/init.js.map +1 -1
- package/dist/esm/commands/install/reporter.d.ts.map +1 -1
- package/dist/esm/commands/install/reporter.js +2 -1
- package/dist/esm/commands/install/reporter.js.map +1 -1
- package/dist/esm/commands/install.d.ts +5 -2
- package/dist/esm/commands/install.d.ts.map +1 -1
- package/dist/esm/commands/install.js +7 -1
- package/dist/esm/commands/install.js.map +1 -1
- package/dist/esm/commands/list.d.ts +2 -2
- package/dist/esm/commands/list.d.ts.map +1 -1
- package/dist/esm/commands/list.js +108 -31
- package/dist/esm/commands/list.js.map +1 -1
- package/dist/esm/commands/pack.d.ts +20 -0
- package/dist/esm/commands/pack.d.ts.map +1 -0
- package/dist/esm/commands/pack.js +81 -0
- package/dist/esm/commands/pack.js.map +1 -0
- package/dist/esm/commands/pkg.d.ts +2 -3
- package/dist/esm/commands/pkg.d.ts.map +1 -1
- package/dist/esm/commands/pkg.js +136 -34
- package/dist/esm/commands/pkg.js.map +1 -1
- package/dist/esm/commands/publish.d.ts +21 -0
- package/dist/esm/commands/publish.d.ts.map +1 -0
- package/dist/esm/commands/publish.js +169 -0
- package/dist/esm/commands/publish.js.map +1 -0
- package/dist/esm/commands/query.d.ts +2 -2
- package/dist/esm/commands/query.d.ts.map +1 -1
- package/dist/esm/commands/query.js +134 -21
- package/dist/esm/commands/query.js.map +1 -1
- package/dist/esm/commands/run-exec.d.ts +1 -0
- package/dist/esm/commands/run-exec.d.ts.map +1 -1
- package/dist/esm/commands/run-exec.js +1 -0
- package/dist/esm/commands/run-exec.js.map +1 -1
- package/dist/esm/commands/run.d.ts +1 -0
- package/dist/esm/commands/run.d.ts.map +1 -1
- package/dist/esm/commands/run.js +13 -16
- package/dist/esm/commands/run.js.map +1 -1
- package/dist/esm/commands/uninstall.d.ts +7 -1
- package/dist/esm/commands/uninstall.d.ts.map +1 -1
- package/dist/esm/commands/uninstall.js +7 -1
- package/dist/esm/commands/uninstall.js.map +1 -1
- package/dist/esm/commands/update.d.ts +10 -0
- package/dist/esm/commands/update.d.ts.map +1 -0
- package/dist/esm/commands/update.js +25 -0
- package/dist/esm/commands/update.js.map +1 -0
- package/dist/esm/commands/version.d.ts +22 -0
- package/dist/esm/commands/version.d.ts.map +1 -0
- package/dist/esm/commands/version.js +151 -0
- package/dist/esm/commands/version.js.map +1 -0
- package/dist/esm/commands/whoami.d.ts +4 -2
- package/dist/esm/commands/whoami.d.ts.map +1 -1
- package/dist/esm/commands/whoami.js +1 -1
- package/dist/esm/commands/whoami.js.map +1 -1
- package/dist/esm/config/definition.d.ts +85 -7
- package/dist/esm/config/definition.d.ts.map +1 -1
- package/dist/esm/config/definition.js +152 -23
- package/dist/esm/config/definition.js.map +1 -1
- package/dist/esm/config/index.d.ts +46 -40
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/index.js +124 -176
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/merge.d.ts +3 -1
- package/dist/esm/config/merge.d.ts.map +1 -1
- package/dist/esm/config/merge.js +11 -6
- package/dist/esm/config/merge.js.map +1 -1
- package/dist/esm/config/usage.d.ts +3 -2
- package/dist/esm/config/usage.d.ts.map +1 -1
- package/dist/esm/config/usage.js.map +1 -1
- package/dist/esm/exec-command.d.ts +32 -14
- package/dist/esm/exec-command.d.ts.map +1 -1
- package/dist/esm/exec-command.js +195 -63
- package/dist/esm/exec-command.js.map +1 -1
- package/dist/esm/index.d.ts +1 -14
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +46 -20
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/load-command.d.ts +16 -0
- package/dist/esm/load-command.d.ts.map +1 -0
- package/dist/esm/load-command.js +21 -0
- package/dist/esm/load-command.js.map +1 -0
- package/dist/esm/output.d.ts +6 -10
- package/dist/esm/output.d.ts.map +1 -1
- package/dist/esm/output.js +62 -32
- package/dist/esm/output.js.map +1 -1
- package/dist/esm/pack-tarball.d.ts +22 -0
- package/dist/esm/pack-tarball.d.ts.map +1 -0
- package/dist/esm/pack-tarball.js +247 -0
- package/dist/esm/pack-tarball.js.map +1 -0
- package/dist/esm/parse-add-remove-args.d.ts +1 -1
- package/dist/esm/parse-add-remove-args.d.ts.map +1 -1
- package/dist/esm/parse-add-remove-args.js +1 -1
- package/dist/esm/parse-add-remove-args.js.map +1 -1
- package/dist/esm/print-err.d.ts +12 -1
- package/dist/esm/print-err.d.ts.map +1 -1
- package/dist/esm/print-err.js +157 -26
- package/dist/esm/print-err.js.map +1 -1
- package/dist/esm/start-gui.d.ts +7 -33
- package/dist/esm/start-gui.d.ts.map +1 -1
- package/dist/esm/start-gui.js +33 -347
- package/dist/esm/start-gui.js.map +1 -1
- package/dist/esm/view.d.ts +2 -3
- package/dist/esm/view.d.ts.map +1 -1
- package/dist/esm/view.js.map +1 -1
- package/package.json +69 -44
- package/dist/esm/commands/install-exec.d.ts +0 -4
- package/dist/esm/commands/install-exec.d.ts.map +0 -1
- package/dist/esm/commands/install-exec.js +0 -13
- package/dist/esm/commands/install-exec.js.map +0 -1
- package/dist/esm/ignored-homedir-folder-names.d.ts +0 -7
- package/dist/esm/ignored-homedir-folder-names.d.ts.map +0 -1
- package/dist/esm/ignored-homedir-folder-names.js +0 -35
- package/dist/esm/ignored-homedir-folder-names.js.map +0 -1
- package/dist/esm/project-info.d.ts +0 -32
- package/dist/esm/project-info.d.ts.map +0 -1
- package/dist/esm/project-info.js +0 -90
- package/dist/esm/project-info.js.map +0 -1
- package/dist/esm/read-project-folders.d.ts +0 -27
- package/dist/esm/read-project-folders.d.ts.map +0 -1
- package/dist/esm/read-project-folders.js +0 -66
- package/dist/esm/read-project-folders.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vltpkg/cli-sdk",
|
|
3
3
|
"description": "The source for the vlt CLI",
|
|
4
|
-
"version": "0.0.0-
|
|
4
|
+
"version": "0.0.0-21",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/vltpkg/vltpkg.git",
|
|
8
|
-
"directory": "src/
|
|
8
|
+
"directory": "src/cli-sdk"
|
|
9
9
|
},
|
|
10
10
|
"tshy": {
|
|
11
11
|
"selfLink": false,
|
|
@@ -15,66 +15,72 @@
|
|
|
15
15
|
],
|
|
16
16
|
"exports": {
|
|
17
17
|
"./package.json": "./package.json",
|
|
18
|
-
".": "./src/index.ts"
|
|
18
|
+
".": "./src/index.ts",
|
|
19
|
+
"./config": "./src/config/index.ts",
|
|
20
|
+
"./definition": "./src/config/definition.ts",
|
|
21
|
+
"./view": "./src/view.ts"
|
|
19
22
|
}
|
|
20
23
|
},
|
|
21
24
|
"dependencies": {
|
|
22
|
-
"ansi-to-pre": "^1.0.
|
|
23
|
-
"
|
|
24
|
-
"ink": "^5.1
|
|
25
|
+
"ansi-to-pre": "^1.0.6",
|
|
26
|
+
"graph-run": "^1.1.0",
|
|
27
|
+
"ink": "^5.2.1",
|
|
25
28
|
"ink-spinner": "^5.0.0",
|
|
26
|
-
"jackspeak": "^4.
|
|
27
|
-
"
|
|
29
|
+
"jackspeak": "^4.1.1",
|
|
30
|
+
"lz-string": "^1.5.0",
|
|
31
|
+
"minimatch": "^10.0.1",
|
|
32
|
+
"package-json-from-dist": "^1.0.1",
|
|
28
33
|
"path-scurry": "^2.0.0",
|
|
29
|
-
"
|
|
30
|
-
"promise-call-limit": "^3.0.2",
|
|
34
|
+
"pretty-bytes": "^6.1.1",
|
|
31
35
|
"react": "^18.3.1",
|
|
32
36
|
"react-devtools-core": "^4.28.5",
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"@vltpkg/
|
|
37
|
-
"@vltpkg/
|
|
38
|
-
"@vltpkg/
|
|
39
|
-
"@vltpkg/
|
|
40
|
-
"@vltpkg/
|
|
41
|
-
"@vltpkg/
|
|
42
|
-
"@vltpkg/
|
|
43
|
-
"@vltpkg/
|
|
44
|
-
"@vltpkg/package-info": "0.0.0-
|
|
45
|
-
"@vltpkg/promise-spawn": "0.0.0-
|
|
46
|
-
"@vltpkg/query": "0.0.0-
|
|
47
|
-
"@vltpkg/registry-client": "0.0.0-
|
|
48
|
-
"@vltpkg/
|
|
49
|
-
"@vltpkg/
|
|
50
|
-
"@vltpkg/
|
|
51
|
-
"@vltpkg/
|
|
52
|
-
"@vltpkg/
|
|
53
|
-
"@vltpkg/
|
|
37
|
+
"ssri": "^12.0.0",
|
|
38
|
+
"supports-color": "^10.0.0",
|
|
39
|
+
"tar": "^7.4.3",
|
|
40
|
+
"@vltpkg/config": "0.0.0-21",
|
|
41
|
+
"@vltpkg/dot-prop": "0.0.0-21",
|
|
42
|
+
"@vltpkg/dep-id": "0.0.0-21",
|
|
43
|
+
"@vltpkg/error-cause": "0.0.0-21",
|
|
44
|
+
"@vltpkg/git": "0.0.0-21",
|
|
45
|
+
"@vltpkg/init": "0.0.0-21",
|
|
46
|
+
"@vltpkg/output": "0.0.0-21",
|
|
47
|
+
"@vltpkg/graph": "0.0.0-21",
|
|
48
|
+
"@vltpkg/package-info": "0.0.0-21",
|
|
49
|
+
"@vltpkg/promise-spawn": "0.0.0-21",
|
|
50
|
+
"@vltpkg/query": "0.0.0-21",
|
|
51
|
+
"@vltpkg/registry-client": "0.0.0-21",
|
|
52
|
+
"@vltpkg/package-json": "0.0.0-21",
|
|
53
|
+
"@vltpkg/rollback-remove": "0.0.0-21",
|
|
54
|
+
"@vltpkg/run": "0.0.0-21",
|
|
55
|
+
"@vltpkg/security-archive": "0.0.0-21",
|
|
56
|
+
"@vltpkg/types": "0.0.0-21",
|
|
57
|
+
"@vltpkg/spec": "0.0.0-21",
|
|
58
|
+
"@vltpkg/server": "0.0.0-21",
|
|
59
|
+
"@vltpkg/vlt-json": "0.0.0-21",
|
|
60
|
+
"@vltpkg/vlx": "0.0.0-21",
|
|
61
|
+
"@vltpkg/url-open": "0.0.0-21",
|
|
62
|
+
"@vltpkg/workspaces": "0.0.0-21",
|
|
63
|
+
"@vltpkg/xdg": "0.0.0-21"
|
|
54
64
|
},
|
|
55
65
|
"devDependencies": {
|
|
56
|
-
"@eslint/js": "^9.
|
|
57
|
-
"@types/
|
|
58
|
-
"@types/
|
|
59
|
-
"@types/
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"prettier": "^3.4.2",
|
|
66
|
+
"@eslint/js": "^9.28.0",
|
|
67
|
+
"@types/node": "^22.15.29",
|
|
68
|
+
"@types/react": "^18.3.23",
|
|
69
|
+
"@types/ssri": "^7.1.5",
|
|
70
|
+
"eslint": "^9.28.0",
|
|
71
|
+
"prettier": "^3.6.0",
|
|
63
72
|
"tap": "^21.1.0",
|
|
64
73
|
"tshy": "^3.0.2",
|
|
65
|
-
"typedoc": "0.27.
|
|
74
|
+
"typedoc": "~0.27.9",
|
|
66
75
|
"typescript": "5.7.3",
|
|
67
|
-
"typescript-eslint": "^8.
|
|
76
|
+
"typescript-eslint": "^8.33.1"
|
|
68
77
|
},
|
|
69
78
|
"license": "BSD-2-Clause-Patent",
|
|
70
79
|
"engines": {
|
|
71
80
|
"node": ">=22"
|
|
72
81
|
},
|
|
73
82
|
"tap": {
|
|
74
|
-
"extends": "../../tap-config.yaml"
|
|
75
|
-
"test-env": [
|
|
76
|
-
"__VLT_INTERNAL_GUI_ASSETS_DIR=/mock-path/to/gui/assets"
|
|
77
|
-
]
|
|
83
|
+
"extends": "../../tap-config.yaml"
|
|
78
84
|
},
|
|
79
85
|
"prettier": "../../.prettierrc.js",
|
|
80
86
|
"module": "./dist/esm/index.js",
|
|
@@ -86,6 +92,24 @@
|
|
|
86
92
|
"types": "./dist/esm/index.d.ts",
|
|
87
93
|
"default": "./dist/esm/index.js"
|
|
88
94
|
}
|
|
95
|
+
},
|
|
96
|
+
"./config": {
|
|
97
|
+
"import": {
|
|
98
|
+
"types": "./dist/esm/config/index.d.ts",
|
|
99
|
+
"default": "./dist/esm/config/index.js"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"./definition": {
|
|
103
|
+
"import": {
|
|
104
|
+
"types": "./dist/esm/config/definition.d.ts",
|
|
105
|
+
"default": "./dist/esm/config/definition.js"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"./view": {
|
|
109
|
+
"import": {
|
|
110
|
+
"types": "./dist/esm/view.d.ts",
|
|
111
|
+
"default": "./dist/esm/view.js"
|
|
112
|
+
}
|
|
89
113
|
}
|
|
90
114
|
},
|
|
91
115
|
"files": [
|
|
@@ -102,6 +126,7 @@
|
|
|
102
126
|
"snap": "tap",
|
|
103
127
|
"test": "tap",
|
|
104
128
|
"posttest": "tsc --noEmit",
|
|
129
|
+
"tshy": "tshy",
|
|
105
130
|
"typecheck": "tsc --noEmit"
|
|
106
131
|
}
|
|
107
132
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-exec.d.ts","sourceRoot":"","sources":["../../../src/commands/install-exec.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1D,eAAO,MAAM,KAAK,EAAE,YAMhB,CAAA;AAEJ,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,MAAM,CAKrC,CAAA"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { commandUsage } from "../config/usage.js";
|
|
2
|
-
export const usage = () => commandUsage({
|
|
3
|
-
command: 'install-exec',
|
|
4
|
-
usage: '[--package=<pkg>] [command...]',
|
|
5
|
-
description: 'Run a command defined by a package, installing it if necessary',
|
|
6
|
-
});
|
|
7
|
-
export const command = async (conf) => {
|
|
8
|
-
return [
|
|
9
|
-
'TODO: exec, but install if not present',
|
|
10
|
-
...conf.positionals,
|
|
11
|
-
].join('\n');
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=install-exec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-exec.js","sourceRoot":"","sources":["../../../src/commands/install-exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,MAAM,CAAC,MAAM,KAAK,GAAiB,GAAG,EAAE,CACtC,YAAY,CAAC;IACX,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,gCAAgC;IACvC,WAAW,EACT,gEAAgE;CACnE,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,OAAO,GAAsB,KAAK,EAAC,IAAI,EAAC,EAAE;IACrD,OAAO;QACL,wCAAwC;QACxC,GAAG,IAAI,CAAC,WAAW;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC,CAAA","sourcesContent":["import { commandUsage } from '../config/usage.ts'\nimport type { CommandFn, CommandUsage } from '../index.ts'\n\nexport const usage: CommandUsage = () =>\n commandUsage({\n command: 'install-exec',\n usage: '[--package=<pkg>] [command...]',\n description:\n 'Run a command defined by a package, installing it if necessary',\n })\n\nexport const command: CommandFn<string> = async conf => {\n return [\n 'TODO: exec, but install if not present',\n ...conf.positionals,\n ].join('\\n')\n}\n"]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A list of folder names that are ignored when reading the user's home dir.
|
|
3
|
-
*
|
|
4
|
-
* Note: these are lower-case, must be compared case-insensitively.
|
|
5
|
-
*/
|
|
6
|
-
export declare const ignoredHomedirFolderNames: string[];
|
|
7
|
-
//# sourceMappingURL=ignored-homedir-folder-names.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ignored-homedir-folder-names.d.ts","sourceRoot":"","sources":["../../src/ignored-homedir-folder-names.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,UA8BrC,CAAA"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A list of folder names that are ignored when reading the user's home dir.
|
|
3
|
-
*
|
|
4
|
-
* Note: these are lower-case, must be compared case-insensitively.
|
|
5
|
-
*/
|
|
6
|
-
export const ignoredHomedirFolderNames = [
|
|
7
|
-
'downloads',
|
|
8
|
-
'movies',
|
|
9
|
-
'music',
|
|
10
|
-
'pictures',
|
|
11
|
-
'private',
|
|
12
|
-
'library',
|
|
13
|
-
'desktop',
|
|
14
|
-
'dropbox',
|
|
15
|
-
].concat(process.platform === 'darwin' ?
|
|
16
|
-
[
|
|
17
|
-
'public',
|
|
18
|
-
'private',
|
|
19
|
-
'applications',
|
|
20
|
-
'applications (parallels)',
|
|
21
|
-
'sites',
|
|
22
|
-
'sync',
|
|
23
|
-
]
|
|
24
|
-
: process.platform === 'win32' ?
|
|
25
|
-
[
|
|
26
|
-
'appdata',
|
|
27
|
-
'application data',
|
|
28
|
-
'favorites',
|
|
29
|
-
'links',
|
|
30
|
-
'videos',
|
|
31
|
-
'contacts',
|
|
32
|
-
'searches',
|
|
33
|
-
]
|
|
34
|
-
: ['videos', 'public']);
|
|
35
|
-
//# sourceMappingURL=ignored-homedir-folder-names.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ignored-homedir-folder-names.js","sourceRoot":"","sources":["../../src/ignored-homedir-folder-names.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,WAAW;IACX,QAAQ;IACR,OAAO;IACP,UAAU;IACV,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACV,CAAC,MAAM,CACN,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC7B;QACE,QAAQ;QACR,SAAS;QACT,cAAc;QACd,0BAA0B;QAC1B,OAAO;QACP,MAAM;KACP;IACH,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAC9B;YACE,SAAS;YACT,kBAAkB;YAClB,WAAW;YACX,OAAO;YACP,QAAQ;YACR,UAAU;YACV,UAAU;SACX;QACH,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACvB,CAAA","sourcesContent":["/**\n * A list of folder names that are ignored when reading the user's home dir.\n *\n * Note: these are lower-case, must be compared case-insensitively.\n */\nexport const ignoredHomedirFolderNames = [\n 'downloads',\n 'movies',\n 'music',\n 'pictures',\n 'private',\n 'library',\n 'desktop',\n 'dropbox',\n].concat(\n process.platform === 'darwin' ?\n [\n 'public',\n 'private',\n 'applications',\n 'applications (parallels)',\n 'sites',\n 'sync',\n ]\n : process.platform === 'win32' ?\n [\n 'appdata',\n 'application data',\n 'favorites',\n 'links',\n 'videos',\n 'contacts',\n 'searches',\n ]\n : ['videos', 'public'],\n)\n"]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { PackageJson } from '@vltpkg/package-json';
|
|
2
|
-
import type { Manifest } from '@vltpkg/types';
|
|
3
|
-
import type { PathBase, PathScurry } from 'path-scurry';
|
|
4
|
-
export type ProjectTools = 'vlt' | 'node' | 'deno' | 'bun' | 'npm' | 'pnpm' | 'yarn' | 'js';
|
|
5
|
-
export type DashboardProjectData = {
|
|
6
|
-
name: string;
|
|
7
|
-
readablePath: string;
|
|
8
|
-
path: string;
|
|
9
|
-
manifest: Manifest;
|
|
10
|
-
tools: ProjectTools[];
|
|
11
|
-
mtime?: number;
|
|
12
|
-
};
|
|
13
|
-
export type GraphProjectData = {
|
|
14
|
-
tools: ProjectTools[];
|
|
15
|
-
vltInstalled: boolean;
|
|
16
|
-
};
|
|
17
|
-
export declare const isProjectTools: (str: string) => str is ProjectTools;
|
|
18
|
-
export declare const asProjectTools: (str: string) => ProjectTools;
|
|
19
|
-
export declare const inferTools: (manifest: Manifest, folder: PathBase, scurry: PathScurry) => ProjectTools[];
|
|
20
|
-
export declare const getReadablePath: (path: string) => string;
|
|
21
|
-
export declare const getDashboardProjectData: (folder: PathBase, { packageJson, scurry, }: {
|
|
22
|
-
packageJson: PackageJson;
|
|
23
|
-
scurry: PathScurry;
|
|
24
|
-
}) => DashboardProjectData | undefined;
|
|
25
|
-
export declare const getGraphProjectData: ({ packageJson, scurry, }: {
|
|
26
|
-
packageJson: PackageJson;
|
|
27
|
-
scurry: PathScurry;
|
|
28
|
-
}, folder?: PathBase) => {
|
|
29
|
-
tools: ProjectTools[];
|
|
30
|
-
vltInstalled: boolean;
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=project-info.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-info.d.ts","sourceRoot":"","sources":["../../src/project-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEvD,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,KAAK,GACL,MAAM,GACN,MAAM,GACN,IAAI,CAAA;AAER,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAwBD,eAAO,MAAM,cAAc,QAAS,MAAM,KAAG,GAAG,IAAI,YACf,CAAA;AAErC,eAAO,MAAM,cAAc,QAAS,MAAM,KAAG,YAK5C,CAAA;AAED,eAAO,MAAM,UAAU,aACX,QAAQ,UACV,QAAQ,UACR,UAAU,mBA4BnB,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,MAAM,WACd,CAAA;AAE9B,eAAO,MAAM,uBAAuB,WAC1B,QAAQ,4BAIb;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,KAClD,oBAAoB,GAAG,SAgBzB,CAAA;AAED,eAAO,MAAM,mBAAmB,6BAI3B;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,WAC1C,QAAQ;;;CAuBlB,CAAA"}
|
package/dist/esm/project-info.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { homedir } from 'node:os';
|
|
2
|
-
const knownTools = new Map([
|
|
3
|
-
[
|
|
4
|
-
'vlt',
|
|
5
|
-
[
|
|
6
|
-
'vlt-lock.json',
|
|
7
|
-
'vlt-workspaces.json',
|
|
8
|
-
'vlt.json',
|
|
9
|
-
'node_modules/.vlt',
|
|
10
|
-
'node_modules/.vlt-lock.json',
|
|
11
|
-
],
|
|
12
|
-
],
|
|
13
|
-
['node', []],
|
|
14
|
-
['deno', ['deno.json']],
|
|
15
|
-
['bun', ['bun.lockb', 'bunfig.toml']],
|
|
16
|
-
['npm', ['package-lock.json', 'node_modules/.package-lock.json']],
|
|
17
|
-
[
|
|
18
|
-
'pnpm',
|
|
19
|
-
['pnpm-lock.yaml', 'pnpm-workspace.yaml', 'node_modules/.pnpm'],
|
|
20
|
-
],
|
|
21
|
-
['yarn', ['yarn.lock']],
|
|
22
|
-
]);
|
|
23
|
-
export const isProjectTools = (str) => knownTools.has(str);
|
|
24
|
-
export const asProjectTools = (str) => {
|
|
25
|
-
if (!isProjectTools(str)) {
|
|
26
|
-
throw new Error(`Invalid dashboard tool: ${str}`);
|
|
27
|
-
}
|
|
28
|
-
return str;
|
|
29
|
-
};
|
|
30
|
-
export const inferTools = (manifest, folder, scurry) => {
|
|
31
|
-
const tools = [];
|
|
32
|
-
// check if known tools names are found in the manifest file
|
|
33
|
-
for (const knownName of knownTools.keys()) {
|
|
34
|
-
if (Object.hasOwn(manifest, knownName) ||
|
|
35
|
-
(manifest.engines && Object.hasOwn(manifest.engines, knownName))) {
|
|
36
|
-
tools.push(asProjectTools(knownName));
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// check for known file names
|
|
40
|
-
for (const [knownName, files] of knownTools) {
|
|
41
|
-
for (const file of files) {
|
|
42
|
-
if (scurry.lstatSync(folder.resolve(file))) {
|
|
43
|
-
tools.push(asProjectTools(knownName));
|
|
44
|
-
break;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// defaults to js if no tools are found
|
|
49
|
-
if (tools.length === 0) {
|
|
50
|
-
tools.push('js');
|
|
51
|
-
}
|
|
52
|
-
return tools;
|
|
53
|
-
};
|
|
54
|
-
export const getReadablePath = (path) => path.replace(homedir(), '~');
|
|
55
|
-
export const getDashboardProjectData = (folder, { packageJson, scurry, }) => {
|
|
56
|
-
let manifest;
|
|
57
|
-
try {
|
|
58
|
-
manifest = packageJson.read(folder.fullpath());
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
const path = folder.fullpath();
|
|
64
|
-
return {
|
|
65
|
-
name: manifest.name || folder.name,
|
|
66
|
-
readablePath: getReadablePath(path),
|
|
67
|
-
path,
|
|
68
|
-
manifest,
|
|
69
|
-
tools: inferTools(manifest, folder, scurry),
|
|
70
|
-
mtime: folder.lstatSync()?.mtimeMs,
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
export const getGraphProjectData = ({ packageJson, scurry, }, folder) => {
|
|
74
|
-
if (!folder) {
|
|
75
|
-
return {
|
|
76
|
-
tools: [],
|
|
77
|
-
vltInstalled: false,
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
return {
|
|
81
|
-
tools: inferTools(packageJson.read(folder.fullpath()), folder, scurry),
|
|
82
|
-
vltInstalled: !!scurry
|
|
83
|
-
.lstatSync(folder.resolve('node_modules/.vlt'))
|
|
84
|
-
?.isDirectory() ||
|
|
85
|
-
!!scurry
|
|
86
|
-
.lstatSync(folder.resolve('node_modules/.vlt-lock.json'))
|
|
87
|
-
?.isFile(),
|
|
88
|
-
};
|
|
89
|
-
};
|
|
90
|
-
//# sourceMappingURL=project-info.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"project-info.js","sourceRoot":"","sources":["../../src/project-info.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageJson } from '@vltpkg/package-json'\nimport type { Manifest } from '@vltpkg/types'\nimport { homedir } from 'node:os'\nimport type { PathBase, PathScurry } from 'path-scurry'\n\nexport type ProjectTools =\n | 'vlt'\n | 'node'\n | 'deno'\n | 'bun'\n | 'npm'\n | 'pnpm'\n | 'yarn'\n | 'js'\n\nexport type DashboardProjectData = {\n name: string\n readablePath: string\n path: string\n manifest: Manifest\n tools: ProjectTools[]\n mtime?: number\n}\n\nexport type GraphProjectData = {\n tools: ProjectTools[]\n vltInstalled: boolean\n}\n\nconst knownTools = new Map<ProjectTools, string[]>([\n [\n 'vlt',\n [\n 'vlt-lock.json',\n 'vlt-workspaces.json',\n 'vlt.json',\n 'node_modules/.vlt',\n 'node_modules/.vlt-lock.json',\n ],\n ],\n ['node', []],\n ['deno', ['deno.json']],\n ['bun', ['bun.lockb', 'bunfig.toml']],\n ['npm', ['package-lock.json', 'node_modules/.package-lock.json']],\n [\n 'pnpm',\n ['pnpm-lock.yaml', 'pnpm-workspace.yaml', 'node_modules/.pnpm'],\n ],\n ['yarn', ['yarn.lock']],\n])\n\nexport const isProjectTools = (str: string): str is ProjectTools =>\n knownTools.has(str as ProjectTools)\n\nexport const asProjectTools = (str: string): ProjectTools => {\n if (!isProjectTools(str)) {\n throw new Error(`Invalid dashboard tool: ${str}`)\n }\n return str\n}\n\nexport const inferTools = (\n manifest: Manifest,\n folder: PathBase,\n scurry: PathScurry,\n) => {\n const tools: ProjectTools[] = []\n // check if known tools names are found in the manifest file\n for (const knownName of knownTools.keys()) {\n if (\n Object.hasOwn(manifest, knownName) ||\n (manifest.engines && Object.hasOwn(manifest.engines, knownName))\n ) {\n tools.push(asProjectTools(knownName))\n }\n }\n\n // check for known file names\n for (const [knownName, files] of knownTools) {\n for (const file of files) {\n if (scurry.lstatSync(folder.resolve(file))) {\n tools.push(asProjectTools(knownName))\n break\n }\n }\n }\n\n // defaults to js if no tools are found\n if (tools.length === 0) {\n tools.push('js')\n }\n return tools\n}\n\nexport const getReadablePath = (path: string) =>\n path.replace(homedir(), '~')\n\nexport const getDashboardProjectData = (\n folder: PathBase,\n {\n packageJson,\n scurry,\n }: { packageJson: PackageJson; scurry: PathScurry },\n): DashboardProjectData | undefined => {\n let manifest\n try {\n manifest = packageJson.read(folder.fullpath())\n } catch {\n return\n }\n const path = folder.fullpath()\n return {\n name: manifest.name || folder.name,\n readablePath: getReadablePath(path),\n path,\n manifest,\n tools: inferTools(manifest, folder, scurry),\n mtime: folder.lstatSync()?.mtimeMs,\n }\n}\n\nexport const getGraphProjectData = (\n {\n packageJson,\n scurry,\n }: { packageJson: PackageJson; scurry: PathScurry },\n folder?: PathBase,\n) => {\n if (!folder) {\n return {\n tools: [],\n vltInstalled: false,\n }\n }\n\n return {\n tools: inferTools(\n packageJson.read(folder.fullpath()),\n folder,\n scurry,\n ),\n vltInstalled:\n !!scurry\n .lstatSync(folder.resolve('node_modules/.vlt'))\n ?.isDirectory() ||\n !!scurry\n .lstatSync(folder.resolve('node_modules/.vlt-lock.json'))\n ?.isFile(),\n }\n}\n"]}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { PathBase, PathScurry } from 'path-scurry';
|
|
2
|
-
type ProjectFolderOptions = {
|
|
3
|
-
/**
|
|
4
|
-
* The standard path to read from, defaults to the user's home directory.
|
|
5
|
-
*/
|
|
6
|
-
path?: string;
|
|
7
|
-
/**
|
|
8
|
-
* A {@link PathScurry} object, for use in globs.
|
|
9
|
-
*/
|
|
10
|
-
scurry: PathScurry;
|
|
11
|
-
/**
|
|
12
|
-
* A list of user defined project paths set in the configuration file.
|
|
13
|
-
*/
|
|
14
|
-
userDefinedProjectPaths: string[];
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Retrieves folders from a given directory, if that directory is
|
|
18
|
-
* recognized to be the current cli project root folder then we
|
|
19
|
-
* proceed to read its siblings.
|
|
20
|
-
*
|
|
21
|
-
* Traverses nested directory recursively until project folders can
|
|
22
|
-
* be find, always stopping at the first level where a package.json
|
|
23
|
-
* is present.
|
|
24
|
-
*/
|
|
25
|
-
export declare const readProjectFolders: ({ path, scurry, userDefinedProjectPaths, }: ProjectFolderOptions) => Promise<PathBase[]>;
|
|
26
|
-
export {};
|
|
27
|
-
//# sourceMappingURL=read-project-folders.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read-project-folders.d.ts","sourceRoot":"","sources":["../../src/read-project-folders.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAOvD,KAAK,oBAAoB,GAAG;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,MAAM,EAAE,UAAU,CAAA;IAClB;;OAEG;IACH,uBAAuB,EAAE,MAAM,EAAE,CAAA;CAClC,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,+CAI5B,oBAAoB,KAAG,OAAO,CAAC,QAAQ,EAAE,CAiC3C,CAAA"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { availableParallelism, homedir } from 'os';
|
|
2
|
-
import { callLimit } from 'promise-call-limit';
|
|
3
|
-
import { ignoredHomedirFolderNames } from "./ignored-homedir-folder-names.js";
|
|
4
|
-
const limit = Math.max(availableParallelism() - 1, 1) * 8;
|
|
5
|
-
const home = homedir();
|
|
6
|
-
/**
|
|
7
|
-
* Retrieves folders from a given directory, if that directory is
|
|
8
|
-
* recognized to be the current cli project root folder then we
|
|
9
|
-
* proceed to read its siblings.
|
|
10
|
-
*
|
|
11
|
-
* Traverses nested directory recursively until project folders can
|
|
12
|
-
* be find, always stopping at the first level where a package.json
|
|
13
|
-
* is present.
|
|
14
|
-
*/
|
|
15
|
-
export const readProjectFolders = async ({ path = home, scurry, userDefinedProjectPaths, }) => {
|
|
16
|
-
const result = [];
|
|
17
|
-
const homeEntry = scurry.cwd.resolve(home);
|
|
18
|
-
// read entry point folders to collect which ones
|
|
19
|
-
// should we recursively traverse to collect project folders
|
|
20
|
-
const paths = userDefinedProjectPaths.length ? userDefinedProjectPaths : [path];
|
|
21
|
-
const step = (entry) => async () => {
|
|
22
|
-
for (const child of await entry.readdir()) {
|
|
23
|
-
if (collectResult(child, result, scurry, entry === homeEntry)) {
|
|
24
|
-
traverse.push(step(child));
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
let traverse = (await Promise.all(paths.map(path => scurry.lstat(path))))
|
|
29
|
-
.filter(p => !!p)
|
|
30
|
-
.map(step);
|
|
31
|
-
// have to do it in phases this way because pushing into the queue
|
|
32
|
-
// during the promise-call-limit confuses its tracking.
|
|
33
|
-
let t;
|
|
34
|
-
do {
|
|
35
|
-
t = traverse;
|
|
36
|
-
traverse = [];
|
|
37
|
-
await callLimit(t, { limit });
|
|
38
|
-
} while (traverse.length);
|
|
39
|
-
return result;
|
|
40
|
-
};
|
|
41
|
-
// collectResult will return true in case it finds a directory that
|
|
42
|
-
// has no package.json file in it but that can still be potentially
|
|
43
|
-
// recursive traversed in the future
|
|
44
|
-
const collectResult = (entry, result, scurry, fromHome) => {
|
|
45
|
-
if (!entry.isDirectory() ||
|
|
46
|
-
entry.isSymbolicLink() ||
|
|
47
|
-
entry.name === 'node_modules' ||
|
|
48
|
-
(fromHome &&
|
|
49
|
-
ignoredHomedirFolderNames.includes(entry.name.toLowerCase())) ||
|
|
50
|
-
entry.name.startsWith('.')) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
const resolved = entry.fullpath();
|
|
54
|
-
const statPackageJson = scurry.lstatSync(`${resolved}/package.json`);
|
|
55
|
-
const hasDotGit = scurry.lstatSync(`${resolved}/.git`);
|
|
56
|
-
const hasValidPackageJson = statPackageJson &&
|
|
57
|
-
statPackageJson.isFile() &&
|
|
58
|
-
!statPackageJson.isSymbolicLink();
|
|
59
|
-
if (hasValidPackageJson)
|
|
60
|
-
result.push(entry);
|
|
61
|
-
// do not descend if we're in a root of a git project or C project
|
|
62
|
-
// TODO: make this more consistent with how we determine
|
|
63
|
-
// "project-root-ness" in the walk up the folder tree.
|
|
64
|
-
return !hasDotGit && !hasValidPackageJson;
|
|
65
|
-
};
|
|
66
|
-
//# sourceMappingURL=read-project-folders.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read-project-folders.js","sourceRoot":"","sources":["../../src/read-project-folders.ts"],"names":[],"mappings":"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","sourcesContent":["import { availableParallelism, homedir } from 'os'\nimport type { PathBase, PathScurry } from 'path-scurry'\nimport { callLimit } from 'promise-call-limit'\nimport { ignoredHomedirFolderNames } from './ignored-homedir-folder-names.ts'\n\nconst limit = Math.max(availableParallelism() - 1, 1) * 8\nconst home = homedir()\n\ntype ProjectFolderOptions = {\n /**\n * The standard path to read from, defaults to the user's home directory.\n */\n path?: string\n /**\n * A {@link PathScurry} object, for use in globs.\n */\n scurry: PathScurry\n /**\n * A list of user defined project paths set in the configuration file.\n */\n userDefinedProjectPaths: string[]\n}\n\n/**\n * Retrieves folders from a given directory, if that directory is\n * recognized to be the current cli project root folder then we\n * proceed to read its siblings.\n *\n * Traverses nested directory recursively until project folders can\n * be find, always stopping at the first level where a package.json\n * is present.\n */\nexport const readProjectFolders = async ({\n path = home,\n scurry,\n userDefinedProjectPaths,\n}: ProjectFolderOptions): Promise<PathBase[]> => {\n const result: PathBase[] = []\n const homeEntry = scurry.cwd.resolve(home)\n\n // read entry point folders to collect which ones\n // should we recursively traverse to collect project folders\n const paths =\n userDefinedProjectPaths.length ? userDefinedProjectPaths : [path]\n\n const step = (entry: PathBase) => async () => {\n for (const child of await entry.readdir()) {\n if (collectResult(child, result, scurry, entry === homeEntry)) {\n traverse.push(step(child))\n }\n }\n }\n\n let traverse = (\n await Promise.all(paths.map(path => scurry.lstat(path)))\n )\n .filter(p => !!p)\n .map(step)\n\n // have to do it in phases this way because pushing into the queue\n // during the promise-call-limit confuses its tracking.\n let t: (() => Promise<void>)[]\n do {\n t = traverse\n traverse = []\n await callLimit(t, { limit })\n } while (traverse.length)\n\n return result\n}\n\n// collectResult will return true in case it finds a directory that\n// has no package.json file in it but that can still be potentially\n// recursive traversed in the future\nconst collectResult = (\n entry: PathBase,\n result: PathBase[],\n scurry: PathScurry,\n fromHome: boolean,\n): boolean => {\n if (\n !entry.isDirectory() ||\n entry.isSymbolicLink() ||\n entry.name === 'node_modules' ||\n (fromHome &&\n ignoredHomedirFolderNames.includes(entry.name.toLowerCase())) ||\n entry.name.startsWith('.')\n ) {\n return false\n }\n\n const resolved = entry.fullpath()\n const statPackageJson = scurry.lstatSync(`${resolved}/package.json`)\n const hasDotGit = scurry.lstatSync(`${resolved}/.git`)\n const hasValidPackageJson =\n statPackageJson &&\n statPackageJson.isFile() &&\n !statPackageJson.isSymbolicLink()\n\n if (hasValidPackageJson) result.push(entry)\n\n // do not descend if we're in a root of a git project or C project\n // TODO: make this more consistent with how we determine\n // \"project-root-ness\" in the walk up the folder tree.\n return !hasDotGit && !hasValidPackageJson\n}\n"]}
|