@rpcbase/test 0.308.0 → 0.310.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 (81) hide show
  1. package/dist/clearDatabase.d.ts +2 -0
  2. package/dist/clearDatabase.d.ts.map +1 -0
  3. package/dist/clearDatabase.js +12 -0
  4. package/dist/clearDatabase.js.map +1 -0
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +785 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/coverage/collect.d.ts +5 -0
  10. package/dist/coverage/collect.d.ts.map +1 -0
  11. package/dist/coverage/collect.js +113 -0
  12. package/dist/coverage/collect.js.map +1 -0
  13. package/dist/coverage/config-loader.d.ts +11 -0
  14. package/dist/coverage/config-loader.d.ts.map +1 -0
  15. package/dist/coverage/config-loader.js +292 -0
  16. package/dist/coverage/config-loader.js.map +1 -0
  17. package/dist/coverage/config.d.ts +3 -0
  18. package/dist/coverage/config.d.ts.map +1 -0
  19. package/dist/coverage/config.js +110 -0
  20. package/dist/coverage/config.js.map +1 -0
  21. package/dist/coverage/files.d.ts +4 -0
  22. package/dist/coverage/files.d.ts.map +1 -0
  23. package/dist/coverage/files.js +52 -0
  24. package/dist/coverage/files.js.map +1 -0
  25. package/dist/coverage/fixtures.d.ts +5 -0
  26. package/dist/coverage/fixtures.d.ts.map +1 -0
  27. package/dist/coverage/fixtures.js +42 -0
  28. package/dist/coverage/fixtures.js.map +1 -0
  29. package/dist/coverage/global-setup.d.ts +3 -0
  30. package/dist/coverage/global-setup.d.ts.map +1 -0
  31. package/dist/coverage/global-setup.js +18 -0
  32. package/dist/coverage/global-setup.js.map +1 -0
  33. package/dist/coverage/index.d.ts +10 -0
  34. package/dist/coverage/index.d.ts.map +1 -0
  35. package/dist/coverage/index.js +62 -0
  36. package/dist/coverage/index.js.map +1 -0
  37. package/dist/coverage/report.d.ts +7 -0
  38. package/dist/coverage/report.d.ts.map +1 -0
  39. package/{src → dist}/coverage/report.js +262 -362
  40. package/dist/coverage/report.js.map +1 -0
  41. package/dist/coverage/reporter.d.ts +16 -0
  42. package/dist/coverage/reporter.d.ts.map +1 -0
  43. package/dist/coverage/reporter.js +57 -0
  44. package/dist/coverage/reporter.js.map +1 -0
  45. package/dist/coverage/types.d.ts +47 -0
  46. package/dist/coverage/types.d.ts.map +1 -0
  47. package/dist/coverage/v8-tracker.d.ts +6 -0
  48. package/dist/coverage/v8-tracker.d.ts.map +1 -0
  49. package/dist/coverage/v8-tracker.js +166 -0
  50. package/dist/coverage/v8-tracker.js.map +1 -0
  51. package/dist/defineConfig.d.ts +3 -0
  52. package/dist/defineConfig.d.ts.map +1 -0
  53. package/dist/index.d.ts +11 -0
  54. package/dist/index.d.ts.map +1 -0
  55. package/dist/index.js +61 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/serverCoverage.d.ts +8 -0
  58. package/dist/serverCoverage.d.ts.map +1 -0
  59. package/dist/serverCoverage.js +42 -0
  60. package/dist/serverCoverage.js.map +1 -0
  61. package/dist/vitest.config.d.ts +3 -0
  62. package/dist/vitest.config.d.ts.map +1 -0
  63. package/dist/vitest.config.js +83 -0
  64. package/dist/vitest.config.js.map +1 -0
  65. package/package.json +25 -14
  66. package/index.d.ts +0 -64
  67. package/src/clearDatabase.js +0 -19
  68. package/src/cli.js +0 -948
  69. package/src/coverage/collect.js +0 -134
  70. package/src/coverage/config-loader.js +0 -202
  71. package/src/coverage/config.js +0 -134
  72. package/src/coverage/files.js +0 -55
  73. package/src/coverage/fixtures.js +0 -37
  74. package/src/coverage/global-setup.js +0 -19
  75. package/src/coverage/index.js +0 -30
  76. package/src/coverage/reporter.js +0 -65
  77. package/src/coverage/v8-tracker.js +0 -205
  78. package/src/defineConfig.js +0 -129
  79. package/src/index.js +0 -49
  80. package/src/vitest.config.mjs +0 -107
  81. /package/{src → dist}/register-tty.cjs +0 -0
