@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,60 @@
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 initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ import { lint as lintGeneric } from "@mnaoumov/typescript-dev-toolkit/linters/markdownlint";
51
+ import { RepoPaths } from "@mnaoumov/typescript-dev-toolkit/repo-paths";
52
+ import { getTemplateFilePath } from "../templates.mjs";
53
+ import {} from "@mnaoumov/typescript-dev-toolkit/linters/markdownlint";
54
+ async function lint(options) {
55
+ await lintGeneric({ defaultConfigFilePath: getTemplateFilePath(RepoPaths.MarkdownlintCli2ConfigMjs), ...options });
56
+ }
57
+ export {
58
+ lint
59
+ };
60
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvbWFya2Rvd25saW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogTGludHMgYW4gT2JzaWRpYW4gcGx1Z2luJ3MgbWFya2Rvd246IHRoZSBnZW5lcmljIHJ1bm5lciBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdGAsIHdoaWNoIGNvcGllc1xuICogdGhpcyBwYWNrYWdlJ3MgYC5tYXJrZG93bmxpbnQtY2xpMi5tanNgIHRlbXBsYXRlIGludG8gYSBwcm9qZWN0IHRoYXQgaGFzIG5vIGNvbmZpZ3VyYXRpb24geWV0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgTGludE9wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL21hcmtkb3dubGludCc7XG5cbmltcG9ydCB7IGxpbnQgYXMgbGludEdlbmVyaWMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL21hcmtkb3dubGludCc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZXBvLXBhdGhzJztcblxuaW1wb3J0IHsgZ2V0VGVtcGxhdGVGaWxlUGF0aCB9IGZyb20gJy4uL3RlbXBsYXRlcy50cyc7XG5cbi8qKlxuICogTGludHMgdGhlIHByb2plY3QncyBtYXJrZG93biB3aXRoIGBtYXJrZG93bmxpbnQtY2xpMmAgYW5kIGBsaW5raW5hdG9yYC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgTGludE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGludChvcHRpb25zPzogTGludE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgbGludEdlbmVyaWMoeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGg6IGdldFRlbXBsYXRlRmlsZVBhdGgoUmVwb1BhdGhzLk1hcmtkb3dubGludENsaTJDb25maWdNanMpLCAuLi5vcHRpb25zIH0pO1xufVxuZXhwb3J0IHsgdHlwZSBMaW50T3B0aW9ucyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvbWFya2Rvd25saW50JztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTQSxTQUFTLFFBQVEsbUJBQW1CO0FBQ3BDLFNBQVMsaUJBQWlCO0FBRTFCLFNBQVMsMkJBQTJCO0FBVXBDLGVBQWlDO0FBSGpDLGVBQXNCLEtBQUssU0FBc0M7QUFDL0QsUUFBTSxZQUFZLEVBQUUsdUJBQXVCLG9CQUFvQixVQUFVLHlCQUF5QixHQUFHLEdBQUcsUUFBUSxDQUFDO0FBQ25IOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,40 @@
1
+ /// <reference path="../index.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Keeps `obsidianmd/rule-custom-message` from re-running a builtin rule this library's own config already sets.
6
+ *
7
+ * `eslint-plugin-obsidianmd`'s recommended config turns `no-console` and `no-new-func` off and re-runs each through
8
+ * `obsidianmd/rule-custom-message`, which fetches the builtin rule and reports its findings under its OWN rule id. So
9
+ * the severity a consumer writes on `no-console` is never consulted: `'no-console': 'off'` is inert, and the error
10
+ * that remains names a rule the consumer never configured. This library sets both builtins itself, stricter, so in
11
+ * every consumer the wrapper added nothing but a second report of the same line.
12
+ */
13
+ import type { Linter } from 'eslint';
14
+ /**
15
+ * The rule id of the wrapper that re-reports builtin rules under its own name.
16
+ */
17
+ export declare const RULE_CUSTOM_MESSAGE_RULE_NAME = "obsidianmd/rule-custom-message";
18
+ /**
19
+ * Parameters for {@link stripOwnedRuleCustomMessageEntries}.
20
+ */
21
+ export interface StripOwnedRuleCustomMessageEntriesParams {
22
+ /**
23
+ * The config whose `obsidianmd/rule-custom-message` entry is narrowed.
24
+ */
25
+ readonly config: Linter.Config;
26
+ /**
27
+ * The builtin rule names this library's own config sets, which the wrapper must no longer re-run.
28
+ */
29
+ readonly ownedRuleNames: ReadonlySet<string>;
30
+ }
31
+ /**
32
+ * Removes from a config's `obsidianmd/rule-custom-message` options every wrapped rule named in `ownedRuleNames`.
33
+ *
34
+ * An entry for a rule NOT in the set keeps running through the wrapper, so an entry upstream adds later is not
35
+ * silently dropped. When nothing is left the wrapper is turned `off` rather than run with an empty map.
36
+ *
37
+ * @param params - The parameters.
38
+ * @returns The config, unchanged when it carries no narrowable wrapper entry, otherwise a narrowed copy.
39
+ */
40
+ export declare function stripOwnedRuleCustomMessageEntries(params: StripOwnedRuleCustomMessageEntriesParams): Linter.Config;
@@ -0,0 +1,75 @@
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 initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ const RULE_CUSTOM_MESSAGE_RULE_NAME = "obsidianmd/rule-custom-message";
51
+ function stripOwnedRuleCustomMessageEntries(params) {
52
+ const { config, ownedRuleNames } = params;
53
+ const ruleEntry = config.rules?.[RULE_CUSTOM_MESSAGE_RULE_NAME];
54
+ if (!Array.isArray(ruleEntry)) {
55
+ return config;
56
+ }
57
+ const [severity, wrappedRules, ...restOptions] = ruleEntry;
58
+ if (typeof wrappedRules !== "object" || wrappedRules === null) {
59
+ return config;
60
+ }
61
+ const keptEntries = Object.entries(wrappedRules).filter(([ruleName]) => !ownedRuleNames.has(ruleName));
62
+ const narrowedRuleEntry = keptEntries.length === 0 ? "off" : [severity, Object.fromEntries(keptEntries), ...restOptions];
63
+ return {
64
+ ...config,
65
+ rules: {
66
+ ...config.rules,
67
+ [RULE_CUSTOM_MESSAGE_RULE_NAME]: narrowedRuleEntry
68
+ }
69
+ };
70
+ }
71
+ export {
72
+ RULE_CUSTOM_MESSAGE_RULE_NAME,
73
+ stripOwnedRuleCustomMessageEntries
74
+ };
75
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvb2JzaWRpYW5tZC1ydWxlLWN1c3RvbS1tZXNzYWdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogS2VlcHMgYG9ic2lkaWFubWQvcnVsZS1jdXN0b20tbWVzc2FnZWAgZnJvbSByZS1ydW5uaW5nIGEgYnVpbHRpbiBydWxlIHRoaXMgbGlicmFyeSdzIG93biBjb25maWcgYWxyZWFkeSBzZXRzLlxuICpcbiAqIGBlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWRgJ3MgcmVjb21tZW5kZWQgY29uZmlnIHR1cm5zIGBuby1jb25zb2xlYCBhbmQgYG5vLW5ldy1mdW5jYCBvZmYgYW5kIHJlLXJ1bnMgZWFjaCB0aHJvdWdoXG4gKiBgb2JzaWRpYW5tZC9ydWxlLWN1c3RvbS1tZXNzYWdlYCwgd2hpY2ggZmV0Y2hlcyB0aGUgYnVpbHRpbiBydWxlIGFuZCByZXBvcnRzIGl0cyBmaW5kaW5ncyB1bmRlciBpdHMgT1dOIHJ1bGUgaWQuIFNvXG4gKiB0aGUgc2V2ZXJpdHkgYSBjb25zdW1lciB3cml0ZXMgb24gYG5vLWNvbnNvbGVgIGlzIG5ldmVyIGNvbnN1bHRlZDogYCduby1jb25zb2xlJzogJ29mZidgIGlzIGluZXJ0LCBhbmQgdGhlIGVycm9yXG4gKiB0aGF0IHJlbWFpbnMgbmFtZXMgYSBydWxlIHRoZSBjb25zdW1lciBuZXZlciBjb25maWd1cmVkLiBUaGlzIGxpYnJhcnkgc2V0cyBib3RoIGJ1aWx0aW5zIGl0c2VsZiwgc3RyaWN0ZXIsIHNvIGluXG4gKiBldmVyeSBjb25zdW1lciB0aGUgd3JhcHBlciBhZGRlZCBub3RoaW5nIGJ1dCBhIHNlY29uZCByZXBvcnQgb2YgdGhlIHNhbWUgbGluZS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gJ2VzbGludCc7XG5cbi8qKlxuICogVGhlIHJ1bGUgaWQgb2YgdGhlIHdyYXBwZXIgdGhhdCByZS1yZXBvcnRzIGJ1aWx0aW4gcnVsZXMgdW5kZXIgaXRzIG93biBuYW1lLlxuICovXG5leHBvcnQgY29uc3QgUlVMRV9DVVNUT01fTUVTU0FHRV9SVUxFX05BTUUgPSAnb2JzaWRpYW5tZC9ydWxlLWN1c3RvbS1tZXNzYWdlJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgc3RyaXBPd25lZFJ1bGVDdXN0b21NZXNzYWdlRW50cmllc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaXBPd25lZFJ1bGVDdXN0b21NZXNzYWdlRW50cmllc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgY29uZmlnIHdob3NlIGBvYnNpZGlhbm1kL3J1bGUtY3VzdG9tLW1lc3NhZ2VgIGVudHJ5IGlzIG5hcnJvd2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnOiBMaW50ZXIuQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbHRpbiBydWxlIG5hbWVzIHRoaXMgbGlicmFyeSdzIG93biBjb25maWcgc2V0cywgd2hpY2ggdGhlIHdyYXBwZXIgbXVzdCBubyBsb25nZXIgcmUtcnVuLlxuICAgKi9cbiAgcmVhZG9ubHkgb3duZWRSdWxlTmFtZXM6IFJlYWRvbmx5U2V0PHN0cmluZz47XG59XG5cbi8qKlxuICogUmVtb3ZlcyBmcm9tIGEgY29uZmlnJ3MgYG9ic2lkaWFubWQvcnVsZS1jdXN0b20tbWVzc2FnZWAgb3B0aW9ucyBldmVyeSB3cmFwcGVkIHJ1bGUgbmFtZWQgaW4gYG93bmVkUnVsZU5hbWVzYC5cbiAqXG4gKiBBbiBlbnRyeSBmb3IgYSBydWxlIE5PVCBpbiB0aGUgc2V0IGtlZXBzIHJ1bm5pbmcgdGhyb3VnaCB0aGUgd3JhcHBlciwgc28gYW4gZW50cnkgdXBzdHJlYW0gYWRkcyBsYXRlciBpcyBub3RcbiAqIHNpbGVudGx5IGRyb3BwZWQuIFdoZW4gbm90aGluZyBpcyBsZWZ0IHRoZSB3cmFwcGVyIGlzIHR1cm5lZCBgb2ZmYCByYXRoZXIgdGhhbiBydW4gd2l0aCBhbiBlbXB0eSBtYXAuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIGNvbmZpZywgdW5jaGFuZ2VkIHdoZW4gaXQgY2FycmllcyBubyBuYXJyb3dhYmxlIHdyYXBwZXIgZW50cnksIG90aGVyd2lzZSBhIG5hcnJvd2VkIGNvcHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcE93bmVkUnVsZUN1c3RvbU1lc3NhZ2VFbnRyaWVzKHBhcmFtczogU3RyaXBPd25lZFJ1bGVDdXN0b21NZXNzYWdlRW50cmllc1BhcmFtcyk6IExpbnRlci5Db25maWcge1xuICBjb25zdCB7IGNvbmZpZywgb3duZWRSdWxlTmFtZXMgfSA9IHBhcmFtcztcbiAgY29uc3QgcnVsZUVudHJ5ID0gY29uZmlnLnJ1bGVzPy5bUlVMRV9DVVNUT01fTUVTU0FHRV9SVUxFX05BTUVdO1xuICBpZiAoIUFycmF5LmlzQXJyYXkocnVsZUVudHJ5KSkge1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBjb25zdCBbc2V2ZXJpdHksIHdyYXBwZWRSdWxlcywgLi4ucmVzdE9wdGlvbnNdID0gcnVsZUVudHJ5IGFzIHVua25vd25bXTtcbiAgaWYgKHR5cGVvZiB3cmFwcGVkUnVsZXMgIT09ICdvYmplY3QnIHx8IHdyYXBwZWRSdWxlcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBjb25zdCBrZXB0RW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHdyYXBwZWRSdWxlcykuZmlsdGVyKChbcnVsZU5hbWVdKSA9PiAhb3duZWRSdWxlTmFtZXMuaGFzKHJ1bGVOYW1lKSk7XG4gIGNvbnN0IG5hcnJvd2VkUnVsZUVudHJ5OiBMaW50ZXIuUnVsZUVudHJ5ID0ga2VwdEVudHJpZXMubGVuZ3RoID09PSAwXG4gICAgPyAnb2ZmJ1xuICAgIDogW3NldmVyaXR5IGFzIExpbnRlci5SdWxlU2V2ZXJpdHksIE9iamVjdC5mcm9tRW50cmllcyhrZXB0RW50cmllcyksIC4uLnJlc3RPcHRpb25zXTtcblxuICByZXR1cm4ge1xuICAgIC4uLmNvbmZpZyxcbiAgICBydWxlczoge1xuICAgICAgLi4uY29uZmlnLnJ1bGVzLFxuICAgICAgW1JVTEVfQ1VTVE9NX01FU1NBR0VfUlVMRV9OQU1FXTogbmFycm93ZWRSdWxlRW50cnlcbiAgICB9XG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJPLE1BQU0sZ0NBQWdDO0FBMEJ0QyxTQUFTLG1DQUFtQyxRQUFpRTtBQUNsSCxRQUFNLEVBQUUsUUFBUSxlQUFlLElBQUk7QUFDbkMsUUFBTSxZQUFZLE9BQU8sUUFBUSw2QkFBNkI7QUFDOUQsTUFBSSxDQUFDLE1BQU0sUUFBUSxTQUFTLEdBQUc7QUFDN0IsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLENBQUMsVUFBVSxjQUFjLEdBQUcsV0FBVyxJQUFJO0FBQ2pELE1BQUksT0FBTyxpQkFBaUIsWUFBWSxpQkFBaUIsTUFBTTtBQUM3RCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sY0FBYyxPQUFPLFFBQVEsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsTUFBTSxDQUFDLGVBQWUsSUFBSSxRQUFRLENBQUM7QUFDckcsUUFBTSxvQkFBc0MsWUFBWSxXQUFXLElBQy9ELFFBQ0EsQ0FBQyxVQUFpQyxPQUFPLFlBQVksV0FBVyxHQUFHLEdBQUcsV0FBVztBQUVyRixTQUFPO0FBQUEsSUFDTCxHQUFHO0FBQUEsSUFDSCxPQUFPO0FBQUEsTUFDTCxHQUFHLE9BQU87QUFBQSxNQUNWLENBQUMsNkJBQTZCLEdBQUc7QUFBQSxJQUNuQztBQUFBLEVBQ0Y7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,253 @@
1
+ /// <reference path="./index.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * This file defines an enumeration for common file and folder paths used in Obsidian plugin development.
6
+ */
7
+ /**
8
+ * Enumeration of commonly used file and folder paths in Obsidian plugin development.
9
+ */
10
+ export declare enum ObsidianPluginRepoPaths {
11
+ /**
12
+ Any Android capture integration-test TypeScript file.
13
+ */
14
+ AnyAndroidCaptureIntegrationTestTs = "*.android-capture.integration.test.ts",
15
+ /**
16
+ Any Android integration-test TypeScript file.
17
+ */
18
+ AnyAndroidIntegrationTestTs = "*.android.integration.test.ts",
19
+ /**
20
+ CommonJS file.
21
+ */
22
+ AnyCjs = "*.cjs",
23
+ /**
24
+ Any desktop-only TypeScript module, identified by the `desktop-` filename prefix.
25
+ */
26
+ AnyDesktopTs = "desktop-*.ts",
27
+ /**
28
+ Any integration-test TypeScript file.
29
+ */
30
+ AnyIntegrationTestTs = "*.integration.test.ts",
31
+ /**
32
+ JavaScript file.
33
+ */
34
+ AnyJs = "*.js",
35
+ /**
36
+ ESM JavaScript file.
37
+ */
38
+ AnyMjs = "*.mjs",
39
+ /**
40
+ Any path recursively.
41
+ */
42
+ AnyPath = "**",
43
+ /**
44
+ Any test TypeScript file.
45
+ */
46
+ AnyTestTs = "*.test.ts",
47
+ /**
48
+ TypeScript file.
49
+ */
50
+ AnyTs = "*.ts",
51
+ /**
52
+ ReactJS TypeScript file.
53
+ */
54
+ AnyTsx = "*.tsx",
55
+ /**
56
+ Obsidian application settings file within an Obsidian configuration folder.
57
+ */
58
+ AppJson = "app.json",
59
+ /**
60
+ Changelog file.
61
+ */
62
+ ChangelogMd = "CHANGELOG.md",
63
+ /**
64
+ Claude Code's worktree folder. `git worktree add` puts a second, complete checkout of the repository
65
+ here, INSIDE the repository, which is the only reason a repo ever contains a copy of itself. Never
66
+ source, so every linter that walks the tree has to skip it.
67
+ */
68
+ ClaudeWorktrees = ".claude/worktrees",
69
+ /**
70
+ Commitlint configuration file.
71
+ */
72
+ CommitlintConfigTs = "commitlint.config.ts",
73
+ /**
74
+ Current folder.
75
+ */
76
+ CurrentFolder = ".",
77
+ /**
78
+ Demo vault folder shipped in a plugin repo root.
79
+ */
80
+ DemoVault = "demo-vault",
81
+ /**
82
+ Distribution folder.
83
+ */
84
+ Dist = "dist",
85
+ /**
86
+ Build folder within the {@link Dist} folder.
87
+ */
88
+ DistBuild = "dist/build",
89
+ /**
90
+ A path to the built `demo-vault-helper` plugin within the {@link Dist} folder, injected into demo vaults at release time.
91
+ */
92
+ DistDemoVaultHelper = "dist/demo-vault-helper",
93
+ /**
94
+ Development folder within the {@link Dist} folder.
95
+ */
96
+ DistDev = "dist/dev",
97
+ /**
98
+ A path to the built integration-test harness plugin within the {@link Dist} folder, seeded into a consumer's integration-test vault so its `evalInObsidian` closures reach the library via `lib`.
99
+ */
100
+ DistIntegrationTestPlugin = "dist/integration-test-plugin",
101
+ /**
102
+ Obsidian configuration folder within a vault.
103
+ */
104
+ DotObsidian = ".obsidian",
105
+ /**
106
+ CommonJS ESLint configuration file.
107
+ */
108
+ EslintConfigCjs = "eslint.config.cjs",
109
+ /**
110
+ CommonJS TypeScript ESLint configuration file.
111
+ */
112
+ EslintConfigCts = "eslint.config.cts",
113
+ /**
114
+ JavaScript ESLint configuration file.
115
+ */
116
+ EslintConfigJs = "eslint.config.js",
117
+ /**
118
+ ESM JavaScript ESLint configuration file.
119
+ */
120
+ EslintConfigMjs = "eslint.config.mjs",
121
+ /**
122
+ ESM TypeScript ESLint configuration file.
123
+ */
124
+ EslintConfigMts = "eslint.config.mts",
125
+ /**
126
+ TypeScript ESLint configuration file.
127
+ */
128
+ EslintConfigTs = "eslint.config.ts",
129
+ /**
130
+ Hot reload file.
131
+ */
132
+ HotReload = ".hotreload",
133
+ /**
134
+ License file.
135
+ */
136
+ License = "LICENSE",
137
+ /**
138
+ Main CSS file.
139
+ */
140
+ MainCss = "main.css",
141
+ /**
142
+ Main JavaScript file.
143
+ */
144
+ MainJs = "main.js",
145
+ /**
146
+ Main TypeScript file.
147
+ */
148
+ MainTs = "main.ts",
149
+ /**
150
+ Manifest file for beta releases.
151
+ */
152
+ ManifestBetaJson = "manifest-beta.json",
153
+ /**
154
+ Manifest file.
155
+ */
156
+ ManifestJson = "manifest.json",
157
+ /**
158
+ CommonJS Markdownlint CLI2 configuration file.
159
+ */
160
+ MarkdownlintCli2ConfigCjs = ".markdownlint-cli2.cjs",
161
+ /**
162
+ JSONC Markdownlint CLI2 configuration file.
163
+ */
164
+ MarkdownlintCli2ConfigJsonc = ".markdownlint-cli2.jsonc",
165
+ /**
166
+ ESM Markdownlint CLI2 configuration file.
167
+ */
168
+ MarkdownlintCli2ConfigMjs = ".markdownlint-cli2.mjs",
169
+ /**
170
+ YAML Markdownlint CLI2 configuration file.
171
+ */
172
+ MarkdownlintCli2ConfigYaml = ".markdownlint-cli2.yaml",
173
+ /**
174
+ CommonJS Markdownlint configuration file.
175
+ */
176
+ MarkdownlintConfigCjs = ".markdownlint.cjs",
177
+ /**
178
+ JSON Markdownlint configuration file.
179
+ */
180
+ MarkdownlintConfigJson = ".markdownlint.json",
181
+ /**
182
+ JSONC Markdownlint configuration file.
183
+ */
184
+ MarkdownlintConfigJsonc = ".markdownlint.jsonc",
185
+ /**
186
+ ESM Markdownlint configuration file.
187
+ */
188
+ MarkdownlintConfigMjs = ".markdownlint.mjs",
189
+ /**
190
+ YAML Markdownlint configuration file.
191
+ */
192
+ MarkdownlintConfigYaml = ".markdownlint.yaml",
193
+ /**
194
+ YAML Markdownlint configuration file.
195
+ */
196
+ MarkdownlintConfigYml = ".markdownlint.yml",
197
+ /**
198
+ Mocks folder.
199
+ */
200
+ Mocks = "src/test-helpers",
201
+ /**
202
+ Node modules folder.
203
+ */
204
+ NodeModules = "node_modules",
205
+ /**
206
+ NPM shrinkwrap file.
207
+ */
208
+ NpmShrinkwrapJson = "npm-shrinkwrap.json",
209
+ /**
210
+ Package JSON file.
211
+ */
212
+ PackageJson = "package.json",
213
+ /**
214
+ Package-lock JSON file.
215
+ */
216
+ PackageLockJson = "package-lock.json",
217
+ /**
218
+ Plugins folder within an Obsidian configuration folder.
219
+ */
220
+ Plugins = "plugins",
221
+ /**
222
+ Scripts folder.
223
+ */
224
+ Scripts = "scripts",
225
+ /**
226
+ Script utilities folder (dev-only tooling that runs in the consumer's Node environment, not the Obsidian runtime).
227
+ */
228
+ ScriptUtils = "src/script-utils",
229
+ /**
230
+ Source folder.
231
+ */
232
+ Src = "src",
233
+ /**
234
+ Styles CSS file.
235
+ */
236
+ StylesCss = "styles.css",
237
+ /**
238
+ Tests folder.
239
+ */
240
+ Tests = "__tests__",
241
+ /**
242
+ TypeScript configuration file.
243
+ */
244
+ TsConfigJson = "tsconfig.json",
245
+ /**
246
+ Versions JSON file.
247
+ */
248
+ VersionsJson = "versions.json",
249
+ /**
250
+ Vitest configuration file.
251
+ */
252
+ VitestConfigTs = "vitest.config.ts"
253
+ }
@@ -0,0 +1,116 @@
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 initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ var ObsidianPluginRepoPaths = /* @__PURE__ */ ((ObsidianPluginRepoPaths2) => {
51
+ ObsidianPluginRepoPaths2["AnyAndroidCaptureIntegrationTestTs"] = "*.android-capture.integration.test.ts";
52
+ ObsidianPluginRepoPaths2["AnyAndroidIntegrationTestTs"] = "*.android.integration.test.ts";
53
+ ObsidianPluginRepoPaths2["AnyCjs"] = "*.cjs";
54
+ ObsidianPluginRepoPaths2["AnyDesktopTs"] = "desktop-*.ts";
55
+ ObsidianPluginRepoPaths2["AnyIntegrationTestTs"] = "*.integration.test.ts";
56
+ ObsidianPluginRepoPaths2["AnyJs"] = "*.js";
57
+ ObsidianPluginRepoPaths2["AnyMjs"] = "*.mjs";
58
+ ObsidianPluginRepoPaths2["AnyPath"] = "**";
59
+ ObsidianPluginRepoPaths2["AnyTestTs"] = "*.test.ts";
60
+ ObsidianPluginRepoPaths2["AnyTs"] = "*.ts";
61
+ ObsidianPluginRepoPaths2["AnyTsx"] = "*.tsx";
62
+ ObsidianPluginRepoPaths2["AppJson"] = "app.json";
63
+ ObsidianPluginRepoPaths2["ChangelogMd"] = "CHANGELOG.md";
64
+ ObsidianPluginRepoPaths2["ClaudeWorktrees"] = ".claude/worktrees";
65
+ ObsidianPluginRepoPaths2["CommitlintConfigTs"] = "commitlint.config.ts";
66
+ ObsidianPluginRepoPaths2["CurrentFolder"] = ".";
67
+ ObsidianPluginRepoPaths2["DemoVault"] = "demo-vault";
68
+ ObsidianPluginRepoPaths2["Dist"] = "dist";
69
+ ObsidianPluginRepoPaths2["DistBuild"] = "dist/build";
70
+ ObsidianPluginRepoPaths2["DistDemoVaultHelper"] = "dist/demo-vault-helper";
71
+ ObsidianPluginRepoPaths2["DistDev"] = "dist/dev";
72
+ ObsidianPluginRepoPaths2["DistIntegrationTestPlugin"] = "dist/integration-test-plugin";
73
+ ObsidianPluginRepoPaths2["DotObsidian"] = ".obsidian";
74
+ ObsidianPluginRepoPaths2["EslintConfigCjs"] = "eslint.config.cjs";
75
+ ObsidianPluginRepoPaths2["EslintConfigCts"] = "eslint.config.cts";
76
+ ObsidianPluginRepoPaths2["EslintConfigJs"] = "eslint.config.js";
77
+ ObsidianPluginRepoPaths2["EslintConfigMjs"] = "eslint.config.mjs";
78
+ ObsidianPluginRepoPaths2["EslintConfigMts"] = "eslint.config.mts";
79
+ ObsidianPluginRepoPaths2["EslintConfigTs"] = "eslint.config.ts";
80
+ ObsidianPluginRepoPaths2["HotReload"] = ".hotreload";
81
+ ObsidianPluginRepoPaths2["License"] = "LICENSE";
82
+ ObsidianPluginRepoPaths2["MainCss"] = "main.css";
83
+ ObsidianPluginRepoPaths2["MainJs"] = "main.js";
84
+ ObsidianPluginRepoPaths2["MainTs"] = "main.ts";
85
+ ObsidianPluginRepoPaths2["ManifestBetaJson"] = "manifest-beta.json";
86
+ ObsidianPluginRepoPaths2["ManifestJson"] = "manifest.json";
87
+ ObsidianPluginRepoPaths2["MarkdownlintCli2ConfigCjs"] = ".markdownlint-cli2.cjs";
88
+ ObsidianPluginRepoPaths2["MarkdownlintCli2ConfigJsonc"] = ".markdownlint-cli2.jsonc";
89
+ ObsidianPluginRepoPaths2["MarkdownlintCli2ConfigMjs"] = ".markdownlint-cli2.mjs";
90
+ ObsidianPluginRepoPaths2["MarkdownlintCli2ConfigYaml"] = ".markdownlint-cli2.yaml";
91
+ ObsidianPluginRepoPaths2["MarkdownlintConfigCjs"] = ".markdownlint.cjs";
92
+ ObsidianPluginRepoPaths2["MarkdownlintConfigJson"] = ".markdownlint.json";
93
+ ObsidianPluginRepoPaths2["MarkdownlintConfigJsonc"] = ".markdownlint.jsonc";
94
+ ObsidianPluginRepoPaths2["MarkdownlintConfigMjs"] = ".markdownlint.mjs";
95
+ ObsidianPluginRepoPaths2["MarkdownlintConfigYaml"] = ".markdownlint.yaml";
96
+ ObsidianPluginRepoPaths2["MarkdownlintConfigYml"] = ".markdownlint.yml";
97
+ ObsidianPluginRepoPaths2["Mocks"] = "src/test-helpers";
98
+ ObsidianPluginRepoPaths2["NodeModules"] = "node_modules";
99
+ ObsidianPluginRepoPaths2["NpmShrinkwrapJson"] = "npm-shrinkwrap.json";
100
+ ObsidianPluginRepoPaths2["PackageJson"] = "package.json";
101
+ ObsidianPluginRepoPaths2["PackageLockJson"] = "package-lock.json";
102
+ ObsidianPluginRepoPaths2["Plugins"] = "plugins";
103
+ ObsidianPluginRepoPaths2["Scripts"] = "scripts";
104
+ ObsidianPluginRepoPaths2["ScriptUtils"] = "src/script-utils";
105
+ ObsidianPluginRepoPaths2["Src"] = "src";
106
+ ObsidianPluginRepoPaths2["StylesCss"] = "styles.css";
107
+ ObsidianPluginRepoPaths2["Tests"] = "__tests__";
108
+ ObsidianPluginRepoPaths2["TsConfigJson"] = "tsconfig.json";
109
+ ObsidianPluginRepoPaths2["VersionsJson"] = "versions.json";
110
+ ObsidianPluginRepoPaths2["VitestConfigTs"] = "vitest.config.ts";
111
+ return ObsidianPluginRepoPaths2;
112
+ })(ObsidianPluginRepoPaths || {});
113
+ export {
114
+ ObsidianPluginRepoPaths
115
+ };
116
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhpcyBmaWxlIGRlZmluZXMgYW4gZW51bWVyYXRpb24gZm9yIGNvbW1vbiBmaWxlIGFuZCBmb2xkZXIgcGF0aHMgdXNlZCBpbiBPYnNpZGlhbiBwbHVnaW4gZGV2ZWxvcG1lbnQuXG4gKi9cblxuLyoqXG4gKiBFbnVtZXJhdGlvbiBvZiBjb21tb25seSB1c2VkIGZpbGUgYW5kIGZvbGRlciBwYXRocyBpbiBPYnNpZGlhbiBwbHVnaW4gZGV2ZWxvcG1lbnQuXG4gKi9cbmV4cG9ydCBlbnVtIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIHtcbiAgLyoqXG4gIEFueSBBbmRyb2lkIGNhcHR1cmUgaW50ZWdyYXRpb24tdGVzdCBUeXBlU2NyaXB0IGZpbGUuXG4gICAqL1xuICBBbnlBbmRyb2lkQ2FwdHVyZUludGVncmF0aW9uVGVzdFRzID0gJyouYW5kcm9pZC1jYXB0dXJlLmludGVncmF0aW9uLnRlc3QudHMnLFxuXG4gIC8qKlxuICBBbnkgQW5kcm9pZCBpbnRlZ3JhdGlvbi10ZXN0IFR5cGVTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueUFuZHJvaWRJbnRlZ3JhdGlvblRlc3RUcyA9ICcqLmFuZHJvaWQuaW50ZWdyYXRpb24udGVzdC50cycsXG5cbiAgLyoqXG4gIENvbW1vbkpTIGZpbGUuXG4gICAqL1xuICBBbnlDanMgPSAnKi5janMnLFxuXG4gIC8qKlxuICBBbnkgZGVza3RvcC1vbmx5IFR5cGVTY3JpcHQgbW9kdWxlLCBpZGVudGlmaWVkIGJ5IHRoZSBgZGVza3RvcC1gIGZpbGVuYW1lIHByZWZpeC5cbiAgICovXG4gIEFueURlc2t0b3BUcyA9ICdkZXNrdG9wLSoudHMnLFxuXG4gIC8qKlxuICBBbnkgaW50ZWdyYXRpb24tdGVzdCBUeXBlU2NyaXB0IGZpbGUuXG4gICAqL1xuICBBbnlJbnRlZ3JhdGlvblRlc3RUcyA9ICcqLmludGVncmF0aW9uLnRlc3QudHMnLFxuXG4gIC8qKlxuICBKYXZhU2NyaXB0IGZpbGUuXG4gICAqL1xuICBBbnlKcyA9ICcqLmpzJyxcblxuICAvKipcbiAgRVNNIEphdmFTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueU1qcyA9ICcqLm1qcycsXG5cbiAgLyoqXG4gIEFueSBwYXRoIHJlY3Vyc2l2ZWx5LlxuICAgKi9cbiAgQW55UGF0aCA9ICcqKicsXG5cbiAgLyoqXG4gIEFueSB0ZXN0IFR5cGVTY3JpcHQgZmlsZS5cbiAgICovXG4gIEFueVRlc3RUcyA9ICcqLnRlc3QudHMnLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGZpbGUuXG4gICAqL1xuICBBbnlUcyA9ICcqLnRzJyxcblxuICAvKipcbiAgUmVhY3RKUyBUeXBlU2NyaXB0IGZpbGUuXG4gICAqL1xuICBBbnlUc3ggPSAnKi50c3gnLFxuXG4gIC8qKlxuICBPYnNpZGlhbiBhcHBsaWNhdGlvbiBzZXR0aW5ncyBmaWxlIHdpdGhpbiBhbiBPYnNpZGlhbiBjb25maWd1cmF0aW9uIGZvbGRlci5cbiAgICovXG4gIEFwcEpzb24gPSAnYXBwLmpzb24nLFxuXG4gIC8qKlxuICBDaGFuZ2Vsb2cgZmlsZS5cbiAgICovXG4gIENoYW5nZWxvZ01kID0gJ0NIQU5HRUxPRy5tZCcsXG5cbiAgLyoqXG4gIENsYXVkZSBDb2RlJ3Mgd29ya3RyZWUgZm9sZGVyLiBgZ2l0IHdvcmt0cmVlIGFkZGAgcHV0cyBhIHNlY29uZCwgY29tcGxldGUgY2hlY2tvdXQgb2YgdGhlIHJlcG9zaXRvcnlcbiAgaGVyZSwgSU5TSURFIHRoZSByZXBvc2l0b3J5LCB3aGljaCBpcyB0aGUgb25seSByZWFzb24gYSByZXBvIGV2ZXIgY29udGFpbnMgYSBjb3B5IG9mIGl0c2VsZi4gTmV2ZXJcbiAgc291cmNlLCBzbyBldmVyeSBsaW50ZXIgdGhhdCB3YWxrcyB0aGUgdHJlZSBoYXMgdG8gc2tpcCBpdC5cbiAgICovXG4gIENsYXVkZVdvcmt0cmVlcyA9ICcuY2xhdWRlL3dvcmt0cmVlcycsXG5cbiAgLyoqXG4gIENvbW1pdGxpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgQ29tbWl0bGludENvbmZpZ1RzID0gJ2NvbW1pdGxpbnQuY29uZmlnLnRzJyxcblxuICAvKipcbiAgQ3VycmVudCBmb2xkZXIuXG4gICAqL1xuICBDdXJyZW50Rm9sZGVyID0gJy4nLFxuXG4gIC8qKlxuICBEZW1vIHZhdWx0IGZvbGRlciBzaGlwcGVkIGluIGEgcGx1Z2luIHJlcG8gcm9vdC5cbiAgICovXG4gIERlbW9WYXVsdCA9ICdkZW1vLXZhdWx0JyxcblxuICAvKipcbiAgRGlzdHJpYnV0aW9uIGZvbGRlci5cbiAgICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqXG4gIEJ1aWxkIGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIuXG4gICAqL1xuICBEaXN0QnVpbGQgPSAnZGlzdC9idWlsZCcsXG5cbiAgLyoqXG4gIEEgcGF0aCB0byB0aGUgYnVpbHQgYGRlbW8tdmF1bHQtaGVscGVyYCBwbHVnaW4gd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLCBpbmplY3RlZCBpbnRvIGRlbW8gdmF1bHRzIGF0IHJlbGVhc2UgdGltZS5cbiAgICovXG4gIERpc3REZW1vVmF1bHRIZWxwZXIgPSAnZGlzdC9kZW1vLXZhdWx0LWhlbHBlcicsXG5cbiAgLyoqXG4gIERldmVsb3BtZW50IGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIuXG4gICAqL1xuICBEaXN0RGV2ID0gJ2Rpc3QvZGV2JyxcblxuICAvKipcbiAgQSBwYXRoIHRvIHRoZSBidWlsdCBpbnRlZ3JhdGlvbi10ZXN0IGhhcm5lc3MgcGx1Z2luIHdpdGhpbiB0aGUge0BsaW5rIERpc3R9IGZvbGRlciwgc2VlZGVkIGludG8gYSBjb25zdW1lcidzIGludGVncmF0aW9uLXRlc3QgdmF1bHQgc28gaXRzIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZXMgcmVhY2ggdGhlIGxpYnJhcnkgdmlhIGBsaWJgLlxuICAgKi9cbiAgRGlzdEludGVncmF0aW9uVGVzdFBsdWdpbiA9ICdkaXN0L2ludGVncmF0aW9uLXRlc3QtcGx1Z2luJyxcblxuICAvKipcbiAgT2JzaWRpYW4gY29uZmlndXJhdGlvbiBmb2xkZXIgd2l0aGluIGEgdmF1bHQuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgb2JzaWRpYW5tZC9oYXJkY29kZWQtY29uZmlnLXBhdGggLS0gVGhpcyBpcyB0aGUgZGVmYXVsdCBjb25maWcgZm9sZGVyIG5hbWUgYmFrZWQgaW50byBhIHNoaXBwZWQgZGVtby12YXVsdCBza2VsZXRvbiwgbm90IGEgbG9va3VwIGFnYWluc3QgYSBsaXZlIHZhdWx0LlxuICBEb3RPYnNpZGlhbiA9ICcub2JzaWRpYW4nLFxuXG4gIC8qKlxuICBDb21tb25KUyBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnQ2pzID0gJ2VzbGludC5jb25maWcuY2pzJyxcblxuICAvKipcbiAgQ29tbW9uSlMgVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnQ3RzID0gJ2VzbGludC5jb25maWcuY3RzJyxcblxuICAvKipcbiAgSmF2YVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnSnMgPSAnZXNsaW50LmNvbmZpZy5qcycsXG5cbiAgLyoqXG4gIEVTTSBKYXZhU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBFc2xpbnRDb25maWdNanMgPSAnZXNsaW50LmNvbmZpZy5tanMnLFxuXG4gIC8qKlxuICBFU00gVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnTXRzID0gJ2VzbGludC5jb25maWcubXRzJyxcblxuICAvKipcbiAgVHlwZVNjcmlwdCBFU0xpbnQgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgRXNsaW50Q29uZmlnVHMgPSAnZXNsaW50LmNvbmZpZy50cycsXG5cbiAgLyoqXG4gIEhvdCByZWxvYWQgZmlsZS5cbiAgICovXG4gIEhvdFJlbG9hZCA9ICcuaG90cmVsb2FkJyxcblxuICAvKipcbiAgTGljZW5zZSBmaWxlLlxuICAgKi9cbiAgTGljZW5zZSA9ICdMSUNFTlNFJyxcblxuICAvKipcbiAgTWFpbiBDU1MgZmlsZS5cbiAgICovXG4gIE1haW5Dc3MgPSAnbWFpbi5jc3MnLFxuXG4gIC8qKlxuICBNYWluIEphdmFTY3JpcHQgZmlsZS5cbiAgICovXG4gIE1haW5KcyA9ICdtYWluLmpzJyxcblxuICAvKipcbiAgTWFpbiBUeXBlU2NyaXB0IGZpbGUuXG4gICAqL1xuICBNYWluVHMgPSAnbWFpbi50cycsXG5cbiAgLyoqXG4gIE1hbmlmZXN0IGZpbGUgZm9yIGJldGEgcmVsZWFzZXMuXG4gICAqL1xuICBNYW5pZmVzdEJldGFKc29uID0gJ21hbmlmZXN0LWJldGEuanNvbicsXG5cbiAgLyoqXG4gIE1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBNYW5pZmVzdEpzb24gPSAnbWFuaWZlc3QuanNvbicsXG5cbiAgLyoqXG4gIENvbW1vbkpTIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdDanMgPSAnLm1hcmtkb3dubGludC1jbGkyLmNqcycsXG5cbiAgLyoqXG4gIEpTT05DIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdKc29uYyA9ICcubWFya2Rvd25saW50LWNsaTIuanNvbmMnLFxuXG4gIC8qKlxuICBFU00gTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgTWFya2Rvd25saW50Q2xpMkNvbmZpZ01qcyA9ICcubWFya2Rvd25saW50LWNsaTIubWpzJyxcblxuICAvKipcbiAgWUFNTCBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnWWFtbCA9ICcubWFya2Rvd25saW50LWNsaTIueWFtbCcsXG5cbiAgLyoqXG4gIENvbW1vbkpTIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdDanMgPSAnLm1hcmtkb3dubGludC5janMnLFxuXG4gIC8qKlxuICBKU09OIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdKc29uID0gJy5tYXJrZG93bmxpbnQuanNvbicsXG5cbiAgLyoqXG4gIEpTT05DIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdKc29uYyA9ICcubWFya2Rvd25saW50Lmpzb25jJyxcblxuICAvKipcbiAgRVNNIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdNanMgPSAnLm1hcmtkb3dubGludC5tanMnLFxuXG4gIC8qKlxuICBZQU1MIE1hcmtkb3dubGludCBjb25maWd1cmF0aW9uIGZpbGUuXG4gICAqL1xuICBNYXJrZG93bmxpbnRDb25maWdZYW1sID0gJy5tYXJrZG93bmxpbnQueWFtbCcsXG5cbiAgLyoqXG4gIFlBTUwgTWFya2Rvd25saW50IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIE1hcmtkb3dubGludENvbmZpZ1ltbCA9ICcubWFya2Rvd25saW50LnltbCcsXG5cbiAgLyoqXG4gIE1vY2tzIGZvbGRlci5cbiAgICovXG4gIE1vY2tzID0gJ3NyYy90ZXN0LWhlbHBlcnMnLFxuXG4gIC8qKlxuICBOb2RlIG1vZHVsZXMgZm9sZGVyLlxuICAgKi9cbiAgTm9kZU1vZHVsZXMgPSAnbm9kZV9tb2R1bGVzJyxcblxuICAvKipcbiAgTlBNIHNocmlua3dyYXAgZmlsZS5cbiAgICovXG4gIE5wbVNocmlua3dyYXBKc29uID0gJ25wbS1zaHJpbmt3cmFwLmpzb24nLFxuXG4gIC8qKlxuICBQYWNrYWdlIEpTT04gZmlsZS5cbiAgICovXG4gIFBhY2thZ2VKc29uID0gJ3BhY2thZ2UuanNvbicsXG5cbiAgLyoqXG4gIFBhY2thZ2UtbG9jayBKU09OIGZpbGUuXG4gICAqL1xuICBQYWNrYWdlTG9ja0pzb24gPSAncGFja2FnZS1sb2NrLmpzb24nLFxuXG4gIC8qKlxuICBQbHVnaW5zIGZvbGRlciB3aXRoaW4gYW4gT2JzaWRpYW4gY29uZmlndXJhdGlvbiBmb2xkZXIuXG4gICAqL1xuICBQbHVnaW5zID0gJ3BsdWdpbnMnLFxuXG4gIC8qKlxuICBTY3JpcHRzIGZvbGRlci5cbiAgICovXG4gIFNjcmlwdHMgPSAnc2NyaXB0cycsXG5cbiAgLyoqXG4gIFNjcmlwdCB1dGlsaXRpZXMgZm9sZGVyIChkZXYtb25seSB0b29saW5nIHRoYXQgcnVucyBpbiB0aGUgY29uc3VtZXIncyBOb2RlIGVudmlyb25tZW50LCBub3QgdGhlIE9ic2lkaWFuIHJ1bnRpbWUpLlxuICAgKi9cbiAgU2NyaXB0VXRpbHMgPSAnc3JjL3NjcmlwdC11dGlscycsXG5cbiAgLyoqXG4gIFNvdXJjZSBmb2xkZXIuXG4gICAqL1xuICBTcmMgPSAnc3JjJyxcblxuICAvKipcbiAgU3R5bGVzIENTUyBmaWxlLlxuICAgKi9cbiAgU3R5bGVzQ3NzID0gJ3N0eWxlcy5jc3MnLFxuXG4gIC8qKlxuICBUZXN0cyBmb2xkZXIuXG4gICAqL1xuICBUZXN0cyA9ICdfX3Rlc3RzX18nLFxuXG4gIC8qKlxuICBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZS5cbiAgICovXG4gIFRzQ29uZmlnSnNvbiA9ICd0c2NvbmZpZy5qc29uJyxcblxuICAvKipcbiAgVmVyc2lvbnMgSlNPTiBmaWxlLlxuICAgKi9cbiAgVmVyc2lvbnNKc29uID0gJ3ZlcnNpb25zLmpzb24nLFxuXG4gIC8qKlxuICBWaXRlc3QgY29uZmlndXJhdGlvbiBmaWxlLlxuICAgKi9cbiAgVml0ZXN0Q29uZmlnVHMgPSAndml0ZXN0LmNvbmZpZy50cydcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTTyxJQUFLLDBCQUFMLGtCQUFLQSw2QkFBTDtBQUlMLEVBQUFBLHlCQUFBLHdDQUFxQztBQUtyQyxFQUFBQSx5QkFBQSxpQ0FBOEI7QUFLOUIsRUFBQUEseUJBQUEsWUFBUztBQUtULEVBQUFBLHlCQUFBLGtCQUFlO0FBS2YsRUFBQUEseUJBQUEsMEJBQXVCO0FBS3ZCLEVBQUFBLHlCQUFBLFdBQVE7QUFLUixFQUFBQSx5QkFBQSxZQUFTO0FBS1QsRUFBQUEseUJBQUEsYUFBVTtBQUtWLEVBQUFBLHlCQUFBLGVBQVk7QUFLWixFQUFBQSx5QkFBQSxXQUFRO0FBS1IsRUFBQUEseUJBQUEsWUFBUztBQUtULEVBQUFBLHlCQUFBLGFBQVU7QUFLVixFQUFBQSx5QkFBQSxpQkFBYztBQU9kLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUtsQixFQUFBQSx5QkFBQSx3QkFBcUI7QUFLckIsRUFBQUEseUJBQUEsbUJBQWdCO0FBS2hCLEVBQUFBLHlCQUFBLGVBQVk7QUFLWixFQUFBQSx5QkFBQSxVQUFPO0FBS1AsRUFBQUEseUJBQUEsZUFBWTtBQUtaLEVBQUFBLHlCQUFBLHlCQUFzQjtBQUt0QixFQUFBQSx5QkFBQSxhQUFVO0FBS1YsRUFBQUEseUJBQUEsK0JBQTRCO0FBTTVCLEVBQUFBLHlCQUFBLGlCQUFjO0FBS2QsRUFBQUEseUJBQUEscUJBQWtCO0FBS2xCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUtsQixFQUFBQSx5QkFBQSxvQkFBaUI7QUFLakIsRUFBQUEseUJBQUEscUJBQWtCO0FBS2xCLEVBQUFBLHlCQUFBLHFCQUFrQjtBQUtsQixFQUFBQSx5QkFBQSxvQkFBaUI7QUFLakIsRUFBQUEseUJBQUEsZUFBWTtBQUtaLEVBQUFBLHlCQUFBLGFBQVU7QUFLVixFQUFBQSx5QkFBQSxhQUFVO0FBS1YsRUFBQUEseUJBQUEsWUFBUztBQUtULEVBQUFBLHlCQUFBLFlBQVM7QUFLVCxFQUFBQSx5QkFBQSxzQkFBbUI7QUFLbkIsRUFBQUEseUJBQUEsa0JBQWU7QUFLZixFQUFBQSx5QkFBQSwrQkFBNEI7QUFLNUIsRUFBQUEseUJBQUEsaUNBQThCO0FBSzlCLEVBQUFBLHlCQUFBLCtCQUE0QjtBQUs1QixFQUFBQSx5QkFBQSxnQ0FBNkI7QUFLN0IsRUFBQUEseUJBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLHlCQUFBLDRCQUF5QjtBQUt6QixFQUFBQSx5QkFBQSw2QkFBMEI7QUFLMUIsRUFBQUEseUJBQUEsMkJBQXdCO0FBS3hCLEVBQUFBLHlCQUFBLDRCQUF5QjtBQUt6QixFQUFBQSx5QkFBQSwyQkFBd0I7QUFLeEIsRUFBQUEseUJBQUEsV0FBUTtBQUtSLEVBQUFBLHlCQUFBLGlCQUFjO0FBS2QsRUFBQUEseUJBQUEsdUJBQW9CO0FBS3BCLEVBQUFBLHlCQUFBLGlCQUFjO0FBS2QsRUFBQUEseUJBQUEscUJBQWtCO0FBS2xCLEVBQUFBLHlCQUFBLGFBQVU7QUFLVixFQUFBQSx5QkFBQSxhQUFVO0FBS1YsRUFBQUEseUJBQUEsaUJBQWM7QUFLZCxFQUFBQSx5QkFBQSxTQUFNO0FBS04sRUFBQUEseUJBQUEsZUFBWTtBQUtaLEVBQUFBLHlCQUFBLFdBQVE7QUFLUixFQUFBQSx5QkFBQSxrQkFBZTtBQUtmLEVBQUFBLHlCQUFBLGtCQUFlO0FBS2YsRUFBQUEseUJBQUEsb0JBQWlCO0FBOVNQLFNBQUFBO0FBQUEsR0FBQTsiLAogICJuYW1lcyI6IFsiT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMiXQp9Cg==
@@ -0,0 +1,21 @@
1
+ /// <reference path="./index.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Framework-agnostic test-setup endpoint for Obsidian plugins built on `@mnaoumov/obsidian-lib`.
6
+ *
7
+ * Does everything the generic `setup` from `@mnaoumov/typescript-test-toolkit/setup` does, and before each
8
+ * test also resets the Obsidian half of the shared state: the `globalThis.__obsidianDevUtils` bag (queues,
9
+ * registered handlers, the plugin-API registry) and the injected `ObsidianLibrary` context. It lives here
10
+ * rather than in the test toolkit because the test toolkit must not depend on `@mnaoumov/obsidian-lib`.
11
+ */
12
+ import type { SetupParams } from '@mnaoumov/typescript-test-toolkit/setup';
13
+ /**
14
+ * Registers the per-test setup for an Obsidian plugin's tests with a test framework's lifecycle hooks.
15
+ *
16
+ * The Obsidian reset is registered first, so it runs before the generic one in every `beforeEach`, in the
17
+ * same order the two ran in before they were split.
18
+ *
19
+ * @param params - The lifecycle hook registrars to wire setup into.
20
+ */
21
+ export declare function setup(params: SetupParams): void;
@@ -0,0 +1,63 @@
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 initEsm() {
45
+ ensureDisposeSymbols();
46
+ ensureBrowserProcess();
47
+ })();
48
+ })();
49
+
50
+ import { ObsidianLibrary } from "@mnaoumov/obsidian-lib/library";
51
+ import { resetObsidianDevUtilsState } from "@mnaoumov/obsidian-lib/obsidian-dev-utils-state";
52
+ import { setup as setupGeneric } from "@mnaoumov/typescript-test-toolkit/setup";
53
+ function setup(params) {
54
+ params.beforeEach(() => {
55
+ resetObsidianDevUtilsState();
56
+ ObsidianLibrary.resetToDefault();
57
+ });
58
+ setupGeneric(params);
59
+ }
60
+ export {
61
+ setup
62
+ };
63
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3NldHVwLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRnJhbWV3b3JrLWFnbm9zdGljIHRlc3Qtc2V0dXAgZW5kcG9pbnQgZm9yIE9ic2lkaWFuIHBsdWdpbnMgYnVpbHQgb24gYEBtbmFvdW1vdi9vYnNpZGlhbi1saWJgLlxuICpcbiAqIERvZXMgZXZlcnl0aGluZyB0aGUgZ2VuZXJpYyBgc2V0dXBgIGZyb20gYEBtbmFvdW1vdi90eXBlc2NyaXB0LXRlc3QtdG9vbGtpdC9zZXR1cGAgZG9lcywgYW5kIGJlZm9yZSBlYWNoXG4gKiB0ZXN0IGFsc28gcmVzZXRzIHRoZSBPYnNpZGlhbiBoYWxmIG9mIHRoZSBzaGFyZWQgc3RhdGU6IHRoZSBgZ2xvYmFsVGhpcy5fX29ic2lkaWFuRGV2VXRpbHNgIGJhZyAocXVldWVzLFxuICogcmVnaXN0ZXJlZCBoYW5kbGVycywgdGhlIHBsdWdpbi1BUEkgcmVnaXN0cnkpIGFuZCB0aGUgaW5qZWN0ZWQgYE9ic2lkaWFuTGlicmFyeWAgY29udGV4dC4gSXQgbGl2ZXMgaGVyZVxuICogcmF0aGVyIHRoYW4gaW4gdGhlIHRlc3QgdG9vbGtpdCBiZWNhdXNlIHRoZSB0ZXN0IHRvb2xraXQgbXVzdCBub3QgZGVwZW5kIG9uIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFNldHVwUGFyYW1zIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtdGVzdC10b29sa2l0L3NldHVwJztcblxuaW1wb3J0IHsgT2JzaWRpYW5MaWJyYXJ5IH0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWxpYi9saWJyYXJ5JztcbmltcG9ydCB7IHJlc2V0T2JzaWRpYW5EZXZVdGlsc1N0YXRlIH0gZnJvbSAnQG1uYW91bW92L29ic2lkaWFuLWxpYi9vYnNpZGlhbi1kZXYtdXRpbHMtc3RhdGUnO1xuaW1wb3J0IHsgc2V0dXAgYXMgc2V0dXBHZW5lcmljIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtdGVzdC10b29sa2l0L3NldHVwJztcblxuLyoqXG4gKiBSZWdpc3RlcnMgdGhlIHBlci10ZXN0IHNldHVwIGZvciBhbiBPYnNpZGlhbiBwbHVnaW4ncyB0ZXN0cyB3aXRoIGEgdGVzdCBmcmFtZXdvcmsncyBsaWZlY3ljbGUgaG9va3MuXG4gKlxuICogVGhlIE9ic2lkaWFuIHJlc2V0IGlzIHJlZ2lzdGVyZWQgZmlyc3QsIHNvIGl0IHJ1bnMgYmVmb3JlIHRoZSBnZW5lcmljIG9uZSBpbiBldmVyeSBgYmVmb3JlRWFjaGAsIGluIHRoZVxuICogc2FtZSBvcmRlciB0aGUgdHdvIHJhbiBpbiBiZWZvcmUgdGhleSB3ZXJlIHNwbGl0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbGlmZWN5Y2xlIGhvb2sgcmVnaXN0cmFycyB0byB3aXJlIHNldHVwIGludG8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cChwYXJhbXM6IFNldHVwUGFyYW1zKTogdm9pZCB7XG4gIHBhcmFtcy5iZWZvcmVFYWNoKCgpID0+IHtcbiAgICByZXNldE9ic2lkaWFuRGV2VXRpbHNTdGF0ZSgpO1xuICAgIE9ic2lkaWFuTGlicmFyeS5yZXNldFRvRGVmYXVsdCgpO1xuICB9KTtcbiAgc2V0dXBHZW5lcmljKHBhcmFtcyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYUEsU0FBUyx1QkFBdUI7QUFDaEMsU0FBUyxrQ0FBa0M7QUFDM0MsU0FBUyxTQUFTLG9CQUFvQjtBQVUvQixTQUFTLE1BQU0sUUFBMkI7QUFDL0MsU0FBTyxXQUFXLE1BQU07QUFDdEIsK0JBQTJCO0FBQzNCLG9CQUFnQixlQUFlO0FBQUEsRUFDakMsQ0FBQztBQUNELGVBQWEsTUFBTTtBQUNyQjsiLAogICJuYW1lcyI6IFtdCn0K