@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
@@ -59,6 +59,7 @@ __export(eslint_exports, {
59
59
  LINT_PROBLEMS_MESSAGE: () => LINT_PROBLEMS_MESSAGE,
60
60
  classifyEslintExit: () => classifyEslintExit,
61
61
  describeFailureToLint: () => describeFailureToLint,
62
+ hasEslintConfig: () => hasEslintConfig,
62
63
  lint: () => lint
63
64
  });
64
65
  module.exports = __toCommonJS(eslint_exports);
@@ -69,6 +70,14 @@ var import_promises = require('node:fs/promises');
69
70
  var import_package_manager = require('../package-manager.cjs');
70
71
  var import_repo_paths = require('../repo-paths.cjs');
71
72
  var import_root = require('../root.cjs');
73
+ const ESLINT_CONFIG_FILE_NAMES = [
74
+ import_repo_paths.RepoPaths.EslintConfigJs,
75
+ import_repo_paths.RepoPaths.EslintConfigMjs,
76
+ import_repo_paths.RepoPaths.EslintConfigCjs,
77
+ import_repo_paths.RepoPaths.EslintConfigTs,
78
+ import_repo_paths.RepoPaths.EslintConfigMts,
79
+ import_repo_paths.RepoPaths.EslintConfigCts
80
+ ];
72
81
  const ESLINT_WARNINGS_AS_FINDINGS_ARGUMENTS = ["--max-warnings", "0", "--no-warn-ignored"];
73
82
  const LINT_PROBLEMS_MESSAGE = "ESLint reported lint problems. The findings are printed above.";
74
83
  const ESLINT_EXIT_CODE_CLEAN = 0;
@@ -98,21 +107,12 @@ function describeFailureToLint(result) {
98
107
  ...details.map((detail) => ` ${detail}`)
99
108
  ].join("\n");
100
109
  }
