@mnaoumov/obsidian-dev-toolkit 1.0.0 → 2.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 (228) hide show
  1. package/README.md +9 -1
  2. package/dist/demo-vault-helper/main.js +678 -18
  3. package/dist/integration-test-plugin/main.js +12075 -3087
  4. package/dist/integration-test-plugin/manifest.json +2 -2
  5. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +6 -38
  6. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +1 -1
  7. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.cjs +5 -37
  8. package/dist/lib/cjs/bundlers/esbuild-impl/dependency.d.cts +1 -1
  9. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.cjs +5 -37
  10. package/dist/lib/cjs/bundlers/esbuild-impl/fix-source-maps-plugin.d.cts +1 -1
  11. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +7 -66
  12. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -1
  13. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +7 -39
  14. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +1 -1
  15. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +5 -37
  16. package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
  17. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.cjs +5 -37
  18. package/dist/lib/cjs/bundlers/esbuild-impl/rename-css-plugin.d.cts +1 -1
  19. package/dist/lib/cjs/bundlers/esbuild.cjs +1 -60
  20. package/dist/lib/cjs/bundlers/esbuild.d.cts +1 -1
  21. package/dist/lib/cjs/bundlers/index.cjs +3 -62
  22. package/dist/lib/cjs/bundlers/index.d.cts +1 -1
  23. package/dist/lib/cjs/demo-vault-app-json.cjs +5 -37
  24. package/dist/lib/cjs/demo-vault-app-json.d.cts +1 -1
  25. package/dist/lib/cjs/demo-vault-buttons.cjs +6 -38
  26. package/dist/lib/cjs/demo-vault-buttons.d.cts +8 -8
  27. package/dist/lib/cjs/demo-vault-coverage.cjs +7 -38
  28. package/dist/lib/cjs/demo-vault-coverage.d.cts +1 -1
  29. package/dist/lib/cjs/demo-vault.cjs +6 -38
  30. package/dist/lib/cjs/demo-vault.d.cts +1 -1
  31. package/dist/lib/cjs/formatters/dprint.cjs +5 -37
  32. package/dist/lib/cjs/formatters/dprint.d.cts +1 -1
  33. package/dist/lib/cjs/formatters/index.cjs +2 -61
  34. package/dist/lib/cjs/formatters/index.d.cts +1 -1
  35. package/dist/lib/cjs/index.cjs +12 -71
  36. package/dist/lib/cjs/integration-test-setup.cjs +1 -60
  37. package/dist/lib/cjs/integration-test-setup.d.cts +5 -5
  38. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +6 -38
  39. package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +7 -7
  40. package/dist/lib/cjs/jest-setup.cjs +5 -37
  41. package/dist/lib/cjs/jest-setup.d.cts +1 -1
  42. package/dist/lib/cjs/library-references.d.cts +2 -0
  43. package/dist/lib/cjs/linters/eslint-config.cjs +71 -49
  44. package/dist/lib/cjs/linters/eslint-config.d.cts +1 -1
  45. package/dist/lib/cjs/linters/eslint-rules/index.cjs +26 -73
  46. package/dist/lib/cjs/linters/eslint-rules/index.d.cts +6 -2
  47. package/dist/lib/cjs/linters/eslint-rules/manifest-description.cjs +1 -60
  48. package/dist/lib/cjs/linters/eslint-rules/manifest-description.d.cts +1 -1
  49. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.cjs +6 -38
  50. package/dist/lib/cjs/linters/eslint-rules/manifest-helpers.d.cts +1 -1
  51. package/dist/lib/cjs/linters/eslint-rules/manifest-id.cjs +1 -60
  52. package/dist/lib/cjs/linters/eslint-rules/manifest-id.d.cts +1 -1
  53. package/dist/lib/cjs/linters/eslint-rules/manifest-name.cjs +1 -60
  54. package/dist/lib/cjs/linters/eslint-rules/manifest-name.d.cts +1 -1
  55. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.cjs +1 -60
  56. package/dist/lib/cjs/linters/eslint-rules/manifest-schema.d.cts +1 -1
  57. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.cjs +240 -0
  58. package/dist/lib/cjs/linters/eslint-rules/no-local-obsidian-internals.d.cts +10 -0
  59. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.cjs +5 -37
  60. package/dist/lib/cjs/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.cts +1 -1
  61. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.cjs +5 -37
  62. package/dist/lib/cjs/linters/eslint-rules/no-untrusted-input-events.d.cts +1 -1
  63. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.cjs +136 -0
  64. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.cts +16 -0
  65. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.cjs +217 -0
  66. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code-in-ui.d.cts +30 -0
  67. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.cjs +169 -0
  68. package/dist/lib/cjs/linters/eslint-rules/plugin-name-as-code.d.cts +29 -0
  69. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.cjs +5 -37
  70. package/dist/lib/cjs/linters/eslint-rules/require-component-suffix.d.cts +1 -1
  71. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.cjs +287 -0
  72. package/dist/lib/cjs/linters/eslint-rules/require-plugin-api-contract-schemas.d.cts +10 -0
  73. package/dist/lib/cjs/linters/eslint.cjs +5 -37
  74. package/dist/lib/cjs/linters/eslint.d.cts +1 -1
  75. package/dist/lib/cjs/linters/index.cjs +17 -67
  76. package/dist/lib/cjs/linters/index.d.cts +4 -1
  77. package/dist/lib/cjs/linters/markdownlint-cli2-config.cjs +152 -0
  78. package/dist/lib/cjs/linters/markdownlint-cli2-config.d.cts +12 -0
  79. package/dist/lib/cjs/linters/markdownlint-rules/index.cjs +118 -0
  80. package/dist/lib/cjs/linters/markdownlint-rules/index.d.cts +2 -0
  81. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.cjs +200 -0
  82. package/dist/lib/cjs/linters/markdownlint-rules/plugin-name-as-code.d.cts +32 -0
  83. package/dist/lib/cjs/linters/markdownlint.cjs +5 -37
  84. package/dist/lib/cjs/linters/markdownlint.d.cts +1 -1
  85. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.cjs +1 -60
  86. package/dist/lib/cjs/linters/obsidianmd-rule-custom-message.d.cts +1 -1
  87. package/dist/lib/cjs/linters/plugin-names.cjs +203 -0
  88. package/dist/lib/cjs/linters/plugin-names.d.cts +81 -0
  89. package/dist/lib/cjs/obsidian-plugin-repo-paths.cjs +1 -60
  90. package/dist/lib/cjs/obsidian-plugin-repo-paths.d.cts +1 -1
  91. package/dist/lib/cjs/setup.cjs +5 -37
  92. package/dist/lib/cjs/setup.d.cts +1 -1
  93. package/dist/lib/cjs/templates.cjs +5 -37
  94. package/dist/lib/cjs/templates.d.cts +1 -1
  95. package/dist/lib/cjs/test-runners/index.cjs +4 -63
  96. package/dist/lib/cjs/test-runners/index.d.cts +1 -1
  97. package/dist/lib/cjs/test-runners/integration-test-plugin.cjs +12 -44
  98. package/dist/lib/cjs/test-runners/integration-test-plugin.d.cts +5 -5
  99. package/dist/lib/cjs/test-runners/performance-eval-cap.cjs +1 -60
  100. package/dist/lib/cjs/test-runners/performance-eval-cap.d.cts +1 -1
  101. package/dist/lib/cjs/test-runners/stale-build-global-setup.cjs +5 -37
  102. package/dist/lib/cjs/test-runners/stale-build-global-setup.d.cts +1 -1
  103. package/dist/lib/cjs/test-runners/vitest-config.cjs +9 -41
  104. package/dist/lib/cjs/test-runners/vitest-config.d.cts +2 -3
  105. package/dist/lib/cjs/version.cjs +5 -37
  106. package/dist/lib/cjs/version.d.cts +1 -1
  107. package/dist/lib/cjs/vitest-setup.cjs +5 -37
  108. package/dist/lib/cjs/vitest-setup.d.cts +1 -1
  109. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +1 -1
  110. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +5 -22
  111. package/dist/lib/esm/bundlers/esbuild-impl/dependency.d.mts +1 -1
  112. package/dist/lib/esm/bundlers/esbuild-impl/dependency.mjs +5 -22
  113. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.d.mts +1 -1
  114. package/dist/lib/esm/bundlers/esbuild-impl/fix-source-maps-plugin.mjs +5 -22
  115. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -1
  116. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +1 -45
  117. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +1 -1
  118. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +5 -22
  119. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
  120. package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +5 -22
  121. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.d.mts +1 -1
  122. package/dist/lib/esm/bundlers/esbuild-impl/rename-css-plugin.mjs +5 -22
  123. package/dist/lib/esm/bundlers/esbuild.d.mts +1 -1
  124. package/dist/lib/esm/bundlers/esbuild.mjs +1 -45
  125. package/dist/lib/esm/bundlers/index.d.mts +1 -1
  126. package/dist/lib/esm/bundlers/index.mjs +1 -45
  127. package/dist/lib/esm/demo-vault-app-json.d.mts +1 -1
  128. package/dist/lib/esm/demo-vault-app-json.mjs +5 -22
  129. package/dist/lib/esm/demo-vault-buttons.d.mts +8 -8
  130. package/dist/lib/esm/demo-vault-buttons.mjs +5 -22
  131. package/dist/lib/esm/demo-vault-coverage.d.mts +1 -1
  132. package/dist/lib/esm/demo-vault-coverage.mjs +7 -23
  133. package/dist/lib/esm/demo-vault.d.mts +1 -1
  134. package/dist/lib/esm/demo-vault.mjs +6 -23
  135. package/dist/lib/esm/formatters/dprint.d.mts +1 -1
  136. package/dist/lib/esm/formatters/dprint.mjs +5 -22
  137. package/dist/lib/esm/formatters/index.d.mts +1 -1
  138. package/dist/lib/esm/formatters/index.mjs +1 -45
  139. package/dist/lib/esm/index.mjs +1 -45
  140. package/dist/lib/esm/integration-test-setup.d.mts +5 -5
  141. package/dist/lib/esm/integration-test-setup.mjs +1 -45
  142. package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +7 -7
  143. package/dist/lib/esm/integration-test-vitest-global-setup.mjs +7 -24
  144. package/dist/lib/esm/jest-setup.d.mts +1 -1
  145. package/dist/lib/esm/jest-setup.mjs +5 -22
  146. package/dist/lib/esm/library-references.d.mts +2 -0
  147. package/dist/lib/esm/linters/eslint-config.d.mts +1 -1
  148. package/dist/lib/esm/linters/eslint-config.mjs +70 -33
  149. package/dist/lib/esm/linters/eslint-rules/index.d.mts +6 -2
  150. package/dist/lib/esm/linters/eslint-rules/index.mjs +12 -48
  151. package/dist/lib/esm/linters/eslint-rules/manifest-description.d.mts +1 -1
  152. package/dist/lib/esm/linters/eslint-rules/manifest-description.mjs +1 -45
  153. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.d.mts +1 -1
  154. package/dist/lib/esm/linters/eslint-rules/manifest-helpers.mjs +5 -22
  155. package/dist/lib/esm/linters/eslint-rules/manifest-id.d.mts +1 -1
  156. package/dist/lib/esm/linters/eslint-rules/manifest-id.mjs +1 -45
  157. package/dist/lib/esm/linters/eslint-rules/manifest-name.d.mts +1 -1
  158. package/dist/lib/esm/linters/eslint-rules/manifest-name.mjs +1 -45
  159. package/dist/lib/esm/linters/eslint-rules/manifest-schema.d.mts +1 -1
  160. package/dist/lib/esm/linters/eslint-rules/manifest-schema.mjs +1 -45
  161. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.d.mts +10 -0
  162. package/dist/lib/esm/linters/eslint-rules/no-local-obsidian-internals.mjs +141 -0
  163. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.d.mts +1 -1
  164. package/dist/lib/esm/linters/eslint-rules/no-over-cap-wait-in-eval-in-obsidian.mjs +5 -22
  165. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.d.mts +1 -1
  166. package/dist/lib/esm/linters/eslint-rules/no-untrusted-input-events.mjs +5 -22
  167. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.d.mts +16 -0
  168. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-toolkit-plugin.mjs +37 -0
  169. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.d.mts +30 -0
  170. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code-in-ui.mjs +121 -0
  171. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.d.mts +29 -0
  172. package/dist/lib/esm/linters/eslint-rules/plugin-name-as-code.mjs +72 -0
  173. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.d.mts +1 -1
  174. package/dist/lib/esm/linters/eslint-rules/require-component-suffix.mjs +5 -22
  175. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.d.mts +10 -0
  176. package/dist/lib/esm/linters/eslint-rules/require-plugin-api-contract-schemas.mjs +188 -0
  177. package/dist/lib/esm/linters/eslint.d.mts +1 -1
  178. package/dist/lib/esm/linters/eslint.mjs +5 -22
  179. package/dist/lib/esm/linters/index.d.mts +4 -1
  180. package/dist/lib/esm/linters/index.mjs +8 -46
  181. package/dist/lib/esm/linters/markdownlint-cli2-config.d.mts +12 -0
  182. package/dist/lib/esm/linters/markdownlint-cli2-config.mjs +57 -0
  183. package/dist/lib/esm/linters/markdownlint-rules/index.d.mts +2 -0
  184. package/dist/lib/esm/linters/markdownlint-rules/index.mjs +10 -0
  185. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.d.mts +32 -0
  186. package/dist/lib/esm/linters/markdownlint-rules/plugin-name-as-code.mjs +94 -0
  187. package/dist/lib/esm/linters/markdownlint.d.mts +1 -1
  188. package/dist/lib/esm/linters/markdownlint.mjs +5 -22
  189. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.d.mts +1 -1
  190. package/dist/lib/esm/linters/obsidianmd-rule-custom-message.mjs +1 -45
  191. package/dist/lib/esm/linters/plugin-names.d.mts +81 -0
  192. package/dist/lib/esm/linters/plugin-names.mjs +105 -0
  193. package/dist/lib/esm/obsidian-plugin-repo-paths.d.mts +1 -1
  194. package/dist/lib/esm/obsidian-plugin-repo-paths.mjs +1 -45
  195. package/dist/lib/esm/setup.d.mts +1 -1
  196. package/dist/lib/esm/setup.mjs +5 -22
  197. package/dist/lib/esm/templates.d.mts +1 -1
  198. package/dist/lib/esm/templates.mjs +5 -22
  199. package/dist/lib/esm/test-runners/index.d.mts +1 -1
  200. package/dist/lib/esm/test-runners/index.mjs +1 -45
  201. package/dist/lib/esm/test-runners/integration-test-plugin.d.mts +5 -5
  202. package/dist/lib/esm/test-runners/integration-test-plugin.mjs +11 -28
  203. package/dist/lib/esm/test-runners/performance-eval-cap.d.mts +1 -1
  204. package/dist/lib/esm/test-runners/performance-eval-cap.mjs +1 -45
  205. package/dist/lib/esm/test-runners/stale-build-global-setup.d.mts +1 -1
  206. package/dist/lib/esm/test-runners/stale-build-global-setup.mjs +5 -22
  207. package/dist/lib/esm/test-runners/vitest-config.d.mts +2 -3
  208. package/dist/lib/esm/test-runners/vitest-config.mjs +8 -25
  209. package/dist/lib/esm/version.d.mts +1 -1
  210. package/dist/lib/esm/version.mjs +5 -22
  211. package/dist/lib/esm/vitest-setup.d.mts +1 -1
  212. package/dist/lib/esm/vitest-setup.mjs +5 -22
  213. package/dist/templates/scripts/markdownlint-cli2-config.ts +2 -2
  214. package/linters/eslint-rules/no-local-obsidian-internals/package.json +6 -0
  215. package/linters/eslint-rules/{obsidian-dev-utils-plugin → obsidian-dev-toolkit-plugin}/package.json +3 -3
  216. package/linters/eslint-rules/plugin-name-as-code/package.json +6 -0
  217. package/linters/eslint-rules/plugin-name-as-code-in-ui/package.json +6 -0
  218. package/linters/eslint-rules/require-plugin-api-contract-schemas/package.json +6 -0
  219. package/linters/markdownlint-cli2-config/package.json +6 -0
  220. package/linters/markdownlint-rules/index/package.json +6 -0
  221. package/linters/markdownlint-rules/package.json +6 -0
  222. package/linters/markdownlint-rules/plugin-name-as-code/package.json +6 -0
  223. package/linters/plugin-names/package.json +6 -0
  224. package/package.json +86 -25
  225. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +0 -186
  226. package/dist/lib/cjs/linters/eslint-rules/obsidian-dev-utils-plugin.d.cts +0 -13
  227. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.d.mts +0 -13
  228. package/dist/lib/esm/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +0 -73
