@vzn/vx 0.0.608 → 0.0.609
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/package.json +5 -5
- package/src/orchestrator/projects.ts +16 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vzn/vx",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.609",
|
|
4
4
|
"description": "The fastest task runner and build cache for JavaScript monorepos.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
"node": ">=18"
|
|
22
22
|
},
|
|
23
23
|
"optionalDependencies": {
|
|
24
|
-
"@vzn/vx-linux-x64": "0.0.
|
|
25
|
-
"@vzn/vx-linux-arm64": "0.0.
|
|
26
|
-
"@vzn/vx-darwin-x64": "0.0.
|
|
27
|
-
"@vzn/vx-darwin-arm64": "0.0.
|
|
24
|
+
"@vzn/vx-linux-x64": "0.0.609",
|
|
25
|
+
"@vzn/vx-linux-arm64": "0.0.609",
|
|
26
|
+
"@vzn/vx-darwin-x64": "0.0.609",
|
|
27
|
+
"@vzn/vx-darwin-arm64": "0.0.609"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@anthropic-ai/sandbox-runtime": "^0.0.76"
|
|
@@ -9,6 +9,7 @@ import type { ProjectConfig, TaskConfig } from '../config.js'
|
|
|
9
9
|
import {
|
|
10
10
|
frozenProjectConfigs,
|
|
11
11
|
loadProjectConfigs,
|
|
12
|
+
LOCKFILE_NAME,
|
|
12
13
|
validateProjectConfig,
|
|
13
14
|
type LoadProjectConfigOptions,
|
|
14
15
|
type LoadReads,
|
|
@@ -243,6 +244,21 @@ export async function loadProjects(args: LoadProjectsArgs): Promise<LoadedProjec
|
|
|
243
244
|
// alike. With no root project it stays, and the graph's refusal says so.
|
|
244
245
|
const root = path.resolve(workspaceRoot)
|
|
245
246
|
const rootName = args.projectMetas.find((m) => path.resolve(m.dir) === root)?.name
|
|
247
|
+
// A project the lock holds whose config file is gone ran nothing under
|
|
248
|
+
// --frozen, green, though the lock promises what runs is what was
|
|
249
|
+
// locked (X-144); a run never even asks such a project for a task.
|
|
250
|
+
// Refused as a moved config is (D-88). With no lock at all, nothing was
|
|
251
|
+
// locked: a repo of config-less projects needs none.
|
|
252
|
+
if (lock) {
|
|
253
|
+
const bare = args.projectMetas.filter((m) => m.configPath === null)
|
|
254
|
+
const held = bare.length === 0 ? null : await lock().catch(() => null)
|
|
255
|
+
const gone = held === null ? undefined : bare.find((m) => Object.hasOwn(held.projects, m.name))
|
|
256
|
+
if (gone !== undefined && held !== null)
|
|
257
|
+
throw new UserError(
|
|
258
|
+
`${LOCKFILE_NAME} locks "${gone.name}" at ${held.projects[gone.name]!.configPath}, but it has no config now — ` +
|
|
259
|
+
`run \`vx lock\` to refresh, or delete ${LOCKFILE_NAME}`,
|
|
260
|
+
)
|
|
261
|
+
}
|
|
246
262
|
const projects = new Map<string, ProjectEntry>()
|
|
247
263
|
while (pending.length > 0) {
|
|
248
264
|
const round = pending.splice(0, pending.length)
|