@rpcbase/test 0.356.0 → 0.358.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 (41) hide show
  1. package/dist/clearDatabase.js +12 -10
  2. package/dist/clearDatabase.js.map +1 -1
  3. package/dist/cli.js +556 -439
  4. package/dist/cli.js.map +1 -1
  5. package/dist/coverage/collect.js +101 -63
  6. package/dist/coverage/collect.js.map +1 -1
  7. package/dist/coverage/config-loader.js +230 -180
  8. package/dist/coverage/config-loader.js.map +1 -1
  9. package/dist/coverage/config.js +100 -76
  10. package/dist/coverage/config.js.map +1 -1
  11. package/dist/coverage/console-text-report.js +220 -175
  12. package/dist/coverage/console-text-report.js.map +1 -1
  13. package/dist/coverage/files.js +58 -45
  14. package/dist/coverage/files.js.map +1 -1
  15. package/dist/coverage/fixtures.js +38 -27
  16. package/dist/coverage/fixtures.js.map +1 -1
  17. package/dist/coverage/global-setup.js +18 -15
  18. package/dist/coverage/global-setup.js.map +1 -1
  19. package/dist/coverage/index.js +55 -38
  20. package/dist/coverage/index.js.map +1 -1
  21. package/dist/coverage/report.js +466 -341
  22. package/dist/coverage/report.js.map +1 -1
  23. package/dist/coverage/reporter.js +60 -47
  24. package/dist/coverage/reporter.js.map +1 -1
  25. package/dist/coverage/v8-tracker.js +147 -115
  26. package/dist/coverage/v8-tracker.js.map +1 -1
  27. package/dist/index.js +75 -46
  28. package/dist/index.js.map +1 -1
  29. package/dist/runners/playwright.js +563 -438
  30. package/dist/runners/playwright.js.map +1 -1
  31. package/dist/runners/process.d.ts.map +1 -1
  32. package/dist/runners/process.js +183 -125
  33. package/dist/runners/process.js.map +1 -1
  34. package/dist/runners/vitest.js +171 -124
  35. package/dist/runners/vitest.js.map +1 -1
  36. package/dist/serverCoverage.js +42 -28
  37. package/dist/serverCoverage.js.map +1 -1
  38. package/dist/vitest.config.d.ts +1 -1
  39. package/dist/vitest.config.js +74 -62
  40. package/dist/vitest.config.js.map +1 -1
  41. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","names":["fs","path","CoverageConfig","resolveCoverageRoots","config","buildDir","join","rootDir","roots","testResultsRoot","Array","from","Set","map","root","resolve","findCoverageFiles","Promise","undefined","isArray","files","walk","current","entries","readdir","withFileTypes","all","entry","entryPath","name","isDirectory","isFile","coverageFileName","push","stats","stat","sort","removeCoverageFiles","rm","force"],"sources":["../../src/coverage/files.ts"],"sourcesContent":["import fs from \"node:fs/promises\"\nimport path from \"node:path\"\n\nimport type { CoverageConfig } from \"./types\"\n\n\nfunction resolveCoverageRoots(config: CoverageConfig): string[] {\n const buildDir = path.join(config.rootDir, \"build\")\n const roots = [\n path.join(buildDir, \"playwright\", \"coverage\"),\n path.join(buildDir, \"vitest\", \"coverage\"),\n path.join(config.testResultsRoot, \"playwright\"),\n path.join(config.testResultsRoot, \"vitest\"),\n ]\n\n return Array.from(new Set(roots.map((root) => path.resolve(root))))\n}\n\nexport async function findCoverageFiles(\n config: CoverageConfig,\n root?: string | string[],\n): Promise<string[]> {\n const roots = root === undefined ? resolveCoverageRoots(config) : Array.isArray(root) ? root : [root]\n const files: string[] = []\n\n async function walk(current: string): Promise<void> {\n const entries = await fs.readdir(current, { withFileTypes: true })\n await Promise.all(\n entries.map(async (entry) => {\n const entryPath = path.join(current, entry.name)\n if (entry.isDirectory()) {\n await walk(entryPath)\n } else if (entry.isFile() && entry.name === config.coverageFileName) {\n files.push(entryPath)\n }\n }),\n )\n }\n\n for (const root of roots) {\n try {\n const stats = await fs.stat(root)\n if (!stats.isDirectory()) {\n continue\n }\n } catch {\n continue\n }\n\n await walk(root)\n }\n\n return files.sort()\n}\n\nexport async function removeCoverageFiles(\n config: CoverageConfig,\n root?: string | string[],\n): Promise<void> {\n const roots = root === undefined ? resolveCoverageRoots(config) : Array.isArray(root) ? root : [root]\n\n async function walk(current: string): Promise<void> {\n const entries = await fs.readdir(current, { withFileTypes: true })\n await Promise.all(\n entries.map(async (entry) => {\n const entryPath = path.join(current, entry.name)\n if (entry.isDirectory()) {\n await walk(entryPath)\n } else if (entry.isFile() && entry.name === config.coverageFileName) {\n await fs.rm(entryPath, { force: true })\n }\n }),\n )\n }\n\n for (const root of roots) {\n try {\n await walk(root)\n } catch {\n // ignore cleanup errors\n }\n }\n}\n"],"mappings":";;;AAMA,SAASG,qBAAqBC,QAAkC;CAC9D,MAAMC,WAAWJ,KAAKK,KAAKF,OAAOG,SAAS,QAAQ;CACnD,MAAMC,QAAQ;EACZP,KAAKK,KAAKD,UAAU,cAAc,WAAW;EAC7CJ,KAAKK,KAAKD,UAAU,UAAU,WAAW;EACzCJ,KAAKK,KAAKF,OAAOK,iBAAiB,aAAa;EAC/CR,KAAKK,KAAKF,OAAOK,iBAAiB,SAAS;EAC5C;AAED,QAAOC,MAAMC,KAAK,IAAIC,IAAIJ,MAAMK,KAAKC,SAASb,KAAKc,QAAQD,KAAK,CAAC,CAAC,CAAC;;AAGrE,eAAsBE,kBACpBZ,QACAU,MACmB;CACnB,MAAMN,QAAQM,SAASI,KAAAA,IAAYf,qBAAqBC,OAAO,GAAGM,MAAMS,QAAQL,KAAK,GAAGA,OAAO,CAACA,KAAK;CACrG,MAAMM,QAAkB,EAAE;CAE1B,eAAeC,KAAKC,SAAgC;EAClD,MAAMC,UAAU,MAAMvB,WAAGwB,QAAQF,SAAS,EAAEG,eAAe,MAAM,CAAC;AAClE,QAAMR,QAAQS,IACZH,QAAQV,IAAI,OAAOc,UAAU;GAC3B,MAAMC,YAAY3B,KAAKK,KAAKgB,SAASK,MAAME,KAAK;AAChD,OAAIF,MAAMG,aAAa,CACrB,OAAMT,KAAKO,UAAU;YACZD,MAAMI,QAAQ,IAAIJ,MAAME,SAASzB,OAAO4B,iBACjDZ,OAAMa,KAAKL,UAAU;IAG3B,CAAC;;AAGH,MAAK,MAAMd,QAAQN,OAAO;AACxB,MAAI;AAEF,OAAI,EADU,MAAMR,WAAGmC,KAAKrB,KAAK,EACtBgB,aAAa,CACtB;UAEI;AACN;;AAGF,QAAMT,KAAKP,KAAK;;AAGlB,QAAOM,MAAMgB,MAAM;;AAGrB,eAAsBC,oBACpBjC,QACAU,MACe;CACf,MAAMN,QAAQM,SAASI,KAAAA,IAAYf,qBAAqBC,OAAO,GAAGM,MAAMS,QAAQL,KAAK,GAAGA,OAAO,CAACA,KAAK;CAErG,eAAeO,KAAKC,SAAgC;EAClD,MAAMC,UAAU,MAAMvB,WAAGwB,QAAQF,SAAS,EAAEG,eAAe,MAAM,CAAC;AAClE,QAAMR,QAAQS,IACZH,QAAQV,IAAI,OAAOc,UAAU;GAC3B,MAAMC,YAAY3B,KAAKK,KAAKgB,SAASK,MAAME,KAAK;AAChD,OAAIF,MAAMG,aAAa,CACrB,OAAMT,KAAKO,UAAU;YACZD,MAAMI,QAAQ,IAAIJ,MAAME,SAASzB,OAAO4B,iBACjD,OAAMhC,WAAGsC,GAAGV,WAAW,EAAEW,OAAO,MAAM,CAAC;IAG7C,CAAC;;AAGH,MAAK,MAAMzB,QAAQN,MACjB,KAAI;AACF,QAAMa,KAAKP,KAAK;SACV"}
