obsidian-dev-utils 88.4.0 → 88.5.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 (29) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/integration-test-plugin/main.js +38046 -0
  3. package/dist/integration-test-plugin/manifest.json +8 -0
  4. package/dist/lib/cjs/@types/obsidian-integration-testing.d.cts +13 -2
  5. package/dist/lib/cjs/generated-during-build.cjs +1 -1
  6. package/dist/lib/cjs/integration-test-setup.cjs +111 -0
  7. package/dist/lib/cjs/integration-test-setup.d.cts +33 -0
  8. package/dist/lib/cjs/integration-test-vitest-global-setup.cjs +145 -0
  9. package/dist/lib/cjs/integration-test-vitest-global-setup.d.cts +39 -0
  10. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.cjs +2 -1
  11. package/dist/lib/cjs/script-utils/obsidian-dev-utils-repo-paths.d.cts +2 -0
  12. package/dist/lib/cjs/script-utils/test-runners/index.cjs +4 -1
  13. package/dist/lib/cjs/script-utils/test-runners/index.d.cts +1 -0
  14. package/dist/lib/cjs/script-utils/test-runners/integration-test-plugin.cjs +197 -0
  15. package/dist/lib/cjs/script-utils/test-runners/integration-test-plugin.d.cts +44 -0
  16. package/dist/lib/esm/@types/obsidian-integration-testing.d.mts +13 -2
  17. package/dist/lib/esm/generated-during-build.mjs +1 -1
  18. package/dist/lib/esm/integration-test-setup.d.mts +33 -0
  19. package/dist/lib/esm/integration-test-setup.mjs +26 -0
  20. package/dist/lib/esm/integration-test-vitest-global-setup.d.mts +39 -0
  21. package/dist/lib/esm/integration-test-vitest-global-setup.mjs +39 -0
  22. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.d.mts +2 -0
  23. package/dist/lib/esm/script-utils/obsidian-dev-utils-repo-paths.mjs +2 -1
  24. package/dist/lib/esm/script-utils/test-runners/index.d.mts +1 -0
  25. package/dist/lib/esm/script-utils/test-runners/index.mjs +3 -1
  26. package/dist/lib/esm/script-utils/test-runners/integration-test-plugin.d.mts +44 -0
  27. package/dist/lib/esm/script-utils/test-runners/integration-test-plugin.mjs +77 -0
  28. package/package.json +16 -6
  29. package/script-utils/test-runners/integration-test-plugin/package.json +6 -0
