@mnaoumov/obsidian-dev-toolkit 2.0.0 → 3.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 (142) hide show
  1. package/README.md +5 -1
  2. package/bin/archive-demo-vault.mjs +8 -0
  3. package/bin/generate-coverage-badge.mjs +8 -0
  4. package/bundlers/esbuild-impl/feature-options/package.json +6 -0
  5. package/bundlers/obsidian-cli-reload/package.json +6 -0
  6. package/bundlers/obsidian-plugin-build/package.json +6 -0
  7. package/bundlers/obsidian-plugin-features/package.json +6 -0
  8. package/bundlers/obsidian-plugin-transforms/package.json +6 -0
  9. package/bundlers/obsidian-plugin-webpack-loader/package.json +6 -0
  10. package/bundlers/obsidian-plugins-folder-deployment/package.json +6 -0
  11. package/bundlers/parcel/package.json +6 -0
  12. package/bundlers/rollup/package.json +6 -0
  13. package/bundlers/rollup-compatible/package.json +6 -0
  14. package/bundlers/rollup-compatible-features/package.json +6 -0
  15. package/bundlers/vite/package.json +6 -0
  16. package/bundlers/webpack/package.json +6 -0
  17. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +3 -188
  18. package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +2 -18
  19. package/dist/lib/cjs/bundlers/esbuild-impl/feature-options.cjs +173 -0
  20. package/dist/lib/cjs/bundlers/esbuild-impl/feature-options.d.cts +60 -0
  21. package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +4 -1
  22. package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -0
  23. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +30 -82
  24. package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +7 -24
  25. package/dist/lib/cjs/bundlers/index.cjs +39 -3
  26. package/dist/lib/cjs/bundlers/index.d.cts +12 -0
  27. package/dist/lib/cjs/bundlers/obsidian-cli-reload.cjs +182 -0
  28. package/dist/lib/cjs/bundlers/obsidian-cli-reload.d.cts +37 -0
  29. package/dist/lib/cjs/bundlers/obsidian-plugin-build.cjs +278 -0
  30. package/dist/lib/cjs/bundlers/obsidian-plugin-build.d.cts +217 -0
  31. package/dist/lib/cjs/bundlers/obsidian-plugin-features.cjs +242 -0
  32. package/dist/lib/cjs/bundlers/obsidian-plugin-features.d.cts +186 -0
  33. package/dist/lib/cjs/bundlers/obsidian-plugin-transforms.cjs +306 -0
  34. package/dist/lib/cjs/bundlers/obsidian-plugin-transforms.d.cts +231 -0
  35. package/dist/lib/cjs/bundlers/obsidian-plugin-webpack-loader.cjs +182 -0
  36. package/dist/lib/cjs/bundlers/obsidian-plugin-webpack-loader.d.cts +47 -0
  37. package/dist/lib/cjs/bundlers/obsidian-plugins-folder-deployment.cjs +320 -0
  38. package/dist/lib/cjs/bundlers/obsidian-plugins-folder-deployment.d.cts +44 -0
  39. package/dist/lib/cjs/bundlers/parcel.cjs +462 -0
  40. package/dist/lib/cjs/bundlers/parcel.d.cts +128 -0
  41. package/dist/lib/cjs/bundlers/rollup-compatible-features.cjs +181 -0
  42. package/dist/lib/cjs/bundlers/rollup-compatible-features.d.cts +128 -0
  43. package/dist/lib/cjs/bundlers/rollup-compatible.cjs +138 -0
  44. package/dist/lib/cjs/bundlers/rollup-compatible.d.cts +84 -0
  45. package/dist/lib/cjs/bundlers/rollup.cjs +218 -0
  46. package/dist/lib/cjs/bundlers/rollup.d.cts +99 -0
  47. package/dist/lib/cjs/bundlers/vite.cjs +229 -0
  48. package/dist/lib/cjs/bundlers/vite.d.cts +105 -0
  49. package/dist/lib/cjs/bundlers/webpack.cjs +354 -0
  50. package/dist/lib/cjs/bundlers/webpack.d.cts +133 -0
  51. package/dist/lib/cjs/demo-vault-cli.cjs +131 -0
  52. package/dist/lib/cjs/demo-vault-cli.d.cts +15 -0
  53. package/dist/lib/cjs/docs-site/index.cjs +118 -0
  54. package/dist/lib/cjs/docs-site/index.d.cts +2 -0
  55. package/dist/lib/cjs/docs-site/obsidian-external-type-links.cjs +119 -0
  56. package/dist/lib/cjs/docs-site/obsidian-external-type-links.d.cts +25 -0
  57. package/dist/lib/cjs/index.cjs +7 -1
  58. package/dist/lib/cjs/index.d.cts +2 -0
  59. package/dist/lib/cjs/test-runners/coverage-badge-cli.cjs +160 -0
  60. package/dist/lib/cjs/test-runners/coverage-badge-cli.d.cts +25 -0
  61. package/dist/lib/cjs/test-runners/coverage-badge.cjs +279 -0
  62. package/dist/lib/cjs/test-runners/coverage-badge.d.cts +143 -0
  63. package/dist/lib/cjs/test-runners/e2e-runner-support.cjs +170 -0
  64. package/dist/lib/cjs/test-runners/e2e-runner-support.d.cts +36 -0
  65. package/dist/lib/cjs/test-runners/index.cjs +18 -3
  66. package/dist/lib/cjs/test-runners/index.d.cts +5 -0
  67. package/dist/lib/cjs/test-runners/obsidian-test-runner.cjs +147 -0
  68. package/dist/lib/cjs/test-runners/obsidian-test-runner.d.cts +42 -0
  69. package/dist/lib/cjs/test-runners/wdio-obsidian.cjs +205 -0
  70. package/dist/lib/cjs/test-runners/wdio-obsidian.d.cts +199 -0
  71. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +2 -18
  72. package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +3 -192
  73. package/dist/lib/esm/bundlers/esbuild-impl/feature-options.d.mts +60 -0
  74. package/dist/lib/esm/bundlers/esbuild-impl/feature-options.mjs +82 -0
  75. package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -0
  76. package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +3 -1
  77. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +7 -24
  78. package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +41 -87
  79. package/dist/lib/esm/bundlers/index.d.mts +12 -0
  80. package/dist/lib/esm/bundlers/index.mjs +26 -2
  81. package/dist/lib/esm/bundlers/obsidian-cli-reload.d.mts +37 -0
  82. package/dist/lib/esm/bundlers/obsidian-cli-reload.mjs +83 -0
  83. package/dist/lib/esm/bundlers/obsidian-plugin-build.d.mts +217 -0
  84. package/dist/lib/esm/bundlers/obsidian-plugin-build.mjs +166 -0
  85. package/dist/lib/esm/bundlers/obsidian-plugin-features.d.mts +186 -0
  86. package/dist/lib/esm/bundlers/obsidian-plugin-features.mjs +126 -0
  87. package/dist/lib/esm/bundlers/obsidian-plugin-transforms.d.mts +231 -0
  88. package/dist/lib/esm/bundlers/obsidian-plugin-transforms.mjs +194 -0
  89. package/dist/lib/esm/bundlers/obsidian-plugin-webpack-loader.d.mts +47 -0
  90. package/dist/lib/esm/bundlers/obsidian-plugin-webpack-loader.mjs +89 -0
  91. package/dist/lib/esm/bundlers/obsidian-plugins-folder-deployment.d.mts +44 -0
  92. package/dist/lib/esm/bundlers/obsidian-plugins-folder-deployment.mjs +228 -0
  93. package/dist/lib/esm/bundlers/parcel.d.mts +128 -0
  94. package/dist/lib/esm/bundlers/parcel.mjs +361 -0
  95. package/dist/lib/esm/bundlers/rollup-compatible-features.d.mts +128 -0
  96. package/dist/lib/esm/bundlers/rollup-compatible-features.mjs +93 -0
  97. package/dist/lib/esm/bundlers/rollup-compatible.d.mts +84 -0
  98. package/dist/lib/esm/bundlers/rollup-compatible.mjs +43 -0
  99. package/dist/lib/esm/bundlers/rollup.d.mts +99 -0
  100. package/dist/lib/esm/bundlers/rollup.mjs +130 -0
  101. package/dist/lib/esm/bundlers/vite.d.mts +105 -0
  102. package/dist/lib/esm/bundlers/vite.mjs +144 -0
  103. package/dist/lib/esm/bundlers/webpack.d.mts +133 -0
  104. package/dist/lib/esm/bundlers/webpack.mjs +259 -0
  105. package/dist/lib/esm/demo-vault-cli.d.mts +15 -0
  106. package/dist/lib/esm/demo-vault-cli.mjs +23 -0
  107. package/dist/lib/esm/docs-site/index.d.mts +2 -0
  108. package/dist/lib/esm/docs-site/index.mjs +10 -0
  109. package/dist/lib/esm/docs-site/obsidian-external-type-links.d.mts +25 -0
  110. package/dist/lib/esm/docs-site/obsidian-external-type-links.mjs +21 -0
  111. package/dist/lib/esm/index.d.mts +2 -0
  112. package/dist/lib/esm/index.mjs +5 -1
  113. package/dist/lib/esm/test-runners/coverage-badge-cli.d.mts +25 -0
  114. package/dist/lib/esm/test-runners/coverage-badge-cli.mjs +51 -0
  115. package/dist/lib/esm/test-runners/coverage-badge.d.mts +143 -0
  116. package/dist/lib/esm/test-runners/coverage-badge.mjs +181 -0
  117. package/dist/lib/esm/test-runners/e2e-runner-support.d.mts +36 -0
  118. package/dist/lib/esm/test-runners/e2e-runner-support.mjs +61 -0
  119. package/dist/lib/esm/test-runners/index.d.mts +5 -0
  120. package/dist/lib/esm/test-runners/index.mjs +12 -2
  121. package/dist/lib/esm/test-runners/obsidian-test-runner.d.mts +42 -0
  122. package/dist/lib/esm/test-runners/obsidian-test-runner.mjs +52 -0
  123. package/dist/lib/esm/test-runners/wdio-obsidian.d.mts +199 -0
  124. package/dist/lib/esm/test-runners/wdio-obsidian.mjs +110 -0
  125. package/dist/templates/dprint.json +1 -0
  126. package/dist/templates/scripts/commitlint-config.ts +2 -2
  127. package/docs-site/index/package.json +6 -0
  128. package/docs-site/obsidian-external-type-links/package.json +6 -0
  129. package/docs-site/package.json +6 -0
  130. package/package.json +136 -7
  131. package/test-runners/coverage-badge/package.json +6 -0
  132. package/test-runners/coverage-badge-cli/package.json +6 -0
  133. package/test-runners/e2e-runner-support/package.json +6 -0
  134. package/test-runners/obsidian-test-runner/package.json +6 -0
  135. package/test-runners/wdio-obsidian/package.json +6 -0
  136. package/tsconfig/preact.json +7 -0
  137. package/tsconfig/react.json +7 -0
  138. package/tsconfig/solid.json +7 -0
  139. package/tsconfig/svelte.json +7 -0
  140. package/tsconfig/vue.json +7 -0
  141. package/types/styles.d.ts +32 -0
  142. package/types/wasm.d.ts +11 -0
