@mnaoumov/obsidian-dev-toolkit 1.0.0 → 2.0.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 (228) hide show
  1. package/README.md +9 -1
  2. package/dist/demo-vault-helper/main.js +678 -18
  3. package/dist/integration-test-plugin/main.js +12075 -3087
  4. package/dist/integration-test-plugin/manifest.json +2 -2
  5. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +6 -38
  6. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -1
  7. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +5 -37
  8. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +1 -1
  9. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +5 -37
  10. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -1
  11. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +7 -66
  12. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -1
  13. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -39
  14. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
  15. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +5 -37
  16. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
  17. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +5 -37
  18. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
  19. package/dist/lib/cjs/bundlers/esbuild.cjs +1 -60
  20. package/dist/lib/cjs/bundlers/esbuild.d.cts +1 -1
  21. package/dist/lib/cjs/bundlers/index.cjs +3 -62
  22. package/dist/lib/cjs/bundlers/index.d.cts +1 -1
  23. package/dist/lib/cjs/demo-vault-app-json.cjs +5 -37
  24. package/dist/lib/cjs/demo-vault-app-json.d.cts +1 -1
  25. package/dist/lib/cjs/demo-vault-buttons.cjs +6 -38
  26. package/dist/lib/cjs/demo-vault-buttons.d.cts +8 -8
  27. package/dist/lib/cjs/demo-vault-coverage.cjs +7 -38
  28. package/dist/lib/cjs/demo-vault-coverage.d.cts +1 -1
  29. package/dist/lib/cjs/demo-vault.cjs +6 -38
  30. package/dist/lib/cjs/demo-vault.d.cts +1 -1
  31. package/dist/lib/cjs/formatters/dprint.cjs +5 -37
  32. package/dist/lib/cjs/formatters/dprint.d.cts +1 -1
  33. package/dist/lib/cjs/formatters/index.cjs +2 -61
  34. package/dist/lib/cjs/formatters/index.d.cts +1 -1
  35. package/dist/lib/cjs/index.cjs +12 -71
  36. package/dist/lib/cjs/integration-test-setup.cjs +1 -60
  37. package/dist/lib/cjs/integration-test-setup.d.cts +5 -5
  38. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +6 -38
  39. package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +7 -7
  40. package/dist/lib/cjs/jest-setup.cjs +5 -37
  41. package/dist/lib/cjs/jest-setup.d.cts +1 -1
  42. package/dist/lib/cjs/library-references.d.cts +2 -0
  43. package/dist/lib/cjs/linters/eslint-config.cjs +71 -49
  44. package/dist/lib/cjs/linters/eslint-config.d.cts +1 -1
  45. package/dist/lib/cjs/linters/eslint-rules/index.cjs +26 -73
  46. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +6 -2
  47. package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -60
  48. package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +1 -1
  49. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +6 -38
  50. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +1 -1
  51. package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -60
  52. package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +1 -1
  53. package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -60
  54. package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +1 -1
  55. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -60
  56. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +1 -1
  57. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +240 -0
  58. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +10 -0
  59. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +5 -37
  60. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +1 -1
  61. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +5 -37
  62. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +1 -1
  63. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +136 -0
  64. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.cts +16 -0
  65. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +217 -0
  66. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +30 -0
  67. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +169 -0
  68. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +29 -0
  69. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +5 -37
  70. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +1 -1
  71. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +287 -0
  72. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +10 -0
  73. package/dist/lib/cjs/linters/eslint.cjs +5 -37
  74. package/dist/lib/cjs/linters/eslint.d.cts +1 -1
  75. package/dist/lib/cjs/linters/index.cjs +17 -67
  76. package/dist/lib/cjs/linters/index.d.cts +4 -1
  77. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +152 -0
  78. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +12 -0
  79. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +118 -0
  80. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
  81. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +200 -0
  82. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +32 -0
  83. package/dist/lib/cjs/linters/markdownlint.cjs +5 -37
  84. package/dist/lib/cjs/linters/markdownlint.d.cts +1 -1
  85. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -60
  86. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +1 -1
  87. package/dist/lib/cjs/linters/plugin-names.cjs +203 -0
  88. package/dist/lib/cjs/linters/plugin-names.d.cts +81 -0
  89. package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -60
  90. package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +1 -1
  91. package/dist/lib/cjs/setup.cjs +5 -37
  92. package/dist/lib/cjs/setup.d.cts +1 -1
  93. package/dist/lib/cjs/templates.cjs +5 -37
  94. package/dist/lib/cjs/templates.d.cts +1 -1
  95. package/dist/lib/cjs/test-runners/index.cjs +4 -63
  96. package/dist/lib/cjs/test-runners/index.d.cts +1 -1
  97. package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +12 -44
  98. package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +5 -5
  99. package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +1 -60
  100. package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +1 -1
  101. package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +5 -37
  102. package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +1 -1
  103. package/dist/lib/cjs/test-runners/vitest-config.cjs +9 -41
  104. package/dist/lib/cjs/test-runners/vitest-config.d.cts +2 -3
  105. package/dist/lib/cjs/version.cjs +5 -37
  106. package/dist/lib/cjs/version.d.cts +1 -1
  107. package/dist/lib/cjs/vitest-setup.cjs +5 -37
  108. package/dist/lib/cjs/vitest-setup.d.cts +1 -1
  109. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -1
  110. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +5 -22
  111. package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +1 -1
  112. package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +5 -22
  113. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -1
  114. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +5 -22
  115. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -1
  116. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +1 -45
  117. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -1
  118. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +5 -22
  119. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
  120. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +5 -22
  121. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -1
  122. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +5 -22
  123. package/dist/lib/esm/bundlers/esbuild.d.mts +1 -1
  124. package/dist/lib/esm/bundlers/esbuild.mjs +1 -45
  125. package/dist/lib/esm/bundlers/index.d.mts +1 -1
  126. package/dist/lib/esm/bundlers/index.mjs +1 -45
  127. package/dist/lib/esm/demo-vault-app-json.d.mts +1 -1
  128. package/dist/lib/esm/demo-vault-app-json.mjs +5 -22
  129. package/dist/lib/esm/demo-vault-buttons.d.mts +8 -8
  130. package/dist/lib/esm/demo-vault-buttons.mjs +5 -22
  131. package/dist/lib/esm/demo-vault-coverage.d.mts +1 -1
  132. package/dist/lib/esm/demo-vault-coverage.mjs +7 -23
  133. package/dist/lib/esm/demo-vault.d.mts +1 -1
  134. package/dist/lib/esm/demo-vault.mjs +6 -23
  135. package/dist/lib/esm/formatters/dprint.d.mts +1 -1
  136. package/dist/lib/esm/formatters/dprint.mjs +5 -22
  137. package/dist/lib/esm/formatters/index.d.mts +1 -1
  138. package/dist/lib/esm/formatters/index.mjs +1 -45
  139. package/dist/lib/esm/index.mjs +1 -45
  140. package/dist/lib/esm/integration-test-setup.d.mts +5 -5
  141. package/dist/lib/esm/integration-test-setup.mjs +1 -45
  142. package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +7 -7
  143. package/dist/lib/esm/integration-test-vitest-global-setup.mjs +7 -24
  144. package/dist/lib/esm/jest-setup.d.mts +1 -1
  145. package/dist/lib/esm/jest-setup.mjs +5 -22
  146. package/dist/lib/esm/library-references.d.mts +2 -0
  147. package/dist/lib/esm/linters/eslint-config.d.mts +1 -1
  148. package/dist/lib/esm/linters/eslint-config.mjs +70 -33
  149. package/dist/lib/esm/linters/eslint-rules/index.d.mts +6 -2
  150. package/dist/lib/esm/linters/eslint-rules/index.mjs +12 -48
  151. package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +1 -1
  152. package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +1 -45
  153. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +1 -1
  154. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +5 -22
  155. package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +1 -1
  156. package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +1 -45
  157. package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +1 -1
  158. package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +1 -45
  159. package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +1 -1
  160. package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +1 -45
  161. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +10 -0
  162. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +141 -0
  163. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +1 -1
  164. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +5 -22
  165. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +1 -1
  166. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +5 -22
  167. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.mts +16 -0
  168. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.mjs +37 -0
  169. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.d.mts +30 -0
  170. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +121 -0
  171. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +29 -0
  172. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +72 -0
  173. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +1 -1
  174. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +5 -22
  175. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +10 -0
  176. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +188 -0
  177. package/dist/lib/esm/linters/eslint.d.mts +1 -1
  178. package/dist/lib/esm/linters/eslint.mjs +5 -22
  179. package/dist/lib/esm/linters/index.d.mts +4 -1
  180. package/dist/lib/esm/linters/index.mjs +8 -46
  181. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +12 -0
  182. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +57 -0
  183. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
  184. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +10 -0
  185. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +32 -0
  186. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +94 -0
  187. package/dist/lib/esm/linters/markdownlint.d.mts +1 -1
  188. package/dist/lib/esm/linters/markdownlint.mjs +5 -22
  189. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +1 -1
  190. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +1 -45
  191. package/dist/lib/esm/linters/plugin-names.d.mts +81 -0
  192. package/dist/lib/esm/linters/plugin-names.mjs +105 -0
  193. package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +1 -1
  194. package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +1 -45
  195. package/dist/lib/esm/setup.d.mts +1 -1
  196. package/dist/lib/esm/setup.mjs +5 -22
  197. package/dist/lib/esm/templates.d.mts +1 -1
  198. package/dist/lib/esm/templates.mjs +5 -22
  199. package/dist/lib/esm/test-runners/index.d.mts +1 -1
  200. package/dist/lib/esm/test-runners/index.mjs +1 -45
  201. package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +5 -5
  202. package/dist/lib/esm/test-runners/integration-test-plugin.mjs +11 -28
  203. package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +1 -1
  204. package/dist/lib/esm/test-runners/performance-eval-cap.mjs +1 -45
  205. package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +1 -1
  206. package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +5 -22
  207. package/dist/lib/esm/test-runners/vitest-config.d.mts +2 -3
  208. package/dist/lib/esm/test-runners/vitest-config.mjs +8 -25
  209. package/dist/lib/esm/version.d.mts +1 -1
  210. package/dist/lib/esm/version.mjs +5 -22
  211. package/dist/lib/esm/vitest-setup.d.mts +1 -1
  212. package/dist/lib/esm/vitest-setup.mjs +5 -22
  213. package/dist/templates/scripts/markdownlint-cli2-config.ts +2 -2
  214. package/linters/eslint-rules/no-local-obsidian-internals/package.json +6 -0
  215. package/linters/eslint-rules/{obsidian-dev-utils-plugin → obsidian-dev-toolkit-plugin}/package.json +3 -3
  216. package/linters/eslint-rules/plugin-name-as-code/package.json +6 -0
  217. package/linters/eslint-rules/plugin-name-as-code-in-ui/package.json +6 -0
  218. package/linters/eslint-rules/require-plugin-api-contract-schemas/package.json +6 -0
  219. package/linters/markdownlint-cli2-config/package.json +6 -0
  220. package/linters/markdownlint-rules/index/package.json +6 -0
  221. package/linters/markdownlint-rules/package.json +6 -0
  222. package/linters/markdownlint-rules/plugin-name-as-code/package.json +6 -0
  223. package/linters/plugin-names/package.json +6 -0
  224. package/package.json +86 -25
  225. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +0 -186
  226. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +0 -13
  227. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +0 -13
  228. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +0 -73
