@mnaoumov/obsidian-dev-toolkit 0.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -1
  3. package/bundlers/esbuild/package.json +6 -0
  4. package/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin/package.json +6 -0
  5. package/bundlers/esbuild-impl/dependency/package.json +6 -0
  6. package/bundlers/esbuild-impl/fix-source-maps-plugin/package.json +6 -0
  7. package/bundlers/esbuild-impl/index/package.json +6 -0
  8. package/bundlers/esbuild-impl/obsidian-plugin-builder/package.json +6 -0
  9. package/bundlers/esbuild-impl/package.json +6 -0
  10. package/bundlers/esbuild-impl/preprocess-plugin/package.json +6 -0
  11. package/bundlers/esbuild-impl/rename-css-plugin/package.json +6 -0
  12. package/bundlers/index/package.json +6 -0
  13. package/bundlers/package.json +6 -0
  14. package/dist/demo-vault-helper/main.js +1264 -0
  15. package/dist/demo-vault-helper/manifest.json +9 -0
  16. package/dist/integration-test-plugin/main.js +54167 -0
  17. package/dist/integration-test-plugin/manifest.json +8 -0
  18. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +322 -0
  19. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +38 -0
  20. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +240 -0
  21. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +20 -0
  22. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +213 -0
  23. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +34 -0
  24. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +179 -0
  25. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +7 -0
  26. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +362 -0
  27. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +98 -0
  28. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +234 -0
  29. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +30 -0
  30. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +171 -0
  31. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +14 -0
  32. package/dist/lib/cjs/bundlers/esbuild.cjs +164 -0
  33. package/dist/lib/cjs/bundlers/esbuild.d.cts +11 -0
  34. package/dist/lib/cjs/bundlers/index.cjs +167 -0
  35. package/dist/lib/cjs/bundlers/index.d.cts +3 -0
  36. package/dist/lib/cjs/demo-vault-app-json.cjs +186 -0
  37. package/dist/lib/cjs/demo-vault-app-json.d.cts +93 -0
  38. package/dist/lib/cjs/demo-vault-buttons.cjs +567 -0
  39. package/dist/lib/cjs/demo-vault-buttons.d.cts +259 -0
  40. package/dist/lib/cjs/demo-vault-coverage.cjs +713 -0
  41. package/dist/lib/cjs/demo-vault-coverage.d.cts +533 -0
  42. package/dist/lib/cjs/demo-vault.cjs +296 -0
  43. package/dist/lib/cjs/demo-vault.d.cts +33 -0
  44. package/dist/lib/cjs/formatters/dprint.cjs +160 -0
  45. package/dist/lib/cjs/formatters/dprint.d.cts +15 -0
  46. package/dist/lib/cjs/formatters/index.cjs +164 -0
  47. package/dist/lib/cjs/formatters/index.d.cts +2 -0
  48. package/dist/lib/cjs/index.cjs +194 -0
  49. package/dist/lib/cjs/index.d.cts +16 -0
  50. package/dist/lib/cjs/integration-test-setup.cjs +129 -0
  51. package/dist/lib/cjs/integration-test-setup.d.cts +33 -0
  52. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +163 -0
  53. package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +39 -0
  54. package/dist/lib/cjs/jest-setup.cjs +134 -0
  55. package/dist/lib/cjs/jest-setup.d.cts +13 -0
  56. package/dist/lib/cjs/linters/eslint-config.cjs +403 -0
  57. package/dist/lib/cjs/linters/eslint-config.d.cts +25 -0
  58. package/dist/lib/cjs/linters/eslint-rules/index.cjs +200 -0
  59. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +14 -0
  60. package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +255 -0
  61. package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +54 -0
  62. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +218 -0
  63. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +141 -0
  64. package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +215 -0
  65. package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +32 -0
  66. package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +216 -0
  67. package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +30 -0
  68. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +316 -0
  69. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +45 -0
  70. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +259 -0
  71. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +10 -0
  72. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +657 -0
  73. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +10 -0
  74. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +247 -0
  75. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +10 -0
  76. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +181 -0
  77. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +13 -0
  78. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +263 -0
  79. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +30 -0
  80. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +215 -0
  81. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +29 -0
  82. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +278 -0
  83. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +18 -0
  84. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +306 -0
  85. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +10 -0
  86. package/dist/lib/cjs/linters/eslint.cjs +160 -0
  87. package/dist/lib/cjs/linters/eslint.d.cts +15 -0
  88. package/dist/lib/cjs/linters/index.cjs +185 -0
  89. package/dist/lib/cjs/linters/index.d.cts +9 -0
  90. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +171 -0
  91. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +12 -0
  92. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +164 -0
  93. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
  94. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +246 -0
  95. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +32 -0
  96. package/dist/lib/cjs/linters/markdownlint.cjs +160 -0
  97. package/dist/lib/cjs/linters/markdownlint.d.cts +15 -0
  98. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +176 -0
  99. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +40 -0
  100. package/dist/lib/cjs/linters/plugin-names.cjs +249 -0
  101. package/dist/lib/cjs/linters/plugin-names.d.cts +81 -0
  102. package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +216 -0
  103. package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +253 -0
  104. package/dist/lib/cjs/setup.cjs +163 -0
  105. package/dist/lib/cjs/setup.d.cts +21 -0
  106. package/dist/lib/cjs/templates.cjs +172 -0
  107. package/dist/lib/cjs/templates.d.cts +13 -0
  108. package/dist/lib/cjs/test-runners/index.cjs +170 -0
  109. package/dist/lib/cjs/test-runners/index.d.cts +4 -0
  110. package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +211 -0
  111. package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +44 -0
  112. package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +157 -0
  113. package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +27 -0
  114. package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +217 -0
  115. package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +86 -0
  116. package/dist/lib/cjs/test-runners/vitest-config.cjs +484 -0
  117. package/dist/lib/cjs/test-runners/vitest-config.d.cts +200 -0
  118. package/dist/lib/cjs/version.cjs +262 -0
  119. package/dist/lib/cjs/version.d.cts +92 -0
  120. package/dist/lib/cjs/vitest-setup.cjs +134 -0
  121. package/dist/lib/cjs/vitest-setup.d.cts +11 -0
  122. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +38 -0
  123. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +218 -0
  124. package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +20 -0
  125. package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +130 -0
  126. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +34 -0
  127. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +108 -0
  128. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +7 -0
  129. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +56 -0
  130. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +98 -0
  131. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +247 -0
  132. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +30 -0
  133. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +126 -0
  134. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +14 -0
  135. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +63 -0
  136. package/dist/lib/esm/bundlers/esbuild.d.mts +11 -0
  137. package/dist/lib/esm/bundlers/esbuild.mjs +58 -0
  138. package/dist/lib/esm/bundlers/index.d.mts +3 -0
  139. package/dist/lib/esm/bundlers/index.mjs +48 -0
  140. package/dist/lib/esm/demo-vault-app-json.d.mts +93 -0
  141. package/dist/lib/esm/demo-vault-app-json.mjs +75 -0
  142. package/dist/lib/esm/demo-vault-buttons.d.mts +259 -0
  143. package/dist/lib/esm/demo-vault-buttons.mjs +452 -0
  144. package/dist/lib/esm/demo-vault-coverage.d.mts +533 -0
  145. package/dist/lib/esm/demo-vault-coverage.mjs +619 -0
  146. package/dist/lib/esm/demo-vault.d.mts +33 -0
  147. package/dist/lib/esm/demo-vault.mjs +197 -0
  148. package/dist/lib/esm/formatters/dprint.d.mts +15 -0
  149. package/dist/lib/esm/formatters/dprint.mjs +52 -0
  150. package/dist/lib/esm/formatters/index.d.mts +2 -0
  151. package/dist/lib/esm/formatters/index.mjs +46 -0
  152. package/dist/lib/esm/index.d.mts +16 -0
  153. package/dist/lib/esm/index.mjs +66 -0
  154. package/dist/lib/esm/integration-test-setup.d.mts +33 -0
  155. package/dist/lib/esm/integration-test-setup.mjs +44 -0
  156. package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +39 -0
  157. package/dist/lib/esm/integration-test-vitest-global-setup.mjs +57 -0
  158. package/dist/lib/esm/jest-setup.d.mts +13 -0
  159. package/dist/lib/esm/jest-setup.mjs +53 -0
  160. package/dist/lib/esm/linters/eslint-config.d.mts +25 -0
  161. package/dist/lib/esm/linters/eslint-config.mjs +290 -0
  162. package/dist/lib/esm/linters/eslint-rules/index.d.mts +14 -0
  163. package/dist/lib/esm/linters/eslint-rules/index.mjs +70 -0
  164. package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +54 -0
  165. package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +146 -0
  166. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +141 -0
  167. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +90 -0
  168. package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +32 -0
  169. package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +109 -0
  170. package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +30 -0
  171. package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +110 -0
  172. package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +45 -0
  173. package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +212 -0
  174. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +10 -0
  175. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +150 -0
  176. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +10 -0
  177. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +551 -0
  178. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +10 -0
  179. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +138 -0
  180. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +13 -0
  181. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +73 -0
  182. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.d.mts +30 -0
  183. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +157 -0
  184. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +29 -0
  185. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +108 -0
  186. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +18 -0
  187. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +167 -0
  188. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +10 -0
  189. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +197 -0
  190. package/dist/lib/esm/linters/eslint.d.mts +15 -0
  191. package/dist/lib/esm/linters/eslint.mjs +52 -0
  192. package/dist/lib/esm/linters/index.d.mts +9 -0
  193. package/dist/lib/esm/linters/index.mjs +60 -0
  194. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +12 -0
  195. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +66 -0
  196. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
  197. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +46 -0
  198. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +32 -0
  199. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +130 -0
  200. package/dist/lib/esm/linters/markdownlint.d.mts +15 -0
  201. package/dist/lib/esm/linters/markdownlint.mjs +52 -0
  202. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +40 -0
  203. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +67 -0
  204. package/dist/lib/esm/linters/plugin-names.d.mts +81 -0
  205. package/dist/lib/esm/linters/plugin-names.mjs +141 -0
  206. package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +253 -0
  207. package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +108 -0
  208. package/dist/lib/esm/setup.d.mts +21 -0
  209. package/dist/lib/esm/setup.mjs +55 -0
  210. package/dist/lib/esm/templates.d.mts +13 -0
  211. package/dist/lib/esm/templates.mjs +57 -0
  212. package/dist/lib/esm/test-runners/index.d.mts +4 -0
  213. package/dist/lib/esm/test-runners/index.mjs +50 -0
  214. package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +44 -0
  215. package/dist/lib/esm/test-runners/integration-test-plugin.mjs +94 -0
  216. package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +27 -0
  217. package/dist/lib/esm/test-runners/performance-eval-cap.mjs +48 -0
  218. package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +86 -0
  219. package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +115 -0
  220. package/dist/lib/esm/test-runners/vitest-config.d.mts +200 -0
  221. package/dist/lib/esm/test-runners/vitest-config.mjs +369 -0
  222. package/dist/lib/esm/version.d.mts +92 -0
  223. package/dist/lib/esm/version.mjs +160 -0
  224. package/dist/lib/esm/vitest-setup.d.mts +11 -0
  225. package/dist/lib/esm/vitest-setup.mjs +53 -0
  226. package/dist/templates/.markdownlint-cli2.mjs +4 -0
  227. package/dist/templates/.nano-staged.mjs +4 -0
  228. package/dist/templates/commitlint.config.ts +3 -0
  229. package/dist/templates/dprint.json +26 -0
  230. package/dist/templates/eslint.config.mts +3 -0
  231. package/dist/templates/scripts/build/build-clean.ts +4 -0
  232. package/dist/templates/scripts/build/build-compile-svelte.ts +4 -0
  233. package/dist/templates/scripts/build/build-compile-typescript.ts +4 -0
  234. package/dist/templates/scripts/build/build-compile.ts +4 -0
  235. package/dist/templates/scripts/build/build-templates.ts +4 -0
  236. package/dist/templates/scripts/bundlers/esbuild/build.ts +4 -0
  237. package/dist/templates/scripts/bundlers/esbuild/dev.ts +4 -0
  238. package/dist/templates/scripts/commitlint-config.ts +3 -0
  239. package/dist/templates/scripts/eslint-config.ts +10 -0
  240. package/dist/templates/scripts/formatters/dprint/format-check.ts +8 -0
  241. package/dist/templates/scripts/formatters/dprint/format.ts +8 -0
  242. package/dist/templates/scripts/gate/gate.ts +10 -0
  243. package/dist/templates/scripts/linters/cspell/spellcheck.ts +8 -0
  244. package/dist/templates/scripts/linters/eslint/lint-fix.ts +8 -0
  245. package/dist/templates/scripts/linters/eslint/lint.ts +8 -0
  246. package/dist/templates/scripts/linters/markdownlint/lint-md-fix.ts +8 -0
  247. package/dist/templates/scripts/linters/markdownlint/lint-md.ts +8 -0
  248. package/dist/templates/scripts/linters/over-exposure/find-overexposed-fix.ts +25 -0
  249. package/dist/templates/scripts/linters/over-exposure/find-overexposed.ts +15 -0
  250. package/dist/templates/scripts/markdownlint-cli2-config.ts +3 -0
  251. package/dist/templates/scripts/nano-staged-config.ts +3 -0
  252. package/dist/templates/scripts/test-runners/vitest/test-coverage.ts +4 -0
  253. package/dist/templates/scripts/test-runners/vitest/test-watch.ts +4 -0
  254. package/dist/templates/scripts/test-runners/vitest/test.ts +4 -0
  255. package/dist/templates/scripts/version/version.ts +10 -0
  256. package/dist/templates/scripts/vitest-config.ts +3 -0
  257. package/dist/templates/vitest.config.ts +3 -0
  258. package/formatters/dprint/package.json +6 -0
  259. package/formatters/index/package.json +6 -0
  260. package/formatters/package.json +6 -0
  261. package/linters/eslint/package.json +6 -0
  262. package/linters/eslint-config/package.json +6 -0
  263. package/linters/eslint-rules/index/package.json +6 -0
  264. package/linters/eslint-rules/manifest-description/package.json +6 -0
  265. package/linters/eslint-rules/manifest-helpers/package.json +6 -0
  266. package/linters/eslint-rules/manifest-id/package.json +6 -0
  267. package/linters/eslint-rules/manifest-name/package.json +6 -0
  268. package/linters/eslint-rules/manifest-schema/package.json +6 -0
  269. package/linters/eslint-rules/no-local-obsidian-internals/package.json +6 -0
  270. package/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian/package.json +6 -0
  271. package/linters/eslint-rules/no-untrusted-input-events/package.json +6 -0
  272. package/linters/eslint-rules/obsidian-dev-utils-plugin/package.json +6 -0
  273. package/linters/eslint-rules/package.json +6 -0
  274. package/linters/eslint-rules/plugin-name-as-code/package.json +6 -0
  275. package/linters/eslint-rules/plugin-name-as-code-in-ui/package.json +6 -0
  276. package/linters/eslint-rules/require-component-suffix/package.json +6 -0
  277. package/linters/eslint-rules/require-plugin-api-contract-schemas/package.json +6 -0
  278. package/linters/index/package.json +6 -0
  279. package/linters/markdownlint/package.json +6 -0
  280. package/linters/markdownlint-cli2-config/package.json +6 -0
  281. package/linters/markdownlint-rules/index/package.json +6 -0
  282. package/linters/markdownlint-rules/package.json +6 -0
  283. package/linters/markdownlint-rules/plugin-name-as-code/package.json +6 -0
  284. package/linters/obsidianmd-rule-custom-message/package.json +6 -0
  285. package/linters/package.json +6 -0
  286. package/linters/plugin-names/package.json +6 -0
  287. package/package.json +302 -13
  288. package/test-runners/index/package.json +6 -0
  289. package/test-runners/integration-test-plugin/package.json +6 -0
  290. package/test-runners/package.json +6 -0
  291. package/test-runners/performance-eval-cap/package.json +6 -0
  292. package/test-runners/stale-build-global-setup/package.json +6 -0
  293. package/test-runners/vitest-config/package.json +6 -0