1
+ {"version":3,"file":"files.js","sources":["../../src/coverage/files.ts"],"sourcesContent":["import fs from \"node:fs/promises\"\nimport path from \"node:path\"\n\nimport type { CoverageConfig } from \"./types\"\n\n\nfunction resolveCoverageRoots(config: CoverageConfig): string[] {\n const buildDir = path.join(config.rootDir, \"build\")\n const roots = [\n path.join(buildDir, \"playwright\", \"coverage\"),\n path.join(buildDir, \"vitest\", \"coverage\"),\n path.join(config.testResultsRoot, \"playwright\"),\n path.join(config.testResultsRoot, \"vitest\"),\n ]\n\n return Array.from(new Set(roots.map((root) => path.resolve(root))))\n}\n\nexport async function findCoverageFiles(\n config: CoverageConfig,\n root?: string | string[],\n): Promise<string[]> {\n const roots = root === undefined ? resolveCoverageRoots(config) : Array.isArray(root) ? root : [root]\n const files: string[] = []\n\n async function walk(current: string): Promise<void> {\n const entries = await fs.readdir(current, { withFileTypes: true })\n await Promise.all(\n entries.map(async (entry) => {\n const entryPath = path.join(current, entry.name)\n if (entry.isDirectory()) {\n await walk(entryPath)\n } else if (entry.isFile() && entry.name === config.coverageFileName) {\n files.push(entryPath)\n }\n }),\n )\n }\n\n for (const root of roots) {\n try {\n const stats = await fs.stat(root)\n if (!stats.isDirectory()) {\n continue\n }\n } catch {\n continue\n }\n\n await walk(root)\n }\n\n return files.sort()\n}\n\nexport async function removeCoverageFiles(\n config: CoverageConfig,\n root?: string | string[],\n): Promise<void> {\n const roots = root === undefined ? resolveCoverageRoots(config) : Array.isArray(root) ? root : [root]\n\n async function walk(current: string): Promise<void> {\n const entries = await fs.readdir(current, { withFileTypes: true })\n await Promise.all(\n entries.map(async (entry) => {\n const entryPath = path.join(current, entry.name)\n if (entry.isDirectory()) {\n await walk(entryPath)\n } else if (entry.isFile() && entry.name === config.coverageFileName) {\n await fs.rm(entryPath, { force: true })\n }\n }),\n )\n }\n\n for (const root of roots) {\n try {\n await walk(root)\n } catch {\n // ignore cleanup errors\n }\n }\n}\n"],"names":["resolveCoverageRoots","config","buildDir","path","join","rootDir","roots","testResultsRoot","Array","from","Set","map","root","resolve","findCoverageFiles","undefined","isArray","files","walk","current","entries","fs","readdir","withFileTypes","Promise","all","entry","entryPath","name","isDirectory","isFile","coverageFileName","push","stats","stat","sort","removeCoverageFiles","rm","force"],"mappings":";;AAMA,SAASA,qBAAqBC,QAAkC;AAC9D,QAAMC,WAAWC,KAAKC,KAAKH,OAAOI,SAAS,OAAO;AAClD,QAAMC,QAAQ,CACZH,KAAKC,KAAKF,UAAU,cAAc,UAAU,GAC5CC,KAAKC,KAAKF,UAAU,UAAU,UAAU,GACxCC,KAAKC,KAAKH,OAAOM,iBAAiB,YAAY,GAC9CJ,KAAKC,KAAKH,OAAOM,iBAAiB,QAAQ,CAAC;AAG7C,SAAOC,MAAMC,KAAK,IAAIC,IAAIJ,MAAMK,IAAKC,CAAAA,SAAST,KAAKU,QAAQD,IAAI,CAAC,CAAC,CAAC;AACpE;AAEA,eAAsBE,kBACpBb,QACAW,MACmB;AACnB,QAAMN,QAAQM,SAASG,SAAYf,qBAAqBC,MAAM,IAAIO,MAAMQ,QAAQJ,IAAI,IAAIA,OAAO,CAACA,IAAI;AACpG,QAAMK,QAAkB,CAAA;AAExB,iBAAeC,KAAKC,SAAgC;AAClD,UAAMC,UAAU,MAAMC,GAAGC,QAAQH,SAAS;AAAA,MAAEI,eAAe;AAAA,IAAA,CAAM;AACjE,UAAMC,QAAQC,IACZL,QAAQT,IAAI,OAAOe,UAAU;AAC3B,YAAMC,YAAYxB,KAAKC,KAAKe,SAASO,MAAME,IAAI;AAC/C,UAAIF,MAAMG,eAAe;AACvB,cAAMX,KAAKS,SAAS;AAAA,MACtB,WAAWD,MAAMI,OAAAA,KAAYJ,MAAME,SAAS3B,OAAO8B,kBAAkB;AACnEd,cAAMe,KAAKL,SAAS;AAAA,MACtB;AAAA,IACF,CAAC,CACH;AAAA,EACF;AAEA,aAAWf,SAAQN,OAAO;AACxB,QAAI;AACF,YAAM2B,QAAQ,MAAMZ,GAAGa,KAAKtB,KAAI;AAChC,UAAI,CAACqB,MAAMJ,eAAe;AACxB;AAAA,MACF;AAAA,IACF,QAAQ;AACN;AAAA,IACF;AAEA,UAAMX,KAAKN,KAAI;AAAA,EACjB;AAEA,SAAOK,MAAMkB,KAAAA;AACf;AAEA,eAAsBC,oBACpBnC,QACAW,MACe;AACf,QAAMN,QAAQM,SAASG,SAAYf,qBAAqBC,MAAM,IAAIO,MAAMQ,QAAQJ,IAAI,IAAIA,OAAO,CAACA,IAAI;AAEpG,iBAAeM,KAAKC,SAAgC;AAClD,UAAMC,UAAU,MAAMC,GAAGC,QAAQH,SAAS;AAAA,MAAEI,eAAe;AAAA,IAAA,CAAM;AACjE,UAAMC,QAAQC,IACZL,QAAQT,IAAI,OAAOe,UAAU;AAC3B,YAAMC,YAAYxB,KAAKC,KAAKe,SAASO,MAAME,IAAI;AAC/C,UAAIF,MAAMG,eAAe;AACvB,cAAMX,KAAKS,SAAS;AAAA,MACtB,WAAWD,MAAMI,OAAAA,KAAYJ,MAAME,SAAS3B,OAAO8B,kBAAkB;AACnE,cAAMV,GAAGgB,GAAGV,WAAW;AAAA,UAAEW,OAAO;AAAA,QAAA,CAAM;AAAA,MACxC;AAAA,IACF,CAAC,CACH;AAAA,EACF;AAEA,aAAW1B,SAAQN,OAAO;AACxB,QAAI;AACF,YAAMY,KAAKN,KAAI;AAAA,IACjB,QAAQ;AAAA,IACN;AAAA,EAEJ;AACF;"}
@@ -1,36 +1,47 @@
1
1
  import { createCoverageTracker } from "./v8-tracker.js";