@@ -0,0 +1,197 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initCjs() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ const globalThisRecord = globalThis;
9
+ globalThisRecord['__name'] ??= name;
10
+ const originalRequire = require;
11
+ if (originalRequire && !originalRequire.__isPatched) {
12
+ // eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
13
+ require = Object.assign(
14
+ (id) => requirePatched(id),
15
+ originalRequire,
16
+ {
17
+ __isPatched: true
18
+ }
19
+ );
20
+ }
21
+
22
+ const newFuncs = {
23
+ __extractDefault() {
24
+ return extractDefault;
25
+ },
26
+ process() {
27
+ const browserProcess = {
28
+ browser: true,
29
+ cwd() {
30
+ return '/';
31
+ },
32
+ env: {},
33
+ platform: 'android'
34
+ };
35
+ return browserProcess;
36
+ }
37
+ };
38
+
39
+ for (const key of Object.keys(newFuncs)) {
40
+ globalThisRecord[key] ??= newFuncs[key]?.();
41
+ }
42
+
43
+ function name(obj) {
44
+ return obj;
45
+ }
46
+
47
+ function extractDefault(module) {
48
+ return module && module.__esModule && 'default' in module ? module.default : module;
49
+ }
50
+
51
+ const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
52
+ 'obsidian',
53
+ '@codemirror/autocomplete',
54
+ '@codemirror/collab',
55
+ '@codemirror/commands',
56
+ '@codemirror/language',
57
+ '@codemirror/lint',
58
+ '@codemirror/search',
59
+ '@codemirror/state',
60
+ '@codemirror/text',
61
+ '@codemirror/view',
62
+ '@lezer/common',
63
+ '@lezer/lr',
64
+ '@lezer/highlight'];
65
+
66
+
67
+ const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
68
+ '@codemirror/closebrackets',
69
+ '@codemirror/comment',
70
+ '@codemirror/fold',
71
+ '@codemirror/gutter',
72
+ '@codemirror/highlight',
73
+ '@codemirror/history',
74
+ '@codemirror/matchbrackets',
75
+ '@codemirror/panel',
76
+ '@codemirror/rangeset',
77
+ '@codemirror/rectangular-selection',
78
+ '@codemirror/stream-parser',
79
+ '@codemirror/tooltip'];
80
+
81
+
82
+ function requirePatched(id) {
83
+ if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
84
+ return originalRequire?.(id);
85
+ }
86
+
87
+ // eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
88
+ if (globalThis.app.isMobile) {
89
+ if (id === 'process' || id === 'node:process') {
90
+ // eslint-disable-next-line no-console -- Valid usage.
91
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
92
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
93
+ return globalThis.process;
94
+ }
95
+ } else {
96
+ const module = originalRequire?.(id);
97
+ if (module) {
98
+ return extractDefault(module);
99
+ }
100
+ }
101
+
102
+ // eslint-disable-next-line no-console -- Valid usage.
103
+ console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
104
+ return {};
105
+ }
106
+ })();
107
+
108
+ "use strict";
109
+ var __defProp = Object.defineProperty;
110
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
111
+ var __getOwnPropNames = Object.getOwnPropertyNames;
112
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
113
+ var __export = (target, all) => {
114
+ for (var name in all)
115
+ __defProp(target, name, { get: all[name], enumerable: true });
116
+ };
117
+ var __copyProps = (to, from, except, desc) => {
118
+ if (from && typeof from === "object" || typeof from === "function") {
119
+ for (let key of __getOwnPropNames(from))
120
+ if (!__hasOwnProp.call(to, key) && key !== except)
121
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
122
+ }
123
+ return to;
124
+ };
125
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
126
+ var integration_test_plugin_exports = {};
127
+ __export(integration_test_plugin_exports, {
128
+ OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID: () => OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID,
129
+ getIntegrationTestPluginPopulate: () => getIntegrationTestPluginPopulate,
130
+ registerIntegrationTestLibResolver: () => registerIntegrationTestLibResolver
131
+ });
132
+ module.exports = __toCommonJS(integration_test_plugin_exports);
133
+ var import_node_fs = require('node:fs');
134
+ var import_obsidian_integration_testing = require('obsidian-integration-testing');
135
+ var import_obsidian_plugin_repo_paths = require('../../obsidian/plugin/obsidian-plugin-repo-paths.cjs');
136
+ var import_path = require('../../path.cjs');
137
+ var import_obsidian_dev_utils_repo_paths = require('../obsidian-dev-utils-repo-paths.cjs');
138
+ var import_root = require('../root.cjs');
139
+ var __import_meta_url = globalThis["import.meta.url"] ?? (() => {
140
+ if (typeof __filename === "string") {
141
+ const localRequire = require;
142
+ const url = localRequire("node:url");
143
+ if (typeof url.pathToFileURL === "function") {
144
+ return url.pathToFileURL(__filename).href;
145
+ }
146
+ }
147
+ if (typeof window !== "undefined") {
148
+ return activeWindow.location.href;
149
+ }
150
+ return "";
151
+ })();
152
+ const OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID = "obsidian-dev-utils-integration-test";
153
+ function getIntegrationTestPluginPopulate() {
154
+ const packageFolder = (0, import_root.getRootFolder)((0, import_path.getFolderName)(__import_meta_url));
155
+ if (!packageFolder) {
156
+ throw new Error("Could not resolve the obsidian-dev-utils package folder to seed the integration-test harness plugin.");
157
+ }
158
+ const pluginSourceFolder = (0, import_path.join)(packageFolder, import_obsidian_dev_utils_repo_paths.ObsidianDevUtilsRepoPaths.DistIntegrationTestPlugin);
159
+ const pluginVaultFolder = (0, import_path.join)(
160
+ import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DotObsidian,
161
+ import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.Plugins,
162
+ OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID
163
+ );
164
+ const populate = {};
165
+ for (const fileName of [import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.MainJs, import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.ManifestJson]) {
166
+ const sourcePath = (0, import_path.join)(pluginSourceFolder, fileName);
167
+ let content;
168
+ try {
169
+ content = (0, import_node_fs.readFileSync)(sourcePath);
170
+ } catch (error) {
171
+ throw new Error(
172
+ `Could not read ${sourcePath}. The integration-test harness plugin is missing from the installed obsidian-dev-utils package \u2014 run \`npm run build\` in obsidian-dev-utils, or reinstall it.`,
173
+ { cause: error }
174
+ );
175
+ }
176
+ populate[(0, import_path.join)(pluginVaultFolder, fileName)] = content;
177
+ }
178
+ return populate;
179
+ }
180
+ function registerIntegrationTestLibResolver() {
181
+ (0, import_obsidian_integration_testing.registerLibResolver)(() => {
182
+ const obsidianDevUtilsModule = window.__obsidianDevUtilsModule;
183
+ if (!obsidianDevUtilsModule) {
184
+ throw new Error(
185
+ "The obsidian-dev-utils module is not exposed on `window`. Is the obsidian-dev-utils integration-test harness plugin installed and enabled in the test vault? See `obsidian-dev-utils/integration-test-vitest-global-setup`."
186
+ );
187
+ }
188
+ return obsidianDevUtilsModule.__merged;
189
+ });
190
+ }
191
+ // Annotate the CommonJS export names for ESM import in node:
192
+ 0 && (module.exports = {
193
+ OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID,
194
+ getIntegrationTestPluginPopulate,
195
+ registerIntegrationTestLibResolver
196
+ });
197
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbJ2ltcG9ydC5tZXRhLnVybCddID8/ICgoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGxvY2FsUmVxdWlyZSA9IHJlcXVpcmU7XG4gICAgICAgIGNvbnN0IHVybCA9IGxvY2FsUmVxdWlyZSgnbm9kZTp1cmwnKTtcbiAgICAgICAgaWYgKHR5cGVvZiB1cmwucGF0aFRvRmlsZVVSTCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJldHVybiB1cmwucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKS5ocmVmO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gYWN0aXZlV2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICB9XG5cbiAgICAgIC8vIEZhbGxiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgZW52aXJvbm1lbnQgaXMgdW5rbm93blxuICAgICAgcmV0dXJuICcnO1xuICAgIH0pKCk7XG4vKipcbiAqIEBmaWxlXG4gKlxuICogV2lyZXMgdGhlIHNoaXBwZWQgaW50ZWdyYXRpb24tdGVzdCBoYXJuZXNzIHBsdWdpbiBpbnRvIGEgY29uc3VtZXIgcGx1Z2luJ3MgaW50ZWdyYXRpb24gdGVzdHMsIHNvIGV2ZXJ5XG4gKiBsaWJyYXJ5IGhlbHBlciBpcyByZWFjaGFibGUgYXMgYGxpYi48aGVscGVyPmAgaW5zaWRlIGFuIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZS5cbiAqXG4gKiBUd28gaGFsdmVzLCBhbmQgYm90aCBtdXN0IGJlIHdpcmVkIG9yIGBsaWIuPGhlbHBlcj5gIGZhaWxzOlxuICpcbiAqIC0ge0BsaW5rIGdldEludGVncmF0aW9uVGVzdFBsdWdpblBvcHVsYXRlfSBwdXRzIHRoZSBoYXJuZXNzIHBsdWdpbidzIGJpbmFyaWVzIGluIHRoZSB0ZXN0IHZhdWx0LiBUaGVcbiAqICAgaGFybmVzcyBwbHVnaW4gaXMgd2hhdCBwdWJsaXNoZXMgdGhlIGxpYnJhcnkgb24gYHdpbmRvdy5fX29ic2lkaWFuRGV2VXRpbHNNb2R1bGVgOyBpbiB0aGlzIHJlcG8ncyBvd25cbiAqICAgc3VpdGUgaXQgSVMgdGhlIHBsdWdpbi11bmRlci10ZXN0LCBidXQgaW4gYSBjb25zdW1lcidzIHN1aXRlIHRoZSBwbHVnaW4tdW5kZXItdGVzdCBpcyB0aGUgY29uc3VtZXIncyBvd25cbiAqICAgcGx1Z2luLCBzbyB0aGUgaGFybmVzcyBoYXMgdG8gcmlkZSBhbG9uZyBhcyBhIHNlY29uZCwgdGVzdC1vbmx5IGNvbW11bml0eSBwbHVnaW4gXHUyMDE0IHNlZWRlZCBoZXJlLCBhbmRcbiAqICAgdHVybmVkIG9uIGJ5IGBvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nYCdzIGBjcmVhdGVTZXR1cCh7IGVuYWJsZUNvbW11bml0eVBsdWdpbnMgfSlgLlxuICogLSB7QGxpbmsgcmVnaXN0ZXJJbnRlZ3JhdGlvblRlc3RMaWJSZXNvbHZlcn0gcmVnaXN0ZXJzIHRoZSByZW5kZXJlci1zaWRlIHJlc29sdmVyIHRoYXQgcmVhZHMgdGhhdCBnbG9iYWwuXG4gKlxuICogYG9ic2lkaWFuLWRldi11dGlscy9pbnRlZ3JhdGlvbi10ZXN0LXZpdGVzdC1nbG9iYWwtc2V0dXBgIGFuZFxuICogYG9ic2lkaWFuLWRldi11dGlscy9pbnRlZ3JhdGlvbi10ZXN0LXNldHVwYCBhcmUgdGhlIHR1cm5rZXkgZW5kcG9pbnRzIHRoYXQgY2FsbCB0aGVzZSBmb3IgeW91LlxuICovXG5cbmltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgcmVnaXN0ZXJMaWJSZXNvbHZlciB9IGZyb20gJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnO1xuXG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uLy4uL29ic2lkaWFuL3BsdWdpbi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBnZXRGb2xkZXJOYW1lLFxuICBqb2luXG59IGZyb20gJy4uLy4uL3BhdGgudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7IGdldFJvb3RGb2xkZXIgfSBmcm9tICcuLi9yb290LnRzJztcblxuLyoqXG4gKiBUaGUgaWQgb2YgdGhlIGludGVncmF0aW9uLXRlc3QgaGFybmVzcyBwbHVnaW4gXHUyMDE0IHRoZSBmb2xkZXIgbmFtZSBpdCBpcyBzZWVkZWQgaW50bywgYW5kIHRoZSB2YWx1ZSB0byBwYXNzXG4gKiB0byBgY3JlYXRlU2V0dXAoeyBlbmFibGVDb21tdW5pdHlQbHVnaW5zIH0pYCBzbyB0aGUgaGFybmVzcyBlbmFibGVzIGl0IGFmdGVyIHRoZSBwbHVnaW4tdW5kZXItdGVzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9CU0lESUFOX0RFVl9VVElMU19JTlRFR1JBVElPTl9URVNUX1BMVUdJTl9JRCA9ICdvYnNpZGlhbi1kZXYtdXRpbHMtaW50ZWdyYXRpb24tdGVzdCc7XG5cbi8qKlxuICogVGhlIGZsYXQgbGlicmFyeSBiYXJyZWwgdGhlIGhhcm5lc3MgcGx1Z2luIHB1Ymxpc2hlcy5cbiAqL1xuaW50ZXJmYWNlIE9ic2lkaWFuRGV2VXRpbHNNb2R1bGUge1xuICBfX21lcmdlZDogb2JqZWN0O1xufVxuXG4vKipcbiAqIFRoZSBzaGFwZSB0aGUgaGFybmVzcyBwbHVnaW4gcHVibGlzaGVzIG9uIHRoZSByZW5kZXJlcidzIGB3aW5kb3dgLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5EZXZVdGlsc01vZHVsZVdpbmRvdyB7XG4gIF9fb2JzaWRpYW5EZXZVdGlsc01vZHVsZTogT2JzaWRpYW5EZXZVdGlsc01vZHVsZTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHZhdWx0LXJlbGF0aXZlIGZpbGUgbWFwIHRoYXQgaW5zdGFsbHMgdGhlIHNoaXBwZWQgaW50ZWdyYXRpb24tdGVzdCBoYXJuZXNzIHBsdWdpbiwgcmVhZHkgdG9cbiAqIGhhbmQgdG8gYSBnbG9iYWwgc2V0dXAncyBgcG9wdWxhdGVgIChvciB0byBtZXJnZSBpbnRvIGEgbGFyZ2VyIG1hcCB0aGUgY29uc3VtZXIgYWxyZWFkeSBidWlsZHMpLlxuICpcbiAqIFRoZSByZXN1bHQgaXMgYSBgUmVjb3JkPHN0cmluZywgVWludDhBcnJheT5gLCB3aGljaCBpcyBhc3NpZ25hYmxlIHRvIGBvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nYCdzXG4gKiBgUG9wdWxhdGVGaWxlc1BhcmFtc2AgXHUyMDE0IHNvIGl0IGNvbXBvc2VzIHdpdGggYGJ1aWxkRGVtb1ZhdWx0UG9wdWxhdGVgIGFuZCBmcmllbmRzLlxuICpcbiAqIEByZXR1cm5zIFRoZSBtYXAgb2YgdmF1bHQtcmVsYXRpdmUgcGF0aHMgdG8gZmlsZSBjb250ZW50cy5cbiAqIEB0aHJvd3MgSWYgdGhlIGhhcm5lc3MgcGx1Z2luIHdhcyBub3QgYnVpbHQgaW50byB0aGlzIHBhY2thZ2UgXHUyMDE0IGkuZS4gYG5wbSBydW4gYnVpbGRgIG5ldmVyIHJhbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEludGVncmF0aW9uVGVzdFBsdWdpblBvcHVsYXRlKCk6IFJlY29yZDxzdHJpbmcsIFVpbnQ4QXJyYXk+IHtcbiAgY29uc3QgcGFja2FnZUZvbGRlciA9IGdldFJvb3RGb2xkZXIoZ2V0Rm9sZGVyTmFtZShpbXBvcnQubWV0YS51cmwpKTtcbiAgaWYgKCFwYWNrYWdlRm9sZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgcmVzb2x2ZSB0aGUgb2JzaWRpYW4tZGV2LXV0aWxzIHBhY2thZ2UgZm9sZGVyIHRvIHNlZWQgdGhlIGludGVncmF0aW9uLXRlc3QgaGFybmVzcyBwbHVnaW4uJyk7XG4gIH1cblxuICBjb25zdCBwbHVnaW5Tb3VyY2VGb2xkZXIgPSBqb2luKHBhY2thZ2VGb2xkZXIsIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdEludGVncmF0aW9uVGVzdFBsdWdpbik7XG4gIGNvbnN0IHBsdWdpblZhdWx0Rm9sZGVyID0gam9pbihcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5Eb3RPYnNpZGlhbixcbiAgICBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5QbHVnaW5zLFxuICAgIE9CU0lESUFOX0RFVl9VVElMU19JTlRFR1JBVElPTl9URVNUX1BMVUdJTl9JRFxuICApO1xuXG4gIGNvbnN0IHBvcHVsYXRlOiBSZWNvcmQ8c3RyaW5nLCBVaW50OEFycmF5PiA9IHt9O1xuXG4gIGZvciAoY29uc3QgZmlsZU5hbWUgb2YgW09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1haW5KcywgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uXSkge1xuICAgIGNvbnN0IHNvdXJjZVBhdGggPSBqb2luKHBsdWdpblNvdXJjZUZvbGRlciwgZmlsZU5hbWUpO1xuICAgIGxldCBjb250ZW50OiBVaW50OEFycmF5O1xuICAgIHRyeSB7XG4gICAgICBjb250ZW50ID0gcmVhZEZpbGVTeW5jKHNvdXJjZVBhdGgpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgcmVhZCAke3NvdXJjZVBhdGh9LiBUaGUgaW50ZWdyYXRpb24tdGVzdCBoYXJuZXNzIHBsdWdpbiBpcyBtaXNzaW5nIGZyb20gdGhlIGluc3RhbGxlZCBgXG4gICAgICAgICAgKyAnb2JzaWRpYW4tZGV2LXV0aWxzIHBhY2thZ2UgXHUyMDE0IHJ1biBgbnBtIHJ1biBidWlsZGAgaW4gb2JzaWRpYW4tZGV2LXV0aWxzLCBvciByZWluc3RhbGwgaXQuJyxcbiAgICAgICAgeyBjYXVzZTogZXJyb3IgfVxuICAgICAgKTtcbiAgICB9XG4gICAgcG9wdWxhdGVbam9pbihwbHVnaW5WYXVsdEZvbGRlciwgZmlsZU5hbWUpXSA9IGNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gcG9wdWxhdGU7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHRoZSByZW5kZXJlci1zaWRlIHJlc29sdmVyIHRoYXQgbWVyZ2VzIHRoZSB3aG9sZSBsaWJyYXJ5IGludG8gdGhlIGBsaWJgIGFyZ3VtZW50IG9mIGV2ZXJ5XG4gKiBgZXZhbEluT2JzaWRpYW5gIGNhbGxiYWNrLCByZWFkaW5nIGl0IGZyb20gdGhlIGdsb2JhbCB0aGUgaGFybmVzcyBwbHVnaW4gcHVibGlzaGVzLlxuICpcbiAqIENhbGwgb25jZSBwZXIgdGVzdCB3b3JrZXIgXHUyMDE0IHRoZSBwdWJsaXNoZWQgYG9ic2lkaWFuLWRldi11dGlscy9pbnRlZ3JhdGlvbi10ZXN0LXNldHVwYCBlbmRwb2ludCBkb2VzIGl0XG4gKiBmb3IgeW91IHdoZW4gbGlzdGVkIGluIGBzZXR1cEZpbGVzYC4gUmVnaXN0cmF0aW9uIGlzIGlkZW1wb3RlbnQgKHRoZSBoYXJuZXNzIGRlZHVwZXMgcmVzb2x2ZXJzIGJ5IHNvdXJjZVxuICogdGV4dCksIHNvIGNhbGxpbmcgaXQgbW9yZSB0aGFuIG9uY2UgaXMgc2FmZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVySW50ZWdyYXRpb25UZXN0TGliUmVzb2x2ZXIoKTogdm9pZCB7XG4gIHJlZ2lzdGVyTGliUmVzb2x2ZXIoKCk6IG9iamVjdCA9PiB7XG4gICAgY29uc3Qgb2JzaWRpYW5EZXZVdGlsc01vZHVsZSA9ICh3aW5kb3cgYXMgUGFydGlhbDxPYnNpZGlhbkRldlV0aWxzTW9kdWxlV2luZG93PikuX19vYnNpZGlhbkRldlV0aWxzTW9kdWxlO1xuICAgIGlmICghb2JzaWRpYW5EZXZVdGlsc01vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVGhlIG9ic2lkaWFuLWRldi11dGlscyBtb2R1bGUgaXMgbm90IGV4cG9zZWQgb24gYHdpbmRvd2AuIElzIHRoZSBvYnNpZGlhbi1kZXYtdXRpbHMgaW50ZWdyYXRpb24tdGVzdCAnXG4gICAgICAgICAgKyAnaGFybmVzcyBwbHVnaW4gaW5zdGFsbGVkIGFuZCBlbmFibGVkIGluIHRoZSB0ZXN0IHZhdWx0PyBTZWUgJ1xuICAgICAgICAgICsgJ2BvYnNpZGlhbi1kZXYtdXRpbHMvaW50ZWdyYXRpb24tdGVzdC12aXRlc3QtZ2xvYmFsLXNldHVwYC4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gb2JzaWRpYW5EZXZVdGlsc01vZHVsZS5fX21lcmdlZDtcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUNBLHFCQUE2QjtBQUM3QiwwQ0FBb0M7QUFFcEMsd0NBQXdDO0FBQ3hDLGtCQUdPO0FBQ1AsMkNBQTBDO0FBQzFDLGtCQUE4QjtBQTVDOUIsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxNQUFNO0FBQzFELE1BQUksT0FBTyxlQUFlLFVBQVU7QUFDbEMsVUFBTSxlQUFlO0FBQ3JCLFVBQU0sTUFBTSxhQUFhLFVBQVU7QUFDbkMsUUFBSSxPQUFPLElBQUksa0JBQWtCLFlBQVk7QUFDM0MsYUFBTyxJQUFJLGNBQWMsVUFBVSxFQUFFO0FBQUEsSUFDdkM7QUFBQSxFQUNGO0FBRUEsTUFBSSxPQUFPLFdBQVcsYUFBYTtBQUNqQyxXQUFPLGFBQWEsU0FBUztBQUFBLEVBQy9CO0FBR0EsU0FBTztBQUNULEdBQUc7QUFtQ0EsTUFBTSxnREFBZ0Q7QUEwQnRELFNBQVMsbUNBQStEO0FBQzdFLFFBQU0sb0JBQWdCLCtCQUFjLDJCQUFjLGlCQUFlLENBQUM7QUFDbEUsTUFBSSxDQUFDLGVBQWU7QUFDbEIsVUFBTSxJQUFJLE1BQU0sc0dBQXNHO0FBQUEsRUFDeEg7QUFFQSxRQUFNLHlCQUFxQixrQkFBSyxlQUFlLCtEQUEwQix5QkFBeUI7QUFDbEcsUUFBTSx3QkFBb0I7QUFBQSxJQUN4QiwwREFBd0I7QUFBQSxJQUN4QiwwREFBd0I7QUFBQSxJQUN4QjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLFdBQXVDLENBQUM7QUFFOUMsYUFBVyxZQUFZLENBQUMsMERBQXdCLFFBQVEsMERBQXdCLFlBQVksR0FBRztBQUM3RixVQUFNLGlCQUFhLGtCQUFLLG9CQUFvQixRQUFRO0FBQ3BELFFBQUk7QUFDSixRQUFJO0FBQ0Ysb0JBQVUsNkJBQWEsVUFBVTtBQUFBLElBQ25DLFNBQVMsT0FBZ0I7QUFDdkIsWUFBTSxJQUFJO0FBQUEsUUFDUixrQkFBa0IsVUFBVTtBQUFBLFFBRTVCLEVBQUUsT0FBTyxNQUFNO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQ0EsaUJBQVMsa0JBQUssbUJBQW1CLFFBQVEsQ0FBQyxJQUFJO0FBQUEsRUFDaEQ7QUFFQSxTQUFPO0FBQ1Q7QUFVTyxTQUFTLHFDQUEyQztBQUN6RCwrREFBb0IsTUFBYztBQUNoQyxVQUFNLHlCQUEwQixPQUFpRDtBQUNqRixRQUFJLENBQUMsd0JBQXdCO0FBQzNCLFlBQU0sSUFBSTtBQUFBLFFBQ1I7QUFBQSxNQUdGO0FBQUEsSUFDRjtBQUNBLFdBQU8sdUJBQXVCO0FBQUEsRUFDaEMsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,44 @@
1
+ /// <reference path="../../library.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Wires the shipped integration-test harness plugin into a consumer plugin's integration tests, so every
6
+ * library helper is reachable as `lib.<helper>` inside an `evalInObsidian` closure.
7
+ *
8
+ * Two halves, and both must be wired or `lib.<helper>` fails:
9
+ *
10
+ * - {@link getIntegrationTestPluginPopulate} puts the harness plugin's binaries in the test vault. The
11
+ * harness plugin is what publishes the library on `window.__obsidianDevUtilsModule`; in this repo's own
12
+ * suite it IS the plugin-under-test, but in a consumer's suite the plugin-under-test is the consumer's own
13
+ * plugin, so the harness has to ride along as a second, test-only community plugin — seeded here, and
14
+ * turned on by `obsidian-integration-testing`'s `createSetup({ enableCommunityPlugins })`.
15
+ * - {@link registerIntegrationTestLibResolver} registers the renderer-side resolver that reads that global.
16
+ *
17
+ * `obsidian-dev-utils/integration-test-vitest-global-setup` and
18
+ * `obsidian-dev-utils/integration-test-setup` are the turnkey endpoints that call these for you.
19
+ */
20
+ /**
21
+ * The id of the integration-test harness plugin — the folder name it is seeded into, and the value to pass
22
+ * to `createSetup({ enableCommunityPlugins })` so the harness enables it after the plugin-under-test.
23
+ */
24
+ export declare const OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID = "obsidian-dev-utils-integration-test";
25
+ /**
26
+ * Builds the vault-relative file map that installs the shipped integration-test harness plugin, ready to
27
+ * hand to a global setup's `populate` (or to merge into a larger map the consumer already builds).
28
+ *
29
+ * The result is a `Record<string, Uint8Array>`, which is assignable to `obsidian-integration-testing`'s
30
+ * `PopulateFilesParams` — so it composes with `buildDemoVaultPopulate` and friends.
31
+ *
32
+ * @returns The map of vault-relative paths to file contents.
33
+ * @throws If the harness plugin was not built into this package — i.e. `npm run build` never ran.
34
+ */
35
+ export declare function getIntegrationTestPluginPopulate(): Record<string, Uint8Array>;
36
+ /**
37
+ * Registers the renderer-side resolver that merges the whole library into the `lib` argument of every
38
+ * `evalInObsidian` callback, reading it from the global the harness plugin publishes.
39
+ *
40
+ * Call once per test worker — the published `obsidian-dev-utils/integration-test-setup` endpoint does it
41
+ * for you when listed in `setupFiles`. Registration is idempotent (the harness dedupes resolvers by source
42
+ * text), so calling it more than once is safe.
43
+ */
44
+ export declare function registerIntegrationTestLibResolver(): void;
@@ -4,9 +4,20 @@
4
4
  *
