obsidian-integration-testing 9.2.2 → 10.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 +45 -45
- package/dist/lib/cjs/appium-dependencies.cjs +5 -5
- package/dist/lib/cjs/appium-dependencies.d.cts +4 -2
- package/dist/lib/cjs/appium-session-config.cjs +1 -1
- package/dist/lib/cjs/asar-fallback-detection.cjs +4 -4
- package/dist/lib/cjs/asar-fallback-detection.d.cts +15 -7
- package/dist/lib/cjs/avd-list.cjs +1 -1
- package/dist/lib/cjs/avd-list.d.cts +6 -2
- package/dist/lib/cjs/cli.cjs +4 -4
- package/dist/lib/cjs/compatibility-options.cjs +13 -13
- package/dist/lib/cjs/compatibility-options.d.cts +24 -12
- package/dist/lib/cjs/connect-to-cdp.cjs +4 -4
- package/dist/lib/cjs/connect-to-cdp.d.cts +6 -6
- package/dist/lib/cjs/context-id.cjs +5 -5
- package/dist/lib/cjs/context-id.d.cts +1 -1
- package/dist/lib/cjs/context-provider.cjs +5 -5
- package/dist/lib/cjs/context-provider.d.cts +4 -4
- package/dist/lib/cjs/demo-vault-populate.cjs +5 -5
- package/dist/lib/cjs/demo-vault-populate.d.cts +4 -4
- package/dist/lib/cjs/demo-vault-tree.cjs +4 -4
- package/dist/lib/cjs/demo-vault-tree.d.cts +3 -3
- package/dist/lib/cjs/device-readiness.cjs +3 -3
- package/dist/lib/cjs/device-readiness.d.cts +7 -3
- package/dist/lib/cjs/ecmascript-version.cjs +1 -1
- package/dist/lib/cjs/electron-compatibility.cjs +4 -4
- package/dist/lib/cjs/electron-compatibility.d.cts +33 -17
- package/dist/lib/cjs/emulator-arguments.cjs +36 -0
- package/dist/lib/{esm/emulator-args.d.mts → cjs/emulator-arguments.d.cts} +6 -4
- package/dist/lib/cjs/enable-plugin.cjs +29 -29
- package/dist/lib/cjs/enable-plugin.d.cts +6 -6
- package/dist/lib/cjs/eval-in-obsidian.cjs +9 -9
- package/dist/lib/cjs/eval-in-obsidian.d.cts +23 -23
- package/dist/lib/cjs/exec.cjs +49 -53
- package/dist/lib/cjs/exec.d.cts +9 -9
- package/dist/lib/cjs/function-expression.cjs +8 -8
- package/dist/lib/cjs/function-expression.d.cts +4 -4
- package/dist/lib/cjs/generate-function-call.cjs +6 -6
- package/dist/lib/cjs/generate-function-call.d.cts +15 -9
- package/dist/lib/cjs/global-setup-core.cjs +43 -43
- package/dist/lib/cjs/global-setup-core.d.cts +19 -9
- package/dist/lib/cjs/incompatible-installer-version-error.cjs +10 -4
- package/dist/lib/cjs/incompatible-installer-version-error.d.cts +18 -6
- package/dist/lib/cjs/index.cjs +10 -10
- package/dist/lib/cjs/index.d.cts +8 -8
- package/dist/lib/cjs/installer-asset.cjs +4 -4
- package/dist/lib/cjs/installer-asset.d.cts +21 -7
- package/dist/lib/cjs/installer-compatibility.cjs +4 -4
- package/dist/lib/cjs/installer-compatibility.d.cts +36 -18
- package/dist/lib/cjs/jest/global-setup-no-plugin.cjs +3 -3
- package/dist/lib/cjs/jest/global-setup-no-plugin.d.cts +1 -1
- package/dist/lib/cjs/jest/global-setup.cjs +11 -11
- package/dist/lib/cjs/jest/global-setup.d.cts +12 -8
- package/dist/lib/cjs/jest/global-teardown-no-plugin.cjs +2 -3
- package/dist/lib/cjs/jest/global-teardown-no-plugin.d.cts +1 -2
- package/dist/lib/cjs/jest/global-teardown.cjs +2 -3
- package/dist/lib/cjs/jest/global-teardown.d.cts +1 -2
- package/dist/lib/cjs/jest/setup.cjs +2 -2
- package/dist/lib/cjs/jest/setup.d.cts +1 -1
- package/dist/lib/cjs/json-with-functions.cjs +7 -7
- package/dist/lib/cjs/leftover-cleanup.cjs +14 -14
- package/dist/lib/cjs/leftover-cleanup.d.cts +42 -20
- package/dist/lib/cjs/library.cjs +2 -2
- package/dist/lib/cjs/namespace-bootstrap.cjs +46 -40
- package/dist/lib/cjs/native-dialog-monitor.cjs +15 -13
- package/dist/lib/cjs/normalize-optional-properties.cjs +3 -3
- package/dist/lib/cjs/normalize-optional-properties.d.cts +2 -2
- package/dist/lib/cjs/obsidian-config.cjs +30 -31
- package/dist/lib/cjs/obsidian-config.d.cts +8 -8
- package/dist/lib/cjs/obsidian-executable.cjs +2 -2
- package/dist/lib/cjs/obsidian-installer.cjs +37 -37
- package/dist/lib/cjs/obsidian-installer.d.cts +7 -3
- package/dist/lib/cjs/obsidian-instance.cjs +3 -3
- package/dist/lib/cjs/obsidian-instance.d.cts +18 -8
- package/dist/lib/cjs/obsidian-metadata.cjs +1 -1
- package/dist/lib/cjs/obsidian-metadata.d.cts +36 -12
- package/dist/lib/cjs/obsidian-namespace.cjs +1 -1
- package/dist/lib/cjs/obsidian-namespace.d.cts +25 -11
- package/dist/lib/cjs/obsidian-version-switch.cjs +9 -9
- package/dist/lib/cjs/obsidian-version-switch.d.cts +14 -10
- package/dist/lib/cjs/obsidian-version.cjs +3 -3
- package/dist/lib/cjs/obsidian-version.d.cts +15 -5
- package/dist/lib/cjs/owned-vault-seed.cjs +1 -1
- package/dist/lib/cjs/owned-vault-seed.d.cts +24 -8
- package/dist/lib/cjs/parent-liveness.cjs +4 -4
- package/dist/lib/cjs/parent-liveness.d.cts +7 -3
- package/dist/lib/cjs/poll-in-obsidian.cjs +5 -5
- package/dist/lib/cjs/poll-in-obsidian.d.cts +12 -12
- package/dist/lib/cjs/poll-until.cjs +1 -1
- package/dist/lib/cjs/poll-until.d.cts +21 -7
- package/dist/lib/cjs/process-exit-message.cjs +1 -1
- package/dist/lib/cjs/process-exit-message.d.cts +21 -7
- package/dist/lib/cjs/renderer-boot-detection.cjs +9 -9
- package/dist/lib/cjs/renderer-boot-detection.d.cts +31 -27
- package/dist/lib/cjs/renderer-failed-to-initialize-error.cjs +1 -1
- package/dist/lib/cjs/renderer-failed-to-initialize-error.d.cts +1 -1
- package/dist/lib/cjs/setup-lock.cjs +26 -26
- package/dist/lib/cjs/setup-lock.d.cts +6 -2
- package/dist/lib/cjs/silent-asar-fallback-error.cjs +7 -3
- package/dist/lib/cjs/silent-asar-fallback-error.d.cts +12 -4
- package/dist/lib/cjs/spawn-options.cjs +1 -1
- package/dist/lib/cjs/spawn-options.d.cts +3 -1
- package/dist/lib/cjs/strict-proxy.cjs +25 -25
- package/dist/lib/cjs/strict-proxy.d.cts +3 -3
- package/dist/lib/cjs/temporary-vault.cjs +166 -0
- package/dist/lib/cjs/{temp-vault.d.cts → temporary-vault.d.cts} +3 -3
- package/dist/lib/cjs/transport-appium.cjs +7 -7
- package/dist/lib/cjs/transport-appium.d.cts +7 -3
- package/dist/lib/cjs/transport-desktop-cdp.cjs +57 -57
- package/dist/lib/cjs/transport-desktop-cdp.d.cts +29 -17
- package/dist/lib/cjs/transport-factory.cjs +62 -63
- package/dist/lib/cjs/type-guards.cjs +3 -3
- package/dist/lib/cjs/type-guards.d.cts +2 -2
- package/dist/lib/cjs/vault-path-match.cjs +9 -9
- package/dist/lib/cjs/vault-path-match.d.cts +11 -11
- package/dist/lib/cjs/version-matrix.cjs +1 -1
- package/dist/lib/cjs/version-matrix.d.cts +51 -17
- package/dist/lib/cjs/visibility.cjs +7 -7
- package/dist/lib/cjs/visibility.d.cts +5 -5
- package/dist/lib/cjs/vitest/global-setup-no-plugin.cjs +3 -3
- package/dist/lib/cjs/vitest/global-setup-no-plugin.d.cts +2 -2
- package/dist/lib/cjs/vitest/global-setup.cjs +9 -9
- package/dist/lib/cjs/vitest/global-setup.d.cts +4 -4
- package/dist/lib/cjs/vitest/setup.cjs +2 -2
- package/dist/lib/cjs/vitest/typings.d.cts +2 -2
- package/dist/lib/esm/appium-dependencies.d.mts +4 -2
- package/dist/lib/esm/appium-dependencies.mjs +4 -4
- package/dist/lib/esm/appium-session-config.mjs +1 -1
- package/dist/lib/esm/asar-fallback-detection.d.mts +15 -7
- package/dist/lib/esm/asar-fallback-detection.mjs +3 -3
- package/dist/lib/esm/avd-list.d.mts +6 -2
- package/dist/lib/esm/avd-list.mjs +1 -1
- package/dist/lib/esm/cli.mjs +4 -4
- package/dist/lib/esm/compatibility-options.d.mts +24 -12
- package/dist/lib/esm/compatibility-options.mjs +10 -10
- package/dist/lib/esm/connect-to-cdp.d.mts +6 -6
- package/dist/lib/esm/connect-to-cdp.mjs +6 -6
- package/dist/lib/esm/context-id.d.mts +1 -1
- package/dist/lib/esm/context-id.mjs +5 -5
- package/dist/lib/esm/context-provider.d.mts +4 -4
- package/dist/lib/esm/context-provider.mjs +5 -5
- package/dist/lib/esm/demo-vault-populate.d.mts +4 -4
- package/dist/lib/esm/demo-vault-populate.mjs +5 -5
- package/dist/lib/esm/demo-vault-tree.d.mts +3 -3
- package/dist/lib/esm/demo-vault-tree.mjs +4 -4
- package/dist/lib/esm/device-readiness.d.mts +7 -3
- package/dist/lib/esm/device-readiness.mjs +3 -3
- package/dist/lib/esm/ecmascript-version.mjs +1 -1
- package/dist/lib/esm/electron-compatibility.d.mts +33 -17
- package/dist/lib/esm/electron-compatibility.mjs +3 -3
- package/dist/lib/{cjs/emulator-args.d.cts → esm/emulator-arguments.d.mts} +6 -4
- package/dist/lib/esm/emulator-arguments.mjs +12 -0
- package/dist/lib/esm/enable-plugin.d.mts +6 -6
- package/dist/lib/esm/enable-plugin.mjs +29 -29
- package/dist/lib/esm/eval-in-obsidian.d.mts +23 -23
- package/dist/lib/esm/eval-in-obsidian.mjs +9 -9
- package/dist/lib/esm/exec.d.mts +9 -9
- package/dist/lib/esm/exec.mjs +49 -53
- package/dist/lib/esm/function-expression.d.mts +4 -4
- package/dist/lib/esm/function-expression.mjs +8 -8
- package/dist/lib/esm/generate-function-call.d.mts +15 -9
- package/dist/lib/esm/generate-function-call.mjs +6 -6
- package/dist/lib/esm/global-setup-core.d.mts +19 -9
- package/dist/lib/esm/global-setup-core.mjs +45 -45
- package/dist/lib/esm/incompatible-installer-version-error.d.mts +18 -6
- package/dist/lib/esm/incompatible-installer-version-error.mjs +10 -4
- package/dist/lib/esm/index.d.mts +8 -8
- package/dist/lib/esm/index.mjs +9 -9
- package/dist/lib/esm/installer-asset.d.mts +21 -7
- package/dist/lib/esm/installer-asset.mjs +4 -4
- package/dist/lib/esm/installer-compatibility.d.mts +36 -18
- package/dist/lib/esm/installer-compatibility.mjs +3 -3
- package/dist/lib/esm/jest/global-setup-no-plugin.d.mts +1 -1
- package/dist/lib/esm/jest/global-setup-no-plugin.mjs +3 -3
- package/dist/lib/esm/jest/global-setup.d.mts +12 -8
- package/dist/lib/esm/jest/global-setup.mjs +10 -10
- package/dist/lib/esm/jest/global-teardown-no-plugin.d.mts +1 -2
- package/dist/lib/esm/jest/global-teardown-no-plugin.mjs +2 -3
- package/dist/lib/esm/jest/global-teardown.d.mts +1 -2
- package/dist/lib/esm/jest/global-teardown.mjs +2 -3
- package/dist/lib/esm/jest/setup.d.mts +1 -1
- package/dist/lib/esm/jest/setup.mjs +2 -2
- package/dist/lib/esm/json-with-functions.mjs +7 -7
- package/dist/lib/esm/leftover-cleanup.d.mts +42 -20
- package/dist/lib/esm/leftover-cleanup.mjs +12 -12
- package/dist/lib/esm/library.mjs +2 -2
- package/dist/lib/esm/namespace-bootstrap.mjs +46 -40
- package/dist/lib/esm/native-dialog-monitor.mjs +15 -13
- package/dist/lib/esm/normalize-optional-properties.d.mts +2 -2
- package/dist/lib/esm/normalize-optional-properties.mjs +3 -3
- package/dist/lib/esm/obsidian-config.d.mts +8 -8
- package/dist/lib/esm/obsidian-config.mjs +27 -28
- package/dist/lib/esm/obsidian-executable.mjs +2 -2
- package/dist/lib/esm/obsidian-installer.d.mts +7 -3
- package/dist/lib/esm/obsidian-installer.mjs +36 -36
- package/dist/lib/esm/obsidian-instance.d.mts +18 -8
- package/dist/lib/esm/obsidian-instance.mjs +3 -3
- package/dist/lib/esm/obsidian-metadata.d.mts +36 -12
- package/dist/lib/esm/obsidian-metadata.mjs +1 -1
- package/dist/lib/esm/obsidian-namespace.d.mts +25 -11
- package/dist/lib/esm/obsidian-version-switch.d.mts +14 -10
- package/dist/lib/esm/obsidian-version-switch.mjs +9 -9
- package/dist/lib/esm/obsidian-version.d.mts +15 -5
- package/dist/lib/esm/obsidian-version.mjs +3 -3
- package/dist/lib/esm/owned-vault-seed.d.mts +24 -8
- package/dist/lib/esm/owned-vault-seed.mjs +1 -1
- package/dist/lib/esm/parent-liveness.d.mts +7 -3
- package/dist/lib/esm/parent-liveness.mjs +3 -3
- package/dist/lib/esm/poll-in-obsidian.d.mts +12 -12
- package/dist/lib/esm/poll-in-obsidian.mjs +5 -5
- package/dist/lib/esm/poll-until.d.mts +21 -7
- package/dist/lib/esm/poll-until.mjs +1 -1
- package/dist/lib/esm/process-exit-message.d.mts +21 -7
- package/dist/lib/esm/process-exit-message.mjs +1 -1
- package/dist/lib/esm/renderer-boot-detection.d.mts +31 -27
- package/dist/lib/esm/renderer-boot-detection.mjs +7 -7
- package/dist/lib/esm/renderer-failed-to-initialize-error.d.mts +1 -1
- package/dist/lib/esm/renderer-failed-to-initialize-error.mjs +1 -1
- package/dist/lib/esm/setup-lock.d.mts +6 -2
- package/dist/lib/esm/setup-lock.mjs +26 -26
- package/dist/lib/esm/silent-asar-fallback-error.d.mts +12 -4
- package/dist/lib/esm/silent-asar-fallback-error.mjs +7 -3
- package/dist/lib/esm/spawn-options.d.mts +3 -1
- package/dist/lib/esm/spawn-options.mjs +1 -1
- package/dist/lib/esm/strict-proxy.d.mts +3 -3
- package/dist/lib/esm/strict-proxy.mjs +25 -25
- package/dist/lib/esm/{temp-vault.d.mts → temporary-vault.d.mts} +3 -3
- package/dist/lib/esm/temporary-vault.mjs +157 -0
- package/dist/lib/esm/transport-appium.d.mts +7 -3
- package/dist/lib/esm/transport-appium.mjs +7 -7
- package/dist/lib/esm/transport-desktop-cdp.d.mts +29 -17
- package/dist/lib/esm/transport-desktop-cdp.mjs +67 -67
- package/dist/lib/esm/transport-factory.mjs +71 -72
- package/dist/lib/esm/type-guards.d.mts +2 -2
- package/dist/lib/esm/type-guards.mjs +3 -3
- package/dist/lib/esm/vault-path-match.d.mts +11 -11
- package/dist/lib/esm/vault-path-match.mjs +7 -7
- package/dist/lib/esm/version-matrix.d.mts +51 -17
- package/dist/lib/esm/version-matrix.mjs +1 -1
- package/dist/lib/esm/visibility.d.mts +5 -5
- package/dist/lib/esm/visibility.mjs +5 -5
- package/dist/lib/esm/vitest/global-setup-no-plugin.d.mts +2 -2
- package/dist/lib/esm/vitest/global-setup-no-plugin.mjs +3 -3
- package/dist/lib/esm/vitest/global-setup.d.mts +4 -4
- package/dist/lib/esm/vitest/global-setup.mjs +8 -8
- package/dist/lib/esm/vitest/setup.mjs +2 -2
- package/dist/lib/esm/vitest/typings.d.mts +2 -2
- package/dist/obsidian-integration-testing-10.0.0.tgz +0 -0
- package/package.json +15 -13
- package/dist/lib/cjs/emulator-args.cjs +0 -36
- package/dist/lib/cjs/temp-vault.cjs +0 -166
- package/dist/lib/esm/emulator-args.mjs +0 -12
- package/dist/lib/esm/temp-vault.mjs +0 -157
- package/dist/obsidian-integration-testing-9.2.2.tgz +0 -0
|
@@ -37,10 +37,10 @@ export declare function castTo<T>(value: unknown): T;
|
|
|
37
37
|
* access type-checks.
|
|
38
38
|
*
|
|
39
39
|
* @typeParam T - The object type.
|
|
40
|
-
* @param
|
|
40
|
+
* @param object - The object to widen.
|
|
41
41
|
* @returns The same object typed as `GenericObject & T`.
|
|
42
42
|
*/
|
|
43
|
-
export declare function ensureGenericObject<T extends object>(
|
|
43
|
+
export declare function ensureGenericObject<T extends object>(object: T): GenericObject & T;
|
|
44
44
|
/**
|
|
45
45
|
* Ensures that a value is not `null` or `undefined` and returns it with narrowed type.
|
|
46
46
|
*
|
|
@@ -9,8 +9,8 @@ function assertNonNullable(value, errorOrMessage) {
|
|
|
9
9
|
function castTo(value) {
|
|
10
10
|
return value;
|
|
11
11
|
}
|
|
12
|
-
function ensureGenericObject(
|
|
13
|
-
return
|
|
12
|
+
function ensureGenericObject(object) {
|
|
13
|
+
return object;
|
|
14
14
|
}
|
|
15
15
|
function ensureNonNullable(value, errorOrMessage) {
|
|
16
16
|
assertNonNullable(value, errorOrMessage);
|
|
@@ -22,4 +22,4 @@ export {
|
|
|
22
22
|
ensureGenericObject,
|
|
23
23
|
ensureNonNullable
|
|
24
24
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLlxuICovXG5cbi8qKlxuICogQSBnZW5lcmljIG9iamVjdCB3aXRoIGBzdHJpbmdgIGtleXMgYW5kIGB1bmtub3duYCB2YWx1ZXMuXG4gKlxuICogVXNlZCBhcyBhIHdpZGVuaW5nIHRhcmdldCBmb3IgZHluYW1pYyBwcm9wZXJ0eSBhY2Nlc3Mgb24gbW9jayBvYmplY3RzLlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbnR5cGUgTnVsbGFibGVDb25zdHJhaW50PFQ+ID0gbnVsbCBleHRlbmRzIFQgPyB1bmtub3duIDogdW5kZWZpbmVkIGV4dGVuZHMgVCA/IHVua25vd24gOiBuZXZlcjtcblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSB2YWx1ZSBpcyBub3QgYG51bGxgIG9yIGB1bmRlZmluZWRgLCBuYXJyb3dpbmcgaXRzIHR5cGUgaW4gcGxhY2UuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+KHZhbHVlOiBULCBlcnJvck9yTWVzc2FnZT86IEVycm9yIHwgc3RyaW5nKTogYXNzZXJ0cyB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZXJyb3JPck1lc3NhZ2UgPz89IHZhbHVlID09PSBudWxsID8gJ1ZhbHVlIGlzIG51bGwnIDogJ1ZhbHVlIGlzIHVuZGVmaW5lZCc7XG4gIGNvbnN0IGVycm9yID0gdHlwZW9mIGVycm9yT3JNZXNzYWdlID09PSAnc3RyaW5nJyA/
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLlxuICovXG5cbi8qKlxuICogQSBnZW5lcmljIG9iamVjdCB3aXRoIGBzdHJpbmdgIGtleXMgYW5kIGB1bmtub3duYCB2YWx1ZXMuXG4gKlxuICogVXNlZCBhcyBhIHdpZGVuaW5nIHRhcmdldCBmb3IgZHluYW1pYyBwcm9wZXJ0eSBhY2Nlc3Mgb24gbW9jayBvYmplY3RzLlxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljT2JqZWN0ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbnR5cGUgTnVsbGFibGVDb25zdHJhaW50PFQ+ID0gbnVsbCBleHRlbmRzIFQgPyB1bmtub3duIDogdW5kZWZpbmVkIGV4dGVuZHMgVCA/IHVua25vd24gOiBuZXZlcjtcblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSB2YWx1ZSBpcyBub3QgYG51bGxgIG9yIGB1bmRlZmluZWRgLCBuYXJyb3dpbmcgaXRzIHR5cGUgaW4gcGxhY2UuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+KHZhbHVlOiBULCBlcnJvck9yTWVzc2FnZT86IEVycm9yIHwgc3RyaW5nKTogYXNzZXJ0cyB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZXJyb3JPck1lc3NhZ2UgPz89IHZhbHVlID09PSBudWxsID8gJ1ZhbHVlIGlzIG51bGwnIDogJ1ZhbHVlIGlzIHVuZGVmaW5lZCc7XG4gIGNvbnN0IGVycm9yID0gdHlwZW9mIGVycm9yT3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IG5ldyBFcnJvcihlcnJvck9yTWVzc2FnZSkgOiBlcnJvck9yTWVzc2FnZTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbi8qKlxuICogQ2FzdHMgYSB2YWx1ZSB0byBhIHNwZWNpZmljIHR5cGUgd2l0aG91dCBhbnkgcnVudGltZSBjaGVjay5cbiAqXG4gKiBQcmVmZXIgdGhpcyBvdmVyIGlubGluZSBgYXNgIGFzc2VydGlvbnM6IGl0IGtlZXBzIHRoZSB1bnNhZmUgY2FzdCBpbiBvbmVcbiAqIGF1ZGl0YWJsZSBwbGFjZSBhbmQgcmVhZHMgYXMgYW4gZXhwbGljaXQsIGludGVudGlvbmFsIGVzY2FwZSBoYXRjaC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdGFyZ2V0IHR5cGUgdG8gY2FzdCB0by5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjYXN0LlxuICogQHJldHVybnMgVGhlIHZhbHVlIHR5cGVkIGFzIGBUYC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gVGhlIHR5cGUgcGFyYW1ldGVyIGlzIHRoZSBjYXN0IHRhcmdldDsgaXQgY2Fubm90IGJlIGluZmVycmVkIGZyb20gdGhlIGB1bmtub3duYCBhcmd1bWVudC5cbmV4cG9ydCBmdW5jdGlvbiBjYXN0VG88VD4odmFsdWU6IHVua25vd24pOiBUIHtcbiAgcmV0dXJuIHZhbHVlIGFzIFQ7XG59XG5cbi8qKlxuICogV2lkZW5zIGFuIG9iamVjdCB0byBhIHtAbGluayBHZW5lcmljT2JqZWN0fSBzbyBkeW5hbWljIHN0cmluZy1rZXllZCBwcm9wZXJ0eVxuICogYWNjZXNzIHR5cGUtY2hlY2tzLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSBvYmplY3QgdHlwZS5cbiAqIEBwYXJhbSBvYmplY3QgLSBUaGUgb2JqZWN0IHRvIHdpZGVuLlxuICogQHJldHVybnMgVGhlIHNhbWUgb2JqZWN0IHR5cGVkIGFzIGBHZW5lcmljT2JqZWN0ICYgVGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVHZW5lcmljT2JqZWN0PFQgZXh0ZW5kcyBvYmplY3Q+KG9iamVjdDogVCk6IEdlbmVyaWNPYmplY3QgJiBUIHtcbiAgcmV0dXJuIG9iamVjdCBhcyBHZW5lcmljT2JqZWN0ICYgVDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSB2YWx1ZSBpcyBub3QgYG51bGxgIG9yIGB1bmRlZmluZWRgIGFuZCByZXR1cm5zIGl0IHdpdGggbmFycm93ZWQgdHlwZS5cbiAqXG4gKiBPbmx5IGNhbGxhYmxlIHdoZW4gYFRgIGluY2x1ZGVzIGBudWxsYCBvciBgdW5kZWZpbmVkYC4gUGFzc2luZyBhbiBhbHJlYWR5IG5vbi1udWxsYWJsZSB0eXBlIGlzIGEgY29tcGlsZSBlcnJvci5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0gZXJyb3JPck1lc3NhZ2UgLSBPcHRpb25hbCB7QGxpbmsgRXJyb3J9IG9yIGVycm9yIG1lc3NhZ2Ugc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHZhbHVlIHdpdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYCBleGNsdWRlZCBmcm9tIGl0cyB0eXBlLlxuICogQHRocm93cyBJZiB0aGUgdmFsdWUgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTm9uTnVsbGFibGU8VCBleHRlbmRzIE51bGxhYmxlQ29uc3RyYWludDxUPj4odmFsdWU6IFQsIGVycm9yT3JNZXNzYWdlPzogRXJyb3IgfCBzdHJpbmcpOiBOb25OdWxsYWJsZTxUPiB7XG4gIGFzc2VydE5vbk51bGxhYmxlKHZhbHVlLCBlcnJvck9yTWVzc2FnZSk7XG4gIHJldHVybiB2YWx1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXlCTyxTQUFTLGtCQUFtRCxPQUFVLGdCQUFrRTtBQUM3SSxNQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFDekM7QUFBQSxFQUNGO0FBRUEscUJBQW1CLFVBQVUsT0FBTyxrQkFBa0I7QUFDdEQsUUFBTSxRQUFRLE9BQU8sbUJBQW1CLFdBQVcsSUFBSSxNQUFNLGNBQWMsSUFBSTtBQUMvRSxRQUFNO0FBQ1I7QUFhTyxTQUFTLE9BQVUsT0FBbUI7QUFDM0MsU0FBTztBQUNUO0FBVU8sU0FBUyxvQkFBc0MsUUFBOEI7QUFDbEYsU0FBTztBQUNUO0FBYU8sU0FBUyxrQkFBbUQsT0FBVSxnQkFBaUQ7QUFDNUgsb0JBQWtCLE9BQU8sY0FBYztBQUN2QyxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -12,16 +12,6 @@
|
|
|
12
12
|
* raw `===` inside the integration-only transport module (which is excluded from
|
|
13
13
|
* unit tests).
|
|
14
14
|
*/
|
|
15
|
-
/**
|
|
16
|
-
* Normalizes a vault path for comparison: unifies path separators to `/`, strips
|
|
17
|
-
* any trailing separators, and (on a case-insensitive filesystem) lowercases it.
|
|
18
|
-
*
|
|
19
|
-
* @param path - The path to normalize.
|
|
20
|
-
* @param isCaseInsensitive - Whether to compare case-insensitively. Defaults to
|
|
21
|
-
* the host filesystem's behavior (case-insensitive on Windows).
|
|
22
|
-
* @returns The normalized path.
|
|
23
|
-
*/
|
|
24
|
-
export declare function normalizeVaultPathForComparison(path: string, isCaseInsensitive?: boolean): string;
|
|
25
15
|
/**
|
|
26
16
|
* Whether a probed base path and a requested vault path refer to the same vault,
|
|
27
17
|
* comparing via {@link normalizeVaultPathForComparison} so separator-flavor and
|
|
@@ -33,4 +23,14 @@ export declare function normalizeVaultPathForComparison(path: string, isCaseInse
|
|
|
33
23
|
* the host filesystem's behavior (case-insensitive on Windows).
|
|
34
24
|
* @returns `true` when the two paths refer to the same vault.
|
|
35
25
|
*/
|
|
36
|
-
export declare function
|
|
26
|
+
export declare function areVaultPathsMatching(basePath: string, vaultPath: string, isCaseInsensitive?: boolean): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Normalizes a vault path for comparison: unifies path separators to `/`, strips
|
|
29
|
+
* any trailing separators, and (on a case-insensitive filesystem) lowercases it.
|
|
30
|
+
*
|
|
31
|
+
* @param path - The path to normalize.
|
|
32
|
+
* @param isCaseInsensitive - Whether to compare case-insensitively. Defaults to
|
|
33
|
+
* the host filesystem's behavior (case-insensitive on Windows).
|
|
34
|
+
* @returns The normalized path.
|
|
35
|
+
*/
|
|
36
|
+
export declare function normalizeVaultPathForComparison(path: string, isCaseInsensitive?: boolean): string;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import process from "node:process";
|
|
2
2
|
const IS_CASE_INSENSITIVE_FILESYSTEM = process.platform === "win32";
|
|
3
|
+
function areVaultPathsMatching(basePath, vaultPath, isCaseInsensitive = IS_CASE_INSENSITIVE_FILESYSTEM) {
|
|
4
|
+
return normalizeVaultPathForComparison(basePath, isCaseInsensitive) === normalizeVaultPathForComparison(vaultPath, isCaseInsensitive);
|
|
5
|
+
}
|
|
3
6
|
function normalizeVaultPathForComparison(path, isCaseInsensitive = IS_CASE_INSENSITIVE_FILESYSTEM) {
|
|
4
|
-
const unifiedSeparators = path.
|
|
7
|
+
const unifiedSeparators = path.replaceAll(/[\\/]+/g, "/").replace(/\/+$/, "");
|
|
5
8
|
return isCaseInsensitive ? unifiedSeparators.toLowerCase() : unifiedSeparators;
|
|
6
9
|
}
|
|
7
|
-
function vaultPathsMatch(basePath, vaultPath, isCaseInsensitive = IS_CASE_INSENSITIVE_FILESYSTEM) {
|
|
8
|
-
return normalizeVaultPathForComparison(basePath, isCaseInsensitive) === normalizeVaultPathForComparison(vaultPath, isCaseInsensitive);
|
|
9
|
-
}
|
|
10
10
|
export {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
areVaultPathsMatching,
|
|
12
|
+
normalizeVaultPathForComparison
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZhdWx0LXBhdGgtbWF0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIG1hdGNoaW5nIG9mIGEgcHJvYmVkIHZhdWx0IGJhc2UgcGF0aCBhZ2FpbnN0IGEgcmVxdWVzdGVkIHZhdWx0IHBhdGguXG4gKlxuICogVGhlIGRlc2t0b3AgQ0RQIHRyYW5zcG9ydCByb3V0ZXMgYW4gYGV2YWxJbk9ic2lkaWFuYCBjYWxsIHRvIHRoZSBjb3JyZWN0XG4gKiBPYnNpZGlhbiB3aW5kb3cgYnkgcHJvYmluZyBlYWNoIHRhcmdldCdzIGBhcHAudmF1bHQuYWRhcHRlci5nZXRCYXNlUGF0aCgpYCBhbmRcbiAqIGNvbXBhcmluZyBpdCB0byB0aGUgcmVxdWVzdGVkIHZhdWx0IHBhdGguIFRoYXQgY29tcGFyaXNvbiBtdXN0IHRvbGVyYXRlIGJlbmlnblxuICogZm9ybWF0dGluZyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSByZW5kZXJlci1yZXBvcnRlZCBiYXNlIHBhdGggYW5kIHRoZVxuICogTm9kZS1zaWRlIHBhdGggKHBhdGgtc2VwYXJhdG9yIGZsYXZvciwgYW5kIGNhc2Ugb24gY2FzZS1pbnNlbnNpdGl2ZVxuICogZmlsZXN5c3RlbXMpLCBzbyBpdCBsaXZlcyBoZXJlIGFzIGEgcHVyZSwgdW5pdC10ZXN0ZWQgaGVscGVyIHJhdGhlciB0aGFuIGFzIGFcbiAqIHJhdyBgPT09YCBpbnNpZGUgdGhlIGludGVncmF0aW9uLW9ubHkgdHJhbnNwb3J0IG1vZHVsZSAod2hpY2ggaXMgZXhjbHVkZWQgZnJvbVxuICogdW5pdCB0ZXN0cykuXG4gKi9cblxuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBob3N0IGZpbGVzeXN0ZW0gY29tcGFyZXMgcGF0aHMgY2FzZS1pbnNlbnNpdGl2ZWx5LiBXaW5kb3dzIChhbmQsIGluXG4gKiBwcmFjdGljZSwgdGhlIGRlZmF1bHQgbWFjT1Mgdm9sdW1lKSBhcmUgY2FzZS1pbnNlbnNpdGl2ZTsgdHJlYXQgb25seSBXaW5kb3dzIGFzXG4gKiBzdWNoIGJ5IGRlZmF1bHQsIG1hdGNoaW5nIHdoZXJlIHRoZSBoYXJuZXNzIHJ1bnMuXG4gKi9cbmNvbnN0IElTX0NBU0VfSU5TRU5TSVRJVkVfRklMRVNZU1RFTSA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5cbi8qKlxuICogV2hldGhlciBhIHByb2JlZCBiYXNlIHBhdGggYW5kIGEgcmVxdWVzdGVkIHZhdWx0IHBhdGggcmVmZXIgdG8gdGhlIHNhbWUgdmF1bHQsXG4gKiBjb21wYXJpbmcgdmlhIHtAbGluayBub3JtYWxpemVWYXVsdFBhdGhGb3JDb21wYXJpc29ufSBzbyBzZXBhcmF0b3ItZmxhdm9yIGFuZFxuICogKG9uIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMpIGNhc2UgZGlmZmVyZW5jZXMgZG8gbm90IGNhdXNlIGEgZmFsc2UgbWlzcy5cbiAqXG4gKiBAcGFyYW0gYmFzZVBhdGggLSBUaGUgYmFzZSBwYXRoIHByb2JlZCBmcm9tIGFuIE9ic2lkaWFuIHRhcmdldC5cbiAqIEBwYXJhbSB2YXVsdFBhdGggLSBUaGUgcmVxdWVzdGVkIHZhdWx0IHBhdGguXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBXaGV0aGVyIHRvIGNvbXBhcmUgY2FzZS1pbnNlbnNpdGl2ZWx5LiBEZWZhdWx0cyB0b1xuICogICB0aGUgaG9zdCBmaWxlc3lzdGVtJ3MgYmVoYXZpb3IgKGNhc2UtaW5zZW5zaXRpdmUgb24gV2luZG93cykuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgdHdvIHBhdGhzIHJlZmVyIHRvIHRoZSBzYW1lIHZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJlVmF1bHRQYXRoc01hdGNoaW5nKGJhc2VQYXRoOiBzdHJpbmcsIHZhdWx0UGF0aDogc3RyaW5nLCBpc0Nhc2VJbnNlbnNpdGl2ZSA9IElTX0NBU0VfSU5TRU5TSVRJVkVfRklMRVNZU1RFTSk6IGJvb2xlYW4ge1xuICByZXR1cm4gbm9ybWFsaXplVmF1bHRQYXRoRm9yQ29tcGFyaXNvbihiYXNlUGF0aCwgaXNDYXNlSW5zZW5zaXRpdmUpID09PSBub3JtYWxpemVWYXVsdFBhdGhGb3JDb21wYXJpc29uKHZhdWx0UGF0aCwgaXNDYXNlSW5zZW5zaXRpdmUpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSB2YXVsdCBwYXRoIGZvciBjb21wYXJpc29uOiB1bmlmaWVzIHBhdGggc2VwYXJhdG9ycyB0byBgL2AsIHN0cmlwc1xuICogYW55IHRyYWlsaW5nIHNlcGFyYXRvcnMsIGFuZCAob24gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW0pIGxvd2VyY2FzZXMgaXQuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0gaXNDYXNlSW5zZW5zaXRpdmUgLSBXaGV0aGVyIHRvIGNvbXBhcmUgY2FzZS1pbnNlbnNpdGl2ZWx5LiBEZWZhdWx0cyB0b1xuICogICB0aGUgaG9zdCBmaWxlc3lzdGVtJ3MgYmVoYXZpb3IgKGNhc2UtaW5zZW5zaXRpdmUgb24gV2luZG93cykuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVmF1bHRQYXRoRm9yQ29tcGFyaXNvbihwYXRoOiBzdHJpbmcsIGlzQ2FzZUluc2Vuc2l0aXZlID0gSVNfQ0FTRV9JTlNFTlNJVElWRV9GSUxFU1lTVEVNKTogc3RyaW5nIHtcbiAgY29uc3QgdW5pZmllZFNlcGFyYXRvcnMgPSBwYXRoLnJlcGxhY2VBbGwoL1tcXFxcL10rL2csICcvJykucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gIHJldHVybiBpc0Nhc2VJbnNlbnNpdGl2ZSA/IHVuaWZpZWRTZXBhcmF0b3JzLnRvTG93ZXJDYXNlKCkgOiB1bmlmaWVkU2VwYXJhdG9ycztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQWVBLE9BQU8sYUFBYTtBQU9wQixNQUFNLGlDQUFpQyxRQUFRLGFBQWE7QUFhckQsU0FBUyxzQkFBc0IsVUFBa0IsV0FBbUIsb0JBQW9CLGdDQUF5QztBQUN0SSxTQUFPLGdDQUFnQyxVQUFVLGlCQUFpQixNQUFNLGdDQUFnQyxXQUFXLGlCQUFpQjtBQUN0STtBQVdPLFNBQVMsZ0NBQWdDLE1BQWMsb0JBQW9CLGdDQUF3QztBQUN4SCxRQUFNLG9CQUFvQixLQUFLLFdBQVcsV0FBVyxHQUFHLEVBQUUsUUFBUSxRQUFRLEVBQUU7QUFDNUUsU0FBTyxvQkFBb0Isa0JBQWtCLFlBQVksSUFBSTtBQUMvRDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -31,29 +31,43 @@ export declare const DEFAULT_OBSIDIAN_VERSION_SPECS: readonly string[];
|
|
|
31
31
|
* A requested specifier that could not be resolved and was dropped.
|
|
32
32
|
*/
|
|
33
33
|
export interface DroppedVersionSpec {
|
|
34
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
Why the specifier could not be resolved.
|
|
36
|
+
*/
|
|
35
37
|
readonly reason: string;
|
|
36
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
The specifier as requested.
|
|
40
|
+
*/
|
|
37
41
|
readonly spec: string;
|
|
38
42
|
}
|
|
39
43
|
/**
|
|
40
44
|
* Parameters for {@link formatVersionMatrixPlan}.
|
|
41
45
|
*/
|
|
42
46
|
export interface FormatVersionMatrixPlanParams {
|
|
43
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
The de-duplicated matrix that will be run.
|
|
49
|
+
*/
|
|
44
50
|
readonly entries: readonly ObsidianVersionMatrixEntry[];
|
|
45
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
The specifiers that resolved, in requested order.
|
|
53
|
+
*/
|
|
46
54
|
readonly resolvedSpecs: readonly ResolvedVersionSpec[];
|
|
47
55
|
}
|
|
48
56
|
/**
|
|
49
57
|
* Parameters for {@link formatVersionMatrixRunHeader}.
|
|
50
58
|
*/
|
|
51
59
|
export interface FormatVersionMatrixRunHeaderParams {
|
|
52
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
The entry about to run.
|
|
62
|
+
*/
|
|
53
63
|
readonly entry: ObsidianVersionMatrixEntry;
|
|
54
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
The entry's zero-based position in the matrix.
|
|
66
|
+
*/
|
|
55
67
|
readonly index: number;
|
|
56
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
The total number of entries in the matrix.
|
|
70
|
+
*/
|
|
57
71
|
readonly total: number;
|
|
58
72
|
}
|
|
59
73
|
/**
|
|
@@ -65,16 +79,22 @@ export interface ObsidianVersionMatrixEntry {
|
|
|
65
79
|
* order. More than one means the specifiers coincided and were collapsed.
|
|
66
80
|
*/
|
|
67
81
|
readonly specs: readonly string[];
|
|
68
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
The concrete `x.y.z` version.
|
|
84
|
+
*/
|
|
69
85
|
readonly version: string;
|
|
70
86
|
}
|
|
71
87
|
/**
|
|
72
88
|
* A requested specifier paired with the concrete version it resolved to.
|
|
73
89
|
*/
|
|
74
90
|
export interface ResolvedVersionSpec {
|
|
75
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
The specifier as requested (an `x.y.z` version or a channel alias).
|
|
93
|
+
*/
|
|
76
94
|
readonly spec: string;
|
|
77
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
The concrete `x.y.z` version it resolved to.
|
|
97
|
+
*/
|
|
78
98
|
readonly version: string;
|
|
79
99
|
}
|
|
80
100
|
/**
|
|
@@ -86,7 +106,9 @@ export interface ResolveRequestedSpecsResult {
|
|
|
86
106
|
* rather than being explicitly requested.
|
|
87
107
|
*/
|
|
88
108
|
readonly isDefault: boolean;
|
|
89
|
-
/**
|
|
109
|
+
/**
|
|
110
|
+
The specifiers to resolve, in order.
|
|
111
|
+
*/
|
|
90
112
|
readonly specs: readonly string[];
|
|
91
113
|
}
|
|
92
114
|
/**
|
|
@@ -106,27 +128,39 @@ export interface ResolveVersionSpecsParams {
|
|
|
106
128
|
* error.
|
|
107
129
|
*/
|
|
108
130
|
readonly shouldTolerateUnresolvableSpecs: boolean;
|
|
109
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
The requested specifiers, in order.
|
|
133
|
+
*/
|
|
110
134
|
readonly specs: readonly string[];
|
|
111
135
|
}
|
|
112
136
|
/**
|
|
113
137
|
* The outcome of {@link resolveVersionSpecs}.
|
|
114
138
|
*/
|
|
115
139
|
export interface ResolveVersionSpecsResult {
|
|
116
|
-
/**
|
|
140
|
+
/**
|
|
141
|
+
Specifiers dropped because they could not be resolved (tolerant mode only).
|
|
142
|
+
*/
|
|
117
143
|
readonly droppedSpecs: readonly DroppedVersionSpec[];
|
|
118
|
-
/**
|
|
144
|
+
/**
|
|
145
|
+
The specifiers that resolved, in requested order.
|
|
146
|
+
*/
|
|
119
147
|
readonly resolvedSpecs: readonly ResolvedVersionSpec[];
|
|
120
148
|
}
|
|
121
149
|
/**
|
|
122
150
|
* Parameters for {@link runVersionMatrixEntries}.
|
|
123
151
|
*/
|
|
124
152
|
export interface RunVersionMatrixEntriesParams {
|
|
125
|
-
/**
|
|
153
|
+
/**
|
|
154
|
+
The de-duplicated matrix to run.
|
|
155
|
+
*/
|
|
126
156
|
readonly entries: readonly ObsidianVersionMatrixEntry[];
|
|
127
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
Called just before each entry runs, for progress reporting.
|
|
159
|
+
*/
|
|
128
160
|
readonly onEntryStart: (params: FormatVersionMatrixRunHeaderParams) => void;
|
|
129
|
-
/**
|
|
161
|
+
/**
|
|
162
|
+
Runs the suites against a single entry, throwing on failure.
|
|
163
|
+
*/
|
|
130
164
|
readonly run: (entry: ObsidianVersionMatrixEntry) => Promise<void> | void;
|
|
131
165
|
}
|
|
132
166
|
/**
|
|
@@ -144,4 +144,4 @@ export {
|
|
|
144
144
|
resolveVersionSpecs,
|
|
145
145
|
runVersionMatrixEntries
|
|
146
146
|
};
|
|
147
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb24tbWF0cml4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBkZWNpc2lvbiBsYXllciBmb3IgcnVubmluZyBhIHN1aXRlIGFnYWluc3QgKipldmVyeSoqIHN1cHBvcnRlZCBPYnNpZGlhblxuICogdmVyc2lvbi5cbiAqXG4gKiBTdXBwb3J0IGlzIHRoZSByYW5nZSBgW2xhdGVzdCBwdWJsaWMsIGxhdGVzdCBjYXRhbHlzdF1gIGFuZCBib3RoIGVuZHMgbXVzdCBiZVxuICogdmVyaWZpZWQgKEc5OSkuIFRoZSB0d28gZW5kcyBhcmUgbW92aW5nIHRhcmdldHMsIGFuZCB0aGV5IHBlcmlvZGljYWxseVxuICogKipjb2luY2lkZSoqIFx1MjAxNCB3aGVuIHB1YmxpYyBjYXRjaGVzIHVwIHRvIGNhdGFseXN0LCBib3RoIHNwZWNpZmllcnMgcHJvdmlzaW9uXG4gKiB0aGUgc2FtZSBidWlsZCwgc28gcnVubmluZyB0aGUgc3VpdGVzIHR3aWNlIHJlLXJ1bnMgdGhlIHNhbWUgYnVpbGQgYW5kIGJ1eXNcbiAqIG5vdGhpbmcuIFdvcnNlLCBhIGNvbnN1bWVyIHRoYXQgcmFuIGJvdGggc3RpbGwgcmVwb3J0cyBcImdyZWVuIG9uIHB1YmxpYyBBTkRcbiAqIGNhdGFseXN0XCIsIGEgdHdvLWVuZCBjbGFpbSBpdCBuZXZlciB2ZXJpZmllZC5cbiAqXG4gKiBUaGUgZGVjaXNpb24gdGhlcmVmb3JlIGxpdmVzIGhlcmUgcmF0aGVyIHRoYW4gaW4gZXZlcnkgY29uc3VtaW5nIHJlcG86IGEgbGlzdFxuICogb2YgdmVyc2lvbiBzcGVjaWZpZXJzIGlzIHJlc29sdmVkIHRvIGNvbmNyZXRlIHZlcnNpb25zLCAqKmRlLWR1cGxpY2F0ZWQgb24gdGhlXG4gKiByZXNvbHZlZCB2ZXJzaW9uKiogKG5ldmVyIG9uIHRoZSBzcGVjaWZpZXIgc3RyaW5nLCBzbyBhbiBleHBsaWNpdCBgMS4xMy40YCBhbmRcbiAqIGBjYXRhbHlzdC1sYXRlc3RgIGNvbGxhcHNlIHdoZW4gY2F0YWx5c3QgKmlzKiAxLjEzLjQpLCBhbmQgdGhlIHN1aXRlcyBydW4gb25jZVxuICogcGVyIGRpc3RpbmN0IHZlcnNpb24uXG4gKlxuICogRXZlcnl0aGluZyBoZXJlIGlzIHB1cmUgYW5kIHVuaXQtdGVzdGVkOyB0aGUgbWFuaWZlc3QgZmV0Y2ggYW5kIHRoZSBsb2dnaW5nXG4gKiBsaXZlIGluIHRoZSBpbnRlZ3JhdGlvbi10aW1lIGBydW4tdmVyc2lvbi1tYXRyaXgudHNgIGdsdWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB9IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuXG5pbXBvcnQge1xuICBDQVRBTFlTVF9MQVRFU1QsXG4gIHBhcnNlVmVyc2lvblNwZWMsXG4gIFBVQkxJQ19MQVRFU1QsXG4gIHJlc29sdmVWZXJzaW9uRnJvbU1hbmlmZXN0XG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIHNwZWNpZmllcnMgYSBtYXRyaXggcnVuIGRlZmF1bHRzIHRvOiBib3RoIGVuZHMgb2YgdGhlIHN1cHBvcnRlZFxuICogcmFuZ2UgKEc5OSkuIFRoZXkgYXJlIGRlLWR1cGxpY2F0ZWQgb24gdGhlaXIgcmVzb2x2ZWQgdmVyc2lvbnMsIHNvIHdoZW4gcHVibGljXG4gKiBoYXMgY2F1Z2h0IHVwIHRvIGNhdGFseXN0IHRoaXMgeWllbGRzIGEgc2luZ2xlIHJ1bi5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbUFVCTElDX0xBVEVTVCwgQ0FUQUxZU1RfTEFURVNUXTtcblxuLyoqXG4gKiBBIHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgYW5kIHdhcyBkcm9wcGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyb3BwZWRWZXJzaW9uU3BlYyB7XG4gIC8qKiBXaHkgdGhlIHNwZWNpZmllciBjb3VsZCBub3QgYmUgcmVzb2x2ZWQuICovXG4gIHJlYWRvbmx5IHJlYXNvbjogc3RyaW5nO1xuXG4gIC8qKiBUaGUgc3BlY2lmaWVyIGFzIHJlcXVlc3RlZC4gKi9cbiAgcmVhZG9ubHkgc3BlYzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmb3JtYXRWZXJzaW9uTWF0cml4UGxhbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0VmVyc2lvbk1hdHJpeFBsYW5QYXJhbXMge1xuICAvKiogVGhlIGRlLWR1cGxpY2F0ZWQgbWF0cml4IHRoYXQgd2lsbCBiZSBydW4uICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W107XG5cbiAgLyoqIFRoZSBzcGVjaWZpZXJzIHRoYXQgcmVzb2x2ZWQsIGluIHJlcXVlc3RlZCBvcmRlci4gKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRTcGVjczogcmVhZG9ubHkgUmVzb2x2ZWRWZXJzaW9uU3BlY1tdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBmb3JtYXRWZXJzaW9uTWF0cml4UnVuSGVhZGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRWZXJzaW9uTWF0cml4UnVuSGVhZGVyUGFyYW1zIHtcbiAgLyoqIFRoZSBlbnRyeSBhYm91dCB0byBydW4uICovXG4gIHJlYWRvbmx5IGVudHJ5OiBPYnNpZGlhblZlcnNpb25NYXRyaXhFbnRyeTtcblxuICAvKiogVGhlIGVudHJ5J3MgemVyby1iYXNlZCBwb3NpdGlvbiBpbiB0aGUgbWF0cml4LiAqL1xuICByZWFkb25seSBpbmRleDogbnVtYmVyO1xuXG4gIC8qKiBUaGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIG1hdHJpeC4gKi9cbiAgcmVhZG9ubHkgdG90YWw6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBPbmUgZGlzdGluY3QgT2JzaWRpYW4gdmVyc2lvbiB0aGUgc3VpdGVzIHdpbGwgcnVuIGFnYWluc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkge1xuICAvKipcbiAgICogRXZlcnkgcmVxdWVzdGVkIHNwZWNpZmllciB0aGF0IHJlc29sdmVkIHRvIHtAbGluayB2ZXJzaW9ufSwgaW4gcmVxdWVzdGVkXG4gICAqIG9yZGVyLiBNb3JlIHRoYW4gb25lIG1lYW5zIHRoZSBzcGVjaWZpZXJzIGNvaW5jaWRlZCBhbmQgd2VyZSBjb2xsYXBzZWQuXG4gICAqL1xuICByZWFkb25seSBzcGVjczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqIFRoZSBjb25jcmV0ZSBgeC55LnpgIHZlcnNpb24uICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJlcXVlc3RlZCBzcGVjaWZpZXIgcGFpcmVkIHdpdGggdGhlIGNvbmNyZXRlIHZlcnNpb24gaXQgcmVzb2x2ZWQgdG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRWZXJzaW9uU3BlYyB7XG4gIC8qKiBUaGUgc3BlY2lmaWVyIGFzIHJlcXVlc3RlZCAoYW4gYHgueS56YCB2ZXJzaW9uIG9yIGEgY2hhbm5lbCBhbGlhcykuICovXG4gIHJlYWRvbmx5IHNwZWM6IHN0cmluZztcblxuICAvKiogVGhlIGNvbmNyZXRlIGB4LnkuemAgdmVyc2lvbiBpdCByZXNvbHZlZCB0by4gKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBvdXRjb21lIG9mIHtAbGluayByZXNvbHZlUmVxdWVzdGVkU3BlY3N9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVSZXF1ZXN0ZWRTcGVjc1Jlc3VsdCB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzcGVjaWZpZXJzIGNhbWUgZnJvbSB7QGxpbmsgREVGQVVMVF9PQlNJRElBTl9WRVJTSU9OX1NQRUNTfVxuICAgKiByYXRoZXIgdGhhbiBiZWluZyBleHBsaWNpdGx5IHJlcXVlc3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzRGVmYXVsdDogYm9vbGVhbjtcblxuICAvKiogVGhlIHNwZWNpZmllcnMgdG8gcmVzb2x2ZSwgaW4gb3JkZXIuICovXG4gIHJlYWRvbmx5IHNwZWNzOiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZVZlcnNpb25TcGVjc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVZlcnNpb25TcGVjc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZGVza3RvcCByZWxlYXNlcyBtYW5pZmVzdCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBubyByZXF1ZXN0ZWQgc3BlY2lmaWVyIGlzXG4gICAqIGEgY2hhbm5lbCBhbGlhcyAoc28gbm8gZmV0Y2ggd2FzIG5lZWRlZCkuXG4gICAqL1xuICByZWFkb25seSBtYW5pZmVzdDogRGVza3RvcFJlbGVhc2VzTWFuaWZlc3QgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYSBzcGVjaWZpZXIgdGhhdCBjYW5ub3QgYmUgcmVzb2x2ZWQgaXMgZHJvcHBlZCB3aXRoIGEgcmVjb3JkZWRcbiAgICogcmVhc29uIGluc3RlYWQgb2YgdGhyb3dpbmcuIFNldCBmb3IgdGhlICoqZGVmYXVsdCoqIHNwZWNpZmllciBsaXN0IG9ubHk6IGFcbiAgICogbWFuaWZlc3QgdGhhdCBzaGlwcyBubyBjYXRhbHlzdCBlbnRyeSBtdXN0IG5vdCBicmVhayBldmVyeSBjb25zdW1lcidzIGdhdGUsXG4gICAqIHdoZXJlYXMgYW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgc3BlY2lmaWVyIHRoYXQgY2Fubm90IHJlc29sdmUgaXMgYSByZWFsXG4gICAqIGVycm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVG9sZXJhdGVVbnJlc29sdmFibGVTcGVjczogYm9vbGVhbjtcblxuICAvKiogVGhlIHJlcXVlc3RlZCBzcGVjaWZpZXJzLCBpbiBvcmRlci4gKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBvdXRjb21lIG9mIHtAbGluayByZXNvbHZlVmVyc2lvblNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlVmVyc2lvblNwZWNzUmVzdWx0IHtcbiAgLyoqIFNwZWNpZmllcnMgZHJvcHBlZCBiZWNhdXNlIHRoZXkgY291bGQgbm90IGJlIHJlc29sdmVkICh0b2xlcmFudCBtb2RlIG9ubHkpLiAqL1xuICByZWFkb25seSBkcm9wcGVkU3BlY3M6IHJlYWRvbmx5IERyb3BwZWRWZXJzaW9uU3BlY1tdO1xuXG4gIC8qKiBUaGUgc3BlY2lmaWVycyB0aGF0IHJlc29sdmVkLCBpbiByZXF1ZXN0ZWQgb3JkZXIuICovXG4gIHJlYWRvbmx5IHJlc29sdmVkU3BlY3M6IHJlYWRvbmx5IFJlc29sdmVkVmVyc2lvblNwZWNbXTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcnVuVmVyc2lvbk1hdHJpeEVudHJpZXN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1blZlcnNpb25NYXRyaXhFbnRyaWVzUGFyYW1zIHtcbiAgLyoqIFRoZSBkZS1kdXBsaWNhdGVkIG1hdHJpeCB0byBydW4uICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W107XG5cbiAgLyoqIENhbGxlZCBqdXN0IGJlZm9yZSBlYWNoIGVudHJ5IHJ1bnMsIGZvciBwcm9ncmVzcyByZXBvcnRpbmcuICovXG4gIHJlYWRvbmx5IG9uRW50cnlTdGFydDogKHBhcmFtczogRm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlclBhcmFtcykgPT4gdm9pZDtcblxuICAvKiogUnVucyB0aGUgc3VpdGVzIGFnYWluc3QgYSBzaW5nbGUgZW50cnksIHRocm93aW5nIG9uIGZhaWx1cmUuICovXG4gIHJlYWRvbmx5IHJ1bjogKGVudHJ5OiBPYnNpZGlhblZlcnNpb25NYXRyaXhFbnRyeSkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG59XG5cbi8qKlxuICogQ29sbGFwc2VzIHJlc29sdmVkIHNwZWNpZmllcnMgaW50byBvbmUgZW50cnkgcGVyICoqZGlzdGluY3QgcmVzb2x2ZWQgdmVyc2lvbioqLlxuICpcbiAqIERlLWR1cGxpY2F0aW9uIGlzIGtleWVkIG9uIHRoZSByZXNvbHZlZCB2ZXJzaW9uLCBub3QgdGhlIHNwZWNpZmllciBzdHJpbmcsIHNvXG4gKiBzcGVjaWZpZXJzIHRoYXQgbmFtZSB0aGUgc2FtZSBidWlsZCBjb2xsYXBzZSBob3dldmVyIHRoZXkgd2VyZSB3cml0dGVuLlxuICogRmlyc3Qtc2VlbiBvcmRlciBpcyBwcmVzZXJ2ZWQsIGFuZCBldmVyeSBzcGVjaWZpZXIgdGhhdCBsYW5kZWQgb24gYSB2ZXJzaW9uIGlzXG4gKiByZWNvcmRlZCBvbiBpdHMgZW50cnkuXG4gKlxuICogQHBhcmFtIHJlc29sdmVkU3BlY3MgLSBUaGUgcmVzb2x2ZWQgc3BlY2lmaWVycywgaW4gcmVxdWVzdGVkIG9yZGVyLlxuICogQHJldHVybnMgT25lIGVudHJ5IHBlciBkaXN0aW5jdCB2ZXJzaW9uLCBpbiBmaXJzdC1zZWVuIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRWZXJzaW9uTWF0cml4KHJlc29sdmVkU3BlY3M6IHJlYWRvbmx5IFJlc29sdmVkVmVyc2lvblNwZWNbXSk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W10ge1xuICBjb25zdCBzcGVjc0J5VmVyc2lvbiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcblxuICBmb3IgKGNvbnN0IHsgc3BlYywgdmVyc2lvbiB9IG9mIHJlc29sdmVkU3BlY3MpIHtcbiAgICBjb25zdCBzcGVjcyA9IHNwZWNzQnlWZXJzaW9uLmdldCh2ZXJzaW9uKTtcbiAgICBpZiAoIXNwZWNzKSB7XG4gICAgICBzcGVjc0J5VmVyc2lvbi5zZXQodmVyc2lvbiwgW3NwZWNdKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoIXNwZWNzLmluY2x1ZGVzKHNwZWMpKSB7XG4gICAgICBzcGVjcy5wdXNoKHNwZWMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbLi4uc3BlY3NCeVZlcnNpb25dLm1hcCgoW3ZlcnNpb24sIHNwZWNzXSkgPT4gKHsgc3BlY3MsIHZlcnNpb24gfSkpO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYW4gZW50cnkgZm9yIGxvZ3MgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIFNwZWNpZmllcnMgdGhhdCBtZXJlbHkgcmVwZWF0IHRoZSB2ZXJzaW9uIGFkZCBub3RoaW5nLCBzbyBhbiBleHBsaWNpdC1vbmx5XG4gKiBlbnRyeSBmb3JtYXRzIGFzIHRoZSBiYXJlIHZlcnNpb24gcmF0aGVyIHRoYW4gYDEuMTMuNCAoMS4xMy40KWAuXG4gKlxuICogQHBhcmFtIGVudHJ5IC0gVGhlIGVudHJ5IHRvIGZvcm1hdC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIGxpa2UgYDEuMTMuNCAocHVibGljLWxhdGVzdCwgY2F0YWx5c3QtbGF0ZXN0KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5KTogc3RyaW5nIHtcbiAgY29uc3QgeyBzcGVjcywgdmVyc2lvbiB9ID0gZW50cnk7XG4gIGNvbnN0IGFsaWFzU3BlY3MgPSBzcGVjcy5maWx0ZXIoKHNwZWMpID0+IHNwZWMgIT09IHZlcnNpb24pO1xuICBpZiAoYWxpYXNTcGVjcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdmVyc2lvbjtcbiAgfVxuICByZXR1cm4gYCR7dmVyc2lvbn0gKCR7YWxpYXNTcGVjcy5qb2luKCcsICcpfSlgO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgbGluZXMgYW5ub3VuY2luZyB3aGF0IHRoZSBtYXRyaXggcmVzb2x2ZWQgdG8gYW5kIGhvdyBtYW55IHJ1bnMgaXRcbiAqIHdpbGwgdGFrZS5cbiAqXG4gKiBUaGUgY29sbGFwc2UgbXVzdCBiZSAqKnN0YXRlZCoqLCBuZXZlciBpbmZlcnJlZDogYSByZWFkZXIgd2hvIHNlZXMgb25lIHJ1blxuICogd2hlcmUgdGhleSBleHBlY3RlZCB0d28gaGFzIHRvIGJlIHRvbGQgdGhlIHNlY29uZCBlbmQgd2FzIGFscmVhZHkgY292ZXJlZCxcbiAqIG5vdCBsZWZ0IHdvbmRlcmluZyB3aGV0aGVyIGl0IHdhcyBza2lwcGVkIGJ5IGFjY2lkZW50LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbWF0cml4IGFuZCB0aGUgc3BlY2lmaWVycyBpdCB3YXMgYnVpbHQgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSBsaW5lcyB0byBsb2csIGluIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmVyc2lvbk1hdHJpeFBsYW4ocGFyYW1zOiBGb3JtYXRWZXJzaW9uTWF0cml4UGxhblBhcmFtcyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgeyBlbnRyaWVzLCByZXNvbHZlZFNwZWNzIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgbGluZXMgPSByZXNvbHZlZFNwZWNzXG4gICAgLmZpbHRlcigoeyBzcGVjLCB2ZXJzaW9uIH0pID0+IHNwZWMgIT09IHZlcnNpb24pXG4gICAgLm1hcCgoeyBzcGVjLCB2ZXJzaW9uIH0pID0+IGAke3NwZWN9IC0+ICR7dmVyc2lvbn1gKTtcblxuICBjb25zdCBzcGVjaWZpZXJDb3VudCA9IHJlc29sdmVkU3BlY3MubGVuZ3RoO1xuICBjb25zdCB2ZXJzaW9uQ291bnQgPSBlbnRyaWVzLmxlbmd0aDtcbiAgY29uc3QgZm9ybWF0dGVkRW50cmllcyA9IGVudHJpZXMubWFwKChlbnRyeSkgPT4gZm9ybWF0VmVyc2lvbk1hdHJpeEVudHJ5KGVudHJ5KSkuam9pbignLCAnKTtcblxuICBsaW5lcy5wdXNoKFxuICAgIGAke1N0cmluZyhzcGVjaWZpZXJDb3VudCl9IHJlcXVlc3RlZCAke3BsdXJhbGl6ZShzcGVjaWZpZXJDb3VudCwgJ3NwZWNpZmllcicpfSBgXG4gICAgICArIGAke3Jlc29sdmVWZXJiKHNwZWNpZmllckNvdW50KX0gdG8gJHtTdHJpbmcodmVyc2lvbkNvdW50KX0gZGlzdGluY3QgJHtwbHVyYWxpemUodmVyc2lvbkNvdW50LCAndmVyc2lvbicpfTogYFxuICAgICAgKyBgJHtmb3JtYXR0ZWRFbnRyaWVzfS4gUnVubmluZyB0aGUgc3VpdGVzICR7Zm9ybWF0UnVuQ291bnQodmVyc2lvbkNvdW50KX0uYFxuICApO1xuXG4gIHJldHVybiBsaW5lcztcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIHByb2dyZXNzIGxpbmUgYW5ub3VuY2luZyBhIHNpbmdsZSBlbnRyeSdzIHJ1bi5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIGVudHJ5IGFuZCBpdHMgcG9zaXRpb24gaW4gdGhlIG1hdHJpeC5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIGxpa2UgYFJ1biAxIG9mIDI6IDEuMTIuNyAocHVibGljLWxhdGVzdClgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlcihwYXJhbXM6IEZvcm1hdFZlcnNpb25NYXRyaXhSdW5IZWFkZXJQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7IGVudHJ5LCBpbmRleCwgdG90YWwgfSA9IHBhcmFtcztcbiAgcmV0dXJuIGBSdW4gJHtTdHJpbmcoaW5kZXggKyAxKX0gb2YgJHtTdHJpbmcodG90YWwpfTogJHtmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnkpfWA7XG59XG5cbi8qKlxuICogUmVwb3J0cyB3aGV0aGVyIGFueSBzcGVjaWZpZXIgaXMgYSBjaGFubmVsIGFsaWFzLCBpLmUuIHdoZXRoZXIgdGhlIHJlbGVhc2VzXG4gKiBtYW5pZmVzdCBoYXMgdG8gYmUgZmV0Y2hlZCBhdCBhbGwuXG4gKlxuICogQHBhcmFtIHNwZWNzIC0gVGhlIHJlcXVlc3RlZCBzcGVjaWZpZXJzLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gYXQgbGVhc3Qgb25lIHNwZWNpZmllciByZXNvbHZlcyBhZ2FpbnN0IHRoZSBtYW5pZmVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0NoYW5uZWxTcGVjKHNwZWNzOiByZWFkb25seSBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3BlY3Muc29tZSgoc3BlYykgPT4gc3BlYyA9PT0gUFVCTElDX0xBVEVTVCB8fCBzcGVjID09PSBDQVRBTFlTVF9MQVRFU1QpO1xufVxuXG4vKipcbiAqIFNwbGl0cyBhIGNvbW1hLXNlcGFyYXRlZCBzcGVjaWZpZXIgbGlzdCwgc28gYSBjb25zdW1lciBjYW4gaGFuZCBhbiBlbnYgdmFyXG4gKiAoYE9CU0lESUFOX1ZFUlNJT049MS4xMi43LGNhdGFseXN0LWxhdGVzdGApIHN0cmFpZ2h0IHRocm91Z2guXG4gKlxuICogQHBhcmFtIHJhdyAtIFRoZSByYXcgY29tbWEtc2VwYXJhdGVkIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSB0cmltbWVkLCBub24tZW1wdHkgc3BlY2lmaWVycywgaW4gb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVZlcnNpb25TcGVjTGlzdChyYXc6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHJhdy5zcGxpdCgnLCcpLm1hcCgoc3BlYykgPT4gc3BlYy50cmltKCkpLmZpbHRlcigoc3BlYykgPT4gc3BlYyAhPT0gJycpO1xufVxuXG4vKipcbiAqIE5vcm1hbGl6ZXMgdGhlIHJlcXVlc3RlZCB2ZXJzaW9uIHNwZWNpZmllcnMsIGZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdFxuICogYm90aC1lbmRzIGxpc3Qgd2hlbiBub25lIHdlcmUgZ2l2ZW4uXG4gKlxuICogQW4gZW1wdHkgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYWJzZW50LCBzbyBhIGNvbnN1bWVyIGNhbiBwYXNzIGFuIHVuc2V0XG4gKiBgcHJvY2Vzcy5lbnZbJ09CU0lESUFOX1ZFUlNJT04nXWAgd2l0aG91dCBndWFyZGluZyBpdC5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvbnMgLSBBbiBhcnJheSBvZiBzcGVjaWZpZXJzLCBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcsIG9yIGB1bmRlZmluZWRgLlxuICogQHJldHVybnMgVGhlIHNwZWNpZmllcnMgdG8gcmVzb2x2ZSwgYW5kIHdoZXRoZXIgdGhleSBjYW1lIGZyb20gdGhlIGRlZmF1bHQgbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZXF1ZXN0ZWRTcGVjcyh2ZXJzaW9uczogcmVhZG9ubHkgc3RyaW5nW10gfCBzdHJpbmcgfCB1bmRlZmluZWQpOiBSZXNvbHZlUmVxdWVzdGVkU3BlY3NSZXN1bHQge1xuICBjb25zdCBzcGVjcyA9IHR5cGVvZiB2ZXJzaW9ucyA9PT0gJ3N0cmluZycgPyBwYXJzZVZlcnNpb25TcGVjTGlzdCh2ZXJzaW9ucykgOiBbLi4udmVyc2lvbnMgPz8gW11dO1xuICBpZiAoc3BlY3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHsgaXNEZWZhdWx0OiB0cnVlLCBzcGVjczogWy4uLkRFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDU10gfTtcbiAgfVxuICByZXR1cm4geyBpc0RlZmF1bHQ6IGZhbHNlLCBzcGVjcyB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGVhY2ggcmVxdWVzdGVkIHNwZWNpZmllciB0byBhIGNvbmNyZXRlIHZlcnNpb24gYWdhaW5zdCBhXG4gKiBzaW5nbGUgbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBzcGVjaWZpZXJzLCB0aGUgbWFuaWZlc3QsIGFuZCB0aGUgdG9sZXJhbmNlIG1vZGUuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgc3BlY2lmaWVycyBhbmQgYW55IHRoYXQgd2VyZSBkcm9wcGVkLlxuICogQHRocm93cyBFcnJvciBpZiBhIHNwZWNpZmllciBjYW5ub3QgYmUgcmVzb2x2ZWQgYW5kIHRvbGVyYW5jZSBpcyBvZmYsIG9yIGlmXG4gKiAgIHRvbGVyYW5jZSBpcyBvbiBidXQgbm90aGluZyByZXNvbHZlZCBhdCBhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVmVyc2lvblNwZWNzKHBhcmFtczogUmVzb2x2ZVZlcnNpb25TcGVjc1BhcmFtcyk6IFJlc29sdmVWZXJzaW9uU3BlY3NSZXN1bHQge1xuICBjb25zdCB7IG1hbmlmZXN0LCBzaG91bGRUb2xlcmF0ZVVucmVzb2x2YWJsZVNwZWNzLCBzcGVjcyB9ID0gcGFyYW1zO1xuXG4gIGNvbnN0IGRyb3BwZWRTcGVjczogRHJvcHBlZFZlcnNpb25TcGVjW10gPSBbXTtcbiAgY29uc3QgcmVzb2x2ZWRTcGVjczogUmVzb2x2ZWRWZXJzaW9uU3BlY1tdID0gW107XG5cbiAgZm9yIChjb25zdCBzcGVjIG9mIHNwZWNzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc29sdmVkU3BlY3MucHVzaCh7IHNwZWMsIHZlcnNpb246IHJlc29sdmVTcGVjKHNwZWMsIG1hbmlmZXN0KSB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFzaG91bGRUb2xlcmF0ZVVucmVzb2x2YWJsZVNwZWNzKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgZHJvcHBlZFNwZWNzLnB1c2goeyByZWFzb246IHRvUmVhc29uKGVycm9yKSwgc3BlYyB9KTtcbiAgICB9XG4gIH1cblxuICBpZiAocmVzb2x2ZWRTcGVjcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgTm8gT2JzaWRpYW4gdmVyc2lvbiBjb3VsZCBiZSByZXNvbHZlZCBmcm9tOiAke3NwZWNzLmpvaW4oJywgJyl9LiAke2Ryb3BwZWRTcGVjcy5tYXAoKHsgcmVhc29uLCBzcGVjIH0pID0+IGAke3NwZWN9OiAke3JlYXNvbn1gKS5qb2luKCc7ICcpfWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHsgZHJvcHBlZFNwZWNzLCByZXNvbHZlZFNwZWNzIH07XG59XG5cbi8qKlxuICogUnVucyB0aGUgc3VpdGVzIG9uY2UgcGVyIG1hdHJpeCBlbnRyeSwgKiphbHdheXMgcnVubmluZyBldmVyeSBlbnRyeSoqIGJlZm9yZVxuICogcmVwb3J0aW5nLlxuICpcbiAqIEEgZmFpbGluZyBlbmQgbXVzdCBub3QgaGlkZSB0aGUgc3RhdGUgb2YgdGhlIG90aGVyOiBzdG9wcGluZyBhdCB0aGUgZmlyc3RcbiAqIGZhaWx1cmUgd291bGQgbGVhdmUgXCJjYXRhbHlzdCBicm9rZVwiIGFuZCBcImJvdGggZW5kcyBicm9rZVwiIGluZGlzdGluZ3Vpc2hhYmxlXG4gKiB3aXRob3V0IGEgc2Vjb25kIHJ1bi4gRXZlcnkgZW50cnkgdGhlcmVmb3JlIHJ1bnMsIGFuZCB0aGUgc3VtbWFyeSBuYW1lcyB3aGljaFxuICogY29uY3JldGUgdmVyc2lvbnMgZmFpbGVkIGFuZCB3aGljaCBwYXNzZWQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBtYXRyaXgsIHRoZSBwZXItZW50cnkgcnVubmVyLCBhbmQgdGhlIHByb2dyZXNzIHJlcG9ydGVyLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyBvbmNlIGV2ZXJ5IGVudHJ5IGhhcyBydW4gc3VjY2Vzc2Z1bGx5LlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgbWF0cml4IGlzIGVtcHR5LCBvciBhbiB7QGxpbmsgQWdncmVnYXRlRXJyb3J9IG5hbWluZyBldmVyeVxuICogICB2ZXJzaW9uIHRoYXQgZmFpbGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuVmVyc2lvbk1hdHJpeEVudHJpZXMocGFyYW1zOiBSdW5WZXJzaW9uTWF0cml4RW50cmllc1BhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IGVudHJpZXMsIG9uRW50cnlTdGFydCwgcnVuIH0gPSBwYXJhbXM7XG5cbiAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWZ1c2luZyB0byBydW4gYW4gZW1wdHkgT2JzaWRpYW4gdmVyc2lvbiBtYXRyaXg6IG5vIHZlcnNpb24gd291bGQgYmUgdmVyaWZpZWQuJyk7XG4gIH1cblxuICBjb25zdCBlcnJvcnM6IHVua25vd25bXSA9IFtdO1xuICBjb25zdCBmYWlsZWRFbnRyaWVzOiBPYnNpZGlhblZlcnNpb25NYXRyaXhFbnRyeVtdID0gW107XG4gIGNvbnN0IHBhc3NlZEVudHJpZXM6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IFtpbmRleCwgZW50cnldIG9mIGVudHJpZXMuZW50cmllcygpKSB7XG4gICAgb25FbnRyeVN0YXJ0KHsgZW50cnksIGluZGV4LCB0b3RhbDogZW50cmllcy5sZW5ndGggfSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJ1bihlbnRyeSk7XG4gICAgICBwYXNzZWRFbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBlcnJvcnMucHVzaChlcnJvcik7XG4gICAgICBmYWlsZWRFbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChmYWlsZWRFbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBhc3NlZENsYXVzZSA9IHBhc3NlZEVudHJpZXMubGVuZ3RoID09PSAwXG4gICAgPyAnJ1xuICAgIDogYCBQYXNzZWQ6ICR7cGFzc2VkRW50cmllcy5tYXAoKGVudHJ5KSA9PiBmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnkpKS5qb2luKCcsICcpfS5gO1xuXG4gIHRocm93IG5ldyBBZ2dyZWdhdGVFcnJvcihcbiAgICBlcnJvcnMsXG4gICAgYE9ic2lkaWFuIHZlcnNpb24gbWF0cml4IGZhaWxlZCBvbiAke1N0cmluZyhmYWlsZWRFbnRyaWVzLmxlbmd0aCl9IG9mICR7U3RyaW5nKGVudHJpZXMubGVuZ3RoKX0gYFxuICAgICAgKyBgJHtwbHVyYWxpemUoZW50cmllcy5sZW5ndGgsICd2ZXJzaW9uJyl9OiBgXG4gICAgICArIGAke2ZhaWxlZEVudHJpZXMubWFwKChlbnRyeSkgPT4gZm9ybWF0VmVyc2lvbk1hdHJpeEVudHJ5KGVudHJ5KSkuam9pbignLCAnKX0uJHtwYXNzZWRDbGF1c2V9YFxuICApO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgYSBydW4gY291bnQgYXMgcHJvc2UsIHNvIHRoZSBzaW5nbGUtcnVuIGNhc2UgcmVhZHMgYXMgYSBkZWxpYmVyYXRlXG4gKiBkZWNpc2lvbiByYXRoZXIgdGhhbiBhIHN1c3BpY2lvdXMgYDFgLlxuICpcbiAqIEBwYXJhbSBjb3VudCAtIFRoZSBudW1iZXIgb2YgcnVucy5cbiAqIEByZXR1cm5zIGBvbmNlYCwgYHR3aWNlYCwgb3IgYE4gdGltZXNgLlxuICovXG5mdW5jdGlvbiBmb3JtYXRSdW5Db3VudChjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgY29uc3QgVFdJQ0UgPSAyO1xuICBpZiAoY291bnQgPT09IDEpIHtcbiAgICByZXR1cm4gJ29uY2UnO1xuICB9XG4gIGlmIChjb3VudCA9PT0gVFdJQ0UpIHtcbiAgICByZXR1cm4gJ3R3aWNlJztcbiAgfVxuICByZXR1cm4gYCR7U3RyaW5nKGNvdW50KX0gdGltZXNgO1xufVxuXG4vKipcbiAqIFBsdXJhbGl6ZXMgYSBub3VuIGJ5IGNvdW50LlxuICpcbiAqIEBwYXJhbSBjb3VudCAtIFRoZSBjb3VudC5cbiAqIEBwYXJhbSBub3VuIC0gVGhlIHNpbmd1bGFyIG5vdW4uXG4gKiBAcmV0dXJucyBUaGUgbm91biwgc3VmZml4ZWQgd2l0aCBgc2AgdW5sZXNzIHRoZSBjb3VudCBpcyBleGFjdGx5IG9uZS5cbiAqL1xuZnVuY3Rpb24gcGx1cmFsaXplKGNvdW50OiBudW1iZXIsIG5vdW46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjb3VudCA9PT0gMSA/IG5vdW4gOiBgJHtub3VufXNgO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGEgc2luZ2xlIHNwZWNpZmllciBhZ2FpbnN0IGEgbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHNwZWMgLSBUaGUgc3BlY2lmaWVyLlxuICogQHBhcmFtIG1hbmlmZXN0IC0gVGhlIG1hbmlmZXN0LCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vbmUgd2FzIGZldGNoZWQuXG4gKiBAcmV0dXJucyBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgc3BlY2lmaWVyIGlzIGludmFsaWQsIG9yIG5hbWVzIGEgY2hhbm5lbCB3aXRoIG5vIG1hbmlmZXN0XG4gKiAgIGVudHJ5LlxuICovXG5mdW5jdGlvbiByZXNvbHZlU3BlYyhzcGVjOiBzdHJpbmcsIG1hbmlmZXN0OiBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlVmVyc2lvblNwZWMoc3BlYyk7XG4gIGlmIChwYXJzZWQua2luZCA9PT0gJ2V4cGxpY2l0Jykge1xuICAgIHJldHVybiBwYXJzZWQudmVyc2lvbjtcbiAgfVxuICBpZiAoIW1hbmlmZXN0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVzb2x2ZSBcIiR7c3BlY31cIiB3aXRob3V0IHRoZSBkZXNrdG9wIHJlbGVhc2VzIG1hbmlmZXN0LmApO1xuICB9XG4gIHJldHVybiByZXNvbHZlVmVyc2lvbkZyb21NYW5pZmVzdChtYW5pZmVzdCwgcGFyc2VkLmNoYW5uZWwpO1xufVxuXG4vKipcbiAqIENob29zZXMgdGhlIHN1YmplY3QtdmVyYiBhZ3JlZW1lbnQgZm9yIHRoZSBzcGVjaWZpZXIgY291bnQuXG4gKlxuICogQHBhcmFtIGNvdW50IC0gVGhlIG51bWJlciBvZiBzcGVjaWZpZXJzLlxuICogQHJldHVybnMgYHJlc29sdmVzYCBvciBgcmVzb2x2ZWAuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVWZXJiKGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gY291bnQgPT09IDEgPyAncmVzb2x2ZXMnIDogJ3Jlc29sdmUnO1xufVxuXG4vKipcbiAqIEV4dHJhY3RzIGEgaHVtYW4tcmVhZGFibGUgcmVhc29uIGZyb20gYSB0aHJvd24gdmFsdWUuXG4gKlxuICogQHBhcmFtIGVycm9yIC0gVGhlIHRocm93biB2YWx1ZS5cbiAqIEByZXR1cm5zIFRoZSByZWFzb24gdGV4dC5cbiAqL1xuZnVuY3Rpb24gdG9SZWFzb24oZXJyb3I6IHVua25vd24pOiBzdHJpbmcge1xuICAvKiB2OCBpZ25vcmUgbmV4dCAtLSBEZWZlbnNpdmU6IGV2ZXJ5IHRocm93IHNpdGUgcmVhY2hhYmxlIGZyb20gaGVyZSAocGFyc2VWZXJzaW9uU3BlYywgcmVzb2x2ZVZlcnNpb25Gcm9tTWFuaWZlc3QsIHRoZSBtaXNzaW5nLW1hbmlmZXN0IGd1YXJkKSB0aHJvd3MgYW4gRXJyb3IuICovXG4gIHJldHVybiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUF5QkE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQU9BLE1BQU0saUNBQW9ELENBQUMsZUFBZSxlQUFlO0FBd0l6RixTQUFTLG1CQUFtQixlQUE2RTtBQUM5RyxRQUFNLGlCQUFpQixvQkFBSSxJQUFzQjtBQUVqRCxhQUFXLEVBQUUsTUFBTSxRQUFRLEtBQUssZUFBZTtBQUM3QyxVQUFNLFFBQVEsZUFBZSxJQUFJLE9BQU87QUFDeEMsUUFBSSxDQUFDLE9BQU87QUFDVixxQkFBZSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDbEM7QUFBQSxJQUNGO0FBQ0EsUUFBSSxDQUFDLE1BQU0sU0FBUyxJQUFJLEdBQUc7QUFDekIsWUFBTSxLQUFLLElBQUk7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFFQSxTQUFPLENBQUMsR0FBRyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLE9B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
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3ZlcnNpb24tbWF0cml4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBkZWNpc2lvbiBsYXllciBmb3IgcnVubmluZyBhIHN1aXRlIGFnYWluc3QgKipldmVyeSoqIHN1cHBvcnRlZCBPYnNpZGlhblxuICogdmVyc2lvbi5cbiAqXG4gKiBTdXBwb3J0IGlzIHRoZSByYW5nZSBgW2xhdGVzdCBwdWJsaWMsIGxhdGVzdCBjYXRhbHlzdF1gIGFuZCBib3RoIGVuZHMgbXVzdCBiZVxuICogdmVyaWZpZWQgKEc5OSkuIFRoZSB0d28gZW5kcyBhcmUgbW92aW5nIHRhcmdldHMsIGFuZCB0aGV5IHBlcmlvZGljYWxseVxuICogKipjb2luY2lkZSoqIFx1MjAxNCB3aGVuIHB1YmxpYyBjYXRjaGVzIHVwIHRvIGNhdGFseXN0LCBib3RoIHNwZWNpZmllcnMgcHJvdmlzaW9uXG4gKiB0aGUgc2FtZSBidWlsZCwgc28gcnVubmluZyB0aGUgc3VpdGVzIHR3aWNlIHJlLXJ1bnMgdGhlIHNhbWUgYnVpbGQgYW5kIGJ1eXNcbiAqIG5vdGhpbmcuIFdvcnNlLCBhIGNvbnN1bWVyIHRoYXQgcmFuIGJvdGggc3RpbGwgcmVwb3J0cyBcImdyZWVuIG9uIHB1YmxpYyBBTkRcbiAqIGNhdGFseXN0XCIsIGEgdHdvLWVuZCBjbGFpbSBpdCBuZXZlciB2ZXJpZmllZC5cbiAqXG4gKiBUaGUgZGVjaXNpb24gdGhlcmVmb3JlIGxpdmVzIGhlcmUgcmF0aGVyIHRoYW4gaW4gZXZlcnkgY29uc3VtaW5nIHJlcG86IGEgbGlzdFxuICogb2YgdmVyc2lvbiBzcGVjaWZpZXJzIGlzIHJlc29sdmVkIHRvIGNvbmNyZXRlIHZlcnNpb25zLCAqKmRlLWR1cGxpY2F0ZWQgb24gdGhlXG4gKiByZXNvbHZlZCB2ZXJzaW9uKiogKG5ldmVyIG9uIHRoZSBzcGVjaWZpZXIgc3RyaW5nLCBzbyBhbiBleHBsaWNpdCBgMS4xMy40YCBhbmRcbiAqIGBjYXRhbHlzdC1sYXRlc3RgIGNvbGxhcHNlIHdoZW4gY2F0YWx5c3QgKmlzKiAxLjEzLjQpLCBhbmQgdGhlIHN1aXRlcyBydW4gb25jZVxuICogcGVyIGRpc3RpbmN0IHZlcnNpb24uXG4gKlxuICogRXZlcnl0aGluZyBoZXJlIGlzIHB1cmUgYW5kIHVuaXQtdGVzdGVkOyB0aGUgbWFuaWZlc3QgZmV0Y2ggYW5kIHRoZSBsb2dnaW5nXG4gKiBsaXZlIGluIHRoZSBpbnRlZ3JhdGlvbi10aW1lIGBydW4tdmVyc2lvbi1tYXRyaXgudHNgIGdsdWUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB9IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuXG5pbXBvcnQge1xuICBDQVRBTFlTVF9MQVRFU1QsXG4gIHBhcnNlVmVyc2lvblNwZWMsXG4gIFBVQkxJQ19MQVRFU1QsXG4gIHJlc29sdmVWZXJzaW9uRnJvbU1hbmlmZXN0XG59IGZyb20gJy4vb2JzaWRpYW4tdmVyc2lvbi5tanMnO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIHNwZWNpZmllcnMgYSBtYXRyaXggcnVuIGRlZmF1bHRzIHRvOiBib3RoIGVuZHMgb2YgdGhlIHN1cHBvcnRlZFxuICogcmFuZ2UgKEc5OSkuIFRoZXkgYXJlIGRlLWR1cGxpY2F0ZWQgb24gdGhlaXIgcmVzb2x2ZWQgdmVyc2lvbnMsIHNvIHdoZW4gcHVibGljXG4gKiBoYXMgY2F1Z2h0IHVwIHRvIGNhdGFseXN0IHRoaXMgeWllbGRzIGEgc2luZ2xlIHJ1bi5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbUFVCTElDX0xBVEVTVCwgQ0FUQUxZU1RfTEFURVNUXTtcblxuLyoqXG4gKiBBIHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCBjb3VsZCBub3QgYmUgcmVzb2x2ZWQgYW5kIHdhcyBkcm9wcGVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERyb3BwZWRWZXJzaW9uU3BlYyB7XG4gIC8qKlxuICBXaHkgdGhlIHNwZWNpZmllciBjb3VsZCBub3QgYmUgcmVzb2x2ZWQuXG4gICAqL1xuICByZWFkb25seSByZWFzb246IHN0cmluZztcblxuICAvKipcbiAgVGhlIHNwZWNpZmllciBhcyByZXF1ZXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBzcGVjOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGZvcm1hdFZlcnNpb25NYXRyaXhQbGFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXRWZXJzaW9uTWF0cml4UGxhblBhcmFtcyB7XG4gIC8qKlxuICBUaGUgZGUtZHVwbGljYXRlZCBtYXRyaXggdGhhdCB3aWxsIGJlIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W107XG5cbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXJzIHRoYXQgcmVzb2x2ZWQsIGluIHJlcXVlc3RlZCBvcmRlci5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVkU3BlY3M6IHJlYWRvbmx5IFJlc29sdmVkVmVyc2lvblNwZWNbXTtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlcn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlclBhcmFtcyB7XG4gIC8qKlxuICBUaGUgZW50cnkgYWJvdXQgdG8gcnVuLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5O1xuXG4gIC8qKlxuICBUaGUgZW50cnkncyB6ZXJvLWJhc2VkIHBvc2l0aW9uIGluIHRoZSBtYXRyaXguXG4gICAqL1xuICByZWFkb25seSBpbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICBUaGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIG1hdHJpeC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsOiBudW1iZXI7XG59XG5cbi8qKlxuICogT25lIGRpc3RpbmN0IE9ic2lkaWFuIHZlcnNpb24gdGhlIHN1aXRlcyB3aWxsIHJ1biBhZ2FpbnN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5IHtcbiAgLyoqXG4gICAqIEV2ZXJ5IHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCByZXNvbHZlZCB0byB7QGxpbmsgdmVyc2lvbn0sIGluIHJlcXVlc3RlZFxuICAgKiBvcmRlci4gTW9yZSB0aGFuIG9uZSBtZWFucyB0aGUgc3BlY2lmaWVycyBjb2luY2lkZWQgYW5kIHdlcmUgY29sbGFwc2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICBUaGUgY29uY3JldGUgYHgueS56YCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgcmVxdWVzdGVkIHNwZWNpZmllciBwYWlyZWQgd2l0aCB0aGUgY29uY3JldGUgdmVyc2lvbiBpdCByZXNvbHZlZCB0by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZFZlcnNpb25TcGVjIHtcbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXIgYXMgcmVxdWVzdGVkIChhbiBgeC55LnpgIHZlcnNpb24gb3IgYSBjaGFubmVsIGFsaWFzKS5cbiAgICovXG4gIHJlYWRvbmx5IHNwZWM6IHN0cmluZztcblxuICAvKipcbiAgVGhlIGNvbmNyZXRlIGB4LnkuemAgdmVyc2lvbiBpdCByZXNvbHZlZCB0by5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgb3V0Y29tZSBvZiB7QGxpbmsgcmVzb2x2ZVJlcXVlc3RlZFNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlUmVxdWVzdGVkU3BlY3NSZXN1bHQge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgc3BlY2lmaWVycyBjYW1lIGZyb20ge0BsaW5rIERFRkFVTFRfT0JTSURJQU5fVkVSU0lPTl9TUEVDU31cbiAgICogcmF0aGVyIHRoYW4gYmVpbmcgZXhwbGljaXRseSByZXF1ZXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBpc0RlZmF1bHQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gIFRoZSBzcGVjaWZpZXJzIHRvIHJlc29sdmUsIGluIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXNvbHZlVmVyc2lvblNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlVmVyc2lvblNwZWNzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBkZXNrdG9wIHJlbGVhc2VzIG1hbmlmZXN0LCBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIHJlcXVlc3RlZCBzcGVjaWZpZXIgaXNcbiAgICogYSBjaGFubmVsIGFsaWFzIChzbyBubyBmZXRjaCB3YXMgbmVlZGVkKS5cbiAgICovXG4gIHJlYWRvbmx5IG1hbmlmZXN0OiBEZXNrdG9wUmVsZWFzZXNNYW5pZmVzdCB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciBhIHNwZWNpZmllciB0aGF0IGNhbm5vdCBiZSByZXNvbHZlZCBpcyBkcm9wcGVkIHdpdGggYSByZWNvcmRlZFxuICAgKiByZWFzb24gaW5zdGVhZCBvZiB0aHJvd2luZy4gU2V0IGZvciB0aGUgKipkZWZhdWx0Kiogc3BlY2lmaWVyIGxpc3Qgb25seTogYVxuICAgKiBtYW5pZmVzdCB0aGF0IHNoaXBzIG5vIGNhdGFseXN0IGVudHJ5IG11c3Qgbm90IGJyZWFrIGV2ZXJ5IGNvbnN1bWVyJ3MgZ2F0ZSxcbiAgICogd2hlcmVhcyBhbiBleHBsaWNpdGx5IHJlcXVlc3RlZCBzcGVjaWZpZXIgdGhhdCBjYW5ub3QgcmVzb2x2ZSBpcyBhIHJlYWxcbiAgICogZXJyb3IuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUb2xlcmF0ZVVucmVzb2x2YWJsZVNwZWNzOiBib29sZWFuO1xuXG4gIC8qKlxuICBUaGUgcmVxdWVzdGVkIHNwZWNpZmllcnMsIGluIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBvdXRjb21lIG9mIHtAbGluayByZXNvbHZlVmVyc2lvblNwZWNzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlVmVyc2lvblNwZWNzUmVzdWx0IHtcbiAgLyoqXG4gIFNwZWNpZmllcnMgZHJvcHBlZCBiZWNhdXNlIHRoZXkgY291bGQgbm90IGJlIHJlc29sdmVkICh0b2xlcmFudCBtb2RlIG9ubHkpLlxuICAgKi9cbiAgcmVhZG9ubHkgZHJvcHBlZFNwZWNzOiByZWFkb25seSBEcm9wcGVkVmVyc2lvblNwZWNbXTtcblxuICAvKipcbiAgVGhlIHNwZWNpZmllcnMgdGhhdCByZXNvbHZlZCwgaW4gcmVxdWVzdGVkIG9yZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRTcGVjczogcmVhZG9ubHkgUmVzb2x2ZWRWZXJzaW9uU3BlY1tdO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBydW5WZXJzaW9uTWF0cml4RW50cmllc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuVmVyc2lvbk1hdHJpeEVudHJpZXNQYXJhbXMge1xuICAvKipcbiAgVGhlIGRlLWR1cGxpY2F0ZWQgbWF0cml4IHRvIHJ1bi5cbiAgICovXG4gIHJlYWRvbmx5IGVudHJpZXM6IHJlYWRvbmx5IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W107XG5cbiAgLyoqXG4gIENhbGxlZCBqdXN0IGJlZm9yZSBlYWNoIGVudHJ5IHJ1bnMsIGZvciBwcm9ncmVzcyByZXBvcnRpbmcuXG4gICAqL1xuICByZWFkb25seSBvbkVudHJ5U3RhcnQ6IChwYXJhbXM6IEZvcm1hdFZlcnNpb25NYXRyaXhSdW5IZWFkZXJQYXJhbXMpID0+IHZvaWQ7XG5cbiAgLyoqXG4gIFJ1bnMgdGhlIHN1aXRlcyBhZ2FpbnN0IGEgc2luZ2xlIGVudHJ5LCB0aHJvd2luZyBvbiBmYWlsdXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgcnVuOiAoZW50cnk6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5KSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbn1cblxuLyoqXG4gKiBDb2xsYXBzZXMgcmVzb2x2ZWQgc3BlY2lmaWVycyBpbnRvIG9uZSBlbnRyeSBwZXIgKipkaXN0aW5jdCByZXNvbHZlZCB2ZXJzaW9uKiouXG4gKlxuICogRGUtZHVwbGljYXRpb24gaXMga2V5ZWQgb24gdGhlIHJlc29sdmVkIHZlcnNpb24sIG5vdCB0aGUgc3BlY2lmaWVyIHN0cmluZywgc29cbiAqIHNwZWNpZmllcnMgdGhhdCBuYW1lIHRoZSBzYW1lIGJ1aWxkIGNvbGxhcHNlIGhvd2V2ZXIgdGhleSB3ZXJlIHdyaXR0ZW4uXG4gKiBGaXJzdC1zZWVuIG9yZGVyIGlzIHByZXNlcnZlZCwgYW5kIGV2ZXJ5IHNwZWNpZmllciB0aGF0IGxhbmRlZCBvbiBhIHZlcnNpb24gaXNcbiAqIHJlY29yZGVkIG9uIGl0cyBlbnRyeS5cbiAqXG4gKiBAcGFyYW0gcmVzb2x2ZWRTcGVjcyAtIFRoZSByZXNvbHZlZCBzcGVjaWZpZXJzLCBpbiByZXF1ZXN0ZWQgb3JkZXIuXG4gKiBAcmV0dXJucyBPbmUgZW50cnkgcGVyIGRpc3RpbmN0IHZlcnNpb24sIGluIGZpcnN0LXNlZW4gb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFZlcnNpb25NYXRyaXgocmVzb2x2ZWRTcGVjczogcmVhZG9ubHkgUmVzb2x2ZWRWZXJzaW9uU3BlY1tdKTogT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnlbXSB7XG4gIGNvbnN0IHNwZWNzQnlWZXJzaW9uID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpO1xuXG4gIGZvciAoY29uc3QgeyBzcGVjLCB2ZXJzaW9uIH0gb2YgcmVzb2x2ZWRTcGVjcykge1xuICAgIGNvbnN0IHNwZWNzID0gc3BlY3NCeVZlcnNpb24uZ2V0KHZlcnNpb24pO1xuICAgIGlmICghc3BlY3MpIHtcbiAgICAgIHNwZWNzQnlWZXJzaW9uLnNldCh2ZXJzaW9uLCBbc3BlY10pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghc3BlY3MuaW5jbHVkZXMoc3BlYykpIHtcbiAgICAgIHNwZWNzLnB1c2goc3BlYyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFsuLi5zcGVjc0J5VmVyc2lvbl0ubWFwKChbdmVyc2lvbiwgc3BlY3NdKSA9PiAoeyBzcGVjcywgdmVyc2lvbiB9KSk7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhbiBlbnRyeSBmb3IgbG9ncyBhbmQgZXJyb3IgbWVzc2FnZXMuXG4gKlxuICogU3BlY2lmaWVycyB0aGF0IG1lcmVseSByZXBlYXQgdGhlIHZlcnNpb24gYWRkIG5vdGhpbmcsIHNvIGFuIGV4cGxpY2l0LW9ubHlcbiAqIGVudHJ5IGZvcm1hdHMgYXMgdGhlIGJhcmUgdmVyc2lvbiByYXRoZXIgdGhhbiBgMS4xMy40ICgxLjEzLjQpYC5cbiAqXG4gKiBAcGFyYW0gZW50cnkgLSBUaGUgZW50cnkgdG8gZm9ybWF0LlxuICogQHJldHVybnMgQSBzdHJpbmcgbGlrZSBgMS4xMy40IChwdWJsaWMtbGF0ZXN0LCBjYXRhbHlzdC1sYXRlc3QpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFZlcnNpb25NYXRyaXhFbnRyeShlbnRyeTogT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnkpOiBzdHJpbmcge1xuICBjb25zdCB7IHNwZWNzLCB2ZXJzaW9uIH0gPSBlbnRyeTtcbiAgY29uc3QgYWxpYXNTcGVjcyA9IHNwZWNzLmZpbHRlcigoc3BlYykgPT4gc3BlYyAhPT0gdmVyc2lvbik7XG4gIGlmIChhbGlhc1NwZWNzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB2ZXJzaW9uO1xuICB9XG4gIHJldHVybiBgJHt2ZXJzaW9ufSAoJHthbGlhc1NwZWNzLmpvaW4oJywgJyl9KWA7XG59XG5cbi8qKlxuICogQnVpbGRzIHRoZSBsaW5lcyBhbm5vdW5jaW5nIHdoYXQgdGhlIG1hdHJpeCByZXNvbHZlZCB0byBhbmQgaG93IG1hbnkgcnVucyBpdFxuICogd2lsbCB0YWtlLlxuICpcbiAqIFRoZSBjb2xsYXBzZSBtdXN0IGJlICoqc3RhdGVkKiosIG5ldmVyIGluZmVycmVkOiBhIHJlYWRlciB3aG8gc2VlcyBvbmUgcnVuXG4gKiB3aGVyZSB0aGV5IGV4cGVjdGVkIHR3byBoYXMgdG8gYmUgdG9sZCB0aGUgc2Vjb25kIGVuZCB3YXMgYWxyZWFkeSBjb3ZlcmVkLFxuICogbm90IGxlZnQgd29uZGVyaW5nIHdoZXRoZXIgaXQgd2FzIHNraXBwZWQgYnkgYWNjaWRlbnQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBtYXRyaXggYW5kIHRoZSBzcGVjaWZpZXJzIGl0IHdhcyBidWlsdCBmcm9tLlxuICogQHJldHVybnMgVGhlIGxpbmVzIHRvIGxvZywgaW4gb3JkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uTWF0cml4UGxhbihwYXJhbXM6IEZvcm1hdFZlcnNpb25NYXRyaXhQbGFuUGFyYW1zKTogc3RyaW5nW10ge1xuICBjb25zdCB7IGVudHJpZXMsIHJlc29sdmVkU3BlY3MgfSA9IHBhcmFtcztcblxuICBjb25zdCBsaW5lcyA9IHJlc29sdmVkU3BlY3NcbiAgICAuZmlsdGVyKCh7IHNwZWMsIHZlcnNpb24gfSkgPT4gc3BlYyAhPT0gdmVyc2lvbilcbiAgICAubWFwKCh7IHNwZWMsIHZlcnNpb24gfSkgPT4gYCR7c3BlY30gLT4gJHt2ZXJzaW9ufWApO1xuXG4gIGNvbnN0IHNwZWNpZmllckNvdW50ID0gcmVzb2x2ZWRTcGVjcy5sZW5ndGg7XG4gIGNvbnN0IHZlcnNpb25Db3VudCA9IGVudHJpZXMubGVuZ3RoO1xuICBjb25zdCBmb3JtYXR0ZWRFbnRyaWVzID0gZW50cmllcy5tYXAoKGVudHJ5KSA9PiBmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnkpKS5qb2luKCcsICcpO1xuXG4gIGxpbmVzLnB1c2goXG4gICAgYCR7U3RyaW5nKHNwZWNpZmllckNvdW50KX0gcmVxdWVzdGVkICR7cGx1cmFsaXplKHNwZWNpZmllckNvdW50LCAnc3BlY2lmaWVyJyl9IGBcbiAgICAgICsgYCR7cmVzb2x2ZVZlcmIoc3BlY2lmaWVyQ291bnQpfSB0byAke1N0cmluZyh2ZXJzaW9uQ291bnQpfSBkaXN0aW5jdCAke3BsdXJhbGl6ZSh2ZXJzaW9uQ291bnQsICd2ZXJzaW9uJyl9OiBgXG4gICAgICArIGAke2Zvcm1hdHRlZEVudHJpZXN9LiBSdW5uaW5nIHRoZSBzdWl0ZXMgJHtmb3JtYXRSdW5Db3VudCh2ZXJzaW9uQ291bnQpfS5gXG4gICk7XG5cbiAgcmV0dXJuIGxpbmVzO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgcHJvZ3Jlc3MgbGluZSBhbm5vdW5jaW5nIGEgc2luZ2xlIGVudHJ5J3MgcnVuLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgZW50cnkgYW5kIGl0cyBwb3NpdGlvbiBpbiB0aGUgbWF0cml4LlxuICogQHJldHVybnMgQSBzdHJpbmcgbGlrZSBgUnVuIDEgb2YgMjogMS4xMi43IChwdWJsaWMtbGF0ZXN0KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRWZXJzaW9uTWF0cml4UnVuSGVhZGVyKHBhcmFtczogRm9ybWF0VmVyc2lvbk1hdHJpeFJ1bkhlYWRlclBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgZW50cnksIGluZGV4LCB0b3RhbCB9ID0gcGFyYW1zO1xuICByZXR1cm4gYFJ1biAke1N0cmluZyhpbmRleCArIDEpfSBvZiAke1N0cmluZyh0b3RhbCl9OiAke2Zvcm1hdFZlcnNpb25NYXRyaXhFbnRyeShlbnRyeSl9YDtcbn1cblxuLyoqXG4gKiBSZXBvcnRzIHdoZXRoZXIgYW55IHNwZWNpZmllciBpcyBhIGNoYW5uZWwgYWxpYXMsIGkuZS4gd2hldGhlciB0aGUgcmVsZWFzZXNcbiAqIG1hbmlmZXN0IGhhcyB0byBiZSBmZXRjaGVkIGF0IGFsbC5cbiAqXG4gKiBAcGFyYW0gc3BlY3MgLSBUaGUgcmVxdWVzdGVkIHNwZWNpZmllcnMuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhdCBsZWFzdCBvbmUgc3BlY2lmaWVyIHJlc29sdmVzIGFnYWluc3QgdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQ2hhbm5lbFNwZWMoc3BlY3M6IHJlYWRvbmx5IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIHJldHVybiBzcGVjcy5zb21lKChzcGVjKSA9PiBzcGVjID09PSBQVUJMSUNfTEFURVNUIHx8IHNwZWMgPT09IENBVEFMWVNUX0xBVEVTVCk7XG59XG5cbi8qKlxuICogU3BsaXRzIGEgY29tbWEtc2VwYXJhdGVkIHNwZWNpZmllciBsaXN0LCBzbyBhIGNvbnN1bWVyIGNhbiBoYW5kIGFuIGVudiB2YXJcbiAqIChgT0JTSURJQU5fVkVSU0lPTj0xLjEyLjcsY2F0YWx5c3QtbGF0ZXN0YCkgc3RyYWlnaHQgdGhyb3VnaC5cbiAqXG4gKiBAcGFyYW0gcmF3IC0gVGhlIHJhdyBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nLlxuICogQHJldHVybnMgVGhlIHRyaW1tZWQsIG5vbi1lbXB0eSBzcGVjaWZpZXJzLCBpbiBvcmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVmVyc2lvblNwZWNMaXN0KHJhdzogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gcmF3LnNwbGl0KCcsJykubWFwKChzcGVjKSA9PiBzcGVjLnRyaW0oKSkuZmlsdGVyKChzcGVjKSA9PiBzcGVjICE9PSAnJyk7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyB0aGUgcmVxdWVzdGVkIHZlcnNpb24gc3BlY2lmaWVycywgZmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0XG4gKiBib3RoLWVuZHMgbGlzdCB3aGVuIG5vbmUgd2VyZSBnaXZlbi5cbiAqXG4gKiBBbiBlbXB0eSBzdHJpbmcgaXMgdHJlYXRlZCBhcyBhYnNlbnQsIHNvIGEgY29uc3VtZXIgY2FuIHBhc3MgYW4gdW5zZXRcbiAqIGBwcm9jZXNzLmVudlsnT0JTSURJQU5fVkVSU0lPTiddYCB3aXRob3V0IGd1YXJkaW5nIGl0LlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9ucyAtIEFuIGFycmF5IG9mIHNwZWNpZmllcnMsIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZywgb3IgYHVuZGVmaW5lZGAuXG4gKiBAcmV0dXJucyBUaGUgc3BlY2lmaWVycyB0byByZXNvbHZlLCBhbmQgd2hldGhlciB0aGV5IGNhbWUgZnJvbSB0aGUgZGVmYXVsdCBsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVJlcXVlc3RlZFNwZWNzKHZlcnNpb25zOiByZWFkb25seSBzdHJpbmdbXSB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IFJlc29sdmVSZXF1ZXN0ZWRTcGVjc1Jlc3VsdCB7XG4gIGNvbnN0IHNwZWNzID0gdHlwZW9mIHZlcnNpb25zID09PSAnc3RyaW5nJyA/IHBhcnNlVmVyc2lvblNwZWNMaXN0KHZlcnNpb25zKSA6IFsuLi52ZXJzaW9ucyA/PyBbXV07XG4gIGlmIChzcGVjcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBpc0RlZmF1bHQ6IHRydWUsIHNwZWNzOiBbLi4uREVGQVVMVF9PQlNJRElBTl9WRVJTSU9OX1NQRUNTXSB9O1xuICB9XG4gIHJldHVybiB7IGlzRGVmYXVsdDogZmFsc2UsIHNwZWNzIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgZWFjaCByZXF1ZXN0ZWQgc3BlY2lmaWVyIHRvIGEgY29uY3JldGUgdmVyc2lvbiBhZ2FpbnN0IGFcbiAqIHNpbmdsZSBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHNwZWNpZmllcnMsIHRoZSBtYW5pZmVzdCwgYW5kIHRoZSB0b2xlcmFuY2UgbW9kZS5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBzcGVjaWZpZXJzIGFuZCBhbnkgdGhhdCB3ZXJlIGRyb3BwZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIGEgc3BlY2lmaWVyIGNhbm5vdCBiZSByZXNvbHZlZCBhbmQgdG9sZXJhbmNlIGlzIG9mZiwgb3IgaWZcbiAqICAgdG9sZXJhbmNlIGlzIG9uIGJ1dCBub3RoaW5nIHJlc29sdmVkIGF0IGFsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVWZXJzaW9uU3BlY3MocGFyYW1zOiBSZXNvbHZlVmVyc2lvblNwZWNzUGFyYW1zKTogUmVzb2x2ZVZlcnNpb25TcGVjc1Jlc3VsdCB7XG4gIGNvbnN0IHsgbWFuaWZlc3QsIHNob3VsZFRvbGVyYXRlVW5yZXNvbHZhYmxlU3BlY3MsIHNwZWNzIH0gPSBwYXJhbXM7XG5cbiAgY29uc3QgZHJvcHBlZFNwZWNzOiBEcm9wcGVkVmVyc2lvblNwZWNbXSA9IFtdO1xuICBjb25zdCByZXNvbHZlZFNwZWNzOiBSZXNvbHZlZFZlcnNpb25TcGVjW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHNwZWMgb2Ygc3BlY3MpIHtcbiAgICB0cnkge1xuICAgICAgcmVzb2x2ZWRTcGVjcy5wdXNoKHsgc3BlYywgdmVyc2lvbjogcmVzb2x2ZVNwZWMoc3BlYywgbWFuaWZlc3QpIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIXNob3VsZFRvbGVyYXRlVW5yZXNvbHZhYmxlU3BlY3MpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBkcm9wcGVkU3BlY3MucHVzaCh7IHJlYXNvbjogdG9SZWFzb24oZXJyb3IpLCBzcGVjIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChyZXNvbHZlZFNwZWNzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBObyBPYnNpZGlhbiB2ZXJzaW9uIGNvdWxkIGJlIHJlc29sdmVkIGZyb206ICR7c3BlY3Muam9pbignLCAnKX0uICR7ZHJvcHBlZFNwZWNzLm1hcCgoeyByZWFzb24sIHNwZWMgfSkgPT4gYCR7c3BlY306ICR7cmVhc29ufWApLmpvaW4oJzsgJyl9YFxuICAgICk7XG4gIH1cblxuICByZXR1cm4geyBkcm9wcGVkU3BlY3MsIHJlc29sdmVkU3BlY3MgfTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBzdWl0ZXMgb25jZSBwZXIgbWF0cml4IGVudHJ5LCAqKmFsd2F5cyBydW5uaW5nIGV2ZXJ5IGVudHJ5KiogYmVmb3JlXG4gKiByZXBvcnRpbmcuXG4gKlxuICogQSBmYWlsaW5nIGVuZCBtdXN0IG5vdCBoaWRlIHRoZSBzdGF0ZSBvZiB0aGUgb3RoZXI6IHN0b3BwaW5nIGF0IHRoZSBmaXJzdFxuICogZmFpbHVyZSB3b3VsZCBsZWF2ZSBcImNhdGFseXN0IGJyb2tlXCIgYW5kIFwiYm90aCBlbmRzIGJyb2tlXCIgaW5kaXN0aW5ndWlzaGFibGVcbiAqIHdpdGhvdXQgYSBzZWNvbmQgcnVuLiBFdmVyeSBlbnRyeSB0aGVyZWZvcmUgcnVucywgYW5kIHRoZSBzdW1tYXJ5IG5hbWVzIHdoaWNoXG4gKiBjb25jcmV0ZSB2ZXJzaW9ucyBmYWlsZWQgYW5kIHdoaWNoIHBhc3NlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIG1hdHJpeCwgdGhlIHBlci1lbnRyeSBydW5uZXIsIGFuZCB0aGUgcHJvZ3Jlc3MgcmVwb3J0ZXIuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgZXZlcnkgZW50cnkgaGFzIHJ1biBzdWNjZXNzZnVsbHkuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBtYXRyaXggaXMgZW1wdHksIG9yIGFuIHtAbGluayBBZ2dyZWdhdGVFcnJvcn0gbmFtaW5nIGV2ZXJ5XG4gKiAgIHZlcnNpb24gdGhhdCBmYWlsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5WZXJzaW9uTWF0cml4RW50cmllcyhwYXJhbXM6IFJ1blZlcnNpb25NYXRyaXhFbnRyaWVzUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHsgZW50cmllcywgb25FbnRyeVN0YXJ0LCBydW4gfSA9IHBhcmFtcztcblxuICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZnVzaW5nIHRvIHJ1biBhbiBlbXB0eSBPYnNpZGlhbiB2ZXJzaW9uIG1hdHJpeDogbm8gdmVyc2lvbiB3b3VsZCBiZSB2ZXJpZmllZC4nKTtcbiAgfVxuXG4gIGNvbnN0IGVycm9yczogdW5rbm93bltdID0gW107XG4gIGNvbnN0IGZhaWxlZEVudHJpZXM6IE9ic2lkaWFuVmVyc2lvbk1hdHJpeEVudHJ5W10gPSBbXTtcbiAgY29uc3QgcGFzc2VkRW50cmllczogT2JzaWRpYW5WZXJzaW9uTWF0cml4RW50cnlbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2luZGV4LCBlbnRyeV0gb2YgZW50cmllcy5lbnRyaWVzKCkpIHtcbiAgICBvbkVudHJ5U3RhcnQoeyBlbnRyeSwgaW5kZXgsIHRvdGFsOiBlbnRyaWVzLmxlbmd0aCB9KTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcnVuKGVudHJ5KTtcbiAgICAgIHBhc3NlZEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgIGZhaWxlZEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGZhaWxlZEVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFzc2VkQ2xhdXNlID0gcGFzc2VkRW50cmllcy5sZW5ndGggPT09IDBcbiAgICA/ICcnXG4gICAgOiBgIFBhc3NlZDogJHtwYXNzZWRFbnRyaWVzLm1hcCgoZW50cnkpID0+IGZvcm1hdFZlcnNpb25NYXRyaXhFbnRyeShlbnRyeSkpLmpvaW4oJywgJyl9LmA7XG5cbiAgdGhyb3cgbmV3IEFnZ3JlZ2F0ZUVycm9yKFxuICAgIGVycm9ycyxcbiAgICBgT2JzaWRpYW4gdmVyc2lvbiBtYXRyaXggZmFpbGVkIG9uICR7U3RyaW5nKGZhaWxlZEVudHJpZXMubGVuZ3RoKX0gb2YgJHtTdHJpbmcoZW50cmllcy5sZW5ndGgpfSBgXG4gICAgICArIGAke3BsdXJhbGl6ZShlbnRyaWVzLmxlbmd0aCwgJ3ZlcnNpb24nKX06IGBcbiAgICAgICsgYCR7ZmFpbGVkRW50cmllcy5tYXAoKGVudHJ5KSA9PiBmb3JtYXRWZXJzaW9uTWF0cml4RW50cnkoZW50cnkpKS5qb2luKCcsICcpfS4ke3Bhc3NlZENsYXVzZX1gXG4gICk7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIHJ1biBjb3VudCBhcyBwcm9zZSwgc28gdGhlIHNpbmdsZS1ydW4gY2FzZSByZWFkcyBhcyBhIGRlbGliZXJhdGVcbiAqIGRlY2lzaW9uIHJhdGhlciB0aGFuIGEgc3VzcGljaW91cyBgMWAuXG4gKlxuICogQHBhcmFtIGNvdW50IC0gVGhlIG51bWJlciBvZiBydW5zLlxuICogQHJldHVybnMgYG9uY2VgLCBgdHdpY2VgLCBvciBgTiB0aW1lc2AuXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdFJ1bkNvdW50KGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBUV0lDRSA9IDI7XG4gIGlmIChjb3VudCA9PT0gMSkge1xuICAgIHJldHVybiAnb25jZSc7XG4gIH1cbiAgaWYgKGNvdW50ID09PSBUV0lDRSkge1xuICAgIHJldHVybiAndHdpY2UnO1xuICB9XG4gIHJldHVybiBgJHtTdHJpbmcoY291bnQpfSB0aW1lc2A7XG59XG5cbi8qKlxuICogUGx1cmFsaXplcyBhIG5vdW4gYnkgY291bnQuXG4gKlxuICogQHBhcmFtIGNvdW50IC0gVGhlIGNvdW50LlxuICogQHBhcmFtIG5vdW4gLSBUaGUgc2luZ3VsYXIgbm91bi5cbiAqIEByZXR1cm5zIFRoZSBub3VuLCBzdWZmaXhlZCB3aXRoIGBzYCB1bmxlc3MgdGhlIGNvdW50IGlzIGV4YWN0bHkgb25lLlxuICovXG5mdW5jdGlvbiBwbHVyYWxpemUoY291bnQ6IG51bWJlciwgbm91bjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNvdW50ID09PSAxID8gbm91biA6IGAke25vdW59c2A7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBzaW5nbGUgc3BlY2lmaWVyIGFnYWluc3QgYSBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0gc3BlYyAtIFRoZSBzcGVjaWZpZXIuXG4gKiBAcGFyYW0gbWFuaWZlc3QgLSBUaGUgbWFuaWZlc3QsIG9yIGB1bmRlZmluZWRgIHdoZW4gbm9uZSB3YXMgZmV0Y2hlZC5cbiAqIEByZXR1cm5zIFRoZSBjb25jcmV0ZSBgeC55LnpgIHZlcnNpb24uXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBzcGVjaWZpZXIgaXMgaW52YWxpZCwgb3IgbmFtZXMgYSBjaGFubmVsIHdpdGggbm8gbWFuaWZlc3RcbiAqICAgZW50cnkuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTcGVjKHNwZWM6IHN0cmluZywgbWFuaWZlc3Q6IERlc2t0b3BSZWxlYXNlc01hbmlmZXN0IHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgY29uc3QgcGFyc2VkID0gcGFyc2VWZXJzaW9uU3BlYyhzcGVjKTtcbiAgaWYgKHBhcnNlZC5raW5kID09PSAnZXhwbGljaXQnKSB7XG4gICAgcmV0dXJuIHBhcnNlZC52ZXJzaW9uO1xuICB9XG4gIGlmICghbWFuaWZlc3QpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZXNvbHZlIFwiJHtzcGVjfVwiIHdpdGhvdXQgdGhlIGRlc2t0b3AgcmVsZWFzZXMgbWFuaWZlc3QuYCk7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmVWZXJzaW9uRnJvbU1hbmlmZXN0KG1hbmlmZXN0LCBwYXJzZWQuY2hhbm5lbCk7XG59XG5cbi8qKlxuICogQ2hvb3NlcyB0aGUgc3ViamVjdC12ZXJiIGFncmVlbWVudCBmb3IgdGhlIHNwZWNpZmllciBjb3VudC5cbiAqXG4gKiBAcGFyYW0gY291bnQgLSBUaGUgbnVtYmVyIG9mIHNwZWNpZmllcnMuXG4gKiBAcmV0dXJucyBgcmVzb2x2ZXNgIG9yIGByZXNvbHZlYC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVZlcmIoY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gIHJldHVybiBjb3VudCA9PT0gMSA/ICdyZXNvbHZlcycgOiAncmVzb2x2ZSc7XG59XG5cbi8qKlxuICogRXh0cmFjdHMgYSBodW1hbi1yZWFkYWJsZSByZWFzb24gZnJvbSBhIHRocm93biB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgLSBUaGUgdGhyb3duIHZhbHVlLlxuICogQHJldHVybnMgVGhlIHJlYXNvbiB0ZXh0LlxuICovXG5mdW5jdGlvbiB0b1JlYXNvbihlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gIC8qIHY4IGlnbm9yZSBuZXh0IC0tIERlZmVuc2l2ZTogZXZlcnkgdGhyb3cgc2l0ZSByZWFjaGFibGUgZnJvbSBoZXJlIChwYXJzZVZlcnNpb25TcGVjLCByZXNvbHZlVmVyc2lvbkZyb21NYW5pZmVzdCwgdGhlIG1pc3NpbmctbWFuaWZlc3QgZ3VhcmQpIHRocm93cyBhbiBFcnJvci4gKi9cbiAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXlCQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBT0EsTUFBTSxpQ0FBb0QsQ0FBQyxlQUFlLGVBQWU7QUEwS3pGLFNBQVMsbUJBQW1CLGVBQTZFO0FBQzlHLFFBQU0saUJBQWlCLG9CQUFJLElBQXNCO0FBRWpELGFBQVcsRUFBRSxNQUFNLFFBQVEsS0FBSyxlQUFlO0FBQzdDLFVBQU0sUUFBUSxlQUFlLElBQUksT0FBTztBQUN4QyxRQUFJLENBQUMsT0FBTztBQUNWLHFCQUFlLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQztBQUNsQztBQUFBLElBQ0Y7QUFDQSxRQUFJLENBQUMs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
|
|
@@ -41,21 +41,21 @@ export declare const OWNED_HIDDEN_LAUNCH_FLAGS: string[];
|
|
|
41
41
|
*/
|
|
42
42
|
export declare const NO_SANDBOX_LAUNCH_FLAG = "--no-sandbox";
|
|
43
43
|
/**
|
|
44
|
-
* Resolves the extra Chromium launch
|
|
44
|
+
* Resolves the extra Chromium launch arguments for an owned desktop instance: the
|
|
45
45
|
* {@link OWNED_HIDDEN_LAUNCH_FLAGS} when the window is hidden, or an empty list
|
|
46
46
|
* when it is visible (the default).
|
|
47
47
|
*
|
|
48
48
|
* @param isObsidianAppVisible - The resolved option value (omitted → visible).
|
|
49
|
-
* @returns The extra launch
|
|
49
|
+
* @returns The extra launch arguments (possibly empty).
|
|
50
50
|
*/
|
|
51
|
-
export declare function
|
|
51
|
+
export declare function resolveOwnedHiddenLaunchArguments(isObsidianAppVisible?: boolean): string[];
|
|
52
52
|
/**
|
|
53
|
-
* Resolves the extra Chromium launch
|
|
53
|
+
* Resolves the extra Chromium launch arguments for disabling the sandbox.
|
|
54
54
|
*
|
|
55
55
|
* @param shouldDisableSandbox - The resolved option value (omitted → sandbox kept).
|
|
56
56
|
* @returns `[{@link NO_SANDBOX_LAUNCH_FLAG}]` when the sandbox should be disabled, else `[]`.
|
|
57
57
|
*/
|
|
58
|
-
export declare function
|
|
58
|
+
export declare function resolveSandboxLaunchArguments(shouldDisableSandbox?: boolean): string[];
|
|
59
59
|
/**
|
|
60
60
|
* Whether the auto-started Appium server console window should be hidden.
|
|
61
61
|
*
|
|
@@ -5,10 +5,10 @@ const OWNED_HIDDEN_LAUNCH_FLAGS = [
|
|
|
5
5
|
"--disable-renderer-backgrounding"
|
|
6
6
|
];
|
|
7
7
|
const NO_SANDBOX_LAUNCH_FLAG = "--no-sandbox";
|
|
8
|
-
function
|
|
8
|
+
function resolveOwnedHiddenLaunchArguments(isObsidianAppVisible) {
|
|
9
9
|
return shouldHideObsidianApp(isObsidianAppVisible) ? [...OWNED_HIDDEN_LAUNCH_FLAGS] : [];
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
function resolveSandboxLaunchArguments(shouldDisableSandbox) {
|
|
12
12
|
return shouldDisableSandbox ?? false ? [NO_SANDBOX_LAUNCH_FLAG] : [];
|
|
13
13
|
}
|
|
14
14
|
function shouldHideAppiumConsole(isAppiumConsoleVisible) {
|
|
@@ -23,10 +23,10 @@ function shouldHideObsidianApp(isObsidianAppVisible) {
|
|
|
23
23
|
export {
|
|
24
24
|
NO_SANDBOX_LAUNCH_FLAG,
|
|
25
25
|
OWNED_HIDDEN_LAUNCH_FLAGS,
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
resolveOwnedHiddenLaunchArguments,
|
|
27
|
+
resolveSandboxLaunchArguments,
|
|
28
28
|
shouldHideAppiumConsole,
|
|
29
29
|
shouldHideEmulatorWindow,
|
|
30
30
|
shouldHideObsidianApp
|
|
31
31
|
};
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3Zpc2liaWxpdHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBQdXJlIHJlc29sdXRpb24gb2YgdGhlIHByb2Nlc3MtdmlzaWJpbGl0eSBvcHRpb25zIFx1MjAxNCB3aGV0aGVyIHRoZSBsYXVuY2hlZFxuICogZGVza3RvcCBPYnNpZGlhbiB3aW5kb3csIEFuZHJvaWQgZW11bGF0b3Igd2luZG93LCBhbmQgQXBwaXVtIHNlcnZlciBjb25zb2xlXG4gKiBhcmUgc2hvd24gb24gc2NyZWVuLiBUaGUgZGVza3RvcCBhcHBsaWNhdGlvbiBpcyB2aXNpYmxlIGJ5IGRlZmF1bHQ7IGludGVncmF0aW9uXG4gKiBzZXR1cCBleHBsaWNpdGx5IHJlcXVlc3RzIGFuIG9mZi1zY3JlZW4gaW5zdGFuY2Ugc28gdGVzdCBydW5zIGRvIG5vdCBzdGVhbFxuICogZm9jdXMuIEFuZHJvaWQgc3VyZmFjZXMgYXJlIGhpZGRlbiBieSBkZWZhdWx0LlxuICpcbiAqIEtlcHQgc2VwYXJhdGUgZnJvbSB0aGUgaW50ZWdyYXRpb24tb25seSBsYXVuY2gvc3Bhd24gY29kZSAoYHRyYW5zcG9ydC1mYWN0b3J5YCxcbiAqIGB0cmFuc3BvcnQtZGVza3RvcC1jZHBgLCBgb2JzaWRpYW4taW5zdGFuY2VgLCBhbGwgZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKSBzb1xuICogdGhlIGhpZGRlbi1ieS1kZWZhdWx0IHJlc29sdXRpb24gc3RheXMgdW5pdC10ZXN0YWJsZSBcdTIwMTQgdGhvc2UgbGF1bmNoZXJzIG5lZWQgYVxuICogcmVhbCBPYnNpZGlhbiAvIGVtdWxhdG9yIC8gQXBwaXVtIHNlcnZlci5cbiAqL1xuXG4vKipcbiAqIENocm9taXVtIHN3aXRjaGVzIHBhc3NlZCB0byBhICoqaGlkZGVuKiogb3duZWQgZGVza3RvcCBpbnN0YW5jZS5cbiAqXG4gKiBUaGUgaGFybmVzcyBoaWRlcyB0aGUgd2luZG93IGJ5IG1vdmluZyBpdCAqKm9mZi1zY3JlZW4qKiAobm90IG1pbmltaXppbmcgaXQpLlxuICogQW4gb2ZmLXNjcmVlbiB3aW5kb3cgc3RpbGwgcmVwb3J0cyBgdmlzaWJpbGl0eVN0YXRlOiAndmlzaWJsZSdgIHRvIENocm9taXVtLCBzb1xuICogYHNldFRpbWVvdXRgLCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCwgYDpob3ZlcmAsIGFuZCB0cnVzdGVkIGlucHV0IGFsbCBrZWVwXG4gKiB3b3JraW5nIGV4YWN0bHkgYXMgd2hlbiB2aXNpYmxlIFx1MjAxNCBidXQgb25seSBpZiBDaHJvbWl1bSBuZXZlciBkZWNpZGVzIHRvXG4gKiBiYWNrZ3JvdW5kIGl0LiBUaGVzZSBmbGFncyBndWFyYW50ZWUgdGhhdDogbmF0aXZlIG9jY2x1c2lvbiB0cmFja2luZyBpc1xuICogZGlzYWJsZWQgYW5kIHRoZSB0aW1lci9yZW5kZXJlciBiYWNrZ3JvdW5kaW5nIGhldXJpc3RpY3MgYXJlIHN3aXRjaGVkIG9mZiwgc29cbiAqIGFuIG9mZi1zY3JlZW4gKG9yIGNvdmVyZWQpIHJlbmRlcmVyIGlzIG5ldmVyIHRocm90dGxlZCBvciBmcm96ZW4uXG4gKlxuICogQSAqbWluaW1pemVkKiB3aW5kb3csIGJ5IGNvbnRyYXN0LCBmcmVlemVzIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHJlZ2FyZGxlc3NcbiAqIG9mIGFueSBmbGFnICh0aGVyZSBpcyBubyBzdXJmYWNlIHRvIGNvbXBvc2l0ZSksIHdoaWNoIGlzIHdoeSB0aGUgaGFybmVzcyBtb3Zlc1xuICogdGhlIHdpbmRvdyBvZmYtc2NyZWVuIHJhdGhlciB0aGFuIG1pbmltaXppbmcgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBPV05FRF9ISURERU5fTEFVTkNIX0ZMQUdTID0gW1xuICAnLS1kaXNhYmxlLWZlYXR1cmVzPUNhbGN1bGF0ZU5hdGl2ZVdpbk9jY2x1c2lvbicsXG4gICctLWRpc2FibGUtYmFja2dyb3VuZC10aW1lci10aHJvdHRsaW5nJyxcbiAgJy0tZGlzYWJsZS1iYWNrZ3JvdW5kaW5nLW9jY2x1ZGVkLXdpbmRvd3MnLFxuICAnLS1kaXNhYmxlLXJlbmRlcmVyLWJhY2tncm91bmRpbmcnXG5dO1xuXG4vKipcbiAqIENocm9taXVtIHN3aXRjaCB0aGF0IGRpc2FibGVzIHRoZSBzZXR1aWQgc2FuZGJveCBmb3IgYW4gb3duZWQgaW5zdGFuY2UuXG4gKlxuICogRWxlY3Ryb24ncyBMaW51eCBzYW5kYm94IG5lZWRzIGEgY29ycmVjdGx5LWNvbmZpZ3VyZWQgKHJvb3Qtb3duZWQsIHNldHVpZClcbiAqIGBjaHJvbWUtc2FuZGJveGAgaGVscGVyLiBBIHBvcnRhYmxlIHNoZWxsIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciBcdTIwMTQgYW5kIGFcbiAqIENJIHJ1bm5lciBsYXVuY2hpbmcgaXQgYXMgYSBub24tcm9vdCB1c2VyIFx1MjAxNCBoYXMgbm8gc3VjaCBoZWxwZXIsIHNvIHRoZVxuICogcmVuZGVyZXIgcmVmdXNlcyB0byBzdGFydCAoXCJUaGUgU1VJRCBzYW5kYm94IGhlbHBlciBiaW5hcnkgd2FzIGZvdW5kLCBidXQgaXNcbiAqIG5vdCBjb25maWd1cmVkIGNvcnJlY3RseVwiKS4gUGFzc2luZyBgLS1uby1zYW5kYm94YCBkaXNhYmxlcyBpdC4gSXQgaXMgaGFybWxlc3NcbiAqIG9uIFdpbmRvd3MvbWFjT1MgKHRoZWlyIHNhbmRib3ggaXMgdW5hZmZlY3RlZCBieSBleHRyYWN0aW9uKSwgc28gYW4gb3duZWQgdGVzdFxuICogaW5zdGFuY2UgY2FuIHBhc3MgaXQgdW5pZm9ybWx5IGFjcm9zcyBwbGF0Zm9ybXMuXG4gKi9cbmV4cG9ydCBjb25zdCBOT19TQU5EQk9YX0xBVU5DSF9GTEFHID0gJy0tbm8tc2FuZGJveCc7XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGV4dHJhIENocm9taXVtIGxhdW5jaCBhcmd1bWVudHMgZm9yIGFuIG93bmVkIGRlc2t0b3AgaW5zdGFuY2U6IHRoZVxuICoge0BsaW5rIE9XTkVEX0hJRERFTl9MQVVOQ0hfRkxBR1N9IHdoZW4gdGhlIHdpbmRvdyBpcyBoaWRkZW4sIG9yIGFuIGVtcHR5IGxpc3RcbiAqIHdoZW4gaXQgaXMgdmlzaWJsZSAodGhlIGRlZmF1bHQpLlxuICpcbiAqIEBwYXJhbSBpc09ic2lkaWFuQXBwVmlzaWJsZSAtIFRoZSByZXNvbHZlZCBvcHRpb24gdmFsdWUgKG9taXR0ZWQgXHUyMTkyIHZpc2libGUpLlxuICogQHJldHVybnMgVGhlIGV4dHJhIGxhdW5jaCBhcmd1bWVudHMgKHBvc3NpYmx5IGVtcHR5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVPd25lZEhpZGRlbkxhdW5jaEFyZ3VtZW50cyhpc09ic2lkaWFuQXBwVmlzaWJsZT86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gIHJldHVybiBzaG91bGRIaWRlT2JzaWRpYW5BcHAoaXNPYnNpZGlhbkFwcFZpc2libGUpID8gWy4uLk9XTkVEX0hJRERFTl9MQVVOQ0hfRkxBR1NdIDogW107XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGV4dHJhIENocm9taXVtIGxhdW5jaCBhcmd1bWVudHMgZm9yIGRpc2FibGluZyB0aGUgc2FuZGJveC5cbiAqXG4gKiBAcGFyYW0gc2hvdWxkRGlzYWJsZVNhbmRib3ggLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiBzYW5kYm94IGtlcHQpLlxuICogQHJldHVybnMgYFt7QGxpbmsgTk9fU0FOREJPWF9MQVVOQ0hfRkxBR31dYCB3aGVuIHRoZSBzYW5kYm94IHNob3VsZCBiZSBkaXNhYmxlZCwgZWxzZSBgW11gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNhbmRib3hMYXVuY2hBcmd1bWVudHMoc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICByZXR1cm4gKHNob3VsZERpc2FibGVTYW5kYm94ID8/IGZhbHNlKSA/IFtOT19TQU5EQk9YX0xBVU5DSF9GTEFHXSA6IFtdO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGF1dG8tc3RhcnRlZCBBcHBpdW0gc2VydmVyIGNvbnNvbGUgd2luZG93IHNob3VsZCBiZSBoaWRkZW4uXG4gKlxuICogQHBhcmFtIGlzQXBwaXVtQ29uc29sZVZpc2libGUgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiBoaWRkZW4pLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGNvbnNvbGUgd2luZG93IHNob3VsZCBiZSBoaWRkZW4gKHRoZSBkZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEhpZGVBcHBpdW1Db25zb2xlKGlzQXBwaXVtQ29uc29sZVZpc2libGU/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiAhKGlzQXBwaXVtQ29uc29sZVZpc2libGUgPz8gZmFsc2UpO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGF1dG8tc3RhcnRlZCBBbmRyb2lkIGVtdWxhdG9yIHdpbmRvdyBzaG91bGQgYmUgaGlkZGVuXG4gKiAodmlhIHRoZSBlbXVsYXRvcidzIGAtbm8td2luZG93YCBmbGFnKS5cbiAqXG4gKiBAcGFyYW0gaXNFbXVsYXRvclZpc2libGUgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiBoaWRkZW4pLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGVtdWxhdG9yIHdpbmRvdyBzaG91bGQgYmUgaGlkZGVuICh0aGUgZGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRIaWRlRW11bGF0b3JXaW5kb3coaXNFbXVsYXRvclZpc2libGU/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiAhKGlzRW11bGF0b3JWaXNpYmxlID8/IGZhbHNlKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBvd25lZCBkZXNrdG9wIE9ic2lkaWFuIHdpbmRvdyBzaG91bGQgYmUgaGlkZGVuIChtb3ZlZCBvZmYtc2NyZWVuKS5cbiAqXG4gKiBAcGFyYW0gaXNPYnNpZGlhbkFwcFZpc2libGUgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB2aXNpYmxlKS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSB3aW5kb3cgc2hvdWxkIGJlIGhpZGRlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEhpZGVPYnNpZGlhbkFwcChpc09ic2lkaWFuQXBwVmlzaWJsZT86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuICEoaXNPYnNpZGlhbkFwcFZpc2libGUgPz8gdHJ1ZSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUE4Qk8sTUFBTSw0QkFBNEI7QUFBQSxFQUN2QztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBYU8sTUFBTSx5QkFBeUI7QUFVL0IsU0FBUyxrQ0FBa0Msc0JBQTBDO0FBQzFGLFNBQU8sc0JBQXNCLG9CQUFvQixJQUFJLENBQUMsR0FBRyx5QkFBeUIsSUFBSSxDQUFDO0FBQ3pGO0FBUU8sU0FBUyw4QkFBOEIsc0JBQTBDO0FBQ3RGLFNBQVEsd0JBQXdCLFFBQVMsQ0FBQyxzQkFBc0IsSUFBSSxDQUFDO0FBQ3ZFO0FBUU8sU0FBUyx3QkFBd0Isd0JBQTJDO0FBQ2pGLFNBQU8sRUFBRSwwQkFBMEI7QUFDckM7QUFTTyxTQUFTLHlCQUF5QixtQkFBc0M7QUFDN0UsU0FBTyxFQUFFLHFCQUFxQjtBQUNoQztBQVFPLFNBQVMsc0JBQXNCLHNCQUF5QztBQUM3RSxTQUFPLEVBQUUsd0JBQXdCO0FBQ25DOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
/**
|
|
14
14
|
* Vitest global setup function (plugin-less; no pre-population).
|
|
15
15
|
*
|
|
16
|
-
* Registers an empty temp vault and provides `
|
|
16
|
+
* Registers an empty temp vault and provides `temporaryVaultPath` to tests, without
|
|
17
17
|
* copying or enabling any plugin.
|
|
18
18
|
*/
|
|
19
19
|
export declare const setup: (this: void, project: import("vitest/node").TestProject) => Promise<void>;
|
|
@@ -23,4 +23,4 @@ export declare const setup: (this: void, project: import("vitest/node").TestProj
|
|
|
23
23
|
* Removes the temporary vault created during setup.
|
|
24
24
|
*/
|
|
25
25
|
export declare const teardown: (this: void) => Promise<void>;
|
|
26
|
-
export {
|
|
26
|
+
export { getTemporaryVault } from './global-setup.mjs';
|
|
@@ -2,10 +2,10 @@ import { createSetup } from "./global-setup.mjs";
|
|
|
2
2
|
const noPluginGlobalSetup = createSetup({ installPlugin: false });
|
|
3
3
|
const setup = noPluginGlobalSetup.setup;
|
|
4
4
|
const teardown = noPluginGlobalSetup.teardown;
|
|
5
|
-
import {
|
|
5
|
+
import { getTemporaryVault } from "./global-setup.mjs";
|
|
6
6
|
export {
|
|
7
|
-
|
|
7
|
+
getTemporaryVault,
|
|
8
8
|
setup,
|
|
9
9
|
teardown
|
|
10
10
|
};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAtbm8tcGx1Z2luLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVml0ZXN0ICoqcGx1Z2luLWxlc3MqKiBnbG9iYWwgc2V0dXAvdGVhcmRvd24gYWRhcHRlci5cbiAqXG4gKiBUaGUgY291bnRlcnBhcnQgdG8gYC4vZ2xvYmFsLXNldHVwLnRzYCAod2hpY2ggaW5zdGFsbHMgYW5kIGVuYWJsZXMgdGhlIGJ1aWx0XG4gKiBwbHVnaW4pLiBUaGlzIG9uZSBydW5zIHtAbGluayBjcmVhdGVTZXR1cH0gd2l0aCBgaW5zdGFsbFBsdWdpbjogZmFsc2VgLCBzbyBpdFxuICogbGF1bmNoZXMgdGhlIG93bmVkIE9ic2lkaWFuIGluc3RhbmNlLCByZWdpc3RlcnMgYW4gKiplbXB0eSoqIHRlbXAgdmF1bHQsIGFuZFxuICogcHVibGlzaGVzIHRoZSBvd25lZC1pbnN0YW5jZSBlbmRwb2ludCB0byB3b3JrZXJzIFx1MjAxNCBidXQgY29waWVzL2VuYWJsZXMgbm9cbiAqIHBsdWdpbi4gUG9pbnQgYSBub24tcGx1Z2luIGNvbnN1bWVyJ3MgYGdsb2JhbFNldHVwYCBzdHJhaWdodCBhdFxuICogYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1uby1wbHVnaW5gOyBubyB3cmFwcGVyIG5lZWRlZC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBzZXR1cCBjb3ZlcmVkIGJ5IGludGVncmF0aW9uIHRlc3RzLCBub3QgdW5pdCB0ZXN0cy4gKi9cblxuaW1wb3J0IHsgY3JlYXRlU2V0dXAgfSBmcm9tICcuL2dsb2JhbC1zZXR1cC5tanMnO1xuXG5jb25zdCBub1BsdWdpbkdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KTtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChwbHVnaW4tbGVzczsgbm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIFJlZ2lzdGVycyBhbiBlbXB0eSB0ZW1wIHZhdWx0IGFuZCBwcm92aWRlcyBgdGVtcG9yYXJ5VmF1bHRQYXRoYCB0byB0ZXN0cywgd2l0aG91dFxuICogY29weWluZyBvciBlbmFibGluZyBhbnkgcGx1Z2luLlxuICovXG5leHBvcnQgY29uc3Qgc2V0dXAgPSBub1BsdWdpbkdsb2JhbFNldHVwLnNldHVwO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgdGVhcmRvd24gZnVuY3Rpb24uXG4gKlxuICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLlxuICovXG5leHBvcnQgY29uc3QgdGVhcmRvd24gPSBub1BsdWdpbkdsb2JhbFNldHVwLnRlYXJkb3duO1xuXG5leHBvcnQgeyBnZXRUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4vZ2xvYmFsLXNldHVwLm1qcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFlQSxTQUFTLG1CQUFtQjtBQUU1QixNQUFNLHNCQUFzQixZQUFZLEVBQUUsZUFBZSxNQUFNLENBQUM7QUFRekQsTUFBTSxRQUFRLG9CQUFvQjtBQU9sQyxNQUFNLFdBQVcsb0JBQW9CO0FBRTVDLFNBQVMseUJBQXlCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* to test workers via Vitest's `project.provide` / `inject`.
|
|
8
8
|
*/
|
|
9
9
|
import type { TestProject } from 'vitest/node';
|
|
10
|
-
import type { PopulateFilesParams } from '../
|
|
11
|
-
import {
|
|
10
|
+
import type { PopulateFilesParams } from '../temporary-vault.mjs';
|
|
11
|
+
import { TemporaryVault } from '../temporary-vault.mjs';
|
|
12
12
|
/**
|
|
13
13
|
* Options for {@link createSetup}.
|
|
14
14
|
*/
|
|
@@ -59,12 +59,12 @@ export declare function createSetup(options?: CreateSetupOptions): VitestGlobalS
|
|
|
59
59
|
*
|
|
60
60
|
* @returns The temporary vault.
|
|
61
61
|
*/
|
|
62
|
-
export declare function
|
|
62
|
+
export declare function getTemporaryVault(): TemporaryVault;
|
|
63
63
|
/**
|
|
64
64
|
* Vitest global setup function (no pre-population).
|
|
65
65
|
*
|
|
66
66
|
* Copies the built plugin into a temporary vault, enables it via a renderer eval
|
|
67
|
-
* over the transport, and provides `
|
|
67
|
+
* over the transport, and provides `temporaryVaultPath` to tests.
|
|
68
68
|
*
|
|
69
69
|
* @param project - The Vitest project.
|
|
70
70
|
* @returns A promise that resolves when setup completes.
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
coreTeardown
|
|
10
10
|
} from "../global-setup-core.mjs";
|
|
11
11
|
import { log } from "../log.mjs";
|
|
12
|
-
import {
|
|
12
|
+
import { TemporaryVault } from "../temporary-vault.mjs";
|
|
13
13
|
setTransportOptionsResolver(() => inject("obsidianTransport"));
|
|
14
|
-
setVaultPathResolver(() => inject("
|
|
14
|
+
setVaultPathResolver(() => inject("temporaryVaultPath"));
|
|
15
15
|
function createSetup(options) {
|
|
16
16
|
let setupResult;
|
|
17
17
|
return { setup: setup2, teardown: teardown2 };
|
|
@@ -32,27 +32,27 @@ function createSetup(options) {
|
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
project.provide("obsidianTransport", setupResult.transportOptions);
|
|
35
|
-
project.provide("
|
|
35
|
+
project.provide("temporaryVaultPath", setupResult.temporaryVault.path);
|
|
36
36
|
}
|
|
37
37
|
async function teardown2() {
|
|
38
38
|
await coreTeardown(setupResult);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
function
|
|
42
|
-
const
|
|
41
|
+
function getTemporaryVault() {
|
|
42
|
+
const temporaryVaultPath = inject("temporaryVaultPath");
|
|
43
43
|
const setupErrorMessage = inject("setupError");
|
|
44
44
|
if (setupErrorMessage) {
|
|
45
45
|
throw new Error(`Integration setup failed \u2014 cannot get temp vault: ${setupErrorMessage}`);
|
|
46
46
|
}
|
|
47
|
-
return new
|
|
47
|
+
return new TemporaryVault(temporaryVaultPath);
|
|
48
48
|
}
|
|
49
49
|
const defaultGlobalSetup = createSetup();
|
|
50
50
|
const setup = defaultGlobalSetup.setup;
|
|
51
51
|
const teardown = defaultGlobalSetup.teardown;
|
|
52
52
|
export {
|
|
53
53
|
createSetup,
|
|
54
|
-
|
|
54
|
+
getTemporaryVault,
|
|
55
55
|
setup,
|
|
56
56
|
teardown
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLm1qcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wb3JhcnktdmF1bHQubWpzJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zIH0gZnJvbSAnLi4vdHJhbnNwb3J0LW9wdGlvbnMubWpzJztcblxuaW1wb3J0IHtcbiAgc2V0VHJhbnNwb3J0T3B0aW9uc1Jlc29sdmVyLFxuICBzZXRWYXVsdFBhdGhSZXNvbHZlclxufSBmcm9tICcuLi9jb250ZXh0LXByb3ZpZGVyLm1qcyc7XG5pbXBvcnQgeyBlcnJvclRvU3RyaW5nIH0gZnJvbSAnLi4vZXJyb3ItdG8tc3RyaW5nLm1qcyc7XG5pbXBvcnQge1xuICBjb3JlU2V0dXAsXG4gIGNvcmVUZWFyZG93blxufSBmcm9tICcuLi9nbG9iYWwtc2V0dXAtY29yZS5tanMnO1xuaW1wb3J0IHsgbG9nIH0gZnJvbSAnLi4vbG9nLm1qcyc7XG5pbXBvcnQgeyBUZW1wb3JhcnlWYXVsdCB9IGZyb20gJy4uL3RlbXBvcmFyeS12YXVsdC5tanMnO1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGluamVjdCgndGVtcG9yYXJ5VmF1bHRQYXRoJykpO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBjcmVhdGVTZXR1cH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2V0dXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIENvbW11bml0eS1wbHVnaW4gaWRzIHRvIGVuYWJsZSBpbiB0aGUgdmF1bHQgaW4gYWRkaXRpb24gdG8gdGhlIHBsdWdpbi11bmRlci10ZXN0LFxuICAgKiBhZnRlciBpdCBpcyBlbmFibGVkIChzZWUge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5lbmFibGVDb21tdW5pdHlQbHVnaW5zfSkuIFNlZWQgZWFjaFxuICAgKiBwbHVnaW4ncyBidWlsdCBmaWxlcyB2aWEge0BsaW5rIENyZWF0ZVNldHVwT3B0aW9ucy5wb3B1bGF0ZX0gKGUuZy4gd2l0aCBgYnVpbGREZW1vVmF1bHRQb3B1bGF0ZWApXG4gICAqIHNvIHRoZSBlbmFibGUgZmluZHMgdGhlbSBvbiBkaXNrLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQ29tbXVuaXR5UGx1Z2lucz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgYnVpbHQgcGx1Z2luIGluIHRoZSB0ZW1wIHZhdWx0LiBEZWZhdWx0c1xuICAgKiB0byBgdHJ1ZWAuIFNldCB0byBgZmFsc2VgIGZvciBhICoqbm9uLXBsdWdpbioqIGNvbnN1bWVyIHRoYXQgb25seSBuZWVkcyBhXG4gICAqIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IHRvIGBldmFsSW5PYnNpZGlhbmAgYWdhaW5zdCBcdTIwMTQgdGhlIG93bmVkIGluc3RhbmNlIGlzXG4gICAqIHN0aWxsIGxhdW5jaGVkIGFuZCBpdHMgZW5kcG9pbnQgcHVibGlzaGVkIHRvIHdvcmtlcnMsIHNvIHJlLWV4cG9ydGluZ1xuICAgKiBgY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KWAgcmV1c2VzIHRoZSBzYW1lIGF0dGFjaCB3aXJpbmcgd2l0aCBub1xuICAgKiBwbHVnaW4gY29weS9lbmFibGUuIFNlZSB7QGxpbmsgQ29yZVNldHVwUGFyYW1zLmluc3RhbGxQbHVnaW59LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbFBsdWdpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZmlsZXMvZm9sZGVycyB0byB3cml0ZSBpbnRvIHRoZSB2YXVsdCBiZWZvcmUgT2JzaWRpYW4gb3BlbnMgaXQgKHNlZVxuICAgKiB7QGxpbmsgQ29yZVNldHVwUGFyYW1zLnBvcHVsYXRlfSkuIEEgdGh1bmsgc28gbGFyZ2UgZml4dHVyZXMgYXJlIGJ1aWx0IGxhemlseSxcbiAgICogb25jZSwgaW4gdGhlIHNldHVwIHByb2Nlc3MuXG4gICAqL1xuICBwb3B1bGF0ZT8odGhpczogdm9pZCk6IFBvcHVsYXRlRmlsZXNQYXJhbXM7XG59XG5cbi8qKlxuICogQSBWaXRlc3QgYGdsb2JhbFNldHVwYCBtb2R1bGUncyBgc2V0dXBgIC8gYHRlYXJkb3duYCBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpdGVzdEdsb2JhbFNldHVwIHtcbiAgc2V0dXAodGhpczogdm9pZCwgcHJvamVjdDogVGVzdFByb2plY3QpOiBQcm9taXNlPHZvaWQ+O1xuICB0ZWFyZG93bih0aGlzOiB2b2lkKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgVml0ZXN0IGdsb2JhbCBzZXR1cC90ZWFyZG93biBwYWlyLCBvcHRpb25hbGx5IHByZS1wb3B1bGF0aW5nIHRoZSB2YXVsdFxuICogYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IFx1MjAxNCB1c2UgdGhpcyBmb3IgYSBkZWRpY2F0ZWQgbGFyZ2UtdmF1bHQvcGVyZm9ybWFuY2VcbiAqIHByb2plY3QuIFRoZSBwbGFpbiB7QGxpbmsgc2V0dXB9IC8ge0BsaW5rIHRlYXJkb3dufSBleHBvcnRzIGFyZSB0aGUgbm8tcG9wdWxhdGVcbiAqIGNhc2UgKGBjcmVhdGVTZXR1cCgpYCkuIFBhc3MgYHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfWAgZm9yIGEgbm9uLXBsdWdpbiBjb25zdW1lclxuICogdGhhdCBvbmx5IG5lZWRzIGEgcmVnaXN0ZXJlZCwgZW1wdHkgdmF1bHQgKHNlZSB7QGxpbmsgQ3JlYXRlU2V0dXBPcHRpb25zLmluc3RhbGxQbHVnaW59KS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFNldHVwIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgYHNldHVwYCBhbmQgYHRlYXJkb3duYCBmdW5jdGlvbnMgdG8gcmUtZXhwb3J0IGZyb20gYSBgZ2xvYmFsU2V0dXBgIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNldHVwKG9wdGlvbnM/OiBDcmVhdGVTZXR1cE9wdGlvbnMpOiBWaXRlc3RHbG9iYWxTZXR1cCB7XG4gIGxldCBzZXR1cFJlc3VsdDogQ29yZVNldHVwUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7IHNldHVwLCB0ZWFyZG93biB9O1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW52aXJvbm1lbnRPcHRpb25zID0gcHJvamVjdC5jb25maWcuZW52aXJvbm1lbnRPcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRyYW5zcG9ydE9wdGlvbnMgPSBlbnZpcm9ubWVudE9wdGlvbnM/Llsnb2JzaWRpYW5UcmFuc3BvcnQnXSBhcyBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbGFiZWwgPSB0cmFuc3BvcnRPcHRpb25zPy50eXBlID8/ICdvYnNpZGlhbi1jZHAnO1xuXG4gICAgdHJ5IHtcbiAgICAgIHNldHVwUmVzdWx0ID0gYXdhaXQgY29yZVNldHVwKHtcbiAgICAgICAgZW5hYmxlQ29tbXVuaXR5UGx1Z2luczogb3B0aW9ucz8uZW5hYmxlQ29tbXVuaXR5UGx1Z2lucyxcbiAgICAgICAgaW5zdGFsbFBsdWdpbjogb3B0aW9ucz8uaW5zdGFsbFBsdWdpbixcbiAgICAgICAgcG9wdWxhdGU6IG9wdGlvbnM/LnBvcHVsYXRlPy4oKSxcbiAgICAgICAgdHJhbnNwb3J0T3B0aW9uc1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIC8vIENhdGNoIHNldHVwIGVycm9ycyBzbyB0aGF0IG90aGVyIHByb2plY3RzJyB0ZXN0cyBjYW4gc3RpbGwgcnVuLlxuICAgICAgLy8gSW5kaXZpZHVhbCB0ZXN0cyBpbiB0aGlzIHByb2plY3Qgd2lsbCBmYWlsIHdpdGggdGhlIHN0b3JlZCBlcnJvclxuICAgICAgLy8gV2hlbiB0aGV5IHRyeSB0byBpbmplY3QgdGhlIHRlbXAgdmF1bHQgcGF0aC5cbiAgICAgIGxvZyhgW2ludGVncmF0aW9uLXNldHVwOiR7bGFiZWx9XSBTZXR1cCBmYWlsZWQgKHRlc3RzIGZvciB0aGlzIHByb2plY3Qgd2lsbCBiZSBza2lwcGVkKTogJHtlcnJvclRvU3RyaW5nKGVycm9yKX1gKTtcbiAgICAgIHByb2plY3QucHJvdmlkZSgnc2V0dXBFcnJvcicsIGVycm9yVG9TdHJpbmcoZXJyb3IpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwcm9qZWN0LnByb3ZpZGUoJ29ic2lkaWFuVHJhbnNwb3J0Jywgc2V0dXBSZXN1bHQudHJhbnNwb3J0T3B0aW9ucyk7XG4gICAgcHJvamVjdC5wcm92aWRlKCd0ZW1wb3JhcnlWYXVsdFBhdGgnLCBzZXR1cFJlc3VsdC50ZW1wb3JhcnlWYXVsdC5wYXRoKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRlYXJkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGNvcmVUZWFyZG93bihzZXR1cFJlc3VsdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0ZW1wb3JhcnkgdmF1bHQgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdGVtcG9yYXJ5IHZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5VmF1bHQoKTogVGVtcG9yYXJ5VmF1bHQge1xuICBjb25zdCB0ZW1wb3JhcnlWYXVsdFBhdGggPSBpbmplY3QoJ3RlbXBvcmFyeVZhdWx0UGF0aCcpO1xuICBjb25zdCBzZXR1cEVycm9yTWVzc2FnZSA9IGluamVjdCgnc2V0dXBFcnJvcicpO1xuICBpZiAoc2V0dXBFcnJvck1lc3NhZ2UpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVncmF0aW9uIHNldHVwIGZhaWxlZCBcdTIwMTQgY2Fubm90IGdldCB0ZW1wIHZhdWx0OiAke3NldHVwRXJyb3JNZXNzYWdlfWApO1xuICB9XG4gIHJldHVybiBuZXcgVGVtcG9yYXJ5VmF1bHQodGVtcG9yYXJ5VmF1bHRQYXRoKTtcbn1cblxuY29uc3QgZGVmYXVsdEdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoKTtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChubyBwcmUtcG9wdWxhdGlvbikuXG4gKlxuICogQ29waWVzIHRoZSBidWlsdCBwbHVnaW4gaW50byBhIHRlbXBvcmFyeSB2YXVsdCwgZW5hYmxlcyBpdCB2aWEgYSByZW5kZXJlciBldmFsXG4gKiBvdmVyIHRoZSB0cmFuc3BvcnQsIGFuZCBwcm92aWRlcyBgdGVtcG9yYXJ5VmF1bHRQYXRoYCB0byB0ZXN0cy5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdCAtIFRoZSBWaXRlc3QgcHJvamVjdC5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gc2V0dXAgY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3Qgc2V0dXAgPSBkZWZhdWx0R2xvYmFsU2V0dXAuc2V0dXA7XG5cbi8qKlxuICogVml0ZXN0IGdsb2JhbCB0ZWFyZG93biBmdW5jdGlvbi5cbiAqXG4gKiBSZW1vdmVzIHRoZSB0ZW1wb3JhcnkgdmF1bHQgY3JlYXRlZCBkdXJpbmcgc2V0dXAuXG4gKlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0ZWFyZG93biBjb21wbGV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCB0ZWFyZG93biA9IGRlZmF1bHRHbG9iYWxTZXR1cC50ZWFyZG93bjtcbiJdLAogICJtYXBwaW5ncyI6ICJBQWFBLFNBQVMsY0FBYztBQU12QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMscUJBQXFCO0FBQzlCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxXQUFXO0FBQ3BCLFNBQVMsc0JBQXNCO0FBRS9CLDRCQUE0QixNQUFNLE9BQU8sbUJBQW1CLENBQUM7QUFDN0QscUJBQXFCLE1BQU0sT0FBTyxvQkFBb0IsQ0FBQztBQWtEaEQsU0FBUyxZQUFZLFNBQWlEO0FBQzNFLE1BQUk7QUFFSixTQUFPLEVBQUUsT0FBQUEsUUFBTyxVQUFBQyxVQUFTO0FBRXpCLGlCQUFlRCxPQUFNLFNBQXFDO0FBQ3hELFVBQU0scUJBQXFCLFFBQVEsT0FBTztBQUMxQyxVQUFNLG1CQUFtQixxQkFBcUIsbUJBQW1CO0FBQ2pFLFVBQU0sUUFBUSxrQkFBa0IsUUFBUTtBQUV4QyxRQUFJO0FBQ0Ysb0JBQWMsTUFBTSxVQUFVO0FBQUEsUUFDNUIsd0JBQXdCLFNBQVM7QUFBQSxRQUNqQyxlQUFlLFNBQVM7QUFBQSxRQUN4QixVQUFVLFNBQVMsV0FBVztBQUFBLFFBQzlCO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSCxTQUFTLE9BQWdCO0FBSXZCLFVBQUksc0JBQXNCLEtBQUssNERBQTRELGNBQWMsS0FBSyxDQUFDLEVBQUU7QUFDakgsY0FBUSxRQUFRLGNBQWMsY0FBYyxLQUFLLENBQUM7QUFDbEQ7QUFBQSxJQUNGO0FBRUEsWUFBUSxRQUFRLHFCQUFxQixZQUFZLGdCQUFnQjtBQUNqRSxZQUFRLFFBQVEsc0JBQXNCLFlBQVksZUFBZSxJQUFJO0FBQUEsRUFDdkU7QUFFQSxpQkFBZUMsWUFBMEI7QUFDdkMsVUFBTSxhQUFhLFdBQVc7QUFBQSxFQUNoQztBQUNGO0FBT08sU0FBUyxvQkFBb0M7QUFDbEQsUUFBTSxxQkFBcUIsT0FBTyxvQkFBb0I7QUFDdEQsUUFBTSxvQkFBb0IsT0FBTyxZQUFZO0FBQzdDLE1BQUksbUJBQW1CO0FBQ3JCLFVBQU0sSUFBSSxNQUFNLDBEQUFxRCxpQkFBaUIsRUFBRTtBQUFBLEVBQzFGO0FBQ0EsU0FBTyxJQUFJLGVBQWUsa0JBQWtCO0FBQzlDO0FBRUEsTUFBTSxxQkFBcUIsWUFBWTtBQVdoQyxNQUFNLFFBQVEsbUJBQW1CO0FBU2pDLE1BQU0sV0FBVyxtQkFBbUI7IiwKICAibmFtZXMiOiBbInNldHVwIiwgInRlYXJkb3duIl0KfQo=
|