@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,200 @@
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 __create = Object.create;
128
+ var __defProp = Object.defineProperty;
129
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
130
+ var __getOwnPropNames = Object.getOwnPropertyNames;
131
+ var __getProtoOf = Object.getPrototypeOf;
132
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
133
+ var __export = (target, all) => {
134
+ for (var name in all)
135
+ __defProp(target, name, { get: all[name], enumerable: true });
136
+ };
137
+ var __copyProps = (to, from, except, desc) => {
138
+ if (from && typeof from === "object" || typeof from === "function") {
139
+ for (let key of __getOwnPropNames(from))
140
+ if (!__hasOwnProp.call(to, key) && key !== except)
141
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
142
+ }
143
+ return to;
144
+ };
145
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
146
+ // If the importer is in node compatibility mode or this is not an ESM
147
+ // file that has been converted to a CommonJS file using a Babel-
148
+ // compatible transform (i.e. "__esModule" has not been set), then set
149
+ // "default" to the CommonJS "module.exports" for node compatibility.
150
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
151
+ mod
152
+ ));
153
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
154
+ var eslint_rules_exports = {};
155
+ __export(eslint_rules_exports, {
156
+ "manifest-description": () => manifest_description,
157
+ "manifest-helpers": () => manifest_helpers,
158
+ "manifest-id": () => manifest_id,
159
+ "manifest-name": () => manifest_name,
160
+ "manifest-schema": () => manifest_schema,
161
+ "no-local-obsidian-internals": () => no_local_obsidian_internals,
162
+ "no-over-cap-wait-in-eval-in-obsidian": () => no_over_cap_wait_in_eval_in_obsidian,
163
+ "no-untrusted-input-events": () => no_untrusted_input_events,
164
+ "obsidian-dev-utils-plugin": () => obsidian_dev_utils_plugin,
165
+ "plugin-name-as-code": () => plugin_name_as_code,
166
+ "plugin-name-as-code-in-ui": () => plugin_name_as_code_in_ui,
167
+ "require-component-suffix": () => require_component_suffix,
168
+ "require-plugin-api-contract-schemas": () => require_plugin_api_contract_schemas
169
+ });
170
+ module.exports = __toCommonJS(eslint_rules_exports);
171
+ var manifest_description = __toESM(__extractDefault(require('./manifest-description.cjs')), 1);
172
+ var manifest_helpers = __toESM(__extractDefault(require('./manifest-helpers.cjs')), 1);
173
+ var manifest_id = __toESM(__extractDefault(require('./manifest-id.cjs')), 1);
174
+ var manifest_name = __toESM(__extractDefault(require('./manifest-name.cjs')), 1);
175
+ var manifest_schema = __toESM(__extractDefault(require('./manifest-schema.cjs')), 1);
176
+ var no_local_obsidian_internals = __toESM(__extractDefault(require('./no-local-obsidian-internals.cjs')), 1);
177
+ var no_over_cap_wait_in_eval_in_obsidian = __toESM(__extractDefault(require('./no-over-cap-wait-in-eval-in-obsidian.cjs')), 1);
178
+ var no_untrusted_input_events = __toESM(__extractDefault(require('./no-untrusted-input-events.cjs')), 1);
179
+ var obsidian_dev_utils_plugin = __toESM(__extractDefault(require('./obsidian-dev-utils-plugin.cjs')), 1);
180
+ var plugin_name_as_code_in_ui = __toESM(__extractDefault(require('./plugin-name-as-code-in-ui.cjs')), 1);
181
+ var plugin_name_as_code = __toESM(__extractDefault(require('./plugin-name-as-code.cjs')), 1);
182
+ var require_component_suffix = __toESM(__extractDefault(require('./require-component-suffix.cjs')), 1);
183
+ var require_plugin_api_contract_schemas = __toESM(__extractDefault(require('./require-plugin-api-contract-schemas.cjs')), 1);
184
+ // Annotate the CommonJS export names for ESM import in node:
185
+ 0 && (module.exports = {
186
+ "manifest-description": null,
187
+ "manifest-helpers": null,
188
+ "manifest-id": null,
189
+ "manifest-name": null,
190
+ "manifest-schema": null,
191
+ "no-local-obsidian-internals": null,
192
+ "no-over-cap-wait-in-eval-in-obsidian": null,
193
+ "no-untrusted-input-events": null,
194
+ "obsidian-dev-utils-plugin": null,
195
+ "plugin-name-as-code": null,
196
+ "plugin-name-as-code-in-ui": null,
197
+ "require-component-suffix": null,
198
+ "require-plugin-api-contract-schemas": null
199
+ });
200
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ21hbmlmZXN0LWRlc2NyaXB0aW9uJyBmcm9tICcuL21hbmlmZXN0LWRlc2NyaXB0aW9uLnRzJztcbmV4cG9ydCAqIGFzICdtYW5pZmVzdC1oZWxwZXJzJyBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuZXhwb3J0ICogYXMgJ21hbmlmZXN0LWlkJyBmcm9tICcuL21hbmlmZXN0LWlkLnRzJztcbmV4cG9ydCAqIGFzICdtYW5pZmVzdC1uYW1lJyBmcm9tICcuL21hbmlmZXN0LW5hbWUudHMnO1xuZXhwb3J0ICogYXMgJ21hbmlmZXN0LXNjaGVtYScgZnJvbSAnLi9tYW5pZmVzdC1zY2hlbWEudHMnO1xuZXhwb3J0ICogYXMgJ25vLWxvY2FsLW9ic2lkaWFuLWludGVybmFscycgZnJvbSAnLi9uby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHMudHMnO1xuZXhwb3J0ICogYXMgJ25vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbicgZnJvbSAnLi9uby1vdmVyLWNhcC13YWl0LWluLWV2YWwtaW4tb2JzaWRpYW4udHMnO1xuZXhwb3J0ICogYXMgJ25vLXVudHJ1c3RlZC1pbnB1dC1ldmVudHMnIGZyb20gJy4vbm8tdW50cnVzdGVkLWlucHV0LWV2ZW50cy50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tZGV2LXV0aWxzLXBsdWdpbicgZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbmFtZS1hcy1jb2RlLWluLXVpJyBmcm9tICcuL3BsdWdpbi1uYW1lLWFzLWNvZGUtaW4tdWkudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1uYW1lLWFzLWNvZGUnIGZyb20gJy4vcGx1Z2luLW5hbWUtYXMtY29kZS50cyc7XG5leHBvcnQgKiBhcyAncmVxdWlyZS1jb21wb25lbnQtc3VmZml4JyBmcm9tICcuL3JlcXVpcmUtY29tcG9uZW50LXN1ZmZpeC50cyc7XG5leHBvcnQgKiBhcyAncmVxdWlyZS1wbHVnaW4tYXBpLWNvbnRyYWN0LXNjaGVtYXMnIGZyb20gJy4vcmVxdWlyZS1wbHVnaW4tYXBpLWNvbnRyYWN0LXNjaGVtYXMudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBLGdDQUFBQTtBQUFBLEVBQUEsMEJBQUFDO0FBQUEsRUFBQSxxQkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBLEVBQUEseUJBQUFDO0FBQUEsRUFBQSxxQ0FBQUM7QUFBQSxFQUFBLDhDQUFBQztBQUFBLEVBQUEsbUNBQUFDO0FBQUEsRUFBQSxtQ0FBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEsbUNBQUFDO0FBQUEsRUFBQSxrQ0FBQUM7QUFBQSxFQUFBLDZDQUFBQztBQUFBO0FBQUE7QUFFQSxJQUFBWix1QkFBd0M7QUFDeEMsSUFBQUMsbUJBQW9DO0FBQ3BDLElBQUFDLGNBQStCO0FBQy9CLElBQUFDLGdCQUFpQztBQUNqQyxJQUFBQyxrQkFBbUM7QUFDbkMsSUFBQUMsOEJBQStDO0FBQy9DLElBQUFDLHVDQUF3RDtBQUN4RCxJQUFBQyw0QkFBNkM7QUFDN0MsSUFBQUMsNEJBQTZDO0FBQzdDLElBQUFFLDRCQUE2QztBQUM3QyxJQUFBRCxzQkFBdUM7QUFDdkMsSUFBQUUsMkJBQTRDO0FBQzVDLElBQUFDLHNDQUF1RDsiLAogICJuYW1lcyI6IFsibWFuaWZlc3QtZGVzY3JpcHRpb24iLCAibWFuaWZlc3QtaGVscGVycyIsICJtYW5pZmVzdC1pZCIsICJtYW5pZmVzdC1uYW1lIiwgIm1hbmlmZXN0LXNjaGVtYSIsICJuby1sb2NhbC1vYnNpZGlhbi1pbnRlcm5hbHMiLCAibm8tb3Zlci1jYXAtd2FpdC1pbi1ldmFsLWluLW9ic2lkaWFuIiwgIm5vLXVudHJ1c3RlZC1pbnB1dC1ldmVudHMiLCAib2JzaWRpYW4tZGV2LXV0aWxzLXBsdWdpbiIsICJwbHVnaW4tbmFtZS1hcy1jb2RlIiwgInBsdWdpbi1uYW1lLWFzLWNvZGUtaW4tdWkiLCAicmVxdWlyZS1jb21wb25lbnQtc3VmZml4IiwgInJlcXVpcmUtcGx1Z2luLWFwaS1jb250cmFjdC1zY2hlbWFzIl0KfQo=
@@ -0,0 +1,14 @@
1
+ /// <reference path="../../index.d.cts" />
2
+ export * as 'manifest-description' from './manifest-description.cjs';
3
+ export * as 'manifest-helpers' from './manifest-helpers.cjs';
4
+ export * as 'manifest-id' from './manifest-id.cjs';
5
+ export * as 'manifest-name' from './manifest-name.cjs';
6
+ export * as 'manifest-schema' from './manifest-schema.cjs';
7
+ export * as 'no-local-obsidian-internals' from './no-local-obsidian-internals.cjs';
8
+ export * as 'no-over-cap-wait-in-eval-in-obsidian' from './no-over-cap-wait-in-eval-in-obsidian.cjs';
9
+ export * as 'no-untrusted-input-events' from './no-untrusted-input-events.cjs';
10
+ export * as 'obsidian-dev-utils-plugin' from './obsidian-dev-utils-plugin.cjs';
11
+ export * as 'plugin-name-as-code-in-ui' from './plugin-name-as-code-in-ui.cjs';
12
+ export * as 'plugin-name-as-code' from './plugin-name-as-code.cjs';
13
+ export * as 'require-component-suffix' from './require-component-suffix.cjs';
14
+ export * as 'require-plugin-api-contract-schemas' from './require-plugin-api-contract-schemas.cjs';
@@ -0,0 +1,255 @@
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 manifest_description_exports = {};
145
+ __export(manifest_description_exports, {
146
+ MESSAGE_ID_CONTAINS_OBSIDIAN: () => MESSAGE_ID_CONTAINS_OBSIDIAN,
147
+ MESSAGE_ID_MISSING_PERIOD: () => MESSAGE_ID_MISSING_PERIOD,
148
+ MESSAGE_ID_NOT_CAPITALIZED: () => MESSAGE_ID_NOT_CAPITALIZED,
149
+ MESSAGE_ID_SELF_REFERENCE: () => MESSAGE_ID_SELF_REFERENCE,
150
+ MESSAGE_ID_TOO_LONG: () => MESSAGE_ID_TOO_LONG,
151
+ MESSAGE_ID_TOO_SHORT: () => MESSAGE_ID_TOO_SHORT,
152
+ manifestDescription: () => manifestDescription
153
+ });
154
+ module.exports = __toCommonJS(manifest_description_exports);
155
+ var import_manifest_helpers = require('./manifest-helpers.cjs');
156
+ const MESSAGE_ID_CONTAINS_OBSIDIAN = "descriptionContainsObsidian";
157
+ const MESSAGE_ID_MISSING_PERIOD = "descriptionMissingPeriod";
158
+ const MESSAGE_ID_NOT_CAPITALIZED = "descriptionNotCapitalized";
159
+ const MESSAGE_ID_SELF_REFERENCE = "descriptionSelfReference";
160
+ const MESSAGE_ID_TOO_LONG = "descriptionTooLong";
161
+ const MESSAGE_ID_TOO_SHORT = "descriptionTooShort";
162
+ const MAX_DESCRIPTION_LENGTH = 250;
163
+ const MIN_DESCRIPTION_LENGTH = 10;
164
+ const OBSIDIAN_WORD = /\bobsidian\b/i;
165
+ const SELF_REFERENCE_PATTERNS = [
166
+ /\bthis plugin\b/i,
167
+ /\bthis is a plugin\b/i,
168
+ /\ba plugin (?:that|which)\b/i,
169
+ /^the plugin\b/i,
170
+ /^plugin\b/i
171
+ ];
172
+ const manifestDescription = {
173
+ create(context) {
174
+ return {
175
+ Document(node) {
176
+ const manifestObject = (0, import_manifest_helpers.getManifestObject)(node);
177
+ if (!manifestObject) {
178
+ return;
179
+ }
180
+ const member = (0, import_manifest_helpers.findManifestMember)(manifestObject, "description");
181
+ if (!member) {
182
+ return;
183
+ }
184
+ const description = (0, import_manifest_helpers.getStringValue)(member.value);
185
+ if (description === null) {
186
+ return;
187
+ }
188
+ const reportNode = (0, import_manifest_helpers.toReportNode)(member.value);
189
+ if (OBSIDIAN_WORD.test(description)) {
190
+ context.report({
191
+ messageId: MESSAGE_ID_CONTAINS_OBSIDIAN,
192
+ node: reportNode
193
+ });
194
+ }
195
+ if (SELF_REFERENCE_PATTERNS.some((pattern) => pattern.test(description))) {
196
+ context.report({
197
+ messageId: MESSAGE_ID_SELF_REFERENCE,
198
+ node: reportNode
199
+ });
200
+ }
201
+ if (description.length < MIN_DESCRIPTION_LENGTH) {
202
+ context.report({
203
+ messageId: MESSAGE_ID_TOO_SHORT,
204
+ node: reportNode
205
+ });
206
+ }
207
+ if (description.length > MAX_DESCRIPTION_LENGTH) {
208
+ context.report({
209
+ data: { maxLength: MAX_DESCRIPTION_LENGTH.toString() },
210
+ messageId: MESSAGE_ID_TOO_LONG,
211
+ node: reportNode
212
+ });
213
+ }
214
+ if (!/^[A-Z]/.test(description)) {
215
+ context.report({
216
+ messageId: MESSAGE_ID_NOT_CAPITALIZED,
217
+ node: reportNode
218
+ });
219
+ }
220
+ if (!description.endsWith(".")) {
221
+ context.report({
222
+ messageId: MESSAGE_ID_MISSING_PERIOD,
223
+ node: reportNode
224
+ });
225
+ }
226
+ }
227
+ };
228
+ },
229
+ meta: {
230
+ docs: {
231
+ description: "Enforce the Community directory's constraints on a plugin's `manifest.json` `description`"
232
+ },
233
+ messages: {
234
+ [MESSAGE_ID_CONTAINS_OBSIDIAN]: "The `description` must not contain the word `Obsidian`. It is implied by the context of the plugin directory.",
235
+ [MESSAGE_ID_MISSING_PERIOD]: "The `description` must end with a period.",
236
+ [MESSAGE_ID_NOT_CAPITALIZED]: "The `description` must start with a capital letter.",
237
+ [MESSAGE_ID_SELF_REFERENCE]: "The `description` must not refer to itself, e.g. `this plugin` or `a plugin that`. Describe what it does instead.",
238
+ [MESSAGE_ID_TOO_LONG]: "The `description` must be at most {{ maxLength }} characters.",
239
+ [MESSAGE_ID_TOO_SHORT]: "The `description` is too short to say what the plugin does."
240
+ },
241
+ schema: [],
242
+ type: "problem"
243
+ }
244
+ };
245
+ // Annotate the CommonJS export names for ESM import in node:
246
+ 0 && (module.exports = {
247
+ MESSAGE_ID_CONTAINS_OBSIDIAN,
248
+ MESSAGE_ID_MISSING_PERIOD,
249
+ MESSAGE_ID_NOT_CAPITALIZED,
250
+ MESSAGE_ID_SELF_REFERENCE,
251
+ MESSAGE_ID_TOO_LONG,
252
+ MESSAGE_ID_TOO_SHORT,
253
+ manifestDescription
254
+ });
255
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL21hbmlmZXN0LWRlc2NyaXB0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IG1hbmlmZXN0LWRlc2NyaXB0aW9uXG4gKlxuICogRW5mb3JjZXMgdGhlIENvbW11bml0eSBkaXJlY3RvcnkncyBjb25zdHJhaW50cyBvbiBhIHBsdWdpbidzIGBtYW5pZmVzdC5qc29uYCBgZGVzY3JpcHRpb25gLlxuICpcbiAqIFR3byBvZiB0aGVzZSBjaGVja3MgZGVsaWJlcmF0ZWx5IGRpdmVyZ2UgZnJvbSBgb2JzaWRpYW5tZC92YWxpZGF0ZS1tYW5pZmVzdGA6XG4gKlxuICogLSAqKlNlbGYtcmVmZXJlbmNlLCBub3QgdGhlIHdvcmQgYHBsdWdpbmAuKiogVXBzdHJlYW0ncyBgRk9SQklEREVOX1dPUkRTYCBiYW5zIHRoZSBiYXJlIHN1YnN0cmluZ1xuICogICBgcGx1Z2luYCBpbiB0aGUgZGVzY3JpcHRpb24sIHdoaWNoIHJlamVjdHMgdHdvIGRlc2NyaXB0aW9ucyB0aGUgZGlyZWN0b3J5IGl0c2VsZiBwYXNzZWQgdW50b3VjaGVkIC1cbiAqICAgYEVuaGFuY2VzIE5vdGUgY29tcG9zZXIgY29yZSBwbHVnaW4uYCBhbmQgYC4uLm5vdCBwbHVnaW4gdXBkYXRlcy4uLmAgLSBiZWNhdXNlIGVhY2ggbmFtZXMgc29tZXRoaW5nXG4gKiAgIG90aGVyIHRoYW4gaXRzZWxmLiBUaGUgZGlyZWN0b3J5J3MgYWN0dWFsIG9iamVjdGlvbiBpcyBzZWxmLXJlZmVyZW5jZSwgc28gb25seSBzZWxmLXJlZmVyZW50aWFsXG4gKiAgIHBocmFzZXMgYXJlIG1hdGNoZWQgaGVyZS5cbiAqIC0gKipObyBjaGFyYWN0ZXIgd2hpdGVsaXN0LioqIFVwc3RyZWFtJ3MgZm9ybWF0IGNoZWNrIHJlamVjdHMgYW55dGhpbmcgb3V0c2lkZVxuICogICBgW0EtWmEtejAtOVxccy4sIT8nXCItXWAsIHdoaWNoIGZhaWxzIGJhY2t0aWNrcywgZW0gZGFzaGVzLCBwYXJlbnRoZXNlcywgY29sb25zIGFuZCBzbGFzaGVzLiBTZXZlblxuICogICBsaXZlIGxpc3RpbmdzIGNhcnJ5IHRob3NlIGFuZCB0aGUgZGlyZWN0b3J5IGZsYWdnZWQgbm9uZSwgc28gdGhlIGNoZWNrIGlzIG5vaXNlIHJhdGhlciB0aGFuIGEgZ2F0ZS5cbiAqXG4gKiBUaGUgbm8tYE9ic2lkaWFuYCBjaGVjayBoYXMgdGhlIG9wcG9zaXRlIHByb3ZlbmFuY2U6IHRoZSBkaXJlY3RvcnkgZW5mb3JjZXMgaXQgYW5kIG5vIE9ic2lkaWFuXG4gKiBkb2N1bWVudCBzdGF0ZXMgaXQsIHdoaWNoIGlzIHdoYXQgY29zdCBhIHJlbGVhc2VkIHBsdWdpbiBhIHZlcnNpb24gYnVtcCBmb3Igb25lIHdvcmQuXG4gKlxuICogUnVucyBvbiB0aGUgYEBlc2xpbnQvanNvbmAgYGpzb24vanNvbmAgbGFuZ3VhZ2U7IHNlZSBgbWFuaWZlc3QtaGVscGVycy50c2AgZm9yIHdoeSB0aGUgQVNUIGlzIE1vbW9hXG4gKiByYXRoZXIgdGhhbiBFU1RyZWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHtcbiAgZmluZE1hbmlmZXN0TWVtYmVyLFxuICBnZXRNYW5pZmVzdE9iamVjdCxcbiAgZ2V0U3RyaW5nVmFsdWUsXG4gIHRvUmVwb3J0Tm9kZVxufSBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gY29udGFpbnMgdGhlIHdvcmQgYE9ic2lkaWFuYC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQ09OVEFJTlNfT0JTSURJQU4gPSAnZGVzY3JpcHRpb25Db250YWluc09ic2lkaWFuJztcblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gdGhlIGRlc2NyaXB0aW9uIGRvZXMgbm90IGVuZCB3aXRoIGEgcGVyaW9kLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9NSVNTSU5HX1BFUklPRCA9ICdkZXNjcmlwdGlvbk1pc3NpbmdQZXJpb2QnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gZG9lcyBub3Qgc3RhcnQgd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRUQgPSAnZGVzY3JpcHRpb25Ob3RDYXBpdGFsaXplZCc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBkZXNjcmlwdGlvbiByZWZlcnMgdG8gaXRzZWxmLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9TRUxGX1JFRkVSRU5DRSA9ICdkZXNjcmlwdGlvblNlbGZSZWZlcmVuY2UnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiB0aGUgZGVzY3JpcHRpb24gaXMgbG9uZ2VyIHRoYW4gdGhlIGRpcmVjdG9yeSBhbGxvd3MuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX1RPT19MT05HID0gJ2Rlc2NyaXB0aW9uVG9vTG9uZyc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIHRoZSBkZXNjcmlwdGlvbiBpcyB0b28gc2hvcnQgdG8gZGVzY3JpYmUgYW55dGhpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX1RPT19TSE9SVCA9ICdkZXNjcmlwdGlvblRvb1Nob3J0JztcblxuLyoqXG5UaGUgbG9uZ2VzdCBkZXNjcmlwdGlvbiB0aGUgQ29tbXVuaXR5IGRpcmVjdG9yeSBhY2NlcHRzLlxuICovXG5jb25zdCBNQVhfREVTQ1JJUFRJT05fTEVOR1RIID0gMjUwO1xuXG4vKipcblRoZSBzaG9ydGVzdCBkZXNjcmlwdGlvbiB0aGF0IGNhbiBwbGF1c2libHkgc2F5IHdoYXQgYSBwbHVnaW4gZG9lcy5cbiAqL1xuY29uc3QgTUlOX0RFU0NSSVBUSU9OX0xFTkdUSCA9IDEwO1xuXG4vKipcblRoZSB3b3JkIGBPYnNpZGlhbmAsIHdoaWNoIHRoZSBkaXJlY3RvcnkgcmVqZWN0cyBpbiBhIGRlc2NyaXB0aW9uIGV2ZW4gdGhvdWdoIG5vIE9ic2lkaWFuIGRvY3VtZW50IHNheXMgc28uXG4gKi9cbmNvbnN0IE9CU0lESUFOX1dPUkQgPSAvXFxib2JzaWRpYW5cXGIvaTtcblxuLyoqXG5UaGUgcGhyYXNpbmdzIHRoZSBkaXJlY3RvcnkgY2FsbHMgb3V0IGFzIHNlbGYtcmVmZXJlbmNlLiBBIGJhcmUgYHBsdWdpbmAgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhbW9uZyB0aGVtOlxubmFtaW5nIGFub3RoZXIgcGx1Z2luLCBvciBwbHVnaW5zIGluIGdlbmVyYWwsIGlzIG5vdCByZWZlcnJpbmcgdG8gb25lc2VsZi5cbiAqL1xuY29uc3QgU0VMRl9SRUZFUkVOQ0VfUEFUVEVSTlMgPSBbXG4gIC9cXGJ0aGlzIHBsdWdpblxcYi9pLFxuICAvXFxidGhpcyBpcyBhIHBsdWdpblxcYi9pLFxuICAvXFxiYSBwbHVnaW4gKD86dGhhdHx3aGljaClcXGIvaSxcbiAgL150aGUgcGx1Z2luXFxiL2ksXG4gIC9ecGx1Z2luXFxiL2lcbl07XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgZW5mb3JjaW5nIHRoZSBDb21tdW5pdHkgZGlyZWN0b3J5J3MgY29uc3RyYWludHMgb24gYSBwbHVnaW4ncyBgbWFuaWZlc3QuanNvbmAgYGRlc2NyaXB0aW9uYC5cbiAqL1xuZXhwb3J0IGNvbnN0IG1hbmlmZXN0RGVzY3JpcHRpb246IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgRG9jdW1lbnQobm9kZTogdW5rbm93bik6IHZvaWQge1xuICAgICAgICBjb25zdCBtYW5pZmVzdE9iamVjdCA9IGdldE1hbmlmZXN0T2JqZWN0KG5vZGUpO1xuXG4gICAgICAgIGlmICghbWFuaWZlc3RPYmplY3QpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZW1iZXIgPSBmaW5kTWFuaWZlc3RNZW1iZXIobWFuaWZlc3RPYmplY3QsICdkZXNjcmlwdGlvbicpO1xuXG4gICAgICAgIGlmICghbWVtYmVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBnZXRTdHJpbmdWYWx1ZShtZW1iZXIudmFsdWUpO1xuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbiA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcG9ydE5vZGUgPSB0b1JlcG9ydE5vZGUobWVtYmVyLnZhbHVlKTtcblxuICAgICAgICBpZiAoT0JTSURJQU5fV09SRC50ZXN0KGRlc2NyaXB0aW9uKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9DT05UQUlOU19PQlNJRElBTixcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChTRUxGX1JFRkVSRU5DRV9QQVRURVJOUy5zb21lKChwYXR0ZXJuKSA9PiBwYXR0ZXJuLnRlc3QoZGVzY3JpcHRpb24pKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9TRUxGX1JFRkVSRU5DRSxcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPCBNSU5fREVTQ1JJUFRJT05fTEVOR1RIKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX1RPT19TSE9SVCxcbiAgICAgICAgICAgIG5vZGU6IHJlcG9ydE5vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPiBNQVhfREVTQ1JJUFRJT05fTEVOR1RIKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgZGF0YTogeyBtYXhMZW5ndGg6IE1BWF9ERVNDUklQVElPTl9MRU5HVEgudG9TdHJpbmcoKSB9LFxuICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX1RPT19MT05HLFxuICAgICAgICAgICAgbm9kZTogcmVwb3J0Tm9kZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEvXltBLVpdLy50ZXN0KGRlc2NyaXB0aW9uKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRUQsXG4gICAgICAgICAgICBub2RlOiByZXBvcnROb2RlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRlc2NyaXB0aW9uLmVuZHNXaXRoKCcuJykpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURfTUlTU0lOR19QRVJJT0QsXG4gICAgICAgICAgICBub2RlOiByZXBvcnROb2RlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdFbmZvcmNlIHRoZSBDb21tdW5pdHkgZGlyZWN0b3J5XFwncyBjb25zdHJhaW50cyBvbiBhIHBsdWdpblxcJ3MgYG1hbmlmZXN0Lmpzb25gIGBkZXNjcmlwdGlvbmAnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURfQ09OVEFJTlNfT0JTSURJQU5dOiAnVGhlIGBkZXNjcmlwdGlvbmAgbXVzdCBub3QgY29udGFpbiB0aGUgd29yZCBgT2JzaWRpYW5gLiBJdCBpcyBpbXBsaWVkIGJ5IHRoZSBjb250ZXh0IG9mIHRoZSBwbHVnaW4gZGlyZWN0b3J5LicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1BFUklPRF06ICdUaGUgYGRlc2NyaXB0aW9uYCBtdXN0IGVuZCB3aXRoIGEgcGVyaW9kLicsXG4gICAgICBbTUVTU0FHRV9JRF9OT1RfQ0FQSVRBTElaRURdOiAnVGhlIGBkZXNjcmlwdGlvbmAgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIuJyxcbiAgICAgIFtNRVNTQUdFX0lEX1NFTEZfUkVGRVJFTkNFXTogJ1RoZSBgZGVzY3JpcHRpb25gIG11c3Qgbm90IHJlZmVyIHRvIGl0c2VsZiwgZS5nLiBgdGhpcyBwbHVnaW5gIG9yIGBhIHBsdWdpbiB0aGF0YC4gRGVzY3JpYmUgd2hhdCBpdCBkb2VzIGluc3RlYWQuJyxcbiAgICAgIFtNRVNTQUdFX0lEX1RPT19MT05HXTogJ1RoZSBgZGVzY3JpcHRpb25gIG11c3QgYmUgYXQgbW9zdCB7eyBtYXhMZW5ndGggfX0gY2hhcmFjdGVycy4nLFxuICAgICAgW01FU1NBR0VfSURfVE9PX1NIT1JUXTogJ1RoZSBgZGVzY3JpcHRpb25gIGlzIHRvbyBzaG9ydCB0byBzYXkgd2hhdCB0aGUgcGx1Z2luIGRvZXMuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJCQSw4QkFLTztBQUtBLE1BQU0sK0JBQStCO0FBS3JDLE1BQU0sNEJBQTRCO0FBS2xDLE1BQU0sNkJBQTZCO0FBS25DLE1BQU0sNEJBQTRCO0FBS2xDLE1BQU0sc0JBQXNCO0FBSzVCLE1BQU0sdUJBQXVCO0FBS3BDLE1BQU0seUJBQXlCO0FBSy9CLE1BQU0seUJBQXlCO0FBSy9CLE1BQU0sZ0JBQWdCO0FBTXRCLE1BQU0sMEJBQTBCO0FBQUEsRUFDOUI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0Y7QUFLTyxNQUFNLHNCQUF1QztBQUFBLEVBQ2xELE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNMLFNBQVMsTUFBcUI7QUFDNUIsY0FBTSxxQkFBaUIsMkNBQWtCLElBQUk7QUFFN0MsWUFBSSxDQUFDLGdCQUFnQjtBQUNuQjtBQUFBLFFBQ0Y7QUFFQSxjQUFNLGFBQVMsNENBQW1CLGdCQUFnQixhQUFhO0FBRS9ELFlBQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxRQUNGO0FBRUEsY0FBTSxrQkFBYyx3Q0FBZSxPQUFPLEtBQUs7QUFFL0MsWUFBSSxnQkFBZ0IsTUFBTTtBQUN4QjtBQUFBLFFBQ0Y7QUFFQSxjQUFNLGlCQUFhLHNDQUFhLE9BQU8sS0FBSztBQUU1QyxZQUFJLGNBQWMsS0FBSyxXQUFXLEdBQUc7QUFDbkMsa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLHdCQUF3QixLQUFLLENBQUMsWUFBWSxRQUFRLEtBQUssV0FBVyxDQUFDLEdBQUc7QUFDeEUsa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLFlBQVksU0FBUyx3QkFBd0I7QUFDL0Msa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLFlBQVksU0FBUyx3QkFBd0I7QUFDL0Msa0JBQVEsT0FBTztBQUFBLFlBQ2IsTUFBTSxFQUFFLFdBQVcsdUJBQXVCLFNBQVMsRUFBRTtBQUFBLFlBQ3JELFdBQVc7QUFBQSxZQUNYLE1BQU07QUFBQSxVQUNSLENBQUM7QUFBQSxRQUNIO0FBRUEsWUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLEdBQUc7QUFDL0Isa0JBQVEsT0FBTztBQUFBLFlBQ2IsV0FBVztBQUFBLFlBQ1gsTUFBTTtBQUFBLFVBQ1IsQ0FBQztBQUFBLFFBQ0g7QUFFQSxZQUFJLENBQUMsWUFBWSxTQUFTLEdBQUcsR0FBRztBQUM5QixrQkFBUSxPQUFPO0FBQUEsWUFDYixXQUFXO0FBQUEsWUFDWCxNQUFNO0FBQUEsVUFDUixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0EsTUFBTTtBQUFBLElBQ0osTUFBTTtBQUFBLE1BQ0osYUFBYTtBQUFBLElBQ2Y7QUFBQSxJQUNBLFVBQVU7QUFBQSxNQUNSLENBQUMsNEJBQTRCLEdBQUc7QUFBQSxNQUNoQyxDQUFDLHlCQUF5QixHQUFHO0FBQUEsTUFDN0IsQ0FBQywwQkFBMEIsR0FBRztBQUFBLE1BQzlCLENBQUMseUJBQXlCLEdBQUc7QUFBQSxNQUM3QixDQUFDLG1CQUFtQixHQUFHO0FBQUEsTUFDdkIsQ0FBQyxvQkFBb0IsR0FBRztBQUFBLElBQzFCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,54 @@
1
+ /// <reference path="../../index.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * ESLint rule: manifest-description
6
+ *
7
+ * Enforces the Community directory's constraints on a plugin's `manifest.json` `description`.
8
+ *
9
+ * Two of these checks deliberately diverge from `obsidianmd/validate-manifest`:
10
+ *
11
+ * - **Self-reference, not the word `plugin`.** Upstream's `FORBIDDEN_WORDS` bans the bare substring
12
+ * `plugin` in the description, which rejects two descriptions the directory itself passed untouched -
13
+ * `Enhances Note composer core plugin.` and `...not plugin updates...` - because each names something
14
+ * other than itself. The directory's actual objection is self-reference, so only self-referential
15
+ * phrases are matched here.
16
+ * - **No character whitelist.** Upstream's format check rejects anything outside
17
+ * `[A-Za-z0-9\s.,!?'"-]`, which fails backticks, em dashes, parentheses, colons and slashes. Seven
18
+ * live listings carry those and the directory flagged none, so the check is noise rather than a gate.
19
+ *
20
+ * The no-`Obsidian` check has the opposite provenance: the directory enforces it and no Obsidian
21
+ * document states it, which is what cost a released plugin a version bump for one word.
22
+ *
23
+ * Runs on the `@eslint/json` `json/json` language; see `manifest-helpers.ts` for why the AST is Momoa
24
+ * rather than ESTree.
25
+ */
26
+ import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
27
+ /**
28
+ Message ID reported when the description contains the word `Obsidian`.
29
+ */
30
+ export declare const MESSAGE_ID_CONTAINS_OBSIDIAN = "descriptionContainsObsidian";
31
+ /**
32
+ Message ID reported when the description does not end with a period.
33
+ */
34
+ export declare const MESSAGE_ID_MISSING_PERIOD = "descriptionMissingPeriod";
35
+ /**
36
+ Message ID reported when the description does not start with a capital letter.
37
+ */
38
+ export declare const MESSAGE_ID_NOT_CAPITALIZED = "descriptionNotCapitalized";
39
+ /**
40
+ Message ID reported when the description refers to itself.
41
+ */
42
+ export declare const MESSAGE_ID_SELF_REFERENCE = "descriptionSelfReference";
43
+ /**
44
+ Message ID reported when the description is longer than the directory allows.
45
+ */
46
+ export declare const MESSAGE_ID_TOO_LONG = "descriptionTooLong";
47
+ /**
48
+ Message ID reported when the description is too short to describe anything.
49
+ */
50
+ export declare const MESSAGE_ID_TOO_SHORT = "descriptionTooShort";
51
+ /**
52
+ * ESLint rule enforcing the Community directory's constraints on a plugin's `manifest.json` `description`.
53
+ */
54
+ export declare const manifestDescription: Rule.RuleModule;