@mnaoumov/obsidian-dev-toolkit 0.0.0 → 1.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 (293) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -1
  3. package/bundlers/esbuild/package.json +6 -0
  4. package/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin/package.json +6 -0
  5. package/bundlers/esbuild-impl/dependency/package.json +6 -0
  6. package/bundlers/esbuild-impl/fix-source-maps-plugin/package.json +6 -0
  7. package/bundlers/esbuild-impl/index/package.json +6 -0
  8. package/bundlers/esbuild-impl/obsidian-plugin-builder/package.json +6 -0
  9. package/bundlers/esbuild-impl/package.json +6 -0
  10. package/bundlers/esbuild-impl/preprocess-plugin/package.json +6 -0
  11. package/bundlers/esbuild-impl/rename-css-plugin/package.json +6 -0
  12. package/bundlers/index/package.json +6 -0
  13. package/bundlers/package.json +6 -0
  14. package/dist/demo-vault-helper/main.js +1264 -0
  15. package/dist/demo-vault-helper/manifest.json +9 -0
  16. package/dist/integration-test-plugin/main.js +54167 -0
  17. package/dist/integration-test-plugin/manifest.json +8 -0
  18. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +322 -0
  19. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +38 -0
  20. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +240 -0
  21. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +20 -0
  22. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +213 -0
  23. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +34 -0
  24. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +179 -0
  25. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +7 -0
  26. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +362 -0
  27. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +98 -0
  28. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +234 -0
  29. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +30 -0
  30. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +171 -0
  31. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +14 -0
  32. package/dist/lib/cjs/bundlers/esbuild.cjs +164 -0
  33. package/dist/lib/cjs/bundlers/esbuild.d.cts +11 -0
  34. package/dist/lib/cjs/bundlers/index.cjs +167 -0
  35. package/dist/lib/cjs/bundlers/index.d.cts +3 -0
  36. package/dist/lib/cjs/demo-vault-app-json.cjs +186 -0
  37. package/dist/lib/cjs/demo-vault-app-json.d.cts +93 -0
  38. package/dist/lib/cjs/demo-vault-buttons.cjs +567 -0
  39. package/dist/lib/cjs/demo-vault-buttons.d.cts +259 -0
  40. package/dist/lib/cjs/demo-vault-coverage.cjs +713 -0
  41. package/dist/lib/cjs/demo-vault-coverage.d.cts +533 -0
  42. package/dist/lib/cjs/demo-vault.cjs +296 -0
  43. package/dist/lib/cjs/demo-vault.d.cts +33 -0
  44. package/dist/lib/cjs/formatters/dprint.cjs +160 -0
  45. package/dist/lib/cjs/formatters/dprint.d.cts +15 -0
  46. package/dist/lib/cjs/formatters/index.cjs +164 -0
  47. package/dist/lib/cjs/formatters/index.d.cts +2 -0
  48. package/dist/lib/cjs/index.cjs +194 -0
  49. package/dist/lib/cjs/index.d.cts +16 -0
  50. package/dist/lib/cjs/integration-test-setup.cjs +129 -0
  51. package/dist/lib/cjs/integration-test-setup.d.cts +33 -0
  52. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +163 -0
  53. package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +39 -0
  54. package/dist/lib/cjs/jest-setup.cjs +134 -0
  55. package/dist/lib/cjs/jest-setup.d.cts +13 -0
  56. package/dist/lib/cjs/linters/eslint-config.cjs +403 -0
  57. package/dist/lib/cjs/linters/eslint-config.d.cts +25 -0
  58. package/dist/lib/cjs/linters/eslint-rules/index.cjs +200 -0
  59. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +14 -0
  60. package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +255 -0
  61. package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +54 -0
  62. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +218 -0
  63. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +141 -0
  64. package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +215 -0
  65. package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +32 -0
  66. package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +216 -0
  67. package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +30 -0
  68. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +316 -0
  69. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +45 -0
  70. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +259 -0
  71. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +10 -0
  72. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +657 -0
  73. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +10 -0
  74. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +247 -0
  75. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +10 -0
  76. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +181 -0
  77. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +13 -0
  78. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +263 -0
  79. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +30 -0
  80. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +215 -0
  81. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +29 -0
  82. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +278 -0
  83. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +18 -0
  84. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +306 -0
  85. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +10 -0
  86. package/dist/lib/cjs/linters/eslint.cjs +160 -0
  87. package/dist/lib/cjs/linters/eslint.d.cts +15 -0
  88. package/dist/lib/cjs/linters/index.cjs +185 -0
  89. package/dist/lib/cjs/linters/index.d.cts +9 -0
  90. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +171 -0
  91. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +12 -0
  92. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +164 -0
  93. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
  94. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +246 -0
  95. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +32 -0
  96. package/dist/lib/cjs/linters/markdownlint.cjs +160 -0
  97. package/dist/lib/cjs/linters/markdownlint.d.cts +15 -0
  98. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +176 -0
  99. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +40 -0
  100. package/dist/lib/cjs/linters/plugin-names.cjs +249 -0
  101. package/dist/lib/cjs/linters/plugin-names.d.cts +81 -0
  102. package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +216 -0
  103. package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +253 -0
  104. package/dist/lib/cjs/setup.cjs +163 -0
  105. package/dist/lib/cjs/setup.d.cts +21 -0
  106. package/dist/lib/cjs/templates.cjs +172 -0
  107. package/dist/lib/cjs/templates.d.cts +13 -0
  108. package/dist/lib/cjs/test-runners/index.cjs +170 -0
  109. package/dist/lib/cjs/test-runners/index.d.cts +4 -0
  110. package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +211 -0
  111. package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +44 -0
  112. package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +157 -0
  113. package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +27 -0
  114. package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +217 -0
  115. package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +86 -0
  116. package/dist/lib/cjs/test-runners/vitest-config.cjs +484 -0
  117. package/dist/lib/cjs/test-runners/vitest-config.d.cts +200 -0
  118. package/dist/lib/cjs/version.cjs +262 -0
  119. package/dist/lib/cjs/version.d.cts +92 -0
  120. package/dist/lib/cjs/vitest-setup.cjs +134 -0
  121. package/dist/lib/cjs/vitest-setup.d.cts +11 -0
  122. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +38 -0
  123. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +218 -0
  124. package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +20 -0
  125. package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +130 -0
  126. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +34 -0
  127. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +108 -0
  128. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +7 -0
  129. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +56 -0
  130. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +98 -0
  131. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +247 -0
  132. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +30 -0
  133. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +126 -0
  134. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +14 -0
  135. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +63 -0
  136. package/dist/lib/esm/bundlers/esbuild.d.mts +11 -0
  137. package/dist/lib/esm/bundlers/esbuild.mjs +58 -0
  138. package/dist/lib/esm/bundlers/index.d.mts +3 -0
  139. package/dist/lib/esm/bundlers/index.mjs +48 -0
  140. package/dist/lib/esm/demo-vault-app-json.d.mts +93 -0
  141. package/dist/lib/esm/demo-vault-app-json.mjs +75 -0
  142. package/dist/lib/esm/demo-vault-buttons.d.mts +259 -0
  143. package/dist/lib/esm/demo-vault-buttons.mjs +452 -0
  144. package/dist/lib/esm/demo-vault-coverage.d.mts +533 -0
  145. package/dist/lib/esm/demo-vault-coverage.mjs +619 -0
  146. package/dist/lib/esm/demo-vault.d.mts +33 -0
  147. package/dist/lib/esm/demo-vault.mjs +197 -0
  148. package/dist/lib/esm/formatters/dprint.d.mts +15 -0
  149. package/dist/lib/esm/formatters/dprint.mjs +52 -0
  150. package/dist/lib/esm/formatters/index.d.mts +2 -0
  151. package/dist/lib/esm/formatters/index.mjs +46 -0
  152. package/dist/lib/esm/index.d.mts +16 -0
  153. package/dist/lib/esm/index.mjs +66 -0
  154. package/dist/lib/esm/integration-test-setup.d.mts +33 -0
  155. package/dist/lib/esm/integration-test-setup.mjs +44 -0
  156. package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +39 -0
  157. package/dist/lib/esm/integration-test-vitest-global-setup.mjs +57 -0
  158. package/dist/lib/esm/jest-setup.d.mts +13 -0
  159. package/dist/lib/esm/jest-setup.mjs +53 -0
  160. package/dist/lib/esm/linters/eslint-config.d.mts +25 -0
  161. package/dist/lib/esm/linters/eslint-config.mjs +290 -0
  162. package/dist/lib/esm/linters/eslint-rules/index.d.mts +14 -0
  163. package/dist/lib/esm/linters/eslint-rules/index.mjs +70 -0
  164. package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +54 -0
  165. package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +146 -0
  166. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +141 -0
  167. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +90 -0
  168. package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +32 -0
  169. package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +109 -0
  170. package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +30 -0
  171. package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +110 -0
  172. package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +45 -0
  173. package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +212 -0
  174. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +10 -0
  175. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +150 -0
  176. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +10 -0
  177. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +551 -0
  178. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +10 -0
  179. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +138 -0
  180. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +13 -0
  181. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +73 -0
  182. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.d.mts +30 -0
  183. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +157 -0
  184. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +29 -0
  185. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +108 -0
  186. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +18 -0
  187. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +167 -0
  188. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +10 -0
  189. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +197 -0
  190. package/dist/lib/esm/linters/eslint.d.mts +15 -0
  191. package/dist/lib/esm/linters/eslint.mjs +52 -0
  192. package/dist/lib/esm/linters/index.d.mts +9 -0
  193. package/dist/lib/esm/linters/index.mjs +60 -0
  194. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +12 -0
  195. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +66 -0
  196. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
  197. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +46 -0
  198. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +32 -0
  199. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +130 -0
  200. package/dist/lib/esm/linters/markdownlint.d.mts +15 -0
  201. package/dist/lib/esm/linters/markdownlint.mjs +52 -0
  202. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +40 -0
  203. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +67 -0
  204. package/dist/lib/esm/linters/plugin-names.d.mts +81 -0
  205. package/dist/lib/esm/linters/plugin-names.mjs +141 -0
  206. package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +253 -0
  207. package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +108 -0
  208. package/dist/lib/esm/setup.d.mts +21 -0
  209. package/dist/lib/esm/setup.mjs +55 -0
  210. package/dist/lib/esm/templates.d.mts +13 -0
  211. package/dist/lib/esm/templates.mjs +57 -0
  212. package/dist/lib/esm/test-runners/index.d.mts +4 -0
  213. package/dist/lib/esm/test-runners/index.mjs +50 -0
  214. package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +44 -0
  215. package/dist/lib/esm/test-runners/integration-test-plugin.mjs +94 -0
  216. package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +27 -0
  217. package/dist/lib/esm/test-runners/performance-eval-cap.mjs +48 -0
  218. package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +86 -0
  219. package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +115 -0
  220. package/dist/lib/esm/test-runners/vitest-config.d.mts +200 -0
  221. package/dist/lib/esm/test-runners/vitest-config.mjs +369 -0
  222. package/dist/lib/esm/version.d.mts +92 -0
  223. package/dist/lib/esm/version.mjs +160 -0
  224. package/dist/lib/esm/vitest-setup.d.mts +11 -0
  225. package/dist/lib/esm/vitest-setup.mjs +53 -0
  226. package/dist/templates/.markdownlint-cli2.mjs +4 -0
  227. package/dist/templates/.nano-staged.mjs +4 -0
  228. package/dist/templates/commitlint.config.ts +3 -0
  229. package/dist/templates/dprint.json +26 -0
  230. package/dist/templates/eslint.config.mts +3 -0
  231. package/dist/templates/scripts/build/build-clean.ts +4 -0
  232. package/dist/templates/scripts/build/build-compile-svelte.ts +4 -0
  233. package/dist/templates/scripts/build/build-compile-typescript.ts +4 -0
  234. package/dist/templates/scripts/build/build-compile.ts +4 -0
  235. package/dist/templates/scripts/build/build-templates.ts +4 -0
  236. package/dist/templates/scripts/bundlers/esbuild/build.ts +4 -0
  237. package/dist/templates/scripts/bundlers/esbuild/dev.ts +4 -0
  238. package/dist/templates/scripts/commitlint-config.ts +3 -0
  239. package/dist/templates/scripts/eslint-config.ts +10 -0
  240. package/dist/templates/scripts/formatters/dprint/format-check.ts +8 -0
  241. package/dist/templates/scripts/formatters/dprint/format.ts +8 -0
  242. package/dist/templates/scripts/gate/gate.ts +10 -0
  243. package/dist/templates/scripts/linters/cspell/spellcheck.ts +8 -0
  244. package/dist/templates/scripts/linters/eslint/lint-fix.ts +8 -0
  245. package/dist/templates/scripts/linters/eslint/lint.ts +8 -0
  246. package/dist/templates/scripts/linters/markdownlint/lint-md-fix.ts +8 -0
  247. package/dist/templates/scripts/linters/markdownlint/lint-md.ts +8 -0
  248. package/dist/templates/scripts/linters/over-exposure/find-overexposed-fix.ts +25 -0
  249. package/dist/templates/scripts/linters/over-exposure/find-overexposed.ts +15 -0
  250. package/dist/templates/scripts/markdownlint-cli2-config.ts +3 -0
  251. package/dist/templates/scripts/nano-staged-config.ts +3 -0
  252. package/dist/templates/scripts/test-runners/vitest/test-coverage.ts +4 -0
  253. package/dist/templates/scripts/test-runners/vitest/test-watch.ts +4 -0
  254. package/dist/templates/scripts/test-runners/vitest/test.ts +4 -0
  255. package/dist/templates/scripts/version/version.ts +10 -0
  256. package/dist/templates/scripts/vitest-config.ts +3 -0
  257. package/dist/templates/vitest.config.ts +3 -0
  258. package/formatters/dprint/package.json +6 -0
  259. package/formatters/index/package.json +6 -0
  260. package/formatters/package.json +6 -0
  261. package/linters/eslint/package.json +6 -0
  262. package/linters/eslint-config/package.json +6 -0
  263. package/linters/eslint-rules/index/package.json +6 -0
  264. package/linters/eslint-rules/manifest-description/package.json +6 -0
  265. package/linters/eslint-rules/manifest-helpers/package.json +6 -0
  266. package/linters/eslint-rules/manifest-id/package.json +6 -0
  267. package/linters/eslint-rules/manifest-name/package.json +6 -0
  268. package/linters/eslint-rules/manifest-schema/package.json +6 -0
  269. package/linters/eslint-rules/no-local-obsidian-internals/package.json +6 -0
  270. package/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian/package.json +6 -0
  271. package/linters/eslint-rules/no-untrusted-input-events/package.json +6 -0
  272. package/linters/eslint-rules/obsidian-dev-utils-plugin/package.json +6 -0
  273. package/linters/eslint-rules/package.json +6 -0
  274. package/linters/eslint-rules/plugin-name-as-code/package.json +6 -0
  275. package/linters/eslint-rules/plugin-name-as-code-in-ui/package.json +6 -0
  276. package/linters/eslint-rules/require-component-suffix/package.json +6 -0
  277. package/linters/eslint-rules/require-plugin-api-contract-schemas/package.json +6 -0
  278. package/linters/index/package.json +6 -0
  279. package/linters/markdownlint/package.json +6 -0
  280. package/linters/markdownlint-cli2-config/package.json +6 -0
  281. package/linters/markdownlint-rules/index/package.json +6 -0
  282. package/linters/markdownlint-rules/package.json +6 -0
  283. package/linters/markdownlint-rules/plugin-name-as-code/package.json +6 -0
  284. package/linters/obsidianmd-rule-custom-message/package.json +6 -0
  285. package/linters/package.json +6 -0
  286. package/linters/plugin-names/package.json +6 -0
  287. package/package.json +302 -13
  288. package/test-runners/index/package.json +6 -0
  289. package/test-runners/integration-test-plugin/package.json +6 -0
  290. package/test-runners/package.json +6 -0
  291. package/test-runners/performance-eval-cap/package.json +6 -0
  292. package/test-runners/stale-build-global-setup/package.json +6 -0
  293. package/test-runners/vitest-config/package.json +6 -0
