obsidian-integration-testing 8.3.0 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -11
- package/dist/lib/cjs/asar-fallback-detection.cjs +48 -0
- package/dist/lib/cjs/asar-fallback-detection.d.cts +75 -0
- package/dist/lib/cjs/avd-list.cjs +36 -0
- package/dist/lib/cjs/avd-list.d.cts +38 -0
- package/dist/lib/cjs/compatibility-options.cjs +18 -1
- package/dist/lib/cjs/compatibility-options.d.cts +41 -0
- package/dist/lib/cjs/connect-to-cdp.cjs +17 -18
- package/dist/lib/cjs/connect-to-cdp.d.cts +25 -0
- package/dist/lib/cjs/demo-vault-tree.cjs +52 -0
- package/dist/lib/cjs/demo-vault-tree.d.cts +34 -0
- package/dist/lib/cjs/ecmascript-version.cjs +63 -0
- package/dist/lib/cjs/ecmascript-version.d.cts +28 -0
- package/dist/lib/cjs/global-setup-core.cjs +44 -27
- package/dist/lib/cjs/global-setup-core.d.cts +15 -3
- package/dist/lib/cjs/index.cjs +10 -1
- package/dist/lib/cjs/index.d.cts +7 -1
- package/dist/lib/cjs/installer-asset.cjs +18 -3
- package/dist/lib/cjs/installer-asset.d.cts +26 -0
- package/dist/lib/cjs/jest/global-setup-no-plugin.cjs +41 -0
- package/dist/lib/cjs/jest/global-setup-no-plugin.d.cts +26 -0
- package/dist/lib/cjs/jest/global-setup.cjs +2 -2
- package/dist/lib/cjs/jest/global-setup.d.cts +11 -1
- package/dist/lib/cjs/jest/global-teardown-no-plugin.cjs +26 -0
- package/dist/lib/cjs/jest/global-teardown-no-plugin.d.cts +11 -0
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/namespace-bootstrap.cjs +44 -7
- package/dist/lib/cjs/normalize-optional-properties.cjs +31 -0
- package/dist/lib/cjs/normalize-optional-properties.d.cts +26 -0
- package/dist/lib/cjs/obsidian-installer.cjs +6 -1
- package/dist/lib/cjs/obsidian-metadata.cjs +3775 -302
- package/dist/lib/cjs/obsidian-metadata.d.cts +71 -0
- package/dist/lib/cjs/obsidian-version-switch.cjs +5 -2
- package/dist/lib/cjs/owned-vault-seed.cjs +38 -0
- package/dist/lib/cjs/owned-vault-seed.d.cts +67 -0
- package/dist/lib/cjs/process-exit-message.cjs +47 -0
- package/dist/lib/cjs/process-exit-message.d.cts +48 -0
- package/dist/lib/cjs/silent-asar-fallback-error.cjs +48 -0
- package/dist/lib/cjs/silent-asar-fallback-error.d.cts +40 -0
- package/dist/lib/cjs/transport-desktop-cdp.cjs +197 -73
- package/dist/lib/cjs/transport-desktop-cdp.d.cts +74 -15
- package/dist/lib/cjs/transport-factory.cjs +135 -34
- package/dist/lib/cjs/transport-options.cjs +1 -1
- package/dist/lib/cjs/transport-options.d.cts +16 -0
- package/dist/lib/cjs/vitest/global-setup-no-plugin.cjs +37 -0
- package/dist/lib/cjs/vitest/global-setup-no-plugin.d.cts +26 -0
- package/dist/lib/cjs/vitest/global-setup.cjs +2 -2
- package/dist/lib/cjs/vitest/global-setup.d.cts +11 -1
- package/dist/lib/esm/asar-fallback-detection.d.mts +75 -0
- package/dist/lib/esm/asar-fallback-detection.mjs +24 -0
- package/dist/lib/esm/avd-list.d.mts +38 -0
- package/dist/lib/esm/avd-list.mjs +11 -0
- package/dist/lib/esm/compatibility-options.d.mts +41 -0
- package/dist/lib/esm/compatibility-options.mjs +16 -1
- package/dist/lib/esm/connect-to-cdp.d.mts +25 -0
- package/dist/lib/esm/connect-to-cdp.mjs +17 -18
- package/dist/lib/esm/demo-vault-tree.d.mts +34 -0
- package/dist/lib/esm/demo-vault-tree.mjs +35 -0
- package/dist/lib/esm/ecmascript-version.d.mts +28 -0
- package/dist/lib/esm/ecmascript-version.mjs +39 -0
- package/dist/lib/esm/global-setup-core.d.mts +15 -3
- package/dist/lib/esm/global-setup-core.mjs +44 -27
- package/dist/lib/esm/index.d.mts +7 -1
- package/dist/lib/esm/index.mjs +7 -1
- package/dist/lib/esm/installer-asset.d.mts +26 -0
- package/dist/lib/esm/installer-asset.mjs +16 -2
- package/dist/lib/esm/jest/global-setup-no-plugin.d.mts +26 -0
- package/dist/lib/esm/jest/global-setup-no-plugin.mjs +17 -0
- package/dist/lib/esm/jest/global-setup.d.mts +11 -1
- package/dist/lib/esm/jest/global-setup.mjs +2 -2
- package/dist/lib/esm/jest/global-teardown-no-plugin.d.mts +11 -0
- package/dist/lib/esm/jest/global-teardown-no-plugin.mjs +6 -0
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/namespace-bootstrap.mjs +44 -7
- package/dist/lib/esm/normalize-optional-properties.d.mts +26 -0
- package/dist/lib/esm/normalize-optional-properties.mjs +7 -0
- package/dist/lib/esm/obsidian-installer.mjs +8 -2
- package/dist/lib/esm/obsidian-metadata.d.mts +71 -0
- package/dist/lib/esm/obsidian-metadata.mjs +3775 -302
- package/dist/lib/esm/obsidian-version-switch.mjs +5 -2
- package/dist/lib/esm/owned-vault-seed.d.mts +67 -0
- package/dist/lib/esm/owned-vault-seed.mjs +14 -0
- package/dist/lib/esm/process-exit-message.d.mts +48 -0
- package/dist/lib/esm/process-exit-message.mjs +23 -0
- package/dist/lib/esm/silent-asar-fallback-error.d.mts +40 -0
- package/dist/lib/esm/silent-asar-fallback-error.mjs +24 -0
- package/dist/lib/esm/transport-desktop-cdp.d.mts +74 -15
- package/dist/lib/esm/transport-desktop-cdp.mjs +197 -73
- package/dist/lib/esm/transport-factory.mjs +139 -34
- package/dist/lib/esm/transport-options.d.mts +16 -0
- package/dist/lib/esm/vitest/global-setup-no-plugin.d.mts +26 -0
- package/dist/lib/esm/vitest/global-setup-no-plugin.mjs +11 -0
- package/dist/lib/esm/vitest/global-setup.d.mts +11 -1
- package/dist/lib/esm/vitest/global-setup.mjs +2 -2
- package/dist/obsidian-integration-testing-9.0.0.tgz +0 -0
- package/package.json +40 -8
- package/dist/obsidian-integration-testing-8.3.0.tgz +0 -0
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ import { defineConfig } from 'vitest/config';
|
|
|
26
26
|
|
|
27
27
|
export default defineConfig({
|
|
28
28
|
test: {
|
|
29
|
-
globalSetup: ['obsidian-integration-testing/vitest-global-setup'],
|
|
29
|
+
globalSetup: ['obsidian-integration-testing/vitest-global-setup-plugin'],
|
|
30
30
|
},
|
|
31
31
|
});
|
|
32
32
|
```
|
|
@@ -52,8 +52,8 @@ Or add it to `compilerOptions.types` in your `tsconfig.json`:
|
|
|
52
52
|
```ts
|
|
53
53
|
// jest.config.ts
|
|
54
54
|
export default {
|
|
55
|
-
globalSetup: 'obsidian-integration-testing/jest-global-setup',
|
|
56
|
-
globalTeardown: 'obsidian-integration-testing/jest-global-teardown',
|
|
55
|
+
globalSetup: 'obsidian-integration-testing/jest-global-setup-plugin',
|
|
56
|
+
globalTeardown: 'obsidian-integration-testing/jest-global-teardown-plugin',
|
|
57
57
|
};
|
|
58
58
|
```
|
|
59
59
|
|
|
@@ -383,7 +383,7 @@ Use `getTempVault()` to get the temporary vault created by the global setup:
|
|
|
383
383
|
```ts
|
|
384
384
|
import { describe, expect, it } from 'vitest';
|
|
385
385
|
import { evalInObsidian } from 'obsidian-integration-testing';
|
|
386
|
-
import { getTempVault } from 'obsidian-integration-testing/vitest-global-setup';
|
|
386
|
+
import { getTempVault } from 'obsidian-integration-testing/vitest-global-setup-plugin';
|
|
387
387
|
|
|
388
388
|
describe('my-plugin', () => {
|
|
389
389
|
const vault = getTempVault();
|
|
@@ -418,7 +418,7 @@ describe('my-plugin', () => {
|
|
|
418
418
|
|
|
419
419
|
```ts
|
|
420
420
|
import { evalInObsidian } from 'obsidian-integration-testing';
|
|
421
|
-
import { getTempVault } from 'obsidian-integration-testing/jest-global-setup';
|
|
421
|
+
import { getTempVault } from 'obsidian-integration-testing/jest-global-setup-plugin';
|
|
422
422
|
|
|
423
423
|
describe('my-plugin', () => {
|
|
424
424
|
const vault = getTempVault();
|
|
@@ -444,7 +444,7 @@ This capability reaches all three consumption paths.
|
|
|
444
444
|
|
|
445
445
|
```ts
|
|
446
446
|
// integration-global-setup.ts
|
|
447
|
-
import { createSetup } from 'obsidian-integration-testing/vitest-global-setup';
|
|
447
|
+
import { createSetup } from 'obsidian-integration-testing/vitest-global-setup-plugin';
|
|
448
448
|
|
|
449
449
|
export const { setup, teardown } = createSetup({
|
|
450
450
|
populate: () => ({
|
|
@@ -469,7 +469,7 @@ export default defineConfig({
|
|
|
469
469
|
|
|
470
470
|
```ts
|
|
471
471
|
// integration-global-setup.ts — shared createSetup pair
|
|
472
|
-
import { createSetup } from 'obsidian-integration-testing/jest-global-setup';
|
|
472
|
+
import { createSetup } from 'obsidian-integration-testing/jest-global-setup-plugin';
|
|
473
473
|
|
|
474
474
|
export const { setup, teardown } = createSetup({
|
|
475
475
|
populate: () => ({
|
|
@@ -500,6 +500,28 @@ Both files share the same `createSetup` instance (via the common module), so `te
|
|
|
500
500
|
|
|
501
501
|
**Manual** — when wiring `TempVault` yourself (without a framework global setup), call `vault.populate()` before `vault.register()`, as shown in [Create a temporary vault](#create-a-temporary-vault).
|
|
502
502
|
|
|
503
|
+
### Non-plugin consumers
|
|
504
|
+
|
|
505
|
+
If your project is **not** a plugin — a tool that only needs a registered, empty vault to `evalInObsidian` against (e.g. a typings crawler) — point `globalSetup` at the **`-no-plugin`** entry point instead of `-plugin`. It still launches one owned, off-screen Obsidian instance and publishes its endpoint to workers so each worker **attaches** to it, but skips reading `dist/manifest.json`, copying a plugin, writing `community-plugins.json`, and enabling a plugin. No wrapper module needed:
|
|
506
|
+
|
|
507
|
+
```ts
|
|
508
|
+
// vitest.config.ts
|
|
509
|
+
import { defineConfig } from 'vitest/config';
|
|
510
|
+
|
|
511
|
+
export default defineConfig({
|
|
512
|
+
test: {
|
|
513
|
+
globalSetup: ['obsidian-integration-testing/vitest-global-setup-no-plugin']
|
|
514
|
+
}
|
|
515
|
+
});
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
```ts
|
|
519
|
+
// your.integration.test.ts — read the empty registered vault's path
|
|
520
|
+
import { getTempVault } from 'obsidian-integration-testing/vitest-global-setup-no-plugin';
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
For Jest, use `obsidian-integration-testing/jest-global-setup-no-plugin` (`globalSetup`) + `obsidian-integration-testing/jest-global-teardown-no-plugin` (`globalTeardown`). If you also need to pre-populate the empty vault, build the pair yourself with `createSetup({ installPlugin: false, populate })` from the `-plugin` factory and re-export its `setup`/`teardown` (the same wrapper pattern shown above for `populate`).
|
|
524
|
+
|
|
503
525
|
> [!WARNING]
|
|
504
526
|
>
|
|
505
527
|
> **Parallelism:**
|
|
@@ -591,7 +613,7 @@ By default the library **launches and owns an isolated Obsidian instance** in a
|
|
|
591
613
|
export default defineConfig({
|
|
592
614
|
test: {
|
|
593
615
|
fileParallelism: false,
|
|
594
|
-
globalSetup: ['obsidian-integration-testing/vitest-global-setup'],
|
|
616
|
+
globalSetup: ['obsidian-integration-testing/vitest-global-setup-plugin'],
|
|
595
617
|
},
|
|
596
618
|
});
|
|
597
619
|
```
|
|
@@ -721,7 +743,7 @@ Runs tests against Obsidian Mobile on an Android emulator or real device via App
|
|
|
721
743
|
export default defineConfig({
|
|
722
744
|
test: {
|
|
723
745
|
fileParallelism: false,
|
|
724
|
-
globalSetup: ['obsidian-integration-testing/vitest-global-setup'],
|
|
746
|
+
globalSetup: ['obsidian-integration-testing/vitest-global-setup-plugin'],
|
|
725
747
|
environmentOptions: {
|
|
726
748
|
obsidianTransport: {
|
|
727
749
|
type: 'obsidian-android-appium',
|
|
@@ -765,6 +787,25 @@ save a snapshot, and always boot from that snapshot. Either way, an ANR signals
|
|
|
765
787
|
under-provisioned, so also give the AVD more vCPUs/RAM and confirm hardware acceleration
|
|
766
788
|
(`emulator -accel-check`).
|
|
767
789
|
|
|
790
|
+
#### Troubleshooting: "Android AVD ... not found" / "Appium server ... exited during startup"
|
|
791
|
+
|
|
792
|
+
The Android setup fails fast (rather than spinning out a timeout) when the toolchain cannot be brought
|
|
793
|
+
up, naming what is missing:
|
|
794
|
+
|
|
795
|
+
- **`Android AVD "<name>" not found. Available AVDs: ...`** — the `avdName` you passed does not exist.
|
|
796
|
+
Run `emulator -list-avds`, then either point `avdName` at a listed AVD or create the one you want
|
|
797
|
+
(Android Studio Device Manager, or `avdmanager create avd`). AVD creation is not automated — it needs a
|
|
798
|
+
system-image download, license acceptance, and hardware/API-level choices.
|
|
799
|
+
- **`Auto-started Appium server ... during startup` / `... did not become ready ...`** — the harness
|
|
800
|
+
auto-started Appium (`npx --no-install appium`) but it exited or never responded; the message appends
|
|
801
|
+
the captured server output. Usually a missing/broken toolchain: pass `isAppiumConsoleVisible: true` to
|
|
802
|
+
watch the live server log, or manage Appium yourself (`shouldAutoStartAppium: false`, pointing
|
|
803
|
+
`appiumUrl` at your own running server).
|
|
804
|
+
- **`Appium was installed ... but is still not resolvable ...`** — the auto-install ran
|
|
805
|
+
`npm install -g appium`, but the npm global bin dir is not on PATH (common with scoop/nvm-managed Node).
|
|
806
|
+
Add it to PATH (see `npm config get prefix`), or set `shouldAutoInstallAppiumDependencies: false` and
|
|
807
|
+
install Appium yourself.
|
|
808
|
+
|
|
768
809
|
#### Troubleshooting: "Obsidian layout did not become ready"
|
|
769
810
|
|
|
770
811
|
Registering a vault reloads the page, triggering a full Obsidian re-init (reopen the vault and
|
|
@@ -789,7 +830,7 @@ export default defineConfig({
|
|
|
789
830
|
test: {
|
|
790
831
|
name: 'integration-tests:desktop-cdp',
|
|
791
832
|
fileParallelism: false,
|
|
792
|
-
globalSetup: ['obsidian-integration-testing/vitest-global-setup'],
|
|
833
|
+
globalSetup: ['obsidian-integration-testing/vitest-global-setup-plugin'],
|
|
793
834
|
include: ['src/**/*.integration.test.ts'],
|
|
794
835
|
exclude: ['src/**/*.android.integration.test.ts'],
|
|
795
836
|
// default transport, can be omitted
|
|
@@ -802,7 +843,7 @@ export default defineConfig({
|
|
|
802
843
|
test: {
|
|
803
844
|
name: 'integration-tests:android-appium',
|
|
804
845
|
fileParallelism: false,
|
|
805
|
-
globalSetup: ['obsidian-integration-testing/vitest-global-setup'],
|
|
846
|
+
globalSetup: ['obsidian-integration-testing/vitest-global-setup-plugin'],
|
|
806
847
|
include: ['src/**/*.android.integration.test.ts'],
|
|
807
848
|
environmentOptions: {
|
|
808
849
|
obsidianTransport: {
|
|
@@ -0,0 +1,48 @@
|
|
|
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 asar_fallback_detection_exports = {};
|
|
20
|
+
__export(asar_fallback_detection_exports, {
|
|
21
|
+
checkAsarFallback: () => checkAsarFallback
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(asar_fallback_detection_exports);
|
|
24
|
+
var import_obsidian_version = require("./obsidian-version.cjs");
|
|
25
|
+
function checkAsarFallback(params) {
|
|
26
|
+
const { requestedVersion, runningApiVersion } = params;
|
|
27
|
+
if (requestedVersion === void 0 || runningApiVersion === void 0) {
|
|
28
|
+
return {
|
|
29
|
+
requestedVersion: requestedVersion ?? null,
|
|
30
|
+
runningApiVersion: runningApiVersion ?? null,
|
|
31
|
+
tier: "unknown"
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if ((0, import_obsidian_version.compareVersions)(runningApiVersion, requestedVersion) === 0) {
|
|
35
|
+
return { requestedVersion, runningApiVersion, tier: "match" };
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
message: `Obsidian was pinned to app version ${requestedVersion} but is actually running ${runningApiVersion} \u2014 the installer silently fell back to its own bundled asar instead of running the pinned version. Pin an obsidianInstallerVersion at or above ${requestedVersion}'s run floor so the pin actually runs.`,
|
|
39
|
+
requestedVersion,
|
|
40
|
+
runningApiVersion,
|
|
41
|
+
tier: "fallback"
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
45
|
+
0 && (module.exports = {
|
|
46
|
+
checkAsarFallback
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzYXItZmFsbGJhY2stZGV0ZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSB2ZXJkaWN0IG9uIHdoZXRoZXIgYSBib290ZWQgb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgaXMgYWN0dWFsbHkgcnVubmluZ1xuICogdGhlIHBpbm5lZCBhcHAgKGFzYXIpIHZlcnNpb24sIG9yICoqc2lsZW50bHkgZmVsbCBiYWNrKiogdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyLiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGBcbiAqICh3aGljaCByZWFkcyB0aGUgbGl2ZSB2ZXJzaW9uIG92ZXIgQ0RQIGFuZCBpcyBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZVxuICogdGllciBsb2dpYyBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGBpbnN0YWxsZXItY29tcGF0aWJpbGl0eWAgL1xuICogYGVsZWN0cm9uLWNvbXBhdGliaWxpdHlgIC8gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYCBzcGxpdC5cbiAqXG4gKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCBiZWxvdyBpdHMgcmVhbCBib290IGZsb29yLCB0aGVcbiAqIHJlbmRlcmVyIGRvZXMgbm90IGFsd2F5cyBkZWFkLWJvb3QgKHRoZSBibGFjayBzY3JlZW4gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYFxuICogY2F0Y2hlcykuIFNvbWUgYXBwIHZlcnNpb25zIGluc3RlYWQgKipzaWxlbnRseSByZXZlcnQgdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyKiogYW5kIHJlbmRlciBhIHBlcmZlY3RseSBoZWFsdGh5IFVJIG9mIHRoZSAqd3JvbmcgKG9sZGVyKSogdmVyc2lvbi5cbiAqIFRoZSBkZWFkLWJvb3QgZGV0ZWN0b3IgcmVhZHMgdGhhdCBoZWFsdGh5IFVJIGFzIGEgZmFsc2UtcG9zaXRpdmUgXCJydW5uYWJsZVwiIFx1MjAxNFxuICogZXhhY3RseSBob3cgT2JzaWRpYW4gYDEuMTMuMGAgb24gaW5zdGFsbGVyIGAxLjEuOWAgd2FzIGZpcnN0IG1pcy1tZWFzdXJlZCAoaXRcbiAqIHJlcG9ydHMgYGFwaVZlcnNpb25gIGAxLjEuOWAsIG5vdCBgMS4xMy4wYCkuXG4gKlxuICogVGhlIGRpc2NyaW1pbmF0b3IgaXMgdGhlICoqcnVubmluZyoqIGFwcCB2ZXJzaW9uLCByZWFkIGxpdmUgcG9zdC1ib290XG4gKiAoYGlwY1JlbmRlcmVyLnNlbmRTeW5jKCd2ZXJzaW9uJylgIC8gYG9ic2lkaWFuTW9kdWxlLmFwaVZlcnNpb25gLCB3aGljaCBib3RoXG4gKiB0cmFjayB0aGUgYXNhciBhY3R1YWxseSBydW5uaW5nKS4gVGhpcyB2ZXJkaWN0IGNvbXBhcmVzIGl0IHRvIHRoZSBwaW5uZWRcbiAqIHZlcnNpb246IGVxdWFsIFx1MjFEMiBgJ21hdGNoJ2AsIGRpZmZlcmVudCBcdTIxRDIgYCdmYWxsYmFjaydgICh0aGUgcGluIHdhcyBub3QgaG9ub3JlZCksXG4gKiBhbmQgYCd1bmtub3duJ2Agd2hlbiBlaXRoZXIgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSAobm8gYXNhciB3YXMgc3dhcHBlZCwgb3IgdGhlXG4gKiBsaXZlIHZlcnNpb24gY291bGQgbm90IGJlIHJlYWQpIFx1MjAxNCBpbiB3aGljaCBjYXNlIG5vdGhpbmcgaXMgdGhyb3duIG9yIHdhcm5lZC5cbiAqL1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24uY2pzJztcblxuLyoqXG4gKiBUaGUgc2lsZW50LWFzYXItZmFsbGJhY2sgdmVyZGljdCBmb3IgYSBib290ZWQgb3duZWQgaW5zdGFuY2UsIGNhcnJpZWQgYXMgZGF0YVxuICogb24gdGhlIHRyYW5zcG9ydCAvIGNvbm5lY3Rpb24gcmVzdWx0IHNvIGNvbnN1bWVycyBjYW4gYXNzZXJ0IG9uIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzYXJGYWxsYmFjayB7XG4gIC8qKiBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uLCBwcmVzZW50IGZvciB0aGUgYCdmYWxsYmFjaydgIHRpZXIuICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBwaW5uZWQgYXBwIChhc2FyKSB2ZXJzaW9uIHRoYXQgd2FzIHJlcXVlc3RlZCwgb3IgYG51bGxgIHdoZW4gbm9uZS4gKi9cbiAgcmVhZG9ubHkgcmVxdWVzdGVkVmVyc2lvbjogbnVsbCB8IHN0cmluZztcblxuICAvKiogVGhlIGFwcCAoYXNhcikgdmVyc2lvbiBhY3R1YWxseSBydW5uaW5nLCBvciBgbnVsbGAgd2hlbiB1bnJlYWRhYmxlLiAqL1xuICByZWFkb25seSBydW5uaW5nQXBpVmVyc2lvbjogbnVsbCB8IHN0cmluZztcblxuICAvKiogVGhlIHJlc29sdmVkIGZhbGxiYWNrIHRpZXIuICovXG4gIHJlYWRvbmx5IHRpZXI6IEFzYXJGYWxsYmFja1RpZXI7XG59XG5cbi8qKlxuICogVGhlIHNpbGVudC1hc2FyLWZhbGxiYWNrIHRpZXIgZm9yIGEgYm9vdGVkIG93bmVkIGluc3RhbmNlLlxuICpcbiAqIC0gYCdtYXRjaCdgIFx1MjAxNCB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBlcXVhbHMgdGhlIHBpbm5lZCB2ZXJzaW9uOyB0aGUgcGluIHdhc1xuICogICBob25vcmVkLlxuICogLSBgJ2ZhbGxiYWNrJ2AgXHUyMDE0IHRoZSBydW5uaW5nIGFwcCB2ZXJzaW9uIGRpZmZlcnMgZnJvbSB0aGUgcGlubmVkIHZlcnNpb247IHRoZVxuICogICBpbnN0YWxsZXIgc2lsZW50bHkgcmFuIGEgZGlmZmVyZW50IChpdHMgb3duIGJ1bmRsZWQpIGFzYXIgaW5zdGVhZCBvZiB0aGUgcGluLlxuICogLSBgJ3Vua25vd24nYCBcdTIwMTQgY2Fubm90IGJlIGRldGVybWluZWQgKG5vIGFzYXIgd2FzIHN3YXBwZWQsIHNvIHRoZXJlIGlzIG5vIHBpbiB0b1xuICogICB2ZXJpZnksIG9yIHRoZSBsaXZlIHJ1bm5pbmcgdmVyc2lvbiBjb3VsZCBub3QgYmUgcmVhZCkuXG4gKi9cbmV4cG9ydCB0eXBlIEFzYXJGYWxsYmFja1RpZXIgPSAnZmFsbGJhY2snIHwgJ21hdGNoJyB8ICd1bmtub3duJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2hlY2tBc2FyRmFsbGJhY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrQXNhckZhbGxiYWNrUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwaW5uZWQgT2JzaWRpYW4gYXBwIChhc2FyKSB2ZXJzaW9uIHRoZSBvd25lZCBpbnN0YW5jZSB3YXMgYXNrZWQgdG8gcnVuLFxuICAgKiBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIGFzYXIgd2FzIHN3YXBwZWQgKHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gdmVyaWZ5KS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RlZFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCAoYXNhcikgdmVyc2lvbiB0aGUgaW5zdGFuY2UgaXMgYWN0dWFsbHkgcnVubmluZywgcmVhZCBsaXZlXG4gICAqIHBvc3QtYm9vdCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBpdCBjb3VsZCBub3QgYmUgcmVhZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5pbmdBcGlWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHNpbGVudC1hc2FyLWZhbGxiYWNrIHZlcmRpY3QgZm9yIGEgYm9vdGVkIG93bmVkIGluc3RhbmNlLlxuICpcbiAqIE9ubHkgYCdmYWxsYmFjaydgIHdhcnJhbnRzIGFjdGlvbiAoYSB0aHJvdyAvIHdhcm5pbmcpOyBgJ21hdGNoJ2AgYW5kIGAndW5rbm93bidgXG4gKiBhcmUgc2lsZW50LiBDb21wYXJpc29uIGlzIGEgcHVyZSBgeC55LnpgIHZlcnNpb24gY29tcGFyZSBcdTIwMTQgbm8gSS9PLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGlubmVkIHZlcnNpb24gYW5kIHRoZSBsaXZlIHJ1bm5pbmcgdmVyc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBmYWxsYmFjayB2ZXJkaWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBc2FyRmFsbGJhY2socGFyYW1zOiBDaGVja0FzYXJGYWxsYmFja1BhcmFtcyk6IEFzYXJGYWxsYmFjayB7XG4gIGNvbnN0IHsgcmVxdWVzdGVkVmVyc2lvbiwgcnVubmluZ0FwaVZlcnNpb24gfSA9IHBhcmFtcztcblxuICBpZiAocmVxdWVzdGVkVmVyc2lvbiA9PT0gdW5kZWZpbmVkIHx8IHJ1bm5pbmdBcGlWZXJzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWVzdGVkVmVyc2lvbjogcmVxdWVzdGVkVmVyc2lvbiA/PyBudWxsLFxuICAgICAgcnVubmluZ0FwaVZlcnNpb246IHJ1bm5pbmdBcGlWZXJzaW9uID8/IG51bGwsXG4gICAgICB0aWVyOiAndW5rbm93bidcbiAgICB9O1xuICB9XG5cbiAgaWYgKGNvbXBhcmVWZXJzaW9ucyhydW5uaW5nQXBpVmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbikgPT09IDApIHtcbiAgICByZXR1cm4geyByZXF1ZXN0ZWRWZXJzaW9uLCBydW5uaW5nQXBpVmVyc2lvbiwgdGllcjogJ21hdGNoJyB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiBgT2JzaWRpYW4gd2FzIHBpbm5lZCB0byBhcHAgdmVyc2lvbiAke3JlcXVlc3RlZFZlcnNpb259IGJ1dCBpcyBhY3R1YWxseSBydW5uaW5nICR7cnVubmluZ0FwaVZlcnNpb259IFx1MjAxNCBgXG4gICAgICArICd0aGUgaW5zdGFsbGVyIHNpbGVudGx5IGZlbGwgYmFjayB0byBpdHMgb3duIGJ1bmRsZWQgYXNhciBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlIHBpbm5lZCB2ZXJzaW9uLiAnXG4gICAgICArIGBQaW4gYW4gb2JzaWRpYW5JbnN0YWxsZXJWZXJzaW9uIGF0IG9yIGFib3ZlICR7cmVxdWVzdGVkVmVyc2lvbn0ncyBydW4gZmxvb3Igc28gdGhlIHBpbiBhY3R1YWxseSBydW5zLmAsXG4gICAgcmVxdWVzdGVkVmVyc2lvbixcbiAgICBydW5uaW5nQXBpVmVyc2lvbixcbiAgICB0aWVyOiAnZmFsbGJhY2snXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMEJBLDhCQUFnQztBQTBEekIsU0FBUyxrQkFBa0IsUUFBK0M7QUFDL0UsUUFBTSxFQUFFLGtCQUFrQixrQkFBa0IsSUFBSTtBQUVoRCxNQUFJLHFCQUFxQixVQUFhLHNCQUFzQixRQUFXO0FBQ3JFLFdBQU87QUFBQSxNQUNMLGtCQUFrQixvQkFBb0I7QUFBQSxNQUN0QyxtQkFBbUIscUJBQXFCO0FBQUEsTUFDeEMsTUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGO0FBRUEsVUFBSSx5Q0FBZ0IsbUJBQW1CLGdCQUFnQixNQUFNLEdBQUc7QUFDOUQsV0FBTyxFQUFFLGtCQUFrQixtQkFBbUIsTUFBTSxRQUFRO0FBQUEsRUFDOUQ7QUFFQSxTQUFPO0FBQUEsSUFDTCxTQUFTLHNDQUFzQyxnQkFBZ0IsNEJBQTRCLGlCQUFpQix1SkFFekQsZ0JBQWdCO0FBQUEsSUFDbkU7QUFBQSxJQUNBO0FBQUEsSUFDQSxNQUFNO0FBQUEsRUFDUjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Pure verdict on whether a booted owned Obsidian instance is actually running
|
|
5
|
+
* the pinned app (asar) version, or **silently fell back** to the installer's own
|
|
6
|
+
* bundled asar. Kept separate from the integration-only `transport-desktop-cdp`
|
|
7
|
+
* (which reads the live version over CDP and is excluded from unit tests) so the
|
|
8
|
+
* tier logic stays unit-testable — mirroring the `installer-compatibility` /
|
|
9
|
+
* `electron-compatibility` / `renderer-boot-detection` split.
|
|
10
|
+
*
|
|
11
|
+
* When an asar is swapped onto an installer shell below its real boot floor, the
|
|
12
|
+
* renderer does not always dead-boot (the black screen `renderer-boot-detection`
|
|
13
|
+
* catches). Some app versions instead **silently revert to the installer's own
|
|
14
|
+
* bundled asar** and render a perfectly healthy UI of the *wrong (older)* version.
|
|
15
|
+
* The dead-boot detector reads that healthy UI as a false-positive "runnable" —
|
|
16
|
+
* exactly how Obsidian `1.13.0` on installer `1.1.9` was first mis-measured (it
|
|
17
|
+
* reports `apiVersion` `1.1.9`, not `1.13.0`).
|
|
18
|
+
*
|
|
19
|
+
* The discriminator is the **running** app version, read live post-boot
|
|
20
|
+
* (`ipcRenderer.sendSync('version')` / `obsidianModule.apiVersion`, which both
|
|
21
|
+
* track the asar actually running). This verdict compares it to the pinned
|
|
22
|
+
* version: equal ⇒ `'match'`, different ⇒ `'fallback'` (the pin was not honored),
|
|
23
|
+
* and `'unknown'` when either version is unavailable (no asar was swapped, or the
|
|
24
|
+
* live version could not be read) — in which case nothing is thrown or warned.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* The silent-asar-fallback verdict for a booted owned instance, carried as data
|
|
28
|
+
* on the transport / connection result so consumers can assert on it.
|
|
29
|
+
*/
|
|
30
|
+
export interface AsarFallback {
|
|
31
|
+
/** A human-readable explanation, present for the `'fallback'` tier. */
|
|
32
|
+
readonly message?: string;
|
|
33
|
+
/** The pinned app (asar) version that was requested, or `null` when none. */
|
|
34
|
+
readonly requestedVersion: null | string;
|
|
35
|
+
/** The app (asar) version actually running, or `null` when unreadable. */
|
|
36
|
+
readonly runningApiVersion: null | string;
|
|
37
|
+
/** The resolved fallback tier. */
|
|
38
|
+
readonly tier: AsarFallbackTier;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The silent-asar-fallback tier for a booted owned instance.
|
|
42
|
+
*
|
|
43
|
+
* - `'match'` — the running app version equals the pinned version; the pin was
|
|
44
|
+
* honored.
|
|
45
|
+
* - `'fallback'` — the running app version differs from the pinned version; the
|
|
46
|
+
* installer silently ran a different (its own bundled) asar instead of the pin.
|
|
47
|
+
* - `'unknown'` — cannot be determined (no asar was swapped, so there is no pin to
|
|
48
|
+
* verify, or the live running version could not be read).
|
|
49
|
+
*/
|
|
50
|
+
export type AsarFallbackTier = 'fallback' | 'match' | 'unknown';
|
|
51
|
+
/**
|
|
52
|
+
* Parameters for {@link checkAsarFallback}.
|
|
53
|
+
*/
|
|
54
|
+
export interface CheckAsarFallbackParams {
|
|
55
|
+
/**
|
|
56
|
+
* The pinned Obsidian app (asar) version the owned instance was asked to run,
|
|
57
|
+
* or `undefined` when no asar was swapped (so there is nothing to verify).
|
|
58
|
+
*/
|
|
59
|
+
readonly requestedVersion: string | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* The Obsidian app (asar) version the instance is actually running, read live
|
|
62
|
+
* post-boot, or `undefined` when it could not be read.
|
|
63
|
+
*/
|
|
64
|
+
readonly runningApiVersion: string | undefined;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Computes the silent-asar-fallback verdict for a booted owned instance.
|
|
68
|
+
*
|
|
69
|
+
* Only `'fallback'` warrants action (a throw / warning); `'match'` and `'unknown'`
|
|
70
|
+
* are silent. Comparison is a pure `x.y.z` version compare — no I/O.
|
|
71
|
+
*
|
|
72
|
+
* @param params - The pinned version and the live running version.
|
|
73
|
+
* @returns The fallback verdict.
|
|
74
|
+
*/
|
|
75
|
+
export declare function checkAsarFallback(params: CheckAsarFallbackParams): AsarFallback;
|
|
@@ -0,0 +1,36 @@
|
|
|
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 avd_list_exports = {};
|
|
20
|
+
__export(avd_list_exports, {
|
|
21
|
+
checkAvdExists: () => checkAvdExists,
|
|
22
|
+
listAvailableAvds: () => listAvailableAvds
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(avd_list_exports);
|
|
25
|
+
function checkAvdExists(params) {
|
|
26
|
+
return listAvailableAvds(params.avdListOutput).includes(params.avdName);
|
|
27
|
+
}
|
|
28
|
+
function listAvailableAvds(avdListOutput) {
|
|
29
|
+
return avdListOutput.split("\n").map((line) => line.trim()).filter((line) => line.length > 0 && !line.includes("|"));
|
|
30
|
+
}
|
|
31
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
32
|
+
0 && (module.exports = {
|
|
33
|
+
checkAvdExists,
|
|
34
|
+
listAvailableAvds
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F2ZC1saXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBoZWxwZXJzIGZvciBwYXJzaW5nIGBlbXVsYXRvciAtbGlzdC1hdmRzYCBvdXRwdXQ6IGV4dHJhY3RpbmcgdGhlXG4gKiBhdmFpbGFibGUgQVZEIG5hbWVzIGFuZCBjaGVja2luZyB3aGV0aGVyIGEgcmVxdWVzdGVkIEFWRCBleGlzdHMuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGB0cmFuc3BvcnQtZmFjdG9yeWAgKGV4Y2x1ZGVkIGZyb21cbiAqIHVuaXQgdGVzdHMpIHNvIHRoZSBwYXJzaW5nIHN0YXlzIHVuaXQtdGVzdGFibGUgXHUyMDE0IHRoZSBmYWN0b3J5IGl0c2VsZiBzaGVsbHMgb3V0XG4gKiB0byB0aGUgYGVtdWxhdG9yYCBiaW5hcnkuXG4gKi9cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2hlY2tBdmRFeGlzdHN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrQXZkRXhpc3RzUGFyYW1zIHtcbiAgLyoqIFJhdyBzdGRvdXQgb2YgYGVtdWxhdG9yIC1saXN0LWF2ZHNgIFx1MjAxNCBvbmUgQVZEIG5hbWUgcGVyIGxpbmUuICovXG4gIHJlYWRvbmx5IGF2ZExpc3RPdXRwdXQ6IHN0cmluZztcblxuICAvKiogVGhlIEFWRCBuYW1lIHRvIGxvb2sgZm9yLiAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgZ2l2ZW4gQVZEIGV4aXN0cywgZnJvbSB0aGUgcmF3IHN0ZG91dCBvZlxuICogYGVtdWxhdG9yIC1saXN0LWF2ZHNgLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbGlzdGluZyBvdXRwdXQgYW5kIHRoZSBBVkQgbmFtZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBBVkQgbmFtZSBhcHBlYXJzIGluIHRoZSBsaXN0aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBdmRFeGlzdHMocGFyYW1zOiBDaGVja0F2ZEV4aXN0c1BhcmFtcyk6IGJvb2xlYW4ge1xuICByZXR1cm4gbGlzdEF2YWlsYWJsZUF2ZHMocGFyYW1zLmF2ZExpc3RPdXRwdXQpLmluY2x1ZGVzKHBhcmFtcy5hdmROYW1lKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGF2YWlsYWJsZSBBVkQgbmFtZXMgZnJvbSB0aGUgcmF3IHN0ZG91dCBvZiBgZW11bGF0b3IgLWxpc3QtYXZkc2AuXG4gKlxuICogVGhlIGNvbW1hbmQgcHJpbnRzIG9uZSBBVkQgbmFtZSBwZXIgbGluZTsgYmxhbmsgbGluZXMgYW5kIHN1cnJvdW5kaW5nXG4gKiB3aGl0ZXNwYWNlIGFyZSBpZ25vcmVkLiBTb21lIGVtdWxhdG9yIGJ1aWxkcyBlbWl0IGFuIGluZm9ybWF0aW9uYWwgYmFubmVyXG4gKiAoZS5nLiBgSU5GTyAgICB8IC4uLmApIHRvIHN0ZG91dCBiZWZvcmUgdGhlIGxpc3QsIHNvIHRob3NlIGxpbmVzIGFyZSBkcm9wcGVkLlxuICpcbiAqIEBwYXJhbSBhdmRMaXN0T3V0cHV0IC0gUmF3IHN0ZG91dCBvZiBgZW11bGF0b3IgLWxpc3QtYXZkc2AuXG4gKiBAcmV0dXJucyBUaGUgYXZhaWxhYmxlIEFWRCBuYW1lcywgaW4gbGlzdGVkIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdEF2YWlsYWJsZUF2ZHMoYXZkTGlzdE91dHB1dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gYXZkTGlzdE91dHB1dFxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSlcbiAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLmxlbmd0aCA+IDAgJiYgIWxpbmUuaW5jbHVkZXMoJ3wnKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2Qk8sU0FBUyxlQUFlLFFBQXVDO0FBQ3BFLFNBQU8sa0JBQWtCLE9BQU8sYUFBYSxFQUFFLFNBQVMsT0FBTyxPQUFPO0FBQ3hFO0FBWU8sU0FBUyxrQkFBa0IsZUFBaUM7QUFDakUsU0FBTyxjQUNKLE1BQU0sSUFBSSxFQUNWLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLEVBQ3pCLE9BQU8sQ0FBQyxTQUFTLEtBQUssU0FBUyxLQUFLLENBQUMsS0FBSyxTQUFTLEdBQUcsQ0FBQztBQUM1RDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Pure helpers for parsing `emulator -list-avds` output: extracting the
|
|
5
|
+
* available AVD names and checking whether a requested AVD exists.
|
|
6
|
+
*
|
|
7
|
+
* Kept separate from the integration-only `transport-factory` (excluded from
|
|
8
|
+
* unit tests) so the parsing stays unit-testable — the factory itself shells out
|
|
9
|
+
* to the `emulator` binary.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Parameters for {@link checkAvdExists}.
|
|
13
|
+
*/
|
|
14
|
+
export interface CheckAvdExistsParams {
|
|
15
|
+
/** Raw stdout of `emulator -list-avds` — one AVD name per line. */
|
|
16
|
+
readonly avdListOutput: string;
|
|
17
|
+
/** The AVD name to look for. */
|
|
18
|
+
readonly avdName: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Decides whether a given AVD exists, from the raw stdout of
|
|
22
|
+
* `emulator -list-avds`.
|
|
23
|
+
*
|
|
24
|
+
* @param params - The listing output and the AVD name to check.
|
|
25
|
+
* @returns `true` when the AVD name appears in the listing.
|
|
26
|
+
*/
|
|
27
|
+
export declare function checkAvdExists(params: CheckAvdExistsParams): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Parses the available AVD names from the raw stdout of `emulator -list-avds`.
|
|
30
|
+
*
|
|
31
|
+
* The command prints one AVD name per line; blank lines and surrounding
|
|
32
|
+
* whitespace are ignored. Some emulator builds emit an informational banner
|
|
33
|
+
* (e.g. `INFO | ...`) to stdout before the list, so those lines are dropped.
|
|
34
|
+
*
|
|
35
|
+
* @param avdListOutput - Raw stdout of `emulator -list-avds`.
|
|
36
|
+
* @returns The available AVD names, in listed order.
|
|
37
|
+
*/
|
|
38
|
+
export declare function listAvailableAvds(avdListOutput: string): string[];
|
|
@@ -18,11 +18,23 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var compatibility_options_exports = {};
|
|
20
20
|
__export(compatibility_options_exports, {
|
|
21
|
+
resolveAsarFallbackAction: () => resolveAsarFallbackAction,
|
|
21
22
|
resolveInstallerCompatibilityAction: () => resolveInstallerCompatibilityAction,
|
|
22
23
|
resolveShouldThrowOnIncompatibleInstaller: () => resolveShouldThrowOnIncompatibleInstaller,
|
|
24
|
+
resolveShouldThrowOnSilentAsarFallback: () => resolveShouldThrowOnSilentAsarFallback,
|
|
23
25
|
resolveShouldWarnOnCompatibilityIssues: () => resolveShouldWarnOnCompatibilityIssues
|
|
24
26
|
});
|
|
25
27
|
module.exports = __toCommonJS(compatibility_options_exports);
|
|
28
|
+
function resolveAsarFallbackAction(params) {
|
|
29
|
+
const { shouldThrowOnSilentAsarFallback, shouldWarnOnCompatibilityIssues, tier } = params;
|
|
30
|
+
if (tier !== "fallback") {
|
|
31
|
+
return "silent";
|
|
32
|
+
}
|
|
33
|
+
if (shouldThrowOnSilentAsarFallback) {
|
|
34
|
+
return "throw";
|
|
35
|
+
}
|
|
36
|
+
return shouldWarnOnCompatibilityIssues ? "warn" : "silent";
|
|
37
|
+
}
|
|
26
38
|
function resolveInstallerCompatibilityAction(params) {
|
|
27
39
|
const { shouldThrowOnIncompatibleInstaller, shouldWarnOnCompatibilityIssues, tier } = params;
|
|
28
40
|
if (tier === "unrunnable") {
|
|
@@ -39,13 +51,18 @@ function resolveInstallerCompatibilityAction(params) {
|
|
|
39
51
|
function resolveShouldThrowOnIncompatibleInstaller(shouldThrowOnIncompatibleInstaller) {
|
|
40
52
|
return shouldThrowOnIncompatibleInstaller ?? true;
|
|
41
53
|
}
|
|
54
|
+
function resolveShouldThrowOnSilentAsarFallback(shouldThrowOnSilentAsarFallback) {
|
|
55
|
+
return shouldThrowOnSilentAsarFallback ?? true;
|
|
56
|
+
}
|
|
42
57
|
function resolveShouldWarnOnCompatibilityIssues(shouldWarnOnCompatibilityIssues) {
|
|
43
58
|
return shouldWarnOnCompatibilityIssues ?? true;
|
|
44
59
|
}
|
|
45
60
|
// Annotate the CommonJS export names for ESM import in node:
|
|
46
61
|
0 && (module.exports = {
|
|
62
|
+
resolveAsarFallbackAction,
|
|
47
63
|
resolveInstallerCompatibilityAction,
|
|
48
64
|
resolveShouldThrowOnIncompatibleInstaller,
|
|
65
|
+
resolveShouldThrowOnSilentAsarFallback,
|
|
49
66
|
resolveShouldWarnOnCompatibilityIssues
|
|
50
67
|
});
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbXBhdGliaWxpdHktb3B0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgcmVzb2x1dGlvbiBvZiB0aGUgdHdvIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkga25vYnMgXHUyMDE0IHdoZXRoZXIgdGhlXG4gKiBpbnN0YWxsZXJcdTIxOTRhcHAgLyBydW50aW1lLUVsZWN0cm9uIG5hZyB3YXJuaW5ncyBhcmUgZW1pdHRlZCwgYW5kIHdoZXRoZXIgYW5cbiAqIGAndW5ydW5uYWJsZSdgIGluc3RhbGxlclx1MjE5NGFwcCBwYWlyIGZhaWxzIGZhc3Qgd2l0aFxuICoge0BsaW5rIEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcn0gYmVmb3JlIGxhdW5jaC5cbiAqXG4gKiBCb3RoIGRlZmF1bHQgdG8gdG9kYXkncyBiZWhhdmlvciAoYHRydWVgKTogd2FybmluZ3Mgb24sIGFuZCBhbiB1bnJ1bm5hYmxlIHBpblxuICogdGhyb3dzIHByb2FjdGl2ZWx5LiBTZXR0aW5nIGBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzYCB0byBgZmFsc2VgXG4gKiBzaWxlbmNlcyBib3RoIG5hZ3MgKHRoZSB2ZXJkaWN0cyBhcmUgc3RpbGwgY29tcHV0ZWQgYW5kIHN1cmZhY2VkIGFzIGRhdGEpO1xuICogc2V0dGluZyBgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcmAgdG8gYGZhbHNlYCBsZXRzIGFuIHVucnVubmFibGUgcGluXG4gKiBwcm9jZWVkIHRvIGxhdW5jaCwgd2hlcmUgdGhlIHJlYWN0aXZlIGRlYWQtYm9vdCBmYXN0LWZhaWxcbiAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmApIHN0aWxsIGNhdGNoZXMgaXQuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGxhdW5jaCBjb2RlIChgdHJhbnNwb3J0LWZhY3RvcnlgLFxuICogYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGAsIGJvdGggZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKSBzbyB0aGUgZGVmYXVsdFxuICogcmVzb2x1dGlvbiBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGB2aXNpYmlsaXR5LnRzYCAvXG4gKiBgYXBwaXVtLXNlc3Npb24tY29uZmlnLnRzYCBwdXJlLXJlc29sdmVyIHNwbGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXIgfSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5LmNqcyc7XG5cbi8qKlxuICogVGhlIGFjdGlvbiB0byB0YWtlIGZvciBhIHJlc29sdmVkIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHZlcmRpY3QsIGdpdmVuXG4gKiB0aGUgdGhyb3cvd2FybiBrbm9icy5cbiAqXG4gKiAtIGAndGhyb3cnYCBcdTIwMTQgdGhlIHZlcmRpY3QgaXMgYCd1bnJ1bm5hYmxlJ2AgYW5kIHRoZSBwcm9hY3RpdmUgdGhyb3cgaXMgZW5hYmxlZDtcbiAqICAgdGhlIGNhbGxlciB0aHJvd3MgYEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcmAgYmVmb3JlIGxhdW5jaC5cbiAqIC0gYCd3YXJuLXVucnVubmFibGUnYCBcdTIwMTQgdGhlIHZlcmRpY3QgaXMgYCd1bnJ1bm5hYmxlJ2AgYnV0IHRoZSB0aHJvdyBpcyBkaXNhYmxlZFxuICogICBhbmQgd2FybmluZ3MgYXJlIG9uOyB0aGUgY2FsbGVyIGxvZ3MgYSBcInByb2NlZWRpbmcgdG8gbGF1bmNoXCIgd2FybmluZyBhbmRcbiAqICAgbGV0cyB0aGUgYm9vdCBwcm9jZWVkICh3aGVyZSB0aGUgcmVhY3RpdmUgZGVhZC1ib290IGZhc3QtZmFpbCBjYXRjaGVzIGl0KS5cbiAqIC0gYCd3YXJuLW5hZ2dlZCdgIFx1MjAxNCB0aGUgdmVyZGljdCBpcyBgJ25hZ2dlZCdgIGFuZCB3YXJuaW5ncyBhcmUgb247IHRoZSBjYWxsZXJcbiAqICAgbG9ncyB0aGUgcmVjb21tZW5kZWQtaW5zdGFsbGVyIHdhcm5pbmcuXG4gKiAtIGAnc2lsZW50J2AgXHUyMDE0IG5vdGhpbmcgdG8gZG8gKGAnb2snYCAvIGAndW5rbm93bidgLCBvciB3YXJuaW5ncyBkaXNhYmxlZCkuXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbGxlckNvbXBhdGliaWxpdHlBY3Rpb24gPSAnc2lsZW50JyB8ICd0aHJvdycgfCAnd2Fybi1uYWdnZWQnIHwgJ3dhcm4tdW5ydW5uYWJsZSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9ufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvblBhcmFtcyB7XG4gIC8qKiBXaGV0aGVyIGFuIGAndW5ydW5uYWJsZSdgIHZlcmRpY3QgdGhyb3dzICh2cy4gcHJvY2VlZHMgdG8gbGF1bmNoKS4gKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcjogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciBhIG5hZyAvIHByb2NlZWRpbmctdW5ydW5uYWJsZSB2ZXJkaWN0IGlzIGxvZ2dlZC4gKi9cbiAgcmVhZG9ubHkgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlczogYm9vbGVhbjtcblxuICAvKiogVGhlIHJlc29sdmVkIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHRpZXIuICovXG4gIHJlYWRvbmx5IHRpZXI6IEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdoYXQgdG8gZG8gZm9yIGFuIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHZlcmRpY3QsIGdpdmVuIHRoZVxuICogdGhyb3cvd2FybiBrbm9icy4gUHVyZSBcdTIwMTQgdGhlIGNhbGxlciBwZXJmb3JtcyB0aGUgdGhyb3cvbG9nIHNpZGUgZWZmZWN0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHZlcmRpY3QgdGllciBhbmQgdGhlIHJlc29sdmVkIHRocm93L3dhcm4ga25vYnMuXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIHRoZSBjYWxsZXIgc2hvdWxkIHRha2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbihwYXJhbXM6IFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9uUGFyYW1zKTogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbiB7XG4gIGNvbnN0IHsgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlciwgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcywgdGllciB9ID0gcGFyYW1zO1xuXG4gIGlmICh0aWVyID09PSAndW5ydW5uYWJsZScpIHtcbiAgICBpZiAoc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcikge1xuICAgICAgcmV0dXJuICd0aHJvdyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi11bnJ1bm5hYmxlJyA6ICdzaWxlbnQnO1xuICB9XG5cbiAgaWYgKHRpZXIgPT09ICduYWdnZWQnKSB7XG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi1uYWdnZWQnIDogJ3NpbGVudCc7XG4gIH1cblxuICByZXR1cm4gJ3NpbGVudCc7XG59XG5cbi8qKlxuICogV2hldGhlciBhbiBgJ3VucnVubmFibGUnYCBpbnN0YWxsZXJcdTIxOTRhcHAgcGFpciBzaG91bGQgZmFpbCBmYXN0IHdpdGhcbiAqIHtAbGluayBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3J9IGJlZm9yZSBsYXVuY2guXG4gKlxuICogQHBhcmFtIHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXIgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB0aHJvdykuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhbiB1bnJ1bm5hYmxlIHBpbiBzaG91bGQgdGhyb3cgKHRoZSBkZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyKHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXI/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyID8/IHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgb3duZWQtaW5zdGFuY2UgY29tcGF0aWJpbGl0eSBuYWcgd2FybmluZ3Mgc2hvdWxkIGJlIGVtaXR0ZWQgKGJvdGhcbiAqIHRoZSBpbnN0YWxsZXJcdTIxOTRhcHAgYCduYWdnZWQnYCB3YXJuaW5nIGFuZCB0aGUgcnVudGltZS1FbGVjdHJvbiBgJ25hZ2dlZCdgXG4gKiB3YXJuaW5nKS5cbiAqXG4gKiBAcGFyYW0gc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyAtIFRoZSByZXNvbHZlZCBvcHRpb24gdmFsdWUgKG9taXR0ZWQgXHUyMTkyIHdhcm4pLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIHdhcm5pbmdzIHNob3VsZCBiZSBlbWl0dGVkICh0aGUgZGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyhzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyA/PyB0cnVlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyRE8sU0FBUyxvQ0FBb0MsUUFBaUY7QUFDbkksUUFBTSxFQUFFLG9DQUFvQyxpQ0FBaUMsS0FBSyxJQUFJO0FBRXRGLE1BQUksU0FBUyxjQUFjO0FBQ3pCLFFBQUksb0NBQW9DO0FBQ3RDLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxrQ0FBa0Msb0JBQW9CO0FBQUEsRUFDL0Q7QUFFQSxNQUFJLFNBQVMsVUFBVTtBQUNyQixXQUFPLGtDQUFrQyxnQkFBZ0I7QUFBQSxFQUMzRDtBQUVBLFNBQU87QUFDVDtBQVNPLFNBQVMsMENBQTBDLG9DQUF1RDtBQUMvRyxTQUFPLHNDQUFzQztBQUMvQztBQVVPLFNBQVMsdUNBQXVDLGlDQUFvRDtBQUN6RyxTQUFPLG1DQUFtQztBQUM1QzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbXBhdGliaWxpdHktb3B0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgcmVzb2x1dGlvbiBvZiB0aGUgdHdvIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkga25vYnMgXHUyMDE0IHdoZXRoZXIgdGhlXG4gKiBpbnN0YWxsZXJcdTIxOTRhcHAgLyBydW50aW1lLUVsZWN0cm9uIG5hZyB3YXJuaW5ncyBhcmUgZW1pdHRlZCwgYW5kIHdoZXRoZXIgYW5cbiAqIGAndW5ydW5uYWJsZSdgIGluc3RhbGxlclx1MjE5NGFwcCBwYWlyIGZhaWxzIGZhc3Qgd2l0aFxuICoge0BsaW5rIEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcn0gYmVmb3JlIGxhdW5jaC5cbiAqXG4gKiBCb3RoIGRlZmF1bHQgdG8gdG9kYXkncyBiZWhhdmlvciAoYHRydWVgKTogd2FybmluZ3Mgb24sIGFuZCBhbiB1bnJ1bm5hYmxlIHBpblxuICogdGhyb3dzIHByb2FjdGl2ZWx5LiBTZXR0aW5nIGBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzYCB0byBgZmFsc2VgXG4gKiBzaWxlbmNlcyBib3RoIG5hZ3MgKHRoZSB2ZXJkaWN0cyBhcmUgc3RpbGwgY29tcHV0ZWQgYW5kIHN1cmZhY2VkIGFzIGRhdGEpO1xuICogc2V0dGluZyBgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcmAgdG8gYGZhbHNlYCBsZXRzIGFuIHVucnVubmFibGUgcGluXG4gKiBwcm9jZWVkIHRvIGxhdW5jaCwgd2hlcmUgdGhlIHJlYWN0aXZlIGRlYWQtYm9vdCBmYXN0LWZhaWxcbiAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmApIHN0aWxsIGNhdGNoZXMgaXQuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGxhdW5jaCBjb2RlIChgdHJhbnNwb3J0LWZhY3RvcnlgLFxuICogYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGAsIGJvdGggZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKSBzbyB0aGUgZGVmYXVsdFxuICogcmVzb2x1dGlvbiBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGB2aXNpYmlsaXR5LnRzYCAvXG4gKiBgYXBwaXVtLXNlc3Npb24tY29uZmlnLnRzYCBwdXJlLXJlc29sdmVyIHNwbGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXNhckZhbGxiYWNrVGllciB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24uY2pzJztcbmltcG9ydCB0eXBlIHsgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXIgfSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5LmNqcyc7XG5cbi8qKlxuICogVGhlIGFjdGlvbiB0byB0YWtlIGZvciBhIHJlc29sdmVkIHNpbGVudC1hc2FyLWZhbGxiYWNrIHZlcmRpY3QsIGdpdmVuIHRoZVxuICogdGhyb3cvd2FybiBrbm9icy5cbiAqXG4gKiAtIGAndGhyb3cnYCBcdTIwMTQgdGhlIHZlcmRpY3QgaXMgYCdmYWxsYmFjaydgIGFuZCB0aGUgdGhyb3cgaXMgZW5hYmxlZDsgdGhlIGNhbGxlclxuICogICB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYC5cbiAqIC0gYCd3YXJuJ2AgXHUyMDE0IHRoZSB2ZXJkaWN0IGlzIGAnZmFsbGJhY2snYCBidXQgdGhlIHRocm93IGlzIGRpc2FibGVkIGFuZCB3YXJuaW5nc1xuICogICBhcmUgb247IHRoZSBjYWxsZXIgbG9ncyB0aGUgZmFsbGJhY2sgd2FybmluZyBhbmQgbGV0cyB0aGUgYm9vdCBwcm9jZWVkICh0aGVcbiAqICAgdmVyZGljdCBpcyBzdGlsbCBzdXJmYWNlZCBhcyBkYXRhKS5cbiAqIC0gYCdzaWxlbnQnYCBcdTIwMTQgbm90aGluZyB0byBkbyAoYCdtYXRjaCdgIC8gYCd1bmtub3duJ2AsIG9yIGEgc3VwcHJlc3NlZCBmYWxsYmFjaykuXG4gKi9cbmV4cG9ydCB0eXBlIEFzYXJGYWxsYmFja0FjdGlvbiA9ICdzaWxlbnQnIHwgJ3Rocm93JyB8ICd3YXJuJztcblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHRha2UgZm9yIGEgcmVzb2x2ZWQgaW5zdGFsbGVyXHUyMTk0YXBwIGNvbXBhdGliaWxpdHkgdmVyZGljdCwgZ2l2ZW5cbiAqIHRoZSB0aHJvdy93YXJuIGtub2JzLlxuICpcbiAqIC0gYCd0aHJvdydgIFx1MjAxNCB0aGUgdmVyZGljdCBpcyBgJ3VucnVubmFibGUnYCBhbmQgdGhlIHByb2FjdGl2ZSB0aHJvdyBpcyBlbmFibGVkO1xuICogICB0aGUgY2FsbGVyIHRocm93cyBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBiZWZvcmUgbGF1bmNoLlxuICogLSBgJ3dhcm4tdW5ydW5uYWJsZSdgIFx1MjAxNCB0aGUgdmVyZGljdCBpcyBgJ3VucnVubmFibGUnYCBidXQgdGhlIHRocm93IGlzIGRpc2FibGVkXG4gKiAgIGFuZCB3YXJuaW5ncyBhcmUgb247IHRoZSBjYWxsZXIgbG9ncyBhIFwicHJvY2VlZGluZyB0byBsYXVuY2hcIiB3YXJuaW5nIGFuZFxuICogICBsZXRzIHRoZSBib290IHByb2NlZWQgKHdoZXJlIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsIGNhdGNoZXMgaXQpLlxuICogLSBgJ3dhcm4tbmFnZ2VkJ2AgXHUyMDE0IHRoZSB2ZXJkaWN0IGlzIGAnbmFnZ2VkJ2AgYW5kIHdhcm5pbmdzIGFyZSBvbjsgdGhlIGNhbGxlclxuICogICBsb2dzIHRoZSByZWNvbW1lbmRlZC1pbnN0YWxsZXIgd2FybmluZy5cbiAqIC0gYCdzaWxlbnQnYCBcdTIwMTQgbm90aGluZyB0byBkbyAoYCdvaydgIC8gYCd1bmtub3duJ2AsIG9yIHdhcm5pbmdzIGRpc2FibGVkKS5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbiA9ICdzaWxlbnQnIHwgJ3Rocm93JyB8ICd3YXJuLW5hZ2dlZCcgfCAnd2Fybi11bnJ1bm5hYmxlJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvblBhcmFtcyB7XG4gIC8qKiBXaGV0aGVyIGEgYCdmYWxsYmFjaydgIHZlcmRpY3QgdGhyb3dzICh2cy4gcHJvY2VlZHMgd2l0aCBhIHdhcm5pbmcpLiAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIGEgbm9uLXRocm93aW5nIGZhbGxiYWNrIHZlcmRpY3QgaXMgbG9nZ2VkLiAqL1xuICByZWFkb25seSBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgc2lsZW50LWFzYXItZmFsbGJhY2sgdGllci4gKi9cbiAgcmVhZG9ubHkgdGllcjogQXNhckZhbGxiYWNrVGllcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHlBY3Rpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9uUGFyYW1zIHtcbiAgLyoqIFdoZXRoZXIgYW4gYCd1bnJ1bm5hYmxlJ2AgdmVyZGljdCB0aHJvd3MgKHZzLiBwcm9jZWVkcyB0byBsYXVuY2gpLiAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIGEgbmFnIC8gcHJvY2VlZGluZy11bnJ1bm5hYmxlIHZlcmRpY3QgaXMgbG9nZ2VkLiAqL1xuICByZWFkb25seSBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgaW5zdGFsbGVyXHUyMTk0YXBwIGNvbXBhdGliaWxpdHkgdGllci4gKi9cbiAgcmVhZG9ubHkgdGllcjogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXI7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2hhdCB0byBkbyBmb3IgYSBzaWxlbnQtYXNhci1mYWxsYmFjayB2ZXJkaWN0LCBnaXZlbiB0aGUgdGhyb3cvd2FyblxuICoga25vYnMuIFB1cmUgXHUyMDE0IHRoZSBjYWxsZXIgcGVyZm9ybXMgdGhlIHRocm93L2xvZyBzaWRlIGVmZmVjdHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB2ZXJkaWN0IHRpZXIgYW5kIHRoZSByZXNvbHZlZCB0aHJvdy93YXJuIGtub2JzLlxuICogQHJldHVybnMgVGhlIGFjdGlvbiB0aGUgY2FsbGVyIHNob3VsZCB0YWtlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvbihwYXJhbXM6IFJlc29sdmVBc2FyRmFsbGJhY2tBY3Rpb25QYXJhbXMpOiBBc2FyRmFsbGJhY2tBY3Rpb24ge1xuICBjb25zdCB7IHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2ssIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMsIHRpZXIgfSA9IHBhcmFtcztcblxuICBpZiAodGllciAhPT0gJ2ZhbGxiYWNrJykge1xuICAgIHJldHVybiAnc2lsZW50JztcbiAgfVxuXG4gIGlmIChzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrKSB7XG4gICAgcmV0dXJuICd0aHJvdyc7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyA/ICd3YXJuJyA6ICdzaWxlbnQnO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdoYXQgdG8gZG8gZm9yIGFuIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHZlcmRpY3QsIGdpdmVuIHRoZVxuICogdGhyb3cvd2FybiBrbm9icy4gUHVyZSBcdTIwMTQgdGhlIGNhbGxlciBwZXJmb3JtcyB0aGUgdGhyb3cvbG9nIHNpZGUgZWZmZWN0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHZlcmRpY3QgdGllciBhbmQgdGhlIHJlc29sdmVkIHRocm93L3dhcm4ga25vYnMuXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIHRoZSBjYWxsZXIgc2hvdWxkIHRha2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbihwYXJhbXM6IFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9uUGFyYW1zKTogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbiB7XG4gIGNvbnN0IHsgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlciwgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcywgdGllciB9ID0gcGFyYW1zO1xuXG4gIGlmICh0aWVyID09PSAndW5ydW5uYWJsZScpIHtcbiAgICBpZiAoc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcikge1xuICAgICAgcmV0dXJuICd0aHJvdyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi11bnJ1bm5hYmxlJyA6ICdzaWxlbnQnO1xuICB9XG5cbiAgaWYgKHRpZXIgPT09ICduYWdnZWQnKSB7XG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi1uYWdnZWQnIDogJ3NpbGVudCc7XG4gIH1cblxuICByZXR1cm4gJ3NpbGVudCc7XG59XG5cbi8qKlxuICogV2hldGhlciBhbiBgJ3VucnVubmFibGUnYCBpbnN0YWxsZXJcdTIxOTRhcHAgcGFpciBzaG91bGQgZmFpbCBmYXN0IHdpdGhcbiAqIHtAbGluayBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3J9IGJlZm9yZSBsYXVuY2guXG4gKlxuICogQHBhcmFtIHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXIgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB0aHJvdykuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhbiB1bnJ1bm5hYmxlIHBpbiBzaG91bGQgdGhyb3cgKHRoZSBkZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyKHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXI/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyID8/IHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciBhIGJvb3RlZCBvd25lZCBpbnN0YW5jZSBydW5uaW5nIGEgZGlmZmVyZW50IGFwcCAoYXNhcikgdmVyc2lvbiB0aGFuIHRoZVxuICogcGluIFx1MjAxNCBhIHNpbGVudCBmYWxsYmFjayB0byB0aGUgaW5zdGFsbGVyJ3Mgb3duIGJ1bmRsZWQgYXNhciBcdTIwMTQgc2hvdWxkIGZhaWwgZmFzdFxuICogd2l0aCB7QGxpbmsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3J9LlxuICpcbiAqIEBwYXJhbSBzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrIC0gVGhlIHJlc29sdmVkIG9wdGlvbiB2YWx1ZSAob21pdHRlZCBcdTIxOTIgdGhyb3cpLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gYSBzaWxlbnQgZmFsbGJhY2sgc2hvdWxkIHRocm93ICh0aGUgZGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjayhzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjayA/PyB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkgbmFnIHdhcm5pbmdzIHNob3VsZCBiZSBlbWl0dGVkIChib3RoXG4gKiB0aGUgaW5zdGFsbGVyXHUyMTk0YXBwIGAnbmFnZ2VkJ2Agd2FybmluZyBhbmQgdGhlIHJ1bnRpbWUtRWxlY3Ryb24gYCduYWdnZWQnYFxuICogd2FybmluZykuXG4gKlxuICogQHBhcmFtIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB3YXJuKS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSB3YXJuaW5ncyBzaG91bGQgYmUgZW1pdHRlZCAodGhlIGRlZmF1bHQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMoc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlcz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPz8gdHJ1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVGTyxTQUFTLDBCQUEwQixRQUE2RDtBQUNyRyxRQUFNLEVBQUUsaUNBQWlDLGlDQUFpQyxLQUFLLElBQUk7QUFFbkYsTUFBSSxTQUFTLFlBQVk7QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGlDQUFpQztBQUNuQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sa0NBQWtDLFNBQVM7QUFDcEQ7QUFTTyxTQUFTLG9DQUFvQyxRQUFpRjtBQUNuSSxRQUFNLEVBQUUsb0NBQW9DLGlDQUFpQyxLQUFLLElBQUk7QUFFdEYsTUFBSSxTQUFTLGNBQWM7QUFDekIsUUFBSSxvQ0FBb0M7QUFDdEMsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLGtDQUFrQyxvQkFBb0I7QUFBQSxFQUMvRDtBQUVBLE1BQUksU0FBUyxVQUFVO0FBQ3JCLFdBQU8sa0NBQWtDLGdCQUFnQjtBQUFBLEVBQzNEO0FBRUEsU0FBTztBQUNUO0FBU08sU0FBUywwQ0FBMEMsb0NBQXVEO0FBQy9HLFNBQU8sc0NBQXNDO0FBQy9DO0FBVU8sU0FBUyx1Q0FBdUMsaUNBQW9EO0FBQ3pHLFNBQU8sbUNBQW1DO0FBQzVDO0FBVU8sU0FBUyx1Q0FBdUMsaUNBQW9EO0FBQ3pHLFNBQU8sbUNBQW1DO0FBQzVDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -18,7 +18,20 @@
|
|
|
18
18
|
* resolution stays unit-testable — mirroring the `visibility.ts` /
|
|
19
19
|
* `appium-session-config.ts` pure-resolver split.
|
|
20
20
|
*/
|
|
21
|
+
import type { AsarFallbackTier } from './asar-fallback-detection.cjs';
|
|
21
22
|
import type { InstallerCompatibilityTier } from './installer-compatibility.cjs';
|
|
23
|
+
/**
|
|
24
|
+
* The action to take for a resolved silent-asar-fallback verdict, given the
|
|
25
|
+
* throw/warn knobs.
|
|
26
|
+
*
|
|
27
|
+
* - `'throw'` — the verdict is `'fallback'` and the throw is enabled; the caller
|
|
28
|
+
* throws `SilentAsarFallbackError`.
|
|
29
|
+
* - `'warn'` — the verdict is `'fallback'` but the throw is disabled and warnings
|
|
30
|
+
* are on; the caller logs the fallback warning and lets the boot proceed (the
|
|
31
|
+
* verdict is still surfaced as data).
|
|
32
|
+
* - `'silent'` — nothing to do (`'match'` / `'unknown'`, or a suppressed fallback).
|
|
33
|
+
*/
|
|
34
|
+
export type AsarFallbackAction = 'silent' | 'throw' | 'warn';
|
|
22
35
|
/**
|
|
23
36
|
* The action to take for a resolved installer↔app compatibility verdict, given
|
|
24
37
|
* the throw/warn knobs.
|
|
@@ -33,6 +46,17 @@ import type { InstallerCompatibilityTier } from './installer-compatibility.cjs';
|
|
|
33
46
|
* - `'silent'` — nothing to do (`'ok'` / `'unknown'`, or warnings disabled).
|
|
34
47
|
*/
|
|
35
48
|
export type InstallerCompatibilityAction = 'silent' | 'throw' | 'warn-nagged' | 'warn-unrunnable';
|
|
49
|
+
/**
|
|
50
|
+
* Parameters for {@link resolveAsarFallbackAction}.
|
|
51
|
+
*/
|
|
52
|
+
export interface ResolveAsarFallbackActionParams {
|
|
53
|
+
/** Whether a `'fallback'` verdict throws (vs. proceeds with a warning). */
|
|
54
|
+
readonly shouldThrowOnSilentAsarFallback: boolean;
|
|
55
|
+
/** Whether a non-throwing fallback verdict is logged. */
|
|
56
|
+
readonly shouldWarnOnCompatibilityIssues: boolean;
|
|
57
|
+
/** The resolved silent-asar-fallback tier. */
|
|
58
|
+
readonly tier: AsarFallbackTier;
|
|
59
|
+
}
|
|
36
60
|
/**
|
|
37
61
|
* Parameters for {@link resolveInstallerCompatibilityAction}.
|
|
38
62
|
*/
|
|
@@ -44,6 +68,14 @@ export interface ResolveInstallerCompatibilityActionParams {
|
|
|
44
68
|
/** The resolved installer↔app compatibility tier. */
|
|
45
69
|
readonly tier: InstallerCompatibilityTier;
|
|
46
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolves what to do for a silent-asar-fallback verdict, given the throw/warn
|
|
73
|
+
* knobs. Pure — the caller performs the throw/log side effects.
|
|
74
|
+
*
|
|
75
|
+
* @param params - The verdict tier and the resolved throw/warn knobs.
|
|
76
|
+
* @returns The action the caller should take.
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolveAsarFallbackAction(params: ResolveAsarFallbackActionParams): AsarFallbackAction;
|
|
47
79
|
/**
|
|
48
80
|
* Resolves what to do for an installer↔app compatibility verdict, given the
|
|
49
81
|
* throw/warn knobs. Pure — the caller performs the throw/log side effects.
|
|
@@ -60,6 +92,15 @@ export declare function resolveInstallerCompatibilityAction(params: ResolveInsta
|
|
|
60
92
|
* @returns `true` when an unrunnable pin should throw (the default).
|
|
61
93
|
*/
|
|
62
94
|
export declare function resolveShouldThrowOnIncompatibleInstaller(shouldThrowOnIncompatibleInstaller?: boolean): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Whether a booted owned instance running a different app (asar) version than the
|
|
97
|
+
* pin — a silent fallback to the installer's own bundled asar — should fail fast
|
|
98
|
+
* with {@link SilentAsarFallbackError}.
|
|
99
|
+
*
|
|
100
|
+
* @param shouldThrowOnSilentAsarFallback - The resolved option value (omitted → throw).
|
|
101
|
+
* @returns `true` when a silent fallback should throw (the default).
|
|
102
|
+
*/
|
|
103
|
+
export declare function resolveShouldThrowOnSilentAsarFallback(shouldThrowOnSilentAsarFallback?: boolean): boolean;
|
|
63
104
|
/**
|
|
64
105
|
* Whether the owned-instance compatibility nag warnings should be emitted (both
|
|
65
106
|
* the installer↔app `'nagged'` warning and the runtime-Electron `'nagged'`
|