@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,365 @@
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 __create = Object.create;
141
+ var __defProp = Object.defineProperty;
142
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
143
+ var __getOwnPropNames = Object.getOwnPropertyNames;
144
+ var __getProtoOf = Object.getPrototypeOf;
145
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
146
+ var __export = (target, all) => {
147
+ for (var name in all)
148
+ __defProp(target, name, { get: all[name], enumerable: true });
149
+ };
150
+ var __copyProps = (to, from, except, desc) => {
151
+ if (from && typeof from === "object" || typeof from === "function") {
152
+ for (let key of __getOwnPropNames(from))
153
+ if (!__hasOwnProp.call(to, key) && key !== except)
154
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
155
+ }
156
+ return to;
157
+ };
158
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
159
+ // If the importer is in node compatibility mode or this is not an ESM
160
+ // file that has been converted to a CommonJS file using a Babel-
161
+ // compatible transform (i.e. "__esModule" has not been set), then set
162
+ // "default" to the CommonJS "module.exports" for node compatibility.
163
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
164
+ mod
165
+ ));
166
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
167
+ var eslint_config_exports = {};
168
+ __export(eslint_config_exports, {
169
+ EslintConfigContext: () => import_eslint_config.EslintConfigContext,
170
+ defineEslintConfigs: () => defineEslintConfigs
171
+ });
172
+ module.exports = __toCommonJS(eslint_config_exports);
173
+ var import_eslint_config = require('@mnaoumov/typescript-dev-toolkit/linters/eslint-config');
174
+ var import_path = require('@mnaoumov/typescript-lib/path');
175
+ var import_eslint_plugin_obsidianmd = __toESM(__extractDefault(require('eslint-plugin-obsidianmd')), 1);
176
+ var import_plainTextParser = require('eslint-plugin-obsidianmd/dist/lib/plainTextParser.js');
177
+ var import_config = require('eslint/config');
178
+ var import_obsidian_plugin_repo_paths = require('../obsidian-plugin-repo-paths.cjs');
179
+ var import_manifest_helpers = require('./eslint-rules/manifest-helpers.cjs');
180
+ var import_obsidian_dev_utils_plugin = require('./eslint-rules/obsidian-dev-utils-plugin.cjs');
181
+ var import_obsidianmd_rule_custom_message = require('./obsidianmd-rule-custom-message.cjs');
182
+ const MINIMUM_NODE_VERSION = ">=16.16.0";
183
+ function defineEslintConfigs(options = {}) {
184
+ const context = (0, import_eslint_config.createDefaultEslintConfigContext)();
185
+ if (options.editContext) {
186
+ options.editContext(context);
187
+ }
188
+ const customConfigs = options.customConfigs?.(context) ?? [];
189
+ return (0, import_config.defineConfig)(
190
+ ...(0, import_eslint_config.getGlobalIgnoreConfigs)(),
191
+ ...getObsidianLintConfigs(context),
192
+ ...(0, import_eslint_config.getTypeScriptEslintConfigs)({ context, inHousePlugin: import_obsidian_dev_utils_plugin.obsidianDevUtilsPlugin, minimumNodeVersion: MINIMUM_NODE_VERSION }),
193
+ ...getObsidianOverrideConfigs(context),
194
+ ...getNodeBuiltinsConfigs(context),
195
+ ...getIntegrationTestConfigs(context),
196
+ ...getManifestConfigs(),
197
+ ...getLicenseConfigs(),
198
+ ...customConfigs
199
+ );
200
+ }
201
+ function getIntegrationTestConfigs(context) {
202
+ return (0, import_config.defineConfig)([
203
+ {
204
+ /*
205
+ * An integration test that drives the UI with `dispatchEvent(new KeyboardEvent(...))` produces an
206
+ * UNTRUSTED event, and Obsidian and CodeMirror gate on `isTrusted` — so the test can exercise
207
+ * nothing while still passing. Only integration tests are covered: a unit test has no real input
208
+ * pipeline to reach, so dispatching is the only thing it can do.
209
+ *
210
+ * Android files used to be exempt BY FILENAME, on the grounds that the trusted helpers were built on
211
+ * `window.electron` and so could not be reached from a phone at all. That exemption is gone: the
212
+ * harness gained a mobile trusted-input path, and `clickElement`, `clickMouse`, `pressKey` and
213
+ * `typeIntoEditor` all work there. Only the hover helpers still throw, because `:hover` has no touch
214
+ * equivalent — a file reaching for those has to branch on `Platform.isDesktopApp`, which is the same
215
+ * thing a `*.cross-platform.*` file has always had to do.
216
+ */
217
+ files: context.sourceFolders.map((sourceFolder) => (0, import_path.join)(sourceFolder, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AnyPath, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AnyIntegrationTestTs)),
218
+ rules: {
219
+ "obsidian-dev-utils/no-untrusted-input-events": "error"
220
+ }
221
+ }
222
+ ]);
223
+ }
224
+ function getLicenseConfigs() {
225
+ return (0, import_config.defineConfig)([
226
+ {
227
+ files: [import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.License],
228
+ languageOptions: {
229
+ parser: import_plainTextParser.PlainTextParser
230
+ },
231
+ plugins: {
232
+ obsidianmd: import_eslint_plugin_obsidianmd.default
233
+ },
234
+ rules: {
235
+ "obsidianmd/validate-license": "error"
236
+ }
237
+ }
238
+ ]);
239
+ }
240
+ function getManifestConfigs() {
241
+ return (0, import_config.defineConfig)([
242
+ {
243
+ files: [import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.ManifestJson],
244
+ language: "json/json",
245
+ plugins: {
246
+ "json": import_manifest_helpers.jsonPlugin,
247
+ "obsidian-dev-utils": import_obsidian_dev_utils_plugin.obsidianDevUtilsPlugin
248
+ },
249
+ rules: {
250
+ "obsidian-dev-utils/manifest-description": "error",
251
+ "obsidian-dev-utils/manifest-id": "error",
252
+ "obsidian-dev-utils/manifest-name": "error",
253
+ "obsidian-dev-utils/manifest-schema": "error"
254
+ }
255
+ }
256
+ ]);
257
+ }
258
+ function getNodeBuiltinsConfigs(context) {
259
+ return (0, import_config.defineConfig)([
260
+ {
261
+ // Integration tests run in a Node environment and legitimately read files / paths, so the Node-builtins bans do not apply to them.
262
+ files: context.sourceFolders.map((sourceFolder) => (0, import_path.join)(sourceFolder, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AnyPath, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AnyIntegrationTestTs)),
263
+ rules: {
264
+ "import-x/no-nodejs-modules": "off",
265
+ "obsidianmd/no-nodejs-modules": "off"
266
+ }
267
+ },
268
+ {
269
+ /*
270
+ * A `desktop-` prefixed module is desktop-only by convention: it is reached only through a
271
+ * `Platform.isDesktopApp`-gated dynamic `import()` in its caller, so its static Node imports never
272
+ * load on mobile. Neither rule can see that gate, because it sits one file up — the correctly-written pattern
273
+ * reports anyway, and no author-side rewrite silences it.
274
+ *
275
+ * Exempting BY FILENAME rather than by a disable comment carries a trade-off knowingly: the exemption keys
276
+ * off what the file is NAMED rather than what it does, so the prefix is load-bearing. A desktop-only module
277
+ * that skips the prefix keeps reporting, and a cross-platform module that wrongly takes it gets an exemption
278
+ * it should not have.
279
+ */
280
+ files: context.sourceFolders.map((sourceFolder) => (0, import_path.join)(sourceFolder, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AnyPath, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AnyDesktopTs)),
281
+ rules: {
282
+ "import-x/no-nodejs-modules": "off",
283
+ "obsidianmd/no-nodejs-modules": "off"
284
+ }
285
+ },
286
+ {
287
+ /*
288
+ * A unit test runs under vitest in Node and is never bundled into `main.js`, so the Node-builtins bans do not
289
+ * apply to it either — the identical argument the integration-test block above already accepts. This also
290
+ * covers the SUT-grouped `*.desktop.test.ts` shape, which names the platform as a dot segment after the
291
+ * subject under test rather than as a `desktop-` prefix.
292
+ */
293
+ files: context.testFiles,
294
+ rules: {
295
+ "import-x/no-nodejs-modules": "off",
296
+ "obsidianmd/no-nodejs-modules": "off"
297
+ }
298
+ }
299
+ ]);
300
+ }
301
+ function getObsidianLintConfigs(context) {
302
+ const obsidianRecommendedConfigs = import_eslint_plugin_obsidianmd.default.configs.recommended;
303
+ const ownedRuleNames = new Set((0, import_eslint_config.getEslintCoreConfigs)(context).flatMap((config) => Object.keys(config.rules ?? {})));
304
+ const scopedObsidianRecommendedConfigs = obsidianRecommendedConfigs.map((config) => {
305
+ return config.files?.includes("package.json") ? config : {
306
+ ...(0, import_obsidianmd_rule_custom_message.stripOwnedRuleCustomMessageEntries)({ config, ownedRuleNames }),
307
+ files: context.sourceFiles
308
+ };
309
+ });
310
+ return (0, import_config.defineConfig)([
311
+ {
312
+ extends: [scopedObsidianRecommendedConfigs],
313
+ plugins: {
314
+ obsidianmd: import_eslint_plugin_obsidianmd.default
315
+ }
316
+ }
317
+ ]);
318
+ }
319
+ function getObsidianOverrideConfigs(context) {
320
+ return (0, import_config.defineConfig)([
321
+ {
322
+ files: context.sourceFolders.map((sourceFolder) => (0, import_path.join)(sourceFolder, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.MainTs)),
323
+ rules: {
324
+ "import-x/no-default-export": "off"
325
+ }
326
+ },
327
+ {
328
+ files: context.allFiles(),
329
+ plugins: {
330
+ "obsidian-dev-utils": import_obsidian_dev_utils_plugin.obsidianDevUtilsPlugin
331
+ },
332
+ rules: {
333
+ /*
334
+ * Deliberately here, on `allFiles()`, rather than beside `no-untrusted-input-events` in
335
+ * `getIntegrationTestConfigs()` (owner, 2026-09-09). An `evalInObsidian` call is unmistakable, so a
336
+ * file that makes none is untouched and a broad glob costs nothing -- while script code that drives
337
+ * a real Obsidian outside a test (`demo-vault-buttons.ts`) is under the same transport cap and would
338
+ * otherwise be enforced nowhere.
339
+ */
340
+ "obsidian-dev-utils/no-over-cap-wait-in-eval-in-obsidian": "error",
341
+ "obsidian-dev-utils/require-component-suffix": "error",
342
+ /*
343
+ * Obsidian's `Component` has its own `removeChild(component)` for the component lifecycle, unrelated
344
+ * to `Node#removeChild`. The rule matches on the method name alone, so every report here is a
345
+ * component being unloaded, and following the advice calls a `remove()` that does not exist -- which
346
+ * is what `tsc` said when the fixer was let loose on them.
347
+ */
348
+ "unicorn/prefer-dom-node-remove": "off",
349
+ /*
350
+ * Directly contradicts `obsidianmd/no-global-this`: this rule rewrites `window.x` to `globalThis.x`, and
351
+ * that one forbids `globalThis` outright. With both enabled, `--fix` applies one and then the other
352
+ * reverts it, which ESLint reports as `ESLintCircularFixesWarning` across 29 files. Obsidian's own
353
+ * guidance wins in an Obsidian library, so this is the rule that gives way.
354
+ */
355
+ "unicorn/prefer-global-this": "off"
356
+ }
357
+ }
358
+ ]);
359
+ }
360
+ // Annotate the CommonJS export names for ESM import in node:
361
+ 0 && (module.exports = {
362
+ EslintConfigContext,
363
+ defineEslintConfigs
364
+ });
365
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoZSBzaGFyZWQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZm9yIE9ic2lkaWFuIHBsdWdpbnMuXG4gKlxuICogSXQgaXMgdGhlIGdlbmVyaWMgY29uZmlndXJhdGlvbiBvZiBgQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXRgIHBsdXMgdGhlIE9ic2lkaWFuIGxheWVycyBhbG9uZTpcbiAqIGBlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWRgJ3MgcmVjb21tZW5kZWQgcnVsZXMsIHRoZSByb290IGBtYW5pZmVzdC5qc29uYCBhbmQgYExJQ0VOU0VgLCB0aGUgTm9kZS1idWlsdGlucyBleGVtcHRpb25zXG4gKiBvZiBkZXNrdG9wLW9ubHkgbW9kdWxlcyBhbmQgdGVzdHMsIHRoZSBpbnRlZ3JhdGlvbi10ZXN0IHJ1bGVzIGFuZCB0aGUgT2JzaWRpYW4gaW4taG91c2UgcnVsZXMuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIERlY2xhcmF0aXZlIEVTTGludCBydWxlL3BsdWdpbiBjb25maWd1cmF0aW9uOyBjb3JyZWN0bmVzcyBpcyB2ZXJpZmllZCBieSBydW5uaW5nIEVTTGludCwgbm90IHVuaXQgdGVzdHMuICovXG5cbmltcG9ydCB0eXBlIHsgRGVmaW5lRXNsaW50Q29uZmlnc09wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL2VzbGludC1jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBMaW50ZXIgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVEZWZhdWx0RXNsaW50Q29uZmlnQ29udGV4dCxcbiAgRXNsaW50Q29uZmlnQ29udGV4dCxcbiAgZ2V0RXNsaW50Q29yZUNvbmZpZ3MsXG4gIGdldEdsb2JhbElnbm9yZUNvbmZpZ3MsXG4gIGdldFR5cGVTY3JpcHRFc2xpbnRDb25maWdzXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2xpbnRlcnMvZXNsaW50LWNvbmZpZyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3BhdGgnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLXJlbmFtZS1kZWZhdWx0IC0tIFRoZSBkZWZhdWx0IGV4cG9ydCBuYW1lIGBwbHVnaW5gIGlzIHRvbyBjb25mdXNpbmcuXG5pbXBvcnQgb2JzaWRpYW5tZCBmcm9tICdlc2xpbnQtcGx1Z2luLW9ic2lkaWFubWQnO1xuaW1wb3J0IHsgUGxhaW5UZXh0UGFyc2VyIH0gZnJvbSAnZXNsaW50LXBsdWdpbi1vYnNpZGlhbm1kL2Rpc3QvbGliL3BsYWluVGV4dFBhcnNlci5qcyc7XG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICdlc2xpbnQvY29uZmlnJztcblxuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQgeyBqc29uUGx1Z2luIH0gZnJvbSAnLi9lc2xpbnQtcnVsZXMvbWFuaWZlc3QtaGVscGVycy50cyc7XG5pbXBvcnQgeyBvYnNpZGlhbkRldlV0aWxzUGx1Z2luIH0gZnJvbSAnLi9lc2xpbnQtcnVsZXMvb2JzaWRpYW4tZGV2LXV0aWxzLXBsdWdpbi50cyc7XG5pbXBvcnQgeyBzdHJpcE93bmVkUnVsZUN1c3RvbU1lc3NhZ2VFbnRyaWVzIH0gZnJvbSAnLi9vYnNpZGlhbm1kLXJ1bGUtY3VzdG9tLW1lc3NhZ2UudHMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItZXhwb3J0LWZyb20gLS0gUmUtZXhwb3J0ZWQgc28gYSBwbHVnaW4ncyBgc2NyaXB0cy9lc2xpbnQtY29uZmlnLnRzYCBrZWVwcyBpbXBvcnRpbmcgYm90aCBmcm9tIGhlcmUuXG5leHBvcnQgdHlwZSB7IERlZmluZUVzbGludENvbmZpZ3NPcHRpb25zIH07XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItZXhwb3J0LWZyb20gLS0gUmUtZXhwb3J0ZWQgc28gYSBwbHVnaW4ncyBgc2NyaXB0cy9lc2xpbnQtY29uZmlnLnRzYCBrZWVwcyBpbXBvcnRpbmcgYm90aCBmcm9tIGhlcmUuXG5leHBvcnQgeyBFc2xpbnRDb25maWdDb250ZXh0IH07XG5cbi8qXG4gKiBUaGUgbWluaW11bSBPYnNpZGlhbiBpbnN0YWxsZXIgdGhhdCBzdGlsbCByZWNlaXZlcyBhcHAgdXBkYXRlcyBhbmQgd29ya3MgaXMgMS4xLjksIHdoaWNoIHNoaXBzIEVsZWN0cm9uXG4gKiAyMS4zLjMgYW5kIHJ1bnMgTm9kZSAxNi4xNi4wLiBTaGlwcGVkIHNvdXJjZSBtdXN0IHRoZXJlZm9yZSBhdm9pZCBOb2RlL0VTIHJ1bnRpbWUgYnVpbHRpbnMgdW5hdmFpbGFibGUgaW5cbiAqIHRoYXQgdmVyc2lvbi4gVGVzdHMgYW5kIHNjcmlwdHMgYXJlIGRldi1vbmx5IGFuZCBleGVtcHQuXG4gKlxuICogU291cmNlIG9mIHRydXRoOiBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy9tZXRhZGF0YS5qc29uYCBcdTIwMTQgdGhlIG5ld2VzdCByZWxlYXNlIGNhcnJ5aW5nIHRoZSBmaWVsZFxuICogKDEuMTMuMSkgZGVjbGFyZXMgYG1pblJ1bm5hYmxlSW5zdGFsbGVyVmVyc2lvbjogXCIxLjEuOVwiYCwgYW5kIHRoYXQgaW5zdGFsbGVyJ3MgYHJ1bnRpbWVWZXJzaW9uc2AgZ2l2ZXMgdGhlXG4gKiBFbGVjdHJvbiBhbmQgTm9kZSB2ZXJzaW9ucyBhYm92ZS4gUmUtZGVyaXZlIGZyb20gdGhlcmUgcmF0aGVyIHRoYW4gZWRpdGluZyB0aGlzIG51bWJlciBieSBoYW5kLlxuICovXG5jb25zdCBNSU5JTVVNX05PREVfVkVSU0lPTiA9ICc+PTE2LjE2LjAnO1xuXG4vKipcbiAqIEJ1aWxkIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyB0aGUgRVNMaW50IGNvbmZpZ3VyYXRpb25zIG9mIGFuIE9ic2lkaWFuIHBsdWdpbjogdGhlIGdlbmVyaWMgY29uZmlndXJhdGlvbiBvZlxuICogYEBtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0YCBwbHVzIHRoZSBPYnNpZGlhbiBsYXllcnMuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZGVmaW5pbmcgRVNMaW50IGNvbmZpZ3VyYXRpb25zLlxuICogQHJldHVybnMgVGhlIEVTTGludCBjb25maWd1cmF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUVzbGludENvbmZpZ3Mob3B0aW9uczogRGVmaW5lRXNsaW50Q29uZmlnc09wdGlvbnMgPSB7fSk6IExpbnRlci5Db25maWdbXSB7XG4gIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVEZWZhdWx0RXNsaW50Q29uZmlnQ29udGV4dCgpO1xuXG4gIGlmIChvcHRpb25zLmVkaXRDb250ZXh0KSB7XG4gICAgb3B0aW9ucy5lZGl0Q29udGV4dChjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGN1c3RvbUNvbmZpZ3MgPSBvcHRpb25zLmN1c3RvbUNvbmZpZ3M/Lihjb250ZXh0KSA/PyBbXTtcblxuICByZXR1cm4gZGVmaW5lQ29uZmlnKFxuICAgIC4uLmdldEdsb2JhbElnbm9yZUNvbmZpZ3MoKSxcbiAgICAvLyBPYnNpZGlhbm1kIGNvbmZpZ3MgcnVuIGZpcnN0IHNvIG91ciBzdHJpY3RlciBydWxlcyBvdmVycmlkZSB0aGVpciByZWxheGVkIGRlZmF1bHRzXG4gICAgLi4uZ2V0T2JzaWRpYW5MaW50Q29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRUeXBlU2NyaXB0RXNsaW50Q29uZmlncyh7IGNvbnRleHQsIGluSG91c2VQbHVnaW46IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW4sIG1pbmltdW1Ob2RlVmVyc2lvbjogTUlOSU1VTV9OT0RFX1ZFUlNJT04gfSksXG4gICAgLi4uZ2V0T2JzaWRpYW5PdmVycmlkZUNvbmZpZ3MoY29udGV4dCksXG4gICAgLi4uZ2V0Tm9kZUJ1aWx0aW5zQ29uZmlncyhjb250ZXh0KSxcbiAgICAuLi5nZXRJbnRlZ3JhdGlvblRlc3RDb25maWdzKGNvbnRleHQpLFxuICAgIC4uLmdldE1hbmlmZXN0Q29uZmlncygpLFxuICAgIC4uLmdldExpY2Vuc2VDb25maWdzKCksXG4gICAgLi4uY3VzdG9tQ29uZmlnc1xuICApO1xufVxuZnVuY3Rpb24gZ2V0SW50ZWdyYXRpb25UZXN0Q29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgLypcbiAgICAgICAqIEFuIGludGVncmF0aW9uIHRlc3QgdGhhdCBkcml2ZXMgdGhlIFVJIHdpdGggYGRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoLi4uKSlgIHByb2R1Y2VzIGFuXG4gICAgICAgKiBVTlRSVVNURUQgZXZlbnQsIGFuZCBPYnNpZGlhbiBhbmQgQ29kZU1pcnJvciBnYXRlIG9uIGBpc1RydXN0ZWRgIFx1MjAxNCBzbyB0aGUgdGVzdCBjYW4gZXhlcmNpc2VcbiAgICAgICAqIG5vdGhpbmcgd2hpbGUgc3RpbGwgcGFzc2luZy4gT25seSBpbnRlZ3JhdGlvbiB0ZXN0cyBhcmUgY292ZXJlZDogYSB1bml0IHRlc3QgaGFzIG5vIHJlYWwgaW5wdXRcbiAgICAgICAqIHBpcGVsaW5lIHRvIHJlYWNoLCBzbyBkaXNwYXRjaGluZyBpcyB0aGUgb25seSB0aGluZyBpdCBjYW4gZG8uXG4gICAgICAgKlxuICAgICAgICogQW5kcm9pZCBmaWxlcyB1c2VkIHRvIGJlIGV4ZW1wdCBCWSBGSUxFTkFNRSwgb24gdGhlIGdyb3VuZHMgdGhhdCB0aGUgdHJ1c3RlZCBoZWxwZXJzIHdlcmUgYnVpbHQgb25cbiAgICAgICAqIGB3aW5kb3cuZWxlY3Ryb25gIGFuZCBzbyBjb3VsZCBub3QgYmUgcmVhY2hlZCBmcm9tIGEgcGhvbmUgYXQgYWxsLiBUaGF0IGV4ZW1wdGlvbiBpcyBnb25lOiB0aGVcbiAgICAgICAqIGhhcm5lc3MgZ2FpbmVkIGEgbW9iaWxlIHRydXN0ZWQtaW5wdXQgcGF0aCwgYW5kIGBjbGlja0VsZW1lbnRgLCBgY2xpY2tNb3VzZWAsIGBwcmVzc0tleWAgYW5kXG4gICAgICAgKiBgdHlwZUludG9FZGl0b3JgIGFsbCB3b3JrIHRoZXJlLiBPbmx5IHRoZSBob3ZlciBoZWxwZXJzIHN0aWxsIHRocm93LCBiZWNhdXNlIGA6aG92ZXJgIGhhcyBubyB0b3VjaFxuICAgICAgICogZXF1aXZhbGVudCBcdTIwMTQgYSBmaWxlIHJlYWNoaW5nIGZvciB0aG9zZSBoYXMgdG8gYnJhbmNoIG9uIGBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHBgLCB3aGljaCBpcyB0aGUgc2FtZVxuICAgICAgICogdGhpbmcgYSBgKi5jcm9zcy1wbGF0Zm9ybS4qYCBmaWxlIGhhcyBhbHdheXMgaGFkIHRvIGRvLlxuICAgICAgICovXG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGb2xkZXJzLm1hcCgoc291cmNlRm9sZGVyKSA9PiBqb2luKHNvdXJjZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55UGF0aCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQW55SW50ZWdyYXRpb25UZXN0VHMpKSxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbm8tdW50cnVzdGVkLWlucHV0LWV2ZW50cyc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKlxuICogVGhlIENvbW11bml0eSBkaXJlY3RvcnkgcmVxdWlyZXMgYSByb290IGBMSUNFTlNFYCwgYW5kIGBvYnNpZGlhbm1kL3ZhbGlkYXRlLWxpY2Vuc2VgIGlzIHRoZSBvbmx5IGNoZWNrXG4gKiBvbiB3aGF0IGl0IHNheXM6IHRoZSBjb3B5cmlnaHQgaG9sZGVyIG11c3Qgbm90IHN0aWxsIGJlIHRoZSBzYW1wbGUgcGx1Z2luJ3MsIGFuZCB0aGUgeWVhciBtdXN0IGJlXG4gKiBjdXJyZW50LiBCb3RoIG5lZWQgYFBsYWluVGV4dFBhcnNlcmAsIHdoaWNoIHRoZSBwbHVnaW4gZG9lcyBub3QgZXhwb3J0LCBzbyBpdCBpcyByZWFjaGVkIHRocm91Z2ggaXRzXG4gKiBidWlsZCBvdXRwdXQgLS0gdGhlIHBhY2thZ2UgZGVjbGFyZXMgbm8gYGV4cG9ydHNgIG1hcCBhbmQgc2hpcHMgYSBkZWNsYXJhdGlvbiBiZXNpZGUgdGhlIG1vZHVsZSwgc28gdGhlXG4gKiBkZWVwIHBhdGggcmVzb2x2ZXMsIGJ1dCBpdCBpcyB0aGUgb25lIGltcG9ydCBoZXJlIHRoYXQgYSBwYXRjaCByZWxlYXNlIHVwc3RyZWFtIGNvdWxkIGJyZWFrLlxuICpcbiAqIFRoZSBydWxlIGNvbXBhcmVzIHRoZSB5ZWFyIGFnYWluc3QgYG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKWAgYXQgbGludCB0aW1lLCBzbyBhIHJlcG8gZ29lcyByZWQgYXQgdGhlXG4gKiB0dXJuIG9mIHRoZSB5ZWFyIHVudGlsIGl0cyBMSUNFTlNFIGlzIGJ1bXBlZC4gYC5naXRodWIvd29ya2Zsb3dzL3VwZGF0ZS1saWNlbnNlLXllYXIueW1sYCBkb2VzIHRoYXQgb25cbiAqIDEgSmFudWFyeTsgYSByZXBvIGFkb3B0aW5nIHRoaXMgY29uZmlnIG5lZWRzIHRoZSBzYW1lIHdvcmtmbG93LCBvciB0aGUgeWVhciBjaGVjayB3aWxsIGZhaWwgaXRzIENJLlxuICovXG5mdW5jdGlvbiBnZXRMaWNlbnNlQ29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkxpY2Vuc2VdLFxuICAgICAgbGFuZ3VhZ2VPcHRpb25zOiB7XG4gICAgICAgIHBhcnNlcjogUGxhaW5UZXh0UGFyc2VyXG4gICAgICB9LFxuICAgICAgcGx1Z2luczoge1xuICAgICAgICBvYnNpZGlhbm1kXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ29ic2lkaWFubWQvdmFsaWRhdGUtbGljZW5zZSc6ICdlcnJvcidcbiAgICAgIH1cbiAgICB9XG4gIF0pO1xufVxuXG4vKlxuICogVGhlIHJvb3QgYG1hbmlmZXN0Lmpzb25gIGlzIHdoYXQgdGhlIENvbW11bml0eSBkaXJlY3RvcnkncyBhdXRvbWF0ZWQgcmV2aWV3IGFjdHVhbGx5IHJlYWRzLCBhbmQgdW50aWxcbiAqIHRoaXMgY29uZmlnIGV4aXN0ZWQgbm8gbGludGVyIHJlYWQgaXQgYXQgYWxsOiBgb2JzaWRpYW5tZC92YWxpZGF0ZS1tYW5pZmVzdGAgcmVnaXN0ZXJzIGEgYFByb2dyYW1gXG4gKiB2aXNpdG9yIGFuZCBleHBlY3RzIGFuIEVTVHJlZSBgT2JqZWN0RXhwcmVzc2lvbmAsIHdoaWxlIGV2ZXJ5IEpTT04gcGFyc2VyIHRoYXQgc2hpcHMgcHJvZHVjZXMgc29tZXRoaW5nXG4gKiBlbHNlIC0tIGBAZXNsaW50L2pzb25gIHByb2R1Y2VzIE1vbW9hIChgRG9jdW1lbnRgKSwgYGpzb25jLWVzbGludC1wYXJzZXJgIHByb2R1Y2VzXG4gKiBgSlNPTk9iamVjdEV4cHJlc3Npb25gIC0tIHNvIHRoZSBydWxlIHNpbGVudGx5IG1hdGNoZXMgbm90aGluZyBubyBtYXR0ZXIgd2hpY2ggZmlsZXMgaXQgaXMgc2NvcGVkIHRvLlxuICogVGhlIGluLWhvdXNlIHJ1bGVzIGJlbG93IHZpc2l0IHRoZSBNb21vYSBBU1QgaW5zdGVhZC5cbiAqXG4gKiBgbWFuaWZlc3QuanNvbmAgaXMgc3RyaWN0IEpTT04sIHNvIGFuIGBlc2xpbnQtZGlzYWJsZWAgY29tbWVudCBpbiBpdCBpcyBhIHBhcnNlIGVycm9yIEFORCB3b3VsZCBzdG9wXG4gKiBPYnNpZGlhbiBsb2FkaW5nIHRoZSBwbHVnaW4uIFRoYXQgbWFrZXMgdGhlIGNvbmZpZyB0aGUgb25seSBwbGFjZSBhIGNoZWNrIGNhbiBiZSB3YWl2ZWQsIHdoaWNoIGlzIHdoeVxuICogdGhlc2UgYXJlIGZvdXIgcnVsZXMgcmF0aGVyIHRoYW4gb25lOiBhIHJlcG8gd2l0aCBhIGdyYW5kZmF0aGVyZWQgYGlkYCBjYW4gdHVybiBvZmYgYG1hbmlmZXN0LWlkYCBhbG9uZVxuICogYW5kIGtlZXAgdGhlIHJlc3QuXG4gKi9cbmZ1bmN0aW9uIGdldE1hbmlmZXN0Q29uZmlncygpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbl0sXG4gICAgICBsYW5ndWFnZTogJ2pzb24vanNvbicsXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgICdqc29uJzoganNvblBsdWdpbixcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscyc6IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAnb2JzaWRpYW4tZGV2LXV0aWxzL21hbmlmZXN0LWRlc2NyaXB0aW9uJzogJ2Vycm9yJyxcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscy9tYW5pZmVzdC1pZCc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbWFuaWZlc3QtbmFtZSc6ICdlcnJvcicsXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbWFuaWZlc3Qtc2NoZW1hJzogJ2Vycm9yJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qXG4gKiBFdmVyeSBmaWxlIHNldCB0aGF0IGlzIGV4ZW1wdCBmcm9tIHRoZSBOb2RlLWJ1aWx0aW5zIGJhbnMsIGluIG9uZSBwbGFjZS5cbiAqXG4gKiBUd28gcnVsZXMgYmFuIE5vZGUgYnVpbHRpbnMsIGFuZCB0aGV5IGFyZSBOT1QgaW50ZXJjaGFuZ2VhYmxlLiBgaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXNgIGlzIG91cnMsIGl0IGlzXG4gKiBhbiBlcnJvciwgYW5kIGl0cyB3YWl2ZXJzIGFyZSB0b2xlcmF0ZWQgYnkgdGhlIGNvbW11bml0eS1kaXJlY3RvcnkgcmV2aWV3IHJ1bm5lci4gYG9ic2lkaWFubWQvbm8tbm9kZWpzLW1vZHVsZXNgXG4gKiBhcnJpdmVzIHZpYSBgb2JzaWRpYW5tZC5jb25maWdzLnJlY29tbWVuZGVkYCAoc2VlIGBnZXRPYnNpZGlhbkxpbnRDb25maWdzYCkgYW5kIGlzIHN0cmljdGx5IHdlYWtlciBvbiBzdGF0aWNcbiAqIGltcG9ydHMgXHUyMDE0IGl0cyBvd24gc291cmNlIHNheXMgXCJTdGF0aWMgaW1wb3J0IGRlY2xhcmF0aW9ucyBjYW4gbmV2ZXIgYmUgZ3VhcmRlZCBhdCBydW50aW1lXCIsIHNvIGl0IHJlcG9ydHMgZXZlcnlcbiAqIGBJbXBvcnREZWNsYXJhdGlvbmAgb2YgYSBidWlsdGluIHVuY29uZGl0aW9uYWxseSBhbmQgb25seSBgaW1wb3J0KClgIC8gYHJlcXVpcmUoKWAgZ2V0IGd1YXJkLWF3YXJlbmVzcy4gSXQgaXNcbiAqIGFsc28gb25lIHRoZSBjb25zdW1lciBDQU5OT1QgV0FJVkU6IHRoZSBkaXJlY3RvcnkgcnVubmVyIHNldHNcbiAqIGBlc2xpbnQtY29tbWVudHMvbm8tcmVzdHJpY3RlZC1kaXNhYmxlOiBbJ2Vycm9yJywgJ29ic2lkaWFubWQvKicsIC4uLl1gLCB3aGl0ZWxpc3Rpbmcgb25seVxuICogYG9ic2lkaWFubWQvdWkvc2VudGVuY2UtY2FzZWAsIHNvIGFuIGlubGluZSBkaXNhYmxlIG9mIGl0IHRyYWRlcyBhIHdhcm5pbmcgZm9yIGFuIGVycm9yIGluIGEgcmV2aWV3LiBUaGF0IGlzIHdoeVxuICogZXZlcnkgZXhlbXB0aW9uIGJlbG93IGhhcyB0byBsaXZlIGhlcmUgaW4gdGhlIHNoYXJlZCBjb25maWcgcmF0aGVyIHRoYW4gYXMgYSBjb21tZW50IGF0IHRoZSBjYWxsIHNpdGUuXG4gKlxuICogT25lIGZ1cnRoZXIgZXhlbXB0aW9uIGRlbGliZXJhdGVseSBsaXZlcyBlbHNld2hlcmU6IGBnZXRJbXBvcnRYQ29uZmlnc2AgdHVybnMgb2ZmIG9ubHkgYGltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzYFxuICogZm9yIGBjb250ZXh0LnNjcmlwdEZpbGVzYC4gSXQgbmVlZHMgbm8gYG9ic2lkaWFubWRgIHR3aW4sIGJlY2F1c2UgYGdldE9ic2lkaWFuTGludENvbmZpZ3NgIHNjb3BlcyB0aGUgb2JzaWRpYW5tZFxuICogcnVsZXMgdG8gYGNvbnRleHQuc291cmNlRmlsZXNgLCBzbyB0aGV5IG5ldmVyIHJlYWNoIHNjcmlwdHMgaW4gdGhlIGZpcnN0IHBsYWNlLlxuICovXG5mdW5jdGlvbiBnZXROb2RlQnVpbHRpbnNDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICAvLyBJbnRlZ3JhdGlvbiB0ZXN0cyBydW4gaW4gYSBOb2RlIGVudmlyb25tZW50IGFuZCBsZWdpdGltYXRlbHkgcmVhZCBmaWxlcyAvIHBhdGhzLCBzbyB0aGUgTm9kZS1idWlsdGlucyBiYW5zIGRvIG5vdCBhcHBseSB0byB0aGVtLlxuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRm9sZGVycy5tYXAoKHNvdXJjZUZvbGRlcikgPT4gam9pbihzb3VyY2VGb2xkZXIsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueUludGVncmF0aW9uVGVzdFRzKSksXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJyxcbiAgICAgICAgJ29ic2lkaWFubWQvbm8tbm9kZWpzLW1vZHVsZXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgLypcbiAgICAgICAqIEEgYGRlc2t0b3AtYCBwcmVmaXhlZCBtb2R1bGUgaXMgZGVza3RvcC1vbmx5IGJ5IGNvbnZlbnRpb246IGl0IGlzIHJlYWNoZWQgb25seSB0aHJvdWdoIGFcbiAgICAgICAqIGBQbGF0Zm9ybS5pc0Rlc2t0b3BBcHBgLWdhdGVkIGR5bmFtaWMgYGltcG9ydCgpYCBpbiBpdHMgY2FsbGVyLCBzbyBpdHMgc3RhdGljIE5vZGUgaW1wb3J0cyBuZXZlclxuICAgICAgICogbG9hZCBvbiBtb2JpbGUuIE5laXRoZXIgcnVsZSBjYW4gc2VlIHRoYXQgZ2F0ZSwgYmVjYXVzZSBpdCBzaXRzIG9uZSBmaWxlIHVwIFx1MjAxNCB0aGUgY29ycmVjdGx5LXdyaXR0ZW4gcGF0dGVyblxuICAgICAgICogcmVwb3J0cyBhbnl3YXksIGFuZCBubyBhdXRob3Itc2lkZSByZXdyaXRlIHNpbGVuY2VzIGl0LlxuICAgICAgICpcbiAgICAgICAqIEV4ZW1wdGluZyBCWSBGSUxFTkFNRSByYXRoZXIgdGhhbiBieSBhIGRpc2FibGUgY29tbWVudCBjYXJyaWVzIGEgdHJhZGUtb2ZmIGtub3dpbmdseTogdGhlIGV4ZW1wdGlvbiBrZXlzXG4gICAgICAgKiBvZmYgd2hhdCB0aGUgZmlsZSBpcyBOQU1FRCByYXRoZXIgdGhhbiB3aGF0IGl0IGRvZXMsIHNvIHRoZSBwcmVmaXggaXMgbG9hZC1iZWFyaW5nLiBBIGRlc2t0b3Atb25seSBtb2R1bGVcbiAgICAgICAqIHRoYXQgc2tpcHMgdGhlIHByZWZpeCBrZWVwcyByZXBvcnRpbmcsIGFuZCBhIGNyb3NzLXBsYXRmb3JtIG1vZHVsZSB0aGF0IHdyb25nbHkgdGFrZXMgaXQgZ2V0cyBhbiBleGVtcHRpb25cbiAgICAgICAqIGl0IHNob3VsZCBub3QgaGF2ZS5cbiAgICAgICAqL1xuICAgICAgZmlsZXM6IGNvbnRleHQuc291cmNlRm9sZGVycy5tYXAoKHNvdXJjZUZvbGRlcikgPT4gam9pbihzb3VyY2VGb2xkZXIsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueVBhdGgsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFueURlc2t0b3BUcykpLFxuICAgICAgcnVsZXM6IHtcbiAgICAgICAgJ2ltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZicsXG4gICAgICAgICdvYnNpZGlhbm1kL25vLW5vZGVqcy1tb2R1bGVzJzogJ29mZidcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIC8qXG4gICAgICAgKiBBIHVuaXQgdGVzdCBydW5zIHVuZGVyIHZpdGVzdCBpbiBOb2RlIGFuZCBpcyBuZXZlciBidW5kbGVkIGludG8gYG1haW4uanNgLCBzbyB0aGUgTm9kZS1idWlsdGlucyBiYW5zIGRvIG5vdFxuICAgICAgICogYXBwbHkgdG8gaXQgZWl0aGVyIFx1MjAxNCB0aGUgaWRlbnRpY2FsIGFyZ3VtZW50IHRoZSBpbnRlZ3JhdGlvbi10ZXN0IGJsb2NrIGFib3ZlIGFscmVhZHkgYWNjZXB0cy4gVGhpcyBhbHNvXG4gICAgICAgKiBjb3ZlcnMgdGhlIFNVVC1ncm91cGVkIGAqLmRlc2t0b3AudGVzdC50c2Agc2hhcGUsIHdoaWNoIG5hbWVzIHRoZSBwbGF0Zm9ybSBhcyBhIGRvdCBzZWdtZW50IGFmdGVyIHRoZVxuICAgICAgICogc3ViamVjdCB1bmRlciB0ZXN0IHJhdGhlciB0aGFuIGFzIGEgYGRlc2t0b3AtYCBwcmVmaXguXG4gICAgICAgKi9cbiAgICAgIGZpbGVzOiBjb250ZXh0LnRlc3RGaWxlcyxcbiAgICAgIHJ1bGVzOiB7XG4gICAgICAgICdpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcyc6ICdvZmYnLFxuICAgICAgICAnb2JzaWRpYW5tZC9uby1ub2RlanMtbW9kdWxlcyc6ICdvZmYnXG4gICAgICB9XG4gICAgfVxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0T2JzaWRpYW5MaW50Q29uZmlncyhjb250ZXh0OiBFc2xpbnRDb25maWdDb250ZXh0KTogTGludGVyLkNvbmZpZ1tdIHtcbiAgY29uc3Qgb2JzaWRpYW5SZWNvbW1lbmRlZENvbmZpZ3MgPSBvYnNpZGlhbm1kLmNvbmZpZ3MucmVjb21tZW5kZWQ7XG5cbiAgLypcbiAgICogQSBidWlsdGluIHRoaXMgY29uZmlnIHNldHMgaXRzZWxmIG11c3Qgbm90IEFMU08gcnVuIHRocm91Z2ggYG9ic2lkaWFubWQvcnVsZS1jdXN0b20tbWVzc2FnZWAsIG9yIGEgY29uc3VtZXIncyBvd25cbiAgICogYCduby1jb25zb2xlJzogJ29mZidgIGlzIGluZXJ0IGFuZCBldmVyeSBjb25zb2xlIGxpbmUgaXMgcmVwb3J0ZWQgdHdpY2UuIFNlZSBgb2JzaWRpYW5tZC1ydWxlLWN1c3RvbS1tZXNzYWdlLnRzYC5cbiAgICovXG4gIGNvbnN0IG93bmVkUnVsZU5hbWVzID0gbmV3IFNldChnZXRFc2xpbnRDb3JlQ29uZmlncyhjb250ZXh0KS5mbGF0TWFwKChjb25maWcpID0+IE9iamVjdC5rZXlzKGNvbmZpZy5ydWxlcyA/PyB7fSkpKTtcblxuICBjb25zdCBzY29wZWRPYnNpZGlhblJlY29tbWVuZGVkQ29uZmlncyA9IG9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzLm1hcCgoY29uZmlnKSA9PiB7XG4gICAgcmV0dXJuIGNvbmZpZy5maWxlcz8uaW5jbHVkZXMoJ3BhY2thZ2UuanNvbicpXG4gICAgICA/IGNvbmZpZ1xuICAgICAgOiB7XG4gICAgICAgIC4uLnN0cmlwT3duZWRSdWxlQ3VzdG9tTWVzc2FnZUVudHJpZXMoeyBjb25maWcsIG93bmVkUnVsZU5hbWVzIH0pLFxuICAgICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGaWxlc1xuICAgICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlZmluZUNvbmZpZyhbXG4gICAge1xuICAgICAgZXh0ZW5kczogW3Njb3BlZE9ic2lkaWFuUmVjb21tZW5kZWRDb25maWdzXSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgb2JzaWRpYW5tZFxuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbmZ1bmN0aW9uIGdldE9ic2lkaWFuT3ZlcnJpZGVDb25maWdzKGNvbnRleHQ6IEVzbGludENvbmZpZ0NvbnRleHQpOiBMaW50ZXIuQ29uZmlnW10ge1xuICByZXR1cm4gZGVmaW5lQ29uZmlnKFtcbiAgICB7XG4gICAgICBmaWxlczogY29udGV4dC5zb3VyY2VGb2xkZXJzLm1hcCgoc291cmNlRm9sZGVyKSA9PiBqb2luKHNvdXJjZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFpblRzKSksXG4gICAgICBydWxlczoge1xuICAgICAgICAnaW1wb3J0LXgvbm8tZGVmYXVsdC1leHBvcnQnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZmlsZXM6IGNvbnRleHQuYWxsRmlsZXMoKSxcbiAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscyc6IG9ic2lkaWFuRGV2VXRpbHNQbHVnaW5cbiAgICAgIH0sXG4gICAgICBydWxlczoge1xuICAgICAgICAvKlxuICAgICAgICAgKiBEZWxpYmVyYXRlbHkgaGVyZSwgb24gYGFsbEZpbGVzKClgLCByYXRoZXIgdGhhbiBiZXNpZGUgYG5vLXVudHJ1c3RlZC1pbnB1dC1ldmVudHNgIGluXG4gICAgICAgICAqIGBnZXRJbnRlZ3JhdGlvblRlc3RDb25maWdzKClgIChvd25lciwgMjAyNi0wOS0wOSkuIEFuIGBldmFsSW5PYnNpZGlhbmAgY2FsbCBpcyB1bm1pc3Rha2FibGUsIHNvIGFcbiAgICAgICAgICogZmlsZSB0aGF0IG1ha2VzIG5vbmUgaXMgdW50b3VjaGVkIGFuZCBhIGJyb2FkIGdsb2IgY29zdHMgbm90aGluZyAtLSB3aGlsZSBzY3JpcHQgY29kZSB0aGF0IGRyaXZlc1xuICAgICAgICAgKiBhIHJlYWwgT2JzaWRpYW4gb3V0c2lkZSBhIHRlc3QgKGBkZW1vLXZhdWx0LWJ1dHRvbnMudHNgKSBpcyB1bmRlciB0aGUgc2FtZSB0cmFuc3BvcnQgY2FwIGFuZCB3b3VsZFxuICAgICAgICAgKiBvdGhlcndpc2UgYmUgZW5mb3JjZWQgbm93aGVyZS5cbiAgICAgICAgICovXG4gICAgICAgICdvYnNpZGlhbi1kZXYtdXRpbHMvbm8tb3Zlci1jYXAtd2FpdC1pbi1ldmFsLWluLW9ic2lkaWFuJzogJ2Vycm9yJyxcbiAgICAgICAgJ29ic2lkaWFuLWRldi11dGlscy9yZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgnOiAnZXJyb3InLFxuICAgICAgICAvKlxuICAgICAgICAgKiBPYnNpZGlhbidzIGBDb21wb25lbnRgIGhhcyBpdHMgb3duIGByZW1vdmVDaGlsZChjb21wb25lbnQpYCBmb3IgdGhlIGNvbXBvbmVudCBsaWZlY3ljbGUsIHVucmVsYXRlZFxuICAgICAgICAgKiB0byBgTm9kZSNyZW1vdmVDaGlsZGAuIFRoZSBydWxlIG1hdGNoZXMgb24gdGhlIG1ldGhvZCBuYW1lIGFsb25lLCBzbyBldmVyeSByZXBvcnQgaGVyZSBpcyBhXG4gICAgICAgICAqIGNvbXBvbmVudCBiZWluZyB1bmxvYWRlZCwgYW5kIGZvbGxvd2luZyB0aGUgYWR2aWNlIGNhbGxzIGEgYHJlbW92ZSgpYCB0aGF0IGRvZXMgbm90IGV4aXN0IC0tIHdoaWNoXG4gICAgICAgICAqIGlzIHdoYXQgYHRzY2Agc2FpZCB3aGVuIHRoZSBmaXhlciB3YXMgbGV0IGxvb3NlIG9uIHRoZW0uXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItZG9tLW5vZGUtcmVtb3ZlJzogJ29mZicsXG4gICAgICAgIC8qXG4gICAgICAgICAqIERpcmVjdGx5IGNvbnRyYWRpY3RzIGBvYnNpZGlhbm1kL25vLWdsb2JhbC10aGlzYDogdGhpcyBydWxlIHJld3JpdGVzIGB3aW5kb3cueGAgdG8gYGdsb2JhbFRoaXMueGAsIGFuZFxuICAgICAgICAgKiB0aGF0IG9uZSBmb3JiaWRzIGBnbG9iYWxUaGlzYCBvdXRyaWdodC4gV2l0aCBib3RoIGVuYWJsZWQsIGAtLWZpeGAgYXBwbGllcyBvbmUgYW5kIHRoZW4gdGhlIG90aGVyXG4gICAgICAgICAqIHJldmVydHMgaXQsIHdoaWNoIEVTTGludCByZXBvcnRzIGFzIGBFU0xpbnRDaXJjdWxhckZpeGVzV2FybmluZ2AgYWNyb3NzIDI5IGZpbGVzLiBPYnNpZGlhbidzIG93blxuICAgICAgICAgKiBndWlkYW5jZSB3aW5zIGluIGFuIE9ic2lkaWFuIGxpYnJhcnksIHNvIHRoaXMgaXMgdGhlIHJ1bGUgdGhhdCBnaXZlcyB3YXkuXG4gICAgICAgICAqL1xuICAgICAgICAndW5pY29ybi9wcmVmZXItZ2xvYmFsLXRoaXMnOiAnb2ZmJ1xuICAgICAgfVxuICAgIH1cbiAgXSk7XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUEsMkJBTU87QUFDUCxrQkFBcUI7QUFFckIsc0NBQXVCO0FBQ3ZCLDZCQUFnQztBQUNoQyxvQkFBNkI7QUFFN0Isd0NBQXdDO0FBQ3hDLDhCQUEyQjtBQUMzQix1Q0FBdUM7QUFDdkMsNENBQW1EO0FBZ0JuRCxNQUFNLHVCQUF1QjtBQVd0QixTQUFTLG9CQUFvQixVQUFzQyxDQUFDLEdBQW9CO0FBQzdGLFFBQU0sY0FBVSx1REFBaUM7QUFFakQsTUFBSSxRQUFRLGFBQWE7QUFDdkIsWUFBUSxZQUFZLE9BQU87QUFBQSxFQUM3QjtBQUVBLFFBQU0sZ0JBQWdCLFFBQVEsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDO0FBRTNELGFBQU87QUFBQSxJQUNMLE9BQUcsNkNBQXVCO0FBQUEsSUFFMUIsR0FBRyx1QkFBdUIsT0FBTztBQUFBLElBQ2pDLE9BQUcsaURBQTJCLEVBQUUsU0FBUyxlQUFlLHlEQUF3QixvQkFBb0IscUJBQXFCLENBQUM7QUFBQSxJQUMxSCxHQUFHLDJCQUEyQixPQUFPO0FBQUEsSUFD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
@@ -0,0 +1,25 @@
1
+ /// <reference path="../index.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * The shared ESLint configuration for Obsidian plugins.
6
+ *
7
+ * It is the generic configuration of `@mnaoumov/typescript-dev-toolkit` plus the Obsidian layers alone:
8
+ * `eslint-plugin-obsidianmd`'s recommended rules, the root `manifest.json` and `LICENSE`, the Node-builtins exemptions
9
+ * of desktop-only modules and tests, the integration-test rules and the Obsidian in-house rules.
10
+ */
11
+ import type { DefineEslintConfigsOptions } from '@mnaoumov/typescript-dev-toolkit/linters/eslint-config' with { 'resolution-mode': 'import' };
12
+ import type { Linter } from 'eslint' with { 'resolution-mode': 'import' };
13
+ import { EslintConfigContext } from '@mnaoumov/typescript-dev-toolkit/linters/eslint-config';
14
+ export type { DefineEslintConfigsOptions };
15
+ export { EslintConfigContext };
16
+ /**
17
+ * Build ESLint configurations.
18
+ *
19
+ * This function builds the ESLint configurations of an Obsidian plugin: the generic configuration of
20
+ * `@mnaoumov/typescript-dev-toolkit` plus the Obsidian layers.
21
+ *
22
+ * @param options - The parameters for defining ESLint configurations.
23
+ * @returns The ESLint configurations.
24
+ */
25
+ export declare function defineEslintConfigs(options?: DefineEslintConfigsOptions): Linter.Config[];
@@ -0,0 +1,201 @@
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 __create = Object.create;
141
+ var __defProp = Object.defineProperty;
142
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
143
+ var __getOwnPropNames = Object.getOwnPropertyNames;
144
+ var __getProtoOf = Object.getPrototypeOf;
145
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
146
+ var __export = (target, all) => {
147
+ for (var name in all)
148
+ __defProp(target, name, { get: all[name], enumerable: true });
149
+ };
150
+ var __copyProps = (to, from, except, desc) => {
151
+ if (from && typeof from === "object" || typeof from === "function") {
152
+ for (let key of __getOwnPropNames(from))
153
+ if (!__hasOwnProp.call(to, key) && key !== except)
154
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
155
+ }
156
+ return to;
157
+ };
158
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
159
+ // If the importer is in node compatibility mode or this is not an ESM
160
+ // file that has been converted to a CommonJS file using a Babel-
161
+ // compatible transform (i.e. "__esModule" has not been set), then set
162
+ // "default" to the CommonJS "module.exports" for node compatibility.
163
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
164
+ mod
165
+ ));
166
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
167
+ var eslint_rules_exports = {};
168
+ __export(eslint_rules_exports, {
169
+ "manifest-description": () => manifest_description,
170
+ "manifest-helpers": () => manifest_helpers,
171
+ "manifest-id": () => manifest_id,
172
+ "manifest-name": () => manifest_name,
173
+ "manifest-schema": () => manifest_schema,
174
+ "no-over-cap-wait-in-eval-in-obsidian": () => no_over_cap_wait_in_eval_in_obsidian,
175
+ "no-untrusted-input-events": () => no_untrusted_input_events,
176
+ "obsidian-dev-utils-plugin": () => obsidian_dev_utils_plugin,
177
+ "require-component-suffix": () => require_component_suffix
178
+ });
179
+ module.exports = __toCommonJS(eslint_rules_exports);
180
+ var manifest_description = __toESM(__extractDefault(require('./manifest-description.cjs')), 1);
181
+ var manifest_helpers = __toESM(__extractDefault(require('./manifest-helpers.cjs')), 1);
182
+ var manifest_id = __toESM(__extractDefault(require('./manifest-id.cjs')), 1);
183
+ var manifest_name = __toESM(__extractDefault(require('./manifest-name.cjs')), 1);
184
+ var manifest_schema = __toESM(__extractDefault(require('./manifest-schema.cjs')), 1);
185
+ var no_over_cap_wait_in_eval_in_obsidian = __toESM(__extractDefault(require('./no-over-cap-wait-in-eval-in-obsidian.cjs')), 1);
186
+ var no_untrusted_input_events = __toESM(__extractDefault(require('./no-untrusted-input-events.cjs')), 1);
187
+ var obsidian_dev_utils_plugin = __toESM(__extractDefault(require('./obsidian-dev-utils-plugin.cjs')), 1);
188
+ var require_component_suffix = __toESM(__extractDefault(require('./require-component-suffix.cjs')), 1);
189
+ // Annotate the CommonJS export names for ESM import in node:
190
+ 0 && (module.exports = {
191
+ "manifest-description": null,
192
+ "manifest-helpers": null,
193
+ "manifest-id": null,
194
+ "manifest-name": null,
195
+ "manifest-schema": null,
196
+ "no-over-cap-wait-in-eval-in-obsidian": null,
197
+ "no-untrusted-input-events": null,
198
+ "obsidian-dev-utils-plugin": null,
199
+ "require-component-suffix": null
200
+ });
201
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ21hbmlmZXN0LWRlc2NyaXB0aW9uJyBmcm9tICcuL21hbmlmZXN0LWRlc2NyaXB0aW9uLnRzJztcbmV4cG9ydCAqIGFzICdtYW5pZmVzdC1oZWxwZXJzJyBmcm9tICcuL21hbmlmZXN0LWhlbHBlcnMudHMnO1xuZXhwb3J0ICogYXMgJ21hbmlmZXN0LWlkJyBmcm9tICcuL21hbmlmZXN0LWlkLnRzJztcbmV4cG9ydCAqIGFzICdtYW5pZmVzdC1uYW1lJyBmcm9tICcuL21hbmlmZXN0LW5hbWUudHMnO1xuZXhwb3J0ICogYXMgJ21hbmlmZXN0LXNjaGVtYScgZnJvbSAnLi9tYW5pZmVzdC1zY2hlbWEudHMnO1xuZXhwb3J0ICogYXMgJ25vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbicgZnJvbSAnLi9uby1vdmVyLWNhcC13YWl0LWluLWV2YWwtaW4tb2JzaWRpYW4udHMnO1xuZXhwb3J0ICogYXMgJ25vLXVudHJ1c3RlZC1pbnB1dC1ldmVudHMnIGZyb20gJy4vbm8tdW50cnVzdGVkLWlucHV0LWV2ZW50cy50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tZGV2LXV0aWxzLXBsdWdpbicgZnJvbSAnLi9vYnNpZGlhbi1kZXYtdXRpbHMtcGx1Z2luLnRzJztcbmV4cG9ydCAqIGFzICdyZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgnIGZyb20gJy4vcmVxdWlyZS1jb21wb25lbnQtc3VmZml4LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUEsZ0NBQUFBO0FBQUEsRUFBQSwwQkFBQUM7QUFBQSxFQUFBLHFCQUFBQztBQUFBLEVBQUEsdUJBQUFDO0FBQUEsRUFBQSx5QkFBQUM7QUFBQSxFQUFBLDhDQUFBQztBQUFBLEVBQUEsbUNBQUFDO0FBQUEsRUFBQSxtQ0FBQUM7QUFBQSxFQUFBLGtDQUFBQztBQUFBO0FBQUE7QUFFQSxJQUFBUix1QkFBd0M7QUFDeEMsSUFBQUMsbUJBQW9DO0FBQ3BDLElBQUFDLGNBQStCO0FBQy9CLElBQUFDLGdCQUFpQztBQUNqQyxJQUFBQyxrQkFBbUM7QUFDbkMsSUFBQUMsdUNBQXdEO0FBQ3hELElBQUFDLDRCQUE2QztBQUM3QyxJQUFBQyw0QkFBNkM7QUFDN0MsSUFBQUMsMkJBQTRDOyIsCiAgIm5hbWVzIjogWyJtYW5pZmVzdC1kZXNjcmlwdGlvbiIsICJtYW5pZmVzdC1oZWxwZXJzIiwgIm1hbmlmZXN0LWlkIiwgIm1hbmlmZXN0LW5hbWUiLCAibWFuaWZlc3Qtc2NoZW1hIiwgIm5vLW92ZXItY2FwLXdhaXQtaW4tZXZhbC1pbi1vYnNpZGlhbiIsICJuby11bnRydXN0ZWQtaW5wdXQtZXZlbnRzIiwgIm9ic2lkaWFuLWRldi11dGlscy1wbHVnaW4iLCAicmVxdWlyZS1jb21wb25lbnQtc3VmZml4Il0KfQo=
@@ -0,0 +1,10 @@
1
+ /// <reference path="../../index.d.cts" />
2
+ export * as 'manifest-description' from './manifest-description.cjs';
3
+ export * as 'manifest-helpers' from './manifest-helpers.cjs';
4
+ export * as 'manifest-id' from './manifest-id.cjs';
5
+ export * as 'manifest-name' from './manifest-name.cjs';
6
+ export * as 'manifest-schema' from './manifest-schema.cjs';
7
+ export * as 'no-over-cap-wait-in-eval-in-obsidian' from './no-over-cap-wait-in-eval-in-obsidian.cjs';
8
+ export * as 'no-untrusted-input-events' from './no-untrusted-input-events.cjs';
9
+ export * as 'obsidian-dev-utils-plugin' from './obsidian-dev-utils-plugin.cjs';
10
+ export * as 'require-component-suffix' from './require-component-suffix.cjs';