@mnaoumov/typescript-dev-toolkit 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/biome.json +49 -0
- package/assets/prettier.json +13 -0
- package/dist/lib/cjs/docs-site/docs-links.cjs +6 -3
- package/dist/lib/cjs/docs-site/docs-site-commands.cjs +24 -5
- package/dist/lib/cjs/docs-site/docs-site-commands.d.cts +8 -3
- package/dist/lib/cjs/docs-site/docs-site-config.cjs +4 -1
- package/dist/lib/cjs/docs-site/docs-site-config.d.cts +17 -0
- package/dist/lib/cjs/docs-site/index.cjs +4 -1
- package/dist/lib/cjs/docs-site/index.d.cts +1 -0
- package/dist/lib/cjs/docs-site/link-check.cjs +88 -11
- package/dist/lib/cjs/docs-site/link-check.d.cts +91 -2
- package/dist/lib/cjs/docs-site/repo-homepage.cjs +108 -0
- package/dist/lib/cjs/docs-site/repo-homepage.d.cts +50 -0
- package/dist/lib/cjs/formatters/auto.cjs +59 -0
- package/dist/lib/cjs/formatters/auto.d.cts +51 -0
- package/dist/lib/cjs/formatters/biome.cjs +121 -0
- package/dist/lib/cjs/formatters/biome.d.cts +69 -0
- package/dist/lib/cjs/formatters/index.cjs +12 -3
- package/dist/lib/cjs/formatters/index.d.cts +3 -0
- package/dist/lib/cjs/formatters/prettier.cjs +93 -0
- package/dist/lib/cjs/formatters/prettier.d.cts +56 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/linters/auto.cjs +52 -0
- package/dist/lib/cjs/linters/auto.d.cts +49 -0
- package/dist/lib/cjs/linters/biome.cjs +50 -0
- package/dist/lib/cjs/linters/biome.d.cts +36 -0
- package/dist/lib/cjs/linters/eslint-config.cjs +1 -1
- package/dist/lib/cjs/linters/eslint.cjs +15 -14
- package/dist/lib/cjs/linters/eslint.d.cts +6 -0
- package/dist/lib/cjs/linters/index.cjs +7 -1
- package/dist/lib/cjs/linters/index.d.cts +2 -0
- package/dist/lib/cjs/repo-paths.cjs +3 -1
- package/dist/lib/cjs/repo-paths.d.cts +8 -0
- package/dist/lib/cjs/shared-config-files.cjs +68 -0
- package/dist/lib/cjs/shared-config-files.d.cts +29 -0
- package/dist/lib/cjs/test-runners/auto.cjs +83 -0
- package/dist/lib/cjs/test-runners/auto.d.cts +82 -0
- package/dist/lib/cjs/test-runners/index.cjs +10 -1
- package/dist/lib/cjs/test-runners/index.d.cts +3 -0
- package/dist/lib/cjs/test-runners/jest-config.cjs +86 -0
- package/dist/lib/cjs/test-runners/jest-config.d.cts +71 -0
- package/dist/lib/cjs/test-runners/jest.cjs +111 -0
- package/dist/lib/cjs/test-runners/jest.d.cts +77 -0
- package/dist/lib/esm/docs-site/docs-links.mjs +7 -3
- package/dist/lib/esm/docs-site/docs-site-commands.d.mts +8 -3
- package/dist/lib/esm/docs-site/docs-site-commands.mjs +14 -5
- package/dist/lib/esm/docs-site/docs-site-config.d.mts +17 -0
- package/dist/lib/esm/docs-site/docs-site-config.mjs +4 -1
- package/dist/lib/esm/docs-site/index.d.mts +1 -0
- package/dist/lib/esm/docs-site/index.mjs +3 -1
- package/dist/lib/esm/docs-site/link-check.d.mts +91 -2
- package/dist/lib/esm/docs-site/link-check.mjs +83 -11
- package/dist/lib/esm/docs-site/repo-homepage.d.mts +50 -0
- package/dist/lib/esm/docs-site/repo-homepage.mjs +84 -0
- package/dist/lib/esm/formatters/auto.d.mts +51 -0
- package/dist/lib/esm/formatters/auto.mjs +40 -0
- package/dist/lib/esm/formatters/biome.d.mts +69 -0
- package/dist/lib/esm/formatters/biome.mjs +107 -0
- package/dist/lib/esm/formatters/index.d.mts +3 -0
- package/dist/lib/esm/formatters/index.mjs +8 -2
- package/dist/lib/esm/formatters/prettier.d.mts +56 -0
- package/dist/lib/esm/formatters/prettier.mjs +75 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/linters/auto.d.mts +49 -0
- package/dist/lib/esm/linters/auto.mjs +30 -0
- package/dist/lib/esm/linters/biome.d.mts +36 -0
- package/dist/lib/esm/linters/biome.mjs +29 -0
- package/dist/lib/esm/linters/eslint-config.mjs +1 -1
- package/dist/lib/esm/linters/eslint.d.mts +6 -0
- package/dist/lib/esm/linters/eslint.mjs +14 -14
- package/dist/lib/esm/linters/index.d.mts +2 -0
- package/dist/lib/esm/linters/index.mjs +5 -1
- package/dist/lib/esm/repo-paths.d.mts +8 -0
- package/dist/lib/esm/repo-paths.mjs +3 -1
- package/dist/lib/esm/shared-config-files.d.mts +29 -0
- package/dist/lib/esm/shared-config-files.mjs +36 -0
- package/dist/lib/esm/test-runners/auto.d.mts +82 -0
- package/dist/lib/esm/test-runners/auto.mjs +64 -0
- package/dist/lib/esm/test-runners/index.d.mts +3 -0
- package/dist/lib/esm/test-runners/index.mjs +7 -1
- package/dist/lib/esm/test-runners/jest-config.d.mts +71 -0
- package/dist/lib/esm/test-runners/jest-config.mjs +58 -0
- package/dist/lib/esm/test-runners/jest.d.mts +77 -0
- package/dist/lib/esm/test-runners/jest.mjs +75 -0
- package/docs-site/repo-homepage/package.json +6 -0
- package/formatters/auto/package.json +6 -0
- package/formatters/biome/package.json +6 -0
- package/formatters/prettier/package.json +6 -0
- package/linters/auto/package.json +6 -0
- package/linters/biome/package.json +6 -0
- package/package.json +21 -1
- package/test-runners/auto/package.json +6 -0
- package/test-runners/jest/package.json +6 -0
- package/test-runners/jest-config/package.json +6 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { existsSync } from "node:fs";
|
|
7
|
+
import { readPackageJsonSync } from "../npm.mjs";
|
|
8
|
+
import { RepoPaths } from "../repo-paths.mjs";
|
|
9
|
+
import { resolvePathFromRootSafe } from "../root.mjs";
|
|
10
|
+
import { LIBRARY_VITEST_COVERAGE } from "./vitest-config.mjs";
|
|
11
|
+
const JEST_TYPESCRIPT_TRANSFORM_PATTERN = String.raw`^.+\.[cm]?tsx?$`;
|
|
12
|
+
const JEST_RELATIVE_JS_IMPORT_MAPPER = {
|
|
13
|
+
"^(\\.{1,2}/.*)\\.js$": "$1"
|
|
14
|
+
};
|
|
15
|
+
const DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS = ["/node_modules/", "/dist/"];
|
|
16
|
+
function defineJestConfig(options = {}) {
|
|
17
|
+
const { esm = isEsmPackage(), moduleNameMapper, tsJestOptions, ...overrides } = options;
|
|
18
|
+
return {
|
|
19
|
+
collectCoverageFrom: [
|
|
20
|
+
...LIBRARY_VITEST_COVERAGE.include,
|
|
21
|
+
...LIBRARY_VITEST_COVERAGE.exclude.map((pattern) => `!${pattern}`)
|
|
22
|
+
],
|
|
23
|
+
coverageDirectory: LIBRARY_VITEST_COVERAGE.reportsDirectory,
|
|
24
|
+
coverageProvider: LIBRARY_VITEST_COVERAGE.provider,
|
|
25
|
+
coverageReporters: ["text", "lcov", "html"],
|
|
26
|
+
extensionsToTreatAsEsm: esm ? [".ts", ".tsx"] : [],
|
|
27
|
+
moduleNameMapper: {
|
|
28
|
+
...JEST_RELATIVE_JS_IMPORT_MAPPER,
|
|
29
|
+
...moduleNameMapper
|
|
30
|
+
},
|
|
31
|
+
roots: ["<rootDir>/src"],
|
|
32
|
+
testEnvironment: "node",
|
|
33
|
+
testMatch: ["**/*.test.ts"],
|
|
34
|
+
testPathIgnorePatterns: [...DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS],
|
|
35
|
+
transform: {
|
|
36
|
+
[JEST_TYPESCRIPT_TRANSFORM_PATTERN]: [
|
|
37
|
+
"ts-jest",
|
|
38
|
+
{
|
|
39
|
+
tsconfig: { isolatedModules: true },
|
|
40
|
+
useESM: esm,
|
|
41
|
+
...tsJestOptions
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
...overrides
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function isEsmPackage() {
|
|
49
|
+
return existsSync(resolvePathFromRootSafe({ path: RepoPaths.PackageJson })) && readPackageJsonSync().type === "module";
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS,
|
|
53
|
+
JEST_RELATIVE_JS_IMPORT_MAPPER,
|
|
54
|
+
JEST_TYPESCRIPT_TRANSFORM_PATTERN,
|
|
55
|
+
defineJestConfig,
|
|
56
|
+
isEsmPackage
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9qZXN0LWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNoYXJlZCBqZXN0IGNvbmZpZ3VyYXRpb24gZm9yIFR5cGVTY3JpcHQgcGFja2FnZXM6IHtAbGluayBkZWZpbmVKZXN0Q29uZmlnfSwgd2hpY2ggZmlsbHMgaW4gdGhlIHRzLWplc3QgdHJhbnNmb3JtLFxuICogdGhlIEVTTSBzZXR0aW5ncywgdGhlIHRlc3QgZXhjbHVkZXMgYW5kIHRoZSBjb3ZlcmFnZSBibG9jayBhIHByb2plY3Qgb3RoZXJ3aXNlIHdyaXRlcyBieSBoYW5kLlxuICpcbiAqIFRoZSBjb3ZlcmFnZSBibG9jayBpcyB0aGUgb25lIHRoZSB2aXRlc3QgbGlicmFyeSBjb25maWd1cmF0aW9uIHVzZXMsIHNvIGEgcGFja2FnZSByZXBvcnRzIHRoZSBzYW1lIGZpbGVzIHdoaWNoZXZlclxuICogcnVubmVyIGl0IHBpY2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnamVzdCc7XG5pbXBvcnQgdHlwZSB7IFRzSmVzdFRyYW5zZm9ybWVyT3B0aW9ucyB9IGZyb20gJ3RzLWplc3QnO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB7IHJlYWRQYWNrYWdlSnNvblN5bmMgfSBmcm9tICcuLi9ucG0udHMnO1xuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyByZXNvbHZlUGF0aEZyb21Sb290U2FmZSB9IGZyb20gJy4uL3Jvb3QudHMnO1xuaW1wb3J0IHsgTElCUkFSWV9WSVRFU1RfQ09WRVJBR0UgfSBmcm9tICcuL3ZpdGVzdC1jb25maWcudHMnO1xuXG4vKipcbiAqIFRoZSBmaWxlcyB0cy1qZXN0IGNvbXBpbGVzOiBgLnRzYCwgYC50c3hgLCBgLm10c2AgYW5kIGAuY3RzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEpFU1RfVFlQRVNDUklQVF9UUkFOU0ZPUk1fUEFUVEVSTiA9IFN0cmluZy5yYXdgXi4rXFwuW2NtXT90c3g/JGA7XG5cbi8qKlxuICogTWFwcyBhIHJlbGF0aXZlIGltcG9ydCB3cml0dGVuIHdpdGggYSBgLmpzYCBleHRlbnNpb24gb250byB0aGUgcGF0aCB3aXRob3V0IGFuIGV4dGVuc2lvbiwgd2hpY2ggamVzdCByZXNvbHZlcy5cbiAqXG4gKiBBIHByb2plY3QgY29tcGlsZWQgd2l0aCBgbW9kdWxlOiBub2RlbmV4dGAgd3JpdGVzIGAuL2Zvby5qc2AgZm9yIGAuL2Zvby50c2AsIGFuZCBzbyBkb2VzIFR5cGVTY3JpcHQgaXRzZWxmIHdoZW5cbiAqIGByZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb25zYCB0dXJucyBhIGAuL2Zvby50c2AgaW1wb3J0IGludG8gYC4vZm9vLmpzYC4gSmVzdCBsb29rcyBmb3IgYSBmaWxlIGxpdGVyYWxseSBuYW1lZFxuICogYGZvby5qc2AgYW5kIGZhaWxzIHdpdGggYENhbm5vdCBmaW5kIG1vZHVsZSAnLi9mb28uanMnYCwgc28gdGhlIGV4dGVuc2lvbiBpcyByZW1vdmVkIGFuZCBqZXN0J3Mgb3duXG4gKiBgbW9kdWxlRmlsZUV4dGVuc2lvbnNgIHNlYXJjaCBmaW5kcyBgZm9vLnRzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEpFU1RfUkVMQVRJVkVfSlNfSU1QT1JUX01BUFBFUjogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gICdeKFxcXFwuezEsMn0vLiopXFxcXC5qcyQnOiAnJDEnXG59O1xuXG4vKipcbiAqIEZvbGRlcnMgamVzdCBuZXZlciBjb2xsZWN0cyB0ZXN0cyBmcm9tLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9KRVNUX1RFU1RfUEFUSF9JR05PUkVfUEFUVEVSTlM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWycvbm9kZV9tb2R1bGVzLycsICcvZGlzdC8nXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZGVmaW5lSmVzdENvbmZpZ306IGFueSBqZXN0IG9wdGlvbiwgd2hpY2ggd2lucyBvdmVyIHRoZSBkZWZhdWx0IHRoZSBmdW5jdGlvbiB3b3VsZCBvdGhlcndpc2VcbiAqIHNldCwgcGx1cyB0aGUgdHdvIGJlbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUplc3RDb25maWdPcHRpb25zIGV4dGVuZHMgQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgamVzdCBsb2FkcyB0aGUgcHJvamVjdCBhcyBFUyBtb2R1bGVzLlxuICAgKlxuICAgKiBFU00gbmVlZHMgYGV4dGVuc2lvbnNUb1RyZWF0QXNFc21gLCB0cy1qZXN0J3MgYHVzZUVTTWAsIGFuZCBOb2RlJ3MgYC0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXNgLCB3aGljaCB0aGUgamVzdFxuICAgKiBydW5uZXIgaW4gdGhpcyBwYWNrYWdlIGFkZHMgYnkgdGhlIHNhbWUgcnVsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgIHdoZW4gYHBhY2thZ2UuanNvbmAgZGVjbGFyZXMgYFwidHlwZVwiOiBcIm1vZHVsZVwiYFxuICAgKi9cbiAgcmVhZG9ubHkgZXNtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIHRzLWplc3QgdHJhbnNmb3JtLCBzcHJlYWQgb3ZlciB0aGUgZGVmYXVsdHM6IGB1c2VFU01gIGZyb20ge0BsaW5rIGVzbX0sIGFuZCBhIGB0c2NvbmZpZ2Agb2ZcbiAgICogYHsgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlIH1gLCBzbyBlYWNoIGZpbGUgaXMgdHJhbnNwaWxlZCBvbiBpdHMgb3duLCB3aXRob3V0IGEgdHlwZSBjaGVjaywgYXMgdml0ZXN0IGRvZXMuIEFcbiAgICogYHRzY29uZmlnYCBnaXZlbiBoZXJlIHJlcGxhY2VzIHRoYXQgZGVmYXVsdCByYXRoZXIgdGhhbiBtZXJnaW5nIHdpdGggaXQuXG4gICAqXG4gICAqIElnbm9yZWQgd2hlbiB7QGxpbmsgQ29uZmlnLnRyYW5zZm9ybX0gaXMgZ2l2ZW4uXG4gICAqL1xuICByZWFkb25seSB0c0plc3RPcHRpb25zPzogVHNKZXN0VHJhbnNmb3JtZXJPcHRpb25zO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBUeXBlU2NyaXB0IHByb2plY3QncyBqZXN0IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogVGhlIGRlZmF1bHRzOiB0aGUgdGVzdHMgYXJlIGBzcmMvKipcXC8qLnRlc3QudHNgLCBydW4gaW4gdGhlIGBub2RlYCBlbnZpcm9ubWVudCwgdHJhbnNmb3JtZWQgYnkgdHMtamVzdCwgYXMgRVNNIHdoZW5cbiAqIHRoZSBwYWNrYWdlIGlzIChzZWUge0BsaW5rIERlZmluZUplc3RDb25maWdPcHRpb25zLmVzbX0pOyBhIGAuanNgIHJlbGF0aXZlIGltcG9ydCByZXNvbHZlcyBvbnRvIGl0cyBgLnRzYCBzb3VyY2U7XG4gKiBjb3ZlcmFnZSBpcyB2OCBvdmVyIGBzcmMvYCwgd2l0aG91dCB0aGUgYmFycmVscywgdGhlIGRlY2xhcmF0aW9ucywgdGhlIHRlc3RzIGFuZCB0aGUgdGVzdCBoZWxwZXJzLCByZXBvcnRlZCBhc1xuICogYHRleHRgLCBgbGNvdmAgYW5kIGBodG1sYCBpbnRvIGBjb3ZlcmFnZS9gLiBFdmVyeSBqZXN0IG9wdGlvbiBpbiBgb3B0aW9uc2AgcmVwbGFjZXMgaXRzIGRlZmF1bHQsIGV4Y2VwdFxuICogYG1vZHVsZU5hbWVNYXBwZXJgLCB3aG9zZSBlbnRyaWVzIGFyZSBhZGRlZCB0byB0aGUgYC5qc2AgbWFwcGVyLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBqZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVKZXN0Q29uZmlnKG9wdGlvbnM6IERlZmluZUplc3RDb25maWdPcHRpb25zID0ge30pOiBDb25maWcge1xuICBjb25zdCB7IGVzbSA9IGlzRXNtUGFja2FnZSgpLCBtb2R1bGVOYW1lTWFwcGVyLCB0c0plc3RPcHRpb25zLCAuLi5vdmVycmlkZXMgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2xsZWN0Q292ZXJhZ2VGcm9tOiBbXG4gICAgICAuLi5MSUJSQVJZX1ZJVEVTVF9DT1ZFUkFHRS5pbmNsdWRlLFxuICAgICAgLi4uTElCUkFSWV9WSVRFU1RfQ09WRVJBR0UuZXhjbHVkZS5tYXAoKHBhdHRlcm4pID0+IGAhJHtwYXR0ZXJufWApXG4gICAgXSxcbiAgICBjb3ZlcmFnZURpcmVjdG9yeTogTElCUkFSWV9WSVRFU1RfQ09WRVJBR0UucmVwb3J0c0RpcmVjdG9yeSxcbiAgICBjb3ZlcmFnZVByb3ZpZGVyOiBMSUJSQVJZX1ZJVEVTVF9DT1ZFUkFHRS5wcm92aWRlcixcbiAgICBjb3ZlcmFnZVJlcG9ydGVyczogWyd0ZXh0JywgJ2xjb3YnLCAnaHRtbCddLFxuICAgIGV4dGVuc2lvbnNUb1RyZWF0QXNFc206IGVzbSA/IFsnLnRzJywgJy50c3gnXSA6IFtdLFxuICAgIG1vZHVsZU5hbWVNYXBwZXI6IHtcbiAgICAgIC4uLkpFU1RfUkVMQVRJVkVfSlNfSU1QT1JUX01BUFBFUixcbiAgICAgIC4uLm1vZHVsZU5hbWVNYXBwZXJcbiAgICB9LFxuICAgIHJvb3RzOiBbJzxyb290RGlyPi9zcmMnXSxcbiAgICB0ZXN0RW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICB0ZXN0TWF0Y2g6IFsnKiovKi50ZXN0LnRzJ10sXG4gICAgdGVzdFBhdGhJZ25vcmVQYXR0ZXJuczogWy4uLkRFRkFVTFRfSkVTVF9URVNUX1BBVEhfSUdOT1JFX1BBVFRFUk5TXSxcbiAgICB0cmFuc2Zvcm06IHtcbiAgICAgIFtKRVNUX1RZUEVTQ1JJUFRfVFJBTlNGT1JNX1BBVFRFUk5dOiBbXG4gICAgICAgICd0cy1qZXN0JyxcbiAgICAgICAge1xuICAgICAgICAgIHRzY29uZmlnOiB7IGlzb2xhdGVkTW9kdWxlczogdHJ1ZSB9LFxuICAgICAgICAgIHVzZUVTTTogZXNtLFxuICAgICAgICAgIC4uLnRzSmVzdE9wdGlvbnNcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgLi4ub3ZlcnJpZGVzXG4gIH07XG59XG5cbi8qKlxuICogU2F5cyB3aGV0aGVyIHRoZSBwcm9qZWN0IGF0IHRoZSByb290IGlzIGFuIEVTIG1vZHVsZSBwYWNrYWdlLlxuICpcbiAqIEByZXR1cm5zIFdoZXRoZXIgaXRzIGBwYWNrYWdlLmpzb25gIGRlY2xhcmVzIGBcInR5cGVcIjogXCJtb2R1bGVcImAuIEEgcHJvamVjdCB3aXRob3V0IGEgYHBhY2thZ2UuanNvbmAgaXMgbm90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFc21QYWNrYWdlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXhpc3RzU3luYyhyZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IFJlcG9QYXRocy5QYWNrYWdlSnNvbiB9KSkgJiYgcmVhZFBhY2thZ2VKc29uU3luYygpLnR5cGUgPT09ICdtb2R1bGUnO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFhQSxTQUFTLGtCQUFrQjtBQUUzQixTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLGlCQUFpQjtBQUMxQixTQUFTLCtCQUErQjtBQUN4QyxTQUFTLCtCQUErQjtBQUtqQyxNQUFNLG9DQUFvQyxPQUFPO0FBVWpELE1BQU0saUNBQW1FO0FBQUEsRUFDOUUsd0JBQXdCO0FBQzFCO0FBS08sTUFBTSx5Q0FBNEQsQ0FBQyxrQkFBa0IsUUFBUTtBQXVDN0YsU0FBUyxpQkFBaUIsVUFBbUMsQ0FBQyxHQUFXO0FBQzlFLFFBQU0sRUFBRSxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsZUFBZSxHQUFHLFVBQVUsSUFBSTtBQUVoRixTQUFPO0FBQUEsSUFDTCxxQkFBcUI7QUFBQSxNQUNuQixHQUFHLHdCQUF3QjtBQUFBLE1BQzNCLEdBQUcsd0JBQXdCLFFBQVEsSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLEVBQUU7QUFBQSxJQUNuRTtBQUFBLElBQ0EsbUJBQW1CLHdCQUF3QjtBQUFBLElBQzNDLGtCQUFrQix3QkFBd0I7QUFBQSxJQUMxQyxtQkFBbUIsQ0FBQyxRQUFRLFFBQVEsTUFBTTtBQUFBLElBQzFDLHdCQUF3QixNQUFNLENBQUMsT0FBTyxNQUFNLElBQUksQ0FBQztBQUFBLElBQ2pELGtCQUFrQjtBQUFBLE1BQ2hCLEdBQUc7QUFBQSxNQUNILEdBQUc7QUFBQSxJQUNMO0FBQUEsSUFDQSxPQUFPLENBQUMsZUFBZTtBQUFBLElBQ3ZCLGlCQUFpQjtBQUFBLElBQ2pCLFdBQVcsQ0FBQyxjQUFjO0FBQUEsSUFDMUIsd0JBQXdCLENBQUMsR0FBRyxzQ0FBc0M7QUFBQSxJQUNsRSxXQUFXO0FBQUEsTUFDVCxDQUFDLGlDQUFpQyxHQUFHO0FBQUEsUUFDbkM7QUFBQSxRQUNBO0FBQUEsVUFDRSxVQUFVLEVBQUUsaUJBQWlCLEtBQUs7QUFBQSxVQUNsQyxRQUFRO0FBQUEsVUFDUixHQUFHO0FBQUEsUUFDTDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsSUFDQSxHQUFHO0FBQUEsRUFDTDtBQUNGO0FBT08sU0FBUyxlQUF3QjtBQUN0QyxTQUFPLFdBQVcsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFDLEtBQUssb0JBQW9CLEVBQUUsU0FBUztBQUNoSDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* This module provides functions for running tests using the Jest framework.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Every file jest reads its configuration from, besides the `jest` key of `package.json`.
|
|
9
|
+
*
|
|
10
|
+
* @see {@link https://jestjs.io/docs/configuration}
|
|
11
|
+
*/
|
|
12
|
+
export declare const JEST_CONFIG_FILE_NAMES: readonly string[];
|
|
13
|
+
/**
|
|
14
|
+
* The Node flag jest's ESM loader needs: it is built on `vm.SyntheticModule`, which Node only exposes under it.
|
|
15
|
+
* Without it every ESM suite fails to load with `Must use import to load ES Module`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const EXPERIMENTAL_VM_MODULES_FLAG = "--experimental-vm-modules";
|
|
18
|
+
/**
|
|
19
|
+
* Options for running tests with coverage.
|
|
20
|
+
*/
|
|
21
|
+
export interface TestCoverageOptions extends TestOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Minimum coverage percentage required, for lines, functions, branches and statements alike. If the actual coverage
|
|
24
|
+
* falls below it, jest exits with a non-zero code.
|
|
25
|
+
*
|
|
26
|
+
* @default `0`
|
|
27
|
+
*/
|
|
28
|
+
readonly minCoverageInPercents?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Options for running tests.
|
|
32
|
+
*/
|
|
33
|
+
export interface TestOptions {
|
|
34
|
+
/**
|
|
35
|
+
* Whether jest runs the suite as ES modules, which adds {@link EXPERIMENTAL_VM_MODULES_FLAG} to `NODE_OPTIONS`.
|
|
36
|
+
*
|
|
37
|
+
* @default `true` when `package.json` declares `"type": "module"`, the rule `defineJestConfig` follows too
|
|
38
|
+
*/
|
|
39
|
+
readonly esm?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* The projects to run, by their `displayName`, passed to jest's `--selectProjects`. Unlike vitest's runner, a name
|
|
42
|
+
* matches only itself: jest has no `name:*` form.
|
|
43
|
+
*/
|
|
44
|
+
readonly projects?: string[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Options for running tests in watch mode.
|
|
48
|
+
*/
|
|
49
|
+
export type TestWatchOptions = TestOptions;
|
|
50
|
+
/**
|
|
51
|
+
* Says whether the project configures jest.
|
|
52
|
+
*
|
|
53
|
+
* @returns Whether a jest configuration file, or a `jest` key in `package.json`, exists at the project root.
|
|
54
|
+
*/
|
|
55
|
+
export declare function hasJestConfig(): Promise<boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* Runs the test suite.
|
|
58
|
+
*
|
|
59
|
+
* @param options - The options for the test.
|
|
60
|
+
* @returns A {@link Promise} that resolves when the tests have completed.
|
|
61
|
+
*/
|
|
62
|
+
export declare function test(options?: TestOptions): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Runs the test suite with coverage.
|
|
65
|
+
*
|
|
66
|
+
* @param options - Optional coverage configuration.
|
|
67
|
+
* @returns A {@link Promise} that resolves when the tests have completed.
|
|
68
|
+
*/
|
|
69
|
+
export declare function testCoverage(options?: TestCoverageOptions): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Runs the test suite in watch mode, re-running the tests the changed files affect. Jest needs a git or Mercurial
|
|
72
|
+
* repository for that.
|
|
73
|
+
*
|
|
74
|
+
* @param options - The options for the test.
|
|
75
|
+
* @returns A {@link Promise} that resolves when the watcher exits.
|
|
76
|
+
*/
|
|
77
|
+
export declare function testWatch(options?: TestWatchOptions): Promise<void>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { existsSync } from "node:fs";
|
|
7
|
+
import process from "node:process";
|
|
8
|
+
import { readPackageJson } from "../npm.mjs";
|
|
9
|
+
import { resolveToolCommand } from "../package-manager.mjs";
|
|
10
|
+
import { RepoPaths } from "../repo-paths.mjs";
|
|
11
|
+
import {
|
|
12
|
+
execFromRoot,
|
|
13
|
+
resolvePathFromRootSafe
|
|
14
|
+
} from "../root.mjs";
|
|
15
|
+
import { isEsmPackage } from "./jest-config.mjs";
|
|
16
|
+
const JEST_CONFIG_FILE_NAMES = [
|
|
17
|
+
"jest.config.cjs",
|
|
18
|
+
"jest.config.cts",
|
|
19
|
+
"jest.config.js",
|
|
20
|
+
"jest.config.json",
|
|
21
|
+
"jest.config.mjs",
|
|
22
|
+
"jest.config.mts",
|
|
23
|
+
"jest.config.ts"
|
|
24
|
+
];
|
|
25
|
+
const EXPERIMENTAL_VM_MODULES_FLAG = "--experimental-vm-modules";
|
|
26
|
+
async function hasJestConfig() {
|
|
27
|
+
if (JEST_CONFIG_FILE_NAMES.some((fileName) => existsSync(resolvePathFromRootSafe({ path: fileName })))) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
if (!existsSync(resolvePathFromRootSafe({ path: RepoPaths.PackageJson }))) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
const packageJson = await readPackageJson();
|
|
34
|
+
return Object.hasOwn(packageJson, "jest");
|
|
35
|
+
}
|
|
36
|
+
async function test(options = {}) {
|
|
37
|
+
await runJest([], options);
|
|
38
|
+
}
|
|
39
|
+
async function testCoverage(options = {}) {
|
|
40
|
+
const threshold = options.minCoverageInPercents ?? 0;
|
|
41
|
+
const coverageThreshold = {
|
|
42
|
+
global: {
|
|
43
|
+
branches: threshold,
|
|
44
|
+
functions: threshold,
|
|
45
|
+
lines: threshold,
|
|
46
|
+
statements: threshold
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
await runJest(["--coverage", `--coverageThreshold=${JSON.stringify(coverageThreshold)}`], options);
|
|
50
|
+
}
|
|
51
|
+
async function testWatch(options = {}) {
|
|
52
|
+
await runJest(["--watch"], options, true);
|
|
53
|
+
}
|
|
54
|
+
function addExperimentalVmModulesFlag(nodeOptions) {
|
|
55
|
+
const flags = (nodeOptions ?? "").split(/\s+/).filter(Boolean);
|
|
56
|
+
if (!flags.includes(EXPERIMENTAL_VM_MODULES_FLAG)) {
|
|
57
|
+
flags.push(EXPERIMENTAL_VM_MODULES_FLAG);
|
|
58
|
+
}
|
|
59
|
+
return flags.join(" ");
|
|
60
|
+
}
|
|
61
|
+
async function runJest(runArguments, options, isInteractive = false) {
|
|
62
|
+
const { esm = isEsmPackage(), projects = [] } = options;
|
|
63
|
+
const projectArguments = projects.length > 0 ? ["--selectProjects", ...projects] : [];
|
|
64
|
+
const env = esm ? { NODE_OPTIONS: addExperimentalVmModulesFlag(process.env["NODE_OPTIONS"]) } : {};
|
|
65
|
+
await execFromRoot([...resolveToolCommand({ tool: "jest" }), ...runArguments, ...projectArguments], { env, isInteractive });
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
EXPERIMENTAL_VM_MODULES_FLAG,
|
|
69
|
+
JEST_CONFIG_FILE_NAMES,
|
|
70
|
+
hasJestConfig,
|
|
71
|
+
test,
|
|
72
|
+
testCoverage,
|
|
73
|
+
testWatch
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9qZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBydW5uaW5nIHRlc3RzIHVzaW5nIHRoZSBKZXN0IGZyYW1ld29yay5cbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi9ucG0udHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7IGlzRXNtUGFja2FnZSB9IGZyb20gJy4vamVzdC1jb25maWcudHMnO1xuXG4vKipcbiAqIEV2ZXJ5IGZpbGUgamVzdCByZWFkcyBpdHMgY29uZmlndXJhdGlvbiBmcm9tLCBiZXNpZGVzIHRoZSBgamVzdGAga2V5IG9mIGBwYWNrYWdlLmpzb25gLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vamVzdGpzLmlvL2RvY3MvY29uZmlndXJhdGlvbn1cbiAqL1xuZXhwb3J0IGNvbnN0IEpFU1RfQ09ORklHX0ZJTEVfTkFNRVM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAnamVzdC5jb25maWcuY2pzJyxcbiAgJ2plc3QuY29uZmlnLmN0cycsXG4gICdqZXN0LmNvbmZpZy5qcycsXG4gICdqZXN0LmNvbmZpZy5qc29uJyxcbiAgJ2plc3QuY29uZmlnLm1qcycsXG4gICdqZXN0LmNvbmZpZy5tdHMnLFxuICAnamVzdC5jb25maWcudHMnXG5dO1xuXG4vKipcbiAqIFRoZSBOb2RlIGZsYWcgamVzdCdzIEVTTSBsb2FkZXIgbmVlZHM6IGl0IGlzIGJ1aWx0IG9uIGB2bS5TeW50aGV0aWNNb2R1bGVgLCB3aGljaCBOb2RlIG9ubHkgZXhwb3NlcyB1bmRlciBpdC5cbiAqIFdpdGhvdXQgaXQgZXZlcnkgRVNNIHN1aXRlIGZhaWxzIHRvIGxvYWQgd2l0aCBgTXVzdCB1c2UgaW1wb3J0IHRvIGxvYWQgRVMgTW9kdWxlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUcgPSAnLS1leHBlcmltZW50YWwtdm0tbW9kdWxlcyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cyB3aXRoIGNvdmVyYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb3ZlcmFnZU9wdGlvbnMgZXh0ZW5kcyBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIGNvdmVyYWdlIHBlcmNlbnRhZ2UgcmVxdWlyZWQsIGZvciBsaW5lcywgZnVuY3Rpb25zLCBicmFuY2hlcyBhbmQgc3RhdGVtZW50cyBhbGlrZS4gSWYgdGhlIGFjdHVhbCBjb3ZlcmFnZVxuICAgKiBmYWxscyBiZWxvdyBpdCwgamVzdCBleGl0cyB3aXRoIGEgbm9uLXplcm8gY29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDBgXG4gICAqL1xuICByZWFkb25seSBtaW5Db3ZlcmFnZUluUGVyY2VudHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGplc3QgcnVucyB0aGUgc3VpdGUgYXMgRVMgbW9kdWxlcywgd2hpY2ggYWRkcyB7QGxpbmsgRVhQRVJJTUVOVEFMX1ZNX01PRFVMRVNfRkxBR30gdG8gYE5PREVfT1BUSU9OU2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYCB3aGVuIGBwYWNrYWdlLmpzb25gIGRlY2xhcmVzIGBcInR5cGVcIjogXCJtb2R1bGVcImAsIHRoZSBydWxlIGBkZWZpbmVKZXN0Q29uZmlnYCBmb2xsb3dzIHRvb1xuICAgKi9cbiAgcmVhZG9ubHkgZXNtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByb2plY3RzIHRvIHJ1biwgYnkgdGhlaXIgYGRpc3BsYXlOYW1lYCwgcGFzc2VkIHRvIGplc3QncyBgLS1zZWxlY3RQcm9qZWN0c2AuIFVubGlrZSB2aXRlc3QncyBydW5uZXIsIGEgbmFtZVxuICAgKiBtYXRjaGVzIG9ubHkgaXRzZWxmOiBqZXN0IGhhcyBubyBgbmFtZToqYCBmb3JtLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBydW5uaW5nIHRlc3RzIGluIHdhdGNoIG1vZGUuXG4gKi9cbmV4cG9ydCB0eXBlIFRlc3RXYXRjaE9wdGlvbnMgPSBUZXN0T3B0aW9ucztcblxuLyoqXG4gKiBTYXlzIHdoZXRoZXIgdGhlIHByb2plY3QgY29uZmlndXJlcyBqZXN0LlxuICpcbiAqIEByZXR1cm5zIFdoZXRoZXIgYSBqZXN0IGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgYSBgamVzdGAga2V5IGluIGBwYWNrYWdlLmpzb25gLCBleGlzdHMgYXQgdGhlIHByb2plY3Qgcm9vdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc0plc3RDb25maWcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChKRVNUX0NPTkZJR19GSUxFX05BTUVTLnNvbWUoKGZpbGVOYW1lKSA9PiBleGlzdHNTeW5jKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogZmlsZU5hbWUgfSkpKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFleGlzdHNTeW5jKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogUmVwb1BhdGhzLlBhY2thZ2VKc29uIH0pKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIHJldHVybiBPYmplY3QuaGFzT3duKHBhY2thZ2VKc29uLCAnamVzdCcpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHRlc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRlc3RzIGhhdmUgY29tcGxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdChvcHRpb25zOiBUZXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJ1bkplc3QoW10sIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUgd2l0aCBjb3ZlcmFnZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvdmVyYWdlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRlc3RzIGhhdmUgY29tcGxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdENvdmVyYWdlKG9wdGlvbnM6IFRlc3RDb3ZlcmFnZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0aHJlc2hvbGQgPSBvcHRpb25zLm1pbkNvdmVyYWdlSW5QZXJjZW50cyA/PyAwO1xuICBjb25zdCBjb3ZlcmFnZVRocmVzaG9sZCA9IHtcbiAgICBnbG9iYWw6IHtcbiAgICAgIGJyYW5jaGVzOiB0aHJlc2hvbGQsXG4gICAgICBmdW5jdGlvbnM6IHRocmVzaG9sZCxcbiAgICAgIGxpbmVzOiB0aHJlc2hvbGQsXG4gICAgICBzdGF0ZW1lbnRzOiB0aHJlc2hvbGRcbiAgICB9XG4gIH07XG4gIGF3YWl0IHJ1bkplc3QoWyctLWNvdmVyYWdlJywgYC0tY292ZXJhZ2VUaHJlc2hvbGQ9JHtKU09OLnN0cmluZ2lmeShjb3ZlcmFnZVRocmVzaG9sZCl9YF0sIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUgaW4gd2F0Y2ggbW9kZSwgcmUtcnVubmluZyB0aGUgdGVzdHMgdGhlIGNoYW5nZWQgZmlsZXMgYWZmZWN0LiBKZXN0IG5lZWRzIGEgZ2l0IG9yIE1lcmN1cmlhbFxuICogcmVwb3NpdG9yeSBmb3IgdGhhdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgd2F0Y2hlciBleGl0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RXYXRjaChvcHRpb25zOiBUZXN0V2F0Y2hPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgcnVuSmVzdChbJy0td2F0Y2gnXSwgb3B0aW9ucywgdHJ1ZSk7XG59XG5cbi8qKlxuICogQXBwZW5kcyB7QGxpbmsgRVhQRVJJTUVOVEFMX1ZNX01PRFVMRVNfRkxBR30gdG8gYSBgTk9ERV9PUFRJT05TYCB2YWx1ZSwga2VlcGluZyB3aGF0ZXZlciBpdCBhbHJlYWR5IGhvbGRzLlxuICpcbiAqIEBwYXJhbSBub2RlT3B0aW9ucyAtIFRoZSBpbmhlcml0ZWQgYE5PREVfT1BUSU9OU2AuXG4gKiBAcmV0dXJucyBUaGUgYE5PREVfT1BUSU9OU2AgamVzdCBydW5zIHdpdGguXG4gKi9cbmZ1bmN0aW9uIGFkZEV4cGVyaW1lbnRhbFZtTW9kdWxlc0ZsYWcobm9kZU9wdGlvbnM6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGNvbnN0IGZsYWdzID0gKG5vZGVPcHRpb25zID8/ICcnKS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcbiAgaWYgKCFmbGFncy5pbmNsdWRlcyhFWFBFUklNRU5UQUxfVk1fTU9EVUxFU19GTEFHKSkge1xuICAgIGZsYWdzLnB1c2goRVhQRVJJTUVOVEFMX1ZNX01PRFVMRVNfRkxBRyk7XG4gIH1cblxuICByZXR1cm4gZmxhZ3Muam9pbignICcpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGplc3QgQ0xJIGZyb20gdGhlIHByb2plY3Qgcm9vdC5cbiAqXG4gKiBAcGFyYW0gcnVuQXJndW1lbnRzIC0gVGhlIGFyZ3VtZW50cyB0aGF0IHNlbGVjdCB3aGF0IGplc3QgZG9lcy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBUZXN0T3B0aW9uc30uXG4gKiBAcGFyYW0gaXNJbnRlcmFjdGl2ZSAtIFdoZXRoZXIgamVzdCBnZXRzIHRoZSB0ZXJtaW5hbCwgYXMgaXRzIHdhdGNoIG1vZGUgbmVlZHMgdG8gcmVhZCBrZXlzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIGplc3QgZXhpdHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkplc3QocnVuQXJndW1lbnRzOiBzdHJpbmdbXSwgb3B0aW9uczogVGVzdE9wdGlvbnMsIGlzSW50ZXJhY3RpdmUgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGVzbSA9IGlzRXNtUGFja2FnZSgpLCBwcm9qZWN0cyA9IFtdIH0gPSBvcHRpb25zO1xuICBjb25zdCBwcm9qZWN0QXJndW1lbnRzID0gcHJvamVjdHMubGVuZ3RoID4gMCA/IFsnLS1zZWxlY3RQcm9qZWN0cycsIC4uLnByb2plY3RzXSA6IFtdO1xuICBjb25zdCBlbnYgPSBlc20gPyB7IE5PREVfT1BUSU9OUzogYWRkRXhwZXJpbWVudGFsVm1Nb2R1bGVzRmxhZyhwcm9jZXNzLmVudlsnTk9ERV9PUFRJT05TJ10pIH0gOiB7fTtcblxuICBhd2FpdCBleGVjRnJvbVJvb3QoWy4uLnJlc29sdmVUb29sQ29tbWFuZCh7IHRvb2w6ICdqZXN0JyB9KSwgLi4ucnVuQXJndW1lbnRzLCAuLi5wcm9qZWN0QXJndW1lbnRzXSwgeyBlbnYsIGlzSW50ZXJhY3RpdmUgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQU1BLFNBQVMsa0JBQWtCO0FBQzNCLE9BQU8sYUFBYTtBQUVwQixTQUFTLHVCQUF1QjtBQUNoQyxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLGlCQUFpQjtBQUMxQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsb0JBQW9CO0FBT3RCLE1BQU0seUJBQTRDO0FBQUEsRUFDdkQ7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQU1PLE1BQU0sK0JBQStCO0FBMkM1QyxlQUFzQixnQkFBa0M7QUFDdEQsTUFBSSx1QkFBdUIsS0FBSyxDQUFDLGFBQWEsV0FBVyx3QkFBd0IsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRztBQUN0RyxXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksQ0FBQyxXQUFXLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxZQUFZLENBQUMsQ0FBQyxHQUFHO0FBQ3pFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxjQUFjLE1BQU0sZ0JBQWdCO0FBQzFDLFNBQU8sT0FBTyxPQUFPLGFBQWEsTUFBTTtBQUMxQztBQVFBLGVBQXNCLEtBQUssVUFBdUIsQ0FBQyxHQUFrQjtBQUNuRSxRQUFNLFFBQVEsQ0FBQyxHQUFHLE9BQU87QUFDM0I7QUFRQSxlQUFzQixhQUFhLFVBQStCLENBQUMsR0FBa0I7QUFDbkYsUUFBTSxZQUFZLFFBQVEseUJBQXlCO0FBQ25ELFFBQU0sb0JBQW9CO0FBQUEsSUFDeEIsUUFBUTtBQUFBLE1BQ04sVUFBVTtBQUFBLE1BQ1YsV0FBVztBQUFBLE1BQ1gsT0FBTztBQUFBLE1BQ1AsWUFBWTtBQUFBLElBQ2Q7QUFBQSxFQUNGO0FBQ0EsUUFBTSxRQUFRLENBQUMsY0FBYyx1QkFBdUIsS0FBSyxVQUFVLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxPQUFPO0FBQ25HO0FBU0EsZUFBc0IsVUFBVSxVQUE0QixDQUFDLEdBQWtCO0FBQzdFLFFBQU0sUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUk7QUFDMUM7QUFRQSxTQUFTLDZCQUE2QixhQUF5QztBQUM3RSxRQUFNLFNBQVMsZUFBZSxJQUFJLE1BQU0sS0FBSyxFQUFFLE9BQU8sT0FBTztBQUM3RCxNQUFJLENBQUMsTUFBTSxTQUFTLDRCQUE0QixHQUFHO0FBQ2pELFVBQU0sS0FBSyw0QkFBNEI7QUFBQSxFQUN6QztBQUVBLFNBQU8sTUFBTSxLQUFLLEdBQUc7QUFDdkI7QUFVQSxlQUFlLFFBQVEsY0FBd0IsU0FBc0IsZ0JBQWdCLE9BQXNCO0FBQ3pHLFFBQU0sRUFBRSxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsRUFBRSxJQUFJO0FBQ2hELFFBQU0sbUJBQW1CLFNBQVMsU0FBUyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxJQUFJLENBQUM7QUFDcEYsUUFBTSxNQUFNLE1BQU0sRUFBRSxjQUFjLDZCQUE2QixRQUFRLElBQUksY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBRWpHLFFBQU0sYUFBYSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxHQUFHLGNBQWMsR0FBRyxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssY0FBYyxDQUFDO0FBQzVIOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnaoumov/typescript-dev-toolkit",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Generic TypeScript project tooling: build, lint, format, spellcheck, test, gate and release scripts.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -314,6 +314,7 @@
|
|
|
314
314
|
"devDependencies": {
|
|
315
315
|
"@astrojs/markdown-satteri": "^0.4.4",
|
|
316
316
|
"@astrojs/starlight": "^0.42.6",
|
|
317
|
+
"@biomejs/biome": "^2.5.15",
|
|
317
318
|
"@commitlint/cli": "^21.2.2",
|
|
318
319
|
"@mnaoumov/typescript-test-toolkit": "^1.0.0",
|
|
319
320
|
"@resvg/resvg-js": "^2.6.2",
|
|
@@ -327,9 +328,12 @@
|
|
|
327
328
|
"eslint-plugin-jsdoc": "^64.5.4",
|
|
328
329
|
"eslint-plugin-tsdoc": "^0.5.3",
|
|
329
330
|
"husky": "^9.1.7",
|
|
331
|
+
"jest": "^30.5.2",
|
|
330
332
|
"nano-staged": "^1.0.2",
|
|
333
|
+
"prettier": "^3.9.10",
|
|
331
334
|
"satori": "^0.33.5",
|
|
332
335
|
"satteri": "^0.10.5",
|
|
336
|
+
"ts-jest": "^29.4.15",
|
|
333
337
|
"ts-morph": "^28.0.0",
|
|
334
338
|
"tslib": "^2.8.1",
|
|
335
339
|
"typedoc-plugin-mdn-links": "^5.1.1",
|
|
@@ -339,10 +343,14 @@
|
|
|
339
343
|
"peerDependencies": {
|
|
340
344
|
"@astrojs/markdown-satteri": "^0.4.4",
|
|
341
345
|
"@astrojs/starlight": "^0.42.6",
|
|
346
|
+
"@biomejs/biome": "^2.0.0",
|
|
342
347
|
"@resvg/resvg-js": "^2.6.2",
|
|
343
348
|
"astro": "^7.4.0",
|
|
349
|
+
"jest": "^30.0.0",
|
|
350
|
+
"prettier": "^3.0.0",
|
|
344
351
|
"satori": "^0.33.5",
|
|
345
352
|
"satteri": "^0.10.5",
|
|
353
|
+
"ts-jest": "^29.4.0",
|
|
346
354
|
"ts-morph": "^28.0.0",
|
|
347
355
|
"typedoc-plugin-mdn-links": "^5.1.1",
|
|
348
356
|
"vitest": "^5.0.1",
|
|
@@ -355,18 +363,30 @@
|
|
|
355
363
|
"@astrojs/starlight": {
|
|
356
364
|
"optional": true
|
|
357
365
|
},
|
|
366
|
+
"@biomejs/biome": {
|
|
367
|
+
"optional": true
|
|
368
|
+
},
|
|
358
369
|
"@resvg/resvg-js": {
|
|
359
370
|
"optional": true
|
|
360
371
|
},
|
|
361
372
|
"astro": {
|
|
362
373
|
"optional": true
|
|
363
374
|
},
|
|
375
|
+
"jest": {
|
|
376
|
+
"optional": true
|
|
377
|
+
},
|
|
378
|
+
"prettier": {
|
|
379
|
+
"optional": true
|
|
380
|
+
},
|
|
364
381
|
"satori": {
|
|
365
382
|
"optional": true
|
|
366
383
|
},
|
|
367
384
|
"satteri": {
|
|
368
385
|
"optional": true
|
|
369
386
|
},
|
|
387
|
+
"ts-jest": {
|
|
388
|
+
"optional": true
|
|
389
|
+
},
|
|
370
390
|
"ts-morph": {
|
|
371
391
|
"optional": true
|
|
372
392
|
},
|