obsidian-integration-testing 11.0.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/cjs/adb-device-list.cjs +54 -0
- package/dist/lib/cjs/adb-device-list.d.cts +72 -0
- package/dist/lib/cjs/android-sdk.cjs +52 -0
- package/dist/lib/cjs/android-sdk.d.cts +29 -0
- package/dist/lib/cjs/app-startup-progress.cjs +87 -0
- package/dist/lib/cjs/app-startup-progress.d.cts +128 -0
- package/dist/lib/cjs/appium-server-marker.cjs +112 -0
- package/dist/lib/cjs/appium-server-marker.d.cts +103 -0
- package/dist/lib/cjs/avd-probe-verdict.cjs +90 -0
- package/dist/lib/cjs/avd-probe-verdict.d.cts +175 -0
- package/dist/lib/cjs/cli.cjs +104 -19
- package/dist/lib/cjs/cli.d.cts +16 -8
- package/dist/lib/cjs/community-plugin-registry.cjs +52 -0
- package/dist/lib/cjs/community-plugin-registry.d.cts +116 -0
- package/dist/lib/cjs/config-directory-fallback-error.cjs +57 -0
- package/dist/lib/cjs/config-directory-fallback-error.d.cts +64 -0
- package/dist/lib/cjs/config-directory.cjs +46 -0
- package/dist/lib/cjs/config-directory.d.cts +45 -0
- package/dist/lib/cjs/connect-to-cdp.cjs +13 -7
- package/dist/lib/cjs/connect-to-cdp.d.cts +19 -0
- package/dist/lib/cjs/context-provider.cjs +12 -1
- package/dist/lib/cjs/context-provider.d.cts +26 -3
- package/dist/lib/cjs/demo-vault-bootstrap.cjs +148 -0
- package/dist/lib/cjs/demo-vault-bootstrap.d.cts +114 -0
- package/dist/lib/cjs/demo-vault-populate.cjs +38 -10
- package/dist/lib/cjs/demo-vault-populate.d.cts +70 -0
- package/dist/lib/cjs/device-readiness.cjs +38 -3
- package/dist/lib/cjs/device-readiness.d.cts +83 -9
- package/dist/lib/cjs/emulator-arguments.cjs +6 -2
- package/dist/lib/cjs/emulator-arguments.d.cts +26 -0
- package/dist/lib/cjs/emulator-backend.cjs +71 -0
- package/dist/lib/cjs/emulator-backend.d.cts +76 -0
- package/dist/lib/cjs/emulator-liveness.cjs +72 -0
- package/dist/lib/cjs/emulator-liveness.d.cts +158 -0
- package/dist/lib/cjs/emulator-snapshot.cjs +57 -0
- package/dist/lib/cjs/emulator-snapshot.d.cts +68 -0
- package/dist/lib/cjs/eval-in-obsidian.cjs +1 -1
- package/dist/lib/cjs/eval-in-obsidian.d.cts +42 -13
- package/dist/lib/cjs/global-setup-core.cjs +30 -30
- package/dist/lib/cjs/global-setup-core.d.cts +27 -2
- package/dist/lib/cjs/headless-vault-config.cjs +51 -0
- package/dist/lib/cjs/headless-vault-config.d.cts +67 -0
- package/dist/lib/cjs/index.cjs +24 -1
- package/dist/lib/cjs/index.d.cts +14 -5
- package/dist/lib/cjs/installer-asset.cjs +1 -1
- package/dist/lib/cjs/installer-asset.d.cts +1 -1
- package/dist/lib/cjs/integration-setup-failed-error.cjs +62 -0
- package/dist/lib/cjs/integration-setup-failed-error.d.cts +66 -0
- package/dist/lib/cjs/jest/global-setup.cjs +2 -2
- package/dist/lib/cjs/jest/global-setup.d.cts +5 -1
- package/dist/lib/cjs/kill-process-tree.cjs +18 -7
- package/dist/lib/cjs/kill-process-tree.d.cts +10 -2
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/mobile-input.cjs +173 -0
- package/dist/lib/cjs/mobile-input.d.cts +156 -0
- package/dist/lib/cjs/namespace-bootstrap.cjs +92 -9
- package/dist/lib/cjs/obsidian-installer.cjs +1 -1
- package/dist/lib/cjs/obsidian-instance.cjs +52 -3
- package/dist/lib/cjs/obsidian-instance.d.cts +12 -0
- package/dist/lib/cjs/obsidian-metadata.cjs +123 -17
- package/dist/lib/cjs/obsidian-metadata.d.cts +17 -6
- package/dist/lib/cjs/obsidian-version-switch.cjs +3 -3
- package/dist/lib/cjs/open-obsidian-settings-tab.cjs +1 -1
- package/dist/lib/cjs/open-obsidian-settings-tab.d.cts +3 -2
- package/dist/lib/cjs/owned-instance-exit-marker.cjs +99 -0
- package/dist/lib/cjs/owned-instance-exit-marker.d.cts +106 -0
- package/dist/lib/cjs/owned-instance-exited-error.cjs +106 -0
- package/dist/lib/cjs/owned-instance-exited-error.d.cts +98 -0
- package/dist/lib/cjs/owned-vault-seed.cjs +9 -5
- package/dist/lib/cjs/owned-vault-seed.d.cts +24 -3
- package/dist/lib/cjs/parent-liveness.cjs +42 -5
- package/dist/lib/cjs/parent-liveness.d.cts +37 -5
- package/dist/lib/cjs/port-owner.cjs +61 -0
- package/dist/lib/cjs/port-owner.d.cts +47 -0
- package/dist/lib/cjs/process-capture.cjs +62 -0
- package/dist/lib/cjs/process-capture.d.cts +83 -0
- package/dist/lib/cjs/process-exit-message.cjs +14 -8
- package/dist/lib/cjs/process-exit-message.d.cts +37 -3
- package/dist/lib/cjs/process-liveness.cjs +51 -0
- package/dist/lib/cjs/process-liveness.d.cts +18 -0
- package/dist/lib/cjs/release-catalog.cjs +73 -0
- package/dist/lib/cjs/release-catalog.d.cts +125 -0
- package/dist/lib/cjs/run-version-matrix.cjs +1 -1
- package/dist/lib/cjs/run-version-matrix.d.cts +1 -1
- package/dist/lib/cjs/teardown-verdict.cjs +53 -0
- package/dist/lib/cjs/teardown-verdict.d.cts +69 -0
- package/dist/lib/cjs/temporary-vault.cjs +43 -8
- package/dist/lib/cjs/temporary-vault.d.cts +47 -5
- package/dist/lib/cjs/transport-appium.cjs +223 -17
- package/dist/lib/cjs/transport-appium.d.cts +104 -3
- package/dist/lib/cjs/transport-desktop-cdp.cjs +201 -6
- package/dist/lib/cjs/transport-desktop-cdp.d.cts +100 -0
- package/dist/lib/cjs/transport-factory.cjs +1165 -142
- package/dist/lib/cjs/transport-factory.d.cts +10 -1
- package/dist/lib/cjs/transport-options.cjs +11 -3
- package/dist/lib/cjs/transport-options.d.cts +131 -12
- package/dist/lib/cjs/transport.cjs +1 -1
- package/dist/lib/cjs/transport.d.cts +7 -1
- package/dist/lib/cjs/vault-plugin-install.cjs +40 -0
- package/dist/lib/cjs/vault-plugin-install.d.cts +64 -0
- package/dist/lib/cjs/vault-teardown-verdict.cjs +42 -0
- package/dist/lib/cjs/vault-teardown-verdict.d.cts +57 -0
- package/dist/lib/cjs/version-matrix.cjs +1 -1
- package/dist/lib/cjs/version-matrix.d.cts +2 -2
- package/dist/lib/cjs/vitest/global-setup.cjs +13 -7
- package/dist/lib/cjs/vitest/global-setup.d.cts +5 -1
- package/dist/lib/cjs/vitest/setup.cjs +2 -1
- package/dist/lib/cjs/vitest/setup.d.cts +5 -0
- package/dist/lib/cjs/vitest/typings.d.cts +6 -4
- package/dist/lib/cjs/webview-cdp.cjs +263 -0
- package/dist/lib/cjs/webview-cdp.d.cts +156 -0
- package/dist/lib/cjs/wedged-appium-server.cjs +113 -0
- package/dist/lib/cjs/wedged-appium-server.d.cts +187 -0
- package/dist/lib/esm/adb-device-list.d.mts +72 -0
- package/dist/lib/esm/adb-device-list.mjs +28 -0
- package/dist/lib/esm/android-sdk.d.mts +29 -0
- package/dist/lib/esm/android-sdk.mjs +18 -0
- package/dist/lib/esm/app-startup-progress.d.mts +128 -0
- package/dist/lib/esm/app-startup-progress.mjs +59 -0
- package/dist/lib/esm/appium-server-marker.d.mts +103 -0
- package/dist/lib/esm/appium-server-marker.mjs +89 -0
- package/dist/lib/esm/avd-probe-verdict.d.mts +175 -0
- package/dist/lib/esm/avd-probe-verdict.mjs +62 -0
- package/dist/lib/esm/cli.d.mts +16 -8
- package/dist/lib/esm/cli.mjs +110 -19
- package/dist/lib/esm/community-plugin-registry.d.mts +116 -0
- package/dist/lib/esm/community-plugin-registry.mjs +23 -0
- package/dist/lib/esm/config-directory-fallback-error.d.mts +64 -0
- package/dist/lib/esm/config-directory-fallback-error.mjs +33 -0
- package/dist/lib/esm/config-directory.d.mts +45 -0
- package/dist/lib/esm/config-directory.mjs +21 -0
- package/dist/lib/esm/connect-to-cdp.d.mts +19 -0
- package/dist/lib/esm/connect-to-cdp.mjs +13 -7
- package/dist/lib/esm/context-provider.d.mts +26 -3
- package/dist/lib/esm/context-provider.mjs +10 -1
- package/dist/lib/esm/demo-vault-bootstrap.d.mts +114 -0
- package/dist/lib/esm/demo-vault-bootstrap.mjs +127 -0
- package/dist/lib/esm/demo-vault-populate.d.mts +70 -0
- package/dist/lib/esm/demo-vault-populate.mjs +35 -9
- package/dist/lib/esm/device-readiness.d.mts +83 -9
- package/dist/lib/esm/device-readiness.mjs +34 -2
- package/dist/lib/esm/emulator-arguments.d.mts +26 -0
- package/dist/lib/esm/emulator-arguments.mjs +6 -2
- package/dist/lib/esm/emulator-backend.d.mts +76 -0
- package/dist/lib/esm/emulator-backend.mjs +45 -0
- package/dist/lib/esm/emulator-liveness.d.mts +158 -0
- package/dist/lib/esm/emulator-liveness.mjs +47 -0
- package/dist/lib/esm/emulator-snapshot.d.mts +68 -0
- package/dist/lib/esm/emulator-snapshot.mjs +32 -0
- package/dist/lib/esm/eval-in-obsidian.d.mts +42 -13
- package/dist/lib/esm/eval-in-obsidian.mjs +1 -1
- package/dist/lib/esm/global-setup-core.d.mts +27 -2
- package/dist/lib/esm/global-setup-core.mjs +34 -35
- package/dist/lib/esm/headless-vault-config.d.mts +67 -0
- package/dist/lib/esm/headless-vault-config.mjs +31 -0
- package/dist/lib/esm/index.d.mts +14 -5
- package/dist/lib/esm/index.mjs +26 -2
- package/dist/lib/esm/installer-asset.d.mts +1 -1
- package/dist/lib/esm/installer-asset.mjs +1 -1
- package/dist/lib/esm/integration-setup-failed-error.d.mts +66 -0
- package/dist/lib/esm/integration-setup-failed-error.mjs +38 -0
- package/dist/lib/esm/jest/global-setup.d.mts +5 -1
- package/dist/lib/esm/jest/global-setup.mjs +2 -2
- package/dist/lib/esm/kill-process-tree.d.mts +10 -2
- package/dist/lib/esm/kill-process-tree.mjs +16 -6
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/mobile-input.d.mts +156 -0
- package/dist/lib/esm/mobile-input.mjs +144 -0
- package/dist/lib/esm/namespace-bootstrap.mjs +95 -9
- package/dist/lib/esm/obsidian-installer.mjs +1 -1
- package/dist/lib/esm/obsidian-instance.d.mts +12 -0
- package/dist/lib/esm/obsidian-instance.mjs +55 -3
- package/dist/lib/esm/obsidian-metadata.d.mts +17 -6
- package/dist/lib/esm/obsidian-metadata.mjs +123 -17
- package/dist/lib/esm/obsidian-version-switch.mjs +3 -3
- package/dist/lib/esm/open-obsidian-settings-tab.d.mts +3 -2
- package/dist/lib/esm/open-obsidian-settings-tab.mjs +1 -1
- package/dist/lib/esm/owned-instance-exit-marker.d.mts +106 -0
- package/dist/lib/esm/owned-instance-exit-marker.mjs +78 -0
- package/dist/lib/esm/owned-instance-exited-error.d.mts +98 -0
- package/dist/lib/esm/owned-instance-exited-error.mjs +81 -0
- package/dist/lib/esm/owned-vault-seed.d.mts +24 -3
- package/dist/lib/esm/owned-vault-seed.mjs +9 -5
- package/dist/lib/esm/parent-liveness.d.mts +37 -5
- package/dist/lib/esm/parent-liveness.mjs +42 -5
- package/dist/lib/esm/port-owner.d.mts +47 -0
- package/dist/lib/esm/port-owner.mjs +36 -0
- package/dist/lib/esm/process-capture.d.mts +83 -0
- package/dist/lib/esm/process-capture.mjs +38 -0
- package/dist/lib/esm/process-exit-message.d.mts +37 -3
- package/dist/lib/esm/process-exit-message.mjs +13 -8
- package/dist/lib/esm/process-liveness.d.mts +18 -0
- package/dist/lib/esm/process-liveness.mjs +17 -0
- package/dist/lib/esm/release-catalog.d.mts +125 -0
- package/dist/lib/esm/release-catalog.mjs +46 -0
- package/dist/lib/esm/run-version-matrix.d.mts +1 -1
- package/dist/lib/esm/run-version-matrix.mjs +1 -1
- package/dist/lib/esm/teardown-verdict.d.mts +69 -0
- package/dist/lib/esm/teardown-verdict.mjs +28 -0
- package/dist/lib/esm/temporary-vault.d.mts +47 -5
- package/dist/lib/esm/temporary-vault.mjs +43 -8
- package/dist/lib/esm/transport-appium.d.mts +104 -3
- package/dist/lib/esm/transport-appium.mjs +233 -17
- package/dist/lib/esm/transport-desktop-cdp.d.mts +100 -0
- package/dist/lib/esm/transport-desktop-cdp.mjs +208 -7
- package/dist/lib/esm/transport-factory.d.mts +10 -1
- package/dist/lib/esm/transport-factory.mjs +1220 -149
- package/dist/lib/esm/transport-options.d.mts +131 -12
- package/dist/lib/esm/transport-options.mjs +9 -2
- package/dist/lib/esm/transport.d.mts +7 -1
- package/dist/lib/esm/vault-plugin-install.d.mts +64 -0
- package/dist/lib/esm/vault-plugin-install.mjs +20 -0
- package/dist/lib/esm/vault-teardown-verdict.d.mts +57 -0
- package/dist/lib/esm/vault-teardown-verdict.mjs +18 -0
- package/dist/lib/esm/version-matrix.d.mts +2 -2
- package/dist/lib/esm/version-matrix.mjs +1 -1
- package/dist/lib/esm/vitest/global-setup.d.mts +5 -1
- package/dist/lib/esm/vitest/global-setup.mjs +14 -7
- package/dist/lib/esm/vitest/setup.d.mts +5 -0
- package/dist/lib/esm/vitest/setup.mjs +3 -1
- package/dist/lib/esm/vitest/typings.d.mts +6 -4
- package/dist/lib/esm/webview-cdp.d.mts +156 -0
- package/dist/lib/esm/webview-cdp.mjs +235 -0
- package/dist/lib/esm/wedged-appium-server.d.mts +187 -0
- package/dist/lib/esm/wedged-appium-server.mjs +86 -0
- package/package.json +25 -23
- package/dist/lib/cjs/native-dialog-monitor.cjs +0 -192
- package/dist/lib/cjs/native-dialog-monitor.d.cts +0 -66
- package/dist/lib/cjs/obsidian-namespace.cjs +0 -17
- package/dist/lib/cjs/obsidian-namespace.d.cts +0 -128
- package/dist/lib/esm/native-dialog-monitor.d.mts +0 -66
- package/dist/lib/esm/native-dialog-monitor.mjs +0 -158
- package/dist/lib/esm/obsidian-namespace.d.mts +0 -128
- package/dist/lib/esm/obsidian-namespace.mjs +0 -1
|
@@ -63,6 +63,14 @@ export interface AppiumTransportConfig {
|
|
|
63
63
|
* Defaults to `'md.obsidian'`.
|
|
64
64
|
*/
|
|
65
65
|
appId?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Timeout in milliseconds for Obsidian Mobile to get as far as `globalThis.app`
|
|
68
|
+
* existing after the vault is (re)opened, before the tighter
|
|
69
|
+
* {@link layoutReadyTimeoutInMilliseconds} clock starts.
|
|
70
|
+
*
|
|
71
|
+
* @default `180000`
|
|
72
|
+
*/
|
|
73
|
+
appStartTimeoutInMilliseconds?: number;
|
|
66
74
|
/**
|
|
67
75
|
* The Appium browser/driver instance.
|
|
68
76
|
* Created by the consumer via e.g. WebDriverIO's `remote()`.
|
|
@@ -84,8 +92,9 @@ export interface AppiumTransportConfig {
|
|
|
84
92
|
*/
|
|
85
93
|
isSessionOwner?: boolean;
|
|
86
94
|
/**
|
|
87
|
-
* Timeout in milliseconds for waiting for `app.workspace.layoutReady
|
|
88
|
-
* the
|
|
95
|
+
* Timeout in milliseconds for waiting for `app.workspace.layoutReady`, counted
|
|
96
|
+
* from the moment {@link appStartTimeoutInMilliseconds} is satisfied — not from
|
|
97
|
+
* the reload, so a cold app start is not charged against it.
|
|
89
98
|
*
|
|
90
99
|
* @default `90000`
|
|
91
100
|
*/
|
|
@@ -141,8 +150,23 @@ export declare class AppiumTransport implements ObsidianTransport {
|
|
|
141
150
|
*/
|
|
142
151
|
readonly isMobile = true;
|
|
143
152
|
private readonly appId;
|
|
153
|
+
private readonly appStartTimeoutInMilliseconds;
|
|
144
154
|
private readonly browser;
|
|
145
155
|
private readonly deviceId;
|
|
156
|
+
/**
|
|
157
|
+
* The `process.on('exit')` handler that tears the channel down when nothing else will.
|
|
158
|
+
*/
|
|
159
|
+
private disposeInputChannelOnExit;
|
|
160
|
+
/**
|
|
161
|
+
* The host half of the trusted-input channel: a CDP connection to the WebView, independent of the
|
|
162
|
+
* Appium session, opened lazily on first evaluate and reused (see **L39**).
|
|
163
|
+
*/
|
|
164
|
+
private inputChannel;
|
|
165
|
+
/**
|
|
166
|
+
* Set once the trusted-input channel is known not to be openable here (iOS, a remote hub, no local
|
|
167
|
+
* `adb`), so the attempt is not repeated on every evaluate.
|
|
168
|
+
*/
|
|
169
|
+
private isInputChannelUnavailable;
|
|
146
170
|
/**
|
|
147
171
|
* Tracks whether the driver is currently switched to the WebView context.
|
|
148
172
|
*
|
|
@@ -201,6 +225,14 @@ export declare class AppiumTransport implements ObsidianTransport {
|
|
|
201
225
|
* deletion so the session remains available for the owning process.
|
|
202
226
|
*/
|
|
203
227
|
dispose(): Promise<void>;
|
|
228
|
+
/**
|
|
229
|
+
* Synchronous teardown for `process.on('exit')` handlers.
|
|
230
|
+
*
|
|
231
|
+
* Only the trusted-input channel needs it: the Appium session is the owning process's to end, and an
|
|
232
|
+
* abrupt exit is exactly when the async {@link AppiumTransport.dispose} never runs — which would strand
|
|
233
|
+
* the adb port forward on the device.
|
|
234
|
+
*/
|
|
235
|
+
disposeSync(): void;
|
|
204
236
|
/**
|
|
205
237
|
* Evaluates a JavaScript expression inside Obsidian Mobile's WebView.
|
|
206
238
|
*
|
|
@@ -258,7 +290,8 @@ export declare class AppiumTransport implements ObsidianTransport {
|
|
|
258
290
|
* 3. Add the vault to localStorage (`mobile-external-vaults`, `mobile-selected-vault`,
|
|
259
291
|
* `enable-plugin-<path>`)
|
|
260
292
|
* 4. Trigger `location.reload()` so Obsidian re-reads localStorage and opens the vault
|
|
261
|
-
* 5. Wait for `app
|
|
293
|
+
* 5. Wait for `globalThis.app` to exist (the app's cold start), then — on a
|
|
294
|
+
* separate, tighter budget — for `app.workspace.layoutReady`
|
|
262
295
|
*
|
|
263
296
|
* Existing vault registrations in localStorage are preserved (append, not
|
|
264
297
|
* overwrite) — except the **harness's own** `temp-vault-*` registrations from
|
|
@@ -287,6 +320,19 @@ export declare class AppiumTransport implements ObsidianTransport {
|
|
|
287
320
|
* @param vaultPath - The absolute path to the vault on the host machine.
|
|
288
321
|
*/
|
|
289
322
|
unregisterVault(vaultPath: string): Promise<void>;
|
|
323
|
+
/**
|
|
324
|
+
* Closes the trusted-input channel, if one is open.
|
|
325
|
+
*/
|
|
326
|
+
private disposeInputChannel;
|
|
327
|
+
/**
|
|
328
|
+
* Opens the trusted-input channel if it is not already open, and re-opens it if the WebView went away.
|
|
329
|
+
*
|
|
330
|
+
* Installs a `Runtime.addBinding` function on the page and services every call to it for the life of the
|
|
331
|
+
* connection. The binding is exposed on *every* execution context of the page, so it survives the
|
|
332
|
+
* `location.reload()` that {@link AppiumTransport.registerVault} performs; only a full app restart, which
|
|
333
|
+
* destroys the WebView target, needs the reconnect below.
|
|
334
|
+
*/
|
|
335
|
+
private ensureInputChannel;
|
|
290
336
|
/**
|
|
291
337
|
* Switches the driver to the `WEBVIEW_md.obsidian` context.
|
|
292
338
|
*
|
|
@@ -306,6 +352,27 @@ export declare class AppiumTransport implements ObsidianTransport {
|
|
|
306
352
|
* @returns The device-side vault path.
|
|
307
353
|
*/
|
|
308
354
|
private getDeviceVaultPath;
|
|
355
|
+
/**
|
|
356
|
+
* Services one input request from the renderer: inject, then resolve the renderer's promise.
|
|
357
|
+
*
|
|
358
|
+
* Every failure path still resolves that promise — with an error message the renderer re-throws — because
|
|
359
|
+
* a request that is silently dropped would hang the closure until the whole run times out, and report
|
|
360
|
+
* nothing about why.
|
|
361
|
+
*
|
|
362
|
+
* @param connection - The channel the request arrived on.
|
|
363
|
+
* @param payload - The raw JSON payload the binding was called with.
|
|
364
|
+
*/
|
|
365
|
+
private handleInputRequest;
|
|
366
|
+
/**
|
|
367
|
+
* Probes the WebView once for how far Obsidian's startup has got.
|
|
368
|
+
*
|
|
369
|
+
* A probe that throws is reported as `undefined` rather than propagated: the
|
|
370
|
+
* page is mid-`location.reload()` for most of the app-start phase, and a
|
|
371
|
+
* WebView that cannot answer yet is the *expected* reading there, not an error.
|
|
372
|
+
*
|
|
373
|
+
* @returns What the probe saw, or `undefined` when it could not run.
|
|
374
|
+
*/
|
|
375
|
+
private probeStartup;
|
|
309
376
|
/**
|
|
310
377
|
* Pushes the minimal `.obsidian/app.json` vault marker via `adb push`.
|
|
311
378
|
*
|
|
@@ -334,8 +401,42 @@ export declare class AppiumTransport implements ObsidianTransport {
|
|
|
334
401
|
* @param deviceVaultPath - The device-side vault directory path.
|
|
335
402
|
*/
|
|
336
403
|
private removeDeviceVaultDirectory;
|
|
404
|
+
/**
|
|
405
|
+
* Drops the `process.on('exit')` handler that would otherwise close an already-closed channel, and would
|
|
406
|
+
* stack a listener per reconnect.
|
|
407
|
+
*/
|
|
408
|
+
private unregisterInputChannelExitHandler;
|
|
409
|
+
/**
|
|
410
|
+
* Polls until `globalThis.app` exists in the WebView — the app has finished
|
|
411
|
+
* its cold start and Obsidian's own boot has begun.
|
|
412
|
+
*
|
|
413
|
+
* This is the **first** of the two budgets spent after `location.reload()`,
|
|
414
|
+
* and the generous one. Everything it pays for is outside Obsidian's control:
|
|
415
|
+
* the WebView reloading, and a guest that may still be optimizing packages.
|
|
416
|
+
* Keeping it separate is the point of the split — the old single wall clock
|
|
417
|
+
* started here and left the tight layout budget paying for a cold start.
|
|
418
|
+
*/
|
|
419
|
+
private waitForAppStarted;
|
|
337
420
|
/**
|
|
338
421
|
* Polls until `app.workspace.layoutReady` is `true` in the WebView.
|
|
422
|
+
*
|
|
423
|
+
* The **second** budget, and the tight one: by the time it starts, the app is
|
|
424
|
+
* already up, so all it covers is Obsidian opening the vault and loading
|
|
425
|
+
* plugins — ~1s in practice, ≤8.4s under heavy host stress (**L19**).
|
|
339
426
|
*/
|
|
340
427
|
private waitForLayoutReady;
|
|
428
|
+
/**
|
|
429
|
+
* Polls the WebView until a startup phase's milestone is satisfied, tracking
|
|
430
|
+
* the evidence that tells a slow Obsidian from a contended guest.
|
|
431
|
+
*
|
|
432
|
+
* Each poll costs exactly one `browser.execute` round-trip — deliberately not
|
|
433
|
+
* an {@link ensureWebViewContext} call, whose `getContexts()` runs
|
|
434
|
+
* `adb shell cat /proc/net/unix` and was measured at ~17s per **L19**. The
|
|
435
|
+
* round-trip is timed, and the slowest one is reported on timeout: a phase
|
|
436
|
+
* that ran out after a handful of probes each taking tens of seconds was
|
|
437
|
+
* starved by the guest, not by Obsidian.
|
|
438
|
+
*
|
|
439
|
+
* @param params - The phase, its budget, and the predicate that ends it.
|
|
440
|
+
*/
|
|
441
|
+
private waitForStartupMilestone;
|
|
341
442
|
}
|