2
- //#region src/coverage/fixtures.ts
3
2
  function isChromiumPage(page) {
4
- return page.context().browser()?.browserType().name() === "chromium";
3
+ return page.context().browser()?.browserType().name() === "chromium";
5
4
  }
6
5
  function shouldSilenceCoverageInitError(error) {
7
- const message = error instanceof Error ? error.message : String(error);
8
- return message.includes("Script execution is prohibited") || message.includes("CDP session is only available in Chromium");
6
+ const message = error instanceof Error ? error.message : String(error);
7
+ return message.includes("Script execution is prohibited") || message.includes("CDP session is only available in Chromium");
9
8
  }
10
9
  function noopTracker() {
11
- return { async stop() {} };
10
+ return {
11
+ async stop() {
12
+ }
13
+ };
12
14
  }
13
15
  function createCoverageFixtures(baseTest, config) {
14
- return baseTest.extend({ page: async ({ page }, use, testInfo) => {
15
- let tracker = noopTracker();
16
- if (config.coverageEnabled && isChromiumPage(page)) try {
17
- tracker = await createCoverageTracker(page, config);
18
- } catch (error) {
19
- if (shouldSilenceCoverageInitError(error)) tracker = noopTracker();
20
- else console.warn("[coverage] failed to initialize V8 coverage:", error);
21
- }
22
- try {
23
- await use(page);
24
- } finally {
25
- try {
26
- await tracker.stop(testInfo);
27
- } catch (error) {
28
- console.warn("[coverage] failed to record V8 coverage:", error);
29
- }
30
- }
31
- } });
16
+ return baseTest.extend({
17
+ page: async ({
18
+ page
19
+ }, use, testInfo) => {
20
+ let tracker = noopTracker();
21
+ if (config.coverageEnabled && isChromiumPage(page)) {
22
+ try {
23
+ tracker = await createCoverageTracker(page, config);
24
+ } catch (error) {
25
+ if (shouldSilenceCoverageInitError(error)) {
26
+ tracker = noopTracker();
27
+ } else {
28
+ console.warn("[coverage] failed to initialize V8 coverage:", error);
29
+ }
30
+ }
31
+ }
32
+ try {
33
+ await use(page);
34
+ } finally {
35
+ try {
36
+ await tracker.stop(testInfo);
37
+ } catch (error) {
38
+ console.warn("[coverage] failed to record V8 coverage:", error);
39
+ }
40
+ }
41
+ }
42
+ });
32
43
  }
