@mnaoumov/typescript-lib 1.4.0 → 1.6.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 +4 -1
- package/dist/lib/cjs/abort-controller.cjs +1 -1
- package/dist/lib/cjs/abort-controller.d.cts +8 -7
- package/dist/lib/cjs/api-contract-verifier.cjs +88 -0
- package/dist/lib/cjs/api-contract-verifier.d.cts +81 -0
- package/dist/lib/cjs/api-contract.cjs +30 -1
- package/dist/lib/cjs/api-contract.d.cts +72 -1
- package/dist/lib/cjs/debug-controller.cjs +1 -1
- package/dist/lib/cjs/debug-controller.d.cts +2 -2
- package/dist/lib/cjs/debug.cjs +21 -2
- package/dist/lib/cjs/debug.d.cts +5 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/library.cjs +10 -1
- package/dist/lib/cjs/library.d.cts +13 -0
- package/dist/lib/cjs/type-guards.cjs +11 -3
- package/dist/lib/cjs/type-guards.d.cts +27 -3
- package/dist/lib/cjs/typescript-lib-state.cjs +1 -1
- package/dist/lib/cjs/typescript-lib-state.d.cts +1 -1
- package/dist/lib/esm/abort-controller.d.mts +8 -7
- package/dist/lib/esm/abort-controller.mjs +1 -1
- package/dist/lib/esm/api-contract-verifier.d.mts +81 -0
- package/dist/lib/esm/api-contract-verifier.mjs +63 -0
- package/dist/lib/esm/api-contract.d.mts +72 -1
- package/dist/lib/esm/api-contract.mjs +30 -1
- package/dist/lib/esm/debug-controller.d.mts +2 -2
- package/dist/lib/esm/debug.d.mts +5 -0
- package/dist/lib/esm/debug.mjs +21 -2
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/library.d.mts +13 -0
- package/dist/lib/esm/library.mjs +10 -1
- package/dist/lib/esm/type-guards.d.mts +27 -3
- package/dist/lib/esm/type-guards.mjs +11 -3
- package/dist/lib/esm/typescript-lib-state.d.mts +1 -1
- package/dist/lib/esm/typescript-lib-state.mjs +1 -1
- package/package.json +3 -3
package/dist/lib/esm/debug.mjs
CHANGED
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
} from "./error.mjs";
|
|
38
38
|
import { Library } from "./library.mjs";
|
|
39
39
|
import { getTypescriptLibState } from "./typescript-lib-state.mjs";
|
|
40
|
+
const ALIAS_FRAMES_TO_SKIP = 1;
|
|
40
41
|
const NAMESPACE_SEPARATOR = ",";
|
|
41
42
|
const NEGATED_NAMESPACE_PREFIX = "-";
|
|
42
43
|
function enableLibraryDebuggers() {
|
|
@@ -69,7 +70,25 @@ function getDebugger(namespace, framesToSkip = 0) {
|
|
|
69
70
|
return debuggerEx;
|
|
70
71
|
}
|
|
71
72
|
function getLibDebugger(namespace) {
|
|
72
|
-
|
|
73
|
+
const aliases = Library.debugNamespaceAliases;
|
|
74
|
+
if (aliases.length === 0) {
|
|
75
|
+
return getDebugger(`${Library.debugPrefixNamespace}${Library.debugNamespace}:${namespace}`);
|
|
76
|
+
}
|
|
77
|
+
const currentDebugger = getDebugger(`${Library.debugPrefixNamespace}${Library.debugNamespace}:${namespace}`, ALIAS_FRAMES_TO_SKIP);
|
|
78
|
+
const aliasDebuggers = aliases.map((alias) => getDebugger(`${Library.debugPrefixNamespace}${alias}:${namespace}`, ALIAS_FRAMES_TO_SKIP));
|
|
79
|
+
const allDebuggers = [currentDebugger, ...aliasDebuggers];
|
|
80
|
+
return new Proxy(currentDebugger, {
|
|
81
|
+
apply(_target, _thisArgument, $arguments) {
|
|
82
|
+
allDebuggers.find((debuggerInstance) => debuggerInstance.enabled)?.(...$arguments);
|
|
83
|
+
},
|
|
84
|
+
get(target, property, receiver) {
|
|
85
|
+
if (property === "enabled") {
|
|
86
|
+
return allDebuggers.some((debuggerInstance) => debuggerInstance.enabled);
|
|
87
|
+
}
|
|
88
|
+
const value = Reflect.get(target, property, receiver);
|
|
89
|
+
return value;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
73
92
|
}
|
|
74
93
|
function printWithStackTrace(params) {
|
|
75
94
|
const {
|
|
@@ -165,4 +184,4 @@ export {
|
|
|
165
184
|
printWithStackTrace,
|
|
166
185
|
showInitialDebugMessage
|
|
167
186
|
};
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyIH0gZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnQ29udHJvbGxlciB9IGZyb20gJy4vZGVidWctY29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7XG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgZ2V0VHlwZXNjcmlwdExpYlN0YXRlIH0gZnJvbSAnLi90eXBlc2NyaXB0LWxpYi1zdGF0ZS50cyc7XG5cbmNvbnN0IE5BTUVTUEFDRV9TRVBBUkFUT1IgPSAnLCc7XG5jb25zdCBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggPSAnLSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByaW50V2l0aFN0YWNrVHJhY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW50V2l0aFN0YWNrVHJhY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5ICRhcmd1bWVudHM6IHVua25vd25bXTtcblxuICAvKipcbiAgICogVGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2UgdG8gcHJpbnQuXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvZ1dpdGhDYWxsZXJ9LlxuICovXG5pbnRlcmZhY2UgTG9nV2l0aENhbGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGFyZ3VtZW50czogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1lc1RvU2tpcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5hYmxlcyB0aGUgZGVidWdnZXJzIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlLCBgJHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToqYF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1ZyBjb250cm9sbGVyLlxuICpcbiAqIEByZXR1cm5zIEEgZGVidWcgY29udHJvbGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnQ29udHJvbGxlcigpOiBEZWJ1Z0NvbnRyb2xsZXIge1xuICByZXR1cm4ge1xuICAgIGRpc2FibGU6IGRpc2FibGVOYW1lc3BhY2VzLFxuICAgIGVuYWJsZTogZW5hYmxlTmFtZXNwYWNlcyxcbiAgICBnZXQ6IGdldE5hbWVzcGFjZXMsXG4gICAgc2V0OiBzZXROYW1lc3BhY2VzXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIHdpdGggYSBsb2cgZnVuY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgY2FsbGVyJ3MgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlci5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHBhcmFtIGZyYW1lc1RvU2tpcCAtIFRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIHNraXAgaW4gdGhlIHN0YWNrIHRyYWNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSB3aXRoIGEgbG9nIGZ1bmN0aW9uIHRoYXQgaW5jbHVkZXMgdGhlIGNhbGxlcidzIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZywgZnJhbWVzVG9Ta2lwID0gMCk6IERlYnVnZ2VyIHtcbiAgY29uc3Qga2V5ID0gYCR7bmFtZXNwYWNlfToke1N0cmluZyhmcmFtZXNUb1NraXApfWA7XG4gIGNvbnN0IGRlYnVnZ2Vyc01hcCA9IGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWdnZXJzJywgbmV3IE1hcDxzdHJpbmcsIERlYnVnZ2VyPigpKS52YWx1ZTtcbiAgbGV0IGRlYnVnZ2VyRXggPSBkZWJ1Z2dlcnNNYXAuZ2V0KGtleSk7XG4gIGlmICghZGVidWdnZXJFeCkge1xuICAgIGRlYnVnZ2VyRXggPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkobmFtZXNwYWNlKTtcbiAgICBkZWJ1Z2dlckV4LmxvZyA9IChtZXNzYWdlOiBzdHJpbmcsIC4uLiRhcmd1bWVudHM6IHVua25vd25bXSk6IHZvaWQgPT4ge1xuICAgICAgbG9nV2l0aENhbGxlcih7XG4gICAgICAgICRhcmd1bWVudHMsXG4gICAgICAgIGZyYW1lc1RvU2tpcCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgbmFtZXNwYWNlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgZGVidWdnZXJzTWFwLnNldChrZXksIGRlYnVnZ2VyRXgpO1xuICB9XG5cbiAgcmV0dXJuIGRlYnVnZ2VyRXg7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZSAtIFRoZSBuYW1lc3BhY2UgZm9yIHRoZSBkZWJ1Z2dlciBpbnN0YW5jZS5cbiAqIEByZXR1cm5zIEEgZGVidWdnZXIgaW5zdGFuY2UgZm9yIHRoZSBsaWJyYXJ5ICh1bmRlciBpdHMgZGVidWcgbmFtZXNwYWNlLCBzZWUgYExpYnJhcnkuZGVidWdOYW1lc3BhY2VgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpYkRlYnVnZ2VyKG5hbWVzcGFjZTogc3RyaW5nKTogRGVidWdnZXIge1xuICByZXR1cm4gZ2V0RGVidWdnZXIoYCR7TGlicmFyeS5kZWJ1Z1ByZWZpeE5hbWVzcGFjZX0ke0xpYnJhcnkuZGVidWdOYW1lc3BhY2V9OiR7bmFtZXNwYWNlfWApO1xufVxuXG4vKipcbiAqIFByaW50cyBhIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHJpbnRpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFdpdGhTdGFja1RyYWNlKHBhcmFtczogUHJpbnRXaXRoU3RhY2tUcmFjZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgJGFyZ3VtZW50cyxcbiAgICBkZWJ1Z2dlckluc3RhbmNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhY2tUcmFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xufVxuXG4vKipcbiAqIFNob3dzIGFuIGluaXRpYWwgZGVidWcgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2UocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBpc0VuYWJsZWQgPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlZChwbHVnaW5JZCk7XG4gIGNvbnN0IHN0YXRlID0gaXNFbmFibGVkID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJztcbiAgY29uc3QgY2hhbmdlQWN0aW9uID0gaXNFbmFibGVkID8gJ2Rpc2FibGUnIDogJ2VuYWJsZSc7XG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBnZXROYW1lc3BhY2VzKCk7XG4gIHNldE5hbWVzcGFjZXMocGx1Z2luSWQpO1xuICBnZXREZWJ1Z2dlcihwbHVnaW5JZCkoXG4gICAgYERlYnVnIG1lc3NhZ2VzIGZvciBwbHVnaW4gJHtwbHVnaW5JZH0gYXJlICR7c3RhdGV9LiR7Zm9ybWF0R3VpZGVSZWZlcmVuY2UoYCBob3cgdG8gJHtjaGFuZ2VBY3Rpb259IHRoZW1gKX1gXG4gICk7XG4gIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlcyk7XG59XG5cbmZ1bmN0aW9uIGRpc2FibGVOYW1lc3BhY2VzKG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGNvbnN0IHNldCA9IG5ldyBTZXQoZ2V0TmFtZXNwYWNlcygpKTtcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgdG9BcnJheShuYW1lc3BhY2VzKSkge1xuICAgIGlmIChuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbmVnYXRlZE5hbWVzcGFjZSA9IE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCArIG5hbWVzcGFjZTtcbiAgICBzZXQuZGVsZXRlKG5hbWVzcGFjZSk7XG4gICAgc2V0LmFkZChuZWdhdGVkTmFtZXNwYWNlKTtcbiAgfVxuICBzZXROYW1lc3BhY2VzKFsuLi5zZXRdKTtcbn1cblxuZnVuY3Rpb24gZW5hYmxlTmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0KGdldE5hbWVzcGFjZXMoKSk7XG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHRvQXJyYXkobmFtZXNwYWNlcykpIHtcbiAgICBpZiAoIW5hbWVzcGFjZS5zdGFydHNXaXRoKE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCkpIHtcbiAgICAgIGNvbnN0IG5lZ2F0ZWROYW1lc3BhY2UgPSBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggKyBuYW1lc3BhY2U7XG4gICAgICBzZXQuZGVsZXRlKG5lZ2F0ZWROYW1lc3BhY2UpO1xuICAgIH1cbiAgICBzZXQuYWRkKG5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhbLi4uc2V0XSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEd1aWRlUmVmZXJlbmNlKHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIExpYnJhcnkuZGVidWdHdWlkZVVybCA/IGAgU2VlICR7TGlicmFyeS5kZWJ1Z0d1aWRlVXJsfSR7c3VmZml4fS5gIDogJyc7XG59XG5cbmZ1bmN0aW9uIGdldE5hbWVzcGFjZXMoKTogc3RyaW5nW10ge1xuICByZXR1cm4gdG9BcnJheShnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkubG9hZCgpID8/ICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpOiB0eXBlb2YgZGVidWcge1xuICByZXR1cm4gZ2V0VHlwZXNjcmlwdExpYlN0YXRlKCdkZWJ1ZycsIGRlYnVnKS52YWx1ZTtcbn1cblxuZnVuY3Rpb24gbG9nV2l0aENhbGxlcihwYXJhbXM6IExvZ1dpdGhDYWxsZXJQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgICRhcmd1bWVudHMsXG4gICAgZnJhbWVzVG9Ta2lwLFxuICAgIG1lc3NhZ2UsXG4gICAgbmFtZXNwYWNlXG4gIH0gPSBwYXJhbXM7XG4gIGlmICghZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZWQobmFtZXNwYWNlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghTGlicmFyeS5zaG91bGRQcmludFN0YWNrVHJhY2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBWYWxpZCB1c2FnZS5cbiAgICBjb25zb2xlLmRlYnVnKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY2FsbGVyIGlzIDMgZnJhbWVzIGFib3ZlIHRoaXMgb25lLCBiZWNhdXNlIHRoZSBjYWxsIHN0YWNrIGlzIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIDA6IGxvZ1dpdGhDYWxsZXJcbiAgICogMTogZGVidWdJbnN0YW5jZS5sb2dcbiAgICogMjogZGVidWdcbiAgICogMzogZnVuY3Rpb25OYW1lICh0aGUgY2FsbGVyKVxuICAgKlxuICAgKiBgZ2V0U3RhY2tUcmFjZWAgZHJvcHMgaXRzIG93biBmcmFtZSBhbmQsIG9uIGFuIGVuZ2luZSB0aGF0IHdyaXRlcyBvbmUsIHRoZSBgRXJyb3JgIGhlYWRlciBsaW5lLlxuICAgKi9cbiAgY29uc3QgQ0FMTEVSX0ZSQU1FX0lOREVYID0gMztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBWYWxpZCB1c2FnZS5cbiAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi4kYXJndW1lbnRzLCAnXFxuXFxuLS0tXFxuTG9nZ2VyIHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3IoZ2V0U3RhY2tUcmFjZShDQUxMRVJfRlJBTUVfSU5ERVggKyBmcmFtZXNUb1NraXApKSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZTogc3RyaW5nKTogQ3VzdG9tU3RhY2tUcmFjZUVycm9yIHtcbiAgcmV0dXJuIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3Ioe1xuICAgIGNhdXNlOiB1bmRlZmluZWQsXG4gICAgbWVzc2FnZTogYERlYnVnIG1vZGU6IGludGVudGlvbmFsIHBsYWNlaG9sZGVyIGVycm9yLiR7Zm9ybWF0R3VpZGVSZWZlcmVuY2UoJycpfWAsXG4gICAgc3RhY2tUcmFjZVxuICB9KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlcyAtIFRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqL1xuZnVuY3Rpb24gc2V0TmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlKHRvQXJyYXkobmFtZXNwYWNlcykuam9pbihOQU1FU1BBQ0VfU0VQQVJBVE9SKSk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiB0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzLnNwbGl0KE5BTUVTUEFDRV9TRVBBUkFUT1IpLmZpbHRlcihCb29sZWFuKSA6IG5hbWVzcGFjZXMuZmxhdE1hcCgobmFtZXNwYWNlKSA9PiB0b0FycmF5KG5hbWVzcGFjZSkpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sV0FBVztBQUlsQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsZUFBZTtBQUN4QixTQUFTLDZCQUE2QjtBQUV0QyxNQUFNLHNCQUFzQjtBQUM1QixNQUFNLDJCQUEyQjtBQXVEMUIsU0FBUyx5QkFBK0I7QUFDN0MsbUJBQWlCLENBQUMsUUFBUSxnQkFBZ0IsR0FBRyxRQUFRLGNBQWMsSUFBSSxDQUFDO0FBQzFFO0FBT08sU0FBUyxxQkFBc0M7QUFDcEQsU0FBTztBQUFBLElBQ0wsU0FBUztBQUFBLElBQ1QsUUFBUTtBQUFBLElBQ1IsS0FBSztBQUFBLElBQ0wsS0FBSztBQUFBLEVBQ1A7QUFDRjtBQVNPLFNBQVMsWUFBWSxXQUFtQixlQUFlLEdBQWE7QUFDekUsUUFBTSxNQUFNLEdBQUcsU0FBUyxJQUFJLE9BQU8sWUFBWSxDQUFDO0FBQ2hELFFBQU0sZUFBZSxzQkFBc0IsYUFBYSxvQkFBSSxJQUFzQixDQUFDLEVBQUU7QUFDckYsTUFBSSxhQUFhLGFBQWEsSUFBSSxHQUFHO0FBQ3JDLE1BQUksQ0FBQyxZQUFZO0FBQ2YsaUJBQWEsMEJBQTBCLEVBQUUsU0FBUztBQUNsRCxlQUFXLE1BQU0sQ0FBQyxZQUFvQixlQUFnQztBQUNwRSxvQkFBYztBQUFBLFFBQ1o7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNIO0FBRUEsaUJBQWEsSUFBSSxLQUFLLFVBQVU7QUFBQSxFQUNsQztBQUVBLFNBQU87QUFDVDtBQVFPLFNBQVMsZUFBZSxXQUE2QjtBQUMxRCxTQUFPLFlBQVksR0FBRyxRQUFRLG9CQUFvQixHQUFHLFFBQVEsY0FB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
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyIH0gZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnQ29udHJvbGxlciB9IGZyb20gJy4vZGVidWctY29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7XG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgZ2V0VHlwZXNjcmlwdExpYlN0YXRlIH0gZnJvbSAnLi90eXBlc2NyaXB0LWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGFsaWFzaW5nIGRlYnVnZ2VyJ3Mgb3duIGZyYW1lIGJldHdlZW4gdGhlIGNhbGxlciBhbmQgdGhlIGBkZWJ1Z2AgcGFja2FnZTogdGhlIGBhcHBseWAgdHJhcCBvZiBpdHMgcHJveHkuXG4gKi9cbmNvbnN0IEFMSUFTX0ZSQU1FU19UT19TS0lQID0gMTtcbmNvbnN0IE5BTUVTUEFDRV9TRVBBUkFUT1IgPSAnLCc7XG5jb25zdCBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggPSAnLSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByaW50V2l0aFN0YWNrVHJhY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW50V2l0aFN0YWNrVHJhY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5ICRhcmd1bWVudHM6IHVua25vd25bXTtcblxuICAvKipcbiAgICogVGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2UgdG8gcHJpbnQuXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvZ1dpdGhDYWxsZXJ9LlxuICovXG5pbnRlcmZhY2UgTG9nV2l0aENhbGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGFyZ3VtZW50czogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1lc1RvU2tpcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5hYmxlcyB0aGUgZGVidWdnZXJzIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlLCBgJHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToqYF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1ZyBjb250cm9sbGVyLlxuICpcbiAqIEByZXR1cm5zIEEgZGVidWcgY29udHJvbGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnQ29udHJvbGxlcigpOiBEZWJ1Z0NvbnRyb2xsZXIge1xuICByZXR1cm4ge1xuICAgIGRpc2FibGU6IGRpc2FibGVOYW1lc3BhY2VzLFxuICAgIGVuYWJsZTogZW5hYmxlTmFtZXNwYWNlcyxcbiAgICBnZXQ6IGdldE5hbWVzcGFjZXMsXG4gICAgc2V0OiBzZXROYW1lc3BhY2VzXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIHdpdGggYSBsb2cgZnVuY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgY2FsbGVyJ3MgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlci5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHBhcmFtIGZyYW1lc1RvU2tpcCAtIFRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIHNraXAgaW4gdGhlIHN0YWNrIHRyYWNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSB3aXRoIGEgbG9nIGZ1bmN0aW9uIHRoYXQgaW5jbHVkZXMgdGhlIGNhbGxlcidzIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZywgZnJhbWVzVG9Ta2lwID0gMCk6IERlYnVnZ2VyIHtcbiAgY29uc3Qga2V5ID0gYCR7bmFtZXNwYWNlfToke1N0cmluZyhmcmFtZXNUb1NraXApfWA7XG4gIGNvbnN0IGRlYnVnZ2Vyc01hcCA9IGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWdnZXJzJywgbmV3IE1hcDxzdHJpbmcsIERlYnVnZ2VyPigpKS52YWx1ZTtcbiAgbGV0IGRlYnVnZ2VyRXggPSBkZWJ1Z2dlcnNNYXAuZ2V0KGtleSk7XG4gIGlmICghZGVidWdnZXJFeCkge1xuICAgIGRlYnVnZ2VyRXggPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkobmFtZXNwYWNlKTtcbiAgICBkZWJ1Z2dlckV4LmxvZyA9IChtZXNzYWdlOiBzdHJpbmcsIC4uLiRhcmd1bWVudHM6IHVua25vd25bXSk6IHZvaWQgPT4ge1xuICAgICAgbG9nV2l0aENhbGxlcih7XG4gICAgICAgICRhcmd1bWVudHMsXG4gICAgICAgIGZyYW1lc1RvU2tpcCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgbmFtZXNwYWNlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgZGVidWdnZXJzTWFwLnNldChrZXksIGRlYnVnZ2VyRXgpO1xuICB9XG5cbiAgcmV0dXJuIGRlYnVnZ2VyRXg7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKlxuICogV2hlbiB0aGUgaG9zdCBzdXBwbGllZCBgTGlicmFyeS5kZWJ1Z05hbWVzcGFjZUFsaWFzZXNgLCBhIGZpbHRlciB3cml0dGVuIGZvciBhbiBhbGlhcyBzdGlsbCBzaG93cyB0aGUgbWVzc2FnZXMuXG4gKiBFYWNoIG1lc3NhZ2UgcHJpbnRzIE9OQ0U6IHVuZGVyIHRoZSBjdXJyZW50IG5hbWVzcGFjZSB3aGVuIGEgZmlsdGVyIGVuYWJsZXMgaXQsIG90aGVyd2lzZSB1bmRlciB0aGUgZmlyc3QgYWxpYXMgYVxuICogZmlsdGVyIGVuYWJsZXMuIFByaW50aW5nIHVuZGVyIGV2ZXJ5IGVuYWJsZWQgb25lIHdvdWxkIGRvdWJsZSBlYWNoIG1lc3NhZ2UgdW5kZXIgdGhlIG1vc3QgY29tbW9uIGZpbHRlciBvZiBhbGwsXG4gKiBgPHByZWZpeD4qYCwgd2hpY2ggZW5hYmxlcyB0aGVtIGFsbC5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSBmb3IgdGhlIGxpYnJhcnkgKHVuZGVyIGl0cyBkZWJ1ZyBuYW1lc3BhY2UsIHNlZSBgTGlicmFyeS5kZWJ1Z05hbWVzcGFjZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGliRGVidWdnZXIobmFtZXNwYWNlOiBzdHJpbmcpOiBEZWJ1Z2dlciB7XG4gIGNvbnN0IGFsaWFzZXMgPSBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlQWxpYXNlcztcbiAgaWYgKGFsaWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToke25hbWVzcGFjZX1gKTtcbiAgfVxuXG4gIC8vIEV2ZXJ5IGRlYnVnZ2VyIGNvbWVzIGZyb20gdGhlIHNoYXJlZCBjYWNoZSBgZ2V0RGVidWdnZXJgIGtlZXBzLCBzbyBvbmx5IHRoZSBjaGVhcCBwcm94eSBpcyBuZXcgb24gZWFjaCBjYWxsLCBhbmQgYVxuICAvLyBzcHkgaW5zdGFsbGVkIG9uIG9uZSBjYWxsJ3MgYGxvZ2AgaXMgdGhlIG9uZSB0aGUgbmV4dCBjYWxsIHJlYWNoZXMuXG4gIGNvbnN0IGN1cnJlbnREZWJ1Z2dlciA9IGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToke25hbWVzcGFjZX1gLCBBTElBU19GUkFNRVNfVE9fU0tJUCk7XG4gIGNvbnN0IGFsaWFzRGVidWdnZXJzID0gYWxpYXNlcy5tYXAoKGFsaWFzKSA9PiBnZXREZWJ1Z2dlcihgJHtMaWJyYXJ5LmRlYnVnUHJlZml4TmFtZXNwYWNlfSR7YWxpYXN9OiR7bmFtZXNwYWNlfWAsIEFMSUFTX0ZSQU1FU19UT19TS0lQKSk7XG4gIGNvbnN0IGFsbERlYnVnZ2VycyA9IFtjdXJyZW50RGVidWdnZXIsIC4uLmFsaWFzRGVidWdnZXJzXTtcbiAgcmV0dXJuIG5ldyBQcm94eShjdXJyZW50RGVidWdnZXIsIHtcbiAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZ3VtZW50LCAkYXJndW1lbnRzOiBQYXJhbWV0ZXJzPERlYnVnZ2VyPik6IHZvaWQge1xuICAgICAgYWxsRGVidWdnZXJzLmZpbmQoKGRlYnVnZ2VySW5zdGFuY2UpID0+IGRlYnVnZ2VySW5zdGFuY2UuZW5hYmxlZCk/LiguLi4kYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGdldCh0YXJnZXQsIHByb3BlcnR5LCByZWNlaXZlcik6IHVua25vd24ge1xuICAgICAgaWYgKHByb3BlcnR5ID09PSAnZW5hYmxlZCcpIHtcbiAgICAgICAgcmV0dXJuIGFsbERlYnVnZ2Vycy5zb21lKChkZWJ1Z2dlckluc3RhbmNlKSA9PiBkZWJ1Z2dlckluc3RhbmNlLmVuYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZTogdW5rbm93biA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFByaW50cyBhIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHJpbnRpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFdpdGhTdGFja1RyYWNlKHBhcmFtczogUHJpbnRXaXRoU3RhY2tUcmFjZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgJGFyZ3VtZW50cyxcbiAgICBkZWJ1Z2dlckluc3RhbmNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhY2tUcmFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xufVxuXG4vKipcbiAqIFNob3dzIGFuIGluaXRpYWwgZGVidWcgbWVzc2FnZS5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2UocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBpc0VuYWJsZWQgPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlZChwbHVnaW5JZCk7XG4gIGNvbnN0IHN0YXRlID0gaXNFbmFibGVkID8gJ2VuYWJsZWQnIDogJ2Rpc2FibGVkJztcbiAgY29uc3QgY2hhbmdlQWN0aW9uID0gaXNFbmFibGVkID8gJ2Rpc2FibGUnIDogJ2VuYWJsZSc7XG4gIGNvbnN0IG5hbWVzcGFjZXMgPSBnZXROYW1lc3BhY2VzKCk7XG4gIHNldE5hbWVzcGFjZXMocGx1Z2luSWQpO1xuICBnZXREZWJ1Z2dlcihwbHVnaW5JZCkoXG4gICAgYERlYnVnIG1lc3NhZ2VzIGZvciBwbHVnaW4gJHtwbHVnaW5JZH0gYXJlICR7c3RhdGV9LiR7Zm9ybWF0R3VpZGVSZWZlcmVuY2UoYCBob3cgdG8gJHtjaGFuZ2VBY3Rpb259IHRoZW1gKX1gXG4gICk7XG4gIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlcyk7XG59XG5cbmZ1bmN0aW9uIGRpc2FibGVOYW1lc3BhY2VzKG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XG4gIGNvbnN0IHNldCA9IG5ldyBTZXQoZ2V0TmFtZXNwYWNlcygpKTtcbiAgZm9yIChjb25zdCBuYW1lc3BhY2Ugb2YgdG9BcnJheShuYW1lc3BhY2VzKSkge1xuICAgIGlmIChuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbmVnYXRlZE5hbWVzcGFjZSA9IE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCArIG5hbWVzcGFjZTtcbiAgICBzZXQuZGVsZXRlKG5hbWVzcGFjZSk7XG4gICAgc2V0LmFkZChuZWdhdGVkTmFtZXNwYWNlKTtcbiAgfVxuICBzZXROYW1lc3BhY2VzKFsuLi5zZXRdKTtcbn1cblxuZnVuY3Rpb24gZW5hYmxlTmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0KGdldE5hbWVzcGFjZXMoKSk7XG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHRvQXJyYXkobmFtZXNwYWNlcykpIHtcbiAgICBpZiAoIW5hbWVzcGFjZS5zdGFydHNXaXRoKE5FR0FURURfTkFNRVNQQUNFX1BSRUZJWCkpIHtcbiAgICAgIGNvbnN0IG5lZ2F0ZWROYW1lc3BhY2UgPSBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggKyBuYW1lc3BhY2U7XG4gICAgICBzZXQuZGVsZXRlKG5lZ2F0ZWROYW1lc3BhY2UpO1xuICAgIH1cbiAgICBzZXQuYWRkKG5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhbLi4uc2V0XSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEd1aWRlUmVmZXJlbmNlKHN1ZmZpeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIExpYnJhcnkuZGVidWdHdWlkZVVybCA/IGAgU2VlICR7TGlicmFyeS5kZWJ1Z0d1aWRlVXJsfSR7c3VmZml4fS5gIDogJyc7XG59XG5cbmZ1bmN0aW9uIGdldE5hbWVzcGFjZXMoKTogc3RyaW5nW10ge1xuICByZXR1cm4gdG9BcnJheShnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkubG9hZCgpID8/ICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpOiB0eXBlb2YgZGVidWcge1xuICByZXR1cm4gZ2V0VHlwZXNjcmlwdExpYlN0YXRlKCdkZWJ1ZycsIGRlYnVnKS52YWx1ZTtcbn1cblxuZnVuY3Rpb24gbG9nV2l0aENhbGxlcihwYXJhbXM6IExvZ1dpdGhDYWxsZXJQYXJhbXMpOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgICRhcmd1bWVudHMsXG4gICAgZnJhbWVzVG9Ta2lwLFxuICAgIG1lc3NhZ2UsXG4gICAgbmFtZXNwYWNlXG4gIH0gPSBwYXJhbXM7XG4gIGlmICghZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZWQobmFtZXNwYWNlKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICghTGlicmFyeS5zaG91bGRQcmludFN0YWNrVHJhY2UpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBWYWxpZCB1c2FnZS5cbiAgICBjb25zb2xlLmRlYnVnKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgY2FsbGVyIGlzIDMgZnJhbWVzIGFib3ZlIHRoaXMgb25lLCBiZWNhdXNlIHRoZSBjYWxsIHN0YWNrIGlzIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIDA6IGxvZ1dpdGhDYWxsZXJcbiAgICogMTogZGVidWdJbnN0YW5jZS5sb2dcbiAgICogMjogZGVidWdcbiAgICogMzogZnVuY3Rpb25OYW1lICh0aGUgY2FsbGVyKVxuICAgKlxuICAgKiBgZ2V0U3RhY2tUcmFjZWAgZHJvcHMgaXRzIG93biBmcmFtZSBhbmQsIG9uIGFuIGVuZ2luZSB0aGF0IHdyaXRlcyBvbmUsIHRoZSBgRXJyb3JgIGhlYWRlciBsaW5lLlxuICAgKi9cbiAgY29uc3QgQ0FMTEVSX0ZSQU1FX0lOREVYID0gMztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBWYWxpZCB1c2FnZS5cbiAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi4kYXJndW1lbnRzLCAnXFxuXFxuLS0tXFxuTG9nZ2VyIHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3IoZ2V0U3RhY2tUcmFjZShDQUxMRVJfRlJBTUVfSU5ERVggKyBmcmFtZXNUb1NraXApKSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZTogc3RyaW5nKTogQ3VzdG9tU3RhY2tUcmFjZUVycm9yIHtcbiAgcmV0dXJuIG5ldyBDdXN0b21TdGFja1RyYWNlRXJyb3Ioe1xuICAgIGNhdXNlOiB1bmRlZmluZWQsXG4gICAgbWVzc2FnZTogYERlYnVnIG1vZGU6IGludGVudGlvbmFsIHBsYWNlaG9sZGVyIGVycm9yLiR7Zm9ybWF0R3VpZGVSZWZlcmVuY2UoJycpfWAsXG4gICAgc3RhY2tUcmFjZVxuICB9KTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlcyAtIFRoZSBuYW1lc3BhY2VzIHRvIGVuYWJsZS5cbiAqL1xuZnVuY3Rpb24gc2V0TmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlKHRvQXJyYXkobmFtZXNwYWNlcykuam9pbihOQU1FU1BBQ0VfU0VQQVJBVE9SKSk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIHJldHVybiB0eXBlb2YgbmFtZXNwYWNlcyA9PT0gJ3N0cmluZycgPyBuYW1lc3BhY2VzLnNwbGl0KE5BTUVTUEFDRV9TRVBBUkFUT1IpLmZpbHRlcihCb29sZWFuKSA6IG5hbWVzcGFjZXMuZmxhdE1hcCgobmFtZXNwYWNlKSA9PiB0b0FycmF5KG5hbWVzcGFjZSkpO1xufVxuIl0sIm1hcHBpbmdz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
|
package/dist/lib/esm/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/// <reference path="./library-references.d.mts" />
|
|
2
2
|
export * as 'abort-controller' from './abort-controller.mjs';
|
|
3
3
|
export * as 'aggregate-error' from './aggregate-error.mjs';
|
|
4
|
+
export * as 'api-contract-verifier' from './api-contract-verifier.mjs';
|
|
4
5
|
export * as 'api-contract' from './api-contract.mjs';
|
|
5
6
|
export * as 'array-buffer' from './array-buffer.mjs';
|
|
6
7
|
export * as 'array' from './array.mjs';
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -5,6 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
5
5
|
|
|
6
6
|
import * as abort_controller from "./abort-controller.mjs";
|
|
7
7
|
import * as aggregate_error from "./aggregate-error.mjs";
|
|
8
|
+
import * as api_contract_verifier from "./api-contract-verifier.mjs";
|
|
8
9
|
import * as api_contract from "./api-contract.mjs";
|
|
9
10
|
import * as array_buffer from "./array-buffer.mjs";
|
|
10
11
|
import * as array from "./array.mjs";
|
|
@@ -41,6 +42,7 @@ export {
|
|
|
41
42
|
abort_controller as "abort-controller",
|
|
42
43
|
aggregate_error as "aggregate-error",
|
|
43
44
|
api_contract as "api-contract",
|
|
45
|
+
api_contract_verifier as "api-contract-verifier",
|
|
44
46
|
array,
|
|
45
47
|
array_buffer as "array-buffer",
|
|
46
48
|
async,
|
|
@@ -73,4 +75,4 @@ export {
|
|
|
73
75
|
value_provider as "value-provider",
|
|
74
76
|
value_wrapper as "value-wrapper"
|
|
75
77
|
};
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiBUSElTIElTIEEgR0VORVJBVEVEL0JVTkRMRUQgRklMRSBCWSBCVUlMRCBTQ1JJUFQgKi9cblxuZXhwb3J0ICogYXMgJ2Fib3J0LWNvbnRyb2xsZXInIGZyb20gJy4vYWJvcnQtY29udHJvbGxlci50cyc7XG5leHBvcnQgKiBhcyAnYWdncmVnYXRlLWVycm9yJyBmcm9tICcuL2FnZ3JlZ2F0ZS1lcnJvci50cyc7XG5leHBvcnQgKiBhcyAnYXBpLWNvbnRyYWN0LXZlcmlmaWVyJyBmcm9tICcuL2FwaS1jb250cmFjdC12ZXJpZmllci50cyc7XG5leHBvcnQgKiBhcyAnYXBpLWNvbnRyYWN0JyBmcm9tICcuL2FwaS1jb250cmFjdC50cyc7XG5leHBvcnQgKiBhcyAnYXJyYXktYnVmZmVyJyBmcm9tICcuL2FycmF5LWJ1ZmZlci50cyc7XG5leHBvcnQgKiBhcyAnYXJyYXknIGZyb20gJy4vYXJyYXkudHMnO1xuZXhwb3J0ICogYXMgJ2FzeW5jLWV2ZW50cycgZnJvbSAnLi9hc3luYy1ldmVudHMudHMnO1xuZXhwb3J0ICogYXMgJ2FzeW5jLW9wZXJhdGlvbi1ob29rJyBmcm9tICcuL2FzeW5jLW9wZXJhdGlvbi1ob29rLnRzJztcbmV4cG9ydCAqIGFzICdhc3luYycgZnJvbSAnLi9hc3luYy50cyc7XG5leHBvcnQgKiBhcyAnYmVlcGVyJyBmcm9tICcuL2JlZXBlci50cyc7XG5leHBvcnQgKiBhcyAnYmxvYicgZnJvbSAnLi9ibG9iLnRzJztcbmV4cG9ydCAqIGFzICdieXRlcycgZnJvbSAnLi9ieXRlcy50cyc7XG5leHBvcnQgKiBhcyAnZGVidWctY29udHJvbGxlcicgZnJvbSAnLi9kZWJ1Zy1jb250cm9sbGVyLnRzJztcbmV4cG9ydCAqIGFzICdkZWJ1Zy1zd2l0Y2hlcycgZnJvbSAnLi9kZWJ1Zy1zd2l0Y2hlcy50cyc7XG5leHBvcnQgKiBhcyAnZGVidWcnIGZyb20gJy4vZGVidWcudHMnO1xuZXhwb3J0ICogYXMgJ2Rlc2t0b3AtemlwLWV4dHJhY3RvcicgZnJvbSAnLi9kZXNrdG9wLXppcC1leHRyYWN0b3IudHMnO1xuZXhwb3J0ICogYXMgJ2Rpc3Bvc2FibGUnIGZyb20gJy4vZGlzcG9zYWJsZS50cyc7XG5leHBvcnQgKiBhcyAnZW51bScgZnJvbSAnLi9lbnVtLnRzJztcbmV4cG9ydCAqIGFzICdlcnJvcicgZnJvbSAnLi9lcnJvci50cyc7XG5leHBvcnQgKiBhcyAnZnVuY3Rpb24nIGZyb20gJy4vZnVuY3Rpb24udHMnO1xuZXhwb3J0ICogYXMgJ2h0bWwtZWxlbWVudCcgZnJvbSAnLi9odG1sLWVsZW1lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2pwZWctbWV0YWRhdGEnIGZyb20gJy4vanBlZy1tZXRhZGF0YS50cyc7XG5leHBvcnQgKiBhcyAnbGlicmFyeScgZnJvbSAnLi9saWJyYXJ5LnRzJztcbmV4cG9ydCAqIGFzICdvYmplY3QtdXRpbHMnIGZyb20gJy4vb2JqZWN0LXV0aWxzLnRzJztcbmV4cG9ydCAqIGFzICdwYXRoJyBmcm9tICcuL3BhdGgudHMnO1xuZXhwb3J0ICogYXMgJ3JlZy1leHAnIGZyb20gJy4vcmVnLWV4cC50cyc7XG5leHBvcnQgKiBhcyAnc3RyaW5nJyBmcm9tICcuL3N0cmluZy50cyc7XG5leHBvcnQgKiBhcyAndHJhbnNmb3JtZXJzJyBmcm9tICcuL3RyYW5zZm9ybWVycy9pbmRleC50cyc7XG5leHBvcnQgKiBhcyAndHdvLXdheS1tYXAnIGZyb20gJy4vdHdvLXdheS1tYXAudHMnO1xuZXhwb3J0ICogYXMgJ3R5cGUtZ3VhcmRzJyBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcbmV4cG9ydCAqIGFzICd0eXBlJyBmcm9tICcuL3R5cGUudHMnO1xuZXhwb3J0ICogYXMgJ3R5cGVzY3JpcHQtbGliLXN0YXRlJyBmcm9tICcuL3R5cGVzY3JpcHQtbGliLXN0YXRlLnRzJztcbmV4cG9ydCAqIGFzICd1cmwnIGZyb20gJy4vdXJsLnRzJztcbmV4cG9ydCAqIGFzICd2YWx1ZS1wcm92aWRlcicgZnJvbSAnLi92YWx1ZS1wcm92aWRlci50cyc7XG5leHBvcnQgKiBhcyAndmFsdWUtd3JhcHBlcicgZnJvbSAnLi92YWx1ZS13cmFwcGVyLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsc0JBQXdCO0FBQ3BDLFlBQVlDLHFCQUF1QjtBQUNuQyxZQUFZQywyQkFBNkI7QUFDekMsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZLFdBQWE7QUFDekIsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLDBCQUE0QjtBQUN4QyxZQUFZLFdBQWE7QUFDekIsWUFBWSxZQUFjO0FBQzFCLFlBQVksVUFBWTtBQUN4QixZQUFZLFdBQWE7QUFDekIsWUFBWUMsc0JBQXdCO0FBQ3BDLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZLFdBQWE7QUFDekIsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVksZ0JBQWtCO0FBQzlCLFlBQVlDLFdBQVk7QUFDeEIsWUFBWSxXQUFhO0FBQ3pCLFlBQVlDLGVBQWdCO0FBQzVCLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZQyxtQkFBcUI7QUFDakMsWUFBWSxhQUFlO0FBQzNCLFlBQVlDLGtCQUFvQjtBQUNoQyxZQUFZLFVBQVk7QUFDeEIsWUFBWUMsYUFBZTtBQUMzQixZQUFZLFlBQWM7QUFDMUIsWUFBWSxrQkFBb0I7QUFDaEMsWUFBWUMsaUJBQW1CO0FBQy9CLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZLFVBQVk7QUFDeEIsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVksU0FBVztBQUN2QixZQUFZQyxvQkFBc0I7QUFDbEMsWUFBWUMsbUJBQXFCOyIsCiAgIm5hbWVzIjogWyJhYm9ydC1jb250cm9sbGVyIiwgImFnZ3JlZ2F0ZS1lcnJvciIsICJhcGktY29udHJhY3QtdmVyaWZpZXIiLCAiYXBpLWNvbnRyYWN0IiwgImFycmF5LWJ1ZmZlciIsICJhc3luYy1ldmVudHMiLCAiYXN5bmMtb3BlcmF0aW9uLWhvb2siLCAiZGVidWctY29udHJvbGxlciIsICJkZWJ1Zy1zd2l0Y2hlcyIsICJkZXNrdG9wLXppcC1leHRyYWN0b3IiLCAiZW51bSIsICJmdW5jdGlvbiIsICJodG1sLWVsZW1lbnQiLCAianBlZy1tZXRhZGF0YSIsICJvYmplY3QtdXRpbHMiLCAicmVnLWV4cCIsICJ0d28td2F5LW1hcCIsICJ0eXBlLWd1YXJkcyIsICJ0eXBlc2NyaXB0LWxpYi1zdGF0ZSIsICJ2YWx1ZS1wcm92aWRlciIsICJ2YWx1ZS13cmFwcGVyIl0KfQo=
|
|
@@ -33,6 +33,12 @@ export interface LibraryInitParams {
|
|
|
33
33
|
* A host that publishes its own debug namespace to its users passes it here, so their filters keep matching.
|
|
34
34
|
*/
|
|
35
35
|
readonly debugNamespace?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Earlier names of {@link debugNamespace}, so a filter written for one of them keeps showing the library's debug
|
|
38
|
+
* messages after the host renames its namespace. Each message still prints once: under {@link debugNamespace} when a
|
|
39
|
+
* filter enables it, otherwise under the first alias a filter enables. Defaults to none.
|
|
40
|
+
*/
|
|
41
|
+
readonly debugNamespaceAliases?: readonly string[];
|
|
36
42
|
/**
|
|
37
43
|
* The namespace prefix prepended to the library's debug namespaces (e.g. `${pluginId}:`).
|
|
38
44
|
*/
|
|
@@ -63,6 +69,13 @@ declare class LibraryContext {
|
|
|
63
69
|
* @returns The debug namespace.
|
|
64
70
|
*/
|
|
65
71
|
get debugNamespace(): string;
|
|
72
|
+
/**
|
|
73
|
+
* The earlier names of {@link debugNamespace} a filter may still be written for. Empty until {@link init} is called
|
|
74
|
+
* with some.
|
|
75
|
+
*
|
|
76
|
+
* @returns The debug namespace aliases.
|
|
77
|
+
*/
|
|
78
|
+
get debugNamespaceAliases(): readonly string[];
|
|
66
79
|
/**
|
|
67
80
|
* The namespace prefix prepended to the library's debug namespaces. Empty until {@link init} is called.
|
|
68
81
|
*
|
package/dist/lib/esm/library.mjs
CHANGED
|
@@ -26,6 +26,15 @@ class LibraryContext {
|
|
|
26
26
|
get debugNamespace() {
|
|
27
27
|
return this.params.debugNamespace ?? DEFAULT_DEBUG_NAMESPACE;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* The earlier names of {@link debugNamespace} a filter may still be written for. Empty until {@link init} is called
|
|
31
|
+
* with some.
|
|
32
|
+
*
|
|
33
|
+
* @returns The debug namespace aliases.
|
|
34
|
+
*/
|
|
35
|
+
get debugNamespaceAliases() {
|
|
36
|
+
return this.params.debugNamespaceAliases ?? [];
|
|
37
|
+
}
|
|
29
38
|
/**
|
|
30
39
|
* The namespace prefix prepended to the library's debug namespaces. Empty until {@link init} is called.
|
|
31
40
|
*
|
|
@@ -71,4 +80,4 @@ export {
|
|
|
71
80
|
LIBRARY_NAME,
|
|
72
81
|
Library
|
|
73
82
|
};
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xpYnJhcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBIZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKi9cblxuLyoqXG4gKiBBIG5hbWUgb2YgdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX05BTUUgPSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliJztcblxuLyoqXG4gKiBUaGUgZGVidWcgbmFtZXNwYWNlIHRoZSBsaWJyYXJ5J3Mgb3duIGRlYnVnZ2VycyBsaXZlIHVuZGVyIHVudGlsIHtAbGluayBMaWJyYXJ5LmluaXR9IHN1cHBsaWVzIGFub3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFQlVHX05BTUVTUEFDRSA9ICd0eXBlc2NyaXB0LWxpYic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIExpYnJhcnkuaW5pdH0uXG4gKlxuICogVGhlc2UgYXJlIHB1cmVseSBjb3NtZXRpYyB2YWx1ZXMgdGhlIGhvc3QgaW5qZWN0cyBvbmNlIGF0IGluaXRpYWxpemF0aW9uLCBzbyB0aGUgbGlicmFyeSBpdHNlbGYgY2Fycmllc1xuICogbm8ga25vd2xlZGdlIG9mIHdobyBob3N0cyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWJyYXJ5SW5pdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgVVJMIG9mIHRoZSBndWlkZSBleHBsYWluaW5nIGhvdyB0byB0dXJuIGRlYnVnIG1lc3NhZ2VzIG9uIGFuZCBvZmYsIG5hbWVkIGluIHRoZSBsaWJyYXJ5J3MgZGVidWcgbWVzc2FnZXMuXG4gICAqIFdpdGhvdXQgb25lLCB0aGUgbWVzc2FnZXMgbmFtZSBubyBndWlkZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnR3VpZGVVcmw/
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2xpYnJhcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBIZWxwZXJzIGZvciB3b3JraW5nIHdpdGggdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKi9cblxuLyoqXG4gKiBBIG5hbWUgb2YgdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKi9cbmV4cG9ydCBjb25zdCBMSUJSQVJZX05BTUUgPSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliJztcblxuLyoqXG4gKiBUaGUgZGVidWcgbmFtZXNwYWNlIHRoZSBsaWJyYXJ5J3Mgb3duIGRlYnVnZ2VycyBsaXZlIHVuZGVyIHVudGlsIHtAbGluayBMaWJyYXJ5LmluaXR9IHN1cHBsaWVzIGFub3RoZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFQlVHX05BTUVTUEFDRSA9ICd0eXBlc2NyaXB0LWxpYic7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIExpYnJhcnkuaW5pdH0uXG4gKlxuICogVGhlc2UgYXJlIHB1cmVseSBjb3NtZXRpYyB2YWx1ZXMgdGhlIGhvc3QgaW5qZWN0cyBvbmNlIGF0IGluaXRpYWxpemF0aW9uLCBzbyB0aGUgbGlicmFyeSBpdHNlbGYgY2Fycmllc1xuICogbm8ga25vd2xlZGdlIG9mIHdobyBob3N0cyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaWJyYXJ5SW5pdFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgVVJMIG9mIHRoZSBndWlkZSBleHBsYWluaW5nIGhvdyB0byB0dXJuIGRlYnVnIG1lc3NhZ2VzIG9uIGFuZCBvZmYsIG5hbWVkIGluIHRoZSBsaWJyYXJ5J3MgZGVidWcgbWVzc2FnZXMuXG4gICAqIFdpdGhvdXQgb25lLCB0aGUgbWVzc2FnZXMgbmFtZSBubyBndWlkZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnR3VpZGVVcmw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2UgdGhlIGxpYnJhcnkncyBvd24gZGVidWdnZXJzIGxpdmUgdW5kZXIuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0RFQlVHX05BTUVTUEFDRX0uXG4gICAqIEEgaG9zdCB0aGF0IHB1Ymxpc2hlcyBpdHMgb3duIGRlYnVnIG5hbWVzcGFjZSB0byBpdHMgdXNlcnMgcGFzc2VzIGl0IGhlcmUsIHNvIHRoZWlyIGZpbHRlcnMga2VlcCBtYXRjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnTmFtZXNwYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFYXJsaWVyIG5hbWVzIG9mIHtAbGluayBkZWJ1Z05hbWVzcGFjZX0sIHNvIGEgZmlsdGVyIHdyaXR0ZW4gZm9yIG9uZSBvZiB0aGVtIGtlZXBzIHNob3dpbmcgdGhlIGxpYnJhcnkncyBkZWJ1Z1xuICAgKiBtZXNzYWdlcyBhZnRlciB0aGUgaG9zdCByZW5hbWVzIGl0cyBuYW1lc3BhY2UuIEVhY2ggbWVzc2FnZSBzdGlsbCBwcmludHMgb25jZTogdW5kZXIge0BsaW5rIGRlYnVnTmFtZXNwYWNlfSB3aGVuIGFcbiAgICogZmlsdGVyIGVuYWJsZXMgaXQsIG90aGVyd2lzZSB1bmRlciB0aGUgZmlyc3QgYWxpYXMgYSBmaWx0ZXIgZW5hYmxlcy4gRGVmYXVsdHMgdG8gbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnTmFtZXNwYWNlQWxpYXNlcz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHByZWZpeCBwcmVwZW5kZWQgdG8gdGhlIGxpYnJhcnkncyBkZWJ1ZyBuYW1lc3BhY2VzIChlLmcuIGAke3BsdWdpbklkfTpgKS5cbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnUHJlZml4TmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZGVidWcgbG9nZ2luZyBzaG91bGQgYXBwZW5kIGEgcmljaCBEZXZUb29scyBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFByaW50U3RhY2tUcmFjZTogYm9vbGVhbjtcbn1cblxuY29uc3QgREVGQVVMVF9QQVJBTVM6IExpYnJhcnlJbml0UGFyYW1zID0ge1xuICBkZWJ1Z1ByZWZpeE5hbWVzcGFjZTogJycsXG4gIHNob3VsZFByaW50U3RhY2tUcmFjZTogZmFsc2Vcbn07XG5cbi8qKlxuICogVGhlIHNpbmdsZSwgZGV0ZXJtaW5pc3RpYyBpbml0aWFsaXphdGlvbiBlbnRyeSBwb2ludCBmb3IgdGhlIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWJgIGxpYnJhcnkuXG4gKlxuICogVGhlIGhvc3QgY2FsbHMge0BsaW5rIExpYnJhcnkuaW5pdH0gZXhhY3RseSBvbmNlIHRvIHB1c2ggaXRzIGNvc21ldGljIGNvbmZpZ3VyYXRpb247IHRoZSBsaWJyYXJ5IG9ubHlcbiAqIHJlYWRzIGl0IHRocm91Z2ggdGhlIGdldHRlcnMuIENhbGxpbmcge0BsaW5rIExpYnJhcnkuaW5pdH0gbW9yZSB0aGFuIG9uY2UgdGhyb3dzIFx1MjAxNFxuICoge0BsaW5rIExpYnJhcnkucmVzZXRUb0RlZmF1bHR9IGNsZWFycyB0aGUgc3RhdGUgKGUuZy4gYmV0d2VlbiB0ZXN0cywgb3Igb24gdW5sb2FkKSBhbmQgYWxsb3dzXG4gKiByZS1pbml0aWFsaXphdGlvbi5cbiAqL1xuY2xhc3MgTGlicmFyeUNvbnRleHQge1xuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgZ3VpZGUgZXhwbGFpbmluZyBob3cgdG8gdHVybiBkZWJ1ZyBtZXNzYWdlcyBvbiBhbmQgb2ZmLiBFbXB0eSB1bnRpbCB7QGxpbmsgaW5pdH0gaXMgY2FsbGVkIHdpdGggb25lLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVidWcgZ3VpZGUgVVJMLlxuICAgKi9cbiAgcHVibGljIGdldCBkZWJ1Z0d1aWRlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmRlYnVnR3VpZGVVcmwgPz8gJyc7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSB0aGUgbGlicmFyeSdzIG93biBkZWJ1Z2dlcnMgbGl2ZSB1bmRlci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGRlYnVnIG5hbWVzcGFjZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVidWdOYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuZGVidWdOYW1lc3BhY2UgPz8gREVGQVVMVF9ERUJVR19OQU1FU1BBQ0U7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGVhcmxpZXIgbmFtZXMgb2Yge0BsaW5rIGRlYnVnTmFtZXNwYWNlfSBhIGZpbHRlciBtYXkgc3RpbGwgYmUgd3JpdHRlbiBmb3IuIEVtcHR5IHVudGlsIHtAbGluayBpbml0fSBpcyBjYWxsZWRcbiAgICogd2l0aCBzb21lLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVidWcgbmFtZXNwYWNlIGFsaWFzZXMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGRlYnVnTmFtZXNwYWNlQWxpYXNlcygpOiByZWFkb25seSBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmRlYnVnTmFtZXNwYWNlQWxpYXNlcyA/PyBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIHByZWZpeCBwcmVwZW5kZWQgdG8gdGhlIGxpYnJhcnkncyBkZWJ1ZyBuYW1lc3BhY2VzLiBFbXB0eSB1bnRpbCB7QGxpbmsgaW5pdH0gaXMgY2FsbGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZGVidWcgbmFtZXNwYWNlIHByZWZpeC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGVidWdQcmVmaXhOYW1lc3BhY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuZGVidWdQcmVmaXhOYW1lc3BhY2U7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBkZWJ1ZyBsb2dnaW5nIHNob3VsZCBhcHBlbmQgYSByaWNoIERldlRvb2xzIHN0YWNrIHRyYWNlLiBgZmFsc2VgIHVudGlsIHtAbGluayBpbml0fSBpcyBjYWxsZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdG8gcHJpbnQgc3RhY2sgdHJhY2VzLlxuICAgKi9cbiAgcHVibGljIGdldCBzaG91bGRQcmludFN0YWNrVHJhY2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLnNob3VsZFByaW50U3RhY2tUcmFjZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcGFyYW1zOiBMaWJyYXJ5SW5pdFBhcmFtcyA9IHsgLi4uREVGQVVMVF9QQVJBTVMgfTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGxpYnJhcnkgd2l0aCB0aGUgaG9zdCdzIGNvc21ldGljIGNvbmZpZ3VyYXRpb24uIE11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZTsgY2FsbGluZyBpdFxuICAgKiBhZ2FpbiBiZWZvcmUge0BsaW5rIHJlc2V0VG9EZWZhdWx0fSB0aHJvd3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29zbWV0aWMgY29uZmlndXJhdGlvbiB0byBpbmplY3QuXG4gICAqL1xuICBwdWJsaWMgaW5pdChwYXJhbXM6IExpYnJhcnlJbml0UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke0xJQlJBUllfTkFNRX0gaXMgYWxyZWFkeSBpbml0aWFsaXplZC4gQ2FsbCBMaWJyYXJ5LnJlc2V0VG9EZWZhdWx0KCkgYmVmb3JlIGluaXRpYWxpemluZyBhZ2Fpbi5gKTtcbiAgICB9XG4gICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB0aGlzLnBhcmFtcyA9IHsgLi4ucGFyYW1zIH07XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBsaWJyYXJ5IGJhY2sgdG8gaXRzIGRlZmF1bHQgKHVuaW5pdGlhbGl6ZWQpIHN0YXRlLCBhbGxvd2luZyB7QGxpbmsgaW5pdH0gdG8gYmUgY2FsbGVkIGFnYWluLlxuICAgKi9cbiAgcHVibGljIHJlc2V0VG9EZWZhdWx0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMucGFyYW1zID0geyAuLi5ERUZBVUxUX1BBUkFNUyB9O1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNpbmdsZSB7QGxpbmsgTGlicmFyeUNvbnRleHR9IGluc3RhbmNlIFx1MjAxNCB0aGUgbGlicmFyeSdzIGRldGVybWluaXN0aWMgaW5pdGlhbGl6YXRpb24gZW50cnkgcG9pbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBMaWJyYXJ5ID0gbmV3IExpYnJhcnlDb250ZXh0KCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQVNPLE1BQU0sZUFBZTtBQUtyQixNQUFNLDBCQUEwQjtBQXVDdkMsTUFBTSxpQkFBb0M7QUFBQSxFQUN4QyxzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFDekI7QUFVQSxNQUFNLGVBQWU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNbkIsSUFBVyxnQkFBd0I7QUFDakMsV0FBTyxLQUFLLE9BQU8saUJBQWlCO0FBQUEsRUFDdEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLGlCQUF5QjtBQUNsQyxXQUFPLEtBQUssT0FBTyxrQkFBa0I7QUFBQSxFQUN2QztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUUEsSUFBVyx3QkFBMkM7QUFDcEQsV0FBTyxLQUFLLE9BQU8seUJBQXlCLENBQUM7QUFBQSxFQUMvQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsdUJBQStCO0FBQ3hDLFdBQU8sS0FBSyxPQUFPO0FBQUEsRUFDckI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLHdCQUFpQztBQUMxQyxXQUFPLEtBQUssT0FBTztBQUFBLEVBQ3JCO0FBQUEsRUFFUSxnQkFBZ0I7QUFBQSxFQUVoQixTQUE0QixFQUFFLEdBQUcsZUFBZTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWpELEtBQUssUUFBaUM7QUFDM0MsUUFBSSxLQUFLLGVBQWU7QUFDdEIsWUFBTSxJQUFJLE1BQU0sR0FBRyxZQUFZLG1GQUFtRjtBQUFBLElBQ3BIO0FBQ0EsU0FBSyxnQkFBZ0I7QUFDckIsU0FBSyxTQUFTLEVBQUUsR0FBRyxPQUFPO0FBQUEsRUFDNUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtPLGlCQUF1QjtBQUM1QixTQUFLLGdCQUFnQjtBQUNyQixTQUFLLFNBQVMsRUFBRSxHQUFHLGVBQWU7QUFBQSxFQUNwQztBQUNGO0FBS08sTUFBTSxVQUFVLElBQUksZUFBZTsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -27,8 +27,22 @@ export type GuardedType<TTypeGuard> = TTypeGuard extends (value: unknown) => val
|
|
|
27
27
|
export type Literal = bigint | boolean | null | number | string | symbol | undefined;
|
|
28
28
|
/**
|
|
29
29
|
* Options for {@link objectTypeGuard}.
|
|
30
|
+
*
|
|
31
|
+
* @typeParam T - The object type the guard narrows to.
|
|
30
32
|
*/
|
|
31
|
-
export interface ObjectTypeGuardOptions {
|
|
33
|
+
export interface ObjectTypeGuardOptions<T extends object = object> {
|
|
34
|
+
/**
|
|
35
|
+
* Switches the guard to EXACT optional properties, reading only the value's OWN keys. Listing it is the switch,
|
|
36
|
+
* so pass `{}` for a type with no optional key.
|
|
37
|
+
*
|
|
38
|
+
* Every optional key of `T` must be listed, so an optional property later added to `T` fails to compile until it
|
|
39
|
+
* is. A listed key may then be absent, and its guard is not run; present, even as `undefined`, it must pass its
|
|
40
|
+
* guard. Any other key must be present. An inherited key counts as absent.
|
|
41
|
+
*
|
|
42
|
+
* Without it, a property is read with `Reflect.get`, so an inherited one counts and an absent one reads as
|
|
43
|
+
* `undefined`, which the guard of an optional property must then accept.
|
|
44
|
+
*/
|
|
45
|
+
readonly exactOptionalKeys?: Readonly<Record<OptionalKeys<T>, true>>;
|
|
32
46
|
/**
|
|
33
47
|
* Whether a value carrying an own enumerable string key that no property guard names is refused.
|
|
34
48
|
*
|
|
@@ -36,6 +50,12 @@ export interface ObjectTypeGuardOptions {
|
|
|
36
50
|
*/
|
|
37
51
|
readonly shouldRejectUnknownKeys?: boolean;
|
|
38
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* The keys of an object type that are optional.
|
|
55
|
+
*
|
|
56
|
+
* @typeParam T - The object type.
|
|
57
|
+
*/
|
|
58
|
+
export type OptionalKeys<T extends object> = OptionalKeyMap<T>[keyof T];
|
|
39
59
|
/**
|
|
40
60
|
* One type guard per property of an object type, as {@link objectTypeGuard} takes them. Every key of `T` must be
|
|
41
61
|
* listed. The guard of an optional property is typed to narrow to `undefined` as well, but a guard that refuses
|
|
@@ -54,6 +74,9 @@ export type PropertyTypeGuards<T extends object> = {
|
|
|
54
74
|
*/
|
|
55
75
|
export type TypeGuard<T> = (value: unknown) => value is T;
|
|
56
76
|
type NullableConstraint<T> = null extends T ? unknown : undefined extends T ? unknown : never;
|
|
77
|
+
type OptionalKeyMap<T extends object> = {
|
|
78
|
+
[TKey in keyof T]-?: Partial<Pick<T, TKey>> extends Pick<T, TKey> ? TKey : never;
|
|
79
|
+
};
|
|
57
80
|
/**
|
|
58
81
|
* Builds a guard accepting an array whose every item the item guard accepts.
|
|
59
82
|
*
|
|
@@ -232,14 +255,15 @@ export declare function literalTypeGuard<T extends Literal>(literals: readonly T
|
|
|
232
255
|
export declare function nullableTypeGuard<T>(isValue: TypeGuard<T>): TypeGuard<null | T>;
|
|
233
256
|
/**
|
|
234
257
|
* Builds a guard accepting an object whose every listed property its guard accepts. A property is read with
|
|
235
|
-
* `Reflect.get`, so an inherited one counts and an absent one reads as `undefined
|
|
258
|
+
* `Reflect.get`, so an inherited one counts and an absent one reads as `undefined`, unless
|
|
259
|
+
* {@link ObjectTypeGuardOptions.exactOptionalKeys} switches the guard to own keys and exact optional properties.
|
|
236
260
|
*
|
|
237
261
|
* @typeParam T - The object type.
|
|
238
262
|
* @param propertyTypeGuards - One guard per property of `T`.
|
|
239
263
|
* @param options - The options for the guard.
|
|
240
264
|
* @returns The guard.
|
|
241
265
|
*/
|
|
242
|
-
export declare function objectTypeGuard<T extends object>(propertyTypeGuards: PropertyTypeGuards<T>, options?: ObjectTypeGuardOptions): TypeGuard<T>;
|
|
266
|
+
export declare function objectTypeGuard<T extends object>(propertyTypeGuards: PropertyTypeGuards<T>, options?: ObjectTypeGuardOptions<T>): TypeGuard<T>;
|
|
243
267
|
/**
|
|
244
268
|
* Widens a guard to also accept `undefined`, which is what an optional property or parameter reads as when it is
|
|
245
269
|
* left out.
|
|
@@ -75,6 +75,7 @@ function nullableTypeGuard(isValue) {
|
|
|
75
75
|
}
|
|
76
76
|
function objectTypeGuard(propertyTypeGuards, options) {
|
|
77
77
|
const shouldRejectUnknownKeys = options?.shouldRejectUnknownKeys ?? false;
|
|
78
|
+
const exactOptionalKeys = options?.exactOptionalKeys;
|
|
78
79
|
return (value) => {
|
|
79
80
|
if (!isObject(value)) {
|
|
80
81
|
return false;
|
|
@@ -82,8 +83,15 @@ function objectTypeGuard(propertyTypeGuards, options) {
|
|
|
82
83
|
if (shouldRejectUnknownKeys && Object.keys(value).some((key) => !Object.hasOwn(propertyTypeGuards, key))) {
|
|
83
84
|
return false;
|
|
84
85
|
}
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
const typeGuards = propertyTypeGuards;
|
|
87
|
+
for (const [key, typeGuard] of Object.entries(typeGuards)) {
|
|
88
|
+
if (exactOptionalKeys && !Object.hasOwn(value, key)) {
|
|
89
|
+
if (Object.hasOwn(exactOptionalKeys, key)) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
if (!typeGuard(Reflect.get(value, key))) {
|
|
87
95
|
return false;
|
|
88
96
|
}
|
|
89
97
|
}
|
|
@@ -123,4 +131,4 @@ export {
|
|
|
123
131
|
optionalTypeGuard,
|
|
124
132
|
unionTypeGuard
|
|
125
133
|
};
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLCBhbmQgY29tYmluYXRvcnMgdGhhdCBidWlsZCBhIHtAbGluayBUeXBlR3VhcmR9IG91dCBvZiBvdGhlcnMuXG4gKlxuICogVGhlIGNvbWJpbmF0b3JzIGhlcmUgd29yayBvbiBiYXJlIHR5cGUgZ3VhcmRzLiBUaGVpciBgYXBpLWNvbnRyYWN0YCBjb3VudGVycGFydHMgKGBhcnJheUd1YXJkYCwgYG9wdGlvbmFsR3VhcmRgLFxuICogLi4uKSB3b3JrIG9uIGFuIGBFeHBlY3RlZFR5cGVHdWFyZGAsIGEgdHlwZSBndWFyZCBwYWlyZWQgd2l0aCB0aGUgdGV4dCBhbiBpc3N1ZSBtZXNzYWdlIHJlcG9ydHMsIGFuZCB0aGVpciBuYW1lc1xuICogZHJvcCB0aGUgYFR5cGVgIHRoaXMgbGF5ZXIncyBuYW1lcyBjYXJyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuXG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9mdW5jdGlvbi50cyc7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIGdlbmVyaWMgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSBiYXNlIHR5cGUgdG8gaW50ZXJzZWN0IHdpdGguXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNPYmplY3Q8VCA9IHVua25vd24+ID0gUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4gJiBUO1xuXG4vKipcbiAqIFRoZSB0eXBlIGEge0BsaW5rIFR5cGVHdWFyZH0gbmFycm93cyB0by4gRGlzdHJpYnV0ZXMgb3ZlciBhIHVuaW9uIG9mIGd1YXJkcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRUeXBlR3VhcmQgLSBUaGUgdHlwZSBndWFyZC5cbiAqL1xuZXhwb3J0IHR5cGUgR3VhcmRlZFR5cGU8VFR5cGVHdWFyZD4gPSBUVHlwZUd1YXJkIGV4dGVuZHMgKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSBpcyBpbmZlciBUID8gVCA6IG5ldmVyO1xuXG4vKipcbiAqIEEgdmFsdWUge0BsaW5rIGxpdGVyYWxUeXBlR3VhcmR9IGNhbiBjb21wYXJlIGFnYWluc3QuXG4gKi9cbmV4cG9ydCB0eXBlIExpdGVyYWwgPSBiaWdpbnQgfCBib29sZWFuIHwgbnVsbCB8IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgb2JqZWN0VHlwZUd1YXJkfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYmplY3RUeXBlR3VhcmRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgYSB2YWx1ZSBjYXJyeWluZyBhbiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5IHRoYXQgbm8gcHJvcGVydHkgZ3VhcmQgbmFtZXMgaXMgcmVmdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVqZWN0VW5rbm93bktleXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9uZSB0eXBlIGd1YXJkIHBlciBwcm9wZXJ0eSBvZiBhbiBvYmplY3QgdHlwZSwgYXMge0BsaW5rIG9iamVjdFR5cGVHdWFyZH0gdGFrZXMgdGhlbS4gRXZlcnkga2V5IG9mIGBUYCBtdXN0IGJlXG4gKiBsaXN0ZWQuIFRoZSBndWFyZCBvZiBhbiBvcHRpb25hbCBwcm9wZXJ0eSBpcyB0eXBlZCB0byBuYXJyb3cgdG8gYHVuZGVmaW5lZGAgYXMgd2VsbCwgYnV0IGEgZ3VhcmQgdGhhdCByZWZ1c2VzXG4gKiBgdW5kZWZpbmVkYCBzdGlsbCBjb21waWxlcyB0aGVyZSwgc28gd2lkZW4gaXQgd2l0aCB7QGxpbmsgb3B0aW9uYWxUeXBlR3VhcmR9OiBhbiBhYnNlbnQgcHJvcGVydHkgcmVhZHMgYXNcbiAqIGB1bmRlZmluZWRgLCBhbmQgYSBndWFyZCByZWZ1c2luZyBpdCByZWZ1c2VzIHRoZSBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIG9iamVjdCB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBQcm9wZXJ0eVR5cGVHdWFyZHM8VCBleHRlbmRzIG9iamVjdD4gPSB7XG4gIHJlYWRvbmx5IFtUS2V5IGluIGtleW9mIFRdLT86IFR5cGVHdWFyZDxQYXJ0aWFsPFBpY2s8VCwgVEtleT4+IGV4dGVuZHMgUGljazxULCBUS2V5PiA/IFRbVEtleV0gfCB1bmRlZmluZWQgOiBUW1RLZXldPjtcbn07XG5cbi8qKlxuICogQSBmdW5jdGlvbiBkZWNpZGluZyB3aGV0aGVyIGEgdmFsdWUgaXMgYSBgVGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKi9cbmV4cG9ydCB0eXBlIFR5cGVHdWFyZDxUPiA9ICh2YWx1ZTogdW5rbm93bikgPT4gdmFsdWUgaXMgVDtcblxudHlwZSBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4gPSBudWxsIGV4dGVuZHMgVCA/IHVua25vd24gOiB1bmRlZmluZWQgZXh0ZW5kcyBUID8gdW5rbm93biA6IG5ldmVyO1xuXG4vKipcbiAqIEJ1aWxkcyBhIGd1YXJkIGFjY2VwdGluZyBhbiBhcnJheSB3aG9zZSBldmVyeSBpdGVtIHRoZSBpdGVtIGd1YXJkIGFjY2VwdHMuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgYW4gaXRlbS5cbiAqIEBwYXJhbSBpc0l0ZW0gLSBUaGUgZ3VhcmQgZm9yIG9uZSBpdGVtLlxuICogQHJldHVybnMgVGhlIGd1YXJkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlUeXBlR3VhcmQ8VD4oaXNJdGVtOiBUeXBlR3VhcmQ8VD4pOiBUeXBlR3VhcmQ8VFtdPiB7XG4gIHJldHVybiAodmFsdWUpOiB2YWx1ZSBpcyBUW10gPT4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IGlzSXRlbShpdGVtKSk7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGEgY29uZGl0aW9uIGlzIGB0cnVlYC4gVGhyb3dzIGlmIGl0IGlzIG5vdC5cbiAqXG4gKiBVc2UgaW4gcGxhY2Ugb2YgYC8qIHY4IGlnbm9yZSAqXFwvYCBmb3IgZGVmZW5zaXZlIGd1YXJkcyB0aGF0IHNob3VsZFxuICogbmV2ZXIgdHJpZ2dlciBhdCBydW50aW1lIGJ1dCB3b3VsZCBvdGhlcndpc2UgY3JlYXRlIHVuY292ZXJlZCBicmFuY2hlcy5cbiAqXG4gKiBAcGFyYW0gaXNUcnVlIC0gVGhlIGNvbmRpdGlvbiB0byBhc3NlcnQuXG4gKiBAcGFyYW0gZXJyb3JPck1lc3NhZ2UgLSBUaGUgZXJyb3Igb3IgbWVzc2FnZSB0byB0aHJvdyBpZiB0aGUgY29uZGl0aW9uIGlzIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoaXNUcnVlOiBib29sZWFuLCBlcnJvck9yTWVzc2FnZTogRXJyb3IgfCBzdHJpbmcpOiBhc3NlcnRzIGlzVHJ1ZSB7XG4gIGlmICghaXNUcnVlKSB7XG4gICAgdGhyb3cgdHlwZW9mIGVycm9yT3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IG5ldyBFcnJvcihlcnJvck9yTWVzc2FnZSkgOiBlcnJvck9yTWVzc2FnZTtcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIHZhbHVlIGlzIGEgZ2VuZXJpYyBvYmplY3QsIG5hcnJvd2luZyBpdHMgdHlwZSBpbiBwbGFjZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gX29iamVjdCAtIFRoZSB2YWx1ZSB0byBhc3NlcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRHZW5lcmljT2JqZWN0PFQ+KF9vYmplY3Q6IFQpOiBhc3NlcnRzIF9vYmplY3QgaXMgR2VuZXJpY09iamVjdDxUPiB7XG4gIG5vb3AoKTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIGF0IGNvbXBpbGUgdGltZSB0aGF0IGV2ZXJ5IGNhc2Ugb2YgYSBkaXNjcmltaW5hdGVkIHVuaW9uIGhhcyBiZWVuXG4gKiBoYW5kbGVkLiBQbGFjZSBhdCB0aGUgYGRlZmF1bHRgIGJyYW5jaCBvZiBhIGBzd2l0Y2hgIG92ZXIgYSB1bmlvbiBvciBlbnVtLlxuICpcbiAqIElmIGEgbmV3IHZhcmlhbnQgaXMgYWRkZWQgdG8gdGhlIHVuaW9uIHdpdGhvdXQgYSBtYXRjaGluZyBgY2FzZWAsIHRoZSBjYWxsXG4gKiB0byB7QGxpbmsgYXNzZXJ0TmV2ZXJ9IGZhaWxzIHRvIGNvbXBpbGUgYmVjYXVzZSBgdmFsdWVgIGlzIG5vIGxvbmdlciBgbmV2ZXJgLlxuICogSWYgcmVhY2hlZCBhdCBydW50aW1lIChlLmcuIGJlY2F1c2UgdGhlIHZhbHVlIHdhcyBieXBhc3NlZCB2aWEgSlNPTiBvciBhXG4gKiB0eXBlIGFzc2VydGlvbiksIGl0IHRocm93cyBhIGRlc2NyaXB0aXZlIGBFcnJvcmAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBzd2l0Y2ggKG1vZGUpIHtcbiAqICAgY2FzZSAnYSc6IHJldHVybiBkb0EoKTtcbiAqICAgY2FzZSAnYic6IHJldHVybiBkb0IoKTtcbiAqICAgZGVmYXVsdDogYXNzZXJ0TmV2ZXIobW9kZSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgZXhoYXVzdGl2ZWx5LWhhbmRsZWQgdmFsdWUsIG5hcnJvd2VkIHRvIGBuZXZlcmAgYnkgY29udHJvbCBmbG93LlxuICogQHRocm93cyBBbHdheXMsIGlmIHJlYWNoZWQgYXQgcnVudGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5ldmVyKHZhbHVlOiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgdmFsdWU6ICR7U3RyaW5nKHZhbHVlKX1gKTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSB2YWx1ZSBpcyBub3QgYG51bGxgIG9yIGB1bmRlZmluZWRgLCBuYXJyb3dpbmcgaXRzIHR5cGUgaW4gcGxhY2UuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+KHZhbHVlOiBULCBlcnJvck9yTWVzc2FnZT86IEVycm9yIHwgc3RyaW5nKTogYXNzZXJ0cyB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZXJyb3JPck1lc3NhZ2UgPz89IHZhbHVlID09PSBudWxsID8gJ1ZhbHVlIGlzIG51bGwnIDogJ1ZhbHVlIGlzIHVuZGVmaW5lZCc7XG4gIGNvbnN0IGVycm9yID0gdHlwZW9mIGVycm9yT3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IG5ldyBFcnJvcihlcnJvck9yTWVzc2FnZSkgOiBlcnJvck9yTWVzc2FnZTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgdmFsdWUgaXMgYSBnZW5lcmljIG9iamVjdCwgcmV0dXJuaW5nIGl0IHdpdGggbmFycm93ZWQgdHlwZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gJG9iamVjdCAtIFRoZSB2YWx1ZSB0byBlbnN1cmUuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgYXMgYSBnZW5lcmljIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUdlbmVyaWNPYmplY3Q8VD4oJG9iamVjdDogVCk6IEdlbmVyaWNPYmplY3Q8VD4ge1xuICByZXR1cm4gJG9iamVjdCBhcyBHZW5lcmljT2JqZWN0PFQ+O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHZhbHVlIGlzIG5vdCBgbnVsbGAgb3IgYHVuZGVmaW5lZGAgYW5kIHJldHVybnMgaXQgd2l0aCBuYXJyb3dlZCB0eXBlLlxuICpcbiAqIE9ubHkgY2FsbGFibGUgd2hlbiBgVGAgaW5jbHVkZXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLiBQYXNzaW5nIGFuIGFscmVhZHkgbm9uLW51bGxhYmxlIHR5cGUgaXMgYSBjb21waWxlIGVycm9yLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSBlcnJvck9yTWVzc2FnZSAtIE9wdGlvbmFsIHtAbGluayBFcnJvcn0gb3IgZXJyb3IgbWVzc2FnZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgd2l0aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgIGV4Y2x1ZGVkIGZyb20gaXRzIHR5cGUuXG4gKiBAdGhyb3dzIElmIHRoZSB2YWx1ZSBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVOb25OdWxsYWJsZTxUIGV4dGVuZHMgTnVsbGFibGVDb25zdHJhaW50PFQ+Pih2YWx1ZTogVCwgZXJyb3JPck1lc3NhZ2U/OiBFcnJvciB8IHN0cmluZyk6IE5vbk51bGxhYmxlPFQ+IHtcbiAgYXNzZXJ0Tm9uTnVsbGFibGUodmFsdWUsIGVycm9yT3JNZXNzYWdlKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGd1YXJkIGFjY2VwdGluZyBhbnkgZnVuY3Rpb24sIG5hcnJvd2VkIHRvIHRoZSBzaWduYXR1cmUgYFRGdW5jdGlvbmAuIE9ubHkgdGhhdCB0aGUgdmFsdWUgaXMgYSBmdW5jdGlvblxuICogaXMgY2hlY2tlZDogYSBzaWduYXR1cmUgY2Fubm90IGJlIGNoZWNrZWQgYXQgcnVudGltZSwgc28gdGhlIGd1YXJkIHRydXN0cyBpdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRGdW5jdGlvbiAtIFRoZSBzaWduYXR1cmUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmdW5jdGlvblR5cGVHdWFyZDxURnVuY3Rpb24gZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+KCk6IFR5cGVHdWFyZDxURnVuY3Rpb24+IHtcbiAgcmV0dXJuICh2YWx1ZSk6IHZhbHVlIGlzIFRGdW5jdGlvbiA9PiBpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBndWFyZCBhY2NlcHRpbmcgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcywgb3Igb2YgYSBjbGFzcyBkZXJpdmVkIGZyb20gaXQuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgYW4gaW5zdGFuY2UuXG4gKiBAcGFyYW0gY29uc3RydWN0b3IgLSBUaGUgY2xhc3MuXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZU9mVHlwZUd1YXJkPFQ+KGNvbnN0cnVjdG9yOiBhYnN0cmFjdCBuZXcgKC4uLmFyZ3VtZW50c186IG5ldmVyW10pID0+IFQpOiBUeXBlR3VhcmQ8VD4ge1xuICByZXR1cm4gKHZhbHVlKTogdmFsdWUgaXMgVCA9PiB2YWx1ZSBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgYSBib29sZWFuLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgYm9vbGVhbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbic7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgR2VuZXJpY0Z1bmN0aW9uIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bGwodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgYSBudW1iZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSBudW1iZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bWJlciB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgYW4gb2JqZWN0OiBub3QgYG51bGxgLCBhbmQgbm90IGEgcHJpbWl0aXZlIG9yIGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgd2hvc2UgZXZlcnkgaXRlbSBpcyBhIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nQXJyYXkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmdbXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeShpc1N0cmluZyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgZ3VhcmQgYWNjZXB0aW5nIGV4YWN0bHkgdGhlIGtleXMgb2YgYSByZWNvcmQuIFR5cGluZyB0aGUgcmVjb3JkIG92ZXIgYSB1bmlvbiwgYXNcbiAqIGBsaXRlcmFsVHlwZUd1YXJkPE1vZGU+KHsgQTogdHJ1ZSwgQjogdHJ1ZSB9KWAsIG1ha2VzIGEgbWVtYmVyIGxhdGVyIGFkZGVkIHRvIHRoZSB1bmlvbiBmYWlsIHRvIGNvbXBpbGUgdW50aWxcbiAqIGl0IGlzIGxpc3RlZC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgYWNjZXB0ZWQgc3RyaW5ncy5cbiAqIEBwYXJhbSBsaXRlcmFscyAtIEEgcmVjb3JkIHdob3NlIGtleXMgYXJlIHRoZSBhY2NlcHRlZCBzdHJpbmdzLlxuICogQHJldHVybnMgVGhlIGd1YXJkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGl0ZXJhbFR5cGVHdWFyZDxUIGV4dGVuZHMgc3RyaW5nPihsaXRlcmFsczogUmVhZG9ubHk8UmVjb3JkPFQsIHRydWU+Pik6IFR5cGVHdWFyZDxUPjtcbi8qKlxuICogQnVpbGRzIGEgZ3VhcmQgYWNjZXB0aW5nIGV4YWN0bHkgdGhlIGxpc3RlZCB2YWx1ZXMsIGNvbXBhcmVkIGFzIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIGNvbXBhcmVzIHRoZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIGFjY2VwdGVkIHZhbHVlcy5cbiAqIEBwYXJhbSBsaXRlcmFscyAtIFRoZSBhY2NlcHRlZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsVHlwZUd1YXJkPFQgZXh0ZW5kcyBMaXRlcmFsPihsaXRlcmFsczogcmVhZG9ubHkgVFtdKTogVHlwZUd1YXJkPFQ+O1xuLyoqXG4gKiBCdWlsZHMgYSBndWFyZCBhY2NlcHRpbmcgZXhhY3RseSB0aGUgbGlzdGVkIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gbGl0ZXJhbHMgLSBUaGUgYWNjZXB0ZWQgdmFsdWVzLCBhcyBhIGxpc3Qgb3IgYXMgdGhlIGtleXMgb2YgYSByZWNvcmQuXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsVHlwZUd1YXJkKGxpdGVyYWxzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB0cnVlPj4gfCByZWFkb25seSBMaXRlcmFsW10pOiBUeXBlR3VhcmQ8TGl0ZXJhbD4ge1xuICBpZiAoaXNSZWFkb25seUFycmF5KGxpdGVyYWxzKSkge1xuICAgIGNvbnN0IGxpdGVyYWxMaXN0OiByZWFkb25seSB1bmtub3duW10gPSBsaXRlcmFscztcbiAgICByZXR1cm4gKHZhbHVlKTogdmFsdWUgaXMgTGl0ZXJhbCA9PiBsaXRlcmFsTGlzdC5pbmNsdWRlcyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gKHZhbHVlKTogdmFsdWUgaXMgTGl0ZXJhbCA9PiBpc1N0cmluZyh2YWx1ZSkgJiYgT2JqZWN0Lmhhc093bihsaXRlcmFscywgdmFsdWUpO1xufVxuXG4vKipcbiAqIFdpZGVucyBhIGd1YXJkIHRvIGFsc28gYWNjZXB0IGBudWxsYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSB0aGUgZ3VhcmQgbmFycm93cyB0by5cbiAqIEBwYXJhbSBpc1ZhbHVlIC0gVGhlIGd1YXJkIHRvIHdpZGVuLlxuICogQHJldHVybnMgQSBndWFyZCBhY2NlcHRpbmcgd2hhdCBgaXNWYWx1ZWAgYWNjZXB0cywgb3IgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbnVsbGFibGVUeXBlR3VhcmQ8VD4oaXNWYWx1ZTogVHlwZUd1YXJkPFQ+KTogVHlwZUd1YXJkPG51bGwgfCBUPiB7XG4gIHJldHVybiB1bmlvblR5cGVHdWFyZChpc051bGwsIGlzVmFsdWUpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGd1YXJkIGFjY2VwdGluZyBhbiBvYmplY3Qgd2hvc2UgZXZlcnkgbGlzdGVkIHByb3BlcnR5IGl0cyBndWFyZCBhY2NlcHRzLiBBIHByb3BlcnR5IGlzIHJlYWQgd2l0aFxuICogYFJlZmxlY3QuZ2V0YCwgc28gYW4gaW5oZXJpdGVkIG9uZSBjb3VudHMgYW5kIGFuIGFic2VudCBvbmUgcmVhZHMgYXMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIG9iamVjdCB0eXBlLlxuICogQHBhcmFtIHByb3BlcnR5VHlwZUd1YXJkcyAtIE9uZSBndWFyZCBwZXIgcHJvcGVydHkgb2YgYFRgLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgdGhlIGd1YXJkLlxuICogQHJldHVybnMgVGhlIGd1YXJkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VHlwZUd1YXJkPFQgZXh0ZW5kcyBvYmplY3Q+KHByb3BlcnR5VHlwZUd1YXJkczogUHJvcGVydHlUeXBlR3VhcmRzPFQ+LCBvcHRpb25zPzogT2JqZWN0VHlwZUd1YXJkT3B0aW9ucyk6IFR5cGVHdWFyZDxUPiB7XG4gIGNvbnN0IHNob3VsZFJlamVjdFVua25vd25LZXlzID0gb3B0aW9ucz8uc2hvdWxkUmVqZWN0VW5rbm93bktleXMgPz8gZmFsc2U7XG4gIHJldHVybiAodmFsdWUpOiB2YWx1ZSBpcyBUID0+IHtcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRSZWplY3RVbmtub3duS2V5cyAmJiBPYmplY3Qua2V5cyh2YWx1ZSkuc29tZSgoa2V5KSA9PiAhT2JqZWN0Lmhhc093bihwcm9wZXJ0eVR5cGVHdWFyZHMsIGtleSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcHJvcGVydHlUeXBlR3VhcmRzKSB7XG4gICAgICBpZiAoIXByb3BlcnR5VHlwZUd1YXJkc1trZXldKFJlZmxlY3QuZ2V0KHZhbHVlLCBrZXkpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59XG5cbi8qKlxuICogV2lkZW5zIGEgZ3VhcmQgdG8gYWxzbyBhY2NlcHQgYHVuZGVmaW5lZGAsIHdoaWNoIGlzIHdoYXQgYW4gb3B0aW9uYWwgcHJvcGVydHkgb3IgcGFyYW1ldGVyIHJlYWRzIGFzIHdoZW4gaXQgaXNcbiAqIGxlZnQgb3V0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIHRoZSBndWFyZCBuYXJyb3dzIHRvLlxuICogQHBhcmFtIGlzVmFsdWUgLSBUaGUgZ3VhcmQgdG8gd2lkZW4uXG4gKiBAcmV0dXJucyBBIGd1YXJkIGFjY2VwdGluZyB3aGF0IGBpc1ZhbHVlYCBhY2NlcHRzLCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsVHlwZUd1YXJkPFQ+KGlzVmFsdWU6IFR5cGVHdWFyZDxUPik6IFR5cGVHdWFyZDxUIHwgdW5kZWZpbmVkPiB7XG4gIHJldHVybiB1bmlvblR5cGVHdWFyZChpc1VuZGVmaW5lZCwgaXNWYWx1ZSk7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgZ3VhcmQgYWNjZXB0aW5nIHdoYXQgYW55IG9mIHRoZSBnaXZlbiBndWFyZHMgYWNjZXB0cy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRUeXBlR3VhcmRzIC0gVGhlIGd1YXJkcy5cbiAqIEBwYXJhbSB0eXBlR3VhcmRzIC0gVGhlIGd1YXJkcywgdHJpZWQgaW4gb3JkZXIuXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmlvblR5cGVHdWFyZDxjb25zdCBUVHlwZUd1YXJkcyBleHRlbmRzIHJlYWRvbmx5IFR5cGVHdWFyZDx1bmtub3duPltdPihcbiAgLi4udHlwZUd1YXJkczogVFR5cGVHdWFyZHNcbik6IFR5cGVHdWFyZDxHdWFyZGVkVHlwZTxUVHlwZUd1YXJkc1tudW1iZXJdPj4ge1xuICByZXR1cm4gKHZhbHVlKTogdmFsdWUgaXMgR3VhcmRlZFR5cGU8VFR5cGVHdWFyZHNbbnVtYmVyXT4gPT4gdHlwZUd1YXJkcy5zb21lKCh0eXBlR3VhcmQpID0+IHR5cGVHdWFyZCh2YWx1ZSkpO1xufVxuXG5mdW5jdGlvbiBpc1JlYWRvbmx5QXJyYXkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyByZWFkb25seSB1bmtub3duW10ge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQVlBLFNBQVMsWUFBWTtBQTZEZCxTQUFTLGVBQWtCLFFBQXNDO0FBQ3RFLFNBQU8sQ0FBQyxVQUF3QixNQUFNLFFBQVEsS0FBSyxLQUFLLE1BQU0sTUFBTSxDQUFDLFNBQVMsT0FBTyxJQUFJLENBQUM7QUFDNUY7QUFXTyxTQUFTLE9BQU8sUUFBaUIsZ0JBQWdEO0FBQ3RGLE1BQUksQ0FBQyxRQUFRO0FBQ1gsVUFBTSxPQUFPLG1CQUFtQixXQUFXLElBQUksTUFBTSxjQUFjLElBQUk7QUFBQSxFQUN6RTtBQUNGO0FBUU8sU0FBUyxvQkFBdUIsU0FBaUQ7QUFDdEYsT0FBSztBQUNQO0FBdUJPLFNBQVMsWUFBWSxPQUFxQjtBQUMvQyxRQUFNLElBQUksTUFBTSxvQkFBb0IsT0FBTyxLQUFLLENBQUMsRUFBRTtBQUNyRDtBQVlPLFNBQVMsa0JBQW1ELE9BQVUsZ0JBQWtFO0FBQzdJLE1BQUksVUFBVSxRQUFRLFVBQVUsUUFBVztBQUN6QztBQUFBLEVBQ0Y7QUFFQSxxQkFBbUIs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
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUtZ3VhcmRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHR5cGUgZ3VhcmRzLCBhbmQgY29tYmluYXRvcnMgdGhhdCBidWlsZCBhIHtAbGluayBUeXBlR3VhcmR9IG91dCBvZiBvdGhlcnMuXG4gKlxuICogVGhlIGNvbWJpbmF0b3JzIGhlcmUgd29yayBvbiBiYXJlIHR5cGUgZ3VhcmRzLiBUaGVpciBgYXBpLWNvbnRyYWN0YCBjb3VudGVycGFydHMgKGBhcnJheUd1YXJkYCwgYG9wdGlvbmFsR3VhcmRgLFxuICogLi4uKSB3b3JrIG9uIGFuIGBFeHBlY3RlZFR5cGVHdWFyZGAsIGEgdHlwZSBndWFyZCBwYWlyZWQgd2l0aCB0aGUgdGV4dCBhbiBpc3N1ZSBtZXNzYWdlIHJlcG9ydHMsIGFuZCB0aGVpciBuYW1lc1xuICogZHJvcCB0aGUgYFR5cGVgIHRoaXMgbGF5ZXIncyBuYW1lcyBjYXJyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuXG5pbXBvcnQgeyBub29wIH0gZnJvbSAnLi9mdW5jdGlvbi50cyc7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIGdlbmVyaWMgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSBiYXNlIHR5cGUgdG8gaW50ZXJzZWN0IHdpdGguXG4gKi9cbmV4cG9ydCB0eXBlIEdlbmVyaWNPYmplY3Q8VCA9IHVua25vd24+ID0gUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4gJiBUO1xuXG4vKipcbiAqIFRoZSB0eXBlIGEge0BsaW5rIFR5cGVHdWFyZH0gbmFycm93cyB0by4gRGlzdHJpYnV0ZXMgb3ZlciBhIHVuaW9uIG9mIGd1YXJkcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFRUeXBlR3VhcmQgLSBUaGUgdHlwZSBndWFyZC5cbiAqL1xuZXhwb3J0IHR5cGUgR3VhcmRlZFR5cGU8VFR5cGVHdWFyZD4gPSBUVHlwZUd1YXJkIGV4dGVuZHMgKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSBpcyBpbmZlciBUID8gVCA6IG5ldmVyO1xuXG4vKipcbiAqIEEgdmFsdWUge0BsaW5rIGxpdGVyYWxUeXBlR3VhcmR9IGNhbiBjb21wYXJlIGFnYWluc3QuXG4gKi9cbmV4cG9ydCB0eXBlIExpdGVyYWwgPSBiaWdpbnQgfCBib29sZWFuIHwgbnVsbCB8IG51bWJlciB8IHN0cmluZyB8IHN5bWJvbCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgb2JqZWN0VHlwZUd1YXJkfS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgb2JqZWN0IHR5cGUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0VHlwZUd1YXJkT3B0aW9uczxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiB7XG4gIC8qKlxuICAgKiBTd2l0Y2hlcyB0aGUgZ3VhcmQgdG8gRVhBQ1Qgb3B0aW9uYWwgcHJvcGVydGllcywgcmVhZGluZyBvbmx5IHRoZSB2YWx1ZSdzIE9XTiBrZXlzLiBMaXN0aW5nIGl0IGlzIHRoZSBzd2l0Y2gsXG4gICAqIHNvIHBhc3MgYHt9YCBmb3IgYSB0eXBlIHdpdGggbm8gb3B0aW9uYWwga2V5LlxuICAgKlxuICAgKiBFdmVyeSBvcHRpb25hbCBrZXkgb2YgYFRgIG11c3QgYmUgbGlzdGVkLCBzbyBhbiBvcHRpb25hbCBwcm9wZXJ0eSBsYXRlciBhZGRlZCB0byBgVGAgZmFpbHMgdG8gY29tcGlsZSB1bnRpbCBpdFxuICAgKiBpcy4gQSBsaXN0ZWQga2V5IG1heSB0aGVuIGJlIGFic2VudCwgYW5kIGl0cyBndWFyZCBpcyBub3QgcnVuOyBwcmVzZW50LCBldmVuIGFzIGB1bmRlZmluZWRgLCBpdCBtdXN0IHBhc3MgaXRzXG4gICAqIGd1YXJkLiBBbnkgb3RoZXIga2V5IG11c3QgYmUgcHJlc2VudC4gQW4gaW5oZXJpdGVkIGtleSBjb3VudHMgYXMgYWJzZW50LlxuICAgKlxuICAgKiBXaXRob3V0IGl0LCBhIHByb3BlcnR5IGlzIHJlYWQgd2l0aCBgUmVmbGVjdC5nZXRgLCBzbyBhbiBpbmhlcml0ZWQgb25lIGNvdW50cyBhbmQgYW4gYWJzZW50IG9uZSByZWFkcyBhc1xuICAgKiBgdW5kZWZpbmVkYCwgd2hpY2ggdGhlIGd1YXJkIG9mIGFuIG9wdGlvbmFsIHByb3BlcnR5IG11c3QgdGhlbiBhY2NlcHQuXG4gICAqL1xuICByZWFkb25seSBleGFjdE9wdGlvbmFsS2V5cz86IFJlYWRvbmx5PFJlY29yZDxPcHRpb25hbEtleXM8VD4sIHRydWU+PjtcblxuICAvKipcbiAgICogV2hldGhlciBhIHZhbHVlIGNhcnJ5aW5nIGFuIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXkgdGhhdCBubyBwcm9wZXJ0eSBndWFyZCBuYW1lcyBpcyByZWZ1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRSZWplY3RVbmtub3duS2V5cz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIGtleXMgb2YgYW4gb2JqZWN0IHR5cGUgdGhhdCBhcmUgb3B0aW9uYWwuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIG9iamVjdCB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBPcHRpb25hbEtleXM8VCBleHRlbmRzIG9iamVjdD4gPSBPcHRpb25hbEtleU1hcDxUPltrZXlvZiBUXTtcblxuLyoqXG4gKiBPbmUgdHlwZSBndWFyZCBwZXIgcHJvcGVydHkgb2YgYW4gb2JqZWN0IHR5cGUsIGFzIHtAbGluayBvYmplY3RUeXBlR3VhcmR9IHRha2VzIHRoZW0uIEV2ZXJ5IGtleSBvZiBgVGAgbXVzdCBiZVxuICogbGlzdGVkLiBUaGUgZ3VhcmQgb2YgYW4gb3B0aW9uYWwgcHJvcGVydHkgaXMgdHlwZWQgdG8gbmFycm93IHRvIGB1bmRlZmluZWRgIGFzIHdlbGwsIGJ1dCBhIGd1YXJkIHRoYXQgcmVmdXNlc1xuICogYHVuZGVmaW5lZGAgc3RpbGwgY29tcGlsZXMgdGhlcmUsIHNvIHdpZGVuIGl0IHdpdGgge0BsaW5rIG9wdGlvbmFsVHlwZUd1YXJkfTogYW4gYWJzZW50IHByb3BlcnR5IHJlYWRzIGFzXG4gKiBgdW5kZWZpbmVkYCwgYW5kIGEgZ3VhcmQgcmVmdXNpbmcgaXQgcmVmdXNlcyB0aGUgb2JqZWN0LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSBvYmplY3QgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvcGVydHlUeXBlR3VhcmRzPFQgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICByZWFkb25seSBbVEtleSBpbiBrZXlvZiBUXS0/OiBUeXBlR3VhcmQ8UGFydGlhbDxQaWNrPFQsIFRLZXk+PiBleHRlbmRzIFBpY2s8VCwgVEtleT4gPyBUW1RLZXldIHwgdW5kZWZpbmVkIDogVFtUS2V5XT47XG59O1xuXG4vKipcbiAqIEEgZnVuY3Rpb24gZGVjaWRpbmcgd2hldGhlciBhIHZhbHVlIGlzIGEgYFRgLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIHRoZSBndWFyZCBuYXJyb3dzIHRvLlxuICovXG5leHBvcnQgdHlwZSBUeXBlR3VhcmQ8VD4gPSAodmFsdWU6IHVua25vd24pID0+IHZhbHVlIGlzIFQ7XG5cbnR5cGUgTnVsbGFibGVDb25zdHJhaW50PFQ+ID0gbnVsbCBleHRlbmRzIFQgPyB1bmtub3duIDogdW5kZWZpbmVkIGV4dGVuZHMgVCA/IHVua25vd24gOiBuZXZlcjtcblxudHlwZSBPcHRpb25hbEtleU1hcDxUIGV4dGVuZHMgb2JqZWN0PiA9IHtcbiAgW1RLZXkgaW4ga2V5b2YgVF0tPzogUGFydGlhbDxQaWNrPFQsIFRLZXk+PiBleHRlbmRzIFBpY2s8VCwgVEtleT4gPyBUS2V5IDogbmV2ZXI7XG59O1xuXG4vKipcbiAqIEJ1aWxkcyBhIGd1YXJkIGFjY2VwdGluZyBhbiBhcnJheSB3aG9zZSBldmVyeSBpdGVtIHRoZSBpdGVtIGd1YXJkIGFjY2VwdHMuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgYW4gaXRlbS5cbiAqIEBwYXJhbSBpc0l0ZW0gLSBUaGUgZ3VhcmQgZm9yIG9uZSBpdGVtLlxuICogQHJldHVybnMgVGhlIGd1YXJkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlUeXBlR3VhcmQ8VD4oaXNJdGVtOiBUeXBlR3VhcmQ8VD4pOiBUeXBlR3VhcmQ8VFtdPiB7XG4gIHJldHVybiAodmFsdWUpOiB2YWx1ZSBpcyBUW10gPT4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUuZXZlcnkoKGl0ZW0pID0+IGlzSXRlbShpdGVtKSk7XG59XG5cbi8qKlxuICogQXNzZXJ0cyB0aGF0IGEgY29uZGl0aW9uIGlzIGB0cnVlYC4gVGhyb3dzIGlmIGl0IGlzIG5vdC5cbiAqXG4gKiBVc2UgaW4gcGxhY2Ugb2YgYC8qIHY4IGlnbm9yZSAqXFwvYCBmb3IgZGVmZW5zaXZlIGd1YXJkcyB0aGF0IHNob3VsZFxuICogbmV2ZXIgdHJpZ2dlciBhdCBydW50aW1lIGJ1dCB3b3VsZCBvdGhlcndpc2UgY3JlYXRlIHVuY292ZXJlZCBicmFuY2hlcy5cbiAqXG4gKiBAcGFyYW0gaXNUcnVlIC0gVGhlIGNvbmRpdGlvbiB0byBhc3NlcnQuXG4gKiBAcGFyYW0gZXJyb3JPck1lc3NhZ2UgLSBUaGUgZXJyb3Igb3IgbWVzc2FnZSB0byB0aHJvdyBpZiB0aGUgY29uZGl0aW9uIGlzIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoaXNUcnVlOiBib29sZWFuLCBlcnJvck9yTWVzc2FnZTogRXJyb3IgfCBzdHJpbmcpOiBhc3NlcnRzIGlzVHJ1ZSB7XG4gIGlmICghaXNUcnVlKSB7XG4gICAgdGhyb3cgdHlwZW9mIGVycm9yT3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IG5ldyBFcnJvcihlcnJvck9yTWVzc2FnZSkgOiBlcnJvck9yTWVzc2FnZTtcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydHMgdGhhdCBhIHZhbHVlIGlzIGEgZ2VuZXJpYyBvYmplY3QsIG5hcnJvd2luZyBpdHMgdHlwZSBpbiBwbGFjZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gX29iamVjdCAtIFRoZSB2YWx1ZSB0byBhc3NlcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRHZW5lcmljT2JqZWN0PFQ+KF9vYmplY3Q6IFQpOiBhc3NlcnRzIF9vYmplY3QgaXMgR2VuZXJpY09iamVjdDxUPiB7XG4gIG5vb3AoKTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIGF0IGNvbXBpbGUgdGltZSB0aGF0IGV2ZXJ5IGNhc2Ugb2YgYSBkaXNjcmltaW5hdGVkIHVuaW9uIGhhcyBiZWVuXG4gKiBoYW5kbGVkLiBQbGFjZSBhdCB0aGUgYGRlZmF1bHRgIGJyYW5jaCBvZiBhIGBzd2l0Y2hgIG92ZXIgYSB1bmlvbiBvciBlbnVtLlxuICpcbiAqIElmIGEgbmV3IHZhcmlhbnQgaXMgYWRkZWQgdG8gdGhlIHVuaW9uIHdpdGhvdXQgYSBtYXRjaGluZyBgY2FzZWAsIHRoZSBjYWxsXG4gKiB0byB7QGxpbmsgYXNzZXJ0TmV2ZXJ9IGZhaWxzIHRvIGNvbXBpbGUgYmVjYXVzZSBgdmFsdWVgIGlzIG5vIGxvbmdlciBgbmV2ZXJgLlxuICogSWYgcmVhY2hlZCBhdCBydW50aW1lIChlLmcuIGJlY2F1c2UgdGhlIHZhbHVlIHdhcyBieXBhc3NlZCB2aWEgSlNPTiBvciBhXG4gKiB0eXBlIGFzc2VydGlvbiksIGl0IHRocm93cyBhIGRlc2NyaXB0aXZlIGBFcnJvcmAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBzd2l0Y2ggKG1vZGUpIHtcbiAqICAgY2FzZSAnYSc6IHJldHVybiBkb0EoKTtcbiAqICAgY2FzZSAnYic6IHJldHVybiBkb0IoKTtcbiAqICAgZGVmYXVsdDogYXNzZXJ0TmV2ZXIobW9kZSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgZXhoYXVzdGl2ZWx5LWhhbmRsZWQgdmFsdWUsIG5hcnJvd2VkIHRvIGBuZXZlcmAgYnkgY29udHJvbCBmbG93LlxuICogQHRocm93cyBBbHdheXMsIGlmIHJlYWNoZWQgYXQgcnVudGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5ldmVyKHZhbHVlOiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmhhbmRsZWQgdmFsdWU6ICR7U3RyaW5nKHZhbHVlKX1gKTtcbn1cblxuLyoqXG4gKiBBc3NlcnRzIHRoYXQgYSB2YWx1ZSBpcyBub3QgYG51bGxgIG9yIGB1bmRlZmluZWRgLCBuYXJyb3dpbmcgaXRzIHR5cGUgaW4gcGxhY2UuXG4gKlxuICogT25seSBjYWxsYWJsZSB3aGVuIGBUYCBpbmNsdWRlcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuIFBhc3NpbmcgYW4gYWxyZWFkeSBub24tbnVsbGFibGUgdHlwZSBpcyBhIGNvbXBpbGUgZXJyb3IuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIGVycm9yT3JNZXNzYWdlIC0gT3B0aW9uYWwge0BsaW5rIEVycm9yfSBvciBlcnJvciBtZXNzYWdlIHN0cmluZy5cbiAqIEB0aHJvd3MgSWYgdGhlIHZhbHVlIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5vbk51bGxhYmxlPFQgZXh0ZW5kcyBOdWxsYWJsZUNvbnN0cmFpbnQ8VD4+KHZhbHVlOiBULCBlcnJvck9yTWVzc2FnZT86IEVycm9yIHwgc3RyaW5nKTogYXNzZXJ0cyB2YWx1ZSBpcyBOb25OdWxsYWJsZTxUPiB7XG4gIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZXJyb3JPck1lc3NhZ2UgPz89IHZhbHVlID09PSBudWxsID8gJ1ZhbHVlIGlzIG51bGwnIDogJ1ZhbHVlIGlzIHVuZGVmaW5lZCc7XG4gIGNvbnN0IGVycm9yID0gdHlwZW9mIGVycm9yT3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IG5ldyBFcnJvcihlcnJvck9yTWVzc2FnZSkgOiBlcnJvck9yTWVzc2FnZTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0IGEgdmFsdWUgaXMgYSBnZW5lcmljIG9iamVjdCwgcmV0dXJuaW5nIGl0IHdpdGggbmFycm93ZWQgdHlwZS5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUuXG4gKiBAcGFyYW0gJG9iamVjdCAtIFRoZSB2YWx1ZSB0byBlbnN1cmUuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgYXMgYSBnZW5lcmljIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUdlbmVyaWNPYmplY3Q8VD4oJG9iamVjdDogVCk6IEdlbmVyaWNPYmplY3Q8VD4ge1xuICByZXR1cm4gJG9iamVjdCBhcyBHZW5lcmljT2JqZWN0PFQ+O1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHZhbHVlIGlzIG5vdCBgbnVsbGAgb3IgYHVuZGVmaW5lZGAgYW5kIHJldHVybnMgaXQgd2l0aCBuYXJyb3dlZCB0eXBlLlxuICpcbiAqIE9ubHkgY2FsbGFibGUgd2hlbiBgVGAgaW5jbHVkZXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLiBQYXNzaW5nIGFuIGFscmVhZHkgbm9uLW51bGxhYmxlIHR5cGUgaXMgYSBjb21waWxlIGVycm9yLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSBlcnJvck9yTWVzc2FnZSAtIE9wdGlvbmFsIHtAbGluayBFcnJvcn0gb3IgZXJyb3IgbWVzc2FnZSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgd2l0aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgIGV4Y2x1ZGVkIGZyb20gaXRzIHR5cGUuXG4gKiBAdGhyb3dzIElmIHRoZSB2YWx1ZSBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVOb25OdWxsYWJsZTxUIGV4dGVuZHMgTnVsbGFibGVDb25zdHJhaW50PFQ+Pih2YWx1ZTogVCwgZXJyb3JPck1lc3NhZ2U/OiBFcnJvciB8IHN0cmluZyk6IE5vbk51bGxhYmxlPFQ+IHtcbiAgYXNzZXJ0Tm9uTnVsbGFibGUodmFsdWUsIGVycm9yT3JNZXNzYWdlKTtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGd1YXJkIGFjY2VwdGluZyBhbnkgZnVuY3Rpb24sIG5hcnJvd2VkIHRvIHRoZSBzaWduYXR1cmUgYFRGdW5jdGlvbmAuIE9ubHkgdGhhdCB0aGUgdmFsdWUgaXMgYSBmdW5jdGlvblxuICogaXMgY2hlY2tlZDogYSBzaWduYXR1cmUgY2Fubm90IGJlIGNoZWNrZWQgYXQgcnVudGltZSwgc28gdGhlIGd1YXJkIHRydXN0cyBpdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRGdW5jdGlvbiAtIFRoZSBzaWduYXR1cmUgdGhlIGd1YXJkIG5hcnJvd3MgdG8uXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmdW5jdGlvblR5cGVHdWFyZDxURnVuY3Rpb24gZXh0ZW5kcyBHZW5lcmljRnVuY3Rpb24+KCk6IFR5cGVHdWFyZDxURnVuY3Rpb24+IHtcbiAgcmV0dXJuICh2YWx1ZSk6IHZhbHVlIGlzIFRGdW5jdGlvbiA9PiBpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYSBndWFyZCBhY2NlcHRpbmcgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcywgb3Igb2YgYSBjbGFzcyBkZXJpdmVkIGZyb20gaXQuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgYW4gaW5zdGFuY2UuXG4gKiBAcGFyYW0gY29uc3RydWN0b3IgLSBUaGUgY2xhc3MuXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnN0YW5jZU9mVHlwZUd1YXJkPFQ+KGNvbnN0cnVjdG9yOiBhYnN0cmFjdCBuZXcgKC4uLmFyZ3VtZW50c186IG5ldmVyW10pID0+IFQpOiBUeXBlR3VhcmQ8VD4ge1xuICByZXR1cm4gKHZhbHVlKTogdmFsdWUgaXMgVCA9PiB2YWx1ZSBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgYSBib29sZWFuLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgYm9vbGVhbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIGJvb2xlYW4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbic7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgR2VuZXJpY0Z1bmN0aW9uIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGBudWxsYC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bGwodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgYSBudW1iZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSBudW1iZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bWJlciB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgaXMgYW4gb2JqZWN0OiBub3QgYG51bGxgLCBhbmQgbm90IGEgcHJpbWl0aXZlIG9yIGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBvYmplY3Qge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgd2hvc2UgZXZlcnkgaXRlbSBpcyBhIHN0cmluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nQXJyYXkodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBzdHJpbmdbXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeShpc1N0cmluZyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBgdW5kZWZpbmVkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQnVpbGRzIGEgZ3VhcmQgYWNjZXB0aW5nIGV4YWN0bHkgdGhlIGtleXMgb2YgYSByZWNvcmQuIFR5cGluZyB0aGUgcmVjb3JkIG92ZXIgYSB1bmlvbiwgYXNcbiAqIGBsaXRlcmFsVHlwZUd1YXJkPE1vZGU+KHsgQTogdHJ1ZSwgQjogdHJ1ZSB9KWAsIG1ha2VzIGEgbWVtYmVyIGxhdGVyIGFkZGVkIHRvIHRoZSB1bmlvbiBmYWlsIHRvIGNvbXBpbGUgdW50aWxcbiAqIGl0IGlzIGxpc3RlZC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgYWNjZXB0ZWQgc3RyaW5ncy5cbiAqIEBwYXJhbSBsaXRlcmFscyAtIEEgcmVjb3JkIHdob3NlIGtleXMgYXJlIHRoZSBhY2NlcHRlZCBzdHJpbmdzLlxuICogQHJldHVybnMgVGhlIGd1YXJkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGl0ZXJhbFR5cGVHdWFyZDxUIGV4dGVuZHMgc3RyaW5nPihsaXRlcmFsczogUmVhZG9ubHk8UmVjb3JkPFQsIHRydWU+Pik6IFR5cGVHdWFyZDxUPjtcbi8qKlxuICogQnVpbGRzIGEgZ3VhcmQgYWNjZXB0aW5nIGV4YWN0bHkgdGhlIGxpc3RlZCB2YWx1ZXMsIGNvbXBhcmVkIGFzIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIGNvbXBhcmVzIHRoZW0uXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIGFjY2VwdGVkIHZhbHVlcy5cbiAqIEBwYXJhbSBsaXRlcmFscyAtIFRoZSBhY2NlcHRlZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsVHlwZUd1YXJkPFQgZXh0ZW5kcyBMaXRlcmFsPihsaXRlcmFsczogcmVhZG9ubHkgVFtdKTogVHlwZUd1YXJkPFQ+O1xuLyoqXG4gKiBCdWlsZHMgYSBndWFyZCBhY2NlcHRpbmcgZXhhY3RseSB0aGUgbGlzdGVkIHZhbHVlcy5cbiAqXG4gKiBAcGFyYW0gbGl0ZXJhbHMgLSBUaGUgYWNjZXB0ZWQgdmFsdWVzLCBhcyBhIGxpc3Qgb3IgYXMgdGhlIGtleXMgb2YgYSByZWNvcmQuXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXRlcmFsVHlwZUd1YXJkKGxpdGVyYWxzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCB0cnVlPj4gfCByZWFkb25seSBMaXRlcmFsW10pOiBUeXBlR3VhcmQ8TGl0ZXJhbD4ge1xuICBpZiAoaXNSZWFkb25seUFycmF5KGxpdGVyYWxzKSkge1xuICAgIGNvbnN0IGxpdGVyYWxMaXN0OiByZWFkb25seSB1bmtub3duW10gPSBsaXRlcmFscztcbiAgICByZXR1cm4gKHZhbHVlKTogdmFsdWUgaXMgTGl0ZXJhbCA9PiBsaXRlcmFsTGlzdC5pbmNsdWRlcyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gKHZhbHVlKTogdmFsdWUgaXMgTGl0ZXJhbCA9PiBpc1N0cmluZyh2YWx1ZSkgJiYgT2JqZWN0Lmhhc093bihsaXRlcmFscywgdmFsdWUpO1xufVxuXG4vKipcbiAqIFdpZGVucyBhIGd1YXJkIHRvIGFsc28gYWNjZXB0IGBudWxsYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSB0aGUgZ3VhcmQgbmFycm93cyB0by5cbiAqIEBwYXJhbSBpc1ZhbHVlIC0gVGhlIGd1YXJkIHRvIHdpZGVuLlxuICogQHJldHVybnMgQSBndWFyZCBhY2NlcHRpbmcgd2hhdCBgaXNWYWx1ZWAgYWNjZXB0cywgb3IgYG51bGxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbnVsbGFibGVUeXBlR3VhcmQ8VD4oaXNWYWx1ZTogVHlwZUd1YXJkPFQ+KTogVHlwZUd1YXJkPG51bGwgfCBUPiB7XG4gIHJldHVybiB1bmlvblR5cGVHdWFyZChpc051bGwsIGlzVmFsdWUpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGd1YXJkIGFjY2VwdGluZyBhbiBvYmplY3Qgd2hvc2UgZXZlcnkgbGlzdGVkIHByb3BlcnR5IGl0cyBndWFyZCBhY2NlcHRzLiBBIHByb3BlcnR5IGlzIHJlYWQgd2l0aFxuICogYFJlZmxlY3QuZ2V0YCwgc28gYW4gaW5oZXJpdGVkIG9uZSBjb3VudHMgYW5kIGFuIGFic2VudCBvbmUgcmVhZHMgYXMgYHVuZGVmaW5lZGAsIHVubGVzc1xuICoge0BsaW5rIE9iamVjdFR5cGVHdWFyZE9wdGlvbnMuZXhhY3RPcHRpb25hbEtleXN9IHN3aXRjaGVzIHRoZSBndWFyZCB0byBvd24ga2V5cyBhbmQgZXhhY3Qgb3B0aW9uYWwgcHJvcGVydGllcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgb2JqZWN0IHR5cGUuXG4gKiBAcGFyYW0gcHJvcGVydHlUeXBlR3VhcmRzIC0gT25lIGd1YXJkIHBlciBwcm9wZXJ0eSBvZiBgVGAuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciB0aGUgZ3VhcmQuXG4gKiBAcmV0dXJucyBUaGUgZ3VhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3RUeXBlR3VhcmQ8VCBleHRlbmRzIG9iamVjdD4ocHJvcGVydHlUeXBlR3VhcmRzOiBQcm9wZXJ0eVR5cGVHdWFyZHM8VD4sIG9wdGlvbnM/OiBPYmplY3RUeXBlR3VhcmRPcHRpb25zPFQ+KTogVHlwZUd1YXJkPFQ+IHtcbiAgY29uc3Qgc2hvdWxkUmVqZWN0VW5rbm93bktleXMgPSBvcHRpb25zPy5zaG91bGRSZWplY3RVbmtub3duS2V5cyA/PyBmYWxzZTtcbiAgY29uc3QgZXhhY3RPcHRpb25hbEtleXMgPSBvcHRpb25zPy5leGFjdE9wdGlvbmFsS2V5cztcbiAgcmV0dXJuICh2YWx1ZSk6IHZhbHVlIGlzIFQgPT4ge1xuICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFJlamVjdFVua25vd25LZXlzICYmIE9iamVjdC5rZXlzKHZhbHVlKS5zb21lKChrZXkpID0+ICFPYmplY3QuaGFzT3duKHByb3BlcnR5VHlwZUd1YXJkcywga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlR3VhcmRzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBUeXBlR3VhcmQ8dW5rbm93bj4+PiA9IHByb3BlcnR5VHlwZUd1YXJkcztcbiAgICBmb3IgKGNvbnN0IFtrZXksIHR5cGVHdWFyZF0gb2YgT2JqZWN0LmVudHJpZXModHlwZUd1YXJkcykpIHtcbiAgICAgIGlmIChleGFjdE9wdGlvbmFsS2V5cyAmJiAhT2JqZWN0Lmhhc093bih2YWx1ZSwga2V5KSkge1xuICAgICAgICBpZiAoT2JqZWN0Lmhhc093bihleGFjdE9wdGlvbmFsS2V5cywga2V5KSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXR5cGVHdWFyZChSZWZsZWN0LmdldCh2YWx1ZSwga2V5KSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xufVxuXG4vKipcbiAqIFdpZGVucyBhIGd1YXJkIHRvIGFsc28gYWNjZXB0IGB1bmRlZmluZWRgLCB3aGljaCBpcyB3aGF0IGFuIG9wdGlvbmFsIHByb3BlcnR5IG9yIHBhcmFtZXRlciByZWFkcyBhcyB3aGVuIGl0IGlzXG4gKiBsZWZ0IG91dC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSB0aGUgZ3VhcmQgbmFycm93cyB0by5cbiAqIEBwYXJhbSBpc1ZhbHVlIC0gVGhlIGd1YXJkIHRvIHdpZGVuLlxuICogQHJldHVybnMgQSBndWFyZCBhY2NlcHRpbmcgd2hhdCBgaXNWYWx1ZWAgYWNjZXB0cywgb3IgYHVuZGVmaW5lZGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbFR5cGVHdWFyZDxUPihpc1ZhbHVlOiBUeXBlR3VhcmQ8VD4pOiBUeXBlR3VhcmQ8VCB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gdW5pb25UeXBlR3VhcmQoaXNVbmRlZmluZWQsIGlzVmFsdWUpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBhIGd1YXJkIGFjY2VwdGluZyB3aGF0IGFueSBvZiB0aGUgZ2l2ZW4gZ3VhcmRzIGFjY2VwdHMuXG4gKlxuICogQHR5cGVQYXJhbSBUVHlwZUd1YXJkcyAtIFRoZSBndWFyZHMuXG4gKiBAcGFyYW0gdHlwZUd1YXJkcyAtIFRoZSBndWFyZHMsIHRyaWVkIGluIG9yZGVyLlxuICogQHJldHVybnMgVGhlIGd1YXJkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pb25UeXBlR3VhcmQ8Y29uc3QgVFR5cGVHdWFyZHMgZXh0ZW5kcyByZWFkb25seSBUeXBlR3VhcmQ8dW5rbm93bj5bXT4oXG4gIC4uLnR5cGVHdWFyZHM6IFRUeXBlR3VhcmRzXG4pOiBUeXBlR3VhcmQ8R3VhcmRlZFR5cGU8VFR5cGVHdWFyZHNbbnVtYmVyXT4+IHtcbiAgcmV0dXJuICh2YWx1ZSk6IHZhbHVlIGlzIEd1YXJkZWRUeXBlPFRUeXBlR3VhcmRzW251bWJlcl0+ID0+IHR5cGVHdWFyZHMuc29tZSgodHlwZUd1YXJkKSA9PiB0eXBlR3VhcmQodmFsdWUpKTtcbn1cblxuZnVuY3Rpb24gaXNSZWFkb25seUFycmF5KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgcmVhZG9ubHkgdW5rbm93bltdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFZQSxTQUFTLFlBQVk7QUF1RmQsU0FBUyxlQUFrQixRQUFzQztBQUN0RSxTQUFPLENBQUMsVUFBd0IsTUFBTSxRQUFRLEtBQUssS0FBSyxNQUFNLE1BQU0sQ0FBQyxTQUFTLE9BQU8sSUFBSSxDQUFDO0FBQzVGO0FBV08sU0FBUyxPQUFPLFFBQWlCLGdCQUFnRDtBQUN0RixNQUFJLENBQUMsUUFBUTtBQUNYLFVBQU0sT0FBTyxtQkFBbUIsV0FBVyxJQUFJLE1BQU0sY0FBYyxJQUFJO0FBQUEsRUFDekU7QUFDRjtBQVFPLFNBQVMsb0JBQXVCLFNBQWlEO0FBQ3RGLE9BQUs7QUFDUDtBQXVCTyxTQUFTLFlBQVksT0FBcUI7QUFDL0MsUUFBTSxJQUFJLE1BQU0sb0JBQW9CLE9BQU8sS0FBSyxDQUFDLEVBQUU7QUFDckQ7QUFZTyxTQUFTLGtCQUFtRCxPQUFVLGdCQUFrRTtBQUM3SSxNQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFDekM7QUFBQSxFQUNGO0FBRUEscUJBQW1CLFVBQVUsT0FBTyxrQkFBa0I7QUFDdEQsUUFBTSxRQUFRLE9BQU8sbUJBQW1CLFdBQVcsSUFBSSxNQUFNLGNBQWMsSUFBSTtBQUMvRSxRQUFNO0FBQ1I7QUFTTyxTQUFTLG9CQUF1QixTQUE4QjtBQUNuRSxTQUFPO0FBQ1Q7QUFhTyxTQUFTLGtCQUFtRCxPQUFVLGdCQUFpRDtBQUM1SCxvQkFBa0IsT0FB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
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* The bag lives on `globalThis` under a `Symbol.for` key, so every copy of this module loaded in one realm shares
|
|
8
8
|
* it, whichever version it is. It holds what must exist once per realm: the debuggers, the `debug` instance and the
|
|
9
|
-
* shared abort controller. Obsidian-specific state stays in
|
|
9
|
+
* shared abort controller. Obsidian-specific state stays in `@mnaoumov/obsidian-lib`, under its legacy `__obsidianDevUtils` global.
|
|
10
10
|
*
|
|
11
11
|
* The slot is a cross-version wire format: its key and the {@link TypescriptLibStateSlot} shape only ever change
|
|
12
12
|
* additively.
|
|
@@ -37,4 +37,4 @@ export {
|
|
|
37
37
|
getTypescriptLibStateSlot,
|
|
38
38
|
resetTypescriptLibState
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGVzY3JpcHQtbGliLXN0YXRlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBwcm9jZXNzLXdpZGUgc2hhcmVkLXN0YXRlIGJhZyBvZiB0aGUgZ2VuZXJpYywgbm9uLU9ic2lkaWFuIHBhcnQgb2YgdGhlIGxpYnJhcnkuXG4gKlxuICogVGhlIGJhZyBsaXZlcyBvbiBgZ2xvYmFsVGhpc2AgdW5kZXIgYSBgU3ltYm9sLmZvcmAga2V5LCBzbyBldmVyeSBjb3B5IG9mIHRoaXMgbW9kdWxlIGxvYWRlZCBpbiBvbmUgcmVhbG0gc2hhcmVzXG4gKiBpdCwgd2hpY2hldmVyIHZlcnNpb24gaXQgaXMuIEl0IGhvbGRzIHdoYXQgbXVzdCBleGlzdCBvbmNlIHBlciByZWFsbTogdGhlIGRlYnVnZ2VycywgdGhlIGBkZWJ1Z2AgaW5zdGFuY2UgYW5kIHRoZVxuICogc2hhcmVkIGFib3J0IGNvbnRyb2xsZXIuIE9ic2lkaWFuLXNwZWNpZmljIHN0YXRlIHN0YXlzIGluIGBAbW5hb3Vtb3Yvb2JzaWRpYW4tbGliYCwgdW5kZXIgaXRzIGxlZ2FjeSBgX19vYnNpZGlhbkRldlV0aWxzYCBnbG9iYWwuXG4gKlxuICogVGhlIHNsb3QgaXMgYSBjcm9zcy12ZXJzaW9uIHdpcmUgZm9ybWF0OiBpdHMga2V5IGFuZCB0aGUge0BsaW5rIFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3R9IHNoYXBlIG9ubHkgZXZlciBjaGFuZ2VcbiAqIGFkZGl0aXZlbHkuXG4gKi9cblxuaW1wb3J0IHsgVmFsdWVXcmFwcGVyIH0gZnJvbSAnLi92YWx1ZS13cmFwcGVyLnRzJztcblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUge0BsaW5rIFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3R9IHNoYXBlIHRoaXMgY29weSB3cml0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBUWVBFU0NSSVBUX0xJQl9TVEFURV9WRVJTSU9OID0gMTtcblxuLyoqXG4gKiBUaGUga2V5IG9mIHRoZSBnbG9iYWwgc2xvdCBob2xkaW5nIHRoZSB7QGxpbmsgVHlwZXNjcmlwdExpYlN0YXRlU2xvdH0uXG4gKi9cbmV4cG9ydCBjb25zdCBUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVk6IHVuaXF1ZSBzeW1ib2wgPSBTeW1ib2wuZm9yKCdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvc3RhdGUnKTtcblxuLyoqXG4gKiBUaGUgc2hhcmVkLXN0YXRlIHNsb3Qgc3RvcmVkIG9uIGBnbG9iYWxUaGlzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlc2NyaXB0TGliU3RhdGVTbG90IHtcbiAgLyoqXG4gICAqIFRoZSBzaGFyZWQgdmFsdWVzLCBlYWNoIGluIGEge0BsaW5rIFZhbHVlV3JhcHBlcn0gc28gYSBob2xkZXIgY2FuIHJlcGxhY2UgdGhlIHZhbHVlIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBWYWx1ZVdyYXBwZXI+O1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgc2xvdCBzaGFwZSB0aGUgY3JlYXRvciB3cm90ZS4gSW5mb3JtYXRpb25hbDogdGhlIHNoYXBlIG9ubHkgY2hhbmdlcyBhZGRpdGl2ZWx5LlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbjogbnVtYmVyO1xufVxuXG50eXBlIEdsb2JhbFdpdGhUeXBlc2NyaXB0TGliU3RhdGUgPSBQYXJ0aWFsPFJlY29yZDx0eXBlb2YgVFlQRVNDUklQVF9MSUJfU1RBVEVfS0VZLCBUeXBlc2NyaXB0TGliU3RhdGVTbG90Pj47XG5cbi8qKlxuICogUmV0cmlldmVzIG9yIGNyZWF0ZXMgYSBzaGFyZWQtc3RhdGUge0BsaW5rIFZhbHVlV3JhcHBlcn0gZm9yIGEgZ2l2ZW4ga2V5LlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBzaGFyZWQgc3RhdGUgdmFsdWUuXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBzdG9yZSBvciByZXRyaWV2ZSB0aGUgc2hhcmVkIHN0YXRlIHVuZGVyLlxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSAtIFRoZSBkZWZhdWx0IHZhbHVlIHRvIHVzZSBpZiB0aGUgc2hhcmVkIHN0YXRlIGRvZXMgbm90IGV4aXN0IHlldC5cbiAqIEByZXR1cm5zIFRoZSB7QGxpbmsgVmFsdWVXcmFwcGVyfSB0aGF0IHN0b3JlcyB0aGUgc2hhcmVkIHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZXNjcmlwdExpYlN0YXRlPFQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU6IFQpOiBWYWx1ZVdyYXBwZXI8VD4ge1xuICByZXR1cm4gKGdldFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3QoKS52YWx1ZXNba2V5XSA/Pz0gVmFsdWVXcmFwcGVyLm9mKGRlZmF1bHRWYWx1ZSkpIGFzIFZhbHVlV3JhcHBlcjxUPjtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgb3IgY3JlYXRlcyB0aGUgc2hhcmVkLXN0YXRlIHNsb3QuXG4gKlxuICogQHJldHVybnMgVGhlIHtAbGluayBUeXBlc2NyaXB0TGliU3RhdGVTbG90fS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cGVzY3JpcHRMaWJTdGF0ZVNsb3QoKTogVHlwZXNjcmlwdExpYlN0YXRlU2xvdCB7XG4gIGNvbnN0IGdsb2JhbCA9IGdldEdsb2JhbCgpO1xuICBsZXQgc2xvdCA9IGdsb2JhbFtUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVldO1xuICBpZiAoIXNsb3QpIHtcbiAgICBzbG90ID0gY3JlYXRlU2xvdCgpO1xuICAgIGdsb2JhbFtUWVBFU0NSSVBUX0xJQl9TVEFURV9LRVldID0gc2xvdDtcbiAgfVxuICByZXR1cm4gc2xvdDtcbn1cblxuLyoqXG4gKiBDbGVhcnMgdGhlIHNoYXJlZC1zdGF0ZSBiYWcuXG4gKlxuICogSW50ZW5kZWQgZm9yIHRlc3QgaXNvbGF0aW9uOiBjYWxsIGl0IGJlZm9yZSBlYWNoIHRlc3Qgc28gYWNjdW11bGF0ZWQgc3RhdGUgZG9lcyBub3QgbGVhayBiZXR3ZWVuIHRlc3RzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRUeXBlc2NyaXB0TGliU3RhdGUoKTogdm9pZCB7XG4gIGdldEdsb2JhbCgpW1RZUEVTQ1JJUFRfTElCX1NUQVRFX0tFWV0gPSBjcmVhdGVTbG90KCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNsb3QoKTogVHlwZXNjcmlwdExpYlN0YXRlU2xvdCB7XG4gIHJldHVybiB7XG4gICAgdmFsdWVzOiB7fSxcbiAgICB2ZXJzaW9uOiBUWVBFU0NSSVBUX0xJQl9TVEFURV9WRVJTSU9OXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldEdsb2JhbCgpOiBHbG9iYWxXaXRoVHlwZXNjcmlwdExpYlN0YXRlIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMgYXMgR2xvYmFsV2l0aFR5cGVzY3JpcHRMaWJTdGF0ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBYUEsU0FBUyxvQkFBb0I7QUFLdEIsTUFBTSwrQkFBK0I7QUFLckMsTUFBTSwyQkFBMEMsdUJBQU8sSUFBSSxnQ0FBZ0M7QUEyQjNGLFNBQVMsc0JBQXlCLEtBQWEsY0FBa0M7QUFDdEYsU0FBUSwwQkFBMEIsRUFBRSxPQUFPLEdBQUcsTUFBTSxhQUFhLEdBQUcsWUFBWTtBQUNsRjtBQU9PLFNBQVMsNEJBQW9EO0FBQ2xFLFFBQU0sU0FBUyxVQUFVO0FBQ3pCLE1BQUksT0FBTyxPQUFPLHdCQUF3QjtBQUMxQyxNQUFJLENBQUMsTUFBTTtBQUNULFdBQU8sV0FBVztBQUNsQixXQUFPLHdCQUF3QixJQUFJO0FBQUEsRUFDckM7QUFDQSxTQUFPO0FBQ1Q7QUFPTyxTQUFTLDBCQUFnQztBQUM5QyxZQUFVLEVBQUUsd0JBQXdCLElBQUksV0FBVztBQUNyRDtBQUVBLFNBQVMsYUFBcUM7QUFDNUMsU0FBTztBQUFBLElBQ0wsUUFBUSxDQUFDO0FBQUEsSUFDVCxTQUFTO0FBQUEsRUFDWDtBQUNGO0FBRUEsU0FBUyxZQUEwQztBQUNqRCxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnaoumov/typescript-lib",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Generic TypeScript utilities: async helpers, errors, disposables, strings, paths, debug logging and more, usable in any TypeScript project.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -78,7 +78,6 @@
|
|
|
78
78
|
"build": "jiti scripts/build.ts",
|
|
79
79
|
"build:clean": "jiti scripts/build-clean.ts",
|
|
80
80
|
"build:compile": "jiti scripts/build-compile.ts",
|
|
81
|
-
"build:compile:typescript": "jiti scripts/build-compile-typescript.ts",
|
|
82
81
|
"build:generate-exports": "jiti scripts/build-generate-exports.ts",
|
|
83
82
|
"build:generate-index": "jiti scripts/build-generate-index.ts",
|
|
84
83
|
"build:lib": "jiti scripts/build-lib.ts",
|
|
@@ -87,6 +86,7 @@
|
|
|
87
86
|
"build:validate-dependencies": "jiti scripts/build-validate-dependencies.ts",
|
|
88
87
|
"commit": "jiti scripts/commit.ts",
|
|
89
88
|
"docs:build": "jiti scripts/docs-build.ts",
|
|
89
|
+
"docs:check-snippets": "jiti scripts/docs-check-snippets.ts",
|
|
90
90
|
"docs:dev": "jiti scripts/docs-dev.ts",
|
|
91
91
|
"docs:preview": "jiti scripts/docs-preview.ts",
|
|
92
92
|
"find-overexposed": "jiti scripts/find-overexposed.ts",
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
"@astrojs/starlight": "^0.42.6",
|
|
119
119
|
"@commitlint/cli": "^21.2.2",
|
|
120
120
|
"@commitlint/config-conventional": "^21.2.2",
|
|
121
|
-
"@mnaoumov/typescript-dev-toolkit": "^3.
|
|
121
|
+
"@mnaoumov/typescript-dev-toolkit": "^3.7.0",
|
|
122
122
|
"@mnaoumov/typescript-test-toolkit": "^1.0.0",
|
|
123
123
|
"@resvg/resvg-js": "^2.6.2",
|
|
124
124
|
"@total-typescript/ts-reset": "^0.6.1",
|