@@ -0,0 +1,83 @@
1
+ import path from "node:path";
2
+ import fs from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import { defineConfig } from "vitest/config";
5
+ const require$1 = createRequire(import.meta.url);
6
+ function escapeRegex(str) {
7
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
8
+ }
9
+ function loadTsconfig() {
10
+ let ts;
11
+ try {
12
+ ts = require$1("typescript");
13
+ } catch (_err) {
14
+ throw new Error(
15
+ "@rpcbase/test: TypeScript is required to resolve path aliases. Please add it as a devDependency."
16
+ );
17
+ }
18
+ const cwd = process.cwd();
19
+ const configPath = ts.findConfigFile(cwd, ts.sys.fileExists, "tsconfig.json") || ts.findConfigFile(cwd, ts.sys.fileExists, "tsconfig.base.json");
20
+ if (!configPath) {
21
+ throw new Error("@rpcbase/test: no tsconfig found for alias resolution");
22
+ }
23
+ const configFile = ts.readConfigFile(configPath, ts.sys.readFile);
24
+ if (configFile.error) {
25
+ throw new Error(`@rpcbase/test: unable to read tsconfig at ${configPath}`);
26
+ }
27
+ const parsed = ts.parseJsonConfigFileContent(
28
+ configFile.config,
29
+ ts.sys,
30
+ path.dirname(configPath)
31
+ );
32
+ return {
33
+ path: configPath,
34
+ baseUrl: parsed.options?.baseUrl ? path.resolve(path.dirname(configPath), parsed.options.baseUrl) : path.dirname(configPath),
35
+ paths: parsed.options?.paths
36
+ };
37
+ }
38
+ function pathsToAlias(tsconfig2) {
39
+ const paths = tsconfig2?.paths;
40
+ if (!paths) return [];
41
+ const baseUrl = tsconfig2.baseUrl || path.dirname(tsconfig2.path);
42
+ const alias2 = [];
43
+ for (const [key, targets] of Object.entries(paths)) {
44
+ if (!Array.isArray(targets)) continue;
45
+ for (const target of targets) {
46
+ if (key.includes("*") && target.includes("*")) {
47
+ const wildcardPattern = target.endsWith("*") ? "(.+)" : "([^/]+)";
48
+ const find2 = new RegExp(
49
+ `^${escapeRegex(key).split("\\*").join(wildcardPattern)}$`
50
+ );
51
+ let groupIndex = 0;
52
+ const replacedTarget = target.replace(/\*/g, () => `$${++groupIndex}`);
53
+ const replacement2 = path.resolve(baseUrl, replacedTarget);
54
+ const checkPath = replacement2.replace(/\$\\d+/g, "");
55
+ if (checkPath.includes(`${path.sep}node_modules${path.sep}`) && !fs.existsSync(checkPath)) {
56
+ continue;
57
+ }
58
+ alias2.push({ find: find2, replacement: replacement2 });
59
+ continue;
60
+ }
61
+ const find = key.replace(/\*$/, "");
62
+ const cleanTarget = target.replace(/\*$/, "");
63
+ const replacement = path.resolve(baseUrl, cleanTarget);
64
+ if (replacement.includes(`${path.sep}node_modules${path.sep}`) && !fs.existsSync(replacement)) {
65
+ continue;
66
+ }
67
+ alias2.push({ find, replacement });
68
+ }
69
+ }
70
+ return alias2;
71
+ }
72
+ const tsconfig = loadTsconfig();
73
+ const alias = pathsToAlias(tsconfig);
74
+ const vitest_config = defineConfig({
75
+ test: {
76
+ include: ["{src,lib}/**/*.test.{js,ts,tsx}"]
77
+ },
78
+ resolve: alias.length > 0 ? { alias } : void 0
79
+ });
80
+ export {
81
+ vitest_config as default
82
+ };
83
+ //# sourceMappingURL=vitest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vitest.config.js","sources":["../src/vitest.config.ts"],"sourcesContent":["import path from \"node:path\"\nimport fs from \"node:fs\"\nimport { createRequire } from \"node:module\"\n\nimport { defineConfig } from \"vitest/config\"\n\n\nconst require = createRequire(import.meta.url)\n\nfunction escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n}\n\ntype TsconfigPaths = Record<string, string[]>\n\nfunction loadTsconfig(): { path: string; baseUrl: string; paths?: TsconfigPaths } {\n let ts\n try {\n ts = require(\"typescript\")\n } catch (_err) {\n throw new Error(\n \"@rpcbase/test: TypeScript is required to resolve path aliases. Please add it as a devDependency.\",\n )\n }\n\n const cwd = process.cwd()\n const configPath =\n ts.findConfigFile(cwd, ts.sys.fileExists, \"tsconfig.json\") ||\n ts.findConfigFile(cwd, ts.sys.fileExists, \"tsconfig.base.json\")\n\n if (!configPath) {\n throw new Error(\"@rpcbase/test: no tsconfig found for alias resolution\")\n }\n\n const configFile = ts.readConfigFile(configPath, ts.sys.readFile)\n if (configFile.error) {\n throw new Error(`@rpcbase/test: unable to read tsconfig at ${configPath}`)\n }\n\n const parsed = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n path.dirname(configPath),\n )\n\n return {\n path: configPath,\n baseUrl: parsed.options?.baseUrl\n ? path.resolve(path.dirname(configPath), parsed.options.baseUrl)\n : path.dirname(configPath),\n paths: parsed.options?.paths,\n }\n}\n\ntype ViteAliasEntry = { find: string | RegExp; replacement: string }\n\nfunction pathsToAlias(tsconfig: { path: string; baseUrl: string; paths?: TsconfigPaths }): ViteAliasEntry[] {\n const paths = tsconfig?.paths\n if (!paths) return []\n\n const baseUrl = tsconfig.baseUrl || path.dirname(tsconfig.path)\n const alias: ViteAliasEntry[] = []\n\n for (const [key, targets] of Object.entries(paths)) {\n if (!Array.isArray(targets)) continue\n\n for (const target of targets) {\n if (key.includes(\"*\") && target.includes(\"*\")) {\n const wildcardPattern = target.endsWith(\"*\") ? \"(.+)\" : \"([^/]+)\"\n const find = new RegExp(\n `^${escapeRegex(key).split(\"\\\\*\").join(wildcardPattern)}$`,\n )\n let groupIndex = 0\n const replacedTarget = target.replace(/\\*/g, () => `$${++groupIndex}`)\n const replacement = path.resolve(baseUrl, replacedTarget)\n const checkPath = replacement.replace(/\\$\\\\d+/g, \"\")\n if (\n checkPath.includes(`${path.sep}node_modules${path.sep}`) &&\n !fs.existsSync(checkPath)\n ) {\n continue\n }\n alias.push({ find, replacement })\n continue\n }\n\n const find = key.replace(/\\*$/, \"\")\n const cleanTarget = target.replace(/\\*$/, \"\")\n const replacement = path.resolve(baseUrl, cleanTarget)\n if (\n replacement.includes(`${path.sep}node_modules${path.sep}`) &&\n !fs.existsSync(replacement)\n ) {\n continue\n }\n alias.push({ find, replacement })\n }\n }\n\n return alias\n}\n\nconst tsconfig = loadTsconfig()\nconst alias = pathsToAlias(tsconfig)\n\nexport default defineConfig({\n test: {\n include: [\"{src,lib}/**/*.test.{js,ts,tsx}\"],\n },\n resolve: alias.length > 0 ? { alias } : undefined,\n})\n"],"names":["require","tsconfig","alias","find","replacement"],"mappings":";;;;AAOA,MAAMA,YAAU,cAAc,YAAY,GAAG;AAE7C,SAAS,YAAY,KAAqB;AACxC,SAAO,IAAI,QAAQ,uBAAuB,MAAM;AAClD;AAIA,SAAS,eAAyE;AAChF,MAAI;AACJ,MAAI;AACF,SAAKA,UAAQ,YAAY;AAAA,EAC3B,SAAS,MAAM;AACb,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,MAAM,QAAQ,IAAA;AACpB,QAAM,aACJ,GAAG,eAAe,KAAK,GAAG,IAAI,YAAY,eAAe,KACzD,GAAG,eAAe,KAAK,GAAG,IAAI,YAAY,oBAAoB;AAEhE,MAAI,CAAC,YAAY;AACf,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAEA,QAAM,aAAa,GAAG,eAAe,YAAY,GAAG,IAAI,QAAQ;AAChE,MAAI,WAAW,OAAO;AACpB,UAAM,IAAI,MAAM,6CAA6C,UAAU,EAAE;AAAA,EAC3E;AAEA,QAAM,SAAS,GAAG;AAAA,IAChB,WAAW;AAAA,IACX,GAAG;AAAA,IACH,KAAK,QAAQ,UAAU;AAAA,EAAA;AAGzB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS,OAAO,SAAS,UACrB,KAAK,QAAQ,KAAK,QAAQ,UAAU,GAAG,OAAO,QAAQ,OAAO,IAC7D,KAAK,QAAQ,UAAU;AAAA,IAC3B,OAAO,OAAO,SAAS;AAAA,EAAA;AAE3B;AAIA,SAAS,aAAaC,WAAsF;AAC1G,QAAM,QAAQA,WAAU;AACxB,MAAI,CAAC,MAAO,QAAO,CAAA;AAEnB,QAAM,UAAUA,UAAS,WAAW,KAAK,QAAQA,UAAS,IAAI;AAC9D,QAAMC,SAA0B,CAAA;AAEhC,aAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAG;AAClD,QAAI,CAAC,MAAM,QAAQ,OAAO,EAAG;AAE7B,eAAW,UAAU,SAAS;AAC5B,UAAI,IAAI,SAAS,GAAG,KAAK,OAAO,SAAS,GAAG,GAAG;AAC7C,cAAM,kBAAkB,OAAO,SAAS,GAAG,IAAI,SAAS;AACxD,cAAMC,QAAO,IAAI;AAAA,UACf,IAAI,YAAY,GAAG,EAAE,MAAM,KAAK,EAAE,KAAK,eAAe,CAAC;AAAA,QAAA;AAEzD,YAAI,aAAa;AACjB,cAAM,iBAAiB,OAAO,QAAQ,OAAO,MAAM,IAAI,EAAE,UAAU,EAAE;AACrE,cAAMC,eAAc,KAAK,QAAQ,SAAS,cAAc;AACxD,cAAM,YAAYA,aAAY,QAAQ,WAAW,EAAE;AACnD,YACE,UAAU,SAAS,GAAG,KAAK,GAAG,eAAe,KAAK,GAAG,EAAE,KACvD,CAAC,GAAG,WAAW,SAAS,GACxB;AACA;AAAA,QACF;AACAF,eAAM,KAAK,EAAE,MAAAC,OAAM,aAAAC,cAAa;AAChC;AAAA,MACF;AAEA,YAAM,OAAO,IAAI,QAAQ,OAAO,EAAE;AAClC,YAAM,cAAc,OAAO,QAAQ,OAAO,EAAE;AAC5C,YAAM,cAAc,KAAK,QAAQ,SAAS,WAAW;AACrD,UACE,YAAY,SAAS,GAAG,KAAK,GAAG,eAAe,KAAK,GAAG,EAAE,KACzD,CAAC,GAAG,WAAW,WAAW,GAC1B;AACA;AAAA,MACF;AACAF,aAAM,KAAK,EAAE,MAAM,aAAa;AAAA,IAClC;AAAA,EACF;AAEA,SAAOA;AACT;AAEA,MAAM,WAAW,aAAA;AACjB,MAAM,QAAQ,aAAa,QAAQ;AAEnC,MAAA,gBAAe,aAAa;AAAA,EAC1B,MAAM;AAAA,IACJ,SAAS,CAAC,iCAAiC;AAAA,EAAA;AAAA,EAE7C,SAAS,MAAM,SAAS,IAAI,EAAE,UAAU;AAC1C,CAAC;"}
package/package.json CHANGED
@@ -1,34 +1,45 @@
1
1
  {
2
2
  "name": "@rpcbase/test",
3
- "version": "0.308.0",
3
+ "version": "0.310.0",
4
4
  "type": "module",
5
5
  "files": [
6
- "src",
7
- "index.d.ts"
6
+ "dist"
8
7
  ],
9
- "types": "./index.d.ts",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
10
  "exports": {
11
11
  ".": {
12
- "types": "./index.d.ts",
13
- "import": "./src/index.js",
14
- "default": "./src/index.js"
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
15
  }
16
16
  },
17
17
  "bin": {
18
- "rb-test": "./src/cli.js"
18
+ "rb-test": "./dist/cli.js"
19
19
  },
20
- "main": "./src/index.js",
21
20
  "scripts": {
22
21
  "build": "wireit",
23
22
  "release": "wireit"
24
23
  },
25
24
  "wireit": {
26
25
  "build": {
27
- "command": "echo 'build ok' > build-output.txt",
28
- "output": [
29
- "build-output.txt"
26
+ "command": "../../node_modules/.bin/vite build",
27
+ "files": [
28
+ "package.json",
29
+ "src/**/*",
30
+ "../../tsconfig.json",
31
+ "../../scripts/tsconfig.pkg.json",
32
+ "./tsconfig.json",
33
+ "./vite.config.js",
34
+ "../../scripts/vite.config-pkg.js"
30
35
  ],
31
- "dependencies": []
36
+ "output": [
37
+ "dist/"
38
+ ]
39
+ },
40
+ "build-watch": {
41
+ "command": "../../node_modules/.bin/vite build --watch",
42
+ "service": true
32
43
  },
33
44
  "release": {
34
45
  "command": "../../scripts/publish.js",
@@ -38,7 +49,7 @@
38
49
  "files": [
39
50
  "../../scripts/publish.js",
40
51
  "package.json",
41
- "src/**/*"
52
+ "dist/**/*"
42
53
  ],
43
54
  "output": [
44
55
  "publish-output.txt"
package/index.d.ts DELETED
@@ -1,64 +0,0 @@
1
- export * from "playwright/test"
2
-
3
- interface CoverageThresholds {
4
- branches: number
5
- functions: number
6
- lines: number
7
- statements: number
8
- }
9
-
10
- type CoverageThresholdMap = {
11
- global?: Partial<CoverageThresholds>
12
- [pattern: string]: Partial<CoverageThresholds> | number | undefined
13
- }
14
-
15
- type CoverageThresholdOption = Partial<CoverageThresholds> | CoverageThresholdMap
16
-
17
- interface CoverageThresholdTarget {
18
- id: string
19
- pattern: string
20
- thresholds: CoverageThresholds
21
- }
22
-
23
- interface CoverageHarnessOptions {
24
- rootDir: string
25
- collectCoverageFrom: string[]
26
- testResultsDir?: string
27
- coverageReportSubdir?: string
28
- coverageFileName?: string
29
- includeAllFiles?: boolean
30
- envPrefix?: string
31
- thresholds?: CoverageThresholdOption
32
- disabledEnvVar?: string
33
- }
34
-
35
- interface CoverageConfig extends CoverageHarnessOptions {
36
- testResultsRoot: string
37
- coverageReportDir: string
38
- coverageFileName: string
39
- includeAllFiles: boolean
40
- thresholds: CoverageThresholds
41
- thresholdTargets: CoverageThresholdTarget[]
42
- coverageEnabled: boolean
43
- disabledEnvVar: string
44
- }
45
-
46
- interface CoverageHarness {
47
- config: CoverageConfig
48
- globalSetup(...args: any[]): Promise<void>
49
- extendTest<T>(baseTest: T): T
50
- reporterEntry(): [string, Record<string, unknown>?]
51
- }
52
-
53
- export function clearDatabase(dbName: string): Promise<void>
54
- export function createCoverageHarness(options: CoverageHarnessOptions): CoverageHarness
55
- export function createCoverageConfig(options: CoverageHarnessOptions): CoverageConfig
56
-
57
- export type {
58
- CoverageHarness,
59
- CoverageHarnessOptions,
60
- CoverageConfig,
61
- CoverageThresholds,
62
- CoverageThresholdOption,
63
- CoverageThresholdTarget,
64
- }
@@ -1,19 +0,0 @@
1
- import mongoose from "mongoose"
2
-
3
-
4
- export async function clearDatabase(dbName) {
5
- const { DB_PORT, APP_NAME } = process.env
6
-
7
- const connectionString = `mongodb://localhost:${DB_PORT}/${APP_NAME}-${dbName}`
8
-
9
- // console.log("will clear DB:", connectionString)
10
-
11
- const connection = await mongoose
12
- .createConnection(connectionString)
13
- .asPromise()
14
-
15
- // Drop the database
16
- await connection.dropDatabase()
17
-
18
- await connection.close()
19
- }