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
|
@@ -1,14 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file
|
|
3
3
|
*
|
|
4
|
-
* Pure
|
|
5
|
-
* process (the Android emulator or the Appium server) that
|
|
6
|
-
* appending the captured output tail when available.
|
|
4
|
+
* Pure builders for the diagnostic message describing an auto-started child
|
|
5
|
+
* process (the Android emulator or the Appium server) that failed during
|
|
6
|
+
* startup, appending the captured output tail when available.
|
|
7
|
+
*
|
|
8
|
+
* A startup fails two ways — the process **dies**, or it **hangs** past a
|
|
9
|
+
* budget — and the captured tail is equally the explanation in both. So the
|
|
10
|
+
* tail-appending half is its own export, used by the timeout throws that once
|
|
11
|
+
* reported only the budget they blew.
|
|
7
12
|
*
|
|
8
13
|
* Kept separate from the integration-only `transport-factory` (excluded from
|
|
9
14
|
* unit tests) so the message formatting stays unit-testable — the launchers
|
|
10
15
|
* themselves spawn real processes.
|
|
11
16
|
*/
|
|
17
|
+
/**
|
|
18
|
+
* Parameters for {@link appendProcessOutputTail}.
|
|
19
|
+
*/
|
|
20
|
+
export interface AppendProcessOutputTailParams {
|
|
21
|
+
/**
|
|
22
|
+
The captured stdout+stderr tail (empty when none was captured).
|
|
23
|
+
*/
|
|
24
|
+
readonly output: string;
|
|
25
|
+
/**
|
|
26
|
+
Label for the captured output section (e.g. `"Emulator output"`).
|
|
27
|
+
*/
|
|
28
|
+
readonly outputLabel: string;
|
|
29
|
+
}
|
|
12
30
|
/**
|
|
13
31
|
* Parameters for {@link buildProcessExitMessage}.
|
|
14
32
|
*/
|
|
@@ -51,6 +69,22 @@ export interface ProcessExitInfo {
|
|
|
51
69
|
*/
|
|
52
70
|
readonly spawnError?: string;
|
|
53
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Appends a process's captured output tail to a message, when there is one.
|
|
74
|
+
*
|
|
75
|
+
* Split out of {@link buildProcessExitMessage} so the **timeout** failures can
|
|
76
|
+
* carry the tail too. A process that dies gets its output attached; one that
|
|
77
|
+
* hangs used to get `No new emulator device appeared within 300000ms.` and
|
|
78
|
+
* nothing else — even though the line that explains it (`FATAL | Running
|
|
79
|
+
* multiple emulators with the same AVD is an experimental feature`) had already
|
|
80
|
+
* been captured. The emulator writing its own diagnosis is worth nothing if the
|
|
81
|
+
* harness reads it on only one of the two ways a startup can fail.
|
|
82
|
+
*
|
|
83
|
+
* @param message - The failure message to extend.
|
|
84
|
+
* @param params - The captured tail and its label.
|
|
85
|
+
* @returns The message, with the tail appended when non-empty.
|
|
86
|
+
*/
|
|
87
|
+
export declare function appendProcessOutputTail(message: string, params: AppendProcessOutputTailParams): string;
|
|
54
88
|
/**
|
|
55
89
|
* Builds a descriptive error message for an auto-started child process that
|
|
56
90
|
* exited (or failed to spawn) during startup, appending the captured output
|
|
@@ -0,0 +1,51 @@
|
|
|
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 process_liveness_exports = {};
|
|
30
|
+
__export(process_liveness_exports, {
|
|
31
|
+
checkIsProcessAlive: () => checkIsProcessAlive
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(process_liveness_exports);
|
|
34
|
+
var import_node_process = __toESM(require("node:process"), 1);
|
|
35
|
+
const PROCESS_EXISTENCE_PROBE_SIGNAL = 0;
|
|
36
|
+
function checkIsProcessAlive(pid) {
|
|
37
|
+
try {
|
|
38
|
+
import_node_process.default.kill(pid, PROCESS_EXISTENCE_PROBE_SIGNAL);
|
|
39
|
+
return true;
|
|
40
|
+
} catch (error) {
|
|
41
|
+
return getErrorCode(error) === "EPERM";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function getErrorCode(error) {
|
|
45
|
+
return typeof error === "object" && error !== null && "code" in error ? String(error.code) : void 0;
|
|
46
|
+
}
|
|
47
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
48
|
+
0 && (module.exports = {
|
|
49
|
+
checkIsProcessAlive
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Byb2Nlc3MtbGl2ZW5lc3MudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDaGVhcCwgc3luY2hyb25vdXMgXCJpcyB0aGlzIFBJRCBzdGlsbCBydW5uaW5nP1wiIHByb2JlLlxuICpcbiAqIFNpZ25hbCBgMGAgcGVyZm9ybXMgdGhlIHBlcm1pc3Npb24gYW5kIGV4aXN0ZW5jZSBjaGVja3Mgd2l0aG91dCBkZWxpdmVyaW5nIGFcbiAqIHNpZ25hbCwgb24gV2luZG93cyBhcyB3ZWxsIGFzIFBPU0lYLCBzbyBpdCBjb3N0cyBub3RoaW5nIGF0IHRlYXJkb3duLXBvbGxcbiAqIGZyZXF1ZW5jeS4gYEVQRVJNYCBtZWFucyB0aGUgcHJvY2VzcyBleGlzdHMgYnV0IGlzIG93bmVkIGJ5IGFub3RoZXIgdXNlciBcdTIwMTRcbiAqIHN0aWxsIGFsaXZlLCBhbmQgdGhlIGRpc3RpbmN0aW9uIG1hdHRlcnM6IHJlYWRpbmcgaXQgYXMgZGVhZCBpcyBob3cgYVxuICogdGVhcmRvd24gY29udmluY2VzIGl0c2VsZiBhIHByb2Nlc3MgaXQgY291bGQgbm90IHRvdWNoIGlzIGdvbmUuXG4gKi9cblxuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuY29uc3QgUFJPQ0VTU19FWElTVEVOQ0VfUFJPQkVfU0lHTkFMID0gMDtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy5cbiAqXG4gKiBAcGFyYW0gcGlkIC0gVGhlIFBJRCB0byBwcm9iZS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBwcm9jZXNzIGV4aXN0cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSXNQcm9jZXNzQWxpdmUocGlkOiBudW1iZXIpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBwcm9jZXNzLmtpbGwocGlkLCBQUk9DRVNTX0VYSVNURU5DRV9QUk9CRV9TSUdOQUwpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIHJldHVybiBnZXRFcnJvckNvZGUoZXJyb3IpID09PSAnRVBFUk0nO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEVycm9yQ29kZShlcnJvcjogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmIGVycm9yICE9PSBudWxsICYmICdjb2RlJyBpbiBlcnJvciA/IFN0cmluZyhlcnJvci5jb2RlKSA6IHVuZGVmaW5lZDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBWUEsMEJBQW9CO0FBRXBCLE1BQU0saUNBQWlDO0FBUWhDLFNBQVMsb0JBQW9CLEtBQXNCO0FBQ3hELE1BQUk7QUFDRix3QkFBQUEsUUFBUSxLQUFLLEtBQUssOEJBQThCO0FBQ2hELFdBQU87QUFBQSxFQUNULFNBQVMsT0FBZ0I7QUFDdkIsV0FBTyxhQUFhLEtBQUssTUFBTTtBQUFBLEVBQ2pDO0FBQ0Y7QUFFQSxTQUFTLGFBQWEsT0FBb0M7QUFDeEQsU0FBTyxPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVEsVUFBVSxRQUFRLE9BQU8sTUFBTSxJQUFJLElBQUk7QUFDL0Y7IiwKICAibmFtZXMiOiBbInByb2Nlc3MiXQp9Cg==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Cheap, synchronous "is this PID still running?" probe.
|
|
5
|
+
*
|
|
6
|
+
* Signal `0` performs the permission and existence checks without delivering a
|
|
7
|
+
* signal, on Windows as well as POSIX, so it costs nothing at teardown-poll
|
|
8
|
+
* frequency. `EPERM` means the process exists but is owned by another user —
|
|
9
|
+
* still alive, and the distinction matters: reading it as dead is how a
|
|
10
|
+
* teardown convinces itself a process it could not touch is gone.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Checks whether a process is still running.
|
|
14
|
+
*
|
|
15
|
+
* @param pid - The PID to probe.
|
|
16
|
+
* @returns `true` when the process exists.
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkIsProcessAlive(pid: number): boolean;
|
|
@@ -0,0 +1,73 @@
|
|
|
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 __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var release_catalog_exports = {};
|
|
20
|
+
__export(release_catalog_exports, {
|
|
21
|
+
CATALYST_ASAR_RELEASE_BASE_URL: () => CATALYST_ASAR_RELEASE_BASE_URL,
|
|
22
|
+
buildCatalystAsarUrl: () => buildCatalystAsarUrl,
|
|
23
|
+
resolveReleaseChannel: () => resolveReleaseChannel,
|
|
24
|
+
selectReleaseDownloads: () => selectReleaseDownloads
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(release_catalog_exports);
|
|
27
|
+
var import_installer_asset = require("./installer-asset.cjs");
|
|
28
|
+
var import_obsidian_version = require("./obsidian-version.cjs");
|
|
29
|
+
const CATALYST_ASAR_RELEASE_BASE_URL = "https://releases.obsidian.md/release";
|
|
30
|
+
const INSTALLER_KEYS_BY_PLATFORM = [
|
|
31
|
+
["dmg", "darwin"],
|
|
32
|
+
["exe", "win32"],
|
|
33
|
+
["tar", "linux"]
|
|
34
|
+
];
|
|
35
|
+
function buildCatalystAsarUrl(version) {
|
|
36
|
+
return `${CATALYST_ASAR_RELEASE_BASE_URL}/${(0, import_obsidian_version.getVersionAsarFileName)(version)}.gz`;
|
|
37
|
+
}
|
|
38
|
+
function resolveReleaseChannel(params) {
|
|
39
|
+
if (params.hasPublicRelease) {
|
|
40
|
+
return params.hasPublicPage && params.hasCatalystPage ? "public+catalyst" : "public";
|
|
41
|
+
}
|
|
42
|
+
return params.hasCatalystPage ? "catalyst" : void 0;
|
|
43
|
+
}
|
|
44
|
+
function selectReleaseDownloads(params) {
|
|
45
|
+
const { assets, version } = params;
|
|
46
|
+
const assetNames = assets.map((asset) => asset.name);
|
|
47
|
+
const urlByName = new Map(assets.map((asset) => [asset.name, asset.url]));
|
|
48
|
+
const downloads = {};
|
|
49
|
+
const apkUrl = urlByName.get(`Obsidian-${version}.apk`);
|
|
50
|
+
if (apkUrl !== void 0) {
|
|
51
|
+
downloads["apk"] = apkUrl;
|
|
52
|
+
}
|
|
53
|
+
const asarUrl = urlByName.get(`${(0, import_obsidian_version.getVersionAsarFileName)(version)}.gz`);
|
|
54
|
+
if (asarUrl !== void 0) {
|
|
55
|
+
downloads["asar"] = asarUrl;
|
|
56
|
+
}
|
|
57
|
+
for (const [key, platform] of INSTALLER_KEYS_BY_PLATFORM) {
|
|
58
|
+
const assetName = (0, import_installer_asset.selectInstallerAssetName)({ assetNames, platform, version });
|
|
59
|
+
const url = assetName === void 0 ? void 0 : urlByName.get(assetName);
|
|
60
|
+
if (url !== void 0) {
|
|
61
|
+
downloads[key] = url;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return Object.keys(downloads).length > 0 ? downloads : void 0;
|
|
65
|
+
}
|
|
66
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
67
|
+
0 && (module.exports = {
|
|
68
|
+
CATALYST_ASAR_RELEASE_BASE_URL,
|
|
69
|
+
buildCatalystAsarUrl,
|
|
70
|
+
resolveReleaseChannel,
|
|
71
|
+
selectReleaseDownloads
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlbGVhc2UtY2F0YWxvZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgaGVscGVycyBmb3IgYnVpbGRpbmcgdGhlIHJlcG8tcm9vdCBgbWV0YWRhdGEuanNvbmAgY2F0YWxvZyBmcm9tIE9ic2lkaWFuJ3NcbiAqICoqb3duKiogcHVibGljYXRpb24gZW5kcG9pbnRzLCB3aXRoIG5vIHRoaXJkLXBhcnR5IGNhdGFsb2cgaW4gdGhlIGxvb3AuXG4gKlxuICogYHNjcmlwdHMvcmVmcmVzaC1tZXRhZGF0YS50c2AgZHJpdmVzIHRoZSBuZXR3b3JrIHNpZGUgKHRoZVxuICogYG9ic2lkaWFubWQvb2JzaWRpYW4tcmVsZWFzZXNgIEdpdEh1YiBSZWxlYXNlcyBBUEksIGBvYnNpZGlhbi5tZC9jaGFuZ2Vsb2cueG1sYFxuICogYW5kIGBkZXNrdG9wLXJlbGVhc2VzLmpzb25gKTsgZXZlcnl0aGluZyBkZWNpZGFibGUgd2l0aG91dCB0aGUgbmV0d29yayBsaXZlc1xuICogaGVyZSBzbyBpdCBzdGF5cyB1bml0LXRlc3RlZC5cbiAqXG4gKiBUaHJlZSBkZWNpc2lvbnMgYXJlIGVuY29kZWQ6XG4gKlxuICogLSAqKldoaWNoIHJlbGVhc2UgYXNzZXRzIGJlY29tZSBgZG93bmxvYWRzYCBrZXlzLioqIEEgcmVsZWFzZSdzIHJlYWwgYXNzZXQgbGlzdFxuICogICBpcyBtYXRjaGVkIHJhdGhlciB0aGFuIHRlbXBsYXRlZCwgcmV1c2luZyB7QGxpbmsgc2VsZWN0SW5zdGFsbGVyQXNzZXROYW1lfSBmb3JcbiAqICAgdGhlIGRlc2t0b3AgaW5zdGFsbGVycyBzbyB0aGUgaGlzdG9yaWNhbCBkb3QtdnMtaHlwaGVuIHNlcGFyYXRvciByZW5hbWUgKGFuZFxuICogICB0aGUgYC11bml2ZXJzYWxgIGRtZyBpbmZpeCkgaXMgaGFuZGxlZCBpbiBleGFjdGx5IG9uZSBwbGFjZS4gVGhlIDMyLWJpdCxcbiAqICAgYXJtNjQsIEFwcEltYWdlLCBkZWIgYW5kIHNuYXAgc2libGluZ3MgYXJlIGRlbGliZXJhdGVseSBub3QgY2FycmllZCBcdTIwMTQgdGhpc1xuICogICBoYXJuZXNzIGRvd25sb2FkcyBvbmx5IHRoZSB4NjQgaW5zdGFsbGVyLCB0aGUgYXBwIGFzYXIgYW5kIHRoZSBBbmRyb2lkIGFway5cbiAqIC0gKipXaGljaCBjaGFubmVsIGEgdmVyc2lvbiBiZWxvbmdzIHRvKiosIGRlcml2ZWQgZnJvbSB3aGljaCBjaGFuZ2Vsb2cgcGFnZXNcbiAqICAgdGhlIGZlZWQgcHVibGlzaGVkIGZvciBpdCAoc2VlIHtAbGluayByZXNvbHZlUmVsZWFzZUNoYW5uZWx9KS5cbiAqIC0gKipXaGVyZSBhIGNhdGFseXN0IGFzYXIgbGl2ZXMqKiAoe0BsaW5rIGJ1aWxkQ2F0YWx5c3RBc2FyVXJsfSkgXHUyMDE0IHRoZSBvbmUgYXNzZXRcbiAqICAgd2l0aCBubyBsaXN0aW5nIEFQSSBiZWhpbmQgaXQsIHNvIGl0cyBVUkwgbXVzdCBiZSBjb25zdHJ1Y3RlZCBhbmQgcHJvYmVkLlxuICovXG5cbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5WZXJzaW9uRG93bmxvYWRzIH0gZnJvbSAnLi9vYnNpZGlhbi1tZXRhZGF0YS5janMnO1xuXG5pbXBvcnQgeyBzZWxlY3RJbnN0YWxsZXJBc3NldE5hbWUgfSBmcm9tICcuL2luc3RhbGxlci1hc3NldC5janMnO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbkFzYXJGaWxlTmFtZSB9IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5janMnO1xuXG4vKipcbiAqIEJhc2UgVVJMIGZvciAqKmNhdGFseXN0KiogKGVhcmx5IGFjY2VzcyAvIGluc2lkZXIpIHJlbGVhc2UgYXNhcnMsIHNlcnZlZCBmcm9tXG4gKiB0aGUgT2JzaWRpYW4gQ0ROIGFzIGAuLi4vcmVsZWFzZS9vYnNpZGlhbi08dmVyc2lvbj4uYXNhci5nemAuIFB1YmxpYyB2ZXJzaW9uc1xuICogYXJlIE5PVCBob3N0ZWQgaGVyZSAodGhlIENETiByZXR1cm5zIGFuIGVtcHR5IGJvZHkgZm9yIHRoZW0pLCBhbmQgdGhlIGVuZHBvaW50XG4gKiBpcyBDbG91ZGZsYXJlLWdhdGVkIGFnYWluc3Qgbm9uLWJyb3dzZXIgY2xpZW50cywgc28gYSBwcm9iZSBuZWVkcyBhIGJyb3dzZXJcbiAqIGBVc2VyLUFnZW50YC5cbiAqL1xuZXhwb3J0IGNvbnN0IENBVEFMWVNUX0FTQVJfUkVMRUFTRV9CQVNFX1VSTCA9ICdodHRwczovL3JlbGVhc2VzLm9ic2lkaWFuLm1kL3JlbGVhc2UnO1xuXG4vKipcbiAqIE9uZSBhc3NldCBvZiBhIEdpdEh1YiByZWxlYXNlLCByZWR1Y2VkIHRvIHdoYXQgdGhlIGNhdGFsb2cgbmVlZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsZWFzZUFzc2V0IHtcbiAgLyoqXG4gIFRoZSBwdWJsaXNoZWQgYXNzZXQgZmlsZSBuYW1lLCBlLmcuIGBPYnNpZGlhbi0xLjEzLjcuZXhlYC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgVGhlIGFzc2V0J3MgZGlyZWN0IGRvd25sb2FkIFVSTCAoYGJyb3dzZXJfZG93bmxvYWRfdXJsYCkuXG4gICAqL1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZVJlbGVhc2VDaGFubmVsfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVsZWFzZUNoYW5uZWxQYXJhbXMge1xuICAvKipcbiAgV2hldGhlciB0aGUgY2hhbmdlbG9nIGZlZWQgcHVibGlzaGVkIGEgY2F0YWx5c3QgKFwiRWFybHkgYWNjZXNzXCIpIGRlc2t0b3AgcGFnZS5cbiAgICovXG4gIHJlYWRvbmx5IGhhc0NhdGFseXN0UGFnZTogYm9vbGVhbjtcblxuICAvKipcbiAgV2hldGhlciB0aGUgY2hhbmdlbG9nIGZlZWQgcHVibGlzaGVkIGEgcHVibGljIGRlc2t0b3AgcGFnZS5cbiAgICovXG4gIHJlYWRvbmx5IGhhc1B1YmxpY1BhZ2U6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHZlcnNpb24gd2FzIHB1Ymxpc2hlZCBhcyBhIEdpdEh1YiByZWxlYXNlIFx1MjAxNCB0aGUgZXZpZGVuY2UgdGhhdCBpdFxuICAgKiBzaGlwcGVkIG9uIHRoZSBwdWJsaWMgY2hhbm5lbCwgc2luY2UgY2F0YWx5c3QgYnVpbGRzIGFyZSBzZXJ2ZWQgb25seSBmcm9tXG4gICAqIHRoZSBgcmVsZWFzZXMub2JzaWRpYW4ubWRgIENETi5cbiAgICovXG4gIHJlYWRvbmx5IGhhc1B1YmxpY1JlbGVhc2U6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHNlbGVjdFJlbGVhc2VEb3dubG9hZHN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlbGVjdFJlbGVhc2VEb3dubG9hZHNQYXJhbXMge1xuICAvKipcbiAgVGhlIHJlbGVhc2UncyBwdWJsaXNoZWQgYXNzZXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRzOiByZWFkb25seSBSZWxlYXNlQXNzZXRbXTtcblxuICAvKipcbiAgVGhlIGNvbmNyZXRlIGB4LnkuemAgdmVyc2lvbiB0aGUgcmVsZWFzZSBwdWJsaXNoZXMuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIGRlc2t0b3AtaW5zdGFsbGVyIGBkb3dubG9hZHNgIGtleXMsIHBhaXJlZCB3aXRoIHRoZSBwbGF0Zm9ybSB3aG9zZSBhc3NldFxuICogc2hhcGUge0BsaW5rIHNlbGVjdEluc3RhbGxlckFzc2V0TmFtZX0gcmVzb2x2ZXMgZm9yIHRoZW0uXG4gKi9cbmNvbnN0IElOU1RBTExFUl9LRVlTX0JZX1BMQVRGT1JNOiByZWFkb25seSAocmVhZG9ubHkgW2tleTogJ2RtZycgfCAnZXhlJyB8ICd0YXInLCBwbGF0Zm9ybTogTm9kZUpTLlBsYXRmb3JtXSlbXSA9IFtcbiAgWydkbWcnLCAnZGFyd2luJ10sXG4gIFsnZXhlJywgJ3dpbjMyJ10sXG4gIFsndGFyJywgJ2xpbnV4J11cbl07XG5cbi8qKlxuICogQnVpbGRzIHRoZSBjYXRhbHlzdCBhc2FyIFVSTCBmb3IgYSB2ZXJzaW9uLlxuICpcbiAqIENhdGFseXN0IGJ1aWxkcyBhcmUgbm90IHB1Ymxpc2hlZCBhcyBHaXRIdWIgcmVsZWFzZSBhc3NldHMsIGFuZCB0aGUgQ0ROIHRoYXRcbiAqIHNlcnZlcyB0aGVtIGhhcyBubyBsaXN0aW5nIEFQSSwgc28gdGhpcyBVUkwgaXMgY29uc3RydWN0ZWQgcmF0aGVyIHRoYW5cbiAqIGRpc2NvdmVyZWQgXHUyMDE0IHRoZSBjYWxsZXIgcHJvYmVzIGl0IGJlZm9yZSByZWNvcmRpbmcgaXQuXG4gKlxuICogQHBhcmFtIHZlcnNpb24gLSBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICogQHJldHVybnMgVGhlIGByZWxlYXNlcy5vYnNpZGlhbi5tZGAgYXNhciBVUkwgZm9yIHRoZSB2ZXJzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDYXRhbHlzdEFzYXJVcmwodmVyc2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAke0NBVEFMWVNUX0FTQVJfUkVMRUFTRV9CQVNFX1VSTH0vJHtnZXRWZXJzaW9uQXNhckZpbGVOYW1lKHZlcnNpb24pfS5nemA7XG59XG5cbi8qKlxuICogRGVyaXZlcyBhIHZlcnNpb24ncyByZWxlYXNlIGNoYW5uZWwgZnJvbSB3aGVyZSBpdCB3YXMgcHVibGlzaGVkIGFuZCB3aGljaFxuICogY2hhbmdlbG9nIHBhZ2VzIHRoZSBmZWVkIGNhcnJpZXMgZm9yIGl0LlxuICpcbiAqICoqUHVibGljYXRpb24gaXMgdGhlIHByaW1hcnkgZXZpZGVuY2UsIG5vdCB0aGUgZmVlZCdzIHRpdGxlIG1hcmtlci4qKiBUaGUgZmVlZFxuICogdGFncyBlYWNoIGVudHJ5IGAoUHVibGljKWAgb3IgYChFYXJseSBhY2Nlc3MpYCwgYnV0IHRocm91Z2ggdGhlIHByZS0xLjAgZXJhIGl0XG4gKiB0YWdnZWQgKmV2ZXJ5dGhpbmcqIGVhcmx5LWFjY2VzcyBcdTIwMTQgdGhlIHdob2xlIGFwcCB3YXMgXHUyMDE0IHNvIDYxIHZlcnNpb25zIHRoYXRcbiAqIHNoaXBwZWQgYXMgb3JkaW5hcnkgR2l0SHViIHJlbGVhc2VzIGNhcnJ5IG9ubHkgYSBjYXRhbHlzdCBwYWdlLiBUcnVzdGluZyB0aGVcbiAqIG1hcmtlciBhbG9uZSB0aGVyZWZvcmUgcmVsYWJlbHMgYSBsYXJnZSBzbGljZSBvZiBwdWJsaWMgaGlzdG9yeSBhcyBjYXRhbHlzdC5cbiAqIEEgR2l0SHViIHJlbGVhc2UgaXMgdW5hbWJpZ3VvdXMgdGhlIG90aGVyIHdheSByb3VuZDogY2F0YWx5c3QgYnVpbGRzIGFyZVxuICogc2VydmVkIG9ubHkgZnJvbSB0aGUgYHJlbGVhc2VzLm9ic2lkaWFuLm1kYCBDRE4sIG5ldmVyIGFzIHJlbGVhc2UgYXNzZXRzLlxuICpcbiAqIFNvIGEgdmVyc2lvbiB0aGF0IHdhcyBwdWJsaXNoZWQgb24gR2l0SHViIGlzIHB1YmxpYywgYW5kIGl0IGlzIHJlY29yZGVkIGFzIHRoZVxuICogY29tYmluZWQgYCdwdWJsaWMrY2F0YWx5c3QnYCBvbmx5IHdoZW4gdGhlIGZlZWQgY2FycmllcyAqYm90aCogZGVza3RvcCBwYWdlcyBcdTIwMTRcbiAqIHRoZSBzaGFwZSBldmVyeSB2ZXJzaW9uIGFscmVhZHkgbGFiZWxsZWQgYCdwdWJsaWMrY2F0YWx5c3QnYCBoYXMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwdWJsaWNhdGlvbiBldmlkZW5jZSBhbmQgdGhlIGRlc2t0b3AgcGFnZXMgdGhlIGZlZWQgcHVibGlzaGVkLlxuICogQHJldHVybnMgVGhlIGNoYW5uZWwsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm8gZXZpZGVuY2UgZWl0aGVyIHdheSAodGhlXG4gKiAgIGNhbGxlciB0aGVuIGtlZXBzIHdoYXRldmVyIHRoZSB2ZXJzaW9uIGFscmVhZHkgY2FycmllcykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlUmVsZWFzZUNoYW5uZWwocGFyYW1zOiBSZXNvbHZlUmVsZWFzZUNoYW5uZWxQYXJhbXMpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAocGFyYW1zLmhhc1B1YmxpY1JlbGVhc2UpIHtcbiAgICByZXR1cm4gcGFyYW1zLmhhc1B1YmxpY1BhZ2UgJiYgcGFyYW1zLmhhc0NhdGFseXN0UGFnZSA/ICdwdWJsaWMrY2F0YWx5c3QnIDogJ3B1YmxpYyc7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zLmhhc0NhdGFseXN0UGFnZSA/ICdjYXRhbHlzdCcgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUGlja3MgdGhlIGFzc2V0cyB0aGlzIGhhcm5lc3MgZG93bmxvYWRzIG91dCBvZiBhIEdpdEh1YiByZWxlYXNlJ3MgcmVhbCBhc3NldFxuICogbGlzdDogdGhlIHg2NCBkZXNrdG9wIGluc3RhbGxlcnMsIHRoZSBhcHAgYXNhciBhbmQgdGhlIEFuZHJvaWQgYXBrLlxuICpcbiAqIEFzc2V0cyBhcmUgbWF0Y2hlZCBhZ2FpbnN0IHRoZSAqKnJlbGVhc2UncyBvd24gdmVyc2lvbioqLCBzbyBhbiBlYXJseS1hY2Nlc3NcbiAqIHRhZyB3aG9zZSBhc3NldHMgY2FycnkgdGhlIGJhc2UgdmVyc2lvbiBpbnN0ZWFkIChgdjEuMS44LUUyMWAgcHVibGlzaGluZ1xuICogYE9ic2lkaWFuLjEuMS44LmV4ZWAsIGB2MS42LjMtZTMwYCBwdWJsaXNoaW5nIGBPYnNpZGlhbi4xLjYuMy5leGVgKSBtYXRjaGVzXG4gKiBub3RoaW5nIGFuZCBpcyBza2lwcGVkIFx1MjAxNCBkZWxpYmVyYXRlbHksIHNpbmNlIHRob3NlIGFzc2V0cyBhcmUgdGhlIGJhc2VcbiAqIHZlcnNpb24ncywgbm90IHRoZSB0YWcncy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHJlbGVhc2UncyBhc3NldHMgYW5kIGl0cyB2ZXJzaW9uLlxuICogQHJldHVybnMgVGhlIGRpc3RpbGxlZCBkb3dubG9hZCBVUkxzLCBvciBgdW5kZWZpbmVkYCB3aGVuIHRoZSByZWxlYXNlXG4gKiAgIHB1Ymxpc2hlcyBub25lIG9mIHRoZW0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RSZWxlYXNlRG93bmxvYWRzKHBhcmFtczogU2VsZWN0UmVsZWFzZURvd25sb2Fkc1BhcmFtcyk6IE9ic2lkaWFuVmVyc2lvbkRvd25sb2FkcyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHsgYXNzZXRzLCB2ZXJzaW9uIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGFzc2V0TmFtZXMgPSBhc3NldHMubWFwKChhc3NldCkgPT4gYXNzZXQubmFtZSk7XG4gIGNvbnN0IHVybEJ5TmFtZSA9IG5ldyBNYXAoYXNzZXRzLm1hcCgoYXNzZXQpID0+IFthc3NldC5uYW1lLCBhc3NldC51cmxdKSk7XG4gIGNvbnN0IGRvd25sb2FkczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gIGNvbnN0IGFwa1VybCA9IHVybEJ5TmFtZS5nZXQoYE9ic2lkaWFuLSR7dmVyc2lvbn0uYXBrYCk7XG4gIGlmIChhcGtVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgIGRvd25sb2Fkc1snYXBrJ10gPSBhcGtVcmw7XG4gIH1cblxuICBjb25zdCBhc2FyVXJsID0gdXJsQnlOYW1lLmdldChgJHtnZXRWZXJzaW9uQXNhckZpbGVOYW1lKHZlcnNpb24pfS5nemApO1xuICBpZiAoYXNhclVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZG93bmxvYWRzWydhc2FyJ10gPSBhc2FyVXJsO1xuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCBwbGF0Zm9ybV0gb2YgSU5TVEFMTEVSX0tFWVNfQllfUExBVEZPUk0pIHtcbiAgICBjb25zdCBhc3NldE5hbWUgPSBzZWxlY3RJbnN0YWxsZXJBc3NldE5hbWUoeyBhc3NldE5hbWVzLCBwbGF0Zm9ybSwgdmVyc2lvbiB9KTtcbiAgICBjb25zdCB1cmwgPSBhc3NldE5hbWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHVybEJ5TmFtZS5nZXQoYXNzZXROYW1lKTtcbiAgICBpZiAodXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRvd25sb2Fkc1trZXldID0gdXJsO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBPYmplY3Qua2V5cyhkb3dubG9hZHMpLmxlbmd0aCA+IDAgPyBkb3dubG9hZHMgOiB1bmRlZmluZWQ7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkJBLDZCQUF5QztBQUN6Qyw4QkFBdUM7QUFTaEMsTUFBTSxpQ0FBaUM7QUEwRDlDLE1BQU0sNkJBQTRHO0FBQUEsRUFDaEgsQ0FBQyxPQUFPLFFBQVE7QUFBQSxFQUNoQixDQUFDLE9BQU8sT0FBTztBQUFBLEVBQ2YsQ0FBQyxPQUFPLE9BQU87QUFDakI7QUFZTyxTQUFTLHFCQUFxQixTQUF5QjtBQUM1RCxTQUFPLEdBQUcsOEJBQThCLFFBQUksZ0RBQXVCLE9BQU8sQ0FBQztBQUM3RTtBQXNCTyxTQUFTLHNCQUFzQixRQUF5RDtBQUM3RixNQUFJLE9BQU8sa0JBQWtCO0FBQzNCLFdBQU8sT0FBTyxpQkFBaUIsT0FBTyxrQkFBa0Isb0JBQW9CO0FBQUEsRUFDOUU7QUFFQSxTQUFPLE9BQU8sa0JBQWtCLGFBQWE7QUFDL0M7QUFnQk8sU0FBUyx1QkFBdUIsUUFBNEU7QUFDakgsUUFBTSxFQUFFLFFBQVEsUUFBUSxJQUFJO0FBQzVCLFFBQU0sYUFBYSxPQUFPLElBQUksQ0FBQyxVQUFVLE1BQU0sSUFBSTtBQUNuRCxRQUFNLFlBQVksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4RSxRQUFNLFlBQW9DLENBQUM7QUFFM0MsUUFBTSxTQUFTLFVBQVUsSUFBSSxZQUFZLE9BQU8sTUFBTTtBQUN0RCxNQUFJLFdBQVcsUUFBVztBQUN4QixjQUFVLEtBQUssSUFBSTtBQUFBLEVBQ3JCO0FBRUEsUUFBTSxVQUFVLFVBQVUsSUFBSSxPQUFHLGdEQUF1QixPQUFPLENBQUMsS0FBSztBQUNyRSxNQUFJLFlBQVksUUFBVztBQUN6QixjQUFVLE1BQU0sSUFBSTtBQUFBLEVBQ3RCO0FBRUEsYUFBVyxDQUFDLEtBQUssUUFBUSxLQUFLLDRCQUE0QjtBQUN4RCxVQUFNLGdCQUFZLGlEQUF5QixFQUFFLFlBQVksVUFBVSxRQUFRLENBQUM7QUFDNUUsVUFBTSxNQUFNLGNBQWMsU0FBWSxTQUFZLFVBQVUsSUFBSSxTQUFTO0FBQ3pFLFFBQUksUUFBUSxRQUFXO0FBQ3JCLGdCQUFVLEdBQUcsSUFBSTtBQUFBLElBQ25CO0FBQUEsRUFDRjtBQUVBLFNBQU8sT0FBTyxLQUFLLFNBQVMsRUFBRSxTQUFTLElBQUksWUFBWTtBQUN6RDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Pure helpers for building the repo-root `metadata.json` catalog from Obsidian's
|
|
5
|
+
* **own** publication endpoints, with no third-party catalog in the loop.
|
|
6
|
+
*
|
|
7
|
+
* `scripts/refresh-metadata.ts` drives the network side (the
|
|
8
|
+
* `obsidianmd/obsidian-releases` GitHub Releases API, `obsidian.md/changelog.xml`
|
|
9
|
+
* and `desktop-releases.json`); everything decidable without the network lives
|
|
10
|
+
* here so it stays unit-tested.
|
|
11
|
+
*
|
|
12
|
+
* Three decisions are encoded:
|
|
13
|
+
*
|
|
14
|
+
* - **Which release assets become `downloads` keys.** A release's real asset list
|
|
15
|
+
* is matched rather than templated, reusing {@link selectInstallerAssetName} for
|
|
16
|
+
* the desktop installers so the historical dot-vs-hyphen separator rename (and
|
|
17
|
+
* the `-universal` dmg infix) is handled in exactly one place. The 32-bit,
|
|
18
|
+
* arm64, AppImage, deb and snap siblings are deliberately not carried — this
|
|
19
|
+
* harness downloads only the x64 installer, the app asar and the Android apk.
|
|
20
|
+
* - **Which channel a version belongs to**, derived from which changelog pages
|
|
21
|
+
* the feed published for it (see {@link resolveReleaseChannel}).
|
|
22
|
+
* - **Where a catalyst asar lives** ({@link buildCatalystAsarUrl}) — the one asset
|
|
23
|
+
* with no listing API behind it, so its URL must be constructed and probed.
|
|
24
|
+
*/
|
|
25
|
+
import type { ObsidianVersionDownloads } from './obsidian-metadata.cjs';
|
|
26
|
+
/**
|
|
27
|
+
* Base URL for **catalyst** (early access / insider) release asars, served from
|
|
28
|
+
* the Obsidian CDN as `.../release/obsidian-<version>.asar.gz`. Public versions
|
|
29
|
+
* are NOT hosted here (the CDN returns an empty body for them), and the endpoint
|
|
30
|
+
* is Cloudflare-gated against non-browser clients, so a probe needs a browser
|
|
31
|
+
* `User-Agent`.
|
|
32
|
+
*/
|
|
33
|
+
export declare const CATALYST_ASAR_RELEASE_BASE_URL = "https://releases.obsidian.md/release";
|
|
34
|
+
/**
|
|
35
|
+
* One asset of a GitHub release, reduced to what the catalog needs.
|
|
36
|
+
*/
|
|
37
|
+
export interface ReleaseAsset {
|
|
38
|
+
/**
|
|
39
|
+
The published asset file name, e.g. `Obsidian-1.13.7.exe`.
|
|
40
|
+
*/
|
|
41
|
+
readonly name: string;
|
|
42
|
+
/**
|
|
43
|
+
The asset's direct download URL (`browser_download_url`).
|
|
44
|
+
*/
|
|
45
|
+
readonly url: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Parameters for {@link resolveReleaseChannel}.
|
|
49
|
+
*/
|
|
50
|
+
export interface ResolveReleaseChannelParams {
|
|
51
|
+
/**
|
|
52
|
+
Whether the changelog feed published a catalyst ("Early access") desktop page.
|
|
53
|
+
*/
|
|
54
|
+
readonly hasCatalystPage: boolean;
|
|
55
|
+
/**
|
|
56
|
+
Whether the changelog feed published a public desktop page.
|
|
57
|
+
*/
|
|
58
|
+
readonly hasPublicPage: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Whether the version was published as a GitHub release — the evidence that it
|
|
61
|
+
* shipped on the public channel, since catalyst builds are served only from
|
|
62
|
+
* the `releases.obsidian.md` CDN.
|
|
63
|
+
*/
|
|
64
|
+
readonly hasPublicRelease: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parameters for {@link selectReleaseDownloads}.
|
|
68
|
+
*/
|
|
69
|
+
export interface SelectReleaseDownloadsParams {
|
|
70
|
+
/**
|
|
71
|
+
The release's published assets.
|
|
72
|
+
*/
|
|
73
|
+
readonly assets: readonly ReleaseAsset[];
|
|
74
|
+
/**
|
|
75
|
+
The concrete `x.y.z` version the release publishes.
|
|
76
|
+
*/
|
|
77
|
+
readonly version: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Builds the catalyst asar URL for a version.
|
|
81
|
+
*
|
|
82
|
+
* Catalyst builds are not published as GitHub release assets, and the CDN that
|
|
83
|
+
* serves them has no listing API, so this URL is constructed rather than
|
|
84
|
+
* discovered — the caller probes it before recording it.
|
|
85
|
+
*
|
|
86
|
+
* @param version - The concrete `x.y.z` version.
|
|
87
|
+
* @returns The `releases.obsidian.md` asar URL for the version.
|
|
88
|
+
*/
|
|
89
|
+
export declare function buildCatalystAsarUrl(version: string): string;
|
|
90
|
+
/**
|
|
91
|
+
* Derives a version's release channel from where it was published and which
|
|
92
|
+
* changelog pages the feed carries for it.
|
|
93
|
+
*
|
|
94
|
+
* **Publication is the primary evidence, not the feed's title marker.** The feed
|
|
95
|
+
* tags each entry `(Public)` or `(Early access)`, but through the pre-1.0 era it
|
|
96
|
+
* tagged *everything* early-access — the whole app was — so 61 versions that
|
|
97
|
+
* shipped as ordinary GitHub releases carry only a catalyst page. Trusting the
|
|
98
|
+
* marker alone therefore relabels a large slice of public history as catalyst.
|
|
99
|
+
* A GitHub release is unambiguous the other way round: catalyst builds are
|
|
100
|
+
* served only from the `releases.obsidian.md` CDN, never as release assets.
|
|
101
|
+
*
|
|
102
|
+
* So a version that was published on GitHub is public, and it is recorded as the
|
|
103
|
+
* combined `'public+catalyst'` only when the feed carries *both* desktop pages —
|
|
104
|
+
* the shape every version already labelled `'public+catalyst'` has.
|
|
105
|
+
*
|
|
106
|
+
* @param params - The publication evidence and the desktop pages the feed published.
|
|
107
|
+
* @returns The channel, or `undefined` when there is no evidence either way (the
|
|
108
|
+
* caller then keeps whatever the version already carries).
|
|
109
|
+
*/
|
|
110
|
+
export declare function resolveReleaseChannel(params: ResolveReleaseChannelParams): string | undefined;
|
|
111
|
+
/**
|
|
112
|
+
* Picks the assets this harness downloads out of a GitHub release's real asset
|
|
113
|
+
* list: the x64 desktop installers, the app asar and the Android apk.
|
|
114
|
+
*
|
|
115
|
+
* Assets are matched against the **release's own version**, so an early-access
|
|
116
|
+
* tag whose assets carry the base version instead (`v1.1.8-E21` publishing
|
|
117
|
+
* `Obsidian.1.1.8.exe`, `v1.6.3-e30` publishing `Obsidian.1.6.3.exe`) matches
|
|
118
|
+
* nothing and is skipped — deliberately, since those assets are the base
|
|
119
|
+
* version's, not the tag's.
|
|
120
|
+
*
|
|
121
|
+
* @param params - The release's assets and its version.
|
|
122
|
+
* @returns The distilled download URLs, or `undefined` when the release
|
|
123
|
+
* publishes none of them.
|
|
124
|
+
*/
|
|
125
|
+
export declare function selectReleaseDownloads(params: SelectReleaseDownloadsParams): ObsidianVersionDownloads | undefined;
|
|
@@ -61,4 +61,4 @@ function logPlan(resolvedSpecs, entries) {
|
|
|
61
61
|
0 && (module.exports = {
|
|
62
62
|
runObsidianVersionMatrix
|
|
63
63
|
});
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3J1bi12ZXJzaW9uLW1hdHJpeC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEludGVncmF0aW9uLXRpbWUgcnVubmVyIHRoYXQgZXhlY3V0ZXMgYSBzdWl0ZSBvbmNlIHBlciAqKmRpc3RpbmN0Kiogc3VwcG9ydGVkXG4gKiBPYnNpZGlhbiB2ZXJzaW9uLlxuICpcbiAqIFRoaW4gZ2x1ZSBvdmVyIHRoZSBwdXJlIGB2ZXJzaW9uLW1hdHJpeC50c2AgZGVjaXNpb24gbGF5ZXI6IHRoZSBvbmx5IHRoaW5nc1xuICogdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIHNpbmdsZSBtYW5pZmVzdCBmZXRjaCBhbmQgdGhlIGxvZ2dpbmcuIEV2ZXJ5dGhpbmdcbiAqIHRoYXQgZGVjaWRlcyBcdTIwMTQgbm9ybWFsaXppbmcgdGhlIHJlcXVlc3RlZCBzcGVjaWZpZXJzLCByZXNvbHZpbmcgdGhlbSxcbiAqIGRlLWR1cGxpY2F0aW5nIG9uIHRoZSByZXNvbHZlZCB2ZXJzaW9uLCBzZXF1ZW5jaW5nIHRoZSBydW5zLCBhbmQgYnVpbGRpbmcgdGhlXG4gKiBmYWlsdXJlIHN1bW1hcnkgXHUyMDE0IGlzIHB1cmUgYW5kIHVuaXQtdGVzdGVkIG5leHQgZG9vci5cbiAqXG4gKiBUaGUgbG9vcCBsaXZlcyBhYm92ZSB0aGUgdHJhbnNwb3J0IHJhdGhlciB0aGFuIGluc2lkZSBpdCBiZWNhdXNlIGEgdGVzdFxuICogZnJhbWV3b3JrJ3MgZ2xvYmFsIHNldHVwIGNhbm5vdCByZS1ydW4gaXRzIG93biB0ZXN0IGZpbGVzOiBpdCBsYXVuY2hlcyBvbmVcbiAqIGluc3RhbmNlIGZvciBvbmUgcnVuLiBLZWVwaW5nIHRoZSBsb29wIGZyYW1ld29yay1hZ25vc3RpYyAodGhlIGNhbGxlciBzdXBwbGllc1xuICogYHJ1bmApIGlzIHdoYXQgbGV0cyBWaXRlc3QsIEplc3QsIGFuZCBtYW51YWwgY29uc3VtZXJzIGFsbCBpbmhlcml0IGl0IChMNikuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgZ2x1ZSAobmV0d29yayBmZXRjaCArIGxvZ2dpbmcpIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5LFxuICBSZXNvbHZlZFZlcnNpb25TcGVjXG59IGZyb20gJy4vdmVyc2lvbi1tYXRyaXguY2pzJztcblxuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi9sb2cuY2pzJztcbmltcG9ydCB7IGZldGNoRGVza3RvcFJlbGVhc2VzTWFuaWZlc3QgfSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24tc3dpdGNoLmNqcyc7XG5pbXBvcnQge1xuICBidWlsZFZlcnNpb25NYXRyaXgsXG4gIGZvcm1hdFZlcnNpb25NYXRyaXhQbGFuLFxuICBmb3JtYXRWZXJzaW9uTWF0cml4UnVuSGVhZGVyLFxuICBoYXNDaGFubmVsU3BlYyxcbiAgcmVzb2x2ZVJlcXVlc3RlZFNwZWNzLFxuICByZXNvbHZlVmVyc2lvblNwZWNzLFxuICBydW5WZXJzaW9uTWF0cml4RW50cmllc1xufSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4UGFyYW1zIHtcbiAgLyoqXG4gICAqIFJ1bnMgdGhlIHN1aXRlcyBhZ2FpbnN0IG9uZSBjb25jcmV0ZSBPYnNpZGlhbiB2ZXJzaW9uLCB0aHJvd2luZyBvbiBmYWlsdXJlLlxuICAgKlxuICAgKiBUaGUgZW50cnkncyBgdmVyc2lvbmAgaXMgdGhlIGNvbmNyZXRlIGB4LnkuemAgdG8gcGluIFx1MjAxNCB0eXBpY2FsbHkgZm9yd2FyZGVkIHRvXG4gICAqIHRoZSB0ZXN0LXJ1bm5lciBjaGlsZCBhcyBgT0JTSURJQU5fVkVSU0lPTmAuXG4gICAqL1xuICByZWFkb25seSBydW46IChlbnRyeTogT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkpID0+
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3J1bi12ZXJzaW9uLW1hdHJpeC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEludGVncmF0aW9uLXRpbWUgcnVubmVyIHRoYXQgZXhlY3V0ZXMgYSBzdWl0ZSBvbmNlIHBlciAqKmRpc3RpbmN0Kiogc3VwcG9ydGVkXG4gKiBPYnNpZGlhbiB2ZXJzaW9uLlxuICpcbiAqIFRoaW4gZ2x1ZSBvdmVyIHRoZSBwdXJlIGB2ZXJzaW9uLW1hdHJpeC50c2AgZGVjaXNpb24gbGF5ZXI6IHRoZSBvbmx5IHRoaW5nc1xuICogdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIHNpbmdsZSBtYW5pZmVzdCBmZXRjaCBhbmQgdGhlIGxvZ2dpbmcuIEV2ZXJ5dGhpbmdcbiAqIHRoYXQgZGVjaWRlcyBcdTIwMTQgbm9ybWFsaXppbmcgdGhlIHJlcXVlc3RlZCBzcGVjaWZpZXJzLCByZXNvbHZpbmcgdGhlbSxcbiAqIGRlLWR1cGxpY2F0aW5nIG9uIHRoZSByZXNvbHZlZCB2ZXJzaW9uLCBzZXF1ZW5jaW5nIHRoZSBydW5zLCBhbmQgYnVpbGRpbmcgdGhlXG4gKiBmYWlsdXJlIHN1bW1hcnkgXHUyMDE0IGlzIHB1cmUgYW5kIHVuaXQtdGVzdGVkIG5leHQgZG9vci5cbiAqXG4gKiBUaGUgbG9vcCBsaXZlcyBhYm92ZSB0aGUgdHJhbnNwb3J0IHJhdGhlciB0aGFuIGluc2lkZSBpdCBiZWNhdXNlIGEgdGVzdFxuICogZnJhbWV3b3JrJ3MgZ2xvYmFsIHNldHVwIGNhbm5vdCByZS1ydW4gaXRzIG93biB0ZXN0IGZpbGVzOiBpdCBsYXVuY2hlcyBvbmVcbiAqIGluc3RhbmNlIGZvciBvbmUgcnVuLiBLZWVwaW5nIHRoZSBsb29wIGZyYW1ld29yay1hZ25vc3RpYyAodGhlIGNhbGxlciBzdXBwbGllc1xuICogYHJ1bmApIGlzIHdoYXQgbGV0cyBWaXRlc3QsIEplc3QsIGFuZCBtYW51YWwgY29uc3VtZXJzIGFsbCBpbmhlcml0IGl0IChMNikuXG4gKi9cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIEludGVncmF0aW9uLXRpbWUgZ2x1ZSAobmV0d29yayBmZXRjaCArIGxvZ2dpbmcpIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5LFxuICBSZXNvbHZlZFZlcnNpb25TcGVjXG59IGZyb20gJy4vdmVyc2lvbi1tYXRyaXguY2pzJztcblxuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi9sb2cuY2pzJztcbmltcG9ydCB7IGZldGNoRGVza3RvcFJlbGVhc2VzTWFuaWZlc3QgfSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24tc3dpdGNoLmNqcyc7XG5pbXBvcnQge1xuICBidWlsZFZlcnNpb25NYXRyaXgsXG4gIGZvcm1hdFZlcnNpb25NYXRyaXhQbGFuLFxuICBmb3JtYXRWZXJzaW9uTWF0cml4UnVuSGVhZGVyLFxuICBoYXNDaGFubmVsU3BlYyxcbiAgcmVzb2x2ZVJlcXVlc3RlZFNwZWNzLFxuICByZXNvbHZlVmVyc2lvblNwZWNzLFxuICBydW5WZXJzaW9uTWF0cml4RW50cmllc1xufSBmcm9tICcuL3ZlcnNpb24tbWF0cml4LmNqcyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJ1bk9ic2lkaWFuVmVyc2lvbk1hdHJpeH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4UGFyYW1zIHtcbiAgLyoqXG4gICAqIFJ1bnMgdGhlIHN1aXRlcyBhZ2FpbnN0IG9uZSBjb25jcmV0ZSBPYnNpZGlhbiB2ZXJzaW9uLCB0aHJvd2luZyBvbiBmYWlsdXJlLlxuICAgKlxuICAgKiBUaGUgZW50cnkncyBgdmVyc2lvbmAgaXMgdGhlIGNvbmNyZXRlIGB4LnkuemAgdG8gcGluIFx1MjAxNCB0eXBpY2FsbHkgZm9yd2FyZGVkIHRvXG4gICAqIHRoZSB0ZXN0LXJ1bm5lciBjaGlsZCBhcyBgT0JTSURJQU5fVkVSU0lPTmAuXG4gICAqL1xuICByZWFkb25seSBydW46IChlbnRyeTogT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBzcGVjaWZpZXJzIHRvIHJ1biBhZ2FpbnN0OiBhbiBhcnJheSwgb3IgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nXG4gICAqIHNvIGFuIGVudiB2YXIgY2FuIGJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoLlxuICAgKlxuICAgKiBFYWNoIGFjY2VwdHMgYW4gZXhwbGljaXQgYCd4LnkueidgLCBgJ3B1YmxpYy1sYXRlc3QnYCwgb3IgYCdjYXRhbHlzdC1sYXRlc3QnYC5cbiAgICogRGVmYXVsdHMgdG8gYm90aCBlbmRzIG9mIHRoZSBzdXBwb3J0ZWQgcmFuZ2Ugd2hlbiBvbWl0dGVkIG9yIGVtcHR5LCBhbmRcbiAgICogdGhlIGxpc3QgaXMgYWx3YXlzIGRlLWR1cGxpY2F0ZWQgb24gdGhlICoqcmVzb2x2ZWQqKiB2ZXJzaW9uIFx1MjAxNCBzbyB3aGVuIHB1YmxpY1xuICAgKiBoYXMgY2F1Z2h0IHVwIHRvIGNhdGFseXN0LCB0aGUgc3VpdGVzIHJ1biBvbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbnM/OiByZWFkb25seSBzdHJpbmdbXSB8IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSdW5zIGEgc3VpdGUgb25jZSBwZXIgZGlzdGluY3Qgc3VwcG9ydGVkIE9ic2lkaWFuIHZlcnNpb24uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwZXItdmVyc2lvbiBydW5uZXIgYW5kIHRoZSByZXF1ZXN0ZWQgdmVyc2lvbnMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgZXZlcnkgdmVyc2lvbiBoYXMgcnVuIHN1Y2Nlc3NmdWxseS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gdmVyc2lvbiBjb3VsZCBiZSByZXNvbHZlZCwgb3IgYW4ge0BsaW5rIEFnZ3JlZ2F0ZUVycm9yfVxuICogICBuYW1pbmcgZXZlcnkgdmVyc2lvbiB3aG9zZSBydW4gZmFpbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4KHBhcmFtczogUnVuT2JzaWRpYW5WZXJzaW9uTWF0cml4UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgcnVuLCB2ZXJzaW9ucyB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IHsgaXNEZWZhdWx0LCBzcGVjcyB9ID0gcmVzb2x2ZVJlcXVlc3RlZFNwZWNzKHZlcnNpb25zKTtcbiAgY29uc3QgbWFuaWZlc3QgPSBoYXNDaGFubmVsU3BlYyhzcGVjcykgPyBhd2FpdCBmZXRjaERlc2t0b3BSZWxlYXNlc01hbmlmZXN0KCkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgZHJvcHBlZFNwZWNzLCByZXNvbHZlZFNwZWNzIH0gPSByZXNvbHZlVmVyc2lvblNwZWNzKHtcbiAgICBtYW5pZmVzdCxcbiAgICAvLyBUaGUgZGVmYXVsdCBsaXN0IG11c3Qgbm90IGJyZWFrIGV2ZXJ5IGNvbnN1bWVyJ3MgZ2F0ZSB3aGVuIGEgY2hhbm5lbCBpc1xuICAgIC8vIE1vbWVudGFyaWx5IGFic2VudCBmcm9tIHRoZSBtYW5pZmVzdDsgYW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgc3BlY2lmaWVyXG4gICAgLy8gVGhhdCBjYW5ub3QgcmVzb2x2ZSBpcyBhIHJlYWwgZXJyb3IuXG4gICAgc2hvdWxkVG9sZXJhdGVVbnJlc29sdmFibGVTcGVjczogaXNEZWZhdWx0LFxuICAgIHNwZWNzXG4gIH0pO1xuXG4gIGZvciAoY29uc3QgeyByZWFzb24sIHNwZWMgfSBvZiBkcm9wcGVkU3BlY3MpIHtcbiAgICBsb2dNYXRyaXgoYFNraXBwaW5nIFwiJHtzcGVjfVwiOiAke3JlYXNvbn1gKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBidWlsZFZlcnNpb25NYXRyaXgocmVzb2x2ZWRTcGVjcyk7XG4gIGxvZ1BsYW4ocmVzb2x2ZWRTcGVjcywgZW50cmllcyk7XG5cbiAgYXdhaXQgcnVuVmVyc2lvbk1hdHJpeEVudHJpZXMoe1xuICAgIGVudHJpZXMsXG4gICAgb25FbnRyeVN0YXJ0OiAoaGVhZGVyUGFyYW1zKSA9PiB7XG4gICAgICBsb2dNYXRyaXgoZm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlcihoZWFkZXJQYXJhbXMpKTtcbiAgICB9LFxuICAgIHJ1blxuICB9KTtcbn1cblxuLyoqXG4gKiBMb2dzIGEgbWF0cml4IG1lc3NhZ2UgdW5kZXIgYSBjb25zaXN0ZW50IHByZWZpeC5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGxvZy5cbiAqL1xuZnVuY3Rpb24gbG9nTWF0cml4KG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBsb2coYFt2ZXJzaW9uLW1hdHJpeF0gJHttZXNzYWdlfWApO1xufVxuXG4vKipcbiAqIExvZ3Mgd2hhdCB0aGUgc3BlY2lmaWVycyByZXNvbHZlZCB0byBhbmQgaG93IG1hbnkgcnVucyB0aGF0IGltcGxpZXMuXG4gKlxuICogQHBhcmFtIHJlc29sdmVkU3BlY3MgLSBUaGUgcmVzb2x2ZWQgc3BlY2lmaWVycywgaW4gcmVxdWVzdGVkIG9yZGVyLlxuICogQHBhcmFtIGVudHJpZXMgLSBUaGUgZGUtZHVwbGljYXRlZCBtYXRyaXguXG4gKi9cbmZ1bmN0aW9uIGxvZ1BsYW4ocmVzb2x2ZWRTcGVjczogcmVhZG9ubHkgUmVzb2x2ZWRWZXJzaW9uU3BlY1tdLCBlbnRyaWVzOiByZWFkb25seSBPYnNpZGlhblZlcnNpb25NYXRyaXhFbnRyeVtdKTogdm9pZCB7XG4gIGZvciAoY29uc3QgbGluZSBvZiBmb3JtYXRWZXJzaW9uTWF0cml4UGxhbih7IGVudHJpZXMsIHJlc29sdmVkU3BlY3MgfSkpIHtcbiAgICBsb2dNYXRyaXgobGluZSk7XG4gIH1cbn1cblxuLyogdjggaWdub3JlIHN0b3AgKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5QkEsaUJBQW9CO0FBQ3BCLHFDQUE2QztBQUM3Qyw0QkFRTztBQWtDUCxlQUFzQix5QkFBeUIsUUFBdUQ7QUFDcEcsUUFBTSxFQUFFLEtBQUssU0FBUyxJQUFJO0FBRTFCLFFBQU0sRUFBRSxXQUFXLE1BQU0sUUFBSSw2Q0FBc0IsUUFBUTtBQUMzRCxRQUFNLGVBQVcsc0NBQWUsS0FBSyxJQUFJLFVBQU0sNkRBQTZCLElBQUk7QUFDaEYsUUFBTSxFQUFFLGNBQWMsY0FBYyxRQUFJLDJDQUFvQjtBQUFBLElBQzFEO0FBQUE7QUFBQTtBQUFBO0FBQUEsSUFJQSxpQ0FBaUM7QUFBQSxJQUNqQztBQUFBLEVBQ0YsQ0FBQztBQUVELGFBQVcsRUFBRSxRQUFRLEtBQUssS0FBSyxjQUFjO0FBQzNDLGNBQVUsYUFBYSxJQUFJLE1BQU0sTUFBTSxFQUFFO0FBQUEsRUFDM0M7QUFFQSxRQUFNLGNBQVUsMENBQW1CLGFBQWE7QUFDaEQsVUFBUSxlQUFlLE9BQU87QUFFOUIsWUFBTSwrQ0FBd0I7QUFBQSxJQUM1QjtBQUFBLElBQ0EsY0FBYyxDQUFDLGlCQUFpQjtBQUM5QixvQkFBVSxvREFBNkIsWUFBWSxDQUFDO0FBQUEsSUFDdEQ7QUFBQSxJQUNBO0FBQUEsRUFDRixDQUFDO0FBQ0g7QUFPQSxTQUFTLFVBQVUsU0FBdUI7QUFDeEMsc0JBQUksb0JBQW9CLE9BQU8sRUFBRTtBQUNuQztBQVFBLFNBQVMsUUFBUSxlQUErQyxTQUFzRDtBQUNwSCxhQUFXLFlBQVEsK0NBQXdCLEVBQUUsU0FBUyxjQUFjLENBQUMsR0FBRztBQUN0RSxjQUFVLElBQUk7QUFBQSxFQUNoQjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -32,7 +32,7 @@ export interface RunObsidianVersionMatrixParams {
|
|
|
32
32
|
* so an env var can be passed straight through.
|
|
33
33
|
*
|
|
34
34
|
* Each accepts an explicit `'x.y.z'`, `'public-latest'`, or `'catalyst-latest'`.
|
|
35
|
-
* Defaults to both ends of the supported range
|
|
35
|
+
* Defaults to both ends of the supported range when omitted or empty, and
|
|
36
36
|
* the list is always de-duplicated on the **resolved** version — so when public
|
|
37
37
|
* has caught up to catalyst, the suites run once.
|
|
38
38
|
*/
|
|
@@ -0,0 +1,53 @@
|
|
|
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 __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var teardown_verdict_exports = {};
|
|
20
|
+
__export(teardown_verdict_exports, {
|
|
21
|
+
buildTeardownMessage: () => buildTeardownMessage,
|
|
22
|
+
resolveTeardownOutcome: () => resolveTeardownOutcome
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(teardown_verdict_exports);
|
|
25
|
+
var import_type_guards = require("./type-guards.cjs");
|
|
26
|
+
function buildTeardownMessage(params) {
|
|
27
|
+
switch (params.outcome) {
|
|
28
|
+
case "still-running": {
|
|
29
|
+
return `WARNING: ${params.subject} did not exit within ${String(params.timeoutInMilliseconds)}ms and still holds ${params.evidence}; a later run may adopt it. Kill it before the next Android run.`;
|
|
30
|
+
}
|
|
31
|
+
case "stopped": {
|
|
32
|
+
return `${params.subject} stopped (verified: ${params.evidence} released).`;
|
|
33
|
+
}
|
|
34
|
+
case "stopped-after-escalation": {
|
|
35
|
+
return `${params.subject} stopped after escalation (verified: ${params.evidence} released).`;
|
|
36
|
+
}
|
|
37
|
+
default: {
|
|
38
|
+
return (0, import_type_guards.assertNever)(params.outcome);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function resolveTeardownOutcome(params) {
|
|
43
|
+
if (!params.isStopped) {
|
|
44
|
+
return "still-running";
|
|
45
|
+
}
|
|
46
|
+
return params.hasEscalated ? "stopped-after-escalation" : "stopped";
|
|
47
|
+
}
|
|
48
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
49
|
+
0 && (module.exports = {
|
|
50
|
+
buildTeardownMessage,
|
|
51
|
+
resolveTeardownOutcome
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RlYXJkb3duLXZlcmRpY3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIHZlcmRpY3QgKyBtZXNzYWdlIGJ1aWxkaW5nIGZvciB0aGUgYXV0by1zdGFydGVkLXByb2Nlc3MgdGVhcmRvd24uXG4gKlxuICogVGhlIHRlYXJkb3duIHVzZWQgdG8gbG9nIGBBdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlciBzdG9wcGVkLmAgb24gdGhlXG4gKiAqKmF0dGVtcHQqKiBcdTIwMTQgcHJpbnRlZCB1bmNvbmRpdGlvbmFsbHkgcmlnaHQgYWZ0ZXIgdGhlIGtpbGwgd2FzIGlzc3VlZCwgd2l0aFxuICogbm90aGluZyBhc3NlcnRpbmcgdGhlIHByb2Nlc3MgaGFkIGFjdHVhbGx5IGV4aXRlZC4gT24gMjAyNi0wOS0wMiBib3RoIHRoZVxuICogc2VydmVyIGFuZCB0aGUgZW11bGF0b3Igd2VyZSBzdGlsbCBzZXJ2aW5nIHRlbiBtaW51dGVzIGFmdGVyIHRoYXQgbGluZSB3YXNcbiAqIHdyaXR0ZW4sIGFuZCB0aGUgbmV4dCBydW4gYWRvcHRlZCB0aGVtIGFuZCBkaWVkIHR3byBzZWNvbmRzIGludG8gaXRzIHNlc3Npb25cbiAqIGFzIHRoZXkgZmluYWxseSBmaW5pc2hlZCBkeWluZy4gQSBsb2cgdGhhdCBzYXlzIHRoZSBtYWNoaW5lIGlzIGNsZWFuIHdoZW4gaXRcbiAqIGlzIG5vdCBkb2VzIG5vdCBtZXJlbHkgZmFpbCB0byBoZWxwIFx1MjAxNCBpdCBzZW5kcyB0aGUgbmV4dCByZWFkZXIgYXdheSBmcm9tIHRoZVxuICogY2F1c2UuXG4gKlxuICogU28gYSBzdG9wIGlzIGEgY2xhaW0gdGhhdCBoYXMgdG8gYmUgZWFybmVkOiBvbmx5IHtAbGluayByZXNvbHZlVGVhcmRvd25PdXRjb21lfVxuICogbWF5IGRlY2lkZSBvbmUgd2FzLCBhbmQgb25seSB0aGUgYHN0b3BwZWRgIG91dGNvbWVzIGFyZSBhbGxvd2VkIHRvIHNheSBzby5cbiAqL1xuXG5pbXBvcnQgeyBhc3NlcnROZXZlciB9IGZyb20gJy4vdHlwZS1ndWFyZHMuY2pzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYnVpbGRUZWFyZG93bk1lc3NhZ2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkVGVhcmRvd25NZXNzYWdlUGFyYW1zIHtcbiAgLyoqXG4gIFdoYXQgd2FzIGNoZWNrZWQsIGFzIGEgbm91biBwaHJhc2UgXHUyMDE0IGUuZy4gYHBvcnQgNDcyM2AsIGBBVkQgXCJvYnNpZGlhbl90ZXN0XCIgb24gZGV2aWNlIGVtdWxhdG9yLTU1NTRgLlxuICAgKi9cbiAgcmVhZG9ubHkgZXZpZGVuY2U6IHN0cmluZztcblxuICAvKipcbiAgVGhlIHZlcmRpY3QgZnJvbSB7QGxpbmsgcmVzb2x2ZVRlYXJkb3duT3V0Y29tZX0uXG4gICAqL1xuICByZWFkb25seSBvdXRjb21lOiBUZWFyZG93bk91dGNvbWU7XG5cbiAgLyoqXG4gIFdoYXQgd2FzIGJlaW5nIHN0b3BwZWQgXHUyMDE0IGUuZy4gYEF1dG8tc3RhcnRlZCBBcHBpdW0gc2VydmVyYC5cbiAgICovXG4gIHJlYWRvbmx5IHN1YmplY3Q6IHN0cmluZztcblxuICAvKipcbiAgVGhlIGJ1ZGdldCB0aGUgc3RvcCB3YXMgZ2l2ZW4sIGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlVGVhcmRvd25PdXRjb21lfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlVGVhcmRvd25PdXRjb21lUGFyYW1zIHtcbiAgLyoqXG4gIFdoZXRoZXIgdGhlIGZpcnN0IGtpbGwgd2FzIGZvbGxvd2VkIGJ5IGEgc2Vjb25kLCBoYXJkZXIgb25lLlxuICAgKi9cbiAgcmVhZG9ubHkgaGFzRXNjYWxhdGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICBXaGV0aGVyIHRoZSBwcm9jZXNzIHdhcyAqKm9ic2VydmVkKiogdG8gYmUgZ29uZSwgcmF0aGVyIHRoYW4gbWVyZWx5IGFza2VkIHRvIGdvLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdG9wcGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFdoYXQgdGhlIHRlYXJkb3duIGFjdHVhbGx5IGFjaGlldmVkLlxuICovXG5leHBvcnQgdHlwZSBUZWFyZG93bk91dGNvbWUgPSAnc3RpbGwtcnVubmluZycgfCAnc3RvcHBlZC1hZnRlci1lc2NhbGF0aW9uJyB8ICdzdG9wcGVkJztcblxuLyoqXG4gKiBCdWlsZHMgdGhlIGxpbmUgdGhlIHRlYXJkb3duIGxvZ3MgZm9yIGFuIG91dGNvbWUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBvdXRjb21lIHBsdXMgd2hhdCB3YXMgYmVpbmcgc3RvcHBlZCBhbmQgd2hhdCBwcm92ZWQgaXQuXG4gKiBAcmV0dXJucyBUaGUgbG9nIGxpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFRlYXJkb3duTWVzc2FnZShwYXJhbXM6IEJ1aWxkVGVhcmRvd25NZXNzYWdlUGFyYW1zKTogc3RyaW5nIHtcbiAgc3dpdGNoIChwYXJhbXMub3V0Y29tZSkge1xuICAgIGNhc2UgJ3N0aWxsLXJ1bm5pbmcnOiB7XG4gICAgICByZXR1cm4gYFdBUk5JTkc6ICR7cGFyYW1zLnN1YmplY3R9IGRpZCBub3QgZXhpdCB3aXRoaW4gJHtTdHJpbmcocGFyYW1zLnRpbWVvdXRJbk1pbGxpc2Vjb25kcyl9bXMgYW5kIHN0aWxsIGhvbGRzICR7cGFyYW1zLmV2aWRlbmNlfTsgYSBsYXRlciBydW4gbWF5IGFkb3B0IGl0LiBLaWxsIGl0IGJlZm9yZSB0aGUgbmV4dCBBbmRyb2lkIHJ1bi5gO1xuICAgIH1cbiAgICBjYXNlICdzdG9wcGVkJzoge1xuICAgICAgcmV0dXJuIGAke3BhcmFtcy5zdWJqZWN0fSBzdG9wcGVkICh2ZXJpZmllZDogJHtwYXJhbXMuZXZpZGVuY2V9IHJlbGVhc2VkKS5gO1xuICAgIH1cbiAgICBjYXNlICdzdG9wcGVkLWFmdGVyLWVzY2FsYXRpb24nOiB7XG4gICAgICByZXR1cm4gYCR7cGFyYW1zLnN1YmplY3R9IHN0b3BwZWQgYWZ0ZXIgZXNjYWxhdGlvbiAodmVyaWZpZWQ6ICR7cGFyYW1zLmV2aWRlbmNlfSByZWxlYXNlZCkuYDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIGFzc2VydE5ldmVyKHBhcmFtcy5vdXRjb21lKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBEZWNpZGVzIHdoYXQgdGhlIHRlYXJkb3duIGFjaGlldmVkLCBmcm9tIHdoYXQgd2FzIG9ic2VydmVkIGFmdGVyIHRoZSBraWxsLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBXaGV0aGVyIHRoZSBwcm9jZXNzIGlzIGdvbmUsIGFuZCB3aGV0aGVyIGl0IHRvb2sgYW4gZXNjYWxhdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBvdXRjb21lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVRlYXJkb3duT3V0Y29tZShwYXJhbXM6IFJlc29sdmVUZWFyZG93bk91dGNvbWVQYXJhbXMpOiBUZWFyZG93bk91dGNvbWUge1xuICBpZiAoIXBhcmFtcy5pc1N0b3BwZWQpIHtcbiAgICByZXR1cm4gJ3N0aWxsLXJ1bm5pbmcnO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcy5oYXNFc2NhbGF0ZWQgPyAnc3RvcHBlZC1hZnRlci1lc2NhbGF0aW9uJyA6ICdzdG9wcGVkJztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtCQSx5QkFBNEI7QUFxRHJCLFNBQVMscUJBQXFCLFFBQTRDO0FBQy9FLFVBQVEsT0FBTyxTQUFTO0FBQUEsSUFDdEIsS0FBSyxpQkFBaUI7QUFDcEIsYUFBTyxZQUFZLE9BQU8sT0FBTyx3QkFBd0IsT0FBTyxPQUFPLHFCQUFxQixDQUFDLHNCQUFzQixPQUFPLFFBQVE7QUFBQSxJQUNwSTtBQUFBLElBQ0EsS0FBSyxXQUFXO0FBQ2QsYUFBTyxHQUFHLE9BQU8sT0FBTyx1QkFBdUIsT0FBTyxRQUFRO0FBQUEsSUFDaEU7QUFBQSxJQUNBLEtBQUssNEJBQTRCO0FBQy9CLGFBQU8sR0FBRyxPQUFPLE9BQU8sd0NBQXdDLE9BQU8sUUFBUTtBQUFBLElBQ2pGO0FBQUEsSUFDQSxTQUFTO0FBQ1AsaUJBQU8sZ0NBQVksT0FBTyxPQUFPO0FBQUEsSUFDbkM7QUFBQSxFQUNGO0FBQ0Y7QUFRTyxTQUFTLHVCQUF1QixRQUF1RDtBQUM1RixNQUFJLENBQUMsT0FBTyxXQUFXO0FBQ3JCLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxPQUFPLGVBQWUsNkJBQTZCO0FBQzVEOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Pure verdict + message building for the auto-started-process teardown.
|
|
5
|
+
*
|
|
6
|
+
* The teardown used to log `Auto-started Appium server stopped.` on the
|
|
7
|
+
* **attempt** — printed unconditionally right after the kill was issued, with
|
|
8
|
+
* nothing asserting the process had actually exited. On 2026-09-02 both the
|
|
9
|
+
* server and the emulator were still serving ten minutes after that line was
|
|
10
|
+
* written, and the next run adopted them and died two seconds into its session
|
|
11
|
+
* as they finally finished dying. A log that says the machine is clean when it
|
|
12
|
+
* is not does not merely fail to help — it sends the next reader away from the
|
|
13
|
+
* cause.
|
|
14
|
+
*
|
|
15
|
+
* So a stop is a claim that has to be earned: only {@link resolveTeardownOutcome}
|
|
16
|
+
* may decide one was, and only the `stopped` outcomes are allowed to say so.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Parameters for {@link buildTeardownMessage}.
|
|
20
|
+
*/
|
|
21
|
+
export interface BuildTeardownMessageParams {
|
|
22
|
+
/**
|
|
23
|
+
What was checked, as a noun phrase — e.g. `port 4723`, `AVD "obsidian_test" on device emulator-5554`.
|
|
24
|
+
*/
|
|
25
|
+
readonly evidence: string;
|
|
26
|
+
/**
|
|
27
|
+
The verdict from {@link resolveTeardownOutcome}.
|
|
28
|
+
*/
|
|
29
|
+
readonly outcome: TeardownOutcome;
|
|
30
|
+
/**
|
|
31
|
+
What was being stopped — e.g. `Auto-started Appium server`.
|
|
32
|
+
*/
|
|
33
|
+
readonly subject: string;
|
|
34
|
+
/**
|
|
35
|
+
The budget the stop was given, in milliseconds.
|
|
36
|
+
*/
|
|
37
|
+
readonly timeoutInMilliseconds: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Parameters for {@link resolveTeardownOutcome}.
|
|
41
|
+
*/
|
|
42
|
+
export interface ResolveTeardownOutcomeParams {
|
|
43
|
+
/**
|
|
44
|
+
Whether the first kill was followed by a second, harder one.
|
|
45
|
+
*/
|
|
46
|
+
readonly hasEscalated: boolean;
|
|
47
|
+
/**
|
|
48
|
+
Whether the process was **observed** to be gone, rather than merely asked to go.
|
|
49
|
+
*/
|
|
50
|
+
readonly isStopped: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* What the teardown actually achieved.
|
|
54
|
+
*/
|
|
55
|
+
export type TeardownOutcome = 'still-running' | 'stopped-after-escalation' | 'stopped';
|
|
56
|
+
/**
|
|
57
|
+
* Builds the line the teardown logs for an outcome.
|
|
58
|
+
*
|
|
59
|
+
* @param params - The outcome plus what was being stopped and what proved it.
|
|
60
|
+
* @returns The log line.
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildTeardownMessage(params: BuildTeardownMessageParams): string;
|
|
63
|
+
/**
|
|
64
|
+
* Decides what the teardown achieved, from what was observed after the kill.
|
|
65
|
+
*
|
|
66
|
+
* @param params - Whether the process is gone, and whether it took an escalation.
|
|
67
|
+
* @returns The outcome.
|
|
68
|
+
*/
|
|
69
|
+
export declare function resolveTeardownOutcome(params: ResolveTeardownOutcomeParams): TeardownOutcome;
|