33
- //#endregion
34
- export { createCoverageFixtures };
35
-
36
- //# sourceMappingURL=fixtures.js.map
44
+ export {
45
+ createCoverageFixtures
46
+ };
47
+ //# sourceMappingURL=fixtures.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","names":["Page","TestInfo","createCoverageTracker","CoverageConfig","CoverageTracker","stop","testInfo","Promise","isChromiumPage","page","context","browser","browserType","name","shouldSilenceCoverageInitError","error","message","Error","String","includes","noopTracker","createCoverageFixtures","extend","fixtures","baseTest","T","config","use","tracker","coverageEnabled","console","warn"],"sources":["../../src/coverage/fixtures.ts"],"sourcesContent":["import type { Page, TestInfo } from \"@playwright/test\"\n\nimport { createCoverageTracker } from \"./v8-tracker\"\nimport type { CoverageConfig } from \"./types\"\n\n\ntype CoverageTracker = {\n stop: (testInfo: TestInfo) => Promise<void>\n}\n\nfunction isChromiumPage(page: Page): boolean {\n return page.context().browser()?.browserType().name() === \"chromium\"\n}\n\nfunction shouldSilenceCoverageInitError(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error)\n return message.includes(\"Script execution is prohibited\")\n || message.includes(\"CDP session is only available in Chromium\")\n}\n\nfunction noopTracker(): CoverageTracker {\n return {\n async stop() {\n // no-op\n },\n }\n}\n\nexport function createCoverageFixtures<T extends { extend: (fixtures: any) => unknown }>(\n baseTest: T,\n config: CoverageConfig,\n): T {\n return baseTest.extend({\n page: async (\n { page }: { page: Page },\n use: (page: Page) => Promise<void>,\n testInfo: TestInfo,\n ) => {\n let tracker: CoverageTracker = noopTracker()\n\n if (config.coverageEnabled && isChromiumPage(page)) {\n try {\n tracker = await createCoverageTracker(page, config)\n } catch (error) {\n if (shouldSilenceCoverageInitError(error)) {\n tracker = noopTracker()\n } else {\n console.warn(\"[coverage] failed to initialize V8 coverage:\", error)\n }\n }\n }\n\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n await use(page)\n } finally {\n try {\n await tracker.stop(testInfo)\n } catch (error) {\n console.warn(\"[coverage] failed to record V8 coverage:\", error)\n }\n }\n },\n }) as T\n}\n"],"mappings":";;AAUA,SAASQ,eAAeC,MAAqB;AAC3C,QAAOA,KAAKC,SAAS,CAACC,SAAS,EAAEC,aAAa,CAACC,MAAM,KAAK;;AAG5D,SAASC,+BAA+BC,OAAyB;CAC/D,MAAMC,UAAUD,iBAAiBE,QAAQF,MAAMC,UAAUE,OAAOH,MAAM;AACtE,QAAOC,QAAQG,SAAS,iCAAiC,IACpDH,QAAQG,SAAS,4CAA4C;;AAGpE,SAASC,cAA+B;AACtC,QAAO,EACL,MAAMf,OAAO,IAGd;;AAGH,SAAgBgB,uBACdG,UACAE,QACG;AACH,QAAOF,SAASF,OAAO,EACrBb,MAAM,OACJ,EAAEA,QACFkB,KACArB,aACG;EACH,IAAIsB,UAA2BR,aAAa;AAE5C,MAAIM,OAAOG,mBAAmBrB,eAAeC,KAAK,CAChD,KAAI;AACFmB,aAAU,MAAM1B,sBAAsBO,MAAMiB,OAAO;WAC5CX,OAAO;AACd,OAAID,+BAA+BC,MAAM,CACvCa,WAAUR,aAAa;OAEvBU,SAAQC,KAAK,gDAAgDhB,MAAM;;AAKzE,MAAI;AAEF,SAAMY,IAAIlB,KAAK;YACP;AACR,OAAI;AACF,UAAMmB,QAAQvB,KAAKC,SAAS;YACrBS,OAAO;AACde,YAAQC,KAAK,4CAA4ChB,MAAM;;;IAItE,CAAC"}
1
+ {"version":3,"file":"fixtures.js","sources":["../../src/coverage/fixtures.ts"],"sourcesContent":["import type { Page, TestInfo } from \"@playwright/test\"\n\nimport { createCoverageTracker } from \"./v8-tracker\"\nimport type { CoverageConfig } from \"./types\"\n\n\ntype CoverageTracker = {\n stop: (testInfo: TestInfo) => Promise<void>\n}\n\nfunction isChromiumPage(page: Page): boolean {\n return page.context().browser()?.browserType().name() === \"chromium\"\n}\n\nfunction shouldSilenceCoverageInitError(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error)\n return message.includes(\"Script execution is prohibited\")\n || message.includes(\"CDP session is only available in Chromium\")\n}\n\nfunction noopTracker(): CoverageTracker {\n return {\n async stop() {\n // no-op\n },\n }\n}\n\nexport function createCoverageFixtures<T extends { extend: (fixtures: any) => unknown }>(\n baseTest: T,\n config: CoverageConfig,\n): T {\n return baseTest.extend({\n page: async (\n { page }: { page: Page },\n use: (page: Page) => Promise<void>,\n testInfo: TestInfo,\n ) => {\n let tracker: CoverageTracker = noopTracker()\n\n if (config.coverageEnabled && isChromiumPage(page)) {\n try {\n tracker = await createCoverageTracker(page, config)\n } catch (error) {\n if (shouldSilenceCoverageInitError(error)) {\n tracker = noopTracker()\n } else {\n console.warn(\"[coverage] failed to initialize V8 coverage:\", error)\n }\n }\n }\n\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n await use(page)\n } finally {\n try {\n await tracker.stop(testInfo)\n } catch (error) {\n console.warn(\"[coverage] failed to record V8 coverage:\", error)\n }\n }\n },\n }) as T\n}\n"],"names":["isChromiumPage","page","context","browser","browserType","name","shouldSilenceCoverageInitError","error","message","Error","String","includes","noopTracker","stop","createCoverageFixtures","baseTest","config","extend","use","testInfo","tracker","coverageEnabled","createCoverageTracker","console","warn"],"mappings":";AAUA,SAASA,eAAeC,MAAqB;AAC3C,SAAOA,KAAKC,UAAUC,QAAAA,GAAWC,YAAAA,EAAcC,WAAW;AAC5D;AAEA,SAASC,+BAA+BC,OAAyB;AAC/D,QAAMC,UAAUD,iBAAiBE,QAAQF,MAAMC,UAAUE,OAAOH,KAAK;AACrE,SAAOC,QAAQG,SAAS,gCAAgC,KACnDH,QAAQG,SAAS,2CAA2C;AACnE;AAEA,SAASC,cAA+B;AACtC,SAAO;AAAA,IACL,MAAMC,OAAO;AAAA,IACX;AAAA,EAAA;AAGN;AAEO,SAASC,uBACdC,UACAC,QACG;AACH,SAAOD,SAASE,OAAO;AAAA,IACrBhB,MAAM,OACJ;AAAA,MAAEA;AAAAA,IAAAA,GACFiB,KACAC,aACG;AACH,UAAIC,UAA2BR,YAAAA;AAE/B,UAAII,OAAOK,mBAAmBrB,eAAeC,IAAI,GAAG;AAClD,YAAI;AACFmB,oBAAU,MAAME,sBAAsBrB,MAAMe,MAAM;AAAA,QACpD,SAAST,OAAO;AACd,cAAID,+BAA+BC,KAAK,GAAG;AACzCa,sBAAUR,YAAAA;AAAAA,UACZ,OAAO;AACLW,oBAAQC,KAAK,gDAAgDjB,KAAK;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAEA,UAAI;AAEF,cAAMW,IAAIjB,IAAI;AAAA,MAChB,UAAA;AACE,YAAI;AACF,gBAAMmB,QAAQP,KAAKM,QAAQ;AAAA,QAC7B,SAASZ,OAAO;AACdgB,kBAAQC,KAAK,4CAA4CjB,KAAK;AAAA,QAChE;AAAA,MACF;AAAA,IACF;AAAA,EAAA,CACD;AACH;"}
@@ -1,18 +1,21 @@
1
+ import fs from "node:fs/promises";
1
2
  import { removeCoverageFiles } from "./files.js";