110
+ function hasEslintConfig() {
111
+ return ESLINT_CONFIG_FILE_NAMES.some((fileName) => (0, import_node_fs.existsSync)((0, import_root.resolvePathFromRootSafe)({ path: fileName })));
112
+ }
101
113
  async function lint(options) {
102
114
  const { defaultConfigFilePath, paths, shouldFix } = options ?? {};
103
- const configFiles = [
104
- import_repo_paths.RepoPaths.EslintConfigJs,
105
- import_repo_paths.RepoPaths.EslintConfigMjs,
106
- import_repo_paths.RepoPaths.EslintConfigCjs,
107
- import_repo_paths.RepoPaths.EslintConfigTs,
108
- import_repo_paths.RepoPaths.EslintConfigMts,
109
- import_repo_paths.RepoPaths.EslintConfigCts
110
- ];
111
- const doesConfigFileExist = configFiles.some((configFile) => {
112
- const configFilePath = (0, import_root.resolvePathFromRootSafe)({ path: configFile });
113
- return (0, import_node_fs.existsSync)(configFilePath);
114
- });
115
- if (!doesConfigFileExist && defaultConfigFilePath) {
115
+ if (!hasEslintConfig() && defaultConfigFilePath) {
116
116
  (0, import_debug.getLibDebugger)("ESLint:lint")("ESLint configuration file not found. Creating default config...");
117
117
  await (0, import_promises.cp)(defaultConfigFilePath, (0, import_root.resolvePathFromRootSafe)({ path: (0, import_path.basename)(defaultConfigFilePath) }));
118
118
  }
@@ -169,6 +169,7 @@ function getFailureHeadline(result) {
169
169
  LINT_PROBLEMS_MESSAGE,
170
170
  classifyEslintExit,
171
171
  describeFailureToLint,
172
+ hasEslintConfig,
172
173
  lint
173
174
  });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludGluZyB1dGlsaXR5IGZvciBFU0xpbnQgY29uZmlndXJhdGlvbiB3aXRoIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBmaXhpbmcuXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBmdW5jdGlvbiB0byBsaW50IGZpbGVzIGJhc2VkIG9uIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIGBlc2xpbnQuY29uZmlnLnRzYC5cbiAqIEl0IGNhbiBhdXRvbWF0aWNhbGx5IGZpeCBsaW50aW5nIGlzc3VlcyBpZiBzcGVjaWZpZWQsIGFuZCBsb2dzIHJlc3VsdHMgdG8gdGhlIGNvbnNvbGUuXG4gKlxuICogSXQgYWxzbyBrZWVwcyBhIGNyYXNoZWQgbGludGVyIGFwYXJ0IGZyb20gYSByZWQgY29kZWJhc2UuIEhhbmRpbmcgRVNMaW50J3MgZXhpdCBjb2RlIHN0cmFpZ2h0IHRvXG4gKiB7QGxpbmsgZXhlY0Zyb21Sb290fSBhbmQgbGV0dGluZyBpdCB0aHJvdyByZXBvcnRzIGV2ZXJ5IG5vbi16ZXJvIGNvZGUgdGhlIHNhbWUgd2F5IC0tIGBDb21tYW5kIGZhaWxlZCB3aXRoXG4gKiBleGl0IGNvZGUgTmAgLS0gd2hpY2ggcHV0cyBhIHJ1bGUgdGhhdCB0aHJldywgYSBicm9rZW4gY29uZmlnIGFuZCBhbiBPUy1sZXZlbCBkZWF0aCBpbiB0aGUgc2FtZSBidWNrZXQgYXNcbiAqIHJlYWwgZmluZGluZ3MuIFRoZSByZWFkZXIgdGhlbiBnb2VzIGh1bnRpbmcgZm9yIGEgZGVmZWN0IGluIHNvdXJjZSBjb2RlIHRoYXQgd2FzIG5ldmVyIGp1ZGdlZCBhdCBhbGwuXG4gKi9cblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGVidWcnO1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBjcCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgdHlwZSB7IEV4ZWNSZXN1bHQgfSBmcm9tICcuLi9leGVjLnRzJztcblxuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcblxuLyoqXG4gKiBUaGUgZmxhZ3MgdGhhdCBtYWtlIGEgV0FSTklORyBjb3VudCBhcyBhIGZpbmRpbmcsIHBhc3NlZCBvbiBldmVyeSBydW4uXG4gKlxuICogRVNMaW50IGV4aXRzIGAwYCB3aGVuIGEgcnVuIHJlcG9ydGVkIHdhcm5pbmdzIGFuZCBubyBlcnJvcnMsIHNvIHdpdGhvdXQgYC0tbWF4LXdhcm5pbmdzIDBgIHRoZSBnYXRlIHJlYWRzIGFcbiAqIHdhcm5pbmcgYXMgYSBjbGVhbiB0cmVlOiBgbGludGAgcHJpbnRzIGl0LCByZXR1cm5zIHN1Y2Nlc3MsIGFuZCBDSSwgdGhlIHByZS1jb21taXQgaG9vayBhbmQgZXZlcnkgc3dlZXBcbiAqIGFncmVlIHRoZSB0cmVlIGlzIGNsZWFuLiBBIHdhcm5pbmcgdGhhdCBub3RoaW5nIGV2ZXIgZmFpbHMgb24gaXMgYSB3YXJuaW5nIHRoYXQgc3RhbmRzIGZvciBldmVyLCBhbmQgdGhlXG4gKiBmbGVldCBoYXMgY2FycmllZCBzZXZlcmFsIHRoYXQgZWFjaCBuZWVkZWQgYSBwZXJzb24gcmF0aGVyIHRoYW4gYSBnYXRlIHRvIG5vdGljZSB0aGVtLlxuICpcbiAqIEl0IGlzIHBhc3NlZCB1bmNvbmRpdGlvbmFsbHkgYW5kIHRoZXJlIGlzIG5vIG9wdGlvbiB0byByYWlzZSBpdDogYSBjZWlsaW5nIGEgcmVwbyBjYW4gcmFpc2UgaXMgYSBnYXRlXG4gKiBzb21lYm9keSB0dXJucyBvZmYuIEl0IGlzIHBhc3NlZCBvbiB0aGUgYC0tZml4YCBydW5zIHRvbywgYmVjYXVzZSB3aGF0ZXZlciBpcyBsZWZ0IGFmdGVyIGZpeGluZyBpcyBleGFjdGx5XG4gKiB3aGF0IHRoZSBuby1maXggcnVuIHdvdWxkIGhhdmUganVkZ2VkLCBzbyB0aGUgdHdvIGNhbm5vdCBkaXNhZ3JlZSBhYm91dCB3aGF0IGNvdW50cy4gSXQgaXMgYSBzdGF0aWMgY29tbWFuZFxuICogcGFydCByYXRoZXIgdGhhbiBhIGJhdGNoZWQgYXJndW1lbnQsIHNvIGV2ZXJ5IGJhdGNoIG9mIGEgc3BsaXQgY29tbWFuZCBsaW5lIGNhcnJpZXMgaXQuXG4gKlxuICogYC0tbm8td2Fybi1pZ25vcmVkYCBoYXMgdG8gdHJhdmVsIHdpdGggaXQuIFRoZSBwcmUtY29tbWl0IGhvb2sgaGFuZHMgRVNMaW50IGV4cGxpY2l0IGZpbGUgbGlzdHMsIGFuZCBFU0xpbnRcbiAqIHJlcG9ydHMgYW4gZXhwbGljaXRseSBwYXNzZWQsIGdsb2JhbGx5IGlnbm9yZWQgcGF0aCAoYSBgdGVtcGxhdGVzL2AgZmlsZSwgc2F5KSBhcyBhIFdBUk5JTkcgcmF0aGVyIHRoYW5cbiAqIHNraXBwaW5nIGl0LiBVbmRlciBgLS1tYXgtd2FybmluZ3MgMGAgdGhhdCB3YXJuaW5nIGFsb25lIHdvdWxkIGZhaWwgdGhlIGNvbW1pdCwgYWx0aG91Z2ggaXQgc2F5cyBub3RoaW5nXG4gKiBhYm91dCB0aGUgY29kZS5cbiAqL1xuY29uc3QgRVNMSU5UX1dBUk5JTkdTX0FTX0ZJTkRJTkdTX0FSR1VNRU5UUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJy0tbWF4LXdhcm5pbmdzJywgJzAnLCAnLS1uby13YXJuLWlnbm9yZWQnXTtcblxuLyoqXG4gKiBXaGF0IGFuIEVTTGludCBydW4gYWN0dWFsbHkgZXN0YWJsaXNoZWQuXG4gKlxuICogLSBgY2xlYW5gIC0tIGl0IGxpbnRlZCBldmVyeXRoaW5nIGFuZCBmb3VuZCBub3RoaW5nLCB3YXJuaW5ncyBpbmNsdWRlZDogc2VlXG4gKiAgIHtAbGluayBFU0xJTlRfV0FSTklOR1NfQVNfRklORElOR1NfQVJHVU1FTlRTfSBmb3Igd2hhdCBtYWtlcyB0aGUgXCJpbmNsdWRlZFwiIGhhbGYgdHJ1ZS5cbiAqIC0gYGxpbnQtcHJvYmxlbXNgIC0tIGl0IGxpbnRlZCBldmVyeXRoaW5nIGFuZCB0aGUgU09VUkNFIGlzIHJlZC5cbiAqIC0gYGRpZC1ub3QtbGludGAgLS0gaXQgbmV2ZXIgZ290IHRocm91Z2ggdGhlIGxpbnQsIHNvIHRoZSBzb3VyY2UgaGFzIG5vdCBiZWVuIGp1ZGdlZCBhdCBhbGwuXG4gKi9cbmV4cG9ydCB0eXBlIEVzbGludEV4aXRLaW5kID0gJ2NsZWFuJyB8ICdkaWQtbm90LWxpbnQnIHwgJ2xpbnQtcHJvYmxlbXMnO1xuXG4vKipcbiAqIFRoZSBtZXNzYWdlIHRocm93biBmb3IgcmVhbCBmaW5kaW5ncywga2VwdCBhcGFydCBmcm9tIHtAbGluayBkZXNjcmliZUZhaWx1cmVUb0xpbnR9J3MuXG4gKi9cbmV4cG9ydCBjb25zdCBMSU5UX1BST0JMRU1TX01FU1NBR0UgPSAnRVNMaW50IHJlcG9ydGVkIGxpbnQgcHJvYmxlbXMuIFRoZSBmaW5kaW5ncyBhcmUgcHJpbnRlZCBhYm92ZS4nO1xuXG4vKipcbiAqIEVTTGludCdzIGV4aXQtY29kZSBjb250cmFjdDogYDBgIGlzIGNsZWFuLCBgMWAgbWVhbnMgaXQgZmluaXNoZWQgYW5kIHJlcG9ydGVkIGxpbnQgcHJvYmxlbXMsIGFuZCBldmVyeVxuICogb3RoZXIgY29kZSBtZWFucyBpdCBuZXZlciBmaW5pc2hlZCBsaW50aW5nIGF0IGFsbCAtLSBhIHJ1bGUgdGhyZXcsIHRoZSBjb25maWcgaXMgYnJva2VuLCBvciB0aGUgT1Mga2lsbGVkXG4gKiB0aGUgcHJvY2Vzcy4gT25seSBgMWAgaXMgZXZpZGVuY2UgYWJvdXQgdGhlIHNvdXJjZTsgdGhlIHJlc3QgYXJlIGV2aWRlbmNlIGFib3V0IHRoZSBsaW50ZXIsIGFuZCBhIGNhbGxlclxuICogdGhhdCByZWFkcyB0aGVtIGFzIGZpbmRpbmdzIGdvZXMgaHVudGluZyBmb3IgYSBkZWZlY3QgdGhhdCBpcyBub3QgdGhlcmUuXG4gKlxuICogYDBgIGlzIG9ubHkgYXMgc3Ryb25nIGFzIHtAbGluayBFU0xJTlRfV0FSTklOR1NfQVNfRklORElOR1NfQVJHVU1FTlRTfSBtYWtlcyBpdDogb24gaXRzIG93biBFU0xpbnQgZXhpdHMgYDBgXG4gKiBmb3IgYSBydW4gdGhhdCByZXBvcnRlZCBXQVJOSU5HUyBhbmQgbm8gZXJyb3JzLCB3aGljaCB0aGlzIHdvdWxkIHJlYWQgYXMgYGNsZWFuYC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2VzbGludC5vcmcvZG9jcy9sYXRlc3QvdXNlL2NvbW1hbmQtbGluZS1pbnRlcmZhY2UjZXhpdC1jb2Rlc31cbiAqL1xuY29uc3QgRVNMSU5UX0VYSVRfQ09ERV9DTEVBTiA9IDA7XG5cbmNvbnN0IEVTTElOVF9FWElUX0NPREVfTElOVF9QUk9CTEVNUyA9IDE7XG5cbi8qKlxuICogVGhlIGJhbm5lciBFU0xpbnQncyBmYXRhbC1lcnJvciBoYW5kbGVyIHdyaXRlcyB0byBzdGRlcnIgYmVmb3JlIGV4aXRpbmcuIEl0IGlzIE5PVCBjcmFzaC1zcGVjaWZpYzogRVNMaW50XG4gKiBwcmludHMgaXQgZm9yIGEgbWlzdHlwZWQgcGF0aCBhbmQgYSBicm9rZW4gY29uZmlnIGp1c3QgYXMgcmVhZGlseSBhcyBmb3IgYSBydWxlIHRoYXQgdGhyZXcsIHNvIGl0IGFuc3dlcnNcbiAqIFwiRVNMaW50IHRocmV3IGluc3RlYWQgb2YgZmluaXNoaW5nXCIgYW5kIG5vdGhpbmcgZmluZXIuIHtAbGluayBSVUxFX0NSQVNIX1JFR19FWFB9IGlzIHdoYXQgc2VwYXJhdGVzIHRoZVxuICogcnVsZSBjcmFzaCBvdXQgb2YgdGhhdCBzZXQuXG4gKi9cbmNvbnN0IEVTTElOVF9BQk9SVF9CQU5ORVIgPSAnT29wcyEgU29tZXRoaW5nIHdlbnQgd3JvbmchJztcblxuLyoqXG4gKiBFU0xpbnQgbmFtZXMgdGhlIG9mZmVuZGluZyBydWxlIG9uIGl0cyBvd24gbGluZSwgYW5kIG9ubHkgd2hlbiBhIFJVTEUgaXMgd2hhdCB0aHJldy5cbiAqL1xuY29uc3QgUlVMRV9DUkFTSF9SRUdfRVhQID0gL15SdWxlOiBcIi9tO1xuXG4vKipcbiAqIFRoZSBucG0gY2hhdHRlciB0aGF0IHNoYXJlcyB0aGUgY2hpbGQncyBzdGRlcnIgYW5kIHNheXMgbm90aGluZyBhYm91dCB3aHkgdGhlIGxpbnQgZmFpbGVkLlxuICovXG5jb25zdCBOUE1fTk9USUNFX1BSRUZJWCA9ICducG0gbm90aWNlJztcblxuLyoqXG4gKiBBIHN0YWNrIGZyYW1lIGluIEVTTGludCdzIG93biBvdXRwdXQgLS0gdGhlIGxpbmVzIGFib3ZlIGl0IHNheSB3aGF0IGhhcHBlbmVkLCB0aGVzZSBzYXkgb25seSB3aGVyZS5cbiAqL1xuY29uc3QgU1RBQ0tfRlJBTUVfUkVHX0VYUCA9IC9eYXRcXHMvO1xuXG5jb25zdCBNQVhfRkFJTFVSRV9ERVRBSUxfTElORVMgPSA2O1xuXG4vKipcbiAqIEV4aXQgY29kZXMgYXQgb3IgYWJvdmUgdGhpcyBhcmUgV2luZG93cyBOVCBzdGF0dXMgdmFsdWVzIHJhdGhlciB0aGFuIG9yZGluYXJ5IHByb2Nlc3MgZXhpdCBjb2RlcyAtLVxuICogbm90YWJseSBgMzIyMTIyNTQ3N2AgKGAweEMwMDAwMDA1YCwgYW4gYWNjZXNzIHZpb2xhdGlvbikuIFRoZSBFU0xpbnQgY2hpbGQgcmVhbGx5IGRvZXMgZGllIHRoYXQgd2F5IG9uXG4gKiBXaW5kb3dzIChtZWFzdXJlZCBhdCAxIHJ1biBpbiAzMCBvbiBhbiB1bmNoYW5nZWQsIGxpbnQtY2xlYW4gdHJlZSksIGFuZCBucG0gdGhlbiByZXBvcnRzIGl0IHRvIGl0cyBvd25cbiAqIGNhbGxlciBhcyBhIHBsYWluIGV4aXQgYDFgIC0tIHdoaWNoIGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gXCJ0aGUgY29kZSBpcyByZWRcIiB1bmxlc3Mgc29tZXRoaW5nIHNheXNcbiAqIG90aGVyd2lzZS4gVGhhdCBpcyB3aGF0IHtAbGluayBkZXNjcmliZUZhaWx1cmVUb0xpbnR9IGlzIGZvci5cbiAqL1xuY29uc3QgTUlOX05UX1NUQVRVU19FWElUX0NPREUgPSAweDFfMDBfMDA7XG5cbmNvbnN0IEhFWF9SQURJWCA9IDE2O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgbGludH0gZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGludE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb3BpZWQgdG8gdGhlIHByb2plY3Qgcm9vdCB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLiBXaXRob3V0IGl0LCBFU0xpbnQgcnVuc1xuICAgKiBhZ2FpbnN0IHdoYXRldmVyIGl0IGZpbmRzLCBhbmQgcmVwb3J0cyBhIG1pc3NpbmcgY29uZmlndXJhdGlvbiBpdHNlbGYuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uZmlnRmlsZVBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZpbGUgcGF0aHMgdG8gbGludC4gSWYgb21pdHRlZCwgbGludHMgdGhlIGVudGlyZSBwcm9qZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aHM/OiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBmaXggbGludGluZyBpc3N1ZXMgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRml4PzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBEZWNpZGVzIHdoaWNoIG9mIHRoZSB0aHJlZSB0aGluZ3MgYW4gRVNMaW50IHJ1biBlc3RhYmxpc2hlZC5cbiAqXG4gKiBBIGtpbGxlZCBwcm9jZXNzIGlzIGBkaWQtbm90LWxpbnRgIHdoYXRldmVyIGl0cyBleGl0IGNvZGUgc2F5cywgYmVjYXVzZSBhIHNpZ25hbCBtZWFucyBpdCB3YXMgc3RvcHBlZFxuICogcmF0aGVyIHRoYW4gdGhhdCBpdCBmaW5pc2hlZC4gQW4gZXhpdCBgMWAgY2FycnlpbmcgRVNMaW50J3MgZmF0YWwtZXJyb3IgYmFubmVyIGlzIGBkaWQtbm90LWxpbnRgIHRvbzogdGhhdFxuICogaXMgYSBjcmFzaCBucG0gcmVsYXllZCBhcyBhIHBsYWluIGAxYCwgbm90IGEgZmluZGluZy5cbiAqXG4gKiBAcGFyYW0gcmVzdWx0IC0gV2hhdCB0aGUgRVNMaW50IGNoaWxkIGRpZC5cbiAqIEByZXR1cm5zIFRoZSBraW5kIG9mIGVuZGluZyBpdCB3YXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeUVzbGludEV4aXQocmVzdWx0OiBFeGVjUmVzdWx0KTogRXNsaW50RXhpdEtpbmQge1xuICBpZiAocmVzdWx0LmV4aXRDb2RlID09PSBFU0xJTlRfRVhJVF9DT0RFX0NMRUFOICYmIHJlc3VsdC5leGl0U2lnbmFsID09PSBudWxsKSB7XG4gICAgcmV0dXJuICdjbGVhbic7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LmV4aXRDb2RlID09PSBFU0xJTlRfRVhJVF9DT0RFX0xJTlRfUFJPQkxFTVMgJiYgIXJlc3VsdC5zdGRlcnIuaW5jbHVkZXMoRVNMSU5UX0FCT1JUX0JBTk5FUilcbiAgICA/ICdsaW50LXByb2JsZW1zJ1xuICAgIDogJ2RpZC1ub3QtbGludCc7XG59XG5cbi8qKlxuICogU2F5cyB3aGljaCBvZiB0aGUgZm91ciBmYWlsdXJlcyB0byBsaW50IGhhcHBlbmVkLCBhbmQgcXVvdGVzIGJhY2sgd2hhdCBFU0xpbnQgc2FpZCBhYm91dCBpdC5cbiAqXG4gKiBAcGFyYW0gcmVzdWx0IC0gV2hhdCB0aGUgRVNMaW50IGNoaWxkIGRpZC5cbiAqIEByZXR1cm5zIFRoZSBtZXNzYWdlIHRvIHRocm93LCB3aGljaCBzYXlzIG91dHJpZ2h0IHRoYXQgaXQgaXMgbm90IGEgZmluZGluZyBhYm91dCB0aGUgc291cmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVzY3JpYmVGYWlsdXJlVG9MaW50KHJlc3VsdDogRXhlY1Jlc3VsdCk6IHN0cmluZyB7XG4gIGNvbnN0IGRldGFpbHMgPSBleHRyYWN0RmFpbHVyZURldGFpbHMocmVzdWx0LnN0ZGVycik7XG5cbiAgcmV0dXJuIFtcbiAgICBnZXRGYWlsdXJlSGVhZGxpbmUocmVzdWx0KSxcbiAgICAnVGhpcyBpcyBOT1QgYSBsaW50IGZpbmRpbmc6IHRoZSBzb3VyY2UgY29kZSBoYXMgbm90IGJlZW4ganVkZ2VkLCBzbyBkbyBub3QgZ28gbG9va2luZyBmb3IgYSBkZWZlY3QgaW4gaXQuJyxcbiAgICAnUmUtcnVuIHRoZSBjb21tYW5kLiBPbmx5IGlmIGl0IHJlcHJvZHVjZXMgaXMgdGhlcmUgc29tZXRoaW5nIHRvIGZpeCwgYW5kIHRoZSB0aGluZyB0byBmaXggaXMgdGhlIGxpbnRlci4nLFxuICAgIGAgIGV4aXQgY29kZTogJHtmb3JtYXRFeGl0Q29kZShyZXN1bHQuZXhpdENvZGUpfWAsXG4gICAgLi4ucmVzdWx0LmV4aXRTaWduYWwgPT09IG51bGwgPyBbXSA6IFtgICB0ZXJtaW5hdGVkIGJ5IHNpZ25hbDogJHtyZXN1bHQuZXhpdFNpZ25hbH1gXSxcbiAgICBkZXRhaWxzLmxlbmd0aCA+IDAgPyAnICBFU0xpbnQgc2FpZDonIDogJyAgRVNMaW50IHByaW50ZWQgbm8gZGlhZ25vc3RpYyBhdCBhbGwuJyxcbiAgICAuLi5kZXRhaWxzLm1hcCgoZGV0YWlsKSA9PiBgICAgICR7ZGV0YWlsfWApXG4gIF0uam9pbignXFxuJyk7XG59XG5cbi8qKlxuICogTGludCB0aGUgcHJvamVjdCB3aXRoIEVTTGludC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICogQHRocm93cyBBbiBgRXJyb3JgIGNhcnJ5aW5nIHtAbGluayBMSU5UX1BST0JMRU1TX01FU1NBR0V9IHdoZW4gdGhlIHNvdXJjZSBpcyByZWQsIGFuZFxuICoge0BsaW5rIGRlc2NyaWJlRmFpbHVyZVRvTGludH0ncyBtZXNzYWdlIHdoZW4gRVNMaW50IG5ldmVyIGZpbmlzaGVkIGxpbnRpbmcgYXQgYWxsLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGgsIHBhdGhzLCBzaG91bGRGaXggfSA9IG9wdGlvbnMgPz8ge307XG4gIGNvbnN0IGNvbmZpZ0ZpbGVzID0gW1xuICAgIFJlcG9QYXRocy5Fc2xpbnRDb25maWdKcyxcbiAgICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTWpzLFxuICAgIFJlcG9QYXRocy5Fc2xpbnRDb25maWdDanMsXG4gICAgUmVwb1BhdGhzLkVzbGludENvbmZpZ1RzLFxuICAgIFJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMsXG4gICAgUmVwb1BhdGhzLkVzbGludENvbmZpZ0N0c1xuICBdO1xuXG4gIGNvbnN0IGRvZXNDb25maWdGaWxlRXhpc3QgPSBjb25maWdGaWxlcy5zb21lKChjb25maWdGaWxlKSA9PiB7XG4gICAgY29uc3QgY29uZmlnRmlsZVBhdGggPSByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGNvbmZpZ0ZpbGUgfSk7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMoY29uZmlnRmlsZVBhdGgpO1xuICB9KTtcblxuICBpZiAoIWRvZXNDb25maWdGaWxlRXhpc3QgJiYgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoKSB7XG4gICAgZ2V0TGliRGVidWdnZXIoJ0VTTGludDpsaW50JykoJ0VTTGludCBjb25maWd1cmF0aW9uIGZpbGUgbm90IGZvdW5kLiBDcmVhdGluZyBkZWZhdWx0IGNvbmZpZy4uLicpO1xuICAgIGF3YWl0IGNwKGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBiYXNlbmFtZShkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIH0pKTtcbiAgfVxuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGUgcGF0aHMtcHJvdmlkZWQgYnJhbmNoIGlzIG9ubHkgZXhlcmNpc2VkIGJ5IGNvbnN1bWVyIHByb2plY3RzIHBhc3NpbmcgZmlsZSBsaXN0cy4gKi9cbiAgY29uc3QgdGFyZ2V0cyA9IHBhdGhzPy5sZW5ndGggPyBwYXRocyA6IFtSZXBvUGF0aHMuQ3VycmVudEZvbGRlcl07XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgLi4ucmVzb2x2ZVRvb2xDb21tYW5kKHsgdG9vbDogJ2VzbGludCcgfSksXG4gICAgLi4uRVNMSU5UX1dBUk5JTkdTX0FTX0ZJTkRJTkdTX0FSR1VNRU5UUyxcbiAgICAuLi4oc2hvdWxkRml4ID8gWyctLWZpeCddIDogW10pLFxuICAgIHsgYmF0Y2hlZEFyZ3VtZW50czogdGFyZ2V0cyB9XG4gIF0sIHtcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogdHJ1ZSxcbiAgICBzaG91bGRJbmNsdWRlRGV0YWlsczogdHJ1ZVxuICB9KTtcblxuICBjb25zdCBraW5kID0gY2xhc3NpZnlFc2xpbnRFeGl0KHJlc3VsdCk7XG5cbiAgaWYgKGtpbmQgPT09ICdjbGVhbicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3Ioa2luZCA9PT0gJ2xpbnQtcHJvYmxlbXMnID8gTElOVF9QUk9CTEVNU19NRVNTQUdFIDogZGVzY3JpYmVGYWlsdXJlVG9MaW50KHJlc3VsdCkpO1xufVxuXG4vKipcbiAqIFF1b3RlcyBiYWNrIGV2ZXJ5dGhpbmcgRVNMaW50IHNhaWQgdGhhdCBjYXJyaWVzIGluZm9ybWF0aW9uLiBJdCBkcm9wcyBvbmx5IHRoZSBiYW5uZXIgaXRzZWxmLCBucG0ncyBjaGF0dGVyXG4gKiBhbmQgdGhlIHN0YWNrIGZyYW1lcywgYW5kIGtlZXBzIHdoYXRldmVyIGlzIGxlZnQ6IGxpc3Rpbmcga25vd24gcHJlZml4ZXMgaW5zdGVhZCBjb3ZlcmVkIHRoZSBydWxlIGNyYXNoIGFuZFxuICogZHJvcHBlZCB0aGUgb25lIGxpbmUgdGhhdCBtYXR0ZXJlZCBmb3IgYSBtaXN0eXBlZCBwYXRoIChgTm8gZmlsZXMgbWF0Y2hpbmcgdGhlIHBhdHRlcm4gLi4uYCkuXG4gKlxuICogQHBhcmFtIHN0ZGVyciAtIEV2ZXJ5dGhpbmcgdGhlIGNoaWxkIHdyb3RlIHRvIHN0ZGVyci5cbiAqIEByZXR1cm5zIFRoZSBpbmZvcm1hdGl2ZSBsaW5lcywgZGUtZHVwbGljYXRlZCBhbmQgY2FwcGVkLlxuICovXG5mdW5jdGlvbiBleHRyYWN0RmFpbHVyZURldGFpbHMoc3RkZXJyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGRldGFpbHM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCByYXdMaW5lIG9mIHN0ZGVyci5zcGxpdCgnXFxuJykpIHtcbiAgICBpZiAoZGV0YWlscy5sZW5ndGggPT09IE1BWF9GQUlMVVJFX0RFVEFJTF9MSU5FUykge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZSA9IHJhd0xpbmUudHJpbSgpO1xuICAgIGNvbnN0IGlzTm9pc2UgPSBsaW5lID09PSAnJ1xuICAgICAgfHwgbGluZS5zdGFydHNXaXRoKEVTTElOVF9BQk9SVF9CQU5ORVIpXG4gICAgICB8fCBsaW5lLnN0YXJ0c1dpdGgoTlBNX05PVElDRV9QUkVGSVgpXG4gICAgICB8fCBTVEFDS19GUkFNRV9SRUdfRVhQLnRlc3QobGluZSk7XG4gICAgaWYgKCFpc05vaXNlICYmICFkZXRhaWxzLmluY2x1ZGVzKGxpbmUpKSB7XG4gICAgICBkZXRhaWxzLnB1c2gobGluZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRldGFpbHM7XG59XG5cbi8qKlxuICogU3BlbGxzIGFuIGV4aXQgY29kZSwgYWRkaW5nIHRoZSBoZXggZm9ybSBmb3IgdGhlIE5UIHN0YXR1cyB2YWx1ZXMgYSByZWFkZXIgY2Fubm90IHJlY29nbml6ZSBpbiBkZWNpbWFsLlxuICpcbiAqIEBwYXJhbSBleGl0Q29kZSAtIFRoZSBjaGlsZCdzIGV4aXQgY29kZSwgb3IgYG51bGxgIHdoZW4gYSBzaWduYWwgZW5kZWQgaXQgZmlyc3QuXG4gKiBAcmV0dXJucyBUaGUgY29kZSBhcyBpdCBzaG91bGQgYmUgcmVhZCBiYWNrLlxuICovXG5mdW5jdGlvbiBmb3JtYXRFeGl0Q29kZShleGl0Q29kZTogbnVsbCB8IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChleGl0Q29kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnKG5vbmUgLSB0aGUgcHJvY2VzcyB3YXMgdGVybWluYXRlZCBiZWZvcmUgaXQgY291bGQgZXhpdCknO1xuICB9XG5cbiAgcmV0dXJuIGV4aXRDb2RlIDwgTUlOX05UX1NUQVRVU19FWElUX0NPREUgPyBTdHJpbmcoZXhpdENvZGUpIDogYCR7U3RyaW5nKGV4aXRDb2RlKX0gKDB4JHtleGl0Q29kZS50b1N0cmluZyhIRVhfUkFESVgpLnRvVXBwZXJDYXNlKCl9KWA7XG59XG5cbi8qKlxuICogTmFtZXMgd2hpY2ggb2YgdGhlIGZvdXIgd2F5cyBFU0xpbnQgZmFpbGVkIHRvIGxpbnQgdGhpcyB3YXMuXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIFdoYXQgdGhlIEVTTGludCBjaGlsZCBkaWQuXG4gKiBAcmV0dXJucyBUaGUgZmlyc3QgbGluZSBvZiB7QGxpbmsgZGVzY3JpYmVGYWlsdXJlVG9MaW50fSdzIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGdldEZhaWx1cmVIZWFkbGluZShyZXN1bHQ6IEV4ZWNSZXN1bHQpOiBzdHJpbmcge1xuICBpZiAocmVzdWx0LmV4aXRTaWduYWwgIT09IG51bGwpIHtcbiAgICByZXR1cm4gJ0VTTGludCB3YXMgS0lMTEVEIGJlZm9yZSBpdCBmaW5pc2hlZCBsaW50aW5nLic7XG4gIH1cblxuICBpZiAocmVzdWx0LmV4aXRDb2RlICE9PSBudWxsICYmIHJlc3VsdC5leGl0Q29kZSA+PSBNSU5fTlRfU1RBVFVTX0VYSVRfQ09ERSkge1xuICAgIHJldHVybiAnRVNMaW50IERJRUQgYXQgdGhlIE9TIGxldmVsIC0gYW4gYWNjZXNzIHZpb2xhdGlvbiBvciBzaW1pbGFyLCB3aXRoIG5vIGRpYWdub3N0aWMgb2YgaXRzIG93bi4nO1xuICB9XG5cbiAgaWYgKFJVTEVfQ1JBU0hfUkVHX0VYUC50ZXN0KHJlc3VsdC5zdGRlcnIpKSB7XG4gICAgcmV0dXJuICdFU0xpbnQgQ1JBU0hFRDogYSBydWxlIHRocmV3IHdoaWxlIGxpbnRpbmcuIFRoZSBydWxlIGFuZCB0aGUgZmlsZSBpdCB3YXMgb24gYXJlIG5hbWVkIGJlbG93Lic7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0LnN0ZGVyci5pbmNsdWRlcyhFU0xJTlRfQUJPUlRfQkFOTkVSKVxuICAgID8gJ0VTTGludCBBQk9SVEVEOiBpdCB0aHJldyBpbnN0ZWFkIG9mIGZpbmlzaGluZyAtIGEgYnJva2VuIGNvbmZpZyBvciBjb21tYW5kIGxpbmUsIG9yIGFuIGludGVybmFsIGVycm9yLidcbiAgICA6ICdFU0xpbnQgZXhpdGVkIG5vbi16ZXJvIHdpdGhvdXQgcmVwb3J0aW5nIGZpbmRpbmdzLCBzbyBpdCBkaWQgbm90IGZpbmlzaCBsaW50aW5nLic7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBLG1CQUErQjtBQUMvQixrQkFBeUI7QUFDekIscUJBQTJCO0FBQzNCLHNCQUFtQjtBQUluQiw2QkFBbUM7QUFDbkMsd0JBQTBCO0FBQzFCLGtCQUdPO0FBb0JQLE1BQU0sd0NBQTJELENBQUMsa0JBQWtCLEtBQUssbUJBQW1CO0FBZXJHLE1BQU0sd0JBQXdCO0FBYXJDLE1BQU0seUJBQXlCO0FBRS9CLE1BQU0saUNBQWlDO0FBUXZDLE1BQU0sc0JBQXNCO0FBSzVCLE1BQU0scUJBQXFCO0FBSzNCLE1BQU0sb0JBQW9CO0FBSzFCLE1BQU0sc0JBQXNCO0FBRTVCLE1BQU0sMkJBQTJCO0FBU2pDLE1BQU0sMEJBQTBCO0FBRWhDLE1BQU0sWUFBWTtBQW1DWCxTQUFTLG1CQUFtQixRQUFvQztBQUNyRSxNQUFJLE9BQU8sYUFBYSwwQkFBMEIsT0FBTyxlQUFlLE1BQU07QUFDNUUsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLE9BQU8sYUFBYSxrQ0FBa0MsQ0FBQyxPQUFPLE9BQU8sU0FBUyxtQkFBbUIsSUFDcEcsa0JBQ0E7QUFDTjtBQVFPLFNBQVMsc0JBQXNCLFFBQTRCO0FBQ2hFLFFBQU0sVUFBVSxzQkFBc0IsT0FBTyxNQUFNO0FBRW5ELFNBQU87QUFBQSxJQUNMLG1CQUFtQixNQUFNO0FBQUEsSUFDekI7QUFBQSxJQUNBO0FBQUEsSUFDQSxnQkFBZ0IsZUFBZSxPQUFPLFFBQVEsQ0FBQztBQUFBLElBQy9DLEdBQUcsT0FBTyxlQUFlLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLE9BQU8sVUFBVSxFQUFFO0FBQUEsSUFDcEYsUUFBUSxTQUFTLElBQUksbUJBQW1CO0FBQUEsSUFDeEMsR0FBRyxRQUFRLElBQUksQ0FBQyxXQUFXLE9BQU8sTUFBTSxFQUFFO0FBQUEsRUFDNUMsRUFBRSxLQUFLLElBQUk7QUFDYjtBQVNBLGVBQXNCLEtBQUssU0FBc0M7QUFDL0QsUUFBTSxFQUFFLHVCQUF1QixPQUFPLFVBQVUsSUFBSSxXQUFXLENBQUM7QUFDaEUsUUFBTSxjQUFjO0FBQUEsSUFDbEIsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLElBQ1YsNEJBQVU7QUFBQSxJQUNWLDRCQUFVO0FBQUEsSUFDViw0QkFBVTtBQUFBLEVBQ1o7QUFFQSxRQUFNLHNCQUFzQixZQUFZLEtBQUssQ0FBQyxlQUFlO0FBQzNELFVBQU0scUJBQWlCLHFDQUF3QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25FLGVBQU8sMkJBQVcsY0FBYztBQUFBLEVBQ2xDLENBQUM7QUFFRCxNQUFJLENBQUMsdUJBQXVCLHVCQUF1QjtBQUNqRCxxQ0FBZSxhQUFhLEVBQUUsaUVBQWlFO0FBQy9GLGNBQU0sb0JBQUcsMkJBQXVCLHFDQUF3QixFQUFFLFVBQU0sc0JBQVMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0FBQUEsRUFDcEc7QUFHQSxRQUFNLFVBQVUsT0FBTyxTQUFTLFFBQVEsQ0FBQyw0QkFBVSxhQUFhO0FBRWhFLFFBQU0sU0FBUyxVQUFNLDBCQUFhO0FBQUEsSUFDaEMsT0FBRywyQ0FBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUFBLElBQ3hDLEdBQUc7QUFBQSxJQUNILEdBQUksWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDO0FBQUEsSUFDN0IsRUFBRSxrQkFBa0IsUUFBUTtBQUFBLEVBQzlCLEdBQUc7QUFBQSxJQUNELHNCQUFzQjtBQUFBLElBQ3RCLHNCQUFzQjtBQUFBLEVBQ3hCLENBQUM7QUFFRCxRQUFNLE9BQU8sbUJBQW1CLE1BQU07QUFFdEMsTUFBSSxTQUFTLFNBQVM7QUFDcEI7QUFBQSxFQUNGO0FBRUEsUUFBTSxJQUFJLE1BQU0sU0FBUyxrQkFBa0Isd0JBQXdCLHNCQUFzQixNQUFNLENBQUM7QUFDbEc7QUFVQSxTQUFTLHNCQUFzQixRQUEwQjtBQUN2RCxRQUFNLFVBQW9CLENBQUM7QUFFM0IsYUFBVyxXQUFXLE9BQU8sTUFBTSxJQUFJLEdBQUc7QUFDeEMsUUFBSSxRQUFRLFdBQVcsMEJBQTBCO0FBQy9DO0FBQUEsSUFDRjtBQUVBLFVBQU0sT0FBTyxRQUFRLEtBQUs7QUFDMUIsVUFBTSxVQUFVLFNBQVMsTUFDcEIsS0FBSyxXQUFXLG1CQUFtQixLQUNuQyxLQUFLLFdBQVcsaUJBQWlCLEtBQ2pDLG9CQUFvQixLQUFLLElBQUk7QUFDbEMsUUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLFNBQVMsSUFBSSxHQUFHO0FBQ3ZDLGNBQVEsS0FBSyxJQUFJO0FBQUEsSUFDbkI7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBUUEsU0FBUyxlQUFlLFVBQWlDO0FBQ3ZELE1BQUksYUFBYSxNQUFNO0FBQ3JCLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxXQUFXLDBCQUEwQixPQUFPLFFBQVEsSUFBSSxHQUFHLE9BQU8sUUFBUSxDQUFDLE9BQU8sU0FBUyxTQUFTLFNBQVMsRUFBRSxZQUFZLENBQUM7QUFDckk7QUFRQSxTQUFTLG1CQUFtQixRQUE0QjtBQUN0RCxNQUFJLE9BQU8sZUFBZSxNQUFNO0FBQzlCLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxPQUFPLGFBQWEsUUFBUSxPQUFPLFlBQVkseUJBQXlCO0FBQzFFLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxtQkFBbUIsS0FBSyxPQUFPLE1BQU0sR0FBRztBQUMxQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sT0FBTyxPQUFPLFNBQVMsbUJBQW1CLElBQzdDLDJHQUNBO0FBQ047IiwibmFtZXMiOltdfQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludGluZyB1dGlsaXR5IGZvciBFU0xpbnQgY29uZmlndXJhdGlvbiB3aXRoIHN1cHBvcnQgZm9yIGF1dG9tYXRpYyBmaXhpbmcuXG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBmdW5jdGlvbiB0byBsaW50IGZpbGVzIGJhc2VkIG9uIHRoZSBFU0xpbnQgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIGBlc2xpbnQuY29uZmlnLnRzYC5cbiAqIEl0IGNhbiBhdXRvbWF0aWNhbGx5IGZpeCBsaW50aW5nIGlzc3VlcyBpZiBzcGVjaWZpZWQsIGFuZCBsb2dzIHJlc3VsdHMgdG8gdGhlIGNvbnNvbGUuXG4gKlxuICogSXQgYWxzbyBrZWVwcyBhIGNyYXNoZWQgbGludGVyIGFwYXJ0IGZyb20gYSByZWQgY29kZWJhc2UuIEhhbmRpbmcgRVNMaW50J3MgZXhpdCBjb2RlIHN0cmFpZ2h0IHRvXG4gKiB7QGxpbmsgZXhlY0Zyb21Sb290fSBhbmQgbGV0dGluZyBpdCB0aHJvdyByZXBvcnRzIGV2ZXJ5IG5vbi16ZXJvIGNvZGUgdGhlIHNhbWUgd2F5IC0tIGBDb21tYW5kIGZhaWxlZCB3aXRoXG4gKiBleGl0IGNvZGUgTmAgLS0gd2hpY2ggcHV0cyBhIHJ1bGUgdGhhdCB0aHJldywgYSBicm9rZW4gY29uZmlnIGFuZCBhbiBPUy1sZXZlbCBkZWF0aCBpbiB0aGUgc2FtZSBidWNrZXQgYXNcbiAqIHJlYWwgZmluZGluZ3MuIFRoZSByZWFkZXIgdGhlbiBnb2VzIGh1bnRpbmcgZm9yIGEgZGVmZWN0IGluIHNvdXJjZSBjb2RlIHRoYXQgd2FzIG5ldmVyIGp1ZGdlZCBhdCBhbGwuXG4gKi9cblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZGVidWcnO1xuaW1wb3J0IHsgYmFzZW5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBjcCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG5pbXBvcnQgdHlwZSB7IEV4ZWNSZXN1bHQgfSBmcm9tICcuLi9leGVjLnRzJztcblxuaW1wb3J0IHsgcmVzb2x2ZVRvb2xDb21tYW5kIH0gZnJvbSAnLi4vcGFja2FnZS1tYW5hZ2VyLnRzJztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJy4uL3JlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuLi9yb290LnRzJztcblxuLyoqXG4gKiBUaGUgZmxhdCBjb25maWd1cmF0aW9uIGZpbGVzIEVTTGludCByZWFkcy5cbiAqL1xuY29uc3QgRVNMSU5UX0NPTkZJR19GSUxFX05BTUVTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgUmVwb1BhdGhzLkVzbGludENvbmZpZ0pzLFxuICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnTWpzLFxuICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnQ2pzLFxuICBSZXBvUGF0aHMuRXNsaW50Q29uZmlnVHMsXG4gIFJlcG9QYXRocy5Fc2xpbnRDb25maWdNdHMsXG4gIFJlcG9QYXRocy5Fc2xpbnRDb25maWdDdHNcbl07XG5cbi8qKlxuICogVGhlIGZsYWdzIHRoYXQgbWFrZSBhIFdBUk5JTkcgY291bnQgYXMgYSBmaW5kaW5nLCBwYXNzZWQgb24gZXZlcnkgcnVuLlxuICpcbiAqIEVTTGludCBleGl0cyBgMGAgd2hlbiBhIHJ1biByZXBvcnRlZCB3YXJuaW5ncyBhbmQgbm8gZXJyb3JzLCBzbyB3aXRob3V0IGAtLW1heC13YXJuaW5ncyAwYCB0aGUgZ2F0ZSByZWFkcyBhXG4gKiB3YXJuaW5nIGFzIGEgY2xlYW4gdHJlZTogYGxpbnRgIHByaW50cyBpdCwgcmV0dXJucyBzdWNjZXNzLCBhbmQgQ0ksIHRoZSBwcmUtY29tbWl0IGhvb2sgYW5kIGV2ZXJ5IHN3ZWVwXG4gKiBhZ3JlZSB0aGUgdHJlZSBpcyBjbGVhbi4gQSB3YXJuaW5nIHRoYXQgbm90aGluZyBldmVyIGZhaWxzIG9uIGlzIGEgd2FybmluZyB0aGF0IHN0YW5kcyBmb3IgZXZlciwgYW5kIHRoZVxuICogZmxlZXQgaGFzIGNhcnJpZWQgc2V2ZXJhbCB0aGF0IGVhY2ggbmVlZGVkIGEgcGVyc29uIHJhdGhlciB0aGFuIGEgZ2F0ZSB0byBub3RpY2UgdGhlbS5cbiAqXG4gKiBJdCBpcyBwYXNzZWQgdW5jb25kaXRpb25hbGx5IGFuZCB0aGVyZSBpcyBubyBvcHRpb24gdG8gcmFpc2UgaXQ6IGEgY2VpbGluZyBhIHJlcG8gY2FuIHJhaXNlIGlzIGEgZ2F0ZVxuICogc29tZWJvZHkgdHVybnMgb2ZmLiBJdCBpcyBwYXNzZWQgb24gdGhlIGAtLWZpeGAgcnVucyB0b28sIGJlY2F1c2Ugd2hhdGV2ZXIgaXMgbGVmdCBhZnRlciBmaXhpbmcgaXMgZXhhY3RseVxuICogd2hhdCB0aGUgbm8tZml4IHJ1biB3b3VsZCBoYXZlIGp1ZGdlZCwgc28gdGhlIHR3byBjYW5ub3QgZGlzYWdyZWUgYWJvdXQgd2hhdCBjb3VudHMuIEl0IGlzIGEgc3RhdGljIGNvbW1hbmRcbiAqIHBhcnQgcmF0aGVyIHRoYW4gYSBiYXRjaGVkIGFyZ3VtZW50LCBzbyBldmVyeSBiYXRjaCBvZiBhIHNwbGl0IGNvbW1hbmQgbGluZSBjYXJyaWVzIGl0LlxuICpcbiAqIGAtLW5vLXdhcm4taWdub3JlZGAgaGFzIHRvIHRyYXZlbCB3aXRoIGl0LiBUaGUgcHJlLWNvbW1pdCBob29rIGhhbmRzIEVTTGludCBleHBsaWNpdCBmaWxlIGxpc3RzLCBhbmQgRVNMaW50XG4gKiByZXBvcnRzIGFuIGV4cGxpY2l0bHkgcGFzc2VkLCBnbG9iYWxseSBpZ25vcmVkIHBhdGggKGEgYHRlbXBsYXRlcy9gIGZpbGUsIHNheSkgYXMgYSBXQVJOSU5HIHJhdGhlciB0aGFuXG4gKiBza2lwcGluZyBpdC4gVW5kZXIgYC0tbWF4LXdhcm5pbmdzIDBgIHRoYXQgd2FybmluZyBhbG9uZSB3b3VsZCBmYWlsIHRoZSBjb21taXQsIGFsdGhvdWdoIGl0IHNheXMgbm90aGluZ1xuICogYWJvdXQgdGhlIGNvZGUuXG4gKi9cbmNvbnN0IEVTTElOVF9XQVJOSU5HU19BU19GSU5ESU5HU19BUkdVTUVOVFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyctLW1heC13YXJuaW5ncycsICcwJywgJy0tbm8td2Fybi1pZ25vcmVkJ107XG5cbi8qKlxuICogV2hhdCBhbiBFU0xpbnQgcnVuIGFjdHVhbGx5IGVzdGFibGlzaGVkLlxuICpcbiAqIC0gYGNsZWFuYCAtLSBpdCBsaW50ZWQgZXZlcnl0aGluZyBhbmQgZm91bmQgbm90aGluZywgd2FybmluZ3MgaW5jbHVkZWQ6IHNlZVxuICogICB7QGxpbmsgRVNMSU5UX1dBUk5JTkdTX0FTX0ZJTkRJTkdTX0FSR1VNRU5UU30gZm9yIHdoYXQgbWFrZXMgdGhlIFwiaW5jbHVkZWRcIiBoYWxmIHRydWUuXG4gKiAtIGBsaW50LXByb2JsZW1zYCAtLSBpdCBsaW50ZWQgZXZlcnl0aGluZyBhbmQgdGhlIFNPVVJDRSBpcyByZWQuXG4gKiAtIGBkaWQtbm90LWxpbnRgIC0tIGl0IG5ldmVyIGdvdCB0aHJvdWdoIHRoZSBsaW50LCBzbyB0aGUgc291cmNlIGhhcyBub3QgYmVlbiBqdWRnZWQgYXQgYWxsLlxuICovXG5leHBvcnQgdHlwZSBFc2xpbnRFeGl0S2luZCA9ICdjbGVhbicgfCAnZGlkLW5vdC1saW50JyB8ICdsaW50LXByb2JsZW1zJztcblxuLyoqXG4gKiBUaGUgbWVzc2FnZSB0aHJvd24gZm9yIHJlYWwgZmluZGluZ3MsIGtlcHQgYXBhcnQgZnJvbSB7QGxpbmsgZGVzY3JpYmVGYWlsdXJlVG9MaW50fSdzLlxuICovXG5leHBvcnQgY29uc3QgTElOVF9QUk9CTEVNU19NRVNTQUdFID0gJ0VTTGludCByZXBvcnRlZCBsaW50IHByb2JsZW1zLiBUaGUgZmluZGluZ3MgYXJlIHByaW50ZWQgYWJvdmUuJztcblxuLyoqXG4gKiBFU0xpbnQncyBleGl0LWNvZGUgY29udHJhY3Q6IGAwYCBpcyBjbGVhbiwgYDFgIG1lYW5zIGl0IGZpbmlzaGVkIGFuZCByZXBvcnRlZCBsaW50IHByb2JsZW1zLCBhbmQgZXZlcnlcbiAqIG90aGVyIGNvZGUgbWVhbnMgaXQgbmV2ZXIgZmluaXNoZWQgbGludGluZyBhdCBhbGwgLS0gYSBydWxlIHRocmV3LCB0aGUgY29uZmlnIGlzIGJyb2tlbiwgb3IgdGhlIE9TIGtpbGxlZFxuICogdGhlIHByb2Nlc3MuIE9ubHkgYDFgIGlzIGV2aWRlbmNlIGFib3V0IHRoZSBzb3VyY2U7IHRoZSByZXN0IGFyZSBldmlkZW5jZSBhYm91dCB0aGUgbGludGVyLCBhbmQgYSBjYWxsZXJcbiAqIHRoYXQgcmVhZHMgdGhlbSBhcyBmaW5kaW5ncyBnb2VzIGh1bnRpbmcgZm9yIGEgZGVmZWN0IHRoYXQgaXMgbm90IHRoZXJlLlxuICpcbiAqIGAwYCBpcyBvbmx5IGFzIHN0cm9uZyBhcyB7QGxpbmsgRVNMSU5UX1dBUk5JTkdTX0FTX0ZJTkRJTkdTX0FSR1VNRU5UU30gbWFrZXMgaXQ6IG9uIGl0cyBvd24gRVNMaW50IGV4aXRzIGAwYFxuICogZm9yIGEgcnVuIHRoYXQgcmVwb3J0ZWQgV0FSTklOR1MgYW5kIG5vIGVycm9ycywgd2hpY2ggdGhpcyB3b3VsZCByZWFkIGFzIGBjbGVhbmAuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9lc2xpbnQub3JnL2RvY3MvbGF0ZXN0L3VzZS9jb21tYW5kLWxpbmUtaW50ZXJmYWNlI2V4aXQtY29kZXN9XG4gKi9cbmNvbnN0IEVTTElOVF9FWElUX0NPREVfQ0xFQU4gPSAwO1xuXG5jb25zdCBFU0xJTlRfRVhJVF9DT0RFX0xJTlRfUFJPQkxFTVMgPSAxO1xuXG4vKipcbiAqIFRoZSBiYW5uZXIgRVNMaW50J3MgZmF0YWwtZXJyb3IgaGFuZGxlciB3cml0ZXMgdG8gc3RkZXJyIGJlZm9yZSBleGl0aW5nLiBJdCBpcyBOT1QgY3Jhc2gtc3BlY2lmaWM6IEVTTGludFxuICogcHJpbnRzIGl0IGZvciBhIG1pc3R5cGVkIHBhdGggYW5kIGEgYnJva2VuIGNvbmZpZyBqdXN0IGFzIHJlYWRpbHkgYXMgZm9yIGEgcnVsZSB0aGF0IHRocmV3LCBzbyBpdCBhbnN3ZXJzXG4gKiBcIkVTTGludCB0aHJldyBpbnN0ZWFkIG9mIGZpbmlzaGluZ1wiIGFuZCBub3RoaW5nIGZpbmVyLiB7QGxpbmsgUlVMRV9DUkFTSF9SRUdfRVhQfSBpcyB3aGF0IHNlcGFyYXRlcyB0aGVcbiAqIHJ1bGUgY3Jhc2ggb3V0IG9mIHRoYXQgc2V0LlxuICovXG5jb25zdCBFU0xJTlRfQUJPUlRfQkFOTkVSID0gJ09vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nISc7XG5cbi8qKlxuICogRVNMaW50IG5hbWVzIHRoZSBvZmZlbmRpbmcgcnVsZSBvbiBpdHMgb3duIGxpbmUsIGFuZCBvbmx5IHdoZW4gYSBSVUxFIGlzIHdoYXQgdGhyZXcuXG4gKi9cbmNvbnN0IFJVTEVfQ1JBU0hfUkVHX0VYUCA9IC9eUnVsZTogXCIvbTtcblxuLyoqXG4gKiBUaGUgbnBtIGNoYXR0ZXIgdGhhdCBzaGFyZXMgdGhlIGNoaWxkJ3Mgc3RkZXJyIGFuZCBzYXlzIG5vdGhpbmcgYWJvdXQgd2h5IHRoZSBsaW50IGZhaWxlZC5cbiAqL1xuY29uc3QgTlBNX05PVElDRV9QUkVGSVggPSAnbnBtIG5vdGljZSc7XG5cbi8qKlxuICogQSBzdGFjayBmcmFtZSBpbiBFU0xpbnQncyBvd24gb3V0cHV0IC0tIHRoZSBsaW5lcyBhYm92ZSBpdCBzYXkgd2hhdCBoYXBwZW5lZCwgdGhlc2Ugc2F5IG9ubHkgd2hlcmUuXG4gKi9cbmNvbnN0IFNUQUNLX0ZSQU1FX1JFR19FWFAgPSAvXmF0XFxzLztcblxuY29uc3QgTUFYX0ZBSUxVUkVfREVUQUlMX0xJTkVTID0gNjtcblxuLyoqXG4gKiBFeGl0IGNvZGVzIGF0IG9yIGFib3ZlIHRoaXMgYXJlIFdpbmRvd3MgTlQgc3RhdHVzIHZhbHVlcyByYXRoZXIgdGhhbiBvcmRpbmFyeSBwcm9jZXNzIGV4aXQgY29kZXMgLS1cbiAqIG5vdGFibHkgYDMyMjEyMjU0NzdgIChgMHhDMDAwMDAwNWAsIGFuIGFjY2VzcyB2aW9sYXRpb24pLiBUaGUgRVNMaW50IGNoaWxkIHJlYWxseSBkb2VzIGRpZSB0aGF0IHdheSBvblxuICogV2luZG93cyAobWVhc3VyZWQgYXQgMSBydW4gaW4gMzAgb24gYW4gdW5jaGFuZ2VkLCBsaW50LWNsZWFuIHRyZWUpLCBhbmQgbnBtIHRoZW4gcmVwb3J0cyBpdCB0byBpdHMgb3duXG4gKiBjYWxsZXIgYXMgYSBwbGFpbiBleGl0IGAxYCAtLSB3aGljaCBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIFwidGhlIGNvZGUgaXMgcmVkXCIgdW5sZXNzIHNvbWV0aGluZyBzYXlzXG4gKiBvdGhlcndpc2UuIFRoYXQgaXMgd2hhdCB7QGxpbmsgZGVzY3JpYmVGYWlsdXJlVG9MaW50fSBpcyBmb3IuXG4gKi9cbmNvbnN0IE1JTl9OVF9TVEFUVVNfRVhJVF9DT0RFID0gMHgxXzAwXzAwO1xuXG5jb25zdCBIRVhfUkFESVggPSAxNjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB0aGUge0BsaW5rIGxpbnR9IGZ1bmN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgY29waWVkIHRvIHRoZSBwcm9qZWN0IHJvb3Qgd2hlbiB0aGUgcHJvamVjdCBoYXMgbm9uZS4gV2l0aG91dCBpdCwgRVNMaW50IHJ1bnNcbiAgICogYWdhaW5zdCB3aGF0ZXZlciBpdCBmaW5kcywgYW5kIHJlcG9ydHMgYSBtaXNzaW5nIGNvbmZpZ3VyYXRpb24gaXRzZWxmLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdENvbmZpZ0ZpbGVQYXRoPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmaWxlIHBhdGhzIHRvIGxpbnQuIElmIG9taXR0ZWQsIGxpbnRzIHRoZSBlbnRpcmUgcHJvamVjdC5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhzPzogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZml4IGxpbnRpbmcgaXNzdWVzIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEZpeD86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGljaCBvZiB0aGUgdGhyZWUgdGhpbmdzIGFuIEVTTGludCBydW4gZXN0YWJsaXNoZWQuXG4gKlxuICogQSBraWxsZWQgcHJvY2VzcyBpcyBgZGlkLW5vdC1saW50YCB3aGF0ZXZlciBpdHMgZXhpdCBjb2RlIHNheXMsIGJlY2F1c2UgYSBzaWduYWwgbWVhbnMgaXQgd2FzIHN0b3BwZWRcbiAqIHJhdGhlciB0aGFuIHRoYXQgaXQgZmluaXNoZWQuIEFuIGV4aXQgYDFgIGNhcnJ5aW5nIEVTTGludCdzIGZhdGFsLWVycm9yIGJhbm5lciBpcyBgZGlkLW5vdC1saW50YCB0b286IHRoYXRcbiAqIGlzIGEgY3Jhc2ggbnBtIHJlbGF5ZWQgYXMgYSBwbGFpbiBgMWAsIG5vdCBhIGZpbmRpbmcuXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIFdoYXQgdGhlIEVTTGludCBjaGlsZCBkaWQuXG4gKiBAcmV0dXJucyBUaGUga2luZCBvZiBlbmRpbmcgaXQgd2FzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlFc2xpbnRFeGl0KHJlc3VsdDogRXhlY1Jlc3VsdCk6IEVzbGludEV4aXRLaW5kIHtcbiAgaWYgKHJlc3VsdC5leGl0Q29kZSA9PT0gRVNMSU5UX0VYSVRfQ09ERV9DTEVBTiAmJiByZXN1bHQuZXhpdFNpZ25hbCA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnY2xlYW4nO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5leGl0Q29kZSA9PT0gRVNMSU5UX0VYSVRfQ09ERV9MSU5UX1BST0JMRU1TICYmICFyZXN1bHQuc3RkZXJyLmluY2x1ZGVzKEVTTElOVF9BQk9SVF9CQU5ORVIpXG4gICAgPyAnbGludC1wcm9ibGVtcydcbiAgICA6ICdkaWQtbm90LWxpbnQnO1xufVxuXG4vKipcbiAqIFNheXMgd2hpY2ggb2YgdGhlIGZvdXIgZmFpbHVyZXMgdG8gbGludCBoYXBwZW5lZCwgYW5kIHF1b3RlcyBiYWNrIHdoYXQgRVNMaW50IHNhaWQgYWJvdXQgaXQuXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIFdoYXQgdGhlIEVTTGludCBjaGlsZCBkaWQuXG4gKiBAcmV0dXJucyBUaGUgbWVzc2FnZSB0byB0aHJvdywgd2hpY2ggc2F5cyBvdXRyaWdodCB0aGF0IGl0IGlzIG5vdCBhIGZpbmRpbmcgYWJvdXQgdGhlIHNvdXJjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2NyaWJlRmFpbHVyZVRvTGludChyZXN1bHQ6IEV4ZWNSZXN1bHQpOiBzdHJpbmcge1xuICBjb25zdCBkZXRhaWxzID0gZXh0cmFjdEZhaWx1cmVEZXRhaWxzKHJlc3VsdC5zdGRlcnIpO1xuXG4gIHJldHVybiBbXG4gICAgZ2V0RmFpbHVyZUhlYWRsaW5lKHJlc3VsdCksXG4gICAgJ1RoaXMgaXMgTk9UIGEgbGludCBmaW5kaW5nOiB0aGUgc291cmNlIGNvZGUgaGFzIG5vdCBiZWVuIGp1ZGdlZCwgc28gZG8gbm90IGdvIGxvb2tpbmcgZm9yIGEgZGVmZWN0IGluIGl0LicsXG4gICAgJ1JlLXJ1biB0aGUgY29tbWFuZC4gT25seSBpZiBpdCByZXByb2R1Y2VzIGlzIHRoZXJlIHNvbWV0aGluZyB0byBmaXgsIGFuZCB0aGUgdGhpbmcgdG8gZml4IGlzIHRoZSBsaW50ZXIuJyxcbiAgICBgICBleGl0IGNvZGU6ICR7Zm9ybWF0RXhpdENvZGUocmVzdWx0LmV4aXRDb2RlKX1gLFxuICAgIC4uLnJlc3VsdC5leGl0U2lnbmFsID09PSBudWxsID8gW10gOiBbYCAgdGVybWluYXRlZCBieSBzaWduYWw6ICR7cmVzdWx0LmV4aXRTaWduYWx9YF0sXG4gICAgZGV0YWlscy5sZW5ndGggPiAwID8gJyAgRVNMaW50IHNhaWQ6JyA6ICcgIEVTTGludCBwcmludGVkIG5vIGRpYWdub3N0aWMgYXQgYWxsLicsXG4gICAgLi4uZGV0YWlscy5tYXAoKGRldGFpbCkgPT4gYCAgICAke2RldGFpbH1gKVxuICBdLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIFNheXMgd2hldGhlciB0aGUgcHJvamVjdCBjb25maWd1cmVzIEVTTGludCBpdHNlbGYuXG4gKlxuICogQHJldHVybnMgV2hldGhlciBhbiBgZXNsaW50LmNvbmZpZy4qYCBmaWxlIGV4aXN0cyBhdCB0aGUgcHJvamVjdCByb290LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzRXNsaW50Q29uZmlnKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gRVNMSU5UX0NPTkZJR19GSUxFX05BTUVTLnNvbWUoKGZpbGVOYW1lKSA9PiBleGlzdHNTeW5jKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogZmlsZU5hbWUgfSkpKTtcbn1cblxuLyoqXG4gKiBMaW50IHRoZSBwcm9qZWN0IHdpdGggRVNMaW50LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBMaW50T3B0aW9uc30uXG4gKiBAdGhyb3dzIEFuIGBFcnJvcmAgY2Fycnlpbmcge0BsaW5rIExJTlRfUFJPQkxFTVNfTUVTU0FHRX0gd2hlbiB0aGUgc291cmNlIGlzIHJlZCwgYW5kXG4gKiB7QGxpbmsgZGVzY3JpYmVGYWlsdXJlVG9MaW50fSdzIG1lc3NhZ2Ugd2hlbiBFU0xpbnQgbmV2ZXIgZmluaXNoZWQgbGludGluZyBhdCBhbGwuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaW50KG9wdGlvbnM/OiBMaW50T3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGRlZmF1bHRDb25maWdGaWxlUGF0aCwgcGF0aHMsIHNob3VsZEZpeCB9ID0gb3B0aW9ucyA/PyB7fTtcbiAgaWYgKCFoYXNFc2xpbnRDb25maWcoKSAmJiBkZWZhdWx0Q29uZmlnRmlsZVBhdGgpIHtcbiAgICBnZXRMaWJEZWJ1Z2dlcignRVNMaW50OmxpbnQnKSgnRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZSBub3QgZm91bmQuIENyZWF0aW5nIGRlZmF1bHQgY29uZmlnLi4uJyk7XG4gICAgYXdhaXQgY3AoZGVmYXVsdENvbmZpZ0ZpbGVQYXRoLCByZXNvbHZlUGF0aEZyb21Sb290U2FmZSh7IHBhdGg6IGJhc2VuYW1lKGRlZmF1bHRDb25maWdGaWxlUGF0aCkgfSkpO1xuICB9XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIFRoZSBwYXRocy1wcm92aWRlZCBicmFuY2ggaXMgb25seSBleGVyY2lzZWQgYnkgY29uc3VtZXIgcHJvamVjdHMgcGFzc2luZyBmaWxlIGxpc3RzLiAqL1xuICBjb25zdCB0YXJnZXRzID0gcGF0aHM/Lmxlbmd0aCA/IHBhdGhzIDogW1JlcG9QYXRocy5DdXJyZW50Rm9sZGVyXTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAuLi5yZXNvbHZlVG9vbENvbW1hbmQoeyB0b29sOiAnZXNsaW50JyB9KSxcbiAgICAuLi5FU0xJTlRfV0FSTklOR1NfQVNfRklORElOR1NfQVJHVU1FTlRTLFxuICAgIC4uLihzaG91bGRGaXggPyBbJy0tZml4J10gOiBbXSksXG4gICAgeyBiYXRjaGVkQXJndW1lbnRzOiB0YXJnZXRzIH1cbiAgXSwge1xuICAgIHNob3VsZElnbm9yZUV4aXRDb2RlOiB0cnVlLFxuICAgIHNob3VsZEluY2x1ZGVEZXRhaWxzOiB0cnVlXG4gIH0pO1xuXG4gIGNvbnN0IGtpbmQgPSBjbGFzc2lmeUVzbGludEV4aXQocmVzdWx0KTtcblxuICBpZiAoa2luZCA9PT0gJ2NsZWFuJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihraW5kID09PSAnbGludC1wcm9ibGVtcycgPyBMSU5UX1BST0JMRU1TX01FU1NBR0UgOiBkZXNjcmliZUZhaWx1cmVUb0xpbnQocmVzdWx0KSk7XG59XG5cbi8qKlxuICogUXVvdGVzIGJhY2sgZXZlcnl0aGluZyBFU0xpbnQgc2FpZCB0aGF0IGNhcnJpZXMgaW5mb3JtYXRpb24uIEl0IGRyb3BzIG9ubHkgdGhlIGJhbm5lciBpdHNlbGYsIG5wbSdzIGNoYXR0ZXJcbiAqIGFuZCB0aGUgc3RhY2sgZnJhbWVzLCBhbmQga2VlcHMgd2hhdGV2ZXIgaXMgbGVmdDogbGlzdGluZyBrbm93biBwcmVmaXhlcyBpbnN0ZWFkIGNvdmVyZWQgdGhlIHJ1bGUgY3Jhc2ggYW5kXG4gKiBkcm9wcGVkIHRoZSBvbmUgbGluZSB0aGF0IG1hdHRlcmVkIGZvciBhIG1pc3R5cGVkIHBhdGggKGBObyBmaWxlcyBtYXRjaGluZyB0aGUgcGF0dGVybiAuLi5gKS5cbiAqXG4gKiBAcGFyYW0gc3RkZXJyIC0gRXZlcnl0aGluZyB0aGUgY2hpbGQgd3JvdGUgdG8gc3RkZXJyLlxuICogQHJldHVybnMgVGhlIGluZm9ybWF0aXZlIGxpbmVzLCBkZS1kdXBsaWNhdGVkIGFuZCBjYXBwZWQuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RGYWlsdXJlRGV0YWlscyhzdGRlcnI6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZGV0YWlsczogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJhd0xpbmUgb2Ygc3RkZXJyLnNwbGl0KCdcXG4nKSkge1xuICAgIGlmIChkZXRhaWxzLmxlbmd0aCA9PT0gTUFYX0ZBSUxVUkVfREVUQUlMX0xJTkVTKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lID0gcmF3TGluZS50cmltKCk7XG4gICAgY29uc3QgaXNOb2lzZSA9IGxpbmUgPT09ICcnXG4gICAgICB8fCBsaW5lLnN0YXJ0c1dpdGgoRVNMSU5UX0FCT1JUX0JBTk5FUilcbiAgICAgIHx8IGxpbmUuc3RhcnRzV2l0aChOUE1fTk9USUNFX1BSRUZJWClcbiAgICAgIHx8IFNUQUNLX0ZSQU1FX1JFR19FWFAudGVzdChsaW5lKTtcbiAgICBpZiAoIWlzTm9pc2UgJiYgIWRldGFpbHMuaW5jbHVkZXMobGluZSkpIHtcbiAgICAgIGRldGFpbHMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGV0YWlscztcbn1cblxuLyoqXG4gKiBTcGVsbHMgYW4gZXhpdCBjb2RlLCBhZGRpbmcgdGhlIGhleCBmb3JtIGZvciB0aGUgTlQgc3RhdHVzIHZhbHVlcyBhIHJlYWRlciBjYW5ub3QgcmVjb2duaXplIGluIGRlY2ltYWwuXG4gKlxuICogQHBhcmFtIGV4aXRDb2RlIC0gVGhlIGNoaWxkJ3MgZXhpdCBjb2RlLCBvciBgbnVsbGAgd2hlbiBhIHNpZ25hbCBlbmRlZCBpdCBmaXJzdC5cbiAqIEByZXR1cm5zIFRoZSBjb2RlIGFzIGl0IHNob3VsZCBiZSByZWFkIGJhY2suXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEV4aXRDb2RlKGV4aXRDb2RlOiBudWxsIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKGV4aXRDb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuICcobm9uZSAtIHRoZSBwcm9jZXNzIHdhcyB0ZXJtaW5hdGVkIGJlZm9yZSBpdCBjb3VsZCBleGl0KSc7XG4gIH1cblxuICByZXR1cm4gZXhpdENvZGUgPCBNSU5fTlRfU1RBVFVTX0VYSVRfQ09ERSA/IFN0cmluZyhleGl0Q29kZSkgOiBgJHtTdHJpbmcoZXhpdENvZGUpfSAoMHgke2V4aXRDb2RlLnRvU3RyaW5nKEhFWF9SQURJWCkudG9VcHBlckNhc2UoKX0pYDtcbn1cblxuLyoqXG4gKiBOYW1lcyB3aGljaCBvZiB0aGUgZm91ciB3YXlzIEVTTGludCBmYWlsZWQgdG8gbGludCB0aGlzIHdhcy5cbiAqXG4gKiBAcGFyYW0gcmVzdWx0IC0gV2hhdCB0aGUgRVNMaW50IGNoaWxkIGRpZC5cbiAqIEByZXR1cm5zIFRoZSBmaXJzdCBsaW5lIG9mIHtAbGluayBkZXNjcmliZUZhaWx1cmVUb0xpbnR9J3MgbWVzc2FnZS5cbiAqL1xuZnVuY3Rpb24gZ2V0RmFpbHVyZUhlYWRsaW5lKHJlc3VsdDogRXhlY1Jlc3VsdCk6IHN0cmluZyB7XG4gIGlmIChyZXN1bHQuZXhpdFNpZ25hbCAhPT0gbnVsbCkge1xuICAgIHJldHVybiAnRVNMaW50IHdhcyBLSUxMRUQgYmVmb3JlIGl0IGZpbmlzaGVkIGxpbnRpbmcuJztcbiAgfVxuXG4gIGlmIChyZXN1bHQuZXhpdENvZGUgIT09IG51bGwgJiYgcmVzdWx0LmV4aXRDb2RlID49IE1JTl9OVF9TVEFUVVNfRVhJVF9DT0RFKSB7XG4gICAgcmV0dXJuICdFU0xpbnQgRElFRCBhdCB0aGUgT1MgbGV2ZWwgLSBhbiBhY2Nlc3MgdmlvbGF0aW9uIG9yIHNpbWlsYXIsIHdpdGggbm8gZGlhZ25vc3RpYyBvZiBpdHMgb3duLic7XG4gIH1cblxuICBpZiAoUlVMRV9DUkFTSF9SRUdfRVhQLnRlc3QocmVzdWx0LnN0ZGVycikpIHtcbiAgICByZXR1cm4gJ0VTTGludCBDUkFTSEVEOiBhIHJ1bGUgdGhyZXcgd2hpbGUgbGludGluZy4gVGhlIHJ1bGUgYW5kIHRoZSBmaWxlIGl0IHdhcyBvbiBhcmUgbmFtZWQgYmVsb3cuJztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuc3RkZXJyLmluY2x1ZGVzKEVTTElOVF9BQk9SVF9CQU5ORVIpXG4gICAgPyAnRVNMaW50IEFCT1JURUQ6IGl0IHRocmV3IGluc3RlYWQgb2YgZmluaXNoaW5nIC0gYSBicm9rZW4gY29uZmlnIG9yIGNvbW1hbmQgbGluZSwgb3IgYW4gaW50ZXJuYWwgZXJyb3IuJ1xuICAgIDogJ0VTTGludCBleGl0ZWQgbm9uLXplcm8gd2l0aG91dCByZXBvcnRpbmcgZmluZGluZ3MsIHNvIGl0IGRpZCBub3QgZmluaXNoIGxpbnRpbmcuJztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtB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
@@ -64,6 +64,12 @@ export declare function classifyEslintExit(result: ExecResult): EslintExitKind;
64
64
  * @returns The message to throw, which says outright that it is not a finding about the source.
65
65
  */
66
66
  export declare function describeFailureToLint(result: ExecResult): string;
67
+ /**
68
+ * Says whether the project configures ESLint itself.
69
+ *
70
+ * @returns Whether an `eslint.config.*` file exists at the project root.
71
+ */
72
+ export declare function hasEslintConfig(): boolean;
67
73
  /**
68
74
  * Lint the project with ESLint.
69
75
  *
@@ -33,6 +33,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
33
33
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
34
  var linters_exports = {};
35
35
  __export(linters_exports, {
36
+ auto: () => auto,
37
+ biome: () => biome,
36
38
  cspell: () => cspell,
37
39
  "cspell-content": () => cspell_content,
38
40
  eslint: () => eslint,
@@ -49,6 +51,8 @@ __export(linters_exports, {
49
51
  "over-exposure": () => over_exposure
50
52
  });
51
53
  module.exports = __toCommonJS(linters_exports);
54
+ var auto = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./auto.cjs')), 1);
55
+ var biome = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./biome.cjs')), 1);
52
56
  var cspell_content = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./cspell-content.cjs')), 1);
53
57
  var cspell = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./cspell.cjs')), 1);
54
58
  var eslint_agnostic_core_boundary = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./eslint-agnostic-core-boundary.cjs')), 1);
@@ -65,6 +69,8 @@ var markdownlint = __toESM(((module) => module && module.__esModule && 'default'
65
69
  var over_exposure = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./over-exposure.cjs')), 1);
66
70
  // Annotate the CommonJS export names for ESM import in node:
67
71
  0 && (module.exports = {
72
+ auto,
73
+ biome,
68
74
  cspell,
69
75
  "cspell-content": null,
70
76
  eslint,
@@ -80,4 +86,4 @@ var over_exposure = __toESM(((module) => module && module.__esModule && 'default
80
86
  "markdownlint-rules": null,
81
87
  "over-exposure": null
82
88
  });
83
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnY3NwZWxsLWNvbnRlbnQnIGZyb20gJy4vY3NwZWxsLWNvbnRlbnQudHMnO1xuZXhwb3J0ICogYXMgJ2NzcGVsbCcgZnJvbSAnLi9jc3BlbGwudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1hZ25vc3RpYy1jb3JlLWJvdW5kYXJ5JyBmcm9tICcuL2VzbGludC1hZ25vc3RpYy1jb3JlLWJvdW5kYXJ5LnRzJztcbmV4cG9ydCAqIGFzICdlc2xpbnQtY29uZmlnJyBmcm9tICcuL2VzbGludC1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1uby1yZXN0cmljdGVkLXN5bnRheCcgZnJvbSAnLi9lc2xpbnQtbm8tcmVzdHJpY3RlZC1zeW50YXgudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1ydWxlcycgZnJvbSAnLi9lc2xpbnQtcnVsZXMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludCcgZnJvbSAnLi9lc2xpbnQudHMnO1xuZXhwb3J0ICogYXMgJ2xpbnQtaWdub3JlcycgZnJvbSAnLi9saW50LWlnbm9yZXMudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3dubGludC1jbGkyLWNvbmZpZycgZnJvbSAnLi9tYXJrZG93bmxpbnQtY2xpMi1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3dubGludC1jb250ZW50JyBmcm9tICcuL21hcmtkb3dubGludC1jb250ZW50LnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bmxpbnQtaWdub3JlcycgZnJvbSAnLi9tYXJrZG93bmxpbnQtaWdub3Jlcy50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd25saW50LXJ1bGVzJyBmcm9tICcuL21hcmtkb3dubGludC1ydWxlcy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd25saW50JyBmcm9tICcuL21hcmtkb3dubGludC50cyc7XG5leHBvcnQgKiBhcyAnb3Zlci1leHBvc3VyZScgZnJvbSAnLi9vdmVyLWV4cG9zdXJlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBLDBCQUFBQTtBQUFBLEVBQUE7QUFBQSx5Q0FBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBLEVBQUEscUNBQUFDO0FBQUEsRUFBQSxzQkFBQUM7QUFBQSxFQUFBLHNCQUFBQztBQUFBLEVBQUE7QUFBQSxvQ0FBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQSw0QkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBO0FBQUE7QUFFQSxJQUFBVixpQkFBa0M7QUFDbEMsYUFBMEI7QUFDMUIsSUFBQUMsZ0NBQWlEO0FBQ2pELElBQUFDLGdCQUFpQztBQUNqQyxJQUFBQyw4QkFBK0M7QUFDL0MsSUFBQUMsZUFBZ0M7QUFDaEMsYUFBMEI7QUFDMUIsSUFBQUMsZUFBZ0M7QUFDaEMsSUFBQUMsMkJBQTRDO0FBQzVDLElBQUFDLHVCQUF3QztBQUN4QyxJQUFBQyx1QkFBd0M7QUFDeEMsSUFBQUMscUJBQXNDO0FBQ3RDLG1CQUFnQztBQUNoQyxJQUFBQyxnQkFBaUM7IiwKICAibmFtZXMiOiBbImNzcGVsbC1jb250ZW50IiwgImVzbGludC1hZ25vc3RpYy1jb3JlLWJvdW5kYXJ5IiwgImVzbGludC1jb25maWciLCAiZXNsaW50LW5vLXJlc3RyaWN0ZWQtc3ludGF4IiwgImVzbGludC1ydWxlcyIsICJsaW50LWlnbm9yZXMiLCAibWFya2Rvd25saW50LWNsaTItY29uZmlnIiwgIm1hcmtkb3dubGludC1jb250ZW50IiwgIm1hcmtkb3dubGludC1pZ25vcmVzIiwgIm1hcmtkb3dubGludC1ydWxlcyIsICJvdmVyLWV4cG9zdXJlIl0KfQo=
89
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYXV0bycgZnJvbSAnLi9hdXRvLnRzJztcbmV4cG9ydCAqIGFzICdiaW9tZScgZnJvbSAnLi9iaW9tZS50cyc7XG5leHBvcnQgKiBhcyAnY3NwZWxsLWNvbnRlbnQnIGZyb20gJy4vY3NwZWxsLWNvbnRlbnQudHMnO1xuZXhwb3J0ICogYXMgJ2NzcGVsbCcgZnJvbSAnLi9jc3BlbGwudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1hZ25vc3RpYy1jb3JlLWJvdW5kYXJ5JyBmcm9tICcuL2VzbGludC1hZ25vc3RpYy1jb3JlLWJvdW5kYXJ5LnRzJztcbmV4cG9ydCAqIGFzICdlc2xpbnQtY29uZmlnJyBmcm9tICcuL2VzbGludC1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1uby1yZXN0cmljdGVkLXN5bnRheCcgZnJvbSAnLi9lc2xpbnQtbm8tcmVzdHJpY3RlZC1zeW50YXgudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludC1ydWxlcycgZnJvbSAnLi9lc2xpbnQtcnVsZXMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2VzbGludCcgZnJvbSAnLi9lc2xpbnQudHMnO1xuZXhwb3J0ICogYXMgJ2xpbnQtaWdub3JlcycgZnJvbSAnLi9saW50LWlnbm9yZXMudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3dubGludC1jbGkyLWNvbmZpZycgZnJvbSAnLi9tYXJrZG93bmxpbnQtY2xpMi1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ21hcmtkb3dubGludC1jb250ZW50JyBmcm9tICcuL21hcmtkb3dubGludC1jb250ZW50LnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bmxpbnQtaWdub3JlcycgZnJvbSAnLi9tYXJrZG93bmxpbnQtaWdub3Jlcy50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd25saW50LXJ1bGVzJyBmcm9tICcuL21hcmtkb3dubGludC1ydWxlcy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnbWFya2Rvd25saW50JyBmcm9tICcuL21hcmtkb3dubGludC50cyc7XG5leHBvcnQgKiBhcyAnb3Zlci1leHBvc3VyZScgZnJvbSAnLi9vdmVyLWV4cG9zdXJlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSwwQkFBQUE7QUFBQSxFQUFBO0FBQUEseUNBQUFDO0FBQUEsRUFBQSx1QkFBQUM7QUFBQSxFQUFBLHFDQUFBQztBQUFBLEVBQUEsc0JBQUFDO0FBQUEsRUFBQSxzQkFBQUM7QUFBQSxFQUFBO0FBQUEsb0NBQUFDO0FBQUEsRUFBQSw4QkFBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUEsNEJBQUFDO0FBQUEsRUFBQSx1QkFBQUM7QUFBQTtBQUFBO0FBRUEsV0FBd0I7QUFDeEIsWUFBeUI7QUFDekIsSUFBQVYsaUJBQWtDO0FBQ2xDLGFBQTBCO0FBQzFCLElBQUFDLGdDQUFpRDtBQUNqRCxJQUFBQyxnQkFBaUM7QUFDakMsSUFBQUMsOEJBQStDO0FBQy9DLElBQUFDLGVBQWdDO0FBQ2hDLGFBQTBCO0FBQzFCLElBQUFDLGVBQWdDO0FBQ2hDLElBQUFDLDJCQUE0QztBQUM1QyxJQUFBQyx1QkFBd0M7QUFDeEMsSUFBQUMsdUJBQXdDO0FBQ3hDLElBQUFDLHFCQUFzQztBQUN0QyxtQkFBZ0M7QUFDaEMsSUFBQUMsZ0JBQWlDOyIsCiAgIm5hbWVzIjogWyJjc3BlbGwtY29udGVudCIsICJlc2xpbnQtYWdub3N0aWMtY29yZS1ib3VuZGFyeSIsICJlc2xpbnQtY29uZmlnIiwgImVzbGludC1uby1yZXN0cmljdGVkLXN5bnRheCIsICJlc2xpbnQtcnVsZXMiLCAibGludC1pZ25vcmVzIiwgIm1hcmtkb3dubGludC1jbGkyLWNvbmZpZyIsICJtYXJrZG93bmxpbnQtY29udGVudCIsICJtYXJrZG93bmxpbnQtaWdub3JlcyIsICJtYXJrZG93bmxpbnQtcnVsZXMiLCAib3Zlci1leHBvc3VyZSJdCn0K
@@ -1,4 +1,6 @@
1
1
  /// <reference path="../library-references.d.cts" />
2
+ export * as 'auto' from './auto.cjs';
3
+ export * as 'biome' from './biome.cjs';
2
4
  export * as 'cspell-content' from './cspell-content.cjs';
3
5
  export * as 'cspell' from './cspell.cjs';
4
6
  export * as 'eslint-agnostic-core-boundary' from './eslint-agnostic-core-boundary.cjs';
@@ -39,6 +39,8 @@ var RepoPaths = /* @__PURE__ */ ((RepoPaths2) => {
39
39
  RepoPaths2["AnyTsx"] = "*.tsx";
40
40
  RepoPaths2["BatExtension"] = ".bat";
41
41
  RepoPaths2["Bin"] = ".bin";
42
+ RepoPaths2["BiomeJson"] = "biome.json";
43
+ RepoPaths2["BiomeJsonc"] = "biome.jsonc";
42
44
  RepoPaths2["BunLock"] = "bun.lock";
43
45
  RepoPaths2["BunLockb"] = "bun.lockb";
44
46
  RepoPaths2["ChangelogMd"] = "CHANGELOG.md";
@@ -109,4 +111,4 @@ var RepoPaths = /* @__PURE__ */ ((RepoPaths2) => {
109
111
  0 && (module.exports = {
110
112
  RepoPaths
111
113
  });
112
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlcG8tcGF0aHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tb24gZmlsZSBwYXRocyBhbmQgcGF0dGVybnMgdGhlIFR5cGVTY3JpcHQgcHJvamVjdCB0b29saW5nIHVzZXMsIHNvIHRoZSB0b29saW5nIG5ldmVyIHNwZWxscyB0aGVtIGFzXG4gKiBoYXJkY29kZWQgc3RyaW5ncy5cbiAqL1xuXG4vKipcbiAqIENvbW1vbiBmaWxlIHBhdGhzIGFuZCBwYXR0ZXJucyB1c2VkIGJ5IHRoZSBUeXBlU2NyaXB0IHByb2plY3QgdG9vbGluZy5cbiAqL1xuZXhwb3J0IGVudW0gUmVwb1BhdGhzIHtcbiAgLyoqXG4gIEFueSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIEFueSA9ICcqJyxcblxuICAvKipcbiAgQ29tbW9uSlMgZmlsZS5cbiAgICovXG4gIEFueUNqcyA9ICcqLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS5cbiAgICovXG4gIEFueURjdHMgPSAnKi5kLmN0cycsXG5cbiAgLyoqXG4gIEVTTSBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuXG4gICAqL1xuICBBbnlEbXRzID0gJyouZC5tdHMnLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuXG4gICAqL1xuICBBbnlEdHMgPSAnKi5kLnRzJyxcblxuICAvKipcbiAgRVNNIEphdmFTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueU1qcyA9ICcqLm1qcycsXG5cbiAgLyoqXG4gIEFueSBwYXRoIHJlY3Vyc2l2ZWx5LlxuICAgKi9cbiAgQW55UGF0aCA9ICcqKicsXG5cbiAgLyoqXG4gIEFueSB0ZXN0IFR5cGVTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueVRlc3RUcyA9ICcqLnRlc3QudHMnLFxuXG4gIC8qKlxuICBBbnkgVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55VHMgPSAnKi50cycsXG5cbiAgLyoqXG4gIEFueSBUU1ggZmlsZS5cbiAgICovXG4gIEFueVRzeCA9ICcqLnRzeCcsXG5cbiAgLyoqXG4gIFdpbmRvd3MgYmF0Y2ggZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBCYXRFeHRlbnNpb24gPSAnLmJhdCcsXG5cbiAgLyoqXG4gIEZvbGRlciBob2xkaW5nIHRoZSBleGVjdXRhYmxlIHNoaW1zIG9mIGxvY2FsbHktaW5zdGFsbGVkIHBhY2thZ2VzLlxuICAgKi9cbiAgQmluID0gJy5iaW4nLFxuXG4gIC8qKlxuICBCdW4gbG9ja2ZpbGUuXG4gICAqL1xuICBCdW5Mb2NrID0gJ2J1bi5sb2NrJyxcblxuICAvKipcbiAgQmluYXJ5IGJ1biBsb2NrZmlsZSwgd3JpdHRlbiBieSBidW4gYmVmb3JlIHYxLjIuXG4gICAqL1xuICBCdW5Mb2NrYiA9ICdidW4ubG9ja2InLFxuXG4gIC8qKlxuICBDaGFuZ2Vsb2cgZmlsZS5cbiAgICovXG4gIENoYW5nZWxvZ01kID0gJ0NIQU5HRUxPRy5tZCcsXG5cbiAgLyoqXG4gIENvbW1vbkpTIGZvbGRlci5cbiAgICovXG4gIENqcyA9ICdjanMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIENqc0V4dGVuc2lvbiA9ICcuY2pzJyxcblxuICAvKipcbiAgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuIGBnaXQgd29ya3RyZWUgYWRkYCBwdXRzIGEgc2Vjb25kLCBjb21wbGV0ZSBjaGVja291dCBvZiB0aGUgcmVwb3NpdG9yeVxuICBoZXJlLCBJTlNJREUgdGhlIHJlcG9zaXRvcnksIHdoaWNoIGlzIHRoZSBvbmx5IHJlYXNvbiBhIHJlcG8gZXZlciBjb250YWlucyBhIGNvcHkgb2YgaXRzZWxmLiBOZXZlclxuICBzb3VyY2UsIHNvIGV2ZXJ5IGxpbnRlciB0aGF0IHdhbGtzIHRoZSB0cmVlIGhhcyB0byBza2lwIGl0LlxuICAgKi9cbiAgQ2xhdWRlV29ya3RyZWVzID0gJy5jbGF1ZGUvd29ya3RyZWVzJyxcblxuICAvKipcbiAgV2luZG93cyBjb21tYW5kIHNjcmlwdCBleHRlbnNpb24uXG4gICAqL1xuICBDb21tYW5kRXh0ZW5zaW9uID0gJy5jbWQnLFxuXG4gIC8qKlxuICBDb21taXRsaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIENvbW1pdGxpbnRDb25maWdUcyA9ICdjb21taXRsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqXG4gIEN1cnJlbnQgZm9sZGVyLlxuICAgKi9cbiAgQ3VycmVudEZvbGRlciA9ICcuJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIERjdHNFeHRlbnNpb24gPSAnLmQuY3RzJyxcblxuICAvKipcbiAgRGlzdHJpYnV0aW9uIGZvbGRlci5cbiAgICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqXG4gIEEgcGF0aCB0byB0aGUgYGxpYmAgZm9sZGVyIHdpdGhpbiB0aGUge0BsaW5rIERpc3R9IGZvbGRlci5cbiAgICovXG4gIERpc3RMaWIgPSAnZGlzdC9saWInLFxuXG4gIC8qKlxuICBBIHBhdGggdG8gdGhlIGB0ZW1wbGF0ZXNgIGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIsIGhvbGRpbmcgdGhlIGNvbnN1bWVyLWZhY2luZyB0ZW1wbGF0ZXMuXG4gICAqL1xuICBEaXN0VGVtcGxhdGVzID0gJ2Rpc3QvdGVtcGxhdGVzJyxcblxuICAvKipcbiAgVHJhbnNwaWxlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgRGpzRXh0ZW5zaW9uID0gJy5kLmpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBEbXRzRXh0ZW5zaW9uID0gJy5kLm10cycsXG5cbiAgLyoqXG4gIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24gZm9sZGVyIHdpdGhpbiBhIHZhdWx0LlxuICAgKi9cbiAgRG90T2JzaWRpYW4gPSAnLm9ic2lkaWFuJyxcblxuICAvKipcbiAgRHByaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIERwcmludEpzb24gPSAnZHByaW50Lmpzb24nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgRHRzRXh0ZW5zaW9uID0gJy5kLnRzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0NqcyA9ICdlc2xpbnQuY29uZmlnLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0N0cyA9ICdlc2xpbnQuY29uZmlnLmN0cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0pzID0gJ2VzbGludC5jb25maWcuanMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnTWpzID0gJ2VzbGludC5jb25maWcubWpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ1RzID0gJ2VzbGludC5jb25maWcudHMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBmb2xkZXIuXG4gICAqL1xuICBFc20gPSAnZXNtJyxcblxuICAvKipcbiAgV2luZG93cyBleGVjdXRhYmxlIGV4dGVuc2lvbi5cbiAgICovXG4gIEV4ZUV4dGVuc2lvbiA9ICcuZXhlJyxcblxuICAvKipcbiAgQ29tbW9uSlMgSmF2YVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhDanMgPSAnaW5kZXguY2pzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuXG4gICAqL1xuICBJbmRleERjdHMgPSAnaW5kZXguZC5jdHMnLFxuXG4gIC8qKlxuICBFU00gVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuXG4gICAqL1xuICBJbmRleERtdHMgPSAnaW5kZXguZC5tdHMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhNanMgPSAnaW5kZXgubWpzJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhUcyA9ICdpbmRleC50cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBKc0V4dGVuc2lvbiA9ICcuanMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQtY2xpMi5janMnLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC1jbGkyLmpzb25jJyxcblxuICAvKipcbiAgRVNNIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqXG4gIFlBTUwgTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ1lhbWwgPSAnLm1hcmtkb3dubGludC1jbGkyLnlhbWwnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQuY2pzJyxcblxuICAvKipcbiAgSlNPTiBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbiA9ICcubWFya2Rvd25saW50Lmpzb24nLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC5qc29uYycsXG5cbiAgLyoqXG4gIEVTTSBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQubWpzJyxcblxuICAvKipcbiAgWUFNTCBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWWFtbCA9ICcubWFya2Rvd25saW50LnlhbWwnLFxuXG4gIC8qKlxuICBZQU1MIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZbWwgPSAnLm1hcmtkb3dubGludC55bWwnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIE1qc0V4dGVuc2lvbiA9ICcubWpzJyxcblxuICAvKipcbiAgVGVzdCBtb2NrcyBmb2xkZXIuXG4gICAqL1xuICBNb2NrcyA9ICdzcmMvdGVzdC1oZWxwZXJzJyxcblxuICAvKipcbiAgTm9kZSBtb2R1bGVzIGZvbGRlci5cbiAgICovXG4gIE5vZGVNb2R1bGVzID0gJ25vZGVfbW9kdWxlcycsXG5cbiAgLyoqXG4gIE5QTSBzaHJpbmt3cmFwIGZpbGUuXG4gICAqL1xuICBOcG1TaHJpbmt3cmFwSnNvbiA9ICducG0tc2hyaW5rd3JhcC5qc29uJyxcblxuICAvKipcbiAgUGFja2FnZSBKU09OIGZpbGUuXG4gICAqL1xuICBQYWNrYWdlSnNvbiA9ICdwYWNrYWdlLmpzb24nLFxuXG4gIC8qKlxuICBOUE0gbG9ja2ZpbGUuXG4gICAqL1xuICBQYWNrYWdlTG9ja0pzb24gPSAncGFja2FnZS1sb2NrLmpzb24nLFxuXG4gIC8qKlxuICBQbnBtIGxvY2tmaWxlLlxuICAgKi9cbiAgUG5wbUxvY2tZYW1sID0gJ3BucG0tbG9jay55YW1sJyxcblxuICAvKipcbiAgUm9vdCBmb2xkZXIuXG4gICAqL1xuICBSb290Rm9sZGVyID0gJy8nLFxuXG4gIC8qKlxuICBTY3JpcHRzIGZvbGRlci5cbiAgICovXG4gIFNjcmlwdHMgPSAnc2NyaXB0cycsXG5cbiAgLyoqXG4gIFNvdXJjZSBmb2xkZXIuXG4gICAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKipcbiAgU3R5bGVzIGZvbGRlci5cbiAgICovXG4gIFN0eWxlcyA9ICdzdHlsZXMnLFxuXG4gIC8qKlxuICBTdHlsZXMgQ1NTIGZpbGUuXG4gICAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqXG4gIFRlbXBsYXRlcyBmb2xkZXIuXG4gICAqL1xuICBUZW1wbGF0ZXMgPSAndGVtcGxhdGVzJyxcblxuICAvKipcbiAgVGVzdCBoZWxwZXJzIGZvbGRlci5cbiAgICovXG4gIFRlc3RIZWxwZXJzID0gJ3Rlc3QtaGVscGVycycsXG5cbiAgLyoqXG4gIFRlc3RzIGZvbGRlci5cbiAgICovXG4gIFRlc3RzID0gJ19fdGVzdHNfXycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgVHNDb25maWdKc29uID0gJ3RzY29uZmlnLmpzb24nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHZhbGlkYXRlcyB0aGUgZ2VuZXJhdGVkIENvbW1vbkpTIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNDanNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy1janMuanNvbicsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgdmFsaWRhdGVzIHRoZSBnZW5lcmF0ZWQgRVNNIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy5qc29uJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIFRzRXh0ZW5zaW9uID0gJy50cycsXG5cbiAgLyoqXG4gIFR5cGVzIGZvbGRlci5cbiAgICovXG4gIFR5cGVzID0gJ0B0eXBlcycsXG5cbiAgLyoqXG4gIFZpdGVzdCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBWaXRlc3RDb25maWdUcyA9ICd2aXRlc3QuY29uZmlnLnRzJyxcblxuICAvKipcbiAgWWFybiBsb2NrZmlsZS5cbiAgICovXG4gIFlhcm5Mb2NrID0gJ3lhcm4ubG9jaydcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVPLElBQUssWUFBTCxrQkFBS0EsZUFBTDtBQUlMLEVBQUFBLFdBQUEsU0FBTTtBQUtOLEVBQUFBLFdBQUEsWUFBUztBQUtULEVBQUFBLFdBQUEsYUFBVTtBQUtWLEVBQUFBLFdBQUEsYUFBVTtBQUtWLEVBQUFBLFdBQUEsWUFBUztBQUtULEVBQUFBLFdBQUEsWUFBUztBQUtULEVBQUFBLFdBQUEsYUFBVTtBQUtWLEVBQUFBLFdBQUEsZUFBWTtBQUtaLEVBQUFBLFdBQUEsV0FBUTtBQUtSLEVBQUFBLFdBQUEsWUFBUztBQUtULEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLFNBQU07QUFLTixFQUFBQSxXQUFBLGFBQVU7QUFLVixFQUFBQSxXQUFBLGNBQVc7QUFLWCxFQUFBQSxXQUFBLGlCQUFjO0FBS2QsRUFBQUEsV0FBQSxTQUFNO0FBS04sRUFBQUEsV0FBQSxrQkFBZTtBQU9mLEVBQUFBLFdBQUEscUJBQWtCO0FBS2xCLEVBQUFBLFdBQUEsc0JBQW1CO0FBS25CLEVBQUFBLFdBQUEsd0JBQXFCO0FBS3JCLEVBQUFBLFdBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFdBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFdBQUEsVUFBTztBQUtQLEVBQUFBLFdBQUEsYUFBVTtBQUtWLEVBQUFBLFdBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLG1CQUFnQjtBQUtoQixFQUFBQSxXQUFBLGlCQUFjO0FBS2QsRUFBQUEsV0FBQSxnQkFBYTtBQUtiLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxXQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxXQUFBLG9CQUFpQjtBQUtqQixFQUFBQSxXQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxXQUFBLHFCQUFrQjtBQUtsQixFQUFBQSxXQUFBLG9CQUFpQjtBQUtqQixFQUFBQSxXQUFBLFNBQU07QUFLTixFQUFBQSxXQUFBLGtCQUFlO0FBS2YsRUFBQUEsV0FBQSxjQUFXO0FBS1gsRUFBQUEsV0FBQSxlQUFZO0FBS1osRUFBQUEsV0FBQSxlQUFZO0FBS1osRUFBQUEsV0FBQSxjQUFXO0FBS1gsRUFBQUEsV0FBQSxhQUFVO0FBS1YsRUFBQUEsV0FBQSxpQkFBYztBQUtkLEVBQUFBLFdBQUEsK0JBQTRCO0FBSzVCLEVBQUFBLFdBQUEsaUNBQThCO0FBSzlCLEVBQUFBLFdBQUEsK0JBQTRCO0FBSzVCLEVBQUFBLFdBQUEsZ0NBQTZCO0FBSzdCLEVBQUFBLFdBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLFdBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFdBQUEsNkJBQTBCO0FBSzFCLEVBQUFBLFdBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLFdBQUEsNEJBQXlCO0FBS3pCLEVBQUFBLFdBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLFdBQVE7QUFLUixFQUFBQSxXQUFBLGlCQUFjO0FBS2QsRUFBQUEsV0FBQSx1QkFBb0I7QUFLcEIsRUFBQUEsV0FBQSxpQkFBYztBQUtkLEVBQUFBLFdBQUEscUJBQWtCO0FBS2xCLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLGdCQUFhO0FBS2IsRUFBQUEsV0FBQSxhQUFVO0FBS1YsRUFBQUEsV0FBQSxTQUFNO0FBS04sRUFBQUEsV0FBQSxZQUFTO0FBS1QsRUFBQUEsV0FBQSxlQUFZO0FBS1osRUFBQUEsV0FBQSxlQUFZO0FBS1osRUFBQUEsV0FBQSxpQkFBYztBQUtkLEVBQUFBLFdBQUEsV0FBUTtBQUtSLEVBQUFBLFdBQUEsa0JBQWU7QUFLZixFQUFBQSxXQUFBLHlDQUFzQztBQUt0QyxFQUFBQSxXQUFBLHNDQUFtQztBQUtuQyxFQUFBQSxXQUFBLGlCQUFjO0FBS2QsRUFBQUEsV0FBQSxXQUFRO0FBS1IsRUFBQUEsV0FBQSxvQkFBaUI7QUFLakIsRUFBQUEsV0FBQSxjQUFXO0FBN1hELFNBQUFBO0FBQUEsR0FBQTsiLAogICJuYW1lcyI6IFsiUmVwb1BhdGhzIl0KfQo=
114
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlcG8tcGF0aHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21tb24gZmlsZSBwYXRocyBhbmQgcGF0dGVybnMgdGhlIFR5cGVTY3JpcHQgcHJvamVjdCB0b29saW5nIHVzZXMsIHNvIHRoZSB0b29saW5nIG5ldmVyIHNwZWxscyB0aGVtIGFzXG4gKiBoYXJkY29kZWQgc3RyaW5ncy5cbiAqL1xuXG4vKipcbiAqIENvbW1vbiBmaWxlIHBhdGhzIGFuZCBwYXR0ZXJucyB1c2VkIGJ5IHRoZSBUeXBlU2NyaXB0IHByb2plY3QgdG9vbGluZy5cbiAqL1xuZXhwb3J0IGVudW0gUmVwb1BhdGhzIHtcbiAgLyoqXG4gIEFueSBmaWxlIG9yIGZvbGRlci5cbiAgICovXG4gIEFueSA9ICcqJyxcblxuICAvKipcbiAgQ29tbW9uSlMgZmlsZS5cbiAgICovXG4gIEFueUNqcyA9ICcqLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS5cbiAgICovXG4gIEFueURjdHMgPSAnKi5kLmN0cycsXG5cbiAgLyoqXG4gIEVTTSBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuXG4gICAqL1xuICBBbnlEbXRzID0gJyouZC5tdHMnLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuXG4gICAqL1xuICBBbnlEdHMgPSAnKi5kLnRzJyxcblxuICAvKipcbiAgRVNNIEphdmFTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueU1qcyA9ICcqLm1qcycsXG5cbiAgLyoqXG4gIEFueSBwYXRoIHJlY3Vyc2l2ZWx5LlxuICAgKi9cbiAgQW55UGF0aCA9ICcqKicsXG5cbiAgLyoqXG4gIEFueSB0ZXN0IFR5cGVTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueVRlc3RUcyA9ICcqLnRlc3QudHMnLFxuXG4gIC8qKlxuICBBbnkgVHlwZVNjcmlwdCBmaWxlLlxuICAgKi9cbiAgQW55VHMgPSAnKi50cycsXG5cbiAgLyoqXG4gIEFueSBUU1ggZmlsZS5cbiAgICovXG4gIEFueVRzeCA9ICcqLnRzeCcsXG5cbiAgLyoqXG4gIFdpbmRvd3MgYmF0Y2ggZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBCYXRFeHRlbnNpb24gPSAnLmJhdCcsXG5cbiAgLyoqXG4gIEZvbGRlciBob2xkaW5nIHRoZSBleGVjdXRhYmxlIHNoaW1zIG9mIGxvY2FsbHktaW5zdGFsbGVkIHBhY2thZ2VzLlxuICAgKi9cbiAgQmluID0gJy5iaW4nLFxuXG4gIC8qKlxuICBCaW9tZSBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBCaW9tZUpzb24gPSAnYmlvbWUuanNvbicsXG5cbiAgLyoqXG4gIEJpb21lIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2l0aCBjb21tZW50cy5cbiAgICovXG4gIEJpb21lSnNvbmMgPSAnYmlvbWUuanNvbmMnLFxuXG4gIC8qKlxuICBCdW4gbG9ja2ZpbGUuXG4gICAqL1xuICBCdW5Mb2NrID0gJ2J1bi5sb2NrJyxcblxuICAvKipcbiAgQmluYXJ5IGJ1biBsb2NrZmlsZSwgd3JpdHRlbiBieSBidW4gYmVmb3JlIHYxLjIuXG4gICAqL1xuICBCdW5Mb2NrYiA9ICdidW4ubG9ja2InLFxuXG4gIC8qKlxuICBDaGFuZ2Vsb2cgZmlsZS5cbiAgICovXG4gIENoYW5nZWxvZ01kID0gJ0NIQU5HRUxPRy5tZCcsXG5cbiAgLyoqXG4gIENvbW1vbkpTIGZvbGRlci5cbiAgICovXG4gIENqcyA9ICdjanMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIENqc0V4dGVuc2lvbiA9ICcuY2pzJyxcblxuICAvKipcbiAgQ2xhdWRlIENvZGUncyB3b3JrdHJlZSBmb2xkZXIuIGBnaXQgd29ya3RyZWUgYWRkYCBwdXRzIGEgc2Vjb25kLCBjb21wbGV0ZSBjaGVja291dCBvZiB0aGUgcmVwb3NpdG9yeVxuICBoZXJlLCBJTlNJREUgdGhlIHJlcG9zaXRvcnksIHdoaWNoIGlzIHRoZSBvbmx5IHJlYXNvbiBhIHJlcG8gZXZlciBjb250YWlucyBhIGNvcHkgb2YgaXRzZWxmLiBOZXZlclxuICBzb3VyY2UsIHNvIGV2ZXJ5IGxpbnRlciB0aGF0IHdhbGtzIHRoZSB0cmVlIGhhcyB0byBza2lwIGl0LlxuICAgKi9cbiAgQ2xhdWRlV29ya3RyZWVzID0gJy5jbGF1ZGUvd29ya3RyZWVzJyxcblxuICAvKipcbiAgV2luZG93cyBjb21tYW5kIHNjcmlwdCBleHRlbnNpb24uXG4gICAqL1xuICBDb21tYW5kRXh0ZW5zaW9uID0gJy5jbWQnLFxuXG4gIC8qKlxuICBDb21taXRsaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIENvbW1pdGxpbnRDb25maWdUcyA9ICdjb21taXRsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqXG4gIEN1cnJlbnQgZm9sZGVyLlxuICAgKi9cbiAgQ3VycmVudEZvbGRlciA9ICcuJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIERjdHNFeHRlbnNpb24gPSAnLmQuY3RzJyxcblxuICAvKipcbiAgRGlzdHJpYnV0aW9uIGZvbGRlci5cbiAgICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqXG4gIEEgcGF0aCB0byB0aGUgYGxpYmAgZm9sZGVyIHdpdGhpbiB0aGUge0BsaW5rIERpc3R9IGZvbGRlci5cbiAgICovXG4gIERpc3RMaWIgPSAnZGlzdC9saWInLFxuXG4gIC8qKlxuICBBIHBhdGggdG8gdGhlIGB0ZW1wbGF0ZXNgIGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIsIGhvbGRpbmcgdGhlIGNvbnN1bWVyLWZhY2luZyB0ZW1wbGF0ZXMuXG4gICAqL1xuICBEaXN0VGVtcGxhdGVzID0gJ2Rpc3QvdGVtcGxhdGVzJyxcblxuICAvKipcbiAgVHJhbnNwaWxlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgRGpzRXh0ZW5zaW9uID0gJy5kLmpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBEbXRzRXh0ZW5zaW9uID0gJy5kLm10cycsXG5cbiAgLyoqXG4gIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24gZm9sZGVyIHdpdGhpbiBhIHZhdWx0LlxuICAgKi9cbiAgRG90T2JzaWRpYW4gPSAnLm9ic2lkaWFuJyxcblxuICAvKipcbiAgRHByaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIERwcmludEpzb24gPSAnZHByaW50Lmpzb24nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLlxuICAgKi9cbiAgRHRzRXh0ZW5zaW9uID0gJy5kLnRzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0NqcyA9ICdlc2xpbnQuY29uZmlnLmNqcycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0N0cyA9ICdlc2xpbnQuY29uZmlnLmN0cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ0pzID0gJ2VzbGludC5jb25maWcuanMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnTWpzID0gJ2VzbGludC5jb25maWcubWpzJyxcblxuICAvKipcbiAgRVNNIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIEVzbGludENvbmZpZ1RzID0gJ2VzbGludC5jb25maWcudHMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBmb2xkZXIuXG4gICAqL1xuICBFc20gPSAnZXNtJyxcblxuICAvKipcbiAgV2luZG93cyBleGVjdXRhYmxlIGV4dGVuc2lvbi5cbiAgICovXG4gIEV4ZUV4dGVuc2lvbiA9ICcuZXhlJyxcblxuICAvKipcbiAgQ29tbW9uSlMgSmF2YVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhDanMgPSAnaW5kZXguY2pzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuXG4gICAqL1xuICBJbmRleERjdHMgPSAnaW5kZXguZC5jdHMnLFxuXG4gIC8qKlxuICBFU00gVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuXG4gICAqL1xuICBJbmRleERtdHMgPSAnaW5kZXguZC5tdHMnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhNanMgPSAnaW5kZXgubWpzJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBpbmRleCBmaWxlLlxuICAgKi9cbiAgSW5kZXhUcyA9ICdpbmRleC50cycsXG5cbiAgLyoqXG4gIEphdmFTY3JpcHQgZmlsZSBleHRlbnNpb24uXG4gICAqL1xuICBKc0V4dGVuc2lvbiA9ICcuanMnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQtY2xpMi5janMnLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC1jbGkyLmpzb25jJyxcblxuICAvKipcbiAgRVNNIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqXG4gIFlBTUwgTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ1lhbWwgPSAnLm1hcmtkb3dubGludC1jbGkyLnlhbWwnLFxuXG4gIC8qKlxuICBDb21tb25KUyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnQ2pzID0gJy5tYXJrZG93bmxpbnQuY2pzJyxcblxuICAvKipcbiAgSlNPTiBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbiA9ICcubWFya2Rvd25saW50Lmpzb24nLFxuXG4gIC8qKlxuICBKU09OQyBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnSnNvbmMgPSAnLm1hcmtkb3dubGludC5qc29uYycsXG5cbiAgLyoqXG4gIEVTTSBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQubWpzJyxcblxuICAvKipcbiAgWUFNTCBNYXJrZG93bmxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q29uZmlnWWFtbCA9ICcubWFya2Rvd25saW50LnlhbWwnLFxuXG4gIC8qKlxuICBZQU1MIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZbWwgPSAnLm1hcmtkb3dubGludC55bWwnLFxuXG4gIC8qKlxuICBFU00gSmF2YVNjcmlwdCBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIE1qc0V4dGVuc2lvbiA9ICcubWpzJyxcblxuICAvKipcbiAgVGVzdCBtb2NrcyBmb2xkZXIuXG4gICAqL1xuICBNb2NrcyA9ICdzcmMvdGVzdC1oZWxwZXJzJyxcblxuICAvKipcbiAgTm9kZSBtb2R1bGVzIGZvbGRlci5cbiAgICovXG4gIE5vZGVNb2R1bGVzID0gJ25vZGVfbW9kdWxlcycsXG5cbiAgLyoqXG4gIE5QTSBzaHJpbmt3cmFwIGZpbGUuXG4gICAqL1xuICBOcG1TaHJpbmt3cmFwSnNvbiA9ICducG0tc2hyaW5rd3JhcC5qc29uJyxcblxuICAvKipcbiAgUGFja2FnZSBKU09OIGZpbGUuXG4gICAqL1xuICBQYWNrYWdlSnNvbiA9ICdwYWNrYWdlLmpzb24nLFxuXG4gIC8qKlxuICBOUE0gbG9ja2ZpbGUuXG4gICAqL1xuICBQYWNrYWdlTG9ja0pzb24gPSAncGFja2FnZS1sb2NrLmpzb24nLFxuXG4gIC8qKlxuICBQbnBtIGxvY2tmaWxlLlxuICAgKi9cbiAgUG5wbUxvY2tZYW1sID0gJ3BucG0tbG9jay55YW1sJyxcblxuICAvKipcbiAgUm9vdCBmb2xkZXIuXG4gICAqL1xuICBSb290Rm9sZGVyID0gJy8nLFxuXG4gIC8qKlxuICBTY3JpcHRzIGZvbGRlci5cbiAgICovXG4gIFNjcmlwdHMgPSAnc2NyaXB0cycsXG5cbiAgLyoqXG4gIFNvdXJjZSBmb2xkZXIuXG4gICAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKipcbiAgU3R5bGVzIGZvbGRlci5cbiAgICovXG4gIFN0eWxlcyA9ICdzdHlsZXMnLFxuXG4gIC8qKlxuICBTdHlsZXMgQ1NTIGZpbGUuXG4gICAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqXG4gIFRlbXBsYXRlcyBmb2xkZXIuXG4gICAqL1xuICBUZW1wbGF0ZXMgPSAndGVtcGxhdGVzJyxcblxuICAvKipcbiAgVGVzdCBoZWxwZXJzIGZvbGRlci5cbiAgICovXG4gIFRlc3RIZWxwZXJzID0gJ3Rlc3QtaGVscGVycycsXG5cbiAgLyoqXG4gIFRlc3RzIGZvbGRlci5cbiAgICovXG4gIFRlc3RzID0gJ19fdGVzdHNfXycsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgVHNDb25maWdKc29uID0gJ3RzY29uZmlnLmpzb24nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHZhbGlkYXRlcyB0aGUgZ2VuZXJhdGVkIENvbW1vbkpTIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNDanNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy1janMuanNvbicsXG5cbiAgLyoqXG4gIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgdmFsaWRhdGVzIHRoZSBnZW5lcmF0ZWQgRVNNIGRlY2xhcmF0aW9ucy5cbiAgICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy5qc29uJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBmaWxlIGV4dGVuc2lvbi5cbiAgICovXG4gIFRzRXh0ZW5zaW9uID0gJy50cycsXG5cbiAgLyoqXG4gIFR5cGVzIGZvbGRlci5cbiAgICovXG4gIFR5cGVzID0gJ0B0eXBlcycsXG5cbiAgLyoqXG4gIFZpdGVzdCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBWaXRlc3RDb25maWdUcyA9ICd2aXRlc3QuY29uZmlnLnRzJyxcblxuICAvKipcbiAgWWFybiBsb2NrZmlsZS5cbiAgICovXG4gIFlhcm5Mb2NrID0gJ3lhcm4ubG9jaydcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -58,6 +58,14 @@ export declare enum RepoPaths {
58
58
  */
59
59
  Bin = ".bin",
60
60
  /**
61
+ Biome configuration file.
62
+ */
63
+ BiomeJson = "biome.json",
64
+ /**
65
+ Biome configuration file, with comments.
66
+ */
67
+ BiomeJsonc = "biome.jsonc",
68
+ /**
61
69
  Bun lockfile.
62
70
  */
63
71
  BunLock = "bun.lock",
@@ -0,0 +1,68 @@
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 shared_config_files_exports = {};
25
+ __export(shared_config_files_exports, {
26
+ SharedConfigFile: () => SharedConfigFile,
27
+ getSharedConfigFilePath: () => getSharedConfigFilePath
28
+ });
29
+ module.exports = __toCommonJS(shared_config_files_exports);
30
+ var import_node_fs = require('node:fs');
31
+ var import_node_path = require('node:path');
32
+ var import_node_url = require('node:url');
33
+ var __import_meta_url = globalThis["import.meta.url"] ?? (function getCjsImportMetaUrl() {
34
+ if (typeof __filename === "string") {
35
+ const localRequire = require;
36
+ const url = localRequire("node:url");
37
+ if (typeof url.pathToFileURL === "function") {
38
+ return url.pathToFileURL(__filename).href;
39
+ }
40
+ }
41
+ return globalThis.location?.href ?? "";
42
+ })();
43
+ var SharedConfigFile = /* @__PURE__ */ ((SharedConfigFile2) => {
44
+ SharedConfigFile2["Biome"] = "biome.json";
45
+ SharedConfigFile2["Prettier"] = "prettier.json";
46
+ return SharedConfigFile2;
47
+ })(SharedConfigFile || {});
48
+ const ASSETS_FOLDER = "assets";
49
+ function getSharedConfigFilePath(file, moduleUrl = __import_meta_url) {
50
+ let directory = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(moduleUrl));
51
+ for (; ; ) {
52
+ const candidate = (0, import_node_path.join)(directory, ASSETS_FOLDER, file);
53
+ if ((0, import_node_fs.existsSync)(candidate)) {
54
+ return candidate;
55
+ }
56
+ const parent = (0, import_node_path.dirname)(directory);
57
+ if (parent === directory) {
58
+ throw new Error(`No ${ASSETS_FOLDER}/${file} above ${(0, import_node_url.fileURLToPath)(moduleUrl)}.`);
59
+ }
60
+ directory = parent;
61
+ }
62
+ }
63
+ // Annotate the CommonJS export names for ESM import in node:
64
+ 0 && (module.exports = {
65
+ SharedConfigFile,
66
+ getSharedConfigFilePath
67
+ });
68
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NoYXJlZC1jb25maWctZmlsZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/IChmdW5jdGlvbiBnZXRDanNJbXBvcnRNZXRhVXJsKCkge1xuICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgbG9jYWxSZXF1aXJlID0gcmVxdWlyZTtcbiAgICBjb25zdCB1cmwgPSBsb2NhbFJlcXVpcmUoJ25vZGU6dXJsJyk7XG4gICAgaWYgKHR5cGVvZiB1cmwucGF0aFRvRmlsZVVSTCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gdGhlIHBhZ2UgVVJMLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd24uXG4gIHJldHVybiBnbG9iYWxUaGlzLmxvY2F0aW9uPy5ocmVmID8/ICcnO1xufSkoKTtcbi8qKlxuICogQGZpbGVcbiAqXG4gKiBMb2NhdGVzIHRoZSBzaGFyZWQgdG9vbCBjb25maWd1cmF0aW9uIGZpbGVzIHRoaXMgcGFja2FnZSBzaGlwcyB1bmRlciBgYXNzZXRzL2AuXG4gKi9cblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pblxufSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJztcblxuLyoqXG4gKiBBIHNoYXJlZCBjb25maWd1cmF0aW9uIGZpbGUgdGhpcyBwYWNrYWdlIHNoaXBzIHVuZGVyIGBhc3NldHMvYC5cbiAqL1xuZXhwb3J0IGVudW0gU2hhcmVkQ29uZmlnRmlsZSB7XG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIEJpb21lIGNvbmZpZ3VyYXRpb24uIEEgcHJvamVjdCdzIG93biBgYmlvbWUuanNvbmAgZXh0ZW5kcyBpdC5cbiAgICovXG4gIEJpb21lID0gJ2Jpb21lLmpzb24nLFxuXG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIFByZXR0aWVyIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBQcmV0dGllciA9ICdwcmV0dGllci5qc29uJ1xufVxuXG5jb25zdCBBU1NFVFNfRk9MREVSID0gJ2Fzc2V0cyc7XG5cbi8qKlxuICogRmluZHMgYSBzaGFyZWQgY29uZmlndXJhdGlvbiBmaWxlLiBJdCB3YWxrcyB1cCBmcm9tIHRoZSBtb2R1bGUsIGJlY2F1c2UgaXQgcnVucyBmcm9tIGBzcmNgIGhlcmUgYW5kIGZyb21cbiAqIGBkaXN0L2xpYi88Zm9ybWF0PmAgb25jZSBpbnN0YWxsZWQuXG4gKlxuICogQHBhcmFtIGZpbGUgLSBUaGUge0BsaW5rIFNoYXJlZENvbmZpZ0ZpbGV9IHRvIGZpbmQuXG4gKiBAcGFyYW0gbW9kdWxlVXJsIC0gVGhlIFVSTCBvZiBhIG1vZHVsZSBvZiB0aGlzIHBhY2thZ2UgdG8gc3RhcnQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBmaWxlJ3MgYWJzb2x1dGUgcGF0aC5cbiAqIEB0aHJvd3MgSWYgbm8gZm9sZGVyIGFib3ZlIHRoZSBtb2R1bGUgaG9sZHMgdGhlIGZpbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTaGFyZWRDb25maWdGaWxlUGF0aChmaWxlOiBTaGFyZWRDb25maWdGaWxlLCBtb2R1bGVVcmw6IHN0cmluZyA9IGltcG9ydC5tZXRhLnVybCk6IHN0cmluZyB7XG4gIGxldCBkaXJlY3RvcnkgPSBkaXJuYW1lKGZpbGVVUkxUb1BhdGgobW9kdWxlVXJsKSk7XG4gIGZvciAoOzspIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBqb2luKGRpcmVjdG9yeSwgQVNTRVRTX0ZPTERFUiwgZmlsZSk7XG4gICAgaWYgKGV4aXN0c1N5bmMoY2FuZGlkYXRlKSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcmVjdG9yeSk7XG4gICAgaWYgKHBhcmVudCA9PT0gZGlyZWN0b3J5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vICR7QVNTRVRTX0ZPTERFUn0vJHtmaWxlfSBhYm92ZSAke2ZpbGVVUkxUb1BhdGgobW9kdWxlVXJsKX0uYCk7XG4gICAgfVxuXG4gICAgZGlyZWN0b3J5ID0gcGFyZW50O1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtCQSxxQkFBMkI7QUFDM0IsdUJBR087QUFDUCxzQkFBOEI7QUF2QjlCLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sU0FBUyxzQkFBc0I7QUFDdkYsTUFBSSxPQUFPLGVBQWUsVUFBVTtBQUNsQyxVQUFNLGVBQWU7QUFDckIsVUFBTSxNQUFNLGFBQWEsVUFBVTtBQUNuQyxRQUFJLE9BQU8sSUFBSSxrQkFBa0IsWUFBWTtBQUMzQyxhQUFPLElBQUksY0FBYyxVQUFVLEVBQUU7QUFBQSxJQUN2QztBQUFBLEVBQ0Y7QUFHQSxTQUFPLFdBQVcsVUFBVSxRQUFRO0FBQ3RDLEdBQUc7QUFpQkksSUFBSyxtQkFBTCxrQkFBS0Esc0JBQUw7QUFJTCxFQUFBQSxrQkFBQSxXQUFRO0FBS1IsRUFBQUEsa0JBQUEsY0FBVztBQVRELFNBQUFBO0FBQUEsR0FBQTtBQVlaLE1BQU0sZ0JBQWdCO0FBV2YsU0FBUyx3QkFBd0IsTUFBd0IsWUFBb0IsbUJBQXlCO0FBQzNHLE1BQUksZ0JBQVksOEJBQVEsK0JBQWMsU0FBUyxDQUFDO0FBQ2hELGFBQVM7QUFDUCxVQUFNLGdCQUFZLHVCQUFLLFdBQVcsZUFBZSxJQUFJO0FBQ3JELFlBQUksMkJBQVcsU0FBUyxHQUFHO0FBQ3pCLGFBQU87QUFBQSxJQUNUO0FBRUEsVUFBTSxhQUFTLDBCQUFRLFNBQVM7QUFDaEMsUUFBSSxXQUFXLFdBQVc7QUFDeEIsWUFBTSxJQUFJLE1BQU0sTUFBTSxhQUFhLElBQUksSUFBSSxjQUFVLCtCQUFjLFNBQVMsQ0FBQyxHQUFHO0FBQUEsSUFDbEY7QUFFQSxnQkFBWTtBQUFBLEVBQ2Q7QUFDRjsiLAogICJuYW1lcyI6IFsiU2hhcmVkQ29uZmlnRmlsZSJdCn0K
@@ -0,0 +1,29 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Locates the shared tool configuration files this package ships under `assets/`.
6
+ */
7
+ /**
8
+ * A shared configuration file this package ships under `assets/`.
9
+ */
10
+ export declare enum SharedConfigFile {
11
+ /**
12
+ * The shared Biome configuration. A project's own `biome.json` extends it.
13
+ */
14
+ Biome = "biome.json",
15
+ /**
16
+ * The shared Prettier configuration.
17
+ */
18
+ Prettier = "prettier.json"
19
+ }
20
+ /**
21
+ * Finds a shared configuration file. It walks up from the module, because it runs from `src` here and from
22
+ * `dist/lib/<format>` once installed.
23
+ *
24
+ * @param file - The {@link SharedConfigFile} to find.
25
+ * @param moduleUrl - The URL of a module of this package to start from.
26
+ * @returns The file's absolute path.
27
+ * @throws If no folder above the module holds the file.
28
+ */
29
+ export declare function getSharedConfigFilePath(file: SharedConfigFile, moduleUrl?: string): string;
@@ -0,0 +1,83 @@
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 auto_exports = {};
25
+ __export(auto_exports, {
26
+ VITEST_CONFIG_FILE_NAMES: () => VITEST_CONFIG_FILE_NAMES,
27
+ detectTestRunner: () => detectTestRunner,
28
+ test: () => test,
29
+ testCoverage: () => testCoverage,
30
+ testWatch: () => testWatch
31
+ });
32
+ module.exports = __toCommonJS(auto_exports);
33
+ var import_node_fs = require('node:fs');
34
+ var import_root = require('../root.cjs');
35
+ var import_jest = require('./jest.cjs');
36
+ var import_vitest = require('./vitest.cjs');
37
+ const VITEST_CONFIG_FILE_NAMES = [
38
+ "vitest.config.cjs",
39
+ "vitest.config.cts",
40
+ "vitest.config.js",
41
+ "vitest.config.mjs",
42
+ "vitest.config.mts",
43
+ "vitest.config.ts"
44
+ ];
45
+ const RUNNERS = {
46
+ jest: {
47
+ test: import_jest.test,
48
+ testCoverage: import_jest.testCoverage,
49
+ testWatch: import_jest.testWatch
50
+ },
51
+ vitest: {
52
+ test: import_vitest.test,
53
+ testCoverage: import_vitest.testCoverage,
54
+ testWatch: import_vitest.testWatch
55
+ }
56
+ };
57
+ async function detectTestRunner() {
58
+ if (VITEST_CONFIG_FILE_NAMES.some((fileName) => (0, import_node_fs.existsSync)((0, import_root.resolvePathFromRootSafe)({ path: fileName })))) {
59
+ return "vitest";
60
+ }
61
+ return await (0, import_jest.hasJestConfig)() ? "jest" : "vitest";
62
+ }
63
+ async function test(options = {}) {
64
+ const { runner = await detectTestRunner(), ...runnerOptions } = options;
65
+ await RUNNERS[runner].test(runnerOptions);
66
+ }
67
+ async function testCoverage(options = {}) {
68
+ const { runner = await detectTestRunner(), ...runnerOptions } = options;
69
+ await RUNNERS[runner].testCoverage(runnerOptions);
70
+ }
71
+ async function testWatch(options = {}) {
72
+ const { runner = await detectTestRunner(), ...runnerOptions } = options;
73
+ await RUNNERS[runner].testWatch(runnerOptions);
74
+ }
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ VITEST_CONFIG_FILE_NAMES,
78
+ detectTestRunner,
79
+ test,
80
+ testCoverage,
81
+ testWatch
82
+ });
83
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9hdXRvLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUnVucyB0aGUgdGVzdHMgd2l0aCB3aGljaGV2ZXIgcnVubmVyIHRoZSBwcm9qZWN0IGNvbmZpZ3VyZXM6IHZpdGVzdCBvciBqZXN0LlxuICovXG5cbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcblxuaW1wb3J0IHsgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUgfSBmcm9tICcuLi9yb290LnRzJztcbmltcG9ydCB7XG4gIGhhc0plc3RDb25maWcsXG4gIHRlc3QgYXMgamVzdFRlc3QsXG4gIHRlc3RDb3ZlcmFnZSBhcyBqZXN0VGVzdENvdmVyYWdlLFxuICB0ZXN0V2F0Y2ggYXMgamVzdFRlc3RXYXRjaFxufSBmcm9tICcuL2plc3QudHMnO1xuaW1wb3J0IHtcbiAgdGVzdCBhcyB2aXRlc3RUZXN0LFxuICB0ZXN0Q292ZXJhZ2UgYXMgdml0ZXN0VGVzdENvdmVyYWdlLFxuICB0ZXN0V2F0Y2ggYXMgdml0ZXN0VGVzdFdhdGNoXG59IGZyb20gJy4vdml0ZXN0LnRzJztcblxuLyoqXG4gKiBBIHRlc3QgcnVubmVyIHRoZSB0b29sa2l0IHJ1bnMuXG4gKi9cbmV4cG9ydCB0eXBlIFRlc3RSdW5uZXIgPSAnamVzdCcgfCAndml0ZXN0JztcblxuLyoqXG4gKiBFdmVyeSBmaWxlIHZpdGVzdCByZWFkcyBpdHMgY29uZmlndXJhdGlvbiBmcm9tLlxuICpcbiAqIGB2aXRlLmNvbmZpZy4qYCBpcyBkZWxpYmVyYXRlbHkgbm90IGFtb25nIHRoZW06IGEgcHJvamVjdCB0aGF0IGJ1bmRsZXMgd2l0aCB2aXRlIGFuZCB0ZXN0cyB3aXRoIGplc3QgaGFzIG9uZS5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL3ZpdGVzdC5kZXYvY29uZmlnL31cbiAqL1xuZXhwb3J0IGNvbnN0IFZJVEVTVF9DT05GSUdfRklMRV9OQU1FUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gICd2aXRlc3QuY29uZmlnLmNqcycsXG4gICd2aXRlc3QuY29uZmlnLmN0cycsXG4gICd2aXRlc3QuY29uZmlnLmpzJyxcbiAgJ3ZpdGVzdC5jb25maWcubWpzJyxcbiAgJ3ZpdGVzdC5jb25maWcubXRzJyxcbiAgJ3ZpdGVzdC5jb25maWcudHMnXG5dO1xuXG5pbnRlcmZhY2UgUnVubmVyRnVuY3Rpb25zIHtcbiAgcmVhZG9ubHkgdGVzdDogKG9wdGlvbnM6IFRlc3RPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2U6IChvcHRpb25zOiBUZXN0Q292ZXJhZ2VPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSB0ZXN0V2F0Y2g6IChvcHRpb25zOiBUZXN0V2F0Y2hPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5jb25zdCBSVU5ORVJTOiBSZWFkb25seTxSZWNvcmQ8VGVzdFJ1bm5lciwgUnVubmVyRnVuY3Rpb25zPj4gPSB7XG4gIGplc3Q6IHtcbiAgICB0ZXN0OiBqZXN0VGVzdCxcbiAgICB0ZXN0Q292ZXJhZ2U6IGplc3RUZXN0Q292ZXJhZ2UsXG4gICAgdGVzdFdhdGNoOiBqZXN0VGVzdFdhdGNoXG4gIH0sXG4gIHZpdGVzdDoge1xuICAgIHRlc3Q6IHZpdGVzdFRlc3QsXG4gICAgdGVzdENvdmVyYWdlOiB2aXRlc3RUZXN0Q292ZXJhZ2UsXG4gICAgdGVzdFdhdGNoOiB2aXRlc3RUZXN0V2F0Y2hcbiAgfVxufTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBydW5uaW5nIHRlc3RzIHdpdGggY292ZXJhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdENvdmVyYWdlT3B0aW9ucyBleHRlbmRzIFRlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gY292ZXJhZ2UgcGVyY2VudGFnZSByZXF1aXJlZCwgZm9yIGxpbmVzLCBmdW5jdGlvbnMsIGJyYW5jaGVzIGFuZCBzdGF0ZW1lbnRzIGFsaWtlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIHJlYWRvbmx5IG1pbkNvdmVyYWdlSW5QZXJjZW50cz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBydW5uaW5nIHRlc3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgamVzdCBydW5zIHRoZSBzdWl0ZSBhcyBFUyBtb2R1bGVzLiBWaXRlc3QgaWdub3JlcyBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgIHdoZW4gYHBhY2thZ2UuanNvbmAgZGVjbGFyZXMgYFwidHlwZVwiOiBcIm1vZHVsZVwiYFxuICAgKi9cbiAgcmVhZG9ubHkgZXNtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByb2plY3RzIHRvIHJ1bi4gVml0ZXN0IGFsc28gcnVucyBlYWNoIG9uZSdzIGBuYW1lOipgIHN1Yi1wcm9qZWN0czsgamVzdCBtYXRjaGVzIGEgYGRpc3BsYXlOYW1lYCBleGFjdGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHJ1bm5lciB0byB1c2UuIE9taXR0ZWQsIHtAbGluayBkZXRlY3RUZXN0UnVubmVyfSBjaG9vc2VzIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgcnVubmVyPzogVGVzdFJ1bm5lcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBydW5uaW5nIHRlc3RzIGluIHdhdGNoIG1vZGUuXG4gKi9cbmV4cG9ydCB0eXBlIFRlc3RXYXRjaE9wdGlvbnMgPSBUZXN0T3B0aW9ucztcblxuLyoqXG4gKiBDaG9vc2VzIHRoZSB0ZXN0IHJ1bm5lciBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGF0IHRoZSBwcm9qZWN0IHJvb3QuXG4gKlxuICogVGhlIG9yZGVyIGlzIGEgdml0ZXN0IGNvbmZpZ3VyYXRpb24sIHRoZW4gYSBqZXN0IG9uZSAoYSBmaWxlLCBvciBhIGBqZXN0YCBrZXkgaW4gYHBhY2thZ2UuanNvbmApLiBBIHByb2plY3Qgd2l0aFxuICogbmVpdGhlciBnZXRzIHZpdGVzdCwgdGhlIHJ1bm5lciBldmVyeSBwYWNrYWdlIG9uIHRoaXMgdG9vbGNoYWluIHVzZWQgYmVmb3JlIGplc3Qgd2FzIHN1cHBvcnRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgcnVubmVyIHRvIHVzZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRldGVjdFRlc3RSdW5uZXIoKTogUHJvbWlzZTxUZXN0UnVubmVyPiB7XG4gIGlmIChWSVRFU1RfQ09ORklHX0ZJTEVfTkFNRVMuc29tZSgoZmlsZU5hbWUpID0+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBmaWxlTmFtZSB9KSkpKSB7XG4gICAgcmV0dXJuICd2aXRlc3QnO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGhhc0plc3RDb25maWcoKSA/ICdqZXN0JyA6ICd2aXRlc3QnO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUgd2l0aCB0aGUgcHJvamVjdCdzIHJ1bm5lci5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgVGVzdE9wdGlvbnN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB0ZXN0cyBoYXZlIGNvbXBsZXRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRlc3Qob3B0aW9uczogVGVzdE9wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHJ1bm5lciA9IGF3YWl0IGRldGVjdFRlc3RSdW5uZXIoKSwgLi4ucnVubmVyT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgYXdhaXQgUlVOTkVSU1tydW5uZXJdLnRlc3QocnVubmVyT3B0aW9ucyk7XG59XG5cbi8qKlxuICogUnVucyB0aGUgdGVzdCBzdWl0ZSB3aXRoIGNvdmVyYWdlLCB3aXRoIHRoZSBwcm9qZWN0J3MgcnVubmVyLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBUZXN0Q292ZXJhZ2VPcHRpb25zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGVzdHMgaGF2ZSBjb21wbGV0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0Q292ZXJhZ2Uob3B0aW9uczogVGVzdENvdmVyYWdlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcnVubmVyID0gYXdhaXQgZGV0ZWN0VGVzdFJ1bm5lcigpLCAuLi5ydW5uZXJPcHRpb25zIH0gPSBvcHRpb25zO1xuICBhd2FpdCBSVU5ORVJTW3J1bm5lcl0udGVzdENvdmVyYWdlKHJ1bm5lck9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIHRlc3Qgc3VpdGUgaW4gd2F0Y2ggbW9kZSwgd2l0aCB0aGUgcHJvamVjdCdzIHJ1bm5lci5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgVGVzdFdhdGNoT3B0aW9uc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHdhdGNoZXIgZXhpdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0V2F0Y2gob3B0aW9uczogVGVzdFdhdGNoT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcnVubmVyID0gYXdhaXQgZGV0ZWN0VGVzdFJ1bm5lcigpLCAuLi5ydW5uZXJPcHRpb25zIH0gPSBvcHRpb25zO1xuICBhd2FpdCBSVU5ORVJTW3J1bm5lcl0udGVzdFdhdGNoKHJ1bm5lck9wdGlvbnMpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSxxQkFBMkI7QUFFM0Isa0JBQXdDO0FBQ3hDLGtCQUtPO0FBQ1Asb0JBSU87QUFjQSxNQUFNLDJCQUE4QztBQUFBLEVBQ3pEO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQVFBLE1BQU0sVUFBeUQ7QUFBQSxFQUM3RCxNQUFNO0FBQUEsSUFDSixNQUFNLFlBQUFBO0FBQUEsSUFDTixjQUFjLFlBQUFDO0FBQUEsSUFDZCxXQUFXLFlBQUFDO0FBQUEsRUFDYjtBQUFBLEVBQ0EsUUFBUTtBQUFBLElBQ04sTUFBTSxjQUFBQztBQUFBLElBQ04sY0FBYyxjQUFBQztBQUFBLElBQ2QsV0FBVyxjQUFBQztBQUFBLEVBQ2I7QUFDRjtBQWlEQSxlQUFzQixtQkFBd0M7QUFDNUQsTUFBSSx5QkFBeUIsS0FBSyxDQUFDLGlCQUFhLCtCQUFXLHFDQUF3QixFQUFFLE1BQU0sU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHO0FBQ3hHLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxVQUFNLDJCQUFjLElBQUksU0FBUztBQUMxQztBQVFBLGVBQXNCLEtBQUssVUFBdUIsQ0FBQyxHQUFrQjtBQUNuRSxRQUFNLEVBQUUsU0FBUyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsY0FBYyxJQUFJO0FBQ2hFLFFBQU0sUUFBUSxNQUFNLEVBQUUsS0FBSyxhQUFhO0FBQzFDO0FBUUEsZUFBc0IsYUFBYSxVQUErQixDQUFDLEdBQWtCO0FBQ25GLFFBQU0sRUFBRSxTQUFTLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxjQUFjLElBQUk7QUFDaEUsUUFBTSxRQUFRLE1BQU0sRUFBRSxhQUFhLGFBQWE7QUFDbEQ7QUFRQSxlQUFzQixVQUFVLFVBQTRCLENBQUMsR0FBa0I7QUFDN0UsUUFBTSxFQUFFLFNBQVMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLGNBQWMsSUFBSTtBQUNoRSxRQUFNLFFBQVEsTUFBTSxFQUFFLFVBQVUsYUFBYTtBQUMvQzsiLAogICJuYW1lcyI6IFsiamVzdFRlc3QiLCAiamVzdFRlc3RDb3ZlcmFnZSIsICJqZXN0VGVzdFdhdGNoIiwgInZpdGVzdFRlc3QiLCAidml0ZXN0VGVzdENvdmVyYWdlIiwgInZpdGVzdFRlc3RXYXRjaCJdCn0K
@@ -0,0 +1,82 @@
1
+ /// <reference path="../library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Runs the tests with whichever runner the project configures: vitest or jest.
6
+ */
7
+ /**
8
+ * A test runner the toolkit runs.
9
+ */
10
+ export type TestRunner = 'jest' | 'vitest';
11
+ /**
12
+ * Every file vitest reads its configuration from.
13
+ *
14
+ * `vite.config.*` is deliberately not among them: a project that bundles with vite and tests with jest has one.
15
+ *
16
+ * @see {@link https://vitest.dev/config/}
17
+ */
18
+ export declare const VITEST_CONFIG_FILE_NAMES: readonly string[];
19
+ /**
20
+ * Options for running tests with coverage.
21
+ */
22
+ export interface TestCoverageOptions extends TestOptions {
23
+ /**
24
+ * Minimum coverage percentage required, for lines, functions, branches and statements alike.
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. Vitest ignores it.
36
+ *
37
+ * @default `true` when `package.json` declares `"type": "module"`
38
+ */
39
+ readonly esm?: boolean;
40
+ /**
41
+ * The projects to run. Vitest also runs each one's `name:*` sub-projects; jest matches a `displayName` exactly.
42
+ */
43
+ readonly projects?: string[];
44
+ /**
45
+ * The runner to use. Omitted, {@link detectTestRunner} chooses it.
46
+ */
47
+ readonly runner?: TestRunner;
48
+ }
49
+ /**
50
+ * Options for running tests in watch mode.
51
+ */
52
+ export type TestWatchOptions = TestOptions;
53
+ /**
54
+ * Chooses the test runner from the configuration files at the project root.
55
+ *
56
+ * The order is a vitest configuration, then a jest one (a file, or a `jest` key in `package.json`). A project with
57
+ * neither gets vitest, the runner every package on this toolchain used before jest was supported.
58
+ *
59
+ * @returns The runner to use.
60
+ */
61
+ export declare function detectTestRunner(): Promise<TestRunner>;
62
+ /**
63
+ * Runs the test suite with the project's runner.
64
+ *
65
+ * @param options - The {@link TestOptions}.
66
+ * @returns A {@link Promise} that resolves when the tests have completed.
67
+ */
68
+ export declare function test(options?: TestOptions): Promise<void>;
69
+ /**
70
+ * Runs the test suite with coverage, with the project's runner.
71
+ *
72
+ * @param options - The {@link TestCoverageOptions}.
73
+ * @returns A {@link Promise} that resolves when the tests have completed.
74
+ */
75
+ export declare function testCoverage(options?: TestCoverageOptions): Promise<void>;
76
+ /**
77
+ * Runs the test suite in watch mode, with the project's runner.
78
+ *
79
+ * @param options - The {@link TestWatchOptions}.
80
+ * @returns A {@link Promise} that resolves when the watcher exits.
81
+ */
82
+ export declare function testWatch(options?: TestWatchOptions): Promise<void>;
@@ -33,15 +33,24 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
33
33
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
34
34
  var test_runners_exports = {};
35
35
  __export(test_runners_exports, {
36
+ auto: () => auto,
37
+ jest: () => jest,
38
+ "jest-config": () => jest_config,
36
39
  vitest: () => vitest,
37
40
  "vitest-config": () => vitest_config
38
41
  });
39
42
  module.exports = __toCommonJS(test_runners_exports);
43
+ var auto = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./auto.cjs')), 1);
44
+ var jest_config = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./jest-config.cjs')), 1);
45
+ var jest = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./jest.cjs')), 1);
40
46
  var vitest_config = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./vitest-config.cjs')), 1);
41
47
  var vitest = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./vitest.cjs')), 1);
42
48
  // Annotate the CommonJS export names for ESM import in node:
43
49
  0 && (module.exports = {
50
+ auto,
51
+ jest,
52
+ "jest-config": null,
44
53
  vitest,
45
54
  "vitest-config": null
46
55
  });
47
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICd2aXRlc3QtY29uZmlnJyBmcm9tICcuL3ZpdGVzdC1jb25maWcudHMnO1xuZXhwb3J0ICogYXMgJ3ZpdGVzdCcgZnJvbSAnLi92aXRlc3QudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUEseUJBQUFBO0FBQUE7QUFBQTtBQUVBLElBQUFBLGdCQUFpQztBQUNqQyxhQUEwQjsiLAogICJuYW1lcyI6IFsidml0ZXN0LWNvbmZpZyJdCn0K
56
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdhdXRvJyBmcm9tICcuL2F1dG8udHMnO1xuZXhwb3J0ICogYXMgJ2plc3QtY29uZmlnJyBmcm9tICcuL2plc3QtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICdqZXN0JyBmcm9tICcuL2plc3QudHMnO1xuZXhwb3J0ICogYXMgJ3ZpdGVzdC1jb25maWcnIGZyb20gJy4vdml0ZXN0LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAndml0ZXN0JyBmcm9tICcuL3ZpdGVzdC50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHVCQUFBQTtBQUFBLEVBQUE7QUFBQSx5QkFBQUM7QUFBQTtBQUFBO0FBRUEsV0FBd0I7QUFDeEIsSUFBQUQsY0FBK0I7QUFDL0IsV0FBd0I7QUFDeEIsSUFBQUMsZ0JBQWlDO0FBQ2pDLGFBQTBCOyIsCiAgIm5hbWVzIjogWyJqZXN0LWNvbmZpZyIsICJ2aXRlc3QtY29uZmlnIl0KfQo=
@@ -1,3 +1,6 @@
1
1
  /// <reference path="../library-references.d.cts" />
2
+ export * as 'auto' from './auto.cjs';
3
+ export * as 'jest-config' from './jest-config.cjs';
4
+ export * as 'jest' from './jest.cjs';
2
5
  export * as 'vitest-config' from './vitest-config.cjs';
3
6
  export * as 'vitest' from './vitest.cjs';