@verdaccio/e2e-cli 2.10.4 → 3.1.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/build/adapters/index.d.ts +0 -1
- package/build/cjs/adapters/index.cjs +0 -2
- package/build/cjs/adapters/npm.cjs +10 -0
- package/build/cjs/adapters/npm.cjs.map +1 -1
- package/build/cjs/adapters/pnpm.cjs +11 -1
- package/build/cjs/adapters/pnpm.cjs.map +1 -1
- package/build/cjs/index.cjs +28 -8
- package/build/cjs/index.cjs.map +1 -1
- package/build/cjs/runner.cjs +1 -1
- package/build/cjs/runner.cjs.map +1 -1
- package/build/cjs/scenarios/index.cjs +16 -1
- package/build/cjs/scenarios/index.cjs.map +1 -1
- package/build/cjs/scenarios/install-multiple-deps.cjs +25 -23
- package/build/cjs/scenarios/install-multiple-deps.cjs.map +1 -1
- package/build/cjs/scenarios/metadata.cjs +121 -0
- package/build/cjs/scenarios/metadata.cjs.map +1 -0
- package/build/cjs/scenarios/minimum-release-age.cjs +6 -8
- package/build/cjs/scenarios/minimum-release-age.cjs.map +1 -1
- package/build/cjs/scenarios/search.cjs +136 -0
- package/build/cjs/scenarios/search.cjs.map +1 -0
- package/build/cjs/scenarios/tarballs.cjs +147 -0
- package/build/cjs/scenarios/tarballs.cjs.map +1 -0
- package/build/cjs/scenarios/uplink-failure.cjs +141 -0
- package/build/cjs/scenarios/uplink-failure.cjs.map +1 -0
- package/build/cjs/tests/audit.cjs +15 -2
- package/build/cjs/tests/audit.cjs.map +1 -1
- package/build/cjs/tests/ci.cjs +4 -6
- package/build/cjs/tests/ci.cjs.map +1 -1
- package/build/cjs/tests/index.cjs +7 -3
- package/build/cjs/tests/index.cjs.map +1 -1
- package/build/cjs/tests/info.cjs +10 -21
- package/build/cjs/tests/info.cjs.map +1 -1
- package/build/cjs/tests/install.cjs +4 -1
- package/build/cjs/tests/install.cjs.map +1 -1
- package/build/cjs/tests/ping.cjs +3 -7
- package/build/cjs/tests/ping.cjs.map +1 -1
- package/build/cjs/tests/publish.cjs +0 -1
- package/build/cjs/tests/publish.cjs.map +1 -1
- package/build/cjs/tests/search.cjs +9 -5
- package/build/cjs/tests/search.cjs.map +1 -1
- package/build/cjs/utils/e2e-config.cjs +59 -0
- package/build/cjs/utils/e2e-config.cjs.map +1 -0
- package/build/cjs/utils/http-client.cjs +111 -0
- package/build/cjs/utils/http-client.cjs.map +1 -0
- package/build/cjs/utils/mock-uplink.cjs +196 -0
- package/build/cjs/utils/mock-uplink.cjs.map +1 -0
- package/build/cjs/utils/process.cjs +11 -0
- package/build/cjs/utils/process.cjs.map +1 -1
- package/build/cjs/utils/project.cjs +1 -1
- package/build/cjs/utils/project.cjs.map +1 -1
- package/build/cjs/utils/publish.cjs +117 -0
- package/build/cjs/utils/publish.cjs.map +1 -0
- package/build/esm/adapters/index.js +1 -2
- package/build/esm/adapters/npm.js +10 -0
- package/build/esm/adapters/npm.js.map +1 -1
- package/build/esm/adapters/pnpm.js +11 -1
- package/build/esm/adapters/pnpm.js.map +1 -1
- package/build/esm/index.js +29 -8
- package/build/esm/index.js.map +1 -1
- package/build/esm/runner.js +1 -1
- package/build/esm/runner.js.map +1 -1
- package/build/esm/scenarios/index.js +13 -2
- package/build/esm/scenarios/index.js.map +1 -1
- package/build/esm/scenarios/install-multiple-deps.js +25 -22
- package/build/esm/scenarios/install-multiple-deps.js.map +1 -1
- package/build/esm/scenarios/metadata.js +119 -0
- package/build/esm/scenarios/metadata.js.map +1 -0
- package/build/esm/scenarios/minimum-release-age.js +6 -7
- package/build/esm/scenarios/minimum-release-age.js.map +1 -1
- package/build/esm/scenarios/search.js +134 -0
- package/build/esm/scenarios/search.js.map +1 -0
- package/build/esm/scenarios/tarballs.js +145 -0
- package/build/esm/scenarios/tarballs.js.map +1 -0
- package/build/esm/scenarios/uplink-failure.js +139 -0
- package/build/esm/scenarios/uplink-failure.js.map +1 -0
- package/build/esm/tests/audit.js +15 -2
- package/build/esm/tests/audit.js.map +1 -1
- package/build/esm/tests/ci.js +4 -6
- package/build/esm/tests/ci.js.map +1 -1
- package/build/esm/tests/index.js +4 -0
- package/build/esm/tests/index.js.map +1 -1
- package/build/esm/tests/info.js +10 -21
- package/build/esm/tests/info.js.map +1 -1
- package/build/esm/tests/install.js +4 -1
- package/build/esm/tests/install.js.map +1 -1
- package/build/esm/tests/ping.js +3 -7
- package/build/esm/tests/ping.js.map +1 -1
- package/build/esm/tests/publish.js +0 -1
- package/build/esm/tests/publish.js.map +1 -1
- package/build/esm/tests/search.js +9 -5
- package/build/esm/tests/search.js.map +1 -1
- package/build/esm/utils/e2e-config.js +58 -0
- package/build/esm/utils/e2e-config.js.map +1 -0
- package/build/esm/utils/http-client.js +105 -0
- package/build/esm/utils/http-client.js.map +1 -0
- package/build/esm/utils/mock-uplink.js +194 -0
- package/build/esm/utils/mock-uplink.js.map +1 -0
- package/build/esm/utils/process.js +11 -1
- package/build/esm/utils/process.js.map +1 -1
- package/build/esm/utils/project.js +1 -1
- package/build/esm/utils/project.js.map +1 -1
- package/build/esm/utils/publish.js +113 -0
- package/build/esm/utils/publish.js.map +1 -0
- package/build/index.d.ts +1 -1
- package/build/scenarios/index.d.ts +5 -1
- package/build/scenarios/metadata.d.ts +2 -0
- package/build/scenarios/search.d.ts +2 -0
- package/build/scenarios/tarballs.d.ts +2 -0
- package/build/scenarios/uplink-failure.d.ts +2 -0
- package/build/tests/index.d.ts +2 -2
- package/build/types.d.ts +12 -2
- package/build/utils/e2e-config.d.ts +21 -0
- package/build/utils/http-client.d.ts +49 -0
- package/build/utils/mock-uplink.d.ts +47 -0
- package/build/utils/process.d.ts +7 -0
- package/build/utils/publish.d.ts +17 -0
- package/package.json +1 -1
- package/build/adapters/yarn-classic.d.ts +0 -2
- package/build/cjs/adapters/yarn-classic.cjs +0 -98
- package/build/cjs/adapters/yarn-classic.cjs.map +0 -1
- package/build/esm/adapters/yarn-classic.js +0 -96
- package/build/esm/adapters/yarn-classic.js.map +0 -1
package/build/utils/process.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { SpawnOptions } from 'child_process';
|
|
2
2
|
import { ExecOutput } from '../types';
|
|
3
3
|
export declare function setVerbose(v: boolean): void;
|
|
4
|
+
/**
|
|
5
|
+
* Always-on scenario tracing, printed inline with the test output in the same
|
|
6
|
+
* style as the verbose `$ <command>` lines — so a red scenario explains what
|
|
7
|
+
* it actually saw (statuses, headers, bodies, timings) in any run, CI or
|
|
8
|
+
* local, without a reproduction. Accepts util.format tokens (%s %d %j %o).
|
|
9
|
+
*/
|
|
10
|
+
export declare function trace(fmt: string, ...args: unknown[]): void;
|
|
4
11
|
export declare function exec(options: SpawnOptions, cmd: string, args: string[]): Promise<ExecOutput>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TestContext } from '../types';
|
|
2
|
+
/** Build a minimal valid npm package tarball (package/package.json inside). */
|
|
3
|
+
export declare function buildPackageTarball(pkgName: string, version: string, dependencies?: Record<string, string>): Buffer;
|
|
4
|
+
/**
|
|
5
|
+
* Publish straight through the registry HTTP API (same PUT an npm client
|
|
6
|
+
* sends). Used for adapters that cannot publish themselves (eg. deno) so
|
|
7
|
+
* every fixture still comes from the registry under test — never from an
|
|
8
|
+
* external registry.
|
|
9
|
+
*/
|
|
10
|
+
export declare function publishViaHttp(ctx: TestContext, pkgName: string, version?: string, dependencies?: Record<string, string>): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Publish a package to the registry under test so later steps (install, ci,
|
|
13
|
+
* audit, info, search…) can consume it without ever touching an external
|
|
14
|
+
* registry — the whole suite must be runnable offline. Uses the package
|
|
15
|
+
* manager when it can publish, the raw HTTP API otherwise (eg. deno).
|
|
16
|
+
*/
|
|
17
|
+
export declare function publishLocalPackage(ctx: TestContext, pkgName: string, version?: string, dependencies?: Record<string, string>): Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
const require_runtime = require("../_virtual/_rolldown/runtime.cjs");
|
|
2
|
-
const require_process = require("../utils/process.cjs");
|
|
3
|
-
const require_project = require("../utils/project.cjs");
|
|
4
|
-
let debug = require("debug");
|
|
5
|
-
debug = require_runtime.__toESM(debug, 1);
|
|
6
|
-
let child_process = require("child_process");
|
|
7
|
-
//#region src/adapters/yarn-classic.ts
|
|
8
|
-
var debug$1 = (0, debug.default)("verdaccio:e2e-cli:yarn-classic");
|
|
9
|
-
var YARN_CLASSIC_SUPPORTED_COMMANDS = /* @__PURE__ */ new Set([
|
|
10
|
-
"publish",
|
|
11
|
-
"install",
|
|
12
|
-
"info",
|
|
13
|
-
"audit"
|
|
14
|
-
]);
|
|
15
|
-
function detectYarnVersion(bin) {
|
|
16
|
-
try {
|
|
17
|
-
return (0, child_process.execSync)(`${bin} --version`, {
|
|
18
|
-
env: {
|
|
19
|
-
...process.env,
|
|
20
|
-
COREPACK_ENABLE_STRICT: "0",
|
|
21
|
-
YARN_IGNORE_PATH: "1"
|
|
22
|
-
},
|
|
23
|
-
encoding: "utf8",
|
|
24
|
-
timeout: 5e3
|
|
25
|
-
}).trim();
|
|
26
|
-
} catch {
|
|
27
|
-
return "unknown";
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function installYarnClassic(version = "1") {
|
|
31
|
-
const pkg = version.startsWith("1") ? `yarn@${version}` : `yarn@1`;
|
|
32
|
-
debug$1("installing %s into temp dir", pkg);
|
|
33
|
-
const tmpDir = (0, child_process.execSync)("mktemp -d", { encoding: "utf8" }).trim();
|
|
34
|
-
(0, child_process.execSync)(`npm install --prefix "${tmpDir}" ${pkg} --loglevel=error`, {
|
|
35
|
-
encoding: "utf8",
|
|
36
|
-
timeout: 3e4
|
|
37
|
-
});
|
|
38
|
-
const bin = `${tmpDir}/node_modules/.bin/yarn`;
|
|
39
|
-
const installed = detectYarnVersion(bin);
|
|
40
|
-
debug$1("installed yarn %s at %s", installed, bin);
|
|
41
|
-
console.log(` Auto-installed yarn classic ${installed}`);
|
|
42
|
-
return bin;
|
|
43
|
-
}
|
|
44
|
-
function resolveYarnClassicBin(binPath, version) {
|
|
45
|
-
if (binPath) return binPath;
|
|
46
|
-
if (version) return installYarnClassic(version);
|
|
47
|
-
try {
|
|
48
|
-
const systemYarn = (0, child_process.execSync)("which yarn", {
|
|
49
|
-
encoding: "utf8",
|
|
50
|
-
timeout: 5e3
|
|
51
|
-
}).trim();
|
|
52
|
-
const sysVersion = detectYarnVersion(systemYarn);
|
|
53
|
-
if (sysVersion.split(".")[0] === "1") {
|
|
54
|
-
debug$1("using system yarn classic %s", sysVersion);
|
|
55
|
-
return systemYarn;
|
|
56
|
-
}
|
|
57
|
-
debug$1("system yarn is Berry %s, auto-installing classic", sysVersion);
|
|
58
|
-
} catch {
|
|
59
|
-
debug$1("no system yarn found, auto-installing classic");
|
|
60
|
-
}
|
|
61
|
-
return installYarnClassic();
|
|
62
|
-
}
|
|
63
|
-
function createYarnClassicAdapter(binPath, version) {
|
|
64
|
-
const bin = resolveYarnClassicBin(binPath, version);
|
|
65
|
-
const resolved = detectYarnVersion(bin);
|
|
66
|
-
debug$1("creating yarn classic adapter with bin: %s (%s)", bin, resolved);
|
|
67
|
-
return {
|
|
68
|
-
name: `yarn-classic@${resolved}`,
|
|
69
|
-
type: "yarn-classic",
|
|
70
|
-
bin,
|
|
71
|
-
supports: YARN_CLASSIC_SUPPORTED_COMMANDS,
|
|
72
|
-
registryArg(url) {
|
|
73
|
-
return ["--registry", url];
|
|
74
|
-
},
|
|
75
|
-
prefixArg(folder) {
|
|
76
|
-
return ["--cwd", folder];
|
|
77
|
-
},
|
|
78
|
-
exec(options, ...args) {
|
|
79
|
-
const env = {
|
|
80
|
-
...process.env,
|
|
81
|
-
...options.env,
|
|
82
|
-
COREPACK_ENABLE_STRICT: "0",
|
|
83
|
-
YARN_IGNORE_PATH: "1"
|
|
84
|
-
};
|
|
85
|
-
return require_process.exec({
|
|
86
|
-
...options,
|
|
87
|
-
env
|
|
88
|
-
}, bin, args);
|
|
89
|
-
},
|
|
90
|
-
async prepareProject(packageName, version, registryUrl, port, token, dependencies = {}, devDependencies = {}) {
|
|
91
|
-
return require_project.prepareGenericEmptyProject(packageName, version, port, token, registryUrl, dependencies, devDependencies);
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
//#endregion
|
|
96
|
-
exports.createYarnClassicAdapter = createYarnClassicAdapter;
|
|
97
|
-
|
|
98
|
-
//# sourceMappingURL=yarn-classic.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yarn-classic.cjs","names":[],"sources":["../../../src/adapters/yarn-classic.ts"],"sourcesContent":["import { SpawnOptions, execSync } from 'child_process';\nimport buildDebug from 'debug';\n\nimport { ExecOutput, PackageManagerAdapter } from '../types';\nimport { exec } from '../utils/process';\nimport { prepareGenericEmptyProject } from '../utils/project';\n\nconst debug = buildDebug('verdaccio:e2e-cli:yarn-classic');\n\nconst YARN_CLASSIC_SUPPORTED_COMMANDS = new Set(['publish', 'install', 'info', 'audit']);\n\nfunction detectYarnVersion(bin: string): string {\n try {\n return execSync(`${bin} --version`, {\n env: { ...process.env, COREPACK_ENABLE_STRICT: '0', YARN_IGNORE_PATH: '1' },\n encoding: 'utf8',\n timeout: 5000,\n }).trim();\n } catch {\n return 'unknown';\n }\n}\n\nfunction installYarnClassic(version = '1'): string {\n const pkg = version.startsWith('1') ? `yarn@${version}` : `yarn@1`;\n debug('installing %s into temp dir', pkg);\n const tmpDir = execSync('mktemp -d', { encoding: 'utf8' }).trim();\n execSync(`npm install --prefix \"${tmpDir}\" ${pkg} --loglevel=error`, {\n encoding: 'utf8',\n timeout: 30000,\n });\n const bin = `${tmpDir}/node_modules/.bin/yarn`;\n const installed = detectYarnVersion(bin);\n debug('installed yarn %s at %s', installed, bin);\n console.log(` Auto-installed yarn classic ${installed}`);\n return bin;\n}\n\nfunction resolveYarnClassicBin(binPath?: string, version?: string): string {\n if (binPath) return binPath;\n\n // Always install the requested version to ensure reproducibility\n if (version) {\n return installYarnClassic(version);\n }\n\n // Check if system yarn is 1.x\n try {\n const systemYarn = execSync('which yarn', { encoding: 'utf8', timeout: 5000 }).trim();\n const sysVersion = detectYarnVersion(systemYarn);\n const major = sysVersion.split('.')[0];\n if (major === '1') {\n debug('using system yarn classic %s', sysVersion);\n return systemYarn;\n }\n debug('system yarn is Berry %s, auto-installing classic', sysVersion);\n } catch {\n debug('no system yarn found, auto-installing classic');\n }\n\n return installYarnClassic();\n}\n\nexport function createYarnClassicAdapter(\n binPath?: string,\n version?: string\n): PackageManagerAdapter {\n const bin = resolveYarnClassicBin(binPath, version);\n const resolved = detectYarnVersion(bin);\n debug('creating yarn classic adapter with bin: %s (%s)', bin, resolved);\n\n const adapter: PackageManagerAdapter = {\n name: `yarn-classic@${resolved}`,\n type: 'yarn-classic',\n bin,\n supports: YARN_CLASSIC_SUPPORTED_COMMANDS,\n\n registryArg(url: string): string[] {\n return ['--registry', url];\n },\n\n prefixArg(folder: string): string[] {\n return ['--cwd', folder];\n },\n\n exec(options: SpawnOptions, ...args: string[]): Promise<ExecOutput> {\n const env = {\n ...process.env,\n ...options.env,\n COREPACK_ENABLE_STRICT: '0',\n YARN_IGNORE_PATH: '1',\n };\n return exec({ ...options, env }, bin, args);\n },\n\n async prepareProject(\n packageName: string,\n version: string,\n registryUrl: string,\n port: number,\n token: string,\n dependencies: Record<string, string> = {},\n devDependencies: Record<string, string> = {}\n ): Promise<{ tempFolder: string }> {\n return prepareGenericEmptyProject(\n packageName,\n version,\n port,\n token,\n registryUrl,\n dependencies,\n devDependencies\n );\n },\n };\n\n return adapter;\n}\n"],"mappings":";;;;;;;AAOA,IAAM,WAAA,GAAQ,MAAA,QAAA,CAAW,gCAAgC;AAEzD,IAAM,kDAAkC,IAAI,IAAI;CAAC;CAAW;CAAW;CAAQ;AAAO,CAAC;AAEvF,SAAS,kBAAkB,KAAqB;CAC9C,IAAI;EACF,QAAA,GAAO,cAAA,SAAA,CAAS,GAAG,IAAI,aAAa;GAClC,KAAK;IAAE,GAAG,QAAQ;IAAK,wBAAwB;IAAK,kBAAkB;GAAI;GAC1E,UAAU;GACV,SAAS;EACX,CAAC,CAAC,CAAC,KAAK;CACV,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,mBAAmB,UAAU,KAAa;CACjD,MAAM,MAAM,QAAQ,WAAW,GAAG,IAAI,QAAQ,YAAY;CAC1D,QAAM,+BAA+B,GAAG;CACxC,MAAM,UAAA,GAAS,cAAA,SAAA,CAAS,aAAa,EAAE,UAAU,OAAO,CAAC,CAAC,CAAC,KAAK;CAChE,CAAA,GAAA,cAAA,SAAA,CAAS,yBAAyB,OAAO,IAAI,IAAI,oBAAoB;EACnE,UAAU;EACV,SAAS;CACX,CAAC;CACD,MAAM,MAAM,GAAG,OAAO;CACtB,MAAM,YAAY,kBAAkB,GAAG;CACvC,QAAM,2BAA2B,WAAW,GAAG;CAC/C,QAAQ,IAAI,iCAAiC,WAAW;CACxD,OAAO;AACT;AAEA,SAAS,sBAAsB,SAAkB,SAA0B;CACzE,IAAI,SAAS,OAAO;CAGpB,IAAI,SACF,OAAO,mBAAmB,OAAO;CAInC,IAAI;EACF,MAAM,cAAA,GAAa,cAAA,SAAA,CAAS,cAAc;GAAE,UAAU;GAAQ,SAAS;EAAK,CAAC,CAAC,CAAC,KAAK;EACpF,MAAM,aAAa,kBAAkB,UAAU;EAE/C,IADc,WAAW,MAAM,GAAG,CAAC,CAAC,OACtB,KAAK;GACjB,QAAM,gCAAgC,UAAU;GAChD,OAAO;EACT;EACA,QAAM,oDAAoD,UAAU;CACtE,QAAQ;EACN,QAAM,+CAA+C;CACvD;CAEA,OAAO,mBAAmB;AAC5B;AAEA,SAAgB,yBACd,SACA,SACuB;CACvB,MAAM,MAAM,sBAAsB,SAAS,OAAO;CAClD,MAAM,WAAW,kBAAkB,GAAG;CACtC,QAAM,mDAAmD,KAAK,QAAQ;CA+CtE,OAAO;EA5CL,MAAM,gBAAgB;EACtB,MAAM;EACN;EACA,UAAU;EAEV,YAAY,KAAuB;GACjC,OAAO,CAAC,cAAc,GAAG;EAC3B;EAEA,UAAU,QAA0B;GAClC,OAAO,CAAC,SAAS,MAAM;EACzB;EAEA,KAAK,SAAuB,GAAG,MAAqC;GAClE,MAAM,MAAM;IACV,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,wBAAwB;IACxB,kBAAkB;GACpB;GACA,OAAO,gBAAA,KAAK;IAAE,GAAG;IAAS;GAAI,GAAG,KAAK,IAAI;EAC5C;EAEA,MAAM,eACJ,aACA,SACA,aACA,MACA,OACA,eAAuC,CAAC,GACxC,kBAA0C,CAAC,GACV;GACjC,OAAO,gBAAA,2BACL,aACA,SACA,MACA,OACA,aACA,cACA,eACF;EACF;CAGK;AACT"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { exec } from "../utils/process.js";
|
|
2
|
-
import { prepareGenericEmptyProject } from "../utils/project.js";
|
|
3
|
-
import buildDebug from "debug";
|
|
4
|
-
import { execSync } from "child_process";
|
|
5
|
-
//#region src/adapters/yarn-classic.ts
|
|
6
|
-
var debug = buildDebug("verdaccio:e2e-cli:yarn-classic");
|
|
7
|
-
var YARN_CLASSIC_SUPPORTED_COMMANDS = /* @__PURE__ */ new Set([
|
|
8
|
-
"publish",
|
|
9
|
-
"install",
|
|
10
|
-
"info",
|
|
11
|
-
"audit"
|
|
12
|
-
]);
|
|
13
|
-
function detectYarnVersion(bin) {
|
|
14
|
-
try {
|
|
15
|
-
return execSync(`${bin} --version`, {
|
|
16
|
-
env: {
|
|
17
|
-
...process.env,
|
|
18
|
-
COREPACK_ENABLE_STRICT: "0",
|
|
19
|
-
YARN_IGNORE_PATH: "1"
|
|
20
|
-
},
|
|
21
|
-
encoding: "utf8",
|
|
22
|
-
timeout: 5e3
|
|
23
|
-
}).trim();
|
|
24
|
-
} catch {
|
|
25
|
-
return "unknown";
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function installYarnClassic(version = "1") {
|
|
29
|
-
const pkg = version.startsWith("1") ? `yarn@${version}` : `yarn@1`;
|
|
30
|
-
debug("installing %s into temp dir", pkg);
|
|
31
|
-
const tmpDir = execSync("mktemp -d", { encoding: "utf8" }).trim();
|
|
32
|
-
execSync(`npm install --prefix "${tmpDir}" ${pkg} --loglevel=error`, {
|
|
33
|
-
encoding: "utf8",
|
|
34
|
-
timeout: 3e4
|
|
35
|
-
});
|
|
36
|
-
const bin = `${tmpDir}/node_modules/.bin/yarn`;
|
|
37
|
-
const installed = detectYarnVersion(bin);
|
|
38
|
-
debug("installed yarn %s at %s", installed, bin);
|
|
39
|
-
console.log(` Auto-installed yarn classic ${installed}`);
|
|
40
|
-
return bin;
|
|
41
|
-
}
|
|
42
|
-
function resolveYarnClassicBin(binPath, version) {
|
|
43
|
-
if (binPath) return binPath;
|
|
44
|
-
if (version) return installYarnClassic(version);
|
|
45
|
-
try {
|
|
46
|
-
const systemYarn = execSync("which yarn", {
|
|
47
|
-
encoding: "utf8",
|
|
48
|
-
timeout: 5e3
|
|
49
|
-
}).trim();
|
|
50
|
-
const sysVersion = detectYarnVersion(systemYarn);
|
|
51
|
-
if (sysVersion.split(".")[0] === "1") {
|
|
52
|
-
debug("using system yarn classic %s", sysVersion);
|
|
53
|
-
return systemYarn;
|
|
54
|
-
}
|
|
55
|
-
debug("system yarn is Berry %s, auto-installing classic", sysVersion);
|
|
56
|
-
} catch {
|
|
57
|
-
debug("no system yarn found, auto-installing classic");
|
|
58
|
-
}
|
|
59
|
-
return installYarnClassic();
|
|
60
|
-
}
|
|
61
|
-
function createYarnClassicAdapter(binPath, version) {
|
|
62
|
-
const bin = resolveYarnClassicBin(binPath, version);
|
|
63
|
-
const resolved = detectYarnVersion(bin);
|
|
64
|
-
debug("creating yarn classic adapter with bin: %s (%s)", bin, resolved);
|
|
65
|
-
return {
|
|
66
|
-
name: `yarn-classic@${resolved}`,
|
|
67
|
-
type: "yarn-classic",
|
|
68
|
-
bin,
|
|
69
|
-
supports: YARN_CLASSIC_SUPPORTED_COMMANDS,
|
|
70
|
-
registryArg(url) {
|
|
71
|
-
return ["--registry", url];
|
|
72
|
-
},
|
|
73
|
-
prefixArg(folder) {
|
|
74
|
-
return ["--cwd", folder];
|
|
75
|
-
},
|
|
76
|
-
exec(options, ...args) {
|
|
77
|
-
const env = {
|
|
78
|
-
...process.env,
|
|
79
|
-
...options.env,
|
|
80
|
-
COREPACK_ENABLE_STRICT: "0",
|
|
81
|
-
YARN_IGNORE_PATH: "1"
|
|
82
|
-
};
|
|
83
|
-
return exec({
|
|
84
|
-
...options,
|
|
85
|
-
env
|
|
86
|
-
}, bin, args);
|
|
87
|
-
},
|
|
88
|
-
async prepareProject(packageName, version, registryUrl, port, token, dependencies = {}, devDependencies = {}) {
|
|
89
|
-
return prepareGenericEmptyProject(packageName, version, port, token, registryUrl, dependencies, devDependencies);
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
//#endregion
|
|
94
|
-
export { createYarnClassicAdapter };
|
|
95
|
-
|
|
96
|
-
//# sourceMappingURL=yarn-classic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yarn-classic.js","names":[],"sources":["../../../src/adapters/yarn-classic.ts"],"sourcesContent":["import { SpawnOptions, execSync } from 'child_process';\nimport buildDebug from 'debug';\n\nimport { ExecOutput, PackageManagerAdapter } from '../types';\nimport { exec } from '../utils/process';\nimport { prepareGenericEmptyProject } from '../utils/project';\n\nconst debug = buildDebug('verdaccio:e2e-cli:yarn-classic');\n\nconst YARN_CLASSIC_SUPPORTED_COMMANDS = new Set(['publish', 'install', 'info', 'audit']);\n\nfunction detectYarnVersion(bin: string): string {\n try {\n return execSync(`${bin} --version`, {\n env: { ...process.env, COREPACK_ENABLE_STRICT: '0', YARN_IGNORE_PATH: '1' },\n encoding: 'utf8',\n timeout: 5000,\n }).trim();\n } catch {\n return 'unknown';\n }\n}\n\nfunction installYarnClassic(version = '1'): string {\n const pkg = version.startsWith('1') ? `yarn@${version}` : `yarn@1`;\n debug('installing %s into temp dir', pkg);\n const tmpDir = execSync('mktemp -d', { encoding: 'utf8' }).trim();\n execSync(`npm install --prefix \"${tmpDir}\" ${pkg} --loglevel=error`, {\n encoding: 'utf8',\n timeout: 30000,\n });\n const bin = `${tmpDir}/node_modules/.bin/yarn`;\n const installed = detectYarnVersion(bin);\n debug('installed yarn %s at %s', installed, bin);\n console.log(` Auto-installed yarn classic ${installed}`);\n return bin;\n}\n\nfunction resolveYarnClassicBin(binPath?: string, version?: string): string {\n if (binPath) return binPath;\n\n // Always install the requested version to ensure reproducibility\n if (version) {\n return installYarnClassic(version);\n }\n\n // Check if system yarn is 1.x\n try {\n const systemYarn = execSync('which yarn', { encoding: 'utf8', timeout: 5000 }).trim();\n const sysVersion = detectYarnVersion(systemYarn);\n const major = sysVersion.split('.')[0];\n if (major === '1') {\n debug('using system yarn classic %s', sysVersion);\n return systemYarn;\n }\n debug('system yarn is Berry %s, auto-installing classic', sysVersion);\n } catch {\n debug('no system yarn found, auto-installing classic');\n }\n\n return installYarnClassic();\n}\n\nexport function createYarnClassicAdapter(\n binPath?: string,\n version?: string\n): PackageManagerAdapter {\n const bin = resolveYarnClassicBin(binPath, version);\n const resolved = detectYarnVersion(bin);\n debug('creating yarn classic adapter with bin: %s (%s)', bin, resolved);\n\n const adapter: PackageManagerAdapter = {\n name: `yarn-classic@${resolved}`,\n type: 'yarn-classic',\n bin,\n supports: YARN_CLASSIC_SUPPORTED_COMMANDS,\n\n registryArg(url: string): string[] {\n return ['--registry', url];\n },\n\n prefixArg(folder: string): string[] {\n return ['--cwd', folder];\n },\n\n exec(options: SpawnOptions, ...args: string[]): Promise<ExecOutput> {\n const env = {\n ...process.env,\n ...options.env,\n COREPACK_ENABLE_STRICT: '0',\n YARN_IGNORE_PATH: '1',\n };\n return exec({ ...options, env }, bin, args);\n },\n\n async prepareProject(\n packageName: string,\n version: string,\n registryUrl: string,\n port: number,\n token: string,\n dependencies: Record<string, string> = {},\n devDependencies: Record<string, string> = {}\n ): Promise<{ tempFolder: string }> {\n return prepareGenericEmptyProject(\n packageName,\n version,\n port,\n token,\n registryUrl,\n dependencies,\n devDependencies\n );\n },\n };\n\n return adapter;\n}\n"],"mappings":";;;;;AAOA,IAAM,QAAQ,WAAW,gCAAgC;AAEzD,IAAM,kDAAkC,IAAI,IAAI;CAAC;CAAW;CAAW;CAAQ;AAAO,CAAC;AAEvF,SAAS,kBAAkB,KAAqB;CAC9C,IAAI;EACF,OAAO,SAAS,GAAG,IAAI,aAAa;GAClC,KAAK;IAAE,GAAG,QAAQ;IAAK,wBAAwB;IAAK,kBAAkB;GAAI;GAC1E,UAAU;GACV,SAAS;EACX,CAAC,CAAC,CAAC,KAAK;CACV,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAS,mBAAmB,UAAU,KAAa;CACjD,MAAM,MAAM,QAAQ,WAAW,GAAG,IAAI,QAAQ,YAAY;CAC1D,MAAM,+BAA+B,GAAG;CACxC,MAAM,SAAS,SAAS,aAAa,EAAE,UAAU,OAAO,CAAC,CAAC,CAAC,KAAK;CAChE,SAAS,yBAAyB,OAAO,IAAI,IAAI,oBAAoB;EACnE,UAAU;EACV,SAAS;CACX,CAAC;CACD,MAAM,MAAM,GAAG,OAAO;CACtB,MAAM,YAAY,kBAAkB,GAAG;CACvC,MAAM,2BAA2B,WAAW,GAAG;CAC/C,QAAQ,IAAI,iCAAiC,WAAW;CACxD,OAAO;AACT;AAEA,SAAS,sBAAsB,SAAkB,SAA0B;CACzE,IAAI,SAAS,OAAO;CAGpB,IAAI,SACF,OAAO,mBAAmB,OAAO;CAInC,IAAI;EACF,MAAM,aAAa,SAAS,cAAc;GAAE,UAAU;GAAQ,SAAS;EAAK,CAAC,CAAC,CAAC,KAAK;EACpF,MAAM,aAAa,kBAAkB,UAAU;EAE/C,IADc,WAAW,MAAM,GAAG,CAAC,CAAC,OACtB,KAAK;GACjB,MAAM,gCAAgC,UAAU;GAChD,OAAO;EACT;EACA,MAAM,oDAAoD,UAAU;CACtE,QAAQ;EACN,MAAM,+CAA+C;CACvD;CAEA,OAAO,mBAAmB;AAC5B;AAEA,SAAgB,yBACd,SACA,SACuB;CACvB,MAAM,MAAM,sBAAsB,SAAS,OAAO;CAClD,MAAM,WAAW,kBAAkB,GAAG;CACtC,MAAM,mDAAmD,KAAK,QAAQ;CA+CtE,OAAO;EA5CL,MAAM,gBAAgB;EACtB,MAAM;EACN;EACA,UAAU;EAEV,YAAY,KAAuB;GACjC,OAAO,CAAC,cAAc,GAAG;EAC3B;EAEA,UAAU,QAA0B;GAClC,OAAO,CAAC,SAAS,MAAM;EACzB;EAEA,KAAK,SAAuB,GAAG,MAAqC;GAClE,MAAM,MAAM;IACV,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,wBAAwB;IACxB,kBAAkB;GACpB;GACA,OAAO,KAAK;IAAE,GAAG;IAAS;GAAI,GAAG,KAAK,IAAI;EAC5C;EAEA,MAAM,eACJ,aACA,SACA,aACA,MACA,OACA,eAAuC,CAAC,GACxC,kBAA0C,CAAC,GACV;GACjC,OAAO,2BACL,aACA,SACA,MACA,OACA,aACA,cACA,eACF;EACF;CAGK;AACT"}
|