@mnaoumov/typescript-dev-toolkit 2.2.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 +52 -29
- 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 +52 -29
- 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,86 @@
|
|
|
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
|
+
"use strict";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var jest_config_exports = {};
|
|
25
|
+
__export(jest_config_exports, {
|
|
26
|
+
DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS: () => DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS,
|
|
27
|
+
JEST_RELATIVE_JS_IMPORT_MAPPER: () => JEST_RELATIVE_JS_IMPORT_MAPPER,
|
|
28
|
+
JEST_TYPESCRIPT_TRANSFORM_PATTERN: () => JEST_TYPESCRIPT_TRANSFORM_PATTERN,
|
|
29
|
+
defineJestConfig: () => defineJestConfig,
|
|
30
|
+
isEsmPackage: () => isEsmPackage
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(jest_config_exports);
|
|
33
|
+
var import_node_fs = require('node:fs');
|
|
34
|
+
var import_npm = require('../npm.cjs');
|
|
35
|
+
var import_repo_paths = require('../repo-paths.cjs');
|
|
36
|
+
var import_root = require('../root.cjs');
|
|
37
|
+
var import_vitest_config = require('./vitest-config.cjs');
|
|
38
|
+
const JEST_TYPESCRIPT_TRANSFORM_PATTERN = String.raw`^.+\.[cm]?tsx?$`;
|
|
39
|
+
const JEST_RELATIVE_JS_IMPORT_MAPPER = {
|
|
40
|
+
"^(\\.{1,2}/.*)\\.js$": "$1"
|
|
41
|
+
};
|
|
42
|
+
const DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS = ["/node_modules/", "/dist/"];
|
|
43
|
+
function defineJestConfig(options = {}) {
|
|
44
|
+
const { esm = isEsmPackage(), moduleNameMapper, tsJestOptions, ...overrides } = options;
|
|
45
|
+
return {
|
|
46
|
+
collectCoverageFrom: [
|
|
47
|
+
...import_vitest_config.LIBRARY_VITEST_COVERAGE.include,
|
|
48
|
+
...import_vitest_config.LIBRARY_VITEST_COVERAGE.exclude.map((pattern) => `!${pattern}`)
|
|
49
|
+
],
|
|
50
|
+
coverageDirectory: import_vitest_config.LIBRARY_VITEST_COVERAGE.reportsDirectory,
|
|
51
|
+
coverageProvider: import_vitest_config.LIBRARY_VITEST_COVERAGE.provider,
|
|
52
|
+
coverageReporters: ["text", "lcov", "html"],
|
|
53
|
+
extensionsToTreatAsEsm: esm ? [".ts", ".tsx"] : [],
|
|
54
|
+
moduleNameMapper: {
|
|
55
|
+
...JEST_RELATIVE_JS_IMPORT_MAPPER,
|
|
56
|
+
...moduleNameMapper
|
|
57
|
+
},
|
|
58
|
+
roots: ["<rootDir>/src"],
|
|
59
|
+
testEnvironment: "node",
|
|
60
|
+
testMatch: ["**/*.test.ts"],
|
|
61
|
+
testPathIgnorePatterns: [...DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS],
|
|
62
|
+
transform: {
|
|
63
|
+
[JEST_TYPESCRIPT_TRANSFORM_PATTERN]: [
|
|
64
|
+
"ts-jest",
|
|
65
|
+
{
|
|
66
|
+
tsconfig: { isolatedModules: true },
|
|
67
|
+
useESM: esm,
|
|
68
|
+
...tsJestOptions
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
...overrides
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function isEsmPackage() {
|
|
76
|
+
return (0, import_node_fs.existsSync)((0, import_root.resolvePathFromRootSafe)({ path: import_repo_paths.RepoPaths.PackageJson })) && (0, import_npm.readPackageJsonSync)().type === "module";
|
|
77
|
+
}
|
|
78
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
79
|
+
0 && (module.exports = {
|
|
80
|
+
DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS,
|
|
81
|
+
JEST_RELATIVE_JS_IMPORT_MAPPER,
|
|
82
|
+
JEST_TYPESCRIPT_TRANSFORM_PATTERN,
|
|
83
|
+
defineJestConfig,
|
|
84
|
+
isEsmPackage
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9qZXN0LWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNoYXJlZCBqZXN0IGNvbmZpZ3VyYXRpb24gZm9yIFR5cGVTY3JpcHQgcGFja2FnZXM6IHtAbGluayBkZWZpbmVKZXN0Q29uZmlnfSwgd2hpY2ggZmlsbHMgaW4gdGhlIHRzLWplc3QgdHJhbnNmb3JtLFxuICogdGhlIEVTTSBzZXR0aW5ncywgdGhlIHRlc3QgZXhjbHVkZXMgYW5kIHRoZSBjb3ZlcmFnZSBibG9jayBhIHByb2plY3Qgb3RoZXJ3aXNlIHdyaXRlcyBieSBoYW5kLlxuICpcbiAqIFRoZSBjb3ZlcmFnZSBibG9jayBpcyB0aGUgb25lIHRoZSB2aXRlc3QgbGlicmFyeSBjb25maWd1cmF0aW9uIHVzZXMsIHNvIGEgcGFja2FnZSByZXBvcnRzIHRoZSBzYW1lIGZpbGVzIHdoaWNoZXZlclxuICogcnVubmVyIGl0IHBpY2tzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgQ29uZmlnIH0gZnJvbSAnamVzdCc7XG5pbXBvcnQgdHlwZSB7IFRzSmVzdFRyYW5zZm9ybWVyT3B0aW9ucyB9IGZyb20gJ3RzLWplc3QnO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB7IHJlYWRQYWNrYWdlSnNvblN5bmMgfSBmcm9tICcuLi9ucG0udHMnO1xuaW1wb3J0IHsgUmVwb1BhdGhzIH0gZnJvbSAnLi4vcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyByZXNvbHZlUGF0aEZyb21Sb290U2FmZSB9IGZyb20gJy4uL3Jvb3QudHMnO1xuaW1wb3J0IHsgTElCUkFSWV9WSVRFU1RfQ09WRVJBR0UgfSBmcm9tICcuL3ZpdGVzdC1jb25maWcudHMnO1xuXG4vKipcbiAqIFRoZSBmaWxlcyB0cy1qZXN0IGNvbXBpbGVzOiBgLnRzYCwgYC50c3hgLCBgLm10c2AgYW5kIGAuY3RzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEpFU1RfVFlQRVNDUklQVF9UUkFOU0ZPUk1fUEFUVEVSTiA9IFN0cmluZy5yYXdgXi4rXFwuW2NtXT90c3g/JGA7XG5cbi8qKlxuICogTWFwcyBhIHJlbGF0aXZlIGltcG9ydCB3cml0dGVuIHdpdGggYSBgLmpzYCBleHRlbnNpb24gb250byB0aGUgcGF0aCB3aXRob3V0IGFuIGV4dGVuc2lvbiwgd2hpY2ggamVzdCByZXNvbHZlcy5cbiAqXG4gKiBBIHByb2plY3QgY29tcGlsZWQgd2l0aCBgbW9kdWxlOiBub2RlbmV4dGAgd3JpdGVzIGAuL2Zvby5qc2AgZm9yIGAuL2Zvby50c2AsIGFuZCBzbyBkb2VzIFR5cGVTY3JpcHQgaXRzZWxmIHdoZW5cbiAqIGByZXdyaXRlUmVsYXRpdmVJbXBvcnRFeHRlbnNpb25zYCB0dXJucyBhIGAuL2Zvby50c2AgaW1wb3J0IGludG8gYC4vZm9vLmpzYC4gSmVzdCBsb29rcyBmb3IgYSBmaWxlIGxpdGVyYWxseSBuYW1lZFxuICogYGZvby5qc2AgYW5kIGZhaWxzIHdpdGggYENhbm5vdCBmaW5kIG1vZHVsZSAnLi9mb28uanMnYCwgc28gdGhlIGV4dGVuc2lvbiBpcyByZW1vdmVkIGFuZCBqZXN0J3Mgb3duXG4gKiBgbW9kdWxlRmlsZUV4dGVuc2lvbnNgIHNlYXJjaCBmaW5kcyBgZm9vLnRzYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEpFU1RfUkVMQVRJVkVfSlNfSU1QT1JUX01BUFBFUjogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gICdeKFxcXFwuezEsMn0vLiopXFxcXC5qcyQnOiAnJDEnXG59O1xuXG4vKipcbiAqIEZvbGRlcnMgamVzdCBuZXZlciBjb2xsZWN0cyB0ZXN0cyBmcm9tLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9KRVNUX1RFU1RfUEFUSF9JR05PUkVfUEFUVEVSTlM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWycvbm9kZV9tb2R1bGVzLycsICcvZGlzdC8nXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZGVmaW5lSmVzdENvbmZpZ306IGFueSBqZXN0IG9wdGlvbiwgd2hpY2ggd2lucyBvdmVyIHRoZSBkZWZhdWx0IHRoZSBmdW5jdGlvbiB3b3VsZCBvdGhlcndpc2VcbiAqIHNldCwgcGx1cyB0aGUgdHdvIGJlbG93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmluZUplc3RDb25maWdPcHRpb25zIGV4dGVuZHMgQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgamVzdCBsb2FkcyB0aGUgcHJvamVjdCBhcyBFUyBtb2R1bGVzLlxuICAgKlxuICAgKiBFU00gbmVlZHMgYGV4dGVuc2lvbnNUb1RyZWF0QXNFc21gLCB0cy1qZXN0J3MgYHVzZUVTTWAsIGFuZCBOb2RlJ3MgYC0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXNgLCB3aGljaCB0aGUgamVzdFxuICAgKiBydW5uZXIgaW4gdGhpcyBwYWNrYWdlIGFkZHMgYnkgdGhlIHNhbWUgcnVsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgIHdoZW4gYHBhY2thZ2UuanNvbmAgZGVjbGFyZXMgYFwidHlwZVwiOiBcIm1vZHVsZVwiYFxuICAgKi9cbiAgcmVhZG9ubHkgZXNtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIHRzLWplc3QgdHJhbnNmb3JtLCBzcHJlYWQgb3ZlciB0aGUgZGVmYXVsdHM6IGB1c2VFU01gIGZyb20ge0BsaW5rIGVzbX0sIGFuZCBhIGB0c2NvbmZpZ2Agb2ZcbiAgICogYHsgaXNvbGF0ZWRNb2R1bGVzOiB0cnVlIH1gLCBzbyBlYWNoIGZpbGUgaXMgdHJhbnNwaWxlZCBvbiBpdHMgb3duLCB3aXRob3V0IGEgdHlwZSBjaGVjaywgYXMgdml0ZXN0IGRvZXMuIEFcbiAgICogYHRzY29uZmlnYCBnaXZlbiBoZXJlIHJlcGxhY2VzIHRoYXQgZGVmYXVsdCByYXRoZXIgdGhhbiBtZXJnaW5nIHdpdGggaXQuXG4gICAqXG4gICAqIElnbm9yZWQgd2hlbiB7QGxpbmsgQ29uZmlnLnRyYW5zZm9ybX0gaXMgZ2l2ZW4uXG4gICAqL1xuICByZWFkb25seSB0c0plc3RPcHRpb25zPzogVHNKZXN0VHJhbnNmb3JtZXJPcHRpb25zO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBUeXBlU2NyaXB0IHByb2plY3QncyBqZXN0IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogVGhlIGRlZmF1bHRzOiB0aGUgdGVzdHMgYXJlIGBzcmMvKipcXC8qLnRlc3QudHNgLCBydW4gaW4gdGhlIGBub2RlYCBlbnZpcm9ubWVudCwgdHJhbnNmb3JtZWQgYnkgdHMtamVzdCwgYXMgRVNNIHdoZW5cbiAqIHRoZSBwYWNrYWdlIGlzIChzZWUge0BsaW5rIERlZmluZUplc3RDb25maWdPcHRpb25zLmVzbX0pOyBhIGAuanNgIHJlbGF0aXZlIGltcG9ydCByZXNvbHZlcyBvbnRvIGl0cyBgLnRzYCBzb3VyY2U7XG4gKiBjb3ZlcmFnZSBpcyB2OCBvdmVyIGBzcmMvYCwgd2l0aG91dCB0aGUgYmFycmVscywgdGhlIGRlY2xhcmF0aW9ucywgdGhlIHRlc3RzIGFuZCB0aGUgdGVzdCBoZWxwZXJzLCByZXBvcnRlZCBhc1xuICogYHRleHRgLCBgbGNvdmAgYW5kIGBodG1sYCBpbnRvIGBjb3ZlcmFnZS9gLiBFdmVyeSBqZXN0IG9wdGlvbiBpbiBgb3B0aW9uc2AgcmVwbGFjZXMgaXRzIGRlZmF1bHQsIGV4Y2VwdFxuICogYG1vZHVsZU5hbWVNYXBwZXJgLCB3aG9zZSBlbnRyaWVzIGFyZSBhZGRlZCB0byB0aGUgYC5qc2AgbWFwcGVyLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBqZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVKZXN0Q29uZmlnKG9wdGlvbnM6IERlZmluZUplc3RDb25maWdPcHRpb25zID0ge30pOiBDb25maWcge1xuICBjb25zdCB7IGVzbSA9IGlzRXNtUGFja2FnZSgpLCBtb2R1bGVOYW1lTWFwcGVyLCB0c0plc3RPcHRpb25zLCAuLi5vdmVycmlkZXMgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2xsZWN0Q292ZXJhZ2VGcm9tOiBbXG4gICAgICAuLi5MSUJSQVJZX1ZJVEVTVF9DT1ZFUkFHRS5pbmNsdWRlLFxuICAgICAgLi4uTElCUkFSWV9WSVRFU1RfQ09WRVJBR0UuZXhjbHVkZS5tYXAoKHBhdHRlcm4pID0+IGAhJHtwYXR0ZXJufWApXG4gICAgXSxcbiAgICBjb3ZlcmFnZURpcmVjdG9yeTogTElCUkFSWV9WSVRFU1RfQ09WRVJBR0UucmVwb3J0c0RpcmVjdG9yeSxcbiAgICBjb3ZlcmFnZVByb3ZpZGVyOiBMSUJSQVJZX1ZJVEVTVF9DT1ZFUkFHRS5wcm92aWRlcixcbiAgICBjb3ZlcmFnZVJlcG9ydGVyczogWyd0ZXh0JywgJ2xjb3YnLCAnaHRtbCddLFxuICAgIGV4dGVuc2lvbnNUb1RyZWF0QXNFc206IGVzbSA/IFsnLnRzJywgJy50c3gnXSA6IFtdLFxuICAgIG1vZHVsZU5hbWVNYXBwZXI6IHtcbiAgICAgIC4uLkpFU1RfUkVMQVRJVkVfSlNfSU1QT1JUX01BUFBFUixcbiAgICAgIC4uLm1vZHVsZU5hbWVNYXBwZXJcbiAgICB9LFxuICAgIHJvb3RzOiBbJzxyb290RGlyPi9zcmMnXSxcbiAgICB0ZXN0RW52aXJvbm1lbnQ6ICdub2RlJyxcbiAgICB0ZXN0TWF0Y2g6IFsnKiovKi50ZXN0LnRzJ10sXG4gICAgdGVzdFBhdGhJZ25vcmVQYXR0ZXJuczogWy4uLkRFRkFVTFRfSkVTVF9URVNUX1BBVEhfSUdOT1JFX1BBVFRFUk5TXSxcbiAgICB0cmFuc2Zvcm06IHtcbiAgICAgIFtKRVNUX1RZUEVTQ1JJUFRfVFJBTlNGT1JNX1BBVFRFUk5dOiBbXG4gICAgICAgICd0cy1qZXN0JyxcbiAgICAgICAge1xuICAgICAgICAgIHRzY29uZmlnOiB7IGlzb2xhdGVkTW9kdWxlczogdHJ1ZSB9LFxuICAgICAgICAgIHVzZUVTTTogZXNtLFxuICAgICAgICAgIC4uLnRzSmVzdE9wdGlvbnNcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH0sXG4gICAgLi4ub3ZlcnJpZGVzXG4gIH07XG59XG5cbi8qKlxuICogU2F5cyB3aGV0aGVyIHRoZSBwcm9qZWN0IGF0IHRoZSByb290IGlzIGFuIEVTIG1vZHVsZSBwYWNrYWdlLlxuICpcbiAqIEByZXR1cm5zIFdoZXRoZXIgaXRzIGBwYWNrYWdlLmpzb25gIGRlY2xhcmVzIGBcInR5cGVcIjogXCJtb2R1bGVcImAuIEEgcHJvamVjdCB3aXRob3V0IGEgYHBhY2thZ2UuanNvbmAgaXMgbm90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFc21QYWNrYWdlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXhpc3RzU3luYyhyZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IFJlcG9QYXRocy5QYWNrYWdlSnNvbiB9KSkgJiYgcmVhZFBhY2thZ2VKc29uU3luYygpLnR5cGUgPT09ICdtb2R1bGUnO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSxxQkFBMkI7QUFFM0IsaUJBQW9DO0FBQ3BDLHdCQUEwQjtBQUMxQixrQkFBd0M7QUFDeEMsMkJBQXdDO0FBS2pDLE1BQU0sb0NBQW9DLE9BQU87QUFVakQsTUFBTSxpQ0FBbUU7QUFBQSxFQUM5RSx3QkFBd0I7QUFDMUI7QUFLTyxNQUFNLHlDQUE0RCxDQUFDLGtCQUFrQixRQUFRO0FBdUM3RixTQUFTLGlCQUFpQixVQUFtQyxDQUFDLEdBQVc7QUFDOUUsUUFBTSxFQUFFLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixlQUFlLEdBQUcsVUFBVSxJQUFJO0FBRWhGLFNBQU87QUFBQSxJQUNMLHFCQUFxQjtBQUFBLE1BQ25CLEdBQUcsNkNBQXdCO0FBQUEsTUFDM0IsR0FBRyw2Q0FBd0IsUUFBUSxJQUFJLENBQUMsWUFBWSxJQUFJLE9BQU8sRUFBRTtBQUFBLElBQ25FO0FBQUEsSUFDQSxtQkFBbUIsNkNBQXdCO0FBQUEsSUFDM0Msa0JBQWtCLDZDQUF3QjtBQUFBLElBQzFDLG1CQUFtQixDQUFDLFFBQVEsUUFBUSxNQUFNO0FBQUEsSUFDMUMsd0JBQXdCLE1BQU0sQ0FBQyxPQUFPLE1BQU0sSUFBSSxDQUFDO0FBQUEsSUFDakQsa0JBQWtCO0FBQUEsTUFDaEIsR0FBRztBQUFBLE1BQ0gsR0FBRztBQUFBLElBQ0w7QUFBQSxJQUNBLE9BQU8sQ0FBQyxlQUFlO0FBQUEsSUFDdkIsaUJBQWlCO0FBQUEsSUFDakIsV0FBVyxDQUFDLGNBQWM7QUFBQSxJQUMxQix3QkFBd0IsQ0FBQyxHQUFHLHNDQUFzQztBQUFBLElBQ2xFLFdBQVc7QUFBQSxNQUNULENBQUMsaUNBQWlDLEdBQUc7QUFBQSxRQUNuQztBQUFBLFFBQ0E7QUFBQSxVQUNFLFVBQVUsRUFBRSxpQkFBaUIsS0FBSztBQUFBLFVBQ2xDLFFBQVE7QUFBQSxVQUNSLEdBQUc7QUFBQSxRQUNMO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLEdBQUc7QUFBQSxFQUNMO0FBQ0Y7QUFPTyxTQUFTLGVBQXdCO0FBQ3RDLGFBQU8sK0JBQVcscUNBQXdCLEVBQUUsTUFBTSw0QkFBVSxZQUFZLENBQUMsQ0FBQyxTQUFLLGdDQUFvQixFQUFFLFNBQVM7QUFDaEg7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Shared jest configuration for TypeScript packages: {@link defineJestConfig}, which fills in the ts-jest transform,
|
|
6
|
+
* the ESM settings, the test excludes and the coverage block a project otherwise writes by hand.
|
|
7
|
+
*
|
|
8
|
+
* The coverage block is the one the vitest library configuration uses, so a package reports the same files whichever
|
|
9
|
+
* runner it picks.
|
|
10
|
+
*/
|
|
11
|
+
import type { Config } from 'jest' with { 'resolution-mode': 'import' };
|
|
12
|
+
import type { TsJestTransformerOptions } from 'ts-jest' with { 'resolution-mode': 'import' };
|
|
13
|
+
/**
|
|
14
|
+
* The files ts-jest compiles: `.ts`, `.tsx`, `.mts` and `.cts`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const JEST_TYPESCRIPT_TRANSFORM_PATTERN: string;
|
|
17
|
+
/**
|
|
18
|
+
* Maps a relative import written with a `.js` extension onto the path without an extension, which jest resolves.
|
|
19
|
+
*
|
|
20
|
+
* A project compiled with `module: nodenext` writes `./foo.js` for `./foo.ts`, and so does TypeScript itself when
|
|
21
|
+
* `rewriteRelativeImportExtensions` turns a `./foo.ts` import into `./foo.js`. Jest looks for a file literally named
|
|
22
|
+
* `foo.js` and fails with `Cannot find module './foo.js'`, so the extension is removed and jest's own
|
|
23
|
+
* `moduleFileExtensions` search finds `foo.ts`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const JEST_RELATIVE_JS_IMPORT_MAPPER: Readonly<Record<string, string>>;
|
|
26
|
+
/**
|
|
27
|
+
* Folders jest never collects tests from.
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS: readonly string[];
|
|
30
|
+
/**
|
|
31
|
+
* Options for {@link defineJestConfig}: any jest option, which wins over the default the function would otherwise
|
|
32
|
+
* set, plus the two below.
|
|
33
|
+
*/
|
|
34
|
+
export interface DefineJestConfigOptions extends Config {
|
|
35
|
+
/**
|
|
36
|
+
* Whether jest loads the project as ES modules.
|
|
37
|
+
*
|
|
38
|
+
* ESM needs `extensionsToTreatAsEsm`, ts-jest's `useESM`, and Node's `--experimental-vm-modules`, which the jest
|
|
39
|
+
* runner in this package adds by the same rule.
|
|
40
|
+
*
|
|
41
|
+
* @default `true` when `package.json` declares `"type": "module"`
|
|
42
|
+
*/
|
|
43
|
+
readonly esm?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Options for the ts-jest transform, spread over the defaults: `useESM` from {@link esm}, and a `tsconfig` of
|
|
46
|
+
* `{ isolatedModules: true }`, so each file is transpiled on its own, without a type check, as vitest does. A
|
|
47
|
+
* `tsconfig` given here replaces that default rather than merging with it.
|
|
48
|
+
*
|
|
49
|
+
* Ignored when {@link Config.transform} is given.
|
|
50
|
+
*/
|
|
51
|
+
readonly tsJestOptions?: TsJestTransformerOptions;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Defines a TypeScript project's jest configuration.
|
|
55
|
+
*
|
|
56
|
+
* The defaults: the tests are `src/**\/*.test.ts`, run in the `node` environment, transformed by ts-jest, as ESM when
|
|
57
|
+
* the package is (see {@link DefineJestConfigOptions.esm}); a `.js` relative import resolves onto its `.ts` source;
|
|
58
|
+
* coverage is v8 over `src/`, without the barrels, the declarations, the tests and the test helpers, reported as
|
|
59
|
+
* `text`, `lcov` and `html` into `coverage/`. Every jest option in `options` replaces its default, except
|
|
60
|
+
* `moduleNameMapper`, whose entries are added to the `.js` mapper.
|
|
61
|
+
*
|
|
62
|
+
* @param options - The configuration options.
|
|
63
|
+
* @returns The jest configuration.
|
|
64
|
+
*/
|
|
65
|
+
export declare function defineJestConfig(options?: DefineJestConfigOptions): Config;
|
|
66
|
+
/**
|
|
67
|
+
* Says whether the project at the root is an ES module package.
|
|
68
|
+
*
|
|
69
|
+
* @returns Whether its `package.json` declares `"type": "module"`. A project without a `package.json` is not.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isEsmPackage(): boolean;
|
|
@@ -0,0 +1,111 @@
|
|
|
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
|
+
"use strict";
|
|
7
|
+
var __create = Object.create;
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
13
|
+
var __export = (target, all) => {
|
|
14
|
+
for (var name in all)
|
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
16
|
+
};
|
|
17
|
+
var __copyProps = (to, from, except, desc) => {
|
|
18
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
19
|
+
for (let key of __getOwnPropNames(from))
|
|
20
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
21
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
22
|
+
}
|
|
23
|
+
return to;
|
|
24
|
+
};
|
|
25
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
26
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
27
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
28
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
29
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
30
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
31
|
+
mod
|
|
32
|
+
));
|
|
33
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
34
|
+
var jest_exports = {};
|
|
35
|
+
__export(jest_exports, {
|
|
36
|
+
EXPERIMENTAL_VM_MODULES_FLAG: () => EXPERIMENTAL_VM_MODULES_FLAG,
|
|
37
|
+
JEST_CONFIG_FILE_NAMES: () => JEST_CONFIG_FILE_NAMES,
|
|
38
|
+
hasJestConfig: () => hasJestConfig,
|
|
39
|
+
test: () => test,
|
|
40
|
+
testCoverage: () => testCoverage,
|
|
41
|
+
testWatch: () => testWatch
|
|
42
|
+
});
|
|
43
|
+
module.exports = __toCommonJS(jest_exports);
|
|
44
|
+
var import_node_fs = require('node:fs');
|
|
45
|
+
var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
|
|
46
|
+
var import_npm = require('../npm.cjs');
|
|
47
|
+
var import_package_manager = require('../package-manager.cjs');
|
|
48
|
+
var import_repo_paths = require('../repo-paths.cjs');
|
|
49
|
+
var import_root = require('../root.cjs');
|
|
50
|
+
var import_jest_config = require('./jest-config.cjs');
|
|
51
|
+
const JEST_CONFIG_FILE_NAMES = [
|
|
52
|
+
"jest.config.cjs",
|
|
53
|
+
"jest.config.cts",
|
|
54
|
+
"jest.config.js",
|
|
55
|
+
"jest.config.json",
|
|
56
|
+
"jest.config.mjs",
|
|
57
|
+
"jest.config.mts",
|
|
58
|
+
"jest.config.ts"
|
|
59
|
+
];
|
|
60
|
+
const EXPERIMENTAL_VM_MODULES_FLAG = "--experimental-vm-modules";
|
|
61
|
+
async function hasJestConfig() {
|
|
62
|
+
if (JEST_CONFIG_FILE_NAMES.some((fileName) => (0, import_node_fs.existsSync)((0, import_root.resolvePathFromRootSafe)({ path: fileName })))) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
if (!(0, import_node_fs.existsSync)((0, import_root.resolvePathFromRootSafe)({ path: import_repo_paths.RepoPaths.PackageJson }))) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
const packageJson = await (0, import_npm.readPackageJson)();
|
|
69
|
+
return Object.hasOwn(packageJson, "jest");
|
|
70
|
+
}
|
|
71
|
+
async function test(options = {}) {
|
|
72
|
+
await runJest([], options);
|
|
73
|
+
}
|
|
74
|
+
async function testCoverage(options = {}) {
|
|
75
|
+
const threshold = options.minCoverageInPercents ?? 0;
|
|
76
|
+
const coverageThreshold = {
|
|
77
|
+
global: {
|
|
78
|
+
branches: threshold,
|
|
79
|
+
functions: threshold,
|
|
80
|
+
lines: threshold,
|
|
81
|
+
statements: threshold
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
await runJest(["--coverage", `--coverageThreshold=${JSON.stringify(coverageThreshold)}`], options);
|
|
85
|
+
}
|
|
86
|
+
async function testWatch(options = {}) {
|
|
87
|
+
await runJest(["--watch"], options, true);
|
|
88
|
+
}
|
|
89
|
+
function addExperimentalVmModulesFlag(nodeOptions) {
|
|
90
|
+
const flags = (nodeOptions ?? "").split(/\s+/).filter(Boolean);
|
|
91
|
+
if (!flags.includes(EXPERIMENTAL_VM_MODULES_FLAG)) {
|
|
92
|
+
flags.push(EXPERIMENTAL_VM_MODULES_FLAG);
|
|
93
|
+
}
|
|
94
|
+
return flags.join(" ");
|
|
95
|
+
}
|
|
96
|
+
async function runJest(runArguments, options, isInteractive = false) {
|
|
97
|
+
const { esm = (0, import_jest_config.isEsmPackage)(), projects = [] } = options;
|
|
98
|
+
const projectArguments = projects.length > 0 ? ["--selectProjects", ...projects] : [];
|
|
99
|
+
const env = esm ? { NODE_OPTIONS: addExperimentalVmModulesFlag(import_node_process.default.env["NODE_OPTIONS"]) } : {};
|
|
100
|
+
await (0, import_root.execFromRoot)([...(0, import_package_manager.resolveToolCommand)({ tool: "jest" }), ...runArguments, ...projectArguments], { env, isInteractive });
|
|
101
|
+
}
|
|
102
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
103
|
+
0 && (module.exports = {
|
|
104
|
+
EXPERIMENTAL_VM_MODULES_FLAG,
|
|
105
|
+
JEST_CONFIG_FILE_NAMES,
|
|
106
|
+
hasJestConfig,
|
|
107
|
+
test,
|
|
108
|
+
testCoverage,
|
|
109
|
+
testWatch
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9qZXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBydW5uaW5nIHRlc3RzIHVzaW5nIHRoZSBKZXN0IGZyYW1ld29yay5cbiAqL1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyByZWFkUGFja2FnZUpzb24gfSBmcm9tICcuLi9ucG0udHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7IGlzRXNtUGFja2FnZSB9IGZyb20gJy4vamVzdC1jb25maWcudHMnO1xuXG4vKipcbiAqIEV2ZXJ5IGZpbGUgamVzdCByZWFkcyBpdHMgY29uZmlndXJhdGlvbiBmcm9tLCBiZXNpZGVzIHRoZSBgamVzdGAga2V5IG9mIGBwYWNrYWdlLmpzb25gLlxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vamVzdGpzLmlvL2RvY3MvY29uZmlndXJhdGlvbn1cbiAqL1xuZXhwb3J0IGNvbnN0IEpFU1RfQ09ORklHX0ZJTEVfTkFNRVM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAnamVzdC5jb25maWcuY2pzJyxcbiAgJ2plc3QuY29uZmlnLmN0cycsXG4gICdqZXN0LmNvbmZpZy5qcycsXG4gICdqZXN0LmNvbmZpZy5qc29uJyxcbiAgJ2plc3QuY29uZmlnLm1qcycsXG4gICdqZXN0LmNvbmZpZy5tdHMnLFxuICAnamVzdC5jb25maWcudHMnXG5dO1xuXG4vKipcbiAqIFRoZSBOb2RlIGZsYWcgamVzdCdzIEVTTSBsb2FkZXIgbmVlZHM6IGl0IGlzIGJ1aWx0IG9uIGB2bS5TeW50aGV0aWNNb2R1bGVgLCB3aGljaCBOb2RlIG9ubHkgZXhwb3NlcyB1bmRlciBpdC5cbiAqIFdpdGhvdXQgaXQgZXZlcnkgRVNNIHN1aXRlIGZhaWxzIHRvIGxvYWQgd2l0aCBgTXVzdCB1c2UgaW1wb3J0IHRvIGxvYWQgRVMgTW9kdWxlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEVYUEVSSU1FTlRBTF9WTV9NT0RVTEVTX0ZMQUcgPSAnLS1leHBlcmltZW50YWwtdm0tbW9kdWxlcyc7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cyB3aXRoIGNvdmVyYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RDb3ZlcmFnZU9wdGlvbnMgZXh0ZW5kcyBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIGNvdmVyYWdlIHBlcmNlbnRhZ2UgcmVxdWlyZWQsIGZvciBsaW5lcywgZnVuY3Rpb25zLCBicmFuY2hlcyBhbmQgc3RhdGVtZW50cyBhbGlrZS4gSWYgdGhlIGFjdHVhbCBjb3ZlcmFnZVxuICAgKiBmYWxscyBiZWxvdyBpdCwgamVzdCBleGl0cyB3aXRoIGEgbm9uLXplcm8gY29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYDBgXG4gICAqL1xuICByZWFkb25seSBtaW5Db3ZlcmFnZUluUGVyY2VudHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgcnVubmluZyB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGplc3QgcnVucyB0aGUgc3VpdGUgYXMgRVMgbW9kdWxlcywgd2hpY2ggYWRkcyB7QGxpbmsgRVhQRVJJTUVOVEFMX1ZNX01PRFVMRVNfRkxBR30gdG8gYE5PREVfT1BUSU9OU2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYCB3aGVuIGBwYWNrYWdlLmpzb25gIGRlY2xhcmVzIGBcInR5cGVcIjogXCJtb2R1bGVcImAsIHRoZSBydWxlIGBkZWZpbmVKZXN0Q29uZmlnYCBmb2xsb3dzIHRvb1xuICAgKi9cbiAgcmVhZG9ubHkgZXNtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByb2plY3RzIHRvIHJ1biwgYnkgdGhlaXIgYGRpc3BsYXlOYW1lYCwgcGFzc2VkIHRvIGplc3QncyBgLS1zZWxlY3RQcm9qZWN0c2AuIFVubGlrZSB2aXRlc3QncyBydW5uZXIsIGEgbmFtZVxuICAgKiBtYXRjaGVzIG9ubHkgaXRzZWxmOiBqZXN0IGhhcyBubyBgbmFtZToqYCBmb3JtLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBydW5uaW5nIHRlc3RzIGluIHdhdGNoIG1vZGUuXG4gKi9cbmV4cG9ydCB0eXBlIFRlc3RXYXRjaE9wdGlvbnMgPSBUZXN0T3B0aW9ucztcblxuLyoqXG4gKiBTYXlzIHdoZXRoZXIgdGhlIHByb2plY3QgY29uZmlndXJlcyBqZXN0LlxuICpcbiAqIEByZXR1cm5zIFdoZXRoZXIgYSBqZXN0IGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgYSBgamVzdGAga2V5IGluIGBwYWNrYWdlLmpzb25gLCBleGlzdHMgYXQgdGhlIHByb2plY3Qgcm9vdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhc0plc3RDb25maWcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChKRVNUX0NPTkZJR19GSUxFX05BTUVTLnNvbWUoKGZpbGVOYW1lKSA9PiBleGlzdHNTeW5jKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogZmlsZU5hbWUgfSkpKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFleGlzdHNTeW5jKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogUmVwb1BhdGhzLlBhY2thZ2VKc29uIH0pKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHBhY2thZ2VKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKc29uKCk7XG4gIHJldHVybiBPYmplY3QuaGFzT3duKHBhY2thZ2VKc29uLCAnamVzdCcpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIHRlc3QuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRlc3RzIGhhdmUgY29tcGxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdChvcHRpb25zOiBUZXN0T3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHJ1bkplc3QoW10sIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUgd2l0aCBjb3ZlcmFnZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvdmVyYWdlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHRlc3RzIGhhdmUgY29tcGxldGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdENvdmVyYWdlKG9wdGlvbnM6IFRlc3RDb3ZlcmFnZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB0aHJlc2hvbGQgPSBvcHRpb25zLm1pbkNvdmVyYWdlSW5QZXJjZW50cyA/PyAwO1xuICBjb25zdCBjb3ZlcmFnZVRocmVzaG9sZCA9IHtcbiAgICBnbG9iYWw6IHtcbiAgICAgIGJyYW5jaGVzOiB0aHJlc2hvbGQsXG4gICAgICBmdW5jdGlvbnM6IHRocmVzaG9sZCxcbiAgICAgIGxpbmVzOiB0aHJlc2hvbGQsXG4gICAgICBzdGF0ZW1lbnRzOiB0aHJlc2hvbGRcbiAgICB9XG4gIH07XG4gIGF3YWl0IHJ1bkplc3QoWyctLWNvdmVyYWdlJywgYC0tY292ZXJhZ2VUaHJlc2hvbGQ9JHtKU09OLnN0cmluZ2lmeShjb3ZlcmFnZVRocmVzaG9sZCl9YF0sIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUgaW4gd2F0Y2ggbW9kZSwgcmUtcnVubmluZyB0aGUgdGVzdHMgdGhlIGNoYW5nZWQgZmlsZXMgYWZmZWN0LiBKZXN0IG5lZWRzIGEgZ2l0IG9yIE1lcmN1cmlhbFxuICogcmVwb3NpdG9yeSBmb3IgdGhhdC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgdGVzdC5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgd2F0Y2hlciBleGl0cy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3RXYXRjaChvcHRpb25zOiBUZXN0V2F0Y2hPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgcnVuSmVzdChbJy0td2F0Y2gnXSwgb3B0aW9ucywgdHJ1ZSk7XG59XG5cbi8qKlxuICogQXBwZW5kcyB7QGxpbmsgRVhQRVJJTUVOVEFMX1ZNX01PRFVMRVNfRkxBR30gdG8gYSBgTk9ERV9PUFRJT05TYCB2YWx1ZSwga2VlcGluZyB3aGF0ZXZlciBpdCBhbHJlYWR5IGhvbGRzLlxuICpcbiAqIEBwYXJhbSBub2RlT3B0aW9ucyAtIFRoZSBpbmhlcml0ZWQgYE5PREVfT1BUSU9OU2AuXG4gKiBAcmV0dXJucyBUaGUgYE5PREVfT1BUSU9OU2AgamVzdCBydW5zIHdpdGguXG4gKi9cbmZ1bmN0aW9uIGFkZEV4cGVyaW1lbnRhbFZtTW9kdWxlc0ZsYWcobm9kZU9wdGlvbnM6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGNvbnN0IGZsYWdzID0gKG5vZGVPcHRpb25zID8/ICcnKS5zcGxpdCgvXFxzKy8pLmZpbHRlcihCb29sZWFuKTtcbiAgaWYgKCFmbGFncy5pbmNsdWRlcyhFWFBFUklNRU5UQUxfVk1fTU9EVUxFU19GTEFHKSkge1xuICAgIGZsYWdzLnB1c2goRVhQRVJJTUVOVEFMX1ZNX01PRFVMRVNfRkxBRyk7XG4gIH1cblxuICByZXR1cm4gZmxhZ3Muam9pbignICcpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGplc3QgQ0xJIGZyb20gdGhlIHByb2plY3Qgcm9vdC5cbiAqXG4gKiBAcGFyYW0gcnVuQXJndW1lbnRzIC0gVGhlIGFyZ3VtZW50cyB0aGF0IHNlbGVjdCB3aGF0IGplc3QgZG9lcy5cbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBUZXN0T3B0aW9uc30uXG4gKiBAcGFyYW0gaXNJbnRlcmFjdGl2ZSAtIFdoZXRoZXIgamVzdCBnZXRzIHRoZSB0ZXJtaW5hbCwgYXMgaXRzIHdhdGNoIG1vZGUgbmVlZHMgdG8gcmVhZCBrZXlzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIGplc3QgZXhpdHMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJ1bkplc3QocnVuQXJndW1lbnRzOiBzdHJpbmdbXSwgb3B0aW9uczogVGVzdE9wdGlvbnMsIGlzSW50ZXJhY3RpdmUgPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGVzbSA9IGlzRXNtUGFja2FnZSgpLCBwcm9qZWN0cyA9IFtdIH0gPSBvcHRpb25zO1xuICBjb25zdCBwcm9qZWN0QXJndW1lbnRzID0gcHJvamVjdHMubGVuZ3RoID4gMCA/IFsnLS1zZWxlY3RQcm9qZWN0cycsIC4uLnByb2plY3RzXSA6IFtdO1xuICBjb25zdCBlbnYgPSBlc20gPyB7IE5PREVfT1BUSU9OUzogYWRkRXhwZXJpbWVudGFsVm1Nb2R1bGVzRmxhZyhwcm9jZXNzLmVudlsnTk9ERV9PUFRJT05TJ10pIH0gOiB7fTtcblxuICBhd2FpdCBleGVjRnJvbVJvb3QoWy4uLnJlc29sdmVUb29sQ29tbWFuZCh7IHRvb2w6ICdqZXN0JyB9KSwgLi4ucnVuQXJndW1lbnRzLCAuLi5wcm9qZWN0QXJndW1lbnRzXSwgeyBlbnYsIGlzSW50ZXJhY3RpdmUgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHFCQUEyQjtBQUMzQiwwQkFBb0I7QUFFcEIsaUJBQWdDO0FBQ2hDLDZCQUFtQztBQUNuQyx3QkFBMEI7QUFDMUIsa0JBR087QUFDUCx5QkFBNkI7QUFPdEIsTUFBTSx5QkFBNEM7QUFBQSxFQUN2RDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBTU8sTUFBTSwrQkFBK0I7QUEyQzVDLGVBQXNCLGdCQUFrQztBQUN0RCxNQUFJLHVCQUF1QixLQUFLLENBQUMsaUJBQWEsK0JBQVcscUNBQXdCLEVBQUUsTUFBTSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUc7QUFDdEcsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLEtBQUMsK0JBQVcscUNBQXdCLEVBQUUsTUFBTSw0QkFBVSxZQUFZLENBQUMsQ0FBQyxHQUFHO0FBQ3pFLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxjQUFjLFVBQU0sNEJBQWdCO0FBQzFDLFNBQU8sT0FBTyxPQUFPLGFBQWEsTUFBTTtBQUMxQztBQVFBLGVBQXNCLEtBQUssVUFBdUIsQ0FBQyxHQUFrQjtBQUNuRSxRQUFNLFFBQVEsQ0FBQyxHQUFHLE9BQU87QUFDM0I7QUFRQSxlQUFzQixhQUFhLFVBQStCLENBQUMsR0FBa0I7QUFDbkYsUUFBTSxZQUFZLFFBQVEseUJBQXlCO0FBQ25ELFFBQU0sb0JBQW9CO0FBQUEsSUFDeEIsUUFBUTtBQUFBLE1BQ04sVUFBVTtBQUFBLE1BQ1YsV0FBVztBQUFBLE1BQ1gsT0FBTztBQUFBLE1BQ1AsWUFBWTtBQUFBLElBQ2Q7QUFBQSxFQUNGO0FBQ0EsUUFBTSxRQUFRLENBQUMsY0FBYyx1QkFBdUIsS0FBSyxVQUFVLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxPQUFPO0FBQ25HO0FBU0EsZUFBc0IsVUFBVSxVQUE0QixDQUFDLEdBQWtCO0FBQzdFLFFBQU0sUUFBUSxDQUFDLFNBQVMsR0FBRyxTQUFTLElBQUk7QUFDMUM7QUFRQSxTQUFTLDZCQUE2QixhQUF5QztBQUM3RSxRQUFNLFNBQVMsZUFBZSxJQUFJLE1BQU0sS0FBSyxFQUFFLE9BQU8sT0FBTztBQUM3RCxNQUFJLENBQUMsTUFBTSxTQUFTLDRCQUE0QixHQUFHO0FBQ2pELFVBQU0sS0FBSyw0QkFBNEI7QUFBQSxFQUN6QztBQUVBLFNBQU8sTUFBTSxLQUFLLEdBQUc7QUFDdkI7QUFVQSxlQUFlLFFBQVEsY0FBd0IsU0FBc0IsZ0JBQWdCLE9BQXNCO0FBQ3pHLFFBQU0sRUFBRSxVQUFNLGlDQUFhLEdBQUcsV0FBVyxDQUFDLEVBQUUsSUFBSTtBQUNoRCxRQUFNLG1CQUFtQixTQUFTLFNBQVMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFFBQVEsSUFBSSxDQUFDO0FBQ3BGLFFBQU0sTUFBTSxNQUFNLEVBQUUsY0FBYyw2QkFBNkIsb0JBQUFBLFFBQVEsSUFBSSxjQUFjLENBQUMsRUFBRSxJQUFJLENBQUM7QUFFakcsWUFBTSwwQkFBYSxDQUFDLE9BQUcsMkNBQW1CLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxHQUFHLGNBQWMsR0FBRyxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssY0FBYyxDQUFDO0FBQzVIOyIsCiAgIm5hbWVzIjogWyJwcm9jZXNzIl0KfQo=
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
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>;
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
extractIds,
|
|
16
16
|
formatBrokenLinks,
|
|
17
17
|
NETWORK_FAILURE_STATUS,
|
|
18
|
+
parseRetryAfterInMilliseconds,
|
|
18
19
|
resolveWithinRoot
|
|
19
20
|
} from "./link-check.mjs";
|
|
20
21
|
import {
|
|
@@ -77,9 +78,12 @@ async function fetchUrlStatus(url) {
|
|
|
77
78
|
try {
|
|
78
79
|
const response = await fetch(url, { signal: controller.signal });
|
|
79
80
|
await response.body?.cancel();
|
|
80
|
-
return
|
|
81
|
+
return {
|
|
82
|
+
retryAfterInMilliseconds: parseRetryAfterInMilliseconds(response.headers.get("retry-after"), Date.now()),
|
|
83
|
+
status: response.status
|
|
84
|
+
};
|
|
81
85
|
} catch {
|
|
82
|
-
return NETWORK_FAILURE_STATUS;
|
|
86
|
+
return { status: NETWORK_FAILURE_STATUS };
|
|
83
87
|
} finally {
|
|
84
88
|
globalThis.clearTimeout(timeoutId);
|
|
85
89
|
}
|
|
@@ -110,4 +114,4 @@ async function readPages(outputRootPath, allFiles) {
|
|
|
110
114
|
export {
|
|
111
115
|
assertDocsLinksResolve
|
|
112
116
|
};
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLWxpbmtzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVmFsaWRhdGVzIHRoZSBsaW5rcyBlbWl0dGVkIGJ5IGEgYnVpbHQgZG9jdW1lbnRhdGlvbiBzaXRlLlxuICpcbiAqIEludGVybmFsIGxpbmtzIGFyZSByZXNvbHZlZCBvZmZsaW5lIGFnYWluc3QgdGhlIGJ1aWxkIG91dHB1dDsgZXh0ZXJuYWwgbGlua3MgYXJlIHZhbGlkYXRlZCBvdmVyIHRoZSBuZXR3b3JrLFxuICogZGVkdXBsaWNhdGVkIHNvIGVhY2ggdW5pcXVlIFVSTCBpcyBmZXRjaGVkIGF0IG1vc3Qgb25jZS4gU2VlIHtAbGluayAuL2xpbmstY2hlY2sudHN9IGZvciB0aGUgZGVjaXNpb24gbG9naWMuXG4gKlxuICogSXQgYWxzbyBmYWlscyBvbiBhIEdpdEh1YiBhbGVydCB0aGF0IHJlYWNoZWQgYSBwYWdlIGFzIGEgcGxhaW4gYmxvY2txdW90ZSAoc2VlIHtAbGluayAuL3VucmVuZGVyZWQtYWxlcnRzLnRzfSksXG4gKiBzaW5jZSBub3RoaW5nIGVsc2Ugbm90aWNlcyB3aGVuIHRoZSBjb252ZXJzaW9uIHN0b3BzLlxuICovXG5cbmltcG9ydCB7XG4gIHJlYWRkaXIsXG4gIHJlYWRGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgRG9jdW1lbnRhdGlvblBhZ2UsXG4gIExpbmtDaGVja0ZpbGVTeXN0ZW1cbn0gZnJvbSAnLi9saW5rLWNoZWNrLnRzJztcblxuaW1wb3J0IHtcbiAgY29sbGVjdEJyb2tlbkV4dGVybmFsTGlua3MsXG4gIGNvbGxlY3RCcm9rZW5MaW5rcyxcbiAgY29sbGVjdEV4dGVybmFsVGFyZ2V0cyxcbiAgZXh0cmFjdElkcyxcbiAgZm9ybWF0QnJva2VuTGlua3MsXG4gIE5FVFdPUktfRkFJTFVSRV9TVEFUVVMsXG4gIHJlc29sdmVXaXRoaW5Sb290XG59IGZyb20gJy4vbGluay1jaGVjay50cyc7XG5pbXBvcnQge1xuICBjb2xsZWN0VW5yZW5kZXJlZEFsZXJ0cyxcbiAgZm9ybWF0VW5yZW5kZXJlZEFsZXJ0c1xufSBmcm9tICcuL3VucmVuZGVyZWQtYWxlcnRzLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgYXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZVBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgb3V0cHV0IGZvbGRlciwgbm9ybWFsbHkgYDxkb2NzPi9kaXN0YC5cbiAgICovXG4gIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWJzb2x1dGUgVVJMIHRoZSBzaXRlIGlzIHNlcnZlZCBmcm9tLCB3aXRoIGEgdHJhaWxpbmcgc2xhc2gsIGUuZy4gYGh0dHBzOi8vbW5hb3Vtb3YuZGV2L3R5cGVzY3JpcHQtbGliL2AuXG4gICAqL1xuICByZWFkb25seSBzaXRlQmFzZVVybDogc3RyaW5nO1xufVxuXG5jb25zdCBFWFRFUk5BTF9MSU5LX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTID0gMTBfMDAwO1xuY29uc3QgRVhURVJOQUxfTElOS19DT05DVVJSRU5DWSA9IDIwO1xuY29uc3QgSFRNTF9GSUxFX0VYVEVOU0lPTiA9ICcuaHRtbCc7XG5cbi8vIFRoZSBob3N0IHNlcnZlcyB0aGlzIHBhZ2UgYXMgdGhlIGZhbGxiYWNrIGZvciBhbnkgbWlzc2luZyBwYXRoICh3aXRoIGEgNDA0IHN0YXR1cyksIHNvIGl0IGlzIG5vdCBhXG4vLyByZWFsIG5hdmlnYWJsZSByb3V0ZTogU3RhcmxpZ2h0IGdpdmVzIGl0IGEgc2VsZi1gcmVsPVwiY2Fub25pY2FsXCJgIG9mIGAvNDA0L2AgdGhhdCBpbmhlcmVudGx5IGNhbm5vdFxuLy8gcmVzb2x2ZSwgYW5kIGl0cyBib2R5IGxpbmtzIChuYXYsIGxvZ28pIGFyZSBpZGVudGljYWwgdG8gZXZlcnkgcmVhbCBwYWdlIHdlIGFscmVhZHkgdmFsaWRhdGUuXG5jb25zdCBGQUxMQkFDS19QQUdFX1JFTEFUSVZFX1BBVEggPSAnNDA0Lmh0bWwnO1xuXG5pbnRlcmZhY2UgQ3JlYXRlRmlsZVN5c3RlbVBhcmFtcyB7XG4gIHJlYWRvbmx5IGFsbEZpbGVzOiBTZXQ8c3RyaW5nPjtcbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhZ2VzOiBEb2N1bWVudGF0aW9uUGFnZVtdO1xufVxuXG4vKipcbiAqIENoZWNrcyBldmVyeSBsaW5rIG9mIHRoZSBidWlsdCBzaXRlLCBhbmQgdGhhdCBldmVyeSBHaXRIdWIgYWxlcnQgcmVuZGVyZWQgYXMgYW4gYXNpZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucy5cbiAqIEB0aHJvd3MgSWYgYW4gYWxlcnQgcmVuZGVyZWQgYXMgYSBwbGFpbiBibG9ja3F1b3RlLCBvciBhIGxpbmsgZG9lcyBub3QgcmVzb2x2ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzc2VydERvY3NMaW5rc1Jlc29sdmUob3B0aW9uczogQXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZVBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBvdXRwdXREaXJlY3RvcnkgPSByZXNvbHZlKG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5KS5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKTtcbiAgY29uc3QgYWxsRmlsZXMgPSBhd2FpdCBnZXRBbGxGaWxlcyhvdXRwdXREaXJlY3RvcnkpO1xuICBjb25zdCBwYWdlcyA9IGF3YWl0IHJlYWRQYWdlcyhvdXRwdXREaXJlY3RvcnksIGFsbEZpbGVzKTtcblxuICAvLyBPZmZsaW5lIGFuZCBpbnN0YW50LCBzbyBpdCBydW5zIGJlZm9yZSB0aGUgbmV0d29yayBoYWxmIGFuZCBmYWlscyBmaXJzdC5cbiAgY29uc3QgdW5yZW5kZXJlZEFsZXJ0cyA9IGNvbGxlY3RVbnJlbmRlcmVkQWxlcnRzKHBhZ2VzKTtcbiAgaWYgKHVucmVuZGVyZWRBbGVydHMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBEZXRlY3RlZCAke1N0cmluZyh1bnJlbmRlcmVkQWxlcnRzLmxlbmd0aCl9IEdpdEh1YiBhbGVydChzKSByZW5kZXJlZCBhcyBhIHBsYWluIGJsb2NrcXVvdGUgaW5zdGVhZCBvZiBhbiBhc2lkZTpcXG4ke2Zvcm1hdFVucmVuZGVyZWRBbGVydHModW5yZW5kZXJlZEFsZXJ0cyl9YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbnRlcm5hbEJyb2tlbkxpbmtzID0gY29sbGVjdEJyb2tlbkxpbmtzKHBhZ2VzLCBjcmVhdGVGaWxlU3lzdGVtKHsgYWxsRmlsZXMsIG91dHB1dERpcmVjdG9yeSwgcGFnZXMgfSksIG9wdGlvbnMuc2l0ZUJhc2VVcmwpO1xuXG4gIGNvbnN0IGV4dGVybmFsVGFyZ2V0cyA9IGNvbGxlY3RFeHRlcm5hbFRhcmdldHMocGFnZXMsIG9wdGlvbnMuc2l0ZUJhc2VVcmwpO1xuICBjb25zdCBleHRlcm5hbEJyb2tlbkxpbmtzID0gYXdhaXQgY29sbGVjdEJyb2tlbkV4dGVybmFsTGlua3MoZXh0ZXJuYWxUYXJnZXRzLCBmZXRjaFVybFN0YXR1cywgRVhURVJOQUxfTElOS19DT05DVVJSRU5DWSk7XG5cbiAgY29uc3QgYnJva2VuTGlua3MgPSBbLi4uaW50ZXJuYWxCcm9rZW5MaW5rcywgLi4uZXh0ZXJuYWxCcm9rZW5MaW5rc107XG4gIGlmIChicm9rZW5MaW5rcy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZXRlY3RlZCAke1N0cmluZyhicm9rZW5MaW5rcy5sZW5ndGgpfSBicm9rZW4gZG9jdW1lbnRhdGlvbiBsaW5rKHMpOlxcbiR7Zm9ybWF0QnJva2VuTGlua3MoYnJva2VuTGlua3MpfWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGVTeXN0ZW0ocGFyYW1zOiBDcmVhdGVGaWxlU3lzdGVtUGFyYW1zKTogTGlua0NoZWNrRmlsZVN5c3RlbSB7XG4gIGNvbnN0IHsgYWxsRmlsZXMsIG91dHB1dERpcmVjdG9yeSwgcGFnZXMgfSA9IHBhcmFtcztcbiAgY29uc3QgaHRtbEJ5UmVsYXRpdmVQYXRoID0gbmV3IE1hcChwYWdlcy5tYXAoKHBhZ2UpID0+IFtwYWdlLnJlbGF0aXZlUGF0aCwgcGFnZS5odG1sXSkpO1xuICBjb25zdCBpZHNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4oKTtcblxuICByZXR1cm4ge1xuICAgIHJlYWRJZHM6IChwYWdlS2V5KTogU2V0PHN0cmluZz4gPT4ge1xuICAgICAgbGV0IGlkcyA9IGlkc0NhY2hlLmdldChwYWdlS2V5KTtcbiAgICAgIGlmIChpZHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBodG1sID0gaHRtbEJ5UmVsYXRpdmVQYXRoLmdldChwYWdlS2V5KTtcbiAgICAgICAgaWRzID0gaHRtbCA9PT0gdW5kZWZpbmVkID8gbmV3IFNldDxzdHJpbmc+KCkgOiBleHRyYWN0SWRzKGh0bWwpO1xuICAgICAgICBpZHNDYWNoZS5zZXQocGFnZUtleSwgaWRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGlkcztcbiAgICB9LFxuICAgIHJlc29sdmVFeGlzdGluZ1BhZ2U6IChvdXRwdXRSZWxhdGl2ZVBhdGgpOiBudWxsIHwgc3RyaW5nID0+IHtcbiAgICAgIGlmIChyZXNvbHZlV2l0aGluUm9vdChvdXRwdXREaXJlY3RvcnksIG91dHB1dFJlbGF0aXZlUGF0aCkgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyaW1tZWQgPSBvdXRwdXRSZWxhdGl2ZVBhdGgucmVwbGFjZSgvXFwvJC91LCAnJyk7XG4gICAgICBjb25zdCBjYW5kaWRhdGVzID0gdHJpbW1lZCA9PT0gJycgPyBbJ2luZGV4Lmh0bWwnXSA6IFt0cmltbWVkLCBgJHt0cmltbWVkfS9pbmRleC5odG1sYF07XG4gICAgICByZXR1cm4gY2FuZGlkYXRlcy5maW5kKChjYW5kaWRhdGUpID0+IGFsbEZpbGVzLmhhcyhjYW5kaWRhdGUpKSA/PyBudWxsO1xuICAgIH1cbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hVcmxTdGF0dXModXJsOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCB0aW1lb3V0SWQgPSBnbG9iYWxUaGlzLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfSwgRVhURVJOQUxfTElOS19USU1FT1VUX0lOX01JTExJU0VDT05EUyk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgeyBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsIH0pO1xuICAgIC8vIENhbmNlbCB0aGUgdW5yZWFkIGJvZHkgc28gdW5kaWNpIHJlbGVhc2VzIHRoZSBjb25uZWN0aW9uIGltbWVkaWF0ZWx5LlxuICAgIC8vIFdpdGhvdXQgdGhpcyB0aGUgcGVyLWhvc3QgY29ubmVjdGlvbiBwb29sIHN0YWxscyBhbmQgc2FtZS1ob3N0IHJlcXVlc3RzXG4gICAgLy8gc2VyaWFsaXplLCB0dXJuaW5nIGEgfjNzIHJ1biBpbnRvIG1pbnV0ZXMuXG4gICAgYXdhaXQgcmVzcG9uc2UuYm9keT8uY2FuY2VsKCk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cztcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIE5FVFdPUktfRkFJTFVSRV9TVEFUVVM7XG4gIH0gZmluYWxseSB7XG4gICAgZ2xvYmFsVGhpcy5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxGaWxlcyhvdXRwdXRSb290UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTZXQ8c3RyaW5nPj4ge1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcmVhZGRpcihvdXRwdXRSb290UGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gIGNvbnN0IGZpbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmICghZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHJlc29sdmUoZW50cnkucGFyZW50UGF0aCwgZW50cnkubmFtZSkucmVwbGFjZUFsbCgnXFxcXCcsICcvJyk7XG4gICAgZmlsZXMuYWRkKGFic29sdXRlUGF0aC5zbGljZShgJHtvdXRwdXRSb290UGF0aH0vYC5sZW5ndGgpKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFBhZ2VzKG91dHB1dFJvb3RQYXRoOiBzdHJpbmcsIGFsbEZpbGVzOiBTZXQ8c3RyaW5nPik6IFByb21pc2U8RG9jdW1lbnRhdGlvblBhZ2VbXT4ge1xuICBjb25zdCBwYWdlczogRG9jdW1lbnRhdGlvblBhZ2VbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHJlbGF0aXZlUGF0aCBvZiBhbGxGaWxlcykge1xuICAgIGlmICghcmVsYXRpdmVQYXRoLmVuZHNXaXRoKEhUTUxfRklMRV9FWFRFTlNJT04pIHx8IHJlbGF0aXZlUGF0aCA9PT0gRkFMTEJBQ0tfUEFHRV9SRUxBVElWRV9QQVRIKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBodG1sID0gYXdhaXQgcmVhZEZpbGUocmVzb2x2ZShvdXRwdXRSb290UGF0aCwgcmVsYXRpdmVQYXRoKSwgJ3V0Zi04Jyk7XG4gICAgcGFnZXMucHVzaCh7IGh0bWwsIHJlbGF0aXZlUGF0aCB9KTtcbiAgfVxuXG4gIHJldHVybiBw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
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLWxpbmtzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVmFsaWRhdGVzIHRoZSBsaW5rcyBlbWl0dGVkIGJ5IGEgYnVpbHQgZG9jdW1lbnRhdGlvbiBzaXRlLlxuICpcbiAqIEludGVybmFsIGxpbmtzIGFyZSByZXNvbHZlZCBvZmZsaW5lIGFnYWluc3QgdGhlIGJ1aWxkIG91dHB1dDsgZXh0ZXJuYWwgbGlua3MgYXJlIHZhbGlkYXRlZCBvdmVyIHRoZSBuZXR3b3JrLFxuICogZGVkdXBsaWNhdGVkIHNvIGVhY2ggdW5pcXVlIFVSTCBpcyBmZXRjaGVkIGF0IG1vc3Qgb25jZS4gU2VlIHtAbGluayAuL2xpbmstY2hlY2sudHN9IGZvciB0aGUgZGVjaXNpb24gbG9naWMuXG4gKlxuICogSXQgYWxzbyBmYWlscyBvbiBhIEdpdEh1YiBhbGVydCB0aGF0IHJlYWNoZWQgYSBwYWdlIGFzIGEgcGxhaW4gYmxvY2txdW90ZSAoc2VlIHtAbGluayAuL3VucmVuZGVyZWQtYWxlcnRzLnRzfSksXG4gKiBzaW5jZSBub3RoaW5nIGVsc2Ugbm90aWNlcyB3aGVuIHRoZSBjb252ZXJzaW9uIHN0b3BzLlxuICovXG5cbmltcG9ydCB7XG4gIHJlYWRkaXIsXG4gIHJlYWRGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgRG9jdW1lbnRhdGlvblBhZ2UsXG4gIEV4dGVybmFsTGlua1Byb2JlUmVzdWx0LFxuICBMaW5rQ2hlY2tGaWxlU3lzdGVtXG59IGZyb20gJy4vbGluay1jaGVjay50cyc7XG5cbmltcG9ydCB7XG4gIGNvbGxlY3RCcm9rZW5FeHRlcm5hbExpbmtzLFxuICBjb2xsZWN0QnJva2VuTGlua3MsXG4gIGNvbGxlY3RFeHRlcm5hbFRhcmdldHMsXG4gIGV4dHJhY3RJZHMsXG4gIGZvcm1hdEJyb2tlbkxpbmtzLFxuICBORVRXT1JLX0ZBSUxVUkVfU1RBVFVTLFxuICBwYXJzZVJldHJ5QWZ0ZXJJbk1pbGxpc2Vjb25kcyxcbiAgcmVzb2x2ZVdpdGhpblJvb3Rcbn0gZnJvbSAnLi9saW5rLWNoZWNrLnRzJztcbmltcG9ydCB7XG4gIGNvbGxlY3RVbnJlbmRlcmVkQWxlcnRzLFxuICBmb3JtYXRVbnJlbmRlcmVkQWxlcnRzXG59IGZyb20gJy4vdW5yZW5kZXJlZC1hbGVydHMudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBhc3NlcnREb2NzTGlua3NSZXNvbHZlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlcnREb2NzTGlua3NSZXNvbHZlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBidWlsZCBvdXRwdXQgZm9sZGVyLCBub3JtYWxseSBgPGRvY3M+L2Rpc3RgLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSBVUkwgdGhlIHNpdGUgaXMgc2VydmVkIGZyb20sIHdpdGggYSB0cmFpbGluZyBzbGFzaCwgZS5nLiBgaHR0cHM6Ly9tbmFvdW1vdi5kZXYvdHlwZXNjcmlwdC1saWIvYC5cbiAgICovXG4gIHJlYWRvbmx5IHNpdGVCYXNlVXJsOiBzdHJpbmc7XG59XG5cbmNvbnN0IEVYVEVSTkFMX0xJTktfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSAxMF8wMDA7XG5jb25zdCBFWFRFUk5BTF9MSU5LX0NPTkNVUlJFTkNZID0gMjA7XG5jb25zdCBIVE1MX0ZJTEVfRVhURU5TSU9OID0gJy5odG1sJztcblxuLy8gVGhlIGhvc3Qgc2VydmVzIHRoaXMgcGFnZSBhcyB0aGUgZmFsbGJhY2sgZm9yIGFueSBtaXNzaW5nIHBhdGggKHdpdGggYSA0MDQgc3RhdHVzKSwgc28gaXQgaXMgbm90IGFcbi8vIHJlYWwgbmF2aWdhYmxlIHJvdXRlOiBTdGFybGlnaHQgZ2l2ZXMgaXQgYSBzZWxmLWByZWw9XCJjYW5vbmljYWxcImAgb2YgYC80MDQvYCB0aGF0IGluaGVyZW50bHkgY2Fubm90XG4vLyByZXNvbHZlLCBhbmQgaXRzIGJvZHkgbGlua3MgKG5hdiwgbG9nbykgYXJlIGlkZW50aWNhbCB0byBldmVyeSByZWFsIHBhZ2Ugd2UgYWxyZWFkeSB2YWxpZGF0ZS5cbmNvbnN0IEZBTExCQUNLX1BBR0VfUkVMQVRJVkVfUEFUSCA9ICc0MDQuaHRtbCc7XG5cbmludGVyZmFjZSBDcmVhdGVGaWxlU3lzdGVtUGFyYW1zIHtcbiAgcmVhZG9ubHkgYWxsRmlsZXM6IFNldDxzdHJpbmc+O1xuICByZWFkb25seSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgcGFnZXM6IERvY3VtZW50YXRpb25QYWdlW107XG59XG5cbi8qKlxuICogQ2hlY2tzIGV2ZXJ5IGxpbmsgb2YgdGhlIGJ1aWx0IHNpdGUsIGFuZCB0aGF0IGV2ZXJ5IEdpdEh1YiBhbGVydCByZW5kZXJlZCBhcyBhbiBhc2lkZS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zLlxuICogQHRocm93cyBJZiBhbiBhbGVydCByZW5kZXJlZCBhcyBhIHBsYWluIGJsb2NrcXVvdGUsIG9yIGEgbGluayBkb2VzIG5vdCByZXNvbHZlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZShvcHRpb25zOiBBc3NlcnREb2NzTGlua3NSZXNvbHZlUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IG91dHB1dERpcmVjdG9yeSA9IHJlc29sdmUob3B0aW9ucy5vdXRwdXREaXJlY3RvcnkpLnJlcGxhY2VBbGwoJ1xcXFwnLCAnLycpO1xuICBjb25zdCBhbGxGaWxlcyA9IGF3YWl0IGdldEFsbEZpbGVzKG91dHB1dERpcmVjdG9yeSk7XG4gIGNvbnN0IHBhZ2VzID0gYXdhaXQgcmVhZFBhZ2VzKG91dHB1dERpcmVjdG9yeSwgYWxsRmlsZXMpO1xuXG4gIC8vIE9mZmxpbmUgYW5kIGluc3RhbnQsIHNvIGl0IHJ1bnMgYmVmb3JlIHRoZSBuZXR3b3JrIGhhbGYgYW5kIGZhaWxzIGZpcnN0LlxuICBjb25zdCB1bnJlbmRlcmVkQWxlcnRzID0gY29sbGVjdFVucmVuZGVyZWRBbGVydHMocGFnZXMpO1xuICBpZiAodW5yZW5kZXJlZEFsZXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYERldGVjdGVkICR7U3RyaW5nKHVucmVuZGVyZWRBbGVydHMubGVuZ3RoKX0gR2l0SHViIGFsZXJ0KHMpIHJlbmRlcmVkIGFzIGEgcGxhaW4gYmxvY2txdW90ZSBpbnN0ZWFkIG9mIGFuIGFzaWRlOlxcbiR7Zm9ybWF0VW5yZW5kZXJlZEFsZXJ0cyh1bnJlbmRlcmVkQWxlcnRzKX1gXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGludGVybmFsQnJva2VuTGlua3MgPSBjb2xsZWN0QnJva2VuTGlua3MocGFnZXMsIGNyZWF0ZUZpbGVTeXN0ZW0oeyBhbGxGaWxlcywgb3V0cHV0RGlyZWN0b3J5LCBwYWdlcyB9KSwgb3B0aW9ucy5zaXRlQmFzZVVybCk7XG5cbiAgY29uc3QgZXh0ZXJuYWxUYXJnZXRzID0gY29sbGVjdEV4dGVybmFsVGFyZ2V0cyhwYWdlcywgb3B0aW9ucy5zaXRlQmFzZVVybCk7XG4gIGNvbnN0IGV4dGVybmFsQnJva2VuTGlua3MgPSBhd2FpdCBjb2xsZWN0QnJva2VuRXh0ZXJuYWxMaW5rcyhleHRlcm5hbFRhcmdldHMsIGZldGNoVXJsU3RhdHVzLCBFWFRFUk5BTF9MSU5LX0NPTkNVUlJFTkNZKTtcblxuICBjb25zdCBicm9rZW5MaW5rcyA9IFsuLi5pbnRlcm5hbEJyb2tlbkxpbmtzLCAuLi5leHRlcm5hbEJyb2tlbkxpbmtzXTtcbiAgaWYgKGJyb2tlbkxpbmtzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERldGVjdGVkICR7U3RyaW5nKGJyb2tlbkxpbmtzLmxlbmd0aCl9IGJyb2tlbiBkb2N1bWVudGF0aW9uIGxpbmsocyk6XFxuJHtmb3JtYXRCcm9rZW5MaW5rcyhicm9rZW5MaW5rcyl9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRmlsZVN5c3RlbShwYXJhbXM6IENyZWF0ZUZpbGVTeXN0ZW1QYXJhbXMpOiBMaW5rQ2hlY2tGaWxlU3lzdGVtIHtcbiAgY29uc3QgeyBhbGxGaWxlcywgb3V0cHV0RGlyZWN0b3J5LCBwYWdlcyB9ID0gcGFyYW1zO1xuICBjb25zdCBodG1sQnlSZWxhdGl2ZVBhdGggPSBuZXcgTWFwKHBhZ2VzLm1hcCgocGFnZSkgPT4gW3BhZ2UucmVsYXRpdmVQYXRoLCBwYWdlLmh0bWxdKSk7XG4gIGNvbnN0IGlkc0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFNldDxzdHJpbmc+PigpO1xuXG4gIHJldHVybiB7XG4gICAgcmVhZElkczogKHBhZ2VLZXkpOiBTZXQ8c3RyaW5nPiA9PiB7XG4gICAgICBsZXQgaWRzID0gaWRzQ2FjaGUuZ2V0KHBhZ2VLZXkpO1xuICAgICAgaWYgKGlkcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGh0bWwgPSBodG1sQnlSZWxhdGl2ZVBhdGguZ2V0KHBhZ2VLZXkpO1xuICAgICAgICBpZHMgPSBodG1sID09PSB1bmRlZmluZWQgPyBuZXcgU2V0PHN0cmluZz4oKSA6IGV4dHJhY3RJZHMoaHRtbCk7XG4gICAgICAgIGlkc0NhY2hlLnNldChwYWdlS2V5LCBpZHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaWRzO1xuICAgIH0sXG4gICAgcmVzb2x2ZUV4aXN0aW5nUGFnZTogKG91dHB1dFJlbGF0aXZlUGF0aCk6IG51bGwgfCBzdHJpbmcgPT4ge1xuICAgICAgaWYgKHJlc29sdmVXaXRoaW5Sb290KG91dHB1dERpcmVjdG9yeSwgb3V0cHV0UmVsYXRpdmVQYXRoKSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHJpbW1lZCA9IG91dHB1dFJlbGF0aXZlUGF0aC5yZXBsYWNlKC9cXC8kL3UsICcnKTtcbiAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSB0cmltbWVkID09PSAnJyA/IFsnaW5kZXguaHRtbCddIDogW3RyaW1tZWQsIGAke3RyaW1tZWR9L2luZGV4Lmh0bWxgXTtcbiAgICAgIHJldHVybiBjYW5kaWRhdGVzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gYWxsRmlsZXMuaGFzKGNhbmRpZGF0ZSkpID8/IG51bGw7XG4gICAgfVxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFVybFN0YXR1cyh1cmw6IHN0cmluZyk6IFByb21pc2U8RXh0ZXJuYWxMaW5rUHJvYmVSZXN1bHQ+IHtcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgY29uc3QgdGltZW91dElkID0gZ2xvYmFsVGhpcy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICBjb250cm9sbGVyLmFib3J0KCk7XG4gIH0sIEVYVEVSTkFMX0xJTktfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHsgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KTtcbiAgICAvLyBDYW5jZWwgdGhlIHVucmVhZCBib2R5IHNvIHVuZGljaSByZWxlYXNlcyB0aGUgY29ubmVjdGlvbiBpbW1lZGlhdGVseS5cbiAgICAvLyBXaXRob3V0IHRoaXMgdGhlIHBlci1ob3N0IGNvbm5lY3Rpb24gcG9vbCBzdGFsbHMgYW5kIHNhbWUtaG9zdCByZXF1ZXN0c1xuICAgIC8vIHNlcmlhbGl6ZSwgdHVybmluZyBhIH4zcyBydW4gaW50byBtaW51dGVzLlxuICAgIGF3YWl0IHJlc3BvbnNlLmJvZHk/LmNhbmNlbCgpO1xuICAgIHJldHVybiB7XG4gICAgICByZXRyeUFmdGVySW5NaWxsaXNlY29uZHM6IHBhcnNlUmV0cnlBZnRlckluTWlsbGlzZWNvbmRzKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdyZXRyeS1hZnRlcicpLCBEYXRlLm5vdygpKSxcbiAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzXG4gICAgfTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiBORVRXT1JLX0ZBSUxVUkVfU1RBVFVTIH07XG4gIH0gZmluYWxseSB7XG4gICAgZ2xvYmFsVGhpcy5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxGaWxlcyhvdXRwdXRSb290UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTZXQ8c3RyaW5nPj4ge1xuICBjb25zdCBlbnRyaWVzID0gYXdhaXQgcmVhZGRpcihvdXRwdXRSb290UGF0aCwgeyByZWN1cnNpdmU6IHRydWUsIHdpdGhGaWxlVHlwZXM6IHRydWUgfSk7XG4gIGNvbnN0IGZpbGVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgIGlmICghZW50cnkuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHJlc29sdmUoZW50cnkucGFyZW50UGF0aCwgZW50cnkubmFtZSkucmVwbGFjZUFsbCgnXFxcXCcsICcvJyk7XG4gICAgZmlsZXMuYWRkKGFic29sdXRlUGF0aC5zbGljZShgJHtvdXRwdXRSb290UGF0aH0vYC5sZW5ndGgpKTtcbiAgfVxuXG4gIHJldHVybiBmaWxlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFBhZ2VzKG91dHB1dFJvb3RQYXRoOiBzdHJpbmcsIGFsbEZpbGVzOiBTZXQ8c3RyaW5nPik6IFByb21pc2U8RG9jdW1lbnRhdGlvblBhZ2VbXT4ge1xuICBjb25zdCBwYWdlczogRG9jdW1lbnRhdGlvblBhZ2VbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHJlbGF0aXZlUGF0aCBvZiBhbGxGaWxlcykge1xuICAgIGlmICghcmVsYXRpdmVQYXRoLmVuZHNXaXRoKEhUTUxfRklMRV9FWFRFTlNJT04pIHx8IHJlbGF0aXZlUGF0aCA9PT0gRkFMTEJBQ0tfUEFHRV9SRUxBVElWRV9QQVRIKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBodG1sID0gYXdhaXQgcmVhZEZpbGUocmVzb2x2ZShvdXRwdXRSb290UGF0aCwgcmVsYXRpdmVQYXRoKSwgJ3V0Zi04Jyk7XG4gICAgcGFnZXMucHVzaCh7IGh0bWwsIHJlbGF0aXZlUGF0aCB9KTtcbiAgfVxuXG4gIHJldHVybiBwYWdlcztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBWUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLGVBQWU7QUFReEI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWlCUCxNQUFNLHdDQUF3QztBQUM5QyxNQUFNLDRCQUE0QjtBQUNsQyxNQUFNLHNCQUFzQjtBQUs1QixNQUFNLDhCQUE4QjtBQWNwQyxlQUFzQix1QkFBdUIsU0FBc0Q7QUFDakcsUUFBTSxrQkFBa0IsUUFBUSxRQUFRLGVBQWUsRUFBRSxXQUFXLE1BQU0sR0FBRztBQUM3RSxRQUFNLFdBQVcsTUFBTSxZQUFZLGVBQWU7QUFDbEQsUUFBTSxRQUFRLE1BQU0sVUFBVSxpQkFBaUIsUUFBUTtBQUd2RCxRQUFNLG1CQUFtQix3QkFBd0IsS0FBSztBQUN0RCxNQUFJLGlCQUFpQixTQUFTLEdBQUc7QUFDL0IsVUFBTSxJQUFJO0FBQUEsTUFDUixZQUFZLE9BQU8saUJBQWlCLE1BQU0sQ0FBQztBQUFBLEVBQXlFLHVCQUF1QixnQkFBZ0IsQ0FBQztBQUFBLElBQzlKO0FBQUEsRUFDRjtBQUVBLFFBQU0sc0JBQXNCLG1CQUFtQixPQUFPLGlCQUFpQixFQUFFLFVBQVUsaUJBQWlCLE1BQU0sQ0FBQyxHQUFHLFFBQVEsV0FB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
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
import type { DocsSiteConfig } from './docs-site-config.mjs';
|
|
11
11
|
/**
|
|
12
12
|
* Builds the site: generates the API reference and the Open Graph cards, runs `astro build`, then checks every link
|
|
13
|
-
* of the output.
|
|
13
|
+
* of the output. With {@link DocsSiteConfig.repoHomepage} on, it then checks the repository's GitHub homepage against
|
|
14
|
+
* the site's URL.
|
|
14
15
|
*
|
|
15
16
|
* @param config - The site's configuration.
|
|
16
17
|
*/
|
|
@@ -19,11 +20,15 @@ export declare function buildDocsSite(config: DocsSiteConfig): Promise<void>;
|
|
|
19
20
|
* Generates the API reference, then serves the site with `astro dev` until it is stopped.
|
|
20
21
|
*
|
|
21
22
|
* @param config - The site's configuration.
|
|
23
|
+
* @param astroArguments - The arguments appended to `astro dev`, such as `--port 4399`. Defaults to the script's own
|
|
24
|
+
* command-line arguments, so `npm run docs:dev -- --port 4399` reaches Astro.
|
|
22
25
|
*/
|
|
23
|
-
export declare function devDocsSite(config: DocsSiteConfig): Promise<void>;
|
|
26
|
+
export declare function devDocsSite(config: DocsSiteConfig, astroArguments?: readonly string[]): Promise<void>;
|
|
24
27
|
/**
|
|
25
28
|
* Serves the last build with `astro preview` until it is stopped.
|
|
26
29
|
*
|
|
27
30
|
* @param config - The site's configuration.
|
|
31
|
+
* @param astroArguments - The arguments appended to `astro preview`, such as `--port 4399`. Defaults to the script's
|
|
32
|
+
* own command-line arguments, so `npm run docs:preview -- --port 4399` reaches Astro.
|
|
28
33
|
*/
|
|
29
|
-
export declare function previewDocsSite(config: DocsSiteConfig): Promise<void>;
|
|
34
|
+
export declare function previewDocsSite(config: DocsSiteConfig, astroArguments?: readonly string[]): Promise<void>;
|
|
@@ -4,12 +4,14 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { join } from "node:path";
|
|
7
|
+
import process from "node:process";
|
|
7
8
|
import { execFromRoot } from "../root.mjs";
|
|
8
9
|
import { generateApiDocs } from "./api-docs.mjs";
|
|
9
10
|
import { assertDocsLinksResolve } from "./docs-links.mjs";
|
|
10
11
|
import { getDocsSiteAssetsDirectory } from "./docs-site-assets.mjs";
|
|
11
12
|
import { resolveDocsSiteConfig } from "./docs-site-config.mjs";
|
|
12
13
|
import { generateOgImages } from "./og-images.mjs";
|
|
14
|
+
import { syncRepoHomepage } from "./repo-homepage.mjs";
|
|
13
15
|
async function buildDocsSite(config) {
|
|
14
16
|
const resolved = resolveDocsSiteConfig(config);
|
|
15
17
|
await generateApiDocs({ rootDirectory: resolved.rootDirectory, settings: resolved.apiDocSettings, sourceDirectory: resolved.sourceDirectory });
|
|
@@ -22,11 +24,14 @@ async function buildDocsSite(config) {
|
|
|
22
24
|
});
|
|
23
25
|
await execFromRoot(["astro", "build"], { cwd: resolved.rootDirectory });
|
|
24
26
|
await assertDocsLinksResolve({ outputDirectory: resolved.distDirectory, siteBaseUrl: resolved.siteBaseUrl });
|
|
27
|
+
if (resolved.repoHomepage !== "off") {
|
|
28
|
+
await syncRepoHomepage({ homepageUrl: resolved.siteBaseUrl, mode: resolved.repoHomepage, owner: resolved.owner, repo: resolved.repo });
|
|
29
|
+
}
|
|
25
30
|
}
|
|
26
|
-
async function devDocsSite(config) {
|
|
31
|
+
async function devDocsSite(config, astroArguments = getScriptArguments()) {
|
|
27
32
|
const resolved = resolveDocsSiteConfig(config);
|
|
28
33
|
await generateApiDocs({ rootDirectory: resolved.rootDirectory, settings: resolved.apiDocSettings, sourceDirectory: resolved.sourceDirectory });
|
|
29
|
-
await execFromRoot(["astro", "dev"], {
|
|
34
|
+
await execFromRoot(["astro", "dev", ...astroArguments], {
|
|
30
35
|
cwd: resolved.rootDirectory,
|
|
31
36
|
env: {
|
|
32
37
|
ASTRO_DEV_BACKGROUND: "1"
|
|
@@ -34,13 +39,17 @@ async function devDocsSite(config) {
|
|
|
34
39
|
isInteractive: true
|
|
35
40
|
});
|
|
36
41
|
}
|
|
37
|
-
async function previewDocsSite(config) {
|
|
42
|
+
async function previewDocsSite(config, astroArguments = getScriptArguments()) {
|
|
38
43
|
const resolved = resolveDocsSiteConfig(config);
|
|
39
|
-
await execFromRoot(["astro", "preview"], { cwd: resolved.rootDirectory, isInteractive: true });
|
|
44
|
+
await execFromRoot(["astro", "preview", ...astroArguments], { cwd: resolved.rootDirectory, isInteractive: true });
|
|
45
|
+
}
|
|
46
|
+
function getScriptArguments() {
|
|
47
|
+
const [, , ...scriptArguments] = process.argv;
|
|
48
|
+
return scriptArguments;
|
|
40
49
|
}
|
|
41
50
|
export {
|
|
42
51
|
buildDocsSite,
|
|
43
52
|
devDocsSite,
|
|
44
53
|
previewDocsSite
|
|
45
54
|
};
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLXNpdGUtY29tbWFuZHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGUgYGRvY3M6YnVpbGRgLCBgZG9jczpkZXZgIGFuZCBgZG9jczpwcmV2aWV3YCBjb21tYW5kcyBvZiBhIGRvY3VtZW50YXRpb24gc2l0ZS5cbiAqXG4gKiBFYWNoIHRha2VzIHRoZSBzYW1lIHtAbGluayBEb2NzU2l0ZUNvbmZpZ30gdGhlIHNpdGUncyBgYXN0cm8uY29uZmlnLnRzYCBwYXNzZXMgdG8gYGRlZmluZURvY3NTaXRlQ29uZmlnYCwgc28gYVxuICogcmVwb3NpdG9yeSBkZXNjcmliZXMgaXRzIHNpdGUgb25jZSwgaW4gYSBtb2R1bGUgYm90aCBpbXBvcnQuXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgdHlwZSB7IERvY3NTaXRlQ29uZmlnIH0gZnJvbSAnLi9kb2NzLXNpdGUtY29uZmlnLnRzJztcblxuaW1wb3J0IHsgZXhlY0Zyb21Sb290IH0gZnJvbSAnLi4vcm9vdC50cyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUFwaURvY3MgfSBmcm9tICcuL2FwaS1kb2NzLnRzJztcbmltcG9ydCB7IGFzc2VydERvY3NMaW5rc1Jlc29sdmUgfSBmcm9tICcuL2RvY3MtbGlua3MudHMnO1xuaW1wb3J0IHsgZ2V0RG9jc1NpdGVBc3NldHNEaXJlY3RvcnkgfSBmcm9tICcuL2RvY3Mtc2l0ZS1hc3NldHMudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZURvY3NTaXRlQ29uZmlnIH0gZnJvbSAnLi9kb2NzLXNpdGUtY29uZmlnLnRzJztcbmltcG9ydCB7IGdlbmVyYXRlT2dJbWFnZXMgfSBmcm9tICcuL29nLWltYWdlcy50cyc7XG5pbXBvcnQgeyBzeW5jUmVwb0hvbWVwYWdlIH0gZnJvbSAnLi9yZXBvLWhvbWVwYWdlLnRzJztcblxuLyoqXG4gKiBCdWlsZHMgdGhlIHNpdGU6IGdlbmVyYXRlcyB0aGUgQVBJIHJlZmVyZW5jZSBhbmQgdGhlIE9wZW4gR3JhcGggY2FyZHMsIHJ1bnMgYGFzdHJvIGJ1aWxkYCwgdGhlbiBjaGVja3MgZXZlcnkgbGlua1xuICogb2YgdGhlIG91dHB1dC4gV2l0aCB7QGxpbmsgRG9jc1NpdGVDb25maWcucmVwb0hvbWVwYWdlfSBvbiwgaXQgdGhlbiBjaGVja3MgdGhlIHJlcG9zaXRvcnkncyBHaXRIdWIgaG9tZXBhZ2UgYWdhaW5zdFxuICogdGhlIHNpdGUncyBVUkwuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIFRoZSBzaXRlJ3MgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkRG9jc1NpdGUoY29uZmlnOiBEb2NzU2l0ZUNvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVEb2NzU2l0ZUNvbmZpZyhjb25maWcpO1xuICBhd2FpdCBnZW5lcmF0ZUFwaURvY3MoeyByb290RGlyZWN0b3J5OiByZXNvbHZlZC5yb290RGlyZWN0b3J5LCBzZXR0aW5nczogcmVzb2x2ZWQuYXBpRG9jU2V0dGluZ3MsIHNvdXJjZURpcmVjdG9yeTogcmVzb2x2ZWQuc291cmNlRGlyZWN0b3J5IH0pO1xuICBhd2FpdCBnZW5lcmF0ZU9nSW1hZ2VzKHtcbiAgICBicmFuZFRleHQ6IHJlc29sdmVkLnBhY2thZ2VOYW1lLFxuICAgIGNvbnRlbnREb2NzRGlyZWN0b3J5OiByZXNvbHZlZC5jb250ZW50RG9jc0RpcmVjdG9yeSxcbiAgICBmYXZpY29uUGF0aDogcmVzb2x2ZWQuZmF2aWNvblBhdGgsXG4gICAgZm9udHNEaXJlY3Rvcnk6IGpvaW4oZ2V0RG9jc1NpdGVBc3NldHNEaXJlY3RvcnkoKSwgJ2ZvbnRzJyksXG4gICAgb3V0cHV0RGlyZWN0b3J5OiByZXNvbHZlZC5vZ091dHB1dERpcmVjdG9yeVxuICB9KTtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnYXN0cm8nLCAnYnVpbGQnXSwgeyBjd2Q6IHJlc29sdmVkLnJvb3REaXJlY3RvcnkgfSk7XG4gIGF3YWl0IGFzc2VydERvY3NMaW5rc1Jlc29sdmUoeyBvdXRwdXREaXJlY3Rvcnk6IHJlc29sdmVkLmRpc3REaXJlY3RvcnksIHNpdGVCYXNlVXJsOiByZXNvbHZlZC5zaXRlQmFzZVVybCB9KTtcbiAgaWYgKHJlc29sdmVkLnJlcG9Ib21lcGFnZSAhPT0gJ29mZicpIHtcbiAgICBhd2FpdCBzeW5jUmVwb0hvbWVwYWdlKHsgaG9tZXBhZ2VVcmw6IHJlc29sdmVkLnNpdGVCYXNlVXJsLCBtb2RlOiByZXNvbHZlZC5yZXBvSG9tZXBhZ2UsIG93bmVyOiByZXNvbHZlZC5vd25lciwgcmVwbzogcmVzb2x2ZWQucmVwbyB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgQVBJIHJlZmVyZW5jZSwgdGhlbiBzZXJ2ZXMgdGhlIHNpdGUgd2l0aCBgYXN0cm8gZGV2YCB1bnRpbCBpdCBpcyBzdG9wcGVkLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgc2l0ZSdzIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0gYXN0cm9Bcmd1bWVudHMgLSBUaGUgYXJndW1lbnRzIGFwcGVuZGVkIHRvIGBhc3RybyBkZXZgLCBzdWNoIGFzIGAtLXBvcnQgNDM5OWAuIERlZmF1bHRzIHRvIHRoZSBzY3JpcHQncyBvd25cbiAqICAgY29tbWFuZC1saW5lIGFyZ3VtZW50cywgc28gYG5wbSBydW4gZG9jczpkZXYgLS0gLS1wb3J0IDQzOTlgIHJlYWNoZXMgQXN0cm8uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXZEb2NzU2l0ZShjb25maWc6IERvY3NTaXRlQ29uZmlnLCBhc3Ryb0FyZ3VtZW50czogcmVhZG9ubHkgc3RyaW5nW10gPSBnZXRTY3JpcHRBcmd1bWVudHMoKSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVEb2NzU2l0ZUNvbmZpZyhjb25maWcpO1xuICBhd2FpdCBnZW5lcmF0ZUFwaURvY3MoeyByb290RGlyZWN0b3J5OiByZXNvbHZlZC5yb290RGlyZWN0b3J5LCBzZXR0aW5nczogcmVzb2x2ZWQuYXBpRG9jU2V0dGluZ3MsIHNvdXJjZURpcmVjdG9yeTogcmVzb2x2ZWQuc291cmNlRGlyZWN0b3J5IH0pO1xuICAvLyBgQVNUUk9fREVWX0JBQ0tHUk9VTkRgIGZvcmNlcyBBc3RybydzIGZvcmVncm91bmQgZGV2IHNlcnZlci4gQXN0cm8gb3RoZXJ3aXNlIHN3aXRjaGVzIHRvIGEgYmFja2dyb3VuZCBsYXVuY2hlclxuICAvLyAoaGFyZGNvZGVkIDMwcyBzdGFydHVwIHRpbWVvdXQpIHVuZGVyIGFuIGFnZW50IC8gbm9uLWludGVyYWN0aXZlIGVudmlyb25tZW50LlxuICBhd2FpdCBleGVjRnJvbVJvb3QoWydhc3RybycsICdkZXYnLCAuLi5hc3Ryb0FyZ3VtZW50c10sIHtcbiAgICBjd2Q6IHJlc29sdmVkLnJvb3REaXJlY3RvcnksXG4gICAgZW52OiB7XG4gICAgICBBU1RST19ERVZfQkFDS0dST1VORDogJzEnXG4gICAgfSxcbiAgICBpc0ludGVyYWN0aXZlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFNlcnZlcyB0aGUgbGFzdCBidWlsZCB3aXRoIGBhc3RybyBwcmV2aWV3YCB1bnRpbCBpdCBpcyBzdG9wcGVkLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgc2l0ZSdzIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0gYXN0cm9Bcmd1bWVudHMgLSBUaGUgYXJndW1lbnRzIGFwcGVuZGVkIHRvIGBhc3RybyBwcmV2aWV3YCwgc3VjaCBhcyBgLS1wb3J0IDQzOTlgLiBEZWZhdWx0cyB0byB0aGUgc2NyaXB0J3NcbiAqICAgb3duIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNvIGBucG0gcnVuIGRvY3M6cHJldmlldyAtLSAtLXBvcnQgNDM5OWAgcmVhY2hlcyBBc3Ryby5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXZpZXdEb2NzU2l0ZShjb25maWc6IERvY3NTaXRlQ29uZmlnLCBhc3Ryb0FyZ3VtZW50czogcmVhZG9ubHkgc3RyaW5nW10gPSBnZXRTY3JpcHRBcmd1bWVudHMoKSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVEb2NzU2l0ZUNvbmZpZyhjb25maWcpO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWydhc3RybycsICdwcmV2aWV3JywgLi4uYXN0cm9Bcmd1bWVudHNdLCB7IGN3ZDogcmVzb2x2ZWQucm9vdERpcmVjdG9yeSwgaXNJbnRlcmFjdGl2ZTogdHJ1ZSB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0U2NyaXB0QXJndW1lbnRzKCk6IHN0cmluZ1tdIHtcbiAgY29uc3QgWywgLCAuLi5zY3JpcHRBcmd1bWVudHNdID0gcHJvY2Vzcy5hcmd2O1xuICByZXR1cm4gc2NyaXB0QXJndW1lbnRzO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFTQSxTQUFTLFlBQVk7QUFDckIsT0FBTyxhQUFhO0FBSXBCLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsd0JBQXdCO0FBQ2pDLFNBQVMsd0JBQXdCO0FBU2pDLGVBQXNCLGNBQWMsUUFBdUM7QUFDekUsUUFBTSxXQUFXLHNCQUFzQixNQUFNO0FBQzdDLFFBQU0sZ0JBQWdCLEVBQUUsZUFBZSxTQUFTLGVBQWUsVUFBVSxTQUFTLGdCQUFnQixpQkFBaUIsU0FBUyxnQkFBZ0IsQ0FBQztBQUM3SSxRQUFNLGlCQUFpQjtBQUFBLElBQ3JCLFdBQVcsU0FBUztBQUFBLElBQ3BCLHNCQUFzQixTQUFTO0FBQUEsSUFDL0IsYUFBYSxTQUFTO0FBQUEsSUFDdEIsZ0JBQWdCLEtBQUssMkJBQTJCLEdBQUcsT0FBTztBQUFBLElBQzFELGlCQUFpQixTQUFTO0FBQUEsRUFDNUIsQ0FBQztBQUNELFFBQU0sYUFBYSxDQUFDLFNBQVMsT0FBTyxHQUFHLEVBQUUsS0FBSyxTQUFTLGNBQWMsQ0FBQztBQUN0RSxRQUFNLHVCQUF1QixFQUFFLGlCQUFpQixTQUFTLGVBQWUsYUFBYSxTQUFTLFlBQVksQ0FBQztBQUMzRyxNQUFJLFNBQVMsaUJBQWlCLE9BQU87QUFDbkMsVUFBTSxpQkFBaUIsRUFBRSxhQUFhLFNBQVMsYUFBYSxNQUFNLFNBQVMsY0FBYyxPQUFPLFNBQVMsT0FBTyxNQUFNLFNBQVMsS0FBSyxDQUFDO0FBQUEsRUFDdkk7QUFDRjtBQVNBLGVBQXNCLFlBQVksUUFBd0IsaUJBQW9DLG1CQUFtQixHQUFrQjtBQUNqSSxRQUFNLFdBQVcsc0JBQXNCLE1BQU07QUFDN0MsUUFBTSxnQkFBZ0IsRUFBRSxlQUFlLFNBQVMsZUFBZSxVQUFVLFNBQVMsZ0JBQWdCLGlCQUFpQixTQUFTLGdCQUFnQixDQUFDO0FBRzdJLFFBQU0sYUFBYSxDQUFDLFNBQVMsT0FBTyxHQUFHLGNBQWMsR0FBRztBQUFBLElBQ3RELEtBQUssU0FBUztBQUFBLElBQ2QsS0FBSztBQUFBLE1BQ0gsc0JBQXNCO0FBQUEsSUFDeEI7QUFBQSxJQUNBLGVBQWU7QUFBQSxFQUNqQixDQUFDO0FBQ0g7QUFTQSxlQUFzQixnQkFBZ0IsUUFBd0IsaUJBQW9DLG1CQUFtQixHQUFrQjtBQUNySSxRQUFNLFdBQVcsc0JBQXNCLE1BQU07QUFDN0MsUUFBTSxhQUFhLENBQUMsU0FBUyxXQUFXLEdBQUcsY0FBYyxHQUFHLEVBQUUsS0FBSyxTQUFTLGVBQWUsZUFBZSxLQUFLLENBQUM7QUFDbEg7QUFFQSxTQUFTLHFCQUErQjtBQUN0QyxRQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsZUFBZSxJQUFJLFFBQVE7QUFDekMsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* it documents, where its sources and pages live, and which other sites it links to.
|
|
7
7
|
*/
|
|
8
8
|
import type { ApiDocSettings } from './api-doc-settings.mjs';
|
|
9
|
+
import type { RepoHomepageMode } from './repo-homepage.mjs';
|
|
9
10
|
/**
|
|
10
11
|
* Describes a documentation site. Every path is relative to {@link DocsSiteConfig.rootDirectory}.
|
|
11
12
|
*/
|
|
@@ -44,6 +45,14 @@ export interface DocsSiteConfig {
|
|
|
44
45
|
* The repository's name. The site is served under it: `<siteOrigin>/<repo>/`.
|
|
45
46
|
*/
|
|
46
47
|
readonly repo: string;
|
|
48
|
+
/**
|
|
49
|
+
* What `buildDocsSite` does, after the build, about the repository's GitHub homepage: compare it with the site's
|
|
50
|
+
* URL and report a mismatch (`check`), or also set it (`set`). It reads and writes through the `gh` CLI, and
|
|
51
|
+
* only ever warns. A workflow's `GITHUB_TOKEN` can read the homepage but not set it, so in CI `set` reports too.
|
|
52
|
+
*
|
|
53
|
+
* @default 'off'
|
|
54
|
+
*/
|
|
55
|
+
readonly repoHomepage?: RepoHomepageMode;
|
|
47
56
|
/**
|
|
48
57
|
* The repository root, holding `package.json`, `tsconfig.json` and `node_modules`.
|
|
49
58
|
*
|
|
@@ -115,6 +124,10 @@ export interface ResolvedDocsSiteConfig {
|
|
|
115
124
|
* The folder the Open Graph cards are written to, `<docs>/public/og`.
|
|
116
125
|
*/
|
|
117
126
|
readonly ogOutputDirectory: string;
|
|
127
|
+
/**
|
|
128
|
+
* See {@link DocsSiteConfig.owner}.
|
|
129
|
+
*/
|
|
130
|
+
readonly owner: string;
|
|
118
131
|
/**
|
|
119
132
|
* The documented package's name, read from the root `package.json`.
|
|
120
133
|
*/
|
|
@@ -131,6 +144,10 @@ export interface ResolvedDocsSiteConfig {
|
|
|
131
144
|
* See {@link DocsSiteConfig.repo}.
|
|
132
145
|
*/
|
|
133
146
|
readonly repo: string;
|
|
147
|
+
/**
|
|
148
|
+
* See {@link DocsSiteConfig.repoHomepage}.
|
|
149
|
+
*/
|
|
150
|
+
readonly repoHomepage: RepoHomepageMode;
|
|
134
151
|
/**
|
|
135
152
|
* See {@link DocsSiteConfig.rootDirectory}.
|
|
136
153
|
*/
|