@verdaccio/e2e-cli 2.1.0 → 2.1.1

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 (113) hide show
  1. package/build/adapters/adapter.d.ts +1 -0
  2. package/build/adapters/index.d.ts +4 -0
  3. package/build/adapters/npm.d.ts +2 -0
  4. package/build/adapters/pnpm.d.ts +2 -0
  5. package/build/adapters/yarn-classic.d.ts +2 -0
  6. package/build/adapters/yarn-modern.d.ts +2 -0
  7. package/build/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  8. package/build/cjs/adapters/index.cjs +4 -0
  9. package/build/cjs/adapters/npm.cjs +47 -0
  10. package/build/cjs/adapters/npm.cjs.map +1 -0
  11. package/build/cjs/adapters/pnpm.cjs +47 -0
  12. package/build/cjs/adapters/pnpm.cjs.map +1 -0
  13. package/build/cjs/adapters/yarn-classic.cjs +64 -0
  14. package/build/cjs/adapters/yarn-classic.cjs.map +1 -0
  15. package/build/cjs/adapters/yarn-modern.cjs +83 -0
  16. package/build/cjs/adapters/yarn-modern.cjs.map +1 -0
  17. package/build/cjs/index.cjs +139 -0
  18. package/build/cjs/index.cjs.map +1 -0
  19. package/build/cjs/reporter.cjs +60 -0
  20. package/build/cjs/reporter.cjs.map +1 -0
  21. package/build/cjs/runner.cjs +102 -0
  22. package/build/cjs/runner.cjs.map +1 -0
  23. package/build/cjs/tests/audit.cjs +27 -0
  24. package/build/cjs/tests/audit.cjs.map +1 -0
  25. package/build/cjs/tests/deprecate.cjs +67 -0
  26. package/build/cjs/tests/deprecate.cjs.map +1 -0
  27. package/build/cjs/tests/dist-tags.cjs +43 -0
  28. package/build/cjs/tests/dist-tags.cjs.map +1 -0
  29. package/build/cjs/tests/index.cjs +27 -0
  30. package/build/cjs/tests/index.cjs.map +1 -0
  31. package/build/cjs/tests/info.cjs +38 -0
  32. package/build/cjs/tests/info.cjs.map +1 -0
  33. package/build/cjs/tests/install.cjs +28 -0
  34. package/build/cjs/tests/install.cjs.map +1 -0
  35. package/build/cjs/tests/ping.cjs +18 -0
  36. package/build/cjs/tests/ping.cjs.map +1 -0
  37. package/build/cjs/tests/publish.cjs +34 -0
  38. package/build/cjs/tests/publish.cjs.map +1 -0
  39. package/build/cjs/tests/search.cjs +19 -0
  40. package/build/cjs/tests/search.cjs.map +1 -0
  41. package/build/cjs/tests/star.cjs +27 -0
  42. package/build/cjs/tests/star.cjs.map +1 -0
  43. package/build/cjs/tests/unpublish.cjs +40 -0
  44. package/build/cjs/tests/unpublish.cjs.map +1 -0
  45. package/build/cjs/utils/process.cjs +85 -0
  46. package/build/cjs/utils/process.cjs.map +1 -0
  47. package/build/cjs/utils/project.cjs +55 -0
  48. package/build/cjs/utils/project.cjs.map +1 -0
  49. package/build/cjs/utils/registry-client.cjs +61 -0
  50. package/build/cjs/utils/registry-client.cjs.map +1 -0
  51. package/build/esm/adapters/index.js +5 -0
  52. package/build/esm/adapters/npm.js +45 -0
  53. package/build/esm/adapters/npm.js.map +1 -0
  54. package/build/esm/adapters/pnpm.js +45 -0
  55. package/build/esm/adapters/pnpm.js.map +1 -0
  56. package/build/esm/adapters/yarn-classic.js +62 -0
  57. package/build/esm/adapters/yarn-classic.js.map +1 -0
  58. package/build/esm/adapters/yarn-modern.js +80 -0
  59. package/build/esm/adapters/yarn-modern.js.map +1 -0
  60. package/build/esm/index.js +129 -0
  61. package/build/esm/index.js.map +1 -0
  62. package/build/esm/reporter.js +56 -0
  63. package/build/esm/reporter.js.map +1 -0
  64. package/build/esm/runner.js +99 -0
  65. package/build/esm/runner.js.map +1 -0
  66. package/build/esm/tests/audit.js +25 -0
  67. package/build/esm/tests/audit.js.map +1 -0
  68. package/build/esm/tests/deprecate.js +65 -0
  69. package/build/esm/tests/deprecate.js.map +1 -0
  70. package/build/esm/tests/dist-tags.js +41 -0
  71. package/build/esm/tests/dist-tags.js.map +1 -0
  72. package/build/esm/tests/index.js +27 -0
  73. package/build/esm/tests/index.js.map +1 -0
  74. package/build/esm/tests/info.js +36 -0
  75. package/build/esm/tests/info.js.map +1 -0
  76. package/build/esm/tests/install.js +26 -0
  77. package/build/esm/tests/install.js.map +1 -0
  78. package/build/esm/tests/ping.js +16 -0
  79. package/build/esm/tests/ping.js.map +1 -0
  80. package/build/esm/tests/publish.js +32 -0
  81. package/build/esm/tests/publish.js.map +1 -0
  82. package/build/esm/tests/search.js +17 -0
  83. package/build/esm/tests/search.js.map +1 -0
  84. package/build/esm/tests/star.js +25 -0
  85. package/build/esm/tests/star.js.map +1 -0
  86. package/build/esm/tests/unpublish.js +38 -0
  87. package/build/esm/tests/unpublish.js.map +1 -0
  88. package/build/esm/utils/process.js +82 -0
  89. package/build/esm/utils/process.js.map +1 -0
  90. package/build/esm/utils/project.js +50 -0
  91. package/build/esm/utils/project.js.map +1 -0
  92. package/build/esm/utils/registry-client.js +57 -0
  93. package/build/esm/utils/registry-client.js.map +1 -0
  94. package/build/index.d.ts +5 -0
  95. package/build/reporter.d.ts +6 -0
  96. package/build/runner.d.ts +13 -0
  97. package/build/tests/audit.d.ts +2 -0
  98. package/build/tests/deprecate.d.ts +2 -0
  99. package/build/tests/dist-tags.d.ts +2 -0
  100. package/build/tests/index.d.ts +13 -0
  101. package/build/tests/info.d.ts +2 -0
  102. package/build/tests/install.d.ts +2 -0
  103. package/build/tests/ping.d.ts +2 -0
  104. package/build/tests/publish.d.ts +2 -0
  105. package/build/tests/search.d.ts +2 -0
  106. package/build/tests/star.d.ts +2 -0
  107. package/build/tests/unpublish.d.ts +2 -0
  108. package/build/types.d.ts +65 -0
  109. package/build/utils/index.d.ts +3 -0
  110. package/build/utils/process.d.ts +5 -0
  111. package/build/utils/project.d.ts +6 -0
  112. package/build/utils/registry-client.d.ts +14 -0
  113. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ export { PackageManagerAdapter, ExecOutput, TestContext } from '../types';