@@ -0,0 +1,188 @@
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
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return "/";
11
+ },
12
+ env: {},
13
+ platform: "android"
14
+ };
15
+ const existingProcess = globalThis.process;
16
+ if (!existingProcess) {
17
+ globalThis.process = browserProcess;
18
+ return;
19
+ }
20
+ if (existingProcess.versions?.node) {
21
+ return;
22
+ }
23
+ const existingProcessRecord = existingProcess;
24
+ for (const [key, value] of Object.entries(browserProcess)) {
25
+ existingProcessRecord[key] ??= value;
26
+ }
27
+ existingProcessRecord["browser"] = true;
28
+ }
29
+
30
+ ensureBrowserProcess();
31
+ })();
32
+
33
+ import { toTSESTreeNode } from "@mnaoumov/typescript-dev-toolkit/linters/eslint-rules/ts-estree-node";
34
+ import { AST_NODE_TYPES } from "@typescript-eslint/utils";
35
+ const MESSAGE_ID = "requirePluginApiContractSchemas";
36
+ const CONTRACT_TYPE_NAMES = /* @__PURE__ */ new Set(["PluginApiContract", "TypedPluginApiContract"]);
37
+ const CONTRACT_VARIABLE_NAME_PATTERN = /_API_CONTRACT(?:_V\d+)?$/;
38
+ const CONTRACT_PROPERTY_NAME = "contract";
39
+ const REQUIRED_SCHEMA_NAMES = ["input", "output"];
40
+ const requirePluginApiContractSchemas = {
41
+ create(context) {
42
+ const checkedContracts = /* @__PURE__ */ new Set();
43
+ return {
44
+ "Property"(node) {
45
+ const propertyNode = toTSESTreeNode(node);
46
+ if (propertyNode.parent.type === AST_NODE_TYPES.ObjectExpression && !propertyNode.computed && readKeyName(propertyNode.key) === CONTRACT_PROPERTY_NAME) {
47
+ reportContractEntries(propertyNode.value);
48
+ }
49
+ },
50
+ "TSAsExpression, TSSatisfiesExpression"(node) {
51
+ const expressionNode = toTSESTreeNode(node);
52
+ if (isContractType(expressionNode.typeAnnotation)) {
53
+ reportContractEntries(expressionNode.expression);
54
+ }
55
+ },
56
+ "VariableDeclarator"(node) {
57
+ const declaratorNode = toTSESTreeNode(node);
58
+ if (declaratorNode.id.type !== AST_NODE_TYPES.Identifier || !declaratorNode.init) {
59
+ return;
60
+ }
61
+ const typeNode = declaratorNode.id.typeAnnotation?.typeAnnotation;
62
+ if (CONTRACT_VARIABLE_NAME_PATTERN.test(declaratorNode.id.name) || typeNode !== void 0 && isContractType(typeNode)) {
63
+ reportContractEntries(declaratorNode.init);
64
+ }
65
+ }
66
+ };
67
+ function reportContractEntries(node) {
68
+ const contractNode = resolveObjectLiteral(node, context);
69
+ if (!contractNode || checkedContracts.has(contractNode)) {
70
+ return;
71
+ }
72
+ checkedContracts.add(contractNode);
73
+ for (const entry of contractNode.properties) {
74
+ if (entry.type !== AST_NODE_TYPES.Property) {
75
+ continue;
76
+ }
77
+ const missingSchemaNames = readMissingSchemaNames(entry.value, context);
78
+ if (missingSchemaNames.length === 0) {
79
+ continue;
80
+ }
81
+ context.report({
82
+ data: {
83
+ method: (entry.computed ? null : readKeyName(entry.key)) ?? "[computed]",
84
+ missing: missingSchemaNames.map((name) => `\`${name}\``).join(" and ")
85
+ },
86
+ loc: entry.key.loc,
87
+ messageId: MESSAGE_ID
88
+ });
89
+ }
90
+ }
91
+ },
92
+ meta: {
93
+ docs: {
94
+ description: "Require an `input` and an `output` schema on every method entry of a plugin API contract"
95
+ },
96
+ messages: {
97
+ [MESSAGE_ID]: "The plugin API contract entry `{{ method }}` declares no {{ missing }} schema. Give every method entry both an `input` schema over its argument list and an `output` schema over its awaited return value."
98
+ },
99
+ schema: [],
100
+ type: "problem"
101
+ }
102
+ };
103
+ function findVariable(scope, name) {
104
+ let currentScope = scope;
105
+ while (currentScope) {
106
+ const variable = currentScope.set.get(name);
107
+ if (variable) {
108
+ return variable;
109
+ }
110
+ currentScope = currentScope.upper;
111
+ }
112
+ return null;
113
+ }
114
+ function isContractType(typeNode) {
115
+ if (typeNode.type !== AST_NODE_TYPES.TSTypeReference) {
116
+ return false;
117
+ }
118
+ const typeName = typeNode.typeName;
119
+ return typeName.type === AST_NODE_TYPES.Identifier ? CONTRACT_TYPE_NAMES.has(typeName.name) : typeName.type === AST_NODE_TYPES.TSQualifiedName && CONTRACT_TYPE_NAMES.has(typeName.right.name);
120
+ }
121
+ function readKeyName(key) {
122
+ if (key.type === AST_NODE_TYPES.Identifier) {
123
+ return key.name;
124
+ }
125
+ return key.type === AST_NODE_TYPES.Literal && typeof key.value === "string" ? key.value : null;
126
+ }
127
+ function readMissingSchemaNames(node, context) {
128
+ const entryNode = resolveObjectLiteral(node, context);
129
+ if (!entryNode) {
130
+ return [];
131
+ }
132
+ const keyNames = /* @__PURE__ */ new Set();
133
+ for (const member of entryNode.properties) {
134
+ if (member.type !== AST_NODE_TYPES.Property) {
135
+ return [];
136
+ }
137
+ const keyName = member.computed ? null : readKeyName(member.key);
138
+ if (keyName !== null) {
139
+ keyNames.add(keyName);
140
+ }
141
+ }
142
+ return REQUIRED_SCHEMA_NAMES.filter((name) => !keyNames.has(name));
143
+ }
144
+ function resolveConstInit(node, context) {
145
+ const variable = findVariable(context.sourceCode.getScope(node), node.name);
146
+ const definition = variable?.defs.length === 1 ? variable.defs[0] : void 0;
147
+ if (definition?.type !== "Variable") {
148
+ return null;
149
+ }
150
+ const declaratorNode = toTSESTreeNode(definition.node);
151
+ const declarationNode = declaratorNode.parent;
152
+ return declarationNode.kind === "const" ? declaratorNode.init : null;
153
+ }
154
+ function resolveObjectLiteral(node, context) {
155
+ const visitedNodes = /* @__PURE__ */ new Set();
156
+ let currentNode = node;
157
+ while (!visitedNodes.has(currentNode)) {
158
+ visitedNodes.add(currentNode);
159
+ switch (currentNode.type) {
160
+ case AST_NODE_TYPES.Identifier: {
161
+ const initNode = resolveConstInit(currentNode, context);
162
+ if (!initNode) {
163
+ return null;
164
+ }
165
+ currentNode = initNode;
166
+ break;
167
+ }
168
+ case AST_NODE_TYPES.ObjectExpression: {
169
+ return currentNode;
170
+ }
171
+ case AST_NODE_TYPES.TSAsExpression:
172
+ case AST_NODE_TYPES.TSNonNullExpression:
173
+ case AST_NODE_TYPES.TSSatisfiesExpression: {
174
+ currentNode = currentNode.expression;
175
+ break;
176
+ }
177
+ default: {
178
+ return null;
179
+ }
180
+ }
181
+ }
182
+ return null;
183
+ }
184
+ export {
185
+ MESSAGE_ID,
186
+ requirePluginApiContractSchemas
187
+ };
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLXBsdWdpbi1hcGktY29udHJhY3Qtc2NoZW1hcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlcXVpcmUtcGx1Z2luLWFwaS1jb250cmFjdC1zY2hlbWFzXG4gKlxuICogUmVwb3J0cyBhIG1ldGhvZCBlbnRyeSBvZiBhIHBsdWdpbiBBUEkgY29udHJhY3QgdGhhdCBsYWNrcyBhbiBgaW5wdXRgIG9yIGFuIGBvdXRwdXRgIHNjaGVtYS5cbiAqXG4gKiBBIHR5cGVkIGBQbHVnaW5BcGlDb250cmFjdDxNeUFwaT5gIGFscmVhZHkgcmVmdXNlcyBzdWNoIGFuIGVudHJ5IGF0IGNvbXBpbGUgdGltZS4gVGhlIHVudHlwZWQgZGVmYXVsdCwgdGhlXG4gKiBzdHJ1Y3R1cmFsbHkgdHlwZWQgY29udHJhY3RzIGEgcHJvdmlkZXIgc2hpcHMgYmVzaWRlIGl0cyBgYXBpLmQudHNgLCBhbmQgZXZlcnkgcmVwb3NpdG9yeSBzdGlsbCBvblxuICogYG9ic2lkaWFuLWRldi11dGlsc2AgZ2V0IG5vIHN1Y2ggY2hlY2ssIHNvIGEgYHt9YCBlbnRyeSB0aGVyZSBjb21waWxlcywgZGVjbGFyZXMgb25seSB0aGF0IHRoZSBtZXRob2QgZXhpc3RzLCBhbmRcbiAqIHZhbGlkYXRlcyBub3RoaW5nLiBUaGlzIHJ1bGUgY2xvc2VzIHRoYXQgZ2FwIGZvciBldmVyeSBjb250cmFjdCBpdCBjYW4gcmVjb2duaXplLlxuICpcbiAqIEFuIG9iamVjdCBsaXRlcmFsIGlzIHJlYWQgYXMgYSBjb250cmFjdCB3aGVuIGl0IGlzOlxuICpcbiAqIC0gdGhlIGluaXRpYWxpemVyIG9mIGEgdmFyaWFibGUgdHlwZWQgYFBsdWdpbkFwaUNvbnRyYWN0YCAob3IgYFR5cGVkUGx1Z2luQXBpQ29udHJhY3RgKTtcbiAqIC0gdGhlIG9wZXJhbmQgb2YgYHNhdGlzZmllcyBQbHVnaW5BcGlDb250cmFjdGAgb3IgYGFzIFBsdWdpbkFwaUNvbnRyYWN0YDtcbiAqIC0gdGhlIHZhbHVlIG9mIGEgYGNvbnRyYWN0YCBwcm9wZXJ0eSBvZiBhbiBvYmplY3QgbGl0ZXJhbCwgYXMgcGFzc2VkIHRvIGBwdWJsaXNoUGx1Z2luQXBpYCwgYHdhdGNoUGx1Z2luQXBpYCBvclxuICogICBgZmluZFBsdWdpbkFwaWA7XG4gKiAtIHRoZSBpbml0aWFsaXplciBvZiBhIHZhcmlhYmxlIG5hbWVkIGAqX0FQSV9DT05UUkFDVGAsIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSBgX1Y8bj5gIHZlcnNpb24gc3VmZml4LlxuICpcbiAqIEVhY2ggb2YgaXRzIGVudHJpZXMgaXMgYSBtZXRob2QgZW50cnkuIEFuIGVudHJ5LCBvciBhIGNvbnRyYWN0LCB3cml0dGVuIGFzIHRoZSBuYW1lIG9mIGEgYGNvbnN0YCBpcyBmb2xsb3dlZCB0b1xuICogdGhhdCBjb25zdGFudCdzIG9iamVjdCBsaXRlcmFsLCBzbyBhIG1ldGhvZCBjb250cmFjdCBzaGFyZWQgYnkgc2V2ZXJhbCBlbnRyaWVzIGlzIGNoZWNrZWQgb25jZSBwZXIgZW50cnkuXG4gKlxuICogTm90IGF0dGVtcHRlZDogYW4gZW50cnkgYnVpbHQgYnkgYSBjYWxsLCByZWFkIGZyb20gYW5vdGhlciBtb2R1bGUsIG9yIGNhcnJ5aW5nIGEgc3ByZWFkIGNhbm5vdCBiZSByZWFkXG4gKiBzdGF0aWNhbGx5LCBzbyBpdCBpcyBza2lwcGVkLiBUaGUgcnVsZSB1bmRlci1yZXBvcnRzIHJhdGhlciB0aGFuIGd1ZXNzaW5nLlxuICovXG5pbXBvcnQgdHlwZSB7IFRTRVNUcmVlIH0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHtcbiAgUnVsZSxcbiAgU2NvcGVcbn0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgdG9UU0VTVHJlZU5vZGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL2VzbGludC1ydWxlcy90cy1lc3RyZWUtbm9kZSc7XG5pbXBvcnQgeyBBU1RfTk9ERV9UWVBFUyB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5cbi8qKlxuICogTWVzc2FnZSBJRCByZXBvcnRlZCBmb3IgYSBtZXRob2QgZW50cnkgdGhhdCBsYWNrcyBhIHNjaGVtYS5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncmVxdWlyZVBsdWdpbkFwaUNvbnRyYWN0U2NoZW1hcyc7XG5cbi8qKlxuICogVGhlIHR5cGUgbmFtZXMgdGhhdCBtYXJrIGFuIG9iamVjdCBsaXRlcmFsIGFzIGEgcGx1Z2luIEFQSSBjb250cmFjdC5cbiAqL1xuY29uc3QgQ09OVFJBQ1RfVFlQRV9OQU1FUyA9IG5ldyBTZXQoWydQbHVnaW5BcGlDb250cmFjdCcsICdUeXBlZFBsdWdpbkFwaUNvbnRyYWN0J10pO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIGEgdmFyaWFibGUgaG9sZGluZyBhIHBsdWdpbiBBUEkgY29udHJhY3QsIHN1Y2ggYXMgYE1ZX0FQSV9DT05UUkFDVGAgb3IgYE1ZX0FQSV9DT05UUkFDVF9WMmAuXG4gKi9cbmNvbnN0IENPTlRSQUNUX1ZBUklBQkxFX05BTUVfUEFUVEVSTiA9IC9fQVBJX0NPTlRSQUNUKD86X1ZcXGQrKT8kLztcblxuLyoqXG4gKiBUaGUgcHJvcGVydHkgYSBjb250cmFjdCBpcyBwYXNzZWQgdW5kZXIuXG4gKi9cbmNvbnN0IENPTlRSQUNUX1BST1BFUlRZX05BTUUgPSAnY29udHJhY3QnO1xuXG4vKipcbiAqIFRoZSBzY2hlbWFzIGV2ZXJ5IG1ldGhvZCBlbnRyeSBtdXN0IGRlY2xhcmUuXG4gKi9cbmNvbnN0IFJFUVVJUkVEX1NDSEVNQV9OQU1FUyA9IFsnaW5wdXQnLCAnb3V0cHV0J10gYXMgY29uc3Q7XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIGJvdGggYW4gYGlucHV0YCBhbmQgYW4gYG91dHB1dGAgc2NoZW1hIG9uIGV2ZXJ5IG1ldGhvZCBlbnRyeSBvZiBhIHBsdWdpbiBBUEkgY29udHJhY3QuXG4gKi9cbmV4cG9ydCBjb25zdCByZXF1aXJlUGx1Z2luQXBpQ29udHJhY3RTY2hlbWFzOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgY29uc3QgY2hlY2tlZENvbnRyYWN0cyA9IG5ldyBTZXQ8VFNFU1RyZWUuT2JqZWN0RXhwcmVzc2lvbj4oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAnUHJvcGVydHknKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eU5vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5Qcm9wZXJ0eTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByb3BlcnR5Tm9kZS5wYXJlbnQudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuT2JqZWN0RXhwcmVzc2lvbiAmJiAhcHJvcGVydHlOb2RlLmNvbXB1dGVkXG4gICAgICAgICAgJiYgcmVhZEtleU5hbWUocHJvcGVydHlOb2RlLmtleSkgPT09IENPTlRSQUNUX1BST1BFUlRZX05BTUVcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmVwb3J0Q29udHJhY3RFbnRyaWVzKHByb3BlcnR5Tm9kZS52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnVFNBc0V4cHJlc3Npb24sIFRTU2F0aXNmaWVzRXhwcmVzc2lvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV4cHJlc3Npb25Ob2RlID0gdG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuVFNBc0V4cHJlc3Npb24gfCBUU0VTVHJlZS5UU1NhdGlzZmllc0V4cHJlc3Npb247XG4gICAgICAgIGlmIChpc0NvbnRyYWN0VHlwZShleHByZXNzaW9uTm9kZS50eXBlQW5ub3RhdGlvbikpIHtcbiAgICAgICAgICByZXBvcnRDb250cmFjdEVudHJpZXMoZXhwcmVzc2lvbk5vZGUuZXhwcmVzc2lvbik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAnVmFyaWFibGVEZWNsYXJhdG9yJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGVjbGFyYXRvck5vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5WYXJpYWJsZURlY2xhcmF0b3I7XG4gICAgICAgIGlmIChkZWNsYXJhdG9yTm9kZS5pZC50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5JZGVudGlmaWVyIHx8ICFkZWNsYXJhdG9yTm9kZS5pbml0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHlwZU5vZGUgPSBkZWNsYXJhdG9yTm9kZS5pZC50eXBlQW5ub3RhdGlvbj8udHlwZUFubm90YXRpb247XG4gICAgICAgIGlmIChDT05UUkFDVF9WQVJJQUJMRV9OQU1FX1BBVFRFUk4udGVzdChkZWNsYXJhdG9yTm9kZS5pZC5uYW1lKSB8fCAodHlwZU5vZGUgIT09IHVuZGVmaW5lZCAmJiBpc0NvbnRyYWN0VHlwZSh0eXBlTm9kZSkpKSB7XG4gICAgICAgICAgcmVwb3J0Q29udHJhY3RFbnRyaWVzKGRlY2xhcmF0b3JOb2RlLmluaXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHJlcG9ydENvbnRyYWN0RW50cmllcyhub2RlOiBUU0VTVHJlZS5Ob2RlKTogdm9pZCB7XG4gICAgICBjb25zdCBjb250cmFjdE5vZGUgPSByZXNvbHZlT2JqZWN0TGl0ZXJhbChub2RlLCBjb250ZXh0KTtcbiAgICAgIGlmICghY29udHJhY3ROb2RlIHx8IGNoZWNrZWRDb250cmFjdHMuaGFzKGNvbnRyYWN0Tm9kZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjaGVja2VkQ29udHJhY3RzLmFkZChjb250cmFjdE5vZGUpO1xuXG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGNvbnRyYWN0Tm9kZS5wcm9wZXJ0aWVzKSB7XG4gICAgICAgIGlmIChlbnRyeS50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5Qcm9wZXJ0eSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWlzc2luZ1NjaGVtYU5hbWVzID0gcmVhZE1pc3NpbmdTY2hlbWFOYW1lcyhlbnRyeS52YWx1ZSwgY29udGV4dCk7XG4gICAgICAgIGlmIChtaXNzaW5nU2NoZW1hTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWV0aG9kOiAoZW50cnkuY29tcHV0ZWQgPyBudWxsIDogcmVhZEtleU5hbWUoZW50cnkua2V5KSkgPz8gJ1tjb21wdXRlZF0nLFxuICAgICAgICAgICAgbWlzc2luZzogbWlzc2luZ1NjaGVtYU5hbWVzLm1hcCgobmFtZSkgPT4gYFxcYCR7bmFtZX1cXGBgKS5qb2luKCcgYW5kICcpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsb2M6IGVudHJ5LmtleS5sb2MsXG4gICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBhbiBgaW5wdXRgIGFuZCBhbiBgb3V0cHV0YCBzY2hlbWEgb24gZXZlcnkgbWV0aG9kIGVudHJ5IG9mIGEgcGx1Z2luIEFQSSBjb250cmFjdCdcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdUaGUgcGx1Z2luIEFQSSBjb250cmFjdCBlbnRyeSBge3sgbWV0aG9kIH19YCBkZWNsYXJlcyBubyB7eyBtaXNzaW5nIH19IHNjaGVtYS4gR2l2ZSBldmVyeSBtZXRob2QgZW50cnkgYm90aCBhbiBgaW5wdXRgIHNjaGVtYSBvdmVyIGl0cyBhcmd1bWVudCBsaXN0IGFuZCBhbiBgb3V0cHV0YCBzY2hlbWEgb3ZlciBpdHMgYXdhaXRlZCByZXR1cm4gdmFsdWUuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcblxuLyoqXG4gKiBGaW5kcyBhIHZhcmlhYmxlIGJ5IG5hbWUsIHdhbGtpbmcgb3V0d2FyZHMgZnJvbSB0aGUgZ2l2ZW4gc2NvcGUuXG4gKlxuICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIHRvIHN0YXJ0IGZyb20uXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSB2YXJpYWJsZSdzIG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgdmFyaWFibGUsIG9yIGBudWxsYCB3aGVuIG5vdGhpbmcgaW4gc2NvcGUgZGVjbGFyZXMgdGhhdCBuYW1lLlxuICovXG5mdW5jdGlvbiBmaW5kVmFyaWFibGUoc2NvcGU6IFNjb3BlLlNjb3BlLCBuYW1lOiBzdHJpbmcpOiBudWxsIHwgU2NvcGUuVmFyaWFibGUge1xuICBsZXQgY3VycmVudFNjb3BlOiBudWxsIHwgU2NvcGUuU2NvcGUgPSBzY29wZTtcblxuICB3aGlsZSAoY3VycmVudFNjb3BlKSB7XG4gICAgY29uc3QgdmFyaWFibGUgPSBjdXJyZW50U2NvcGUuc2V0LmdldChuYW1lKTtcbiAgICBpZiAodmFyaWFibGUpIHtcbiAgICAgIHJldHVybiB2YXJpYWJsZTtcbiAgICB9XG4gICAgY3VycmVudFNjb3BlID0gY3VycmVudFNjb3BlLnVwcGVyO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB0eXBlIG5hbWVzIGEgcGx1Z2luIEFQSSBjb250cmFjdCwgZGlyZWN0bHkgb3IgdGhyb3VnaCBhIG5hbWVzcGFjZS5cbiAqXG4gKiBAcGFyYW0gdHlwZU5vZGUgLSBUaGUgdHlwZS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSB0eXBlIGlzIGEgY29udHJhY3QgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNDb250cmFjdFR5cGUodHlwZU5vZGU6IFRTRVNUcmVlLlR5cGVOb2RlKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlTm9kZS50eXBlICE9PSBBU1RfTk9ERV9UWVBFUy5UU1R5cGVSZWZlcmVuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB0eXBlTmFtZSA9IHR5cGVOb2RlLnR5cGVOYW1lO1xuICByZXR1cm4gdHlwZU5hbWUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllciA/IENPTlRSQUNUX1RZUEVfTkFNRVMuaGFzKHR5cGVOYW1lLm5hbWUpIDogdHlwZU5hbWUudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVFNRdWFsaWZpZWROYW1lICYmIENPTlRSQUNUX1RZUEVfTkFNRVMuaGFzKHR5cGVOYW1lLnJpZ2h0Lm5hbWUpO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBuYW1lIG9mIGEgcHJvcGVydHkga2V5IHdyaXR0ZW4gYXMgYW4gaWRlbnRpZmllciBvciBhIHN0cmluZyBsaXRlcmFsLlxuICpcbiAqIEBwYXJhbSBrZXkgLSBUaGUgcHJvcGVydHkga2V5LlxuICogQHJldHVybnMgVGhlIG5hbWUsIG9yIGBudWxsYCBmb3IgYW55IG90aGVyIGtleS5cbiAqL1xuZnVuY3Rpb24gcmVhZEtleU5hbWUoa2V5OiBUU0VTVHJlZS5Ob2RlKTogbnVsbCB8IHN0cmluZyB7XG4gIGlmIChrZXkudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikge1xuICAgIHJldHVybiBrZXkubmFtZTtcbiAgfVxuXG4gIHJldHVybiBrZXkudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuTGl0ZXJhbCAmJiB0eXBlb2Yga2V5LnZhbHVlID09PSAnc3RyaW5nJyA/IGtleS52YWx1ZSA6IG51bGw7XG59XG5cbi8qKlxuICogUmVhZHMgd2hpY2ggcmVxdWlyZWQgc2NoZW1hcyBhIG1ldGhvZCBlbnRyeSBsYWNrcy5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBlbnRyeSdzIHZhbHVlLlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUgcnVsZSBjb250ZXh0LCB1c2VkIHRvIGZvbGxvdyBhIGNvbnN0YW50LlxuICogQHJldHVybnMgVGhlIG1pc3Npbmcgc2NoZW1hIG5hbWVzLCBlbXB0eSB3aGVuIG5vbmUgaXMgbWlzc2luZyBvciB0aGUgZW50cnkgY2Fubm90IGJlIHJlYWQgc3RhdGljYWxseS5cbiAqL1xuZnVuY3Rpb24gcmVhZE1pc3NpbmdTY2hlbWFOYW1lcyhub2RlOiBUU0VTVHJlZS5Ob2RlLCBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogc3RyaW5nW10ge1xuICBjb25zdCBlbnRyeU5vZGUgPSByZXNvbHZlT2JqZWN0TGl0ZXJhbChub2RlLCBjb250ZXh0KTtcbiAgaWYgKCFlbnRyeU5vZGUpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBrZXlOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IG1lbWJlciBvZiBlbnRyeU5vZGUucHJvcGVydGllcykge1xuICAgIGlmIChtZW1iZXIudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuUHJvcGVydHkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlOYW1lID0gbWVtYmVyLmNvbXB1dGVkID8gbnVsbCA6IHJlYWRLZXlOYW1lKG1lbWJlci5rZXkpO1xuICAgIGlmIChrZXlOYW1lICE9PSBudWxsKSB7XG4gICAgICBrZXlOYW1lcy5hZGQoa2V5TmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFJFUVVJUkVEX1NDSEVNQV9OQU1FUy5maWx0ZXIoKG5hbWUpID0+ICFrZXlOYW1lcy5oYXMobmFtZSkpO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGFuIGlkZW50aWZpZXIgdG8gdGhlIGluaXRpYWxpemVyIG9mIHRoZSBgY29uc3RgIGl0IG5hbWVzLlxuICpcbiAqIEBwYXJhbSBub2RlIC0gVGhlIGlkZW50aWZpZXIuXG4gKiBAcGFyYW0gY29udGV4dCAtIFRoZSBydWxlIGNvbnRleHQsIHVzZWQgdG8gcmVzb2x2ZSB0aGUgaWRlbnRpZmllciB0aHJvdWdoIHNjb3BlLlxuICogQHJldHVybnMgVGhlIGluaXRpYWxpemVyLCBvciBgbnVsbGAgd2hlbiB0aGUgaWRlbnRpZmllciBuYW1lcyBhbnl0aGluZyBlbHNlLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQ29uc3RJbml0KG5vZGU6IFRTRVNUcmVlLklkZW50aWZpZXIsIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBudWxsIHwgVFNFU1RyZWUuRXhwcmVzc2lvbiB7XG4gIGNvbnN0IHZhcmlhYmxlID0gZmluZFZhcmlhYmxlKGNvbnRleHQuc291cmNlQ29kZS5nZXRTY29wZShub2RlKSwgbm9kZS5uYW1lKTtcbiAgY29uc3QgZGVmaW5pdGlvbiA9IHZhcmlhYmxlPy5kZWZzLmxlbmd0aCA9PT0gMSA/IHZhcmlhYmxlLmRlZnNbMF0gOiB1bmRlZmluZWQ7XG4gIGlmIChkZWZpbml0aW9uPy50eXBlICE9PSAnVmFyaWFibGUnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkZWNsYXJhdG9yTm9kZSA9IHRvVFNFU1RyZWVOb2RlKGRlZmluaXRpb24ubm9kZSkgYXMgVFNFU1RyZWUuVmFyaWFibGVEZWNsYXJhdG9yO1xuICBjb25zdCBkZWNsYXJhdGlvbk5vZGUgPSBkZWNsYXJhdG9yTm9kZS5wYXJlbnQ7XG4gIHJldHVybiBkZWNsYXJhdGlvbk5vZGUua2luZCA9PT0gJ2NvbnN0JyA/IGRlY2xhcmF0b3JOb2RlLmluaXQgOiBudWxsO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGFuIGV4cHJlc3Npb24gdG8gdGhlIG9iamVjdCBsaXRlcmFsIGl0IGlzLCBzdGVwcGluZyB0aHJvdWdoIGBhc2AgLyBgc2F0aXNmaWVzYCAvIGAhYCBhbmQgZm9sbG93aW5nIGFcbiAqIGBjb25zdGAgaXQgbmFtZXMuXG4gKlxuICogQHBhcmFtIG5vZGUgLSBUaGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIHJ1bGUgY29udGV4dCwgdXNlZCB0byByZXNvbHZlIGFuIGlkZW50aWZpZXIgdGhyb3VnaCBzY29wZS5cbiAqIEByZXR1cm5zIFRoZSBvYmplY3QgbGl0ZXJhbCwgb3IgYG51bGxgIHdoZW4gdGhlIGV4cHJlc3Npb24gaXMgbm90IG9uZSBzdGF0aWNhbGx5LlxuICovXG5mdW5jdGlvbiByZXNvbHZlT2JqZWN0TGl0ZXJhbChub2RlOiBUU0VTVHJlZS5Ob2RlLCBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogbnVsbCB8IFRTRVNUcmVlLk9iamVjdEV4cHJlc3Npb24ge1xuICBjb25zdCB2aXNpdGVkTm9kZXMgPSBuZXcgU2V0PFRTRVNUcmVlLk5vZGU+KCk7XG4gIGxldCBjdXJyZW50Tm9kZTogVFNFU1RyZWUuTm9kZSA9IG5vZGU7XG5cbiAgd2hpbGUgKCF2aXNpdGVkTm9kZXMuaGFzKGN1cnJlbnROb2RlKSkge1xuICAgIHZpc2l0ZWROb2Rlcy5hZGQoY3VycmVudE5vZGUpO1xuXG4gICAgc3dpdGNoIChjdXJyZW50Tm9kZS50eXBlKSB7XG4gICAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXI6IHtcbiAgICAgICAgY29uc3QgaW5pdE5vZGUgPSByZXNvbHZlQ29uc3RJbml0KGN1cnJlbnROb2RlLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKCFpbml0Tm9kZSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnROb2RlID0gaW5pdE5vZGU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBBU1RfTk9ERV9UWVBFUy5PYmplY3RFeHByZXNzaW9uOiB7XG4gICAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICAgIH1cbiAgICAgIGNhc2UgQVNUX05PREVfVFlQRVMuVFNBc0V4cHJlc3Npb246XG4gICAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTTm9uTnVsbEV4cHJlc3Npb246XG4gICAgICBjYXNlIEFTVF9OT0RFX1RZUEVTLlRTU2F0aXNmaWVzRXhwcmVzc2lvbjoge1xuICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmV4cHJlc3Npb247XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ0EsU0FBUyxzQkFBc0I7QUFDL0IsU0FBUyxzQkFBc0I7QUFLeEIsTUFBTSxhQUFhO0FBSzFCLE1BQU0sc0JBQXNCLG9CQUFJLElBQUksQ0FBQyxxQkFBcUIsd0JBQXdCLENBQUM7QUFLbkYsTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSx5QkFBeUI7QUFLL0IsTUFBTSx3QkFBd0IsQ0FBQyxTQUFTLFFBQVE7QUFLekMsTUFBTSxrQ0FBbUQ7QUFBQSxFQUM5RCxPQUFPLFNBQVM7QUFDZCxVQUFNLG1CQUFtQixvQkFBSSxJQUErQjtBQUU1RCxXQUFPO0FBQUEsTUFDTCxXQUFXLE1BQXVCO0FBQ2hDLGNBQU0sZUFBZSxlQUFlLElBQUk7QUFDeEMsWUFDRSxhQUFhLE9BQU8sU0FBUyxlQUFlLG9CQUFvQixDQUFDLGFBQWEsWUFDM0UsWUFBWSxhQUFhLEdBQUcsTUFBTSx3QkFDckM7QUFDQSxnQ0FBc0IsYUFBYSxLQUFLO0FBQUEsUUFDMUM7QUFBQSxNQUNGO0FBQUEsTUFDQSx3Q0FBd0MsTUFBdUI7QUFDN0QsY0FBTSxpQkFBaUIsZUFBZSxJQUFJO0FBQzFDLFlBQUksZUFBZSxlQUFlLGNBQWMsR0FBRztBQUNqRCxnQ0FBc0IsZUFBZSxVQUFVO0FBQUEsUUFDakQ7QUFBQSxNQUNGO0FBQUEsTUFDQSxxQkFBcUIsTUFBdUI7QUFDMUMsY0FBTSxpQkFBaUIsZUFBZSxJQUFJO0FBQzFDLFlBQUksZUFBZSxHQUFHLFNBQVMsZUFBZSxjQUFjLENBQUMs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
@@ -1,4 +1,4 @@
1
- /// <reference path="../index.d.mts" />
1
+ /// <reference path="../library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -2,49 +2,32 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
15
9
  cwd() {
16
- return '/';
10
+ return "/";
17
11
  },
