@vltpkg/cli-sdk 0.0.0-21 → 0.0.0-23
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/esm/commands/install/reporter.d.ts +1 -1
- package/dist/esm/commands/install/reporter.d.ts.map +1 -1
- package/dist/esm/commands/install/reporter.js +8 -10
- package/dist/esm/commands/install/reporter.js.map +1 -1
- package/dist/esm/commands/pack.d.ts +15 -3
- package/dist/esm/commands/pack.d.ts.map +1 -1
- package/dist/esm/commands/pack.js +73 -16
- package/dist/esm/commands/pack.js.map +1 -1
- package/dist/esm/commands/pkg.d.ts +1 -1
- package/dist/esm/commands/pkg.d.ts.map +1 -1
- package/dist/esm/commands/pkg.js +6 -6
- package/dist/esm/commands/pkg.js.map +1 -1
- package/dist/esm/commands/publish.d.ts +3 -2
- package/dist/esm/commands/publish.d.ts.map +1 -1
- package/dist/esm/commands/publish.js +78 -17
- package/dist/esm/commands/publish.js.map +1 -1
- package/dist/esm/commands/version.d.ts +8 -4
- package/dist/esm/commands/version.d.ts.map +1 -1
- package/dist/esm/commands/version.js +89 -20
- package/dist/esm/commands/version.js.map +1 -1
- package/dist/esm/config/definition.d.ts.map +1 -1
- package/dist/esm/config/definition.js +0 -1
- package/dist/esm/config/definition.js.map +1 -1
- package/dist/esm/output.d.ts +1 -1
- package/dist/esm/output.d.ts.map +1 -1
- package/dist/esm/output.js +1 -1
- package/dist/esm/output.js.map +1 -1
- package/dist/esm/view.d.ts +1 -1
- package/dist/esm/view.d.ts.map +1 -1
- package/dist/esm/view.js +1 -1
- package/dist/esm/view.js.map +1 -1
- package/package.json +37 -36
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../../src/commands/install/reporter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../../../src/commands/install/reporter.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAkFzC,qBAAa,eAAgB,SAAQ,SAAS;;IAG5C,KAAK;IAIC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAKvD,KAAK,CAAC,GAAG,EAAE,OAAO;CAGnB"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { emitter } from '@vltpkg/output';
|
|
2
2
|
import { Box, render, Text } from 'ink';
|
|
3
3
|
import Spinner from 'ink-spinner';
|
|
4
|
-
import { createElement as $, Fragment,
|
|
5
|
-
import { stdout } from "../../output.js";
|
|
4
|
+
import { createElement as $, Fragment, useEffect, useState, } from 'react';
|
|
6
5
|
import { ViewClass } from "../../view.js";
|
|
7
6
|
import { asError } from '@vltpkg/types';
|
|
8
7
|
const GraphStep = ({ text, step }) => {
|
|
@@ -10,11 +9,11 @@ const GraphStep = ({ text, step }) => {
|
|
|
10
9
|
return $(Text, { color: 'gray' }, text);
|
|
11
10
|
}
|
|
12
11
|
if (step.state === 'in_progress') {
|
|
13
|
-
return $(Text, { color: 'yellow' }, text, $(Spinner, { type: 'dots' }));
|
|
12
|
+
return $(Text, { color: 'yellow' }, text + ' ', $(Spinner, { type: 'dots' }));
|
|
14
13
|
}
|
|
15
14
|
return $(Text, { color: 'green' }, text, ' ✓');
|
|
16
15
|
};
|
|
17
|
-
const App = () => {
|
|
16
|
+
const App = ({ trailer }) => {
|
|
18
17
|
const [requests, setRequests] = useState(0);
|
|
19
18
|
const [steps, setSteps] = useState({
|
|
20
19
|
build: {
|
|
@@ -27,12 +26,12 @@ const App = () => {
|
|
|
27
26
|
state: 'waiting',
|
|
28
27
|
},
|
|
29
28
|
});
|
|
30
|
-
|
|
29
|
+
useEffect(() => {
|
|
31
30
|
const update = () => setRequests(p => p + 1);
|
|
32
31
|
emitter.on('request', update);
|
|
33
32
|
return () => emitter.off('request', update);
|
|
34
33
|
}, []);
|
|
35
|
-
|
|
34
|
+
useEffect(() => {
|
|
36
35
|
const update = ({ step, state }) => {
|
|
37
36
|
setSteps(p => ({
|
|
38
37
|
...p,
|
|
@@ -48,16 +47,15 @@ const App = () => {
|
|
|
48
47
|
return $(Fragment, null, $(Box, null, ...['build', 'actual', 'reify'].map((step, idx, list) => {
|
|
49
48
|
const separator = idx === list.length - 1 ? '' : ' > ';
|
|
50
49
|
return $(Text, { key: step }, $(GraphStep, { text: step, step: steps[step] }), $(Text, { color: 'gray' }, separator));
|
|
51
|
-
})), requests > 0 ? $(Text, null, `${requests} requests`) : null);
|
|
50
|
+
})), requests > 0 ? $(Text, null, `${requests} requests`) : null, trailer ? $(Text, null, trailer) : null);
|
|
52
51
|
};
|
|
53
52
|
export class InstallReporter extends ViewClass {
|
|
54
53
|
#instance = null;
|
|
55
54
|
start() {
|
|
56
55
|
this.#instance = render($(App));
|
|
57
56
|
}
|
|
58
|
-
done(_result, { time }) {
|
|
59
|
-
this.#instance?.
|
|
60
|
-
stdout(`Done in ${time}ms`);
|
|
57
|
+
async done(_result, { time }) {
|
|
58
|
+
this.#instance?.rerender($(App, { trailer: `Done in ${time}ms` }));
|
|
61
59
|
return undefined;
|
|
62
60
|
}
|
|
63
61
|
error(err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../../src/commands/install/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAEvC,OAAO,OAAO,MAAM,aAAa,CAAA;AACjC,OAAO,EACL,aAAa,IAAI,CAAC,EAClB,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../../src/commands/install/reporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { emitter } from '@vltpkg/output'\nimport type { Events } from '@vltpkg/output'\nimport { Box, render, Text } from 'ink'\nimport type { Instance } from 'ink'\nimport Spinner from 'ink-spinner'\nimport {\n createElement as $,\n Fragment,\n useEffect,\n useState,\n} from 'react'\nimport { ViewClass } from '../../view.ts'\nimport { asError } from '@vltpkg/types'\n\ntype Step = {\n state: 'waiting' | 'in_progress' | 'completed'\n}\n\nconst GraphStep = ({ text, step }: { text: string; step: Step }) => {\n if (step.state === 'waiting') {\n return $(Text, { color: 'gray' }, text)\n }\n if (step.state === 'in_progress') {\n return $(\n Text,\n { color: 'yellow' },\n text + ' ',\n $(Spinner, { type: 'dots' }),\n )\n }\n return $(Text, { color: 'green' }, text, ' ✓')\n}\n\nconst App = ({ trailer }: { trailer?: string }) => {\n const [requests, setRequests] = useState(0)\n\n const [steps, setSteps] = useState<\n Record<Events['graphStep']['step'], Step>\n >({\n build: {\n state: 'waiting',\n },\n actual: {\n state: 'waiting',\n },\n reify: {\n state: 'waiting',\n },\n })\n\n useEffect(() => {\n const update = () => setRequests(p => p + 1)\n emitter.on('request', update)\n return () => emitter.off('request', update)\n }, [])\n\n useEffect(() => {\n const update = ({ step, state }: Events['graphStep']) => {\n setSteps(p => ({\n ...p,\n [step]: {\n ...p[step],\n state: state === 'start' ? 'in_progress' : 'completed',\n },\n }))\n }\n emitter.on('graphStep', update)\n return () => emitter.off('graphStep', update)\n }, [])\n\n return $(\n Fragment,\n null,\n $(\n Box,\n null,\n ...(['build', 'actual', 'reify'] as const).map(\n (step, idx, list) => {\n const separator = idx === list.length - 1 ? '' : ' > '\n return $(\n Text,\n { key: step },\n $(GraphStep, { text: step, step: steps[step] }),\n $(Text, { color: 'gray' }, separator),\n )\n },\n ),\n ),\n requests > 0 ? $(Text, null, `${requests} requests`) : null,\n trailer ? $(Text, null, trailer) : null,\n )\n}\n\nexport class InstallReporter extends ViewClass {\n #instance: Instance | null = null\n\n start() {\n this.#instance = render($(App))\n }\n\n async done(_result: unknown, { time }: { time: number }) {\n this.#instance?.rerender($(App, { trailer: `Done in ${time}ms` }))\n return undefined\n }\n\n error(err: unknown) {\n this.#instance?.unmount(asError(err))\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CommandFn, CommandUsage } from '../index.ts';
|
|
2
|
+
import type { LoadedConfig } from '../config/index.ts';
|
|
2
3
|
export declare const usage: CommandUsage;
|
|
3
|
-
type
|
|
4
|
+
export type CommandResultSingle = {
|
|
4
5
|
id: string;
|
|
5
6
|
name: string;
|
|
6
7
|
version: string;
|
|
@@ -11,10 +12,21 @@ type CommandResult = {
|
|
|
11
12
|
shasum?: string;
|
|
12
13
|
integrity?: string;
|
|
13
14
|
};
|
|
15
|
+
export type CommandResult = CommandResultSingle | CommandResultSingle[];
|
|
14
16
|
export declare const views: {
|
|
15
|
-
readonly human: (
|
|
17
|
+
readonly human: (results: CommandResult) => string;
|
|
16
18
|
readonly json: (r: CommandResult) => CommandResult;
|
|
17
19
|
};
|
|
18
20
|
export declare const command: CommandFn<CommandResult>;
|
|
19
|
-
export {
|
|
21
|
+
export declare const commandSingle: (location: string, conf: LoadedConfig) => Promise<{
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
version: string;
|
|
25
|
+
filename: string;
|
|
26
|
+
files: string[];
|
|
27
|
+
size: number;
|
|
28
|
+
unpackedSize: number;
|
|
29
|
+
shasum: string | undefined;
|
|
30
|
+
integrity: string | undefined;
|
|
31
|
+
}>;
|
|
20
32
|
//# sourceMappingURL=pack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../../src/commands/pack.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../../src/commands/pack.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAM1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtD,eAAO,MAAM,KAAK,EAAE,YAchB,CAAA;AAEJ,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,mBAAmB,EAAE,CAAA;AAEzB,eAAO,MAAM,KAAK;;;CAoBuB,CAAA;AAEzC,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,aAAa,CAyD5C,CAAA;AAED,eAAO,MAAM,aAAa,aACd,MAAM,QACV,YAAY;;;;;;;;;;EA0DnB,CAAA"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { writeFile } from 'node:fs/promises';
|
|
2
|
-
import { dirname, join } from 'node:path';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import assert from 'node:assert';
|
|
4
4
|
import { run } from '@vltpkg/run';
|
|
5
5
|
import { commandUsage } from "../config/usage.js";
|
|
6
6
|
import { packTarball } from "../pack-tarball.js";
|
|
7
7
|
import prettyBytes from 'pretty-bytes';
|
|
8
|
+
import { actual } from '@vltpkg/graph';
|
|
9
|
+
import { Query } from '@vltpkg/query';
|
|
10
|
+
import { error } from '@vltpkg/error-cause';
|
|
8
11
|
export const usage = () => commandUsage({
|
|
9
12
|
command: 'pack',
|
|
10
13
|
usage: '',
|
|
@@ -19,25 +22,79 @@ export const usage = () => commandUsage({
|
|
|
19
22
|
},
|
|
20
23
|
});
|
|
21
24
|
export const views = {
|
|
22
|
-
human:
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
25
|
+
human: results => {
|
|
26
|
+
const item = (r) => {
|
|
27
|
+
const lines = [
|
|
28
|
+
`📦 Package: ${r.id}`,
|
|
29
|
+
`📄 File: ${r.filename}`,
|
|
30
|
+
`📁 ${r.files.length} Files`,
|
|
31
|
+
...r.files.map(f => ` - ${f}`),
|
|
32
|
+
`📊 Package Size: ${prettyBytes(r.size)}`,
|
|
33
|
+
`📂 Unpacked Size: ${prettyBytes(r.unpackedSize)}`,
|
|
34
|
+
];
|
|
35
|
+
if (r.shasum)
|
|
36
|
+
lines.push(`🔒 Shasum: ${r.shasum}`);
|
|
37
|
+
if (r.integrity)
|
|
38
|
+
lines.push(`🔐 Integrity: ${r.integrity}`);
|
|
39
|
+
return lines.join('\n');
|
|
40
|
+
};
|
|
41
|
+
return Array.isArray(results) ?
|
|
42
|
+
results.map(item).join('\n\n')
|
|
43
|
+
: item(results);
|
|
36
44
|
},
|
|
37
45
|
json: r => r,
|
|
38
46
|
};
|
|
39
47
|
export const command = async (conf) => {
|
|
40
|
-
const
|
|
48
|
+
const { options, projectRoot } = conf;
|
|
49
|
+
const queryString = conf.get('scope');
|
|
50
|
+
const paths = conf.get('workspace');
|
|
51
|
+
const groups = conf.get('workspace-group');
|
|
52
|
+
const recursive = conf.get('recursive');
|
|
53
|
+
const locations = [];
|
|
54
|
+
let single = null;
|
|
55
|
+
if (queryString) {
|
|
56
|
+
const graph = actual.load({
|
|
57
|
+
...options,
|
|
58
|
+
mainManifest: options.packageJson.read(projectRoot),
|
|
59
|
+
monorepo: options.monorepo,
|
|
60
|
+
loadManifests: false,
|
|
61
|
+
});
|
|
62
|
+
const query = new Query({
|
|
63
|
+
graph,
|
|
64
|
+
specOptions: conf.options,
|
|
65
|
+
securityArchive: undefined,
|
|
66
|
+
});
|
|
67
|
+
const { nodes } = await query.search(queryString, {
|
|
68
|
+
signal: new AbortController().signal,
|
|
69
|
+
});
|
|
70
|
+
for (const node of nodes) {
|
|
71
|
+
const { location } = node.toJSON();
|
|
72
|
+
assert(location, error(`node ${node.id} has no location`, {
|
|
73
|
+
found: node,
|
|
74
|
+
}));
|
|
75
|
+
locations.push(resolve(projectRoot, location));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (paths?.length || groups?.length || recursive) {
|
|
79
|
+
for (const workspace of options.monorepo ?? []) {
|
|
80
|
+
locations.push(workspace.fullpath);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
single = options.packageJson.find(process.cwd()) ?? projectRoot;
|
|
85
|
+
}
|
|
86
|
+
if (single) {
|
|
87
|
+
return commandSingle(single, conf);
|
|
88
|
+
}
|
|
89
|
+
assert(locations.length > 0, error('No workspaces or query results found'));
|
|
90
|
+
const results = [];
|
|
91
|
+
for (const location of locations) {
|
|
92
|
+
results.push(await commandSingle(location, conf));
|
|
93
|
+
}
|
|
94
|
+
return results;
|
|
95
|
+
};
|
|
96
|
+
export const commandSingle = async (location, conf) => {
|
|
97
|
+
const manifestPath = conf.options.packageJson.find(location);
|
|
41
98
|
assert(manifestPath, 'No package.json found');
|
|
42
99
|
const manifestDir = dirname(manifestPath);
|
|
43
100
|
const manifest = conf.options.packageJson.read(manifestDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../../src/commands/pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../../src/commands/pack.ts"],"names":[],"mappings":"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","sourcesContent":["import { writeFile } from 'node:fs/promises'\nimport { dirname, join, resolve } from 'node:path'\nimport assert from 'node:assert'\nimport { run } from '@vltpkg/run'\nimport { commandUsage } from '../config/usage.ts'\nimport type { CommandFn, CommandUsage } from '../index.ts'\nimport { packTarball } from '../pack-tarball.ts'\nimport type { Views } from '../view.ts'\nimport prettyBytes from 'pretty-bytes'\nimport { actual } from '@vltpkg/graph'\nimport { Query } from '@vltpkg/query'\nimport type { LoadedConfig } from '../config/index.ts'\nimport { error } from '@vltpkg/error-cause'\n\nexport const usage: CommandUsage = () =>\n commandUsage({\n command: 'pack',\n usage: '',\n description: `Create a tarball from a package in the current directory or specified folder.\n \n The tarball will be saved to the current directory with the name\n <name>-<version>.tgz.`,\n options: {\n 'dry-run': {\n description:\n 'Show what would be packed without creating a tarball',\n },\n },\n })\n\nexport type CommandResultSingle = {\n id: string\n name: string\n version: string\n filename: string\n files: string[]\n size: number\n unpackedSize: number\n shasum?: string\n integrity?: string\n}\n\nexport type CommandResult =\n | CommandResultSingle\n | CommandResultSingle[]\n\nexport const views = {\n human: results => {\n const item = (r: CommandResultSingle) => {\n const lines = [\n `📦 Package: ${r.id}`,\n `📄 File: ${r.filename}`,\n `📁 ${r.files.length} Files`,\n ...r.files.map(f => ` - ${f}`),\n `📊 Package Size: ${prettyBytes(r.size)}`,\n `📂 Unpacked Size: ${prettyBytes(r.unpackedSize)}`,\n ]\n if (r.shasum) lines.push(`🔒 Shasum: ${r.shasum}`)\n if (r.integrity) lines.push(`🔐 Integrity: ${r.integrity}`)\n return lines.join('\\n')\n }\n return Array.isArray(results) ?\n results.map(item).join('\\n\\n')\n : item(results)\n },\n json: r => r,\n} as const satisfies Views<CommandResult>\n\nexport const command: CommandFn<CommandResult> = async conf => {\n const { options, projectRoot } = conf\n const queryString = conf.get('scope')\n const paths = conf.get('workspace')\n const groups = conf.get('workspace-group')\n const recursive = conf.get('recursive')\n\n const locations: string[] = []\n let single: string | null = null\n\n if (queryString) {\n const graph = actual.load({\n ...options,\n mainManifest: options.packageJson.read(projectRoot),\n monorepo: options.monorepo,\n loadManifests: false,\n })\n const query = new Query({\n graph,\n specOptions: conf.options,\n securityArchive: undefined,\n })\n const { nodes } = await query.search(queryString, {\n signal: new AbortController().signal,\n })\n for (const node of nodes) {\n const { location } = node.toJSON()\n assert(\n location,\n error(`node ${node.id} has no location`, {\n found: node,\n }),\n )\n locations.push(resolve(projectRoot, location))\n }\n } else if (paths?.length || groups?.length || recursive) {\n for (const workspace of options.monorepo ?? []) {\n locations.push(workspace.fullpath)\n }\n } else {\n single = options.packageJson.find(process.cwd()) ?? projectRoot\n }\n\n if (single) {\n return commandSingle(single, conf)\n }\n\n assert(\n locations.length > 0,\n error('No workspaces or query results found'),\n )\n\n const results: CommandResultSingle[] = []\n for (const location of locations) {\n results.push(await commandSingle(location, conf))\n }\n return results\n}\n\nexport const commandSingle = async (\n location: string,\n conf: LoadedConfig,\n) => {\n const manifestPath = conf.options.packageJson.find(location)\n assert(manifestPath, 'No package.json found')\n const manifestDir = dirname(manifestPath)\n const manifest = conf.options.packageJson.read(manifestDir)\n\n const isDryRun = conf.options['dry-run']\n const runOptions = {\n cwd: manifestDir,\n projectRoot: conf.projectRoot,\n packageJson: conf.options.packageJson,\n manifest,\n ignoreMissing: true,\n ignorePrePost: true,\n }\n\n await run({\n ...runOptions,\n arg0: 'prepack',\n })\n\n await run({\n ...runOptions,\n arg0: 'prepare',\n })\n\n const {\n name,\n version,\n filename,\n tarballData,\n unpackedSize,\n files,\n integrity,\n shasum,\n } = await packTarball(manifest, manifestDir, conf)\n\n if (!isDryRun) {\n await writeFile(join(manifestDir, filename), tarballData)\n }\n\n await run({\n ...runOptions,\n arg0: 'postpack',\n })\n\n return {\n id: `${name}@${version}`,\n name,\n version,\n filename,\n files,\n size: tarballData.length,\n unpackedSize,\n shasum,\n integrity,\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CommandFn, CommandUsage } from '../index.ts';
|
|
2
2
|
export declare const views: {
|
|
3
|
-
readonly human: (
|
|
3
|
+
readonly human: (results_: unknown, _: import("../view.ts").ViewOptions, config: import("../config/index.ts").ParsedConfig) => string;
|
|
4
4
|
};
|
|
5
5
|
export declare const usage: CommandUsage;
|
|
6
6
|
export declare const command: CommandFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.d.ts","sourceRoot":"","sources":["../../../src/commands/pkg.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pkg.d.ts","sourceRoot":"","sources":["../../../src/commands/pkg.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAmB1D,eAAO,MAAM,KAAK;;CAmBQ,CAAA;AAE1B,eAAO,MAAM,KAAK,EAAE,YAoChB,CAAA;AAEJ,eAAO,MAAM,OAAO,EAAE,SA8FrB,CAAA"}
|
package/dist/esm/commands/pkg.js
CHANGED
|
@@ -10,8 +10,8 @@ import { Query } from '@vltpkg/query';
|
|
|
10
10
|
import { SecurityArchive } from '@vltpkg/security-archive';
|
|
11
11
|
const json = (results) => JSON.stringify(results, null, 2);
|
|
12
12
|
export const views = {
|
|
13
|
-
human: (
|
|
14
|
-
const results =
|
|
13
|
+
human: (results_, _, config) => {
|
|
14
|
+
const results = results_;
|
|
15
15
|
// `vlt pkg init` is an alias for `vlt init`
|
|
16
16
|
// use the same output handling
|
|
17
17
|
if (config.positionals[0] === 'init') {
|
|
@@ -124,12 +124,12 @@ export const command = async (conf) => {
|
|
|
124
124
|
case 'pick':
|
|
125
125
|
return pick(manifests, args);
|
|
126
126
|
case 'set':
|
|
127
|
-
return set(
|
|
127
|
+
return set(manifests, pkg, args);
|
|
128
128
|
case 'rm':
|
|
129
129
|
case 'remove':
|
|
130
130
|
case 'unset':
|
|
131
131
|
case 'delete':
|
|
132
|
-
return rm(
|
|
132
|
+
return rm(manifests, pkg, args);
|
|
133
133
|
default: {
|
|
134
134
|
throw error('Unrecognized pkg command', {
|
|
135
135
|
code: 'EUSAGE',
|
|
@@ -182,7 +182,7 @@ const pick = (manifests, args) => {
|
|
|
182
182
|
args.reduce((acc, key) => dotProp.set(acc, key, dotProp.get(manifest.manifest, key)), {})
|
|
183
183
|
: manifest.manifest);
|
|
184
184
|
};
|
|
185
|
-
const set = (
|
|
185
|
+
const set = (manifests, pkg, args) => {
|
|
186
186
|
if (args.length < 1) {
|
|
187
187
|
throw error('set requires arguments', { code: 'EUSAGE' });
|
|
188
188
|
}
|
|
@@ -199,7 +199,7 @@ const set = (_conf, manifests, pkg, args) => {
|
|
|
199
199
|
pkg.write(location, res);
|
|
200
200
|
}
|
|
201
201
|
};
|
|
202
|
-
const rm = (
|
|
202
|
+
const rm = (manifests, pkg, args) => {
|
|
203
203
|
if (args.length < 1) {
|
|
204
204
|
throw error('rm requires arguments', { code: 'EUSAGE' });
|
|
205
205
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/commands/pkg.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from 'node:path'\nimport * as dotProp from '@vltpkg/dot-prop'\nimport { error } from '@vltpkg/error-cause'\nimport type { PackageJson } from '@vltpkg/package-json'\nimport type { NormalizedManifest } from '@vltpkg/types'\nimport assert from 'node:assert'\nimport type { LoadedConfig } from '../config/index.ts'\nimport { commandUsage } from '../config/usage.ts'\nimport type { CommandFn, CommandUsage } from '../index.ts'\nimport { init } from '@vltpkg/init'\nimport type { InitFileResults } from '@vltpkg/init'\nimport type { Views } from '../view.ts'\nimport { views as initViews } from './init.ts'\nimport { actual, GraphModifier } from '@vltpkg/graph'\nimport { Query } from '@vltpkg/query'\nimport { SecurityArchive } from '@vltpkg/security-archive'\nimport type { Monorepo as _Monorepo } from '@vltpkg/workspaces'\nimport type { QueryResponseNode } from '@vltpkg/query'\n\ntype ManifestWithLocation = {\n manifest: NormalizedManifest\n location: string\n}\n\nconst json = (\n results: ManifestWithLocation[] | ManifestWithLocation,\n) => JSON.stringify(results, null, 2)\n\nexport const views = {\n human: (_results, _options, config) => {\n const results = _results as\n | ManifestWithLocation[]\n | ManifestWithLocation\n // `vlt pkg init` is an alias for `vlt init`\n // use the same output handling\n if (config.positionals[0] === 'init') {\n return initViews.human(results as InitFileResults)\n }\n\n return (\n Array.isArray(results) ?\n typeof results[0] === 'string' ?\n (results as unknown as string[]).join('\\n')\n : json(results)\n : json(results)\n )\n },\n} as const satisfies Views\n\nexport const usage: CommandUsage = () =>\n commandUsage({\n command: 'pkg',\n usage: '[<command>] [<args>]',\n description: 'Get or manipulate package.json values',\n subcommands: {\n get: {\n usage: '[<key>]',\n description: 'Get a single value',\n },\n init: {\n usage: '',\n description:\n 'Initialize a new package.json file in the current directory',\n },\n pick: {\n usage: '[<key> [<key> ...]]',\n description: 'Get multiple values or the entire package',\n },\n set: {\n usage: '<key>=<value> [<key>=<value> ...]',\n description: 'Set one or more key value pairs',\n },\n delete: {\n usage: '<key> [<key> ...]',\n description: 'Delete one or more keys from the package',\n },\n },\n examples: {\n 'set \"array[1].key=value\"': {\n description: 'Set a value on an object inside an array',\n },\n 'set \"array[]=value\"': {\n description: 'Append a value to an array',\n },\n },\n })\n\nexport const command: CommandFn = async conf => {\n const [sub, ...args] = conf.positionals\n if (sub === 'init') {\n return await init({ cwd: process.cwd() })\n }\n\n const pkg = conf.options.packageJson\n\n // Handle --scope option to get multiple manifests\n const scopeQueryString = conf.get('scope')\n let manifests: ManifestWithLocation[]\n\n if (scopeQueryString) {\n const modifiers = GraphModifier.maybeLoad(conf.options)\n const monorepo = conf.options.monorepo\n const mainManifest = conf.options.packageJson.read(\n conf.options.projectRoot,\n )\n const graph = actual.load({\n ...conf.options,\n mainManifest,\n modifiers,\n monorepo,\n loadManifests: false,\n })\n\n const securityArchive =\n Query.hasSecuritySelectors(scopeQueryString) ?\n await SecurityArchive.start({\n graph,\n specOptions: conf.options,\n })\n : undefined\n\n const query = new Query({\n graph,\n specOptions: conf.options,\n securityArchive,\n })\n\n const { nodes } = await query.search(scopeQueryString, {\n signal: new AbortController().signal,\n })\n\n // collects the paths of the nodes selected using --scope\n const scopePaths = nodes\n .filter(\n (n): n is QueryResponseNode & { location: string } =>\n n.location !== undefined,\n )\n .map(n => resolve(conf.options.projectRoot, n.location))\n\n // reads multiple manifests for each selected scope\n manifests = scopePaths.map(location => ({\n manifest: pkg.read(location),\n location,\n }))\n\n if (manifests.length === 0) {\n throw error('No matching package found using scope', {\n found: scopeQueryString,\n })\n }\n } else {\n // Single manifest mode\n const location = pkg.find() ?? conf.projectRoot\n manifests = [\n {\n manifest: pkg.read(location),\n location,\n },\n ]\n }\n\n switch (sub) {\n case 'get':\n return get(manifests, args)\n case 'pick':\n return pick(manifests, args)\n case 'set':\n return set(conf, manifests, pkg, args)\n case 'rm':\n case 'remove':\n case 'unset':\n case 'delete':\n return rm(conf, manifests, pkg, args)\n default: {\n throw error('Unrecognized pkg command', {\n code: 'EUSAGE',\n found: sub,\n validOptions: ['get', 'set', 'rm'],\n })\n }\n }\n}\n\nconst get = (manifests: ManifestWithLocation[], args: string[]) => {\n const noArg = () =>\n error(\n 'get requires not more than 1 argument. use `pick` to get more than 1.',\n { code: 'EUSAGE' },\n noArg,\n )\n if (args.length !== 1) {\n if (args.length > 1) {\n throw noArg()\n }\n return pick(manifests, args)\n }\n assert(args[0] != null, noArg())\n\n const [key] = args\n\n if (manifests.length === 1) {\n const [firstManifest] = manifests\n if (!firstManifest?.manifest) {\n /* c8 ignore start */\n throw error(\n 'No manifest found',\n firstManifest?.location ?\n { path: firstManifest.location }\n : {},\n )\n /* c8 ignore stop */\n }\n return dotProp.get(firstManifest.manifest, key)\n }\n\n return manifests.map(manifest =>\n dotProp.get(manifest.manifest, key),\n )\n}\n\nconst pick = (manifests: ManifestWithLocation[], args: string[]) => {\n if (manifests.length === 1) {\n const [firstManifest] = manifests\n /* c8 ignore start */\n if (!firstManifest?.manifest) {\n throw error(\n 'No manifest found',\n firstManifest?.location ?\n { path: firstManifest.location }\n : {},\n )\n }\n /* c8 ignore stop */\n const { manifest } = firstManifest\n return args.length ?\n args.reduce(\n (acc, key) =>\n dotProp.set(acc, key, dotProp.get(manifest, key)),\n {},\n )\n : manifest\n }\n\n // Multiple manifests - return results keyed by location\n return manifests.map(manifest =>\n args.length ?\n args.reduce(\n (acc, key) =>\n dotProp.set(acc, key, dotProp.get(manifest.manifest, key)),\n {},\n )\n : manifest.manifest,\n )\n}\n\nconst set = (\n _conf: LoadedConfig,\n manifests: ManifestWithLocation[],\n pkg: PackageJson,\n args: string[],\n) => {\n if (args.length < 1) {\n throw error('set requires arguments', { code: 'EUSAGE' })\n }\n\n for (const { manifest, location } of manifests) {\n const res = args.reduce((acc, p) => {\n const index = p.indexOf('=')\n if (index === -1) {\n throw error('set arguments must contain `=`', {\n code: 'EUSAGE',\n })\n }\n return dotProp.set(\n acc,\n p.substring(0, index),\n p.substring(index + 1),\n )\n }, manifest)\n\n pkg.write(location, res)\n }\n}\n\nconst rm = (\n _conf: LoadedConfig,\n manifests: ManifestWithLocation[],\n pkg: PackageJson,\n args: string[],\n) => {\n if (args.length < 1) {\n throw error('rm requires arguments', { code: 'EUSAGE' })\n }\n\n const results: ManifestWithLocation[] = []\n\n for (const { manifest, location } of manifests) {\n const res = args.reduce((acc, key) => {\n dotProp.del(acc, key)\n return acc\n }, manifest)\n\n pkg.write(location, res)\n results.push({\n manifest: res,\n location,\n })\n }\n\n if (manifests.length === 1) {\n return results[0]\n }\n return results\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/commands/pkg.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from 'node:path'\nimport * as dotProp from '@vltpkg/dot-prop'\nimport { error } from '@vltpkg/error-cause'\nimport type { PackageJson } from '@vltpkg/package-json'\nimport type { NormalizedManifest } from '@vltpkg/types'\nimport assert from 'node:assert'\nimport { commandUsage } from '../config/usage.ts'\nimport type { CommandFn, CommandUsage } from '../index.ts'\nimport { init } from '@vltpkg/init'\nimport type { InitFileResults } from '@vltpkg/init'\nimport type { Views } from '../view.ts'\nimport { views as initViews } from './init.ts'\nimport { actual, GraphModifier } from '@vltpkg/graph'\nimport { Query } from '@vltpkg/query'\nimport { SecurityArchive } from '@vltpkg/security-archive'\nimport type { QueryResponseNode } from '@vltpkg/query'\n\ntype ManifestWithLocation = {\n manifest: NormalizedManifest\n location: string\n}\n\nconst json = (\n results: ManifestWithLocation[] | ManifestWithLocation,\n) => JSON.stringify(results, null, 2)\n\nexport const views = {\n human: (results_, _, config) => {\n const results = results_ as\n | ManifestWithLocation[]\n | ManifestWithLocation\n // `vlt pkg init` is an alias for `vlt init`\n // use the same output handling\n if (config.positionals[0] === 'init') {\n return initViews.human(results as InitFileResults)\n }\n\n return (\n Array.isArray(results) ?\n typeof results[0] === 'string' ?\n (results as unknown as string[]).join('\\n')\n : json(results)\n : json(results)\n )\n },\n} as const satisfies Views\n\nexport const usage: CommandUsage = () =>\n commandUsage({\n command: 'pkg',\n usage: '[<command>] [<args>]',\n description: 'Get or manipulate package.json values',\n subcommands: {\n get: {\n usage: '[<key>]',\n description: 'Get a single value',\n },\n init: {\n usage: '',\n description:\n 'Initialize a new package.json file in the current directory',\n },\n pick: {\n usage: '[<key> [<key> ...]]',\n description: 'Get multiple values or the entire package',\n },\n set: {\n usage: '<key>=<value> [<key>=<value> ...]',\n description: 'Set one or more key value pairs',\n },\n delete: {\n usage: '<key> [<key> ...]',\n description: 'Delete one or more keys from the package',\n },\n },\n examples: {\n 'set \"array[1].key=value\"': {\n description: 'Set a value on an object inside an array',\n },\n 'set \"array[]=value\"': {\n description: 'Append a value to an array',\n },\n },\n })\n\nexport const command: CommandFn = async conf => {\n const [sub, ...args] = conf.positionals\n if (sub === 'init') {\n return await init({ cwd: process.cwd() })\n }\n\n const pkg = conf.options.packageJson\n\n // Handle --scope option to get multiple manifests\n const scopeQueryString = conf.get('scope')\n let manifests: ManifestWithLocation[]\n\n if (scopeQueryString) {\n const modifiers = GraphModifier.maybeLoad(conf.options)\n const monorepo = conf.options.monorepo\n const mainManifest = conf.options.packageJson.read(\n conf.options.projectRoot,\n )\n const graph = actual.load({\n ...conf.options,\n mainManifest,\n modifiers,\n monorepo,\n loadManifests: false,\n })\n\n const securityArchive =\n Query.hasSecuritySelectors(scopeQueryString) ?\n await SecurityArchive.start({\n graph,\n specOptions: conf.options,\n })\n : undefined\n\n const query = new Query({\n graph,\n specOptions: conf.options,\n securityArchive,\n })\n\n const { nodes } = await query.search(scopeQueryString, {\n signal: new AbortController().signal,\n })\n\n // collects the paths of the nodes selected using --scope\n const scopePaths = nodes\n .filter(\n (n): n is QueryResponseNode & { location: string } =>\n n.location !== undefined,\n )\n .map(n => resolve(conf.options.projectRoot, n.location))\n\n // reads multiple manifests for each selected scope\n manifests = scopePaths.map(location => ({\n manifest: pkg.read(location),\n location,\n }))\n\n if (manifests.length === 0) {\n throw error('No matching package found using scope', {\n found: scopeQueryString,\n })\n }\n } else {\n // Single manifest mode\n const location = pkg.find() ?? conf.projectRoot\n manifests = [\n {\n manifest: pkg.read(location),\n location,\n },\n ]\n }\n\n switch (sub) {\n case 'get':\n return get(manifests, args)\n case 'pick':\n return pick(manifests, args)\n case 'set':\n return set(manifests, pkg, args)\n case 'rm':\n case 'remove':\n case 'unset':\n case 'delete':\n return rm(manifests, pkg, args)\n default: {\n throw error('Unrecognized pkg command', {\n code: 'EUSAGE',\n found: sub,\n validOptions: ['get', 'set', 'rm'],\n })\n }\n }\n}\n\nconst get = (manifests: ManifestWithLocation[], args: string[]) => {\n const noArg = () =>\n error(\n 'get requires not more than 1 argument. use `pick` to get more than 1.',\n { code: 'EUSAGE' },\n noArg,\n )\n if (args.length !== 1) {\n if (args.length > 1) {\n throw noArg()\n }\n return pick(manifests, args)\n }\n assert(args[0] != null, noArg())\n\n const [key] = args\n\n if (manifests.length === 1) {\n const [firstManifest] = manifests\n if (!firstManifest?.manifest) {\n /* c8 ignore start */\n throw error(\n 'No manifest found',\n firstManifest?.location ?\n { path: firstManifest.location }\n : {},\n )\n /* c8 ignore stop */\n }\n return dotProp.get(firstManifest.manifest, key)\n }\n\n return manifests.map(manifest =>\n dotProp.get(manifest.manifest, key),\n )\n}\n\nconst pick = (manifests: ManifestWithLocation[], args: string[]) => {\n if (manifests.length === 1) {\n const [firstManifest] = manifests\n /* c8 ignore start */\n if (!firstManifest?.manifest) {\n throw error(\n 'No manifest found',\n firstManifest?.location ?\n { path: firstManifest.location }\n : {},\n )\n }\n /* c8 ignore stop */\n const { manifest } = firstManifest\n return args.length ?\n args.reduce(\n (acc, key) =>\n dotProp.set(acc, key, dotProp.get(manifest, key)),\n {},\n )\n : manifest\n }\n\n // Multiple manifests - return results keyed by location\n return manifests.map(manifest =>\n args.length ?\n args.reduce(\n (acc, key) =>\n dotProp.set(acc, key, dotProp.get(manifest.manifest, key)),\n {},\n )\n : manifest.manifest,\n )\n}\n\nconst set = (\n manifests: ManifestWithLocation[],\n pkg: PackageJson,\n args: string[],\n) => {\n if (args.length < 1) {\n throw error('set requires arguments', { code: 'EUSAGE' })\n }\n\n for (const { manifest, location } of manifests) {\n const res = args.reduce((acc, p) => {\n const index = p.indexOf('=')\n if (index === -1) {\n throw error('set arguments must contain `=`', {\n code: 'EUSAGE',\n })\n }\n return dotProp.set(\n acc,\n p.substring(0, index),\n p.substring(index + 1),\n )\n }, manifest)\n\n pkg.write(location, res)\n }\n}\n\nconst rm = (\n manifests: ManifestWithLocation[],\n pkg: PackageJson,\n args: string[],\n) => {\n if (args.length < 1) {\n throw error('rm requires arguments', { code: 'EUSAGE' })\n }\n\n const results: ManifestWithLocation[] = []\n\n for (const { manifest, location } of manifests) {\n const res = args.reduce((acc, key) => {\n dotProp.del(acc, key)\n return acc\n }, manifest)\n\n pkg.write(location, res)\n results.push({\n manifest: res,\n location,\n })\n }\n\n if (manifests.length === 1) {\n return results[0]\n }\n return results\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CommandFn, CommandUsage } from '../index.ts';
|
|
2
2
|
export declare const usage: CommandUsage;
|
|
3
|
-
export type
|
|
3
|
+
export type CommandResultSingle = {
|
|
4
4
|
id: string;
|
|
5
5
|
name: string;
|
|
6
6
|
version: string;
|
|
@@ -13,8 +13,9 @@ export type CommandResult = {
|
|
|
13
13
|
unpackedSize: number;
|
|
14
14
|
files: string[];
|
|
15
15
|
};
|
|
16
|
+
export type CommandResult = CommandResultSingle | CommandResultSingle[];
|
|
16
17
|
export declare const views: {
|
|
17
|
-
readonly human: (
|
|
18
|
+
readonly human: (results: CommandResult) => string;
|
|
18
19
|
readonly json: (r: CommandResult) => CommandResult;
|
|
19
20
|
};
|
|
20
21
|
export declare const command: CommandFn<CommandResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/commands/publish.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/commands/publish.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAW1D,eAAO,MAAM,KAAK,EAAE,YA2BhB,CAAA;AAEJ,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GACrB,mBAAmB,GACnB,mBAAmB,EAAE,CAAA;AAEzB,eAAO,MAAM,KAAK;;;CAqBuB,CAAA;AAEzC,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,aAAa,CAyD5C,CAAA"}
|
|
@@ -5,8 +5,10 @@ import { commandUsage } from "../config/usage.js";
|
|
|
5
5
|
import { packTarball } from "../pack-tarball.js";
|
|
6
6
|
import assert from 'node:assert';
|
|
7
7
|
import { asError } from '@vltpkg/types';
|
|
8
|
-
import { dirname } from 'node:path';
|
|
8
|
+
import { dirname, resolve } from 'node:path';
|
|
9
9
|
import prettyBytes from 'pretty-bytes';
|
|
10
|
+
import { actual } from '@vltpkg/graph';
|
|
11
|
+
import { Query } from '@vltpkg/query';
|
|
10
12
|
export const usage = () => commandUsage({
|
|
11
13
|
command: 'publish',
|
|
12
14
|
usage: '',
|
|
@@ -27,29 +29,88 @@ export const usage = () => commandUsage({
|
|
|
27
29
|
description: `Provide an OTP to use when publishing a package.`,
|
|
28
30
|
value: '<otp>',
|
|
29
31
|
},
|
|
32
|
+
'publish-directory': {
|
|
33
|
+
description: `Directory to use for pack and publish operations instead of the current directory.
|
|
34
|
+
The directory must exist and nothing will be copied to it.`,
|
|
35
|
+
value: '<path>',
|
|
36
|
+
},
|
|
30
37
|
},
|
|
31
38
|
});
|
|
32
39
|
export const views = {
|
|
33
|
-
human:
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
40
|
+
human: results => {
|
|
41
|
+
const item = (r) => {
|
|
42
|
+
const lines = [
|
|
43
|
+
`📦 Package: ${r.id}`,
|
|
44
|
+
`🏷️ Tag: ${r.tag}`,
|
|
45
|
+
`📡 Registry: ${r.registry}`,
|
|
46
|
+
`📁 ${r.files.length} Files`,
|
|
47
|
+
...r.files.map(f => ` - ${f}`),
|
|
48
|
+
`📊 Package Size: ${prettyBytes(r.size)}`,
|
|
49
|
+
`📂 Unpacked Size: ${prettyBytes(r.unpackedSize)}`,
|
|
50
|
+
];
|
|
51
|
+
if (r.shasum)
|
|
52
|
+
lines.push(`🔒 Shasum: ${r.shasum}`);
|
|
53
|
+
if (r.integrity)
|
|
54
|
+
lines.push(`🔐 Integrity: ${r.integrity}`);
|
|
55
|
+
return lines.join('\n');
|
|
56
|
+
};
|
|
57
|
+
return Array.isArray(results) ?
|
|
58
|
+
results.map(item).join('\n\n')
|
|
59
|
+
: item(results);
|
|
48
60
|
},
|
|
49
61
|
json: r => r,
|
|
50
62
|
};
|
|
51
63
|
export const command = async (conf) => {
|
|
52
|
-
const
|
|
64
|
+
const { options, projectRoot } = conf;
|
|
65
|
+
const queryString = conf.get('scope');
|
|
66
|
+
const paths = conf.get('workspace');
|
|
67
|
+
const groups = conf.get('workspace-group');
|
|
68
|
+
const recursive = conf.get('recursive');
|
|
69
|
+
const locations = [];
|
|
70
|
+
let single = null;
|
|
71
|
+
if (queryString) {
|
|
72
|
+
const graph = actual.load({
|
|
73
|
+
...options,
|
|
74
|
+
mainManifest: options.packageJson.read(projectRoot),
|
|
75
|
+
monorepo: options.monorepo,
|
|
76
|
+
loadManifests: false,
|
|
77
|
+
});
|
|
78
|
+
const query = new Query({
|
|
79
|
+
graph,
|
|
80
|
+
specOptions: conf.options,
|
|
81
|
+
securityArchive: undefined,
|
|
82
|
+
});
|
|
83
|
+
const { nodes } = await query.search(queryString, {
|
|
84
|
+
signal: new AbortController().signal,
|
|
85
|
+
});
|
|
86
|
+
for (const node of nodes) {
|
|
87
|
+
const { location } = node.toJSON();
|
|
88
|
+
assert(location, error(`node ${node.id} has no location`, {
|
|
89
|
+
found: node,
|
|
90
|
+
}));
|
|
91
|
+
locations.push(resolve(projectRoot, location));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else if (paths?.length || groups?.length || recursive) {
|
|
95
|
+
for (const workspace of options.monorepo ?? []) {
|
|
96
|
+
locations.push(workspace.fullpath);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
single = options.packageJson.find(process.cwd()) ?? projectRoot;
|
|
101
|
+
}
|
|
102
|
+
if (single) {
|
|
103
|
+
return commandSingle(single, conf);
|
|
104
|
+
}
|
|
105
|
+
assert(locations.length > 0, error('No workspaces or query results found'));
|
|
106
|
+
const results = [];
|
|
107
|
+
for (const location of locations) {
|
|
108
|
+
results.push(await commandSingle(location, conf));
|
|
109
|
+
}
|
|
110
|
+
return results;
|
|
111
|
+
};
|
|
112
|
+
const commandSingle = async (location, conf) => {
|
|
113
|
+
const manifestPath = conf.options.packageJson.find(location);
|
|
53
114
|
assert(manifestPath, 'No package.json found');
|
|
54
115
|
const manifestDir = dirname(manifestPath);
|
|
55
116
|
const manifest = conf.options.packageJson.read(manifestDir);
|