2
- import fsPromises from "node:fs/promises";
3
- //#region src/coverage/global-setup.ts
4
3
  function createCoverageGlobalSetup(config) {
5
- return async function globalSetup() {
6
- if (process.env.RB_TEST_COMBINED_COVERAGE === "1") return;
7
- if (!config.coverageEnabled) return;
8
- await removeCoverageFiles(config);
9
- await fsPromises.rm(config.coverageReportDir, {
10
- recursive: true,
11
- force: true
12
- });
13
- };
4
+ return async function globalSetup() {
5
+ if (process.env.RB_TEST_COMBINED_COVERAGE === "1") {
6
+ return;
7
+ }
8
+ if (!config.coverageEnabled) {
9
+ return;
10
+ }
11
+ await removeCoverageFiles(config);
12
+ await fs.rm(config.coverageReportDir, {
13
+ recursive: true,
14
+ force: true
15
+ });
16
+ };
14
17
  }
15
- //#endregion
16
- export { createCoverageGlobalSetup };
17
-
18
- //# sourceMappingURL=global-setup.js.map
18
+ export {
19
+ createCoverageGlobalSetup
20
+ };
21
+ //# sourceMappingURL=global-setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-setup.js","names":["fs","removeCoverageFiles","CoverageConfig","createCoverageGlobalSetup","config","Promise","globalSetup","process","env","RB_TEST_COMBINED_COVERAGE","coverageEnabled","rm","coverageReportDir","recursive","force"],"sources":["../../src/coverage/global-setup.ts"],"sourcesContent":["import fs from \"node:fs/promises\"\n\nimport { removeCoverageFiles } from \"./files\"\nimport type { CoverageConfig } from \"./types\"\n\n\nexport function createCoverageGlobalSetup(config: CoverageConfig): () => Promise<void> {\n return async function globalSetup() {\n if (process.env.RB_TEST_COMBINED_COVERAGE === \"1\") {\n return\n }\n\n if (!config.coverageEnabled) {\n return\n }\n\n await removeCoverageFiles(config)\n await fs.rm(config.coverageReportDir, { recursive: true, force: true })\n }\n}\n"],"mappings":";;;AAMA,SAAgBG,0BAA0BC,QAA6C;AACrF,QAAO,eAAeE,cAAc;AAClC,MAAIC,QAAQC,IAAIC,8BAA8B,IAC5C;AAGF,MAAI,CAACL,OAAOM,gBACV;AAGF,QAAMT,oBAAoBG,OAAO;AACjC,QAAMJ,WAAGW,GAAGP,OAAOQ,mBAAmB;GAAEC,WAAW;GAAMC,OAAO;GAAM,CAAC"}
1
+ {"version":3,"file":"global-setup.js","sources":["../../src/coverage/global-setup.ts"],"sourcesContent":["import fs from \"node:fs/promises\"\n\nimport { removeCoverageFiles } from \"./files\"\nimport type { CoverageConfig } from \"./types\"\n\n\nexport function createCoverageGlobalSetup(config: CoverageConfig): () => Promise<void> {\n return async function globalSetup() {\n if (process.env.RB_TEST_COMBINED_COVERAGE === \"1\") {\n return\n }\n\n if (!config.coverageEnabled) {\n return\n }\n\n await removeCoverageFiles(config)\n await fs.rm(config.coverageReportDir, { recursive: true, force: true })\n }\n}\n"],"names":["createCoverageGlobalSetup","config","globalSetup","process","env","RB_TEST_COMBINED_COVERAGE","coverageEnabled","removeCoverageFiles","fs","rm","coverageReportDir","recursive","force"],"mappings":";;AAMO,SAASA,0BAA0BC,QAA6C;AACrF,SAAO,eAAeC,cAAc;AAClC,QAAIC,QAAQC,IAAIC,8BAA8B,KAAK;AACjD;AAAA,IACF;AAEA,QAAI,CAACJ,OAAOK,iBAAiB;AAC3B;AAAA,IACF;AAEA,UAAMC,oBAAoBN,MAAM;AAChC,UAAMO,GAAGC,GAAGR,OAAOS,mBAAmB;AAAA,MAAEC,WAAW;AAAA,MAAMC,OAAO;AAAA,IAAA,CAAM;AAAA,EACxE;AACF;"}
@@ -1,47 +1,64 @@
1
- import { createCoverageConfig } from "./config.js";
2
- import "./files.js";
3
- import { createCoverageGlobalSetup } from "./global-setup.js";
4
- import { createCoverageFixtures } from "./fixtures.js";
5
- import "./report.js";
6
- import "./reporter.js";
7
1
  import fs from "node:fs";