@@ -0,0 +1,169 @@
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
+ (function patchObsidianRequire() {
6
+ const originalRequire = require;
7
+ if (!originalRequire || originalRequire.__isPatched) {
8
+ return;
9
+ }
10
+
11
+ require = Object.assign(
12
+ (id) => requirePatched(id),
13
+ originalRequire,
14
+ {
15
+ __isPatched: true
16
+ }
17
+ );
18
+
19
+ function extractDefault(module) {
20
+ return module && module.__esModule && 'default' in module ? module.default : module;
21
+ }
22
+
23
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
24
+ '@codemirror/autocomplete',
25
+ '@codemirror/collab',
26
+ '@codemirror/commands',
27
+ '@codemirror/language',
28
+ '@codemirror/lint',
29
+ '@codemirror/search',
30
+ '@codemirror/state',
31
+ '@codemirror/text',
32
+ '@codemirror/view',
33
+ '@lezer/common',
34
+ '@lezer/highlight',
35
+ '@lezer/lr',
36
+ 'obsidian']
37
+ );
38
+
39
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
40
+ '@codemirror/closebrackets',
41
+ '@codemirror/comment',
42
+ '@codemirror/fold',
43
+ '@codemirror/gutter',
44
+ '@codemirror/highlight',
45
+ '@codemirror/history',
46
+ '@codemirror/matchbrackets',
47
+ '@codemirror/panel',
48
+ '@codemirror/rangeset',
49
+ '@codemirror/rectangular-selection',
50
+ '@codemirror/stream-parser',
51
+ '@codemirror/tooltip']
52
+ );
53
+
54
+ function requirePatched(id) {
55
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
56
+ return originalRequire?.(id);
57
+ }
58
+
59
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
60
+ if (globalThis.app.isMobile) {
61
+ if (id === 'process' || id === 'node:process') {
62
+ // eslint-disable-next-line no-console -- Valid usage.
63
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
64
+
65
+ return process;
66
+ }
67
+ } else {
68
+ const module = originalRequire?.(id);
69
+ if (module) {
70
+ return extractDefault(module);
71
+ }
72
+ }
73
+
74
+ // eslint-disable-next-line no-console -- Valid usage.
75
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
76
+ return {};
77
+ }
78
+ })();
79
+
80
+ "use strict";
81
+ var __defProp = Object.defineProperty;
82
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
83
+ var __getOwnPropNames = Object.getOwnPropertyNames;
84
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
85
+ var __export = (target, all) => {
86
+ for (var name in all)
87
+ __defProp(target, name, { get: all[name], enumerable: true });
88
+ };
89
+ var __copyProps = (to, from, except, desc) => {
90
+ if (from && typeof from === "object" || typeof from === "function") {
91
+ for (let key of __getOwnPropNames(from))
92
+ if (!__hasOwnProp.call(to, key) && key !== except)
93
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
94
+ }
95
+ return to;
96
+ };
97
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
98
+ var plugin_name_as_code_exports = {};
99
+ __export(plugin_name_as_code_exports, {
100
+ MESSAGE_ID: () => MESSAGE_ID,
101
+ PLUGIN_NAME_RULE_SCHEMA: () => PLUGIN_NAME_RULE_SCHEMA,
102
+ pluginNameAsCode: () => pluginNameAsCode
103
+ });
104
+ module.exports = __toCommonJS(plugin_name_as_code_exports);
105
+ var import_plugin_names = require('../plugin-names.cjs');
106
+ const MESSAGE_ID = "pluginNameAsCode";
107
+ const EXCLUDED_COMMENT_PATTERNS = [
108
+ /(?<ticks>`+)[\s\S]*?\k<ticks>/g,
109
+ /\{@link\w*[^}]*\}/g,
110
+ /\b[a-z][\w+.-]*:\/\/\S+/gi
111
+ ];
112
+ const COMMENT_OPENING_LENGTH = 2;
113
+ const PLUGIN_NAME_RULE_SCHEMA = [
114
+ {
115
+ additionalProperties: false,
116
+ properties: {
117
+ additionalPluginNames: {
118
+ items: { type: "string" },
119
+ type: "array"
120
+ }
121
+ },
122
+ type: "object"
123
+ }
124
+ ];
125
+ const pluginNameAsCode = {
126
+ create(context) {
127
+ const options = context.options[0];
128
+ const pluginNames = (0, import_plugin_names.getPluginNames)({ additionalPluginNames: options?.additionalPluginNames, cwd: context.cwd });
129
+ const sourceCode = context.sourceCode;
130
+ return {
131
+ Program() {
132
+ for (const comment of sourceCode.getAllComments()) {
133
+ const [valueStart] = sourceCode.getRange(comment);
134
+ for (const match of (0, import_plugin_names.findPluginNameMatches)(comment.value, pluginNames, EXCLUDED_COMMENT_PATTERNS)) {
135
+ const start = valueStart + COMMENT_OPENING_LENGTH + match.index;
136
+ const end = start + match.name.length;
137
+ context.report({
138
+ data: { name: match.name },
139
+ fix: (fixer) => fixer.replaceTextRange([start, end], `\`${match.name}\``),
140
+ loc: {
141
+ end: sourceCode.getLocFromIndex(end),
142
+ start: sourceCode.getLocFromIndex(start)
143
+ },
144
+ messageId: MESSAGE_ID
145
+ });
146
+ }
147
+ }
148
+ }
149
+ };
150
+ },
151
+ meta: {
152
+ docs: {
153
+ description: "Require a plugin name in a comment to be marked as code with backticks"
154
+ },
155
+ fixable: "code",
156
+ messages: {
157
+ [MESSAGE_ID]: "Mark the plugin name `{{ name }}` as code: wrap it in backticks."
158
+ },
159
+ schema: PLUGIN_NAME_RULE_SCHEMA,
160
+ type: "suggestion"
161
+ }
162
+ };
163
+ // Annotate the CommonJS export names for ESM import in node:
164
+ 0 && (module.exports = {
165
+ MESSAGE_ID,
166
+ PLUGIN_NAME_RULE_SCHEMA,
167
+ pluginNameAsCode
168
+ });
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9wbHVnaW4tbmFtZS1hcy1jb2RlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcGx1Z2luLW5hbWUtYXMtY29kZVxuICpcbiAqIFJlcG9ydHMgYW4gT2JzaWRpYW4gcGx1Z2luJ3MgZGlzcGxheSBuYW1lIHdyaXR0ZW4gYXMgcGxhaW4gdGV4dCBpbiBhIGNvZGUgY29tbWVudCwgYW5kIGF1dG9maXhlcyBpdCBieSB3cmFwcGluZ1xuICogdGhlIG5hbWUgaW4gYmFja3RpY2tzLiBUU0RvYyByZW5kZXJzIGEgbmFtZSBpbiBiYWNrdGlja3MgYXMgY29kZSwgc28gYSBkb2MgY29tbWVudCByZWFkcyB0aGUgc2FtZSBhcyB0aGUgUkVBRE1FLlxuICpcbiAqIEV2ZXJ5IGNvbW1lbnQgaXMgcmVhZDogYC8vYCwgYC8qICpcXC9gIGFuZCBKU0RvYyAvIFRTRG9jLiBBIG5hbWUgYWxyZWFkeSBpbnNpZGUgYSBjb2RlIHNwYW4sIGFuIGlubGluZSBgQGxpbmtgIHRhZ1xuICogKHdob3NlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyKSBvciBhIFVSTCBpcyBsZWZ0IGFsb25lLiBUaGUgbmFtZXMgY29tZSBmcm9tIGBwbHVnaW4tbmFtZXMudHNgOiB0aGUgc2hhcmVkIGxpc3QsXG4gKiB0aGUgcHJvamVjdCdzIG93biBgbWFuaWZlc3QuanNvbmAgYG5hbWVgLCBhbmQgdGhlIHJ1bGUncyBgYWRkaXRpb25hbFBsdWdpbk5hbWVzYCBvcHRpb24uXG4gKlxuICogTm90IGF0dGVtcHRlZDogYSBtdWx0aS13b3JkIG5hbWUgYnJva2VuIGFjcm9zcyB0d28gY29tbWVudCBsaW5lcywgd2hpY2ggYSByZWFkZXIgY2Fubm90IHRlbGwgZnJvbSB0d28gdW5yZWxhdGVkXG4gKiB3b3JkcyB3aXRob3V0IHVuZGVyc3RhbmRpbmcgdGhlIHByb3NlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luTmFtZVJ1bGVPcHRpb25zIH0gZnJvbSAnLi4vcGx1Z2luLW5hbWVzLnRzJztcblxuaW1wb3J0IHtcbiAgZmluZFBsdWdpbk5hbWVNYXRjaGVzLFxuICBnZXRQbHVnaW5OYW1lc1xufSBmcm9tICcuLi9wbHVnaW4tbmFtZXMudHMnO1xuXG4vKipcbiAqIE1lc3NhZ2UgSUQgcmVwb3J0ZWQgZm9yIGEgcGx1Z2luIG5hbWUgd3JpdHRlbiBhcyBwbGFpbiB0ZXh0IGluIGEgY29tbWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncGx1Z2luTmFtZUFzQ29kZSc7XG5cbi8qKlxuICogVGhlIGNvbW1lbnQgc3BhbnMgd2hvc2UgcGx1Z2luIG5hbWVzIGFyZSBhbHJlYWR5IG1hcmtlZCBvciBhcmUgbm90IHByb3NlOiBhIGNvZGUgc3BhbiwgYW4gaW5saW5lIGBAbGlua2AgdGFnLCBhIFVSTC5cbiAqL1xuY29uc3QgRVhDTFVERURfQ09NTUVOVF9QQVRURVJOUzogcmVhZG9ubHkgUmVnRXhwW10gPSBbXG4gIC8oPzx0aWNrcz5gKylbXFxzXFxTXSo/XFxrPHRpY2tzPi9nLFxuICAvXFx7QGxpbmtcXHcqW159XSpcXH0vZyxcbiAgL1xcYlthLXpdW1xcdysuLV0qOlxcL1xcL1xcUysvZ2lcbl07XG5cbi8qKlxuICogVGhlIGxlbmd0aCBvZiB0aGUgb3BlbmluZyBkZWxpbWl0ZXIgb2YgYSBgLy9gIG9yIGAvKmAgY29tbWVudCwgd2hpY2ggYGNvbW1lbnQudmFsdWVgIGxlYXZlcyBvdXQuXG4gKi9cbmNvbnN0IENPTU1FTlRfT1BFTklOR19MRU5HVEggPSAyO1xuXG4vKipcbiAqIFRoZSBKU09OIHNjaGVtYSBvZiB0aGUgb3B0aW9ucyB0aGUgcGx1Z2luLW5hbWUgcnVsZXMgdGFrZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9OQU1FX1JVTEVfU0NIRU1BOiBSdWxlLlJ1bGVNZXRhRGF0YVsnc2NoZW1hJ10gPSBbXG4gIHtcbiAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgYWRkaXRpb25hbFBsdWdpbk5hbWVzOiB7XG4gICAgICAgIGl0ZW1zOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgIHR5cGU6ICdhcnJheSdcbiAgICAgIH1cbiAgICB9LFxuICAgIHR5cGU6ICdvYmplY3QnXG4gIH1cbl07XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgcmVxdWlyaW5nIGEgcGx1Z2luIG5hbWUgaW4gYSBjb21tZW50IHRvIGJlIG1hcmtlZCBhcyBjb2RlLlxuICovXG5leHBvcnQgY29uc3QgcGx1Z2luTmFtZUFzQ29kZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb250ZXh0Lm9wdGlvbnNbMF0gYXMgUGx1Z2luTmFtZVJ1bGVPcHRpb25zIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBsdWdpbk5hbWVzID0gZ2V0UGx1Z2luTmFtZXMoeyBhZGRpdGlvbmFsUGx1Z2luTmFtZXM6IG9wdGlvbnM/LmFkZGl0aW9uYWxQbHVnaW5OYW1lcywgY3dkOiBjb250ZXh0LmN3ZCB9KTtcbiAgICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5zb3VyY2VDb2RlO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIFByb2dyYW0oKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBzb3VyY2VDb2RlLmdldEFsbENvbW1lbnRzKCkpIHtcbiAgICAgICAgICBjb25zdCBbdmFsdWVTdGFydF0gPSBzb3VyY2VDb2RlLmdldFJhbmdlKGNvbW1lbnQpO1xuICAgICAgICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgZmluZFBsdWdpbk5hbWVNYXRjaGVzKGNvbW1lbnQudmFsdWUsIHBsdWdpbk5hbWVzLCBFWENMVURFRF9DT01NRU5UX1BBVFRFUk5TKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB2YWx1ZVN0YXJ0ICsgQ09NTUVOVF9PUEVOSU5HX0xFTkdUSCArIG1hdGNoLmluZGV4O1xuICAgICAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyBtYXRjaC5uYW1lLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgZGF0YTogeyBuYW1lOiBtYXRjaC5uYW1lIH0sXG4gICAgICAgICAgICAgIGZpeDogKGZpeGVyKSA9PiBmaXhlci5yZXBsYWNlVGV4dFJhbmdlKFtzdGFydCwgZW5kXSwgYFxcYCR7bWF0Y2gubmFtZX1cXGBgKSxcbiAgICAgICAgICAgICAgbG9jOiB7XG4gICAgICAgICAgICAgICAgZW5kOiBzb3VyY2VDb2RlLmdldExvY0Zyb21JbmRleChlbmQpLFxuICAgICAgICAgICAgICAgIHN0YXJ0OiBzb3VyY2VDb2RlLmdldExvY0Zyb21JbmRleChzdGFydClcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGEgcGx1Z2luIG5hbWUgaW4gYSBjb21tZW50IHRvIGJlIG1hcmtlZCBhcyBjb2RlIHdpdGggYmFja3RpY2tzJ1xuICAgIH0sXG4gICAgZml4YWJsZTogJ2NvZGUnLFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdNYXJrIHRoZSBwbHVnaW4gbmFtZSBge3sgbmFtZSB9fWAgYXMgY29kZTogd3JhcCBpdCBpbiBiYWNrdGlja3MuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBQTFVHSU5fTkFNRV9SVUxFX1NDSEVNQSxcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbidcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0JBLDBCQUdPO0FBS0EsTUFBTSxhQUFhO0FBSzFCLE1BQU0sNEJBQStDO0FBQUEsRUFDbkQ7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBS0EsTUFBTSx5QkFBeUI7QUFLeEIsTUFBTSwwQkFBdUQ7QUFBQSxFQUNsRTtBQUFBLElBQ0Usc0JBQXNCO0FBQUEsSUFDdEIsWUFBWTtBQUFBLE1BQ1YsdUJBQXVCO0FBQUEsUUFDckIsT0FBTyxFQUFFLE1BQU0sU0FBUztBQUFBLFFBQ3hCLE1BQU07QUFBQSxNQUNSO0FBQUEsSUFDRjtBQUFBLElBQ0EsTUFBTTtBQUFBLEVBQ1I7QUFDRjtBQUtPLE1BQU0sbUJBQW9DO0FBQUEsRUFDL0MsT0FBTyxTQUFTO0FBQ2QsVUFBTSxVQUFVLFFBQVEsUUFBUSxDQUFDO0FBQ2pDLFVBQU0sa0JBQWMsb0NBQWUsRUFBRSx1QkFBdUIsU0FBUyx1QkFBdUIsS0FBSyxRQUFRLElBQUksQ0FBQztBQUM5RyxVQUFNLGFBQWEsUUFBUTtBQUUzQixXQUFPO0FBQUEsTUFDTCxVQUFnQjtBQUNkLG1CQUFXLFdBQVcsV0FBVyxlQUFlLEdBQUc7QUFDakQsZ0JBQU0sQ0FBQyxVQUFVLElBQUksV0FBVyxTQUFTLE9BQU87QUFDaEQscUJBQVcsYUFBUywyQ0FBc0IsUUFBUSxPQUFPLGFBQWEseUJBQXlCLEdBQUc7QUFDaEcsa0JBQU0sUUFBUSxhQUFhLHlCQUF5QixNQUFNO0FBQzFELGtCQUFNLE1BQU0sUUFBUSxNQUFNLEtBQUs7QUFDL0Isb0JBQVEsT0FBTztBQUFBLGNBQ2IsTUFBTSxFQUFFLE1BQU0sTUFBTSxLQUFLO0FBQUEsY0FDekIsS0FBSyxDQUFDLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsR0FBRyxLQUFLLE1BQU0sSUFBSSxJQUFJO0FBQUEsY0FDeEUsS0FBSztBQUFBLGdCQUNILEtBQUssV0FBVyxnQkFBZ0IsR0FBRztBQUFBLGdCQUNuQyxPQUFPLFdBQVcsZ0JBQWdCLEtBQUs7QUFBQSxjQUN6QztBQUFBLGNBQ0EsV0FBVztBQUFBLFlBQ2IsQ0FBQztBQUFBLFVBQ0g7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLE1BQ1IsQ0FBQyxVQUFVLEdBQUc7QUFBQSxJQUNoQjtBQUFBLElBQ0EsUUFBUTtBQUFBLElBQ1IsTUFBTTtBQUFBLEVBQ1I7QUFDRjsiLCJuYW1lcyI6W119
@@ -0,0 +1,29 @@
1
+ /// <reference path="../../library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * ESLint rule: plugin-name-as-code
6
+ *
7
+ * Reports an Obsidian plugin's display name written as plain text in a code comment, and autofixes it by wrapping
8
+ * the name in backticks. TSDoc renders a name in backticks as code, so a doc comment reads the same as the README.
9
+ *
10
+ * Every comment is read: `//`, `/* *\/` and JSDoc / TSDoc. A name already inside a code span, an inline `@link` tag
11
+ * (whose target is an identifier) or a URL is left alone. The names come from `plugin-names.ts`: the shared list,
12
+ * the project's own `manifest.json` `name`, and the rule's `additionalPluginNames` option.
13
+ *
14
+ * Not attempted: a multi-word name broken across two comment lines, which a reader cannot tell from two unrelated
15
+ * words without understanding the prose.
16
+ */
17
+ import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
18
+ /**
19
+ * Message ID reported for a plugin name written as plain text in a comment.
20
+ */
21
+ export declare const MESSAGE_ID = "pluginNameAsCode";
22
+ /**
23
+ * The JSON schema of the options the plugin-name rules take.
24
+ */
25
+ export declare const PLUGIN_NAME_RULE_SCHEMA: Rule.RuleMetaData['schema'];
26
+ /**
27
+ * ESLint rule requiring a plugin name in a comment to be marked as code.
28
+ */
29
+ export declare const pluginNameAsCode: Rule.RuleModule;
@@ -2,63 +2,32 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
15
9
  cwd() {
16
- return '/';
10
+ return "/";
17
11
  },
