@mnaoumov/obsidian-dev-toolkit 0.0.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -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 +782 -0
  15. package/dist/demo-vault-helper/manifest.json +9 -0
  16. package/dist/integration-test-plugin/main.js +45388 -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 +335 -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 +253 -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 +226 -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 +192 -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 +375 -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 +247 -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 +184 -0
  31. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +14 -0
  32. package/dist/lib/cjs/bundlers/esbuild.cjs +177 -0
  33. package/dist/lib/cjs/bundlers/esbuild.d.cts +11 -0
  34. package/dist/lib/cjs/bundlers/index.cjs +180 -0
  35. package/dist/lib/cjs/bundlers/index.d.cts +3 -0
  36. package/dist/lib/cjs/demo-vault-app-json.cjs +199 -0
  37. package/dist/lib/cjs/demo-vault-app-json.d.cts +93 -0
  38. package/dist/lib/cjs/demo-vault-buttons.cjs +580 -0
  39. package/dist/lib/cjs/demo-vault-buttons.d.cts +259 -0
  40. package/dist/lib/cjs/demo-vault-coverage.cjs +725 -0
  41. package/dist/lib/cjs/demo-vault-coverage.d.cts +533 -0
  42. package/dist/lib/cjs/demo-vault.cjs +309 -0
  43. package/dist/lib/cjs/demo-vault.d.cts +33 -0
  44. package/dist/lib/cjs/formatters/dprint.cjs +173 -0
  45. package/dist/lib/cjs/formatters/dprint.d.cts +15 -0
  46. package/dist/lib/cjs/formatters/index.cjs +177 -0
  47. package/dist/lib/cjs/formatters/index.d.cts +2 -0
  48. package/dist/lib/cjs/index.cjs +207 -0
  49. package/dist/lib/cjs/index.d.cts +16 -0
  50. package/dist/lib/cjs/integration-test-setup.cjs +142 -0
  51. package/dist/lib/cjs/integration-test-setup.d.cts +33 -0
  52. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +176 -0
  53. package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +39 -0
  54. package/dist/lib/cjs/jest-setup.cjs +147 -0
  55. package/dist/lib/cjs/jest-setup.d.cts +13 -0
  56. package/dist/lib/cjs/linters/eslint-config.cjs +365 -0
  57. package/dist/lib/cjs/linters/eslint-config.d.cts +25 -0
  58. package/dist/lib/cjs/linters/eslint-rules/index.cjs +201 -0
  59. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +10 -0
  60. package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +268 -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 +231 -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 +228 -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 +229 -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 +329 -0
  69. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +45 -0
  70. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +670 -0
  71. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +10 -0
  72. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +260 -0
  73. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +10 -0
  74. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +186 -0
  75. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +13 -0
  76. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +291 -0
  77. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +18 -0
  78. package/dist/lib/cjs/linters/eslint.cjs +173 -0
  79. package/dist/lib/cjs/linters/eslint.d.cts +15 -0
  80. package/dist/lib/cjs/linters/index.cjs +189 -0
  81. package/dist/lib/cjs/linters/index.d.cts +6 -0
  82. package/dist/lib/cjs/linters/markdownlint.cjs +173 -0
  83. package/dist/lib/cjs/linters/markdownlint.d.cts +15 -0
  84. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +189 -0
  85. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +40 -0
  86. package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +229 -0
  87. package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +253 -0
  88. package/dist/lib/cjs/setup.cjs +176 -0
  89. package/dist/lib/cjs/setup.d.cts +21 -0
  90. package/dist/lib/cjs/templates.cjs +185 -0
  91. package/dist/lib/cjs/templates.d.cts +13 -0
  92. package/dist/lib/cjs/test-runners/index.cjs +183 -0
  93. package/dist/lib/cjs/test-runners/index.d.cts +4 -0
  94. package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +224 -0
  95. package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +44 -0
  96. package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +170 -0
  97. package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +27 -0
  98. package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +230 -0
  99. package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +86 -0
  100. package/dist/lib/cjs/test-runners/vitest-config.cjs +497 -0
  101. package/dist/lib/cjs/test-runners/vitest-config.d.cts +200 -0
  102. package/dist/lib/cjs/version.cjs +275 -0
  103. package/dist/lib/cjs/version.d.cts +92 -0
  104. package/dist/lib/cjs/vitest-setup.cjs +147 -0
  105. package/dist/lib/cjs/vitest-setup.d.cts +11 -0
  106. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +38 -0
  107. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +226 -0
  108. package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +20 -0
  109. package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +138 -0
  110. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +34 -0
  111. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +116 -0
  112. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +7 -0
  113. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +64 -0
  114. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +98 -0
  115. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +255 -0
  116. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +30 -0
  117. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +134 -0
  118. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +14 -0
  119. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +71 -0
  120. package/dist/lib/esm/bundlers/esbuild.d.mts +11 -0
  121. package/dist/lib/esm/bundlers/esbuild.mjs +66 -0
  122. package/dist/lib/esm/bundlers/index.d.mts +3 -0
  123. package/dist/lib/esm/bundlers/index.mjs +56 -0
  124. package/dist/lib/esm/demo-vault-app-json.d.mts +93 -0
  125. package/dist/lib/esm/demo-vault-app-json.mjs +83 -0
  126. package/dist/lib/esm/demo-vault-buttons.d.mts +259 -0
  127. package/dist/lib/esm/demo-vault-buttons.mjs +460 -0
  128. package/dist/lib/esm/demo-vault-coverage.d.mts +533 -0
  129. package/dist/lib/esm/demo-vault-coverage.mjs +626 -0
  130. package/dist/lib/esm/demo-vault.d.mts +33 -0
  131. package/dist/lib/esm/demo-vault.mjs +205 -0
  132. package/dist/lib/esm/formatters/dprint.d.mts +15 -0
  133. package/dist/lib/esm/formatters/dprint.mjs +60 -0
  134. package/dist/lib/esm/formatters/index.d.mts +2 -0
  135. package/dist/lib/esm/formatters/index.mjs +54 -0
  136. package/dist/lib/esm/index.d.mts +16 -0
  137. package/dist/lib/esm/index.mjs +74 -0
  138. package/dist/lib/esm/integration-test-setup.d.mts +33 -0
  139. package/dist/lib/esm/integration-test-setup.mjs +52 -0
  140. package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +39 -0
  141. package/dist/lib/esm/integration-test-vitest-global-setup.mjs +65 -0
  142. package/dist/lib/esm/jest-setup.d.mts +13 -0
  143. package/dist/lib/esm/jest-setup.mjs +61 -0
  144. package/dist/lib/esm/linters/eslint-config.d.mts +25 -0
  145. package/dist/lib/esm/linters/eslint-config.mjs +247 -0
  146. package/dist/lib/esm/linters/eslint-rules/index.d.mts +10 -0
  147. package/dist/lib/esm/linters/eslint-rules/index.mjs +70 -0
  148. package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +54 -0
  149. package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +154 -0
  150. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +141 -0
  151. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +98 -0
  152. package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +32 -0
  153. package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +117 -0
  154. package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +30 -0
  155. package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +118 -0
  156. package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +45 -0
  157. package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +220 -0
  158. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +10 -0
  159. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +559 -0
  160. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +10 -0
  161. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +146 -0
  162. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +13 -0
  163. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +73 -0
  164. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +18 -0
  165. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +175 -0
  166. package/dist/lib/esm/linters/eslint.d.mts +15 -0
  167. package/dist/lib/esm/linters/eslint.mjs +60 -0
  168. package/dist/lib/esm/linters/index.d.mts +6 -0
  169. package/dist/lib/esm/linters/index.mjs +62 -0
  170. package/dist/lib/esm/linters/markdownlint.d.mts +15 -0
  171. package/dist/lib/esm/linters/markdownlint.mjs +60 -0
  172. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +40 -0
  173. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +75 -0
  174. package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +253 -0
  175. package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +116 -0
  176. package/dist/lib/esm/setup.d.mts +21 -0
  177. package/dist/lib/esm/setup.mjs +63 -0
  178. package/dist/lib/esm/templates.d.mts +13 -0
  179. package/dist/lib/esm/templates.mjs +65 -0
  180. package/dist/lib/esm/test-runners/index.d.mts +4 -0
  181. package/dist/lib/esm/test-runners/index.mjs +58 -0
  182. package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +44 -0
  183. package/dist/lib/esm/test-runners/integration-test-plugin.mjs +102 -0
  184. package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +27 -0
  185. package/dist/lib/esm/test-runners/performance-eval-cap.mjs +56 -0
  186. package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +86 -0
  187. package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +123 -0
  188. package/dist/lib/esm/test-runners/vitest-config.d.mts +200 -0
  189. package/dist/lib/esm/test-runners/vitest-config.mjs +377 -0
  190. package/dist/lib/esm/version.d.mts +92 -0
  191. package/dist/lib/esm/version.mjs +168 -0
  192. package/dist/lib/esm/vitest-setup.d.mts +11 -0
  193. package/dist/lib/esm/vitest-setup.mjs +61 -0
  194. package/dist/templates/.markdownlint-cli2.mjs +4 -0
  195. package/dist/templates/.nano-staged.mjs +4 -0
  196. package/dist/templates/commitlint.config.ts +3 -0
  197. package/dist/templates/dprint.json +26 -0
  198. package/dist/templates/eslint.config.mts +3 -0
  199. package/dist/templates/scripts/build/build-clean.ts +4 -0
  200. package/dist/templates/scripts/build/build-compile-svelte.ts +4 -0
  201. package/dist/templates/scripts/build/build-compile-typescript.ts +4 -0
  202. package/dist/templates/scripts/build/build-compile.ts +4 -0
  203. package/dist/templates/scripts/build/build-templates.ts +4 -0
  204. package/dist/templates/scripts/bundlers/esbuild/build.ts +4 -0
  205. package/dist/templates/scripts/bundlers/esbuild/dev.ts +4 -0
  206. package/dist/templates/scripts/commitlint-config.ts +3 -0
  207. package/dist/templates/scripts/eslint-config.ts +10 -0
  208. package/dist/templates/scripts/formatters/dprint/format-check.ts +8 -0
  209. package/dist/templates/scripts/formatters/dprint/format.ts +8 -0
  210. package/dist/templates/scripts/gate/gate.ts +10 -0
  211. package/dist/templates/scripts/linters/cspell/spellcheck.ts +8 -0
  212. package/dist/templates/scripts/linters/eslint/lint-fix.ts +8 -0
  213. package/dist/templates/scripts/linters/eslint/lint.ts +8 -0
  214. package/dist/templates/scripts/linters/markdownlint/lint-md-fix.ts +8 -0
  215. package/dist/templates/scripts/linters/markdownlint/lint-md.ts +8 -0
  216. package/dist/templates/scripts/linters/over-exposure/find-overexposed-fix.ts +25 -0
  217. package/dist/templates/scripts/linters/over-exposure/find-overexposed.ts +15 -0
  218. package/dist/templates/scripts/markdownlint-cli2-config.ts +3 -0
  219. package/dist/templates/scripts/nano-staged-config.ts +3 -0
  220. package/dist/templates/scripts/test-runners/vitest/test-coverage.ts +4 -0
  221. package/dist/templates/scripts/test-runners/vitest/test-watch.ts +4 -0
  222. package/dist/templates/scripts/test-runners/vitest/test.ts +4 -0
  223. package/dist/templates/scripts/version/version.ts +10 -0
  224. package/dist/templates/scripts/vitest-config.ts +3 -0
  225. package/dist/templates/vitest.config.ts +3 -0
  226. package/formatters/dprint/package.json +6 -0
  227. package/formatters/index/package.json +6 -0
  228. package/formatters/package.json +6 -0
  229. package/linters/eslint/package.json +6 -0
  230. package/linters/eslint-config/package.json +6 -0
  231. package/linters/eslint-rules/index/package.json +6 -0
  232. package/linters/eslint-rules/manifest-description/package.json +6 -0
  233. package/linters/eslint-rules/manifest-helpers/package.json +6 -0
  234. package/linters/eslint-rules/manifest-id/package.json +6 -0
  235. package/linters/eslint-rules/manifest-name/package.json +6 -0
  236. package/linters/eslint-rules/manifest-schema/package.json +6 -0
  237. package/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian/package.json +6 -0
  238. package/linters/eslint-rules/no-untrusted-input-events/package.json +6 -0
  239. package/linters/eslint-rules/obsidian-dev-utils-plugin/package.json +6 -0
  240. package/linters/eslint-rules/package.json +6 -0
  241. package/linters/eslint-rules/require-component-suffix/package.json +6 -0
  242. package/linters/index/package.json +6 -0
  243. package/linters/markdownlint/package.json +6 -0
  244. package/linters/obsidianmd-rule-custom-message/package.json +6 -0
  245. package/linters/package.json +6 -0
  246. package/package.json +241 -13
  247. package/test-runners/index/package.json +6 -0
  248. package/test-runners/integration-test-plugin/package.json +6 -0
  249. package/test-runners/package.json +6 -0
  250. package/test-runners/performance-eval-cap/package.json +6 -0
  251. package/test-runners/stale-build-global-setup/package.json +6 -0
  252. package/test-runners/vitest-config/package.json +6 -0
