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
|
@@ -14,4 +14,4 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
14
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
15
|
var transport_options_exports = {};
|
|
16
16
|
module.exports = __toCommonJS(transport_options_exports);
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1vcHRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiB0eXBlcyBmb3IgY29uZmlndXJpbmcgdGhlIE9ic2lkaWFuIHRyYW5zcG9ydFxuICogdmlhIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zYC5cbiAqL1xuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBBbmRyb2lkIHRlc3RpbmcgdmlhIEFwcGl1bSBXZWJWaWV3IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFwcCBwYWNrYWdlIChBbmRyb2lkKSBvciBidW5kbGUgSUQgKGlPUykuXG4gICAqIERlZmF1bHRzIHRvIGAnbWQub2JzaWRpYW4nYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgdG8gYmVjb21lIHJlYWR5XG4gICAqIChpdHMgYC9zdGF0dXNgIGVuZHBvaW50IHRvIHJlc3BvbmQpLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0aGUgaGFybmVzcyBhdXRvLXN0YXJ0cyB0aGUgQXBwaXVtIHNlcnZlclxuICAgKiAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pOyBpZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIuIE9uIGEgY29sZCBtYWNoaW5lIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIGNhbiB0YWtlXG4gICAqIGEgd2hpbGUgdG8gZmluaXNoIGJvb3RpbmcsIHNvIHJhaXNlIHRoaXMgaWYgc3RhcnR1cCB0aW1lcyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMIChlLmcuIGAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJ2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwaXVtVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBbmRyb2lkIEFWRCAoQW5kcm9pZCBWaXJ0dWFsIERldmljZSkgbmFtZS5cbiAgICpcbiAgICogVGhlIHRyYW5zcG9ydCBmYWN0b3J5IGxhdW5jaGVzIGBlbXVsYXRvciAtYXZkIDxhdmROYW1lPmAgYXMgYSBiYWNrZ3JvdW5kXG4gICAqIHByb2Nlc3MgYW5kIHBvbGxzIHVudGlsIHRoZSBkZXZpY2UgYXBwZWFycy4gVGhlIGVtdWxhdG9yIGlzIGtpbGxlZFxuICAgKiBvbiB0cmFuc3BvcnQgZGlzcG9zYWwuXG4gICAqXG4gICAqIFJ1biBgZW11bGF0b3IgLWxpc3QtYXZkc2AgdG8gc2VlIGF2YWlsYWJsZSBBVkQgbmFtZXMuXG4gICAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXZpY2UgVURJRCB0byByZXVzZSAoZS5nLiBgJ2VtdWxhdG9yLTU1NTQnYCkuXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYWZ0ZXIgdGhlIEFwcGl1bSBzZXNzaW9uIGlzXG4gICAqIGVzdGFibGlzaGVkLiBXaGVuIHByZXNlbnQgYWxvbmdzaWRlIHtAbGluayBzZXNzaW9uSWR9LCB0aGUgdHJhbnNwb3J0XG4gICAqIGZhY3Rvcnkgc2tpcHMgZW11bGF0b3Igc3RhcnR1cCBhbmQgYXR0YWNoZXMgdG8gdGhlIGV4aXN0aW5nIHNlc3Npb24uXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcsIGFmdGVyIGBzeXMuYm9vdF9jb21wbGV0ZWRgLCBmb3IgYVxuICAgKiBoYXJuZXNzLXN0YXJ0ZWQgZW11bGF0b3IgdG8gYmVjb21lIGlkbGUgYmVmb3JlIHRoZSBBcHBpdW0gc2Vzc2lvbiBpc1xuICAgKiBlc3RhYmxpc2hlZC5cbiAgICpcbiAgICogYHN5cy5ib290X2NvbXBsZXRlZGAgZmlyZXMgKmJlZm9yZSogdGhlIGd1ZXN0IGlzIGFjdHVhbGx5IGlkbGU6IHBhY2thZ2VcbiAgICogb3B0aW1pemF0aW9uIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZywgc28gZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uXG4gICAqIGltbWVkaWF0ZWx5IG1ha2VzIGV2ZXJ5IG9uZSBvZiBVaUF1dG9tYXRvcjIncyBzZXJpYWxpemVkIGBhZGJgIHJvdW5kLXRyaXBzXG4gICAqIGNvbnRlbmQgd2l0aCB0aGF0IHdvcmsgYW5kIGluZmxhdGVzIHNlc3Npb24gZXN0YWJsaXNobWVudCB+M3guIFRoZSBmYWN0b3J5XG4gICAqIGluc3RlYWQgd2FpdHMgdW50aWwgdGhlIGJvb3QgYW5pbWF0aW9uIGhhcyBzdG9wcGVkIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyXG4gICAqIGlzIHNlcnZpbmcsIHByb2NlZWRpbmcgZWFybHkgb25jZSBpZGxlIG9yIGFmdGVyIHRoaXMgYnVkZ2V0IChiZXN0LWVmZm9ydCBcdTIwMTQgYVxuICAgKiB0aW1lb3V0IGxvZ3MgYSB3YXJuaW5nIGFuZCBwcm9jZWVkcykuIFNldCBgMGAgdG8gc2tpcCB0aGUgd2FpdC4gT25seSBhcHBsaWVzXG4gICAqIHRvIGEgaGFybmVzcy1zdGFydGVkIGVtdWxhdG9yLCBub3QgYSByZXVzZWQgb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDBgXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZGxlVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlciBjb25zb2xlIHdpbmRvdyBpcyBzaG93bi5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgICh0aGUgZGVmYXVsdCksIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIHByb2Nlc3MgaXMgc3Bhd25lZCB3aXRoXG4gICAqIGl0cyBjb25zb2xlIHdpbmRvdyBoaWRkZW4gKGB3aW5kb3dzSGlkZWApIGFuZCBpdHMgb3V0cHV0IGRpc2NhcmRlZCwgc28gaXRcbiAgICogbmVpdGhlciBzdGVhbHMgZm9jdXMgbm9yIHdyaXRlcyB0byB0aGUgaW52b2tpbmcgdGVybWluYWwuIElnbm9yZWQgd2hlblxuICAgKiBhdHRhY2hpbmcgdG8gYW4gYWxyZWFkeS1ydW5uaW5nIEFwcGl1bSBzZXJ2ZXIgKHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19XG4gICAqIGBmYWxzZWAsIG9yIHRoZSBzZXJ2ZXIgYWxyZWFkeSByZWFjaGFibGUpLiBTZXQgYHRydWVgIHRvIHNlZSB0aGUgc2VydmVyIGxvZyB3aW5kb3dcbiAgICogYW5kIGl0cyBsaXZlIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNBcHBpdW1Db25zb2xlVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGF1dG8tc3RhcnRlZCBBbmRyb2lkIGVtdWxhdG9yIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgZW11bGF0b3IgaXMgc3RhcnRlZCB3aXRoIGAtbm8td2luZG93YFxuICAgKiAoaGVhZGxlc3MpLCBzbyBpdCBuZXZlciBzdGVhbHMgZm9jdXMuIElnbm9yZWQgd2hlbiByZXVzaW5nIGFuIGFscmVhZHktcnVubmluZ1xuICAgKiBkZXZpY2UgKG5vdGhpbmcgaXMgbGF1bmNoZWQgdG8gaGlkZSkuIFNldCBgdHJ1ZWAgdG8gd2F0Y2ggdGhlIGVtdWxhdG9yIFVJLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBpc0VtdWxhdG9yVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB3YWl0aW5nIGZvciBgYXBwLndvcmtzcGFjZS5sYXlvdXRSZWFkeWAgYWZ0ZXJcbiAgICogdGhlIHZhdWx0IGlzIChyZSlvcGVuZWQuXG4gICAqXG4gICAqIFJlZ2lzdGVyaW5nIGEgdmF1bHQgdHJpZ2dlcnMgYSBmdWxsIE9ic2lkaWFuIHJlLWluaXQgKGBsb2NhdGlvbi5yZWxvYWQoKWBcbiAgICogcmVvcGVucyB0aGUgdmF1bHQgYW5kIHJlbG9hZHMgZXZlcnkgcGx1Z2luIFx1MjAxNCB0aGUgaGVhdmllc3Qgc3RhcnR1cCBzdGVwKS4gT25cbiAgICogYSBjb2xkLWJvb3RlZCBvciB1bmRlci1wcm92aXNpb25lZCBlbXVsYXRvciB0aGF0IGluaXQgY2FuIHRha2UgYSB3aGlsZSwgc29cbiAgICogdGhpcyBidWRnZXQgaXMgdGhlIGxhcmdlc3Qgb2YgdGhlIHRyYW5zcG9ydCB0aW1lb3V0cy4gUmFpc2UgaXQgZnVydGhlciBpZlxuICAgKiByZWxlYXNlcyBzdGlsbCBmbGFrZSBvbiBzbG93IENJIGVtdWxhdG9ycy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDkwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGF5b3V0UmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBlc3RhYmxpc2hpbmcgdGhlIEFwcGl1bSBzZXNzaW9uIChXZWJEcml2ZXJJT1xuICAgKiBgcmVtb3RlKClgIFx1MjAxNCBVaUF1dG9tYXRvcjIgc2VydmVyIGluc3RhbGwgKyBhcHAgbGF1bmNoKS5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbGFyZ2VzdCBhbmQgbW9zdCBsb2FkLXNlbnNpdGl2ZSBzdGVwIG9mIHRoZSBBbmRyb2lkIHNldHVwOlxuICAgKiBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGVtdWxhdG9yIGl0IGRvbWluYXRlcyBzdGFydHVwIGFuZCBjYW4gdGFrZSBhIGZld1xuICAgKiBtaW51dGVzLiBSYWlzZSBpdCBpZiBzZXNzaW9uIGVzdGFibGlzaG1lbnQgdGltZXMgb3V0IHVuZGVyIGxvYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uQ29ubmVjdGlvblJldHJ5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbiBleGlzdGluZyBBcHBpdW0gc2Vzc2lvbiBJRCB0byByZWF0dGFjaCB0by5cbiAgICpcbiAgICogUG9wdWxhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGdsb2JhbCBzZXR1cCBhbmQgcHJvdmlkZWQgdG8gdGVzdCB3b3JrZXJzXG4gICAqIHZpYSB0aGUgZnJhbWV3b3JrJ3MgY29udGV4dCBtZWNoYW5pc20gKGUuZy4gVml0ZXN0IGBwcm92aWRlYC9gaW5qZWN0YCkuXG4gICAqIFdoZW4gcHJlc2VudCwgdGhlIHRyYW5zcG9ydCBmYWN0b3J5IHVzZXMgV2ViRHJpdmVySU8ncyBgYXR0YWNoKClgIGluc3RlYWRcbiAgICogb2YgY3JlYXRpbmcgYSBuZXcgc2Vzc2lvbiwgYXZvaWRpbmcgZHVwbGljYXRlIEFwcGl1bS9BREIgY29ubmVjdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIG1pc3NpbmcgQXBwaXVtIGRlcGVuZGVuY2llcyAodGhlXG4gICAqIGB1aWF1dG9tYXRvcjJgIGRyaXZlciwgYW5kIEFwcGl1bSBpdHNlbGYpIGJlZm9yZSBhdXRvLXN0YXJ0aW5nIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgYW5kIHRoZSBoYXJuZXNzIGlzIGFib3V0IHRvIGF1dG8tc3RhcnQgdGhlIEFwcGl1bVxuICAgKiBzZXJ2ZXIgKHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19KSwgdGhlIGZhY3RvcnkgZmlyc3QgZW5zdXJlcyBBcHBpdW0gaXNcbiAgICogaW5zdGFsbGVkIChnbG9iYWxseSwgdmlhIGBucG0gaW5zdGFsbCAtZyBhcHBpdW1gKSBhbmQgdGhhdCB0aGVcbiAgICogYHVpYXV0b21hdG9yMmAgZHJpdmVyIGlzIGluc3RhbGxlZCAoYGFwcGl1bSBkcml2ZXIgaW5zdGFsbCB1aWF1dG9tYXRvcjJgKSxcbiAgICogaW5zdGFsbGluZyB3aGljaGV2ZXIgaXMgbWlzc2luZy4gSWdub3JlZCB3aGVuIGF0dGFjaGluZyB0byBhblxuICAgKiBhbHJlYWR5LXJ1bm5pbmcgc2VydmVyIChub3RoaW5nIGlzIGF1dG8tc3RhcnRlZCwgc28gbm90aGluZyBpcyBpbnN0YWxsZWQpIG9yXG4gICAqIHdoZW4ge0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0gaXMgYGZhbHNlYC4gU2V0IGl0IHRvIGBmYWxzZWAgdG8gbWFuYWdlXG4gICAqIHRoZSBBcHBpdW0gdG9vbGNoYWluIHlvdXJzZWxmIGFuZCBza2lwIHRoZSBtYWNoaW5lLW11dGF0aW5nIGdsb2JhbCBpbnN0YWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEF1dG9JbnN0YWxsQXBwaXVtRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHN0YXJ0IHRoZSBBcHBpdW0gc2VydmVyIGlmIGl0IGlzIG5vdCByZWFjaGFibGUuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCksIHRoZSB0cmFuc3BvcnQgZmFjdG9yeSBzcGF3bnMgYG5weCBhcHBpdW1gXG4gICAqIGFzIGEgYmFja2dyb3VuZCBwcm9jZXNzIHdoZW4gdGhlIHByZWZsaWdodCBjaGVjayBmYWlscywgYW5kIGtpbGxzIGl0XG4gICAqIG9uIHRyYW5zcG9ydCBkaXNwb3NhbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBdXRvU3RhcnRBcHBpdW0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG5cbiAgLyoqXG4gICAqIEJhc2UgcGF0aCBvbiB0aGUgZGV2aWNlIHdoZXJlIE9ic2lkaWFuIHN0b3JlcyB2YXVsdHMuXG4gICAqXG4gICAqIERlZmF1bHRzOlxuICAgKiAtIEFuZHJvaWQ6IGAvc2RjYXJkL0RvY3VtZW50cy9gXG4gICAqIC0gaU9TOiBgQG1kLm9ic2lkaWFuOmRvY3VtZW50cy9gXG4gICAqL1xuICByZWFkb25seSB2YXVsdEJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIFdlYlZpZXcgY29udGV4dCB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBPbiBzbG93IGVtdWxhdG9ycywgdGhlIENocm9tZURyaXZlciBwcm94eSB0aGF0IGhhbmRsZXMgV2ViVmlldyBjb21tYW5kc1xuICAgKiBtYXkgbm90IGJlIHJlYWR5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBBcHBpdW0gc2Vzc2lvbiBzdGFydHMuIFRoaXMgdGltZW91dFxuICAgKiBjb250cm9scyBob3cgbG9uZyB0byBwb2xsIGJlZm9yZSBnaXZpbmcgdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHdlYnZpZXdUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhbnNwb3J0IG9wdGlvbnMgZm9yIGRlc2t0b3AgdGVzdGluZyB2aWEgQ2hyb21lIERldlRvb2xzIFByb3RvY29sLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgZGVza3RvcCB0cmFuc3BvcnQuIEJ5IGRlZmF1bHQgdGhlIGhhcm5lc3MgKipsYXVuY2hlcyBhbmRcbiAqIG93bnMgYW4gaXNvbGF0ZWQgT2JzaWRpYW4gaW5zdGFuY2UqKiBpbiBhIHRlbXBvcmFyeSB1c2VyLWRhdGEgZGlyIChuZXZlclxuICogdG91Y2hpbmcgdGhlIHVzZXIncyBPYnNpZGlhbiksIGNvbm5lY3RlZCBvdmVyIGEgZnJlZSBDRFAgcG9ydC4gUHJvdmlkZVxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5wb3J0fSB0byBpbnN0ZWFkIGF0dGFjaCB0byBhblxuICogYWxyZWFkeS1ydW5uaW5nIE9ic2lkaWFuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqIERlZmF1bHRzIHRvIDMwMDAwXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHcmFjZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGZvciBmYXN0LWZhaWxpbmcgYSAqKmRlYWQgYm9vdCoqIG9mIHRoZSBvd25lZFxuICAgKiBpbnN0YW5jZS5cbiAgICpcbiAgICogV2hlbiBhbiBhc2FyIGNhbm5vdCBydW4gb24gdGhlIGxhdW5jaGVkIEVsZWN0cm9uIHNoZWxsICh0aGUgaW5zdGFsbGVyXG4gICAqIHZlcnNpb24gaXMgdG9vIG9sZCBmb3IgdGhlIGFwcCB2ZXJzaW9uKSwgdGhlIHJlbmRlcmVyIGxvYWRzIGJ1dCBuZXZlclxuICAgKiBib290c3RyYXBzOiBgZG9jdW1lbnQuYm9keWAgc3RheXMgZW1wdHkgYW5kIGB3aW5kb3cuYXBwYCByZW1haW5zXG4gICAqIGB1bmRlZmluZWRgIFx1MjAxNCBhIGJsYWNrIHNjcmVlbi4gUmF0aGVyIHRoYW4gd2FpdGluZyBvdXQgdGhlIGZ1bGwgcmVhZGluZXNzXG4gICAqIHRpbWVvdXQsIHRoZSBvd25lZC12YXVsdCByZWFkaW5lc3MgcG9sbCBjb25jbHVkZXMgdGhlIGJvb3QgaXMgZGVhZCBvbmNlIHRoZVxuICAgKiByZW5kZXJlciBoYXMgYmVlbiBgZG9jdW1lbnQucmVhZHlTdGF0ZWAgYCdjb21wbGV0ZSdgIGZvciB0aGlzIGxvbmcgd2l0aCBub1xuICAgKiBgd2luZG93LmFwcGAgYW5kIGFuIGVtcHR5IGA8Ym9keT5gLCBhbmQgdGhyb3dzIGFcbiAgICogYFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3JgLiBPbmx5IGFwcGxpZXMgdG8gYW4gb3duZWQgaW5zdGFuY2VcbiAgICogKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQpLiBTZXQgYDBgIHRvIGRpc2FibGUgZmFzdC1mYWlsIGFuZFxuICAgKiByZXN0b3JlIHRoZSBwbGFpbiB3YWl0LW91dC10aGUtcmVhZGluZXNzLXRpbWVvdXQgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxMDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ0RQIGhvc3QuXG4gICAqIERlZmF1bHRzIHRvIGAnbG9jYWxob3N0J2BcbiAgICovXG4gIHJlYWRvbmx5IGhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hcmtzIHtAbGluayBwb3J0fSBhcyB0aGUgQ0RQIHBvcnQgb2YgYSAqKmhhcm5lc3Mtb3duZWQsIGlzb2xhdGVkIGluc3RhbmNlKipcbiAgICogdGhhdCB0aGUgZ2xvYmFsIHNldHVwIGFscmVhZHkgbGF1bmNoZWQgYW5kIHByZXBhcmVkICh2YXVsdCByZWdpc3RlcmVkLFxuICAgKiBwbHVnaW4gZW5hYmxlZCkuXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYW5kIHByb3ZpZGVkIHRvIHRlc3Qgd29ya2VycyB2aWFcbiAgICogdGhlIGZyYW1ld29yaydzIGNvbnRleHQgbWVjaGFuaXNtIChlLmcuIFZpdGVzdCBgcHJvdmlkZWAvYGluamVjdGApLiBXaGVuIHNldCxcbiAgICogdGhlIHdvcmtlciAqKmF0dGFjaGVzKiogdG8gdGhlIG93bmVkIGluc3RhbmNlIG9uIHtAbGluayBwb3J0fSBpbnN0ZWFkIG9mXG4gICAqIGxhdW5jaGluZyBpdHMgb3duLCBhbmQgc2tpcHMgdGhlIHVzZXItc2NvcGUgdmF1bHQtcmVnaXN0cmF0aW9uIHByZWZsaWdodCBcdTIwMTRcbiAgICogdGhlIG93bmVkIGluc3RhbmNlJ3MgdmF1bHQgbGl2ZXMgaW4gYW4gaXNvbGF0ZWQgdXNlci1kYXRhIGNvbmZpZywgbm90IHRoZVxuICAgKiB1c2VyLXNjb3BlIHJlZ2lzdHJ5LiBEbyBub3Qgc2V0IHRoaXMgbWFudWFsbHk7IGZvciBwbGFpbiBhdHRhY2ggbW9kZSB1c2VcbiAgICoge0BsaW5rIHBvcnR9IGFsb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNIYXJuZXNzT3duZWRJbnN0YW5jZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG93bmVkIGRlc2t0b3AgT2JzaWRpYW4gd2luZG93IGlzIHNob3duIG9uIHNjcmVlbi5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgLCB0aGUgaGFybmVzcyBsYXVuY2hlcyB0aGUgb3duZWQgaW5zdGFuY2Ugd2l0aFxuICAgKiBrZWVwLWFsaXZlIENocm9taXVtIGZsYWdzIGFuZCBtb3ZlcyBpdHMgd2luZG93ICoqb2ZmLXNjcmVlbioqIG9uY2UgRWxlY3Ryb24nc1xuICAgKiByZW1vdGUgYnJpZGdlIGlzIGF2YWlsYWJsZSwgc28gdGhlIHJ1biBuZXZlciBzdGVhbHMgZm9jdXMgb3IgcG9wcyBhIHdpbmRvdyBpblxuICAgKiBmcm9udCBvZiB5b3UuIE9mZi1zY3JlZW4gKG5vdCBtaW5pbWl6ZWQpIGtlZXBzIHRoZSByZW5kZXJlciBsaXZlLCBzb1xuICAgKiBgc2V0VGltZW91dGAsIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLCBgOmhvdmVyYCwgYW5kIHRydXN0ZWQgaW5wdXQgYmVoYXZlXG4gICAqIGlkZW50aWNhbGx5IHRvIGEgdmlzaWJsZSB3aW5kb3cuIERlZmF1bHRzIHRvIGB0cnVlYDsgaW50ZWdyYXRpb24gc2V0dXBcbiAgICogZXhwbGljaXRseSBwYXNzZXMgYGZhbHNlYCB0byBhdm9pZCBzdGVhbGluZyBmb2N1cy4gSWdub3JlZCBpbiBhdHRhY2ggbW9kZVxuICAgKiAoe0BsaW5rIHBvcnR9IHNldCkgXHUyMDE0IHRoZSBoYXJuZXNzIG5ldmVyXG4gICAqIG1vdmVzIHRoZSB1c2VyJ3Mgb3duIHJ1bm5pbmcgd2luZG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzT2JzaWRpYW5BcHBWaXNpYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipFbGVjdHJvbiBzaGVsbCoqIChpbnN0YWxsZXIgYnVpbGQpIHRoZSBvd25lZCBpbnN0YW5jZSBydW5zLlxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGV4cGxpY2l0IGAneC55LnonYCwgYCdwdWJsaWMtbGF0ZXN0J2AsIG9yIGAnY2F0YWx5c3QtbGF0ZXN0J2AuXG4gICAqIFRoZSBtYXRjaGluZyBHaXRIdWIgcmVsZWFzZSBpbnN0YWxsZXIgaXMgZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkIHRvIGFcbiAgICogcG9ydGFibGUgc2hlbGwgKGNhY2hlZCBmb3IgcmV1c2UpLiBQdWJsaWMgcmVsZWFzZXMgb25seSBcdTIwMTQgY2F0YWx5c3QgYnVpbGRzXG4gICAqIGhhdmUgbm8gcHVibGljIGluc3RhbGxlci4gSWdub3JlZCB3aGVuIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipPYnNpZGlhbiBhcHAgdmVyc2lvbioqIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy5cbiAgICpcbiAgICogQWNjZXB0cyBhbiBleHBsaWNpdCBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLlxuICAgKiBWZXJzaW9ucyBhdCBvciBhYm92ZSB0aGUgc2hlbGwgdmVyc2lvbiBhcmUgYXBwbGllZCBhcyBhIGNoZWFwIGFzYXIgc3dhcDtcbiAgICogb2xkZXIgdmVyc2lvbnMgdHJhbnNwYXJlbnRseSB1c2UgdGhlIG1hdGNoaW5nIGluc3RhbGxlciBzaGVsbC4gV2hlbiBvbWl0dGVkLFxuICAgKiB0aGUgdXNlcidzIGN1cnJlbnRseS1pbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLiBJZ25vcmVkIHdoZW4ge0BsaW5rIHBvcnR9XG4gICAqIChhdHRhY2ggbW9kZSkgaXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0byAodGhlXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgaXQgd2FzIGxhdW5jaGVkIHdpdGgpLiBXaGVuIHNldCwgdGhlIGhhcm5lc3NcbiAgICogYXR0YWNoZXMgaW5zdGVhZCBvZiBvd25pbmcgYW4gaW5zdGFuY2UsIGFuZCB0aGUgdmVyc2lvbiBrbm9icyBhcmUgaWdub3JlZC5cbiAgICogV2hlbiBvbWl0dGVkLCBhbiBvd25lZCBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5XG4gICAqIGNob3NlbiBmcmVlIHBvcnQgKG5vIHBvcnQgaXMgaGFyZGNvZGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbGF1bmNoIHRoZSBvd25lZCBpbnN0YW5jZSB3aXRoIENocm9taXVtJ3Mgc2FuZGJveCBkaXNhYmxlZFxuICAgKiAoYC0tbm8tc2FuZGJveGApLlxuICAgKlxuICAgKiBOZWVkZWQgdG8gYm9vdCBhbiBvd25lZCBpbnN0YW5jZSBvbiBMaW51eCB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZCBgY2hyb21lLXNhbmRib3hgIGhlbHBlciBcdTIwMTQgZS5nLiBhIHBvcnRhYmxlIHNoZWxsXG4gICAqIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciwgb3IgYSBDSSBydW5uZXIgbGF1bmNoaW5nIGFzIGEgbm9uLXJvb3QgdXNlciwgaW5cbiAgICogd2hpY2ggY2FzZSB0aGUgcmVuZGVyZXIgb3RoZXJ3aXNlIHJlZnVzZXMgdG8gc3RhcnQuIEhhcm1sZXNzIG9uXG4gICAqIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiByZWxhdW5jaGVzIHRoZSB1c2VyJ3MgcnVubmluZyBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFuICoqdW5ydW5uYWJsZSoqIGluc3RhbGxlclx1MjE5NGFwcCB2ZXJzaW9uIHBhaXIgZmFpbHMgZmFzdCBiZWZvcmUgbGF1bmNoLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBhbiBpbnN0YWxsZXIgYmVsb3cgdGhlIGFwcCdzIHJ1biBmbG9vciAodGhlXG4gICAqIG9sZGVzdCBpbnN0YWxsZXIgdGhlIGFwcCdzIGFzYXIgY2FuIGJvb3Qgb24pIHRocm93c1xuICAgKiBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBmcm9tIHZlcnNpb24gcmVzb2x1dGlvbiwgYmVmb3JlIGFueXRoaW5nXG4gICAqIGlzIGRvd25sb2FkZWQgb3IgbGF1bmNoZWQuIFNldCBgZmFsc2VgIHRvIGxldCB0aGUgcGluIHByb2NlZWQgdG8gbGF1bmNoXG4gICAqIGluc3RlYWQgXHUyMDE0IHdoZXJlIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsXG4gICAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmAsIHNlZSB7QGxpbmsgZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzfSlcbiAgICogc3RpbGwgY2F0Y2hlcyB0aGUgYmxhY2stc2NyZWVuIGJvb3QsIGFuZCB0aGUgYCd1bnJ1bm5hYmxlJ2AgdmVyZGljdCBpc1xuICAgKiBzdXJmYWNlZCBhcyBkYXRhIHJhdGhlciB0aGFuIHRocm93bi4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlXG4gICAqIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgb3duZWQtaW5zdGFuY2UgY29tcGF0aWJpbGl0eSAqKm5hZyB3YXJuaW5ncyoqIGFyZSBlbWl0dGVkLlxuICAgKlxuICAgKiBDb3ZlcnMgKipib3RoKiogY29tcGF0aWJpbGl0eSBuYWdzOiB0aGUgb2ZmbGluZSBpbnN0YWxsZXJcdTIxOTRhcHAgd2FybmluZyAoYVxuICAgKiBydW5uYWJsZSBpbnN0YWxsZXIgYmVsb3cgdGhlIHJlY29tbWVuZGVkIGZsb29yKSBhbmQgdGhlIHBvc3QtYm9vdFxuICAgKiBydW50aW1lLUVsZWN0cm9uIHdhcm5pbmcgKGEgbGl2ZSBFbGVjdHJvbiBiZWxvdyB0aGUgYXBwJ3MgcmVjb21tZW5kZWRcbiAgICogbWluaW11bSkuIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgZWFjaCBmaXJlcyB2aWEgdGhlIGhhcm5lc3MgbG9nOyBzZXRcbiAgICogYGZhbHNlYCB0byBzaWxlbmNlIGJvdGggXHUyMDE0IHRoZSB2ZXJkaWN0cyBhcmUgc3RpbGwgY29tcHV0ZWQgYW5kIHN1cmZhY2VkIGFzXG4gICAqIGRhdGEgKGBjb21wYXRpYmlsaXR5YCAvIGBlbGVjdHJvbkNvbXBhdGliaWxpdHlgKSwgb25seSB0aGUgbG9nIGlzIHN1cHByZXNzZWQuXG4gICAqIERvZXMgbm90IGFmZmVjdCB0aGUgYCd1bnJ1bm5hYmxlJ2AgdGhyb3cgKHNlZVxuICAgKiB7QGxpbmsgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcn0pLiBPbmx5IGFwcGxpZXMgdG8gYW4gb3duZWRcbiAgICogaW5zdGFuY2UgKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1jZHAnO1xufVxuXG4vKipcbiAqIERpc2NyaW1pbmF0ZWQgdW5pb24gb2YgYWxsIHN1cHBvcnRlZCB0cmFuc3BvcnQgY29uZmlndXJhdGlvbnMuXG4gKlxuICogVXNlZCBpbiB2aXRlc3QgYGVudmlyb25tZW50T3B0aW9ucy5vYnNpZGlhblRyYW5zcG9ydGAgdG8gc2VsZWN0IGFuZFxuICogY29uZmlndXJlIHRoZSB0cmFuc3BvcnQgZm9yIGludGVncmF0aW9uIHRlc3RzLlxuICovXG5leHBvcnQgdHlwZSBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgPVxuICB8IE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNcbiAgfCBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnM7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1vcHRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiB0eXBlcyBmb3IgY29uZmlndXJpbmcgdGhlIE9ic2lkaWFuIHRyYW5zcG9ydFxuICogdmlhIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zYC5cbiAqL1xuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBBbmRyb2lkIHRlc3RpbmcgdmlhIEFwcGl1bSBXZWJWaWV3IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFwcCBwYWNrYWdlIChBbmRyb2lkKSBvciBidW5kbGUgSUQgKGlPUykuXG4gICAqIERlZmF1bHRzIHRvIGAnbWQub2JzaWRpYW4nYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgdG8gYmVjb21lIHJlYWR5XG4gICAqIChpdHMgYC9zdGF0dXNgIGVuZHBvaW50IHRvIHJlc3BvbmQpLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0aGUgaGFybmVzcyBhdXRvLXN0YXJ0cyB0aGUgQXBwaXVtIHNlcnZlclxuICAgKiAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pOyBpZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIuIE9uIGEgY29sZCBtYWNoaW5lIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIGNhbiB0YWtlXG4gICAqIGEgd2hpbGUgdG8gZmluaXNoIGJvb3RpbmcsIHNvIHJhaXNlIHRoaXMgaWYgc3RhcnR1cCB0aW1lcyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMIChlLmcuIGAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJ2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwaXVtVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBbmRyb2lkIEFWRCAoQW5kcm9pZCBWaXJ0dWFsIERldmljZSkgbmFtZS5cbiAgICpcbiAgICogVGhlIHRyYW5zcG9ydCBmYWN0b3J5IGxhdW5jaGVzIGBlbXVsYXRvciAtYXZkIDxhdmROYW1lPmAgYXMgYSBiYWNrZ3JvdW5kXG4gICAqIHByb2Nlc3MgYW5kIHBvbGxzIHVudGlsIHRoZSBkZXZpY2UgYXBwZWFycy4gVGhlIGVtdWxhdG9yIGlzIGtpbGxlZFxuICAgKiBvbiB0cmFuc3BvcnQgZGlzcG9zYWwuXG4gICAqXG4gICAqIFJ1biBgZW11bGF0b3IgLWxpc3QtYXZkc2AgdG8gc2VlIGF2YWlsYWJsZSBBVkQgbmFtZXMuXG4gICAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXZpY2UgVURJRCB0byByZXVzZSAoZS5nLiBgJ2VtdWxhdG9yLTU1NTQnYCkuXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYWZ0ZXIgdGhlIEFwcGl1bSBzZXNzaW9uIGlzXG4gICAqIGVzdGFibGlzaGVkLiBXaGVuIHByZXNlbnQgYWxvbmdzaWRlIHtAbGluayBzZXNzaW9uSWR9LCB0aGUgdHJhbnNwb3J0XG4gICAqIGZhY3Rvcnkgc2tpcHMgZW11bGF0b3Igc3RhcnR1cCBhbmQgYXR0YWNoZXMgdG8gdGhlIGV4aXN0aW5nIHNlc3Npb24uXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcsIGFmdGVyIGBzeXMuYm9vdF9jb21wbGV0ZWRgLCBmb3IgYVxuICAgKiBoYXJuZXNzLXN0YXJ0ZWQgZW11bGF0b3IgdG8gYmVjb21lIGlkbGUgYmVmb3JlIHRoZSBBcHBpdW0gc2Vzc2lvbiBpc1xuICAgKiBlc3RhYmxpc2hlZC5cbiAgICpcbiAgICogYHN5cy5ib290X2NvbXBsZXRlZGAgZmlyZXMgKmJlZm9yZSogdGhlIGd1ZXN0IGlzIGFjdHVhbGx5IGlkbGU6IHBhY2thZ2VcbiAgICogb3B0aW1pemF0aW9uIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZywgc28gZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uXG4gICAqIGltbWVkaWF0ZWx5IG1ha2VzIGV2ZXJ5IG9uZSBvZiBVaUF1dG9tYXRvcjIncyBzZXJpYWxpemVkIGBhZGJgIHJvdW5kLXRyaXBzXG4gICAqIGNvbnRlbmQgd2l0aCB0aGF0IHdvcmsgYW5kIGluZmxhdGVzIHNlc3Npb24gZXN0YWJsaXNobWVudCB+M3guIFRoZSBmYWN0b3J5XG4gICAqIGluc3RlYWQgd2FpdHMgdW50aWwgdGhlIGJvb3QgYW5pbWF0aW9uIGhhcyBzdG9wcGVkIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyXG4gICAqIGlzIHNlcnZpbmcsIHByb2NlZWRpbmcgZWFybHkgb25jZSBpZGxlIG9yIGFmdGVyIHRoaXMgYnVkZ2V0IChiZXN0LWVmZm9ydCBcdTIwMTQgYVxuICAgKiB0aW1lb3V0IGxvZ3MgYSB3YXJuaW5nIGFuZCBwcm9jZWVkcykuIFNldCBgMGAgdG8gc2tpcCB0aGUgd2FpdC4gT25seSBhcHBsaWVzXG4gICAqIHRvIGEgaGFybmVzcy1zdGFydGVkIGVtdWxhdG9yLCBub3QgYSByZXVzZWQgb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDBgXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZGxlVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlciBjb25zb2xlIHdpbmRvdyBpcyBzaG93bi5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgICh0aGUgZGVmYXVsdCksIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIHByb2Nlc3MgaXMgc3Bhd25lZCB3aXRoXG4gICAqIGl0cyBjb25zb2xlIHdpbmRvdyBoaWRkZW4gKGB3aW5kb3dzSGlkZWApIGFuZCBpdHMgb3V0cHV0IGRpc2NhcmRlZCwgc28gaXRcbiAgICogbmVpdGhlciBzdGVhbHMgZm9jdXMgbm9yIHdyaXRlcyB0byB0aGUgaW52b2tpbmcgdGVybWluYWwuIElnbm9yZWQgd2hlblxuICAgKiBhdHRhY2hpbmcgdG8gYW4gYWxyZWFkeS1ydW5uaW5nIEFwcGl1bSBzZXJ2ZXIgKHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19XG4gICAqIGBmYWxzZWAsIG9yIHRoZSBzZXJ2ZXIgYWxyZWFkeSByZWFjaGFibGUpLiBTZXQgYHRydWVgIHRvIHNlZSB0aGUgc2VydmVyIGxvZyB3aW5kb3dcbiAgICogYW5kIGl0cyBsaXZlIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNBcHBpdW1Db25zb2xlVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGF1dG8tc3RhcnRlZCBBbmRyb2lkIGVtdWxhdG9yIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgZW11bGF0b3IgaXMgc3RhcnRlZCB3aXRoIGAtbm8td2luZG93YFxuICAgKiAoaGVhZGxlc3MpLCBzbyBpdCBuZXZlciBzdGVhbHMgZm9jdXMuIElnbm9yZWQgd2hlbiByZXVzaW5nIGFuIGFscmVhZHktcnVubmluZ1xuICAgKiBkZXZpY2UgKG5vdGhpbmcgaXMgbGF1bmNoZWQgdG8gaGlkZSkuIFNldCBgdHJ1ZWAgdG8gd2F0Y2ggdGhlIGVtdWxhdG9yIFVJLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBpc0VtdWxhdG9yVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB3YWl0aW5nIGZvciBgYXBwLndvcmtzcGFjZS5sYXlvdXRSZWFkeWAgYWZ0ZXJcbiAgICogdGhlIHZhdWx0IGlzIChyZSlvcGVuZWQuXG4gICAqXG4gICAqIFJlZ2lzdGVyaW5nIGEgdmF1bHQgdHJpZ2dlcnMgYSBmdWxsIE9ic2lkaWFuIHJlLWluaXQgKGBsb2NhdGlvbi5yZWxvYWQoKWBcbiAgICogcmVvcGVucyB0aGUgdmF1bHQgYW5kIHJlbG9hZHMgZXZlcnkgcGx1Z2luIFx1MjAxNCB0aGUgaGVhdmllc3Qgc3RhcnR1cCBzdGVwKS4gT25cbiAgICogYSBjb2xkLWJvb3RlZCBvciB1bmRlci1wcm92aXNpb25lZCBlbXVsYXRvciB0aGF0IGluaXQgY2FuIHRha2UgYSB3aGlsZSwgc29cbiAgICogdGhpcyBidWRnZXQgaXMgdGhlIGxhcmdlc3Qgb2YgdGhlIHRyYW5zcG9ydCB0aW1lb3V0cy4gUmFpc2UgaXQgZnVydGhlciBpZlxuICAgKiByZWxlYXNlcyBzdGlsbCBmbGFrZSBvbiBzbG93IENJIGVtdWxhdG9ycy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDkwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGF5b3V0UmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBlc3RhYmxpc2hpbmcgdGhlIEFwcGl1bSBzZXNzaW9uIChXZWJEcml2ZXJJT1xuICAgKiBgcmVtb3RlKClgIFx1MjAxNCBVaUF1dG9tYXRvcjIgc2VydmVyIGluc3RhbGwgKyBhcHAgbGF1bmNoKS5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbGFyZ2VzdCBhbmQgbW9zdCBsb2FkLXNlbnNpdGl2ZSBzdGVwIG9mIHRoZSBBbmRyb2lkIHNldHVwOlxuICAgKiBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGVtdWxhdG9yIGl0IGRvbWluYXRlcyBzdGFydHVwIGFuZCBjYW4gdGFrZSBhIGZld1xuICAgKiBtaW51dGVzLiBSYWlzZSBpdCBpZiBzZXNzaW9uIGVzdGFibGlzaG1lbnQgdGltZXMgb3V0IHVuZGVyIGxvYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uQ29ubmVjdGlvblJldHJ5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbiBleGlzdGluZyBBcHBpdW0gc2Vzc2lvbiBJRCB0byByZWF0dGFjaCB0by5cbiAgICpcbiAgICogUG9wdWxhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGdsb2JhbCBzZXR1cCBhbmQgcHJvdmlkZWQgdG8gdGVzdCB3b3JrZXJzXG4gICAqIHZpYSB0aGUgZnJhbWV3b3JrJ3MgY29udGV4dCBtZWNoYW5pc20gKGUuZy4gVml0ZXN0IGBwcm92aWRlYC9gaW5qZWN0YCkuXG4gICAqIFdoZW4gcHJlc2VudCwgdGhlIHRyYW5zcG9ydCBmYWN0b3J5IHVzZXMgV2ViRHJpdmVySU8ncyBgYXR0YWNoKClgIGluc3RlYWRcbiAgICogb2YgY3JlYXRpbmcgYSBuZXcgc2Vzc2lvbiwgYXZvaWRpbmcgZHVwbGljYXRlIEFwcGl1bS9BREIgY29ubmVjdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIG1pc3NpbmcgQXBwaXVtIGRlcGVuZGVuY2llcyAodGhlXG4gICAqIGB1aWF1dG9tYXRvcjJgIGRyaXZlciwgYW5kIEFwcGl1bSBpdHNlbGYpIGJlZm9yZSBhdXRvLXN0YXJ0aW5nIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgYW5kIHRoZSBoYXJuZXNzIGlzIGFib3V0IHRvIGF1dG8tc3RhcnQgdGhlIEFwcGl1bVxuICAgKiBzZXJ2ZXIgKHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19KSwgdGhlIGZhY3RvcnkgZmlyc3QgZW5zdXJlcyBBcHBpdW0gaXNcbiAgICogaW5zdGFsbGVkIChnbG9iYWxseSwgdmlhIGBucG0gaW5zdGFsbCAtZyBhcHBpdW1gKSBhbmQgdGhhdCB0aGVcbiAgICogYHVpYXV0b21hdG9yMmAgZHJpdmVyIGlzIGluc3RhbGxlZCAoYGFwcGl1bSBkcml2ZXIgaW5zdGFsbCB1aWF1dG9tYXRvcjJgKSxcbiAgICogaW5zdGFsbGluZyB3aGljaGV2ZXIgaXMgbWlzc2luZy4gSWdub3JlZCB3aGVuIGF0dGFjaGluZyB0byBhblxuICAgKiBhbHJlYWR5LXJ1bm5pbmcgc2VydmVyIChub3RoaW5nIGlzIGF1dG8tc3RhcnRlZCwgc28gbm90aGluZyBpcyBpbnN0YWxsZWQpIG9yXG4gICAqIHdoZW4ge0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0gaXMgYGZhbHNlYC4gU2V0IGl0IHRvIGBmYWxzZWAgdG8gbWFuYWdlXG4gICAqIHRoZSBBcHBpdW0gdG9vbGNoYWluIHlvdXJzZWxmIGFuZCBza2lwIHRoZSBtYWNoaW5lLW11dGF0aW5nIGdsb2JhbCBpbnN0YWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEF1dG9JbnN0YWxsQXBwaXVtRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHN0YXJ0IHRoZSBBcHBpdW0gc2VydmVyIGlmIGl0IGlzIG5vdCByZWFjaGFibGUuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCksIHRoZSB0cmFuc3BvcnQgZmFjdG9yeSBzcGF3bnMgYG5weCBhcHBpdW1gXG4gICAqIGFzIGEgYmFja2dyb3VuZCBwcm9jZXNzIHdoZW4gdGhlIHByZWZsaWdodCBjaGVjayBmYWlscywgYW5kIGtpbGxzIGl0XG4gICAqIG9uIHRyYW5zcG9ydCBkaXNwb3NhbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBdXRvU3RhcnRBcHBpdW0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG5cbiAgLyoqXG4gICAqIEJhc2UgcGF0aCBvbiB0aGUgZGV2aWNlIHdoZXJlIE9ic2lkaWFuIHN0b3JlcyB2YXVsdHMuXG4gICAqXG4gICAqIERlZmF1bHRzOlxuICAgKiAtIEFuZHJvaWQ6IGAvc2RjYXJkL0RvY3VtZW50cy9gXG4gICAqIC0gaU9TOiBgQG1kLm9ic2lkaWFuOmRvY3VtZW50cy9gXG4gICAqL1xuICByZWFkb25seSB2YXVsdEJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIFdlYlZpZXcgY29udGV4dCB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBPbiBzbG93IGVtdWxhdG9ycywgdGhlIENocm9tZURyaXZlciBwcm94eSB0aGF0IGhhbmRsZXMgV2ViVmlldyBjb21tYW5kc1xuICAgKiBtYXkgbm90IGJlIHJlYWR5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBBcHBpdW0gc2Vzc2lvbiBzdGFydHMuIFRoaXMgdGltZW91dFxuICAgKiBjb250cm9scyBob3cgbG9uZyB0byBwb2xsIGJlZm9yZSBnaXZpbmcgdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHdlYnZpZXdUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhbnNwb3J0IG9wdGlvbnMgZm9yIGRlc2t0b3AgdGVzdGluZyB2aWEgQ2hyb21lIERldlRvb2xzIFByb3RvY29sLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgZGVza3RvcCB0cmFuc3BvcnQuIEJ5IGRlZmF1bHQgdGhlIGhhcm5lc3MgKipsYXVuY2hlcyBhbmRcbiAqIG93bnMgYW4gaXNvbGF0ZWQgT2JzaWRpYW4gaW5zdGFuY2UqKiBpbiBhIHRlbXBvcmFyeSB1c2VyLWRhdGEgZGlyIChuZXZlclxuICogdG91Y2hpbmcgdGhlIHVzZXIncyBPYnNpZGlhbiksIGNvbm5lY3RlZCBvdmVyIGEgZnJlZSBDRFAgcG9ydC4gUHJvdmlkZVxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5wb3J0fSB0byBpbnN0ZWFkIGF0dGFjaCB0byBhblxuICogYWxyZWFkeS1ydW5uaW5nIE9ic2lkaWFuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqIERlZmF1bHRzIHRvIDMwMDAwXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHcmFjZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGZvciBmYXN0LWZhaWxpbmcgYSAqKmRlYWQgYm9vdCoqIG9mIHRoZSBvd25lZFxuICAgKiBpbnN0YW5jZS5cbiAgICpcbiAgICogV2hlbiBhbiBhc2FyIGNhbm5vdCBydW4gb24gdGhlIGxhdW5jaGVkIEVsZWN0cm9uIHNoZWxsICh0aGUgaW5zdGFsbGVyXG4gICAqIHZlcnNpb24gaXMgdG9vIG9sZCBmb3IgdGhlIGFwcCB2ZXJzaW9uKSwgdGhlIHJlbmRlcmVyIGxvYWRzIGJ1dCBuZXZlclxuICAgKiBib290c3RyYXBzOiBgZG9jdW1lbnQuYm9keWAgc3RheXMgZW1wdHkgYW5kIGB3aW5kb3cuYXBwYCByZW1haW5zXG4gICAqIGB1bmRlZmluZWRgIFx1MjAxNCBhIGJsYWNrIHNjcmVlbi4gUmF0aGVyIHRoYW4gd2FpdGluZyBvdXQgdGhlIGZ1bGwgcmVhZGluZXNzXG4gICAqIHRpbWVvdXQsIHRoZSBvd25lZC12YXVsdCByZWFkaW5lc3MgcG9sbCBjb25jbHVkZXMgdGhlIGJvb3QgaXMgZGVhZCBvbmNlIHRoZVxuICAgKiByZW5kZXJlciBoYXMgYmVlbiBgZG9jdW1lbnQucmVhZHlTdGF0ZWAgYCdjb21wbGV0ZSdgIGZvciB0aGlzIGxvbmcgd2l0aCBub1xuICAgKiBgd2luZG93LmFwcGAgYW5kIGFuIGVtcHR5IGA8Ym9keT5gLCBhbmQgdGhyb3dzIGFcbiAgICogYFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3JgLiBPbmx5IGFwcGxpZXMgdG8gYW4gb3duZWQgaW5zdGFuY2VcbiAgICogKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQpLiBTZXQgYDBgIHRvIGRpc2FibGUgZmFzdC1mYWlsIGFuZFxuICAgKiByZXN0b3JlIHRoZSBwbGFpbiB3YWl0LW91dC10aGUtcmVhZGluZXNzLXRpbWVvdXQgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxMDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ0RQIGhvc3QuXG4gICAqIERlZmF1bHRzIHRvIGAnbG9jYWxob3N0J2BcbiAgICovXG4gIHJlYWRvbmx5IGhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hcmtzIHtAbGluayBwb3J0fSBhcyB0aGUgQ0RQIHBvcnQgb2YgYSAqKmhhcm5lc3Mtb3duZWQsIGlzb2xhdGVkIGluc3RhbmNlKipcbiAgICogdGhhdCB0aGUgZ2xvYmFsIHNldHVwIGFscmVhZHkgbGF1bmNoZWQgYW5kIHByZXBhcmVkICh2YXVsdCByZWdpc3RlcmVkLFxuICAgKiBwbHVnaW4gZW5hYmxlZCkuXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYW5kIHByb3ZpZGVkIHRvIHRlc3Qgd29ya2VycyB2aWFcbiAgICogdGhlIGZyYW1ld29yaydzIGNvbnRleHQgbWVjaGFuaXNtIChlLmcuIFZpdGVzdCBgcHJvdmlkZWAvYGluamVjdGApLiBXaGVuIHNldCxcbiAgICogdGhlIHdvcmtlciAqKmF0dGFjaGVzKiogdG8gdGhlIG93bmVkIGluc3RhbmNlIG9uIHtAbGluayBwb3J0fSBpbnN0ZWFkIG9mXG4gICAqIGxhdW5jaGluZyBpdHMgb3duLCBhbmQgc2tpcHMgdGhlIHVzZXItc2NvcGUgdmF1bHQtcmVnaXN0cmF0aW9uIHByZWZsaWdodCBcdTIwMTRcbiAgICogdGhlIG93bmVkIGluc3RhbmNlJ3MgdmF1bHQgbGl2ZXMgaW4gYW4gaXNvbGF0ZWQgdXNlci1kYXRhIGNvbmZpZywgbm90IHRoZVxuICAgKiB1c2VyLXNjb3BlIHJlZ2lzdHJ5LiBEbyBub3Qgc2V0IHRoaXMgbWFudWFsbHk7IGZvciBwbGFpbiBhdHRhY2ggbW9kZSB1c2VcbiAgICoge0BsaW5rIHBvcnR9IGFsb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNIYXJuZXNzT3duZWRJbnN0YW5jZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG93bmVkIGRlc2t0b3AgT2JzaWRpYW4gd2luZG93IGlzIHNob3duIG9uIHNjcmVlbi5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgLCB0aGUgaGFybmVzcyBsYXVuY2hlcyB0aGUgb3duZWQgaW5zdGFuY2Ugd2l0aFxuICAgKiBrZWVwLWFsaXZlIENocm9taXVtIGZsYWdzIGFuZCBtb3ZlcyBpdHMgd2luZG93ICoqb2ZmLXNjcmVlbioqIG9uY2UgRWxlY3Ryb24nc1xuICAgKiByZW1vdGUgYnJpZGdlIGlzIGF2YWlsYWJsZSwgc28gdGhlIHJ1biBuZXZlciBzdGVhbHMgZm9jdXMgb3IgcG9wcyBhIHdpbmRvdyBpblxuICAgKiBmcm9udCBvZiB5b3UuIE9mZi1zY3JlZW4gKG5vdCBtaW5pbWl6ZWQpIGtlZXBzIHRoZSByZW5kZXJlciBsaXZlLCBzb1xuICAgKiBgc2V0VGltZW91dGAsIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLCBgOmhvdmVyYCwgYW5kIHRydXN0ZWQgaW5wdXQgYmVoYXZlXG4gICAqIGlkZW50aWNhbGx5IHRvIGEgdmlzaWJsZSB3aW5kb3cuIERlZmF1bHRzIHRvIGB0cnVlYDsgaW50ZWdyYXRpb24gc2V0dXBcbiAgICogZXhwbGljaXRseSBwYXNzZXMgYGZhbHNlYCB0byBhdm9pZCBzdGVhbGluZyBmb2N1cy4gSWdub3JlZCBpbiBhdHRhY2ggbW9kZVxuICAgKiAoe0BsaW5rIHBvcnR9IHNldCkgXHUyMDE0IHRoZSBoYXJuZXNzIG5ldmVyXG4gICAqIG1vdmVzIHRoZSB1c2VyJ3Mgb3duIHJ1bm5pbmcgd2luZG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzT2JzaWRpYW5BcHBWaXNpYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipFbGVjdHJvbiBzaGVsbCoqIChpbnN0YWxsZXIgYnVpbGQpIHRoZSBvd25lZCBpbnN0YW5jZSBydW5zLlxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGV4cGxpY2l0IGAneC55LnonYCwgYCdwdWJsaWMtbGF0ZXN0J2AsIG9yIGAnY2F0YWx5c3QtbGF0ZXN0J2AuXG4gICAqIFRoZSBtYXRjaGluZyBHaXRIdWIgcmVsZWFzZSBpbnN0YWxsZXIgaXMgZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkIHRvIGFcbiAgICogcG9ydGFibGUgc2hlbGwgKGNhY2hlZCBmb3IgcmV1c2UpLiBQdWJsaWMgcmVsZWFzZXMgb25seSBcdTIwMTQgY2F0YWx5c3QgYnVpbGRzXG4gICAqIGhhdmUgbm8gcHVibGljIGluc3RhbGxlci4gSWdub3JlZCB3aGVuIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipPYnNpZGlhbiBhcHAgdmVyc2lvbioqIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy5cbiAgICpcbiAgICogQWNjZXB0cyBhbiBleHBsaWNpdCBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLlxuICAgKiBWZXJzaW9ucyBhdCBvciBhYm92ZSB0aGUgc2hlbGwgdmVyc2lvbiBhcmUgYXBwbGllZCBhcyBhIGNoZWFwIGFzYXIgc3dhcDtcbiAgICogb2xkZXIgdmVyc2lvbnMgdHJhbnNwYXJlbnRseSB1c2UgdGhlIG1hdGNoaW5nIGluc3RhbGxlciBzaGVsbC4gV2hlbiBvbWl0dGVkLFxuICAgKiB0aGUgdXNlcidzIGN1cnJlbnRseS1pbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLiBJZ25vcmVkIHdoZW4ge0BsaW5rIHBvcnR9XG4gICAqIChhdHRhY2ggbW9kZSkgaXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0byAodGhlXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgaXQgd2FzIGxhdW5jaGVkIHdpdGgpLiBXaGVuIHNldCwgdGhlIGhhcm5lc3NcbiAgICogYXR0YWNoZXMgaW5zdGVhZCBvZiBvd25pbmcgYW4gaW5zdGFuY2UsIGFuZCB0aGUgdmVyc2lvbiBrbm9icyBhcmUgaWdub3JlZC5cbiAgICogV2hlbiBvbWl0dGVkLCBhbiBvd25lZCBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5XG4gICAqIGNob3NlbiBmcmVlIHBvcnQgKG5vIHBvcnQgaXMgaGFyZGNvZGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbGF1bmNoIHRoZSBvd25lZCBpbnN0YW5jZSB3aXRoIENocm9taXVtJ3Mgc2FuZGJveCBkaXNhYmxlZFxuICAgKiAoYC0tbm8tc2FuZGJveGApLlxuICAgKlxuICAgKiBOZWVkZWQgdG8gYm9vdCBhbiBvd25lZCBpbnN0YW5jZSBvbiBMaW51eCB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZCBgY2hyb21lLXNhbmRib3hgIGhlbHBlciBcdTIwMTQgZS5nLiBhIHBvcnRhYmxlIHNoZWxsXG4gICAqIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciwgb3IgYSBDSSBydW5uZXIgbGF1bmNoaW5nIGFzIGEgbm9uLXJvb3QgdXNlciwgaW5cbiAgICogd2hpY2ggY2FzZSB0aGUgcmVuZGVyZXIgb3RoZXJ3aXNlIHJlZnVzZXMgdG8gc3RhcnQuIEhhcm1sZXNzIG9uXG4gICAqIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiByZWxhdW5jaGVzIHRoZSB1c2VyJ3MgcnVubmluZyBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFuICoqdW5ydW5uYWJsZSoqIGluc3RhbGxlclx1MjE5NGFwcCB2ZXJzaW9uIHBhaXIgZmFpbHMgZmFzdCBiZWZvcmUgbGF1bmNoLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBhbiBpbnN0YWxsZXIgYmVsb3cgdGhlIGFwcCdzIHJ1biBmbG9vciAodGhlXG4gICAqIG9sZGVzdCBpbnN0YWxsZXIgdGhlIGFwcCdzIGFzYXIgY2FuIGJvb3Qgb24pIHRocm93c1xuICAgKiBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBmcm9tIHZlcnNpb24gcmVzb2x1dGlvbiwgYmVmb3JlIGFueXRoaW5nXG4gICAqIGlzIGRvd25sb2FkZWQgb3IgbGF1bmNoZWQuIFNldCBgZmFsc2VgIHRvIGxldCB0aGUgcGluIHByb2NlZWQgdG8gbGF1bmNoXG4gICAqIGluc3RlYWQgXHUyMDE0IHdoZXJlIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsXG4gICAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmAsIHNlZSB7QGxpbmsgZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzfSlcbiAgICogc3RpbGwgY2F0Y2hlcyB0aGUgYmxhY2stc2NyZWVuIGJvb3QsIGFuZCB0aGUgYCd1bnJ1bm5hYmxlJ2AgdmVyZGljdCBpc1xuICAgKiBzdXJmYWNlZCBhcyBkYXRhIHJhdGhlciB0aGFuIHRocm93bi4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlXG4gICAqIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhICoqc2lsZW50IGFzYXIgZmFsbGJhY2sqKiBmYWlscyBmYXN0IGFmdGVyIGJvb3QuXG4gICAqXG4gICAqIFdoZW4gYW4gYXNhciBpcyBzd2FwcGVkIG9udG8gYW4gaW5zdGFsbGVyIHNoZWxsIHRvbyBvbGQgZm9yIGl0LCB0aGUgaW5zdGFuY2VcbiAgICogbWF5IG5vdCBkZWFkLWJvb3QgXHUyMDE0IGl0IGNhbiBzaWxlbnRseSByZXZlcnQgdG8gdGhlIGluc3RhbGxlcidzIG93biBidW5kbGVkXG4gICAqIGFzYXIgYW5kIHJ1biB0aGUgKip3cm9uZyAob2xkZXIpKiogdmVyc2lvbiBiZWhpbmQgYSBoZWFsdGh5IFVJLiBXaGVuIGB0cnVlYFxuICAgKiAodGhlIGRlZmF1bHQpLCB0aGUgdHJhbnNwb3J0IHZlcmlmaWVzIHRoZSBydW5uaW5nIGFwcCB2ZXJzaW9uIGFnYWluc3QgdGhlIHBpblxuICAgKiBwb3N0LWJvb3QgYW5kIHRocm93cyBgU2lsZW50QXNhckZhbGxiYWNrRXJyb3JgIG9uIGEgbWlzbWF0Y2guIFNldCBgZmFsc2VgIHRvXG4gICAqIGxldCB0aGUgYm9vdCBwcm9jZWVkIFx1MjAxNCB0aGUgbWlzbWF0Y2ggaXMgdGhlbiBzdXJmYWNlZCBhcyBkYXRhICh0aGUgZmFsbGJhY2tcbiAgICogdmVyZGljdCkgcmF0aGVyIHRoYW4gdGhyb3duLiBPbmx5IGFwcGxpZXMgdG8gYW4gb3duZWQgaW5zdGFuY2UgcnVubmluZyBhXG4gICAqIHN3YXBwZWQtaW4gYXNhciAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCwgYW5kIHdoZW4gbm8gYXNhciBpc1xuICAgKiBzd2FwcGVkIFx1MjAxNCB0aGVyZSBpcyBub3RoaW5nIHRvIHZlcmlmeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkgKipuYWcgd2FybmluZ3MqKiBhcmUgZW1pdHRlZC5cbiAgICpcbiAgICogQ292ZXJzICoqYm90aCoqIGNvbXBhdGliaWxpdHkgbmFnczogdGhlIG9mZmxpbmUgaW5zdGFsbGVyXHUyMTk0YXBwIHdhcm5pbmcgKGFcbiAgICogcnVubmFibGUgaW5zdGFsbGVyIGJlbG93IHRoZSByZWNvbW1lbmRlZCBmbG9vcikgYW5kIHRoZSBwb3N0LWJvb3RcbiAgICogcnVudGltZS1FbGVjdHJvbiB3YXJuaW5nIChhIGxpdmUgRWxlY3Ryb24gYmVsb3cgdGhlIGFwcCdzIHJlY29tbWVuZGVkXG4gICAqIG1pbmltdW0pLiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpIGVhY2ggZmlyZXMgdmlhIHRoZSBoYXJuZXNzIGxvZzsgc2V0XG4gICAqIGBmYWxzZWAgdG8gc2lsZW5jZSBib3RoIFx1MjAxNCB0aGUgdmVyZGljdHMgYXJlIHN0aWxsIGNvbXB1dGVkIGFuZCBzdXJmYWNlZCBhc1xuICAgKiBkYXRhIChgY29tcGF0aWJpbGl0eWAgLyBgZWxlY3Ryb25Db21wYXRpYmlsaXR5YCksIG9ubHkgdGhlIGxvZyBpcyBzdXBwcmVzc2VkLlxuICAgKiBEb2VzIG5vdCBhZmZlY3QgdGhlIGAndW5ydW5uYWJsZSdgIHRocm93IChzZWVcbiAgICoge0BsaW5rIHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXJ9KS4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkXG4gICAqIGluc3RhbmNlIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzY3JpbWluYW50IGZvciB0aGUgdHJhbnNwb3J0IHR5cGUuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiAnb2JzaWRpYW4tY2RwJztcbn1cblxuLyoqXG4gKiBEaXNjcmltaW5hdGVkIHVuaW9uIG9mIGFsbCBzdXBwb3J0ZWQgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIFVzZWQgaW4gdml0ZXN0IGBlbnZpcm9ubWVudE9wdGlvbnMub2JzaWRpYW5UcmFuc3BvcnRgIHRvIHNlbGVjdCBhbmRcbiAqIGNvbmZpZ3VyZSB0aGUgdHJhbnNwb3J0IGZvciBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zID1cbiAgfCBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zXG4gIHwgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -302,6 +302,22 @@ export interface ObsidianCdpTransportOptions {
|
|
|
302
302
|
* @default `true`
|
|
303
303
|
*/
|
|
304
304
|
readonly shouldThrowOnIncompatibleInstaller?: boolean;
|
|
305
|
+
/**
|
|
306
|
+
* Whether a **silent asar fallback** fails fast after boot.
|
|
307
|
+
*
|
|
308
|
+
* When an asar is swapped onto an installer shell too old for it, the instance
|
|
309
|
+
* may not dead-boot — it can silently revert to the installer's own bundled
|
|
310
|
+
* asar and run the **wrong (older)** version behind a healthy UI. When `true`
|
|
311
|
+
* (the default), the transport verifies the running app version against the pin
|
|
312
|
+
* post-boot and throws `SilentAsarFallbackError` on a mismatch. Set `false` to
|
|
313
|
+
* let the boot proceed — the mismatch is then surfaced as data (the fallback
|
|
314
|
+
* verdict) rather than thrown. Only applies to an owned instance running a
|
|
315
|
+
* swapped-in asar (ignored in attach mode, {@link port} set, and when no asar is
|
|
316
|
+
* swapped — there is nothing to verify).
|
|
317
|
+
*
|
|
318
|
+
* @default `true`
|
|
319
|
+
*/
|
|
320
|
+
readonly shouldThrowOnSilentAsarFallback?: boolean;
|
|
305
321
|
/**
|
|
306
322
|
* Whether the owned-instance compatibility **nag warnings** are emitted.
|
|
307
323
|
*
|
|
@@ -0,0 +1,37 @@
|
|
|
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 global_setup_no_plugin_exports = {};
|
|
20
|
+
__export(global_setup_no_plugin_exports, {
|
|
21
|
+
getTempVault: () => import_global_setup2.getTempVault,
|
|
22
|
+
setup: () => setup,
|
|
23
|
+
teardown: () => teardown
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(global_setup_no_plugin_exports);
|
|
26
|
+
var import_global_setup = require("./global-setup.cjs");
|
|
27
|
+
var import_global_setup2 = require("./global-setup.cjs");
|
|
28
|
+
const noPluginGlobalSetup = (0, import_global_setup.createSetup)({ installPlugin: false });
|
|
29
|
+
const setup = noPluginGlobalSetup.setup;
|
|
30
|
+
const teardown = noPluginGlobalSetup.teardown;
|
|
31
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
32
|
+
0 && (module.exports = {
|
|
33
|
+
getTempVault,
|
|
34
|
+
setup,
|
|
35
|
+
teardown
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAtbm8tcGx1Z2luLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVml0ZXN0ICoqcGx1Z2luLWxlc3MqKiBnbG9iYWwgc2V0dXAvdGVhcmRvd24gYWRhcHRlci5cbiAqXG4gKiBUaGUgY291bnRlcnBhcnQgdG8gYC4vZ2xvYmFsLXNldHVwLnRzYCAod2hpY2ggaW5zdGFsbHMgYW5kIGVuYWJsZXMgdGhlIGJ1aWx0XG4gKiBwbHVnaW4pLiBUaGlzIG9uZSBydW5zIHtAbGluayBjcmVhdGVTZXR1cH0gd2l0aCBgaW5zdGFsbFBsdWdpbjogZmFsc2VgLCBzbyBpdFxuICogbGF1bmNoZXMgdGhlIG93bmVkIE9ic2lkaWFuIGluc3RhbmNlLCByZWdpc3RlcnMgYW4gKiplbXB0eSoqIHRlbXAgdmF1bHQsIGFuZFxuICogcHVibGlzaGVzIHRoZSBvd25lZC1pbnN0YW5jZSBlbmRwb2ludCB0byB3b3JrZXJzIFx1MjAxNCBidXQgY29waWVzL2VuYWJsZXMgbm9cbiAqIHBsdWdpbi4gUG9pbnQgYSBub24tcGx1Z2luIGNvbnN1bWVyJ3MgYGdsb2JhbFNldHVwYCBzdHJhaWdodCBhdFxuICogYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1uby1wbHVnaW5gOyBubyB3cmFwcGVyIG5lZWRlZC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBzZXR1cCBjb3ZlcmVkIGJ5IGludGVncmF0aW9uIHRlc3RzLCBub3QgdW5pdCB0ZXN0cy4gKi9cblxuaW1wb3J0IHsgY3JlYXRlU2V0dXAgfSBmcm9tICcuL2dsb2JhbC1zZXR1cC5janMnO1xuXG5jb25zdCBub1BsdWdpbkdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KTtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChwbHVnaW4tbGVzczsgbm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIFJlZ2lzdGVycyBhbiBlbXB0eSB0ZW1wIHZhdWx0IGFuZCBwcm92aWRlcyBgdGVtcFZhdWx0UGF0aGAgdG8gdGVzdHMsIHdpdGhvdXRcbiAqIGNvcHlpbmcgb3IgZW5hYmxpbmcgYW55IHBsdWdpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gbm9QbHVnaW5HbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gbm9QbHVnaW5HbG9iYWxTZXR1cC50ZWFyZG93bjtcblxuZXhwb3J0IHsgZ2V0VGVtcFZhdWx0IH0gZnJvbSAnLi9nbG9iYWwtc2V0dXAuY2pzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUEsMEJBQTRCO0FBbUI1QixJQUFBQSx1QkFBNkI7QUFqQjdCLE1BQU0sMEJBQXNCLGlDQUFZLEVBQUUsZUFBZSxNQUFNLENBQUM7QUFRekQsTUFBTSxRQUFRLG9CQUFvQjtBQU9sQyxNQUFNLFdBQVcsb0JBQW9COyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfZ2xvYmFsX3NldHVwIl0KfQo=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* Vitest **plugin-less** global setup/teardown adapter.
|
|
5
|
+
*
|
|
6
|
+
* The counterpart to `./global-setup.ts` (which installs and enables the built
|
|
7
|
+
* plugin). This one runs {@link createSetup} with `installPlugin: false`, so it
|
|
8
|
+
* launches the owned Obsidian instance, registers an **empty** temp vault, and
|
|
9
|
+
* publishes the owned-instance endpoint to workers — but copies/enables no
|
|
10
|
+
* plugin. Point a non-plugin consumer's `globalSetup` straight at
|
|
11
|
+
* `obsidian-integration-testing/vitest-global-setup-no-plugin`; no wrapper needed.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Vitest global setup function (plugin-less; no pre-population).
|
|
15
|
+
*
|
|
16
|
+
* Registers an empty temp vault and provides `tempVaultPath` to tests, without
|
|
17
|
+
* copying or enabling any plugin.
|
|
18
|
+
*/
|
|
19
|
+
export declare const setup: (this: void, project: import("vitest/node").TestProject) => Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Vitest global teardown function.
|
|
22
|
+
*
|
|
23
|
+
* Removes the temporary vault created during setup.
|
|
24
|
+
*/
|
|
25
|
+
export declare const teardown: (this: void) => Promise<void>;
|
|
26
|
+
export { getTempVault } from './global-setup.cjs';
|
|
@@ -40,7 +40,7 @@ function createSetup(options) {
|
|
|
40
40
|
const transportOptions = environmentOptions?.["obsidianTransport"];
|
|
41
41
|
const label = transportOptions?.type ?? "obsidian-cdp";
|
|
42
42
|
try {
|
|
43
|
-
setupResult = await (0, import_global_setup_core.coreSetup)({ populate: options?.populate?.(), transportOptions });
|
|
43
|
+
setupResult = await (0, import_global_setup_core.coreSetup)({ installPlugin: options?.installPlugin, populate: options?.populate?.(), transportOptions });
|
|
44
44
|
} catch (error) {
|
|
45
45
|
(0, import_log.log)(`[integration-setup:${label}] Setup failed (tests for this project will be skipped): ${(0, import_error_to_string.errorToString)(error)}`);
|
|
46
46
|
project.provide("setupError", (0, import_error_to_string.errorToString)(error));
|
|
@@ -71,4 +71,4 @@ const teardown = defaultGlobalSetup.teardown;
|
|
|
71
71
|
setup,
|
|
72
72
|
teardown
|
|
73
73
|
});
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wLXZhdWx0LmNqcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4uL3RyYW5zcG9ydC1vcHRpb25zLmNqcyc7XG5cbmltcG9ydCB7XG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi4vY29udGV4dC1wcm92aWRlci5janMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJy4uL2Vycm9yLXRvLXN0cmluZy5janMnO1xuaW1wb3J0IHtcbiAgY29yZVNldHVwLFxuICBjb3JlVGVhcmRvd25cbn0gZnJvbSAnLi4vZ2xvYmFsLXNldHVwLWNvcmUuY2pzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5janMnO1xuaW1wb3J0IHsgVGVtcFZhdWx0IH0gZnJvbSAnLi4vdGVtcC12YXVsdC5janMnO1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wLXZhdWx0LmNqcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4uL3RyYW5zcG9ydC1vcHRpb25zLmNqcyc7XG5cbmltcG9ydCB7XG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi4vY29udGV4dC1wcm92aWRlci5janMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJy4uL2Vycm9yLXRvLXN0cmluZy5janMnO1xuaW1wb3J0IHtcbiAgY29yZVNldHVwLFxuICBjb3JlVGVhcmRvd25cbn0gZnJvbSAnLi4vZ2xvYmFsLXNldHVwLWNvcmUuY2pzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5janMnO1xuaW1wb3J0IHsgVGVtcFZhdWx0IH0gZnJvbSAnLi4vdGVtcC12YXVsdC5janMnO1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGluamVjdCgndGVtcFZhdWx0UGF0aCcpKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgYnVpbHQgcGx1Z2luIGluIHRoZSB0ZW1wIHZhdWx0LiBEZWZhdWx0c1xuICAgKiB0byBgdHJ1ZWAuIFNldCB0byBgZmFsc2VgIGZvciBhICoqbm9uLXBsdWdpbioqIGNvbnN1bWVyIHRoYXQgb25seSBuZWVkcyBhXG4gICAqIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IHRvIGBldmFsSW5PYnNpZGlhbmAgYWdhaW5zdCBcdTIwMTQgdGhlIG93bmVkIGluc3RhbmNlIGlzXG4gICAqIHN0aWxsIGxhdW5jaGVkIGFuZCBpdHMgZW5kcG9pbnQgcHVibGlzaGVkIHRvIHdvcmtlcnMsIHNvIHJlLWV4cG9ydGluZ1xuICAgKiBgY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KWAgcmV1c2VzIHRoZSBzYW1lIGF0dGFjaCB3aXJpbmcgd2l0aCBub1xuICAgKiBwbHVnaW4gY29weS9lbmFibGUuIFNlZSB7QGxpbmsgQ29yZVNldHVwUGFyYW1zLmluc3RhbGxQbHVnaW59LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbFBsdWdpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZmlsZXMvZm9sZGVycyB0byB3cml0ZSBpbnRvIHRoZSB2YXVsdCBiZWZvcmUgT2JzaWRpYW4gb3BlbnMgaXQgKHNlZVxuICAgKiB7QGxpbmsgQ29yZVNldHVwUGFyYW1zLnBvcHVsYXRlfSkuIEEgdGh1bmsgc28gbGFyZ2UgZml4dHVyZXMgYXJlIGJ1aWx0IGxhemlseSxcbiAgICogb25jZSwgaW4gdGhlIHNldHVwIHByb2Nlc3MuXG4gICAqL1xuICBwb3B1bGF0ZT8odGhpczogdm9pZCk6IFBvcHVsYXRlRmlsZXNQYXJhbXM7XG59XG5cbi8qKlxuICogQSBWaXRlc3QgYGdsb2JhbFNldHVwYCBtb2R1bGUncyBgc2V0dXBgIC8gYHRlYXJkb3duYCBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpdGVzdEdsb2JhbFNldHVwIHtcbiAgc2V0dXAodGhpczogdm9pZCwgcHJvamVjdDogVGVzdFByb2plY3QpOiBQcm9taXNlPHZvaWQ+O1xuICB0ZWFyZG93bih0aGlzOiB2b2lkKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgVml0ZXN0IGdsb2JhbCBzZXR1cC90ZWFyZG93biBwYWlyLCBvcHRpb25hbGx5IHByZS1wb3B1bGF0aW5nIHRoZSB2YXVsdFxuICogYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IFx1MjAxNCB1c2UgdGhpcyBmb3IgYSBkZWRpY2F0ZWQgbGFyZ2UtdmF1bHQvcGVyZm9ybWFuY2VcbiAqIHByb2plY3QuIFRoZSBwbGFpbiB7QGxpbmsgc2V0dXB9IC8ge0BsaW5rIHRlYXJkb3dufSBleHBvcnRzIGFyZSB0aGUgbm8tcG9wdWxhdGVcbiAqIGNhc2UgKGBjcmVhdGVTZXR1cCgpYCkuIFBhc3MgYHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfWAgZm9yIGEgbm9uLXBsdWdpbiBjb25zdW1lclxuICogdGhhdCBvbmx5IG5lZWRzIGEgcmVnaXN0ZXJlZCwgZW1wdHkgdmF1bHQgKHNlZSB7QGxpbmsgQ3JlYXRlU2V0dXBPcHRpb25zLmluc3RhbGxQbHVnaW59KS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFNldHVwIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgYHNldHVwYCBhbmQgYHRlYXJkb3duYCBmdW5jdGlvbnMgdG8gcmUtZXhwb3J0IGZyb20gYSBgZ2xvYmFsU2V0dXBgIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNldHVwKG9wdGlvbnM/OiBDcmVhdGVTZXR1cE9wdGlvbnMpOiBWaXRlc3RHbG9iYWxTZXR1cCB7XG4gIGxldCBzZXR1cFJlc3VsdDogQ29yZVNldHVwUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7IHNldHVwLCB0ZWFyZG93biB9O1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW52aXJvbm1lbnRPcHRpb25zID0gcHJvamVjdC5jb25maWcuZW52aXJvbm1lbnRPcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRyYW5zcG9ydE9wdGlvbnMgPSBlbnZpcm9ubWVudE9wdGlvbnM/Llsnb2JzaWRpYW5UcmFuc3BvcnQnXSBhcyBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbGFiZWwgPSB0cmFuc3BvcnRPcHRpb25zPy50eXBlID8/ICdvYnNpZGlhbi1jZHAnO1xuXG4gICAgdHJ5IHtcbiAgICAgIHNldHVwUmVzdWx0ID0gYXdhaXQgY29yZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogb3B0aW9ucz8uaW5zdGFsbFBsdWdpbiwgcG9wdWxhdGU6IG9wdGlvbnM/LnBvcHVsYXRlPy4oKSwgdHJhbnNwb3J0T3B0aW9ucyB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gQ2F0Y2ggc2V0dXAgZXJyb3JzIHNvIHRoYXQgb3RoZXIgcHJvamVjdHMnIHRlc3RzIGNhbiBzdGlsbCBydW4uXG4gICAgICAvLyBJbmRpdmlkdWFsIHRlc3RzIGluIHRoaXMgcHJvamVjdCB3aWxsIGZhaWwgd2l0aCB0aGUgc3RvcmVkIGVycm9yXG4gICAgICAvLyBXaGVuIHRoZXkgdHJ5IHRvIGluamVjdCB0aGUgdGVtcCB2YXVsdCBwYXRoLlxuICAgICAgbG9nKGBbaW50ZWdyYXRpb24tc2V0dXA6JHtsYWJlbH1dIFNldHVwIGZhaWxlZCAodGVzdHMgZm9yIHRoaXMgcHJvamVjdCB3aWxsIGJlIHNraXBwZWQpOiAke2Vycm9yVG9TdHJpbmcoZXJyb3IpfWApO1xuICAgICAgcHJvamVjdC5wcm92aWRlKCdzZXR1cEVycm9yJywgZXJyb3JUb1N0cmluZyhlcnJvcikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb2plY3QucHJvdmlkZSgnb2JzaWRpYW5UcmFuc3BvcnQnLCBzZXR1cFJlc3VsdC50cmFuc3BvcnRPcHRpb25zKTtcbiAgICBwcm9qZWN0LnByb3ZpZGUoJ3RlbXBWYXVsdFBhdGgnLCBzZXR1cFJlc3VsdC50ZW1wVmF1bHQucGF0aCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB0ZWFyZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBjb3JlVGVhcmRvd24oc2V0dXBSZXN1bHQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdGVtcG9yYXJ5IHZhdWx0IHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBWYXVsdCgpOiBUZW1wVmF1bHQge1xuICBjb25zdCB0ZW1wVmF1bHRQYXRoID0gaW5qZWN0KCd0ZW1wVmF1bHRQYXRoJyk7XG4gIGNvbnN0IHNldHVwRXJyb3JNZXNzYWdlID0gaW5qZWN0KCdzZXR1cEVycm9yJyk7XG4gIGlmIChzZXR1cEVycm9yTWVzc2FnZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW50ZWdyYXRpb24gc2V0dXAgZmFpbGVkIFx1MjAxNCBjYW5ub3QgZ2V0IHRlbXAgdmF1bHQ6ICR7c2V0dXBFcnJvck1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wVmF1bHQodGVtcFZhdWx0UGF0aCk7XG59XG5cbmNvbnN0IGRlZmF1bHRHbG9iYWxTZXR1cCA9IGNyZWF0ZVNldHVwKCk7XG5cbi8qKlxuICogVml0ZXN0IGdsb2JhbCBzZXR1cCBmdW5jdGlvbiAobm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIENvcGllcyB0aGUgYnVpbHQgcGx1Z2luIGludG8gYSB0ZW1wb3JhcnkgdmF1bHQsIGVuYWJsZXMgaXQgdmlhIHRoZSBPYnNpZGlhbiBDTEksXG4gKiBhbmQgcHJvdmlkZXMgYHRlbXBWYXVsdFBhdGhgIHRvIHRlc3RzLlxuICpcbiAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIFZpdGVzdCBwcm9qZWN0LlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBzZXR1cCBjb21wbGV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGRlZmF1bHRHbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLG9CQUF1QjtBQU12Qiw4QkFHTztBQUNQLDZCQUE4QjtBQUM5QiwrQkFHTztBQUNQLGlCQUFvQjtBQUNwQix3QkFBMEI7QUFBQSxJQUUxQixxREFBNEIsVUFBTSxzQkFBTyxtQkFBbUIsQ0FBQztBQUFBLElBQzdELDhDQUFxQixVQUFNLHNCQUFPLGVBQWUsQ0FBQztBQTBDM0MsU0FBUyxZQUFZLFNBQWlEO0FBQzNFLE1BQUk7QUFFSixTQUFPLEVBQUUsT0FBQUEsUUFBTyxVQUFBQyxVQUFTO0FBRXpCLGlCQUFlRCxPQUFNLFNBQXFDO0FBQ3hELFVBQU0scUJBQXFCLFFBQVEsT0FBTztBQUMxQyxVQUFNLG1CQUFtQixxQkFBcUIsbUJBQW1CO0FBQ2pFLFVBQU0sUUFBUSxrQkFBa0IsUUFBUTtBQUV4QyxRQUFJO0FBQ0Ysb0JBQWMsVUFBTSxvQ0FBVSxFQUFFLGVBQWUsU0FBUyxlQUFlLFVBQVUsU0FBUyxXQUFXLEdBQUcsaUJBQWlCLENBQUM7QUFBQSxJQUM1SCxTQUFTLE9BQWdCO0FBSXZCLDBCQUFJLHNCQUFzQixLQUFLLGdFQUE0RCxzQ0FBYyxLQUFLLENBQUMsRUFBRTtBQUNqSCxjQUFRLFFBQVEsa0JBQWMsc0NBQWMsS0FBSyxDQUFDO0FBQ2xEO0FBQUEsSUFDRjtBQUVBLFlBQVEsUUFBUSxxQkFBcUIsWUFBWSxnQkFBZ0I7QUFDakUsWUFBUSxRQUFRLGlCQUFpQixZQUFZLFVBQVUsSUFBSTtBQUFBLEVBQzdEO0FBRUEsaUJBQWVDLFlBQTBCO0FBQ3ZDLGNBQU0sdUNBQWEsV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7QUFPTyxTQUFTLGVBQTBCO0FBQ3hDLFFBQU0sb0JBQWdCLHNCQUFPLGVBQWU7QUFDNUMsUUFBTSx3QkFBb0Isc0JBQU8sWUFBWTtBQUM3QyxNQUFJLG1CQUFtQjtBQUNyQixVQUFNLElBQUksTUFBTSwwREFBcUQsaUJBQWlCLEVBQUU7QUFBQSxFQUMxRjtBQUNBLFNBQU8sSUFBSSw0QkFBVSxhQUFhO0FBQ3BDO0FBRUEsTUFBTSxxQkFBcUIsWUFBWTtBQVdoQyxNQUFNLFFBQVEsbUJBQW1CO0FBU2pDLE1BQU0sV0FBVyxtQkFBbUI7IiwKICAibmFtZXMiOiBbInNldHVwIiwgInRlYXJkb3duIl0KfQo=
|
|
@@ -13,6 +13,15 @@ import { TempVault } from '../temp-vault.cjs';
|
|
|
13
13
|
* Options for {@link createSetup}.
|
|
14
14
|
*/
|
|
15
15
|
export interface CreateSetupOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Whether to install and enable the built plugin in the temp vault. Defaults
|
|
18
|
+
* to `true`. Set to `false` for a **non-plugin** consumer that only needs a
|
|
19
|
+
* registered, empty vault to `evalInObsidian` against — the owned instance is
|
|
20
|
+
* still launched and its endpoint published to workers, so re-exporting
|
|
21
|
+
* `createSetup({ installPlugin: false })` reuses the same attach wiring with no
|
|
22
|
+
* plugin copy/enable. See {@link CoreSetupParams.installPlugin}.
|
|
23
|
+
*/
|
|
24
|
+
readonly installPlugin?: boolean;
|
|
16
25
|
/**
|
|
17
26
|
* Returns files/folders to write into the vault before Obsidian opens it (see
|
|
18
27
|
* {@link CoreSetupParams.populate}). A thunk so large fixtures are built lazily,
|
|
@@ -31,7 +40,8 @@ export interface VitestGlobalSetup {
|
|
|
31
40
|
* Creates a Vitest global setup/teardown pair, optionally pre-populating the vault
|
|
32
41
|
* before Obsidian opens it — use this for a dedicated large-vault/performance
|
|
33
42
|
* project. The plain {@link setup} / {@link teardown} exports are the no-populate
|
|
34
|
-
* case (`createSetup()`).
|
|
43
|
+
* case (`createSetup()`). Pass `{ installPlugin: false }` for a non-plugin consumer
|
|
44
|
+
* that only needs a registered, empty vault (see {@link CreateSetupOptions.installPlugin}).
|
|
35
45
|
*
|
|
36
46
|
* @param options - Setup options.
|
|
37
47
|
* @returns The `setup` and `teardown` functions to re-export from a `globalSetup` module.
|
|
@@ -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,24 @@
|
|
|
1
|
+
import { compareVersions } from "./obsidian-version.mjs";
|
|
2
|
+
function checkAsarFallback(params) {
|
|
3
|
+
const { requestedVersion, runningApiVersion } = params;
|
|
4
|
+
if (requestedVersion === void 0 || runningApiVersion === void 0) {
|
|
5
|
+
return {
|
|
6
|
+
requestedVersion: requestedVersion ?? null,
|
|
7
|
+
runningApiVersion: runningApiVersion ?? null,
|
|
8
|
+
tier: "unknown"
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
if (compareVersions(runningApiVersion, requestedVersion) === 0) {
|
|
12
|
+
return { requestedVersion, runningApiVersion, tier: "match" };
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
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.`,
|
|
16
|
+
requestedVersion,
|
|
17
|
+
runningApiVersion,
|
|
18
|
+
tier: "fallback"
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export {
|
|
22
|
+
checkAsarFallback
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzYXItZmFsbGJhY2stZGV0ZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSB2ZXJkaWN0IG9uIHdoZXRoZXIgYSBib290ZWQgb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgaXMgYWN0dWFsbHkgcnVubmluZ1xuICogdGhlIHBpbm5lZCBhcHAgKGFzYXIpIHZlcnNpb24sIG9yICoqc2lsZW50bHkgZmVsbCBiYWNrKiogdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyLiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGBcbiAqICh3aGljaCByZWFkcyB0aGUgbGl2ZSB2ZXJzaW9uIG92ZXIgQ0RQIGFuZCBpcyBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZVxuICogdGllciBsb2dpYyBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGBpbnN0YWxsZXItY29tcGF0aWJpbGl0eWAgL1xuICogYGVsZWN0cm9uLWNvbXBhdGliaWxpdHlgIC8gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYCBzcGxpdC5cbiAqXG4gKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCBiZWxvdyBpdHMgcmVhbCBib290IGZsb29yLCB0aGVcbiAqIHJlbmRlcmVyIGRvZXMgbm90IGFsd2F5cyBkZWFkLWJvb3QgKHRoZSBibGFjayBzY3JlZW4gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYFxuICogY2F0Y2hlcykuIFNvbWUgYXBwIHZlcnNpb25zIGluc3RlYWQgKipzaWxlbnRseSByZXZlcnQgdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyKiogYW5kIHJlbmRlciBhIHBlcmZlY3RseSBoZWFsdGh5IFVJIG9mIHRoZSAqd3JvbmcgKG9sZGVyKSogdmVyc2lvbi5cbiAqIFRoZSBkZWFkLWJvb3QgZGV0ZWN0b3IgcmVhZHMgdGhhdCBoZWFsdGh5IFVJIGFzIGEgZmFsc2UtcG9zaXRpdmUgXCJydW5uYWJsZVwiIFx1MjAxNFxuICogZXhhY3RseSBob3cgT2JzaWRpYW4gYDEuMTMuMGAgb24gaW5zdGFsbGVyIGAxLjEuOWAgd2FzIGZpcnN0IG1pcy1tZWFzdXJlZCAoaXRcbiAqIHJlcG9ydHMgYGFwaVZlcnNpb25gIGAxLjEuOWAsIG5vdCBgMS4xMy4wYCkuXG4gKlxuICogVGhlIGRpc2NyaW1pbmF0b3IgaXMgdGhlICoqcnVubmluZyoqIGFwcCB2ZXJzaW9uLCByZWFkIGxpdmUgcG9zdC1ib290XG4gKiAoYGlwY1JlbmRlcmVyLnNlbmRTeW5jKCd2ZXJzaW9uJylgIC8gYG9ic2lkaWFuTW9kdWxlLmFwaVZlcnNpb25gLCB3aGljaCBib3RoXG4gKiB0cmFjayB0aGUgYXNhciBhY3R1YWxseSBydW5uaW5nKS4gVGhpcyB2ZXJkaWN0IGNvbXBhcmVzIGl0IHRvIHRoZSBwaW5uZWRcbiAqIHZlcnNpb246IGVxdWFsIFx1MjFEMiBgJ21hdGNoJ2AsIGRpZmZlcmVudCBcdTIxRDIgYCdmYWxsYmFjaydgICh0aGUgcGluIHdhcyBub3QgaG9ub3JlZCksXG4gKiBhbmQgYCd1bmtub3duJ2Agd2hlbiBlaXRoZXIgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSAobm8gYXNhciB3YXMgc3dhcHBlZCwgb3IgdGhlXG4gKiBsaXZlIHZlcnNpb24gY291bGQgbm90IGJlIHJlYWQpIFx1MjAxNCBpbiB3aGljaCBjYXNlIG5vdGhpbmcgaXMgdGhyb3duIG9yIHdhcm5lZC5cbiAqL1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24ubWpzJztcblxuLyoqXG4gKiBUaGUgc2lsZW50LWFzYXItZmFsbGJhY2sgdmVyZGljdCBmb3IgYSBib290ZWQgb3duZWQgaW5zdGFuY2UsIGNhcnJpZWQgYXMgZGF0YVxuICogb24gdGhlIHRyYW5zcG9ydCAvIGNvbm5lY3Rpb24gcmVzdWx0IHNvIGNvbnN1bWVycyBjYW4gYXNzZXJ0IG9uIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzYXJGYWxsYmFjayB7XG4gIC8qKiBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uLCBwcmVzZW50IGZvciB0aGUgYCdmYWxsYmFjaydgIHRpZXIuICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBwaW5uZWQgYXBwIChhc2FyKSB2ZXJzaW9uIHRoYXQgd2FzIHJlcXVlc3RlZCwgb3IgYG51bGxgIHdoZW4gbm9uZS4gKi9cbiAgcmVhZG9ubHkgcmVxdWVzdGVkVmVyc2lvbjogbnVsbCB8IHN0cmluZztcblxuICAvKiogVGhlIGFwcCAoYXNhcikgdmVyc2lvbiBhY3R1YWxseSBydW5uaW5nLCBvciBgbnVsbGAgd2hlbiB1bnJlYWRhYmxlLiAqL1xuICByZWFkb25seSBydW5uaW5nQXBpVmVyc2lvbjogbnVsbCB8IHN0cmluZztcblxuICAvKiogVGhlIHJlc29sdmVkIGZhbGxiYWNrIHRpZXIuICovXG4gIHJlYWRvbmx5IHRpZXI6IEFzYXJGYWxsYmFja1RpZXI7XG59XG5cbi8qKlxuICogVGhlIHNpbGVudC1hc2FyLWZhbGxiYWNrIHRpZXIgZm9yIGEgYm9vdGVkIG93bmVkIGluc3RhbmNlLlxuICpcbiAqIC0gYCdtYXRjaCdgIFx1MjAxNCB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBlcXVhbHMgdGhlIHBpbm5lZCB2ZXJzaW9uOyB0aGUgcGluIHdhc1xuICogICBob25vcmVkLlxuICogLSBgJ2ZhbGxiYWNrJ2AgXHUyMDE0IHRoZSBydW5uaW5nIGFwcCB2ZXJzaW9uIGRpZmZlcnMgZnJvbSB0aGUgcGlubmVkIHZlcnNpb247IHRoZVxuICogICBpbnN0YWxsZXIgc2lsZW50bHkgcmFuIGEgZGlmZmVyZW50IChpdHMgb3duIGJ1bmRsZWQpIGFzYXIgaW5zdGVhZCBvZiB0aGUgcGluLlxuICogLSBgJ3Vua25vd24nYCBcdTIwMTQgY2Fubm90IGJlIGRldGVybWluZWQgKG5vIGFzYXIgd2FzIHN3YXBwZWQsIHNvIHRoZXJlIGlzIG5vIHBpbiB0b1xuICogICB2ZXJpZnksIG9yIHRoZSBsaXZlIHJ1bm5pbmcgdmVyc2lvbiBjb3VsZCBub3QgYmUgcmVhZCkuXG4gKi9cbmV4cG9ydCB0eXBlIEFzYXJGYWxsYmFja1RpZXIgPSAnZmFsbGJhY2snIHwgJ21hdGNoJyB8ICd1bmtub3duJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2hlY2tBc2FyRmFsbGJhY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrQXNhckZhbGxiYWNrUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwaW5uZWQgT2JzaWRpYW4gYXBwIChhc2FyKSB2ZXJzaW9uIHRoZSBvd25lZCBpbnN0YW5jZSB3YXMgYXNrZWQgdG8gcnVuLFxuICAgKiBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIGFzYXIgd2FzIHN3YXBwZWQgKHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gdmVyaWZ5KS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RlZFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCAoYXNhcikgdmVyc2lvbiB0aGUgaW5zdGFuY2UgaXMgYWN0dWFsbHkgcnVubmluZywgcmVhZCBsaXZlXG4gICAqIHBvc3QtYm9vdCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBpdCBjb3VsZCBub3QgYmUgcmVhZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5pbmdBcGlWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHNpbGVudC1hc2FyLWZhbGxiYWNrIHZlcmRpY3QgZm9yIGEgYm9vdGVkIG93bmVkIGluc3RhbmNlLlxuICpcbiAqIE9ubHkgYCdmYWxsYmFjaydgIHdhcnJhbnRzIGFjdGlvbiAoYSB0aHJvdyAvIHdhcm5pbmcpOyBgJ21hdGNoJ2AgYW5kIGAndW5rbm93bidgXG4gKiBhcmUgc2lsZW50LiBDb21wYXJpc29uIGlzIGEgcHVyZSBgeC55LnpgIHZlcnNpb24gY29tcGFyZSBcdTIwMTQgbm8gSS9PLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGlubmVkIHZlcnNpb24gYW5kIHRoZSBsaXZlIHJ1bm5pbmcgdmVyc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBmYWxsYmFjayB2ZXJkaWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBc2FyRmFsbGJhY2socGFyYW1zOiBDaGVja0FzYXJGYWxsYmFja1BhcmFtcyk6IEFzYXJGYWxsYmFjayB7XG4gIGNvbnN0IHsgcmVxdWVzdGVkVmVyc2lvbiwgcnVubmluZ0FwaVZlcnNpb24gfSA9IHBhcmFtcztcblxuICBpZiAocmVxdWVzdGVkVmVyc2lvbiA9PT0gdW5kZWZpbmVkIHx8IHJ1bm5pbmdBcGlWZXJzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWVzdGVkVmVyc2lvbjogcmVxdWVzdGVkVmVyc2lvbiA/PyBudWxsLFxuICAgICAgcnVubmluZ0FwaVZlcnNpb246IHJ1bm5pbmdBcGlWZXJzaW9uID8/IG51bGwsXG4gICAgICB0aWVyOiAndW5rbm93bidcbiAgICB9O1xuICB9XG5cbiAgaWYgKGNvbXBhcmVWZXJzaW9ucyhydW5uaW5nQXBpVmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbikgPT09IDApIHtcbiAgICByZXR1cm4geyByZXF1ZXN0ZWRWZXJzaW9uLCBydW5uaW5nQXBpVmVyc2lvbiwgdGllcjogJ21hdGNoJyB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiBgT2JzaWRpYW4gd2FzIHBpbm5lZCB0byBhcHAgdmVyc2lvbiAke3JlcXVlc3RlZFZlcnNpb259IGJ1dCBpcyBhY3R1YWxseSBydW5uaW5nICR7cnVubmluZ0FwaVZlcnNpb259IFx1MjAxNCBgXG4gICAgICArICd0aGUgaW5zdGFsbGVyIHNpbGVudGx5IGZlbGwgYmFjayB0byBpdHMgb3duIGJ1bmRsZWQgYXNhciBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlIHBpbm5lZCB2ZXJzaW9uLiAnXG4gICAgICArIGBQaW4gYW4gb2JzaWRpYW5JbnN0YWxsZXJWZXJzaW9uIGF0IG9yIGFib3ZlICR7cmVxdWVzdGVkVmVyc2lvbn0ncyBydW4gZmxvb3Igc28gdGhlIHBpbiBhY3R1YWxseSBydW5zLmAsXG4gICAgcmVxdWVzdGVkVmVyc2lvbixcbiAgICBydW5uaW5nQXBpVmVyc2lvbixcbiAgICB0aWVyOiAnZmFsbGJhY2snXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUEwQkEsU0FBUyx1QkFBdUI7QUEwRHpCLFNBQVMsa0JBQWtCLFFBQStDO0FBQy9FLFFBQU0sRUFBRSxrQkFBa0Isa0JBQWtCLElBQUk7QUFFaEQsTUFBSSxxQkFBcUIsVUFBYSxzQkFBc0IsUUFBVztBQUNyRSxXQUFPO0FBQUEsTUFDTCxrQkFBa0Isb0JBQW9CO0FBQUEsTUFDdEMsbUJBQW1CLHFCQUFxQjtBQUFBLE1BQ3hDLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUVBLE1BQUksZ0JBQWdCLG1CQUFtQixnQkFBZ0IsTUFBTSxHQUFHO0FBQzlELFdBQU8sRUFBRSxrQkFBa0IsbUJBQW1CLE1BQU0sUUFBUTtBQUFBLEVBQzlEO0FBRUEsU0FBTztBQUFBLElBQ0wsU0FBUyxzQ0FBc0MsZ0JBQWdCLDRCQUE0QixpQkFBaUIsdUpBRXpELGdCQUFnQjtBQUFBLElBQ25FO0FBQUEsSUFDQTtBQUFBLElBQ0EsTUFBTTtBQUFBLEVBQ1I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -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[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
function checkAvdExists(params) {
|
|
2
|
+
return listAvailableAvds(params.avdListOutput).includes(params.avdName);
|
|
3
|
+
}
|
|
4
|
+
function listAvailableAvds(avdListOutput) {
|
|
5
|
+
return avdListOutput.split("\n").map((line) => line.trim()).filter((line) => line.length > 0 && !line.includes("|"));
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
checkAvdExists,
|
|
9
|
+
listAvailableAvds
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F2ZC1saXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBoZWxwZXJzIGZvciBwYXJzaW5nIGBlbXVsYXRvciAtbGlzdC1hdmRzYCBvdXRwdXQ6IGV4dHJhY3RpbmcgdGhlXG4gKiBhdmFpbGFibGUgQVZEIG5hbWVzIGFuZCBjaGVja2luZyB3aGV0aGVyIGEgcmVxdWVzdGVkIEFWRCBleGlzdHMuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGB0cmFuc3BvcnQtZmFjdG9yeWAgKGV4Y2x1ZGVkIGZyb21cbiAqIHVuaXQgdGVzdHMpIHNvIHRoZSBwYXJzaW5nIHN0YXlzIHVuaXQtdGVzdGFibGUgXHUyMDE0IHRoZSBmYWN0b3J5IGl0c2VsZiBzaGVsbHMgb3V0XG4gKiB0byB0aGUgYGVtdWxhdG9yYCBiaW5hcnkuXG4gKi9cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2hlY2tBdmRFeGlzdHN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrQXZkRXhpc3RzUGFyYW1zIHtcbiAgLyoqIFJhdyBzdGRvdXQgb2YgYGVtdWxhdG9yIC1saXN0LWF2ZHNgIFx1MjAxNCBvbmUgQVZEIG5hbWUgcGVyIGxpbmUuICovXG4gIHJlYWRvbmx5IGF2ZExpc3RPdXRwdXQ6IHN0cmluZztcblxuICAvKiogVGhlIEFWRCBuYW1lIHRvIGxvb2sgZm9yLiAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgZ2l2ZW4gQVZEIGV4aXN0cywgZnJvbSB0aGUgcmF3IHN0ZG91dCBvZlxuICogYGVtdWxhdG9yIC1saXN0LWF2ZHNgLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbGlzdGluZyBvdXRwdXQgYW5kIHRoZSBBVkQgbmFtZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBBVkQgbmFtZSBhcHBlYXJzIGluIHRoZSBsaXN0aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBdmRFeGlzdHMocGFyYW1zOiBDaGVja0F2ZEV4aXN0c1BhcmFtcyk6IGJvb2xlYW4ge1xuICByZXR1cm4gbGlzdEF2YWlsYWJsZUF2ZHMocGFyYW1zLmF2ZExpc3RPdXRwdXQpLmluY2x1ZGVzKHBhcmFtcy5hdmROYW1lKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGF2YWlsYWJsZSBBVkQgbmFtZXMgZnJvbSB0aGUgcmF3IHN0ZG91dCBvZiBgZW11bGF0b3IgLWxpc3QtYXZkc2AuXG4gKlxuICogVGhlIGNvbW1hbmQgcHJpbnRzIG9uZSBBVkQgbmFtZSBwZXIgbGluZTsgYmxhbmsgbGluZXMgYW5kIHN1cnJvdW5kaW5nXG4gKiB3aGl0ZXNwYWNlIGFyZSBpZ25vcmVkLiBTb21lIGVtdWxhdG9yIGJ1aWxkcyBlbWl0IGFuIGluZm9ybWF0aW9uYWwgYmFubmVyXG4gKiAoZS5nLiBgSU5GTyAgICB8IC4uLmApIHRvIHN0ZG91dCBiZWZvcmUgdGhlIGxpc3QsIHNvIHRob3NlIGxpbmVzIGFyZSBkcm9wcGVkLlxuICpcbiAqIEBwYXJhbSBhdmRMaXN0T3V0cHV0IC0gUmF3IHN0ZG91dCBvZiBgZW11bGF0b3IgLWxpc3QtYXZkc2AuXG4gKiBAcmV0dXJucyBUaGUgYXZhaWxhYmxlIEFWRCBuYW1lcywgaW4gbGlzdGVkIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdEF2YWlsYWJsZUF2ZHMoYXZkTGlzdE91dHB1dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gYXZkTGlzdE91dHB1dFxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSlcbiAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLmxlbmd0aCA+IDAgJiYgIWxpbmUuaW5jbHVkZXMoJ3wnKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUE2Qk8sU0FBUyxlQUFlLFFBQXVDO0FBQ3BFLFNBQU8sa0JBQWtCLE9BQU8sYUFBYSxFQUFFLFNBQVMsT0FBTyxPQUFPO0FBQ3hFO0FBWU8sU0FBUyxrQkFBa0IsZUFBaUM7QUFDakUsU0FBTyxjQUNKLE1BQU0sSUFBSSxFQUNWLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLEVBQ3pCLE9BQU8sQ0FBQyxTQUFTLEtBQUssU0FBUyxLQUFLLENBQUMsS0FBSyxTQUFTLEdBQUcsQ0FBQztBQUM1RDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -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.mjs';
|
|
21
22
|
import type { InstallerCompatibilityTier } from './installer-compatibility.mjs';
|
|
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.mjs';
|
|
|
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'`
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
function resolveAsarFallbackAction(params) {
|
|
2
|
+
const { shouldThrowOnSilentAsarFallback, shouldWarnOnCompatibilityIssues, tier } = params;
|
|
3
|
+
if (tier !== "fallback") {
|
|
4
|
+
return "silent";
|
|
5
|
+
}
|
|
6
|
+
if (shouldThrowOnSilentAsarFallback) {
|
|
7
|
+
return "throw";
|
|
8
|
+
}
|
|
9
|
+
return shouldWarnOnCompatibilityIssues ? "warn" : "silent";
|
|
10
|
+
}
|
|
1
11
|
function resolveInstallerCompatibilityAction(params) {
|
|
2
12
|
const { shouldThrowOnIncompatibleInstaller, shouldWarnOnCompatibilityIssues, tier } = params;
|
|
3
13
|
if (tier === "unrunnable") {
|
|
@@ -14,12 +24,17 @@ function resolveInstallerCompatibilityAction(params) {
|
|
|
14
24
|
function resolveShouldThrowOnIncompatibleInstaller(shouldThrowOnIncompatibleInstaller) {
|
|
15
25
|
return shouldThrowOnIncompatibleInstaller ?? true;
|
|
16
26
|
}
|
|
27
|
+
function resolveShouldThrowOnSilentAsarFallback(shouldThrowOnSilentAsarFallback) {
|
|
28
|
+
return shouldThrowOnSilentAsarFallback ?? true;
|
|
29
|
+
}
|
|
17
30
|
function resolveShouldWarnOnCompatibilityIssues(shouldWarnOnCompatibilityIssues) {
|
|
18
31
|
return shouldWarnOnCompatibilityIssues ?? true;
|
|
19
32
|
}
|
|
20
33
|
export {
|
|
34
|
+
resolveAsarFallbackAction,
|
|
21
35
|
resolveInstallerCompatibilityAction,
|
|
22
36
|
resolveShouldThrowOnIncompatibleInstaller,
|
|
37
|
+
resolveShouldThrowOnSilentAsarFallback,
|
|
23
38
|
resolveShouldWarnOnCompatibilityIssues
|
|
24
39
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbXBhdGliaWxpdHktb3B0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgcmVzb2x1dGlvbiBvZiB0aGUgdHdvIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkga25vYnMgXHUyMDE0IHdoZXRoZXIgdGhlXG4gKiBpbnN0YWxsZXJcdTIxOTRhcHAgLyBydW50aW1lLUVsZWN0cm9uIG5hZyB3YXJuaW5ncyBhcmUgZW1pdHRlZCwgYW5kIHdoZXRoZXIgYW5cbiAqIGAndW5ydW5uYWJsZSdgIGluc3RhbGxlclx1MjE5NGFwcCBwYWlyIGZhaWxzIGZhc3Qgd2l0aFxuICoge0BsaW5rIEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcn0gYmVmb3JlIGxhdW5jaC5cbiAqXG4gKiBCb3RoIGRlZmF1bHQgdG8gdG9kYXkncyBiZWhhdmlvciAoYHRydWVgKTogd2FybmluZ3Mgb24sIGFuZCBhbiB1bnJ1bm5hYmxlIHBpblxuICogdGhyb3dzIHByb2FjdGl2ZWx5LiBTZXR0aW5nIGBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzYCB0byBgZmFsc2VgXG4gKiBzaWxlbmNlcyBib3RoIG5hZ3MgKHRoZSB2ZXJkaWN0cyBhcmUgc3RpbGwgY29tcHV0ZWQgYW5kIHN1cmZhY2VkIGFzIGRhdGEpO1xuICogc2V0dGluZyBgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcmAgdG8gYGZhbHNlYCBsZXRzIGFuIHVucnVubmFibGUgcGluXG4gKiBwcm9jZWVkIHRvIGxhdW5jaCwgd2hlcmUgdGhlIHJlYWN0aXZlIGRlYWQtYm9vdCBmYXN0LWZhaWxcbiAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmApIHN0aWxsIGNhdGNoZXMgaXQuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGxhdW5jaCBjb2RlIChgdHJhbnNwb3J0LWZhY3RvcnlgLFxuICogYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGAsIGJvdGggZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKSBzbyB0aGUgZGVmYXVsdFxuICogcmVzb2x1dGlvbiBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGB2aXNpYmlsaXR5LnRzYCAvXG4gKiBgYXBwaXVtLXNlc3Npb24tY29uZmlnLnRzYCBwdXJlLXJlc29sdmVyIHNwbGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXNhckZhbGxiYWNrVGllciB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmltcG9ydCB0eXBlIHsgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXIgfSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5Lm1qcyc7XG5cbi8qKlxuICogVGhlIGFjdGlvbiB0byB0YWtlIGZvciBhIHJlc29sdmVkIHNpbGVudC1hc2FyLWZhbGxiYWNrIHZlcmRpY3QsIGdpdmVuIHRoZVxuICogdGhyb3cvd2FybiBrbm9icy5cbiAqXG4gKiAtIGAndGhyb3cnYCBcdTIwMTQgdGhlIHZlcmRpY3QgaXMgYCdmYWxsYmFjaydgIGFuZCB0aGUgdGhyb3cgaXMgZW5hYmxlZDsgdGhlIGNhbGxlclxuICogICB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYC5cbiAqIC0gYCd3YXJuJ2AgXHUyMDE0IHRoZSB2ZXJkaWN0IGlzIGAnZmFsbGJhY2snYCBidXQgdGhlIHRocm93IGlzIGRpc2FibGVkIGFuZCB3YXJuaW5nc1xuICogICBhcmUgb247IHRoZSBjYWxsZXIgbG9ncyB0aGUgZmFsbGJhY2sgd2FybmluZyBhbmQgbGV0cyB0aGUgYm9vdCBwcm9jZWVkICh0aGVcbiAqICAgdmVyZGljdCBpcyBzdGlsbCBzdXJmYWNlZCBhcyBkYXRhKS5cbiAqIC0gYCdzaWxlbnQnYCBcdTIwMTQgbm90aGluZyB0byBkbyAoYCdtYXRjaCdgIC8gYCd1bmtub3duJ2AsIG9yIGEgc3VwcHJlc3NlZCBmYWxsYmFjaykuXG4gKi9cbmV4cG9ydCB0eXBlIEFzYXJGYWxsYmFja0FjdGlvbiA9ICdzaWxlbnQnIHwgJ3Rocm93JyB8ICd3YXJuJztcblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHRha2UgZm9yIGEgcmVzb2x2ZWQgaW5zdGFsbGVyXHUyMTk0YXBwIGNvbXBhdGliaWxpdHkgdmVyZGljdCwgZ2l2ZW5cbiAqIHRoZSB0aHJvdy93YXJuIGtub2JzLlxuICpcbiAqIC0gYCd0aHJvdydgIFx1MjAxNCB0aGUgdmVyZGljdCBpcyBgJ3VucnVubmFibGUnYCBhbmQgdGhlIHByb2FjdGl2ZSB0aHJvdyBpcyBlbmFibGVkO1xuICogICB0aGUgY2FsbGVyIHRocm93cyBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBiZWZvcmUgbGF1bmNoLlxuICogLSBgJ3dhcm4tdW5ydW5uYWJsZSdgIFx1MjAxNCB0aGUgdmVyZGljdCBpcyBgJ3VucnVubmFibGUnYCBidXQgdGhlIHRocm93IGlzIGRpc2FibGVkXG4gKiAgIGFuZCB3YXJuaW5ncyBhcmUgb247IHRoZSBjYWxsZXIgbG9ncyBhIFwicHJvY2VlZGluZyB0byBsYXVuY2hcIiB3YXJuaW5nIGFuZFxuICogICBsZXRzIHRoZSBib290IHByb2NlZWQgKHdoZXJlIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsIGNhdGNoZXMgaXQpLlxuICogLSBgJ3dhcm4tbmFnZ2VkJ2AgXHUyMDE0IHRoZSB2ZXJkaWN0IGlzIGAnbmFnZ2VkJ2AgYW5kIHdhcm5pbmdzIGFyZSBvbjsgdGhlIGNhbGxlclxuICogICBsb2dzIHRoZSByZWNvbW1lbmRlZC1pbnN0YWxsZXIgd2FybmluZy5cbiAqIC0gYCdzaWxlbnQnYCBcdTIwMTQgbm90aGluZyB0byBkbyAoYCdvaydgIC8gYCd1bmtub3duJ2AsIG9yIHdhcm5pbmdzIGRpc2FibGVkKS5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbiA9ICdzaWxlbnQnIHwgJ3Rocm93JyB8ICd3YXJuLW5hZ2dlZCcgfCAnd2Fybi11bnJ1bm5hYmxlJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvblBhcmFtcyB7XG4gIC8qKiBXaGV0aGVyIGEgYCdmYWxsYmFjaydgIHZlcmRpY3QgdGhyb3dzICh2cy4gcHJvY2VlZHMgd2l0aCBhIHdhcm5pbmcpLiAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIGEgbm9uLXRocm93aW5nIGZhbGxiYWNrIHZlcmRpY3QgaXMgbG9nZ2VkLiAqL1xuICByZWFkb25seSBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgc2lsZW50LWFzYXItZmFsbGJhY2sgdGllci4gKi9cbiAgcmVhZG9ubHkgdGllcjogQXNhckZhbGxiYWNrVGllcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHlBY3Rpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9uUGFyYW1zIHtcbiAgLyoqIFdoZXRoZXIgYW4gYCd1bnJ1bm5hYmxlJ2AgdmVyZGljdCB0aHJvd3MgKHZzLiBwcm9jZWVkcyB0byBsYXVuY2gpLiAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIGEgbmFnIC8gcHJvY2VlZGluZy11bnJ1bm5hYmxlIHZlcmRpY3QgaXMgbG9nZ2VkLiAqL1xuICByZWFkb25seSBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgaW5zdGFsbGVyXHUyMTk0YXBwIGNvbXBhdGliaWxpdHkgdGllci4gKi9cbiAgcmVhZG9ubHkgdGllcjogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXI7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2hhdCB0byBkbyBmb3IgYSBzaWxlbnQtYXNhci1mYWxsYmFjayB2ZXJkaWN0LCBnaXZlbiB0aGUgdGhyb3cvd2FyblxuICoga25vYnMuIFB1cmUgXHUyMDE0IHRoZSBjYWxsZXIgcGVyZm9ybXMgdGhlIHRocm93L2xvZyBzaWRlIGVmZmVjdHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB2ZXJkaWN0IHRpZXIgYW5kIHRoZSByZXNvbHZlZCB0aHJvdy93YXJuIGtub2JzLlxuICogQHJldHVybnMgVGhlIGFjdGlvbiB0aGUgY2FsbGVyIHNob3VsZCB0YWtlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvbihwYXJhbXM6IFJlc29sdmVBc2FyRmFsbGJhY2tBY3Rpb25QYXJhbXMpOiBBc2FyRmFsbGJhY2tBY3Rpb24ge1xuICBjb25zdCB7IHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2ssIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMsIHRpZXIgfSA9IHBhcmFtcztcblxuICBpZiAodGllciAhPT0gJ2ZhbGxiYWNrJykge1xuICAgIHJldHVybiAnc2lsZW50JztcbiAgfVxuXG4gIGlmIChzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrKSB7XG4gICAgcmV0dXJuICd0aHJvdyc7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyA/ICd3YXJuJyA6ICdzaWxlbnQnO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdoYXQgdG8gZG8gZm9yIGFuIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHZlcmRpY3QsIGdpdmVuIHRoZVxuICogdGhyb3cvd2FybiBrbm9icy4gUHVyZSBcdTIwMTQgdGhlIGNhbGxlciBwZXJmb3JtcyB0aGUgdGhyb3cvbG9nIHNpZGUgZWZmZWN0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHZlcmRpY3QgdGllciBhbmQgdGhlIHJlc29sdmVkIHRocm93L3dhcm4ga25vYnMuXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIHRoZSBjYWxsZXIgc2hvdWxkIHRha2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbihwYXJhbXM6IFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9uUGFyYW1zKTogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbiB7XG4gIGNvbnN0IHsgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlciwgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcywgdGllciB9ID0gcGFyYW1zO1xuXG4gIGlmICh0aWVyID09PSAndW5ydW5uYWJsZScpIHtcbiAgICBpZiAoc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcikge1xuICAgICAgcmV0dXJuICd0aHJvdyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi11bnJ1bm5hYmxlJyA6ICdzaWxlbnQnO1xuICB9XG5cbiAgaWYgKHRpZXIgPT09ICduYWdnZWQnKSB7XG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi1uYWdnZWQnIDogJ3NpbGVudCc7XG4gIH1cblxuICByZXR1cm4gJ3NpbGVudCc7XG59XG5cbi8qKlxuICogV2hldGhlciBhbiBgJ3VucnVubmFibGUnYCBpbnN0YWxsZXJcdTIxOTRhcHAgcGFpciBzaG91bGQgZmFpbCBmYXN0IHdpdGhcbiAqIHtAbGluayBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3J9IGJlZm9yZSBsYXVuY2guXG4gKlxuICogQHBhcmFtIHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXIgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB0aHJvdykuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhbiB1bnJ1bm5hYmxlIHBpbiBzaG91bGQgdGhyb3cgKHRoZSBkZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyKHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXI/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyID8/IHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciBhIGJvb3RlZCBvd25lZCBpbnN0YW5jZSBydW5uaW5nIGEgZGlmZmVyZW50IGFwcCAoYXNhcikgdmVyc2lvbiB0aGFuIHRoZVxuICogcGluIFx1MjAxNCBhIHNpbGVudCBmYWxsYmFjayB0byB0aGUgaW5zdGFsbGVyJ3Mgb3duIGJ1bmRsZWQgYXNhciBcdTIwMTQgc2hvdWxkIGZhaWwgZmFzdFxuICogd2l0aCB7QGxpbmsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3J9LlxuICpcbiAqIEBwYXJhbSBzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrIC0gVGhlIHJlc29sdmVkIG9wdGlvbiB2YWx1ZSAob21pdHRlZCBcdTIxOTIgdGhyb3cpLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gYSBzaWxlbnQgZmFsbGJhY2sgc2hvdWxkIHRocm93ICh0aGUgZGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjayhzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjayA/PyB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkgbmFnIHdhcm5pbmdzIHNob3VsZCBiZSBlbWl0dGVkIChib3RoXG4gKiB0aGUgaW5zdGFsbGVyXHUyMTk0YXBwIGAnbmFnZ2VkJ2Agd2FybmluZyBhbmQgdGhlIHJ1bnRpbWUtRWxlY3Ryb24gYCduYWdnZWQnYFxuICogd2FybmluZykuXG4gKlxuICogQHBhcmFtIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB3YXJuKS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSB3YXJuaW5ncyBzaG91bGQgYmUgZW1pdHRlZCAodGhlIGRlZmF1bHQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMoc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlcz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPz8gdHJ1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXVGTyxTQUFTLDBCQUEwQixRQUE2RDtBQUNyRyxRQUFNLEVBQUUsaUNBQWlDLGlDQUFpQyxLQUFLLElBQUk7QUFFbkYsTUFBSSxTQUFTLFlBQVk7QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGlDQUFpQztBQUNuQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sa0NBQWtDLFNBQVM7QUFDcEQ7QUFTTyxTQUFTLG9DQUFvQyxRQUFpRjtBQUNuSSxRQUFNLEVBQUUsb0NBQW9DLGlDQUFpQyxLQUFLLElBQUk7QUFFdEYsTUFBSSxTQUFTLGNBQWM7QUFDekIsUUFBSSxvQ0FBb0M7QUFDdEMsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLGtDQUFrQyxvQkFBb0I7QUFBQSxFQUMvRDtBQUVBLE1BQUksU0FBUyxVQUFVO0FBQ3JCLFdBQU8sa0NBQWtDLGdCQUFnQjtBQUFBLEVBQzNEO0FBRUEsU0FBTztBQUNUO0FBU08sU0FBUywwQ0FBMEMsb0NBQXVEO0FBQy9HLFNBQU8sc0NBQXNDO0FBQy9DO0FBVU8sU0FBUyx1Q0FBdUMsaUNBQW9EO0FBQ3pHLFNBQU8sbUNBQW1DO0FBQzVDO0FBVU8sU0FBUyx1Q0FBdUMsaUNBQW9EO0FBQ3pHLFNBQU8sbUNBQW1DO0FBQzVDOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* raw {@link CdpConnection.invoke} and the rich {@link CdpConnection.evalInObsidian}.
|
|
12
12
|
*/
|
|
13
13
|
import type { Except } from 'type-fest';
|
|
14
|
+
import type { AsarFallback } from './asar-fallback-detection.mjs';
|
|
14
15
|
import type { ContextId } from './context-id.mjs';
|
|
15
16
|
import type { ElectronCompatibility } from './electron-compatibility.mjs';
|
|
16
17
|
import type { EvalInObsidianParams, GenericObject } from './eval-in-obsidian.mjs';
|
|
@@ -25,6 +26,16 @@ import { TempVault } from './temp-vault.mjs';
|
|
|
25
26
|
* removing its directory) automatically.
|
|
26
27
|
*/
|
|
27
28
|
export interface CdpConnection extends AsyncDisposable {
|
|
29
|
+
/**
|
|
30
|
+
* The silent-asar-fallback verdict for an owned instance, read live after boot:
|
|
31
|
+
* whether the app version it is actually running matches the swapped-in pin, or
|
|
32
|
+
* the installer silently reverted to its own bundled asar. `undefined` in attach
|
|
33
|
+
* mode, when no asar was swapped, or when the running version was unreadable. A
|
|
34
|
+
* `'fallback'` verdict reaches here only when the throw is disabled
|
|
35
|
+
* ({@link ConnectToCdpOptions.shouldThrowOnSilentAsarFallback} `false`);
|
|
36
|
+
* otherwise it throws `SilentAsarFallbackError` before the connection is created.
|
|
37
|
+
*/
|
|
38
|
+
readonly asarFallback?: AsarFallback | undefined;
|
|
28
39
|
/**
|
|
29
40
|
* The base CDP URL, e.g. `http://localhost:51888`.
|
|
30
41
|
*/
|
|
@@ -178,6 +189,20 @@ export interface ConnectToCdpOptions {
|
|
|
178
189
|
* @default `true`
|
|
179
190
|
*/
|
|
180
191
|
readonly shouldThrowOnIncompatibleInstaller?: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* Whether a post-boot **silent asar fallback** fails fast.
|
|
194
|
+
*
|
|
195
|
+
* When an asar is swapped onto an installer shell too old for it, the instance
|
|
196
|
+
* may silently revert to the installer's own bundled asar and run the **wrong
|
|
197
|
+
* (older)** version behind a healthy UI. When `true` (the default), the running
|
|
198
|
+
* app version is verified against the pin post-boot and a mismatch throws
|
|
199
|
+
* `SilentAsarFallbackError`. Set `false` to let the boot proceed — the mismatch
|
|
200
|
+
* is then surfaced on {@link CdpConnection.asarFallback} rather than thrown.
|
|
201
|
+
* Ignored in attach mode ({@link port} set) and when no asar is swapped.
|
|
202
|
+
*
|
|
203
|
+
* @default `true`
|
|
204
|
+
*/
|
|
205
|
+
readonly shouldThrowOnSilentAsarFallback?: boolean;
|
|
181
206
|
/**
|
|
182
207
|
* Whether the owned-instance compatibility **nag warnings** are emitted.
|
|
183
208
|
*
|