18
12
  env: {},
19
- platform: 'android'
13
+ platform: "android"
20
14
  };
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
15
  const existingProcess = globalThis.process;
24
-
25
16
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
17
  globalThis.process = browserProcess;
28
18
  return;
29
19
  }
30
-
31
20
  if (existingProcess.versions?.node) {
32
21
  return;
33
22
  }
34
-
35
23
  const existingProcessRecord = existingProcess;
36
-
37
24
  for (const [key, value] of Object.entries(browserProcess)) {
38
25
  existingProcessRecord[key] ??= value;
39
26
  }
40
-
41
- existingProcessRecord['browser'] = true;
27
+ existingProcessRecord["browser"] = true;
42
28
  }
43
29
 
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
- })();
30
+ ensureBrowserProcess();
62
31
  })();
63
32
  (function patchObsidianRequire() {
64
33
  const originalRequire = require;
@@ -66,7 +35,6 @@ function keepName($unknown) {
66
35
  return;
67
36
  }
68
37
 
69
- // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
70
38
  require = Object.assign(
71
39
  (id) => requirePatched(id),
72
40
  originalRequire,
@@ -288,4 +256,4 @@ function reportClass(params) {
288
256
  MESSAGE_ID_MISSING_SUFFIX,
289
257
  requireComponentSuffix
290
258
  });
291
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3JlcXVpcmUtY29tcG9uZW50LXN1ZmZpeC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiByZXF1aXJlLWNvbXBvbmVudC1zdWZmaXhcbiAqXG4gKiBSZXBvcnRzIGFuIGVycm9yIHdoZW4gYSBjbGFzcyB0aGF0IGV4dGVuZHMgYENvbXBvbmVudGAgKGZyb20gT2JzaWRpYW4sXG4gKiBkaXJlY3RseSBvciB0cmFuc2l0aXZlbHkpIGRvZXMgbm90IGhhdmUgYSBuYW1lIGVuZGluZyB3aXRoIGBDb21wb25lbnRgXG4gKiAob3IgYENvbXBvbmVudEJhc2VgIGZvciBhYnN0cmFjdCBiYXNlIGNsYXNzZXMpLlxuICpcbiAqIENsYXNzZXMgd2hvc2UgaW5oZXJpdGFuY2UgY2hhaW4gaW5jbHVkZXMgYW55IG9mIHRoZSBPYnNpZGlhbiBmcmFtZXdvcmtcbiAqIGNsYXNzZXMgdGhhdCBleHRlbmQgYENvbXBvbmVudGAgKGUuZy4gYFBsdWdpbmAsIGBWaWV3YCxcbiAqIGBNYXJrZG93blJlbmRlckNoaWxkYCwgYE1lbnVgLCBgSG92ZXJQb3BvdmVyYCwgYFF1ZXJ5Q29udHJvbGxlcmApXG4gKiBhcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGZvbGxvdyBPYnNpZGlhbidzIG93biBuYW1pbmcgY29udmVudGlvbnMuXG4gKlxuICogVGhlIHJ1bGUgdXNlcyB0aGUgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIgdG8gd2FsayB0aGUgZnVsbCBpbmhlcml0YW5jZVxuICogY2hhaW4sIHNvIGl0IHdvcmtzIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgaW50ZXJtZWRpYXRlIGNsYXNzZXMgc2l0XG4gKiBiZXR3ZWVuIHRoZSB1c2VyJ3MgY2xhc3MgYW5kIGBDb21wb25lbnRgLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgdG9UU0VTVHJlZU5vZGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL2VzbGludC1ydWxlcy90cy1lc3RyZWUtbm9kZSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgY2xhc3MgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudGAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX01JU1NJTkdfU1VGRklYID0gJ3JlcXVpcmVDb21wb25lbnRTdWZmaXgnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhbiBhYnN0cmFjdCBjbGFzcyBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50QmFzZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UgPSAnYWJzdHJhY3ROZWVkc0NvbXBvbmVudEJhc2UnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIGNsYXNzIG5hbWUgZW5kcyB3aXRoIGBDb21wb25lbnRCYXNlYCBidXQgdGhlIGNsYXNzIGlzIG5vdCBhYnN0cmFjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQkFTRV9OT1RfQUJTVFJBQ1QgPSAnY29tcG9uZW50QmFzZU5vdEFic3RyYWN0JztcblxuLyoqXG5BbmNlc3RvciBjbGFzcyBuYW1lcyB0aGF0IG9wdCBhIHN1YnRyZWUgb3V0IG9mIHRoZSBzdWZmaXggcmVxdWlyZW1lbnQuXG4gKi9cbmNvbnN0IEVYQ0xVREVEX0FOQ0VTVE9SUyA9IG5ldyBTZXQoWydIb3ZlclBvcG92ZXInLCAnTWFya2Rvd25SZW5kZXJDaGlsZCcsICdNZW51JywgJ1BsdWdpbicsICdRdWVyeUNvbnRyb2xsZXInLCAnVmlldyddKTtcblxuLyoqXG5UaGUgYW5jZXN0b3IgY2xhc3MgbmFtZSB0aGF0IHRyaWdnZXJzIHRoZSBzdWZmaXggcmVxdWlyZW1lbnQuXG4gKi9cbmNvbnN0IFJFUVVJUkVEX0FOQ0VTVE9SID0gJ0NvbXBvbmVudCc7XG5cbmludGVyZmFjZSBUeXBlV2l0aEJhc2VUeXBlcyB7XG4gIGdldEJhc2VUeXBlcz86ICgpID0+IFR5cGVbXSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgY2xhc3NlcyB0aGF0IGV4dGVuZCBgQ29tcG9uZW50YCB0byBiZSBuYW1lZCB3aXRoIGEgYENvbXBvbmVudGAgc3VmZml4LCBhbmQgYWJzdHJhY3Qgb25lcyB3aXRoIGEgYENvbXBvbmVudEJhc2VgIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVpcmVDb21wb25lbnRTdWZmaXg6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGNvbnRleHQuc291cmNlQ29kZS5wYXJzZXJTZXJ2aWNlcyBhcyBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb247XG4gICAgY29uc3QgY2hlY2tlciA9IHNlcnZpY2VzLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAnQ2xhc3NEZWNsYXJhdGlvbltpZF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnRDbGFzcyh7XG4gICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgc2VydmljZXNcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgJ0NsYXNzRXhwcmVzc2lvbltpZF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnRDbGFzcyh7XG4gICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgc2VydmljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBjbGFzc2VzIGV4dGVuZGluZyBgQ29tcG9uZW50YCB0byBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIGBDb21wb25lbnRgJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0VdOiAnQWJzdHJhY3QgY2xhc3MgYHt7IGNsYXNzTmFtZSB9fWAgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudEJhc2VgLicsXG4gICAgICBbTUVTU0FHRV9JRF9CQVNFX05PVF9BQlNUUkFDVF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBlbmRzIHdpdGggYENvbXBvbmVudEJhc2VgIGJ1dCBpcyBub3QgYWJzdHJhY3QuIE9ubHkgYWJzdHJhY3QgY2xhc3NlcyBtYXkgdXNlIHRoZSBgQ29tcG9uZW50QmFzZWAgc3VmZml4LicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50YC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXBvcnRDbGFzc30uXG4gKi9cbmludGVyZmFjZSBSZXBvcnRDbGFzc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIuXG4gICAqL1xuICByZWFkb25seSBjaGVja2VyOiBSZXR1cm5UeXBlPFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvblsncHJvZ3JhbSddWydnZXRUeXBlQ2hlY2tlciddPjtcblxuICAvKipcbiAgICogVGhlIEVTTGludCBydWxlIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgY2xhc3MgQVNUIG5vZGUuXG4gICAqL1xuICByZWFkb25seSBub2RlOiBSdWxlLk5vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzZXIgc2VydmljZXMgd2l0aCB0eXBlIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZXM6IFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd2Fsa0FuY2VzdG9yc30uXG4gKi9cbmludGVyZmFjZSBXYWxrQW5jZXN0b3JzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzZXQgdG8gYWRkIGRpc2NvdmVyZWQgYW5jZXN0b3IgbmFtZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBjb2xsZWN0ZWROYW1lczogU2V0PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHR5cGUgdG8gaW5zcGVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRUeXBlOiBUeXBlO1xuXG4gIC8qKlxuICAgKiBUeXBlcyBhbHJlYWR5IHZpc2l0ZWQsIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMuXG4gICAqL1xuICByZWFkb25seSB2aXNpdGVkVHlwZXM6IFNldDxUeXBlPjtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyB0aGUgbmFtZXMgb2YgYWxsIGFuY2VzdG9yIHR5cGVzIGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi5cbiAqXG4gKiBAcGFyYW0gdHlwZSAtIFRoZSBUeXBlU2NyaXB0IHR5cGUgdG8gc3RhcnQgZnJvbS5cbiAqIEByZXR1cm5zIEEgc2V0IG9mIGFuY2VzdG9yIGNsYXNzIG5hbWVzLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0QW5jZXN0b3JOYW1lcyh0eXBlOiBUeXBlKTogU2V0PHN0cmluZz4ge1xuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxUeXBlPigpO1xuXG4gIHdhbGtBbmNlc3RvcnMoe1xuICAgIGNvbGxlY3RlZE5hbWVzOiBuYW1lcyxcbiAgICBjdXJyZW50VHlwZTogdHlwZSxcbiAgICB2aXNpdGVkVHlwZXM6IHZpc2l0ZWRcbiAgfSk7XG5cbiAgcmV0dXJuIG5hbWVzO1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSB3YWxrcyB0aGUgYmFzZSB0eXBlcyBvZiBhIHR5cGUsIGNvbGxlY3RpbmcgdGhlaXIgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHdhbGsuXG4gICAqL1xuICBmdW5jdGlvbiB3YWxrQW5jZXN0b3JzKHBhcmFtczogV2Fsa0FuY2VzdG9yc1BhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29sbGVjdGVkTmFtZXMsIGN1cnJlbnRUeXBlLCB2aXNpdGVkVHlwZXMgfSA9IHBhcmFtcztcbiAgICBpZiAodmlzaXRlZFR5cGVzLmhhcyhjdXJyZW50VHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aXNpdGVkVHlwZXMuYWRkKGN1cnJlbnRUeXBlKTtcblxuICAgIGNvbnN0IGJhc2VUeXBlcyA9IChjdXJyZW50VHlwZSBhcyBUeXBlV2l0aEJhc2VUeXBlcykuZ2V0QmFzZVR5cGVzPy4oKTtcblxuICAgIGlmICghYmFzZVR5cGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBiYXNlVHlwZSBvZiBiYXNlVHlwZXMpIHtcbiAgICAgIGNvbnN0ICRzeW1ib2wgPSBiYXNlVHlwZS5nZXRTeW1ib2woKTtcblxuICAgICAgaWYgKCRzeW1ib2wpIHtcbiAgICAgICAgY29sbGVjdGVkTmFtZXMuYWRkKCRzeW1ib2wuZ2V0TmFtZSgpKTtcbiAgICAgIH1cblxuICAgICAgd2Fsa0FuY2VzdG9ycyh7XG4gICAgICAgIGNvbGxlY3RlZE5hbWVzLFxuICAgICAgICBjdXJyZW50VHlwZTogYmFzZVR5cGUsXG4gICAgICAgIHZpc2l0ZWRUeXBlc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgc2luZ2xlIGNsYXNzIGRlY2xhcmF0aW9uIG9yIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY2hlY2suXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydENsYXNzKHBhcmFtczogUmVwb3J0Q2xhc3NQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyBjaGVja2VyLCBjb250ZXh0LCBub2RlLCBzZXJ2aWNlcyB9ID0gcGFyYW1zO1xuICBjb25zdCBjbGFzc05vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5DbGFzc0RlY2xhcmF0aW9uIHwgVFNFU1RyZWUuQ2xhc3NFeHByZXNzaW9uO1xuICBjb25zdCBjbGFzc0lkID0gY2xhc3NOb2RlLmlkO1xuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFU0xpbnQgc2VsZWN0b3IgYFtpZF1gIGd1YXJhbnRlZXMgY2xhc3NJZCBpcyBwcmVzZW50LiAqL1xuICBpZiAoIWNsYXNzSWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCBjbGFzc05hbWUgPSBjbGFzc0lkLm5hbWU7XG4gIGNvbnN0IHsgYWJzdHJhY3Q6IGlzQWJzdHJhY3QgfSA9IGNsYXNzTm9kZTtcbiAgY29uc3QgaGFzQ29tcG9uZW50QmFzZVN1ZmZpeCA9IGNsYXNzTmFtZS5lbmRzV2l0aCgnQ29tcG9uZW50QmFzZScpO1xuICBjb25zdCBoYXNDb21wb25lbnRTdWZmaXggPSAhaGFzQ29tcG9uZW50QmFzZVN1ZmZpeCAmJiBjbGFzc05hbWUuZW5kc1dpdGgoJ0NvbXBvbmVudCcpO1xuXG4gIC8vIENvcnJlY3Q6IG5vbi1hYnN0cmFjdCBlbmRpbmcgd2l0aCBDb21wb25lbnQsIG9yIGFic3RyYWN0IGVuZGluZyB3aXRoIENvbXBvbmVudEJhc2VcbiAgaWYgKChoYXNDb21wb25lbnRTdWZmaXggJiYgIWlzQWJzdHJhY3QpIHx8IChoYXNDb21wb25lbnRCYXNlU3VmZml4ICYmIGlzQWJzdHJhY3QpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdHNOb2RlID0gc2VydmljZXMuZXNUcmVlTm9kZVRvVFNOb2RlTWFwLmdldChjbGFzc05vZGUpO1xuICBjb25zdCBjbGFzc1R5cGUgPSBjaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHRzTm9kZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGNvbGxlY3RBbmNlc3Rvck5hbWVzKGNsYXNzVHlwZSk7XG5cbiAgaWYgKCFhbmNlc3RvcnMuaGFzKFJFUVVJUkVEX0FOQ0VTVE9SKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgZXhjbHVkZWQgb2YgRVhDTFVERURfQU5DRVNUT1JTKSB7XG4gICAgaWYgKGFuY2VzdG9ycy5oYXMoZXhjbHVkZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc0NvbXBvbmVudEJhc2VTdWZmaXggJiYgIWlzQWJzdHJhY3QpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX0JBU0VfTk9UX0FCU1RSQUNULFxuICAgICAgbm9kZVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzQWJzdHJhY3QpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UsXG4gICAgICBub2RlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBjbGFzc05hbWUgfSxcbiAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWCxcbiAgICAgIG5vZGVcbiAgICB9KTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCQSw0QkFBK0I7QUFLeEIsTUFBTSw0QkFBNEI7QUFLbEMsTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSwrQkFBK0I7QUFLNUMsTUFBTSxxQkFBcUIsb0JBQUksSUFBSSxDQUFDLGdCQUFnQix1QkFBdUIsUUFBUSxVQUFVLG1CQUFtQixNQUFNLENBQUM7QUFLdkgsTUFBTSxvQkFBb0I7QUFTbkIsTUFBTSx5QkFBMEM7QUFBQSxFQUNyRCxPQUFPLFNBQVM7QUFDZCxVQUFNLFdBQVcsUUFBUSxXQUFXO0FBQ3BDLFVBQU0sVUFBVSxTQUFTLFFBQVEsZUFBZTtBQUVoRCxXQUFPO0FBQUEsTUFDTCx1QkFBdUIsTUFBdUI7QUFDNUMsb0JBQVk7QUFBQSxVQUNWO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0Esc0JBQXNCLE1BQXVCO0FBQzNDLG9CQUFZO0FBQUEsVUFDVjtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFB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
259
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiByZXF1aXJlLWNvbXBvbmVudC1zdWZmaXhcbiAqXG4gKiBSZXBvcnRzIGFuIGVycm9yIHdoZW4gYSBjbGFzcyB0aGF0IGV4dGVuZHMgYENvbXBvbmVudGAgKGZyb20gT2JzaWRpYW4sXG4gKiBkaXJlY3RseSBvciB0cmFuc2l0aXZlbHkpIGRvZXMgbm90IGhhdmUgYSBuYW1lIGVuZGluZyB3aXRoIGBDb21wb25lbnRgXG4gKiAob3IgYENvbXBvbmVudEJhc2VgIGZvciBhYnN0cmFjdCBiYXNlIGNsYXNzZXMpLlxuICpcbiAqIENsYXNzZXMgd2hvc2UgaW5oZXJpdGFuY2UgY2hhaW4gaW5jbHVkZXMgYW55IG9mIHRoZSBPYnNpZGlhbiBmcmFtZXdvcmtcbiAqIGNsYXNzZXMgdGhhdCBleHRlbmQgYENvbXBvbmVudGAgKGUuZy4gYFBsdWdpbmAsIGBWaWV3YCxcbiAqIGBNYXJrZG93blJlbmRlckNoaWxkYCwgYE1lbnVgLCBgSG92ZXJQb3BvdmVyYCwgYFF1ZXJ5Q29udHJvbGxlcmApXG4gKiBhcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGZvbGxvdyBPYnNpZGlhbidzIG93biBuYW1pbmcgY29udmVudGlvbnMuXG4gKlxuICogVGhlIHJ1bGUgdXNlcyB0aGUgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIgdG8gd2FsayB0aGUgZnVsbCBpbmhlcml0YW5jZVxuICogY2hhaW4sIHNvIGl0IHdvcmtzIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgaW50ZXJtZWRpYXRlIGNsYXNzZXMgc2l0XG4gKiBiZXR3ZWVuIHRoZSB1c2VyJ3MgY2xhc3MgYW5kIGBDb21wb25lbnRgLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgdG9UU0VTVHJlZU5vZGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9saW50ZXJzL2VzbGludC1ydWxlcy90cy1lc3RyZWUtbm9kZSc7XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgY2xhc3MgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudGAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX01JU1NJTkdfU1VGRklYID0gJ3JlcXVpcmVDb21wb25lbnRTdWZmaXgnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhbiBhYnN0cmFjdCBjbGFzcyBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50QmFzZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UgPSAnYWJzdHJhY3ROZWVkc0NvbXBvbmVudEJhc2UnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIGNsYXNzIG5hbWUgZW5kcyB3aXRoIGBDb21wb25lbnRCYXNlYCBidXQgdGhlIGNsYXNzIGlzIG5vdCBhYnN0cmFjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQkFTRV9OT1RfQUJTVFJBQ1QgPSAnY29tcG9uZW50QmFzZU5vdEFic3RyYWN0JztcblxuLyoqXG5BbmNlc3RvciBjbGFzcyBuYW1lcyB0aGF0IG9wdCBhIHN1YnRyZWUgb3V0IG9mIHRoZSBzdWZmaXggcmVxdWlyZW1lbnQuXG4gKi9cbmNvbnN0IEVYQ0xVREVEX0FOQ0VTVE9SUyA9IG5ldyBTZXQoWydIb3ZlclBvcG92ZXInLCAnTWFya2Rvd25SZW5kZXJDaGlsZCcsICdNZW51JywgJ1BsdWdpbicsICdRdWVyeUNvbnRyb2xsZXInLCAnVmlldyddKTtcblxuLyoqXG5UaGUgYW5jZXN0b3IgY2xhc3MgbmFtZSB0aGF0IHRyaWdnZXJzIHRoZSBzdWZmaXggcmVxdWlyZW1lbnQuXG4gKi9cbmNvbnN0IFJFUVVJUkVEX0FOQ0VTVE9SID0gJ0NvbXBvbmVudCc7XG5cbmludGVyZmFjZSBUeXBlV2l0aEJhc2VUeXBlcyB7XG4gIGdldEJhc2VUeXBlcz86ICgpID0+IFR5cGVbXSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgY2xhc3NlcyB0aGF0IGV4dGVuZCBgQ29tcG9uZW50YCB0byBiZSBuYW1lZCB3aXRoIGEgYENvbXBvbmVudGAgc3VmZml4LCBhbmQgYWJzdHJhY3Qgb25lcyB3aXRoIGEgYENvbXBvbmVudEJhc2VgIHN1ZmZpeC5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVpcmVDb21wb25lbnRTdWZmaXg6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGNvbnRleHQuc291cmNlQ29kZS5wYXJzZXJTZXJ2aWNlcyBhcyBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb247XG4gICAgY29uc3QgY2hlY2tlciA9IHNlcnZpY2VzLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAnQ2xhc3NEZWNsYXJhdGlvbltpZF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnRDbGFzcyh7XG4gICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgc2VydmljZXNcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgJ0NsYXNzRXhwcmVzc2lvbltpZF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnRDbGFzcyh7XG4gICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgc2VydmljZXNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBjbGFzc2VzIGV4dGVuZGluZyBgQ29tcG9uZW50YCB0byBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIGBDb21wb25lbnRgJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0VdOiAnQWJzdHJhY3QgY2xhc3MgYHt7IGNsYXNzTmFtZSB9fWAgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudEJhc2VgLicsXG4gICAgICBbTUVTU0FHRV9JRF9CQVNFX05PVF9BQlNUUkFDVF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBlbmRzIHdpdGggYENvbXBvbmVudEJhc2VgIGJ1dCBpcyBub3QgYWJzdHJhY3QuIE9ubHkgYWJzdHJhY3QgY2xhc3NlcyBtYXkgdXNlIHRoZSBgQ29tcG9uZW50QmFzZWAgc3VmZml4LicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50YC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXBvcnRDbGFzc30uXG4gKi9cbmludGVyZmFjZSBSZXBvcnRDbGFzc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIuXG4gICAqL1xuICByZWFkb25seSBjaGVja2VyOiBSZXR1cm5UeXBlPFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvblsncHJvZ3JhbSddWydnZXRUeXBlQ2hlY2tlciddPjtcblxuICAvKipcbiAgICogVGhlIEVTTGludCBydWxlIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgY2xhc3MgQVNUIG5vZGUuXG4gICAqL1xuICByZWFkb25seSBub2RlOiBSdWxlLk5vZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzZXIgc2VydmljZXMgd2l0aCB0eXBlIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZXM6IFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgd2Fsa0FuY2VzdG9yc30uXG4gKi9cbmludGVyZmFjZSBXYWxrQW5jZXN0b3JzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzZXQgdG8gYWRkIGRpc2NvdmVyZWQgYW5jZXN0b3IgbmFtZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBjb2xsZWN0ZWROYW1lczogU2V0PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHR5cGUgdG8gaW5zcGVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRUeXBlOiBUeXBlO1xuXG4gIC8qKlxuICAgKiBUeXBlcyBhbHJlYWR5IHZpc2l0ZWQsIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHMuXG4gICAqL1xuICByZWFkb25seSB2aXNpdGVkVHlwZXM6IFNldDxUeXBlPjtcbn1cblxuLyoqXG4gKiBDb2xsZWN0cyB0aGUgbmFtZXMgb2YgYWxsIGFuY2VzdG9yIHR5cGVzIGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi5cbiAqXG4gKiBAcGFyYW0gdHlwZSAtIFRoZSBUeXBlU2NyaXB0IHR5cGUgdG8gc3RhcnQgZnJvbS5cbiAqIEByZXR1cm5zIEEgc2V0IG9mIGFuY2VzdG9yIGNsYXNzIG5hbWVzLlxuICovXG5mdW5jdGlvbiBjb2xsZWN0QW5jZXN0b3JOYW1lcyh0eXBlOiBUeXBlKTogU2V0PHN0cmluZz4ge1xuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxUeXBlPigpO1xuXG4gIHdhbGtBbmNlc3RvcnMoe1xuICAgIGNvbGxlY3RlZE5hbWVzOiBuYW1lcyxcbiAgICBjdXJyZW50VHlwZTogdHlwZSxcbiAgICB2aXNpdGVkVHlwZXM6IHZpc2l0ZWRcbiAgfSk7XG5cbiAgcmV0dXJuIG5hbWVzO1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSB3YWxrcyB0aGUgYmFzZSB0eXBlcyBvZiBhIHR5cGUsIGNvbGxlY3RpbmcgdGhlaXIgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHdhbGsuXG4gICAqL1xuICBmdW5jdGlvbiB3YWxrQW5jZXN0b3JzKHBhcmFtczogV2Fsa0FuY2VzdG9yc1BhcmFtcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29sbGVjdGVkTmFtZXMsIGN1cnJlbnRUeXBlLCB2aXNpdGVkVHlwZXMgfSA9IHBhcmFtcztcbiAgICBpZiAodmlzaXRlZFR5cGVzLmhhcyhjdXJyZW50VHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aXNpdGVkVHlwZXMuYWRkKGN1cnJlbnRUeXBlKTtcblxuICAgIGNvbnN0IGJhc2VUeXBlcyA9IChjdXJyZW50VHlwZSBhcyBUeXBlV2l0aEJhc2VUeXBlcykuZ2V0QmFzZVR5cGVzPy4oKTtcblxuICAgIGlmICghYmFzZVR5cGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBiYXNlVHlwZSBvZiBiYXNlVHlwZXMpIHtcbiAgICAgIGNvbnN0ICRzeW1ib2wgPSBiYXNlVHlwZS5nZXRTeW1ib2woKTtcblxuICAgICAgaWYgKCRzeW1ib2wpIHtcbiAgICAgICAgY29sbGVjdGVkTmFtZXMuYWRkKCRzeW1ib2wuZ2V0TmFtZSgpKTtcbiAgICAgIH1cblxuICAgICAgd2Fsa0FuY2VzdG9ycyh7XG4gICAgICAgIGNvbGxlY3RlZE5hbWVzLFxuICAgICAgICBjdXJyZW50VHlwZTogYmFzZVR5cGUsXG4gICAgICAgIHZpc2l0ZWRUeXBlc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgc2luZ2xlIGNsYXNzIGRlY2xhcmF0aW9uIG9yIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY2hlY2suXG4gKi9cbmZ1bmN0aW9uIHJlcG9ydENsYXNzKHBhcmFtczogUmVwb3J0Q2xhc3NQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3QgeyBjaGVja2VyLCBjb250ZXh0LCBub2RlLCBzZXJ2aWNlcyB9ID0gcGFyYW1zO1xuICBjb25zdCBjbGFzc05vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5DbGFzc0RlY2xhcmF0aW9uIHwgVFNFU1RyZWUuQ2xhc3NFeHByZXNzaW9uO1xuICBjb25zdCBjbGFzc0lkID0gY2xhc3NOb2RlLmlkO1xuXG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBFU0xpbnQgc2VsZWN0b3IgYFtpZF1gIGd1YXJhbnRlZXMgY2xhc3NJZCBpcyBwcmVzZW50LiAqL1xuICBpZiAoIWNsYXNzSWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICBjb25zdCBjbGFzc05hbWUgPSBjbGFzc0lkLm5hbWU7XG4gIGNvbnN0IHsgYWJzdHJhY3Q6IGlzQWJzdHJhY3QgfSA9IGNsYXNzTm9kZTtcbiAgY29uc3QgaGFzQ29tcG9uZW50QmFzZVN1ZmZpeCA9IGNsYXNzTmFtZS5lbmRzV2l0aCgnQ29tcG9uZW50QmFzZScpO1xuICBjb25zdCBoYXNDb21wb25lbnRTdWZmaXggPSAhaGFzQ29tcG9uZW50QmFzZVN1ZmZpeCAmJiBjbGFzc05hbWUuZW5kc1dpdGgoJ0NvbXBvbmVudCcpO1xuXG4gIC8vIENvcnJlY3Q6IG5vbi1hYnN0cmFjdCBlbmRpbmcgd2l0aCBDb21wb25lbnQsIG9yIGFic3RyYWN0IGVuZGluZyB3aXRoIENvbXBvbmVudEJhc2VcbiAgaWYgKChoYXNDb21wb25lbnRTdWZmaXggJiYgIWlzQWJzdHJhY3QpIHx8IChoYXNDb21wb25lbnRCYXNlU3VmZml4ICYmIGlzQWJzdHJhY3QpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdHNOb2RlID0gc2VydmljZXMuZXNUcmVlTm9kZVRvVFNOb2RlTWFwLmdldChjbGFzc05vZGUpO1xuICBjb25zdCBjbGFzc1R5cGUgPSBjaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHRzTm9kZSk7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGNvbGxlY3RBbmNlc3Rvck5hbWVzKGNsYXNzVHlwZSk7XG5cbiAgaWYgKCFhbmNlc3RvcnMuaGFzKFJFUVVJUkVEX0FOQ0VTVE9SKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgZXhjbHVkZWQgb2YgRVhDTFVERURfQU5DRVNUT1JTKSB7XG4gICAgaWYgKGFuY2VzdG9ycy5oYXMoZXhjbHVkZWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc0NvbXBvbmVudEJhc2VTdWZmaXggJiYgIWlzQWJzdHJhY3QpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX0JBU0VfTk9UX0FCU1RSQUNULFxuICAgICAgbm9kZVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzQWJzdHJhY3QpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UsXG4gICAgICBub2RlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBjbGFzc05hbWUgfSxcbiAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWCxcbiAgICAgIG5vZGVcbiAgICB9KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlCQSw0QkFBK0I7QUFLeEIsTUFBTSw0QkFBNEI7QUFLbEMsTUFBTSxpQ0FBaUM7QUFLdkMsTUFBTSwrQkFBK0I7QUFLNUMsTUFBTSxxQkFBcUIsb0JBQUksSUFBSSxDQUFDLGdCQUFnQix1QkFBdUIsUUFBUSxVQUFVLG1CQUFtQixNQUFNLENBQUM7QUFLdkgsTUFBTSxvQkFBb0I7QUFTbkIsTUFBTSx5QkFBMEM7QUFBQSxFQUNyRCxPQUFPLFNBQVM7QUFDZCxVQUFNLFdBQVcsUUFBUSxXQUFXO0FBQ3BDLFVBQU0sVUFBVSxTQUFTLFFBQVEsZUFBZTtBQUVoRCxXQUFPO0FBQUEsTUFDTCx1QkFBdUIsTUFBdUI7QUFDNUMsb0JBQVk7QUFBQSxVQUNWO0FBQUEsVUFDQTtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0Esc0JBQXNCLE1BQXVCO0FBQzNDLG9CQUFZO0FBQUEsVUFDVjtBQUFBLFVBQ0E7QUFBQSxVQUNBO0FBQUEsVUFDQTtBQUFBLFFBQ0YsQ0FBQztBQUFBLE1BQ0g7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBLEVBQ0Es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
@@ -1,4 +1,4 @@
1
- /// <reference path="../../index.d.cts" />
1
+ /// <reference path="../../library-references.d.cts" />
2
2
  import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
3
3
  /**
4
4
  Message ID reported when a class extends `Component` but its name does not end with `Component`.