obsidian-integration-testing 2.7.2 → 3.0.1
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.
- package/dist/lib/cjs/context-id.cjs +3 -3
- package/dist/lib/cjs/enable-plugin.cjs +3 -2
- package/dist/lib/cjs/eval-in-obsidian.cjs +10 -67
- package/dist/lib/cjs/generate-function-call.cjs +13 -3
- package/dist/lib/cjs/generate-function-call.d.cts +30 -7
- package/dist/lib/cjs/library.cjs +29 -0
- package/dist/lib/cjs/library.d.cts +13 -0
- package/dist/lib/cjs/namespace-bootstrap.cjs +139 -0
- package/dist/lib/cjs/namespace-bootstrap.d.cts +20 -0
- package/dist/lib/cjs/native-dialog-monitor.cjs +190 -0
- package/dist/lib/cjs/native-dialog-monitor.d.cts +66 -0
- package/dist/lib/cjs/obsidian-config.cjs +29 -1
- package/dist/lib/cjs/obsidian-config.d.cts +33 -0
- package/dist/lib/cjs/obsidian-namespace.cjs +17 -0
- package/dist/lib/cjs/obsidian-namespace.d.cts +114 -0
- package/dist/lib/cjs/transport-desktop-cdp.cjs +8 -6
- package/dist/lib/cjs/transport-desktop-cli.cjs +194 -70
- package/dist/lib/cjs/transport-desktop-cli.d.cts +26 -23
- package/dist/lib/esm/context-id.mjs +3 -3
- package/dist/lib/esm/enable-plugin.mjs +3 -2
- package/dist/lib/esm/eval-in-obsidian.mjs +11 -71
- package/dist/lib/esm/generate-function-call.d.mts +30 -7
- package/dist/lib/esm/generate-function-call.mjs +11 -2
- package/dist/lib/esm/library.d.mts +13 -0
- package/dist/lib/esm/library.mjs +5 -0
- package/dist/lib/esm/namespace-bootstrap.d.mts +20 -0
- package/dist/lib/esm/namespace-bootstrap.mjs +115 -0
- package/dist/lib/esm/native-dialog-monitor.d.mts +66 -0
- package/dist/lib/esm/native-dialog-monitor.mjs +156 -0
- package/dist/lib/esm/obsidian-config.d.mts +33 -0
- package/dist/lib/esm/obsidian-config.mjs +27 -1
- package/dist/lib/esm/obsidian-namespace.d.mts +114 -0
- package/dist/lib/esm/obsidian-namespace.mjs +1 -0
- package/dist/lib/esm/transport-desktop-cdp.mjs +8 -12
- package/dist/lib/esm/transport-desktop-cli.d.mts +26 -23
- package/dist/lib/esm/transport-desktop-cli.mjs +195 -71
- package/dist/obsidian-integration-testing-3.0.1.tgz +0 -0
- package/package.json +1 -1
- package/dist/obsidian-integration-testing-2.7.2.tgz +0 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var native_dialog_monitor_exports = {};
|
|
30
|
+
__export(native_dialog_monitor_exports, {
|
|
31
|
+
NativeDialogMonitor: () => NativeDialogMonitor
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(native_dialog_monitor_exports);
|
|
34
|
+
var import_node_process = __toESM(require("node:process"), 1);
|
|
35
|
+
var import_exec = require("./exec.cjs");
|
|
36
|
+
const DIALOG_TITLES = [
|
|
37
|
+
"Error",
|
|
38
|
+
"Vault not found."
|
|
39
|
+
];
|
|
40
|
+
const POLL_INTERVAL_IN_MILLISECONDS = 500;
|
|
41
|
+
class NativeDialogMonitor {
|
|
42
|
+
events = [];
|
|
43
|
+
intervalId;
|
|
44
|
+
isPolling = false;
|
|
45
|
+
/**
|
|
46
|
+
* Asserts that no native dialogs were detected during monitoring.
|
|
47
|
+
*
|
|
48
|
+
* @throws If any dialogs were recorded.
|
|
49
|
+
*/
|
|
50
|
+
assertNoDialogs() {
|
|
51
|
+
if (this.events.length > 0) {
|
|
52
|
+
const descriptions = this.events.map((e) => ` - "${e.title}" at ${new Date(e.timestamp).toISOString()}`).join("\n");
|
|
53
|
+
throw new Error(`Native dialog(s) detected during test:
|
|
54
|
+
${descriptions}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Returns all dialog events recorded since the monitor started.
|
|
59
|
+
*
|
|
60
|
+
* @returns The recorded dialog events.
|
|
61
|
+
*/
|
|
62
|
+
getEvents() {
|
|
63
|
+
return this.events;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resets the recorded events without stopping the monitor.
|
|
67
|
+
*/
|
|
68
|
+
reset() {
|
|
69
|
+
this.events = [];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Starts polling for native dialogs in the background.
|
|
73
|
+
*/
|
|
74
|
+
start() {
|
|
75
|
+
if (this.intervalId) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
this.events = [];
|
|
79
|
+
this.intervalId = setInterval(() => {
|
|
80
|
+
this.poll().catch(() => {
|
|
81
|
+
});
|
|
82
|
+
}, POLL_INTERVAL_IN_MILLISECONDS);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Stops polling and returns all recorded events.
|
|
86
|
+
*
|
|
87
|
+
* @returns The recorded dialog events.
|
|
88
|
+
*/
|
|
89
|
+
stop() {
|
|
90
|
+
if (this.intervalId) {
|
|
91
|
+
clearInterval(this.intervalId);
|
|
92
|
+
this.intervalId = void 0;
|
|
93
|
+
}
|
|
94
|
+
return this.events;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Single poll iteration: detects and dismisses any Obsidian dialog windows.
|
|
98
|
+
*/
|
|
99
|
+
async poll() {
|
|
100
|
+
if (this.isPolling) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
this.isPolling = true;
|
|
104
|
+
try {
|
|
105
|
+
const titles = await getObsidianWindowTitles();
|
|
106
|
+
for (const title of titles) {
|
|
107
|
+
if (DIALOG_TITLES.includes(title)) {
|
|
108
|
+
this.events.push({ timestamp: Date.now(), title });
|
|
109
|
+
await dismissDialogByTitle(title);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
} catch {
|
|
113
|
+
} finally {
|
|
114
|
+
this.isPolling = false;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async function dismissDialogByTitle(title) {
|
|
119
|
+
if (import_node_process.default.platform === "win32") {
|
|
120
|
+
await dismissDialogWindows(title);
|
|
121
|
+
} else if (import_node_process.default.platform === "darwin") {
|
|
122
|
+
await dismissDialogMac(title);
|
|
123
|
+
} else {
|
|
124
|
+
await dismissDialogLinux(title);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
async function dismissDialogLinux(title) {
|
|
128
|
+
const escapedTitle = title.replace(/"/g, '\\"');
|
|
129
|
+
await (0, import_exec.exec)(
|
|
130
|
+
`xdotool search --name "${escapedTitle}" windowactivate --sync key Return 2>/dev/null || true`,
|
|
131
|
+
{ isQuiet: true }
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
async function dismissDialogMac(title) {
|
|
135
|
+
const escapedTitle = title.replace(/"/g, '\\"');
|
|
136
|
+
await (0, import_exec.exec)(
|
|
137
|
+
`osascript -e 'tell application "System Events" to tell process "Obsidian" to click button 1 of window "${escapedTitle}"'`,
|
|
138
|
+
{ isQuiet: true }
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
async function dismissDialogWindows(title) {
|
|
142
|
+
const escapedTitle = title.replace(/'/g, "''");
|
|
143
|
+
const script = [
|
|
144
|
+
'Add-Type -TypeDefinition @"',
|
|
145
|
+
"using System; using System.Runtime.InteropServices;",
|
|
146
|
+
"public class DlgClose {",
|
|
147
|
+
' [DllImport("user32.dll")] public static extern IntPtr FindWindow(string c, string t);',
|
|
148
|
+
' [DllImport("user32.dll")] public static extern IntPtr SendMessage(IntPtr h, uint m, IntPtr w, IntPtr l);',
|
|
149
|
+
"}",
|
|
150
|
+
'"@',
|
|
151
|
+
`$h = [DlgClose]::FindWindow($null, '${escapedTitle}')`,
|
|
152
|
+
"if ($h -ne [IntPtr]::Zero) { [DlgClose]::SendMessage($h, 0x0010, [IntPtr]::Zero, [IntPtr]::Zero) }"
|
|
153
|
+
].join("; ");
|
|
154
|
+
await (0, import_exec.exec)(`powershell -Command "${script}"`, { isQuiet: true });
|
|
155
|
+
}
|
|
156
|
+
async function getObsidianWindowTitles() {
|
|
157
|
+
if (import_node_process.default.platform === "win32") {
|
|
158
|
+
return getWindowTitlesWindows();
|
|
159
|
+
}
|
|
160
|
+
if (import_node_process.default.platform === "darwin") {
|
|
161
|
+
return getWindowTitlesMac();
|
|
162
|
+
}
|
|
163
|
+
return getWindowTitlesLinux();
|
|
164
|
+
}
|
|
165
|
+
async function getWindowTitlesLinux() {
|
|
166
|
+
const output = await (0, import_exec.exec)(
|
|
167
|
+
'xdotool search --name "Obsidian" getwindowname 2>/dev/null || true',
|
|
168
|
+
{ isQuiet: true }
|
|
169
|
+
);
|
|
170
|
+
return output.trim().split("\n").filter(Boolean);
|
|
171
|
+
}
|
|
172
|
+
async function getWindowTitlesMac() {
|
|
173
|
+
const output = await (0, import_exec.exec)(
|
|
174
|
+
`osascript -e 'tell application "System Events" to get name of every window of (processes whose name is "Obsidian")'`,
|
|
175
|
+
{ isQuiet: true }
|
|
176
|
+
);
|
|
177
|
+
return output.trim().split(", ").filter(Boolean);
|
|
178
|
+
}
|
|
179
|
+
async function getWindowTitlesWindows() {
|
|
180
|
+
const output = await (0, import_exec.exec)(
|
|
181
|
+
`powershell -Command "Get-Process Obsidian -ErrorAction SilentlyContinue | Where-Object { $_.MainWindowTitle -ne '' } | Select-Object -ExpandProperty MainWindowTitle"`,
|
|
182
|
+
{ isQuiet: true }
|
|
183
|
+
);
|
|
184
|
+
return output.trim().split("\n").map((line) => line.trim()).filter(Boolean);
|
|
185
|
+
}
|
|
186
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
187
|
+
0 && (module.exports = {
|
|
188
|
+
NativeDialogMonitor
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25hdGl2ZS1kaWFsb2ctbW9uaXRvci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIE1vbml0b3JzIGZvciBuYXRpdmUgT1MgZGlhbG9ncyAoRWxlY3Ryb24gYGRpYWxvZy5zaG93RXJyb3JCb3hgLCBgZGlhbG9nLnNob3dNZXNzYWdlQm94U3luY2ApXG4gKiBmcm9tIHRoZSBPYnNpZGlhbiBwcm9jZXNzLiBUaGVzZSBkaWFsb2dzIGJsb2NrIHRoZSBtYWluIHByb2Nlc3MgYW5kIGNhbm5vdCBiZSBpbnRlcmNlcHRlZFxuICogZnJvbSB0aGUgcmVuZGVyZXIgdmlhIGBAZWxlY3Ryb24vcmVtb3RlYC5cbiAqXG4gKiBVc2VzIHBsYXRmb3JtLXNwZWNpZmljIHByb2Nlc3Mgd2luZG93IHRpdGxlIGluc3BlY3Rpb24gdG8gZGV0ZWN0IGRpYWxvZ3MsIGFuZFxuICogYXV0by1kaXNtaXNzZXMgdGhlbSBzbyB0aGV5IGRvbid0IGJsb2NrIHRlc3QgZXhlY3V0aW9uLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHV0aWxpdHkuIE5vdCB1bml0LXRlc3RhYmxlOiByZWxpZXMgb24gT1MgcHJvY2VzcyBpbnNwZWN0aW9uLiAqL1xuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuXG5pbXBvcnQgeyBleGVjIH0gZnJvbSAnLi9leGVjLmNqcyc7XG5cbi8qKlxuICogQSBjYXB0dXJlZCBuYXRpdmUgZGlhbG9nIGV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdGl2ZURpYWxvZ0V2ZW50IHtcbiAgLyoqXG4gICAqIFdoZW4gdGhlIGRpYWxvZyB3YXMgZGV0ZWN0ZWQuXG4gICAqL1xuICB0aW1lc3RhbXA6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHdpbmRvdyB0aXRsZSBvZiB0aGUgZGlhbG9nLlxuICAgKi9cbiAgdGl0bGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBLbm93biBPYnNpZGlhbiBkaWFsb2cgd2luZG93IHRpdGxlcyB0aGF0IGluZGljYXRlIGFuIGVycm9yIG9yIGJsb2NraW5nIHByb21wdC5cbiAqL1xuY29uc3QgRElBTE9HX1RJVExFUyA9IFtcbiAgJ0Vycm9yJyxcbiAgJ1ZhdWx0IG5vdCBmb3VuZC4nXG5dO1xuXG5jb25zdCBQT0xMX0lOVEVSVkFMX0lOX01JTExJU0VDT05EUyA9IDUwMDtcblxuLyoqXG4gKiBNb25pdG9ycyB0aGUgT2JzaWRpYW4gcHJvY2VzcyBmb3IgbmF0aXZlIE9TIGRpYWxvZ3MgYnkgcG9sbGluZyBwcm9jZXNzIHdpbmRvdyB0aXRsZXMuXG4gKlxuICogRGV0ZWN0ZWQgZGlhbG9ncyBhcmUgYXV0by1kaXNtaXNzZWQgKHZpYSBXTV9DTE9TRSAvIEFwcGxlU2NyaXB0IC8geGRvdG9vbCkgc28gdGhleVxuICogZG9uJ3QgYmxvY2sgdGhlIG1haW4gcHJvY2VzcywgYW5kIHJlY29yZGVkIGZvciBsYXRlciBhc3NlcnRpb24uXG4gKlxuICogQ3Jvc3MtcGxhdGZvcm06IHdvcmtzIG9uIFdpbmRvd3MsIG1hY09TLCBhbmQgTGludXguXG4gKi9cbmV4cG9ydCBjbGFzcyBOYXRpdmVEaWFsb2dNb25pdG9yIHtcbiAgcHJpdmF0ZSBldmVudHM6IE5hdGl2ZURpYWxvZ0V2ZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBpbnRlcnZhbElkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaXNQb2xsaW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFzc2VydHMgdGhhdCBubyBuYXRpdmUgZGlhbG9ncyB3ZXJlIGRldGVjdGVkIGR1cmluZyBtb25pdG9yaW5nLlxuICAgKlxuICAgKiBAdGhyb3dzIElmIGFueSBkaWFsb2dzIHdlcmUgcmVjb3JkZWQuXG4gICAqL1xuICBwdWJsaWMgYXNzZXJ0Tm9EaWFsb2dzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZXNjcmlwdGlvbnMgPSB0aGlzLmV2ZW50c1xuICAgICAgICAubWFwKChlKSA9PiBgICAtIFwiJHtlLnRpdGxlfVwiIGF0ICR7bmV3IERhdGUoZS50aW1lc3RhbXApLnRvSVNPU3RyaW5nKCl9YClcbiAgICAgICAgLmpvaW4oJ1xcbicpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBOYXRpdmUgZGlhbG9nKHMpIGRldGVjdGVkIGR1cmluZyB0ZXN0OlxcbiR7ZGVzY3JpcHRpb25zfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBkaWFsb2cgZXZlbnRzIHJlY29yZGVkIHNpbmNlIHRoZSBtb25pdG9yIHN0YXJ0ZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSByZWNvcmRlZCBkaWFsb2cgZXZlbnRzLlxuICAgKi9cbiAgcHVibGljIGdldEV2ZW50cygpOiByZWFkb25seSBOYXRpdmVEaWFsb2dFdmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudHM7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSByZWNvcmRlZCBldmVudHMgd2l0aG91dCBzdG9wcGluZyB0aGUgbW9uaXRvci5cbiAgICovXG4gIHB1YmxpYyByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50cyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBwb2xsaW5nIGZvciBuYXRpdmUgZGlhbG9ncyBpbiB0aGUgYmFja2dyb3VuZC5cbiAgICovXG4gIHB1YmxpYyBzdGFydCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnRlcnZhbElkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZXZlbnRzID0gW107XG4gICAgdGhpcy5pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5wb2xsKCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBJZ25vcmUgcG9sbCBlcnJvcnMuXG4gICAgICB9KTtcbiAgICB9LCBQT0xMX0lOVEVSVkFMX0lOX01JTExJU0VDT05EUyk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcHMgcG9sbGluZyBhbmQgcmV0dXJucyBhbGwgcmVjb3JkZWQgZXZlbnRzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgcmVjb3JkZWQgZGlhbG9nIGV2ZW50cy5cbiAgICovXG4gIHB1YmxpYyBzdG9wKCk6IHJlYWRvbmx5IE5hdGl2ZURpYWxvZ0V2ZW50W10ge1xuICAgIGlmICh0aGlzLmludGVydmFsSWQpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcbiAgICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbmdsZSBwb2xsIGl0ZXJhdGlvbjogZGV0ZWN0cyBhbmQgZGlzbWlzc2VzIGFueSBPYnNpZGlhbiBkaWFsb2cgd2luZG93cy5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgcG9sbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc1BvbGxpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pc1BvbGxpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0aXRsZXMgPSBhd2FpdCBnZXRPYnNpZGlhbldpbmRvd1RpdGxlcygpO1xuICAgICAgZm9yIChjb25zdCB0aXRsZSBvZiB0aXRsZXMpIHtcbiAgICAgICAgaWYgKERJQUxPR19USVRMRVMuaW5jbHVkZXModGl0bGUpKSB7XG4gICAgICAgICAgdGhpcy5ldmVudHMucHVzaCh7IHRpbWVzdGFtcDogRGF0ZS5ub3coKSwgdGl0bGUgfSk7XG4gICAgICAgICAgYXdhaXQgZGlzbWlzc0RpYWxvZ0J5VGl0bGUodGl0bGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBQcm9jZXNzIG1heSBub3QgYmUgcnVubmluZyBcdTIwMTQgaWdub3JlLlxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzUG9sbGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERpc21pc3NlcyBhIG5hdGl2ZSBkaWFsb2cgd2luZG93IGJ5IGl0cyB0aXRsZS5cbiAqXG4gKiBAcGFyYW0gdGl0bGUgLSBUaGUgd2luZG93IHRpdGxlIHRvIGRpc21pc3MuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRpc21pc3NEaWFsb2dCeVRpdGxlKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICBhd2FpdCBkaXNtaXNzRGlhbG9nV2luZG93cyh0aXRsZSk7XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICBhd2FpdCBkaXNtaXNzRGlhbG9nTWFjKHRpdGxlKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCBkaXNtaXNzRGlhbG9nTGludXgodGl0bGUpO1xuICB9XG59XG5cbi8qKlxuICogRGlzbWlzc2VzIGEgZGlhbG9nIG9uIExpbnV4IHZpYSB4ZG90b29sLlxuICpcbiAqIEBwYXJhbSB0aXRsZSAtIFRoZSB3aW5kb3cgdGl0bGUgdG8gZGlzbWlzcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGlzbWlzc0RpYWxvZ0xpbnV4KHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZXNjYXBlZFRpdGxlID0gdGl0bGUucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpO1xuICBhd2FpdCBleGVjKFxuICAgIGB4ZG90b29sIHNlYXJjaCAtLW5hbWUgXCIke2VzY2FwZWRUaXRsZX1cIiB3aW5kb3dhY3RpdmF0ZSAtLXN5bmMga2V5IFJldHVybiAyPi9kZXYvbnVsbCB8fCB0cnVlYCxcbiAgICB7IGlzUXVpZXQ6IHRydWUgfVxuICApO1xufVxuXG4vKipcbiAqIERpc21pc3NlcyBhIGRpYWxvZyBvbiBtYWNPUyB2aWEgQXBwbGVTY3JpcHQuXG4gKlxuICogQHBhcmFtIHRpdGxlIC0gVGhlIHdpbmRvdyB0aXRsZSB0byBkaXNtaXNzLlxuICovXG5hc3luYyBmdW5jdGlvbiBkaXNtaXNzRGlhbG9nTWFjKHRpdGxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZXNjYXBlZFRpdGxlID0gdGl0bGUucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpO1xuICBhd2FpdCBleGVjKFxuICAgIGBvc2FzY3JpcHQgLWUgJ3RlbGwgYXBwbGljYXRpb24gXCJTeXN0ZW0gRXZlbnRzXCIgdG8gdGVsbCBwcm9jZXNzIFwiT2JzaWRpYW5cIiB0byBjbGljayBidXR0b24gMSBvZiB3aW5kb3cgXCIke2VzY2FwZWRUaXRsZX1cIidgLFxuICAgIHsgaXNRdWlldDogdHJ1ZSB9XG4gICk7XG59XG5cbi8qKlxuICogRGlzbWlzc2VzIGEgZGlhbG9nIG9uIFdpbmRvd3MgYnkgc2VuZGluZyBXTV9DTE9TRSB2aWEgV2luMzIgQVBJLlxuICpcbiAqIEBwYXJhbSB0aXRsZSAtIFRoZSB3aW5kb3cgdGl0bGUgdG8gZGlzbWlzcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGlzbWlzc0RpYWxvZ1dpbmRvd3ModGl0bGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBlc2NhcGVkVGl0bGUgPSB0aXRsZS5yZXBsYWNlKC8nL2csICdcXCdcXCcnKTtcbiAgY29uc3Qgc2NyaXB0ID0gW1xuICAgICdBZGQtVHlwZSAtVHlwZURlZmluaXRpb24gQFwiJyxcbiAgICAndXNpbmcgU3lzdGVtOyB1c2luZyBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXM7JyxcbiAgICAncHVibGljIGNsYXNzIERsZ0Nsb3NlIHsnLFxuICAgICcgIFtEbGxJbXBvcnQoXCJ1c2VyMzIuZGxsXCIpXSBwdWJsaWMgc3RhdGljIGV4dGVybiBJbnRQdHIgRmluZFdpbmRvdyhzdHJpbmcgYywgc3RyaW5nIHQpOycsXG4gICAgJyAgW0RsbEltcG9ydChcInVzZXIzMi5kbGxcIildIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIEludFB0ciBTZW5kTWVzc2FnZShJbnRQdHIgaCwgdWludCBtLCBJbnRQdHIgdywgSW50UHRyIGwpOycsXG4gICAgJ30nLFxuICAgICdcIkAnLFxuICAgIGAkaCA9IFtEbGdDbG9zZV06OkZpbmRXaW5kb3coJG51bGwsICcke2VzY2FwZWRUaXRsZX0nKWAsXG4gICAgJ2lmICgkaCAtbmUgW0ludFB0cl06Olplcm8pIHsgW0RsZ0Nsb3NlXTo6U2VuZE1lc3NhZ2UoJGgsIDB4MDAxMCwgW0ludFB0cl06Olplcm8sIFtJbnRQdHJdOjpaZXJvKSB9J1xuICBdLmpvaW4oJzsgJyk7XG4gIGF3YWl0IGV4ZWMoYHBvd2Vyc2hlbGwgLUNvbW1hbmQgXCIke3NjcmlwdH1cImAsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHdpbmRvdyB0aXRsZXMgb2YgYWxsIE9ic2lkaWFuIHByb2Nlc3Mgd2luZG93cy5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiB3aW5kb3cgdGl0bGUgc3RyaW5ncy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0T2JzaWRpYW5XaW5kb3dUaXRsZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJykge1xuICAgIHJldHVybiBnZXRXaW5kb3dUaXRsZXNXaW5kb3dzKCk7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93VGl0bGVzTWFjKCk7XG4gIH1cblxuICByZXR1cm4gZ2V0V2luZG93VGl0bGVzTGludXgoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIE9ic2lkaWFuIHdpbmRvdyB0aXRsZXMgb24gTGludXggdmlhIHhkb3Rvb2wuXG4gKlxuICogQHJldHVybnMgQW4gYXJyYXkgb2Ygd2luZG93IHRpdGxlIHN0cmluZ3MuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1RpdGxlc0xpbnV4KCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZXhlYyhcbiAgICAneGRvdG9vbCBzZWFyY2ggLS1uYW1lIFwiT2JzaWRpYW5cIiBnZXR3aW5kb3duYW1lIDI+L2Rldi9udWxsIHx8IHRydWUnLFxuICAgIHsgaXNRdWlldDogdHJ1ZSB9XG4gICk7XG4gIHJldHVybiBvdXRwdXQudHJpbSgpLnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbik7XG59XG5cbi8qKlxuICogUmV0dXJucyBPYnNpZGlhbiB3aW5kb3cgdGl0bGVzIG9uIG1hY09TIHZpYSBBcHBsZVNjcmlwdC5cbiAqXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiB3aW5kb3cgdGl0bGUgc3RyaW5ncy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93VGl0bGVzTWFjKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZXhlYyhcbiAgICAnb3Nhc2NyaXB0IC1lIFxcJ3RlbGwgYXBwbGljYXRpb24gXCJTeXN0ZW0gRXZlbnRzXCIgdG8gZ2V0IG5hbWUgb2YgZXZlcnkgd2luZG93IG9mIChwcm9jZXNzZXMgd2hvc2UgbmFtZSBpcyBcIk9ic2lkaWFuXCIpXFwnJyxcbiAgICB7IGlzUXVpZXQ6IHRydWUgfVxuICApO1xuICByZXR1cm4gb3V0cHV0LnRyaW0oKS5zcGxpdCgnLCAnKS5maWx0ZXIoQm9vbGVhbik7XG59XG5cbi8qKlxuICogUmV0dXJucyBPYnNpZGlhbiB3aW5kb3cgdGl0bGVzIG9uIFdpbmRvd3MgdmlhIEdldC1Qcm9jZXNzLlxuICpcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHdpbmRvdyB0aXRsZSBzdHJpbmdzLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRXaW5kb3dUaXRsZXNXaW5kb3dzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgZXhlYyhcbiAgICAncG93ZXJzaGVsbCAtQ29tbWFuZCBcIkdldC1Qcm9jZXNzIE9ic2lkaWFuIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIHwgV2hlcmUtT2JqZWN0IHsgJF8uTWFpbldpbmRvd1RpdGxlIC1uZSBcXCdcXCcgfSB8IFNlbGVjdC1PYmplY3QgLUV4cGFuZFByb3BlcnR5IE1haW5XaW5kb3dUaXRsZVwiJyxcbiAgICB7IGlzUXVpZXQ6IHRydWUgfVxuICApO1xuICByZXR1cm4gb3V0cHV0LnRyaW0oKS5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSkuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSwwQkFBb0I7QUFFcEIsa0JBQXFCO0FBb0JyQixNQUFNLGdCQUFnQjtBQUFBLEVBQ3BCO0FBQUEsRUFDQTtBQUNGO0FBRUEsTUFBTSxnQ0FBZ0M7QUFVL0IsTUFBTSxvQkFBb0I7QUFBQSxFQUN2QixTQUE4QixDQUFDO0FBQUEsRUFDL0I7QUFBQSxFQUNBLFlBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPYixrQkFBd0I7QUFDN0IsUUFBSSxLQUFLLE9BQU8sU0FBUyxHQUFHO0FBQzFCLFlBQU0sZUFBZSxLQUFLLE9BQ3ZCLElBQUksQ0FBQyxNQUFNLFFBQVEsRUFBRSxLQUFLLFFBQVEsSUFBSSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQ3ZFLEtBQUssSUFBSTtBQUNaLFlBQU0sSUFBSSxNQUFNO0FBQUEsRUFBMkMsWUFBWSxFQUFFO0FBQUEsSUFDM0U7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sWUFBMEM7QUFDL0MsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS08sUUFBYztBQUNuQixTQUFLLFNBQVMsQ0FBQztBQUFBLEVBQ2pCO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLTyxRQUFjO0FBQ25CLFFBQUksS0FBSyxZQUFZO0FBQ25CO0FBQUEsSUFDRjtBQUNBLFNBQUssU0FBUyxDQUFDO0FBQ2YsU0FBSyxhQUFhLFlBQVksTUFBTTtBQUNsQyxXQUFLLEtBQUssRUFBRSxNQUFNLE1BQU07QUFBQSxNQUV4QixDQUFDO0FBQUEsSUFDSCxHQUFHLDZCQUE2QjtBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT08sT0FBcUM7QUFDMUMsUUFBSSxLQUFLLFlBQVk7QUFDbkIsb0JBQWMsS0FBSyxVQUFVO0FBQzdCLFdBQUssYUFBYTtBQUFBLElBQ3BCO0FBQ0EsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsTUFBYyxPQUFzQjtBQUNsQyxRQUFJLEtBQUssV0FBVztBQUNsQjtBQUFBLElBQ0Y7QUFDQSxTQUFLLFlBQVk7QUFDakIsUUFBSTtBQUNGLFlBQU0sU0FBUyxNQUFNLHdCQUF3QjtBQUM3QyxpQkFBVyxTQUFTLFFBQVE7QUFDMUIsWUFBSSxjQUFjLFNBQVMsS0FBSyxHQUFHO0FBQ2pDLGVBQUssT0FBTyxLQUFLLEVBQUUsV0FBVyxLQUFLLElBQUksR0FBRyxNQUFNLENBQUM7QUFDakQsZ0JBQU0scUJBQXFCLEtBQUs7QUFBQSxRQUNsQztBQUFBLE1BQ0Y7QUFBQSxJQUNGLFFBQVE7QUFBQSxJQUVSLFVBQUU7QUFDQSxXQUFLLFlBQVk7QUFBQSxJQUNuQjtBQUFBLEVBQ0Y7QUFDRjtBQU9BLGVBQWUscUJBQXFCLE9BQThCO0FBQ2hFLE1BQUksb0JBQUFBLFFBQVEsYUFBYSxTQUFTO0FBQ2hDLFVBQU0scUJBQXFCLEtBQUs7QUFBQSxFQUNsQyxXQUFXLG9CQUFBQSxRQUFRLGFBQWEsVUFBVTtBQUN4QyxVQUFNLGlCQUFpQixLQUFLO0FBQUEsRUFDOUIsT0FBTztBQUNMLFVBQU0sbUJBQW1CLEtBQUs7QUFBQSxFQUNoQztBQUNGO0FBT0EsZUFBZSxtQkFBbUIsT0FBOEI7QUFDOUQsUUFBTSxlQUFlLE1BQU0sUUFBUSxNQUFNLEtBQUs7QUFDOUMsWUFBTTtBQUFBLElBQ0osMEJBQTBCLFlBQVk7QUFBQSxJQUN0QyxFQUFFLFNBQVMsS0FBSztBQUFBLEVBQ2xCO0FBQ0Y7QUFPQSxlQUFlLGlCQUFpQixPQUE4QjtBQUM1RCxRQUFNLGVBQWUsTUFBTSxRQUFRLE1BQU0sS0FBSztBQUM5QyxZQUFNO0FBQUEsSUFDSiwwR0FBMEcsWUFBWTtBQUFBLElBQ3RILEVBQUUsU0FBUyxLQUFLO0FBQUEsRUFDbEI7QUFDRjtBQU9BLGVBQWUscUJBQXFCLE9BQThCO0FBQ2hFLFFBQU0sZUFBZSxNQUFNLFFBQVEsTUFBTSxJQUFNO0FBQy9DLFFBQU0sU0FBUztBQUFBLElBQ2I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBLHVDQUF1QyxZQUFZO0FBQUEsSUFDbkQ7QUFBQSxFQUNGLEVBQUUsS0FBSyxJQUFJO0FBQ1gsWUFBTSxrQkFBSyx3QkFBd0IsTUFBTSxLQUFLLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFDakU7QUFPQSxlQUFlLDBCQUE2QztBQUMxRCxNQUFJLG9CQUFBQSxRQUFRLGFBQWEsU0FBUztBQUNoQyxXQUFPLHVCQUF1QjtBQUFBLEVBQ2hDO0FBRUEsTUFBSSxvQkFBQUEsUUFBUSxhQUFhLFVBQVU7QUFDakMsV0FBTyxtQkFBbUI7QUFBQSxFQUM1QjtBQUVBLFNBQU8scUJBQXFCO0FBQzlCO0FBT0EsZUFBZSx1QkFBMEM7QUFDdkQsUUFBTSxTQUFTLFVBQU07QUFBQSxJQUNuQjtBQUFBLElBQ0EsRUFBRSxTQUFTLEtBQUs7QUFBQSxFQUNsQjtBQUNBLFNBQU8sT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsT0FBTyxPQUFPO0FBQ2pEO0FBT0EsZUFBZSxxQkFBd0M7QUFDckQsUUFBTSxTQUFTLFVBQU07QUFBQSxJQUNuQjtBQUFBLElBQ0EsRUFBRSxTQUFTLEtBQUs7QUFBQSxFQUNsQjtBQUNBLFNBQU8sT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsT0FBTyxPQUFPO0FBQ2pEO0FBT0EsZUFBZSx5QkFBNEM7QUFDekQsUUFBTSxTQUFTLFVBQU07QUFBQSxJQUNuQjtBQUFBLElBQ0EsRUFBRSxTQUFTLEtBQUs7QUFBQSxFQUNsQjtBQUNBLFNBQU8sT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsS0FBSyxLQUFLLENBQUMsRUFBRSxPQUFPLE9BQU87QUFDNUU7IiwKICAibmFtZXMiOiBbInByb2Nlc3MiXQp9Cg==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Monitors for native OS dialogs (Electron `dialog.showErrorBox`, `dialog.showMessageBoxSync`)
|
|
5
|
+
* from the Obsidian process. These dialogs block the main process and cannot be intercepted
|
|
6
|
+
* from the renderer via `@electron/remote`.
|
|
7
|
+
*
|
|
8
|
+
* Uses platform-specific process window title inspection to detect dialogs, and
|
|
9
|
+
* auto-dismisses them so they don't block test execution.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* A captured native dialog event.
|
|
13
|
+
*/
|
|
14
|
+
export interface NativeDialogEvent {
|
|
15
|
+
/**
|
|
16
|
+
* When the dialog was detected.
|
|
17
|
+
*/
|
|
18
|
+
timestamp: number;
|
|
19
|
+
/**
|
|
20
|
+
* The window title of the dialog.
|
|
21
|
+
*/
|
|
22
|
+
title: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Monitors the Obsidian process for native OS dialogs by polling process window titles.
|
|
26
|
+
*
|
|
27
|
+
* Detected dialogs are auto-dismissed (via WM_CLOSE / AppleScript / xdotool) so they
|
|
28
|
+
* don't block the main process, and recorded for later assertion.
|
|
29
|
+
*
|
|
30
|
+
* Cross-platform: works on Windows, macOS, and Linux.
|
|
31
|
+
*/
|
|
32
|
+
export declare class NativeDialogMonitor {
|
|
33
|
+
private events;
|
|
34
|
+
private intervalId;
|
|
35
|
+
private isPolling;
|
|
36
|
+
/**
|
|
37
|
+
* Asserts that no native dialogs were detected during monitoring.
|
|
38
|
+
*
|
|
39
|
+
* @throws If any dialogs were recorded.
|
|
40
|
+
*/
|
|
41
|
+
assertNoDialogs(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Returns all dialog events recorded since the monitor started.
|
|
44
|
+
*
|
|
45
|
+
* @returns The recorded dialog events.
|
|
46
|
+
*/
|
|
47
|
+
getEvents(): readonly NativeDialogEvent[];
|
|
48
|
+
/**
|
|
49
|
+
* Resets the recorded events without stopping the monitor.
|
|
50
|
+
*/
|
|
51
|
+
reset(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Starts polling for native dialogs in the background.
|
|
54
|
+
*/
|
|
55
|
+
start(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Stops polling and returns all recorded events.
|
|
58
|
+
*
|
|
59
|
+
* @returns The recorded dialog events.
|
|
60
|
+
*/
|
|
61
|
+
stop(): readonly NativeDialogEvent[];
|
|
62
|
+
/**
|
|
63
|
+
* Single poll iteration: detects and dismisses any Obsidian dialog windows.
|
|
64
|
+
*/
|
|
65
|
+
private poll;
|
|
66
|
+
}
|
|
@@ -30,8 +30,10 @@ var obsidian_config_exports = {};
|
|
|
30
30
|
__export(obsidian_config_exports, {
|
|
31
31
|
enableCliInConfig: () => enableCliInConfig,
|
|
32
32
|
getAnyRegisteredVaultPath: () => getAnyRegisteredVaultPath,
|
|
33
|
+
getRegisteredVaults: () => getRegisteredVaults,
|
|
33
34
|
getVaultId: () => getVaultId,
|
|
34
35
|
isCliEnabled: () => isCliEnabled,
|
|
36
|
+
isVaultOpen: () => isVaultOpen,
|
|
35
37
|
isVaultRegistered: () => isVaultRegistered,
|
|
36
38
|
registerVaultInConfig: () => registerVaultInConfig,
|
|
37
39
|
removeVaultFromConfig: () => removeVaultFromConfig
|
|
@@ -55,6 +57,17 @@ function getAnyRegisteredVaultPath() {
|
|
|
55
57
|
const firstEntry = Object.values(config.vaults)[0];
|
|
56
58
|
return firstEntry?.path;
|
|
57
59
|
}
|
|
60
|
+
function getRegisteredVaults() {
|
|
61
|
+
const config = readObsidianJson();
|
|
62
|
+
if (!config) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
return Object.entries(config.vaults).map(([id, entry]) => ({
|
|
66
|
+
id,
|
|
67
|
+
open: entry.open === true,
|
|
68
|
+
path: entry.path
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
58
71
|
function getVaultId(vaultPath) {
|
|
59
72
|
const config = readObsidianJson();
|
|
60
73
|
if (!config) {
|
|
@@ -72,6 +85,19 @@ function isCliEnabled() {
|
|
|
72
85
|
const config = readObsidianJson();
|
|
73
86
|
return config?.cli === true;
|
|
74
87
|
}
|
|
88
|
+
function isVaultOpen(vaultPath) {
|
|
89
|
+
const config = readObsidianJson();
|
|
90
|
+
if (!config) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const normalizedTarget = normalizePath(vaultPath);
|
|
94
|
+
for (const entry of Object.values(config.vaults)) {
|
|
95
|
+
if (normalizePath(entry.path) === normalizedTarget) {
|
|
96
|
+
return entry.open === true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
75
101
|
function isVaultRegistered(vaultPath) {
|
|
76
102
|
return getVaultId(vaultPath) !== void 0;
|
|
77
103
|
}
|
|
@@ -135,10 +161,12 @@ function writeObsidianJson(config) {
|
|
|
135
161
|
0 && (module.exports = {
|
|
136
162
|
enableCliInConfig,
|
|
137
163
|
getAnyRegisteredVaultPath,
|
|
164
|
+
getRegisteredVaults,
|
|
138
165
|
getVaultId,
|
|
139
166
|
isCliEnabled,
|
|
167
|
+
isVaultOpen,
|
|
140
168
|
isVaultRegistered,
|
|
141
169
|
registerVaultInConfig,
|
|
142
170
|
removeVaultFromConfig
|
|
143
171
|
});
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuLWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlYWRzIGFuZCBxdWVyaWVzIE9ic2lkaWFuJ3MgbG9jYWwgY29uZmlndXJhdGlvbiAoYG9ic2lkaWFuLmpzb25gKS5cbiAqL1xuXG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB7XG4gIHJlYWRGaWxlU3luYyxcbiAgd3JpdGVGaWxlU3luY1xufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7XG4gIGpvaW4sXG4gIHJlc29sdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbi8qKlxuICogVGhlIHRvcC1sZXZlbCBzdHJ1Y3R1cmUgb2YgT2JzaWRpYW4ncyBgb2JzaWRpYW4uanNvbmAgY29uZmlnIGZpbGUuXG4gKi9cbmludGVyZmFjZSBPYnNpZGlhbkpzb24ge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgQ0xJIGlzIGVuYWJsZWQgaW4gT2JzaWRpYW4gc2V0dGluZ3MuXG4gICAqL1xuICBjbGk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNYXAgb2YgdmF1bHQgSURzIHRvIHZhdWx0IGVudHJpZXMuXG4gICAqL1xuICB2YXVsdHM6IFJlY29yZDxzdHJpbmcsIE9ic2lkaWFuVmF1bHRFbnRyeT47XG59XG5cbi8qKlxuICogQSBzaW5nbGUgdmF1bHQgZW50cnkgaW4gYG9ic2lkaWFuLmpzb25gLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5WYXVsdEVudHJ5IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZhdWx0IGlzIGN1cnJlbnRseSBvcGVuLlxuICAgKi9cbiAgb3Blbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gICAqL1xuICBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCBvZiB0aGUgbGFzdCBhY2Nlc3MuXG4gICAqL1xuICB0czogbnVtYmVyO1xufVxuXG4vKipcbiAqIEVuYWJsZXMgdGhlIENMSSBpbiBPYnNpZGlhbidzIGBvYnNpZGlhbi5qc29uYCBjb25maWcgZmlsZS5cbiAqXG4gKiBTZXRzIGBjbGk6IHRydWVgIHNvIHRoYXQgT2JzaWRpYW4gc3RhcnRzIGl0cyBDTEkgc2VydmVyIG9uIG5leHQgbGF1bmNoLlxuICogSWYgdGhlIGNvbmZpZyBmaWxlIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZXMgaXQgd2l0aCBhbiBlbXB0eSB2YXVsdHMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlQ2xpSW5Db25maWcoKTogdm9pZCB7XG4gIGNvbnN0IGNvbmZpZyA9IHJlYWRPYnNpZGlhbkpzb24oKSA/PyB7IHZhdWx0czoge30gfTtcbiAgY29uZmlnLmNsaSA9IHRydWU7XG4gIHdyaXRlT2JzaWRpYW5Kc29uKGNvbmZpZyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGF0aCBvZiBhbnkgdmF1bHQgdGhhdCBpcyBjdXJyZW50bHkgcmVnaXN0ZXJlZCBpbiBPYnNpZGlhbidzIHJlZ2lzdHJ5LlxuICpcbiAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gYW4gYG9ic2lkaWFuIGV2YWxgIGNhbGwgbXVzdCBydW4gaW5zaWRlIGFuIGV4aXN0aW5nIHZhdWx0XG4gKiB3aW5kb3cgKGUuZy4sIHRvIGlzc3VlIElQQyBjb21tYW5kcyB0aGF0IHJlZ2lzdGVyIG9yIHJlbW92ZSBvdGhlciB2YXVsdHMpLlxuICpcbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIGEgcmVnaXN0ZXJlZCB2YXVsdCwgb3IgYHVuZGVmaW5lZGAgaWYgbm8gdmF1bHRzIGFyZSByZWdpc3RlcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW55UmVnaXN0ZXJlZFZhdWx0UGF0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb25maWcgPSByZWFkT2JzaWRpYW5Kc29uKCk7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGZpcnN0RW50cnkgPSBPYmplY3QudmFsdWVzKGNvbmZpZy52YXVsdHMpWzBdO1xuICByZXR1cm4gZmlyc3RFbnRyeT8ucGF0aDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBoZXggdmF1bHQgSUQgZm9yIGEgZ2l2ZW4gdmF1bHQgcGF0aCBmcm9tIE9ic2lkaWFuJ3MgcmVnaXN0cnkuXG4gKlxuICogQHBhcmFtIHZhdWx0UGF0aCAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gKiBAcmV0dXJucyBUaGUgdmF1bHQgSUQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB2YXVsdCBpcyBub3QgcmVnaXN0ZXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhdWx0SWQodmF1bHRQYXRoOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb25maWcgPSByZWFkT2JzaWRpYW5Kc29uKCk7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRUYXJnZXQgPSBub3JtYWxpemVQYXRoKHZhdWx0UGF0aCk7XG5cbiAgZm9yIChjb25zdCBbaWQsIGVudHJ5XSBvZiBPYmplY3QuZW50cmllcyhjb25maWcudmF1bHRzKSkge1xuICAgIGlmIChub3JtYWxpemVQYXRoKGVudHJ5LnBhdGgpID09PSBub3JtYWxpemVkVGFyZ2V0KSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgT2JzaWRpYW4gQ0xJIGlzIGVuYWJsZWQgaW4gT2JzaWRpYW4ncyBzZXR0aW5ncy5cbiAqXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIENMSSBpcyBlbmFibGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2xpRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgY29uc3QgY29uZmlnID0gcmVhZE9ic2lkaWFuSnNvbigpO1xuICByZXR1cm4gY29uZmlnPy5jbGkgPT09IHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YXVsdCBwYXRoIGlzIHJlZ2lzdGVyZWQgaW4gT2JzaWRpYW4ncyB2YXVsdCByZWdpc3RyeS5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmF1bHQgaXMgcmVnaXN0ZXJlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhdWx0UmVnaXN0ZXJlZCh2YXVsdFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZ2V0VmF1bHRJZCh2YXVsdFBhdGgpICE9PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIGEgdmF1bHQgZGlyZWN0bHkgaW4gT2JzaWRpYW4ncyBgb2JzaWRpYW4uanNvbmAgY29uZmlnIGZpbGUuXG4gKlxuICogVGhpcyB3cml0ZXMgYSBuZXcgdmF1bHQgZW50cnkgd2l0aCBhIHJhbmRvbSBoZXggSUQuIFVzZWQgd2hlbiBubyBleGlzdGluZ1xuICogdmF1bHQgaXMgYXZhaWxhYmxlIHRvIHNlbmQgSVBDIGNvbW1hbmRzIHRocm91Z2ggXHUyMDE0IHRoZSB2YXVsdCBpcyByZWdpc3RlcmVkXG4gKiBcIm9mZmxpbmVcIiBzbyBPYnNpZGlhbiB3aWxsIG9wZW4gaXQgb24gbmV4dCBsYXVuY2guXG4gKlxuICogQHBhcmFtIHZhdWx0UGF0aCAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclZhdWx0SW5Db25maWcodmF1bHRQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgY29uZmlnID0gcmVhZE9ic2lkaWFuSnNvbigpID8/IHsgdmF1bHRzOiB7fSB9O1xuICBjb25zdCBWQVVMVF9JRF9CWVRFX0xFTkdUSCA9IDg7XG4gIGNvbnN0IGlkID0gcmFuZG9tQnl0ZXMoVkFVTFRfSURfQllURV9MRU5HVEgpLnRvU3RyaW5nKCdoZXgnKTtcbiAgY29uZmlnLnZhdWx0c1tpZF0gPSB7IHBhdGg6IHZhdWx0UGF0aCwgdHM6IERhdGUubm93KCkgfTtcbiAgY29uZmlnLmNsaSA9IHRydWU7XG4gIHdyaXRlT2JzaWRpYW5Kc29uKGNvbmZpZyk7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhIHZhdWx0IGVudHJ5IGZyb20gT2JzaWRpYW4ncyBgb2JzaWRpYW4uanNvbmAgY29uZmlnIGZpbGUuXG4gKlxuICogQHBhcmFtIHZhdWx0UGF0aCAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhdWx0IHdhcyBmb3VuZCBhbmQgcmVtb3ZlZCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVWYXVsdEZyb21Db25maWcodmF1bHRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgY29uZmlnID0gcmVhZE9ic2lkaWFuSnNvbigpO1xuICBpZiAoIWNvbmZpZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRUYXJnZXQgPSBub3JtYWxpemVQYXRoKHZhdWx0UGF0aCk7XG4gIGxldCB3YXNGb3VuZCA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgW2lkLCBlbnRyeV0gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnLnZhdWx0cykpIHtcbiAgICBpZiAobm9ybWFsaXplUGF0aChlbnRyeS5wYXRoKSA9PT0gbm9ybWFsaXplZFRhcmdldCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZSAtLSBSZW1vdmluZyBhIHZhdWx0IGVudHJ5IGJ5IGl0cyBkeW5hbWljIGtleS5cbiAgICAgIGRlbGV0ZSBjb25maWcudmF1bHRzW2lkXTtcbiAgICAgIHdhc0ZvdW5kID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmICh3YXNGb3VuZCkge1xuICAgIHdyaXRlT2JzaWRpYW5Kc29uKGNvbmZpZyk7XG4gIH1cblxuICByZXR1cm4gd2FzRm91bmQ7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgcGF0aCB0byBPYnNpZGlhbidzIGNvbmZpZyBkaXJlY3RvcnkuXG4gKlxuICogQHJldHVybnMgVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGBvYnNpZGlhbi9gIGNvbmZpZyBkaXJlY3RvcnkuXG4gKi9cbmZ1bmN0aW9uIGdldE9ic2lkaWFuQ29uZmlnRGlyKCk6IHN0cmluZyB7XG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKSB7XG4gICAgY29uc3QgYXBwRGF0YSA9IHByb2Nlc3MuZW52WydBUFBEQVRBJ107XG4gICAgaWYgKGFwcERhdGEpIHtcbiAgICAgIHJldHVybiBqb2luKGFwcERhdGEsICdvYnNpZGlhbicpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnZGFyd2luJykge1xuICAgIHJldHVybiBqb2luKGhvbWVkaXIoKSwgJ0xpYnJhcnknLCAnQXBwbGljYXRpb24gU3VwcG9ydCcsICdvYnNpZGlhbicpO1xuICB9XG5cbiAgcmV0dXJuIGpvaW4ocHJvY2Vzcy5lbnZbJ1hER19DT05GSUdfSE9NRSddID8/IGpvaW4oaG9tZWRpcigpLCAnLmNvbmZpZycpLCAnb2JzaWRpYW4nKTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgdmF1bHQgcGF0aCBmb3IgY29tcGFyaXNvbi5cbiAqIE9uIFdpbmRvd3MsIHBhdGhzIGFyZSBjYXNlLWluc2Vuc2l0aXZlIGFuZCBzZXBhcmF0b3JzIG1heSB2YXJ5LlxuICpcbiAqIEBwYXJhbSB2YXVsdFBhdGggLSBUaGUgcGF0aCB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVQYXRoKHZhdWx0UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlKHZhdWx0UGF0aCk7XG4gIHJldHVybiBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gcmVzb2x2ZWQudG9Mb3dlckNhc2UoKSA6IHJlc29sdmVkO1xufVxuXG4vKipcbiAqIFJlYWRzIGFuZCBwYXJzZXMgT2JzaWRpYW4ncyBgb2JzaWRpYW4uanNvbmAgY29uZmlnIGZpbGUuXG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBjb25maWcsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3Qgb3IgY2FuJ3QgYmUgcGFyc2VkLlxuICovXG5mdW5jdGlvbiByZWFkT2JzaWRpYW5Kc29uKCk6IE9ic2lkaWFuSnNvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGNvbmZpZ1BhdGggPSBqb2luKGdldE9ic2lkaWFuQ29uZmlnRGlyKCksICdvYnNpZGlhbi5qc29uJyk7XG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmLTgnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KSBhcyBPYnNpZGlhbkpzb247XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBXcml0ZXMgdGhlIGdpdmVuIGNvbmZpZyBvYmplY3QgdG8gT2JzaWRpYW4ncyBgb2JzaWRpYW4uanNvbmAgZmlsZS5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gVGhlIGNvbmZpZyB0byB3cml0ZS5cbiAqL1xuZnVuY3Rpb24gd3JpdGVPYnNpZGlhbkpzb24oY29uZmlnOiBPYnNpZGlhbkpzb24pOiB2b2lkIHtcbiAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4oZ2V0T2JzaWRpYW5Db25maWdEaXIoKSwgJ29ic2lkaWFuLmpzb24nKTtcbiAgd3JpdGVGaWxlU3luYyhjb25maWdQYXRoLCBKU09OLnN0cmluZ2lmeShjb25maWcpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEseUJBQTRCO0FBQzVCLHFCQUdPO0FBQ1AscUJBQXdCO0FBQ3hCLHVCQUdPO0FBQ1AsMEJBQW9CO0FBMkNiLFNBQVMsb0JBQTBCO0FBQ3hDLFFBQU0sU0FBUyxpQkFBaUIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFO0FBQ2xELFNBQU8sTUFBTTtBQUNiLG9CQUFrQixNQUFNO0FBQzFCO0FBVU8sU0FBUyw0QkFBZ0Q7QUFDOUQsUUFBTSxTQUFTLGlCQUFpQjtBQUNoQyxNQUFJLENBQUMsUUFBUTtBQUNYLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxhQUFhLE9BQU8sT0FBTyxPQUFPLE1BQU0sRUFBRSxDQUFDO0FBQ2pELFNBQU8sWUFBWTtBQUNyQjtBQVFPLFNBQVMsV0FBVyxXQUF1QztBQUNoRSxRQUFNLFNBQVMsaUJBQWlCO0FBQ2hDLE1BQUksQ0FBQyxRQUFRO0FBQ1gsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLG1CQUFtQixjQUFjLFNBQVM7QUFFaEQsYUFBVyxDQUFDLElBQUksS0FBSyxLQUFLLE9BQU8sUUFBUSxPQUFPLE1BQU0sR0FBRztBQUN2RCxRQUFJLGNBQWMsTUFBTSxJQUFJLE1BQU0sa0JBQWtCO0FBQ2xELGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQU9PLFNBQVMsZUFBd0I7QUFDdEMsUUFBTSxTQUFTLGlCQUFpQjtBQUNoQyxTQUFPLFFBQVEsUUFBUTtBQUN6QjtBQVFPLFNBQVMsa0JBQWtCLFdBQTRCO0FBQzVELFNBQU8sV0FBVyxTQUFTLE1BQU07QUFDbkM7QUFXTyxTQUFTLHNCQUFzQixXQUF5QjtBQUM3RCxRQUFNLFNBQVMsaUJBQWlCLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtBQUNsRCxRQUFNLHVCQUF1QjtBQUM3QixRQUFNLFNBQUssZ0NBQVksb0JBQW9CLEVBQUUsU0FBUyxLQUFLO0FBQzNELFNBQU8sT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsSUFBSSxLQUFLLElBQUksRUFBRTtBQUN0RCxTQUFPLE1BQU07QUFDYixvQkFBa0IsTUFBTTtBQUMxQjtBQVFPLFNBQVMsc0JBQXNCLFdBQTRCO0FBQ2hFLFFBQU0sU0FBUyxpQkFBaUI7QUFDaEMsTUFBSSxDQUFDLFFBQVE7QUFDWCxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sbUJBQW1CLGNBQWMsU0FBUztBQUNoRCxNQUFJLFdBQVc7QUFFZixhQUFXLENBQUMsSUFBSSxLQUFLLEtBQUssT0FBTyxRQUFRLE9BQU8sTUFBTSxHQUFHO0FBQ3ZELFFBQUksY0FBYyxNQUFNLElBQUksTUFBTSxrQkFBa0I7QUFFbEQsYUFBTyxPQUFPLE9BQU8sRUFBRTtBQUN2QixpQkFBVztBQUNYO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFFQSxNQUFJLFVBQVU7QUFDWixzQkFBa0IsTUFBTTtBQUFBLEVBQzFCO0FBRUEsU0FBTztBQUNUO0FBT0EsU0FBUyx1QkFBK0I7QUFDdEMsTUFBSSxvQkFBQUEsUUFBUSxhQUFhLFNBQVM7QUFDaEMsVUFBTSxVQUFVLG9CQUFBQSxRQUFRLElBQUksU0FBUztBQUNyQyxRQUFJLFNBQVM7QUFDWCxpQkFBTyx1QkFBSyxTQUFTLFVBQVU7QUFBQSxJQUNqQztBQUFBLEVBQ0Y7QUFFQSxNQUFJLG9CQUFBQSxRQUFRLGFBQWEsVUFBVTtBQUNqQyxlQUFPLDJCQUFLLHdCQUFRLEdBQUcsV0FBVyx1QkFBdUIsVUFBVTtBQUFBLEVBQ3JFO0FBRUEsYUFBTyx1QkFBSyxvQkFBQUEsUUFBUSxJQUFJLGlCQUFpQixTQUFLLDJCQUFLLHdCQUFRLEdBQUcsU0FBUyxHQUFHLFVBQVU7QUFDdEY7QUFTQSxTQUFTLGNBQWMsV0FBMkI7QUFDaEQsUUFBTSxlQUFXLDBCQUFRLFNBQVM7QUFDbEMsU0FBTyxvQkFBQUEsUUFBUSxhQUFhLFVBQVUsU0FBUyxZQUFZLElBQUk7QUFDakU7QUFPQSxTQUFTLG1CQUE2QztBQUNwRCxRQUFNLGlCQUFhLHVCQUFLLHFCQUFxQixHQUFHLGVBQWU7QUFDL0QsTUFBSTtBQUNGLFVBQU0sY0FBVSw2QkFBYSxZQUFZLE9BQU87QUFDaEQsV0FBTyxLQUFLLE1BQU0sT0FBTztBQUFBLEVBQzNCLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBT0EsU0FBUyxrQkFBa0IsUUFBNEI7QUFDckQsUUFBTSxpQkFBYSx1QkFBSyxxQkFBcUIsR0FBRyxlQUFlO0FBQy9ELG9DQUFjLFlBQVksS0FBSyxVQUFVLE1BQU0sQ0FBQztBQUNsRDsiLAogICJuYW1lcyI6IFsicHJvY2VzcyJdCn0K
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuLWNvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFJlYWRzIGFuZCBxdWVyaWVzIE9ic2lkaWFuJ3MgbG9jYWwgY29uZmlndXJhdGlvbiAoYG9ic2lkaWFuLmpzb25gKS5cbiAqL1xuXG5pbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCB7XG4gIHJlYWRGaWxlU3luYyxcbiAgd3JpdGVGaWxlU3luY1xufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7XG4gIGpvaW4sXG4gIHJlc29sdmVcbn0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5cbi8qKlxuICogQSByZWdpc3RlcmVkIHZhdWx0IGVudHJ5IHJldHVybmVkIGJ5IHtAbGluayBnZXRSZWdpc3RlcmVkVmF1bHRzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlcmVkVmF1bHQge1xuICAvKipcbiAgICogVGhlIGhleCB2YXVsdCBJRCBmcm9tIGBvYnNpZGlhbi5qc29uYC5cbiAgICovXG4gIGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZhdWx0IGlzIGN1cnJlbnRseSBtYXJrZWQgYXMgb3Blbi5cbiAgICovXG4gIG9wZW46IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gICAqL1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHRvcC1sZXZlbCBzdHJ1Y3R1cmUgb2YgT2JzaWRpYW4ncyBgb2JzaWRpYW4uanNvbmAgY29uZmlnIGZpbGUuXG4gKi9cbmludGVyZmFjZSBPYnNpZGlhbkpzb24ge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgQ0xJIGlzIGVuYWJsZWQgaW4gT2JzaWRpYW4gc2V0dGluZ3MuXG4gICAqL1xuICBjbGk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNYXAgb2YgdmF1bHQgSURzIHRvIHZhdWx0IGVudHJpZXMuXG4gICAqL1xuICB2YXVsdHM6IFJlY29yZDxzdHJpbmcsIE9ic2lkaWFuVmF1bHRFbnRyeT47XG59XG5cbi8qKlxuICogQSBzaW5nbGUgdmF1bHQgZW50cnkgaW4gYG9ic2lkaWFuLmpzb25gLlxuICovXG5pbnRlcmZhY2UgT2JzaWRpYW5WYXVsdEVudHJ5IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZhdWx0IGlzIGN1cnJlbnRseSBvcGVuLlxuICAgKi9cbiAgb3Blbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gICAqL1xuICBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVzdGFtcCBvZiB0aGUgbGFzdCBhY2Nlc3MuXG4gICAqL1xuICB0czogbnVtYmVyO1xufVxuXG4vKipcbiAqIEVuYWJsZXMgdGhlIENMSSBpbiBPYnNpZGlhbidzIGBvYnNpZGlhbi5qc29uYCBjb25maWcgZmlsZS5cbiAqXG4gKiBTZXRzIGBjbGk6IHRydWVgIHNvIHRoYXQgT2JzaWRpYW4gc3RhcnRzIGl0cyBDTEkgc2VydmVyIG9uIG5leHQgbGF1bmNoLlxuICogSWYgdGhlIGNvbmZpZyBmaWxlIGRvZXNuJ3QgZXhpc3QsIGNyZWF0ZXMgaXQgd2l0aCBhbiBlbXB0eSB2YXVsdHMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlQ2xpSW5Db25maWcoKTogdm9pZCB7XG4gIGNvbnN0IGNvbmZpZyA9IHJlYWRPYnNpZGlhbkpzb24oKSA/PyB7IHZhdWx0czoge30gfTtcbiAgY29uZmlnLmNsaSA9IHRydWU7XG4gIHdyaXRlT2JzaWRpYW5Kc29uKGNvbmZpZyk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcGF0aCBvZiBhbnkgdmF1bHQgdGhhdCBpcyBjdXJyZW50bHkgcmVnaXN0ZXJlZCBpbiBPYnNpZGlhbidzIHJlZ2lzdHJ5LlxuICpcbiAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gYW4gYG9ic2lkaWFuIGV2YWxgIGNhbGwgbXVzdCBydW4gaW5zaWRlIGFuIGV4aXN0aW5nIHZhdWx0XG4gKiB3aW5kb3cgKGUuZy4sIHRvIGlzc3VlIElQQyBjb21tYW5kcyB0aGF0IHJlZ2lzdGVyIG9yIHJlbW92ZSBvdGhlciB2YXVsdHMpLlxuICpcbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIGEgcmVnaXN0ZXJlZCB2YXVsdCwgb3IgYHVuZGVmaW5lZGAgaWYgbm8gdmF1bHRzIGFyZSByZWdpc3RlcmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QW55UmVnaXN0ZXJlZFZhdWx0UGF0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb25maWcgPSByZWFkT2JzaWRpYW5Kc29uKCk7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGZpcnN0RW50cnkgPSBPYmplY3QudmFsdWVzKGNvbmZpZy52YXVsdHMpWzBdO1xuICByZXR1cm4gZmlyc3RFbnRyeT8ucGF0aDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCByZWdpc3RlcmVkIHZhdWx0cyBmcm9tIE9ic2lkaWFuJ3MgYG9ic2lkaWFuLmpzb25gIHJlZ2lzdHJ5LlxuICpcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHJlZ2lzdGVyZWQgdmF1bHQgZW50cmllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZ2lzdGVyZWRWYXVsdHMoKTogUmVnaXN0ZXJlZFZhdWx0W10ge1xuICBjb25zdCBjb25maWcgPSByZWFkT2JzaWRpYW5Kc29uKCk7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbmZpZy52YXVsdHMpLm1hcCgoW2lkLCBlbnRyeV0pID0+ICh7XG4gICAgaWQsXG4gICAgb3BlbjogZW50cnkub3BlbiA9PT0gdHJ1ZSxcbiAgICBwYXRoOiBlbnRyeS5wYXRoXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBoZXggdmF1bHQgSUQgZm9yIGEgZ2l2ZW4gdmF1bHQgcGF0aCBmcm9tIE9ic2lkaWFuJ3MgcmVnaXN0cnkuXG4gKlxuICogQHBhcmFtIHZhdWx0UGF0aCAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIuXG4gKiBAcmV0dXJucyBUaGUgdmF1bHQgSUQsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB2YXVsdCBpcyBub3QgcmVnaXN0ZXJlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhdWx0SWQodmF1bHRQYXRoOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjb25maWcgPSByZWFkT2JzaWRpYW5Kc29uKCk7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRUYXJnZXQgPSBub3JtYWxpemVQYXRoKHZhdWx0UGF0aCk7XG5cbiAgZm9yIChjb25zdCBbaWQsIGVudHJ5XSBvZiBPYmplY3QuZW50cmllcyhjb25maWcudmF1bHRzKSkge1xuICAgIGlmIChub3JtYWxpemVQYXRoKGVudHJ5LnBhdGgpID09PSBub3JtYWxpemVkVGFyZ2V0KSB7XG4gICAgICByZXR1cm4gaWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgT2JzaWRpYW4gQ0xJIGlzIGVuYWJsZWQgaW4gT2JzaWRpYW4ncyBzZXR0aW5ncy5cbiAqXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIENMSSBpcyBlbmFibGVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ2xpRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgY29uc3QgY29uZmlnID0gcmVhZE9ic2lkaWFuSnNvbigpO1xuICByZXR1cm4gY29uZmlnPy5jbGkgPT09IHRydWU7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YXVsdCBpcyBtYXJrZWQgYXMgb3BlbiBpbiBPYnNpZGlhbidzIHZhdWx0IHJlZ2lzdHJ5LlxuICpcbiAqIE5vdGU6IFRoaXMgY2hlY2tzIHRoZSBgb3BlbmAgZmxhZyBpbiBgb2JzaWRpYW4uanNvbmAsIHdoaWNoIGlzIHVwZGF0ZWRcbiAqIGFzeW5jaHJvbm91c2x5IGJ5IE9ic2lkaWFuLiBJdCBtYXkgbm90IHJlZmxlY3QgdGhlIGN1cnJlbnQgcnVudGltZSBzdGF0ZS5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmF1bHQgaXMgcmVnaXN0ZXJlZCBhbmQgbWFya2VkIGFzIG9wZW4sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYXVsdE9wZW4odmF1bHRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgY29uZmlnID0gcmVhZE9ic2lkaWFuSnNvbigpO1xuICBpZiAoIWNvbmZpZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRUYXJnZXQgPSBub3JtYWxpemVQYXRoKHZhdWx0UGF0aCk7XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBPYmplY3QudmFsdWVzKGNvbmZpZy52YXVsdHMpKSB7XG4gICAgaWYgKG5vcm1hbGl6ZVBhdGgoZW50cnkucGF0aCkgPT09IG5vcm1hbGl6ZWRUYXJnZXQpIHtcbiAgICAgIHJldHVybiBlbnRyeS5vcGVuID09PSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhdWx0IHBhdGggaXMgcmVnaXN0ZXJlZCBpbiBPYnNpZGlhbidzIHZhdWx0IHJlZ2lzdHJ5LlxuICpcbiAqIEBwYXJhbSB2YXVsdFBhdGggLSBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdmF1bHQgZm9sZGVyLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YXVsdCBpcyByZWdpc3RlcmVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmF1bHRSZWdpc3RlcmVkKHZhdWx0UGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRWYXVsdElkKHZhdWx0UGF0aCkgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSB2YXVsdCBkaXJlY3RseSBpbiBPYnNpZGlhbidzIGBvYnNpZGlhbi5qc29uYCBjb25maWcgZmlsZS5cbiAqXG4gKiBUaGlzIHdyaXRlcyBhIG5ldyB2YXVsdCBlbnRyeSB3aXRoIGEgcmFuZG9tIGhleCBJRC4gVXNlZCB3aGVuIG5vIGV4aXN0aW5nXG4gKiB2YXVsdCBpcyBhdmFpbGFibGUgdG8gc2VuZCBJUEMgY29tbWFuZHMgdGhyb3VnaCBcdTIwMTQgdGhlIHZhdWx0IGlzIHJlZ2lzdGVyZWRcbiAqIFwib2ZmbGluZVwiIHNvIE9ic2lkaWFuIHdpbGwgb3BlbiBpdCBvbiBuZXh0IGxhdW5jaC5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVmF1bHRJbkNvbmZpZyh2YXVsdFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBjb25maWcgPSByZWFkT2JzaWRpYW5Kc29uKCkgPz8geyB2YXVsdHM6IHt9IH07XG4gIGNvbnN0IFZBVUxUX0lEX0JZVEVfTEVOR1RIID0gODtcbiAgY29uc3QgaWQgPSByYW5kb21CeXRlcyhWQVVMVF9JRF9CWVRFX0xFTkdUSCkudG9TdHJpbmcoJ2hleCcpO1xuICBjb25maWcudmF1bHRzW2lkXSA9IHsgcGF0aDogdmF1bHRQYXRoLCB0czogRGF0ZS5ub3coKSB9O1xuICBjb25maWcuY2xpID0gdHJ1ZTtcbiAgd3JpdGVPYnNpZGlhbkpzb24oY29uZmlnKTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGEgdmF1bHQgZW50cnkgZnJvbSBPYnNpZGlhbidzIGBvYnNpZGlhbi5qc29uYCBjb25maWcgZmlsZS5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlci5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmF1bHQgd2FzIGZvdW5kIGFuZCByZW1vdmVkLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVZhdWx0RnJvbUNvbmZpZyh2YXVsdFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBjb25maWcgPSByZWFkT2JzaWRpYW5Kc29uKCk7XG4gIGlmICghY29uZmlnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZFRhcmdldCA9IG5vcm1hbGl6ZVBhdGgodmF1bHRQYXRoKTtcbiAgbGV0IHdhc0ZvdW5kID0gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBbaWQsIGVudHJ5XSBvZiBPYmplY3QuZW50cmllcyhjb25maWcudmF1bHRzKSkge1xuICAgIGlmIChub3JtYWxpemVQYXRoKGVudHJ5LnBhdGgpID09PSBub3JtYWxpemVkVGFyZ2V0KSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlIC0tIFJlbW92aW5nIGEgdmF1bHQgZW50cnkgYnkgaXRzIGR5bmFtaWMga2V5LlxuICAgICAgZGVsZXRlIGNvbmZpZy52YXVsdHNbaWRdO1xuICAgICAgd2FzRm91bmQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHdhc0ZvdW5kKSB7XG4gICAgd3JpdGVPYnNpZGlhbkpzb24oY29uZmlnKTtcbiAgfVxuXG4gIHJldHVybiB3YXNGb3VuZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBwYXRoIHRvIE9ic2lkaWFuJ3MgY29uZmlnIGRpcmVjdG9yeS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgYG9ic2lkaWFuL2AgY29uZmlnIGRpcmVjdG9yeS5cbiAqL1xuZnVuY3Rpb24gZ2V0T2JzaWRpYW5Db25maWdEaXIoKTogc3RyaW5nIHtcbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicpIHtcbiAgICBjb25zdCBhcHBEYXRhID0gcHJvY2Vzcy5lbnZbJ0FQUERBVEEnXTtcbiAgICBpZiAoYXBwRGF0YSkge1xuICAgICAgcmV0dXJuIGpvaW4oYXBwRGF0YSwgJ29ic2lkaWFuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdkYXJ3aW4nKSB7XG4gICAgcmV0dXJuIGpvaW4oaG9tZWRpcigpLCAnTGlicmFyeScsICdBcHBsaWNhdGlvbiBTdXBwb3J0JywgJ29ic2lkaWFuJyk7XG4gIH1cblxuICByZXR1cm4gam9pbihwcm9jZXNzLmVudlsnWERHX0NPTkZJR19IT01FJ10gPz8gam9pbihob21lZGlyKCksICcuY29uZmlnJyksICdvYnNpZGlhbicpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSB2YXVsdCBwYXRoIGZvciBjb21wYXJpc29uLlxuICogT24gV2luZG93cywgcGF0aHMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHNlcGFyYXRvcnMgbWF5IHZhcnkuXG4gKlxuICogQHBhcmFtIHZhdWx0UGF0aCAtIFRoZSBwYXRoIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHBhdGguXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgodmF1bHRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmUodmF1bHRQYXRoKTtcbiAgcmV0dXJuIHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgPyByZXNvbHZlZC50b0xvd2VyQ2FzZSgpIDogcmVzb2x2ZWQ7XG59XG5cbi8qKlxuICogUmVhZHMgYW5kIHBhcnNlcyBPYnNpZGlhbidzIGBvYnNpZGlhbi5qc29uYCBjb25maWcgZmlsZS5cbiAqXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIGNvbmZpZywgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCBvciBjYW4ndCBiZSBwYXJzZWQuXG4gKi9cbmZ1bmN0aW9uIHJlYWRPYnNpZGlhbkpzb24oKTogT2JzaWRpYW5Kc29uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4oZ2V0T2JzaWRpYW5Db25maWdEaXIoKSwgJ29ic2lkaWFuLmpzb24nKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKGNvbmZpZ1BhdGgsICd1dGYtOCcpO1xuICAgIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnQpIGFzIE9ic2lkaWFuSnNvbjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFdyaXRlcyB0aGUgZ2l2ZW4gY29uZmlnIG9iamVjdCB0byBPYnNpZGlhbidzIGBvYnNpZGlhbi5qc29uYCBmaWxlLlxuICpcbiAqIEBwYXJhbSBjb25maWcgLSBUaGUgY29uZmlnIHRvIHdyaXRlLlxuICovXG5mdW5jdGlvbiB3cml0ZU9ic2lkaWFuSnNvbihjb25maWc6IE9ic2lkaWFuSnNvbik6IHZvaWQge1xuICBjb25zdCBjb25maWdQYXRoID0gam9pbihnZXRPYnNpZGlhbkNvbmZpZ0RpcigpLCAnb2JzaWRpYW4uanNvbicpO1xuICB3cml0ZUZpbGVTeW5jKGNvbmZpZ1BhdGgsIEpTT04uc3RyaW5naWZ5KGNvbmZpZykpO1xufVxuIl0sCiAg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
|
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Reads and queries Obsidian's local configuration (`obsidian.json`).
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* A registered vault entry returned by {@link getRegisteredVaults}.
|
|
8
|
+
*/
|
|
9
|
+
export interface RegisteredVault {
|
|
10
|
+
/**
|
|
11
|
+
* The hex vault ID from `obsidian.json`.
|
|
12
|
+
*/
|
|
13
|
+
id: string;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the vault is currently marked as open.
|
|
16
|
+
*/
|
|
17
|
+
open: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* The absolute path to the vault folder.
|
|
20
|
+
*/
|
|
21
|
+
path: string;
|
|
22
|
+
}
|
|
6
23
|
/**
|
|
7
24
|
* Enables the CLI in Obsidian's `obsidian.json` config file.
|
|
8
25
|
*
|
|
@@ -19,6 +36,12 @@ export declare function enableCliInConfig(): void;
|
|
|
19
36
|
* @returns The absolute path to a registered vault, or `undefined` if no vaults are registered.
|
|
20
37
|
*/
|
|
21
38
|
export declare function getAnyRegisteredVaultPath(): string | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Returns all registered vaults from Obsidian's `obsidian.json` registry.
|
|
41
|
+
*
|
|
42
|
+
* @returns An array of registered vault entries.
|
|
43
|
+
*/
|
|
44
|
+
export declare function getRegisteredVaults(): RegisteredVault[];
|
|
22
45
|
/**
|
|
23
46
|
* Returns the hex vault ID for a given vault path from Obsidian's registry.
|
|
24
47
|
*
|
|
@@ -32,6 +55,16 @@ export declare function getVaultId(vaultPath: string): string | undefined;
|
|
|
32
55
|
* @returns `true` if the CLI is enabled, `false` otherwise.
|
|
33
56
|
*/
|
|
34
57
|
export declare function isCliEnabled(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Checks whether a vault is marked as open in Obsidian's vault registry.
|
|
60
|
+
*
|
|
61
|
+
* Note: This checks the `open` flag in `obsidian.json`, which is updated
|
|
62
|
+
* asynchronously by Obsidian. It may not reflect the current runtime state.
|
|
63
|
+
*
|
|
64
|
+
* @param vaultPath - The absolute path to the vault folder.
|
|
65
|
+
* @returns `true` if the vault is registered and marked as open, `false` otherwise.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isVaultOpen(vaultPath: string): boolean;
|
|
35
68
|
/**
|
|
36
69
|
* Checks whether a vault path is registered in Obsidian's vault registry.
|
|
37
70
|
*
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var obsidian_namespace_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(obsidian_namespace_exports);
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL29ic2lkaWFuLW5hbWVzcGFjZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBgd2luZG93Ll9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgIG5hbWVzcGFjZVxuICogdXNlZCBpbnNpZGUgdGhlIE9ic2lkaWFuIHByb2Nlc3MuIEFsbCBsaWJyYXJ5IHN0YXRlIGFuZCByZWdpc3RlcmVkIGhlbHBlclxuICogZnVuY3Rpb25zIGxpdmUgdW5kZXIgdGhpcyBzaW5nbGUgbmFtZXNwYWNlIHRvIGF2b2lkIHBvbGx1dGluZyBgd2luZG93YC5cbiAqL1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSByZWdpc3RlcmVkIGBldmFsV3JhcHBlcmAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbFdyYXBwZXJOYW1lc3BhY2VQYXJhbXMge1xuICAvKiogVXNlci1zdXBwbGllZCBhcmd1bWVudHMgdG8gcGFzcyB0byBgZm5gLiAqL1xuICBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIE9wdGlvbmFsIGNvbnRleHQgSUQgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZS4gKi9cbiAgY29udGV4dElkPzogc3RyaW5nO1xuICAvKiogVGhlIHVzZXIgZnVuY3Rpb24gdG8gZXZhbHVhdGUuICovXG4gIGZuKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdOYW1lc3BhY2UuaXBjU2VuZFN5bmN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElwY1NlbmRTeW5jTmFtZXNwYWNlUGFyYW1zIHtcbiAgLyoqIFRoZSBJUEMgYXJndW1lbnRzLiAqL1xuICBhcmdzOiB1bmtub3duW107XG4gIC8qKiBUaGUgSVBDIGNoYW5uZWwgbmFtZS4gKi9cbiAgY2hhbm5lbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhvbGRlciBpbnRlcmZhY2UgZm9yIHR5cGUtc2FmZSBhY2Nlc3MgdG8gYHdpbmRvdy5fX29ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nYC5cbiAqIFVzZSB3aXRoIGBQYXJ0aWFsPE9ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nSG9sZGVyPmAgdG8gc2FmZWx5IGNoZWNrIGV4aXN0ZW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkludGVncmF0aW9uVGVzdGluZ0hvbGRlciB7XG4gIF9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3Rpbmc6IE9ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nTmFtZXNwYWNlO1xufVxuXG4vKipcbiAqIFRoZSBuYW1lc3BhY2Ugb2JqZWN0IHN0b3JlZCBvbiBgd2luZG93Ll9fb2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdgXG4gKiBpbnNpZGUgdGhlIE9ic2lkaWFuIHByb2Nlc3MuIFJlZ2lzdGVyZWQgb25jZSB2aWEge0BsaW5rIGJvb3RzdHJhcE5hbWVzcGFjZX1cbiAqIGFuZCByZXVzZWQgYWNyb3NzIGFsbCBzdWJzZXF1ZW50IGBldmFsSW5PYnNpZGlhbmAgY2FsbHMuXG4gKlxuICogQWxsIGZ1bmN0aW9ucyBhY2Nlc3MgYHdpbmRvdy5hcHBgIGRpcmVjdGx5IFx1MjAxNCBjYWxsZXJzIGRvIG5vdCBuZWVkIHRvIHBhc3MgaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5JbnRlZ3JhdGlvblRlc3RpbmdOYW1lc3BhY2Uge1xuICAvKipcbiAgICogUGVyc2lzdGVudCBjb250ZXh0IG9iamVjdHMga2V5ZWQgYnkge0BsaW5rIENvbnRleHRJZH0gc3RyaW5nLlxuICAgKiBQcmVzZXJ2ZWQgYWNyb3NzIHZlcnNpb24gdXBncmFkZXMgc28gbGl2ZSBjb250ZXh0IHJlZmVyZW5jZXMgc3Vydml2ZS5cbiAgICovXG4gIGNvbnRleHRzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj47XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBjdXJyZW50IEVsZWN0cm9uIHdpbmRvdy5cbiAgICovXG4gIGRlc3Ryb3lDdXJyZW50V2luZG93KCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFdhaXRzIGZvciB0aGUgT2JzaWRpYW4gd29ya3NwYWNlIGxheW91dCB0byBiZSByZWFkeS5cbiAgICovXG4gIGVuc3VyZUxheW91dFJlYWR5KCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSB0b3AtbGV2ZWwgd3JhcHBlciB0aGF0IHNldHMgdXAgY29udGV4dCwgcmVzb2x2ZXMgdGhlIG9ic2lkaWFuIG1vZHVsZSxcbiAgICogY2FsbHMgdGhlIHVzZXIncyBmdW5jdGlvbiwgYW5kIHJldHVybnMgYSBKU09OIGVudmVsb3BlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBpbmNsdWRpbmcgdGhlIHVzZXIncyBmdW5jdGlvbiwgYXJncywgYW5kIGNvbnRleHQgSUQuXG4gICAqIEByZXR1cm5zIEEgSlNPTi1zdHJpbmdpZmllZCByZXN1bHQgZW52ZWxvcGUuXG4gICAqL1xuICBldmFsV3JhcHBlcihwYXJhbXM6IEV2YWxXcmFwcGVyTmFtZXNwYWNlUGFyYW1zKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgYG9ic2lkaWFuYCBtb2R1bGUgYXQgcnVudGltZSBpbnNpZGUgdGhlIE9ic2lkaWFuIHByb2Nlc3MuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBgb2JzaWRpYW5gIG1vZHVsZS5cbiAgICovXG4gIGdldE9ic2lkaWFuTW9kdWxlKCk6IFByb21pc2U8dW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFNlbmRzIGFuIElQQyBtZXNzYWdlIHN5bmNocm9ub3VzbHkgdmlhIEVsZWN0cm9uJ3MgYGlwY1JlbmRlcmVyYC5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBJUEMgY2hhbm5lbCBhbmQgYXJndW1lbnRzLlxuICAgKi9cbiAgaXBjU2VuZFN5bmMocGFyYW1zOiBJcGNTZW5kU3luY05hbWVzcGFjZVBhcmFtcyk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIENhY2hlZCBgb2JzaWRpYW5gIG1vZHVsZSwgc2V0IGJ5IHtAbGluayBnZXRPYnNpZGlhbk1vZHVsZX0gb24gZmlyc3QgcmVzb2x1dGlvbi5cbiAgICovXG4gIG9ic2lkaWFuTW9kdWxlPzogdW5rbm93bjtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdmF1bHQncyBiYXNlIHBhdGggYXMgYSBKU09OLWVuY29kZWQgc3RyaW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgSlNPTi1lbmNvZGVkIGJhc2UgcGF0aC5cbiAgICovXG4gIHBvbGxWYXVsdEJhc2VQYXRoKCk6IFByb21pc2U8c3RyaW5nPjtcblxuICAvKipcbiAgICogU2VyaWFsaXplcyBhbiBlcnJvciBpbnRvIGEgaHVtYW4tcmVhZGFibGUgc3RyaW5nIHdpdGggc3RhY2sgdHJhY2UgYW5kIGNhdXNlIGNoYWluLlxuICAgKlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgdG8gc2VyaWFsaXplLlxuICAgKiBAcGFyYW0gZGVwdGggLSBUaGUgY3VycmVudCBuZXN0aW5nIGRlcHRoLlxuICAgKiBAcmV0dXJucyBBIGZvcm1hdHRlZCBlcnJvciBzdHJpbmcuXG4gICAqL1xuICBzZXJpYWxpemVFcnJvcihlcnJvcjogdW5rbm93biwgZGVwdGg/OiBudW1iZXIpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBgbG9jYWxTdG9yYWdlYCBpdGVtLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGtleSBhbmQgdmFsdWUgdG8gc2V0LlxuICAgKi9cbiAgc2V0TG9jYWxTdG9yYWdlSXRlbShwYXJhbXM6IFNldExvY2FsU3RvcmFnZUl0ZW1OYW1lc3BhY2VQYXJhbXMpOiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlicmFyeSB2ZXJzaW9uIHRoYXQgd2FzIHVzZWQgdG8gYm9vdHN0cmFwIHRoaXMgbmFtZXNwYWNlLlxuICAgKiBVc2VkIHRvIGRldGVjdCB2ZXJzaW9uIG1pc21hdGNoZXMgYW5kIHJlLWluaXRpYWxpemUuXG4gICAqL1xuICB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIE9ic2lkaWFuSW50ZWdyYXRpb25UZXN0aW5nTmFtZXNwYWNlLnNldExvY2FsU3RvcmFnZUl0ZW19LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNldExvY2FsU3RvcmFnZUl0ZW1OYW1lc3BhY2VQYXJhbXMge1xuICAvKiogVGhlIGxvY2FsU3RvcmFnZSBrZXkuICovXG4gIGtleTogc3RyaW5nO1xuICAvKiogVGhlIGxvY2FsU3RvcmFnZSB2YWx1ZS4gKi9cbiAgdmFsdWU6IHN0cmluZztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for the `window.__obsidianIntegrationTesting` namespace
|
|
5
|
+
* used inside the Obsidian process. All library state and registered helper
|
|
6
|
+
* functions live under this single namespace to avoid polluting `window`.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Parameters for the registered `evalWrapper` function.
|
|
10
|
+
*/
|
|
11
|
+
export interface EvalWrapperNamespaceParams {
|
|
12
|
+
/** User-supplied arguments to pass to `fn`. */
|
|
13
|
+
args: Record<string, unknown>;
|
|
14
|
+
/** Optional context ID for persistent storage. */
|
|
15
|
+
contextId?: string;
|
|
16
|
+
/** The user function to evaluate. */
|
|
17
|
+
fn(args: Record<string, unknown>): unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parameters for {@link ObsidianIntegrationTestingNamespace.ipcSendSync}.
|
|
21
|
+
*/
|
|
22
|
+
export interface IpcSendSyncNamespaceParams {
|
|
23
|
+
/** The IPC arguments. */
|
|
24
|
+
args: unknown[];
|
|
25
|
+
/** The IPC channel name. */
|
|
26
|
+
channel: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Holder interface for type-safe access to `window.__obsidianIntegrationTesting`.
|
|
30
|
+
* Use with `Partial<ObsidianIntegrationTestingHolder>` to safely check existence.
|
|
31
|
+
*/
|
|
32
|
+
export interface ObsidianIntegrationTestingHolder {
|
|
33
|
+
__obsidianIntegrationTesting: ObsidianIntegrationTestingNamespace;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The namespace object stored on `window.__obsidianIntegrationTesting`
|
|
37
|
+
* inside the Obsidian process. Registered once via {@link bootstrapNamespace}
|
|
38
|
+
* and reused across all subsequent `evalInObsidian` calls.
|
|
39
|
+
*
|
|
40
|
+
* All functions access `window.app` directly — callers do not need to pass it.
|
|
41
|
+
*/
|
|
42
|
+
export interface ObsidianIntegrationTestingNamespace {
|
|
43
|
+
/**
|
|
44
|
+
* Persistent context objects keyed by {@link ContextId} string.
|
|
45
|
+
* Preserved across version upgrades so live context references survive.
|
|
46
|
+
*/
|
|
47
|
+
contexts: Record<string, Record<string, unknown>>;
|
|
48
|
+
/**
|
|
49
|
+
* Destroys the current Electron window.
|
|
50
|
+
*/
|
|
51
|
+
destroyCurrentWindow(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Waits for the Obsidian workspace layout to be ready.
|
|
54
|
+
*/
|
|
55
|
+
ensureLayoutReady(): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* The top-level wrapper that sets up context, resolves the obsidian module,
|
|
58
|
+
* calls the user's function, and returns a JSON envelope.
|
|
59
|
+
*
|
|
60
|
+
* @param params - Parameters including the user's function, args, and context ID.
|
|
61
|
+
* @returns A JSON-stringified result envelope.
|
|
62
|
+
*/
|
|
63
|
+
evalWrapper(params: EvalWrapperNamespaceParams): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Resolves the `obsidian` module at runtime inside the Obsidian process.
|
|
66
|
+
*
|
|
67
|
+
* @returns The `obsidian` module.
|
|
68
|
+
*/
|
|
69
|
+
getObsidianModule(): Promise<unknown>;
|
|
70
|
+
/**
|
|
71
|
+
* Sends an IPC message synchronously via Electron's `ipcRenderer`.
|
|
72
|
+
*
|
|
73
|
+
* @param params - The IPC channel and arguments.
|
|
74
|
+
*/
|
|
75
|
+
ipcSendSync(params: IpcSendSyncNamespaceParams): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Cached `obsidian` module, set by {@link getObsidianModule} on first resolution.
|
|
78
|
+
*/
|
|
79
|
+
obsidianModule?: unknown;
|
|
80
|
+
/**
|
|
81
|
+
* Returns the vault's base path as a JSON-encoded string.
|
|
82
|
+
*
|
|
83
|
+
* @returns The JSON-encoded base path.
|
|
84
|
+
*/
|
|
85
|
+
pollVaultBasePath(): Promise<string>;
|
|
86
|
+
/**
|
|
87
|
+
* Serializes an error into a human-readable string with stack trace and cause chain.
|
|
88
|
+
*
|
|
89
|
+
* @param error - The error to serialize.
|
|
90
|
+
* @param depth - The current nesting depth.
|
|
91
|
+
* @returns A formatted error string.
|
|
92
|
+
*/
|
|
93
|
+
serializeError(error: unknown, depth?: number): string;
|
|
94
|
+
/**
|
|
95
|
+
* Sets a `localStorage` item.
|
|
96
|
+
*
|
|
97
|
+
* @param params - The key and value to set.
|
|
98
|
+
*/
|
|
99
|
+
setLocalStorageItem(params: SetLocalStorageItemNamespaceParams): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* The library version that was used to bootstrap this namespace.
|
|
102
|
+
* Used to detect version mismatches and re-initialize.
|
|
103
|
+
*/
|
|
104
|
+
version: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Parameters for {@link ObsidianIntegrationTestingNamespace.setLocalStorageItem}.
|
|
108
|
+
*/
|
|
109
|
+
export interface SetLocalStorageItemNamespaceParams {
|
|
110
|
+
/** The localStorage key. */
|
|
111
|
+
key: string;
|
|
112
|
+
/** The localStorage value. */
|
|
113
|
+
value: string;
|
|
114
|
+
}
|