18
12
  env: {},
19
- platform: 'android'
13
+ platform: "android"
20
14
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
15
  const existingProcess = globalThis.process;
24
-
25
16
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
17
  globalThis.process = browserProcess;
28
18
  return;
29
19
  }
30
-
31
20
  if (existingProcess.versions?.node) {
32
21
  return;
33
22
  }
34
-
35
23
  const existingProcessRecord = existingProcess;
36
-
37
24
  for (const [key, value] of Object.entries(browserProcess)) {
38
25
  existingProcessRecord[key] ??= value;
39
26
  }
40
-
41
- existingProcessRecord['browser'] = true;
27
+ existingProcessRecord["browser"] = true;
42
28
  }
43
29
 
44
- (function initEsm() {
45
- ensureDisposeSymbols();
46
- ensureBrowserProcess();
47
- })();
30
+ ensureBrowserProcess();
48
31
  })();
49
32
 
50
33
  import { lint as lintGeneric } from "@mnaoumov/typescript-dev-toolkit/linters/eslint";
@@ -57,4 +40,4 @@ async function lint(options) {
57
40
  export {
58
41
  lint
59
42
  };
60
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludHMgYW4gT2JzaWRpYW4gcGx1Z2luIHdpdGggRVNMaW50OiB0aGUgZ2VuZXJpYyBydW5uZXIgZnJvbSBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXRgLCB3aGljaCBjb3BpZXNcbiAqIHRoaXMgcGFja2FnZSdzIGBlc2xpbnQuY29uZmlnLm10c2AgdGVtcGxhdGUgaW50byBhIHByb2plY3QgdGhhdCBoYXMgbm8gY29uZmlndXJhdGlvbiB5ZXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBMaW50T3B0aW9ucyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50JztcblxuaW1wb3J0IHsgbGludCBhcyBsaW50R2VuZXJpYyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50JztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3JlcG8tcGF0aHMnO1xuXG5pbXBvcnQgeyBnZXRUZW1wbGF0ZUZpbGVQYXRoIH0gZnJvbSAnLi4vdGVtcGxhdGVzLnRzJztcblxuLyoqXG4gKiBMaW50cyB0aGUgcHJvamVjdCB3aXRoIEVTTGludC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbGludEdlbmVyaWMoeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGg6IGdldFRlbXBsYXRlRmlsZVBhdGgoUmVwb1BhdGhzLkVzbGludENvbmZpZ010cyksIC4uLm9wdGlvbnMgfSk7XG59XG5leHBvcnQgeyB0eXBlIExpbnRPcHRpb25zIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbGludGVycy9lc2xpbnQnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLFNBQVMsUUFBUSxtQkFBbUI7QUFDcEMsU0FBUyxpQkFBaUI7QUFFMUIsU0FBUywyQkFBMkI7QUFVcEMsZUFBaUM7QUFIakMsZUFBc0IsS0FBSyxTQUFzQztBQUMvRCxRQUFNLFlBQVksRUFBRSx1QkFBdUIsb0JBQW9CLFVBQVUsZUFBZSxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ3pHOyIsCiAgIm5hbWVzIjogW10KfQo=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludHMgYW4gT2JzaWRpYW4gcGx1Z2luIHdpdGggRVNMaW50OiB0aGUgZ2VuZXJpYyBydW5uZXIgZnJvbSBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXRgLCB3aGljaCBjb3BpZXNcbiAqIHRoaXMgcGFja2FnZSdzIGBlc2xpbnQuY29uZmlnLm10c2AgdGVtcGxhdGUgaW50byBhIHByb2plY3QgdGhhdCBoYXMgbm8gY29uZmlndXJhdGlvbiB5ZXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBMaW50T3B0aW9ucyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50JztcblxuaW1wb3J0IHsgbGludCBhcyBsaW50R2VuZXJpYyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50JztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3JlcG8tcGF0aHMnO1xuXG5pbXBvcnQgeyBnZXRUZW1wbGF0ZUZpbGVQYXRoIH0gZnJvbSAnLi4vdGVtcGxhdGVzLnRzJztcblxuLyoqXG4gKiBMaW50cyB0aGUgcHJvamVjdCB3aXRoIEVTTGludC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbGludEdlbmVyaWMoeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGg6IGdldFRlbXBsYXRlRmlsZVBhdGgoUmVwb1BhdGhzLkVzbGludENvbmZpZ010cyksIC4uLm9wdGlvbnMgfSk7XG59XG5leHBvcnQgeyB0eXBlIExpbnRPcHRpb25zIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbGludGVycy9lc2xpbnQnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNBLFNBQVMsUUFBUSxtQkFBbUI7QUFDcEMsU0FBUyxpQkFBaUI7QUFFMUIsU0FBUywyQkFBMkI7QUFVcEMsZUFBaUM7QUFIakMsZUFBc0IsS0FBSyxTQUFzQztBQUMvRCxRQUFNLFlBQVksRUFBRSx1QkFBdUIsb0JBQW9CLFVBQVUsZUFBZSxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ3pHOyIsIm5hbWVzIjpbXX0=
@@ -1,6 +1,9 @@
1
- /// <reference path="../index.d.mts" />
1
+ /// <reference path="../library-references.d.mts" />
2
2
  export * as 'eslint-config' from './eslint-config.mjs';
3
3
  export * as 'eslint-rules' from './eslint-rules/index.mjs';
4
4
  export * as 'eslint' from './eslint.mjs';
5
+ export * as 'markdownlint-cli2-config' from './markdownlint-cli2-config.mjs';
6
+ export * as 'markdownlint-rules' from './markdownlint-rules/index.mjs';
5
7
  export * as 'markdownlint' from './markdownlint.mjs';
6
8
  export * as 'obsidianmd-rule-custom-message' from './obsidianmd-rule-custom-message.mjs';
9
+ export * as 'plugin-names' from './plugin-names.mjs';
@@ -3,60 +3,22 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
- function ensureBrowserProcess() {
13
- const browserProcess = {
14
- browser: true,
15
- cwd() {
16
- return '/';
17
- },
18
- env: {},
19
- platform: 'android'
20
- };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
- const existingProcess = globalThis.process;
24
-
25
- if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
- globalThis.process = browserProcess;
28
- return;
29
- }
30
-
31
- if (existingProcess.versions?.node) {
32
- return;
33
- }
34
-
35
- const existingProcessRecord = existingProcess;
36
-
37
- for (const [key, value] of Object.entries(browserProcess)) {
38
- existingProcessRecord[key] ??= value;
39
- }
40
-
41
- existingProcessRecord['browser'] = true;
42
- }
43
-
44
- (function initEsm() {
45
- ensureDisposeSymbols();
46
- ensureBrowserProcess();
47
- })();
48
- })();
49
-
50
6
  import * as eslint_config from "./eslint-config.mjs";