@@ -0,0 +1,131 @@
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 __create = Object.create;
82
+ var __defProp = Object.defineProperty;
83
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
84
+ var __getOwnPropNames = Object.getOwnPropertyNames;
85
+ var __getProtoOf = Object.getPrototypeOf;
86
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
87
+ var __export = (target, all) => {
88
+ for (var name in all)
89
+ __defProp(target, name, { get: all[name], enumerable: true });
90
+ };
91
+ var __copyProps = (to, from, except, desc) => {
92
+ if (from && typeof from === "object" || typeof from === "function") {
93
+ for (let key of __getOwnPropNames(from))
94
+ if (!__hasOwnProp.call(to, key) && key !== except)
95
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
96
+ }
97
+ return to;
98
+ };
99
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
100
+ // If the importer is in node compatibility mode or this is not an ESM
101
+ // file that has been converted to a CommonJS file using a Babel-
102
+ // compatible transform (i.e. "__esModule" has not been set), then set
103
+ // "default" to the CommonJS "module.exports" for node compatibility.
104
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
105
+ mod
106
+ ));
107
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
108
+ var demo_vault_cli_exports = {};
109
+ __export(demo_vault_cli_exports, {
110
+ runArchiveDemoVaultCli: () => runArchiveDemoVaultCli
111
+ });
112
+ module.exports = __toCommonJS(demo_vault_cli_exports);
113
+ var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
114
+ var import_demo_vault = require('./demo-vault.cjs');
115
+ async function runArchiveDemoVaultCli() {
116
+ try {
117
+ const zipPath = await (0, import_demo_vault.archivePluginDemoVault)();
118
+ import_node_process.default.stdout.write(zipPath === null ? "No demo-vault/ folder: nothing to archive.\n" : `Archived the demo vault to ${zipPath}
119
+ `);
120
+ return 0;
121
+ } catch (error) {
122
+ import_node_process.default.stderr.write(`${error instanceof Error ? error.message : String(error)}
123
+ `);
124
+ return 1;
125
+ }
126
+ }
127
+ // Annotate the CommonJS export names for ESM import in node:
128
+ 0 && (module.exports = {
129
+ runArchiveDemoVaultCli
130
+ });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZW1vLXZhdWx0LWNsaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGBhcmNoaXZlLWRlbW8tdmF1bHRgIGNvbW1hbmQ6IHJ1bnMge0BsaW5rIGFyY2hpdmVQbHVnaW5EZW1vVmF1bHR9IG9uIHRoZSBidWlsdCBwbHVnaW4gYW5kIHR1cm5zIHRoZSByZXN1bHQgaW50b1xuICogYW4gZXhpdCBjb2RlLiBUaGUgYG9ic2lkaWFuLXBsdWdpbi1yZWxlYXNlLnltbGAgcmV1c2FibGUgd29ya2Zsb3cgcnVucyBpdCBhZnRlciB0aGUgYnVpbGQsIHNvIGEgcmVsZWFzZSBtYWRlIGluIENJXG4gKiBjYXJyaWVzIHRoZSBzYW1lIGRlbW8gdmF1bHQgYXJjaGl2ZSBhcyBvbmUgbWFkZSB3aXRoIGBucG0gcnVuIHZlcnNpb25gLlxuICovXG5cbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbmltcG9ydCB7IGFyY2hpdmVQbHVnaW5EZW1vVmF1bHQgfSBmcm9tICcuL2RlbW8tdmF1bHQudHMnO1xuXG4vKipcbiAqIFJ1bnMgYGFyY2hpdmUtZGVtby12YXVsdGAuIEEgcGx1Z2luIHdpdGhvdXQgYSBgZGVtby12YXVsdC9gIGZvbGRlciBpcyBub3QgYSBmYWlsdXJlOiB0aGVyZSBpcyBub3RoaW5nIHRvIGFyY2hpdmUuXG4gKlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZXhpdCBjb2RlOiBgMGAgb25jZSB0aGUgYXJjaGl2ZSBpcyB3cml0dGVuIG9yIHdoZW4gdGhlcmUgaXMgbm8gZGVtb1xuICogICB2YXVsdCwgYDFgIG9uIGFueSBmYWlsdXJlLCB3aGljaCBpcyBwcmludGVkIHRvIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkFyY2hpdmVEZW1vVmF1bHRDbGkoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB6aXBQYXRoID0gYXdhaXQgYXJjaGl2ZVBsdWdpbkRlbW9WYXVsdCgpO1xuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHppcFBhdGggPT09IG51bGwgPyAnTm8gZGVtby12YXVsdC8gZm9sZGVyOiBub3RoaW5nIHRvIGFyY2hpdmUuXFxuJyA6IGBBcmNoaXZlZCB0aGUgZGVtbyB2YXVsdCB0byAke3ppcFBhdGh9XFxuYCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYCR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpfVxcbmApO1xuICAgIHJldHVybiAxO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLDBCQUFvQjtBQUVwQix3QkFBdUM7QUFRdkMsZUFBc0IseUJBQTBDO0FBQzlELE1BQUk7QUFDRixVQUFNLFVBQVUsVUFBTSwwQ0FBdUI7QUFDN0Msd0JBQUFBLFFBQVEsT0FBTyxNQUFNLFlBQVksT0FBTyxpREFBaUQsOEJBQThCLE9BQU87QUFBQSxDQUFJO0FBQ2xJLFdBQU87QUFBQSxFQUNULFNBQVMsT0FBTztBQUNkLHdCQUFBQSxRQUFRLE9BQU8sTUFBTSxHQUFHLGlCQUFpQixRQUFRLE1BQU0sVUFBVSxPQUFPLEtBQUssQ0FBQztBQUFBLENBQUk7QUFDbEYsV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLCJuYW1lcyI6WyJwcm9jZXNzIl19
@@ -0,0 +1,15 @@
1
+ /// <reference path="./library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * The `archive-demo-vault` command: runs {@link archivePluginDemoVault} on the built plugin and turns the result into
6
+ * an exit code. The `obsidian-plugin-release.yml` reusable workflow runs it after the build, so a release made in CI
7
+ * carries the same demo vault archive as one made with `npm run version`.
8
+ */
9
+ /**
10
+ * Runs `archive-demo-vault`. A plugin without a `demo-vault/` folder is not a failure: there is nothing to archive.
11
+ *
12
+ * @returns A {@link Promise} that resolves to the exit code: `0` once the archive is written or when there is no demo
13
+ * vault, `1` on any failure, which is printed to stderr.
14
+ */
15
+ export declare function runArchiveDemoVaultCli(): Promise<number>;
@@ -0,0 +1,118 @@
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 __create = Object.create;
82
+ var __defProp = Object.defineProperty;
83
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
84
+ var __getOwnPropNames = Object.getOwnPropertyNames;
85
+ var __getProtoOf = Object.getPrototypeOf;
86
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
87
+ var __export = (target, all) => {
88
+ for (var name in all)
89
+ __defProp(target, name, { get: all[name], enumerable: true });
90
+ };
91
+ var __copyProps = (to, from, except, desc) => {
92
+ if (from && typeof from === "object" || typeof from === "function") {
93
+ for (let key of __getOwnPropNames(from))
94
+ if (!__hasOwnProp.call(to, key) && key !== except)
95
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
96
+ }
97
+ return to;
98
+ };
99
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
100
+ // If the importer is in node compatibility mode or this is not an ESM
101
+ // file that has been converted to a CommonJS file using a Babel-
102
+ // compatible transform (i.e. "__esModule" has not been set), then set
103
+ // "default" to the CommonJS "module.exports" for node compatibility.
104
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
105
+ mod
106
+ ));
107
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
108
+ var docs_site_exports = {};
109
+ __export(docs_site_exports, {
110
+ "obsidian-external-type-links": () => obsidian_external_type_links
111
+ });
112
+ module.exports = __toCommonJS(docs_site_exports);
113
+ var obsidian_external_type_links = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./obsidian-external-type-links.cjs')), 1);
114
+ // Annotate the CommonJS export names for ESM import in node:
115
+ 0 && (module.exports = {
116
+ "obsidian-external-type-links": null
117
+ });
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb2NzLXNpdGUvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdvYnNpZGlhbi1leHRlcm5hbC10eXBlLWxpbmtzJyBmcm9tICcuL29ic2lkaWFuLWV4dGVybmFsLXR5cGUtbGlua3MudHMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQSx3Q0FBQUE7QUFBQTtBQUFBO0FBRUEsSUFBQUEsK0JBQWdEOyIsIm5hbWVzIjpbIm9ic2lkaWFuLWV4dGVybmFsLXR5cGUtbGlua3MiXX0=
@@ -0,0 +1,2 @@
1
+ /// <reference path="../library-references.d.cts" />
2
+ export * as 'obsidian-external-type-links' from './obsidian-external-type-links.cjs';
@@ -0,0 +1,119 @@
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 obsidian_external_type_links_exports = {};
99
+ __export(obsidian_external_type_links_exports, {
100
+ OBSIDIAN_EXTERNAL_TYPE_LINKS: () => OBSIDIAN_EXTERNAL_TYPE_LINKS
101
+ });
102
+ module.exports = __toCommonJS(obsidian_external_type_links_exports);
103
+ const OBSIDIAN_EXTERNAL_TYPE_LINKS = /* @__PURE__ */ new Map([
104
+ ["ChangeSpec", "https://codemirror.net/docs/ref/#state.ChangeSpec"],
105
+ ["CharCategory", "https://codemirror.net/docs/ref/#state.CharCategory"],
106
+ ["DecorationSet", "https://codemirror.net/docs/ref/#view.DecorationSet"],
107
+ ["Direction", "https://codemirror.net/docs/ref/#view.Direction"],
108
+ ["DOMEventHandlers", "https://codemirror.net/docs/ref/#view.DOMEventHandlers"],
109
+ ["Extension", "https://codemirror.net/docs/ref/#state.Extension"],
110
+ ["FacetReader", "https://codemirror.net/docs/ref/#state.FacetReader"],
111
+ ["Moment", "https://momentjs.com/docs/#/parsing/"],
112
+ ["MomentInput", "https://momentjs.com/docs/#/parsing/"],
113
+ ["RangeCursor", "https://codemirror.net/docs/ref/#state.RangeCursor"]
114
+ ]);
115
+ // Annotate the CommonJS export names for ESM import in node:
116
+ 0 && (module.exports = {
117
+ OBSIDIAN_EXTERNAL_TYPE_LINKS
118
+ });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb2NzLXNpdGUvb2JzaWRpYW4tZXh0ZXJuYWwtdHlwZS1saW5rcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIE9ic2lkaWFuIGxheWVyIG9mIGEgZG9jdW1lbnRhdGlvbiBzaXRlJ3MgZXh0ZXJuYWwgdHlwZSBsaW5rcywgZm9yIGBEb2NzU2l0ZUNvbmZpZy5leHRlcm5hbFR5cGVMaW5rc2Agb2ZcbiAqIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9kb2NzLXNpdGUvZG9jcy1zaXRlLWNvbmZpZ2AuXG4gKlxuICogVGhlIGdlbmVyaWMgYnVpbGRlcidzIG93biBtYXAgY292ZXJzIHRoZSBUeXBlU2NyaXB0IGFuZCBET00gbGlicmFyaWVzIG9ubHksIGxlYXZpbmcgYW4gZWNvc3lzdGVtJ3MgcmVmZXJlbmNlcyB0b1xuICogdGhlIGxheWVyIGRvY3VtZW50aW5nIGl0LCBhcyB0aGlzIHBhY2thZ2UncyBFU0xpbnQgY29uZmlnIGxheWVycyBvbiB0aGUgZ2VuZXJpYyBvbmUuIEFuIE9ic2lkaWFuIHBsdWdpbidzIEFQSSBuYW1lc1xuICogdGhlIENvZGVNaXJyb3IgYW5kIE1vbWVudCB0eXBlcyBPYnNpZGlhbiByZS1leHBvcnRzLCB3aGljaCBubyBkb2N1bWVudGVkIHBhY2thZ2UgZGVjbGFyZXMuXG4gKi9cblxuLy8gQ3NwZWxsOmRpc2FibGUgLS0gVVJMIGZyYWdtZW50cyBhcmUgbm90IHdvcmRzXG4vKipcbiAqIFRoZSBDb2RlTWlycm9yIGFuZCBNb21lbnQgdHlwZSBuYW1lcyBhbiBPYnNpZGlhbiBwYWNrYWdlJ3MgQVBJIG5hbWVzLCBtYXBwZWQgdG8gdGhlIHBhZ2UgdGhlaXIgcmVmZXJlbmNlcyBsaW5rIHRvLlxuICpcbiAqIFBhc3MgaXQgYXMgYSBzaXRlJ3MgYGV4dGVybmFsVHlwZUxpbmtzYCwgb3Igc3ByZWFkIGl0IGludG8gYSBsYXJnZXIgbWFwOlxuICpcbiAqIGBgYHRzXG4gKiBleHBvcnQgY29uc3QgRE9DU19TSVRFX0NPTkZJRzogRG9jc1NpdGVDb25maWcgPSB7XG4gKiAgIGV4dGVybmFsVHlwZUxpbmtzOiBPQlNJRElBTl9FWFRFUk5BTF9UWVBFX0xJTktTLFxuICogICByZXBvOiAnbXktcGFja2FnZScsXG4gKiAgIHRpdGxlOiAnTXkgUGFja2FnZSdcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IE9CU0lESUFOX0VYVEVSTkFMX1RZUEVfTElOS1M6IFJlYWRvbmx5TWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KFtcbiAgWydDaGFuZ2VTcGVjJywgJ2h0dHBzOi8vY29kZW1pcnJvci5uZXQvZG9jcy9yZWYvI3N0YXRlLkNoYW5nZVNwZWMnXSxcbiAgWydDaGFyQ2F0ZWdvcnknLCAnaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC9kb2NzL3JlZi8jc3RhdGUuQ2hhckNhdGVnb3J5J10sXG4gIFsnRGVjb3JhdGlvblNldCcsICdodHRwczovL2NvZGVtaXJyb3IubmV0L2RvY3MvcmVmLyN2aWV3LkRlY29yYXRpb25TZXQnXSxcbiAgWydEaXJlY3Rpb24nLCAnaHR0cHM6Ly9jb2RlbWlycm9yLm5ldC9kb2NzL3JlZi8jdmlldy5EaXJlY3Rpb24nXSxcbiAgWydET01FdmVudEhhbmRsZXJzJywgJ2h0dHBzOi8vY29kZW1pcnJvci5uZXQvZG9jcy9yZWYvI3ZpZXcuRE9NRXZlbnRIYW5kbGVycyddLFxuICBbJ0V4dGVuc2lvbicsICdodHRwczovL2NvZGVtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5FeHRlbnNpb24nXSxcbiAgWydGYWNldFJlYWRlcicsICdodHRwczovL2NvZGVtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5GYWNldFJlYWRlciddLFxuICBbJ01vbWVudCcsICdodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvcGFyc2luZy8nXSxcbiAgWydNb21lbnRJbnB1dCcsICdodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyMvcGFyc2luZy8nXSxcbiAgWydSYW5nZUN1cnNvcicsICdodHRwczovL2NvZGVtaXJyb3IubmV0L2RvY3MvcmVmLyNzdGF0ZS5SYW5nZUN1cnNvciddXG5dKTtcbi8vIENzcGVsbDplbmFibGVcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5Qk8sTUFBTSwrQkFBNEQsb0JBQUksSUFBb0I7QUFBQSxFQUMvRixDQUFDLGNBQWMsbURBQW1EO0FBQUEsRUFDbEUsQ0FBQyxnQkFBZ0IscURBQXFEO0FBQUEsRUFDdEUsQ0FBQyxpQkFBaUIscURBQXFEO0FBQUEsRUFDdkUsQ0FBQyxhQUFhLGlEQUFpRDtBQUFBLEVBQy9ELENBQUMsb0JBQW9CLHdEQUF3RDtBQUFBLEVBQzdFLENBQUMsYUFBYSxrREFBa0Q7QUFBQSxFQUNoRSxDQUFDLGVBQWUsb0RBQW9EO0FBQUEsRUFDcEUsQ0FBQyxVQUFVLHNDQUFzQztBQUFBLEVBQ2pELENBQUMsZUFBZSxzQ0FBc0M7QUFBQSxFQUN0RCxDQUFDLGVBQWUsb0RBQW9EO0FBQ3RFLENBQUM7IiwibmFtZXMiOltdfQ==
@@ -0,0 +1,25 @@
1
+ /// <reference path="../library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * The Obsidian layer of a documentation site's external type links, for `DocsSiteConfig.externalTypeLinks` of
6
+ * `@mnaoumov/typescript-dev-toolkit/docs-site/docs-site-config`.
7
+ *
8
+ * The generic builder's own map covers the TypeScript and DOM libraries only, leaving an ecosystem's references to
9
+ * the layer documenting it, as this package's ESLint config layers on the generic one. An Obsidian plugin's API names
10
+ * the CodeMirror and Moment types Obsidian re-exports, which no documented package declares.
11
+ */
12
+ /**
13
+ * The CodeMirror and Moment type names an Obsidian package's API names, mapped to the page their references link to.
14
+ *
15
+ * Pass it as a site's `externalTypeLinks`, or spread it into a larger map:
16
+ *
17
+ * ```ts
18
+ * export const DOCS_SITE_CONFIG: DocsSiteConfig = {
19
+ * externalTypeLinks: OBSIDIAN_EXTERNAL_TYPE_LINKS,
20
+ * repo: 'my-package',
21
+ * title: 'My Package'
22
+ * };
23
+ * ```
24
+ */
25
+ export declare const OBSIDIAN_EXTERNAL_TYPE_LINKS: ReadonlyMap<string, string>;
@@ -111,7 +111,9 @@ __export(index_exports, {
111
111
  "demo-vault": () => demo_vault,
112
112
  "demo-vault-app-json": () => demo_vault_app_json,
113
113
  "demo-vault-buttons": () => demo_vault_buttons,
114
+ "demo-vault-cli": () => demo_vault_cli,
114
115
  "demo-vault-coverage": () => demo_vault_coverage,
116
+ "docs-site": () => docs_site,
115
117
  formatters: () => formatters,
116
118
  linters: () => linters,
117
119
  "obsidian-plugin-repo-paths": () => obsidian_plugin_repo_paths,
@@ -123,8 +125,10 @@ module.exports = __toCommonJS(index_exports);
123
125
  var bundlers = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./bundlers/index.cjs')), 1);
124
126
  var demo_vault_app_json = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./demo-vault-app-json.cjs')), 1);
125
127
  var demo_vault_buttons = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./demo-vault-buttons.cjs')), 1);
128
+ var demo_vault_cli = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./demo-vault-cli.cjs')), 1);
126
129
  var demo_vault_coverage = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./demo-vault-coverage.cjs')), 1);
127
130
  var demo_vault = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./demo-vault.cjs')), 1);
131
+ var docs_site = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./docs-site/index.cjs')), 1);
128
132
  var formatters = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./formatters/index.cjs')), 1);
129
133
  var linters = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./linters/index.cjs')), 1);
130
134
  var obsidian_plugin_repo_paths = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./obsidian-plugin-repo-paths.cjs')), 1);
@@ -137,7 +141,9 @@ var version = __toESM(((module) => module && module.__esModule && 'default' in m
137
141
  "demo-vault": null,
138
142
  "demo-vault-app-json": null,
139
143
  "demo-vault-buttons": null,
144
+ "demo-vault-cli": null,
140
145
  "demo-vault-coverage": null,
146
+ "docs-site": null,
141
147
  formatters,
142
148
  linters,
143
149
  "obsidian-plugin-repo-paths": null,
@@ -145,4 +151,4 @@ var version = __toESM(((module) => module && module.__esModule && 'default' in m
145
151
  "test-runners": null,
146
152
  version
147
153
  });
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdkZW1vLXZhdWx0LWFwcC1qc29uJyBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtYnV0dG9ucycgZnJvbSAnLi9kZW1vLXZhdWx0LWJ1dHRvbnMudHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtY292ZXJhZ2UnIGZyb20gJy4vZGVtby12YXVsdC1jb3ZlcmFnZS50cyc7XG5leHBvcnQgKiBhcyAnZGVtby12YXVsdCcgZnJvbSAnLi9kZW1vLXZhdWx0LnRzJztcbmV4cG9ydCAqIGFzICdmb3JtYXR0ZXJzJyBmcm9tICcuL2Zvcm1hdHRlcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ2xpbnRlcnMnIGZyb20gJy4vbGludGVycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMnIGZyb20gJy4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuZXhwb3J0ICogYXMgJ3RlbXBsYXRlcycgZnJvbSAnLi90ZW1wbGF0ZXMudHMnO1xuZXhwb3J0ICogYXMgJ3Rlc3QtcnVubmVycycgZnJvbSAnLi90ZXN0LXJ1bm5lcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ3ZlcnNpb24nIGZyb20gJy4vdmVyc2lvbi50cyc7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBQUFBO0FBQUEsRUFBQSw2QkFBQUM7QUFBQSxFQUFBLDRCQUFBQztBQUFBLEVBQUEsNkJBQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUEsc0NBQUFDO0FBQUEsRUFBQTtBQUFBLHdCQUFBQztBQUFBLEVBQUE7QUFBQTtBQUFBO0FBRUEsZUFBNEI7QUFDNUIsSUFBQUosc0JBQXVDO0FBQ3ZDLElBQUFDLHFCQUFzQztBQUN0QyxJQUFBQyxzQkFBdUM7QUFDdkMsSUFBQUgsYUFBOEI7QUFDOUIsaUJBQThCO0FBQzlCLGNBQTJCO0FBQzNCLElBQUFJLDZCQUE4QztBQUM5QyxnQkFBNkI7QUFDN0IsSUFBQUMsZUFBZ0M7QUFDaEMsY0FBMkI7IiwibmFtZXMiOlsiZGVtby12YXVsdCIsImRlbW8tdmF1bHQtYXBwLWpzb24iLCJkZW1vLXZhdWx0LWJ1dHRvbnMiLCJkZW1vLXZhdWx0LWNvdmVyYWdlIiwib2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMiLCJ0ZXN0LXJ1bm5lcnMiXX0=
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2J1bmRsZXJzJyBmcm9tICcuL2J1bmRsZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdkZW1vLXZhdWx0LWFwcC1qc29uJyBmcm9tICcuL2RlbW8tdmF1bHQtYXBwLWpzb24udHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtYnV0dG9ucycgZnJvbSAnLi9kZW1vLXZhdWx0LWJ1dHRvbnMudHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQtY2xpJyBmcm9tICcuL2RlbW8tdmF1bHQtY2xpLnRzJztcbmV4cG9ydCAqIGFzICdkZW1vLXZhdWx0LWNvdmVyYWdlJyBmcm9tICcuL2RlbW8tdmF1bHQtY292ZXJhZ2UudHMnO1xuZXhwb3J0ICogYXMgJ2RlbW8tdmF1bHQnIGZyb20gJy4vZGVtby12YXVsdC50cyc7XG5leHBvcnQgKiBhcyAnZG9jcy1zaXRlJyBmcm9tICcuL2RvY3Mtc2l0ZS9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAnZm9ybWF0dGVycycgZnJvbSAnLi9mb3JtYXR0ZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICdsaW50ZXJzJyBmcm9tICcuL2xpbnRlcnMvaW5kZXgudHMnO1xuZXhwb3J0ICogYXMgJ29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzJyBmcm9tICcuL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmV4cG9ydCAqIGFzICd0ZW1wbGF0ZXMnIGZyb20gJy4vdGVtcGxhdGVzLnRzJztcbmV4cG9ydCAqIGFzICd0ZXN0LXJ1bm5lcnMnIGZyb20gJy4vdGVzdC1ydW5uZXJzL2luZGV4LnRzJztcbmV4cG9ydCAqIGFzICd2ZXJzaW9uJyBmcm9tICcuL3ZlcnNpb24udHMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBLHNCQUFBQTtBQUFBLEVBQUEsNkJBQUFDO0FBQUEsRUFBQSw0QkFBQUM7QUFBQSxFQUFBLHdCQUFBQztBQUFBLEVBQUEsNkJBQUFDO0FBQUEsRUFBQSxtQkFBQUM7QUFBQSxFQUFBO0FBQUE7QUFBQSxzQ0FBQUM7QUFBQSxFQUFBO0FBQUEsd0JBQUFDO0FBQUEsRUFBQTtBQUFBO0FBQUE7QUFFQSxlQUE0QjtBQUM1QixJQUFBTixzQkFBdUM7QUFDdkMsSUFBQUMscUJBQXNDO0FBQ3RDLElBQUFDLGlCQUFrQztBQUNsQyxJQUFBQyxzQkFBdUM7QUFDdkMsSUFBQUosYUFBOEI7QUFDOUIsSUFBQUssWUFBNkI7QUFDN0IsaUJBQThCO0FBQzlCLGNBQTJCO0FBQzNCLElBQUFDLDZCQUE4QztBQUM5QyxnQkFBNkI7QUFDN0IsSUFBQUMsZUFBZ0M7QUFDaEMsY0FBMkI7IiwibmFtZXMiOlsiZGVtby12YXVsdCIsImRlbW8tdmF1bHQtYXBwLWpzb24iLCJkZW1vLXZhdWx0LWJ1dHRvbnMiLCJkZW1vLXZhdWx0LWNsaSIsImRlbW8tdmF1bHQtY292ZXJhZ2UiLCJkb2NzLXNpdGUiLCJvYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocyIsInRlc3QtcnVubmVycyJdfQ==
@@ -6,8 +6,10 @@
6
6
  export * as 'bundlers' from './bundlers/index.cjs';
7
7
  export * as 'demo-vault-app-json' from './demo-vault-app-json.cjs';
8
8
  export * as 'demo-vault-buttons' from './demo-vault-buttons.cjs';
9
+ export * as 'demo-vault-cli' from './demo-vault-cli.cjs';
9
10
  export * as 'demo-vault-coverage' from './demo-vault-coverage.cjs';
10
11
  export * as 'demo-vault' from './demo-vault.cjs';
12
+ export * as 'docs-site' from './docs-site/index.cjs';
11
13
  export * as 'formatters' from './formatters/index.cjs';
12
14
  export * as 'linters' from './linters/index.cjs';
13
15
  export * as 'obsidian-plugin-repo-paths' from './obsidian-plugin-repo-paths.cjs';
@@ -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
+ (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 __create = Object.create;
82
+ var __defProp = Object.defineProperty;
83
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
84
+ var __getOwnPropNames = Object.getOwnPropertyNames;
85
+ var __getProtoOf = Object.getPrototypeOf;
86
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
87
+ var __export = (target, all) => {
88
+ for (var name in all)
89
+ __defProp(target, name, { get: all[name], enumerable: true });
90
+ };
91
+ var __copyProps = (to, from, except, desc) => {
92
+ if (from && typeof from === "object" || typeof from === "function") {
93
+ for (let key of __getOwnPropNames(from))
94
+ if (!__hasOwnProp.call(to, key) && key !== except)
95
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
96
+ }
97
+ return to;
98
+ };
99
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
100
+ // If the importer is in node compatibility mode or this is not an ESM
101
+ // file that has been converted to a CommonJS file using a Babel-
102
+ // compatible transform (i.e. "__esModule" has not been set), then set
103
+ // "default" to the CommonJS "module.exports" for node compatibility.
104
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
105
+ mod
106
+ ));
107
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
108
+ var coverage_badge_cli_exports = {};
109
+ __export(coverage_badge_cli_exports, {
110
+ parseCoverageBadgeArguments: () => parseCoverageBadgeArguments,
111
+ runCoverageBadgeCli: () => runCoverageBadgeCli
112
+ });
113
+ module.exports = __toCommonJS(coverage_badge_cli_exports);
114
+ var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
115
+ var import_node_util = require('node:util');
116
+ var import_coverage_badge = require('./coverage-badge.cjs');
117
+ const METRICS = ["branches", "functions", "lines", "lowest"];
118
+ function parseCoverageBadgeArguments($arguments) {
119
+ const { values } = (0, import_node_util.parseArgs)({
120
+ // eslint-disable-next-line unicorn/name-replacements -- `args` is the option name Node's `parseArgs` reads.
121
+ args: $arguments,
122
+ options: {
123
+ label: { type: "string" },
124
+ lcov: { type: "string" },
125
+ metric: { type: "string" },
126
+ output: { type: "string" }
127
+ }
128
+ });
129
+ const { label, lcov, metric, output } = values;
130
+ if (metric !== void 0 && !isCoverageBadgeMetric(metric)) {
131
+ throw new Error(`Unknown --metric '${metric}'. Use one of: ${METRICS.join(", ")}.`);
132
+ }
133
+ return {
134
+ ...label !== void 0 && { label },
135
+ ...lcov !== void 0 && { lcovPath: lcov },
136
+ ...metric !== void 0 && { metric },
137
+ ...output !== void 0 && { outputPath: output }
138
+ };
139
+ }
140
+ async function runCoverageBadgeCli($arguments) {
141
+ try {
142
+ const { outputPath, percent } = await (0, import_coverage_badge.generateCoverageBadge)(parseCoverageBadgeArguments($arguments));
143
+ import_node_process.default.stdout.write(`Wrote the coverage badge (${String(percent)}%) to ${outputPath}
144
+ `);
145
+ return 0;
146
+ } catch (error) {
147
+ import_node_process.default.stderr.write(`${error instanceof Error ? error.message : String(error)}
148
+ `);
149
+ return 1;
150
+ }
151
+ }
152
+ function isCoverageBadgeMetric(value) {
153
+ return METRICS.includes(value);
154
+ }
155
+ // Annotate the CommonJS export names for ESM import in node:
156
+ 0 && (module.exports = {
157
+ parseCoverageBadgeArguments,
158
+ runCoverageBadgeCli
159
+ });
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvY292ZXJhZ2UtYmFkZ2UtY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGUgYGdlbmVyYXRlLWNvdmVyYWdlLWJhZGdlYCBjb21tYW5kOiByZWFkcyBpdHMgYXJndW1lbnRzLCBydW5zIHtAbGluayBnZW5lcmF0ZUNvdmVyYWdlQmFkZ2V9IGFuZCB0dXJucyB0aGUgcmVzdWx0XG4gKiBpbnRvIGFuIGV4aXQgY29kZS4gVGhlIGBvYnNpZGlhbi1wbHVnaW4tY2kueW1sYCByZXVzYWJsZSB3b3JrZmxvdyBydW5zIGl0IGFmdGVyIHRoZSBnYXRlLlxuICovXG5cbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgeyBwYXJzZUFyZ3MgfSBmcm9tICdub2RlOnV0aWwnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvdmVyYWdlQmFkZ2VNZXRyaWMsXG4gIEdlbmVyYXRlQ292ZXJhZ2VCYWRnZU9wdGlvbnNcbn0gZnJvbSAnLi9jb3ZlcmFnZS1iYWRnZS50cyc7XG5cbmltcG9ydCB7IGdlbmVyYXRlQ292ZXJhZ2VCYWRnZSB9IGZyb20gJy4vY292ZXJhZ2UtYmFkZ2UudHMnO1xuXG5jb25zdCBNRVRSSUNTOiByZWFkb25seSBDb3ZlcmFnZUJhZGdlTWV0cmljW10gPSBbJ2JyYW5jaGVzJywgJ2Z1bmN0aW9ucycsICdsaW5lcycsICdsb3dlc3QnXTtcblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1hbmQgbGluZSBvZiBgZ2VuZXJhdGUtY292ZXJhZ2UtYmFkZ2VgOiBgLS1sY292PTxwYXRoPmAsIGAtLW91dHB1dD08cGF0aD5gLCBgLS1tZXRyaWM9PG1ldHJpYz5gIGFuZFxuICogYC0tbGFiZWw9PHRleHQ+YCwgZWFjaCBvcHRpb25hbC5cbiAqXG4gKiBAcGFyYW0gJGFyZ3VtZW50cyAtIFRoZSBhcmd1bWVudHMsIHdpdGhvdXQgdGhlIG5vZGUgYW5kIHNjcmlwdCBwYXRocy5cbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgR2VuZXJhdGVDb3ZlcmFnZUJhZGdlT3B0aW9uc30uXG4gKiBAdGhyb3dzIFdoZW4gYW4gYXJndW1lbnQgaXMgdW5rbm93biwgb3IgYC0tbWV0cmljYCBpcyBub3QgYSB7QGxpbmsgQ292ZXJhZ2VCYWRnZU1ldHJpY30uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvdmVyYWdlQmFkZ2VBcmd1bWVudHMoJGFyZ3VtZW50czogc3RyaW5nW10pOiBHZW5lcmF0ZUNvdmVyYWdlQmFkZ2VPcHRpb25zIHtcbiAgY29uc3QgeyB2YWx1ZXMgfSA9IHBhcnNlQXJncyh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYGFyZ3NgIGlzIHRoZSBvcHRpb24gbmFtZSBOb2RlJ3MgYHBhcnNlQXJnc2AgcmVhZHMuXG4gICAgYXJnczogJGFyZ3VtZW50cyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBsYWJlbDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgbGNvdjogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgbWV0cmljOiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICBvdXRwdXQ6IHsgdHlwZTogJ3N0cmluZycgfVxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgeyBsYWJlbCwgbGNvdiwgbWV0cmljLCBvdXRwdXQgfSA9IHZhbHVlcztcbiAgaWYgKG1ldHJpYyAhPT0gdW5kZWZpbmVkICYmICFpc0NvdmVyYWdlQmFkZ2VNZXRyaWMobWV0cmljKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biAtLW1ldHJpYyAnJHttZXRyaWN9Jy4gVXNlIG9uZSBvZjogJHtNRVRSSUNTLmpvaW4oJywgJyl9LmApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4obGFiZWwgIT09IHVuZGVmaW5lZCAmJiB7IGxhYmVsIH0pLFxuICAgIC4uLihsY292ICE9PSB1bmRlZmluZWQgJiYgeyBsY292UGF0aDogbGNvdiB9KSxcbiAgICAuLi4obWV0cmljICE9PSB1bmRlZmluZWQgJiYgeyBtZXRyaWMgfSksXG4gICAgLi4uKG91dHB1dCAhPT0gdW5kZWZpbmVkICYmIHsgb3V0cHV0UGF0aDogb3V0cHV0IH0pXG4gIH07XG59XG5cbi8qKlxuICogUnVucyBgZ2VuZXJhdGUtY292ZXJhZ2UtYmFkZ2VgLlxuICpcbiAqIEBwYXJhbSAkYXJndW1lbnRzIC0gVGhlIGFyZ3VtZW50cywgd2l0aG91dCB0aGUgbm9kZSBhbmQgc2NyaXB0IHBhdGhzLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgZXhpdCBjb2RlOiBgMGAgb25jZSB0aGUgYmFkZ2UgaXMgd3JpdHRlbiwgYDFgIG9uIGFueSBmYWlsdXJlLCB3aGljaFxuICogICBpcyBwcmludGVkIHRvIHN0ZGVyci5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bkNvdmVyYWdlQmFkZ2VDbGkoJGFyZ3VtZW50czogc3RyaW5nW10pOiBQcm9taXNlPG51bWJlcj4ge1xuICB0cnkge1xuICAgIGNvbnN0IHsgb3V0cHV0UGF0aCwgcGVyY2VudCB9ID0gYXdhaXQgZ2VuZXJhdGVDb3ZlcmFnZUJhZGdlKHBhcnNlQ292ZXJhZ2VCYWRnZUFyZ3VtZW50cygkYXJndW1lbnRzKSk7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYFdyb3RlIHRoZSBjb3ZlcmFnZSBiYWRnZSAoJHtTdHJpbmcocGVyY2VudCl9JSkgdG8gJHtvdXRwdXRQYXRofVxcbmApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1cXG5gKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvdmVyYWdlQmFkZ2VNZXRyaWModmFsdWU6IHN0cmluZyk6IHZhbHVlIGlzIENvdmVyYWdlQmFkZ2VNZXRyaWMge1xuICByZXR1cm4gKE1FVFJJQ1MgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHZhbHVlKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQSwwQkFBb0I7QUFDcEIsdUJBQTBCO0FBTzFCLDRCQUFzQztBQUV0QyxNQUFNLFVBQTBDLENBQUMsWUFBWSxhQUFhLFNBQVMsUUFBUTtBQVVwRixTQUFTLDRCQUE0QixZQUFvRDtBQUM5RixRQUFNLEVBQUUsT0FBTyxRQUFJLDRCQUFVO0FBQUE7QUFBQSxJQUUzQixNQUFNO0FBQUEsSUFDTixTQUFTO0FBQUEsTUFDUCxPQUFPLEVBQUUsTUFBTSxTQUFTO0FBQUEsTUFDeEIsTUFBTSxFQUFFLE1BQU0sU0FBUztBQUFBLE1BQ3ZCLFFBQVEsRUFBRSxNQUFNLFNBQVM7QUFBQSxNQUN6QixRQUFRLEVBQUUsTUFBTSxTQUFTO0FBQUEsSUFDM0I7QUFBQSxFQUNGLENBQUM7QUFFRCxRQUFNLEVBQUUsT0FBTyxNQUFNLFFBQVEsT0FBTyxJQUFJO0FBQ3hDLE1BQUksV0FBVyxVQUFhLENBQUMsc0JBQXNCLE1BQU0sR0FBRztBQUMxRCxVQUFNLElBQUksTUFBTSxxQkFBcUIsTUFBTSxrQkFBa0IsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHO0FBQUEsRUFDcEY7QUFFQSxTQUFPO0FBQUEsSUFDTCxHQUFJLFVBQVUsVUFBYSxFQUFFLE1BQU07QUFBQSxJQUNuQyxHQUFJLFNBQVMsVUFBYSxFQUFFLFVBQVUsS0FBSztBQUFBLElBQzNDLEdBQUksV0FBVyxVQUFhLEVBQUUsT0FBTztBQUFBLElBQ3JDLEdBQUksV0FBVyxVQUFhLEVBQUUsWUFBWSxPQUFPO0FBQUEsRUFDbkQ7QUFDRjtBQVNBLGVBQXNCLG9CQUFvQixZQUF1QztBQUMvRSxNQUFJO0FBQ0YsVUFBTSxFQUFFLFlBQVksUUFBUSxJQUFJLFVBQU0sNkNBQXNCLDRCQUE0QixVQUFVLENBQUM7QUFDbkcsd0JBQUFBLFFBQVEsT0FBTyxNQUFNLDZCQUE2QixPQUFPLE9BQU8sQ0FBQyxTQUFTLFVBQVU7QUFBQSxDQUFJO0FBQ3hGLFdBQU87QUFBQSxFQUNULFNBQVMsT0FBTztBQUNkLHdCQUFBQSxRQUFRLE9BQU8sTUFBTSxHQUFHLGlCQUFpQixRQUFRLE1BQU0sVUFBVSxPQUFPLEtBQUssQ0FBQztBQUFBLENBQUk7QUFDbEYsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLFNBQVMsc0JBQXNCLE9BQTZDO0FBQzFFLFNBQVEsUUFBOEIsU0FBUyxLQUFLO0FBQ3REOyIsIm5hbWVzIjpbInByb2Nlc3MiXX0=