5
5
  * Augments the `obsidian-integration-testing` `Lib` interface with the entire flat
6
6
  * `obsidian-dev-utils` surface (the generated `__merged` barrel), so an `evalInObsidian` closure can
7
- * reach any library helper as `lib.<helper>`. The runtime side is registered by
8
- * `scripts/integration-test-obsidian-setup.ts` via `registerLibResolver`; this file supplies the
7
+ * reach any library helper as `lib.<helper>`. The runtime side is registered by the published
8
+ * `obsidian-dev-utils/integration-test-setup` endpoint via `registerLibResolver`; this file supplies the
9
9
  * matching types.
10
+ *
11
+ * A consumer plugin activates it with a triple-slash reference in a `.d.ts` its `tsconfig.json` already
12
+ * includes:
13
+ *
14
+ * ```ts
15
+ * /// <reference types="obsidian-dev-utils/@types/obsidian-integration-testing" />
16
+ * ```
17
+ *
18
+ * Without that the augmentation is inert there and `lib.<helper>` fails to compile. A
19
+ * `compilerOptions.types` entry naming the same path does NOT work — it resolves without complaint but
20
+ * never brings the augmentation into the program (verified against `moduleResolution: node16`).
10
21
  */
11
22
 
12
23
  export {};
@@ -21,7 +21,7 @@ if you want to view the source, please visit the github repository of this plugi
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
24
- const LIBRARY_VERSION = "88.4.0";
24
+ const LIBRARY_VERSION = "88.5.0";
25
25
  const LIBRARY_STYLES = ".obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component pre, .obsidian-dev-utils.code-highlighter-component code {\n font-family: var(--font-monospace);\n line-height: var(--line-height-normal);\n margin: 0;\n}\n.obsidian-dev-utils.code-highlighter-component textarea, .obsidian-dev-utils.code-highlighter-component code {\n font-size: var(--code-size);\n}\n.obsidian-dev-utils.code-highlighter-component textarea {\n background: transparent;\n color: transparent;\n z-index: 2;\n width: 20em;\n height: 10em;\n}\n.obsidian-dev-utils.code-highlighter-component pre {\n position: absolute;\n pointer-events: none;\n border: var(--input-border-width) solid transparent;\n overflow: auto;\n inset: 0;\n padding: var(--size-4-1) var(--size-4-2);\n z-index: 1;\n}\n.obsidian-dev-utils.code-highlighter-component pre::after {\n content: \"\";\n display: block;\n height: var(--bottom-gap, 0);\n}\n.obsidian-dev-utils.code-highlighter-component pre.is-placeholder {\n opacity: 0.6;\n}\n.obsidian-dev-utils.code-highlighter-component code {\n display: block;\n padding: 0;\n}\n\n.obsidian-dev-utils-lock-indicator {\n display: inline-flex;\n align-items: center;\n color: var(--text-muted);\n}\n.obsidian-dev-utils-lock-indicator .svg-icon {\n width: var(--icon-s);\n height: var(--icon-s);\n}\n\n@keyframes obsidian-dev-utils-lock-indicator-flash {\n 40% {\n color: var(--text-error);\n transform: scale(1.4);\n }\n}\n.obsidian-dev-utils-lock-indicator-flash {\n animation: obsidian-dev-utils-lock-indicator-flash 0.35s ease-in-out;\n}\n\n.obsidian-dev-utils input[type=url] {\n height: var(--input-height);\n}\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=tel],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=url],\n.obsidian-dev-utils input[type=week] {\n -webkit-app-region: no-drag;\n background: var(--background-modifier-form-field);\n border: var(--input-border-width) solid var(--background-modifier-border);\n color: var(--text-normal);\n font-family: inherit;\n padding: var(--size-4-1) var(--size-4-2);\n font-size: var(--font-ui-small);\n border-radius: var(--input-radius);\n outline: none;\n}\n@media (hover: hover) {\n .obsidian-dev-utils input[type=month]:hover,\n .obsidian-dev-utils input[type=tel]:hover,\n .obsidian-dev-utils input[type=time]:hover,\n .obsidian-dev-utils input[type=url]:hover,\n .obsidian-dev-utils input[type=week]:hover {\n border-color: var(--background-modifier-border-hover);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n }\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus {\n border-color: var(--background-modifier-border-focus);\n transition: box-shadow 0.15s ease-in-out, border 0.15s ease-in-out;\n}\n.obsidian-dev-utils input[type=month]:active, .obsidian-dev-utils input[type=month]:focus, .obsidian-dev-utils input[type=month]:focus-visible,\n.obsidian-dev-utils input[type=tel]:active,\n.obsidian-dev-utils input[type=tel]:focus,\n.obsidian-dev-utils input[type=tel]:focus-visible,\n.obsidian-dev-utils input[type=time]:active,\n.obsidian-dev-utils input[type=time]:focus,\n.obsidian-dev-utils input[type=time]:focus-visible,\n.obsidian-dev-utils input[type=url]:active,\n.obsidian-dev-utils input[type=url]:focus,\n.obsidian-dev-utils input[type=url]:focus-visible,\n.obsidian-dev-utils input[type=week]:active,\n.obsidian-dev-utils input[type=week]:focus,\n.obsidian-dev-utils input[type=week]:focus-visible {\n box-shadow: 0 0 0 2px var(--background-modifier-border-focus);\n}\n.obsidian-dev-utils input[type=month]::placeholder,\n.obsidian-dev-utils input[type=tel]::placeholder,\n.obsidian-dev-utils input[type=time]::placeholder,\n.obsidian-dev-utils input[type=url]::placeholder,\n.obsidian-dev-utils input[type=week]::placeholder {\n color: var(--text-faint);\n}\n.mod-rtl input[type=month],\n.mod-rtl input[type=time],\n.mod-rtl input[type=week],\n.is-rtl input[type=month],\n.is-rtl input[type=time],\n.is-rtl input[type=week],\n.rtl input[type=month],\n.rtl input[type=time],\n.rtl input[type=week] {\n direction: rtl;\n}\n.mod-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=month]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl input[type=week]::-webkit-calendar-picker-indicator,\n.rtl input[type=month]::-webkit-calendar-picker-indicator,\n.rtl input[type=time]::-webkit-calendar-picker-indicator,\n.rtl input[type=week]::-webkit-calendar-picker-indicator {\n right: var(--size-4-1);\n left: auto;\n}\n\n.obsidian-dev-utils input[type=month],\n.obsidian-dev-utils input[type=time],\n.obsidian-dev-utils input[type=week] {\n font-variant-numeric: tabular-nums;\n position: relative;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-text,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-text {\n color: var(--text-faint);\n padding-inline-end: 0;\n}\n.obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n position: absolute;\n left: var(--size-4-1);\n right: auto;\n opacity: 0.5;\n}\n.obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-month-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-day-field:focus, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:active, .obsidian-dev-utils input[type=month]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=time]::-webkit-datetime-edit-year-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-month-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-day-field:focus,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:active,\n.obsidian-dev-utils input[type=week]::-webkit-datetime-edit-year-field:focus {\n background-color: var(--text-selection);\n color: var(--text-normal);\n cursor: text;\n}\n.mod-rtl .obsidian-dev-utils input[type=month], .is-rtl .obsidian-dev-utils input[type=month], .rtl .obsidian-dev-utils input[type=month],\n.mod-rtl .obsidian-dev-utils input[type=time],\n.is-rtl .obsidian-dev-utils input[type=time],\n.rtl .obsidian-dev-utils input[type=time],\n.mod-rtl .obsidian-dev-utils input[type=week],\n.is-rtl .obsidian-dev-utils input[type=week],\n.rtl .obsidian-dev-utils input[type=week] {\n direction: rtl;\n}\n.mod-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .is-rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator, .rtl .obsidian-dev-utils input[type=month]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator,\n.mod-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.is-rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator,\n.rtl .obsidian-dev-utils input[type=week]::-webkit-calendar-picker-indicator {\n left: auto;\n right: var(--size-4-1);\n}\n\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=month],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=time],\nbody:not(.is-ios):not(.is-android) .obsidian-dev-utils input[type=week] {\n padding-inline-start: var(--size-4-6);\n}\n\n.obsidian-dev-utils input[type=time]::-webkit-calendar-picker-indicator {\n margin-inline-start: 0;\n}\n\n.obsidian-dev-utilsprogress.loop {\n min-width: 200px;\n}\n\n@keyframes obsidian-dev-utils-minimized-modal-bar-pulse {\n 0%, 100% {\n box-shadow: var(--shadow-s);\n }\n 50% {\n box-shadow: 0 0 0 2px var(--interactive-accent);\n }\n}\n@keyframes obsidian-dev-utils-minimized-modal-bar-attention {\n 0% {\n box-shadow: 0 0 0 0 var(--interactive-accent);\n }\n 40% {\n box-shadow: 0 0 0 4px var(--interactive-accent);\n }\n 100% {\n box-shadow: var(--shadow-s);\n }\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button {\n position: absolute;\n top: var(--size-4-2);\n right: calc(var(--size-4-2) + var(--size-4-9));\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimizable-modal .minimize-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n.obsidian-dev-utils.minimized-modal-bar {\n position: fixed;\n right: var(--size-4-4);\n bottom: calc(var(--size-4-4) + var(--size-4-8));\n z-index: var(--layer-modal);\n display: flex;\n align-items: center;\n gap: var(--size-4-2);\n padding: var(--size-4-2) var(--size-4-3);\n border: 1px solid var(--background-modifier-border);\n border-radius: var(--radius-m);\n background: var(--background-secondary);\n box-shadow: var(--shadow-s);\n cursor: pointer;\n animation: obsidian-dev-utils-minimized-modal-bar-pulse 2s ease-in-out infinite;\n}\n.obsidian-dev-utils.minimized-modal-bar:hover {\n background-image: linear-gradient(var(--background-modifier-hover), var(--background-modifier-hover));\n}\n.obsidian-dev-utils.minimized-modal-bar.minimized-modal-bar-attention {\n animation: obsidian-dev-utils-minimized-modal-bar-attention 0.35s ease-out;\n}\n.obsidian-dev-utils.minimized-modal-bar .minimized-modal-bar-title {\n font-weight: var(--font-medium);\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--size-2-2);\n border: none;\n border-radius: var(--radius-s);\n background: transparent;\n color: var(--icon-color);\n cursor: pointer;\n box-shadow: none;\n}\n.obsidian-dev-utils.minimized-modal-bar .restore-button:hover,\n.obsidian-dev-utils.minimized-modal-bar .cancel-button:hover {\n background: var(--background-modifier-hover);\n color: var(--icon-color-hover);\n}\n\n.obsidian-dev-utils.modal-container .ok-button {\n margin-right: 10px;\n margin-top: 20px;\n}\n\n.obsidian-dev-utils .multiple-dropdown-component select,\n.obsidian-dev-utils .multiple-dropdown-component select:focus,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown {\n height: auto;\n padding-top: 3px;\n}\n.obsidian-dev-utils .multiple-dropdown-component select option:checked,\n.obsidian-dev-utils .multiple-dropdown-component select:focus option:checked,\n.obsidian-dev-utils .multiple-dropdown-component .dropdown option:checked {\n background-color: #1967d2;\n color: #fff;\n}\n\n.obsidian-dev-utils.plugin-notice-name {\n color: var(--text-accent);\n display: inline-block;\n font-weight: var(--font-bold);\n margin-bottom: var(--size-4-2);\n}\n.obsidian-dev-utils.plugin-notice-content {\n padding-right: var(--size-4-5);\n position: relative;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.cancel-button {\n display: block;\n margin-top: var(--size-4-2);\n width: fit-content;\n}\n.obsidian-dev-utils.plugin-notice-content .obsidian-dev-utils.plugin-notice-close-button {\n position: absolute;\n right: var(--size-4-3);\n top: var(--size-4-3);\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice {\n padding: 0;\n}\n.obsidian-dev-utils.plugin-notice-requires-explicit-close.notice .obsidian-dev-utils.plugin-notice-content {\n padding: var(--size-4-3) var(--size-4-4);\n}\n\n.obsidian-dev-utils.plugin-settings-tab a:focus {\n outline: 2px solid var(--link-color);\n}\n\n.obsidian-dev-utils.popover {\n max-width: min(420px, 90vw);\n min-width: 320px;\n padding: var(--size-4-2) var(--size-4-3);\n position: absolute;\n z-index: var(--layer-menu);\n}\n.obsidian-dev-utils.popover .setting-item {\n align-items: center;\n border-top: none;\n gap: var(--size-4-2);\n padding: var(--size-2-1) 0;\n}\n.obsidian-dev-utils.popover .setting-item-info {\n margin-right: 0;\n}\n.obsidian-dev-utils.popover .setting-item-control {\n flex-grow: 1;\n justify-content: flex-end;\n}\n.obsidian-dev-utils.popover input[type=text] {\n width: 100%;\n}\n\n.obsidian-dev-utils.prompt-modal .text-box {\n width: 100%;\n}\n\nbody button:not(.clickable-icon) {\n color: var(--text-color);\n}\n\n.obsidian-dev-utils.tri-state-checkbox-component input[type=checkbox]:indeterminate {\n appearance: checkbox;\n}\n\n.obsidian-dev-utils :invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils input.metadata-input-text:active:invalid, .obsidian-dev-utils input.metadata-input-text:focus-visible:invalid, .obsidian-dev-utils input.metadata-input-text:focus:invalid,\n.obsidian-dev-utils input[type=date]:active:invalid,\n.obsidian-dev-utils input[type=date]:focus-visible:invalid,\n.obsidian-dev-utils input[type=date]:focus:invalid,\n.obsidian-dev-utils input[type=datetime-local]:active:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus-visible:invalid,\n.obsidian-dev-utils input[type=datetime-local]:focus:invalid,\n.obsidian-dev-utils input[type=email]:active:invalid,\n.obsidian-dev-utils input[type=email]:focus-visible:invalid,\n.obsidian-dev-utils input[type=email]:focus:invalid,\n.obsidian-dev-utils input[type=number]:active:invalid,\n.obsidian-dev-utils input[type=number]:focus-visible:invalid,\n.obsidian-dev-utils input[type=number]:focus:invalid,\n.obsidian-dev-utils input[type=password]:active:invalid,\n.obsidian-dev-utils input[type=password]:focus-visible:invalid,\n.obsidian-dev-utils input[type=password]:focus:invalid,\n.obsidian-dev-utils input[type=search]:active:invalid,\n.obsidian-dev-utils input[type=search]:focus-visible:invalid,\n.obsidian-dev-utils input[type=search]:focus:invalid,\n.obsidian-dev-utils input[type=text]:active:invalid,\n.obsidian-dev-utils input[type=text]:focus-visible:invalid,\n.obsidian-dev-utils input[type=text]:focus:invalid,\n.obsidian-dev-utils textarea:active:invalid,\n.obsidian-dev-utils textarea:focus-visible:invalid,\n.obsidian-dev-utils textarea:focus:invalid {\n box-shadow: 0 0 0 2px var(--text-error);\n}\n.obsidian-dev-utils.setting-component-wrapper {\n position: relative;\n display: inline-flex;\n}\n.obsidian-dev-utils.overlay-validator {\n caret-color: transparent;\n cursor: default;\n position: absolute;\n background-color: transparent;\n border: none;\n outline: none;\n pointer-events: none;\n z-index: 9999;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n}\n.obsidian-dev-utils.tooltip.tooltip-validator {\n position: absolute;\n top: calc(100% + 8px);\n width: max-content;\n}\n\n/*# sourceMappingURL=data:application/json;charset=utf-8,%7B%22version%22:3,%22sourceRoot%22:%22%22,%22sources%22:%5B%22../src/styles/code-highlighter-component.scss%22,%22../src/styles/editor-lock.scss%22,%22../src/styles/input.scss%22,%22../src/styles/input-time.scss%22,%22../src/styles/loop.scss%22,%22../src/styles/minimizable-modal.scss%22,%22../src/styles/modal-container.scss%22,%22../src/styles/multiple-dropdown-component.scss%22,%22../src/styles/plugin-notice.scss%22,%22../src/styles/plugin-settings-tab.scss%22,%22../src/styles/popover.scss%22,%22../src/styles/prompt-modal.scss%22,%22../src/styles/tldraw-button-color-workaround.scss%22,%22../src/styles/tri-state-checkbox-component.scss%22,%22../src/styles/validation.scss%22%5D,%22names%22:%5B%5D,%22mappings%22:%22AAEI;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;;ACvCN;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAMJ;EACE;IACE;IACA;;;AAIJ;EACE;;;ACvBA;EACE;;AAGF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;AAAA;AAAA;AAAA;AAAA;IACE;IACA,YACE;;;AAMR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA,YACE;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AASE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGE;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AC7DV;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;;AAIK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAGP;;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;;;AAKF;AAAA;AAAA;EACE;;;AAMJ;EACE;;;ACjDJ;EACE;;;ACFJ;EACE;IAEE;;EAGF;IACE;;;AAIJ;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAOA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AASN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAOA;EACE;;AAOF;EACE;;AAGF;EACE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;EACA;;;ACxGJ;EACE;EACA;;;ACFF;AAAA;AAAA;EAGE;EACA;;AAEA;AAAA;AAAA;EACE;EACA;;;ACTN;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAKF;EACE;EACA;EACA;;AAOJ;EACE;;AAEA;EACE;;;AChCF;EACE;;;ACCJ;EAIE;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AC9BF;EACE;;;ACON;EACE;;;ACTE;EACE;;;ACEJ;EAJA;;AAoBI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EApBJ;;AA0BA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA%22,%22file%22:%22styles.css%22,%22sourcesContent%22:%5B%22.obsidian-dev-utils%20%7B%5Cn%20%20&.code-highlighter-component%20%7B%5Cn%20%20%20%20textarea,%20pre,%20code%20%7B%5Cn%20%20%20%20%20%20font-family:%20var(--font-monospace);%5Cn%20%20%20%20%20%20line-height:%20var(--line-height-normal);%5Cn%20%20%20%20%20%20margin:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea,%20code%20%7B%5Cn%20%20%20%20%20%20font-size:%20var(--code-size);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20textarea%20%7B%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20transparent;%5Cn%20%20%20%20%20%20z-index:%202;%5Cn%20%20%20%20%20%20width:%2020em;%5Cn%20%20%20%20%20%20height:%2010em;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20%20%20border:%20var(--input-border-width)%20solid%20transparent;%5Cn%20%20%20%20%20%20overflow:%20auto;%5Cn%20%20%20%20%20%20inset:%200;%5Cn%20%20%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20%20%20z-index:%201;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre::after%20%7B%5Cn%20%20%20%20%20%20content:%20%5C%22%5C%22;%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20height:%20var(--bottom-gap,%200);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20pre.is-placeholder%20%7B%5Cn%20%20%20%20%20%20opacity:%200.6;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20code%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20padding:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20Lock%20indicators%20shown%20in%20the%20tab%20header%20and%20the%20status%20bar%20while%20a%20note%20is%20locked.%20These%20live%20in%5Cn//%20global%20Obsidian%20DOM%20(tab%20header%20/%20status%20bar),%20so%20they%20are%20styled%20with%20a%20global%20class%20rather%20than%5Cn//%20scoped%20under%20%60.obsidian-dev-utils%60.%5Cn.obsidian-dev-utils-lock-indicator%20%7B%5Cn%20%20display:%20inline-flex;%5Cn%20%20align-items:%20center;%5Cn%20%20color:%20var(--text-muted);%5Cn%5Cn%20%20.svg-icon%20%7B%5Cn%20%20%20%20width:%20var(--icon-s);%5Cn%20%20%20%20height:%20var(--icon-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn//%20Flashed%20on%20every%20lock%20indicator%20(tab%20header,%20view%20action,%20status%20bar)%20when%20the%20user%20attempts%20to%5Cn//%20type%20in%20a%20locked%20note,%20to%20make%20clear%20the%20note%20is%20read-only.%20Re-added%20per%20rejected%20keystroke.%5Cn@keyframes%20obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20color:%20var(--text-error);%5Cn%20%20%20%20transform:%20scale(1.4);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils-lock-indicator-flash%20%7B%5Cn%20%20animation:%20obsidian-dev-utils-lock-indicator-flash%200.35s%20ease-in-out;%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='url'%5D%20%7B%5Cn%20%20%20%20height:%20var(--input-height)%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='tel'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='url'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20-webkit-app-region:%20no-drag;%5Cn%20%20%20%20background:%20var(--background-modifier-form-field);%5Cn%20%20%20%20border:%20var(--input-border-width)%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20font-family:%20inherit;%5Cn%20%20%20%20padding:%20var(--size-4-1)%20var(--size-4-2);%5Cn%20%20%20%20font-size:%20var(--font-ui-small);%5Cn%20%20%20%20border-radius:%20var(--input-radius);%5Cn%20%20%20%20outline:%20none;%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20@media%20(hover:%20hover)%20%7B%5Cn%20%20%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20border-color:%20var(--background-modifier-border-hover);%5Cn%20%20%20%20%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20border-color:%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%20%20transition:%5Cn%20%20%20%20%20%20%20%20box-shadow%200.15s%20ease-in-out,%5Cn%20%20%20%20%20%20%20%20border%200.15s%20ease-in-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus,%5Cn%20%20%20%20&:focus-visible%20%7B%5Cn%20%20%20%20%20%20box-shadow:%200%200%200%202px%20var(--background-modifier-border-focus);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::placeholder%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20@at-root%20%7B%5Cn%20%20%20%20.mod-rtl,%5Cn%20%20%20%20.is-rtl,%5Cn%20%20%20%20.rtl%20%7B%5Cn%20%20%20%20%20%20&%20%7B%5Cn%20%20%20%20%20%20%20%20input%5Btype='month'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='time'%5D,%5Cn%20%20%20%20%20%20%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%20%20%7D%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20input%5Btype='month'%5D,%5Cn%20%20input%5Btype='time'%5D,%5Cn%20%20input%5Btype='week'%5D%20%7B%5Cn%20%20%20%20font-variant-numeric:%20tabular-nums;%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-text%20%7B%5Cn%20%20%20%20%20%20color:%20var(--text-faint);%5Cn%20%20%20%20%20%20padding-inline-end:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20left:%20var(--size-4-1);%5Cn%20%20%20%20%20%20right:%20auto;%5Cn%20%20%20%20%20%20opacity:%200.5;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20&::-webkit-datetime-edit-month-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-day-field,%5Cn%20%20%20%20&::-webkit-datetime-edit-year-field%20%7B%5Cn%20%20%20%20%20%20&:active,%5Cn%20%20%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20var(--text-selection);%5Cn%20%20%20%20%20%20%20%20color:%20var(--text-normal);%5Cn%20%20%20%20%20%20%20%20cursor:%20text;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20.mod-rtl%20&,%5Cn%20%20%20%20%20%20.is-rtl%20&,%5Cn%20%20%20%20%20%20.rtl%20&%20%7B%5Cn%20%20%20%20%20%20direction:%20rtl;%5Cn%5Cn%20%20%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20%20%20left:%20auto;%5Cn%20%20%20%20%20%20%20%20right:%20var(--size-4-1);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20@at-root%20%7B%5Cn%20%20%20%20%20%20body:not(.is-ios):not(.is-android)%20&%20%7B%5Cn%20%20%20%20%20%20%20%20padding-inline-start:%20var(--size-4-6);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20input%5Btype='time'%5D%20%7B%5Cn%20%20%20%20&::-webkit-calendar-picker-indicator%20%7B%5Cn%20%20%20%20%20%20margin-inline-start:%200;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&progress.loop%20%7B%5Cn%20%20%20%20min-width:%20200px;%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22@keyframes%20obsidian-dev-utils-minimized-modal-bar-pulse%20%7B%5Cn%20%200%25,%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%5Cn%20%2050%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%202px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn@keyframes%20obsidian-dev-utils-minimized-modal-bar-attention%20%7B%5Cn%20%200%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%200%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%2040%25%20%7B%5Cn%20%20%20%20box-shadow:%200%200%200%204px%20var(--interactive-accent);%5Cn%20%20%7D%5Cn%5Cn%20%20100%25%20%7B%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%7D%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20//%20The%20minimize%20button%20lives%20inside%20the%20modal%20container,%20left%20of%20Obsidian's%20close%20button.%5Cn%20%20&.minimizable-modal%20%7B%5Cn%20%20%20%20.minimize-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20right:%20calc(var(--size-4-2)%20+%20var(--size-4-9));%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20The%20minimized%20bar%20is%20appended%20to%20document.body.%20It%20floats%20at%20the%20bottom-right%20while%20minimized,%5Cn%20%20//%20and%20gently%20pulses%20an%20accent%20ring%20so%20the%20user%20does%20not%20forget%20about%20the%20minimized%20operation.%5Cn%20%20//%20It%20floats%20a%20status-bar's%20height%20above%20the%20bottom%20edge%20so%20it%20never%20covers%20the%20bottom-right%5Cn%20%20//%20status-bar%20items%20(e.g.%20the%20editor-lock%20unlock%20indicator,%20which%20lives%20in%20the%20same%20corner).%5Cn%20%20&.minimized-modal-bar%20%7B%5Cn%20%20%20%20position:%20fixed;%5Cn%20%20%20%20right:%20var(--size-4-4);%5Cn%20%20%20%20bottom:%20calc(var(--size-4-4)%20+%20var(--size-4-8));%5Cn%20%20%20%20z-index:%20var(--layer-modal);%5Cn%20%20%20%20display:%20flex;%5Cn%20%20%20%20align-items:%20center;%5Cn%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20border:%201px%20solid%20var(--background-modifier-border);%5Cn%20%20%20%20border-radius:%20var(--radius-m);%5Cn%20%20%20%20background:%20var(--background-secondary);%5Cn%20%20%20%20box-shadow:%20var(--shadow-s);%5Cn%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-pulse%202s%20ease-in-out%20infinite;%5Cn%5Cn%20%20%20%20//%20Layer%20the%20translucent%20hover%20tint%20over%20the%20opaque%20%60background%60%20(%60--background-secondary%60)%20via%5Cn%20%20%20%20//%20%60background-image%60%20instead%20of%20replacing%20the%20background-color.%20%60--background-modifier-hover%60%20is%5Cn%20%20%20%20//%20translucent,%20so%20setting%20it%20as%20%60background%60%20would%20let%20the%20editor%20content%20behind%20the%20floating%20bar%5Cn%20%20%20%20//%20bleed%20through%20and%20make%20the%20title%20unreadable.%20A%20gradient%20of%20the%20tint%20composited%20over%20the%20opaque%5Cn%20%20%20%20//%20base%20keeps%20the%20bar%20opaque%20while%20preserving%20the%20subtle%20hover%20highlight.%5Cn%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20background-image:%20linear-gradient(var(--background-modifier-hover),%20var(--background-modifier-hover));%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20A%20one-shot,%20more%20pronounced%20flash%20played%20when%20the%20user%20attempts%20a%20blocked%20action%20(a%20keystroke,%5Cn%20%20%20%20//%20right-click,%20or%20opening%20another%20modal)%20while%20this%20modal%20is%20minimized,%20so%20the%20block%20is%20not%5Cn%20%20%20%20//%20silent.%20Its%20higher%20specificity%20overrides%20the%20gentle%20infinite%20idle%20pulse%20while%20it%20plays;%20the%5Cn%20%20%20%20//%20class%20is%20removed%20on%20%60animationend%60,%20restoring%20the%20idle%20pulse.%5Cn%20%20%20%20&.minimized-modal-bar-attention%20%7B%5Cn%20%20%20%20%20%20animation:%20obsidian-dev-utils-minimized-modal-bar-attention%200.35s%20ease-out;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.minimized-modal-bar-title%20%7B%5Cn%20%20%20%20%20%20font-weight:%20var(--font-medium);%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.restore-button,%5Cn%20%20%20%20.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20padding:%20var(--size-2-2);%5Cn%20%20%20%20%20%20border:%20none;%5Cn%20%20%20%20%20%20border-radius:%20var(--radius-s);%5Cn%20%20%20%20%20%20background:%20transparent;%5Cn%20%20%20%20%20%20color:%20var(--icon-color);%5Cn%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20box-shadow:%20none;%5Cn%5Cn%20%20%20%20%20%20&:hover%20%7B%5Cn%20%20%20%20%20%20%20%20background:%20var(--background-modifier-hover);%5Cn%20%20%20%20%20%20%20%20color:%20var(--icon-color-hover);%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.modal-container%20%7B%5Cn%20%20%20%20.ok-button%20%7B%5Cn%20%20%20%20%20%20margin-right:%2010px;%5Cn%20%20%20%20%20%20margin-top:%2020px;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20.multiple-dropdown-component%20%7B%5Cn%20%20%20%20select,%5Cn%20%20%20%20select:focus,%5Cn%20%20%20%20.dropdown%20%7B%5Cn%20%20%20%20%20%20height:%20auto;%5Cn%20%20%20%20%20%20padding-top:%203px;%5Cn%5Cn%20%20%20%20%20%20option:checked%20%7B%5Cn%20%20%20%20%20%20%20%20background-color:%20%231967d2;%5Cn%20%20%20%20%20%20%20%20color:%20%23fff;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-notice-name%20%7B%5Cn%20%20%20%20color:%20var(--text-accent);%5Cn%20%20%20%20display:%20inline-block;%5Cn%20%20%20%20font-weight:%20var(--font-bold);%5Cn%20%20%20%20margin-bottom:%20var(--size-4-2);%5Cn%20%20%7D%5Cn%5Cn%20%20&.plugin-notice-content%20%7B%5Cn%20%20%20%20padding-right:%20var(--size-4-5);%5Cn%20%20%20%20position:%20relative;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.cancel-button%20%7B%5Cn%20%20%20%20%20%20display:%20block;%5Cn%20%20%20%20%20%20margin-top:%20var(--size-4-2);%5Cn%20%20%20%20%20%20width:%20fit-content;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20close%20button%20reuses%20Obsidian's%20%60modal-header-button%60%20+%20%60clickable-icon%60%20classes%20so%20it%20matches%5Cn%20%20%20%20//%20The%20native%20modal%20close%20button%20(box%20+%20hover);%20only%20its%20corner%20position%20is%20set%20here.%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-close-button%20%7B%5Cn%20%20%20%20%20%20position:%20absolute;%5Cn%20%20%20%20%20%20right:%20var(--size-4-3);%5Cn%20%20%20%20%20%20top:%20var(--size-4-3);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20//%20Move%20the%20notice's%20own%20padding%20onto%20the%20content%20wrapper%20so%20the%20wrapper%20covers%20the%20whole%20clickable%5Cn%20%20//%20Area%20%E2%80%94%20otherwise%20a%20click%20landing%20on%20the%20notice's%20bare%20padding%20(outside%20the%20wrapper)%20would%20bypass%20the%5Cn%20%20//%20Stop-propagation%20guard%20and%20dismiss%20the%20hard-to-close%20notice.%5Cn%20%20&.plugin-notice-requires-explicit-close.notice%20%7B%5Cn%20%20%20%20padding:%200;%5Cn%5Cn%20%20%20%20.obsidian-dev-utils.plugin-notice-content%20%7B%5Cn%20%20%20%20%20%20padding:%20var(--size-4-3)%20var(--size-4-4);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.plugin-settings-tab%20%7B%5Cn%20%20%20%20a:focus%20%7B%5Cn%20%20%20%20%20%20outline:%202px%20solid%20var(--link-color);%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20A%20popover%20is%20anchored%20at%20a%20point%20and%20appended%20to%20the%20document%20body,%20outside%20any%20plugin-scoped%5Cn//%20container,%20so%20it%20is%20positioned%20absolutely%20at%20the%20top%20level.%20It%20borrows%20Obsidian's%20%60.menu%60%20look,%5Cn//%20which%20already%20carries%20the%20popup%20background,%20border%20and%20shadow%20%E2%80%94%20only%20layout%20is%20set%20here.%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20&.popover%20%7B%5Cn%20%20%20%20//%20Deliberately%20not%20%60calc(100vw%20-%2016px)%60:%20the%20SCSS%20compiler%20strips%20the%20%60calc(%60%20wrapper%20inside%5Cn%20%20%20%20//%20%60min()%60,%20which%20yields%20invalid%20CSS.%20A%20viewport%20percentage%20keeps%20a%20narrow%20window's%20popover%20on%5Cn%20%20%20%20//%20screen.%5Cn%20%20%20%20max-width:%20min(420px,%2090vw);%5Cn%20%20%20%20min-width:%20320px;%5Cn%20%20%20%20padding:%20var(--size-4-2)%20var(--size-4-3);%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20z-index:%20var(--layer-menu);%5Cn%5Cn%20%20%20%20//%20Setting%20rows%20are%20built%20for%20a%20full-width%20settings%20tab;%20compact%20them%20for%20a%20popover.%5Cn%20%20%20%20.setting-item%20%7B%5Cn%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20border-top:%20none;%5Cn%20%20%20%20%20%20gap:%20var(--size-4-2);%5Cn%20%20%20%20%20%20padding:%20var(--size-2-1)%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-info%20%7B%5Cn%20%20%20%20%20%20margin-right:%200;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20.setting-item-control%20%7B%5Cn%20%20%20%20%20%20flex-grow:%201;%5Cn%20%20%20%20%20%20justify-content:%20flex-end;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20input%5Btype='text'%5D%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cn%20%20&.prompt-modal%20%7B%5Cn%20%20%20%20.text-box%20%7B%5Cn%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%7D%5Cn%22,%22//%20The%20tldraw%20Obsidian%20plugin%20(tldraw/obsidian-plugin)%20ships%20an%20unscoped%20global%20rule%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20currentColor%20%7D%60%20that%20overrides%20Obsidian's%20own%5Cn//%20%60button:not(.clickable-icon)%20%7B%20color:%20var(--text-color)%20%7D%60%20app-wide.%20Obsidian%20sets%5Cn//%20%60--text-color%60%20contextually%20per%20button%20variant%20(%60--text-normal%60%20by%20default,%5Cn//%20%60--text-on-accent%60%20for%20%60.mod-cta%60,%20%60--text-error%60%20for%20%60.mod-warning%60),%20so%20tldraw's%5Cn//%20%60currentColor%60%20discards%20that%20and%20breaks%20button%20contrast%20outside%20tldraw%20%E2%80%94%20e.g.%5Cn//%20White-on-white%20action%20buttons%20inside%20a%20Notice.%20Re-assert%20Obsidian's%20own%20value%20with%20a%5Cn//%20%60body%60-prefixed%20selector%20(specificity%200,1,2)%20so%20it%20wins%20over%20tldraw's%20(0,1,1)%20while%5Cn//%20Staying%20correct%20for%20every%20button%20variant%20(it%20reuses%20the%20same%20contextual%20%60--text-color%60).%5Cn//%20Defensive%20workaround%20%E2%80%94%20remove%20once%20the%20upstream%20fix%20ships%20(tldraw/obsidian-plugin%23210).%5Cnbody%20button:not(.clickable-icon)%20%7B%5Cn%20%20color:%20var(--text-color);%5Cn%7D%5Cn%22,%22.obsidian-dev-utils%20%7B%5Cr%5Cn%20%20&.tri-state-checkbox-component%20%7B%5Cr%5Cn%20%20%20%20input%5Btype='checkbox'%5D:indeterminate%20%7B%5Cr%5Cn%20%20%20%20%20%20appearance:%20checkbox;%5Cr%5Cn%20%20%20%20%7D%5Cr%5Cn%20%20%7D%5Cr%5Cn%7D%5Cr%5Cn%22,%22@mixin%20invalid%20%7B%5Cn%20%20box-shadow:%200%200%200%202px%20var(--text-error);%5Cn%7D%5Cn%5Cn.obsidian-dev-utils%20%7B%5Cn%20%20:invalid%20%7B%5Cn%20%20%20%20@include%20invalid;%5Cn%20%20%7D%5Cn%5Cn%20%20input.metadata-input-text,%5Cn%20%20input%5Btype='date'%5D,%5Cn%20%20input%5Btype='datetime-local'%5D,%5Cn%20%20input%5Btype='email'%5D,%5Cn%20%20input%5Btype='number'%5D,%5Cn%20%20input%5Btype='password'%5D,%5Cn%20%20input%5Btype='search'%5D,%5Cn%20%20input%5Btype='text'%5D,%5Cn%20%20textarea%20%7B%5Cn%20%20%20%20&:active,%5Cn%20%20%20%20&:focus-visible,%5Cn%20%20%20%20&:focus%20%7B%5Cn%20%20%20%20%20%20&:invalid%20%7B%5Cn%20%20%20%20%20%20%20%20@include%20invalid;%5Cn%20%20%20%20%20%20%7D%5Cn%20%20%20%20%7D%5Cn%20%20%7D%5Cn%5Cn%20%20&.setting-component-wrapper%20%7B%5Cn%20%20%20%20position:%20relative;%5Cn%20%20%20%20display:%20inline-flex;%5Cn%20%20%7D%5Cn%5Cn%20%20&.overlay-validator%20%7B%5Cn%20%20%20%20caret-color:%20transparent;%5Cn%20%20%20%20cursor:%20default;%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20background-color:%20transparent;%5Cn%20%20%20%20border:%20none;%5Cn%20%20%20%20outline:%20none;%5Cn%20%20%20%20pointer-events:%20none;%5Cn%20%20%20%20z-index:%209999;%5Cn%20%20%20%20left:%200;%5Cn%20%20%20%20top:%200;%5Cn%20%20%20%20width:%20100%25;%5Cn%20%20%20%20height:%20100%25;%5Cn%20%20%7D%5Cn%5Cn%20%20&.tooltip.tooltip-validator%20%7B%5Cn%20%20%20%20position:%20absolute;%5Cn%20%20%20%20top:%20calc(100%25%20+%208px);%5Cn%20%20%20%20width:%20max-content;%5Cn%20%20%7D%5Cn%7D%5Cn%22%5D%7D */\n";