@@ -0,0 +1,4 @@
1
+ export { createNpmAdapter } from './npm';
2
+ export { createPnpmAdapter } from './pnpm';
3
+ export { createYarnClassicAdapter } from './yarn-classic';
4
+ export { createYarnModernAdapter } from './yarn-modern';
@@ -0,0 +1,2 @@
1
+ import { PackageManagerAdapter } from '../types';
2
+ export declare function createNpmAdapter(binPath?: string): PackageManagerAdapter;
@@ -0,0 +1,2 @@
1
+ import { PackageManagerAdapter } from '../types';
2
+ export declare function createPnpmAdapter(binPath?: string): PackageManagerAdapter;
@@ -0,0 +1,2 @@
1
+ import { PackageManagerAdapter } from '../types';
2
+ export declare function createYarnClassicAdapter(binPath?: string): PackageManagerAdapter;
@@ -0,0 +1,2 @@
1
+ import { PackageManagerAdapter } from '../types';
2
+ export declare function createYarnModernAdapter(binPath: string): PackageManagerAdapter;
@@ -0,0 +1,23 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ exports.__toESM = __toESM;
@@ -0,0 +1,4 @@
1
+ require("./npm.cjs");
2
+ require("./pnpm.cjs");
3
+ require("./yarn-classic.cjs");
4
+ require("./yarn-modern.cjs");
@@ -0,0 +1,47 @@
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);
6
+ //#region src/adapters/npm.ts
7
+ var debug$1 = (0, debug.default)("verdaccio:e2e-cli:npm");
8
+ var NPM_SUPPORTED_COMMANDS = new Set([
9
+ "publish",
10
+ "unpublish",
11
+ "install",
12
+ "info",
13
+ "audit",
14
+ "deprecate",
15
+ "dist-tag",
16
+ "ping",
17
+ "search",
18
+ "star",
19
+ "stars",
20
+ "unstar"
21
+ ]);
22
+ function createNpmAdapter(binPath) {
23
+ const bin = binPath || "npm";
24
+ debug$1("creating npm adapter with bin: %s", bin);
25
+ return {
26
+ name: `npm`,
27
+ type: "npm",
28
+ bin,
29
+ supports: NPM_SUPPORTED_COMMANDS,
30
+ registryArg(url) {
31
+ return ["--registry", url];
32
+ },
33
+ prefixArg(folder) {
34
+ return ["--prefix", folder];
35
+ },
36
+ exec(options, ...args) {
37
+ return require_process.exec(options, bin, args);
38
+ },
39
+ async prepareProject(packageName, version, registryUrl, port, token, dependencies = {}, devDependencies = {}) {
40
+ return require_project.prepareGenericEmptyProject(packageName, version, port, token, registryUrl, dependencies, devDependencies);
41
+ }
42
+ };
43
+ }
44
+ //#endregion
45
+ exports.createNpmAdapter = createNpmAdapter;
46
+
47
+ //# sourceMappingURL=npm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm.cjs","names":[],"sources":["../../../src/adapters/npm.ts"],"sourcesContent":["import { SpawnOptions } from 'child_process';\nimport buildDebug from 'debug';\nimport { join } from 'path';\n\nimport { ExecOutput, PackageManagerAdapter } from '../types';\nimport { exec } from '../utils/process';\nimport { prepareGenericEmptyProject } from '../utils/project';\n\nconst debug = buildDebug('verdaccio:e2e-cli:npm');\n\nconst NPM_SUPPORTED_COMMANDS = new Set([\n 'publish',\n 'unpublish',\n 'install',\n 'info',\n 'audit',\n 'deprecate',\n 'dist-tag',\n 'ping',\n 'search',\n 'star',\n 'stars',\n 'unstar',\n]);\n\nexport function createNpmAdapter(binPath?: string): PackageManagerAdapter {\n const bin = binPath || 'npm';\n debug('creating npm adapter with bin: %s', bin);\n\n const adapter: PackageManagerAdapter = {\n name: `npm`,\n type: 'npm',\n bin,\n supports: NPM_SUPPORTED_COMMANDS,\n\n registryArg(url: string): string[] {\n return ['--registry', url];\n },\n\n prefixArg(folder: string): string[] {\n return ['--prefix', folder];\n },\n\n exec(options: SpawnOptions, ...args: string[]): Promise<ExecOutput> {\n return exec(options, 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":";;;;;;AAQA,IAAM,WAAA,GAAA,MAAA,SAAmB,wBAAwB;AAEjD,IAAM,yBAAyB,IAAI,IAAI;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAgB,iBAAiB,SAAyC;CACxE,MAAM,MAAM,WAAW;AACvB,SAAM,qCAAqC,IAAI;AAyC/C,QAvCuC;EACrC,MAAM;EACN,MAAM;EACN;EACA,UAAU;EAEV,YAAY,KAAuB;AACjC,UAAO,CAAC,cAAc,IAAI;;EAG5B,UAAU,QAA0B;AAClC,UAAO,CAAC,YAAY,OAAO;;EAG7B,KAAK,SAAuB,GAAG,MAAqC;AAClE,UAAO,gBAAA,KAAK,SAAS,KAAK,KAAK;;EAGjC,MAAM,eACJ,aACA,SACA,aACA,MACA,OACA,eAAuC,EAAE,EACzC,kBAA0C,EAAE,EACX;AACjC,UAAO,gBAAA,2BACL,aACA,SACA,MACA,OACA,aACA,cACA,gBACD;;EAEJ"}
@@ -0,0 +1,47 @@
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);
6
+ //#region src/adapters/pnpm.ts
7
+ var debug$1 = (0, debug.default)("verdaccio:e2e-cli:pnpm");
8
+ var PNPM_SUPPORTED_COMMANDS = new Set([
9
+ "publish",
10
+ "unpublish",
11
+ "install",
12
+ "info",
13
+ "audit",
14
+ "deprecate",
15
+ "dist-tag",
16
+ "ping",
17
+ "search",
18
+ "star",
19
+ "stars",
20
+ "unstar"
21
+ ]);
22
+ function createPnpmAdapter(binPath) {
23
+ const bin = binPath || "pnpm";
24
+ debug$1("creating pnpm adapter with bin: %s", bin);
25
+ return {
26
+ name: `pnpm`,
27
+ type: "pnpm",
28
+ bin,
29
+ supports: PNPM_SUPPORTED_COMMANDS,
30
+ registryArg(url) {
31
+ return ["--registry", url];
32
+ },
33
+ prefixArg(folder) {
34
+ return ["--prefix", folder];
35
+ },
36
+ exec(options, ...args) {
37
+ return require_process.exec(options, bin, args);
38
+ },
39
+ async prepareProject(packageName, version, registryUrl, port, token, dependencies = {}, devDependencies = {}) {
40
+ return require_project.prepareGenericEmptyProject(packageName, version, port, token, registryUrl, dependencies, devDependencies);
41
+ }
42
+ };
43
+ }
44
+ //#endregion
45
+ exports.createPnpmAdapter = createPnpmAdapter;
46
+
47
+ //# sourceMappingURL=pnpm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pnpm.cjs","names":[],"sources":["../../../src/adapters/pnpm.ts"],"sourcesContent":["import { SpawnOptions } 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:pnpm');\n\nconst PNPM_SUPPORTED_COMMANDS = new Set([\n 'publish',\n 'unpublish',\n 'install',\n 'info',\n 'audit',\n 'deprecate',\n 'dist-tag',\n 'ping',\n 'search',\n 'star',\n 'stars',\n 'unstar',\n]);\n\nexport function createPnpmAdapter(binPath?: string): PackageManagerAdapter {\n const bin = binPath || 'pnpm';\n debug('creating pnpm adapter with bin: %s', bin);\n\n const adapter: PackageManagerAdapter = {\n name: `pnpm`,\n type: 'pnpm',\n bin,\n supports: PNPM_SUPPORTED_COMMANDS,\n\n registryArg(url: string): string[] {\n return ['--registry', url];\n },\n\n prefixArg(folder: string): string[] {\n return ['--prefix', folder];\n },\n\n exec(options: SpawnOptions, ...args: string[]): Promise<ExecOutput> {\n return exec(options, 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,GAAA,MAAA,SAAmB,yBAAyB;AAElD,IAAM,0BAA0B,IAAI,IAAI;CACtC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAgB,kBAAkB,SAAyC;CACzE,MAAM,MAAM,WAAW;AACvB,SAAM,sCAAsC,IAAI;AAyChD,QAvCuC;EACrC,MAAM;EACN,MAAM;EACN;EACA,UAAU;EAEV,YAAY,KAAuB;AACjC,UAAO,CAAC,cAAc,IAAI;;EAG5B,UAAU,QAA0B;AAClC,UAAO,CAAC,YAAY,OAAO;;EAG7B,KAAK,SAAuB,GAAG,MAAqC;AAClE,UAAO,gBAAA,KAAK,SAAS,KAAK,KAAK;;EAGjC,MAAM,eACJ,aACA,SACA,aACA,MACA,OACA,eAAuC,EAAE,EACzC,kBAA0C,EAAE,EACX;AACjC,UAAO,gBAAA,2BACL,aACA,SACA,MACA,OACA,aACA,cACA,gBACD;;EAEJ"}
@@ -0,0 +1,64 @@
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);
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 = 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
+ },
22
+ encoding: "utf8",
23
+ timeout: 5e3
24
+ }).trim();
25
+ } catch {
26
+ return "unknown";
27
+ }
28
+ }
29
+ function createYarnClassicAdapter(binPath) {
30
+ const bin = binPath || "yarn";
31
+ debug$1("creating yarn classic adapter with bin: %s", bin);
32
+ const version = detectYarnVersion(bin);
33
+ if (version.split(".")[0] !== "1") throw new Error(`yarn-classic requires Yarn 1.x but found ${version}. Your system yarn is Berry (v${version}). Use --pm yarn-modern instead, or install Yarn Classic 1.x.`);
34
+ return {
35
+ name: `yarn-classic`,
36
+ type: "yarn-classic",
37
+ bin,
38
+ supports: YARN_CLASSIC_SUPPORTED_COMMANDS,
39
+ registryArg(url) {
40
+ return ["--registry", url];
41
+ },
42
+ prefixArg(folder) {
43
+ return ["--cwd", folder];
44
+ },
45
+ exec(options, ...args) {
46
+ const env = {
47
+ ...process.env,
48
+ ...options.env,
49
+ COREPACK_ENABLE_STRICT: "0"
50
+ };
51
+ return require_process.exec({
52
+ ...options,
53
+ env
54
+ }, bin, args);
55
+ },
56
+ async prepareProject(packageName, version, registryUrl, port, token, dependencies = {}, devDependencies = {}) {
57
+ return require_project.prepareGenericEmptyProject(packageName, version, port, token, registryUrl, dependencies, devDependencies);
58
+ }
59
+ };
60
+ }
61
+ //#endregion
62
+ exports.createYarnClassicAdapter = createYarnClassicAdapter;
63
+
64
+ //# sourceMappingURL=yarn-classic.cjs.map
@@ -0,0 +1 @@
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([\n 'publish',\n 'install',\n 'info',\n 'audit',\n]);\n\nfunction detectYarnVersion(bin: string): string {\n try {\n return execSync(`${bin} --version`, {\n env: { ...process.env, COREPACK_ENABLE_STRICT: '0' },\n encoding: 'utf8',\n timeout: 5000,\n }).trim();\n } catch {\n return 'unknown';\n }\n}\n\nexport function createYarnClassicAdapter(binPath?: string): PackageManagerAdapter {\n const bin = binPath || 'yarn';\n debug('creating yarn classic adapter with bin: %s', bin);\n\n const version = detectYarnVersion(bin);\n const major = version.split('.')[0];\n if (major !== '1') {\n throw new Error(\n `yarn-classic requires Yarn 1.x but found ${version}. ` +\n `Your system yarn is Berry (v${version}). ` +\n `Use --pm yarn-modern instead, or install Yarn Classic 1.x.`\n );\n }\n\n const adapter: PackageManagerAdapter = {\n name: `yarn-classic`,\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 = { ...process.env, ...options.env, COREPACK_ENABLE_STRICT: '0' };\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,GAAA,MAAA,SAAmB,iCAAiC;AAE1D,IAAM,kCAAkC,IAAI,IAAI;CAC9C;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,kBAAkB,KAAqB;AAC9C,KAAI;AACF,UAAA,GAAA,cAAA,UAAgB,GAAG,IAAI,aAAa;GAClC,KAAK;IAAE,GAAG,QAAQ;IAAK,wBAAwB;IAAK;GACpD,UAAU;GACV,SAAS;GACV,CAAC,CAAC,MAAM;SACH;AACN,SAAO;;;AAIX,SAAgB,yBAAyB,SAAyC;CAChF,MAAM,MAAM,WAAW;AACvB,SAAM,8CAA8C,IAAI;CAExD,MAAM,UAAU,kBAAkB,IAAI;AAEtC,KADc,QAAQ,MAAM,IAAI,CAAC,OACnB,IACZ,OAAM,IAAI,MACR,4CAA4C,QAAQ,gCACnB,QAAQ,+DAE1C;AA2CH,QAxCuC;EACrC,MAAM;EACN,MAAM;EACN;EACA,UAAU;EAEV,YAAY,KAAuB;AACjC,UAAO,CAAC,cAAc,IAAI;;EAG5B,UAAU,QAA0B;AAClC,UAAO,CAAC,SAAS,OAAO;;EAG1B,KAAK,SAAuB,GAAG,MAAqC;GAClE,MAAM,MAAM;IAAE,GAAG,QAAQ;IAAK,GAAG,QAAQ;IAAK,wBAAwB;IAAK;AAC3E,UAAO,gBAAA,KAAK;IAAE,GAAG;IAAS;IAAK,EAAE,KAAK,KAAK;;EAG7C,MAAM,eACJ,aACA,SACA,aACA,MACA,OACA,eAAuC,EAAE,EACzC,kBAA0C,EAAE,EACX;AACjC,UAAO,gBAAA,2BACL,aACA,SACA,MACA,OACA,aACA,cACA,gBACD;;EAEJ"}
@@ -0,0 +1,83 @@
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);
6
+ let path = require("path");
7
+ let fs_promises = require("fs/promises");
8
+ let js_yaml = require("js-yaml");
9
+ js_yaml = require_runtime.__toESM(js_yaml);
10
+ let url = require("url");
11
+ //#region src/adapters/yarn-modern.ts
12
+ var debug$1 = (0, debug.default)("verdaccio:e2e-cli:yarn-modern");
13
+ var YARN_MODERN_SUPPORTED_COMMANDS = new Set([
14
+ "publish",
15
+ "install",
16
+ "info"
17
+ ]);
18
+ function createYamlConfig(registry, token) {
19
+ const defaultYaml = {
20
+ npmRegistryServer: registry,
21
+ enableImmutableInstalls: false,
22
+ unsafeHttpWhitelist: ["localhost"]
23
+ };
24
+ if (typeof token === "string") {
25
+ const url$1 = new url.URL(registry);
26
+ defaultYaml.npmRegistries = { [`//${url$1.hostname}:${url$1.port}`]: {
27
+ npmAlwaysAuth: true,
28
+ npmAuthToken: token
29
+ } };
30
+ }
31
+ return js_yaml.default.dump(defaultYaml);
32
+ }
33
+ function createYarnModernAdapter(binPath) {
34
+ debug$1("creating yarn modern adapter with bin: %s", binPath);
35
+ return {
36
+ name: `yarn-modern`,
37
+ type: "yarn-modern",
38
+ bin: binPath,
39
+ supports: YARN_MODERN_SUPPORTED_COMMANDS,
40
+ registryArg(_url) {
41
+ return [];
42
+ },
43
+ prefixArg(_folder) {
44
+ return [];
45
+ },
46
+ exec(options, ...args) {
47
+ const env = {
48
+ ...process.env,
49
+ ...options.env,
50
+ COREPACK_ENABLE_STRICT: "0"
51
+ };
52
+ const cmd = args[0];
53
+ let yarnArgs;
54
+ if (cmd === "publish") yarnArgs = [
55
+ "npm",
56
+ "publish",
57
+ ...args.slice(1).filter((a) => a !== "--json" && !a.startsWith("--registry"))
58
+ ];
59
+ else if (cmd === "info") yarnArgs = [
60
+ "npm",
61
+ "info",
62
+ ...args.slice(1).filter((a) => !a.startsWith("--registry"))
63
+ ];
64
+ else yarnArgs = args.filter((a) => !a.startsWith("--registry"));
65
+ return require_process.exec({
66
+ ...options,
67
+ env
68
+ }, binPath, yarnArgs);
69
+ },
70
+ async prepareProject(packageName, version, registryUrl, _port, token, dependencies = {}, devDependencies = {}) {
71
+ const tempFolder = await require_project.createTempFolder(packageName);
72
+ const yamlContent = createYamlConfig(registryUrl, token);
73
+ await (0, fs_promises.writeFile)((0, path.join)(tempFolder, ".yarnrc.yml"), yamlContent);
74
+ await (0, fs_promises.writeFile)((0, path.join)(tempFolder, "package.json"), require_project.getPackageJSON(packageName, version, dependencies, devDependencies));
75
+ await (0, fs_promises.writeFile)((0, path.join)(tempFolder, "README.md"), require_project.getREADME(packageName));
76
+ return { tempFolder };
77
+ }
78
+ };
79
+ }
80
+ //#endregion
81
+ exports.createYarnModernAdapter = createYarnModernAdapter;
82
+
83
+ //# sourceMappingURL=yarn-modern.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yarn-modern.cjs","names":[],"sources":["../../../src/adapters/yarn-modern.ts"],"sourcesContent":["import { SpawnOptions } from 'child_process';\nimport buildDebug from 'debug';\nimport { writeFile } from 'fs/promises';\nimport YAML from 'js-yaml';\nimport { join } from 'path';\nimport { URL } from 'url';\n\nimport { ExecOutput, PackageManagerAdapter } from '../types';\nimport { exec } from '../utils/process';\nimport { createTempFolder, getPackageJSON, getREADME } from '../utils/project';\n\nconst debug = buildDebug('verdaccio:e2e-cli:yarn-modern');\n\nconst YARN_MODERN_SUPPORTED_COMMANDS = new Set(['publish', 'install', 'info']);\n\nfunction createYamlConfig(registry: string, token?: string) {\n const defaultYaml: any = {\n npmRegistryServer: registry,\n enableImmutableInstalls: false,\n unsafeHttpWhitelist: ['localhost'],\n };\n\n if (typeof token === 'string') {\n const url = new URL(registry);\n defaultYaml.npmRegistries = {\n [`//${url.hostname}:${url.port}`]: {\n npmAlwaysAuth: true,\n npmAuthToken: token,\n },\n };\n }\n\n return YAML.dump(defaultYaml);\n}\n\nexport function createYarnModernAdapter(binPath: string): PackageManagerAdapter {\n debug('creating yarn modern adapter with bin: %s', binPath);\n\n const adapter: PackageManagerAdapter = {\n name: `yarn-modern`,\n type: 'yarn-modern',\n bin: binPath,\n supports: YARN_MODERN_SUPPORTED_COMMANDS,\n\n registryArg(_url: string): string[] {\n return [];\n },\n\n prefixArg(_folder: string): string[] {\n return [];\n },\n\n exec(options: SpawnOptions, ...args: string[]): Promise<ExecOutput> {\n // Disable corepack strict mode so it doesn't enforce the root packageManager field\n const env = { ...process.env, ...options.env, COREPACK_ENABLE_STRICT: '0' };\n\n const cmd = args[0];\n let yarnArgs: string[];\n if (cmd === 'publish') {\n const filtered = args.slice(1).filter(\n (a) => a !== '--json' && !a.startsWith('--registry')\n );\n yarnArgs = ['npm', 'publish', ...filtered];\n } else if (cmd === 'info') {\n const filtered = args.slice(1).filter((a) => !a.startsWith('--registry'));\n yarnArgs = ['npm', 'info', ...filtered];\n } else {\n yarnArgs = args.filter((a) => !a.startsWith('--registry'));\n }\n\n return exec({ ...options, env }, binPath, yarnArgs);\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 const tempFolder = await createTempFolder(packageName);\n const yamlContent = createYamlConfig(registryUrl, token);\n await writeFile(join(tempFolder, '.yarnrc.yml'), yamlContent);\n await writeFile(\n join(tempFolder, 'package.json'),\n getPackageJSON(packageName, version, dependencies, devDependencies)\n );\n await writeFile(join(tempFolder, 'README.md'), getREADME(packageName));\n return { tempFolder };\n },\n };\n\n return adapter;\n}\n"],"mappings":";;;;;;;;;;;AAWA,IAAM,WAAA,GAAA,MAAA,SAAmB,gCAAgC;AAEzD,IAAM,iCAAiC,IAAI,IAAI;CAAC;CAAW;CAAW;CAAO,CAAC;AAE9E,SAAS,iBAAiB,UAAkB,OAAgB;CAC1D,MAAM,cAAmB;EACvB,mBAAmB;EACnB,yBAAyB;EACzB,qBAAqB,CAAC,YAAY;EACnC;AAED,KAAI,OAAO,UAAU,UAAU;EAC7B,MAAM,QAAM,IAAI,IAAA,IAAI,SAAS;AAC7B,cAAY,gBAAgB,GACzB,KAAK,MAAI,SAAS,GAAG,MAAI,SAAS;GACjC,eAAe;GACf,cAAc;GACf,EACF;;AAGH,QAAO,QAAA,QAAK,KAAK,YAAY;;AAG/B,SAAgB,wBAAwB,SAAwC;AAC9E,SAAM,6CAA6C,QAAQ;AA0D3D,QAxDuC;EACrC,MAAM;EACN,MAAM;EACN,KAAK;EACL,UAAU;EAEV,YAAY,MAAwB;AAClC,UAAO,EAAE;;EAGX,UAAU,SAA2B;AACnC,UAAO,EAAE;;EAGX,KAAK,SAAuB,GAAG,MAAqC;GAElE,MAAM,MAAM;IAAE,GAAG,QAAQ;IAAK,GAAG,QAAQ;IAAK,wBAAwB;IAAK;GAE3E,MAAM,MAAM,KAAK;GACjB,IAAI;AACJ,OAAI,QAAQ,UAIV,YAAW;IAAC;IAAO;IAAW,GAHb,KAAK,MAAM,EAAE,CAAC,QAC5B,MAAM,MAAM,YAAY,CAAC,EAAE,WAAW,aAAa,CACrD;IACyC;YACjC,QAAQ,OAEjB,YAAW;IAAC;IAAO;IAAQ,GADV,KAAK,MAAM,EAAE,CAAC,QAAQ,MAAM,CAAC,EAAE,WAAW,aAAa,CAAC;IAClC;OAEvC,YAAW,KAAK,QAAQ,MAAM,CAAC,EAAE,WAAW,aAAa,CAAC;AAG5D,UAAO,gBAAA,KAAK;IAAE,GAAG;IAAS;IAAK,EAAE,SAAS,SAAS;;EAGrD,MAAM,eACJ,aACA,SACA,aACA,OACA,OACA,eAAuC,EAAE,EACzC,kBAA0C,EAAE,EACX;GACjC,MAAM,aAAa,MAAM,gBAAA,iBAAiB,YAAY;GACtD,MAAM,cAAc,iBAAiB,aAAa,MAAM;AACxD,UAAA,GAAA,YAAA,YAAA,GAAA,KAAA,MAAqB,YAAY,cAAc,EAAE,YAAY;AAC7D,UAAA,GAAA,YAAA,YAAA,GAAA,KAAA,MACO,YAAY,eAAe,EAChC,gBAAA,eAAe,aAAa,SAAS,cAAc,gBAAgB,CACpE;AACD,UAAA,GAAA,YAAA,YAAA,GAAA,KAAA,MAAqB,YAAY,YAAY,EAAE,gBAAA,UAAU,YAAY,CAAC;AACtE,UAAO,EAAE,YAAY;;EAExB"}
@@ -0,0 +1,139 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
3
+ const require_npm = require("./adapters/npm.cjs");
4
+ const require_pnpm = require("./adapters/pnpm.cjs");
5
+ const require_yarn_classic = require("./adapters/yarn-classic.cjs");
6
+ const require_yarn_modern = require("./adapters/yarn-modern.cjs");
7
+ require("./adapters/index.cjs");
8
+ const require_index$1 = require("./tests/index.cjs");
9
+ const require_registry_client = require("./utils/registry-client.cjs");
10
+ const require_runner = require("./runner.cjs");
11
+ let debug = require("debug");
12
+ debug = require_runtime.__toESM(debug);
13
+ //#region src/index.ts
14
+ (0, debug.default)("verdaccio:e2e-cli");
15
+ function parseAdapters(pmFilters) {
16
+ if (!pmFilters || pmFilters.length === 0) return [require_npm.createNpmAdapter()];
17
+ const adapters = [];
18
+ for (const filter of pmFilters) {
19
+ const [name, binPath] = filter.split("=");
20
+ const lowerName = name.toLowerCase();
21
+ if (lowerName === "npm") adapters.push(require_npm.createNpmAdapter(binPath));
22
+ else if (lowerName === "pnpm") adapters.push(require_pnpm.createPnpmAdapter(binPath));
23
+ else if (lowerName === "yarn-classic" || lowerName === "yarn1") adapters.push(require_yarn_classic.createYarnClassicAdapter(binPath));
24
+ else if (lowerName.startsWith("yarn-modern") || lowerName === "yarn") {
25
+ if (!binPath) throw new Error(`yarn-modern requires a bin path: --pm yarn-modern=/path/to/yarn.js`);
26
+ adapters.push(require_yarn_modern.createYarnModernAdapter(binPath));
27
+ } else throw new Error(`Unknown package manager: "${name}". Supported: npm, pnpm, yarn-classic, yarn-modern`);
28
+ }
29
+ return adapters;
30
+ }
31
+ function parseArgs(argv) {
32
+ const options = {
33
+ registry: "",
34
+ pm: [],
35
+ test: [],
36
+ concurrency: 1,
37
+ timeout: 5e4,
38
+ verbose: false
39
+ };
40
+ for (let i = 2; i < argv.length; i++) {
41
+ const arg = argv[i];
42
+ if (arg === "--registry" || arg === "-r") options.registry = argv[++i];
43
+ else if (arg === "--pm") options.pm.push(argv[++i]);
44
+ else if (arg === "--test" || arg === "-t") options.test.push(argv[++i]);
45
+ else if (arg === "--concurrency" || arg === "-c") options.concurrency = parseInt(argv[++i], 10);
46
+ else if (arg === "--timeout") options.timeout = parseInt(argv[++i], 10);
47
+ else if (arg === "--token") options.token = argv[++i];
48
+ else if (arg === "--verbose" || arg === "-v") options.verbose = true;
49
+ else if (arg === "--help" || arg === "-h") {
50
+ printHelp();
51
+ process.exit(0);
52
+ } else if (arg.startsWith("--registry=")) options.registry = arg.split("=")[1];
53
+ else if (arg.startsWith("--pm=")) options.pm.push(arg.split("=")[1]);
54
+ else if (arg.startsWith("--test=")) options.test.push(arg.split("=")[1]);
55
+ else if (arg.startsWith("--token=")) options.token = arg.split("=")[1];
56
+ else if (arg.startsWith("--timeout=")) options.timeout = parseInt(arg.split("=")[1], 10);
57
+ else {
58
+ console.error(`Unknown argument: ${arg}`);
59
+ printHelp();
60
+ process.exit(1);
61
+ }
62
+ }
63
+ return options;
64
+ }
65
+ function printHelp() {
66
+ console.log(`
67
+ @verdaccio/e2e-cli - Run Verdaccio e2e tests against any running registry
68
+
69
+ Usage:
70
+ verdaccio-e2e --registry <url> [options]
71
+
72
+ Required:
73
+ -r, --registry <url> Verdaccio registry URL (e.g. http://localhost:4873)
74
+
75
+ Options:
76
+ --pm <name[=path]> Package manager to test (can be repeated)
77
+ Supported: npm, pnpm, yarn-classic, yarn-modern
78
+ Examples: --pm npm --pm pnpm
79
+ --pm npm=/path/to/npm
80
+ --pm yarn-modern=/path/to/yarn.js
81
+ Default: npm
82
+
83
+ -t, --test <name> Filter tests by name (can be repeated)
84
+ Available: publish, install, audit, info, deprecate,
85
+ dist-tags, ping, search, star, unpublish
86
+ Default: all supported by the PM
87
+
88
+ --token <token> Auth token (skips user creation)
89
+ --timeout <ms> Per-test timeout (default: 50000)
90
+ -v, --verbose Enable debug output
91
+ -h, --help Show this help
92
+ `);
93
+ }
94
+ async function main(argv = process.argv) {
95
+ const options = parseArgs(argv);
96
+ if (!options.registry) {
97
+ console.error("Error: --registry is required\n");
98
+ printHelp();
99
+ process.exit(1);
100
+ }
101
+ if (options.verbose) {
102
+ const { setVerbose } = await Promise.resolve().then(() => require("./utils/process.cjs"));
103
+ setVerbose(true);
104
+ }
105
+ console.log(`Checking registry at ${options.registry}...`);
106
+ if (!await require_registry_client.pingRegistry(options.registry)) {
107
+ console.error(`Error: Registry at ${options.registry} is not reachable`);
108
+ process.exit(1);
109
+ }
110
+ console.log(`Registry is alive.`);
111
+ let token = options.token;
112
+ if (!token) {
113
+ console.log("Creating test user...");
114
+ const auth = await require_registry_client.createUser(options.registry);
115
+ token = auth.token;
116
+ console.log(`User "${auth.user}" created.`);
117
+ }
118
+ const adapters = parseAdapters(options.pm);
119
+ console.log(`Adapters: ${adapters.map((a) => a.name).join(", ")}`);
120
+ const tests = options.test && options.test.length > 0 ? require_index$1.allTests.filter((t) => options.test.includes(t.name)) : require_index$1.allTests;
121
+ console.log(`Tests: ${tests.map((t) => t.name).join(", ")}`);
122
+ const { exitCode } = await require_runner.runAll(adapters, tests, options.registry, token, {
123
+ timeout: options.timeout,
124
+ concurrency: options.concurrency,
125
+ testFilter: options.test
126
+ });
127
+ process.exit(exitCode);
128
+ }
129
+ //#endregion
130
+ exports.allTests = require_index$1.allTests;
131
+ exports.createNpmAdapter = require_npm.createNpmAdapter;
132
+ exports.createPnpmAdapter = require_pnpm.createPnpmAdapter;
133
+ exports.createYarnClassicAdapter = require_yarn_classic.createYarnClassicAdapter;
134
+ exports.createYarnModernAdapter = require_yarn_modern.createYarnModernAdapter;
135
+ exports.main = main;
136
+ exports.runAll = require_runner.runAll;
137
+ exports.runSuite = require_runner.runSuite;
138
+
139
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../src/index.ts"],"sourcesContent":["import buildDebug from 'debug';\n\nimport {\n createNpmAdapter,\n createPnpmAdapter,\n createYarnClassicAdapter,\n createYarnModernAdapter,\n} from './adapters';\nimport { allTests } from './tests';\nimport { CliOptions, PackageManagerAdapter } from './types';\nimport { createUser, pingRegistry } from './utils/registry-client';\nimport { runAll } from './runner';\n\nconst debug = buildDebug('verdaccio:e2e-cli');\n\nfunction parseAdapters(pmFilters?: string[]): PackageManagerAdapter[] {\n if (!pmFilters || pmFilters.length === 0) {\n // Default: just npm\n return [createNpmAdapter()];\n }\n\n const adapters: PackageManagerAdapter[] = [];\n\n for (const filter of pmFilters) {\n const [name, binPath] = filter.split('=');\n const lowerName = name.toLowerCase();\n\n if (lowerName === 'npm') {\n adapters.push(createNpmAdapter(binPath));\n } else if (lowerName === 'pnpm') {\n adapters.push(createPnpmAdapter(binPath));\n } else if (lowerName === 'yarn-classic' || lowerName === 'yarn1') {\n adapters.push(createYarnClassicAdapter(binPath));\n } else if (lowerName.startsWith('yarn-modern') || lowerName === 'yarn') {\n if (!binPath) {\n throw new Error(\n `yarn-modern requires a bin path: --pm yarn-modern=/path/to/yarn.js`\n );\n }\n adapters.push(createYarnModernAdapter(binPath));\n } else {\n throw new Error(`Unknown package manager: \"${name}\". Supported: npm, pnpm, yarn-classic, yarn-modern`);\n }\n }\n\n return adapters;\n}\n\nfunction parseArgs(argv: string[]): CliOptions {\n const options: CliOptions = {\n registry: '',\n pm: [],\n test: [],\n concurrency: 1,\n timeout: 50000,\n verbose: false,\n };\n\n for (let i = 2; i < argv.length; i++) {\n const arg = argv[i];\n\n if (arg === '--registry' || arg === '-r') {\n options.registry = argv[++i];\n } else if (arg === '--pm') {\n options.pm!.push(argv[++i]);\n } else if (arg === '--test' || arg === '-t') {\n options.test!.push(argv[++i]);\n } else if (arg === '--concurrency' || arg === '-c') {\n options.concurrency = parseInt(argv[++i], 10);\n } else if (arg === '--timeout') {\n options.timeout = parseInt(argv[++i], 10);\n } else if (arg === '--token') {\n options.token = argv[++i];\n } else if (arg === '--verbose' || arg === '-v') {\n options.verbose = true;\n } else if (arg === '--help' || arg === '-h') {\n printHelp();\n process.exit(0);\n } else if (arg.startsWith('--registry=')) {\n options.registry = arg.split('=')[1];\n } else if (arg.startsWith('--pm=')) {\n options.pm!.push(arg.split('=')[1]);\n } else if (arg.startsWith('--test=')) {\n options.test!.push(arg.split('=')[1]);\n } else if (arg.startsWith('--token=')) {\n options.token = arg.split('=')[1];\n } else if (arg.startsWith('--timeout=')) {\n options.timeout = parseInt(arg.split('=')[1], 10);\n } else {\n console.error(`Unknown argument: ${arg}`);\n printHelp();\n process.exit(1);\n }\n }\n\n return options;\n}\n\nfunction printHelp(): void {\n console.log(`\n @verdaccio/e2e-cli - Run Verdaccio e2e tests against any running registry\n\n Usage:\n verdaccio-e2e --registry <url> [options]\n\n Required:\n -r, --registry <url> Verdaccio registry URL (e.g. http://localhost:4873)\n\n Options:\n --pm <name[=path]> Package manager to test (can be repeated)\n Supported: npm, pnpm, yarn-classic, yarn-modern\n Examples: --pm npm --pm pnpm\n --pm npm=/path/to/npm\n --pm yarn-modern=/path/to/yarn.js\n Default: npm\n\n -t, --test <name> Filter tests by name (can be repeated)\n Available: publish, install, audit, info, deprecate,\n dist-tags, ping, search, star, unpublish\n Default: all supported by the PM\n\n --token <token> Auth token (skips user creation)\n --timeout <ms> Per-test timeout (default: 50000)\n -v, --verbose Enable debug output\n -h, --help Show this help\n `);\n}\n\nexport async function main(argv: string[] = process.argv): Promise<void> {\n const options = parseArgs(argv);\n\n if (!options.registry) {\n console.error('Error: --registry is required\\n');\n printHelp();\n process.exit(1);\n }\n\n if (options.verbose) {\n const { setVerbose } = await import('./utils/process');\n setVerbose(true);\n }\n\n // Ensure registry is reachable\n console.log(`Checking registry at ${options.registry}...`);\n const alive = await pingRegistry(options.registry);\n if (!alive) {\n console.error(`Error: Registry at ${options.registry} is not reachable`);\n process.exit(1);\n }\n console.log(`Registry is alive.`);\n\n // Get auth token\n let token = options.token;\n if (!token) {\n console.log('Creating test user...');\n const auth = await createUser(options.registry);\n token = auth.token;\n console.log(`User \"${auth.user}\" created.`);\n }\n\n // Build adapter list\n const adapters = parseAdapters(options.pm);\n console.log(`Adapters: ${adapters.map((a) => a.name).join(', ')}`);\n\n // Filter tests\n const tests = options.test && options.test.length > 0\n ? allTests.filter((t) => options.test!.includes(t.name))\n : allTests;\n\n console.log(`Tests: ${tests.map((t) => t.name).join(', ')}`);\n\n // Run\n const { exitCode } = await runAll(adapters, tests, options.registry, token, {\n timeout: options.timeout,\n concurrency: options.concurrency,\n testFilter: options.test,\n });\n\n process.exit(exitCode);\n}\n\n// Re-export for programmatic usage\nexport { allTests } from './tests';\nexport { createNpmAdapter, createPnpmAdapter, createYarnClassicAdapter, createYarnModernAdapter } from './adapters';\nexport { runAll, runSuite } from './runner';\nexport type { PackageManagerAdapter, TestDefinition, TestContext, CliOptions } from './types';\n"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ //#region src/reporter.ts
2
+ var COLORS = {
3
+ reset: "\x1B[0m",
4
+ red: "\x1B[31m",
5
+ green: "\x1B[32m",
6
+ yellow: "\x1B[33m",
7
+ cyan: "\x1B[36m",
8
+ dim: "\x1B[2m",
9
+ bold: "\x1B[1m"
10
+ };
11
+ function formatDuration(ms) {
12
+ if (ms < 1e3) return `${ms}ms`;
13
+ return `${(ms / 1e3).toFixed(1)}s`;
14
+ }
15
+ function reportTestStart(adapterName, testName) {
16
+ process.stdout.write(` ${COLORS.dim}running${COLORS.reset} ${adapterName} > ${testName}...`);
17
+ }
18
+ function reportTestResult(result) {
19
+ if (result.passed) process.stdout.write(`\r ${COLORS.green}PASS${COLORS.reset} ${result.name} ${COLORS.dim}(${formatDuration(result.duration)})${COLORS.reset}\n`);
20
+ else {
21
+ process.stdout.write(`\r ${COLORS.red}FAIL${COLORS.reset} ${result.name} ${COLORS.dim}(${formatDuration(result.duration)})${COLORS.reset}\n`);
22
+ if (result.error) {
23
+ const lines = result.error.split("\n");
24
+ for (const line of lines) console.log(` ${COLORS.red}${line}${COLORS.reset}`);
25
+ }
26
+ }
27
+ }
28
+ function reportSuiteStart(adapterName) {
29
+ console.log(`\n${COLORS.bold}${COLORS.cyan}${adapterName}${COLORS.reset}`);
30
+ }
31
+ function reportSkipped(testName) {
32
+ console.log(` ${COLORS.yellow}SKIP${COLORS.reset} ${testName}`);
33
+ }
34
+ function reportSummary(results) {
35
+ console.log(`\n${COLORS.bold}${"=".repeat(50)}${COLORS.reset}`);
36
+ console.log(`${COLORS.bold}Summary${COLORS.reset}\n`);
37
+ let totalPassed = 0;
38
+ let totalFailed = 0;
39
+ let totalSkipped = 0;
40
+ let totalDuration = 0;
41
+ for (const suite of results) {
42
+ const status = suite.failed > 0 ? COLORS.red : COLORS.green;
43
+ const icon = suite.failed > 0 ? "x" : "v";
44
+ console.log(` ${status}${icon}${COLORS.reset} ${suite.adapter}: ${COLORS.green}${suite.passed} passed${COLORS.reset}, ${COLORS.red}${suite.failed} failed${COLORS.reset}, ${COLORS.yellow}${suite.skipped} skipped${COLORS.reset} ${COLORS.dim}(${formatDuration(suite.duration)})${COLORS.reset}`);
45
+ totalPassed += suite.passed;
46
+ totalFailed += suite.failed;
47
+ totalSkipped += suite.skipped;
48
+ totalDuration += suite.duration;
49
+ }
50
+ console.log(`\n Total: ${COLORS.green}${totalPassed} passed${COLORS.reset}, ${COLORS.red}${totalFailed} failed${COLORS.reset}, ${COLORS.yellow}${totalSkipped} skipped${COLORS.reset} ${COLORS.dim}(${formatDuration(totalDuration)})${COLORS.reset}`);
51
+ console.log(`${COLORS.bold}${"=".repeat(50)}${COLORS.reset}\n`);
52
+ }
53
+ //#endregion
54
+ exports.reportSkipped = reportSkipped;
55
+ exports.reportSuiteStart = reportSuiteStart;
56
+ exports.reportSummary = reportSummary;
57
+ exports.reportTestResult = reportTestResult;
58
+ exports.reportTestStart = reportTestStart;
59
+
60
+ //# sourceMappingURL=reporter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.cjs","names":[],"sources":["../../src/reporter.ts"],"sourcesContent":["import { SuiteResult, TestResult } from './types';\n\nconst COLORS = {\n reset: '\\x1b[0m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n cyan: '\\x1b[36m',\n dim: '\\x1b[2m',\n bold: '\\x1b[1m',\n};\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n return `${(ms / 1000).toFixed(1)}s`;\n}\n\nexport function reportTestStart(adapterName: string, testName: string): void {\n process.stdout.write(\n ` ${COLORS.dim}running${COLORS.reset} ${adapterName} > ${testName}...`\n );\n}\n\nexport function reportTestResult(result: TestResult): void {\n if (result.passed) {\n process.stdout.write(\n `\\r ${COLORS.green}PASS${COLORS.reset} ${result.name} ${COLORS.dim}(${formatDuration(result.duration)})${COLORS.reset}\\n`\n );\n } else {\n process.stdout.write(\n `\\r ${COLORS.red}FAIL${COLORS.reset} ${result.name} ${COLORS.dim}(${formatDuration(result.duration)})${COLORS.reset}\\n`\n );\n if (result.error) {\n const lines = result.error.split('\\n');\n for (const line of lines) {\n console.log(` ${COLORS.red}${line}${COLORS.reset}`);\n }\n }\n }\n}\n\nexport function reportSuiteStart(adapterName: string): void {\n console.log(`\\n${COLORS.bold}${COLORS.cyan}${adapterName}${COLORS.reset}`);\n}\n\nexport function reportSkipped(testName: string): void {\n console.log(` ${COLORS.yellow}SKIP${COLORS.reset} ${testName}`);\n}\n\nexport function reportSummary(results: SuiteResult[]): void {\n console.log(`\\n${COLORS.bold}${'='.repeat(50)}${COLORS.reset}`);\n console.log(`${COLORS.bold}Summary${COLORS.reset}\\n`);\n\n let totalPassed = 0;\n let totalFailed = 0;\n let totalSkipped = 0;\n let totalDuration = 0;\n\n for (const suite of results) {\n const status = suite.failed > 0 ? COLORS.red : COLORS.green;\n const icon = suite.failed > 0 ? 'x' : 'v';\n console.log(\n ` ${status}${icon}${COLORS.reset} ${suite.adapter}: ` +\n `${COLORS.green}${suite.passed} passed${COLORS.reset}, ` +\n `${COLORS.red}${suite.failed} failed${COLORS.reset}, ` +\n `${COLORS.yellow}${suite.skipped} skipped${COLORS.reset} ` +\n `${COLORS.dim}(${formatDuration(suite.duration)})${COLORS.reset}`\n );\n totalPassed += suite.passed;\n totalFailed += suite.failed;\n totalSkipped += suite.skipped;\n totalDuration += suite.duration;\n }\n\n console.log(`\\n Total: ${COLORS.green}${totalPassed} passed${COLORS.reset}, ` +\n `${COLORS.red}${totalFailed} failed${COLORS.reset}, ` +\n `${COLORS.yellow}${totalSkipped} skipped${COLORS.reset} ` +\n `${COLORS.dim}(${formatDuration(totalDuration)})${COLORS.reset}`);\n console.log(`${COLORS.bold}${'='.repeat(50)}${COLORS.reset}\\n`);\n}\n"],"mappings":";AAEA,IAAM,SAAS;CACb,OAAO;CACP,KAAK;CACL,OAAO;CACP,QAAQ;CACR,MAAM;CACN,KAAK;CACL,MAAM;CACP;AAED,SAAS,eAAe,IAAoB;AAC1C,KAAI,KAAK,IAAM,QAAO,GAAG,GAAG;AAC5B,QAAO,IAAI,KAAK,KAAM,QAAQ,EAAE,CAAC;;AAGnC,SAAgB,gBAAgB,aAAqB,UAAwB;AAC3E,SAAQ,OAAO,MACb,KAAK,OAAO,IAAI,SAAS,OAAO,MAAM,GAAG,YAAY,KAAK,SAAS,KACpE;;AAGH,SAAgB,iBAAiB,QAA0B;AACzD,KAAI,OAAO,OACT,SAAQ,OAAO,MACb,OAAO,OAAO,MAAM,MAAM,OAAO,MAAM,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,GAAG,eAAe,OAAO,SAAS,CAAC,GAAG,OAAO,MAAM,IACxH;MACI;AACL,UAAQ,OAAO,MACb,OAAO,OAAO,IAAI,MAAM,OAAO,MAAM,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,GAAG,eAAe,OAAO,SAAS,CAAC,GAAG,OAAO,MAAM,IACtH;AACD,MAAI,OAAO,OAAO;GAChB,MAAM,QAAQ,OAAO,MAAM,MAAM,KAAK;AACtC,QAAK,MAAM,QAAQ,MACjB,SAAQ,IAAI,OAAO,OAAO,MAAM,OAAO,OAAO,QAAQ;;;;AAM9D,SAAgB,iBAAiB,aAA2B;AAC1D,SAAQ,IAAI,KAAK,OAAO,OAAO,OAAO,OAAO,cAAc,OAAO,QAAQ;;AAG5E,SAAgB,cAAc,UAAwB;AACpD,SAAQ,IAAI,KAAK,OAAO,OAAO,MAAM,OAAO,MAAM,GAAG,WAAW;;AAGlE,SAAgB,cAAc,SAA8B;AAC1D,SAAQ,IAAI,KAAK,OAAO,OAAO,IAAI,OAAO,GAAG,GAAG,OAAO,QAAQ;AAC/D,SAAQ,IAAI,GAAG,OAAO,KAAK,SAAS,OAAO,MAAM,IAAI;CAErD,IAAI,cAAc;CAClB,IAAI,cAAc;CAClB,IAAI,eAAe;CACnB,IAAI,gBAAgB;AAEpB,MAAK,MAAM,SAAS,SAAS;EAC3B,MAAM,SAAS,MAAM,SAAS,IAAI,OAAO,MAAM,OAAO;EACtD,MAAM,OAAO,MAAM,SAAS,IAAI,MAAM;AACtC,UAAQ,IACN,KAAK,SAAS,OAAO,OAAO,MAAM,GAAG,MAAM,QAAQ,IAC9C,OAAO,QAAQ,MAAM,OAAO,SAAS,OAAO,MAAM,IAClD,OAAO,MAAM,MAAM,OAAO,SAAS,OAAO,MAAM,IAChD,OAAO,SAAS,MAAM,QAAQ,UAAU,OAAO,MAAM,GACrD,OAAO,IAAI,GAAG,eAAe,MAAM,SAAS,CAAC,GAAG,OAAO,QAC7D;AACD,iBAAe,MAAM;AACrB,iBAAe,MAAM;AACrB,kBAAgB,MAAM;AACtB,mBAAiB,MAAM;;AAGzB,SAAQ,IAAI,cAAc,OAAO,QAAQ,YAAY,SAAS,OAAO,MAAM,IACtE,OAAO,MAAM,YAAY,SAAS,OAAO,MAAM,IAC/C,OAAO,SAAS,aAAa,UAAU,OAAO,MAAM,GACpD,OAAO,IAAI,GAAG,eAAe,cAAc,CAAC,GAAG,OAAO,QAAQ;AACnE,SAAQ,IAAI,GAAG,OAAO,OAAO,IAAI,OAAO,GAAG,GAAG,OAAO,MAAM,IAAI"}