@vltpkg/cli-sdk 0.0.0-29 → 0.0.0-30
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/list.d.ts +1 -1
- package/dist/esm/commands/list.d.ts.map +1 -1
- package/dist/esm/commands/list.js +67 -36
- package/dist/esm/commands/list.js.map +1 -1
- package/dist/esm/commands/pack.d.ts.map +1 -1
- package/dist/esm/commands/pack.js +17 -8
- package/dist/esm/commands/pack.js.map +1 -1
- package/dist/esm/commands/pkg.d.ts.map +1 -1
- package/dist/esm/commands/pkg.js +39 -23
- package/dist/esm/commands/pkg.js.map +1 -1
- package/dist/esm/commands/publish.d.ts.map +1 -1
- package/dist/esm/commands/publish.js +17 -8
- package/dist/esm/commands/publish.js.map +1 -1
- 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 +62 -36
- package/dist/esm/commands/query.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 +97 -0
- package/dist/esm/commands/serve.js.map +1 -0
- package/dist/esm/commands/version.d.ts.map +1 -1
- package/dist/esm/commands/version.js +21 -15
- package/dist/esm/commands/version.js.map +1 -1
- package/dist/esm/config/definition.d.ts +11 -1
- package/dist/esm/config/definition.d.ts.map +1 -1
- package/dist/esm/config/definition.js +10 -2
- package/dist/esm/config/definition.js.map +1 -1
- package/dist/esm/exec-command.d.ts +1 -0
- package/dist/esm/exec-command.d.ts.map +1 -1
- package/dist/esm/exec-command.js +21 -8
- package/dist/esm/exec-command.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.map +1 -1
- package/dist/esm/start-gui.js +10 -3
- package/dist/esm/start-gui.js.map +1 -1
- package/package.json +26 -25
- 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 -13
- package/dist/esm/commands/gui.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { HumanReadableOutputGraph, JSONOutputGraph, MermaidOutputGraph } from '@vltpkg/graph';
|
|
2
1
|
import { humanReadableOutput, jsonOutput, mermaidOutput } from '@vltpkg/graph';
|
|
2
|
+
import type { HumanReadableOutputGraph, JSONOutputGraph, MermaidOutputGraph } from '@vltpkg/graph';
|
|
3
3
|
import type { CommandFn, CommandUsage } from '../index.ts';
|
|
4
4
|
export declare const usage: CommandUsage;
|
|
5
5
|
export type ListResult = JSONOutputGraph & MermaidOutputGraph & HumanReadableOutputGraph & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,mBAAmB,EACnB,UAAU,EACV,aAAa,EAEd,MAAM,eAAe,CAAA;AAQtB,OAAO,KAAK,EACV,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAGnB,MAAM,eAAe,CAAA;AAGtB,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1D,eAAO,MAAM,KAAK,EAAE,YAyDhB,CAAA;AAEJ,MAAM,MAAM,UAAU,GAAG,eAAe,GACtC,kBAAkB,GAClB,wBAAwB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD,eAAO,MAAM,KAAK;;;;;CAUoB,CAAA;AAEtC,eAAO,MAAM,OAAO,EAAE,SAAS,CAAC,UAAU,CA+JzC,CAAA"}
|
|
@@ -5,6 +5,7 @@ import { SecurityArchive } from '@vltpkg/security-archive';
|
|
|
5
5
|
import { error } from '@vltpkg/error-cause';
|
|
6
6
|
import { commandUsage } from "../config/usage.js";
|
|
7
7
|
import { startGUI } from "../start-gui.js";
|
|
8
|
+
import { createHostContextsMap } from "../query-host-contexts.js";
|
|
8
9
|
export const usage = () => commandUsage({
|
|
9
10
|
command: 'ls',
|
|
10
11
|
usage: [
|
|
@@ -68,14 +69,22 @@ export const views = {
|
|
|
68
69
|
export const command = async (conf) => {
|
|
69
70
|
const modifiers = GraphModifier.maybeLoad(conf.options);
|
|
70
71
|
const monorepo = conf.options.monorepo;
|
|
71
|
-
const mainManifest = conf.options.packageJson.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
const mainManifest = conf.options.packageJson.maybeRead(conf.options.projectRoot);
|
|
73
|
+
let graph;
|
|
74
|
+
let securityArchive;
|
|
75
|
+
// optionally load the cwd graph if we found a package.json file
|
|
76
|
+
if (mainManifest) {
|
|
77
|
+
graph = actual.load({
|
|
78
|
+
...conf.options,
|
|
79
|
+
mainManifest,
|
|
80
|
+
modifiers,
|
|
81
|
+
monorepo,
|
|
82
|
+
loadManifests: true,
|
|
83
|
+
});
|
|
84
|
+
securityArchive = await SecurityArchive.start({
|
|
85
|
+
nodes: [...graph.nodes.values()],
|
|
86
|
+
});
|
|
87
|
+
}
|
|
79
88
|
// Validate positional arguments - only allow package names, not direct queries
|
|
80
89
|
for (const arg of conf.positionals) {
|
|
81
90
|
if (!/^[@\w-]/.test(arg)) {
|
|
@@ -85,38 +94,40 @@ export const command = async (conf) => {
|
|
|
85
94
|
});
|
|
86
95
|
}
|
|
87
96
|
}
|
|
97
|
+
// retrieve default values and set up host contexts
|
|
88
98
|
const positionalQueryString = conf.positionals
|
|
89
99
|
.map(k => `#${k.replace(/\//, '\\/')}`)
|
|
90
100
|
.join(', ');
|
|
91
101
|
const targetQueryString = conf.get('target');
|
|
102
|
+
const scopeQueryString = conf.get('scope');
|
|
92
103
|
const queryString = targetQueryString || positionalQueryString;
|
|
93
|
-
const
|
|
94
|
-
graph,
|
|
95
|
-
specOptions: conf.options,
|
|
96
|
-
});
|
|
97
|
-
const query = new Query({
|
|
98
|
-
graph,
|
|
99
|
-
specOptions: conf.options,
|
|
100
|
-
securityArchive,
|
|
101
|
-
});
|
|
102
|
-
const projectQueryString = ':project, :project > *';
|
|
104
|
+
const projectQueryString = ':workspace, :project > *';
|
|
103
105
|
const selectImporters = [];
|
|
106
|
+
const hostContexts = await createHostContextsMap(conf);
|
|
104
107
|
const importers = new Set();
|
|
105
108
|
const scopeIDs = [];
|
|
106
109
|
// handle --scope option to add scope nodes as importers
|
|
107
|
-
const scopeQueryString = conf.get('scope');
|
|
108
110
|
let scopeNodes;
|
|
109
111
|
if (scopeQueryString) {
|
|
110
112
|
// run scope query to get all matching nodes
|
|
113
|
+
/* c8 ignore start */
|
|
114
|
+
const edges = graph?.edges ?? new Set();
|
|
115
|
+
const nodes = graph?.nodes ?
|
|
116
|
+
new Set(graph.nodes.values())
|
|
117
|
+
: new Set();
|
|
118
|
+
const importers = graph?.importers ?? new Set();
|
|
119
|
+
/* c8 ignore stop */
|
|
111
120
|
const scopeQuery = new Query({
|
|
112
|
-
|
|
113
|
-
|
|
121
|
+
nodes,
|
|
122
|
+
edges,
|
|
123
|
+
importers,
|
|
114
124
|
securityArchive,
|
|
125
|
+
hostContexts,
|
|
115
126
|
});
|
|
116
|
-
const { nodes } = await scopeQuery.search(scopeQueryString, {
|
|
127
|
+
const { nodes: resultNodes } = await scopeQuery.search(scopeQueryString, {
|
|
117
128
|
signal: new AbortController().signal,
|
|
118
129
|
});
|
|
119
|
-
scopeNodes =
|
|
130
|
+
scopeNodes = resultNodes;
|
|
120
131
|
}
|
|
121
132
|
if (scopeQueryString && scopeNodes) {
|
|
122
133
|
// Add all scope nodes to importers Set (treat them as top-level items)
|
|
@@ -124,10 +135,10 @@ export const command = async (conf) => {
|
|
|
124
135
|
importers.add(asNode(queryNode));
|
|
125
136
|
}
|
|
126
137
|
}
|
|
127
|
-
else {
|
|
138
|
+
else if ('workspace' in conf.values) {
|
|
128
139
|
// if in a workspace environment, select only the specified
|
|
129
140
|
// workspaces as top-level items
|
|
130
|
-
if (monorepo) {
|
|
141
|
+
if (monorepo && graph) {
|
|
131
142
|
for (const workspace of monorepo.filter(conf.values)) {
|
|
132
143
|
const w = graph.nodes.get(workspace.id);
|
|
133
144
|
if (w) {
|
|
@@ -138,31 +149,51 @@ export const command = async (conf) => {
|
|
|
138
149
|
}
|
|
139
150
|
}
|
|
140
151
|
}
|
|
141
|
-
// if no top-level item was set then by default
|
|
142
|
-
// we just set all importers as top-level items
|
|
143
|
-
if (importers.size === 0) {
|
|
144
|
-
for (const importer of graph.importers) {
|
|
145
|
-
importers.add(importer);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
152
|
}
|
|
149
153
|
// build a default query string to use in the target search
|
|
150
154
|
const selectImportersQueryString = selectImporters.join(', ');
|
|
151
|
-
const
|
|
155
|
+
const defaultProjectQueryString = (graph &&
|
|
156
|
+
selectImporters.length &&
|
|
152
157
|
selectImporters.length < graph.importers.size) ?
|
|
153
158
|
selectImportersQueryString
|
|
154
159
|
: projectQueryString;
|
|
160
|
+
const defaultLocalScopeQueryString = ':host(local) :root > *';
|
|
155
161
|
// retrieve the selected nodes and edges
|
|
156
|
-
|
|
162
|
+
/* c8 ignore start */
|
|
163
|
+
const edges_ = graph?.edges ?? new Set();
|
|
164
|
+
const nodes_ = graph?.nodes ?
|
|
165
|
+
new Set(graph.nodes.values())
|
|
166
|
+
: new Set();
|
|
167
|
+
const importers_ = importers.size === 0 && graph ?
|
|
168
|
+
new Set([graph.mainImporter])
|
|
169
|
+
: importers;
|
|
170
|
+
/* c8 ignore stop */
|
|
171
|
+
const q = new Query({
|
|
172
|
+
nodes: nodes_,
|
|
173
|
+
edges: edges_,
|
|
174
|
+
importers: importers_,
|
|
175
|
+
securityArchive,
|
|
176
|
+
hostContexts,
|
|
177
|
+
});
|
|
178
|
+
const query = queryString ||
|
|
179
|
+
/* c8 ignore next */
|
|
180
|
+
(graph ? defaultProjectQueryString : defaultLocalScopeQueryString);
|
|
181
|
+
const { edges, nodes, importers: queryResultImporters, } = await q.search(query, {
|
|
157
182
|
signal: new AbortController().signal,
|
|
158
183
|
scopeIDs: scopeIDs.length > 0 ? scopeIDs : undefined,
|
|
159
184
|
});
|
|
160
185
|
return {
|
|
161
|
-
importers
|
|
186
|
+
importers: importers.size === 0 ?
|
|
187
|
+
new Set(queryResultImporters)
|
|
188
|
+
: importers,
|
|
162
189
|
edges,
|
|
163
190
|
nodes,
|
|
164
|
-
queryString: queryString || defaultQueryString,
|
|
165
191
|
highlightSelection: !!(targetQueryString || positionalQueryString),
|
|
192
|
+
queryString: queryString ||
|
|
193
|
+
(graph ?
|
|
194
|
+
/* c8 ignore next 2 */
|
|
195
|
+
defaultProjectQueryString
|
|
196
|
+
: defaultLocalScopeQueryString),
|
|
166
197
|
};
|
|
167
198
|
};
|
|
168
199
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n HumanReadableOutputGraph,\n JSONOutputGraph,\n MermaidOutputGraph,\n Node,\n} from '@vltpkg/graph'\nimport {\n actual,\n asNode,\n humanReadableOutput,\n jsonOutput,\n mermaidOutput,\n GraphModifier,\n} from '@vltpkg/graph'\nimport LZString from 'lz-string'\nimport { Query } from '@vltpkg/query'\nimport { SecurityArchive } from '@vltpkg/security-archive'\nimport type { DepID } from '@vltpkg/dep-id'\nimport { error } from '@vltpkg/error-cause'\nimport { commandUsage } from '../config/usage.ts'\nimport type { CommandFn, CommandUsage } from '../index.ts'\nimport { startGUI } from '../start-gui.ts'\nimport type { Views } from '../view.ts'\n\nexport const usage: CommandUsage = () =>\n commandUsage({\n command: 'ls',\n usage: [\n '',\n '[package-names...] [--view=human | json | mermaid | gui]',\n '[--scope=<query>] [--target=<query>] [--view=human | json | mermaid | gui]',\n ],\n description: `List installed dependencies matching given package names or query selectors.\n\n Package names provided as positional arguments will be used to filter\n the results to show only dependencies with those names.\n\n The --scope and --target options accepts DSS query selectors to filter\n packages. Using --scope, you can specify which packages to treat as the\n top-level items in the output graph. The --target option allows you to\n filter what dependencies to include in the output. Using both options\n allows you to render subgraphs of the dependency graph.\n\n Defaults to listing direct dependencies of a project and any configured\n workspace.`,\n examples: {\n '': {\n description:\n 'List direct dependencies of the current project / workspace',\n },\n 'foo bar baz': {\n description: `List all dependencies named 'foo', 'bar', or 'baz'`,\n },\n '--scope=\":root > #dependency-name\"': {\n description:\n 'Defines a direct dependency as the output top-level scope',\n },\n '--target=\"*\"': {\n description: 'List all dependencies using a query selector',\n },\n '--target=\":workspace > *:peer\"': {\n description: 'List all peer dependencies of all workspaces',\n },\n },\n options: {\n scope: {\n value: '<query>',\n description:\n 'Query selector to select top-level packages using the DSS query language syntax.',\n },\n target: {\n value: '<query>',\n description:\n 'Query selector to filter packages using the DSS query language syntax.',\n },\n view: {\n value: '[human | json | mermaid | gui]',\n description:\n 'Output format. Defaults to human-readable or json if no tty.',\n },\n },\n })\n\nexport type ListResult = JSONOutputGraph &\n MermaidOutputGraph &\n HumanReadableOutputGraph & { queryString: string }\n\nexport const views = {\n json: jsonOutput,\n mermaid: mermaidOutput,\n human: humanReadableOutput,\n gui: async ({ queryString }, _, conf) => {\n await startGUI(\n conf,\n `/explore/${LZString.compressToEncodedURIComponent(queryString)}/overview`,\n )\n },\n} as const satisfies Views<ListResult>\n\nexport const command: CommandFn<ListResult> = async conf => {\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: true,\n })\n\n // Validate positional arguments - only allow package names, not direct queries\n for (const arg of conf.positionals) {\n if (!/^[@\\w-]/.test(arg)) {\n throw error(\n `Direct queries are not supported as positional arguments. Use package names only.`,\n {\n code: 'EUSAGE',\n cause: `Argument '${arg}' appears to be a query syntax. Only package names are allowed as positional arguments.`,\n },\n )\n }\n }\n\n const positionalQueryString = conf.positionals\n .map(k => `#${k.replace(/\\//, '\\\\/')}`)\n .join(', ')\n const targetQueryString = conf.get('target')\n const queryString = targetQueryString || positionalQueryString\n\n const securityArchive = await SecurityArchive.start({\n graph,\n specOptions: conf.options,\n })\n const query = new Query({\n graph,\n specOptions: conf.options,\n securityArchive,\n })\n const projectQueryString = ':project, :project > *'\n const selectImporters: string[] = []\n\n const importers = new Set<Node>()\n const scopeIDs: DepID[] = []\n\n // handle --scope option to add scope nodes as importers\n const scopeQueryString = conf.get('scope')\n let scopeNodes\n if (scopeQueryString) {\n // run scope query to get all matching nodes\n const scopeQuery = new Query({\n graph,\n specOptions: conf.options,\n securityArchive,\n })\n const { nodes } = await scopeQuery.search(scopeQueryString, {\n signal: new AbortController().signal,\n })\n scopeNodes = nodes\n }\n\n if (scopeQueryString && scopeNodes) {\n // Add all scope nodes to importers Set (treat them as top-level items)\n for (const queryNode of scopeNodes) {\n importers.add(asNode(queryNode))\n }\n } else {\n // if in a workspace environment, select only the specified\n // workspaces as top-level items\n if (monorepo) {\n for (const workspace of monorepo.filter(conf.values)) {\n const w: Node | undefined = graph.nodes.get(workspace.id)\n if (w) {\n importers.add(w)\n selectImporters.push(`[name=\"${w.name}\"]`)\n selectImporters.push(`[name=\"${w.name}\"] > *`)\n scopeIDs.push(workspace.id)\n }\n }\n }\n // if no top-level item was set then by default\n // we just set all importers as top-level items\n if (importers.size === 0) {\n for (const importer of graph.importers) {\n importers.add(importer)\n }\n }\n }\n\n // build a default query string to use in the target search\n const selectImportersQueryString = selectImporters.join(', ')\n const defaultQueryString =\n (\n selectImporters.length &&\n selectImporters.length < graph.importers.size\n ) ?\n selectImportersQueryString\n : projectQueryString\n\n // retrieve the selected nodes and edges\n const { edges, nodes } = await query.search(\n queryString || defaultQueryString,\n {\n signal: new AbortController().signal,\n scopeIDs: scopeIDs.length > 0 ? scopeIDs : undefined,\n },\n )\n\n return {\n importers,\n edges,\n nodes,\n queryString: queryString || defaultQueryString,\n highlightSelection: !!(\n targetQueryString || positionalQueryString\n ),\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n actual,\n asNode,\n humanReadableOutput,\n jsonOutput,\n mermaidOutput,\n GraphModifier,\n} from '@vltpkg/graph'\nimport LZString from 'lz-string'\nimport { Query } from '@vltpkg/query'\nimport { SecurityArchive } from '@vltpkg/security-archive'\nimport { error } from '@vltpkg/error-cause'\nimport { commandUsage } from '../config/usage.ts'\nimport { startGUI } from '../start-gui.ts'\nimport { createHostContextsMap } from '../query-host-contexts.ts'\nimport type {\n HumanReadableOutputGraph,\n JSONOutputGraph,\n MermaidOutputGraph,\n Node,\n Graph,\n} from '@vltpkg/graph'\nimport type { DepID } from '@vltpkg/dep-id'\nimport type { NodeLike } from '@vltpkg/types'\nimport type { CommandFn, CommandUsage } from '../index.ts'\nimport type { Views } from '../view.ts'\n\nexport const usage: CommandUsage = () =>\n commandUsage({\n command: 'ls',\n usage: [\n '',\n '[package-names...] [--view=human | json | mermaid | gui]',\n '[--scope=<query>] [--target=<query>] [--view=human | json | mermaid | gui]',\n ],\n description: `List installed dependencies matching given package names or query selectors.\n\n Package names provided as positional arguments will be used to filter\n the results to show only dependencies with those names.\n\n The --scope and --target options accepts DSS query selectors to filter\n packages. Using --scope, you can specify which packages to treat as the\n top-level items in the output graph. The --target option allows you to\n filter what dependencies to include in the output. Using both options\n allows you to render subgraphs of the dependency graph.\n\n Defaults to listing direct dependencies of a project and any configured\n workspace.`,\n examples: {\n '': {\n description:\n 'List direct dependencies of the current project / workspace',\n },\n 'foo bar baz': {\n description: `List all dependencies named 'foo', 'bar', or 'baz'`,\n },\n '--scope=\":root > #dependency-name\"': {\n description:\n 'Defines a direct dependency as the output top-level scope',\n },\n '--target=\"*\"': {\n description: 'List all dependencies using a query selector',\n },\n '--target=\":workspace > *:peer\"': {\n description: 'List all peer dependencies of all workspaces',\n },\n },\n options: {\n scope: {\n value: '<query>',\n description:\n 'Query selector to select top-level packages using the DSS query language syntax.',\n },\n target: {\n value: '<query>',\n description:\n 'Query selector to filter packages using the DSS query language syntax.',\n },\n view: {\n value: '[human | json | mermaid | gui]',\n description:\n 'Output format. Defaults to human-readable or json if no tty.',\n },\n },\n })\n\nexport type ListResult = JSONOutputGraph &\n MermaidOutputGraph &\n HumanReadableOutputGraph & { queryString: string }\n\nexport const views = {\n json: jsonOutput,\n mermaid: mermaidOutput,\n human: humanReadableOutput,\n gui: async ({ queryString }, _, conf) => {\n await startGUI(\n conf,\n `/explore/${LZString.compressToEncodedURIComponent(queryString)}/overview`,\n )\n },\n} as const satisfies Views<ListResult>\n\nexport const command: CommandFn<ListResult> = async conf => {\n const modifiers = GraphModifier.maybeLoad(conf.options)\n const monorepo = conf.options.monorepo\n const mainManifest = conf.options.packageJson.maybeRead(\n conf.options.projectRoot,\n )\n let graph: Graph | undefined\n let securityArchive: SecurityArchive | undefined\n\n // optionally load the cwd graph if we found a package.json file\n if (mainManifest) {\n graph = actual.load({\n ...conf.options,\n mainManifest,\n modifiers,\n monorepo,\n loadManifests: true,\n })\n securityArchive = await SecurityArchive.start({\n nodes: [...graph.nodes.values()],\n })\n }\n\n // Validate positional arguments - only allow package names, not direct queries\n for (const arg of conf.positionals) {\n if (!/^[@\\w-]/.test(arg)) {\n throw error(\n `Direct queries are not supported as positional arguments. Use package names only.`,\n {\n code: 'EUSAGE',\n cause: `Argument '${arg}' appears to be a query syntax. Only package names are allowed as positional arguments.`,\n },\n )\n }\n }\n\n // retrieve default values and set up host contexts\n const positionalQueryString = conf.positionals\n .map(k => `#${k.replace(/\\//, '\\\\/')}`)\n .join(', ')\n const targetQueryString = conf.get('target')\n const scopeQueryString = conf.get('scope')\n const queryString = targetQueryString || positionalQueryString\n const projectQueryString = ':workspace, :project > *'\n const selectImporters: string[] = []\n const hostContexts = await createHostContextsMap(conf)\n const importers = new Set<Node>()\n const scopeIDs: DepID[] = []\n\n // handle --scope option to add scope nodes as importers\n let scopeNodes\n if (scopeQueryString) {\n // run scope query to get all matching nodes\n /* c8 ignore start */\n const edges = graph?.edges ?? new Set()\n const nodes =\n graph?.nodes ?\n new Set<NodeLike>(graph.nodes.values())\n : new Set<NodeLike>()\n const importers = graph?.importers ?? new Set()\n /* c8 ignore stop */\n const scopeQuery = new Query({\n nodes,\n edges,\n importers,\n securityArchive,\n hostContexts,\n })\n const { nodes: resultNodes } = await scopeQuery.search(\n scopeQueryString,\n {\n signal: new AbortController().signal,\n },\n )\n scopeNodes = resultNodes\n }\n\n if (scopeQueryString && scopeNodes) {\n // Add all scope nodes to importers Set (treat them as top-level items)\n for (const queryNode of scopeNodes) {\n importers.add(asNode(queryNode))\n }\n } else if ('workspace' in conf.values) {\n // if in a workspace environment, select only the specified\n // workspaces as top-level items\n if (monorepo && graph) {\n for (const workspace of monorepo.filter(conf.values)) {\n const w: Node | undefined = graph.nodes.get(workspace.id)\n if (w) {\n importers.add(w)\n selectImporters.push(`[name=\"${w.name}\"]`)\n selectImporters.push(`[name=\"${w.name}\"] > *`)\n scopeIDs.push(workspace.id)\n }\n }\n }\n }\n\n // build a default query string to use in the target search\n const selectImportersQueryString = selectImporters.join(', ')\n const defaultProjectQueryString =\n (\n graph &&\n selectImporters.length &&\n selectImporters.length < graph.importers.size\n ) ?\n selectImportersQueryString\n : projectQueryString\n const defaultLocalScopeQueryString = ':host(local) :root > *'\n\n // retrieve the selected nodes and edges\n /* c8 ignore start */\n const edges_ = graph?.edges ?? new Set()\n const nodes_ =\n graph?.nodes ?\n new Set<NodeLike>(graph.nodes.values())\n : new Set<NodeLike>()\n const importers_ =\n importers.size === 0 && graph ?\n new Set([graph.mainImporter])\n : importers\n /* c8 ignore stop */\n const q = new Query({\n nodes: nodes_,\n edges: edges_,\n importers: importers_,\n securityArchive,\n hostContexts,\n })\n const query =\n queryString ||\n /* c8 ignore next */\n (graph ? defaultProjectQueryString : defaultLocalScopeQueryString)\n const {\n edges,\n nodes,\n importers: queryResultImporters,\n } = await q.search(query, {\n signal: new AbortController().signal,\n scopeIDs: scopeIDs.length > 0 ? scopeIDs : undefined,\n })\n\n return {\n importers:\n importers.size === 0 ?\n new Set(queryResultImporters)\n : importers,\n edges,\n nodes,\n highlightSelection: !!(\n targetQueryString || positionalQueryString\n ),\n queryString:\n queryString ||\n (graph ?\n /* c8 ignore next 2 */\n defaultProjectQueryString\n : defaultLocalScopeQueryString),\n }\n}\n"]}
|
|
@@ -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;AAM1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,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;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"}
|
|
@@ -8,6 +8,7 @@ import prettyBytes from 'pretty-bytes';
|
|
|
8
8
|
import { actual } from '@vltpkg/graph';
|
|
9
9
|
import { Query } from '@vltpkg/query';
|
|
10
10
|
import { error } from '@vltpkg/error-cause';
|
|
11
|
+
import { createHostContextsMap } from "../query-host-contexts.js";
|
|
11
12
|
export const usage = () => commandUsage({
|
|
12
13
|
command: 'pack',
|
|
13
14
|
usage: '',
|
|
@@ -53,16 +54,24 @@ export const command = async (conf) => {
|
|
|
53
54
|
const locations = [];
|
|
54
55
|
let single = null;
|
|
55
56
|
if (queryString) {
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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);
|
|
62
68
|
const query = new Query({
|
|
63
|
-
|
|
64
|
-
|
|
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(),
|
|
65
73
|
securityArchive: undefined,
|
|
74
|
+
hostContexts,
|
|
66
75
|
});
|
|
67
76
|
const { nodes } = await query.search(queryString, {
|
|
68
77
|
signal: new AbortController().signal,
|
|
@@ -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,OAAO,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,WAAW,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,MAAM,CAAC,MAAM,KAAK,GAAiB,GAAG,EAAE,CACtC,YAAY,CAAC;IACX,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,EAAE;IACT,WAAW,EAAE;;;0BAGS;IACtB,OAAO,EAAE;QACP,SAAS,EAAE;YACT,WAAW,EACT,sDAAsD;SACzD;KACF;CACF,CAAC,CAAA;AAkBJ,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,OAAO,CAAC,EAAE;QACf,MAAM,IAAI,GAAG,CAAC,CAAsB,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG;gBACZ,eAAe,CAAC,CAAC,EAAE,EAAE;gBACrB,YAAY,CAAC,CAAC,QAAQ,EAAE;gBACxB,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,QAAQ;gBAC5B,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,oBAAoB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBACzC,qBAAqB,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;aACnD,CAAA;YACD,IAAI,CAAC,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;YAClD,IAAI,CAAC,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;YAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC,CAAA;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnB,CAAC;IACD,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAC2B,CAAA;AAEzC,MAAM,CAAC,MAAM,OAAO,GAA6B,KAAK,EAAC,IAAI,EAAC,EAAE;IAC5D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAEvC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,MAAM,GAAkB,IAAI,CAAA;IAEhC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;YACxB,GAAG,OAAO;YACV,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;YACnD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,KAAK;SACrB,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,KAAK;YACL,WAAW,EAAE,IAAI,CAAC,OAAO;YACzB,eAAe,EAAE,SAAS;SAC3B,CAAC,CAAA;QACF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;YAChD,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM;SACrC,CAAC,CAAA;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;YAClC,MAAM,CACJ,QAAQ,EACR,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,kBAAkB,EAAE;gBACvC,KAAK,EAAE,IAAI;aACZ,CAAC,CACH,CAAA;YACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;QACxD,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAA;IACjE,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,CACJ,SAAS,CAAC,MAAM,GAAG,CAAC,EACpB,KAAK,CAAC,sCAAsC,CAAC,CAC9C,CAAA;IAED,MAAM,OAAO,GAA0B,EAAE,CAAA;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,QAAgB,EAChB,IAAkB,EAClB,EAAE;IACF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5D,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAE3D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG;QACjB,GAAG,EAAE,WAAW;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;QACrC,QAAQ;QACR,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;KACpB,CAAA;IAED,MAAM,GAAG,CAAC;QACR,GAAG,UAAU;QACb,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IAEF,MAAM,GAAG,CAAC;QACR,GAAG,UAAU;QACb,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IAEF,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,KAAK,EACL,SAAS,EACT,MAAM,GACP,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;IAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,GAAG,CAAC;QACR,GAAG,UAAU;QACb,IAAI,EAAE,UAAU;KACjB,CAAC,CAAA;IAEF,OAAO;QACL,EAAE,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE;QACxB,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,KAAK;QACL,IAAI,EAAE,WAAW,CAAC,MAAM;QACxB,YAAY;QACZ,MAAM;QACN,SAAS;KACV,CAAA;AACH,CAAC,CAAA","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
|
+
{"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,OAAO,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,WAAW,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEjE,MAAM,CAAC,MAAM,KAAK,GAAiB,GAAG,EAAE,CACtC,YAAY,CAAC;IACX,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,EAAE;IACT,WAAW,EAAE;;;0BAGS;IACtB,OAAO,EAAE;QACP,SAAS,EAAE;YACT,WAAW,EACT,sDAAsD;SACzD;KACF;CACF,CAAC,CAAA;AAkBJ,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,OAAO,CAAC,EAAE;QACf,MAAM,IAAI,GAAG,CAAC,CAAsB,EAAE,EAAE;YACtC,MAAM,KAAK,GAAG;gBACZ,eAAe,CAAC,CAAC,EAAE,EAAE;gBACrB,YAAY,CAAC,CAAC,QAAQ,EAAE;gBACxB,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,QAAQ;gBAC5B,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,oBAAoB,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBACzC,qBAAqB,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;aACnD,CAAA;YACD,IAAI,CAAC,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;YAClD,IAAI,CAAC,CAAC,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;YAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,CAAC,CAAA;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnB,CAAC;IACD,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAC2B,CAAA;AAEzC,MAAM,CAAC,MAAM,OAAO,GAA6B,KAAK,EAAC,IAAI,EAAC,EAAE;IAC5D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAEvC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,IAAI,MAAM,GAAkB,IAAI,CAAA;IAEhC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;QAC/D,IAAI,KAAK,CAAA;QACT,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;gBAClB,GAAG,OAAO;gBACV,YAAY;gBACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,aAAa,EAAE,KAAK;aACrB,CAAC,CAAA;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,oBAAoB;YACpB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YACxD,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,GAAG,EAAE;YAChC,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI,GAAG,EAAE;YACxC,eAAe,EAAE,SAAS;YAC1B,YAAY;SACb,CAAC,CAAA;QACF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE;YAChD,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM;SACrC,CAAC,CAAA;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;YAClC,MAAM,CACJ,QAAQ,EACR,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,kBAAkB,EAAE;gBACvC,KAAK,EAAE,IAAI;aACZ,CAAC,CACH,CAAA;YACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;QACxD,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QACpC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAA;IACjE,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,CACJ,SAAS,CAAC,MAAM,GAAG,CAAC,EACpB,KAAK,CAAC,sCAAsC,CAAC,CAC9C,CAAA;IAED,MAAM,OAAO,GAA0B,EAAE,CAAA;IACzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;IACnD,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,QAAgB,EAChB,IAAkB,EAClB,EAAE;IACF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5D,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAE3D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG;QACjB,GAAG,EAAE,WAAW;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;QACrC,QAAQ;QACR,aAAa,EAAE,IAAI;QACnB,aAAa,EAAE,IAAI;KACpB,CAAA;IAED,MAAM,GAAG,CAAC;QACR,GAAG,UAAU;QACb,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IAEF,MAAM,GAAG,CAAC;QACR,GAAG,UAAU;QACb,IAAI,EAAE,SAAS;KAChB,CAAC,CAAA;IAEF,MAAM,EACJ,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,KAAK,EACL,SAAS,EACT,MAAM,GACP,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;IAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,GAAG,CAAC;QACR,GAAG,UAAU;QACb,IAAI,EAAE,UAAU;KACjB,CAAC,CAAA;IAEF,OAAO;QACL,EAAE,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE;QACxB,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,KAAK;QACL,IAAI,EAAE,WAAW,CAAC,MAAM;QACxB,YAAY;QACZ,MAAM;QACN,SAAS;KACV,CAAA;AACH,CAAC,CAAA","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 +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,13 +1,14 @@
|
|
|
1
|
+
import assert from 'node:assert';
|
|
1
2
|
import { resolve } from 'node:path';
|
|
2
3
|
import * as dotProp from '@vltpkg/dot-prop';
|
|
3
4
|
import { error } from '@vltpkg/error-cause';
|
|
4
|
-
import assert from 'node:assert';
|
|
5
|
-
import { commandUsage } from "../config/usage.js";
|
|
6
5
|
import { init } from '@vltpkg/init';
|
|
7
|
-
import {
|
|
8
|
-
import { actual, GraphModifier } from '@vltpkg/graph';
|
|
6
|
+
import { actual, GraphModifier, VIRTUAL_ROOT_ID } from '@vltpkg/graph';
|
|
9
7
|
import { Query } from '@vltpkg/query';
|
|
10
8
|
import { SecurityArchive } from '@vltpkg/security-archive';
|
|
9
|
+
import { views as initViews } from "./init.js";
|
|
10
|
+
import { commandUsage } from "../config/usage.js";
|
|
11
|
+
import { createHostContextsMap } from "../query-host-contexts.js";
|
|
11
12
|
export const views = {
|
|
12
13
|
human: (results, _, config) => {
|
|
13
14
|
// `vlt pkg init` is an alias for `vlt init`
|
|
@@ -76,33 +77,48 @@ export const command = async (conf) => {
|
|
|
76
77
|
let single = null;
|
|
77
78
|
if (queryString) {
|
|
78
79
|
const modifiers = GraphModifier.maybeLoad(options);
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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();
|
|
92
104
|
const query = new Query({
|
|
93
|
-
|
|
94
|
-
|
|
105
|
+
edges,
|
|
106
|
+
nodes,
|
|
107
|
+
importers,
|
|
95
108
|
securityArchive,
|
|
109
|
+
hostContexts,
|
|
96
110
|
});
|
|
97
|
-
const { nodes } = await query.search(queryString, {
|
|
111
|
+
const { nodes: resultNodes } = await query.search(queryString, {
|
|
98
112
|
signal: new AbortController().signal,
|
|
99
113
|
});
|
|
100
|
-
for (const node of
|
|
101
|
-
const
|
|
114
|
+
for (const node of resultNodes) {
|
|
115
|
+
const location = node.location;
|
|
102
116
|
assert(location, error(`node ${node.id} has no location`, {
|
|
103
117
|
found: node,
|
|
104
118
|
}));
|
|
105
|
-
|
|
119
|
+
if (node.id !== VIRTUAL_ROOT_ID) {
|
|
120
|
+
locations.push(resolve(node.projectRoot, location));
|
|
121
|
+
}
|
|
106
122
|
}
|
|
107
123
|
}
|
|
108
124
|
else if (paths?.length || groups?.length || recursive) {
|
|
@@ -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 { commandUsage } from '../config/usage.ts'\nimport type { CommandFn, CommandUsage } from '../index.ts'\nimport type { LoadedConfig } from '../config/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'\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 graph = actual.load({\n ...options,\n mainManifest: options.packageJson.read(projectRoot),\n modifiers,\n monorepo: options.monorepo,\n loadManifests: false,\n })\n\n const securityArchive =\n Query.hasSecuritySelectors(queryString) ?\n await SecurityArchive.start({\n graph,\n specOptions: options,\n })\n : undefined\n\n const query = new Query({\n graph,\n specOptions: options,\n securityArchive,\n })\n\n const { nodes } = await query.search(queryString, {\n signal: new AbortController().signal,\n })\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, 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"]}
|
|
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"]}
|
|
@@ -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;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"}
|
|
@@ -9,6 +9,7 @@ import { dirname, resolve } from 'node:path';
|
|
|
9
9
|
import prettyBytes from 'pretty-bytes';
|
|
10
10
|
import { actual } from '@vltpkg/graph';
|
|
11
11
|
import { Query } from '@vltpkg/query';
|
|
12
|
+
import { createHostContextsMap } from "../query-host-contexts.js";
|
|
12
13
|
export const usage = () => commandUsage({
|
|
13
14
|
command: 'publish',
|
|
14
15
|
usage: '',
|
|
@@ -69,16 +70,24 @@ export const command = async (conf) => {
|
|
|
69
70
|
const locations = [];
|
|
70
71
|
let single = null;
|
|
71
72
|
if (queryString) {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
const mainManifest = options.packageJson.maybeRead(projectRoot);
|
|
74
|
+
let graph;
|
|
75
|
+
if (mainManifest) {
|
|
76
|
+
graph = actual.load({
|
|
77
|
+
...options,
|
|
78
|
+
mainManifest,
|
|
79
|
+
monorepo: options.monorepo,
|
|
80
|
+
loadManifests: false,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const hostContexts = await createHostContextsMap(conf);
|
|
78
84
|
const query = new Query({
|
|
79
|
-
|
|
80
|
-
|
|
85
|
+
/* c8 ignore next */
|
|
86
|
+
nodes: graph ? new Set(graph.nodes.values()) : new Set(),
|
|
87
|
+
edges: graph?.edges ?? new Set(),
|
|
88
|
+
importers: graph?.importers ?? new Set(),
|
|
81
89
|
securityArchive: undefined,
|
|
90
|
+
hostContexts,
|
|
82
91
|
});
|
|
83
92
|
const { nodes } = await query.search(queryString, {
|
|
84
93
|
signal: new AbortController().signal,
|