8
2
  import path from "node:path";
9
3
  import { createRequire } from "node:module";
10
- //#region src/coverage/index.ts
4
+ import { createCoverageConfig } from "./config.js";
5
+ import { createCoverageGlobalSetup } from "./global-setup.js";
6
+ import { createCoverageFixtures } from "./fixtures.js";
7
+ import "node:fs/promises";
8
+ import "node:url";
9
+ import "istanbul-lib-coverage";
10
+ import "istanbul-lib-instrument";
11
+ import "fast-glob";
12
+ import "picomatch";
13
+ import "v8-to-istanbul";
11
14
  function createCoverageHarness(options) {
12
- const config = createCoverageConfig(options);
13
- const globalSetup = createCoverageGlobalSetup(config);
14
- const reporterPath = resolveReporterPath();
15
- return {
16
- config,
17
- globalSetup,
18
- extendTest(baseTest) {
19
- return createCoverageFixtures(baseTest, config);
20
- },
21
- reporterEntry() {
22
- return [reporterPath, { coverageConfig: config }];
23
- }
24
- };
15
+ const config = createCoverageConfig(options);
16
+ const globalSetup = createCoverageGlobalSetup(config);
17
+ const reporterPath = resolveReporterPath();
18
+ return {
19
+ config,
20
+ globalSetup,
21
+ extendTest(baseTest) {
22
+ return createCoverageFixtures(baseTest, config);
23
+ },
24
+ reporterEntry() {
25
+ return [reporterPath, {
26
+ coverageConfig: config
27
+ }];
28
+ }
29
+ };
25
30
  }
26
31
  function resolveReporterPath() {
27
- const entryPath = createRequire(path.join(process.cwd(), "package.json")).resolve("@rpcbase/test");
28
- const pkgDir = findPackageRoot(entryPath) ?? path.resolve(path.dirname(entryPath), "..", "..");
29
- const distReporter = path.join(pkgDir, "dist", "coverage", "reporter.js");
30
- if (fs.existsSync(distReporter)) return distReporter;
31
- const srcReporter = path.join(pkgDir, "src", "coverage", "reporter.ts");
32
- if (fs.existsSync(srcReporter)) return srcReporter;
33
- return distReporter;
32
+ const require2 = createRequire(path.join(process.cwd(), "package.json"));
33
+ const entryPath = require2.resolve("@rpcbase/test");
34
+ const pkgDir = findPackageRoot(entryPath) ?? path.resolve(path.dirname(entryPath), "..", "..");
35
+ const distReporter = path.join(pkgDir, "dist", "coverage", "reporter.js");
36
+ if (fs.existsSync(distReporter)) {
37
+ return distReporter;
38
+ }
39
+ const srcReporter = path.join(pkgDir, "src", "coverage", "reporter.ts");
40
+ if (fs.existsSync(srcReporter)) {
41
+ return srcReporter;
42
+ }
43
+ return distReporter;
34
44
  }
