@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.
Files changed (96) hide show
  1. package/assets/biome.json +49 -0
  2. package/assets/prettier.json +13 -0
  3. package/dist/lib/cjs/docs-site/docs-links.cjs +6 -3
  4. package/dist/lib/cjs/docs-site/docs-site-commands.cjs +24 -5
  5. package/dist/lib/cjs/docs-site/docs-site-commands.d.cts +8 -3
  6. package/dist/lib/cjs/docs-site/docs-site-config.cjs +4 -1
  7. package/dist/lib/cjs/docs-site/docs-site-config.d.cts +17 -0
  8. package/dist/lib/cjs/docs-site/index.cjs +4 -1
  9. package/dist/lib/cjs/docs-site/index.d.cts +1 -0
  10. package/dist/lib/cjs/docs-site/link-check.cjs +88 -11
  11. package/dist/lib/cjs/docs-site/link-check.d.cts +91 -2
  12. package/dist/lib/cjs/docs-site/repo-homepage.cjs +108 -0
  13. package/dist/lib/cjs/docs-site/repo-homepage.d.cts +50 -0
  14. package/dist/lib/cjs/formatters/auto.cjs +59 -0
  15. package/dist/lib/cjs/formatters/auto.d.cts +51 -0
  16. package/dist/lib/cjs/formatters/biome.cjs +121 -0
  17. package/dist/lib/cjs/formatters/biome.d.cts +69 -0
  18. package/dist/lib/cjs/formatters/index.cjs +12 -3
  19. package/dist/lib/cjs/formatters/index.d.cts +3 -0
  20. package/dist/lib/cjs/formatters/prettier.cjs +93 -0
  21. package/dist/lib/cjs/formatters/prettier.d.cts +56 -0
  22. package/dist/lib/cjs/index.cjs +4 -1
  23. package/dist/lib/cjs/index.d.cts +1 -0
  24. package/dist/lib/cjs/linters/auto.cjs +52 -0
  25. package/dist/lib/cjs/linters/auto.d.cts +49 -0
  26. package/dist/lib/cjs/linters/biome.cjs +50 -0
  27. package/dist/lib/cjs/linters/biome.d.cts +36 -0
  28. package/dist/lib/cjs/linters/eslint-config.cjs +52 -29
  29. package/dist/lib/cjs/linters/eslint.cjs +15 -14
  30. package/dist/lib/cjs/linters/eslint.d.cts +6 -0
  31. package/dist/lib/cjs/linters/index.cjs +7 -1
  32. package/dist/lib/cjs/linters/index.d.cts +2 -0
  33. package/dist/lib/cjs/repo-paths.cjs +3 -1
  34. package/dist/lib/cjs/repo-paths.d.cts +8 -0
  35. package/dist/lib/cjs/shared-config-files.cjs +68 -0
  36. package/dist/lib/cjs/shared-config-files.d.cts +29 -0
  37. package/dist/lib/cjs/test-runners/auto.cjs +83 -0
  38. package/dist/lib/cjs/test-runners/auto.d.cts +82 -0
  39. package/dist/lib/cjs/test-runners/index.cjs +10 -1
  40. package/dist/lib/cjs/test-runners/index.d.cts +3 -0
  41. package/dist/lib/cjs/test-runners/jest-config.cjs +86 -0
  42. package/dist/lib/cjs/test-runners/jest-config.d.cts +71 -0
  43. package/dist/lib/cjs/test-runners/jest.cjs +111 -0
  44. package/dist/lib/cjs/test-runners/jest.d.cts +77 -0
  45. package/dist/lib/esm/docs-site/docs-links.mjs +7 -3
  46. package/dist/lib/esm/docs-site/docs-site-commands.d.mts +8 -3
  47. package/dist/lib/esm/docs-site/docs-site-commands.mjs +14 -5
  48. package/dist/lib/esm/docs-site/docs-site-config.d.mts +17 -0
  49. package/dist/lib/esm/docs-site/docs-site-config.mjs +4 -1
  50. package/dist/lib/esm/docs-site/index.d.mts +1 -0
  51. package/dist/lib/esm/docs-site/index.mjs +3 -1
  52. package/dist/lib/esm/docs-site/link-check.d.mts +91 -2
  53. package/dist/lib/esm/docs-site/link-check.mjs +83 -11
  54. package/dist/lib/esm/docs-site/repo-homepage.d.mts +50 -0
  55. package/dist/lib/esm/docs-site/repo-homepage.mjs +84 -0
  56. package/dist/lib/esm/formatters/auto.d.mts +51 -0
  57. package/dist/lib/esm/formatters/auto.mjs +40 -0
  58. package/dist/lib/esm/formatters/biome.d.mts +69 -0
  59. package/dist/lib/esm/formatters/biome.mjs +107 -0
  60. package/dist/lib/esm/formatters/index.d.mts +3 -0
  61. package/dist/lib/esm/formatters/index.mjs +8 -2
  62. package/dist/lib/esm/formatters/prettier.d.mts +56 -0
  63. package/dist/lib/esm/formatters/prettier.mjs +75 -0
  64. package/dist/lib/esm/index.d.mts +1 -0
  65. package/dist/lib/esm/index.mjs +3 -1
  66. package/dist/lib/esm/linters/auto.d.mts +49 -0
  67. package/dist/lib/esm/linters/auto.mjs +30 -0
  68. package/dist/lib/esm/linters/biome.d.mts +36 -0
  69. package/dist/lib/esm/linters/biome.mjs +29 -0
  70. package/dist/lib/esm/linters/eslint-config.mjs +52 -29
  71. package/dist/lib/esm/linters/eslint.d.mts +6 -0
  72. package/dist/lib/esm/linters/eslint.mjs +14 -14
  73. package/dist/lib/esm/linters/index.d.mts +2 -0
  74. package/dist/lib/esm/linters/index.mjs +5 -1
  75. package/dist/lib/esm/repo-paths.d.mts +8 -0
  76. package/dist/lib/esm/repo-paths.mjs +3 -1
  77. package/dist/lib/esm/shared-config-files.d.mts +29 -0
  78. package/dist/lib/esm/shared-config-files.mjs +36 -0
  79. package/dist/lib/esm/test-runners/auto.d.mts +82 -0
  80. package/dist/lib/esm/test-runners/auto.mjs +64 -0
  81. package/dist/lib/esm/test-runners/index.d.mts +3 -0
  82. package/dist/lib/esm/test-runners/index.mjs +7 -1
  83. package/dist/lib/esm/test-runners/jest-config.d.mts +71 -0
  84. package/dist/lib/esm/test-runners/jest-config.mjs +58 -0
  85. package/dist/lib/esm/test-runners/jest.d.mts +77 -0
  86. package/dist/lib/esm/test-runners/jest.mjs +75 -0
  87. package/docs-site/repo-homepage/package.json +6 -0
  88. package/formatters/auto/package.json +6 -0
  89. package/formatters/biome/package.json +6 -0
  90. package/formatters/prettier/package.json +6 -0
  91. package/linters/auto/package.json +6 -0
  92. package/linters/biome/package.json +6 -0
  93. package/package.json +21 -1
  94. package/test-runners/auto/package.json +6 -0
  95. package/test-runners/jest/package.json +6 -0
  96. 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 response.status;
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2RvY3Mtc2l0ZS9kb2NzLXNpdGUtY29tbWFuZHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGUgYGRvY3M6YnVpbGRgLCBgZG9jczpkZXZgIGFuZCBgZG9jczpwcmV2aWV3YCBjb21tYW5kcyBvZiBhIGRvY3VtZW50YXRpb24gc2l0ZS5cbiAqXG4gKiBFYWNoIHRha2VzIHRoZSBzYW1lIHtAbGluayBEb2NzU2l0ZUNvbmZpZ30gdGhlIHNpdGUncyBgYXN0cm8uY29uZmlnLnRzYCBwYXNzZXMgdG8gYGRlZmluZURvY3NTaXRlQ29uZmlnYCwgc28gYVxuICogcmVwb3NpdG9yeSBkZXNjcmliZXMgaXRzIHNpdGUgb25jZSwgaW4gYSBtb2R1bGUgYm90aCBpbXBvcnQuXG4gKi9cblxuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmltcG9ydCB0eXBlIHsgRG9jc1NpdGVDb25maWcgfSBmcm9tICcuL2RvY3Mtc2l0ZS1jb25maWcudHMnO1xuXG5pbXBvcnQgeyBleGVjRnJvbVJvb3QgfSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7IGdlbmVyYXRlQXBpRG9jcyB9IGZyb20gJy4vYXBpLWRvY3MudHMnO1xuaW1wb3J0IHsgYXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZSB9IGZyb20gJy4vZG9jcy1saW5rcy50cyc7XG5pbXBvcnQgeyBnZXREb2NzU2l0ZUFzc2V0c0RpcmVjdG9yeSB9IGZyb20gJy4vZG9jcy1zaXRlLWFzc2V0cy50cyc7XG5pbXBvcnQgeyByZXNvbHZlRG9jc1NpdGVDb25maWcgfSBmcm9tICcuL2RvY3Mtc2l0ZS1jb25maWcudHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVPZ0ltYWdlcyB9IGZyb20gJy4vb2ctaW1hZ2VzLnRzJztcblxuLyoqXG4gKiBCdWlsZHMgdGhlIHNpdGU6IGdlbmVyYXRlcyB0aGUgQVBJIHJlZmVyZW5jZSBhbmQgdGhlIE9wZW4gR3JhcGggY2FyZHMsIHJ1bnMgYGFzdHJvIGJ1aWxkYCwgdGhlbiBjaGVja3MgZXZlcnkgbGlua1xuICogb2YgdGhlIG91dHB1dC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIHNpdGUncyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGREb2NzU2l0ZShjb25maWc6IERvY3NTaXRlQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZURvY3NTaXRlQ29uZmlnKGNvbmZpZyk7XG4gIGF3YWl0IGdlbmVyYXRlQXBpRG9jcyh7IHJvb3REaXJlY3Rvcnk6IHJlc29sdmVkLnJvb3REaXJlY3RvcnksIHNldHRpbmdzOiByZXNvbHZlZC5hcGlEb2NTZXR0aW5ncywgc291cmNlRGlyZWN0b3J5OiByZXNvbHZlZC5zb3VyY2VEaXJlY3RvcnkgfSk7XG4gIGF3YWl0IGdlbmVyYXRlT2dJbWFnZXMoe1xuICAgIGJyYW5kVGV4dDogcmVzb2x2ZWQucGFja2FnZU5hbWUsXG4gICAgY29udGVudERvY3NEaXJlY3Rvcnk6IHJlc29sdmVkLmNvbnRlbnREb2NzRGlyZWN0b3J5LFxuICAgIGZhdmljb25QYXRoOiByZXNvbHZlZC5mYXZpY29uUGF0aCxcbiAgICBmb250c0RpcmVjdG9yeTogam9pbihnZXREb2NzU2l0ZUFzc2V0c0RpcmVjdG9yeSgpLCAnZm9udHMnKSxcbiAgICBvdXRwdXREaXJlY3Rvcnk6IHJlc29sdmVkLm9nT3V0cHV0RGlyZWN0b3J5XG4gIH0pO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoWydhc3RybycsICdidWlsZCddLCB7IGN3ZDogcmVzb2x2ZWQucm9vdERpcmVjdG9yeSB9KTtcbiAgYXdhaXQgYXNzZXJ0RG9jc0xpbmtzUmVzb2x2ZSh7IG91dHB1dERpcmVjdG9yeTogcmVzb2x2ZWQuZGlzdERpcmVjdG9yeSwgc2l0ZUJhc2VVcmw6IHJlc29sdmVkLnNpdGVCYXNlVXJsIH0pO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgQVBJIHJlZmVyZW5jZSwgdGhlbiBzZXJ2ZXMgdGhlIHNpdGUgd2l0aCBgYXN0cm8gZGV2YCB1bnRpbCBpdCBpcyBzdG9wcGVkLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgc2l0ZSdzIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkZXZEb2NzU2l0ZShjb25maWc6IERvY3NTaXRlQ29uZmlnKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZURvY3NTaXRlQ29uZmlnKGNvbmZpZyk7XG4gIGF3YWl0IGdlbmVyYXRlQXBpRG9jcyh7IHJvb3REaXJlY3Rvcnk6IHJlc29sdmVkLnJvb3REaXJlY3RvcnksIHNldHRpbmdzOiByZXNvbHZlZC5hcGlEb2NTZXR0aW5ncywgc291cmNlRGlyZWN0b3J5OiByZXNvbHZlZC5zb3VyY2VEaXJlY3RvcnkgfSk7XG4gIC8vIGBBU1RST19ERVZfQkFDS0dST1VORGAgZm9yY2VzIEFzdHJvJ3MgZm9yZWdyb3VuZCBkZXYgc2VydmVyLiBBc3RybyBvdGhlcndpc2Ugc3dpdGNoZXMgdG8gYSBiYWNrZ3JvdW5kIGxhdW5jaGVyXG4gIC8vIChoYXJkY29kZWQgMzBzIHN0YXJ0dXAgdGltZW91dCkgdW5kZXIgYW4gYWdlbnQgLyBub24taW50ZXJhY3RpdmUgZW52aXJvbm1lbnQuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ2FzdHJvJywgJ2RldiddLCB7XG4gICAgY3dkOiByZXNvbHZlZC5yb290RGlyZWN0b3J5LFxuICAgIGVudjoge1xuICAgICAgQVNUUk9fREVWX0JBQ0tHUk9VTkQ6ICcxJ1xuICAgIH0sXG4gICAgaXNJbnRlcmFjdGl2ZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBTZXJ2ZXMgdGhlIGxhc3QgYnVpbGQgd2l0aCBgYXN0cm8gcHJldmlld2AgdW50aWwgaXQgaXMgc3RvcHBlZC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIHNpdGUncyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJldmlld0RvY3NTaXRlKGNvbmZpZzogRG9jc1NpdGVDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlRG9jc1NpdGVDb25maWcoY29uZmlnKTtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnYXN0cm8nLCAncHJldmlldyddLCB7IGN3ZDogcmVzb2x2ZWQucm9vdERpcmVjdG9yeSwgaXNJbnRlcmFjdGl2ZTogdHJ1ZSB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBU0EsU0FBUyxZQUFZO0FBSXJCLFNBQVMsb0JBQW9CO0FBQzdCLFNBQVMsdUJBQXVCO0FBQ2hDLFNBQVMsOEJBQThCO0FBQ3ZDLFNBQVMsa0NBQWtDO0FBQzNDLFNBQVMsNkJBQTZCO0FBQ3RDLFNBQVMsd0JBQXdCO0FBUWpDLGVBQXNCLGNBQWMsUUFBdUM7QUFDekUsUUFBTSxXQUFXLHNCQUFzQixNQUFNO0FBQzdDLFFBQU0sZ0JBQWdCLEVBQUUsZUFBZSxTQUFTLGVBQWUsVUFBVSxTQUFTLGdCQUFnQixpQkFBaUIsU0FBUyxnQkFBZ0IsQ0FBQztBQUM3SSxRQUFNLGlCQUFpQjtBQUFBLElBQ3JCLFdBQVcsU0FBUztBQUFBLElBQ3BCLHNCQUFzQixTQUFTO0FBQUEsSUFDL0IsYUFBYSxTQUFTO0FBQUEsSUFDdEIsZ0JBQWdCLEtBQUssMkJBQTJCLEdBQUcsT0FBTztBQUFBLElBQzFELGlCQUFpQixTQUFTO0FBQUEsRUFDNUIsQ0FBQztBQUNELFFBQU0sYUFBYSxDQUFDLFNBQVMsT0FBTyxHQUFHLEVBQUUsS0FBSyxTQUFTLGNBQWMsQ0FBQztBQUN0RSxRQUFNLHVCQUF1QixFQUFFLGlCQUFpQixTQUFTLGVBQWUsYUFBYSxTQUFTLFlBQVksQ0FBQztBQUM3RztBQU9BLGVBQXNCLFlBQVksUUFBdUM7QUFDdkUsUUFBTSxXQUFXLHNCQUFzQixNQUFNO0FBQzdDLFFBQU0sZ0JBQWdCLEVBQUUsZUFBZSxTQUFTLGVBQWUsVUFBVSxTQUFTLGdCQUFnQixpQkFBaUIsU0FBUyxnQkFBZ0IsQ0FBQztBQUc3SSxRQUFNLGFBQWEsQ0FBQyxTQUFTLEtBQUssR0FBRztBQUFBLElBQ25DLEtBQUssU0FBUztBQUFBLElBQ2QsS0FBSztBQUFBLE1BQ0gsc0JBQXNCO0FBQUEsSUFDeEI7QUFBQSxJQUNBLGVBQWU7QUFBQSxFQUNqQixDQUFDO0FBQ0g7QUFPQSxlQUFzQixnQkFBZ0IsUUFBdUM7QUFDM0UsUUFBTSxXQUFXLHNCQUFzQixNQUFNO0FBQzdDLFFBQU0sYUFBYSxDQUFDLFNBQVMsU0FBUyxHQUFHLEVBQUUsS0FBSyxTQUFTLGVBQWUsZUFBZSxLQUFLLENBQUM7QUFDL0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
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
  */