@superblocksteam/sdk 2.0.123 → 2.0.124-next.0
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/.turbo/turbo-build.log +1 -1
- package/dist/cli-replacement/automatic-upgrades.d.ts +37 -1
- package/dist/cli-replacement/automatic-upgrades.d.ts.map +1 -1
- package/dist/cli-replacement/automatic-upgrades.js +162 -10
- package/dist/cli-replacement/automatic-upgrades.js.map +1 -1
- package/dist/cli-replacement/automatic-upgrades.test.js +377 -8
- package/dist/cli-replacement/automatic-upgrades.test.js.map +1 -1
- package/dist/cli-replacement/dependency-install-classifier.d.mts +21 -0
- package/dist/cli-replacement/dependency-install-classifier.d.mts.map +1 -0
- package/dist/cli-replacement/dependency-install-classifier.mjs +83 -0
- package/dist/cli-replacement/dependency-install-classifier.mjs.map +1 -0
- package/dist/cli-replacement/dependency-install-classifier.test.d.mts +2 -0
- package/dist/cli-replacement/dependency-install-classifier.test.d.mts.map +1 -0
- package/dist/cli-replacement/dependency-install-classifier.test.mjs +51 -0
- package/dist/cli-replacement/dependency-install-classifier.test.mjs.map +1 -0
- package/dist/cli-replacement/dev-s3-restore.test.mjs +170 -14
- package/dist/cli-replacement/dev-s3-restore.test.mjs.map +1 -1
- package/dist/cli-replacement/dev-startup-git-before-dbfs-order.test.mjs +33 -2
- package/dist/cli-replacement/dev-startup-git-before-dbfs-order.test.mjs.map +1 -1
- package/dist/cli-replacement/dev-token-priming.test.d.mts +31 -0
- package/dist/cli-replacement/dev-token-priming.test.d.mts.map +1 -0
- package/dist/cli-replacement/dev-token-priming.test.mjs +87 -0
- package/dist/cli-replacement/dev-token-priming.test.mjs.map +1 -0
- package/dist/cli-replacement/dev.d.mts +36 -0
- package/dist/cli-replacement/dev.d.mts.map +1 -1
- package/dist/cli-replacement/dev.interception.test.d.mts +2 -0
- package/dist/cli-replacement/dev.interception.test.d.mts.map +1 -0
- package/dist/cli-replacement/dev.interception.test.mjs +68 -0
- package/dist/cli-replacement/dev.interception.test.mjs.map +1 -0
- package/dist/cli-replacement/dev.mjs +396 -62
- package/dist/cli-replacement/dev.mjs.map +1 -1
- package/dist/cli-replacement/home-npmrc.d.mts +180 -0
- package/dist/cli-replacement/home-npmrc.d.mts.map +1 -0
- package/dist/cli-replacement/home-npmrc.mjs +283 -0
- package/dist/cli-replacement/home-npmrc.mjs.map +1 -0
- package/dist/cli-replacement/home-npmrc.test.d.mts +10 -0
- package/dist/cli-replacement/home-npmrc.test.d.mts.map +1 -0
- package/dist/cli-replacement/home-npmrc.test.mjs +582 -0
- package/dist/cli-replacement/home-npmrc.test.mjs.map +1 -0
- package/dist/cli-replacement/install-packages.classify.test.d.mts +2 -0
- package/dist/cli-replacement/install-packages.classify.test.d.mts.map +1 -0
- package/dist/cli-replacement/install-packages.classify.test.mjs +125 -0
- package/dist/cli-replacement/install-packages.classify.test.mjs.map +1 -0
- package/dist/cli-replacement/install-packages.npm-registry.test.d.mts +2 -0
- package/dist/cli-replacement/install-packages.npm-registry.test.d.mts.map +1 -0
- package/dist/cli-replacement/install-packages.npm-registry.test.mjs +260 -0
- package/dist/cli-replacement/install-packages.npm-registry.test.mjs.map +1 -0
- package/dist/cli-replacement/post-upgrade-lockfile-strip.d.mts +58 -0
- package/dist/cli-replacement/post-upgrade-lockfile-strip.d.mts.map +1 -0
- package/dist/cli-replacement/post-upgrade-lockfile-strip.mjs +224 -0
- package/dist/cli-replacement/post-upgrade-lockfile-strip.mjs.map +1 -0
- package/dist/cli-replacement/post-upgrade-lockfile-strip.test.d.mts +11 -0
- package/dist/cli-replacement/post-upgrade-lockfile-strip.test.d.mts.map +1 -0
- package/dist/cli-replacement/post-upgrade-lockfile-strip.test.mjs +317 -0
- package/dist/cli-replacement/post-upgrade-lockfile-strip.test.mjs.map +1 -0
- package/dist/cli-replacement/userconfig-env.integration.test.d.mts +26 -0
- package/dist/cli-replacement/userconfig-env.integration.test.d.mts.map +1 -0
- package/dist/cli-replacement/userconfig-env.integration.test.mjs +148 -0
- package/dist/cli-replacement/userconfig-env.integration.test.mjs.map +1 -0
- package/dist/dev-utils/dev-server-metrics.d.mts +25 -0
- package/dist/dev-utils/dev-server-metrics.d.mts.map +1 -1
- package/dist/dev-utils/dev-server-metrics.mjs +84 -0
- package/dist/dev-utils/dev-server-metrics.mjs.map +1 -1
- package/dist/dev-utils/dev-server-metrics.test.d.mts +2 -0
- package/dist/dev-utils/dev-server-metrics.test.d.mts.map +1 -0
- package/dist/dev-utils/dev-server-metrics.test.mjs +26 -0
- package/dist/dev-utils/dev-server-metrics.test.mjs.map +1 -0
- package/dist/dev-utils/dev-server.d.mts +23 -1
- package/dist/dev-utils/dev-server.d.mts.map +1 -1
- package/dist/dev-utils/dev-server.mjs +21 -9
- package/dist/dev-utils/dev-server.mjs.map +1 -1
- package/dist/dev-utils/dev-server.status.test.d.mts +2 -0
- package/dist/dev-utils/dev-server.status.test.d.mts.map +1 -0
- package/dist/dev-utils/dev-server.status.test.mjs +41 -0
- package/dist/dev-utils/dev-server.status.test.mjs.map +1 -0
- package/dist/dev-utils/token-manager.d.ts +31 -0
- package/dist/dev-utils/token-manager.d.ts.map +1 -1
- package/dist/dev-utils/token-manager.js +34 -0
- package/dist/dev-utils/token-manager.js.map +1 -1
- package/dist/telemetry/local-obs.js +1 -1
- package/dist/telemetry/local-obs.js.map +1 -1
- package/dist/telemetry/util.js +1 -1
- package/dist/types/scoped-jwt-token-payload.d.ts +1 -0
- package/dist/types/scoped-jwt-token-payload.d.ts.map +1 -1
- package/dist/version-control.d.mts.map +1 -1
- package/dist/version-control.mjs +6 -7
- package/dist/version-control.mjs.map +1 -1
- package/package.json +12 -12
- package/src/cli-replacement/automatic-upgrades.test.ts +530 -8
- package/src/cli-replacement/automatic-upgrades.ts +179 -7
- package/src/cli-replacement/dependency-install-classifier.mts +118 -0
- package/src/cli-replacement/dependency-install-classifier.test.mts +72 -0
- package/src/cli-replacement/dev-s3-restore.test.mts +210 -14
- package/src/cli-replacement/dev-startup-git-before-dbfs-order.test.mts +35 -2
- package/src/cli-replacement/dev-token-priming.test.mts +103 -0
- package/src/cli-replacement/dev.interception.test.mts +80 -0
- package/src/cli-replacement/dev.mts +495 -92
- package/src/cli-replacement/home-npmrc.mts +409 -0
- package/src/cli-replacement/home-npmrc.test.mts +757 -0
- package/src/cli-replacement/install-packages.classify.test.mts +168 -0
- package/src/cli-replacement/install-packages.npm-registry.test.mts +345 -0
- package/src/cli-replacement/post-upgrade-lockfile-strip.mts +296 -0
- package/src/cli-replacement/post-upgrade-lockfile-strip.test.mts +482 -0
- package/src/cli-replacement/userconfig-env.integration.test.mts +189 -0
- package/src/dev-utils/dev-server-metrics.mts +96 -0
- package/src/dev-utils/dev-server-metrics.test.mts +38 -0
- package/src/dev-utils/dev-server.mts +48 -8
- package/src/dev-utils/dev-server.status.test.mts +58 -0
- package/src/dev-utils/token-manager.ts +36 -0
- package/src/telemetry/local-obs.ts +1 -1
- package/src/telemetry/util.ts +1 -1
- package/src/types/scoped-jwt-token-payload.ts +1 -0
- package/src/version-control.mts +8 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/.turbo/turbo-publish-package.log +0 -0
|
@@ -7,9 +7,12 @@
|
|
|
7
7
|
* package.json version sync when resuming an existing app so the user's
|
|
8
8
|
* @superblocksteam/library pin matches the target version.
|
|
9
9
|
*/
|
|
10
|
+
import { EventEmitter } from "node:events";
|
|
10
11
|
import fs from "node:fs/promises";
|
|
12
|
+
import * as os from "node:os";
|
|
13
|
+
import * as path from "node:path";
|
|
11
14
|
import { describe, it, expect, beforeEach, vi } from "vitest";
|
|
12
|
-
import { checkVersionsAndWritePackageJson } from "./automatic-upgrades.js";
|
|
15
|
+
import { buildGlobalInstallArgs, buildInstallEnv, checkVersionsAndWritePackageJson, } from "./automatic-upgrades.js";
|
|
13
16
|
// ---------------------------------------------------------------------------
|
|
14
17
|
// Mocks
|
|
15
18
|
// ---------------------------------------------------------------------------
|
|
@@ -21,6 +24,10 @@ vi.mock("node:fs/promises", () => ({
|
|
|
21
24
|
}));
|
|
22
25
|
vi.mock("node:child_process", () => ({
|
|
23
26
|
exec: vi.fn(),
|
|
27
|
+
// `execFile` is exported so `promisify(execFile)` in npm-registry.ts (loaded
|
|
28
|
+
// transitively via `@superblocksteam/vite-plugin-file-sync/npm-error-parser`)
|
|
29
|
+
// doesn't crash at module load. This test never invokes it.
|
|
30
|
+
execFile: vi.fn(),
|
|
24
31
|
}));
|
|
25
32
|
const upgradeWithPackageManagerCalls = [];
|
|
26
33
|
vi.mock("package-manager-detector/detect", () => ({
|
|
@@ -40,13 +47,26 @@ vi.mock("./version-detection.js", () => ({
|
|
|
40
47
|
})),
|
|
41
48
|
clearCliVersionCache: vi.fn(),
|
|
42
49
|
}));
|
|
50
|
+
// `vi.mock` calls are hoisted to the top of the module, so any factory must
|
|
51
|
+
// either declare its mocks inline OR use `vi.hoisted()` to hoist the mock
|
|
52
|
+
// fns alongside the mock registration. The latter lets us reuse the mocks
|
|
53
|
+
// inside test bodies (e.g. `.mockReturnValue(...)`).
|
|
54
|
+
const { stripUpgradedCliLockfilesMock, loggerMock } = vi.hoisted(() => {
|
|
55
|
+
return {
|
|
56
|
+
stripUpgradedCliLockfilesMock: vi.fn(async () => ({})),
|
|
57
|
+
loggerMock: {
|
|
58
|
+
info: vi.fn(),
|
|
59
|
+
warn: vi.fn(),
|
|
60
|
+
error: vi.fn(),
|
|
61
|
+
debug: vi.fn(),
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
vi.mock("./post-upgrade-lockfile-strip.mjs", () => ({
|
|
66
|
+
stripUpgradedCliLockfiles: stripUpgradedCliLockfilesMock,
|
|
67
|
+
}));
|
|
43
68
|
vi.mock("../telemetry/logging.js", () => ({
|
|
44
|
-
getLogger: () =>
|
|
45
|
-
info: vi.fn(),
|
|
46
|
-
warn: vi.fn(),
|
|
47
|
-
error: vi.fn(),
|
|
48
|
-
debug: vi.fn(),
|
|
49
|
-
}),
|
|
69
|
+
getLogger: () => loggerMock,
|
|
50
70
|
getErrorMeta: vi.fn(() => ({})),
|
|
51
71
|
}));
|
|
52
72
|
vi.mock("../telemetry/index.js", () => ({
|
|
@@ -54,8 +74,18 @@ vi.mock("../telemetry/index.js", () => ({
|
|
|
54
74
|
startActiveSpan: vi.fn((_name, fn) => fn({ end: vi.fn() })),
|
|
55
75
|
}),
|
|
56
76
|
}));
|
|
57
|
-
|
|
77
|
+
// Use `importOriginal` so transitive consumers of `@superblocksteam/shared`
|
|
78
|
+
// (e.g. `@superblocksteam/telemetry`'s policy module pulled in by the
|
|
79
|
+
// `bucketNpmRegistryHost` import added in this file's source under test for
|
|
80
|
+
// APPS-4381) see every real export (`DeploymentTypeEnum`, etc.), while still
|
|
81
|
+
// letting the test override the two symbols `automatic-upgrades.ts` itself
|
|
82
|
+
// consumes. The factory return type is `any` because `NON_SB_ORG_UPDATE_ERROR`
|
|
83
|
+
// is a string-literal type in the real module that our test override can't
|
|
84
|
+
// satisfy structurally; `vi.mock`'s value-level behaviour is unaffected.
|
|
85
|
+
vi.mock("@superblocksteam/shared", async (importOriginal) => {
|
|
86
|
+
const actual = (await importOriginal());
|
|
58
87
|
return {
|
|
88
|
+
...actual,
|
|
59
89
|
NON_SB_ORG_UPDATE_ERROR: "non_sb_org_update_error",
|
|
60
90
|
// traceFunction in tests is a passthrough — we just want the fn to run.
|
|
61
91
|
traceFunction: async ({ fn }) => {
|
|
@@ -85,6 +115,8 @@ const mockConfig = {
|
|
|
85
115
|
beforeEach(() => {
|
|
86
116
|
vi.clearAllMocks();
|
|
87
117
|
upgradeWithPackageManagerCalls.length = 0;
|
|
118
|
+
// Restore default mock return values after `clearAllMocks` resets them.
|
|
119
|
+
stripUpgradedCliLockfilesMock.mockImplementation(async () => ({}));
|
|
88
120
|
// Mock global fetch used by getRemoteVersions
|
|
89
121
|
global.fetch = vi.fn(async () => ({
|
|
90
122
|
ok: true,
|
|
@@ -224,6 +256,268 @@ describe("checkVersionsAndWritePackageJson", () => {
|
|
|
224
256
|
expect(parsed.dependencies["@superblocksteam/sdk-api"]).toBeUndefined();
|
|
225
257
|
expect(parsed.dependencies["@superblocksteam/library"]).toBe(TARGET_LIBRARY_VERSION);
|
|
226
258
|
});
|
|
259
|
+
// -----------------------------------------------------------------
|
|
260
|
+
// APPS-4324: classifyNpmExecStderr wiring for `upgradeCliWithPackageManager`
|
|
261
|
+
//
|
|
262
|
+
// The CLI auto-upgrade pod's npm fallback exec used to surface a
|
|
263
|
+
// perimeter-block (air-gapped customer with public-npm egress denied)
|
|
264
|
+
// as a generic `"Failed to upgrade packages"` log, leaving the operator
|
|
265
|
+
// no signal as to whether the cause was a transient registry blip, a
|
|
266
|
+
// bad auth token, or a missing package. These tests pin the structured
|
|
267
|
+
// log emitted just before the upgrade promise rejects.
|
|
268
|
+
//
|
|
269
|
+
// Note on flow: `checkVersionsAndWritePackageJson` returns the upgrade
|
|
270
|
+
// promise to its caller (`dev.mts` joins it via `Promise.all` against
|
|
271
|
+
// the local install). The rejection is therefore observed by awaiting
|
|
272
|
+
// `result.upgradePromises[0]`, not by the outer try/catch inside this
|
|
273
|
+
// function (which only catches sync errors during the package.json
|
|
274
|
+
// read/write block).
|
|
275
|
+
// -----------------------------------------------------------------
|
|
276
|
+
/** Build a fake ChildProcess that emits the supplied stderr (once,
|
|
277
|
+
* asynchronously so the caller has time to register `.on("data")`),
|
|
278
|
+
* then fires the exec callback with `cbError`. Passing an array emits
|
|
279
|
+
* one `data` event per element — exercise the stderr-buffer accumulation
|
|
280
|
+
* path against split chunks (real npm output arrives multi-chunk).
|
|
281
|
+
*
|
|
282
|
+
* Pass `{ skipEmit: true, errorStderr: "..." }` to model the fast-fail
|
|
283
|
+
* race the Bugbot finding flagged: the subprocess exits before our
|
|
284
|
+
* `cp.stderr.on('data', …)` listener attaches, so `stderrBuffer` is
|
|
285
|
+
* empty and only `error.stderr` (which the exec wrapper aggregates
|
|
286
|
+
* internally) carries the npm output. The classifier must fall back to
|
|
287
|
+
* that — otherwise the structured `[npm-install-blocked]` line goes
|
|
288
|
+
* missing on exactly the failure mode this PR exists to diagnose. */
|
|
289
|
+
async function mockNpmFallbackExec(stderr, cbError, opts = {}) {
|
|
290
|
+
const stdout = new EventEmitter();
|
|
291
|
+
const stderrEmitter = new EventEmitter();
|
|
292
|
+
const chunks = Array.isArray(stderr) ? stderr : [stderr];
|
|
293
|
+
// The exec call we care about is the third positional invocation
|
|
294
|
+
// (after `which superblocks` for upgradeCliWithOclif and the oclif
|
|
295
|
+
// `update` subprocess). Make `which` succeed (returns a path) and
|
|
296
|
+
// `superblocks update` return "not updatable" so the package-manager
|
|
297
|
+
// fallback path runs.
|
|
298
|
+
const { exec } = await import("node:child_process");
|
|
299
|
+
const execMock = vi.mocked(exec);
|
|
300
|
+
execMock.mockImplementation(((cmd, ...rest) => {
|
|
301
|
+
const cb = (typeof rest[rest.length - 1] === "function"
|
|
302
|
+
? rest[rest.length - 1]
|
|
303
|
+
: undefined);
|
|
304
|
+
// Promisified consumers (upgradeCliWithOclif) destructure `{stdout,
|
|
305
|
+
// stderr}` from the awaited result. Real Node has a
|
|
306
|
+
// `util.promisify.custom` symbol that produces that shape; our vi.fn
|
|
307
|
+
// mock doesn't, so we pass the destructured object as the callback's
|
|
308
|
+
// single value-arg (default promisify behaviour resolves to that).
|
|
309
|
+
if (cmd === "which superblocks" || cmd === "where superblocks") {
|
|
310
|
+
cb?.(null, { stdout: "/usr/local/bin/superblocks\n", stderr: "" });
|
|
311
|
+
return {};
|
|
312
|
+
}
|
|
313
|
+
if (cmd.includes("superblocks update")) {
|
|
314
|
+
// Make oclif report "not updatable" so the fallback fires.
|
|
315
|
+
cb?.(null, { stdout: "this version is not updatable\n", stderr: "" });
|
|
316
|
+
return {};
|
|
317
|
+
}
|
|
318
|
+
// The npm install fallback uses the callback-style API directly (not
|
|
319
|
+
// promisified), so the callback signature is just (error). Schedule
|
|
320
|
+
// the stderr emit + callback so the caller has time to register
|
|
321
|
+
// listeners on cp.stdout/cp.stderr.
|
|
322
|
+
const errArg = cbError;
|
|
323
|
+
if (opts.errorStderr !== undefined)
|
|
324
|
+
errArg.stderr = opts.errorStderr;
|
|
325
|
+
queueMicrotask(() => {
|
|
326
|
+
if (!opts.skipEmit) {
|
|
327
|
+
for (const chunk of chunks) {
|
|
328
|
+
if (chunk)
|
|
329
|
+
stderrEmitter.emit("data", chunk);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
cb?.(errArg);
|
|
333
|
+
});
|
|
334
|
+
return { stdout, stderr: stderrEmitter };
|
|
335
|
+
}));
|
|
336
|
+
}
|
|
337
|
+
async function runAndAwaitUpgrade() {
|
|
338
|
+
const result = await checkVersionsAndWritePackageJson(mockLockService, mockConfig, false, false);
|
|
339
|
+
// The CLI upgrade promise was pushed to upgradePromises and is the
|
|
340
|
+
// promise that rejects when the npm fallback fails. The caller in
|
|
341
|
+
// dev.mts joins it via Promise.all; here we await it directly so the
|
|
342
|
+
// test can assert on rejection + log shape.
|
|
343
|
+
await Promise.all(result.upgradePromises);
|
|
344
|
+
}
|
|
345
|
+
it("APPS-4324: logs NpmInstallBlocked with reason=registry_unreachable on ECONNREFUSED stderr", async () => {
|
|
346
|
+
await mockNpmFallbackExec([
|
|
347
|
+
"npm error code ECONNREFUSED",
|
|
348
|
+
"npm error errno ECONNREFUSED",
|
|
349
|
+
"npm error network request to https://registry.npmjs.org/@superblocksteam%2fcli failed, reason: connect ECONNREFUSED 127.0.0.1:443",
|
|
350
|
+
].join("\n"), new Error("Command failed: pnpm install ..."));
|
|
351
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
352
|
+
// The structured log line fires before the rejection so the operator
|
|
353
|
+
// sees the reason code in the crash-loop output. Reason is encoded
|
|
354
|
+
// into the message body — no meta arg is passed, because the
|
|
355
|
+
// `NpmInstallBlocked` instance's `Error.message` carries the raw
|
|
356
|
+
// registry host (APPS-4381 round-2 review).
|
|
357
|
+
expect(loggerMock.error).toHaveBeenCalledWith(expect.stringMatching(/\[npm-install-blocked\] reason=registry_unreachable/));
|
|
358
|
+
// Pin the relative ordering: the structured `[npm-install-blocked]`
|
|
359
|
+
// line MUST precede the legacy `Failed to upgrade packages` line so a
|
|
360
|
+
// downstream sink that truncates after the first error still surfaces
|
|
361
|
+
// the reason code (see the comment in automatic-upgrades.ts beside the
|
|
362
|
+
// blocked-log emit).
|
|
363
|
+
const blockedIdx = loggerMock.error.mock.calls.findIndex((c) => typeof c[0] === "string" && c[0].includes("[npm-install-blocked]"));
|
|
364
|
+
const failedIdx = loggerMock.error.mock.calls.findIndex((c) => typeof c[0] === "string" && c[0].includes("Failed to upgrade"));
|
|
365
|
+
expect(blockedIdx).toBeGreaterThanOrEqual(0);
|
|
366
|
+
expect(failedIdx).toBeGreaterThan(blockedIdx);
|
|
367
|
+
});
|
|
368
|
+
it("APPS-4324: logs reason=registry_auth_failed on E401 stderr", async () => {
|
|
369
|
+
await mockNpmFallbackExec([
|
|
370
|
+
"npm error code E401",
|
|
371
|
+
"npm error 401 Unauthorized - GET https://npm.private.example.com/@superblocksteam%2fcli",
|
|
372
|
+
].join("\n"), new Error("Command failed: pnpm install ..."));
|
|
373
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
374
|
+
expect(loggerMock.error).toHaveBeenCalledWith(expect.stringMatching(/\[npm-install-blocked\] reason=registry_auth_failed/));
|
|
375
|
+
});
|
|
376
|
+
it("APPS-4381: buckets a private registry host so the structured registryHost facet is `private`, not the raw hostname", async () => {
|
|
377
|
+
// Regression for review feedback on PR #19634: the structured
|
|
378
|
+
// auto-upgrade log used to emit `registryHost=${blocked.registryHost ?? "unknown"}`
|
|
379
|
+
// verbatim. That made the customer's private registry hostname a
|
|
380
|
+
// structured log facet — unbounded cardinality in shared operational
|
|
381
|
+
// log indexes and a leak of customer infra identifiers across the
|
|
382
|
+
// `registryHost` dimension. The fix passes the value through
|
|
383
|
+
// `bucketNpmRegistryHost` (the same helper PR #19622 wired for llmobs
|
|
384
|
+
// tags) so this field emits a bounded enum (`public_npm` | `private`
|
|
385
|
+
// | `unknown`).
|
|
386
|
+
//
|
|
387
|
+
// Scope note: the `summary=...` free-text field is also redacted of
|
|
388
|
+
// URLs / bare hostnames before logging (round-2 review feedback on
|
|
389
|
+
// PR #19634) — see the `does not appear anywhere` regression test
|
|
390
|
+
// below. The structured-facet bucketing pinned here is the
|
|
391
|
+
// `registryHost=` field only.
|
|
392
|
+
const privateHost = "customer.jfrog.io";
|
|
393
|
+
await mockNpmFallbackExec([
|
|
394
|
+
"npm error code E401",
|
|
395
|
+
`npm error 401 Unauthorized - GET https://${privateHost}/@superblocksteam%2fcli`,
|
|
396
|
+
].join("\n"), new Error("Command failed: pnpm install ..."));
|
|
397
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
398
|
+
const blockedCall = loggerMock.error.mock.calls.find((c) => typeof c[0] === "string" && c[0].includes("[npm-install-blocked]"));
|
|
399
|
+
expect(blockedCall).toBeDefined();
|
|
400
|
+
const message = blockedCall[0];
|
|
401
|
+
// The structured `registryHost=` facet is bucketed to `private`...
|
|
402
|
+
expect(message).toMatch(/registryHost=private(\s|$)/);
|
|
403
|
+
// ...and the raw hostname does NOT appear as the facet value (would
|
|
404
|
+
// regress if a future refactor reverted the bucketing call).
|
|
405
|
+
expect(message).not.toMatch(new RegExp(`registryHost=${privateHost.replace(/\./g, "\\.")}`));
|
|
406
|
+
});
|
|
407
|
+
it("APPS-4381: buckets registry.npmjs.org as public_npm", async () => {
|
|
408
|
+
// Pin the other side of the bucket so a future refactor that breaks
|
|
409
|
+
// the public-vs-private split also breaks this test.
|
|
410
|
+
await mockNpmFallbackExec([
|
|
411
|
+
"npm error code ECONNREFUSED",
|
|
412
|
+
"npm error network request to https://registry.npmjs.org/@superblocksteam%2fcli failed",
|
|
413
|
+
].join("\n"), new Error("Command failed: pnpm install ..."));
|
|
414
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
415
|
+
const blockedCall = loggerMock.error.mock.calls.find((c) => typeof c[0] === "string" && c[0].includes("[npm-install-blocked]"));
|
|
416
|
+
expect(blockedCall).toBeDefined();
|
|
417
|
+
expect(blockedCall[0]).toMatch(/registryHost=public_npm(\s|$)/);
|
|
418
|
+
});
|
|
419
|
+
it("APPS-4381: a private registry host does not appear anywhere in the emitted [npm-install-blocked] log call (round-2 review feedback)", async () => {
|
|
420
|
+
// George's round-2 feedback on PR #19634: the `registryHost=` facet is
|
|
421
|
+
// bucketed, but `summary=${JSON.stringify(blocked.summary)}` still
|
|
422
|
+
// echoed the raw URL/host from the npm stderr line. The meta arg
|
|
423
|
+
// (`getErrorMeta(blocked)`) was a second leak channel because
|
|
424
|
+
// `NpmInstallBlocked.message` is `"... against ${host} [code]"` —
|
|
425
|
+
// `getErrorMeta` synthesizes meta from that message + the stack that
|
|
426
|
+
// embeds it.
|
|
427
|
+
//
|
|
428
|
+
// This test uses a unique sentinel host that no other fixture in this
|
|
429
|
+
// file references, then asserts the host substring does not appear in
|
|
430
|
+
// ANY argument of the structured logger call — message body, any meta
|
|
431
|
+
// arg, any stack — anywhere. This is the "private host does not
|
|
432
|
+
// appear anywhere in the emitted auto-upgrade log line" regression
|
|
433
|
+
// George asked for.
|
|
434
|
+
//
|
|
435
|
+
// Mock-faithfulness note: this test does NOT rely on the
|
|
436
|
+
// `getErrorMeta` mock returning a realistic shape; the fix omits the
|
|
437
|
+
// meta arg entirely at the `[npm-install-blocked]` call site, so a
|
|
438
|
+
// `() => ({})` stub would no longer mask a regression of the meta
|
|
439
|
+
// path. To guard a future refactor that re-adds a meta arg with the
|
|
440
|
+
// raw `NpmInstallBlocked`, we assert the call has exactly one arg
|
|
441
|
+
// below.
|
|
442
|
+
const privateHost = "registry-leak-sentinel.acme-corp.internal";
|
|
443
|
+
await mockNpmFallbackExec([
|
|
444
|
+
"npm error code E401",
|
|
445
|
+
`npm error 401 Unauthorized - GET https://${privateHost}:4873/@superblocksteam%2fcli`,
|
|
446
|
+
`npm error request to https://${privateHost}/foo failed, reason: getaddrinfo ENOTFOUND ${privateHost}`,
|
|
447
|
+
].join("\n"), new Error("Command failed: pnpm install ..."));
|
|
448
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
449
|
+
const blockedCall = loggerMock.error.mock.calls.find((c) => typeof c[0] === "string" && c[0].includes("[npm-install-blocked]"));
|
|
450
|
+
expect(blockedCall).toBeDefined();
|
|
451
|
+
// Stringify the entire call tuple so we catch the host whether it
|
|
452
|
+
// leaks through the message body, a (future) meta arg's
|
|
453
|
+
// `error.message`, a stack, or any other field a future refactor
|
|
454
|
+
// might add. `acme-corp.internal` is checked separately so a
|
|
455
|
+
// host-only redaction (one token) that left the suffix would also
|
|
456
|
+
// trip the test.
|
|
457
|
+
const serialized = JSON.stringify(blockedCall);
|
|
458
|
+
expect(serialized).not.toContain(privateHost);
|
|
459
|
+
expect(serialized).not.toContain("acme-corp.internal");
|
|
460
|
+
// No meta arg today; pin that so any future code that re-introduces
|
|
461
|
+
// `getErrorMeta(blocked)` (or any other host-bearing payload) is
|
|
462
|
+
// forced through this regression test.
|
|
463
|
+
expect(blockedCall.length).toBe(1);
|
|
464
|
+
// Spot-check that the bucket tokens replaced the host (the diagnostic
|
|
465
|
+
// shape of the npm phrasing is preserved even after redaction).
|
|
466
|
+
const message = blockedCall[0];
|
|
467
|
+
expect(message).toMatch(/summary=/);
|
|
468
|
+
expect(message).toContain("<private>");
|
|
469
|
+
});
|
|
470
|
+
it("APPS-4324: logs reason=not_in_registry on E404 stderr", async () => {
|
|
471
|
+
await mockNpmFallbackExec([
|
|
472
|
+
"npm error code E404",
|
|
473
|
+
"npm error 404 Not Found - GET https://npm.private.example.com/@superblocksteam%2fcli - Not found",
|
|
474
|
+
].join("\n"), new Error("Command failed: pnpm install ..."));
|
|
475
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
476
|
+
expect(loggerMock.error).toHaveBeenCalledWith(expect.stringMatching(/\[npm-install-blocked\] reason=not_in_registry/));
|
|
477
|
+
});
|
|
478
|
+
it("APPS-4324: falls through to the existing generic error path for ERESOLVE (no false-positive)", async () => {
|
|
479
|
+
await mockNpmFallbackExec([
|
|
480
|
+
"npm error code ERESOLVE",
|
|
481
|
+
"npm error ERESOLVE unable to resolve dependency tree",
|
|
482
|
+
].join("\n"), new Error("Command failed: pnpm install ..."));
|
|
483
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
484
|
+
// The classifier returns null for ERESOLVE — no structured log fires.
|
|
485
|
+
expect(loggerMock.error).not.toHaveBeenCalledWith(expect.stringContaining("[npm-install-blocked]"));
|
|
486
|
+
// The existing generic per-failure log still fires so the operator
|
|
487
|
+
// still sees something in the crash-loop output.
|
|
488
|
+
expect(loggerMock.error).toHaveBeenCalledWith(expect.stringContaining("Failed to upgrade packages"));
|
|
489
|
+
});
|
|
490
|
+
it("APPS-4324: falls back to error.stderr when stderrBuffer is empty (fast-fail race)", async () => {
|
|
491
|
+
// Bugbot finding on the APPS-4324 branch: a subprocess that fails fast
|
|
492
|
+
// can emit and exit before our `cp.stderr.on('data', …)` listener
|
|
493
|
+
// attaches, leaving `stderrBuffer` empty. The exec wrapper still
|
|
494
|
+
// aggregates the output onto `error.stderr`, so the classifier must
|
|
495
|
+
// read that as the fallback or the structured diagnostic this PR
|
|
496
|
+
// exists to guarantee goes missing exactly when it's needed most.
|
|
497
|
+
const errWithStderr = new Error("Command failed: pnpm install ...");
|
|
498
|
+
await mockNpmFallbackExec("", errWithStderr, {
|
|
499
|
+
skipEmit: true,
|
|
500
|
+
errorStderr: [
|
|
501
|
+
"npm error code ECONNREFUSED",
|
|
502
|
+
"npm error network request to https://registry.npmjs.org/foo failed",
|
|
503
|
+
].join("\n"),
|
|
504
|
+
});
|
|
505
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
506
|
+
expect(loggerMock.error).toHaveBeenCalledWith(expect.stringMatching(/\[npm-install-blocked\] reason=registry_unreachable/));
|
|
507
|
+
});
|
|
508
|
+
it("APPS-4324: accumulates stderr across multiple chunks before classifying", async () => {
|
|
509
|
+
// Real `cp.stderr` emits multiple `data` events; the OS pipe buffer
|
|
510
|
+
// can split the npm output mid-line. Emit two chunks that bisect the
|
|
511
|
+
// `npm error code ECONNREFUSED` line so the classifier only succeeds
|
|
512
|
+
// if `automatic-upgrades.ts` concatenates the buffer instead of
|
|
513
|
+
// matching per-chunk.
|
|
514
|
+
await mockNpmFallbackExec([
|
|
515
|
+
"npm error code ECONNR",
|
|
516
|
+
"EFUSED\nnpm error network request to https://registry.npmjs.org/foo failed",
|
|
517
|
+
], new Error("Command failed: pnpm install ..."));
|
|
518
|
+
await expect(runAndAwaitUpgrade()).rejects.toThrow(/Command failed: pnpm install/);
|
|
519
|
+
expect(loggerMock.error).toHaveBeenCalledWith(expect.stringMatching(/\[npm-install-blocked\] reason=registry_unreachable/));
|
|
520
|
+
});
|
|
227
521
|
it("leaves sdk-api alone when the server response omits sdkApi (older deployment)", async () => {
|
|
228
522
|
global.fetch = vi.fn(async () => ({
|
|
229
523
|
ok: true,
|
|
@@ -249,5 +543,80 @@ describe("checkVersionsAndWritePackageJson", () => {
|
|
|
249
543
|
expect(parsed.dependencies["@superblocksteam/sdk-api"]).toBe("workspace:*");
|
|
250
544
|
});
|
|
251
545
|
});
|
|
546
|
+
// -----------------------------------------------------------------------
|
|
547
|
+
// Argv + env plumbing for the CLI auto-upgrade.
|
|
548
|
+
//
|
|
549
|
+
// Userconfig pinning lives in the spawned subprocess env
|
|
550
|
+
// (`NPM_CONFIG_USERCONFIG`) rather than a CLI flag. `--userconfig=…`
|
|
551
|
+
// is npm-only — pnpm rejects it (pnpm/pnpm#6036). The env var route
|
|
552
|
+
// works for both via @pnpm/npm-conf's userconfig recognition.
|
|
553
|
+
//
|
|
554
|
+
// Build path is exercised against the pure-function helpers so the
|
|
555
|
+
// assertions don't have to drive the exec subprocess machinery.
|
|
556
|
+
// -----------------------------------------------------------------------
|
|
557
|
+
describe("buildGlobalInstallArgs", () => {
|
|
558
|
+
const PACKAGE_NAME = "@superblocksteam/cli@2.1.0";
|
|
559
|
+
it("returns the npm baseline argv (no --userconfig)", () => {
|
|
560
|
+
const args = buildGlobalInstallArgs({ agent: "npm" }, PACKAGE_NAME);
|
|
561
|
+
expect(args).toContain("--fund=false");
|
|
562
|
+
expect(args).toContain("--save-exact");
|
|
563
|
+
expect(args).toContain("--audit=false");
|
|
564
|
+
expect(args).toContain("--force");
|
|
565
|
+
expect(args).toContain(PACKAGE_NAME);
|
|
566
|
+
// Userconfig is plumbed via env, not flag (pnpm/pnpm#6036).
|
|
567
|
+
expect(args.some((a) => a.startsWith("--userconfig="))).toBe(false);
|
|
568
|
+
});
|
|
569
|
+
it("returns the pnpm baseline argv (drops npm-only --audit=false, no --userconfig)", () => {
|
|
570
|
+
const args = buildGlobalInstallArgs({ agent: "pnpm" }, PACKAGE_NAME);
|
|
571
|
+
expect(args).toContain("--fund=false");
|
|
572
|
+
expect(args).toContain("--save-exact");
|
|
573
|
+
expect(args).not.toContain("--audit=false");
|
|
574
|
+
expect(args).toContain("--force");
|
|
575
|
+
expect(args).toContain(PACKAGE_NAME);
|
|
576
|
+
// Same: pnpm rejects --userconfig (pnpm/pnpm#6036), so the env
|
|
577
|
+
// var route is the only mechanism.
|
|
578
|
+
expect(args.some((a) => a.startsWith("--userconfig="))).toBe(false);
|
|
579
|
+
});
|
|
580
|
+
});
|
|
581
|
+
describe("buildInstallEnv", () => {
|
|
582
|
+
const USERCONFIG_PATH = path.join(os.homedir(), ".superblocks", "npmrc");
|
|
583
|
+
it("sets NPM_CONFIG_USERCONFIG (npm + pnpm <= 10)", () => {
|
|
584
|
+
const env = buildInstallEnv(USERCONFIG_PATH);
|
|
585
|
+
expect(env.NPM_CONFIG_USERCONFIG).toBe(USERCONFIG_PATH);
|
|
586
|
+
});
|
|
587
|
+
it("sets PNPM_CONFIG_USERCONFIG (pnpm 11+)", () => {
|
|
588
|
+
// pnpm 11 stopped honouring `NPM_CONFIG_USERCONFIG`. Both env
|
|
589
|
+
// vars must be set so a single overlay works across npm, pnpm
|
|
590
|
+
// <= 10, and pnpm 11+. See `userconfig-env.integration.test.mts`
|
|
591
|
+
// for the regression guard against the pnpm 11 contract change.
|
|
592
|
+
const env = buildInstallEnv(USERCONFIG_PATH);
|
|
593
|
+
expect(env.PNPM_CONFIG_USERCONFIG).toBe(USERCONFIG_PATH);
|
|
594
|
+
});
|
|
595
|
+
it("accepts a custom base env (for callers scrubbing inherited config)", () => {
|
|
596
|
+
// The base-env override lets callers pre-scrub `npm_config_*`
|
|
597
|
+
// inherited from a parent pnpm/npm process, then layer the
|
|
598
|
+
// userconfig pin on top. `logsDir` (2nd arg) is omitted here.
|
|
599
|
+
const env = buildInstallEnv(USERCONFIG_PATH, undefined, {
|
|
600
|
+
PATH: "/custom/path",
|
|
601
|
+
HOME: "/custom/home",
|
|
602
|
+
});
|
|
603
|
+
expect(env.PATH).toBe("/custom/path");
|
|
604
|
+
expect(env.HOME).toBe("/custom/home");
|
|
605
|
+
expect(env.NPM_CONFIG_USERCONFIG).toBe(USERCONFIG_PATH);
|
|
606
|
+
expect(env.PNPM_CONFIG_USERCONFIG).toBe(USERCONFIG_PATH);
|
|
607
|
+
});
|
|
608
|
+
it("routes npm's debug log via NPM_CONFIG_LOGS_DIR when a logs dir is given", () => {
|
|
609
|
+
// The live-edit pod points npm's `logs-dir` at
|
|
610
|
+
// `<app>/.superblocks/logs` so a failed install leaves a collectable
|
|
611
|
+
// debug log in a predictable place.
|
|
612
|
+
const logsDir = path.join("/srv/app", ".superblocks", "logs");
|
|
613
|
+
const env = buildInstallEnv(USERCONFIG_PATH, logsDir, {});
|
|
614
|
+
expect(env.NPM_CONFIG_LOGS_DIR).toBe(logsDir);
|
|
615
|
+
});
|
|
616
|
+
it("omits NPM_CONFIG_LOGS_DIR when no logs dir is given (keeps npm's default _logs)", () => {
|
|
617
|
+
const env = buildInstallEnv(USERCONFIG_PATH, undefined, {});
|
|
618
|
+
expect(env.NPM_CONFIG_LOGS_DIR).toBeUndefined();
|
|
619
|
+
});
|
|
620
|
+
});
|
|
252
621
|
});
|
|
253
622
|
//# sourceMappingURL=automatic-upgrades.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic-upgrades.test.js","sourceRoot":"","sources":["../../src/cli-replacement/automatic-upgrades.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"automatic-upgrades.test.js","sourceRoot":"","sources":["../../src/cli-replacement/automatic-upgrades.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DependencyInstallError } from "@superblocksteam/library-shared/types";
|
|
2
|
+
import { type ParseContext } from "@superblocksteam/vite-plugin-file-sync/npm-registry";
|
|
3
|
+
/** Marker thrown by the INITIAL verification install so the dev.mts catch can
|
|
4
|
+
* degrade by ORIGIN (never on classifiability). Carries the classified error. */
|
|
5
|
+
export declare class InitialInstallFailed extends Error {
|
|
6
|
+
readonly serverError: DependencyInstallError;
|
|
7
|
+
constructor(serverError: DependencyInstallError);
|
|
8
|
+
}
|
|
9
|
+
export interface ExecFailure {
|
|
10
|
+
stdout?: string;
|
|
11
|
+
stderr?: string;
|
|
12
|
+
message?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Best-effort: pull package specs out of an ERESOLVE/ETARGET `--json` detail. */
|
|
15
|
+
export declare function parseDependencyConflict(text: string): {
|
|
16
|
+
name: string;
|
|
17
|
+
version?: string;
|
|
18
|
+
}[];
|
|
19
|
+
/** Always returns a DependencyInstallError (never null). */
|
|
20
|
+
export declare function classifyInitialInstallError(failure: ExecFailure, ctx: ParseContext): DependencyInstallError;
|
|
21
|
+
//# sourceMappingURL=dependency-install-classifier.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-install-classifier.d.mts","sourceRoot":"","sources":["../../src/cli-replacement/dependency-install-classifier.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EAOL,KAAK,YAAY,EAClB,MAAM,qDAAqD,CAAC;AAE7D;kFACkF;AAClF,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;gBACjC,WAAW,EAAE,sBAAsB;CAMhD;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,kFAAkF;AAClF,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAWtC;AAmBD,4DAA4D;AAC5D,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,YAAY,GAChB,sBAAsB,CAuCxB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { classifyNpmExecStderr, parseNpmJsonDiagnostic, parseNpmJsonError, scrubSecrets, } from "@superblocksteam/vite-plugin-file-sync/npm-registry";
|
|
2
|
+
/** Marker thrown by the INITIAL verification install so the dev.mts catch can
|
|
3
|
+
* degrade by ORIGIN (never on classifiability). Carries the classified error. */
|
|
4
|
+
export class InitialInstallFailed extends Error {
|
|
5
|
+
serverError;
|
|
6
|
+
constructor(serverError) {
|
|
7
|
+
super(`initial dependency install failed (${serverError.category})`);
|
|
8
|
+
this.name = "InitialInstallFailed";
|
|
9
|
+
this.serverError = serverError;
|
|
10
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const REASON_TO_CATEGORY = {
|
|
14
|
+
not_in_registry: "not_in_registry",
|
|
15
|
+
registry_auth_failed: "registry_auth_failed",
|
|
16
|
+
registry_unreachable: "registry_unreachable",
|
|
17
|
+
tls_failed: "tls_failed",
|
|
18
|
+
};
|
|
19
|
+
const DEP_CONFLICT_CODES = /\b(ERESOLVE|ETARGET|EPEERINVALID)\b/;
|
|
20
|
+
/** Best-effort: pull package specs out of an ERESOLVE/ETARGET `--json` detail. */
|
|
21
|
+
export function parseDependencyConflict(text) {
|
|
22
|
+
const out = [];
|
|
23
|
+
const re = /(?:Found:|peer|resolve)\s+(@?[\w./-]+)@("?[^",\s]+"?|undefined)/gi;
|
|
24
|
+
let m;
|
|
25
|
+
while ((m = re.exec(text)) !== null) {
|
|
26
|
+
const name = m[1];
|
|
27
|
+
const version = m[2] === "undefined" ? undefined : m[2].replace(/"/g, "");
|
|
28
|
+
if (!out.some((p) => p.name === name))
|
|
29
|
+
out.push({ name, version });
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
function fromBlocked(b, rawError) {
|
|
34
|
+
return {
|
|
35
|
+
type: "dev-server/dependency-install",
|
|
36
|
+
timestamp: new Date().toISOString(),
|
|
37
|
+
category: REASON_TO_CATEGORY[b.reason],
|
|
38
|
+
subreason: b.subreason,
|
|
39
|
+
packages: b.packages.map((name) => ({ name })),
|
|
40
|
+
registryHost: b.registryHost,
|
|
41
|
+
npmErrorCode: b.npmErrorCode,
|
|
42
|
+
hasAnyRegistryConfigured: b.hasAnyRegistryConfigured,
|
|
43
|
+
rawError,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Always returns a DependencyInstallError (never null). */
|
|
47
|
+
export function classifyInitialInstallError(failure, ctx) {
|
|
48
|
+
const stdout = failure.stdout ?? "";
|
|
49
|
+
const stderr = failure.stderr ?? "";
|
|
50
|
+
// Use `||` (not `??`) so an empty `stderr` ("" — the default on L:stderr, and
|
|
51
|
+
// common under `--json`) falls through to the exec rejection's `.message`
|
|
52
|
+
// ("Command failed: …") instead of yielding a blank rawError / Details panel.
|
|
53
|
+
const rawError = scrubSecrets(parseNpmJsonDiagnostic(stdout) || stderr || failure.message || "");
|
|
54
|
+
const blockedFromJson = parseNpmJsonError(stdout, ctx);
|
|
55
|
+
if (blockedFromJson)
|
|
56
|
+
return fromBlocked(blockedFromJson, rawError);
|
|
57
|
+
const combined = `${stdout}\n${stderr}`;
|
|
58
|
+
const codeMatch = combined.match(DEP_CONFLICT_CODES);
|
|
59
|
+
if (codeMatch) {
|
|
60
|
+
return {
|
|
61
|
+
type: "dev-server/dependency-install",
|
|
62
|
+
timestamp: new Date().toISOString(),
|
|
63
|
+
category: "dependency_conflict",
|
|
64
|
+
packages: parseDependencyConflict(combined),
|
|
65
|
+
npmErrorCode: codeMatch[1],
|
|
66
|
+
hasAnyRegistryConfigured: ctx.hasAnyRegistryConfigured,
|
|
67
|
+
rawError,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
const blockedFromStderr = classifyNpmExecStderr(stderr, ctx);
|
|
71
|
+
if (blockedFromStderr)
|
|
72
|
+
return fromBlocked(blockedFromStderr, rawError);
|
|
73
|
+
const unknownCode = combined.match(/npm (?:error|ERR!) code (\S+)/)?.[1];
|
|
74
|
+
return {
|
|
75
|
+
type: "dev-server/dependency-install",
|
|
76
|
+
timestamp: new Date().toISOString(),
|
|
77
|
+
category: "unknown",
|
|
78
|
+
npmErrorCode: unknownCode,
|
|
79
|
+
hasAnyRegistryConfigured: ctx.hasAnyRegistryConfigured,
|
|
80
|
+
rawError,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=dependency-install-classifier.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-install-classifier.mjs","sourceRoot":"","sources":["../../src/cli-replacement/dependency-install-classifier.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-install-classifier.test.d.mts","sourceRoot":"","sources":["../../src/cli-replacement/dependency-install-classifier.test.mts"],"names":[],"mappings":""}
|