35
45
  function findPackageRoot(entryPath) {
36
- let dir = path.dirname(entryPath);
37
- while (true) {
38
- if (fs.existsSync(path.join(dir, "package.json"))) return dir;
39
- const parent = path.dirname(dir);
40
- if (parent === dir) return null;
41
- dir = parent;
42
- }
46
+ let dir = path.dirname(entryPath);
47
+ while (true) {
48
+ if (fs.existsSync(path.join(dir, "package.json"))) {
49
+ return dir;
50
+ }
51
+ const parent = path.dirname(dir);
52
+ if (parent === dir) {
53
+ return null;
54
+ }
55
+ dir = parent;
56
+ }
43
57
  }
44
- //#endregion
45
- export { createCoverageHarness };
46
-
47
- //# sourceMappingURL=index.js.map
58
+ export {
59
+ createCoverageConfig,
60
+ createCoverageFixtures,
61
+ createCoverageGlobalSetup,
62
+ createCoverageHarness
63
+ };
64
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["fs","path","createRequire","createCoverageConfig","createCoverageGlobalSetup","createCoverageFixtures","CoverageHarness","CoverageHarnessOptions","createCoverageHarness","options","config","globalSetup","reporterPath","resolveReporterPath","extendTest","extend","fixtures","baseTest","T","reporterEntry","coverageConfig","require","join","process","cwd","entryPath","resolve","pkgDir","findPackageRoot","dirname","distReporter","existsSync","srcReporter","dir","parent","CoverageReporter","generateCoverageReport","findCoverageFiles","removeCoverageFiles"],"sources":["../../src/coverage/index.ts"],"sourcesContent":["import fs from \"node:fs\"\nimport path from \"node:path\"\nimport { createRequire } from \"node:module\"\n\nimport { createCoverageConfig } from \"./config\"\nimport { createCoverageGlobalSetup } from \"./global-setup\"\nimport { createCoverageFixtures } from \"./fixtures\"\nimport type { CoverageHarness, CoverageHarnessOptions } from \"./types\"\n\n\nexport function createCoverageHarness(options: CoverageHarnessOptions): CoverageHarness {\n const config = createCoverageConfig(options)\n const globalSetup = createCoverageGlobalSetup(config)\n\n const reporterPath = resolveReporterPath()\n\n return {\n config,\n globalSetup,\n extendTest<T extends { extend: (fixtures: any) => unknown }>(baseTest: T): T {\n return createCoverageFixtures(baseTest, config)\n },\n reporterEntry() {\n return [reporterPath, { coverageConfig: config }]\n },\n }\n}\n\nfunction resolveReporterPath(): string {\n const require = createRequire(path.join(process.cwd(), \"package.json\"))\n const entryPath = require.resolve(\"@rpcbase/test\")\n const pkgDir = findPackageRoot(entryPath) ?? path.resolve(path.dirname(entryPath), \"..\", \"..\")\n\n const distReporter = path.join(pkgDir, \"dist\", \"coverage\", \"reporter.js\")\n if (fs.existsSync(distReporter)) {\n return distReporter\n }\n\n const srcReporter = path.join(pkgDir, \"src\", \"coverage\", \"reporter.ts\")\n if (fs.existsSync(srcReporter)) {\n return srcReporter\n }\n\n return distReporter\n}\n\nfunction findPackageRoot(entryPath: string): string | null {\n let dir = path.dirname(entryPath)\n while (true) {\n if (fs.existsSync(path.join(dir, \"package.json\"))) {\n return dir\n }\n const parent = path.dirname(dir)\n if (parent === dir) {\n return null\n }\n dir = parent\n }\n}\n\nexport { CoverageReporter } from \"./reporter\"\nexport { createCoverageConfig } from \"./config\"\nexport { generateCoverageReport } from \"./report\"\nexport { createCoverageFixtures } from \"./fixtures\"\nexport { createCoverageGlobalSetup } from \"./global-setup\"\nexport { findCoverageFiles, removeCoverageFiles } from \"./files\"\nexport type * from \"./types\"\n"],"mappings":";;;;;;;;;;AAUA,SAAgBQ,sBAAsBC,SAAkD;CACtF,MAAMC,SAASP,qBAAqBM,QAAQ;CAC5C,MAAME,cAAcP,0BAA0BM,OAAO;CAErD,MAAME,eAAeC,qBAAqB;AAE1C,QAAO;EACLH;EACAC;EACAG,WAA6DG,UAAgB;AAC3E,UAAOZ,uBAAuBY,UAAUP,OAAO;;EAEjDS,gBAAgB;AACd,UAAO,CAACP,cAAc,EAAEQ,gBAAgBV,QAAQ,CAAC;;EAEpD;;AAGH,SAASG,sBAA8B;CAErC,MAAMY,YADUvB,cAAcD,KAAKqB,KAAKC,QAAQC,KAAK,EAAE,eAAe,CAAC,CAC7CE,QAAQ,gBAAgB;CAClD,MAAMC,SAASC,gBAAgBH,UAAU,IAAIxB,KAAKyB,QAAQzB,KAAK4B,QAAQJ,UAAU,EAAE,MAAM,KAAK;CAE9F,MAAMK,eAAe7B,KAAKqB,KAAKK,QAAQ,QAAQ,YAAY,cAAc;AACzE,KAAI3B,GAAG+B,WAAWD,aAAa,CAC7B,QAAOA;CAGT,MAAME,cAAc/B,KAAKqB,KAAKK,QAAQ,OAAO,YAAY,cAAc;AACvE,KAAI3B,GAAG+B,WAAWC,YAAY,CAC5B,QAAOA;AAGT,QAAOF;;AAGT,SAASF,gBAAgBH,WAAkC;CACzD,IAAIQ,MAAMhC,KAAK4B,QAAQJ,UAAU;AACjC,QAAO,MAAM;AACX,MAAIzB,GAAG+B,WAAW9B,KAAKqB,KAAKW,KAAK,eAAe,CAAC,CAC/C,QAAOA;EAET,MAAMC,SAASjC,KAAK4B,QAAQI,IAAI;AAChC,MAAIC,WAAWD,IACb,QAAO;AAETA,QAAMC"}
1
+ {"version":3,"file":"index.js","sources":["../../src/coverage/index.ts"],"sourcesContent":["import fs from \"node:fs\"\nimport path from \"node:path\"\nimport { createRequire } from \"node:module\"\n\nimport { createCoverageConfig } from \"./config\"\nimport { createCoverageGlobalSetup } from \"./global-setup\"\nimport { createCoverageFixtures } from \"./fixtures\"\nimport type { CoverageHarness, CoverageHarnessOptions } from \"./types\"\n\n\nexport function createCoverageHarness(options: CoverageHarnessOptions): CoverageHarness {\n const config = createCoverageConfig(options)\n const globalSetup = createCoverageGlobalSetup(config)\n\n const reporterPath = resolveReporterPath()\n\n return {\n config,\n globalSetup,\n extendTest<T extends { extend: (fixtures: any) => unknown }>(baseTest: T): T {\n return createCoverageFixtures(baseTest, config)\n },\n reporterEntry() {\n return [reporterPath, { coverageConfig: config }]\n },\n }\n}\n\nfunction resolveReporterPath(): string {\n const require = createRequire(path.join(process.cwd(), \"package.json\"))\n const entryPath = require.resolve(\"@rpcbase/test\")\n const pkgDir = findPackageRoot(entryPath) ?? path.resolve(path.dirname(entryPath), \"..\", \"..\")\n\n const distReporter = path.join(pkgDir, \"dist\", \"coverage\", \"reporter.js\")\n if (fs.existsSync(distReporter)) {\n return distReporter\n }\n\n const srcReporter = path.join(pkgDir, \"src\", \"coverage\", \"reporter.ts\")\n if (fs.existsSync(srcReporter)) {\n return srcReporter\n }\n\n return distReporter\n}\n\nfunction findPackageRoot(entryPath: string): string | null {\n let dir = path.dirname(entryPath)\n while (true) {\n if (fs.existsSync(path.join(dir, \"package.json\"))) {\n return dir\n }\n const parent = path.dirname(dir)\n if (parent === dir) {\n return null\n }\n dir = parent\n }\n}\n\nexport { CoverageReporter } from \"./reporter\"\nexport { createCoverageConfig } from \"./config\"\nexport { generateCoverageReport } from \"./report\"\nexport { createCoverageFixtures } from \"./fixtures\"\nexport { createCoverageGlobalSetup } from \"./global-setup\"\nexport { findCoverageFiles, removeCoverageFiles } from \"./files\"\nexport type * from \"./types\"\n"],"names":["createCoverageHarness","options","config","createCoverageConfig","globalSetup","createCoverageGlobalSetup","reporterPath","resolveReporterPath","extendTest","baseTest","createCoverageFixtures","reporterEntry","coverageConfig","require","createRequire","path","join","process","cwd","entryPath","resolve","pkgDir","findPackageRoot","dirname","distReporter","fs","existsSync","srcReporter","dir","parent"],"mappings":";;;;;;;;;;;;;AAUO,SAASA,sBAAsBC,SAAkD;AACtF,QAAMC,SAASC,qBAAqBF,OAAO;AAC3C,QAAMG,cAAcC,0BAA0BH,MAAM;AAEpD,QAAMI,eAAeC,oBAAAA;AAErB,SAAO;AAAA,IACLL;AAAAA,IACAE;AAAAA,IACAI,WAA6DC,UAAgB;AAC3E,aAAOC,uBAAuBD,UAAUP,MAAM;AAAA,IAChD;AAAA,IACAS,gBAAgB;AACd,aAAO,CAACL,cAAc;AAAA,QAAEM,gBAAgBV;AAAAA,MAAAA,CAAQ;AAAA,IAClD;AAAA,EAAA;AAEJ;AAEA,SAASK,sBAA8B;AACrC,QAAMM,WAAUC,cAAcC,KAAKC,KAAKC,QAAQC,IAAAA,GAAO,cAAc,CAAC;AACtE,QAAMC,YAAYN,SAAQO,QAAQ,eAAe;AACjD,QAAMC,SAASC,gBAAgBH,SAAS,KAAKJ,KAAKK,QAAQL,KAAKQ,QAAQJ,SAAS,GAAG,MAAM,IAAI;AAE7F,QAAMK,eAAeT,KAAKC,KAAKK,QAAQ,QAAQ,YAAY,aAAa;AACxE,MAAII,GAAGC,WAAWF,YAAY,GAAG;AAC/B,WAAOA;AAAAA,EACT;AAEA,QAAMG,cAAcZ,KAAKC,KAAKK,QAAQ,OAAO,YAAY,aAAa;AACtE,MAAII,GAAGC,WAAWC,WAAW,GAAG;AAC9B,WAAOA;AAAAA,EACT;AAEA,SAAOH;AACT;AAEA,SAASF,gBAAgBH,WAAkC;AACzD,MAAIS,MAAMb,KAAKQ,QAAQJ,SAAS;AAChC,SAAO,MAAM;AACX,QAAIM,GAAGC,WAAWX,KAAKC,KAAKY,KAAK,cAAc,CAAC,GAAG;AACjD,aAAOA;AAAAA,IACT;AACA,UAAMC,SAASd,KAAKQ,QAAQK,GAAG;AAC/B,QAAIC,WAAWD,KAAK;AAClB,aAAO;AAAA,IACT;AACAA,UAAMC;AAAAA,EACR;AACF;"}