@vltpkg/cli-sdk 0.0.0-3 → 0.0.0-31
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/build.d.ts +25 -0
- package/dist/esm/commands/build.d.ts.map +1 -0
- package/dist/esm/commands/build.js +102 -0
- package/dist/esm/commands/build.js.map +1 -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 +11 -0
- package/dist/esm/commands/ci.d.ts.map +1 -0
- package/dist/esm/commands/ci.js +32 -0
- package/dist/esm/commands/ci.js.map +1 -0
- package/dist/esm/commands/config.d.ts +3 -2
- package/dist/esm/commands/config.d.ts.map +1 -1
- package/dist/esm/commands/config.js +372 -101
- 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 +146 -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 +75 -10
- package/dist/esm/commands/exec.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 +3 -2
- package/dist/esm/commands/install/reporter.d.ts.map +1 -1
- package/dist/esm/commands/install/reporter.js +43 -15
- package/dist/esm/commands/install/reporter.js.map +1 -1
- package/dist/esm/commands/install.d.ts +24 -3
- package/dist/esm/commands/install.d.ts.map +1 -1
- package/dist/esm/commands/install.js +27 -3
- package/dist/esm/commands/install.js.map +1 -1
- package/dist/esm/commands/list.d.ts +1 -1
- package/dist/esm/commands/list.d.ts.map +1 -1
- package/dist/esm/commands/list.js +150 -42
- package/dist/esm/commands/list.js.map +1 -1
- package/dist/esm/commands/pack.d.ts +32 -0
- package/dist/esm/commands/pack.d.ts.map +1 -0
- package/dist/esm/commands/pack.js +147 -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 +123 -38
- package/dist/esm/commands/pkg.js.map +1 -1
- package/dist/esm/commands/publish.d.ts +22 -0
- package/dist/esm/commands/publish.d.ts.map +1 -0
- package/dist/esm/commands/publish.js +239 -0
- package/dist/esm/commands/publish.js.map +1 -0
- package/dist/esm/commands/query.d.ts +1 -1
- package/dist/esm/commands/query.d.ts.map +1 -1
- package/dist/esm/commands/query.js +171 -32
- 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/serve.d.ts +14 -0
- package/dist/esm/commands/serve.d.ts.map +1 -0
- package/dist/esm/commands/serve.js +103 -0
- package/dist/esm/commands/serve.js.map +1 -0
- package/dist/esm/commands/uninstall.d.ts +13 -1
- package/dist/esm/commands/uninstall.d.ts.map +1 -1
- package/dist/esm/commands/uninstall.js +12 -1
- package/dist/esm/commands/uninstall.js.map +1 -1
- package/dist/esm/commands/update.d.ts +14 -0
- package/dist/esm/commands/update.d.ts.map +1 -0
- package/dist/esm/commands/update.js +41 -0
- package/dist/esm/commands/update.js.map +1 -0
- package/dist/esm/commands/version.d.ts +26 -0
- package/dist/esm/commands/version.d.ts.map +1 -0
- package/dist/esm/commands/version.js +226 -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 +117 -10
- package/dist/esm/config/definition.d.ts.map +1 -1
- package/dist/esm/config/definition.js +203 -31
- 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 +126 -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 +33 -14
- package/dist/esm/exec-command.d.ts.map +1 -1
- package/dist/esm/exec-command.js +214 -65
- 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 +63 -33
- 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/query-host-contexts.d.ts +16 -0
- package/dist/esm/query-host-contexts.d.ts.map +1 -0
- package/dist/esm/query-host-contexts.js +135 -0
- package/dist/esm/query-host-contexts.js.map +1 -0
- 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 +51 -349
- 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 +1 -1
- package/dist/esm/view.js.map +1 -1
- package/package.json +73 -45
- package/dist/esm/commands/gui.d.ts +0 -6
- package/dist/esm/commands/gui.d.ts.map +0 -1
- package/dist/esm/commands/gui.js +0 -14
- package/dist/esm/commands/gui.js.map +0 -1
- 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
|
@@ -0,0 +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;AAM1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAItD,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,CAiE5C,CAAA;AAED,eAAO,MAAM,aAAa,aACd,MAAM,QACV,YAAY;;;;;;;;;;EA0DnB,CAAA"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { writeFile } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join, resolve } from 'node:path';
|
|
3
|
+
import assert from 'node:assert';
|
|
4
|
+
import { run } from '@vltpkg/run';
|
|
5
|
+
import { commandUsage } from "../config/usage.js";
|
|
6
|
+
import { packTarball } from "../pack-tarball.js";
|
|
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';
|
|
11
|
+
import { createHostContextsMap } from "../query-host-contexts.js";
|
|
12
|
+
export const usage = () => commandUsage({
|
|
13
|
+
command: 'pack',
|
|
14
|
+
usage: '',
|
|
15
|
+
description: `Create a tarball from a package in the current directory or specified folder.
|
|
16
|
+
|
|
17
|
+
The tarball will be saved to the current directory with the name
|
|
18
|
+
<name>-<version>.tgz.`,
|
|
19
|
+
options: {
|
|
20
|
+
'dry-run': {
|
|
21
|
+
description: 'Show what would be packed without creating a tarball',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
export const views = {
|
|
26
|
+
human: results => {
|
|
27
|
+
const item = (r) => {
|
|
28
|
+
const lines = [
|
|
29
|
+
`📦 Package: ${r.id}`,
|
|
30
|
+
`📄 File: ${r.filename}`,
|
|
31
|
+
`📁 ${r.files.length} Files`,
|
|
32
|
+
...r.files.map(f => ` - ${f}`),
|
|
33
|
+
`📊 Package Size: ${prettyBytes(r.size)}`,
|
|
34
|
+
`📂 Unpacked Size: ${prettyBytes(r.unpackedSize)}`,
|
|
35
|
+
];
|
|
36
|
+
if (r.shasum)
|
|
37
|
+
lines.push(`🔒 Shasum: ${r.shasum}`);
|
|
38
|
+
if (r.integrity)
|
|
39
|
+
lines.push(`🔐 Integrity: ${r.integrity}`);
|
|
40
|
+
return lines.join('\n');
|
|
41
|
+
};
|
|
42
|
+
return Array.isArray(results) ?
|
|
43
|
+
results.map(item).join('\n\n')
|
|
44
|
+
: item(results);
|
|
45
|
+
},
|
|
46
|
+
json: r => r,
|
|
47
|
+
};
|
|
48
|
+
export const command = async (conf) => {
|
|
49
|
+
const { options, projectRoot } = conf;
|
|
50
|
+
const queryString = conf.get('scope');
|
|
51
|
+
const paths = conf.get('workspace');
|
|
52
|
+
const groups = conf.get('workspace-group');
|
|
53
|
+
const recursive = conf.get('recursive');
|
|
54
|
+
const locations = [];
|
|
55
|
+
let single = null;
|
|
56
|
+
if (queryString) {
|
|
57
|
+
const mainManifest = options.packageJson.maybeRead(projectRoot);
|
|
58
|
+
let graph;
|
|
59
|
+
if (mainManifest) {
|
|
60
|
+
graph = actual.load({
|
|
61
|
+
...options,
|
|
62
|
+
mainManifest,
|
|
63
|
+
monorepo: options.monorepo,
|
|
64
|
+
loadManifests: false,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const hostContexts = await createHostContextsMap(conf);
|
|
68
|
+
const query = new Query({
|
|
69
|
+
/* c8 ignore next */
|
|
70
|
+
nodes: graph ? new Set(graph.nodes.values()) : new Set(),
|
|
71
|
+
edges: graph?.edges ?? new Set(),
|
|
72
|
+
importers: graph?.importers ?? new Set(),
|
|
73
|
+
securityArchive: undefined,
|
|
74
|
+
hostContexts,
|
|
75
|
+
});
|
|
76
|
+
const { nodes } = await query.search(queryString, {
|
|
77
|
+
signal: new AbortController().signal,
|
|
78
|
+
});
|
|
79
|
+
for (const node of nodes) {
|
|
80
|
+
const { location } = node.toJSON();
|
|
81
|
+
assert(location, error(`node ${node.id} has no location`, {
|
|
82
|
+
found: node,
|
|
83
|
+
}));
|
|
84
|
+
locations.push(resolve(projectRoot, location));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (paths?.length || groups?.length || recursive) {
|
|
88
|
+
for (const workspace of options.monorepo ?? []) {
|
|
89
|
+
locations.push(workspace.fullpath);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
single = options.packageJson.find(process.cwd()) ?? projectRoot;
|
|
94
|
+
}
|
|
95
|
+
if (single) {
|
|
96
|
+
return commandSingle(single, conf);
|
|
97
|
+
}
|
|
98
|
+
assert(locations.length > 0, error('No workspaces or query results found'));
|
|
99
|
+
const results = [];
|
|
100
|
+
for (const location of locations) {
|
|
101
|
+
results.push(await commandSingle(location, conf));
|
|
102
|
+
}
|
|
103
|
+
return results;
|
|
104
|
+
};
|
|
105
|
+
export const commandSingle = async (location, conf) => {
|
|
106
|
+
const manifestPath = conf.options.packageJson.find(location);
|
|
107
|
+
assert(manifestPath, 'No package.json found');
|
|
108
|
+
const manifestDir = dirname(manifestPath);
|
|
109
|
+
const manifest = conf.options.packageJson.read(manifestDir);
|
|
110
|
+
const isDryRun = conf.options['dry-run'];
|
|
111
|
+
const runOptions = {
|
|
112
|
+
cwd: manifestDir,
|
|
113
|
+
projectRoot: conf.projectRoot,
|
|
114
|
+
packageJson: conf.options.packageJson,
|
|
115
|
+
manifest,
|
|
116
|
+
ignoreMissing: true,
|
|
117
|
+
ignorePrePost: true,
|
|
118
|
+
};
|
|
119
|
+
await run({
|
|
120
|
+
...runOptions,
|
|
121
|
+
arg0: 'prepack',
|
|
122
|
+
});
|
|
123
|
+
await run({
|
|
124
|
+
...runOptions,
|
|
125
|
+
arg0: 'prepare',
|
|
126
|
+
});
|
|
127
|
+
const { name, version, filename, tarballData, unpackedSize, files, integrity, shasum, } = await packTarball(manifest, manifestDir, conf);
|
|
128
|
+
if (!isDryRun) {
|
|
129
|
+
await writeFile(join(manifestDir, filename), tarballData);
|
|
130
|
+
}
|
|
131
|
+
await run({
|
|
132
|
+
...runOptions,
|
|
133
|
+
arg0: 'postpack',
|
|
134
|
+
});
|
|
135
|
+
return {
|
|
136
|
+
id: `${name}@${version}`,
|
|
137
|
+
name,
|
|
138
|
+
version,
|
|
139
|
+
filename,
|
|
140
|
+
files,
|
|
141
|
+
size: tarballData.length,
|
|
142
|
+
unpackedSize,
|
|
143
|
+
shasum,
|
|
144
|
+
integrity,
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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'\nimport { createHostContextsMap } from '../query-host-contexts.ts'\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 mainManifest = options.packageJson.maybeRead(projectRoot)\n let graph\n if (mainManifest) {\n graph = actual.load({\n ...options,\n mainManifest,\n monorepo: options.monorepo,\n loadManifests: false,\n })\n }\n const hostContexts = await createHostContextsMap(conf)\n const query = new Query({\n /* c8 ignore next */\n nodes: graph ? new Set(graph.nodes.values()) : new Set(),\n edges: graph?.edges ?? new Set(),\n importers: graph?.importers ?? new Set(),\n securityArchive: undefined,\n hostContexts,\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,7 +1,6 @@
|
|
|
1
1
|
import type { CommandFn, CommandUsage } from '../index.ts';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
human: ViewFn;
|
|
2
|
+
export declare const views: {
|
|
3
|
+
readonly human: (results: unknown, _: import("../view.ts").ViewOptions, config: import("../config/index.ts").ParsedConfig) => string;
|
|
5
4
|
};
|
|
6
5
|
export declare const usage: CommandUsage;
|
|
7
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":"AAeA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1D,eAAO,MAAM,KAAK;;CAgBQ,CAAA;AAE1B,eAAO,MAAM,KAAK,EAAE,YAoChB,CAAA;AAEJ,eAAO,MAAM,OAAO,EAAE,SAqGrB,CAAA"}
|
package/dist/esm/commands/pkg.js
CHANGED
|
@@ -1,17 +1,27 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
1
3
|
import * as dotProp from '@vltpkg/dot-prop';
|
|
2
4
|
import { error } from '@vltpkg/error-cause';
|
|
3
|
-
import assert from 'assert';
|
|
4
|
-
import { commandUsage } from "../config/usage.js";
|
|
5
5
|
import { init } from '@vltpkg/init';
|
|
6
|
+
import { actual, GraphModifier, VIRTUAL_ROOT_ID } from '@vltpkg/graph';
|
|
7
|
+
import { Query } from '@vltpkg/query';
|
|
8
|
+
import { SecurityArchive } from '@vltpkg/security-archive';
|
|
6
9
|
import { views as initViews } from "./init.js";
|
|
10
|
+
import { commandUsage } from "../config/usage.js";
|
|
11
|
+
import { createHostContextsMap } from "../query-host-contexts.js";
|
|
7
12
|
export const views = {
|
|
8
|
-
human: (results,
|
|
13
|
+
human: (results, _, config) => {
|
|
9
14
|
// `vlt pkg init` is an alias for `vlt init`
|
|
10
15
|
// use the same output handling
|
|
11
16
|
if (config.positionals[0] === 'init') {
|
|
12
|
-
return initViews.human(results
|
|
17
|
+
return initViews.human(results);
|
|
18
|
+
}
|
|
19
|
+
// When `get` is run with a single arg and it returns a string,
|
|
20
|
+
// just print items separated by newlines
|
|
21
|
+
if (Array.isArray(results) && typeof results[0] === 'string') {
|
|
22
|
+
return results.join('\n');
|
|
13
23
|
}
|
|
14
|
-
return results;
|
|
24
|
+
return JSON.stringify(results, null, 2);
|
|
15
25
|
},
|
|
16
26
|
};
|
|
17
27
|
export const usage = () => commandUsage({
|
|
@@ -54,20 +64,98 @@ export const command = async (conf) => {
|
|
|
54
64
|
if (sub === 'init') {
|
|
55
65
|
return await init({ cwd: process.cwd() });
|
|
56
66
|
}
|
|
67
|
+
assert(sub, error('pkg command requires a subcommand', {
|
|
68
|
+
code: 'EUSAGE',
|
|
69
|
+
validOptions: ['get', 'pick', 'set', 'rm', 'init'],
|
|
70
|
+
}));
|
|
71
|
+
const { options, projectRoot } = conf;
|
|
72
|
+
const queryString = conf.get('scope');
|
|
73
|
+
const paths = conf.get('workspace');
|
|
74
|
+
const groups = conf.get('workspace-group');
|
|
75
|
+
const recursive = conf.get('recursive');
|
|
76
|
+
const locations = [];
|
|
77
|
+
let single = null;
|
|
78
|
+
if (queryString) {
|
|
79
|
+
const modifiers = GraphModifier.maybeLoad(options);
|
|
80
|
+
const mainManifest = options.packageJson.maybeRead(projectRoot);
|
|
81
|
+
let graph;
|
|
82
|
+
let securityArchive;
|
|
83
|
+
if (mainManifest) {
|
|
84
|
+
graph = actual.load({
|
|
85
|
+
...options,
|
|
86
|
+
mainManifest,
|
|
87
|
+
modifiers,
|
|
88
|
+
monorepo: options.monorepo,
|
|
89
|
+
loadManifests: false,
|
|
90
|
+
});
|
|
91
|
+
securityArchive =
|
|
92
|
+
Query.hasSecuritySelectors(queryString) ?
|
|
93
|
+
await SecurityArchive.start({
|
|
94
|
+
nodes: [...graph.nodes.values()],
|
|
95
|
+
})
|
|
96
|
+
: undefined;
|
|
97
|
+
}
|
|
98
|
+
const hostContexts = await createHostContextsMap(conf);
|
|
99
|
+
const edges = graph?.edges ?? new Set();
|
|
100
|
+
const nodes = graph?.nodes ?
|
|
101
|
+
new Set(graph.nodes.values())
|
|
102
|
+
: /* c8 ignore next */ new Set();
|
|
103
|
+
const importers = graph?.importers ?? new Set();
|
|
104
|
+
const query = new Query({
|
|
105
|
+
edges,
|
|
106
|
+
nodes,
|
|
107
|
+
importers,
|
|
108
|
+
securityArchive,
|
|
109
|
+
hostContexts,
|
|
110
|
+
});
|
|
111
|
+
const { nodes: resultNodes } = await query.search(queryString, {
|
|
112
|
+
signal: new AbortController().signal,
|
|
113
|
+
});
|
|
114
|
+
for (const node of resultNodes) {
|
|
115
|
+
const location = node.location;
|
|
116
|
+
assert(location, error(`node ${node.id} has no location`, {
|
|
117
|
+
found: node,
|
|
118
|
+
}));
|
|
119
|
+
if (node.id !== VIRTUAL_ROOT_ID) {
|
|
120
|
+
locations.push(resolve(node.projectRoot, location));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (paths?.length || groups?.length || recursive) {
|
|
125
|
+
for (const workspace of options.monorepo ?? []) {
|
|
126
|
+
locations.push(workspace.fullpath);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
single = options.packageJson.find(process.cwd()) ?? projectRoot;
|
|
131
|
+
}
|
|
132
|
+
if (single) {
|
|
133
|
+
return commandSingle(single, sub, args, conf);
|
|
134
|
+
}
|
|
135
|
+
assert(locations.length > 0, error('No matching package found using scope', {
|
|
136
|
+
found: queryString || 'workspace selection',
|
|
137
|
+
}));
|
|
138
|
+
const results = [];
|
|
139
|
+
for (const location of locations) {
|
|
140
|
+
results.push(await commandSingle(location, sub, args, conf));
|
|
141
|
+
}
|
|
142
|
+
return results;
|
|
143
|
+
};
|
|
144
|
+
const commandSingle = async (location, sub, args, conf) => {
|
|
57
145
|
const pkg = conf.options.packageJson;
|
|
58
|
-
const
|
|
146
|
+
const manifest = pkg.read(location);
|
|
59
147
|
switch (sub) {
|
|
60
148
|
case 'get':
|
|
61
|
-
return get(
|
|
149
|
+
return get(manifest, args);
|
|
62
150
|
case 'pick':
|
|
63
|
-
return pick(
|
|
151
|
+
return pick(manifest, args);
|
|
64
152
|
case 'set':
|
|
65
|
-
return set(
|
|
153
|
+
return set(manifest, location, pkg, args);
|
|
66
154
|
case 'rm':
|
|
67
155
|
case 'remove':
|
|
68
156
|
case 'unset':
|
|
69
157
|
case 'delete':
|
|
70
|
-
return rm(
|
|
158
|
+
return rm(manifest, location, pkg, args);
|
|
71
159
|
default: {
|
|
72
160
|
throw error('Unrecognized pkg command', {
|
|
73
161
|
code: 'EUSAGE',
|
|
@@ -77,45 +165,42 @@ export const command = async (conf) => {
|
|
|
77
165
|
}
|
|
78
166
|
}
|
|
79
167
|
};
|
|
80
|
-
const get = (
|
|
168
|
+
const get = (manifest, args) => {
|
|
81
169
|
const noArg = () => error('get requires not more than 1 argument. use `pick` to get more than 1.', { code: 'EUSAGE' }, noArg);
|
|
82
|
-
if (args.length
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return pick(mani, args);
|
|
170
|
+
if (args.length === 1) {
|
|
171
|
+
const [key] = args;
|
|
172
|
+
assert(key, noArg());
|
|
173
|
+
return dotProp.get(manifest, key);
|
|
87
174
|
}
|
|
88
|
-
assert(args
|
|
89
|
-
return
|
|
175
|
+
assert(args.length === 0, noArg());
|
|
176
|
+
return pick(manifest, args);
|
|
90
177
|
};
|
|
91
|
-
const pick = (
|
|
178
|
+
const pick = (manifest, args) => {
|
|
92
179
|
return args.length ?
|
|
93
|
-
args.reduce((acc, key) => dotProp.set(acc, key, dotProp.get(
|
|
94
|
-
:
|
|
180
|
+
args.reduce((acc, key) => dotProp.set(acc, key, dotProp.get(manifest, key)), {})
|
|
181
|
+
: manifest;
|
|
95
182
|
};
|
|
96
|
-
const set = (
|
|
97
|
-
|
|
98
|
-
throw error('set requires arguments', { code: 'EUSAGE' });
|
|
99
|
-
}
|
|
183
|
+
const set = (manifest, location, pkg, args) => {
|
|
184
|
+
assert(args.length >= 1, error('set requires arguments', { code: 'EUSAGE' }));
|
|
100
185
|
const res = args.reduce((acc, p) => {
|
|
101
186
|
const index = p.indexOf('=');
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
});
|
|
106
|
-
}
|
|
187
|
+
assert(index !== -1, error('set arguments must contain `=`', {
|
|
188
|
+
code: 'EUSAGE',
|
|
189
|
+
}));
|
|
107
190
|
return dotProp.set(acc, p.substring(0, index), p.substring(index + 1));
|
|
108
|
-
},
|
|
109
|
-
pkg.write(
|
|
191
|
+
}, manifest);
|
|
192
|
+
pkg.write(location, res);
|
|
110
193
|
};
|
|
111
|
-
const rm = (
|
|
112
|
-
|
|
113
|
-
throw error('rm requires arguments', { code: 'EUSAGE' });
|
|
114
|
-
}
|
|
194
|
+
const rm = (manifest, location, pkg, args) => {
|
|
195
|
+
assert(args.length >= 1, error('rm requires arguments', { code: 'EUSAGE' }));
|
|
115
196
|
const res = args.reduce((acc, key) => {
|
|
116
197
|
dotProp.del(acc, key);
|
|
117
198
|
return acc;
|
|
118
|
-
},
|
|
119
|
-
pkg.write(
|
|
199
|
+
}, manifest);
|
|
200
|
+
pkg.write(location, res);
|
|
201
|
+
return {
|
|
202
|
+
manifest: res,
|
|
203
|
+
location,
|
|
204
|
+
};
|
|
120
205
|
};
|
|
121
206
|
//# sourceMappingURL=pkg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/commands/pkg.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dotProp from '@vltpkg/dot-prop'\nimport { error } from '@vltpkg/error-cause'\nimport type { PackageJson } from '@vltpkg/package-json'\nimport type { Manifest } from '@vltpkg/types'\nimport assert from '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 { ViewFn, Views } from '../view.ts'\nimport { views as initViews } from './init.ts'\n\nexport const views: Views & { human: ViewFn } = {\n human: (results, options, config) => {\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(\n results as InitFileResults,\n options,\n config,\n )\n }\n return results\n },\n}\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 const mani = pkg.read(conf.projectRoot)\n\n switch (sub) {\n case 'get':\n return get(mani, args)\n case 'pick':\n return pick(mani, args)\n case 'set':\n return set(conf, mani, pkg, args)\n case 'rm':\n case 'remove':\n case 'unset':\n case 'delete':\n return rm(conf, mani, 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 = (mani: Manifest, 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(mani, args)\n }\n assert(args[0], noArg())\n return dotProp.get(mani, args[0])\n}\n\nconst pick = (mani: Manifest, args: string[]) => {\n return args.length ?\n args.reduce(\n (acc, key) => dotProp.set(acc, key, dotProp.get(mani, key)),\n {},\n )\n : mani\n}\n\nconst set = (\n conf: LoadedConfig,\n mani: Manifest,\n pkg: PackageJson,\n args: string[],\n) => {\n if (args.length < 1) {\n throw error('set requires arguments', { code: 'EUSAGE' })\n }\n\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 }, mani)\n\n pkg.write(conf.projectRoot, res)\n}\n\nconst rm = (\n conf: LoadedConfig,\n mani: Manifest,\n pkg: PackageJson,\n args: string[],\n) => {\n if (args.length < 1) {\n throw error('rm requires arguments', { code: 'EUSAGE' })\n }\n\n const res = args.reduce((acc, key) => {\n dotProp.del(acc, key)\n return acc\n }, mani)\n\n pkg.write(conf.projectRoot, res)\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../../src/commands/pkg.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert'\nimport { resolve } from 'node:path'\nimport * as dotProp from '@vltpkg/dot-prop'\nimport { error } from '@vltpkg/error-cause'\nimport { init } from '@vltpkg/init'\nimport { actual, GraphModifier, VIRTUAL_ROOT_ID } from '@vltpkg/graph'\nimport { Query } from '@vltpkg/query'\nimport { SecurityArchive } from '@vltpkg/security-archive'\nimport { views as initViews } from './init.ts'\nimport { commandUsage } from '../config/usage.ts'\nimport { createHostContextsMap } from '../query-host-contexts.ts'\nimport type { Graph } from '@vltpkg/graph'\nimport type { PackageJson } from '@vltpkg/package-json'\nimport type { NormalizedManifest, NodeLike } from '@vltpkg/types'\nimport type { InitFileResults } from '@vltpkg/init'\nimport type { CommandFn, CommandUsage } from '../index.ts'\nimport type { LoadedConfig } from '../config/index.ts'\nimport type { Views } from '../view.ts'\n\nexport const views = {\n human: (results, _, config) => {\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 // When `get` is run with a single arg and it returns a string,\n // just print items separated by newlines\n if (Array.isArray(results) && typeof results[0] === 'string') {\n return results.join('\\n')\n }\n\n return JSON.stringify(results, null, 2)\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 assert(\n sub,\n error('pkg command requires a subcommand', {\n code: 'EUSAGE',\n validOptions: ['get', 'pick', 'set', 'rm', 'init'],\n }),\n )\n\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 modifiers = GraphModifier.maybeLoad(options)\n const mainManifest = options.packageJson.maybeRead(projectRoot)\n let graph: Graph | undefined\n let securityArchive: SecurityArchive | undefined\n\n if (mainManifest) {\n graph = actual.load({\n ...options,\n mainManifest,\n modifiers,\n monorepo: options.monorepo,\n loadManifests: false,\n })\n securityArchive =\n Query.hasSecuritySelectors(queryString) ?\n await SecurityArchive.start({\n nodes: [...graph.nodes.values()],\n })\n : undefined\n }\n\n const hostContexts = await createHostContextsMap(conf)\n const edges = graph?.edges ?? new Set()\n const nodes =\n graph?.nodes ?\n new Set<NodeLike>(graph.nodes.values())\n : /* c8 ignore next */ new Set<NodeLike>()\n const importers = graph?.importers ?? new Set()\n const query = new Query({\n edges,\n nodes,\n importers,\n securityArchive,\n hostContexts,\n })\n\n const { nodes: resultNodes } = await query.search(queryString, {\n signal: new AbortController().signal,\n })\n\n for (const node of resultNodes) {\n const location = node.location\n assert(\n location,\n error(`node ${node.id} has no location`, {\n found: node,\n }),\n )\n if (node.id !== VIRTUAL_ROOT_ID) {\n locations.push(resolve(node.projectRoot, location))\n }\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, sub, args, conf)\n }\n\n assert(\n locations.length > 0,\n error('No matching package found using scope', {\n found: queryString || 'workspace selection',\n }),\n )\n\n const results: unknown[] = []\n for (const location of locations) {\n results.push(await commandSingle(location, sub, args, conf))\n }\n\n return results\n}\n\nconst commandSingle = async (\n location: string,\n sub: string,\n args: string[],\n conf: LoadedConfig,\n) => {\n const pkg = conf.options.packageJson\n const manifest = pkg.read(location)\n\n switch (sub) {\n case 'get':\n return get(manifest, args)\n case 'pick':\n return pick(manifest, args)\n case 'set':\n return set(manifest, location, pkg, args)\n case 'rm':\n case 'remove':\n case 'unset':\n case 'delete':\n return rm(manifest, location, 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 = (manifest: NormalizedManifest, 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\n if (args.length === 1) {\n const [key] = args\n assert(key, noArg())\n return dotProp.get(manifest, key)\n }\n\n assert(args.length === 0, noArg())\n return pick(manifest, args)\n}\n\nconst pick = (manifest: NormalizedManifest, args: string[]) => {\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\nconst set = (\n manifest: NormalizedManifest,\n location: string,\n pkg: PackageJson,\n args: string[],\n) => {\n assert(\n args.length >= 1,\n error('set requires arguments', { code: 'EUSAGE' }),\n )\n\n const res = args.reduce((acc, p) => {\n const index = p.indexOf('=')\n\n assert(\n index !== -1,\n error('set arguments must contain `=`', {\n code: 'EUSAGE',\n }),\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\nconst rm = (\n manifest: NormalizedManifest,\n location: string,\n pkg: PackageJson,\n args: string[],\n) => {\n assert(\n args.length >= 1,\n error('rm requires arguments', { code: 'EUSAGE' }),\n )\n\n const res = args.reduce((acc, key) => {\n dotProp.del(acc, key)\n return acc\n }, manifest)\n\n pkg.write(location, res)\n\n return {\n manifest: res,\n location,\n }\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CommandFn, CommandUsage } from '../index.ts';
|
|
2
|
+
export declare const usage: CommandUsage;
|
|
3
|
+
export type CommandResultSingle = {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
tag: string;
|
|
8
|
+
registry: string;
|
|
9
|
+
shasum?: string;
|
|
10
|
+
integrity?: string;
|
|
11
|
+
size: number;
|
|
12
|
+
access: string;
|
|
13
|
+
unpackedSize: number;
|
|
14
|
+
files: string[];
|
|
15
|
+
};
|
|
16
|
+
export type CommandResult = CommandResultSingle | CommandResultSingle[];
|
|
17
|
+
export declare const views: {
|
|
18
|
+
readonly human: (results: CommandResult) => string;
|
|
19
|
+
readonly json: (r: CommandResult) => CommandResult;
|
|
20
|
+
};
|
|
21
|
+
export declare const command: CommandFn<CommandResult>;
|
|
22
|
+
//# sourceMappingURL=publish.d.ts.map
|
|
@@ -0,0 +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;AAY1D,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,CAiE5C,CAAA"}
|