@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.
Files changed (122) hide show
  1. package/build/adapters/index.d.ts +0 -1
  2. package/build/cjs/adapters/index.cjs +0 -2
  3. package/build/cjs/adapters/npm.cjs +10 -0
  4. package/build/cjs/adapters/npm.cjs.map +1 -1
  5. package/build/cjs/adapters/pnpm.cjs +11 -1
  6. package/build/cjs/adapters/pnpm.cjs.map +1 -1
  7. package/build/cjs/index.cjs +28 -8
  8. package/build/cjs/index.cjs.map +1 -1
  9. package/build/cjs/runner.cjs +1 -1
  10. package/build/cjs/runner.cjs.map +1 -1
  11. package/build/cjs/scenarios/index.cjs +16 -1
  12. package/build/cjs/scenarios/index.cjs.map +1 -1
  13. package/build/cjs/scenarios/install-multiple-deps.cjs +25 -23
  14. package/build/cjs/scenarios/install-multiple-deps.cjs.map +1 -1
  15. package/build/cjs/scenarios/metadata.cjs +121 -0
  16. package/build/cjs/scenarios/metadata.cjs.map +1 -0
  17. package/build/cjs/scenarios/minimum-release-age.cjs +6 -8
  18. package/build/cjs/scenarios/minimum-release-age.cjs.map +1 -1
  19. package/build/cjs/scenarios/search.cjs +136 -0
  20. package/build/cjs/scenarios/search.cjs.map +1 -0
  21. package/build/cjs/scenarios/tarballs.cjs +147 -0
  22. package/build/cjs/scenarios/tarballs.cjs.map +1 -0
  23. package/build/cjs/scenarios/uplink-failure.cjs +141 -0
  24. package/build/cjs/scenarios/uplink-failure.cjs.map +1 -0
  25. package/build/cjs/tests/audit.cjs +15 -2
  26. package/build/cjs/tests/audit.cjs.map +1 -1
  27. package/build/cjs/tests/ci.cjs +4 -6
  28. package/build/cjs/tests/ci.cjs.map +1 -1
  29. package/build/cjs/tests/index.cjs +7 -3
  30. package/build/cjs/tests/index.cjs.map +1 -1
  31. package/build/cjs/tests/info.cjs +10 -21
  32. package/build/cjs/tests/info.cjs.map +1 -1
  33. package/build/cjs/tests/install.cjs +4 -1
  34. package/build/cjs/tests/install.cjs.map +1 -1
  35. package/build/cjs/tests/ping.cjs +3 -7
  36. package/build/cjs/tests/ping.cjs.map +1 -1
  37. package/build/cjs/tests/publish.cjs +0 -1
  38. package/build/cjs/tests/publish.cjs.map +1 -1
  39. package/build/cjs/tests/search.cjs +9 -5
  40. package/build/cjs/tests/search.cjs.map +1 -1
  41. package/build/cjs/utils/e2e-config.cjs +59 -0
  42. package/build/cjs/utils/e2e-config.cjs.map +1 -0
  43. package/build/cjs/utils/http-client.cjs +111 -0
  44. package/build/cjs/utils/http-client.cjs.map +1 -0
  45. package/build/cjs/utils/mock-uplink.cjs +196 -0
  46. package/build/cjs/utils/mock-uplink.cjs.map +1 -0
  47. package/build/cjs/utils/process.cjs +11 -0
  48. package/build/cjs/utils/process.cjs.map +1 -1
  49. package/build/cjs/utils/project.cjs +1 -1
  50. package/build/cjs/utils/project.cjs.map +1 -1
  51. package/build/cjs/utils/publish.cjs +117 -0
  52. package/build/cjs/utils/publish.cjs.map +1 -0
  53. package/build/esm/adapters/index.js +1 -2
  54. package/build/esm/adapters/npm.js +10 -0
  55. package/build/esm/adapters/npm.js.map +1 -1
  56. package/build/esm/adapters/pnpm.js +11 -1
  57. package/build/esm/adapters/pnpm.js.map +1 -1
  58. package/build/esm/index.js +29 -8
  59. package/build/esm/index.js.map +1 -1
  60. package/build/esm/runner.js +1 -1
  61. package/build/esm/runner.js.map +1 -1
  62. package/build/esm/scenarios/index.js +13 -2
  63. package/build/esm/scenarios/index.js.map +1 -1
  64. package/build/esm/scenarios/install-multiple-deps.js +25 -22
  65. package/build/esm/scenarios/install-multiple-deps.js.map +1 -1
  66. package/build/esm/scenarios/metadata.js +119 -0
  67. package/build/esm/scenarios/metadata.js.map +1 -0
  68. package/build/esm/scenarios/minimum-release-age.js +6 -7
  69. package/build/esm/scenarios/minimum-release-age.js.map +1 -1
  70. package/build/esm/scenarios/search.js +134 -0
  71. package/build/esm/scenarios/search.js.map +1 -0
  72. package/build/esm/scenarios/tarballs.js +145 -0
  73. package/build/esm/scenarios/tarballs.js.map +1 -0
  74. package/build/esm/scenarios/uplink-failure.js +139 -0
  75. package/build/esm/scenarios/uplink-failure.js.map +1 -0
  76. package/build/esm/tests/audit.js +15 -2
  77. package/build/esm/tests/audit.js.map +1 -1
  78. package/build/esm/tests/ci.js +4 -6
  79. package/build/esm/tests/ci.js.map +1 -1
  80. package/build/esm/tests/index.js +4 -0
  81. package/build/esm/tests/index.js.map +1 -1
  82. package/build/esm/tests/info.js +10 -21
  83. package/build/esm/tests/info.js.map +1 -1
  84. package/build/esm/tests/install.js +4 -1
  85. package/build/esm/tests/install.js.map +1 -1
  86. package/build/esm/tests/ping.js +3 -7
  87. package/build/esm/tests/ping.js.map +1 -1
  88. package/build/esm/tests/publish.js +0 -1
  89. package/build/esm/tests/publish.js.map +1 -1
  90. package/build/esm/tests/search.js +9 -5
  91. package/build/esm/tests/search.js.map +1 -1
  92. package/build/esm/utils/e2e-config.js +58 -0
  93. package/build/esm/utils/e2e-config.js.map +1 -0
  94. package/build/esm/utils/http-client.js +105 -0
  95. package/build/esm/utils/http-client.js.map +1 -0
  96. package/build/esm/utils/mock-uplink.js +194 -0
  97. package/build/esm/utils/mock-uplink.js.map +1 -0
  98. package/build/esm/utils/process.js +11 -1
  99. package/build/esm/utils/process.js.map +1 -1
  100. package/build/esm/utils/project.js +1 -1
  101. package/build/esm/utils/project.js.map +1 -1
  102. package/build/esm/utils/publish.js +113 -0
  103. package/build/esm/utils/publish.js.map +1 -0
  104. package/build/index.d.ts +1 -1
  105. package/build/scenarios/index.d.ts +5 -1
  106. package/build/scenarios/metadata.d.ts +2 -0
  107. package/build/scenarios/search.d.ts +2 -0
  108. package/build/scenarios/tarballs.d.ts +2 -0
  109. package/build/scenarios/uplink-failure.d.ts +2 -0
  110. package/build/tests/index.d.ts +2 -2
  111. package/build/types.d.ts +12 -2
  112. package/build/utils/e2e-config.d.ts +21 -0
  113. package/build/utils/http-client.d.ts +49 -0
  114. package/build/utils/mock-uplink.d.ts +47 -0
  115. package/build/utils/process.d.ts +7 -0
  116. package/build/utils/publish.d.ts +17 -0
  117. package/package.json +1 -1
  118. package/build/adapters/yarn-classic.d.ts +0 -2
  119. package/build/cjs/adapters/yarn-classic.cjs +0 -98
  120. package/build/cjs/adapters/yarn-classic.cjs.map +0 -1
  121. package/build/esm/adapters/yarn-classic.js +0 -96
  122. package/build/esm/adapters/yarn-classic.js.map +0 -1
@@ -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,6 +1,6 @@
1
1
  {
2
2
  "name": "@verdaccio/e2e-cli",
3
- "version": "2.10.4",
3
+ "version": "3.1.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "CLI tool to run Verdaccio e2e tests against any running registry",
@@ -1,2 +0,0 @@
1
- import { PackageManagerAdapter } from '../types';
2
- export declare function createYarnClassicAdapter(binPath?: string, version?: string): PackageManagerAdapter;
@@ -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"}