@@ -0,0 +1,176 @@
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
+ (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
+ const existingProcess = globalThis.process;
22
+ if (!existingProcess) {
23
+ globalThis.process = browserProcess;
24
+ return;
25
+ }
26
+ if (existingProcess.versions?.node) {
27
+ return;
28
+ }
29
+ const existingProcessRecord = existingProcess;
30
+ for (const [key, value] of Object.entries(browserProcess)) {
31
+ existingProcessRecord[key] ??= value;
32
+ }
33
+ existingProcessRecord["browser"] = true;
34
+ }
35
+
36
+ function keepName($unknown) {
37
+ return $unknown;
38
+ }
39
+
40
+ (function initCjs() {
41
+ const globalThisRecord = globalThis;
42
+ ensureDisposeSymbols();
43
+ globalThisRecord["__name"] ??= keepName;
44
+ globalThisRecord["__extractDefault"] ??= extractDefault;
45
+ ensureBrowserProcess();
46
+ function extractDefault(module) {
47
+ return module && module.__esModule && "default" in module ? module.default : module;
48
+ }
49
+ })();
50
+ })();
51
+ (function patchObsidianRequire() {
52
+ const originalRequire = require;
53
+ if (!originalRequire || originalRequire.__isPatched) {
54
+ return;
55
+ }
56
+
57
+ require = Object.assign(
58
+ (id) => requirePatched(id),
59
+ originalRequire,
60
+ {
61
+ __isPatched: true
62
+ }
63
+ );
64
+
65
+ function extractDefault(module) {
66
+ return module && module.__esModule && 'default' in module ? module.default : module;
67
+ }
68
+
69
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
70
+ '@codemirror/autocomplete',
71
+ '@codemirror/collab',
72
+ '@codemirror/commands',
73
+ '@codemirror/language',
74
+ '@codemirror/lint',
75
+ '@codemirror/search',
76
+ '@codemirror/state',
77
+ '@codemirror/text',
78
+ '@codemirror/view',
79
+ '@lezer/common',
80
+ '@lezer/highlight',
81
+ '@lezer/lr',
82
+ 'obsidian']
83
+ );
84
+
85
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
86
+ '@codemirror/closebrackets',
87
+ '@codemirror/comment',
88
+ '@codemirror/fold',
89
+ '@codemirror/gutter',
90
+ '@codemirror/highlight',
91
+ '@codemirror/history',
92
+ '@codemirror/matchbrackets',
93
+ '@codemirror/panel',
94
+ '@codemirror/rangeset',
95
+ '@codemirror/rectangular-selection',
96
+ '@codemirror/stream-parser',
97
+ '@codemirror/tooltip']
98
+ );
99
+
100
+ function requirePatched(id) {
101
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
102
+ return originalRequire?.(id);
103
+ }
104
+
105
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
106
+ if (globalThis.app.isMobile) {
107
+ if (id === 'process' || id === 'node:process') {
108
+ // eslint-disable-next-line no-console -- Valid usage.
109
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
110
+
111
+ return process;
112
+ }
113
+ } else {
114
+ const module = originalRequire?.(id);
115
+ if (module) {
116
+ return extractDefault(module);
117
+ }
118
+ }
119
+
120
+ // eslint-disable-next-line no-console -- Valid usage.
121
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
122
+ return {};
123
+ }
124
+ })();
125
+
126
+ "use strict";
127
+ var __defProp = Object.defineProperty;
128
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
129
+ var __getOwnPropNames = Object.getOwnPropertyNames;
130
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
131
+ var __export = (target, all) => {
132
+ for (var name in all)
133
+ __defProp(target, name, { get: all[name], enumerable: true });
134
+ };
135
+ var __copyProps = (to, from, except, desc) => {
136
+ if (from && typeof from === "object" || typeof from === "function") {
137
+ for (let key of __getOwnPropNames(from))
138
+ if (!__hasOwnProp.call(to, key) && key !== except)
139
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
140
+ }
141
+ return to;
142
+ };
143
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
144
+ var obsidianmd_rule_custom_message_exports = {};
145
+ __export(obsidianmd_rule_custom_message_exports, {
146
+ RULE_CUSTOM_MESSAGE_RULE_NAME: () => RULE_CUSTOM_MESSAGE_RULE_NAME,
147
+ stripOwnedRuleCustomMessageEntries: () => stripOwnedRuleCustomMessageEntries
148
+ });
149
+ module.exports = __toCommonJS(obsidianmd_rule_custom_message_exports);
150
+ const RULE_CUSTOM_MESSAGE_RULE_NAME = "obsidianmd/rule-custom-message";
151
+ function stripOwnedRuleCustomMessageEntries(params) {
152
+ const { config, ownedRuleNames } = params;
153
+ const ruleEntry = config.rules?.[RULE_CUSTOM_MESSAGE_RULE_NAME];
154
+ if (!Array.isArray(ruleEntry)) {
155
+ return config;
156
+ }
157
+ const [severity, wrappedRules, ...restOptions] = ruleEntry;
158
+ if (typeof wrappedRules !== "object" || wrappedRules === null) {
159
+ return config;
160
+ }
161
+ const keptEntries = Object.entries(wrappedRules).filter(([ruleName]) => !ownedRuleNames.has(ruleName));
162
+ const narrowedRuleEntry = keptEntries.length === 0 ? "off" : [severity, Object.fromEntries(keptEntries), ...restOptions];
163
+ return {
164
+ ...config,
165
+ rules: {
166
+ ...config.rules,
167
+ [RULE_CUSTOM_MESSAGE_RULE_NAME]: narrowedRuleEntry
168
+ }
169
+ };
170
+ }
171
+ // Annotate the CommonJS export names for ESM import in node:
172
+ 0 && (module.exports = {
173
+ RULE_CUSTOM_MESSAGE_RULE_NAME,
174
+ stripOwnedRuleCustomMessageEntries
175
+ });
176
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvb2JzaWRpYW5tZC1ydWxlLWN1c3RvbS1tZXNzYWdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogS2VlcHMgYG9ic2lkaWFubWQvcnVsZS1jdXN0b20tbWVzc2FnZWAgZnJvbSByZS1ydW5uaW5nIGEgYnVpbHRpbiBydWxlIHRoaXMgbGlicmFyeSdzIG93biBjb25maWcgYWxyZWFkeSBzZXRzLlxuICpcbiAqIGBlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWRgJ3MgcmVjb21tZW5kZWQgY29uZmlnIHR1cm5zIGBuby1jb25zb2xlYCBhbmQgYG5vLW5ldy1mdW5jYCBvZmYgYW5kIHJlLXJ1bnMgZWFjaCB0aHJvdWdoXG4gKiBgb2JzaWRpYW5tZC9ydWxlLWN1c3RvbS1tZXNzYWdlYCwgd2hpY2ggZmV0Y2hlcyB0aGUgYnVpbHRpbiBydWxlIGFuZCByZXBvcnRzIGl0cyBmaW5kaW5ncyB1bmRlciBpdHMgT1dOIHJ1bGUgaWQuIFNvXG4gKiB0aGUgc2V2ZXJpdHkgYSBjb25zdW1lciB3cml0ZXMgb24gYG5vLWNvbnNvbGVgIGlzIG5ldmVyIGNvbnN1bHRlZDogYCduby1jb25zb2xlJzogJ29mZidgIGlzIGluZXJ0LCBhbmQgdGhlIGVycm9yXG4gKiB0aGF0IHJlbWFpbnMgbmFtZXMgYSBydWxlIHRoZSBjb25zdW1lciBuZXZlciBjb25maWd1cmVkLiBUaGlzIGxpYnJhcnkgc2V0cyBib3RoIGJ1aWx0aW5zIGl0c2VsZiwgc3RyaWN0ZXIsIHNvIGluXG4gKiBldmVyeSBjb25zdW1lciB0aGUgd3JhcHBlciBhZGRlZCBub3RoaW5nIGJ1dCBhIHNlY29uZCByZXBvcnQgb2YgdGhlIHNhbWUgbGluZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gJ2VzbGludCc7XG5cbi8qKlxuICogVGhlIHJ1bGUgaWQgb2YgdGhlIHdyYXBwZXIgdGhhdCByZS1yZXBvcnRzIGJ1aWx0aW4gcnVsZXMgdW5kZXIgaXRzIG93biBuYW1lLlxuICovXG5leHBvcnQgY29uc3QgUlVMRV9DVVNUT01fTUVTU0FHRV9SVUxFX05BTUUgPSAnb2JzaWRpYW5tZC9ydWxlLWN1c3RvbS1tZXNzYWdlJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc3RyaXBPd25lZFJ1bGVDdXN0b21NZXNzYWdlRW50cmllc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaXBPd25lZFJ1bGVDdXN0b21NZXNzYWdlRW50cmllc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlnIHdob3NlIGBvYnNpZGlhbm1kL3J1bGUtY3VzdG9tLW1lc3NhZ2VgIGVudHJ5IGlzIG5hcnJvd2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnOiBMaW50ZXIuQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbHRpbiBydWxlIG5hbWVzIHRoaXMgbGlicmFyeSdzIG93biBjb25maWcgc2V0cywgd2hpY2ggdGhlIHdyYXBwZXIgbXVzdCBubyBsb25nZXIgcmUtcnVuLlxuICAgKi9cbiAgcmVhZG9ubHkgb3duZWRSdWxlTmFtZXM6IFJlYWRvbmx5U2V0PHN0cmluZz47XG59XG5cbi8qKlxuICogUmVtb3ZlcyBmcm9tIGEgY29uZmlnJ3MgYG9ic2lkaWFubWQvcnVsZS1jdXN0b20tbWVzc2FnZWAgb3B0aW9ucyBldmVyeSB3cmFwcGVkIHJ1bGUgbmFtZWQgaW4gYG93bmVkUnVsZU5hbWVzYC5cbiAqXG4gKiBBbiBlbnRyeSBmb3IgYSBydWxlIE5PVCBpbiB0aGUgc2V0IGtlZXBzIHJ1bm5pbmcgdGhyb3VnaCB0aGUgd3JhcHBlciwgc28gYW4gZW50cnkgdXBzdHJlYW0gYWRkcyBsYXRlciBpcyBub3RcbiAqIHNpbGVudGx5IGRyb3BwZWQuIFdoZW4gbm90aGluZyBpcyBsZWZ0IHRoZSB3cmFwcGVyIGlzIHR1cm5lZCBgb2ZmYCByYXRoZXIgdGhhbiBydW4gd2l0aCBhbiBlbXB0eSBtYXAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIGNvbmZpZywgdW5jaGFuZ2VkIHdoZW4gaXQgY2FycmllcyBubyBuYXJyb3dhYmxlIHdyYXBwZXIgZW50cnksIG90aGVyd2lzZSBhIG5hcnJvd2VkIGNvcHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcE93bmVkUnVsZUN1c3RvbU1lc3NhZ2VFbnRyaWVzKHBhcmFtczogU3RyaXBPd25lZFJ1bGVDdXN0b21NZXNzYWdlRW50cmllc1BhcmFtcyk6IExpbnRlci5Db25maWcge1xuICBjb25zdCB7IGNvbmZpZywgb3duZWRSdWxlTmFtZXMgfSA9IHBhcmFtcztcbiAgY29uc3QgcnVsZUVudHJ5ID0gY29uZmlnLnJ1bGVzPy5bUlVMRV9DVVNUT01fTUVTU0FHRV9SVUxFX05BTUVdO1xuICBpZiAoIUFycmF5LmlzQXJyYXkocnVsZUVudHJ5KSkge1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBjb25zdCBbc2V2ZXJpdHksIHdyYXBwZWRSdWxlcywgLi4ucmVzdE9wdGlvbnNdID0gcnVsZUVudHJ5IGFzIHVua25vd25bXTtcbiAgaWYgKHR5cGVvZiB3cmFwcGVkUnVsZXMgIT09ICdvYmplY3QnIHx8IHdyYXBwZWRSdWxlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBjb25zdCBrZXB0RW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHdyYXBwZWRSdWxlcykuZmlsdGVyKChbcnVsZU5hbWVdKSA9PiAhb3duZWRSdWxlTmFtZXMuaGFzKHJ1bGVOYW1lKSk7XG4gIGNvbnN0IG5hcnJvd2VkUnVsZUVudHJ5OiBMaW50ZXIuUnVsZUVudHJ5ID0ga2VwdEVudHJpZXMubGVuZ3RoID09PSAwXG4gICAgPyAnb2ZmJ1xuICAgIDogW3NldmVyaXR5IGFzIExpbnRlci5SdWxlU2V2ZXJpdHksIE9iamVjdC5mcm9tRW50cmllcyhrZXB0RW50cmllcyksIC4uLnJlc3RPcHRpb25zXTtcblxuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZyxcbiAgICBydWxlczoge1xuICAgICAgLi4uY29uZmlnLnJ1bGVzLFxuICAgICAgW1JVTEVfQ1VTVE9NX01FU1NBR0VfUlVMRV9OQU1FXTogbmFycm93ZWRSdWxlRW50cnlcbiAgICB9XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCTyxNQUFNLGdDQUFnQztBQTBCdEMsU0FBUyxtQ0FBbUMsUUFBaUU7QUFDbEgsUUFBTSxFQUFFLFFBQVEsZUFBZSxJQUFJO0FBQ25DLFFBQU0sWUFBWSxPQUFPLFFBQVEsNkJBQTZCO0FBQzlELE1BQUksQ0FBQyxNQUFNLFFBQVEsU0FBUyxHQUFHO0FBQzdCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxDQUFDLFVBQVUsY0FBYyxHQUFHLFdBQVcsSUFBSTtBQUNqRCxNQUFJLE9BQU8saUJBQWlCLFlBQVksaUJBQWlCLE1BQU07QUFDN0QsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLGNBQWMsT0FBTyxRQUFRLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLE1BQU0sQ0FBQyxlQUFlLElBQUksUUFBUSxDQUFDO0FBQ3JHLFFBQU0sb0JBQXNDLFlBQVksV0FBVyxJQUMvRCxRQUNBLENBQUMsVUFBaUMsT0FBTyxZQUFZLFdBQVcsR0FBRyxHQUFHLFdBQVc7QUFFckYsU0FBTztBQUFBLElBQ0wsR0FBRztBQUFBLElBQ0gsT0FBTztBQUFBLE1BQ0wsR0FBRyxPQUFPO0FBQUEsTUFDVixDQUFDLDZCQUE2QixHQUFHO0FBQUEsSUFDbkM7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,40 @@
1
+ /// <reference path="../index.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Keeps `obsidianmd/rule-custom-message` from re-running a builtin rule this library's own config already sets.
6
+ *
7
+ * `eslint-plugin-obsidianmd`'s recommended config turns `no-console` and `no-new-func` off and re-runs each through
8
+ * `obsidianmd/rule-custom-message`, which fetches the builtin rule and reports its findings under its OWN rule id. So
9
+ * the severity a consumer writes on `no-console` is never consulted: `'no-console': 'off'` is inert, and the error
10
+ * that remains names a rule the consumer never configured. This library sets both builtins itself, stricter, so in
11
+ * every consumer the wrapper added nothing but a second report of the same line.
12
+ */
13
+ import type { Linter } from 'eslint' with { 'resolution-mode': 'import' };
14
+ /**
15
+ * The rule id of the wrapper that re-reports builtin rules under its own name.
16
+ */
17
+ export declare const RULE_CUSTOM_MESSAGE_RULE_NAME = "obsidianmd/rule-custom-message";
18
+ /**
19
+ * Parameters for {@link stripOwnedRuleCustomMessageEntries}.
20
+ */
21
+ export interface StripOwnedRuleCustomMessageEntriesParams {
22
+ /**
23
+ * The config whose `obsidianmd/rule-custom-message` entry is narrowed.
24
+ */
25
+ readonly config: Linter.Config;
26
+ /**
27
+ * The builtin rule names this library's own config sets, which the wrapper must no longer re-run.
28
+ */
29
+ readonly ownedRuleNames: ReadonlySet<string>;
30
+ }
31
+ /**
32
+ * Removes from a config's `obsidianmd/rule-custom-message` options every wrapped rule named in `ownedRuleNames`.
33
+ *
34
+ * An entry for a rule NOT in the set keeps running through the wrapper, so an entry upstream adds later is not
35
+ * silently dropped. When nothing is left the wrapper is turned `off` rather than run with an empty map.
36
+ *
37
+ * @param params - The parameters.
38
+ * @returns The config, unchanged when it carries no narrowable wrapper entry, otherwise a narrowed copy.
39
+ */
40
+ export declare function stripOwnedRuleCustomMessageEntries(params: StripOwnedRuleCustomMessageEntriesParams): Linter.Config;
@@ -0,0 +1,249 @@
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
+ (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
+ const existingProcess = globalThis.process;
22
+ if (!existingProcess) {
23
+ globalThis.process = browserProcess;
24
+ return;
25
+ }
26
+ if (existingProcess.versions?.node) {
27
+ return;
28
+ }
29
+ const existingProcessRecord = existingProcess;
30
+ for (const [key, value] of Object.entries(browserProcess)) {
31
+ existingProcessRecord[key] ??= value;
32
+ }
33
+ existingProcessRecord["browser"] = true;
34
+ }
35
+
36
+ function keepName($unknown) {
37
+ return $unknown;
38
+ }
39
+
40
+ (function initCjs() {
41
+ const globalThisRecord = globalThis;
42
+ ensureDisposeSymbols();
43
+ globalThisRecord["__name"] ??= keepName;
44
+ globalThisRecord["__extractDefault"] ??= extractDefault;
45
+ ensureBrowserProcess();
46
+ function extractDefault(module) {
47
+ return module && module.__esModule && "default" in module ? module.default : module;
48
+ }
49
+ })();
50
+ })();
51
+ (function patchObsidianRequire() {
52
+ const originalRequire = require;
53
+ if (!originalRequire || originalRequire.__isPatched) {
54
+ return;
55
+ }
56
+
57
+ require = Object.assign(
58
+ (id) => requirePatched(id),
59
+ originalRequire,
60
+ {
61
+ __isPatched: true
62
+ }
63
+ );
64
+
65
+ function extractDefault(module) {
66
+ return module && module.__esModule && 'default' in module ? module.default : module;
67
+ }
68
+
69
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
70
+ '@codemirror/autocomplete',
71
+ '@codemirror/collab',
72
+ '@codemirror/commands',
73
+ '@codemirror/language',
74
+ '@codemirror/lint',
75
+ '@codemirror/search',
76
+ '@codemirror/state',
77
+ '@codemirror/text',
78
+ '@codemirror/view',
79
+ '@lezer/common',
80
+ '@lezer/highlight',
81
+ '@lezer/lr',
82
+ 'obsidian']
83
+ );
84
+
85
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
86
+ '@codemirror/closebrackets',
87
+ '@codemirror/comment',
88
+ '@codemirror/fold',
89
+ '@codemirror/gutter',
90
+ '@codemirror/highlight',
91
+ '@codemirror/history',
92
+ '@codemirror/matchbrackets',
93
+ '@codemirror/panel',
94
+ '@codemirror/rangeset',
95
+ '@codemirror/rectangular-selection',
96
+ '@codemirror/stream-parser',
97
+ '@codemirror/tooltip']
98
+ );
99
+
100
+ function requirePatched(id) {
101
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
102
+ return originalRequire?.(id);
103
+ }
104
+
105
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
106
+ if (globalThis.app.isMobile) {
107
+ if (id === 'process' || id === 'node:process') {
108
+ // eslint-disable-next-line no-console -- Valid usage.
109
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
110
+
111
+ return process;
112
+ }
113
+ } else {
114
+ const module = originalRequire?.(id);
115
+ if (module) {
116
+ return extractDefault(module);
117
+ }
118
+ }
119
+
120
+ // eslint-disable-next-line no-console -- Valid usage.
121
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
122
+ return {};
123
+ }
124
+ })();
125
+
126
+ "use strict";
127
+ var __defProp = Object.defineProperty;
128
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
129
+ var __getOwnPropNames = Object.getOwnPropertyNames;
130
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
131
+ var __export = (target, all) => {
132
+ for (var name in all)
133
+ __defProp(target, name, { get: all[name], enumerable: true });
134
+ };
135
+ var __copyProps = (to, from, except, desc) => {
136
+ if (from && typeof from === "object" || typeof from === "function") {
137
+ for (let key of __getOwnPropNames(from))
138
+ if (!__hasOwnProp.call(to, key) && key !== except)
139
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
140
+ }
141
+ return to;
142
+ };
143
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
144
+ var plugin_names_exports = {};
145
+ __export(plugin_names_exports, {
146
+ MNAOUMOV_PLUGIN_NAMES: () => MNAOUMOV_PLUGIN_NAMES,
147
+ THIRD_PARTY_PLUGIN_NAMES: () => THIRD_PARTY_PLUGIN_NAMES,
148
+ findPluginNameMatches: () => findPluginNameMatches,
149
+ getPluginNames: () => getPluginNames
150
+ });
151
+ module.exports = __toCommonJS(plugin_names_exports);
152
+ var import_node_fs = require('node:fs');
153
+ var import_node_path = require('node:path');
154
+ const MNAOUMOV_PLUGIN_NAMES = [
155
+ "Advanced Debug Mode",
156
+ "Advanced Exclude",
157
+ "Advanced Markdown Export",
158
+ "Advanced Metadata Cache",
159
+ "Advanced Note Composer",
160
+ "Advanced Rename and Delete Handler",
161
+ "Alias Quick Switcher",
162
+ "App Update Notifier",
163
+ "Backlink Cache",
164
+ "Backlink Full Path",
165
+ "Better Markdown Links",
166
+ "CodeScript Toolkit",
167
+ "Consistent Attachments and Links",
168
+ "Custom Attachment Location",
169
+ "Edit Link Alias",
170
+ "Email to Vault",
171
+ "Embed HTML",
172
+ "External Rename Handler",
173
+ "File Bundles",
174
+ "File Explorer Reload",
175
+ "Fix Tab Size",
176
+ "Frontmatter Markdown Links",
177
+ "Insert Multiple Attachments",
178
+ "Link Picker",
179
+ "More Events",
180
+ "Nested Properties",
181
+ "New Note Fixer",
182
+ "Preserve Frontmatter Formatting",
183
+ "Refresh Any View",
184
+ "Root Folder Context Menu",
185
+ "Sample Plugin Extended",
186
+ "Smart Rename"
187
+ ];
188
+ const THIRD_PARTY_PLUGIN_NAMES = [
189
+ "Advanced Tables",
190
+ "Advanced URI",
191
+ "Dataview",
192
+ "Excalidraw",
193
+ "Folder Notes",
194
+ "Hover Editor",
195
+ "Kanban",
196
+ "Make.md",
197
+ "Natural Language Dates",
198
+ "Obsidian Git",
199
+ "Omnisearch",
200
+ "Periodic Notes",
201
+ "QuickAdd",
202
+ "Smart Connections",
203
+ "Style Settings",
204
+ "Templater",
205
+ "Text Generator"
206
+ ];
207
+ const LEADING_BOUNDARY = String.raw`(?<![\w\`./\\-])`;
208
+ const TRAILING_BOUNDARY = String.raw`(?![\w\`-]|[./\\]\w)`;
209
+ function findPluginNameMatches(text, pluginNames, excludedPatterns = []) {
210
+ if (pluginNames.length === 0) {
211
+ return [];
212
+ }
213
+ const excludedRanges = excludedPatterns.flatMap((pattern) => Array.from(text.matchAll(pattern), (match) => [match.index, match.index + match[0].length]));
214
+ const alternatives = [...pluginNames].sort((a, b) => b.length - a.length).map((name) => escapeRegExp(name)).join("|");
215
+ const nameRegExp = new RegExp(`${LEADING_BOUNDARY}(?:${alternatives})${TRAILING_BOUNDARY}`, "g");
216
+ return Array.from(text.matchAll(nameRegExp), (match) => ({ index: match.index, name: match[0] })).filter((match) => excludedRanges.every(([start, end]) => match.index >= end || match.index + match.name.length <= start));
217
+ }
218
+ function getPluginNames(params) {
219
+ const names = /* @__PURE__ */ new Set([...MNAOUMOV_PLUGIN_NAMES, ...THIRD_PARTY_PLUGIN_NAMES, ...params.additionalPluginNames ?? []]);
220
+ const ownName = readManifestName(params.cwd);
221
+ if (ownName) {
222
+ names.add(ownName);
223
+ }
224
+ return [...names];
225
+ }
226
+ function escapeRegExp(text) {
227
+ return text.replaceAll(/[$()*+.?[\\\]^{|}]/g, String.raw`\$&`);
228
+ }
229
+ function readManifestName(cwd) {
230
+ const manifestPath = (0, import_node_path.join)(cwd, "manifest.json");
231
+ if (!(0, import_node_fs.existsSync)(manifestPath)) {
232
+ return null;
233
+ }
234
+ try {
235
+ const manifest = JSON.parse((0, import_node_fs.readFileSync)(manifestPath, "utf-8"));
236
+ const name = manifest?.["name"];
237
+ return typeof name === "string" && name !== "" ? name : null;
238
+ } catch {
239
+ return null;
240
+ }
241
+ }
242
+ // Annotate the CommonJS export names for ESM import in node:
243
+ 0 && (module.exports = {
244
+ MNAOUMOV_PLUGIN_NAMES,
245
+ THIRD_PARTY_PLUGIN_NAMES,
246
+ findPluginNameMatches,
247
+ getPluginNames
248
+ });
249
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvcGx1Z2luLW5hbWVzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIHBsdWdpbiBuYW1lcyB0aGUgcGx1Z2luLW5hbWUgbGludCBydWxlcyBsb29rIGZvciwgYW5kIHRoZSBtYXRjaGVyIHRoZXkgc2hhcmUuXG4gKlxuICogV2hlbmV2ZXIgdGV4dCBtZW50aW9ucyBhbiBPYnNpZGlhbiBwbHVnaW4gYnkgbmFtZSwgdGhlIG5hbWUgaXMgbWFya2VkIGFzIGNvZGU6IGJhY2t0aWNrcyBpbiBtYXJrZG93biBhbmQgaW4gY29kZVxuICogY29tbWVudHMsIGEgYDxjb2RlPmAgZWxlbWVudCBpbiBVSS4gVGhlIEVTTGludCBydWxlcyBgcGx1Z2luLW5hbWUtYXMtY29kZWAgLyBgcGx1Z2luLW5hbWUtYXMtY29kZS1pbi11aWAgYW5kIHRoZVxuICogbWFya2Rvd25saW50IHJ1bGUgYHBsdWdpbi1uYW1lLWFzLWNvZGVgIGFsbCByZWFkIHRoZSBvbmUgbGlzdCBoZXJlLCBzbyBhIG5hbWUgYWRkZWQgdG8gaXQgaXMgY2hlY2tlZCBldmVyeXdoZXJlIGF0XG4gKiBvbmNlLlxuICpcbiAqIFRoZSBsaXN0IGlzIHRoZSBkaXNwbGF5IG5hbWUgKGBtYW5pZmVzdC5qc29uYCBgbmFtZWApIG9mIGV2ZXJ5IGBtbmFvdW1vdi9vYnNpZGlhbi0qYCBwbHVnaW4sIHBsdXMgdGhlIHRoaXJkLXBhcnR5XG4gKiBwbHVnaW5zIHRob3NlIHJlcG9zaXRvcmllcyBtZW50aW9uLiBBIGZldyB0aGlyZC1wYXJ0eSBuYW1lcyAoYExpbnRlcmAsIGBQcm9qZWN0c2AsIGBDb3BpbG90YCkgYXJlIGxlZnQgb3V0IG9uXG4gKiBwdXJwb3NlOiB0aGV5IGFyZSBvcmRpbmFyeSB3b3Jkcywgc28gbWF0Y2hpbmcgdGhlbSBiYXJlIHJlcG9ydHMgcHJvc2UgcmF0aGVyIHRoYW4gcGx1Z2luIG5hbWVzLiBBIHByb2plY3QgYWRkcyBpdHNcbiAqIG93biBgbWFuaWZlc3QuanNvbmAgYG5hbWVgIGF1dG9tYXRpY2FsbHksIGFuZCBjYW4gZXh0ZW5kIHRoZSBsaXN0IHRocm91Z2ggZWFjaCBydWxlJ3MgYGFkZGl0aW9uYWxQbHVnaW5OYW1lc2BcbiAqIG9wdGlvbi5cbiAqL1xuXG5pbXBvcnQge1xuICBleGlzdHNTeW5jLFxuICByZWFkRmlsZVN5bmNcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcblxuLyoqXG4gKiBUaGUgZGlzcGxheSBuYW1lcyBvZiB0aGUgYG1uYW91bW92L29ic2lkaWFuLSpgIHBsdWdpbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBNTkFPVU1PVl9QTFVHSU5fTkFNRVM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW1xuICAnQWR2YW5jZWQgRGVidWcgTW9kZScsXG4gICdBZHZhbmNlZCBFeGNsdWRlJyxcbiAgJ0FkdmFuY2VkIE1hcmtkb3duIEV4cG9ydCcsXG4gICdBZHZhbmNlZCBNZXRhZGF0YSBDYWNoZScsXG4gICdBZHZhbmNlZCBOb3RlIENvbXBvc2VyJyxcbiAgJ0FkdmFuY2VkIFJlbmFtZSBhbmQgRGVsZXRlIEhhbmRsZXInLFxuICAnQWxpYXMgUXVpY2sgU3dpdGNoZXInLFxuICAnQXBwIFVwZGF0ZSBOb3RpZmllcicsXG4gICdCYWNrbGluayBDYWNoZScsXG4gICdCYWNrbGluayBGdWxsIFBhdGgnLFxuICAnQmV0dGVyIE1hcmtkb3duIExpbmtzJyxcbiAgJ0NvZGVTY3JpcHQgVG9vbGtpdCcsXG4gICdDb25zaXN0ZW50IEF0dGFjaG1lbnRzIGFuZCBMaW5rcycsXG4gICdDdXN0b20gQXR0YWNobWVudCBMb2NhdGlvbicsXG4gICdFZGl0IExpbmsgQWxpYXMnLFxuICAnRW1haWwgdG8gVmF1bHQnLFxuICAnRW1iZWQgSFRNTCcsXG4gICdFeHRlcm5hbCBSZW5hbWUgSGFuZGxlcicsXG4gICdGaWxlIEJ1bmRsZXMnLFxuICAnRmlsZSBFeHBsb3JlciBSZWxvYWQnLFxuICAnRml4IFRhYiBTaXplJyxcbiAgJ0Zyb250bWF0dGVyIE1hcmtkb3duIExpbmtzJyxcbiAgJ0luc2VydCBNdWx0aXBsZSBBdHRhY2htZW50cycsXG4gICdMaW5rIFBpY2tlcicsXG4gICdNb3JlIEV2ZW50cycsXG4gICdOZXN0ZWQgUHJvcGVydGllcycsXG4gICdOZXcgTm90ZSBGaXhlcicsXG4gICdQcmVzZXJ2ZSBGcm9udG1hdHRlciBGb3JtYXR0aW5nJyxcbiAgJ1JlZnJlc2ggQW55IFZpZXcnLFxuICAnUm9vdCBGb2xkZXIgQ29udGV4dCBNZW51JyxcbiAgJ1NhbXBsZSBQbHVnaW4gRXh0ZW5kZWQnLFxuICAnU21hcnQgUmVuYW1lJ1xuXTtcblxuLyoqXG4gKiBUaGUgZGlzcGxheSBuYW1lcyBvZiB0aGUgdGhpcmQtcGFydHkgcGx1Z2lucyB0aGUgYG1uYW91bW92L29ic2lkaWFuLSpgIHJlcG9zaXRvcmllcyBtZW50aW9uLlxuICovXG5leHBvcnQgY29uc3QgVEhJUkRfUEFSVFlfUExVR0lOX05BTUVTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ0FkdmFuY2VkIFRhYmxlcycsXG4gICdBZHZhbmNlZCBVUkknLFxuICAnRGF0YXZpZXcnLFxuICAnRXhjYWxpZHJhdycsXG4gICdGb2xkZXIgTm90ZXMnLFxuICAnSG92ZXIgRWRpdG9yJyxcbiAgJ0thbmJhbicsXG4gICdNYWtlLm1kJyxcbiAgJ05hdHVyYWwgTGFuZ3VhZ2UgRGF0ZXMnLFxuICAnT2JzaWRpYW4gR2l0JyxcbiAgJ09tbmlzZWFyY2gnLFxuICAnUGVyaW9kaWMgTm90ZXMnLFxuICAnUXVpY2tBZGQnLFxuICAnU21hcnQgQ29ubmVjdGlvbnMnLFxuICAnU3R5bGUgU2V0dGluZ3MnLFxuICAnVGVtcGxhdGVyJyxcbiAgJ1RleHQgR2VuZXJhdG9yJ1xuXTtcblxuLyoqXG4gKiBQYXJhbXMgZm9yIHtAbGluayBnZXRQbHVnaW5OYW1lc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UGx1Z2luTmFtZXNQYXJhbXMge1xuICAvKipcbiAgICogTmFtZXMgdG8gY2hlY2sgb24gdG9wIG9mIHRoZSBzaGFyZWQgbGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxQbHVnaW5OYW1lcz86IHJlYWRvbmx5IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvamVjdCByb290LCB3aG9zZSBgbWFuaWZlc3QuanNvbmAgYG5hbWVgIGlzIGFkZGVkIHRvIHRoZSBsaXN0IHdoZW4gaXQgaGFzIG9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGN3ZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcGx1Z2luIG5hbWUgZm91bmQgaW4gYSB0ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk5hbWVNYXRjaCB7XG4gIC8qKlxuICAgKiBUaGUgb2Zmc2V0IG9mIHRoZSBuYW1lIGluIHRoZSB0ZXh0LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZXg6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm91bmQuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBvZiBhIHJ1bGUgdGhhdCBjaGVja3MgcGx1Z2luIG5hbWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk5hbWVSdWxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lcyB0byBjaGVjayBvbiB0b3Agb2YgdGhlIHNoYXJlZCBsaXN0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbFBsdWdpbk5hbWVzPzogcmVhZG9ubHkgc3RyaW5nW107XG59XG5cbi8qKlxuICogQ2hhcmFjdGVycyB0aGF0LCByaWdodCBiZWZvcmUgYSBuYW1lLCBtYWtlIGl0IHBhcnQgb2YgYSBsb25nZXIgdG9rZW46IGEgd29yZCwgYSBjb2RlIHNwYW4sIGEga2ViYWItY2FzZVxuICogaWRlbnRpZmllciwgYSBwYXRoIG9yIGEgbWVtYmVyIGFjY2Vzcy5cbiAqL1xuY29uc3QgTEVBRElOR19CT1VOREFSWSA9IFN0cmluZy5yYXdgKD88IVtcXHdcXGAuL1xcXFwtXSlgO1xuXG4vKipcbiAqIENoYXJhY3RlcnMgdGhhdCwgcmlnaHQgYWZ0ZXIgYSBuYW1lLCBtYWtlIGl0IHBhcnQgb2YgYSBsb25nZXIgdG9rZW4uIEEgYC5gIG9yIGAvYCBpcyBhIGJvdW5kYXJ5IG9ubHkgd2hlbiBhIHdvcmRcbiAqIGZvbGxvd3MgaXQsIHNvIGEgbmFtZSBlbmRpbmcgYSBzZW50ZW5jZSBzdGlsbCBtYXRjaGVzLlxuICovXG5jb25zdCBUUkFJTElOR19CT1VOREFSWSA9IFN0cmluZy5yYXdgKD8hW1xcd1xcYC1dfFsuL1xcXFxdXFx3KWA7XG5cbi8qKlxuICogRmluZHMgZXZlcnkgd2hvbGUtd29yZCBvY2N1cnJlbmNlIG9mIGEgcGx1Z2luIG5hbWUgaW4gYSB0ZXh0LCBza2lwcGluZyB0aG9zZSBpbnNpZGUgYSByYW5nZSBhbiBleGNsdWRlZCBwYXR0ZXJuXG4gKiBtYXRjaGVzLlxuICpcbiAqIE1hdGNoaW5nIGlzIGNhc2Utc2Vuc2l0aXZlLCBzbyB0aGUgbG93ZXJjYXNlIGBkYXRhdmlld2Agb2YgYW4gaWRlbnRpZmllciBvciBhIHBhY2thZ2UgbmFtZSBpcyBub3QgYSBwbHVnaW4gbmFtZS4gQVxuICogbG9uZ2VyIG5hbWUgd2lucyBvdmVyIGEgc2hvcnRlciBvbmUgaXQgY29udGFpbnMuXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgdGV4dCB0byBzZWFyY2guXG4gKiBAcGFyYW0gcGx1Z2luTmFtZXMgLSBUaGUgbmFtZXMgdG8gbG9vayBmb3IuXG4gKiBAcGFyYW0gZXhjbHVkZWRQYXR0ZXJucyAtIEdsb2JhbCBwYXR0ZXJucyB3aG9zZSBtYXRjaGVzIGhpZGUgdGhlIG5hbWVzIGluc2lkZSB0aGVtOiBhIGNvZGUgc3BhbiwgYSBsaW5rLCBhIFVSTC5cbiAqIEByZXR1cm5zIFRoZSBuYW1lcyBmb3VuZCwgaW4gdGV4dCBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQbHVnaW5OYW1lTWF0Y2hlcyh0ZXh0OiBzdHJpbmcsIHBsdWdpbk5hbWVzOiByZWFkb25seSBzdHJpbmdbXSwgZXhjbHVkZWRQYXR0ZXJuczogcmVhZG9ubHkgUmVnRXhwW10gPSBbXSk6IFBsdWdpbk5hbWVNYXRjaFtdIHtcbiAgaWYgKHBsdWdpbk5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IGV4Y2x1ZGVkUmFuZ2VzID0gZXhjbHVkZWRQYXR0ZXJucy5mbGF0TWFwKChwYXR0ZXJuKSA9PiBBcnJheS5mcm9tKHRleHQubWF0Y2hBbGwocGF0dGVybiksIChtYXRjaCkgPT4gW21hdGNoLmluZGV4LCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aF0gYXMgY29uc3QpKTtcbiAgY29uc3QgYWx0ZXJuYXRpdmVzID0gWy4uLnBsdWdpbk5hbWVzXS5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKS5tYXAoKG5hbWUpID0+IGVzY2FwZVJlZ0V4cChuYW1lKSkuam9pbignfCcpO1xuICBjb25zdCBuYW1lUmVnRXhwID0gbmV3IFJlZ0V4cChgJHtMRUFESU5HX0JPVU5EQVJZfSg/OiR7YWx0ZXJuYXRpdmVzfSkke1RSQUlMSU5HX0JPVU5EQVJZfWAsICdnJyk7XG5cbiAgcmV0dXJuIEFycmF5LmZyb20odGV4dC5tYXRjaEFsbChuYW1lUmVnRXhwKSwgKG1hdGNoKSA9PiAoeyBpbmRleDogbWF0Y2guaW5kZXgsIG5hbWU6IG1hdGNoWzBdIH0pKVxuICAgIC5maWx0ZXIoKG1hdGNoKSA9PiBleGNsdWRlZFJhbmdlcy5ldmVyeSgoW3N0YXJ0LCBlbmRdKSA9PiBtYXRjaC5pbmRleCA+PSBlbmQgfHwgbWF0Y2guaW5kZXggKyBtYXRjaC5uYW1lLmxlbmd0aCA8PSBzdGFydCkpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgbGlzdCBvZiBwbHVnaW4gbmFtZXMgYSBwcm9qZWN0IGNoZWNrczogdGhlIHNoYXJlZCBsaXN0LCB0aGUgcHJvamVjdCdzIG93biBgbWFuaWZlc3QuanNvbmAgYG5hbWVgLCBhbmRcbiAqIGFueSBuYW1lcyB0aGUgcHJvamVjdCBhZGRzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIEdldFBsdWdpbk5hbWVzUGFyYW1zfS5cbiAqIEByZXR1cm5zIFRoZSBuYW1lcywgd2l0aG91dCBkdXBsaWNhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGx1Z2luTmFtZXMocGFyYW1zOiBHZXRQbHVnaW5OYW1lc1BhcmFtcyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgbmFtZXMgPSBuZXcgU2V0KFsuLi5NTkFPVU1PVl9QTFVHSU5fTkFNRVMsIC4uLlRISVJEX1BBUlRZX1BMVUdJTl9OQU1FUywgLi4ucGFyYW1zLmFkZGl0aW9uYWxQbHVnaW5OYW1lcyA/PyBbXV0pO1xuICBjb25zdCBvd25OYW1lID0gcmVhZE1hbmlmZXN0TmFtZShwYXJhbXMuY3dkKTtcbiAgaWYgKG93bk5hbWUpIHtcbiAgICBuYW1lcy5hZGQob3duTmFtZSk7XG4gIH1cbiAgcmV0dXJuIFsuLi5uYW1lc107XG59XG5cbi8qKlxuICogRXNjYXBlcyBhIHN0cmluZyBmb3IgdXNlIGFzIGEgbGl0ZXJhbCBpbnNpZGUgYSByZWd1bGFyIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHRleHQgLSBUaGUgdGV4dCB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCB0ZXh0LlxuICovXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAodGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZUFsbCgvWyQoKSorLj9bXFxcXFxcXV57fH1dL2csIFN0cmluZy5yYXdgXFwkJmApO1xufVxuXG4vKipcbiAqIFJlYWRzIHRoZSBgbmFtZWAgb2YgdGhlIHByb2plY3QncyBgbWFuaWZlc3QuanNvbmAuXG4gKlxuICogQHBhcmFtIGN3ZCAtIFRoZSBwcm9qZWN0IHJvb3QuXG4gKiBAcmV0dXJucyBUaGUgbmFtZSwgb3IgYG51bGxgIHdoZW4gdGhlcmUgaXMgbm8gbWFuaWZlc3QsIGl0IGRvZXMgbm90IHBhcnNlLCBvciBpdHMgYG5hbWVgIGlzIG5vdCBhIG5vbi1lbXB0eSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHJlYWRNYW5pZmVzdE5hbWUoY3dkOiBzdHJpbmcpOiBudWxsIHwgc3RyaW5nIHtcbiAgY29uc3QgbWFuaWZlc3RQYXRoID0gam9pbihjd2QsICdtYW5pZmVzdC5qc29uJyk7XG4gIGlmICghZXhpc3RzU3luYyhtYW5pZmVzdFBhdGgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IG1hbmlmZXN0OiB1bmtub3duID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMobWFuaWZlc3RQYXRoLCAndXRmLTgnKSk7XG4gICAgY29uc3QgbmFtZSA9IChtYW5pZmVzdCBhcyBudWxsIHwgUGFydGlhbDxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pPy5bJ25hbWUnXTtcbiAgICByZXR1cm4gdHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnICYmIG5hbWUgIT09ICcnID8gbmFtZSA6IG51bGw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkEscUJBR087QUFDUCx1QkFBcUI7QUFLZCxNQUFNLHdCQUEyQztBQUFBLEVBQ3REO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBS08sTUFBTSwyQkFBOEM7QUFBQSxFQUN6RDtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjtBQThDQSxNQUFNLG1CQUFtQixPQUFPO0FBTWhDLE1BQU0sb0JBQW9CLE9BQU87QUFjMUIsU0FBUyxzQkFBc0IsTUFBYyxhQUFnQyxtQkFBc0MsQ0FBQyxHQUFzQjtBQUMvSSxNQUFJLFlBQVksV0FBVyxHQUFHO0FBQzVCLFdBQU8sQ0FBQztBQUFBLEVBQ1Y7QUFFQSxRQUFNLGlCQUFpQixpQkFBaUIsUUFBUSxDQUFDLFlBQVksTUFBTSxLQUFLLEtBQUssU0FBUyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxPQUFPLE1BQU0sUUFBUSxNQUFNLENBQUMsRUFBRSxNQUFNLENBQVUsQ0FBQztBQUNqSyxRQUFNLGVBQWUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxhQUFhLElBQUksQ0FBQyxFQUFFLEtBQUssR0FBRztBQUNwSCxRQUFNLGFBQWEsSUFBSSxPQUFPLEdBQUcsZ0JBQWdCLE1BQU0sWUFBWSxJQUFJLGlCQUFpQixJQUFJLEdBQUc7QUFFL0YsU0FBTyxNQUFNLEtBQUssS0FBSyxTQUFTLFVBQVUsR0FBRyxDQUFDLFdBQVcsRUFBRSxPQUFPLE1BQU0sT0FBTyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFDN0YsT0FBTyxDQUFDLFVBQVUsZUFBZSxNQUFNLENBQUMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxNQUFNLFNBQVMsT0FBTyxNQUFNLFFBQVEsTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDO0FBQzdIO0FBU08sU0FBUyxlQUFlLFFBQXdDO0FBQ3JFLFFBQU0sUUFBUSxvQkFBSSxJQUFJLENBQUMsR0FBRyx1QkFBdUIsR0FBRywwQkFBMEIsR0FBRyxPQUFPLHlCQUF5QixDQUFDLENBQUMsQ0FBQztBQUNwSCxRQUFNLFVBQVUsaUJBQWlCLE9BQU8sR0FBRztBQUMzQyxNQUFJLFNBQVM7QUFDWCxVQUFNLElBQUksT0FBTztBQUFBLEVBQ25CO0FBQ0EsU0FBTyxDQUFDLEdBQUcsS0FBSztBQUNsQjtBQVFBLFNBQVMsYUFBYSxNQUFzQjtBQUMxQyxTQUFPLEtBQUssV0FBVyx1QkFBdUIsT0FBTyxRQUFRO0FBQy9EO0FBUUEsU0FBUyxpQkFBaUIsS0FBNEI7QUFDcEQsUUFBTSxtQkFBZSx1QkFBSyxLQUFLLGVBQWU7QUFDOUMsTUFBSSxLQUFDLDJCQUFXLFlBQVksR0FBRztBQUM3QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUk7QUFDRixVQUFNLFdBQW9CLEtBQUssVUFBTSw2QkFBYSxjQUFjLE9BQU8sQ0FBQztBQUN4RSxVQUFNLE9BQVEsV0FBdUQsTUFBTTtBQUMzRSxXQUFPLE9BQU8sU0FBUyxZQUFZLFNBQVMsS0FBSyxPQUFPO0FBQUEsRUFDMUQsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,81 @@
1
+ /// <reference path="../index.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * The plugin names the plugin-name lint rules look for, and the matcher they share.
6
+ *
7
+ * Whenever text mentions an Obsidian plugin by name, the name is marked as code: backticks in markdown and in code
8
+ * comments, a `<code>` element in UI. The ESLint rules `plugin-name-as-code` / `plugin-name-as-code-in-ui` and the
9
+ * markdownlint rule `plugin-name-as-code` all read the one list here, so a name added to it is checked everywhere at
10
+ * once.
11
+ *
12
+ * The list is the display name (`manifest.json` `name`) of every `mnaoumov/obsidian-*` plugin, plus the third-party
13
+ * plugins those repositories mention. A few third-party names (`Linter`, `Projects`, `Copilot`) are left out on
14
+ * purpose: they are ordinary words, so matching them bare reports prose rather than plugin names. A project adds its
15
+ * own `manifest.json` `name` automatically, and can extend the list through each rule's `additionalPluginNames`
16
+ * option.
17
+ */
18
+ /**
19
+ * The display names of the `mnaoumov/obsidian-*` plugins.
20
+ */
21
+ export declare const MNAOUMOV_PLUGIN_NAMES: readonly string[];
22
+ /**
23
+ * The display names of the third-party plugins the `mnaoumov/obsidian-*` repositories mention.
24
+ */
25
+ export declare const THIRD_PARTY_PLUGIN_NAMES: readonly string[];
26
+ /**
27
+ * Params for {@link getPluginNames}.
28
+ */
29
+ export interface GetPluginNamesParams {
30
+ /**
31
+ * Names to check on top of the shared list.
32
+ */
33
+ readonly additionalPluginNames?: readonly string[] | undefined;
34
+ /**
35
+ * The project root, whose `manifest.json` `name` is added to the list when it has one.
36
+ */
37
+ readonly cwd: string;
38
+ }
39
+ /**
40
+ * A plugin name found in a text.
41
+ */
42
+ export interface PluginNameMatch {
43
+ /**
44
+ * The offset of the name in the text.
45
+ */
46
+ readonly index: number;
47
+ /**
48
+ * The name found.
49
+ */
50
+ readonly name: string;
51
+ }
52
+ /**
53
+ * Options of a rule that checks plugin names.
54
+ */
55
+ export interface PluginNameRuleOptions {
56
+ /**
57
+ * Names to check on top of the shared list.
58
+ */
59
+ readonly additionalPluginNames?: readonly string[];
60
+ }
61
+ /**
62
+ * Finds every whole-word occurrence of a plugin name in a text, skipping those inside a range an excluded pattern
63
+ * matches.
64
+ *
65
+ * Matching is case-sensitive, so the lowercase `dataview` of an identifier or a package name is not a plugin name. A
66
+ * longer name wins over a shorter one it contains.
67
+ *
68
+ * @param text - The text to search.
69
+ * @param pluginNames - The names to look for.
70
+ * @param excludedPatterns - Global patterns whose matches hide the names inside them: a code span, a link, a URL.
71
+ * @returns The names found, in text order.
72
+ */
73
+ export declare function findPluginNameMatches(text: string, pluginNames: readonly string[], excludedPatterns?: readonly RegExp[]): PluginNameMatch[];
74
+ /**
75
+ * Builds the list of plugin names a project checks: the shared list, the project's own `manifest.json` `name`, and
76
+ * any names the project adds.
77
+ *
78
+ * @param params - The {@link GetPluginNamesParams}.
79
+ * @returns The names, without duplicates.
80
+ */
81
+ export declare function getPluginNames(params: GetPluginNamesParams): string[];