@@ -0,0 +1,296 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return "/";
17
+ },
18
+ env: {},
19
+ platform: "android"
20
+ };
21
+ const existingProcess = globalThis.process;
22
+ if (!existingProcess) {
23
+ globalThis.process = browserProcess;
24
+ return;
25
+ }
26
+ if (existingProcess.versions?.node) {
27
+ return;
28
+ }
29
+ const existingProcessRecord = existingProcess;
30
+ for (const [key, value] of Object.entries(browserProcess)) {
31
+ existingProcessRecord[key] ??= value;
32
+ }
33
+ existingProcessRecord["browser"] = true;
34
+ }
35
+
36
+ function keepName($unknown) {
37
+ return $unknown;
38
+ }
39
+
40
+ (function initCjs() {
41
+ const globalThisRecord = globalThis;
42
+ ensureDisposeSymbols();
43
+ globalThisRecord["__name"] ??= keepName;
44
+ globalThisRecord["__extractDefault"] ??= extractDefault;
45
+ ensureBrowserProcess();
46
+ function extractDefault(module) {
47
+ return module && module.__esModule && "default" in module ? module.default : module;
48
+ }
49
+ })();
50
+ })();
51
+ (function patchObsidianRequire() {
52
+ const originalRequire = require;
53
+ if (!originalRequire || originalRequire.__isPatched) {
54
+ return;
55
+ }
56
+
57
+ require = Object.assign(
58
+ (id) => requirePatched(id),
59
+ originalRequire,
60
+ {
61
+ __isPatched: true
62
+ }
63
+ );
64
+
65
+ function extractDefault(module) {
66
+ return module && module.__esModule && 'default' in module ? module.default : module;
67
+ }
68
+
69
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
70
+ '@codemirror/autocomplete',
71
+ '@codemirror/collab',
72
+ '@codemirror/commands',
73
+ '@codemirror/language',
74
+ '@codemirror/lint',
75
+ '@codemirror/search',
76
+ '@codemirror/state',
77
+ '@codemirror/text',
78
+ '@codemirror/view',
79
+ '@lezer/common',
80
+ '@lezer/highlight',
81
+ '@lezer/lr',
82
+ 'obsidian']
83
+ );
84
+
85
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
86
+ '@codemirror/closebrackets',
87
+ '@codemirror/comment',
88
+ '@codemirror/fold',
89
+ '@codemirror/gutter',
90
+ '@codemirror/highlight',
91
+ '@codemirror/history',
92
+ '@codemirror/matchbrackets',
93
+ '@codemirror/panel',
94
+ '@codemirror/rangeset',
95
+ '@codemirror/rectangular-selection',
96
+ '@codemirror/stream-parser',
97
+ '@codemirror/tooltip']
98
+ );
99
+
100
+ function requirePatched(id) {
101
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
102
+ return originalRequire?.(id);
103
+ }
104
+
105
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
106
+ if (globalThis.app.isMobile) {
107
+ if (id === 'process' || id === 'node:process') {
108
+ // eslint-disable-next-line no-console -- Valid usage.
109
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
110
+
111
+ return process;
112
+ }
113
+ } else {
114
+ const module = originalRequire?.(id);
115
+ if (module) {
116
+ return extractDefault(module);
117
+ }
118
+ }
119
+
120
+ // eslint-disable-next-line no-console -- Valid usage.
121
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
122
+ return {};
123
+ }
124
+ })();
125
+
126
+ "use strict";
127
+ var __defProp = Object.defineProperty;
128
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
129
+ var __getOwnPropNames = Object.getOwnPropertyNames;
130
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
131
+ var __export = (target, all) => {
132
+ for (var name in all)
133
+ __defProp(target, name, { get: all[name], enumerable: true });
134
+ };
135
+ var __copyProps = (to, from, except, desc) => {
136
+ if (from && typeof from === "object" || typeof from === "function") {
137
+ for (let key of __getOwnPropNames(from))
138
+ if (!__hasOwnProp.call(to, key) && key !== except)
139
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
140
+ }
141
+ return to;
142
+ };
143
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
144
+ var demo_vault_exports = {};
145
+ __export(demo_vault_exports, {
146
+ archivePluginDemoVault: () => archivePluginDemoVault
147
+ });
148
+ module.exports = __toCommonJS(demo_vault_exports);
149
+ var import_demo_vault_naming = require('@mnaoumov/obsidian-lib/demo-vault-naming');
150
+ var import_fs = require('@mnaoumov/typescript-dev-toolkit/fs');
151
+ var import_root = require('@mnaoumov/typescript-dev-toolkit/root');
152
+ var import_path = require('@mnaoumov/typescript-lib/path');
153
+ var import_fflate = require('fflate');
154
+ var import_node_fs = require('node:fs');
155
+ var import_promises = require('node:fs/promises');
156
+ var import_demo_vault_app_json = require('./demo-vault-app-json.cjs');
157
+ var import_obsidian_plugin_repo_paths = require('./obsidian-plugin-repo-paths.cjs');
158
+ var __import_meta_url = globalThis["import.meta.url"] ?? (function getObsidianCjsImportMetaUrl() {
159
+ if (typeof __filename === "string") {
160
+ const localRequire = require;
161
+ const url = localRequire("node:url");
162
+ if (typeof url.pathToFileURL === "function") {
163
+ return url.pathToFileURL(__filename).href;
164
+ }
165
+ }
166
+ return typeof window === "undefined" ? "" : activeWindow.location.href;
167
+ })();
168
+ const DEMO_VAULT_HELPER_PLUGIN_ID = "demo-vault-helper";
169
+ const DATA_JSON_FILE_NAME = "data.json";
170
+ const DATA_JSON_INDENT = 2;
171
+ const README_FILE_NAME = "README.md";
172
+ const OPENING_HEADING_REG_EXP = /^# .*/;
173
+ async function archivePluginDemoVault() {
174
+ const demoVaultPath = (0, import_root.resolvePathFromRootSafe)({ path: import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DemoVault });
175
+ if (!(0, import_node_fs.existsSync)(demoVaultPath)) {
176
+ return null;
177
+ }
178
+ const manifestPath = (0, import_root.resolvePathFromRootSafe)({ path: import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.ManifestJson });
179
+ const manifest = JSON.parse(await (0, import_promises.readFile)(manifestPath, "utf-8"));
180
+ const pluginFolder = (0, import_root.resolvePathFromRootSafe)({
181
+ path: (0, import_path.join)(
182
+ import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DemoVault,
183
+ import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DotObsidian,
184
+ import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.Plugins,
185
+ manifest.id
186
+ )
187
+ });
188
+ await (0, import_promises.mkdir)(pluginFolder, { recursive: true });
189
+ const distBuildPath = (0, import_root.resolvePathFromRootSafe)({ path: import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DistBuild });
190
+ await (0, import_promises.cp)(distBuildPath, pluginFolder, { recursive: true });
191
+ await injectDemoVaultHelper(manifest.id);
192
+ const zipPath = (0, import_root.resolvePathFromRootSafe)({
193
+ path: (0, import_path.join)(import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DistBuild, (0, import_demo_vault_naming.getDemoVaultArchiveFileName)(manifest.id))
194
+ });
195
+ const rootFolderName = (0, import_demo_vault_naming.getDemoVaultFolderName)({
196
+ pluginId: manifest.id,
197
+ version: manifest.version
198
+ });
199
+ const entries = await readDemoVaultEntries({
200
+ demoVaultPath,
201
+ rootFolderName
202
+ });
203
+ injectAppJson({
204
+ appJson: await readCommittedAppJson(),
205
+ entries,
206
+ rootFolderName
207
+ });
208
+ injectReadmeVersion({
209
+ entries,
210
+ rootFolderName,
211
+ version: manifest.version
212
+ });
213
+ await (0, import_promises.writeFile)(zipPath, (0, import_fflate.zipSync)(Object.fromEntries(entries)));
214
+ return zipPath;
215
+ }
216
+ function injectAppJson(params) {
217
+ const {
218
+ appJson,
219
+ entries,
220
+ rootFolderName
221
+ } = params;
222
+ const entryName = (0, import_path.join)(rootFolderName, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DotObsidian, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AppJson);
223
+ entries.set(entryName, Buffer.from((0, import_demo_vault_app_json.buildArchivedDemoVaultAppJsonContent)({ appJson }), "utf-8"));
224
+ }
225
+ async function injectDemoVaultHelper(demoedPluginId) {
226
+ const packageFolder = (0, import_root.getRootFolder)((0, import_path.getFolderName)(__import_meta_url));
227
+ if (!packageFolder) {
228
+ throw new Error("Could not resolve the obsidian-dev-utils package folder to inject the demo-vault-helper plugin.");
229
+ }
230
+ const helperSourcePath = (0, import_path.join)(packageFolder, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DistDemoVaultHelper);
231
+ const helperFolder = (0, import_root.resolvePathFromRootSafe)({
232
+ path: (0, import_path.join)(
233
+ import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DemoVault,
234
+ import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DotObsidian,
235
+ import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.Plugins,
236
+ DEMO_VAULT_HELPER_PLUGIN_ID
237
+ )
238
+ });
239
+ await (0, import_promises.mkdir)(helperFolder, { recursive: true });
240
+ await (0, import_promises.cp)(helperSourcePath, helperFolder, { recursive: true });
241
+ const settings = { demoedPluginId };
242
+ await (0, import_promises.writeFile)((0, import_path.join)(helperFolder, DATA_JSON_FILE_NAME), `${JSON.stringify(settings, null, DATA_JSON_INDENT)}
243
+ `, "utf-8");
244
+ }
245
+ function injectReadmeVersion(params) {
246
+ const {
247
+ entries,
248
+ rootFolderName,
249
+ version
250
+ } = params;
251
+ const entryName = (0, import_path.join)(rootFolderName, README_FILE_NAME);
252
+ const entry = entries.get(entryName);
253
+ if (!entry) {
254
+ return;
255
+ }
256
+ const content = entry.toString("utf-8");
257
+ const versionedContent = content.replace(OPENING_HEADING_REG_EXP, (heading) => `${heading} v${version}`);
258
+ if (versionedContent === content) {
259
+ return;
260
+ }
261
+ entries.set(entryName, Buffer.from(versionedContent, "utf-8"));
262
+ }
263
+ async function readCommittedAppJson() {
264
+ const appJsonPath = (0, import_root.resolvePathFromRootSafe)({
265
+ path: (0, import_path.join)(import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DemoVault, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DotObsidian, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.AppJson)
266
+ });
267
+ const content = (0, import_node_fs.existsSync)(appJsonPath) ? await (0, import_promises.readFile)(appJsonPath, "utf-8") : null;
268
+ const appJson = (0, import_demo_vault_app_json.parseDemoVaultAppJson)({ content, path: appJsonPath });
269
+ const ownedSettings = (0, import_demo_vault_app_json.findOwnedDemoVaultAppJsonSettings)({ appJson });
270
+ if (ownedSettings.length > 0) {
271
+ throw new Error(
272
+ `${appJsonPath} sets ${ownedSettings.join(", ")}, which obsidian-dev-utils owns and writes into the archived demo vault. Settings it owns must not be committed.`
273
+ );
274
+ }
275
+ return appJson;
276
+ }
277
+ async function readDemoVaultEntries(params) {
278
+ const {
279
+ demoVaultPath,
280
+ rootFolderName
281
+ } = params;
282
+ const entries = /* @__PURE__ */ new Map();
283
+ for (const dirent of await (0, import_fs.readdirPosix)(demoVaultPath, { recursive: true, withFileTypes: true })) {
284
+ if (!dirent.isFile()) {
285
+ continue;
286
+ }
287
+ const path = (0, import_path.join)(dirent.parentPath, dirent.name);
288
+ entries.set((0, import_path.join)(rootFolderName, (0, import_path.relative)(demoVaultPath, path)), await (0, import_promises.readFile)(path));
289
+ }
290
+ return entries;
291
+ }
292
+ // Annotate the CommonJS export names for ESM import in node:
293
+ 0 && (module.exports = {
294
+ archivePluginDemoVault
295
+ });
296
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2RlbW8tdmF1bHQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/IChmdW5jdGlvbiBnZXRPYnNpZGlhbkNqc0ltcG9ydE1ldGFVcmwoKSB7XG4gIGlmICh0eXBlb2YgX19maWxlbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBsb2NhbFJlcXVpcmUgPSByZXF1aXJlO1xuICAgIGNvbnN0IHVybCA9IGxvY2FsUmVxdWlyZSgnbm9kZTp1cmwnKTtcbiAgICBpZiAodHlwZW9mIHVybC5wYXRoVG9GaWxlVVJMID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdXJsLnBhdGhUb0ZpbGVVUkwoX19maWxlbmFtZSkuaHJlZjtcbiAgICB9XG4gIH1cblxuICAvLyBGYWxsYmFjayB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gJycgOiBhY3RpdmVXaW5kb3cubG9jYXRpb24uaHJlZjtcbn0pKCk7XG4vKipcbiAqIEBmaWxlXG4gKlxuICogQXJjaGl2ZXMgYSBwbHVnaW4ncyBkZW1vIHZhdWx0IGFzIGEgcmVsZWFzZSBhcnRpZmFjdC5cbiAqXG4gKiBBIHBsdWdpbiBjYW4gc2hpcCBhIGN1cmF0ZWQgZGVtbyB2YXVsdCBhdCBgZGVtby12YXVsdC9gIGluIGl0cyByZXBvIHJvb3QuIEF0IHJlbGVhc2UgdGltZSB0aGlzXG4gKiBtb2R1bGUgaW5zdGFsbHMgdGhlIGZyZXNobHkgYnVpbHQgcGx1Z2luIGludG8gdGhhdCB2YXVsdCdzIGAub2JzaWRpYW4vcGx1Z2lucy88aWQ+L2AgZm9sZGVyIGFuZFxuICogemlwcyB0aGUgd2hvbGUgdmF1bHQgaW50byBgZGlzdC9idWlsZC88cGx1Z2luLWlkPi1kZW1vLXZhdWx0LnppcGAsIHNvIHRoZSBleGlzdGluZyBHaXRIdWItcmVsZWFzZVxuICogc3RlcCAod2hpY2ggdXBsb2FkcyBldmVyeSBmaWxlIGluIGBkaXN0L2J1aWxkL2ApIGF0dGFjaGVzIGl0IGF1dG9tYXRpY2FsbHkuXG4gKlxuICogVGhlIHZlcnNpb24gaXMgZGVsaWJlcmF0ZWx5IGFic2VudCBmcm9tIHRoYXQgbmFtZSBhbmQgbGl2ZXMgSU5TSURFIHRoZSBhcmNoaXZlIGluc3RlYWQgXHUyMDE0IHNlZVxuICogYG9ic2lkaWFuL2RlbW8tdmF1bHQtbmFtaW5nLnRzYCBmb3Igd2h5IFx1MjAxNCBpbiB0aGUgdHdvIHBsYWNlcyBhIHBlcnNvbiBhY3R1YWxseSBtZWV0cyBpdDogdGhlIHZhdWx0XG4gKiBzaXRzIHVuZGVyIGEgc2luZ2xlIGA8cGx1Z2luLWlkPi1kZW1vLXZhdWx0LTx2ZXJzaW9uPi9gIGZvbGRlciwgc28gdW56aXBwaW5nIHNldmVyYWwgcmVsZWFzZXMgYnkgaGFuZFxuICogaW50byBvbmUgZm9sZGVyIG5laXRoZXIgY29sbGlkZXMgbm9yIHByb2R1Y2VzIGFub255bW91cyBkaXJlY3RvcmllcywgYW5kIHRoZSB2YXVsdCdzIGBSRUFETUUubWRgXG4gKiBoZWFkaW5nIGdhaW5zIHRoZSB2ZXJzaW9uIGl0IGRlbW9uc3RyYXRlcy5cbiAqXG4gKiBUaGUgYXJjaGl2ZWQgY29weSBhbHNvIGNhcnJpZXMgdGhlIGAub2JzaWRpYW4vYXBwLmpzb25gIHNldHRpbmdzIHRoaXMgcGFja2FnZSBvd25zIChzZWVcbiAqIGBkZW1vLXZhdWx0LWFwcC1qc29uLnRzYCkuIFRob3NlIHNldHRpbmdzIGFuZCB0aGUgUkVBRE1FIGhlYWRpbmcgYXJlIHdyaXR0ZW4gaW50byB0aGUgWklQIEVOVFJZIGFuZFxuICogbmV2ZXIgaW50byB0aGUgcmVwbyBmb2xkZXI6IGJvdGggZmlsZXMgYXJlIHRyYWNrZWQsIGFuZCBgdXBkYXRlVmVyc2lvbmAgYXJjaGl2ZXMgYWZ0ZXIgaXQgaGFzIGFscmVhZHlcbiAqIHB1c2hlZCwgc28gYW4gaW4tcGxhY2Ugd3JpdGUgd291bGQgbGVhdmUgYW4gdW5jb21taXR0ZWQgY2hhbmdlIGJlaGluZCBhIHB1Ymxpc2hlZCByZWxlYXNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3MgfSBmcm9tICdAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliL2RlbW8tdmF1bHQtaGVscGVyLXNldHRpbmdzJztcblxuaW1wb3J0IHtcbiAgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lLFxuICBnZXREZW1vVmF1bHRGb2xkZXJOYW1lXG59IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1saWIvZGVtby12YXVsdC1uYW1pbmcnO1xuaW1wb3J0IHsgcmVhZGRpclBvc2l4IH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvZnMnO1xuaW1wb3J0IHtcbiAgZ2V0Um9vdEZvbGRlcixcbiAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmVcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvcm9vdCc7XG5pbXBvcnQge1xuICBnZXRGb2xkZXJOYW1lLFxuICBqb2luLFxuICByZWxhdGl2ZVxufSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5pbXBvcnQgeyB6aXBTeW5jIH0gZnJvbSAnZmZsYXRlJztcbmltcG9ydCB7IGV4aXN0c1N5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7XG4gIGNwLFxuICBta2RpcixcbiAgcmVhZEZpbGUsXG4gIHdyaXRlRmlsZVxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHR5cGUgeyBEZW1vVmF1bHRBcHBKc29uIH0gZnJvbSAnLi9kZW1vLXZhdWx0LWFwcC1qc29uLnRzJztcblxuaW1wb3J0IHtcbiAgYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50LFxuICBmaW5kT3duZWREZW1vVmF1bHRBcHBKc29uU2V0dGluZ3MsXG4gIHBhcnNlRGVtb1ZhdWx0QXBwSnNvblxufSBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcblxuY29uc3QgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lEID0gJ2RlbW8tdmF1bHQtaGVscGVyJztcbmNvbnN0IERBVEFfSlNPTl9GSUxFX05BTUUgPSAnZGF0YS5qc29uJztcbmNvbnN0IERBVEFfSlNPTl9JTkRFTlQgPSAyO1xuY29uc3QgUkVBRE1FX0ZJTEVfTkFNRSA9ICdSRUFETUUubWQnO1xuXG4vLyBUaGUgUkVBRE1FJ3Mgb3BlbmluZyBgIyBIMWAsIGFuZCBvbmx5IHRoYXQgb25lOiB3aXRob3V0IHRoZSBgbWAgZmxhZyB0aGUgbWF0Y2ggaXMgYW5jaG9yZWQgdG8gdGhlIHN0YXJ0XG4vLyBvZiB0aGUgZmlsZSwgYW5kIGAuYCBzdG9wcyBhdCB0aGUgbmV3bGluZSB0aGF0IGVuZHMgdGhlIGxpbmUuXG5jb25zdCBPUEVOSU5HX0hFQURJTkdfUkVHX0VYUCA9IC9eIyAuKi87XG5cbi8qKlxuICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBrZXllZCBieSB0aGUgbmFtZSBlYWNoIG9uZSB0YWtlcyBpbnNpZGUgdGhlIFpJUC5cbiAqXG4gKiBUaGUgd2hvbGUgYXJjaGl2ZSBpcyBhc3NlbWJsZWQgYXMgdGhpcyBtYXAgYW5kIHNlcmlhbGl6ZWQgb25jZSwgc28gaW5qZWN0aW5nIGFuIGVudHJ5IGlzIGFuIG9yZGluYXJ5XG4gKiBgc2V0YCByYXRoZXIgdGhhbiBhIG11dGF0aW9uIG9mIGEgaGFsZi1idWlsdCBhcmNoaXZlIG9iamVjdC5cbiAqL1xudHlwZSBEZW1vVmF1bHRaaXBFbnRyaWVzID0gTWFwPHN0cmluZywgQnVmZmVyPjtcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5qZWN0QXBwSnNvbn0uXG4gKi9cbmludGVyZmFjZSBJbmplY3RBcHBKc29uUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBjb21taXR0ZWQgc2V0dGluZ3MgdGhlIG93bmVkIG9uZXMgYXJlIG1lcmdlZCBvdmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSnNvbjogRGVtb1ZhdWx0QXBwSnNvbjtcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBlbnRyaWVzLCBlZGl0ZWQgaW4gcGxhY2UuXG4gICAqL1xuICByZWFkb25seSBlbnRyaWVzOiBEZW1vVmF1bHRaaXBFbnRyaWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgYXJjaGl2ZSdzIHNpbmdsZSB0b3AtbGV2ZWwgZm9sZGVyLCB3aGljaCBldmVyeSBlbnRyeSBuYW1lIGlzIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9vdEZvbGRlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5qZWN0UmVhZG1lVmVyc2lvbn0uXG4gKi9cbmludGVyZmFjZSBJbmplY3RSZWFkbWVWZXJzaW9uUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBhcmNoaXZlJ3MgZW50cmllcywgZWRpdGVkIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cmllczogRGVtb1ZhdWx0WmlwRW50cmllcztcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciwgd2hpY2ggZXZlcnkgZW50cnkgbmFtZSBpcyByZWxhdGl2ZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gdmVyc2lvbiB0aGUgdmF1bHQgZGVtb25zdHJhdGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBtaW5pbWFsIHNoYXBlIG9mIGEgcGx1Z2luIGBtYW5pZmVzdC5qc29uYCByZWFkIGJ5IHtAbGluayBhcmNoaXZlUGx1Z2luRGVtb1ZhdWx0fS5cbiAqL1xuaW50ZXJmYWNlIFBsdWdpbk1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gaWQsIHVzZWQgYXMgdGhlIGZvbGRlciBuYW1lIHVuZGVyIGBkZW1vLXZhdWx0Ly5vYnNpZGlhbi9wbHVnaW5zL2AuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHZlcnNpb24sIGVtYmVkZGVkIGluIHRoZSBhcmNoaXZlJ3MgdG9wLWxldmVsIGZvbGRlciBuYW1lIGFuZCBpdHMgUkVBRE1FIGhlYWRpbmcuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlYWREZW1vVmF1bHRFbnRyaWVzfS5cbiAqL1xuaW50ZXJmYWNlIFJlYWREZW1vVmF1bHRFbnRyaWVzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBmb2xkZXIgdG8gcmVhZCwgYXMgYW4gYWJzb2x1dGUgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbW9WYXVsdFBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFyY2hpdmUncyBzaW5nbGUgdG9wLWxldmVsIGZvbGRlciwgd2hpY2ggZXZlcnkgZW50cnkgbmFtZSBpcyByZWxhdGl2ZSB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJvb3RGb2xkZXJOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXJjaGl2ZXMgdGhlIHBsdWdpbidzIGRlbW8gdmF1bHQgKGBkZW1vLXZhdWx0L2AgaW4gdGhlIHJlcG8gcm9vdCkgYXMgYSByZWxlYXNlIGFydGlmYWN0LlxuICpcbiAqIEluc3RhbGxzIHRoZSBmcmVzaGx5IGJ1aWx0IHBsdWdpbiBmcm9tIGBkaXN0L2J1aWxkL2AgaW50byB0aGUgdmF1bHQnc1xuICogYC5vYnNpZGlhbi9wbHVnaW5zLzxpZD4vYCBmb2xkZXIsIHRoZW4gemlwcyB0aGUgd2hvbGUgdmF1bHQgdG9cbiAqIGBkaXN0L2J1aWxkLzxwbHVnaW4taWQ+LWRlbW8tdmF1bHQuemlwYCwgdW5kZXIgYSBzaW5nbGUgYDxwbHVnaW4taWQ+LWRlbW8tdmF1bHQtPHZlcnNpb24+L2AgZm9sZGVyLlxuICpcbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGFic29sdXRlIHBhdGggb2YgdGhlIGNyZWF0ZWQgemlwIGFyY2hpdmUsIG9yXG4gKiBgbnVsbGAgaWYgdGhlIHJlcG8gaGFzIG5vIGBkZW1vLXZhdWx0L2AgZm9sZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdCgpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgY29uc3QgZGVtb1ZhdWx0UGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0IH0pO1xuICBpZiAoIWV4aXN0c1N5bmMoZGVtb1ZhdWx0UGF0aCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uIH0pO1xuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUobWFuaWZlc3RQYXRoLCAndXRmLTgnKSkgYXMgUGx1Z2luTWFuaWZlc3Q7XG5cbiAgY29uc3QgcGx1Z2luRm9sZGVyID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoe1xuICAgIHBhdGg6IGpvaW4oXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQsXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICAgIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLlBsdWdpbnMsXG4gICAgICBtYW5pZmVzdC5pZFxuICAgIClcbiAgfSk7XG4gIGF3YWl0IG1rZGlyKHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgY29uc3QgZGlzdEJ1aWxkUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkIH0pO1xuICBhd2FpdCBjcChkaXN0QnVpbGRQYXRoLCBwbHVnaW5Gb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gIGF3YWl0IGluamVjdERlbW9WYXVsdEhlbHBlcihtYW5pZmVzdC5pZCk7XG5cbiAgY29uc3QgemlwUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCwgZ2V0RGVtb1ZhdWx0QXJjaGl2ZUZpbGVOYW1lKG1hbmlmZXN0LmlkKSlcbiAgfSk7XG4gIGNvbnN0IHJvb3RGb2xkZXJOYW1lID0gZ2V0RGVtb1ZhdWx0Rm9sZGVyTmFtZSh7XG4gICAgcGx1Z2luSWQ6IG1hbmlmZXN0LmlkLFxuICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb25cbiAgfSk7XG4gIGNvbnN0IGVudHJpZXMgPSBhd2FpdCByZWFkRGVtb1ZhdWx0RW50cmllcyh7XG4gICAgZGVtb1ZhdWx0UGF0aCxcbiAgICByb290Rm9sZGVyTmFtZVxuICB9KTtcbiAgaW5qZWN0QXBwSnNvbih7XG4gICAgYXBwSnNvbjogYXdhaXQgcmVhZENvbW1pdHRlZEFwcEpzb24oKSxcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lXG4gIH0pO1xuICBpbmplY3RSZWFkbWVWZXJzaW9uKHtcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lLFxuICAgIHZlcnNpb246IG1hbmlmZXN0LnZlcnNpb25cbiAgfSk7XG4gIC8vIEV2ZXJ5IGVudHJ5IGlzIHN0YW1wZWQgd2l0aCB0aGUgbW9tZW50IHRoZSBhcmNoaXZlIGlzIGJ1aWx0IHJhdGhlciB0aGFuIHRoZSBmaWxlJ3Mgb3duIG10aW1lLCB3aGljaCBpc1xuICAvLyB3aGF0IHRoZSBwcmV2aW91cyBhcmNoaXZlciB3cm90ZS4gQSBkZW1vIHZhdWx0J3MgY29tbWl0dGVkIHRpbWVzdGFtcHMgYXJlIGNoZWNrb3V0IGFydGlmYWN0cyBvZiB3aG9ldmVyXG4gIC8vIHJhbiB0aGUgcmVsZWFzZSwgc28gdGhleSBjYXJyeSBub3RoaW5nIGEgcmVhZGVyIGNvdWxkIHVzZTsgdGhlIGJ1aWxkIHRpbWUgYXQgbGVhc3QgZGVzY3JpYmVzIHRoZVxuICAvLyBhcmNoaXZlLlxuICBhd2FpdCB3cml0ZUZpbGUoemlwUGF0aCwgemlwU3luYyhPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcykpKTtcbiAgcmV0dXJuIHppcFBhdGg7XG59XG5cbi8vIFN0b3JlcyB0aGUgYXJjaGl2ZWQgdmF1bHQncyBgLm9ic2lkaWFuL2FwcC5qc29uYCBcdTIwMTQgdGhlIGNvbW1pdHRlZCBzZXR0aW5ncyB3aXRoIHRoZSBvd25lZCBvbmVzIG1lcmdlZFxuLy8gb3ZlciB0aGVtLiBUaGUgRU5UUlkgaXMgd3JpdHRlbiByYXRoZXIgdGhhbiB0aGUgZmlsZSwgc28gdGhlIHJlcG8gZm9sZGVyIGlzIGxlZnQgZXhhY3RseSBhcyBpdCB3YXMsIGFuZFxuLy8gQSB2YXVsdCB3aXRoIG5vdGhpbmcgZWxzZSB0byBjb25maWd1cmUgXHUyMDE0IHdoaWNoIGNvbW1pdHMgbm8gYGFwcC5qc29uYCBhdCBhbGwgXHUyMDE0IGdldHMgb25lIGhlcmUgcmVnYXJkbGVzcy5cbmZ1bmN0aW9uIGluamVjdEFwcEpzb24ocGFyYW1zOiBJbmplY3RBcHBKc29uUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBhcHBKc29uLFxuICAgIGVudHJpZXMsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBlbnRyeU5hbWUgPSBqb2luKHJvb3RGb2xkZXJOYW1lLCBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbiwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQXBwSnNvbik7XG4gIGVudHJpZXMuc2V0KGVudHJ5TmFtZSwgQnVmZmVyLmZyb20oYnVpbGRBcmNoaXZlZERlbW9WYXVsdEFwcEpzb25Db250ZW50KHsgYXBwSnNvbiB9KSwgJ3V0Zi04JykpO1xufVxuXG4vLyBJbmplY3RzIHRoZSBidWlsdCwgYG9ic2lkaWFuLWRldi11dGlsc2Atb3duZWQgYGRlbW8tdmF1bHQtaGVscGVyYCBib290c3RyYXAgcGx1Z2luIChzaGlwcGVkIGluIHRoaXMgcGFja2FnZSkgaW50byB0aGUgZGVtbyB2YXVsdCwgc28gbm8gcGVyLXZhdWx0IGNvcHkgaXMgY29tbWl0dGVkIGFuZCBhbiBgb2JzaWRpYW4tZGV2LXV0aWxzYCBidW1wIHByb3BhZ2F0ZXMgZml4ZXMuXG4vL1xuLy8gQWxvbmdzaWRlIHRoZSBiaW5hcmllcyBpdCB3cml0ZXMgdGhlIGhlbHBlcidzIG93biBgZGF0YS5qc29uYCBuYW1pbmcgdGhlIGRlbW9uc3RyYXRlZCBwbHVnaW4uIFRoYXQgaXNcbi8vIHRoZSBvbmUgbW9tZW50IHRoZSBpZCBpcyBrbm93biBmb3IgY2VydGFpbiBcdTIwMTQgaXQgY29tZXMgZnJvbSB0aGUgcGx1Z2luJ3Mgb3duIG1hbmlmZXN0IFx1MjAxNCB3aGVyZWFzIHRoZVxuLy8gb3BlbmVkIHZhdWx0IG9ubHkgb2ZmZXJzIHBsdWdpbiBmb2xkZXJzIHRvIGNvdW50LCB3aGljaCB0aGUgYm9vdHN0cmFwIGl0c2VsZiBhZGRzIHRvIChzZWVcbi8vIGBEZW1vVmF1bHRIZWxwZXJTZXR0aW5nc2ApLlxuYXN5bmMgZnVuY3Rpb24gaW5qZWN0RGVtb1ZhdWx0SGVscGVyKGRlbW9lZFBsdWdpbklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGFja2FnZUZvbGRlciA9IGdldFJvb3RGb2xkZXIoZ2V0Rm9sZGVyTmFtZShpbXBvcnQubWV0YS51cmwpKTtcbiAgaWYgKCFwYWNrYWdlRm9sZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcmVzb2x2ZSB0aGUgb2JzaWRpYW4tZGV2LXV0aWxzIHBhY2thZ2UgZm9sZGVyIHRvIGluamVjdCB0aGUgZGVtby12YXVsdC1oZWxwZXIgcGx1Z2luLicpO1xuICB9XG5cbiAgY29uc3QgaGVscGVyU291cmNlUGF0aCA9IGpvaW4ocGFja2FnZUZvbGRlciwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdERlbW9WYXVsdEhlbHBlcik7XG4gIGNvbnN0IGhlbHBlckZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGVtb1ZhdWx0LFxuICAgICAgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sXG4gICAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5QbHVnaW5zLFxuICAgICAgREVNT19WQVVMVF9IRUxQRVJfUExVR0lOX0lEXG4gICAgKVxuICB9KTtcbiAgYXdhaXQgbWtkaXIoaGVscGVyRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgYXdhaXQgY3AoaGVscGVyU291cmNlUGF0aCwgaGVscGVyRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICBjb25zdCBzZXR0aW5nczogRGVtb1ZhdWx0SGVscGVyU2V0dGluZ3MgPSB7IGRlbW9lZFBsdWdpbklkIH07XG4gIGF3YWl0IHdyaXRlRmlsZShqb2luKGhlbHBlckZvbGRlciwgREFUQV9KU09OX0ZJTEVfTkFNRSksIGAke0pTT04uc3RyaW5naWZ5KHNldHRpbmdzLCBudWxsLCBEQVRBX0pTT05fSU5ERU5UKX1cXG5gLCAndXRmLTgnKTtcbn1cblxuLy8gTmFtZXMgdGhlIHZlcnNpb24gb24gdGhlIGFyY2hpdmVkIGBSRUFETUUubWRgJ3MgaGVhZGluZywgc28gdGhlIHZhdWx0IHNheXMgd2hpY2ggcmVsZWFzZSBpdCBkZW1vbnN0cmF0ZXNcbi8vIGhvd2V2ZXIgZmFyIGl0IHRyYXZlbHMgZnJvbSB0aGUgcmVsZWFzZSBwYWdlIGl0IHdhcyBkb3dubG9hZGVkIGZyb20uXG4vL1xuLy8gRW50cnktb25seSwgZm9yIHRoZSBzYW1lIHJlYXNvbiBgaW5qZWN0QXBwSnNvbmAgaXM6IHRoZSBjb21taXR0ZWQgUkVBRE1FIGlzIGEgdHJhY2tlZCwgaGFuZC1hdXRob3JlZFxuLy8gZmlsZSBhbmQgYHVwZGF0ZVZlcnNpb25gIGFyY2hpdmVzIGFmdGVyIGl0IGhhcyBhbHJlYWR5IHB1c2hlZC5cbi8vXG4vLyBBIHZhdWx0IHRoYXQgc2hpcHMgbm8gUkVBRE1FLCBvciBvbmUgb3BlbmluZyBvbiBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBgIyBIMWAsIGlzIGxlZnQgYWxvbmUgcmF0aGVyXG4vLyB0aGFuIGNvcnJlY3RlZC4gVGhlIGRlbW8tdmF1bHQgY292ZXJhZ2Ugc3VpdGUgZXhlbXB0cyBgUkVBRE1FLm1kYCBmcm9tIGl0cyBIMSBjaGVjaywgc28gbmVpdGhlciBzaGFwZVxuLy8gaXMgYSBkZWZlY3QgXHUyMDE0IGFuZCBhIHJlbGVhc2UgaXMgdGhlIHdyb25nIG1vbWVudCB0byBzdGFydCBmYWlsaW5nIG9uIG9uZS5cbmZ1bmN0aW9uIGluamVjdFJlYWRtZVZlcnNpb24ocGFyYW1zOiBJbmplY3RSZWFkbWVWZXJzaW9uUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICBlbnRyaWVzLFxuICAgIHJvb3RGb2xkZXJOYW1lLFxuICAgIHZlcnNpb25cbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBlbnRyeU5hbWUgPSBqb2luKHJvb3RGb2xkZXJOYW1lLCBSRUFETUVfRklMRV9OQU1FKTtcbiAgY29uc3QgZW50cnkgPSBlbnRyaWVzLmdldChlbnRyeU5hbWUpO1xuICBpZiAoIWVudHJ5KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY29udGVudCA9IGVudHJ5LnRvU3RyaW5nKCd1dGYtOCcpO1xuICBjb25zdCB2ZXJzaW9uZWRDb250ZW50ID0gY29udGVudC5yZXBsYWNlKE9QRU5JTkdfSEVBRElOR19SRUdfRVhQLCAoaGVhZGluZykgPT4gYCR7aGVhZGluZ30gdiR7dmVyc2lvbn1gKTtcbiAgaWYgKHZlcnNpb25lZENvbnRlbnQgPT09IGNvbnRlbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBlbnRyaWVzLnNldChlbnRyeU5hbWUsIEJ1ZmZlci5mcm9tKHZlcnNpb25lZENvbnRlbnQsICd1dGYtOCcpKTtcbn1cblxuLy8gUmVhZHMgdGhlIGRlbW8gdmF1bHQncyBjb21taXR0ZWQgYC5vYnNpZGlhbi9hcHAuanNvbmAsIHJlZnVzaW5nIHRoZSBzZXR0aW5ncyB0aGlzIHBhY2thZ2Ugb3ducy5cbi8vXG4vLyBUaG9zZSBzZXR0aW5ncyBhcmUgaW5qZWN0ZWQgaW50byB0aGUgYXJjaGl2ZSwgc28gYSBjb21taXR0ZWQgb25lIGlzIGEgc2Vjb25kIHNvdXJjZSBvZiB0cnV0aCB0aGF0XG4vLyBub3RoaW5nIGtlZXBzIGluIHN0ZXAuIFRoZSBkZW1vLXZhdWx0IGNvdmVyYWdlIHN1aXRlIGFscmVhZHkgZmFpbHMgb24gaXQsIHdoaWNoIG1lYW5zIHJlYWNoaW5nIGhlcmVcbi8vIG1lYW5zIHRoYXQgZ2F0ZSB3YXMgc2tpcHBlZCBcdTIwMTQgc28gdGhpcyByZWZ1c2VzIHJhdGhlciB0aGFuIG92ZXJ3cml0aW5nIGEgdmFsdWUgc29tZWJvZHkgY2hvc2Ugb24gcHVycG9zZS5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb21taXR0ZWRBcHBKc29uKCk6IFByb21pc2U8RGVtb1ZhdWx0QXBwSnNvbj4ge1xuICBjb25zdCBhcHBKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHtcbiAgICBwYXRoOiBqb2luKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRlbW9WYXVsdCwgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRG90T2JzaWRpYW4sIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkFwcEpzb24pXG4gIH0pO1xuICBjb25zdCBjb250ZW50ID0gZXhpc3RzU3luYyhhcHBKc29uUGF0aCkgPyBhd2FpdCByZWFkRmlsZShhcHBKc29uUGF0aCwgJ3V0Zi04JykgOiBudWxsO1xuICBjb25zdCBhcHBKc29uID0gcGFyc2VEZW1vVmF1bHRBcHBKc29uKHsgY29udGVudCwgcGF0aDogYXBwSnNvblBhdGggfSk7XG5cbiAgY29uc3Qgb3duZWRTZXR0aW5ncyA9IGZpbmRPd25lZERlbW9WYXVsdEFwcEpzb25TZXR0aW5ncyh7IGFwcEpzb24gfSk7XG4gIGlmIChvd25lZFNldHRpbmdzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHthcHBKc29uUGF0aH0gc2V0cyAke293bmVkU2V0dGluZ3Muam9pbignLCAnKX0sIHdoaWNoIG9ic2lkaWFuLWRldi11dGlscyBvd25zIGFuZCB3cml0ZXMgaW50byB0aGUgYXJjaGl2ZWQgZGVtbyB2YXVsdC4gU2V0dGluZ3MgaXQgb3ducyBtdXN0IG5vdCBiZSBjb21taXR0ZWQuYFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gYXBwSnNvbjtcbn1cblxuLy8gUmVhZHMgZXZlcnkgZmlsZSBpbiB0aGUgZGVtbyB2YXVsdCBhcyBhbiBhcmNoaXZlIGVudHJ5LCB1bmRlciB0aGUgc2luZ2xlIHRvcC1sZXZlbCBmb2xkZXIgdGhlIGFyY2hpdmVcbi8vIHNpdHMgaW4uXG4vL1xuLy8gT25seSBGSUxFUyBiZWNvbWUgZW50cmllcy4gR2l0IGNhbm5vdCB0cmFjayBhbiBlbXB0eSBmb2xkZXIsIHNvIGEgY29tbWl0dGVkIGRlbW8gdmF1bHQgaGFzIG5vbmUgXHUyMDE0IGFuZFxuLy8gYGV4dHJhY3RaaXBBcmNoaXZlYCBjcmVhdGVzIGFuIGVudHJ5J3MgcGFyZW50IGZvbGRlcnMgd2hldGhlciBvciBub3QgdGhlIGFyY2hpdmUgZGVjbGFyZWQgdGhlbSwgc28gYVxuLy8gZm9sZGVyIGVudHJ5IHdvdWxkIGVhcm4gbm90aGluZyBldmVuIGlmIG9uZSBjb3VsZCBleGlzdC5cbmFzeW5jIGZ1bmN0aW9uIHJlYWREZW1vVmF1bHRFbnRyaWVzKHBhcmFtczogUmVhZERlbW9WYXVsdEVudHJpZXNQYXJhbXMpOiBQcm9taXNlPERlbW9WYXVsdFppcEVudHJpZXM+IHtcbiAgY29uc3Qge1xuICAgIGRlbW9WYXVsdFBhdGgsXG4gICAgcm9vdEZvbGRlck5hbWVcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBlbnRyaWVzOiBEZW1vVmF1bHRaaXBFbnRyaWVzID0gbmV3IE1hcDxzdHJpbmcsIEJ1ZmZlcj4oKTtcbiAgZm9yIChjb25zdCBkaXJlbnQgb2YgYXdhaXQgcmVhZGRpclBvc2l4KGRlbW9WYXVsdFBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlLCB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pKSB7XG4gICAgaWYgKCFkaXJlbnQuaXNGaWxlKCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSBqb2luKGRpcmVudC5wYXJlbnRQYXRoLCBkaXJlbnQubmFtZSk7XG4gICAgZW50cmllcy5zZXQoam9pbihyb290Rm9sZGVyTmFtZSwgcmVsYXRpdmUoZGVtb1ZhdWx0UGF0aCwgcGF0aCkpLCBhd2FpdCByZWFkRmlsZShwYXRoKSk7XG4gIH1cblxuICByZXR1cm4gZW50cmllcztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9DQSwrQkFHTztBQUNQLGdCQUE2QjtBQUM3QixrQkFHTztBQUNQLGtCQUlPO0FBQ1Asb0JBQXdCO0FBQ3hCLHFCQUEyQjtBQUMzQixzQkFLTztBQUlQLGlDQUlPO0FBQ1Asd0NBQXdDO0FBbEV4QyxJQUFJLG9CQUFvQixXQUFXLGlCQUFpQixNQUFNLFNBQVMsOEJBQThCO0FBQy9GLE1BQUks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
@@ -0,0 +1,33 @@
1
+ /// <reference path="./index.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Archives a plugin's demo vault as a release artifact.
6
+ *
7
+ * A plugin can ship a curated demo vault at `demo-vault/` in its repo root. At release time this
8
+ * module installs the freshly built plugin into that vault's `.obsidian/plugins/<id>/` folder and
9
+ * zips the whole vault into `dist/build/<plugin-id>-demo-vault.zip`, so the existing GitHub-release
10
+ * step (which uploads every file in `dist/build/`) attaches it automatically.
11
+ *
12
+ * The version is deliberately absent from that name and lives INSIDE the archive instead — see
13
+ * `obsidian/demo-vault-naming.ts` for why — in the two places a person actually meets it: the vault
14
+ * sits under a single `<plugin-id>-demo-vault-<version>/` folder, so unzipping several releases by hand
15
+ * into one folder neither collides nor produces anonymous directories, and the vault's `README.md`
16
+ * heading gains the version it demonstrates.
17
+ *
18
+ * The archived copy also carries the `.obsidian/app.json` settings this package owns (see
19
+ * `demo-vault-app-json.ts`). Those settings and the README heading are written into the ZIP ENTRY and
20
+ * never into the repo folder: both files are tracked, and `updateVersion` archives after it has already
21
+ * pushed, so an in-place write would leave an uncommitted change behind a published release.
22
+ */
23
+ /**
24
+ * Archives the plugin's demo vault (`demo-vault/` in the repo root) as a release artifact.
25
+ *
26
+ * Installs the freshly built plugin from `dist/build/` into the vault's
27
+ * `.obsidian/plugins/<id>/` folder, then zips the whole vault to
28
+ * `dist/build/<plugin-id>-demo-vault.zip`, under a single `<plugin-id>-demo-vault-<version>/` folder.
29
+ *
30
+ * @returns A {@link Promise} that resolves to the absolute path of the created zip archive, or
31
+ * `null` if the repo has no `demo-vault/` folder.
32
+ */
33
+ export declare function archivePluginDemoVault(): Promise<null | string>;
@@ -0,0 +1,160 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function () {
7
+ function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
+ symbolConstructor.asyncDispose ??= symbolConstructor.for("Symbol.asyncDispose");
9
+ symbolConstructor.dispose ??= symbolConstructor.for("Symbol.dispose");
10
+ }
11
+
12
+ function ensureBrowserProcess() {
13
+ const browserProcess = {
14
+ browser: true,
15
+ cwd() {
16
+ return "/";
17
+ },
18
+ env: {},
19
+ platform: "android"
20
+ };
21
+ const existingProcess = globalThis.process;
22
+ if (!existingProcess) {
23
+ globalThis.process = browserProcess;
24
+ return;
25
+ }
26
+ if (existingProcess.versions?.node) {
27
+ return;
28
+ }
29
+ const existingProcessRecord = existingProcess;
30
+ for (const [key, value] of Object.entries(browserProcess)) {
31
+ existingProcessRecord[key] ??= value;
32
+ }
33
+ existingProcessRecord["browser"] = true;
34
+ }
35
+
36
+ function keepName($unknown) {
37
+ return $unknown;
38
+ }
39
+
40
+ (function initCjs() {
41
+ const globalThisRecord = globalThis;
42
+ ensureDisposeSymbols();
43
+ globalThisRecord["__name"] ??= keepName;
44
+ globalThisRecord["__extractDefault"] ??= extractDefault;
45
+ ensureBrowserProcess();
46
+ function extractDefault(module) {
47
+ return module && module.__esModule && "default" in module ? module.default : module;
48
+ }
49
+ })();
50
+ })();
51
+ (function patchObsidianRequire() {
52
+ const originalRequire = require;
53
+ if (!originalRequire || originalRequire.__isPatched) {
54
+ return;
55
+ }
56
+
57
+ require = Object.assign(
58
+ (id) => requirePatched(id),
59
+ originalRequire,
60
+ {
61
+ __isPatched: true
62
+ }
63
+ );
64
+
65
+ function extractDefault(module) {
66
+ return module && module.__esModule && 'default' in module ? module.default : module;
67
+ }
68
+
69
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
70
+ '@codemirror/autocomplete',
71
+ '@codemirror/collab',
72
+ '@codemirror/commands',
73
+ '@codemirror/language',
74
+ '@codemirror/lint',
75
+ '@codemirror/search',
76
+ '@codemirror/state',
77
+ '@codemirror/text',
78
+ '@codemirror/view',
79
+ '@lezer/common',
80
+ '@lezer/highlight',
81
+ '@lezer/lr',
82
+ 'obsidian']
83
+ );
84
+
85
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
86
+ '@codemirror/closebrackets',
87
+ '@codemirror/comment',
88
+ '@codemirror/fold',
89
+ '@codemirror/gutter',
90
+ '@codemirror/highlight',
91
+ '@codemirror/history',
92
+ '@codemirror/matchbrackets',
93
+ '@codemirror/panel',
94
+ '@codemirror/rangeset',
95
+ '@codemirror/rectangular-selection',
96
+ '@codemirror/stream-parser',
97
+ '@codemirror/tooltip']
98
+ );
99
+
100
+ function requirePatched(id) {
101
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
102
+ return originalRequire?.(id);
103
+ }
104
+
105
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
106
+ if (globalThis.app.isMobile) {
107
+ if (id === 'process' || id === 'node:process') {
108
+ // eslint-disable-next-line no-console -- Valid usage.
109
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
110
+
111
+ return process;
112
+ }
113
+ } else {
114
+ const module = originalRequire?.(id);
115
+ if (module) {
116
+ return extractDefault(module);
117
+ }
118
+ }
119
+
120
+ // eslint-disable-next-line no-console -- Valid usage.
121
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
122
+ return {};
123
+ }
124
+ })();
125
+
126
+ "use strict";
127
+ var __defProp = Object.defineProperty;
128
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
129
+ var __getOwnPropNames = Object.getOwnPropertyNames;
130
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
131
+ var __export = (target, all) => {
132
+ for (var name in all)
133
+ __defProp(target, name, { get: all[name], enumerable: true });
134
+ };
135
+ var __copyProps = (to, from, except, desc) => {
136
+ if (from && typeof from === "object" || typeof from === "function") {
137
+ for (let key of __getOwnPropNames(from))
138
+ if (!__hasOwnProp.call(to, key) && key !== except)
139
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
140
+ }
141
+ return to;
142
+ };
143
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
144
+ var dprint_exports = {};
145
+ __export(dprint_exports, {
146
+ format: () => format
147
+ });
148
+ module.exports = __toCommonJS(dprint_exports);
149
+ var import_dprint = require('@mnaoumov/typescript-dev-toolkit/formatters/dprint');
150
+ var import_repo_paths = require('@mnaoumov/typescript-dev-toolkit/repo-paths');
151
+ var import_templates = require('../templates.cjs');
152
+ var import_dprint2 = require('@mnaoumov/typescript-dev-toolkit/formatters/dprint');
153
+ async function format(options) {
154
+ await (0, import_dprint.format)({ defaultConfigFilePath: (0, import_templates.getTemplateFilePath)(import_repo_paths.RepoPaths.DprintJson), ...options });
155
+ }
156
+ // Annotate the CommonJS export names for ESM import in node:
157
+ 0 && (module.exports = {
158
+ format
159
+ });
160
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2Zvcm1hdHRlcnMvZHByaW50LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRm9ybWF0cyBhbiBPYnNpZGlhbiBwbHVnaW4gd2l0aCBkcHJpbnQ6IHRoZSBnZW5lcmljIHJ1bm5lciBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdGAsIGZhbGxpbmdcbiAqIGJhY2sgdG8gdGhpcyBwYWNrYWdlJ3MgYGRwcmludC5qc29uYCB0ZW1wbGF0ZSB3aGVuIHRoZSBwcm9qZWN0IGhhcyBub25lLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRm9ybWF0T3B0aW9ucyB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L2Zvcm1hdHRlcnMvZHByaW50JztcblxuaW1wb3J0IHsgZm9ybWF0IGFzIGZvcm1hdEdlbmVyaWMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9mb3JtYXR0ZXJzL2RwcmludCc7XG5pbXBvcnQgeyBSZXBvUGF0aHMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZXBvLXBhdGhzJztcblxuaW1wb3J0IHsgZ2V0VGVtcGxhdGVGaWxlUGF0aCB9IGZyb20gJy4uL3RlbXBsYXRlcy50cyc7XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgc291cmNlIGNvZGUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEZvcm1hdE9wdGlvbnN9LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZm9ybWF0KG9wdGlvbnM/OiBGb3JtYXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGZvcm1hdEdlbmVyaWMoeyBkZWZhdWx0Q29uZmlnRmlsZVBhdGg6IGdldFRlbXBsYXRlRmlsZVBhdGgoUmVwb1BhdGhzLkRwcmludEpzb24pLCAuLi5vcHRpb25zIH0pO1xufVxuZXhwb3J0IHsgdHlwZSBGb3JtYXRPcHRpb25zIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvZm9ybWF0dGVycy9kcHJpbnQnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0Esb0JBQXdDO0FBQ3hDLHdCQUEwQjtBQUUxQix1QkFBb0M7QUFVcEMsSUFBQUEsaUJBQW1DO0FBSG5DLGVBQXNCLE9BQU8sU0FBd0M7QUFDbkUsWUFBTSxjQUFBQyxRQUFjLEVBQUUsMkJBQXVCLHNDQUFvQiw0QkFBVSxVQUFVLEdBQUcsR0FBRyxRQUFRLENBQUM7QUFDdEc7IiwKICAibmFtZXMiOiBbImltcG9ydF9kcHJpbnQiLCAiZm9ybWF0R2VuZXJpYyJdCn0K
@@ -0,0 +1,15 @@
1
+ /// <reference path="../index.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Formats an Obsidian plugin with dprint: the generic runner from `@mnaoumov/typescript-dev-toolkit`, falling
6
+ * back to this package's `dprint.json` template when the project has none.
7
+ */
8
+ import type { FormatOptions } from '@mnaoumov/typescript-dev-toolkit/formatters/dprint' with { 'resolution-mode': 'import' };
9
+ /**
10
+ * Formats the source code.
11
+ *
12
+ * @param options - The {@link FormatOptions}.
13
+ */
14
+ export declare function format(options?: FormatOptions): Promise<void>;
15
+ export { type FormatOptions } from '@mnaoumov/typescript-dev-toolkit/formatters/dprint';