51
7
  import * as eslint_rules from "./eslint-rules/index.mjs";
52
8
  import * as eslint from "./eslint.mjs";
9
+ import * as markdownlint_cli2_config from "./markdownlint-cli2-config.mjs";
10
+ import * as markdownlint_rules from "./markdownlint-rules/index.mjs";
53
11
  import * as markdownlint from "./markdownlint.mjs";
54
12
  import * as obsidianmd_rule_custom_message from "./obsidianmd-rule-custom-message.mjs";
13
+ import * as plugin_names from "./plugin-names.mjs";
55
14
  export {
56
15
  eslint,
57
16
  eslint_config as "eslint-config",
58
17
  eslint_rules as "eslint-rules",
59
18
  markdownlint,
60
- obsidianmd_rule_custom_message as "obsidianmd-rule-custom-message"
19
+ markdownlint_cli2_config as "markdownlint-cli2-config",
20
+ markdownlint_rules as "markdownlint-rules",
21
+ obsidianmd_rule_custom_message as "obsidianmd-rule-custom-message",
22
+ plugin_names as "plugin-names"
61
23
  };
62
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnZXNsaW50LWNvbmZpZycgZnJvbSAnLi9lc2xpbnQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICdlc2xpbnQtcnVsZXMnIGZyb20gJy4vZXNsaW50LXJ1bGVzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdlc2xpbnQnIGZyb20gJy4vZXNsaW50LnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bmxpbnQnIGZyb20gJy4vbWFya2Rvd25saW50LnRzJztcbmV4cG9ydCAqIGFzICdvYnNpZGlhbm1kLXJ1bGUtY3VzdG9tLW1lc3NhZ2UnIGZyb20gJy4vb2JzaWRpYW5tZC1ydWxlLWN1c3RvbS1tZXNzYWdlLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxZQUFZQSxtQkFBcUI7QUFDakMsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVksWUFBYztBQUMxQixZQUFZLGtCQUFvQjtBQUNoQyxZQUFZQyxvQ0FBc0M7IiwKICAibmFtZXMiOiBbImVzbGludC1jb25maWciLCAiZXNsaW50LXJ1bGVzIiwgIm9ic2lkaWFubWQtcnVsZS1jdXN0b20tbWVzc2FnZSJdCn0K
24
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnZXNsaW50LWNvbmZpZycgZnJvbSAnLi9lc2xpbnQtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICdlc2xpbnQtcnVsZXMnIGZyb20gJy4vZXNsaW50LXJ1bGVzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdlc2xpbnQnIGZyb20gJy4vZXNsaW50LnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bmxpbnQtY2xpMi1jb25maWcnIGZyb20gJy4vbWFya2Rvd25saW50LWNsaTItY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bmxpbnQtcnVsZXMnIGZyb20gJy4vbWFya2Rvd25saW50LXJ1bGVzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdtYXJrZG93bmxpbnQnIGZyb20gJy4vbWFya2Rvd25saW50LnRzJztcbmV4cG9ydCAqIGFzICdvYnNpZGlhbm1kLXJ1bGUtY3VzdG9tLW1lc3NhZ2UnIGZyb20gJy4vb2JzaWRpYW5tZC1ydWxlLWN1c3RvbS1tZXNzYWdlLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbmFtZXMnIGZyb20gJy4vcGx1Z2luLW5hbWVzLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsbUJBQXFCO0FBQ2pDLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZLFlBQWM7QUFDMUIsWUFBWUMsOEJBQWdDO0FBQzVDLFlBQVlDLHdCQUEwQjtBQUN0QyxZQUFZLGtCQUFvQjtBQUNoQyxZQUFZQyxvQ0FBc0M7QUFDbEQsWUFBWUMsa0JBQW9COyIsCiAgIm5hbWVzIjogWyJlc2xpbnQtY29uZmlnIiwgImVzbGludC1ydWxlcyIsICJtYXJrZG93bmxpbnQtY2xpMi1jb25maWciLCAibWFya2Rvd25saW50LXJ1bGVzIiwgIm9ic2lkaWFubWQtcnVsZS1jdXN0b20tbWVzc2FnZSIsICJwbHVnaW4tbmFtZXMiXQp9Cg==
@@ -0,0 +1,12 @@
1
+ /// <reference path="../library-references.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * The markdownlint-cli2 configuration of an Obsidian plugin: the generic one from `@mnaoumov/typescript-dev-toolkit`,
6
+ * plus the Obsidian rules of this package.
7
+ */
8
+ import type { MarkdownlintCli2ConfigurationSchema as MarkdownlintCli2ConfigSchema } from '@mnaoumov/typescript-dev-toolkit/linters/markdownlint-types/@types/markdownlint-cli2-config-schema';
9
+ /**
10
+ * The markdownlint-cli2 configuration of an Obsidian plugin.
11
+ */
12
+ export declare const obsidianMarkdownlintCli2Config: MarkdownlintCli2ConfigSchema;
@@ -0,0 +1,57 @@
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
+ (function () {
6
+ function ensureBrowserProcess() {
7
+ const browserProcess = {
8
+ browser: true,
9
+ cwd() {
10
+ return "/";
11
+ },
12
+ env: {},
13
+ platform: "android"
14
+ };
15
+ const existingProcess = globalThis.process;
16
+ if (!existingProcess) {
17
+ globalThis.process = browserProcess;
18
+ return;
19
+ }
20
+ if (existingProcess.versions?.node) {
21
+ return;
22
+ }
23
+ const existingProcessRecord = existingProcess;
24
+ for (const [key, value] of Object.entries(browserProcess)) {
25
+ existingProcessRecord[key] ??= value;
26
+ }
27
+ existingProcessRecord["browser"] = true;
28
+ }
29
+
30
+ ensureBrowserProcess();
31
+ })();
32
+
33
+ import { obsidianDevUtilsConfig } from "@mnaoumov/typescript-dev-toolkit/linters/markdownlint-cli2-config";
34
+ import {
35
+ PLUGIN_NAME_AS_CODE_RULE_NAME,
36
+ pluginNameAsCodeRule
37
+ } from "./markdownlint-rules/plugin-name-as-code.mjs";
38
+ const obsidianMarkdownlintCli2Config = {
39
+ ...obsidianDevUtilsConfig,
40
+ config: {
41
+ ...obsidianDevUtilsConfig.config,
42
+ // Registered but OFF by default: markdownlint enables an unlisted custom rule, so landing it silent has to be
43
+ // said out loud. Repositories still carry plain plugin names from before the rule existed; each one fixes them
44
+ // (`npm run lint:md:fix` does it) and turns the rule on by overriding this one key in its own
45
+ // `scripts/markdownlint-cli2-config.ts`. The rule takes `{ additionalPluginNames: [...] }` for names the shared
46
+ // list lacks.
47
+ [PLUGIN_NAME_AS_CODE_RULE_NAME]: false
48
+ },
49
+ customRules: [
50
+ ...obsidianDevUtilsConfig.customRules ?? [],
51
+ pluginNameAsCodeRule
52
+ ]
53
+ };
54
+ export {
55
+ obsidianMarkdownlintCli2Config
56
+ };
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL21hcmtkb3dubGludC1jbGkyLWNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIG1hcmtkb3dubGludC1jbGkyIGNvbmZpZ3VyYXRpb24gb2YgYW4gT2JzaWRpYW4gcGx1Z2luOiB0aGUgZ2VuZXJpYyBvbmUgZnJvbSBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXRgLFxuICogcGx1cyB0aGUgT2JzaWRpYW4gcnVsZXMgb2YgdGhpcyBwYWNrYWdlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTWFya2Rvd25saW50Q2xpMkNvbmZpZ3VyYXRpb25TY2hlbWEgYXMgTWFya2Rvd25saW50Q2xpMkNvbmZpZ1NjaGVtYSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvbWFya2Rvd25saW50LXR5cGVzL0B0eXBlcy9tYXJrZG93bmxpbnQtY2xpMi1jb25maWctc2NoZW1hJztcblxuaW1wb3J0IHsgb2JzaWRpYW5EZXZVdGlsc0NvbmZpZyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvbWFya2Rvd25saW50LWNsaTItY29uZmlnJztcblxuaW1wb3J0IHtcbiAgUExVR0lOX05BTUVfQVNfQ09ERV9SVUxFX05BTUUsXG4gIHBsdWdpbk5hbWVBc0NvZGVSdWxlXG59IGZyb20gJy4vbWFya2Rvd25saW50LXJ1bGVzL3BsdWdpbi1uYW1lLWFzLWNvZGUudHMnO1xuXG4vKipcbiAqIFRoZSBtYXJrZG93bmxpbnQtY2xpMiBjb25maWd1cmF0aW9uIG9mIGFuIE9ic2lkaWFuIHBsdWdpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IG9ic2lkaWFuTWFya2Rvd25saW50Q2xpMkNvbmZpZzogTWFya2Rvd25saW50Q2xpMkNvbmZpZ1NjaGVtYSA9IHtcbiAgLi4ub2JzaWRpYW5EZXZVdGlsc0NvbmZpZyxcbiAgY29uZmlnOiB7XG4gICAgLi4ub2JzaWRpYW5EZXZVdGlsc0NvbmZpZy5jb25maWcsXG4gICAgLy8gUmVnaXN0ZXJlZCBidXQgT0ZGIGJ5IGRlZmF1bHQ6IG1hcmtkb3dubGludCBlbmFibGVzIGFuIHVubGlzdGVkIGN1c3RvbSBydWxlLCBzbyBsYW5kaW5nIGl0IHNpbGVudCBoYXMgdG8gYmVcbiAgICAvLyBzYWlkIG91dCBsb3VkLiBSZXBvc2l0b3JpZXMgc3RpbGwgY2FycnkgcGxhaW4gcGx1Z2luIG5hbWVzIGZyb20gYmVmb3JlIHRoZSBydWxlIGV4aXN0ZWQ7IGVhY2ggb25lIGZpeGVzIHRoZW1cbiAgICAvLyAoYG5wbSBydW4gbGludDptZDpmaXhgIGRvZXMgaXQpIGFuZCB0dXJucyB0aGUgcnVsZSBvbiBieSBvdmVycmlkaW5nIHRoaXMgb25lIGtleSBpbiBpdHMgb3duXG4gICAgLy8gYHNjcmlwdHMvbWFya2Rvd25saW50LWNsaTItY29uZmlnLnRzYC4gVGhlIHJ1bGUgdGFrZXMgYHsgYWRkaXRpb25hbFBsdWdpbk5hbWVzOiBbLi4uXSB9YCBmb3IgbmFtZXMgdGhlIHNoYXJlZFxuICAgIC8vIGxpc3QgbGFja3MuXG4gICAgW1BMVUdJTl9OQU1FX0FTX0NPREVfUlVMRV9OQU1FXTogZmFsc2VcbiAgfSxcbiAgY3VzdG9tUnVsZXM6IFtcbiAgICAuLi5vYnNpZGlhbkRldlV0aWxzQ29uZmlnLmN1c3RvbVJ1bGVzID8/IFtdLFxuICAgIHBsdWdpbk5hbWVBc0NvZGVSdWxlXG4gIF1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU0EsU0FBUyw4QkFBOEI7QUFFdkM7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFLQSxNQUFNLGlDQUErRDtBQUFBLEVBQzFFLEdBQUc7QUFBQSxFQUNILFFBQVE7QUFBQSxJQUNOLEdBQUcsdUJBQXVCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBTTFCLENBQUMsNkJBQTZCLEdBQUc7QUFBQSxFQUNuQztBQUFBLEVBQ0EsYUFBYTtBQUFBLElBQ1gsR0FBRyx1QkFBdUIsZUFBZSxDQUFDO0FBQUEsSUFDMUM7QUFBQSxFQUNGO0FBQ0Y7IiwibmFtZXMiOltdfQ==
@@ -0,0 +1,2 @@
1
+ /// <reference path="../../library-references.d.mts" />
2
+ export * as 'plugin-name-as-code' from './plugin-name-as-code.mjs';
@@ -0,0 +1,10 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ import * as plugin_name_as_code from "./plugin-name-as-code.mjs";
7
+ export {
8
+ plugin_name_as_code as "plugin-name-as-code"
9
+ };
10
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvbWFya2Rvd25saW50LXJ1bGVzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ3BsdWdpbi1uYW1lLWFzLWNvZGUnIGZyb20gJy4vcGx1Z2luLW5hbWUtYXMtY29kZS50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQUVBLFlBQVlBLHlCQUEyQjsiLAogICJuYW1lcyI6IFsicGx1Z2luLW5hbWUtYXMtY29kZSJdCn0K
@@ -0,0 +1,32 @@
1
+ /// <reference path="../../library-references.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * markdownlint rule: `plugin-name-as-code`.
6
+ *
7
+ * Reports an Obsidian plugin's display name written as plain text in markdown, and fixes it by wrapping the name in
8
+ * backticks. The names come from `plugin-names.ts`: the shared list, the project's own `manifest.json` `name`, and
9
+ * the rule's `additionalPluginNames` option.
10
+ *
11
+ * Only prose is read: the `data` tokens micromark leaves in paragraphs, lists, tables and emphasis. Everything else is
12
+ * left alone because a code span there would be wrong or would change something:
13
+ *
14
+ * - code spans, fenced and indented code and math are not `data` tokens, so they are never reached;
15
+ * - an HTML block, whose content markdownlint parses again as markdown;
16
+ * - a link or image label and target, a reference definition and an autolink: a code span inside a link label
17
+ * renders inconsistently across GitHub, Obsidian and terminals;
18
+ * - a heading, whose anchor would change;
19
+ * - a block quote, which quotes somebody else's words;
20
+ * - an Obsidian `[[wikilink]]` and an inline `<code>` element, which micromark reads as plain text, and a bare URL.
21
+ *
22
+ * Not attempted: a multi-word name broken across two lines of one paragraph.
23
+ */
24
+ import type { Rule } from 'markdownlint';
25
+ /**
26
+ * The rule's name, as it is spelled in a `markdownlint-cli2` configuration.
27
+ */
28
+ export declare const PLUGIN_NAME_AS_CODE_RULE_NAME = "plugin-name-as-code";
29
+ /**
30
+ * A markdownlint rule requiring a plugin name in markdown to be marked as code.
31
+ */
32
+ export declare const pluginNameAsCodeRule: Rule;
@@ -0,0 +1,94 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ import process from "node:process";
7
+ import {
8
+ findPluginNameMatches,
9
+ getPluginNames
10
+ } from "../plugin-names.mjs";
11
+ const PLUGIN_NAME_AS_CODE_RULE_NAME = "plugin-name-as-code";
12
+ const EXCLUDED_TOKEN_TYPES = /* @__PURE__ */ new Set([
13
+ "atxHeading",
14
+ "blockQuote",
15
+ "definition",
16
+ "htmlFlow",
17
+ "image",
18
+ "link",
19
+ "setextHeading"
20
+ ]);
21
+ const UNDEFINED_REFERENCE_TOKEN_TYPE_PREFIX = "undefinedReference";
22
+ const EXCLUDED_LINE_PATTERNS = [
23
+ /\[\[[^\]]*\]\]/g,
24
+ /<code\b[^>]*>[\s\S]*?<\/code>/gi,
25
+ /\b[a-z][\w+.-]*:\/\/\S+/gi
26
+ ];
27
+ const pluginNameAsCodeRule = {
28
+ description: "Plugin name is not marked as code (wrap it in backticks)",
29
+ function: (params, onError) => {
30
+ const options = params.config;
31
+ const pluginNames = getPluginNames({ additionalPluginNames: options.additionalPluginNames, cwd: process.cwd() });
32
+ const proseRangesByLine = /* @__PURE__ */ new Map();
33
+ collectProseRanges(params.parsers.micromark.tokens, proseRangesByLine);
34
+ for (const [index, line] of params.lines.entries()) {
35
+ const lineNumber = index + 1;
36
+ const ranges = proseRangesByLine.get(lineNumber);
37
+ if (!ranges) {
38
+ continue;
39
+ }
40
+ const mergedRanges = mergeRanges(ranges);
41
+ for (const match of findPluginNameMatches(line, pluginNames, EXCLUDED_LINE_PATTERNS)) {
42
+ const column = match.index + 1;
43
+ const isInProse = mergedRanges.some((range) => range.start <= column && column + match.name.length <= range.end);
44
+ if (!isInProse) {
45
+ continue;
46
+ }
47
+ onError({
48
+ detail: `Wrap \`${match.name}\` in backticks`,
49
+ fixInfo: {
50
+ deleteCount: match.name.length,
51
+ editColumn: column,
52
+ insertText: `\`${match.name}\``
53
+ },
54
+ lineNumber,
55
+ range: [column, match.name.length]
56
+ });
57
+ }
58
+ }
59
+ },
60
+ names: [PLUGIN_NAME_AS_CODE_RULE_NAME],
61
+ parser: "micromark",
62
+ tags: ["code"]
63
+ };
64
+ function collectProseRanges(tokens, proseRangesByLine) {
65
+ for (const token of tokens) {
66
+ if (EXCLUDED_TOKEN_TYPES.has(token.type) || token.type.startsWith(UNDEFINED_REFERENCE_TOKEN_TYPE_PREFIX)) {
67
+ continue;
68
+ }
69
+ if (token.type === "data") {
70
+ const ranges = proseRangesByLine.get(token.startLine) ?? [];
71
+ ranges.push({ end: token.endColumn, start: token.startColumn });
72
+ proseRangesByLine.set(token.startLine, ranges);
73
+ continue;
74
+ }
75
+ collectProseRanges(token.children, proseRangesByLine);
76
+ }
77
+ }
78
+ function mergeRanges(ranges) {
79
+ const merged = [];
80
+ for (const range of [...ranges].sort((a, b) => a.start - b.start)) {
81
+ const last = merged.at(-1);
82
+ if (last && range.start <= last.end) {
83
+ merged[merged.length - 1] = { end: Math.max(last.end, range.end), start: last.start };
84
+ } else {
85
+ merged.push(range);
86
+ }
87
+ }
88
+ return merged;
89
+ }
90
+ export {
91
+ PLUGIN_NAME_AS_CODE_RULE_NAME,
92
+ pluginNameAsCodeRule
93
+ };
94
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvbWFya2Rvd25saW50LXJ1bGVzL3BsdWdpbi1uYW1lLWFzLWNvZGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBtYXJrZG93bmxpbnQgcnVsZTogYHBsdWdpbi1uYW1lLWFzLWNvZGVgLlxuICpcbiAqIFJlcG9ydHMgYW4gT2JzaWRpYW4gcGx1Z2luJ3MgZGlzcGxheSBuYW1lIHdyaXR0ZW4gYXMgcGxhaW4gdGV4dCBpbiBtYXJrZG93biwgYW5kIGZpeGVzIGl0IGJ5IHdyYXBwaW5nIHRoZSBuYW1lIGluXG4gKiBiYWNrdGlja3MuIFRoZSBuYW1lcyBjb21lIGZyb20gYHBsdWdpbi1uYW1lcy50c2A6IHRoZSBzaGFyZWQgbGlzdCwgdGhlIHByb2plY3QncyBvd24gYG1hbmlmZXN0Lmpzb25gIGBuYW1lYCwgYW5kXG4gKiB0aGUgcnVsZSdzIGBhZGRpdGlvbmFsUGx1Z2luTmFtZXNgIG9wdGlvbi5cbiAqXG4gKiBPbmx5IHByb3NlIGlzIHJlYWQ6IHRoZSBgZGF0YWAgdG9rZW5zIG1pY3JvbWFyayBsZWF2ZXMgaW4gcGFyYWdyYXBocywgbGlzdHMsIHRhYmxlcyBhbmQgZW1waGFzaXMuIEV2ZXJ5dGhpbmcgZWxzZSBpc1xuICogbGVmdCBhbG9uZSBiZWNhdXNlIGEgY29kZSBzcGFuIHRoZXJlIHdvdWxkIGJlIHdyb25nIG9yIHdvdWxkIGNoYW5nZSBzb21ldGhpbmc6XG4gKlxuICogLSBjb2RlIHNwYW5zLCBmZW5jZWQgYW5kIGluZGVudGVkIGNvZGUgYW5kIG1hdGggYXJlIG5vdCBgZGF0YWAgdG9rZW5zLCBzbyB0aGV5IGFyZSBuZXZlciByZWFjaGVkO1xuICogLSBhbiBIVE1MIGJsb2NrLCB3aG9zZSBjb250ZW50IG1hcmtkb3dubGludCBwYXJzZXMgYWdhaW4gYXMgbWFya2Rvd247XG4gKiAtIGEgbGluayBvciBpbWFnZSBsYWJlbCBhbmQgdGFyZ2V0LCBhIHJlZmVyZW5jZSBkZWZpbml0aW9uIGFuZCBhbiBhdXRvbGluazogYSBjb2RlIHNwYW4gaW5zaWRlIGEgbGluayBsYWJlbFxuICogICByZW5kZXJzIGluY29uc2lzdGVudGx5IGFjcm9zcyBHaXRIdWIsIE9ic2lkaWFuIGFuZCB0ZXJtaW5hbHM7XG4gKiAtIGEgaGVhZGluZywgd2hvc2UgYW5jaG9yIHdvdWxkIGNoYW5nZTtcbiAqIC0gYSBibG9jayBxdW90ZSwgd2hpY2ggcXVvdGVzIHNvbWVib2R5IGVsc2UncyB3b3JkcztcbiAqIC0gYW4gT2JzaWRpYW4gYFtbd2lraWxpbmtdXWAgYW5kIGFuIGlubGluZSBgPGNvZGU+YCBlbGVtZW50LCB3aGljaCBtaWNyb21hcmsgcmVhZHMgYXMgcGxhaW4gdGV4dCwgYW5kIGEgYmFyZSBVUkwuXG4gKlxuICogTm90IGF0dGVtcHRlZDogYSBtdWx0aS13b3JkIG5hbWUgYnJva2VuIGFjcm9zcyB0d28gbGluZXMgb2Ygb25lIHBhcmFncmFwaC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIE1pY3JvbWFya1Rva2VuLFxuICBSdWxlXG59IGZyb20gJ21hcmtkb3dubGludCc7XG5cbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTmFtZVJ1bGVPcHRpb25zIH0gZnJvbSAnLi4vcGx1Z2luLW5hbWVzLnRzJztcblxuaW1wb3J0IHtcbiAgZmluZFBsdWdpbk5hbWVNYXRjaGVzLFxuICBnZXRQbHVnaW5OYW1lc1xufSBmcm9tICcuLi9wbHVnaW4tbmFtZXMudHMnO1xuXG4vKipcbiAqIFRoZSBydWxlJ3MgbmFtZSwgYXMgaXQgaXMgc3BlbGxlZCBpbiBhIGBtYXJrZG93bmxpbnQtY2xpMmAgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9OQU1FX0FTX0NPREVfUlVMRV9OQU1FID0gJ3BsdWdpbi1uYW1lLWFzLWNvZGUnO1xuXG4vKipcbiAqIFRoZSB0b2tlbiB0eXBlcyB3aG9zZSB3aG9sZSBzdWJ0cmVlIGlzIHNraXBwZWQuXG4gKi9cbmNvbnN0IEVYQ0xVREVEX1RPS0VOX1RZUEVTID0gbmV3IFNldChbXG4gICdhdHhIZWFkaW5nJyxcbiAgJ2Jsb2NrUXVvdGUnLFxuICAnZGVmaW5pdGlvbicsXG4gICdodG1sRmxvdycsXG4gICdpbWFnZScsXG4gICdsaW5rJyxcbiAgJ3NldGV4dEhlYWRpbmcnXG5dKTtcblxuLyoqXG4gKiBUaGUgcHJlZml4IG9mIHRoZSB0b2tlbiB0eXBlcyBtYXJrZG93bmxpbnQgYXBwZW5kcyBmb3IgYSBzaG9ydGN1dCwgY29sbGFwc2VkIG9yIGZ1bGwgcmVmZXJlbmNlIHdpdGggbm8gZGVmaW5pdGlvbi5cbiAqIFRoZXkgcmVwZWF0IHRleHQgdGhlIHRyZWUgYWxyZWFkeSBob2xkcywgc28gcmVhZGluZyB0aGVtIHdvdWxkIHJlcG9ydCBhIG5hbWUgdHdpY2UuXG4gKi9cbmNvbnN0IFVOREVGSU5FRF9SRUZFUkVOQ0VfVE9LRU5fVFlQRV9QUkVGSVggPSAndW5kZWZpbmVkUmVmZXJlbmNlJztcblxuLyoqXG4gKiBUaGUgbGluZSBzcGFucyBtaWNyb21hcmsgcmVhZHMgYXMgcGxhaW4gdGV4dCB3aG9zZSBwbHVnaW4gbmFtZXMgYXJlIG5vdCBwcm9zZTogYW4gT2JzaWRpYW4gd2lraWxpbmssIGFuIGlubGluZVxuICogYDxjb2RlPmAgZWxlbWVudCwgYSBVUkwuXG4gKi9cbmNvbnN0IEVYQ0xVREVEX0xJTkVfUEFUVEVSTlM6IHJlYWRvbmx5IFJlZ0V4cFtdID0gW1xuICAvXFxbXFxbW15cXF1dKlxcXVxcXS9nLFxuICAvPGNvZGVcXGJbXj5dKj5bXFxzXFxTXSo/PFxcL2NvZGU+L2dpLFxuICAvXFxiW2Etel1bXFx3Ky4tXSo6XFwvXFwvXFxTKy9naVxuXTtcblxuLyoqXG4gKiBBIGNvbHVtbiByYW5nZSBvZiBvbmUgbGluZSwgMS1iYXNlZCwgZW5kIGV4Y2x1c2l2ZS5cbiAqL1xuaW50ZXJmYWNlIENvbHVtblJhbmdlIHtcbiAgcmVhZG9ubHkgZW5kOiBudW1iZXI7XG4gIHJlYWRvbmx5IHN0YXJ0OiBudW1iZXI7XG59XG5cbi8qKlxuICogQSBtYXJrZG93bmxpbnQgcnVsZSByZXF1aXJpbmcgYSBwbHVnaW4gbmFtZSBpbiBtYXJrZG93biB0byBiZSBtYXJrZWQgYXMgY29kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IHBsdWdpbk5hbWVBc0NvZGVSdWxlOiBSdWxlID0ge1xuICBkZXNjcmlwdGlvbjogJ1BsdWdpbiBuYW1lIGlzIG5vdCBtYXJrZWQgYXMgY29kZSAod3JhcCBpdCBpbiBiYWNrdGlja3MpJyxcbiAgZnVuY3Rpb246IChwYXJhbXMsIG9uRXJyb3IpID0+IHtcbiAgICAvLyBUaGUgbWFya2Rvd25saW50IGVuZ2luZSBoYW5kcyBhbiBlbmFibGVkIHJ1bGUgaXRzIGNvbmZpZ3VyYXRpb24gb2JqZWN0LCBvciBhbiBlbXB0eSBvbmUgd2hlbiB0aGUgcnVsZSBpcyBtZXJlbHkgYHRydWVgLlxuICAgIGNvbnN0IG9wdGlvbnMgPSBwYXJhbXMuY29uZmlnIGFzIFBsdWdpbk5hbWVSdWxlT3B0aW9ucztcbiAgICBjb25zdCBwbHVnaW5OYW1lcyA9IGdldFBsdWdpbk5hbWVzKHsgYWRkaXRpb25hbFBsdWdpbk5hbWVzOiBvcHRpb25zLmFkZGl0aW9uYWxQbHVnaW5OYW1lcywgY3dkOiBwcm9jZXNzLmN3ZCgpIH0pO1xuICAgIGNvbnN0IHByb3NlUmFuZ2VzQnlMaW5lID0gbmV3IE1hcDxudW1iZXIsIENvbHVtblJhbmdlW10+KCk7XG4gICAgY29sbGVjdFByb3NlUmFuZ2VzKHBhcmFtcy5wYXJzZXJzLm1pY3JvbWFyay50b2tlbnMsIHByb3NlUmFuZ2VzQnlMaW5lKTtcblxuICAgIGZvciAoY29uc3QgW2luZGV4LCBsaW5lXSBvZiBwYXJhbXMubGluZXMuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBsaW5lTnVtYmVyID0gaW5kZXggKyAxO1xuICAgICAgY29uc3QgcmFuZ2VzID0gcHJvc2VSYW5nZXNCeUxpbmUuZ2V0KGxpbmVOdW1iZXIpO1xuICAgICAgaWYgKCFyYW5nZXMpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1lcmdlZFJhbmdlcyA9IG1lcmdlUmFuZ2VzKHJhbmdlcyk7XG4gICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIGZpbmRQbHVnaW5OYW1lTWF0Y2hlcyhsaW5lLCBwbHVnaW5OYW1lcywgRVhDTFVERURfTElORV9QQVRURVJOUykpIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gbWF0Y2guaW5kZXggKyAxO1xuICAgICAgICBjb25zdCBpc0luUHJvc2UgPSBtZXJnZWRSYW5nZXMuc29tZSgocmFuZ2UpID0+IHJhbmdlLnN0YXJ0IDw9IGNvbHVtbiAmJiBjb2x1bW4gKyBtYXRjaC5uYW1lLmxlbmd0aCA8PSByYW5nZS5lbmQpO1xuICAgICAgICBpZiAoIWlzSW5Qcm9zZSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgb25FcnJvcih7XG4gICAgICAgICAgZGV0YWlsOiBgV3JhcCBcXGAke21hdGNoLm5hbWV9XFxgIGluIGJhY2t0aWNrc2AsXG4gICAgICAgICAgZml4SW5mbzoge1xuICAgICAgICAgICAgZGVsZXRlQ291bnQ6IG1hdGNoLm5hbWUubGVuZ3RoLFxuICAgICAgICAgICAgZWRpdENvbHVtbjogY29sdW1uLFxuICAgICAgICAgICAgaW5zZXJ0VGV4dDogYFxcYCR7bWF0Y2gubmFtZX1cXGBgXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsaW5lTnVtYmVyLFxuICAgICAgICAgIHJhbmdlOiBbY29sdW1uLCBtYXRjaC5uYW1lLmxlbmd0aF1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBuYW1lczogW1BMVUdJTl9OQU1FX0FTX0NPREVfUlVMRV9OQU1FXSxcbiAgcGFyc2VyOiAnbWljcm9tYXJrJyxcbiAgdGFnczogWydjb2RlJ11cbn07XG5cbi8qKlxuICogQ29sbGVjdHMgdGhlIGNvbHVtbiByYW5nZXMgb2YgdGhlIHByb3NlIGBkYXRhYCB0b2tlbnMsIGxpbmUgYnkgbGluZSwgc2tpcHBpbmcgdGhlIGV4Y2x1ZGVkIHN1YnRyZWVzLlxuICpcbiAqIEBwYXJhbSB0b2tlbnMgLSBUaGUgdG9rZW5zIHRvIHdhbGsuXG4gKiBAcGFyYW0gcHJvc2VSYW5nZXNCeUxpbmUgLSBUaGUgcmFuZ2VzIGNvbGxlY3RlZCBzbyBmYXIsIGtleWVkIGJ5IGxpbmUgbnVtYmVyLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0UHJvc2VSYW5nZXModG9rZW5zOiByZWFkb25seSBNaWNyb21hcmtUb2tlbltdLCBwcm9zZVJhbmdlc0J5TGluZTogTWFwPG51bWJlciwgQ29sdW1uUmFuZ2VbXT4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBpZiAoRVhDTFVERURfVE9LRU5fVFlQRVMuaGFzKHRva2VuLnR5cGUpIHx8IHRva2VuLnR5cGUuc3RhcnRzV2l0aChVTkRFRklORURfUkVGRVJFTkNFX1RPS0VOX1RZUEVfUFJFRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdkYXRhJykge1xuICAgICAgY29uc3QgcmFuZ2VzID0gcHJvc2VSYW5nZXNCeUxpbmUuZ2V0KHRva2VuLnN0YXJ0TGluZSkgPz8gW107XG4gICAgICByYW5nZXMucHVzaCh7IGVuZDogdG9rZW4uZW5kQ29sdW1uLCBzdGFydDogdG9rZW4uc3RhcnRDb2x1bW4gfSk7XG4gICAgICBwcm9zZVJhbmdlc0J5TGluZS5zZXQodG9rZW4uc3RhcnRMaW5lLCByYW5nZXMpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29sbGVjdFByb3NlUmFuZ2VzKHRva2VuLmNoaWxkcmVuLCBwcm9zZVJhbmdlc0J5TGluZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZXMgcmFuZ2VzIHRoYXQgdG91Y2ggb3Igb3ZlcmxhcCwgc28gYSBuYW1lIG1pY3JvbWFyayBzcGxpdHMgYWNyb3NzIGFkamFjZW50IGBkYXRhYCB0b2tlbnMgaXMgc3RpbGwgaW5zaWRlIG9uZS5cbiAqXG4gKiBAcGFyYW0gcmFuZ2VzIC0gVGhlIHJhbmdlcyBvZiBvbmUgbGluZS5cbiAqIEByZXR1cm5zIFRoZSBtZXJnZWQgcmFuZ2VzLlxuICovXG5mdW5jdGlvbiBtZXJnZVJhbmdlcyhyYW5nZXM6IHJlYWRvbmx5IENvbHVtblJhbmdlW10pOiBDb2x1bW5SYW5nZVtdIHtcbiAgY29uc3QgbWVyZ2VkOiBDb2x1bW5SYW5nZVtdID0gW107XG4gIGZvciAoY29uc3QgcmFuZ2Ugb2YgWy4uLnJhbmdlc10uc29ydCgoYSwgYikgPT4gYS5zdGFydCAtIGIuc3RhcnQpKSB7XG4gICAgY29uc3QgbGFzdCA9IG1lcmdlZC5hdCgtMSk7XG4gICAgaWYgKGxhc3QgJiYgcmFuZ2Uuc3RhcnQgPD0gbGFzdC5lbmQpIHtcbiAgICAgIG1lcmdlZFttZXJnZWQubGVuZ3RoIC0gMV0gPSB7IGVuZDogTWF0aC5tYXgobGFzdC5lbmQsIHJhbmdlLmVuZCksIHN0YXJ0OiBsYXN0LnN0YXJ0IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZC5wdXNoKHJhbmdlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lcmdlZDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBNEJBLE9BQU8sYUFBYTtBQUlwQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUtBLE1BQU0sZ0NBQWdDO0FBSzdDLE1BQU0sdUJBQXVCLG9CQUFJLElBQUk7QUFBQSxFQUNuQztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLENBQUM7QUFNRCxNQUFNLHdDQUF3QztBQU05QyxNQUFNLHlCQUE0QztBQUFBLEVBQ2hEO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQWFPLE1BQU0sdUJBQTZCO0FBQUEsRUFDeEMsYUFBYTtBQUFBLEVBQ2IsVUFBVSxDQUFDLFFBQVEsWUFBWTtBQUU3QixVQUFNLFVBQVUs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
@@ -1,4 +1,4 @@
1
- /// <reference path="../index.d.mts" />
1
+ /// <reference path="../library-references.d.mts" />
2
2
  /**
3
3
  * @file
4
4
  *