26
26
  export {
27
27
  LIBRARY_STYLES,
@@ -0,0 +1,33 @@
1
+ /// <reference path="./library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Per-worker integration-test setup endpoint: makes every library helper reachable as `lib.<helper>` inside
6
+ * an `evalInObsidian` closure.
7
+ *
8
+ * Add it to the `setupFiles` of each integration-test project, after `obsidian-integration-testing`'s own
9
+ * setup:
10
+ *
11
+ * ```ts
12
+ * setupFiles: [
13
+ * 'obsidian-integration-testing/vitest-setup',
14
+ * 'obsidian-dev-utils/integration-test-setup'
15
+ * ]
16
+ * ```
17
+ *
18
+ * Importing this module registers a renderer-side resolver whose result the harness merges into the `lib`
19
+ * argument of every `evalInObsidian` callback. Two more pieces are needed for `lib.<helper>` to work:
20
+ *
21
+ * - The **harness plugin** must be loaded in the test vault, because it is what publishes the library on
22
+ * `window.__obsidianDevUtilsModule`. Seed and enable it via
23
+ * `obsidian-dev-utils/integration-test-vitest-global-setup` (or, when composing with your own vault
24
+ * fixtures, {@link getIntegrationTestPluginPopulate} +
25
+ * `createSetup({ enableCommunityPlugins: [OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID] })`).
26
+ * - The **types** must be activated, or `lib.<helper>` will not compile. Put
27
+ * `/// <reference types="obsidian-dev-utils/@types/obsidian-integration-testing" />` in a `.d.ts` your
28
+ * `tsconfig.json` already includes. A `compilerOptions.types` entry does NOT work for this.
29
+ *
30
+ * Registration is idempotent (the harness dedupes resolvers by source text), so importing this module from
31
+ * more than one setup file is safe.
32
+ */
33
+ export {};
@@ -0,0 +1,26 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ if (globalThis.process) {
9
+ return;
10
+ }
11
+
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return '/';
16
+ },
17
+ env: {},
18
+ platform: 'android'
19
+ };
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
+ globalThis.process = browserProcess;
22
+ })();
23
+
24
+ import { registerIntegrationTestLibResolver } from "./script-utils/test-runners/integration-test-plugin.mjs";
25
+ registerIntegrationTestLibResolver();
26
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLXRlc3Qtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQZXItd29ya2VyIGludGVncmF0aW9uLXRlc3Qgc2V0dXAgZW5kcG9pbnQ6IG1ha2VzIGV2ZXJ5IGxpYnJhcnkgaGVscGVyIHJlYWNoYWJsZSBhcyBgbGliLjxoZWxwZXI+YCBpbnNpZGVcbiAqIGFuIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZS5cbiAqXG4gKiBBZGQgaXQgdG8gdGhlIGBzZXR1cEZpbGVzYCBvZiBlYWNoIGludGVncmF0aW9uLXRlc3QgcHJvamVjdCwgYWZ0ZXIgYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgJ3Mgb3duXG4gKiBzZXR1cDpcbiAqXG4gKiBgYGB0c1xuICogc2V0dXBGaWxlczogW1xuICogICAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnLFxuICogICAnb2JzaWRpYW4tZGV2LXV0aWxzL2ludGVncmF0aW9uLXRlc3Qtc2V0dXAnXG4gKiBdXG4gKiBgYGBcbiAqXG4gKiBJbXBvcnRpbmcgdGhpcyBtb2R1bGUgcmVnaXN0ZXJzIGEgcmVuZGVyZXItc2lkZSByZXNvbHZlciB3aG9zZSByZXN1bHQgdGhlIGhhcm5lc3MgbWVyZ2VzIGludG8gdGhlIGBsaWJgXG4gKiBhcmd1bWVudCBvZiBldmVyeSBgZXZhbEluT2JzaWRpYW5gIGNhbGxiYWNrLiBUd28gbW9yZSBwaWVjZXMgYXJlIG5lZWRlZCBmb3IgYGxpYi48aGVscGVyPmAgdG8gd29yazpcbiAqXG4gKiAtIFRoZSAqKmhhcm5lc3MgcGx1Z2luKiogbXVzdCBiZSBsb2FkZWQgaW4gdGhlIHRlc3QgdmF1bHQsIGJlY2F1c2UgaXQgaXMgd2hhdCBwdWJsaXNoZXMgdGhlIGxpYnJhcnkgb25cbiAqICAgYHdpbmRvdy5fX29ic2lkaWFuRGV2VXRpbHNNb2R1bGVgLiBTZWVkIGFuZCBlbmFibGUgaXQgdmlhXG4gKiAgIGBvYnNpZGlhbi1kZXYtdXRpbHMvaW50ZWdyYXRpb24tdGVzdC12aXRlc3QtZ2xvYmFsLXNldHVwYCAob3IsIHdoZW4gY29tcG9zaW5nIHdpdGggeW91ciBvd24gdmF1bHRcbiAqICAgZml4dHVyZXMsIHtAbGluayBnZXRJbnRlZ3JhdGlvblRlc3RQbHVnaW5Qb3B1bGF0ZX0gK1xuICogICBgY3JlYXRlU2V0dXAoeyBlbmFibGVDb21tdW5pdHlQbHVnaW5zOiBbT0JTSURJQU5fREVWX1VUSUxTX0lOVEVHUkFUSU9OX1RFU1RfUExVR0lOX0lEXSB9KWApLlxuICogLSBUaGUgKip0eXBlcyoqIG11c3QgYmUgYWN0aXZhdGVkLCBvciBgbGliLjxoZWxwZXI+YCB3aWxsIG5vdCBjb21waWxlLiBQdXRcbiAqICAgYC8vLyA8cmVmZXJlbmNlIHR5cGVzPVwib2JzaWRpYW4tZGV2LXV0aWxzL0B0eXBlcy9vYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nXCIgLz5gIGluIGEgYC5kLnRzYCB5b3VyXG4gKiAgIGB0c2NvbmZpZy5qc29uYCBhbHJlYWR5IGluY2x1ZGVzLiBBIGBjb21waWxlck9wdGlvbnMudHlwZXNgIGVudHJ5IGRvZXMgTk9UIHdvcmsgZm9yIHRoaXMuXG4gKlxuICogUmVnaXN0cmF0aW9uIGlzIGlkZW1wb3RlbnQgKHRoZSBoYXJuZXNzIGRlZHVwZXMgcmVzb2x2ZXJzIGJ5IHNvdXJjZSB0ZXh0KSwgc28gaW1wb3J0aW5nIHRoaXMgbW9kdWxlIGZyb21cbiAqIG1vcmUgdGhhbiBvbmUgc2V0dXAgZmlsZSBpcyBzYWZlLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGluIHNldHVwLWZpbGUgZ2x1ZTsgZXhlcmNpc2VkIGVuZC10by1lbmQgYnkgdGhlIE9ic2lkaWFuIGludGVncmF0aW9uIHN1aXRlcy4gKi9cbmltcG9ydCB7IHJlZ2lzdGVySW50ZWdyYXRpb25UZXN0TGliUmVzb2x2ZXIgfSBmcm9tICcuL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4udHMnO1xuXG5yZWdpc3RlckludGVncmF0aW9uVGVzdExpYlJlc29sdmVyKCk7XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQ0EsU0FBUywwQ0FBMEM7QUFFbkQsbUNBQW1DOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,39 @@
1
+ /// <reference path="./library.d.mts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Turnkey Vitest `globalSetup` for a plugin's integration tests: does everything
6
+ * `obsidian-integration-testing`'s own global setup does (temp vault, install and enable the
7
+ * plugin-under-test), and additionally seeds and enables the `obsidian-dev-utils` integration-test harness
8
+ * plugin, so `lib.<helper>` works inside `evalInObsidian` closures.
9
+ *
10
+ * ```ts
11
+ * globalSetup: ['obsidian-dev-utils/integration-test-vitest-global-setup'],
12
+ * setupFiles: [
13
+ * 'obsidian-integration-testing/vitest-setup',
14
+ * 'obsidian-dev-utils/integration-test-setup'
15
+ * ]
16
+ * ```
17
+ *
18
+ * Replaces `obsidian-integration-testing/vitest-global-setup-plugin`; do not list both.
19
+ *
20
+ * If the project already needs its own `populate` (demo-vault fixtures, a large performance vault), skip
21
+ * this module and compose instead — merge {@link getIntegrationTestPluginPopulate} into that map and pass
22
+ * {@link OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID} to `enableCommunityPlugins`:
23
+ *
24
+ * ```ts
25
+ * export const { setup, teardown } = createSetup({
26
+ * enableCommunityPlugins: [OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID],
27
+ * populate: () => ({ ...myFixtures(), ...getIntegrationTestPluginPopulate() })
28
+ * });
29
+ * ```
30
+ */
31
+ /**
32
+ * Vitest global setup: creates the temp vault, installs and enables the plugin-under-test, then seeds and
33
+ * enables the `obsidian-dev-utils` integration-test harness plugin alongside it.
34
+ */
35
+ export declare const setup: (this: void, project: import("vitest/node").TestProject) => Promise<void>;
36
+ /**
37
+ * Vitest global teardown: removes the temp vault and disposes the transport.
38
+ */
39
+ export declare const teardown: (this: void) => Promise<void>;
@@ -0,0 +1,39 @@
1
+ /*
2
+ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
+ if you want to view the source, please visit the github repository of this plugin
4
+ */
5
+
6
+ (function initEsm() {
7
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
8
+ if (globalThis.process) {
9
+ return;
10
+ }
11
+
12
+ const browserProcess = {
13
+ browser: true,
14
+ cwd() {
15
+ return '/';
16
+ },
17
+ env: {},
18
+ platform: 'android'
19
+ };
20
+ // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
21
+ globalThis.process = browserProcess;
22
+ })();
23
+
24
+ import { createSetup } from "obsidian-integration-testing/vitest-global-setup-plugin";
25
+ import {
26
+ getIntegrationTestPluginPopulate,
27
+ OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID
28
+ } from "./script-utils/test-runners/integration-test-plugin.mjs";
29
+ const globalSetup = createSetup({
30
+ enableCommunityPlugins: [OBSIDIAN_DEV_UTILS_INTEGRATION_TEST_PLUGIN_ID],
31
+ populate: getIntegrationTestPluginPopulate
32
+ });
33
+ const setup = globalSetup.setup;
34
+ const teardown = globalSetup.teardown;
35
+ export {
36
+ setup,
37
+ teardown
38
+ };
39
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLXRlc3Qtdml0ZXN0LWdsb2JhbC1zZXR1cC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFR1cm5rZXkgVml0ZXN0IGBnbG9iYWxTZXR1cGAgZm9yIGEgcGx1Z2luJ3MgaW50ZWdyYXRpb24gdGVzdHM6IGRvZXMgZXZlcnl0aGluZ1xuICogYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgJ3Mgb3duIGdsb2JhbCBzZXR1cCBkb2VzICh0ZW1wIHZhdWx0LCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlXG4gKiBwbHVnaW4tdW5kZXItdGVzdCksIGFuZCBhZGRpdGlvbmFsbHkgc2VlZHMgYW5kIGVuYWJsZXMgdGhlIGBvYnNpZGlhbi1kZXYtdXRpbHNgIGludGVncmF0aW9uLXRlc3QgaGFybmVzc1xuICogcGx1Z2luLCBzbyBgbGliLjxoZWxwZXI+YCB3b3JrcyBpbnNpZGUgYGV2YWxJbk9ic2lkaWFuYCBjbG9zdXJlcy5cbiAqXG4gKiBgYGB0c1xuICogZ2xvYmFsU2V0dXA6IFsnb2JzaWRpYW4tZGV2LXV0aWxzL2ludGVncmF0aW9uLXRlc3Qtdml0ZXN0LWdsb2JhbC1zZXR1cCddLFxuICogc2V0dXBGaWxlczogW1xuICogICAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3Qtc2V0dXAnLFxuICogICAnb2JzaWRpYW4tZGV2LXV0aWxzL2ludGVncmF0aW9uLXRlc3Qtc2V0dXAnXG4gKiBdXG4gKiBgYGBcbiAqXG4gKiBSZXBsYWNlcyBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZy92aXRlc3QtZ2xvYmFsLXNldHVwLXBsdWdpbmA7IGRvIG5vdCBsaXN0IGJvdGguXG4gKlxuICogSWYgdGhlIHByb2plY3QgYWxyZWFkeSBuZWVkcyBpdHMgb3duIGBwb3B1bGF0ZWAgKGRlbW8tdmF1bHQgZml4dHVyZXMsIGEgbGFyZ2UgcGVyZm9ybWFuY2UgdmF1bHQpLCBza2lwXG4gKiB0aGlzIG1vZHVsZSBhbmQgY29tcG9zZSBpbnN0ZWFkIFx1MjAxNCBtZXJnZSB7QGxpbmsgZ2V0SW50ZWdyYXRpb25UZXN0UGx1Z2luUG9wdWxhdGV9IGludG8gdGhhdCBtYXAgYW5kIHBhc3NcbiAqIHtAbGluayBPQlNJRElBTl9ERVZfVVRJTFNfSU5URUdSQVRJT05fVEVTVF9QTFVHSU5fSUR9IHRvIGBlbmFibGVDb21tdW5pdHlQbHVnaW5zYDpcbiAqXG4gKiBgYGB0c1xuICogZXhwb3J0IGNvbnN0IHsgc2V0dXAsIHRlYXJkb3duIH0gPSBjcmVhdGVTZXR1cCh7XG4gKiAgIGVuYWJsZUNvbW11bml0eVBsdWdpbnM6IFtPQlNJRElBTl9ERVZfVVRJTFNfSU5URUdSQVRJT05fVEVTVF9QTFVHSU5fSURdLFxuICogICBwb3B1bGF0ZTogKCkgPT4gKHsgLi4ubXlGaXh0dXJlcygpLCAuLi5nZXRJbnRlZ3JhdGlvblRlc3RQbHVnaW5Qb3B1bGF0ZSgpIH0pXG4gKiB9KTtcbiAqIGBgYFxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBUaGluIGdsb2JhbC1zZXR1cCBnbHVlOyBleGVyY2lzZWQgZW5kLXRvLWVuZCBieSB0aGUgT2JzaWRpYW4gaW50ZWdyYXRpb24gc3VpdGVzLiAqL1xuaW1wb3J0IHsgY3JlYXRlU2V0dXAgfSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nL3ZpdGVzdC1nbG9iYWwtc2V0dXAtcGx1Z2luJztcblxuaW1wb3J0IHtcbiAgZ2V0SW50ZWdyYXRpb25UZXN0UGx1Z2luUG9wdWxhdGUsXG4gIE9CU0lESUFOX0RFVl9VVElMU19JTlRFR1JBVElPTl9URVNUX1BMVUdJTl9JRFxufSBmcm9tICcuL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4udHMnO1xuXG5jb25zdCBnbG9iYWxTZXR1cCA9IGNyZWF0ZVNldHVwKHtcbiAgZW5hYmxlQ29tbXVuaXR5UGx1Z2luczogW09CU0lESUFOX0RFVl9VVElMU19JTlRFR1JBVElPTl9URVNUX1BMVUdJTl9JRF0sXG4gIHBvcHVsYXRlOiBnZXRJbnRlZ3JhdGlvblRlc3RQbHVnaW5Qb3B1bGF0ZVxufSk7XG5cbi8qKlxuICogVml0ZXN0IGdsb2JhbCBzZXR1cDogY3JlYXRlcyB0aGUgdGVtcCB2YXVsdCwgaW5zdGFsbHMgYW5kIGVuYWJsZXMgdGhlIHBsdWdpbi11bmRlci10ZXN0LCB0aGVuIHNlZWRzIGFuZFxuICogZW5hYmxlcyB0aGUgYG9ic2lkaWFuLWRldi11dGlsc2AgaW50ZWdyYXRpb24tdGVzdCBoYXJuZXNzIHBsdWdpbiBhbG9uZ3NpZGUgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGdsb2JhbFNldHVwLnNldHVwO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgdGVhcmRvd246IHJlbW92ZXMgdGhlIHRlbXAgdmF1bHQgYW5kIGRpc3Bvc2VzIHRoZSB0cmFuc3BvcnQuXG4gKi9cbmV4cG9ydCBjb25zdCB0ZWFyZG93biA9IGdsb2JhbFNldHVwLnRlYXJkb3duO1xuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBLFNBQVMsbUJBQW1CO0FBRTVCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsTUFBTSxjQUFjLFlBQVk7QUFBQSxFQUM5Qix3QkFBd0IsQ0FBQyw2Q0FBNkM7QUFBQSxFQUN0RSxVQUFVO0FBQ1osQ0FBQztBQU1NLE1BQU0sUUFBUSxZQUFZO0FBSzFCLE1BQU0sV0FBVyxZQUFZOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -42,6 +42,8 @@ export declare enum ObsidianDevUtilsRepoPaths {
42
42
  Dist = "dist",
43
43
  /** A path to the built `demo-vault-helper` plugin within the {@link Dist} folder, injected into demo vaults at release time. */
44
44
  DistDemoVaultHelper = "dist/demo-vault-helper",
45
+ /** A path to the built integration-test harness plugin within the {@link Dist} folder, seeded into a consumer's integration-test vault so its `evalInObsidian` closures reach the library via `lib`. */
46
+ DistIntegrationTestPlugin = "dist/integration-test-plugin",
45
47
  /** A path to the `lib` folder within the {@link Dist} folder. */
46
48
  DistLib = "dist/lib",
47
49
  /** A path to the `templates` folder within the {@link Dist} folder, holding the consumer-facing templates. */
@@ -38,6 +38,7 @@ var ObsidianDevUtilsRepoPaths = /* @__PURE__ */ ((ObsidianDevUtilsRepoPaths2) =>
38
38
  ObsidianDevUtilsRepoPaths2["DctsExtension"] = ".d.cts";
39
39
  ObsidianDevUtilsRepoPaths2["Dist"] = "dist";
40
40
  ObsidianDevUtilsRepoPaths2["DistDemoVaultHelper"] = "dist/demo-vault-helper";
41
+ ObsidianDevUtilsRepoPaths2["DistIntegrationTestPlugin"] = "dist/integration-test-plugin";
41
42
  ObsidianDevUtilsRepoPaths2["DistLib"] = "dist/lib";
42
43
  ObsidianDevUtilsRepoPaths2["DistTemplates"] = "dist/templates";
43
44
  ObsidianDevUtilsRepoPaths2["DjsExtension"] = ".d.js";
@@ -81,4 +82,4 @@ var ObsidianDevUtilsRepoPaths = /* @__PURE__ */ ((ObsidianDevUtilsRepoPaths2) =>
81
82
  export {
82
83
  ObsidianDevUtilsRepoPaths
83
84
  };
84
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYW4gZW51bWVyYXRpb24gb2YgY29tbW9uIGZpbGUgcGF0aHMgYW5kIHBhdHRlcm5zIHVzZWQgaW4gdGhlIE9ic2lkaWFuIGRldmVsb3BtZW50IHV0aWxpdGllcyByZXBvc2l0b3J5LlxuICogVGhlc2UgcGF0aHMgYXJlIHVzZWQgdGhyb3VnaG91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgb3RoZXIgdXRpbGl0aWVzLCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhbmQgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2RcbiAqIG9mIGVycm9ycyBkdWUgdG8gaGFyZGNvZGVkIHN0cmluZ3MuXG4gKi9cblxuLyoqXG4gKiBFbnVtZXJhdGlvbiBvZiBjb21tb24gZmlsZSBwYXRocyBhbmQgcGF0dGVybnMgdXNlZCBpbiB0aGUgT2JzaWRpYW4gZGV2ZWxvcG1lbnQgdXRpbGl0aWVzIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBlbnVtIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMge1xuICAvKiogQW55IGZpbGUgb3IgZm9sZGVyLiAqL1xuICBBbnkgPSAnKicsXG5cbiAgLyoqIENvbW1vbkpTIGZpbGUuICovXG4gIEFueUNqcyA9ICcqLmNqcycsXG5cbiAgLyoqIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgQW55RGN0cyA9ICcqLmQuY3RzJyxcblxuICAvKiogRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgQW55RG10cyA9ICcqLmQubXRzJyxcblxuICAvKiogVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlLiAqL1xuICBBbnlEdHMgPSAnKi5kLnRzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZS4gKi9cbiAgQW55TWpzID0gJyoubWpzJyxcblxuICAvKiogQW55IHBhdGggcmVjdXJzaXZlbHkuICovXG4gIEFueVBhdGggPSAnKionLFxuXG4gIC8qKiBBbnkgVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBBbnlUcyA9ICcqLnRzJyxcblxuICAvKiogQXN0cm8gY29uZmlndXJhdGlvbiBmaWxlIChkb2N1bWVudGF0aW9uIHNpdGUpIGF0IHRoZSByZXBvIHJvb3QuICovXG4gIEFzdHJvQ29uZmlnVHMgPSAnYXN0cm8uY29uZmlnLnRzJyxcblxuICAvKiogQ29tbW9uSlMgZm9sZGVyLiAqL1xuICBDanMgPSAnY2pzJyxcblxuICAvKiogQ29tbW9uSlMgZmlsZSBleHRlbnNpb24uICovXG4gIENqc0V4dGVuc2lvbiA9ICcuY2pzJyxcblxuICAvKiogQ3VycmVudCBmb2xkZXIuICovXG4gIEN1cnJlbnRGb2xkZXIgPSAnLicsXG5cbiAgLyoqIERhdGF2aWV3IHR5cGVzLiAqL1xuICBEYXRhdmlld1R5cGVzID0gJ3NyYy9vYnNpZGlhbi9AdHlwZXMvZGF0YXZpZXcvKionLFxuXG4gIC8qKiBDb21tb25KUyBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBEY3RzRXh0ZW5zaW9uID0gJy5kLmN0cycsXG5cbiAgLyoqIERpc3RyaWJ1dGlvbiBmb2xkZXIuICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqIEEgcGF0aCB0byB0aGUgYnVpbHQgYGRlbW8tdmF1bHQtaGVscGVyYCBwbHVnaW4gd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLCBpbmplY3RlZCBpbnRvIGRlbW8gdmF1bHRzIGF0IHJlbGVhc2UgdGltZS4gKi9cbiAgRGlzdERlbW9WYXVsdEhlbHBlciA9ICdkaXN0L2RlbW8tdmF1bHQtaGVscGVyJyxcblxuICAvKiogQSBwYXRoIHRvIHRoZSBgbGliYCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLiAqL1xuICBEaXN0TGliID0gJ2Rpc3QvbGliJyxcblxuICAvKiogQSBwYXRoIHRvIHRoZSBgdGVtcGxhdGVzYCBmb2xkZXIgd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLCBob2xkaW5nIHRoZSBjb25zdW1lci1mYWNpbmcgdGVtcGxhdGVzLiAqL1xuICBEaXN0VGVtcGxhdGVzID0gJ2Rpc3QvdGVtcGxhdGVzJyxcblxuICAvKiogVHJhbnNwaWxlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBEanNFeHRlbnNpb24gPSAnLmQuanMnLFxuXG4gIC8qKiBFU00gVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgRG10c0V4dGVuc2lvbiA9ICcuZC5tdHMnLFxuXG4gIC8qKiBEb2N1bWVudGF0aW9uIHNpdGUgZm9sZGVyIChBc3RybyArIFN0YXJsaWdodCBBUEktZG9jcyBzdWItcHJvamVjdCkuICovXG4gIERvY3MgPSAnZG9jcycsXG5cbiAgLyoqIEJ1aWxkIG91dHB1dCBmb2xkZXIgb2YgdGhlIGRvY3VtZW50YXRpb24gc2l0ZS4gKi9cbiAgRG9jc0Rpc3QgPSAnZG9jcy9kaXN0JyxcblxuICAvKiogRHByaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRHByaW50SnNvbiA9ICdkcHJpbnQuanNvbicsXG5cbiAgLyoqIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBleHRlbnNpb24uICovXG4gIER0c0V4dGVuc2lvbiA9ICcuZC50cycsXG5cbiAgLyoqIEVTTSBUeXBlU2NyaXB0IEVTTGludCBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIEVzbGludENvbmZpZ010cyA9ICdlc2xpbnQuY29uZmlnLm10cycsXG5cbiAgLyoqIEVTTSBKYXZhU2NyaXB0IGZvbGRlci4gKi9cbiAgRXNtID0gJ2VzbScsXG5cbiAgLyoqIEdlbmVyYXRlZC1kdXJpbmctYnVpbGQgQ29tbW9uSlMgZmlsZS4gKi9cbiAgR2VuZXJhdGVkRHVyaW5nQnVpbGRDanMgPSAnZ2VuZXJhdGVkLWR1cmluZy1idWlsZC5janMnLFxuXG4gIC8qKiBHZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkIEVTTSBKYXZhU2NyaXB0IGZpbGUuICovXG4gIEdlbmVyYXRlZER1cmluZ0J1aWxkTWpzID0gJ2dlbmVyYXRlZC1kdXJpbmctYnVpbGQubWpzJyxcblxuICAvKiogQ29tbW9uSlMgSmF2YVNjcmlwdCBpbmRleCBmaWxlLiAqL1xuICBJbmRleENqcyA9ICdpbmRleC5janMnLFxuXG4gIC8qKiBDb21tb25KUyBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgaW5kZXggZmlsZS4gKi9cbiAgSW5kZXhEY3RzID0gJ2luZGV4LmQuY3RzJyxcblxuICAvKiogRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBpbmRleCBmaWxlLiAqL1xuICBJbmRleERtdHMgPSAnaW5kZXguZC5tdHMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBpbmRleCBmaWxlLiAqL1xuICBJbmRleE1qcyA9ICdpbmRleC5tanMnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGluZGV4IGZpbGUuICovXG4gIEluZGV4VHMgPSAnaW5kZXgudHMnLFxuXG4gIC8qKiBKYXZhU2NyaXB0IGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBKc0V4dGVuc2lvbiA9ICcuanMnLFxuXG4gIC8qKiBFU00gTWFya2Rvd25saW50IENMSTIgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBNYXJrZG93bmxpbnRDbGkyQ29uZmlnTWpzID0gJy5tYXJrZG93bmxpbnQtY2xpMi5tanMnLFxuXG4gIC8qKiBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIHNjaGVtYSBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludFR5cGVzTWFya2Rvd25saW50Q2xpMkNvbmZpZ1NjaGVtYUR0cyA9ICdzcmMvc2NyaXB0LXV0aWxzL2xpbnRlcnMvbWFya2Rvd25saW50LXR5cGVzL0B0eXBlcy9tYXJrZG93bmxpbnQtY2xpMi1jb25maWctc2NoZW1hLmQudHMnLFxuXG4gIC8qKiBHZW5lcmF0ZWQgZmxhdCByZS1leHBvcnQgYmFycmVsIGZpbGUuICovXG4gIE1lcmdlZFRzID0gJ19fbWVyZ2VkLnRzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZSBleHRlbnNpb24uICovXG4gIE1qc0V4dGVuc2lvbiA9ICcubWpzJyxcblxuICAvKiogTm9kZSBtb2R1bGVzIGZvbGRlci4gKi9cbiAgTm9kZU1vZHVsZXMgPSAnbm9kZV9tb2R1bGVzJyxcblxuICAvKiogUGFja2FnZSBKU09OIGZpbGUuICovXG4gIFBhY2thZ2VKc29uID0gJ3BhY2thZ2UuanNvbicsXG5cbiAgLyoqIEZvbGRlciBob2xkaW5nIGhhbmQtd3JpdHRlbiBwYXRjaGVkIGNvcGllcyBvZiB0aGlyZC1wYXJ0eSBwYWNrYWdlcy4gKi9cbiAgUGF0Y2hlcyA9ICdwYXRjaGVzJyxcblxuICAvKiogUm9vdCBmb2xkZXIuICovXG4gIFJvb3RGb2xkZXIgPSAnLycsXG5cbiAgLyoqIFNjcmlwdHMgZm9sZGVyLiAqL1xuICBTY3JpcHRzID0gJ3NjcmlwdHMnLFxuXG4gIC8qKiBTY3JpcHRVdGlscyBmb2xkZXIuICovXG4gIFNjcmlwdFV0aWxzID0gJ3NjcmlwdC11dGlscycsXG5cbiAgLyoqIFNvdXJjZSBmb2xkZXIuICovXG4gIFNyYyA9ICdzcmMnLFxuXG4gIC8qKiBTdHlsZXMgZm9sZGVyLiAqL1xuICBTdHlsZXMgPSAnc3R5bGVzJyxcblxuICAvKiogU3R5bGVzIENTUyBmaWxlLiAqL1xuICBTdHlsZXNDc3MgPSAnc3R5bGVzLmNzcycsXG5cbiAgLyoqIFRlbXBsYXRlcyBmb2xkZXIuICovXG4gIFRlbXBsYXRlcyA9ICd0ZW1wbGF0ZXMnLFxuXG4gIC8qKiBUZXN0IGhlbHBlcnMgZm9sZGVyLiAqL1xuICBUZXN0SGVscGVycyA9ICd0ZXN0LWhlbHBlcnMnLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgVHNDb25maWdKc29uID0gJ3RzY29uZmlnLmpzb24nLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHZhbGlkYXRlcyB0aGUgZ2VuZXJhdGVkIENvbW1vbkpTIGRlY2xhcmF0aW9ucy4gKi9cbiAgVHNDb25maWdWYWxpZGF0ZURlY2xhcmF0aW9uc0Nqc0pzb24gPSAndHNjb25maWcudmFsaWRhdGUtZGVjbGFyYXRpb25zLWNqcy5qc29uJyxcblxuICAvKiogVHlwZVNjcmlwdCBjb25maWd1cmF0aW9uIGZpbGUgdGhhdCB2YWxpZGF0ZXMgdGhlIGdlbmVyYXRlZCBFU00gZGVjbGFyYXRpb25zLiAqL1xuICBUc0NvbmZpZ1ZhbGlkYXRlRGVjbGFyYXRpb25zSnNvbiA9ICd0c2NvbmZpZy52YWxpZGF0ZS1kZWNsYXJhdGlvbnMuanNvbicsXG5cbiAgLyoqIFR5cGVTY3JpcHQgZmlsZSBleHRlbnNpb24uICovXG4gIFRzRXh0ZW5zaW9uID0gJy50cycsXG5cbiAgLyoqIFR5cGVzIGZvbGRlci4gKi9cbiAgVHlwZXMgPSAnQHR5cGVzJ1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXTyxJQUFLLDRCQUFMLGtCQUFLQSwrQkFBTDtBQUVMLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsYUFBVTtBQUdWLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsWUFBUztBQUdULEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxXQUFRO0FBR1IsRUFBQUEsMkJBQUEsbUJBQWdCO0FBR2hCLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSxrQkFBZTtBQUdmLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEsMkJBQUEsbUJBQWdCO0FBR2hCLEVBQUFBLDJCQUFBLFVBQU87QUFHUCxFQUFBQSwyQkFBQSx5QkFBc0I7QUFHdEIsRUFBQUEsMkJBQUEsYUFBVTtBQUdWLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxrQkFBZTtBQUdmLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxVQUFPO0FBR1AsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGdCQUFhO0FBR2IsRUFBQUEsMkJBQUEsa0JBQWU7QUFHZixFQUFBQSwyQkFBQSxxQkFBa0I7QUFHbEIsRUFBQUEsMkJBQUEsU0FBTTtBQUdOLEVBQUFBLDJCQUFBLDZCQUEwQjtBQUcxQixFQUFBQSwyQkFBQSw2QkFBMEI7QUFHMUIsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGVBQVk7QUFHWixFQUFBQSwyQkFBQSxlQUFZO0FBR1osRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLCtCQUE0QjtBQUc1QixFQUFBQSwyQkFBQSxzREFBbUQ7QUFHbkQsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEsaUJBQWM7QUFHZCxFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxnQkFBYTtBQUdiLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsZUFBWTtBQUdaLEVBQUFBLDJCQUFBLGVBQVk7QUFHWixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEseUNBQXNDO0FBR3RDLEVBQUFBLDJCQUFBLHNDQUFtQztBQUduQyxFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLFdBQVE7QUFqS0UsU0FBQUE7QUFBQSxHQUFBOyIsCiAgIm5hbWVzIjogWyJPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIl0KfQo=
85
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9vYnNpZGlhbi1kZXYtdXRpbHMtcmVwby1wYXRocy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYW4gZW51bWVyYXRpb24gb2YgY29tbW9uIGZpbGUgcGF0aHMgYW5kIHBhdHRlcm5zIHVzZWQgaW4gdGhlIE9ic2lkaWFuIGRldmVsb3BtZW50IHV0aWxpdGllcyByZXBvc2l0b3J5LlxuICogVGhlc2UgcGF0aHMgYXJlIHVzZWQgdGhyb3VnaG91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgb3RoZXIgdXRpbGl0aWVzLCBlbnN1cmluZyBjb25zaXN0ZW5jeSBhbmQgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2RcbiAqIG9mIGVycm9ycyBkdWUgdG8gaGFyZGNvZGVkIHN0cmluZ3MuXG4gKi9cblxuLyoqXG4gKiBFbnVtZXJhdGlvbiBvZiBjb21tb24gZmlsZSBwYXRocyBhbmQgcGF0dGVybnMgdXNlZCBpbiB0aGUgT2JzaWRpYW4gZGV2ZWxvcG1lbnQgdXRpbGl0aWVzIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBlbnVtIE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMge1xuICAvKiogQW55IGZpbGUgb3IgZm9sZGVyLiAqL1xuICBBbnkgPSAnKicsXG5cbiAgLyoqIENvbW1vbkpTIGZpbGUuICovXG4gIEFueUNqcyA9ICcqLmNqcycsXG5cbiAgLyoqIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgQW55RGN0cyA9ICcqLmQuY3RzJyxcblxuICAvKiogRVNNIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgQW55RG10cyA9ICcqLmQubXRzJyxcblxuICAvKiogVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlLiAqL1xuICBBbnlEdHMgPSAnKi5kLnRzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZmlsZS4gKi9cbiAgQW55TWpzID0gJyoubWpzJyxcblxuICAvKiogQW55IHBhdGggcmVjdXJzaXZlbHkuICovXG4gIEFueVBhdGggPSAnKionLFxuXG4gIC8qKiBBbnkgVHlwZVNjcmlwdCBmaWxlLiAqL1xuICBBbnlUcyA9ICcqLnRzJyxcblxuICAvKiogQXN0cm8gY29uZmlndXJhdGlvbiBmaWxlIChkb2N1bWVudGF0aW9uIHNpdGUpIGF0IHRoZSByZXBvIHJvb3QuICovXG4gIEFzdHJvQ29uZmlnVHMgPSAnYXN0cm8uY29uZmlnLnRzJyxcblxuICAvKiogQ29tbW9uSlMgZm9sZGVyLiAqL1xuICBDanMgPSAnY2pzJyxcblxuICAvKiogQ29tbW9uSlMgZmlsZSBleHRlbnNpb24uICovXG4gIENqc0V4dGVuc2lvbiA9ICcuY2pzJyxcblxuICAvKiogQ3VycmVudCBmb2xkZXIuICovXG4gIEN1cnJlbnRGb2xkZXIgPSAnLicsXG5cbiAgLyoqIERhdGF2aWV3IHR5cGVzLiAqL1xuICBEYXRhdmlld1R5cGVzID0gJ3NyYy9vYnNpZGlhbi9AdHlwZXMvZGF0YXZpZXcvKionLFxuXG4gIC8qKiBDb21tb25KUyBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBEY3RzRXh0ZW5zaW9uID0gJy5kLmN0cycsXG5cbiAgLyoqIERpc3RyaWJ1dGlvbiBmb2xkZXIuICovXG4gIERpc3QgPSAnZGlzdCcsXG5cbiAgLyoqIEEgcGF0aCB0byB0aGUgYnVpbHQgYGRlbW8tdmF1bHQtaGVscGVyYCBwbHVnaW4gd2l0aGluIHRoZSB7QGxpbmsgRGlzdH0gZm9sZGVyLCBpbmplY3RlZCBpbnRvIGRlbW8gdmF1bHRzIGF0IHJlbGVhc2UgdGltZS4gKi9cbiAgRGlzdERlbW9WYXVsdEhlbHBlciA9ICdkaXN0L2RlbW8tdmF1bHQtaGVscGVyJyxcblxuICAvKiogQSBwYXRoIHRvIHRoZSBidWlsdCBpbnRlZ3JhdGlvbi10ZXN0IGhhcm5lc3MgcGx1Z2luIHdpdGhpbiB0aGUge0BsaW5rIERpc3R9IGZvbGRlciwgc2VlZGVkIGludG8gYSBjb25zdW1lcidzIGludGVncmF0aW9uLXRlc3QgdmF1bHQgc28gaXRzIGBldmFsSW5PYnNpZGlhbmAgY2xvc3VyZXMgcmVhY2ggdGhlIGxpYnJhcnkgdmlhIGBsaWJgLiAqL1xuICBEaXN0SW50ZWdyYXRpb25UZXN0UGx1Z2luID0gJ2Rpc3QvaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4nLFxuXG4gIC8qKiBBIHBhdGggdG8gdGhlIGBsaWJgIGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIuICovXG4gIERpc3RMaWIgPSAnZGlzdC9saWInLFxuXG4gIC8qKiBBIHBhdGggdG8gdGhlIGB0ZW1wbGF0ZXNgIGZvbGRlciB3aXRoaW4gdGhlIHtAbGluayBEaXN0fSBmb2xkZXIsIGhvbGRpbmcgdGhlIGNvbnN1bWVyLWZhY2luZyB0ZW1wbGF0ZXMuICovXG4gIERpc3RUZW1wbGF0ZXMgPSAnZGlzdC90ZW1wbGF0ZXMnLFxuXG4gIC8qKiBUcmFuc3BpbGVkIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBleHRlbnNpb24uICovXG4gIERqc0V4dGVuc2lvbiA9ICcuZC5qcycsXG5cbiAgLyoqIEVTTSBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGZpbGUgZXh0ZW5zaW9uLiAqL1xuICBEbXRzRXh0ZW5zaW9uID0gJy5kLm10cycsXG5cbiAgLyoqIERvY3VtZW50YXRpb24gc2l0ZSBmb2xkZXIgKEFzdHJvICsgU3RhcmxpZ2h0IEFQSS1kb2NzIHN1Yi1wcm9qZWN0KS4gKi9cbiAgRG9jcyA9ICdkb2NzJyxcblxuICAvKiogQnVpbGQgb3V0cHV0IGZvbGRlciBvZiB0aGUgZG9jdW1lbnRhdGlvbiBzaXRlLiAqL1xuICBEb2NzRGlzdCA9ICdkb2NzL2Rpc3QnLFxuXG4gIC8qKiBEcHJpbnQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBEcHJpbnRKc29uID0gJ2RwcmludC5qc29uJyxcblxuICAvKiogVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgRHRzRXh0ZW5zaW9uID0gJy5kLnRzJyxcblxuICAvKiogRVNNIFR5cGVTY3JpcHQgRVNMaW50IGNvbmZpZ3VyYXRpb24gZmlsZS4gKi9cbiAgRXNsaW50Q29uZmlnTXRzID0gJ2VzbGludC5jb25maWcubXRzJyxcblxuICAvKiogRVNNIEphdmFTY3JpcHQgZm9sZGVyLiAqL1xuICBFc20gPSAnZXNtJyxcblxuICAvKiogR2VuZXJhdGVkLWR1cmluZy1idWlsZCBDb21tb25KUyBmaWxlLiAqL1xuICBHZW5lcmF0ZWREdXJpbmdCdWlsZENqcyA9ICdnZW5lcmF0ZWQtZHVyaW5nLWJ1aWxkLmNqcycsXG5cbiAgLyoqIEdlbmVyYXRlZC1kdXJpbmctYnVpbGQgRVNNIEphdmFTY3JpcHQgZmlsZS4gKi9cbiAgR2VuZXJhdGVkRHVyaW5nQnVpbGRNanMgPSAnZ2VuZXJhdGVkLWR1cmluZy1idWlsZC5tanMnLFxuXG4gIC8qKiBDb21tb25KUyBKYXZhU2NyaXB0IGluZGV4IGZpbGUuICovXG4gIEluZGV4Q2pzID0gJ2luZGV4LmNqcycsXG5cbiAgLyoqIENvbW1vbkpTIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZSBpbmRleCBmaWxlLiAqL1xuICBJbmRleERjdHMgPSAnaW5kZXguZC5jdHMnLFxuXG4gIC8qKiBFU00gVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBmaWxlIGluZGV4IGZpbGUuICovXG4gIEluZGV4RG10cyA9ICdpbmRleC5kLm10cycsXG5cbiAgLyoqIEVTTSBKYXZhU2NyaXB0IGluZGV4IGZpbGUuICovXG4gIEluZGV4TWpzID0gJ2luZGV4Lm1qcycsXG5cbiAgLyoqIFR5cGVTY3JpcHQgaW5kZXggZmlsZS4gKi9cbiAgSW5kZXhUcyA9ICdpbmRleC50cycsXG5cbiAgLyoqIEphdmFTY3JpcHQgZmlsZSBleHRlbnNpb24uICovXG4gIEpzRXh0ZW5zaW9uID0gJy5qcycsXG5cbiAgLyoqIEVTTSBNYXJrZG93bmxpbnQgQ0xJMiBjb25maWd1cmF0aW9uIGZpbGUuICovXG4gIE1hcmtkb3dubGludENsaTJDb25maWdNanMgPSAnLm1hcmtkb3dubGludC1jbGkyLm1qcycsXG5cbiAgLyoqIE1hcmtkb3dubGludCBDTEkyIGNvbmZpZ3VyYXRpb24gc2NoZW1hIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZmlsZS4gKi9cbiAgTWFya2Rvd25saW50VHlwZXNNYXJrZG93bmxpbnRDbGkyQ29uZmlnU2NoZW1hRHRzID0gJ3NyYy9zY3JpcHQtdXRpbHMvbGludGVycy9tYXJrZG93bmxpbnQtdHlwZXMvQHR5cGVzL21hcmtkb3dubGludC1jbGkyLWNvbmZpZy1zY2hlbWEuZC50cycsXG5cbiAgLyoqIEdlbmVyYXRlZCBmbGF0IHJlLWV4cG9ydCBiYXJyZWwgZmlsZS4gKi9cbiAgTWVyZ2VkVHMgPSAnX19tZXJnZWQudHMnLFxuXG4gIC8qKiBFU00gSmF2YVNjcmlwdCBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgTWpzRXh0ZW5zaW9uID0gJy5tanMnLFxuXG4gIC8qKiBOb2RlIG1vZHVsZXMgZm9sZGVyLiAqL1xuICBOb2RlTW9kdWxlcyA9ICdub2RlX21vZHVsZXMnLFxuXG4gIC8qKiBQYWNrYWdlIEpTT04gZmlsZS4gKi9cbiAgUGFja2FnZUpzb24gPSAncGFja2FnZS5qc29uJyxcblxuICAvKiogRm9sZGVyIGhvbGRpbmcgaGFuZC13cml0dGVuIHBhdGNoZWQgY29waWVzIG9mIHRoaXJkLXBhcnR5IHBhY2thZ2VzLiAqL1xuICBQYXRjaGVzID0gJ3BhdGNoZXMnLFxuXG4gIC8qKiBSb290IGZvbGRlci4gKi9cbiAgUm9vdEZvbGRlciA9ICcvJyxcblxuICAvKiogU2NyaXB0cyBmb2xkZXIuICovXG4gIFNjcmlwdHMgPSAnc2NyaXB0cycsXG5cbiAgLyoqIFNjcmlwdFV0aWxzIGZvbGRlci4gKi9cbiAgU2NyaXB0VXRpbHMgPSAnc2NyaXB0LXV0aWxzJyxcblxuICAvKiogU291cmNlIGZvbGRlci4gKi9cbiAgU3JjID0gJ3NyYycsXG5cbiAgLyoqIFN0eWxlcyBmb2xkZXIuICovXG4gIFN0eWxlcyA9ICdzdHlsZXMnLFxuXG4gIC8qKiBTdHlsZXMgQ1NTIGZpbGUuICovXG4gIFN0eWxlc0NzcyA9ICdzdHlsZXMuY3NzJyxcblxuICAvKiogVGVtcGxhdGVzIGZvbGRlci4gKi9cbiAgVGVtcGxhdGVzID0gJ3RlbXBsYXRlcycsXG5cbiAgLyoqIFRlc3QgaGVscGVycyBmb2xkZXIuICovXG4gIFRlc3RIZWxwZXJzID0gJ3Rlc3QtaGVscGVycycsXG5cbiAgLyoqIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlLiAqL1xuICBUc0NvbmZpZ0pzb24gPSAndHNjb25maWcuanNvbicsXG5cbiAgLyoqIFR5cGVTY3JpcHQgY29uZmlndXJhdGlvbiBmaWxlIHRoYXQgdmFsaWRhdGVzIHRoZSBnZW5lcmF0ZWQgQ29tbW9uSlMgZGVjbGFyYXRpb25zLiAqL1xuICBUc0NvbmZpZ1ZhbGlkYXRlRGVjbGFyYXRpb25zQ2pzSnNvbiA9ICd0c2NvbmZpZy52YWxpZGF0ZS1kZWNsYXJhdGlvbnMtY2pzLmpzb24nLFxuXG4gIC8qKiBUeXBlU2NyaXB0IGNvbmZpZ3VyYXRpb24gZmlsZSB0aGF0IHZhbGlkYXRlcyB0aGUgZ2VuZXJhdGVkIEVTTSBkZWNsYXJhdGlvbnMuICovXG4gIFRzQ29uZmlnVmFsaWRhdGVEZWNsYXJhdGlvbnNKc29uID0gJ3RzY29uZmlnLnZhbGlkYXRlLWRlY2xhcmF0aW9ucy5qc29uJyxcblxuICAvKiogVHlwZVNjcmlwdCBmaWxlIGV4dGVuc2lvbi4gKi9cbiAgVHNFeHRlbnNpb24gPSAnLnRzJyxcblxuICAvKiogVHlwZXMgZm9sZGVyLiAqL1xuICBUeXBlcyA9ICdAdHlwZXMnXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdPLElBQUssNEJBQUwsa0JBQUtBLCtCQUFMO0FBRUwsRUFBQUEsMkJBQUEsU0FBTTtBQUdOLEVBQUFBLDJCQUFBLFlBQVM7QUFHVCxFQUFBQSwyQkFBQSxhQUFVO0FBR1YsRUFBQUEsMkJBQUEsYUFBVTtBQUdWLEVBQUFBLDJCQUFBLFlBQVM7QUFHVCxFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsYUFBVTtBQUdWLEVBQUFBLDJCQUFBLFdBQVE7QUFHUixFQUFBQSwyQkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEsMkJBQUEsU0FBTTtBQUdOLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEsbUJBQWdCO0FBR2hCLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxtQkFBZ0I7QUFHaEIsRUFBQUEsMkJBQUEsVUFBTztBQUdQLEVBQUFBLDJCQUFBLHlCQUFzQjtBQUd0QixFQUFBQSwyQkFBQSwrQkFBNEI7QUFHNUIsRUFBQUEsMkJBQUEsYUFBVTtBQUdWLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxrQkFBZTtBQUdmLEVBQUFBLDJCQUFBLG1CQUFnQjtBQUdoQixFQUFBQSwyQkFBQSxVQUFPO0FBR1AsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGdCQUFhO0FBR2IsRUFBQUEsMkJBQUEsa0JBQWU7QUFHZixFQUFBQSwyQkFBQSxxQkFBa0I7QUFHbEIsRUFBQUEsMkJBQUEsU0FBTTtBQUdOLEVBQUFBLDJCQUFBLDZCQUEwQjtBQUcxQixFQUFBQSwyQkFBQSw2QkFBMEI7QUFHMUIsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGVBQVk7QUFHWixFQUFBQSwyQkFBQSxlQUFZO0FBR1osRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLCtCQUE0QjtBQUc1QixFQUFBQSwyQkFBQSxzREFBbUQ7QUFHbkQsRUFBQUEsMkJBQUEsY0FBVztBQUdYLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEsaUJBQWM7QUFHZCxFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxnQkFBYTtBQUdiLEVBQUFBLDJCQUFBLGFBQVU7QUFHVixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLFNBQU07QUFHTixFQUFBQSwyQkFBQSxZQUFTO0FBR1QsRUFBQUEsMkJBQUEsZUFBWTtBQUdaLEVBQUFBLDJCQUFBLGVBQVk7QUFHWixFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLGtCQUFlO0FBR2YsRUFBQUEsMkJBQUEseUNBQXNDO0FBR3RDLEVBQUFBLDJCQUFBLHNDQUFtQztBQUduQyxFQUFBQSwyQkFBQSxpQkFBYztBQUdkLEVBQUFBLDJCQUFBLFdBQVE7QUFwS0UsU0FBQUE7QUFBQSxHQUFBOyIsCiAgIm5hbWVzIjogWyJPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzIl0KfQo=
@@ -1,2 +1,3 @@
1
1
  /// <reference path="../../library.d.mts" />
2
+ export * as 'integration-test-plugin' from './integration-test-plugin.mjs';
2
3
  export * as 'vitest' from './vitest.mjs';
@@ -21,8 +21,10 @@ if you want to view the source, please visit the github repository of this plugi
21
21
  globalThis.process = browserProcess;
22
22
  })();
23
23
 
24
+ import * as integration_test_plugin from "./integration-test-plugin.mjs";
24
25
  import * as vitest from "./vitest.mjs";
25
26
  export {
27
+ integration_test_plugin as "integration-test-plugin",
26
28
  vitest
27
29
  };
28
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAndml0ZXN0JyBmcm9tICcuL3ZpdGVzdC50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFlBQVksWUFBYzsiLAogICJuYW1lcyI6IFtdCn0K
30
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy90ZXN0LXJ1bm5lcnMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4nIGZyb20gJy4vaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgJ3ZpdGVzdCcgZnJvbSAnLi92aXRlc3QudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxZQUFZQSw2QkFBK0I7QUFDM0MsWUFBWSxZQUFjOyIsCiAgIm5hbWVzIjogWyJpbnRlZ3JhdGlvbi10ZXN0LXBsdWdpbiJdCn0K