@@ -0,0 +1,291 @@
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
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ function keepName($unknown) {
45
+ return $unknown;
46
+ }
47
+
48
+ (function initCjs() {
49
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
+ const globalThisRecord = globalThis;
51
+ ensureDisposeSymbols();
52
+ globalThisRecord['__name'] ??= keepName;
53
+ globalThisRecord['__extractDefault'] ??= extractDefault;
54
+
55
+ ensureBrowserProcess();
56
+
57
+ // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
+ function extractDefault(module) {
59
+ return module && module.__esModule && 'default' in module ? module.default : module;
60
+ }
61
+ })();
62
+ })();
63
+ (function patchObsidianRequire() {
64
+ const originalRequire = require;
65
+ if (!originalRequire || originalRequire.__isPatched) {
66
+ return;
67
+ }
68
+
69
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
70
+ require = Object.assign(
71
+ (id) => requirePatched(id),
72
+ originalRequire,
73
+ {
74
+ __isPatched: true
75
+ }
76
+ );
77
+
78
+ function extractDefault(module) {
79
+ return module && module.__esModule && 'default' in module ? module.default : module;
80
+ }
81
+
82
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
83
+ '@codemirror/autocomplete',
84
+ '@codemirror/collab',
85
+ '@codemirror/commands',
86
+ '@codemirror/language',
87
+ '@codemirror/lint',
88
+ '@codemirror/search',
89
+ '@codemirror/state',
90
+ '@codemirror/text',
91
+ '@codemirror/view',
92
+ '@lezer/common',
93
+ '@lezer/highlight',
94
+ '@lezer/lr',
95
+ 'obsidian']
96
+ );
97
+
98
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
99
+ '@codemirror/closebrackets',
100
+ '@codemirror/comment',
101
+ '@codemirror/fold',
102
+ '@codemirror/gutter',
103
+ '@codemirror/highlight',
104
+ '@codemirror/history',
105
+ '@codemirror/matchbrackets',
106
+ '@codemirror/panel',
107
+ '@codemirror/rangeset',
108
+ '@codemirror/rectangular-selection',
109
+ '@codemirror/stream-parser',
110
+ '@codemirror/tooltip']
111
+ );
112
+
113
+ function requirePatched(id) {
114
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
115
+ return originalRequire?.(id);
116
+ }
117
+
118
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
119
+ if (globalThis.app.isMobile) {
120
+ if (id === 'process' || id === 'node:process') {
121
+ // eslint-disable-next-line no-console -- Valid usage.
122
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
123
+
124
+ return process;
125
+ }
126
+ } else {
127
+ const module = originalRequire?.(id);
128
+ if (module) {
129
+ return extractDefault(module);
130
+ }
131
+ }
132
+
133
+ // eslint-disable-next-line no-console -- Valid usage.
134
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
135
+ return {};
136
+ }
137
+ })();
138
+
139
+ "use strict";
140
+ var __defProp = Object.defineProperty;
141
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
142
+ var __getOwnPropNames = Object.getOwnPropertyNames;
143
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
144
+ var __export = (target, all) => {
145
+ for (var name in all)
146
+ __defProp(target, name, { get: all[name], enumerable: true });
147
+ };
148
+ var __copyProps = (to, from, except, desc) => {
149
+ if (from && typeof from === "object" || typeof from === "function") {
150
+ for (let key of __getOwnPropNames(from))
151
+ if (!__hasOwnProp.call(to, key) && key !== except)
152
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
153
+ }
154
+ return to;
155
+ };
156
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
157
+ var require_component_suffix_exports = {};
158
+ __export(require_component_suffix_exports, {
159
+ MESSAGE_ID_ABSTRACT_NEEDS_BASE: () => MESSAGE_ID_ABSTRACT_NEEDS_BASE,
160
+ MESSAGE_ID_BASE_NOT_ABSTRACT: () => MESSAGE_ID_BASE_NOT_ABSTRACT,
161
+ MESSAGE_ID_MISSING_SUFFIX: () => MESSAGE_ID_MISSING_SUFFIX,
162
+ requireComponentSuffix: () => requireComponentSuffix
163
+ });
164
+ module.exports = __toCommonJS(require_component_suffix_exports);
165
+ var import_ts_estree_node = require('@mnaoumov/typescript-dev-toolkit/linters/eslint-rules/ts-estree-node');
166
+ const MESSAGE_ID_MISSING_SUFFIX = "requireComponentSuffix";
167
+ const MESSAGE_ID_ABSTRACT_NEEDS_BASE = "abstractNeedsComponentBase";
168
+ const MESSAGE_ID_BASE_NOT_ABSTRACT = "componentBaseNotAbstract";
169
+ const EXCLUDED_ANCESTORS = /* @__PURE__ */ new Set(["HoverPopover", "MarkdownRenderChild", "Menu", "Plugin", "QueryController", "View"]);
170
+ const REQUIRED_ANCESTOR = "Component";
171
+ const requireComponentSuffix = {
172
+ create(context) {
173
+ const services = context.sourceCode.parserServices;
174
+ const checker = services.program.getTypeChecker();
175
+ return {
176
+ "ClassDeclaration[id]"(node) {
177
+ reportClass({
178
+ checker,
179
+ context,
180
+ node,
181
+ services
182
+ });
183
+ },
184
+ "ClassExpression[id]"(node) {
185
+ reportClass({
186
+ checker,
187
+ context,
188
+ node,
189
+ services
190
+ });
191
+ }
192
+ };
193
+ },
194
+ meta: {
195
+ docs: {
196
+ description: "Require classes extending `Component` to have names ending with `Component`"
197
+ },
198
+ messages: {
199
+ [MESSAGE_ID_ABSTRACT_NEEDS_BASE]: "Abstract class `{{ className }}` extends `Component` but its name does not end with `ComponentBase`.",
200
+ [MESSAGE_ID_BASE_NOT_ABSTRACT]: "Class `{{ className }}` ends with `ComponentBase` but is not abstract. Only abstract classes may use the `ComponentBase` suffix.",
201
+ [MESSAGE_ID_MISSING_SUFFIX]: "Class `{{ className }}` extends `Component` but its name does not end with `Component`."
202
+ },
203
+ schema: [],
204
+ type: "problem"
205
+ }
206
+ };
207
+ function collectAncestorNames(type) {
208
+ const names = /* @__PURE__ */ new Set();
209
+ const visited = /* @__PURE__ */ new Set();
210
+ walkAncestors({
211
+ collectedNames: names,
212
+ currentType: type,
213
+ visitedTypes: visited
214
+ });
215
+ return names;
216
+ function walkAncestors(params) {
217
+ const { collectedNames, currentType, visitedTypes } = params;
218
+ if (visitedTypes.has(currentType)) {
219
+ return;
220
+ }
221
+ visitedTypes.add(currentType);
222
+ const baseTypes = currentType.getBaseTypes?.();
223
+ if (!baseTypes) {
224
+ return;
225
+ }
226
+ for (const baseType of baseTypes) {
227
+ const $symbol = baseType.getSymbol();
228
+ if ($symbol) {
229
+ collectedNames.add($symbol.getName());
230
+ }
231
+ walkAncestors({
232
+ collectedNames,
233
+ currentType: baseType,
234
+ visitedTypes
235
+ });
236
+ }
237
+ }
238
+ }
239
+ function reportClass(params) {
240
+ const { checker, context, node, services } = params;
241
+ const classNode = (0, import_ts_estree_node.toTSESTreeNode)(node);
242
+ const classId = classNode.id;
243
+ if (!classId) {
244
+ return;
245
+ }
246
+ const className = classId.name;
247
+ const { abstract: isAbstract } = classNode;
248
+ const hasComponentBaseSuffix = className.endsWith("ComponentBase");
249
+ const hasComponentSuffix = !hasComponentBaseSuffix && className.endsWith("Component");
250
+ if (hasComponentSuffix && !isAbstract || hasComponentBaseSuffix && isAbstract) {
251
+ return;
252
+ }
253
+ const tsNode = services.esTreeNodeToTSNodeMap.get(classNode);
254
+ const classType = checker.getTypeAtLocation(tsNode);
255
+ const ancestors = collectAncestorNames(classType);
256
+ if (!ancestors.has(REQUIRED_ANCESTOR)) {
257
+ return;
258
+ }
259
+ for (const excluded of EXCLUDED_ANCESTORS) {
260
+ if (ancestors.has(excluded)) {
261
+ return;
262
+ }
263
+ }
264
+ if (hasComponentBaseSuffix && !isAbstract) {
265
+ context.report({
266
+ data: { className },
267
+ messageId: MESSAGE_ID_BASE_NOT_ABSTRACT,
268
+ node
269
+ });
270
+ } else if (isAbstract) {
271
+ context.report({
272
+ data: { className },
273
+ messageId: MESSAGE_ID_ABSTRACT_NEEDS_BASE,
274
+ node
275
+ });
276
+ } else {
277
+ context.report({
278
+ data: { className },
279
+ messageId: MESSAGE_ID_MISSING_SUFFIX,
280
+ node
281
+ });
282
+ }
283
+ }
284
+ // Annotate the CommonJS export names for ESM import in node:
285
+ 0 && (module.exports = {
286
+ MESSAGE_ID_ABSTRACT_NEEDS_BASE,
287
+ MESSAGE_ID_BASE_NOT_ABSTRACT,
288
+ MESSAGE_ID_MISSING_SUFFIX,
289
+ requireComponentSuffix
290
+ });
291
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3JlcXVpcmUtY29tcG9uZW50LXN1ZmZpeC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiByZXF1aXJlLWNvbXBvbmVudC1zdWZmaXhcbiAqXG4gKiBSZXBvcnRzIGFuIGVycm9yIHdoZW4gYSBjbGFzcyB0aGF0IGV4dGVuZHMgYENvbXBvbmVudGAgKGZyb20gT2JzaWRpYW4sXG4gKiBkaXJlY3RseSBvciB0cmFuc2l0aXZlbHkpIGRvZXMgbm90IGhhdmUgYSBuYW1lIGVuZGluZyB3aXRoIGBDb21wb25lbnRgXG4gKiAob3IgYENvbXBvbmVudEJhc2VgIGZvciBhYnN0cmFjdCBiYXNlIGNsYXNzZXMpLlxuICpcbiAqIENsYXNzZXMgd2hvc2UgaW5oZXJpdGFuY2UgY2hhaW4gaW5jbHVkZXMgYW55IG9mIHRoZSBPYnNpZGlhbiBmcmFtZXdvcmtcbiAqIGNsYXNzZXMgdGhhdCBleHRlbmQgYENvbXBvbmVudGAgKGUuZy4gYFBsdWdpbmAsIGBWaWV3YCxcbiAqIGBNYXJrZG93blJlbmRlckNoaWxkYCwgYE1lbnVgLCBgSG92ZXJQb3BvdmVyYCwgYFF1ZXJ5Q29udHJvbGxlcmApXG4gKiBhcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGZvbGxvdyBPYnNpZGlhbidzIG93biBuYW1pbmcgY29udmVudGlvbnMuXG4gKlxuICogVGhlIHJ1bGUgdXNlcyB0aGUgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIgdG8gd2FsayB0aGUgZnVsbCBpbmhlcml0YW5jZVxuICogY2hhaW4sIHNvIGl0IHdvcmtzIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgaW50ZXJtZWRpYXRlIGNsYXNzZXMgc2l0XG4gKiBiZXR3ZWVuIHRoZSB1c2VyJ3MgY2xhc3MgYW5kIGBDb21wb25lbnRgLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgdG9UU0VTVHJlZU5vZGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL2VzbGludC1ydWxlcy90cy1lc3RyZWUtbm9kZSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgY2xhc3MgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudGAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX01JU1NJTkdfU1VGRklYID0gJ3JlcXVpcmVDb21wb25lbnRTdWZmaXgnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhbiBhYnN0cmFjdCBjbGFzcyBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50QmFzZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UgPSAnYWJzdHJhY3ROZWVkc0NvbXBvbmVudEJhc2UnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIGNsYXNzIG5hbWUgZW5kcyB3aXRoIGBDb21wb25lbnRCYXNlYCBidXQgdGhlIGNsYXNzIGlzIG5vdCBhYnN0cmFjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQkFTRV9OT1RfQUJTVFJBQ1QgPSAnY29tcG9uZW50QmFzZU5vdEFic3RyYWN0JztcblxuLyoqXG5BbmNlc3RvciBjbGFzcyBuYW1lcyB0aGF0IG9wdCBhIHN1YnRyZWUgb3V0IG9mIHRoZSBzdWZmaXggcmVxdWlyZW1lbnQuXG4gKi9cbmNvbnN0IEVYQ0xVREVEX0FOQ0VTVE9SUyA9IG5ldyBTZXQoWydIb3ZlclBvcG92ZXInLCAnTWFya2Rvd25SZW5kZXJDaGlsZCcsICdNZW51JywgJ1BsdWdpbicsICdRdWVyeUNvbnRyb2xsZXInLCAnVmlldyddKTtcblxuLyoqXG5UaGUgYW5jZXN0b3IgY2xhc3MgbmFtZSB0aGF0IHRyaWdnZXJzIHRoZSBzdWZmaXggcmVxdWlyZW1lbnQuXG4gKi9cbmNvbnN0IFJFUVVJUkVEX0FOQ0VTVE9SID0gJ0NvbXBvbmVudCc7XG5cbmludGVyZmFjZSBUeXBlV2l0aEJhc2VUeXBlcyB7XG4gIGdldEJhc2VUeXBlcz86ICgpID0+IFR5cGVbXSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgY2xhc3NlcyB0aGF0IGV4dGVuZCBgQ29tcG9uZW50YCB0byBiZSBuYW1lZCB3aXRoIGEgYENvbXBvbmVudGAgc3VmZml4LCBhbmQgYWJzdHJhY3Qgb25lcyB3aXRoIGEgYENvbXBvbmVudEJhc2VgIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVpcmVDb21wb25lbnRTdWZmaXg6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGNvbnRleHQuc291cmNlQ29kZS5wYXJzZXJTZXJ2aWNlcyBhcyBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb247XG4gICAgY29uc3QgY2hlY2tlciA9IHNlcnZpY2VzLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAnQ2xhc3NEZWNsYXJhdGlvbltpZF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnRDbGFzcyh7XG4gICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgc2VydmljZXNcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgJ0NsYXNzRXhwcmVzc2lvbltpZF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnRDbGFzcyh7XG4gICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgc2VydmljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBjbGFzc2VzIGV4dGVuZGluZyBgQ29tcG9uZW50YCB0byBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIGBDb21wb25lbnRgJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0VdOiAnQWJzdHJhY3QgY2xhc3MgYHt7IGNsYXNzTmFtZSB9fWAgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudEJhc2VgLicsXG4gICAgICBbTUVTU0FHRV9JRF9CQVNFX05PVF9BQlNUUkFDVF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBlbmRzIHdpdGggYENvbXBvbmVudEJhc2VgIGJ1dCBpcyBub3QgYWJzdHJhY3QuIE9ubHkgYWJzdHJhY3QgY2xhc3NlcyBtYXkgdXNlIHRoZSBgQ29tcG9uZW50QmFzZWAgc3VmZml4LicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50YC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXBvcnRDbGFzc30uXG4gKi9cbmludGVyZmFjZSBSZXBvcnRDbGFzc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIuXG4gICAqL1xuICByZWFkb25seSBjaGVja2VyOiBSZXR1cm5UeXBlPFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvblsncHJvZ3JhbSddWydnZXRUeXBlQ2hlY2tlciddPjtcblxuICAvKipcbiAgICogVGhlIEVTTGludCBydWxlIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgY2xhc3MgQVNUIG5vZGUuXG4gICAqL1xuICByZWFkb25seSBub2RlOiBSdWxlLk5vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzZXIgc2VydmljZXMgd2l0aCB0eXBlIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZXM6IFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd2Fsa0FuY2VzdG9yc30uXG4gKi9cbmludGVyZmFjZSBXYWxrQW5jZXN0b3JzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzZXQgdG8gYWRkIGRpc2NvdmVyZWQgYW5jZXN0b3IgbmFtZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBjb2xsZWN0ZWROYW1lczogU2V0PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHR5cGUgdG8gaW5zcGVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRUeXBlOiBUeXBlO1xuXG4gIC8qKlxuICAgKiBUeXBlcyBhbHJlYWR5IHZpc2l0ZWQsIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMuXG4gICAqL1xuICByZWFkb25seSB2aXNpdGVkVHlwZXM6IFNldDxUeXBlPjtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyB0aGUgbmFtZXMgb2YgYWxsIGFuY2VzdG9yIHR5cGVzIGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi5cbiAqXG4gKiBAcGFyYW0gdHlwZSAtIFRoZSBUeXBlU2NyaXB0IHR5cGUgdG8gc3RhcnQgZnJvbS5cbiAqIEByZXR1cm5zIEEgc2V0IG9mIGFuY2VzdG9yIGNsYXNzIG5hbWVzLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0QW5jZXN0b3JOYW1lcyh0eXBlOiBUeXBlKTogU2V0PHN0cmluZz4ge1xuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxUeXBlPigpO1xuXG4gIHdhbGtBbmNlc3RvcnMoe1xuICAgIGNvbGxlY3RlZE5hbWVzOiBuYW1lcyxcbiAgICBjdXJyZW50VHlwZTogdHlwZSxcbiAgICB2aXNpdGVkVHlwZXM6IHZpc2l0ZWRcbiAgfSk7XG5cbiAgcmV0dXJuIG5hbWVzO1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSB3YWxrcyB0aGUgYmFzZSB0eXBlcyBvZiBhIHR5cGUsIGNvbGxlY3RpbmcgdGhlaXIgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHdhbGsuXG4gICAqL1xuICBmdW5jdGlvbiB3YWxrQW5jZXN0b3JzKHBhcmFtczogV2Fsa0FuY2VzdG9yc1BhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29sbGVjdGVkTmFtZXMsIGN1cnJlbnRUeXBlLCB2aXNpdGVkVHlwZXMgfSA9IHBhcmFtcztcbiAgICBpZiAodmlzaXRlZFR5cGVzLmhhcyhjdXJyZW50VHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aXNpdGVkVHlwZXMuYWRkKGN1cnJlbnRUeXBlKTtcblxuICAgIGNvbnN0IGJhc2VUeXBlcyA9IChjdXJyZW50VHlwZSBhcyBUeXBlV2l0aEJhc2VUeXBlcykuZ2V0QmFzZVR5cGVzPy4oKTtcblxuICAgIGlmICghYmFzZVR5cGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBiYXNlVHlwZSBvZiBiYXNlVHlwZXMpIHtcbiAgICAgIGNvbnN0ICRzeW1ib2wgPSBiYXNlVHlwZS5nZXRTeW1ib2woKTtcblxuICAgICAgaWYgKCRzeW1ib2wpIHtcbiAgICAgICAgY29sbGVjdGVkTmFtZXMuYWRkKCRzeW1ib2wuZ2V0TmFtZSgpKTtcbiAgICAgIH1cblxuICAgICAgd2Fsa0FuY2VzdG9ycyh7XG4gICAgICAgIGNvbGxlY3RlZE5hbWVzLFxuICAgICAgICBjdXJyZW50VHlwZTogYmFzZVR5cGUsXG4gICAgICAgIHZpc2l0ZWRUeXBlc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgc2luZ2xlIGNsYXNzIGRlY2xhcmF0aW9uIG9yIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY2hlY2suXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydENsYXNzKHBhcmFtczogUmVwb3J0Q2xhc3NQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyBjaGVja2VyLCBjb250ZXh0LCBub2RlLCBzZXJ2aWNlcyB9ID0gcGFyYW1zO1xuICBjb25zdCBjbGFzc05vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5DbGFzc0RlY2xhcmF0aW9uIHwgVFNFU1RyZWUuQ2xhc3NFeHByZXNzaW9uO1xuICBjb25zdCBjbGFzc0lkID0gY2xhc3NOb2RlLmlkO1xuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFU0xpbnQgc2VsZWN0b3IgYFtpZF1gIGd1YXJhbnRlZXMgY2xhc3NJZCBpcyBwcmVzZW50LiAqL1xuICBpZiAoIWNsYXNzSWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCBjbGFzc05hbWUgPSBjbGFzc0lkLm5hbWU7XG4gIGNvbnN0IHsgYWJzdHJhY3Q6IGlzQWJzdHJhY3QgfSA9IGNsYXNzTm9kZTtcbiAgY29uc3QgaGFzQ29tcG9uZW50QmFzZVN1ZmZpeCA9IGNsYXNzTmFtZS5lbmRzV2l0aCgnQ29tcG9uZW50QmFzZScpO1xuICBjb25zdCBoYXNDb21wb25lbnRTdWZmaXggPSAhaGFzQ29tcG9uZW50QmFzZVN1ZmZpeCAmJiBjbGFzc05hbWUuZW5kc1dpdGgoJ0NvbXBvbmVudCcpO1xuXG4gIC8vIENvcnJlY3Q6IG5vbi1hYnN0cmFjdCBlbmRpbmcgd2l0aCBDb21wb25lbnQsIG9yIGFic3RyYWN0IGVuZGluZyB3aXRoIENvbXBvbmVudEJhc2VcbiAgaWYgKChoYXNDb21wb25lbnRTdWZmaXggJiYgIWlzQWJzdHJhY3QpIHx8IChoYXNDb21wb25lbnRCYXNlU3VmZml4ICYmIGlzQWJzdHJhY3QpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdHNOb2RlID0gc2VydmljZXMuZXNUcmVlTm9kZVRvVFNOb2RlTWFwLmdldChjbGFzc05vZGUpO1xuICBjb25zdCBjbGFzc1R5cGUgPSBjaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHRzTm9kZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGNvbGxlY3RBbmNlc3Rvck5hbWVzKGNsYXNzVHlwZSk7XG5cbiAgaWYgKCFhbmNlc3RvcnMuaGFzKFJFUVVJUkVEX0FOQ0VTVE9SKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgZXhjbHVkZWQgb2YgRVhDTFVERURfQU5DRVNUT1JTKSB7XG4gICAgaWYgKGFuY2VzdG9ycy5oYXMoZXhjbHVkZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc0NvbXBvbmVudEJhc2VTdWZmaXggJiYgIWlzQWJzdHJhY3QpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX0JBU0VfTk9UX0FCU1RSQUNULFxuICAgICAgbm9kZVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzQWJzdHJhY3QpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UsXG4gICAgICBub2RlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBjbGFzc05hbWUgfSxcbiAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWCxcbiAgICAgIG5vZGVcbiAgICB9KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCQSw0QkFBK0I7QUFLeEIsTUFBTSw0QkFBNEI7QUFLbEMsTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSwrQkFBK0I7QUFLNUMsTUFBTSxxQkFBcUIsb0JBQUksSUFBSSxDQUFDLGdCQUFnQix1QkFBdUIsUUFBUSxVQUFVLG1CQUFtQixNQUFNLENBQUM7QUFLdkgsTUFBTSxvQkFBb0I7QUFTbkIsTUFBTSx5QkFBMEM7QUFBQSxFQUNyRCxPQUFPLFNBQVM7QUFDZCxVQUFNLFdBQVcsUUFBUSxXQUFXO0FBQ3BDLFVBQU0sVUFBVSxTQUFTLFFBQVEsZUFBZTtBQUVoRCxXQUFPO0FBQUEsTUFDTCx1QkFBdUIsTUFBdUI7QUFDNUMsb0JBQVk7QUFBQSxVQUNWO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0Esc0JBQXNCLE1BQXVCO0FBQzNDLG9CQUFZO0FBQUEsVUFDVjtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFB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
@@ -0,0 +1,18 @@
1
+ /// <reference path="../../index.d.cts" />
2
+ import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
3
+ /**
4
+ Message ID reported when a class extends `Component` but its name does not end with `Component`.
5
+ */
6
+ export declare const MESSAGE_ID_MISSING_SUFFIX = "requireComponentSuffix";
7
+ /**
8
+ Message ID reported when an abstract class extends `Component` but its name does not end with `ComponentBase`.
9
+ */
10
+ export declare const MESSAGE_ID_ABSTRACT_NEEDS_BASE = "abstractNeedsComponentBase";
11
+ /**
12
+ Message ID reported when a class name ends with `ComponentBase` but the class is not abstract.
13
+ */
14
+ export declare const MESSAGE_ID_BASE_NOT_ABSTRACT = "componentBaseNotAbstract";
15
+ /**
16
+ * ESLint rule requiring classes that extend `Component` to be named with a `Component` suffix, and abstract ones with a `ComponentBase` suffix.
17
+ */
18
+ export declare const requireComponentSuffix: Rule.RuleModule;
@@ -0,0 +1,173 @@
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
+
22
+ // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
+ const existingProcess = globalThis.process;
24
+
25
+ if (!existingProcess) {
26
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
+ globalThis.process = browserProcess;
28
+ return;
29
+ }
30
+
31
+ if (existingProcess.versions?.node) {
32
+ return;
33
+ }
34
+
35
+ const existingProcessRecord = existingProcess;
36
+
37
+ for (const [key, value] of Object.entries(browserProcess)) {
38
+ existingProcessRecord[key] ??= value;
39
+ }
40
+
41
+ existingProcessRecord['browser'] = true;
42
+ }
43
+
44
+ function keepName($unknown) {
45
+ return $unknown;
46
+ }
47
+
48
+ (function initCjs() {
49
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
+ const globalThisRecord = globalThis;
51
+ ensureDisposeSymbols();
52
+ globalThisRecord['__name'] ??= keepName;
53
+ globalThisRecord['__extractDefault'] ??= extractDefault;
54
+
55
+ ensureBrowserProcess();
56
+
57
+ // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
+ function extractDefault(module) {
59
+ return module && module.__esModule && 'default' in module ? module.default : module;
60
+ }
61
+ })();
62
+ })();
63
+ (function patchObsidianRequire() {
64
+ const originalRequire = require;
65
+ if (!originalRequire || originalRequire.__isPatched) {
66
+ return;
67
+ }
68
+
69
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
70
+ require = Object.assign(
71
+ (id) => requirePatched(id),
72
+ originalRequire,
73
+ {
74
+ __isPatched: true
75
+ }
76
+ );
77
+
78
+ function extractDefault(module) {
79
+ return module && module.__esModule && 'default' in module ? module.default : module;
80
+ }
81
+
82
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
83
+ '@codemirror/autocomplete',
84
+ '@codemirror/collab',
85
+ '@codemirror/commands',
86
+ '@codemirror/language',
87
+ '@codemirror/lint',
88
+ '@codemirror/search',
89
+ '@codemirror/state',
90
+ '@codemirror/text',
91
+ '@codemirror/view',
92
+ '@lezer/common',
93
+ '@lezer/highlight',
94
+ '@lezer/lr',
95
+ 'obsidian']
96
+ );
97
+
98
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
99
+ '@codemirror/closebrackets',
100
+ '@codemirror/comment',
101
+ '@codemirror/fold',
102
+ '@codemirror/gutter',
103
+ '@codemirror/highlight',
104
+ '@codemirror/history',
105
+ '@codemirror/matchbrackets',
106
+ '@codemirror/panel',
107
+ '@codemirror/rangeset',
108
+ '@codemirror/rectangular-selection',
109
+ '@codemirror/stream-parser',
110
+ '@codemirror/tooltip']
111
+ );
112
+
113
+ function requirePatched(id) {
114
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
115
+ return originalRequire?.(id);
116
+ }
117
+
118
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
119
+ if (globalThis.app.isMobile) {
120
+ if (id === 'process' || id === 'node:process') {
121
+ // eslint-disable-next-line no-console -- Valid usage.
122
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
123
+
124
+ return process;
125
+ }
126
+ } else {
127
+ const module = originalRequire?.(id);
128
+ if (module) {
129
+ return extractDefault(module);
130
+ }
131
+ }
132
+
133
+ // eslint-disable-next-line no-console -- Valid usage.
134
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
135
+ return {};
136
+ }
137
+ })();
138
+
139
+ "use strict";
140
+ var __defProp = Object.defineProperty;
141
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
142
+ var __getOwnPropNames = Object.getOwnPropertyNames;
143
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
144
+ var __export = (target, all) => {
145
+ for (var name in all)
146
+ __defProp(target, name, { get: all[name], enumerable: true });
147
+ };
148
+ var __copyProps = (to, from, except, desc) => {
149
+ if (from && typeof from === "object" || typeof from === "function") {
150
+ for (let key of __getOwnPropNames(from))
151
+ if (!__hasOwnProp.call(to, key) && key !== except)
152
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
153
+ }
154
+ return to;
155
+ };
156
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
157
+ var eslint_exports = {};
158
+ __export(eslint_exports, {
159
+ lint: () => lint
160
+ });
161
+ module.exports = __toCommonJS(eslint_exports);
162
+ var import_eslint = require('@mnaoumov/typescript-dev-toolkit/linters/eslint');
163
+ var import_repo_paths = require('@mnaoumov/typescript-dev-toolkit/repo-paths');
164
+ var import_templates = require('../templates.cjs');
165
+ var import_eslint2 = require('@mnaoumov/typescript-dev-toolkit/linters/eslint');
166
+ async function lint(options) {
167
+ await (0, import_eslint.lint)({ defaultConfigFilePath: (0, import_templates.getTemplateFilePath)(import_repo_paths.RepoPaths.EslintConfigMts), ...options });
168
+ }
169
+ // Annotate the CommonJS export names for ESM import in node:
170
+ 0 && (module.exports = {
171
+ lint
172
+ });
173
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludHMgYW4gT2JzaWRpYW4gcGx1Z2luIHdpdGggRVNMaW50OiB0aGUgZ2VuZXJpYyBydW5uZXIgZnJvbSBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXRgLCB3aGljaCBjb3BpZXNcbiAqIHRoaXMgcGFja2FnZSdzIGBlc2xpbnQuY29uZmlnLm10c2AgdGVtcGxhdGUgaW50byBhIHByb2plY3QgdGhhdCBoYXMgbm8gY29uZmlndXJhdGlvbiB5ZXQuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBMaW50T3B0aW9ucyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50JztcblxuaW1wb3J0IHsgbGludCBhcyBsaW50R2VuZXJpYyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50JztcbmltcG9ydCB7IFJlcG9QYXRocyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3JlcG8tcGF0aHMnO1xuXG5pbXBvcnQgeyBnZXRUZW1wbGF0ZUZpbGVQYXRoIH0gZnJvbSAnLi4vdGVtcGxhdGVzLnRzJztcblxuLyoqXG4gKiBMaW50cyB0aGUgcHJvamVjdCB3aXRoIEVTTGludC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbGludEdlbmVyaWMoeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGg6IGdldFRlbXBsYXRlRmlsZVBhdGgoUmVwb1BhdGhzLkVzbGludENvbmZpZ010cyksIC4uLm9wdGlvbnMgfSk7XG59XG5leHBvcnQgeyB0eXBlIExpbnRPcHRpb25zIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbGludGVycy9lc2xpbnQnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBLG9CQUFvQztBQUNwQyx3QkFBMEI7QUFFMUIsdUJBQW9DO0FBVXBDLElBQUFBLGlCQUFpQztBQUhqQyxlQUFzQixLQUFLLFNBQXNDO0FBQy9ELFlBQU0sY0FBQUMsTUFBWSxFQUFFLDJCQUF1QixzQ0FBb0IsNEJBQVUsZUFBZSxHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ3pHOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfZXNsaW50IiwgImxpbnRHZW5lcmljIl0KfQo=
@@ -0,0 +1,15 @@
1
+ /// <reference path="../index.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Lints an Obsidian plugin with ESLint: the generic runner from `@mnaoumov/typescript-dev-toolkit`, which copies
6
+ * this package's `eslint.config.mts` template into a project that has no configuration yet.
7
+ */
8
+ import type { LintOptions } from '@mnaoumov/typescript-dev-toolkit/linters/eslint' with { 'resolution-mode': 'import' };
9
+ /**
10
+ * Lints the project with ESLint.
11
+ *
12
+ * @param options - The {@link LintOptions}.
13
+ */
14
+ export declare function lint(options?: LintOptions): Promise<void>;
15
+ export { type LintOptions } from '@mnaoumov/typescript-dev-toolkit/linters/eslint';