obsidian-dev-utils 2.19.0 → 2.21.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/CHANGELOG.md
CHANGED
@@ -44,4 +44,4 @@ class PluginSettingsTabBase extends import_obsidian.PluginSettingTab {
|
|
44
44
|
0 && (module.exports = {
|
45
45
|
PluginSettingsTabBase
|
46
46
|
});
|
47
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT5yZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBQbHVnaW5TZXR0aW5nc1RhYkJhc2VcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBiYXNlIGNsYXNzIGZvciBjcmVhdGluZyBwbHVnaW4gc2V0dGluZyB0YWJzIGluIE9ic2lkaWFuLlxuICogSXQgcHJvdmlkZXMgYSB1dGlsaXR5IG1ldGhvZCB0byBiaW5kIHZhbHVlIGNvbXBvbmVudHMgdG8gcGx1Z2luIHNldHRpbmdzIGFuZCBoYW5kbGUgY2hhbmdlcy5cbiAqL1xuXG5pbXBvcnQgeyBQbHVnaW5TZXR0aW5nVGFiIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBQbHVnaW5CYXNlIH0gZnJvbSBcIi4vUGx1Z2luQmFzZS50c1wiO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgUGx1Z2luQmFzZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxcbiAgVFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+LFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCA9IFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+
|
47
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbInZhciBfX2ltcG9ydF9tZXRhX3VybCA9IGdsb2JhbFRoaXNbXCJpbXBvcnQubWV0YS51cmxcIl0gPz8gKCgpPT5yZXF1aXJlKFwibm9kZTp1cmxcIikucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKSkoKTtcbnZhciBfX3Byb2Nlc3MgPSBnbG9iYWxUaGlzW1wicHJvY2Vzc1wiXSA/PyB7XG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBQbHVnaW5TZXR0aW5nc1RhYkJhc2VcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYSBiYXNlIGNsYXNzIGZvciBjcmVhdGluZyBwbHVnaW4gc2V0dGluZyB0YWJzIGluIE9ic2lkaWFuLlxuICogSXQgcHJvdmlkZXMgYSB1dGlsaXR5IG1ldGhvZCB0byBiaW5kIHZhbHVlIGNvbXBvbmVudHMgdG8gcGx1Z2luIHNldHRpbmdzIGFuZCBoYW5kbGUgY2hhbmdlcy5cbiAqL1xuXG5pbXBvcnQgeyBQbHVnaW5TZXR0aW5nVGFiIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBQbHVnaW5CYXNlIH0gZnJvbSBcIi4vUGx1Z2luQmFzZS50c1wiO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIHBsdWdpbiBzZXR0aW5ncyB0YWJzIGluIE9ic2lkaWFuLlxuICogUHJvdmlkZXMgYSBtZXRob2QgZm9yIGJpbmRpbmcgdmFsdWUgY29tcG9uZW50cyB0byBwbHVnaW4gc2V0dGluZ3MgYW5kIGhhbmRsaW5nIGNoYW5nZXMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgUGx1Z2luQmFzZS5cbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3MgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxcbiAgVFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+LFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCA9IFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuPiBleHRlbmRzIFBsdWdpblNldHRpbmdUYWIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHVibGljIG92ZXJyaWRlIHBsdWdpbjogVFBsdWdpbikge1xuICAgIHN1cGVyKHBsdWdpbi5hcHAsIHBsdWdpbik7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHNCQUFpQztBQUNqQyx3QkFBMkI7QUFiM0IsSUFBSSxvQkFBb0IsV0FBVyxpQkFBaUIsTUFBTSxNQUFJLFFBQVEsVUFBVSxFQUFFLGNBQWMsVUFBVSxHQUFHO0FBQzdHLElBQUksWUFBWSxXQUFXLFNBQVMsS0FBSztBQUFBLEVBQ3ZDLE9BQU8sTUFBSTtBQUFBLEVBQ1gsT0FBTyxDQUFDO0FBQUEsRUFDUixZQUFZO0FBQ2Q7QUFpQk8sTUFBZSw4QkFHWixpQ0FBaUI7QUFBQSxFQUNsQixZQUE0QixRQUFpQjtBQUNsRCxVQUFNLE9BQU8sS0FBSyxNQUFNO0FBRFM7QUFBQSxFQUVuQztBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
@@ -33,15 +33,19 @@ var __process = globalThis["process"] ?? {
|
|
33
33
|
"env": {},
|
34
34
|
"platform": "android"
|
35
35
|
};
|
36
|
-
function bindUiComponent(
|
37
|
-
|
36
|
+
function bindUiComponent(plugin, uiComponent, property, options) {
|
37
|
+
const DEFAULT_OPTIONS = {
|
38
|
+
autoSave: true,
|
38
39
|
settingToUIValueConverter: (value) => value,
|
39
40
|
uiToSettingValueConverter: (value) => value
|
40
41
|
};
|
41
|
-
const
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
const optionsExt = Object.assign(options, DEFAULT_OPTIONS);
|
43
|
+
const pluginExt = plugin;
|
44
|
+
const uiComponentExt = uiComponent;
|
45
|
+
const pluginSettings = optionsExt.pluginSettings ?? pluginExt.settingsCopy;
|
46
|
+
uiComponentExt.setValue(optionsExt.settingToUIValueConverter(pluginSettings[property])).onChange(async (uiValue) => {
|
47
|
+
if (optionsExt.uiValueValidator) {
|
48
|
+
const errorMessage = optionsExt.uiValueValidator(uiValue);
|
45
49
|
const validatorElement = getValidatorElement(uiComponent);
|
46
50
|
if (validatorElement) {
|
47
51
|
validatorElement.setCustomValidity(errorMessage ?? "");
|
@@ -51,9 +55,9 @@ function bindUiComponent(pluginSettingsTab, uiComponent, property, options) {
|
|
51
55
|
return;
|
52
56
|
}
|
53
57
|
}
|
54
|
-
pluginSettings[property] =
|
55
|
-
if (
|
56
|
-
await
|
58
|
+
pluginSettings[property] = optionsExt.uiToSettingValueConverter(uiValue);
|
59
|
+
if (optionsExt.autoSave) {
|
60
|
+
await pluginExt.saveSettings(pluginSettings);
|
57
61
|
}
|
58
62
|
});
|
59
63
|
return uiComponent;
|
@@ -77,4 +81,4 @@ function getValidatorElement(uiComponent) {
|
|
77
81
|
0 && (module.exports = {
|
78
82
|
bindUiComponent
|
79
83
|
});
|
80
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9VSUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1tcImltcG9ydC5tZXRhLnVybFwiXSA/PyAoKCk9PnJlcXVpcmUoXCJub2RlOnVybFwiKS5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpKSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbXCJwcm9jZXNzXCJdID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB0eXBlIHsgS2V5c01hdGNoaW5nIH0gZnJvbSBcIi4uLy4uL0B0eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc1RhYkJhc2UgfSBmcm9tIFwiLi9QbHVnaW5TZXR0aW5nc1RhYkJhc2UudHNcIjtcbmltcG9ydCB0eXBlIHsgUGx1Z2luQmFzZSB9IGZyb20gXCIuL1BsdWdpbkJhc2UudHNcIjtcbmltcG9ydCB7XG4gIERyb3Bkb3duQ29tcG9uZW50LFxuICBTbGlkZXJDb21wb25lbnQsXG4gIFRleHRBcmVhQ29tcG9uZW50LFxuICBUZXh0Q29tcG9uZW50XG59IGZyb20gXCJvYnNpZGlhblwiO1xuXG4vKipcbiAqIEEgVUkgY29tcG9uZW50IHRoYXQgY2FuIGJlIGJvdW5kIHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVUlDb21wb25lbnQ8VUlWYWx1ZT4ge1xuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc2V0VmFsdWUodmFsdWU6IFVJVmFsdWUpOiB0aGlzO1xuXG4gIC8qKlxuICAgKiBTZXRzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqL1xuICBvbkNoYW5nZShjYWxsYmFjazogKG5ld1ZhbHVlOiBVSVZhbHVlKSA9PiBQcm9taXNlPHZvaWQ+KTogdGhpcztcbn1cblxuLyoqXG4gKiBBIFVJIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB2YWxpZGF0ZWQuXG4gKi9cbmludGVyZmFjZSBWYWxpZGF0b3JFbGVtZW50IHtcbiAgLyoqXG4gICAqIFNldHMgYSBjdXN0b20gZXJyb3IgbWVzc2FnZSBvbiB0aGUgZWxlbWVudC5cbiAgICogQHBhcmFtIGVycm9yIC0gVGhlIGVycm9yIG1lc3NhZ2UgdG8gc2V0IG9uIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgc2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3I6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlcG9ydHMgdGhlIHZhbGlkaXR5IG9mIHRoZSBlbGVtZW50LlxuICAgKi9cbiAgcmVwb3J0VmFsaWRpdHkoKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbnR5cGUgQmluZFVJQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgUHJvcGVydHkgZXh0ZW5kcyBrZXlvZiBQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGU+ID0ge1xuICAvLyBJZiB0cnVlLCBzYXZlcyB0aGUgcGx1Z2luIHNldHRpbmdzIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgdGhlIGNvbXBvbmVudCB2YWx1ZSBjaGFuZ2VzLiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgYXV0b1NhdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luIHNldHRpbmdzIG9iamVjdCB0byBiaW5kIHRoZSBjb21wb25lbnQgdG8uIERlZmF1bHQgaXMgdGhlIHBsdWdpbidzIGN1cnJlbnQgc2V0dGluZ3MuXG4gICAqL1xuICBwbHVnaW5TZXR0aW5ncz86IFBsdWdpblNldHRpbmdzO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgc2V0dGluZyB2YWx1ZSB0byB0aGUgdmFsdWUgdXNlZCBieSB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gcHJvcGVydHlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICAgKi9cbiAgc2V0dGluZ1RvVUlWYWx1ZUNvbnZlcnRlcjogKHByb3BlcnR5VmFsdWU6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSkgPT4gVUlWYWx1ZVR5cGU7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBVSSBjb21wb25lbnQncyB2YWx1ZSBiYWNrIHRvIHRoZSBzZXR0aW5nIHZhbHVlLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBwbHVnaW4gc2V0dGluZ3MuXG4gICAqL1xuICB1aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyOiAodWlWYWx1ZTogVUlWYWx1ZVR5cGUpID0+IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XTtcblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBVSSB2YWx1ZSBiZWZvcmUgc2V0dGluZyBpdCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKiBAcGFyYW0gdWlWYWx1ZSAtIFRoZSB2YWx1ZSBvZiB0aGUgVUkgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyBBbiBlcnJvciBtZXNzYWdlIGlmIHRoZSB2YWx1ZSBpcyBpbnZhbGlkLCBvciBgbnVsbGAgaWYgaXQgaXMgdmFsaWQuXG4gICAqL1xuICB1aVZhbHVlVmFsaWRhdG9yPzogKHVpVmFsdWU6IFVJVmFsdWVUeXBlKSA9PiBzdHJpbmcgfCBudWxsO1xufTtcblxuLyoqXG4gKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBvcHRpb25hbCBhdXRvbWF0aWMgc2F2aW5nIGFuZCB2YWx1ZSBjb252ZXJzaW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3NUYWIgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiB0aGF0IGV4dGVuZHMgYFBsdWdpblNldHRpbmdzVGFiQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRVSUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBVSUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlVHlwZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSBVSSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgYFBsdWdpbkJhc2VgLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW5TZXR0aW5nc1RhYiAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIHRoYXQgY29udGFpbnMgdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB3aWxsIGRpc3BsYXkgYW5kIGludGVyYWN0IHdpdGggdGhlIHNldHRpbmcgdmFsdWUuXG4gKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGBVSUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZFVpQ29tcG9uZW50PFxuICBQbHVnaW5TZXR0aW5nc1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxUUGx1Z2luLCBQbHVnaW5TZXR0aW5ncz4sXG4gIFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PHVua25vd24+LFxuICBQcm9wZXJ0eSBleHRlbmRzIEtleXNNYXRjaGluZzxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGU+LFxuICBVSVZhbHVlVHlwZSA9IFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuICBUUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncz4gPSBQbHVnaW5TZXR0aW5nc1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBUUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlcixcbj4oXG4gIHBsdWdpblNldHRpbmdzVGFiOiBQbHVnaW5TZXR0aW5nc1RhYixcbiAgdWlDb21wb25lbnQ6IFRVSUNvbXBvbmVudCxcbiAgcHJvcGVydHk6IFByb3BlcnR5LFxuICBvcHRpb25zPzogQmluZFVJQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgUHJvcGVydHksIFVJVmFsdWVUeXBlPlxuKTogVFVJQ29tcG9uZW50O1xuXG4vKipcbiAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncyB3aXRoIG9wdGlvbmFsIGF1dG9tYXRpYyBzYXZpbmcgYW5kIHZhbHVlIGNvbnZlcnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5nc1RhYiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIHRoYXQgZXh0ZW5kcyBgUGx1Z2luU2V0dGluZ3NUYWJCYXNlYC5cbiAqIEB0eXBlUGFyYW0gVFVJQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudCBleHRlbmRpbmcgYFVJQ29tcG9uZW50YC5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gKiBAdHlwZVBhcmFtIFVJVmFsdWVUeXBlIC0gVGhlIGluZmVycmVkIHR5cGUgYmFzZWQgb24gdGhlIFVJIGNvbXBvbmVudCdzIHR5cGUuXG4gKiBAdHlwZVBhcmFtIFRQbHVnaW4gLSBUaGUgaW5mZXJyZWQgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHBsdWdpblNldHRpbmdzVGFiIC0gVGhlIHBsdWdpbiBzZXR0aW5ncyB0YWIgdGhhdCBjb250YWlucyB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIHVpQ29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgZGlzcGxheSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc2V0dGluZyB2YWx1ZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYFVJQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kVWlDb21wb25lbnQ8XG4gIFBsdWdpblNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ3NUYWJCYXNlPFRQbHVnaW4sIFBsdWdpblNldHRpbmdzPixcbiAgVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8dW5rbm93bj4sXG4gIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gIFVJVmFsdWVUeXBlID0gVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gIFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPFBsdWdpblNldHRpbmdzPiA9IFBsdWdpblNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ3NUYWJCYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuICBQbHVnaW5TZXR0aW5ncyBleHRlbmRzIG9iamVjdCA9IFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuPihcbiAgcGx1Z2luU2V0dGluZ3NUYWI6IFBsdWdpblNldHRpbmdzVGFiLFxuICB1aUNvbXBvbmVudDogVFVJQ29tcG9uZW50LFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM6IEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFByb3BlcnR5LCBVSVZhbHVlVHlwZT5cbik6IFRVSUNvbXBvbmVudDtcblxuLyoqXG4gKiBCaW5kcyBhIHZhbHVlIGNvbXBvbmVudCB0byBhIHByb3BlcnR5IGluIHRoZSBwbHVnaW4gc2V0dGluZ3Mgd2l0aCBvcHRpb25hbCBhdXRvbWF0aWMgc2F2aW5nIGFuZCB2YWx1ZSBjb252ZXJzaW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUGx1Z2luU2V0dGluZ3NUYWIgLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHNldHRpbmdzIHRhYiB0aGF0IGV4dGVuZHMgYFBsdWdpblNldHRpbmdzVGFiQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRVSUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBVSUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlVHlwZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSBVSSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IGV4dGVuZHMgYFBsdWdpbkJhc2VgLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW5TZXR0aW5nc1RhYiAtIFRoZSBwbHVnaW4gc2V0dGluZ3MgdGFiIHRoYXQgY29udGFpbnMgdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB3aWxsIGRpc3BsYXkgYW5kIGludGVyYWN0IHdpdGggdGhlIHNldHRpbmcgdmFsdWUuXG4gKiBAcGFyYW0gcHJvcGVydHkgLSBUaGUgcHJvcGVydHkga2V5IGluIGBQbHVnaW5TZXR0aW5nc2AgdG8gYmluZCB0byB0aGUgVUkgY29tcG9uZW50LlxuICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGBVSUNvbXBvbmVudGAgaW5zdGFuY2UgdGhhdCB3YXMgYm91bmQgdG8gdGhlIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYmluZFVpQ29tcG9uZW50PFxuICBQbHVnaW5TZXR0aW5nc1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxUUGx1Z2luLCBQbHVnaW5TZXR0aW5ncz4sXG4gIFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PHVua25vd24+LFxuICBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzLFxuICBVSVZhbHVlVHlwZSA9IFRVSUNvbXBvbmVudCBleHRlbmRzIFVJQ29tcG9uZW50PGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuICBUUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxQbHVnaW5TZXR0aW5ncz4gPSBQbHVnaW5TZXR0aW5nc1RhYiBleHRlbmRzIFBsdWdpblNldHRpbmdzVGFiQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBUUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlcixcbj4oXG4gIHBsdWdpblNldHRpbmdzVGFiOiBQbHVnaW5TZXR0aW5nc1RhYixcbiAgdWlDb21wb25lbnQ6IFRVSUNvbXBvbmVudCxcbiAgcHJvcGVydHk6IFByb3BlcnR5LFxuICBvcHRpb25zPzogQmluZFVJQ29tcG9uZW50T3B0aW9uczxQbHVnaW5TZXR0aW5ncywgUHJvcGVydHksIFVJVmFsdWVUeXBlPlxuKTogVFVJQ29tcG9uZW50IHtcbiAgb3B0aW9ucyA/Pz0ge1xuICAgIHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZSk6IFVJVmFsdWVUeXBlID0+IHZhbHVlIGFzIFVJVmFsdWVUeXBlLFxuICAgIHVpVG9TZXR0aW5nVmFsdWVDb252ZXJ0ZXI6ICh2YWx1ZSk6IFBsdWdpblNldHRpbmdzW1Byb3BlcnR5XSA9PiB2YWx1ZSBhcyBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0sXG4gIH07XG4gIGNvbnN0IHBsdWdpblNldHRpbmdzID0gb3B0aW9ucy5wbHVnaW5TZXR0aW5ncyA/PyBwbHVnaW5TZXR0aW5nc1RhYi5wbHVnaW4uc2V0dGluZ3NDb3B5O1xuICAodWlDb21wb25lbnQgYXMgVUlDb21wb25lbnQ8VUlWYWx1ZVR5cGU+KVxuICAgIC5zZXRWYWx1ZShvcHRpb25zLnNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXIocGx1Z2luU2V0dGluZ3NbcHJvcGVydHldKSlcbiAgICAub25DaGFuZ2UoYXN5bmMgKHVpVmFsdWUpID0+IHtcbiAgICAgIGlmIChvcHRpb25zLnVpVmFsdWVWYWxpZGF0b3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gb3B0aW9ucy51aVZhbHVlVmFsaWRhdG9yKHVpVmFsdWUpO1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JFbGVtZW50ID0gZ2V0VmFsaWRhdG9yRWxlbWVudCh1aUNvbXBvbmVudCk7XG4gICAgICAgIGlmICh2YWxpZGF0b3JFbGVtZW50KSB7XG4gICAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5zZXRDdXN0b21WYWxpZGl0eShlcnJvck1lc3NhZ2UgPz8gXCJcIik7XG4gICAgICAgICAgdmFsaWRhdG9yRWxlbWVudC5yZXBvcnRWYWxpZGl0eSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBsdWdpblNldHRpbmdzW3Byb3BlcnR5XSA9IG9wdGlvbnMudWlUb1NldHRpbmdWYWx1ZUNvbnZlcnRlcih1aVZhbHVlKTtcbiAgICAgIGlmIChvcHRpb25zLmF1dG9TYXZlID8/IHRydWUpIHtcbiAgICAgICAgYXdhaXQgcGx1Z2luU2V0dGluZ3NUYWIucGx1Z2luLnNhdmVTZXR0aW5ncyhwbHVnaW5TZXR0aW5ncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiB1aUNvbXBvbmVudDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tIGEgVUkgY29tcG9uZW50IGlmIGl0IGV4aXN0cy5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBVSSBjb21wb25lbnQgdG8gZ2V0IHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tLlxuICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50IGlmIGl0IGV4aXN0cywgb3IgYG51bGxgIGlmIGl0IGRvZXMgbm90LlxuICovXG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JFbGVtZW50KHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudDx1bmtub3duPik6IFZhbGlkYXRvckVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2VsZWN0RWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2xpZGVyRWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQSxzQkFLTztBQWRQLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSSxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVUsR0FBRztBQUM3RyxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBNkpPLFNBQVMsZ0JBUWQsbUJBQ0EsYUFDQSxVQUNBLFNBQ2M7QUFDZCxjQUFZO0FBQUEsSUFDViwyQkFBMkIsQ0FBQyxVQUF1QjtBQUFBLElBQ25ELDJCQUEyQixDQUFDLFVBQW9DO0FBQUEsRUFDbEU7QUFDQSxRQUFNLGlCQUFpQixRQUFRLGtCQUFrQixrQkFBa0IsT0FBTztBQUMxRSxFQUFDLFlBQ0UsU0FBUyxRQUFRLDBCQUEwQixlQUFlLFFBQVEsQ0FBQyxDQUFDLEVBQ3BFLFNBQVMsT0FBTyxZQUFZO0FBQzNCLFFBQUksUUFBUSxrQkFBa0I7QUFDNUIsWUFBTSxlQUFlLFFBQVEsaUJBQWlCLE9BQU87QUFDckQsWUFBTSxtQkFBbUIsb0JBQW9CLFdBQVc7QUFDeEQsVUFBSSxrQkFBa0I7QUFDcEIseUJBQWlCLGtCQUFrQixnQkFBZ0IsRUFBRTtBQUNyRCx5QkFBaUIsZUFBZTtBQUFBLE1BQ2xDO0FBQ0EsVUFBSSxjQUFjO0FBQ2hCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFDQSxtQkFBZSxRQUFRLElBQUksUUFBUSwwQkFBMEIsT0FBTztBQUNwRSxRQUFJLFFBQVEsWUFBWSxNQUFNO0FBQzVCLFlBQU0sa0JBQWtCLE9BQU8sYUFBYSxjQUFjO0FBQUEsSUFDNUQ7QUFBQSxFQUNGLENBQUM7QUFDSCxTQUFPO0FBQ1Q7QUFPQSxTQUFTLG9CQUFvQixhQUE0RDtBQUN2RixNQUFJLHVCQUF1QixtQ0FBbUI7QUFDNUMsV0FBTyxZQUFZO0FBQUEsRUFDckI7QUFFQSxNQUFJLHVCQUF1QixpQ0FBaUI7QUFDMUMsV0FBTyxZQUFZO0FBQUEsRUFDckI7QUFFQSxNQUFJLHVCQUF1QixtQ0FBbUI7QUFDNUMsV0FBTyxZQUFZO0FBQUEsRUFDckI7QUFFQSxNQUFJLHVCQUF1QiwrQkFBZTtBQUN4QyxXQUFPLFlBQVk7QUFBQSxFQUNyQjtBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
84
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL1BsdWdpbi9VSUNvbXBvbmVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9faW1wb3J0X21ldGFfdXJsID0gZ2xvYmFsVGhpc1tcImltcG9ydC5tZXRhLnVybFwiXSA/PyAoKCk9PnJlcXVpcmUoXCJub2RlOnVybFwiKS5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpKSgpO1xudmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbXCJwcm9jZXNzXCJdID8/IHtcbiAgXCJjd2RcIjogKCk9PlwiL1wiLFxuICBcImVudlwiOiB7fSxcbiAgXCJwbGF0Zm9ybVwiOiBcImFuZHJvaWRcIlxufTtcbmltcG9ydCB0eXBlIHsgS2V5c01hdGNoaW5nIH0gZnJvbSBcIi4uLy4uL0B0eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5CYXNlIH0gZnJvbSBcIi4vUGx1Z2luQmFzZS50c1wiO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25Db21wb25lbnQsXG4gIFNsaWRlckNvbXBvbmVudCxcbiAgVGV4dEFyZWFDb21wb25lbnQsXG4gIFRleHRDb21wb25lbnRcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbi8qKlxuICogQSBVSSBjb21wb25lbnQgdGhhdCBjYW4gYmUgYm91bmQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVSUNvbXBvbmVudDxVSVZhbHVlPiB7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0IG9uIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBzZXRWYWx1ZSh2YWx1ZTogVUlWYWx1ZSk6IHRoaXM7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudCBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQgY2hhbmdlcy5cbiAgICovXG4gIG9uQ2hhbmdlKGNhbGxiYWNrOiAobmV3VmFsdWU6IFVJVmFsdWUpID0+IFByb21pc2U8dm9pZD4pOiB0aGlzO1xufVxuXG4vKipcbiAqIEEgVUkgY29tcG9uZW50IHRoYXQgY2FuIGJlIHZhbGlkYXRlZC5cbiAqL1xuaW50ZXJmYWNlIFZhbGlkYXRvckVsZW1lbnQge1xuICAvKipcbiAgICogU2V0cyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIG9uIHRoZSBlbGVtZW50LlxuICAgKiBAcGFyYW0gZXJyb3IgLSBUaGUgZXJyb3IgbWVzc2FnZSB0byBzZXQgb24gdGhlIGVsZW1lbnQuXG4gICAqL1xuICBzZXRDdXN0b21WYWxpZGl0eShlcnJvcjogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogUmVwb3J0cyB0aGUgdmFsaWRpdHkgb2YgdGhlIGVsZW1lbnQuXG4gICAqL1xuICByZXBvcnRWYWxpZGl0eSgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJpbmRpbmcgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwbHVnaW4gc2V0dGluZy5cbiAqL1xuaW50ZXJmYWNlIEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPiB7XG4gIC8vIElmIHRydWUsIHNhdmVzIHRoZSBwbHVnaW4gc2V0dGluZ3MgYXV0b21hdGljYWxseSBhZnRlciB0aGUgY29tcG9uZW50IHZhbHVlIGNoYW5nZXMuIERlZmF1bHQgaXMgYHRydWVgLlxuICBhdXRvU2F2ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0IHRvIGJpbmQgdGhlIGNvbXBvbmVudCB0by4gRGVmYXVsdCBpcyB0aGUgcGx1Z2luJ3MgY3VycmVudCBzZXR0aW5ncy5cbiAgICovXG4gIHBsdWdpblNldHRpbmdzPzogUGx1Z2luU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgVUkgdmFsdWUgYmVmb3JlIHNldHRpbmcgaXQgb24gdGhlIHBsdWdpbiBzZXR0aW5ncy5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgQW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgdmFsdWUgaXMgaW52YWxpZCwgb3IgYG51bGxgIGlmIGl0IGlzIHZhbGlkLlxuICAgKi9cbiAgdWlWYWx1ZVZhbGlkYXRvcj86ICh1aVZhbHVlOiBVSVZhbHVlVHlwZSkgPT4gc3RyaW5nIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBFeHRlbmRlZCBvcHRpb25zIGZvciBiaW5kaW5nIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcGx1Z2luIHNldHRpbmcuXG4gKi9cbmludGVyZmFjZSBCaW5kVUlDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlLCBQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFBsdWdpblNldHRpbmdzPiBleHRlbmRzIEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPiB7XG4gIC8qKlxuICogQ29udmVydHMgdGhlIHNldHRpbmcgdmFsdWUgdG8gdGhlIHZhbHVlIHVzZWQgYnkgdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBwcm9wZXJ0eVZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgVUkgY29tcG9uZW50LlxuICovXG4gIHNldHRpbmdUb1VJVmFsdWVDb252ZXJ0ZXI6IChwcm9wZXJ0eVZhbHVlOiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV0pID0+IFVJVmFsdWVUeXBlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgVUkgY29tcG9uZW50J3MgdmFsdWUgYmFjayB0byB0aGUgc2V0dGluZyB2YWx1ZS5cbiAgICogQHBhcmFtIHVpVmFsdWUgLSBUaGUgdmFsdWUgb2YgdGhlIFVJIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMgVGhlIHZhbHVlIHRvIHNldCBvbiB0aGUgcGx1Z2luIHNldHRpbmdzLlxuICAgKi9cbiAgdWlUb1NldHRpbmdWYWx1ZUNvbnZlcnRlcjogKHVpVmFsdWU6IFVJVmFsdWVUeXBlKSA9PiBQbHVnaW5TZXR0aW5nc1tQcm9wZXJ0eV07XG59XG5cbi8qKlxuICogQmluZHMgYSB2YWx1ZSBjb21wb25lbnQgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgcGx1Z2luIHNldHRpbmdzIHdpdGggb3B0aW9uYWwgYXV0b21hdGljIHNhdmluZyBhbmQgdmFsdWUgY29udmVyc2lvbi5cbiAqXG4gKiBAdHlwZVBhcmFtIFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCBleHRlbmRzIGBQbHVnaW5CYXNlYC5cbiAqIEB0eXBlUGFyYW0gVFVJQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIGNvbXBvbmVudCBleHRlbmRpbmcgYFVJQ29tcG9uZW50YC5cbiAqIEB0eXBlUGFyYW0gUHJvcGVydHkgLSBUaGUga2V5IG9mIHRoZSBwbHVnaW4gc2V0dGluZyB0aGF0IHRoZSBjb21wb25lbnQgaXMgYm91bmQgdG8uXG4gKiBAdHlwZVBhcmFtIFVJVmFsdWVUeXBlIC0gVGhlIGluZmVycmVkIHR5cGUgYmFzZWQgb24gdGhlIFVJIGNvbXBvbmVudCdzIHR5cGUuXG4gKiBAdHlwZVBhcmFtIFBsdWdpblNldHRpbmdzIC0gVGhlIGluZmVycmVkIHR5cGUgb2YgdGhlIHBsdWdpbiBzZXR0aW5ncyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4uXG4gKiBAcGFyYW0gdWlDb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgd2lsbCBkaXNwbGF5IGFuZCBpbnRlcmFjdCB3aXRoIHRoZSBzZXR0aW5nIHZhbHVlLlxuICogQHBhcmFtIHByb3BlcnR5IC0gVGhlIHByb3BlcnR5IGtleSBpbiBgUGx1Z2luU2V0dGluZ3NgIHRvIGJpbmQgdG8gdGhlIFVJIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBgVUlDb21wb25lbnRgIGluc3RhbmNlIHRoYXQgd2FzIGJvdW5kIHRvIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJpbmRVaUNvbXBvbmVudDxcbiAgUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxvYmplY3Q+LFxuICBUVUlDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudDx1bmtub3duPixcbiAgUHJvcGVydHkgZXh0ZW5kcyBLZXlzTWF0Y2hpbmc8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPixcbiAgVUlWYWx1ZVR5cGUgPSBUVUlDb21wb25lbnQgZXh0ZW5kcyBVSUNvbXBvbmVudDxpbmZlciBQPiA/IFAgOiBuZXZlcixcbiAgUGx1Z2luU2V0dGluZ3MgZXh0ZW5kcyBvYmplY3QgPSBQbHVnaW4gZXh0ZW5kcyBQbHVnaW5CYXNlPGluZmVyIFA+ID8gUCA6IG5ldmVyLFxuPihcbiAgcGx1Z2luOiBQbHVnaW4sXG4gIHVpQ29tcG9uZW50OiBUVUlDb21wb25lbnQsXG4gIHByb3BlcnR5OiBQcm9wZXJ0eSxcbiAgb3B0aW9ucz86IEJpbmRVSUNvbXBvbmVudE9wdGlvbnM8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlPlxuKTogVFVJQ29tcG9uZW50O1xuXG4vKipcbiAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncyB3aXRoIG9wdGlvbmFsIGF1dG9tYXRpYyBzYXZpbmcgYW5kIHZhbHVlIGNvbnZlcnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRVSUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBVSUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlVHlwZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSBVSSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luLlxuICogQHBhcmFtIHVpQ29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgZGlzcGxheSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc2V0dGluZyB2YWx1ZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYFVJQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kVWlDb21wb25lbnQ8XG4gIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8b2JqZWN0PixcbiAgVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8dW5rbm93bj4sXG4gIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gIFVJVmFsdWVUeXBlID0gVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0ID0gUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlcixcbj4oXG4gIHBsdWdpbjogUGx1Z2luLFxuICB1aUNvbXBvbmVudDogVFVJQ29tcG9uZW50LFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM6IEJpbmRVSUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGUsIFByb3BlcnR5PlxuKTogVFVJQ29tcG9uZW50O1xuXG4vKipcbiAqIEJpbmRzIGEgdmFsdWUgY29tcG9uZW50IHRvIGEgcHJvcGVydHkgaW4gdGhlIHBsdWdpbiBzZXR0aW5ncyB3aXRoIG9wdGlvbmFsIGF1dG9tYXRpYyBzYXZpbmcgYW5kIHZhbHVlIGNvbnZlcnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBQbHVnaW4gLSBUaGUgdHlwZSBvZiB0aGUgcGx1Z2luIHRoYXQgZXh0ZW5kcyBgUGx1Z2luQmFzZWAuXG4gKiBAdHlwZVBhcmFtIFRVSUNvbXBvbmVudCAtIFRoZSB0eXBlIG9mIHRoZSB2YWx1ZSBjb21wb25lbnQgZXh0ZW5kaW5nIGBVSUNvbXBvbmVudGAuXG4gKiBAdHlwZVBhcmFtIFByb3BlcnR5IC0gVGhlIGtleSBvZiB0aGUgcGx1Z2luIHNldHRpbmcgdGhhdCB0aGUgY29tcG9uZW50IGlzIGJvdW5kIHRvLlxuICogQHR5cGVQYXJhbSBVSVZhbHVlVHlwZSAtIFRoZSBpbmZlcnJlZCB0eXBlIGJhc2VkIG9uIHRoZSBVSSBjb21wb25lbnQncyB0eXBlLlxuICogQHR5cGVQYXJhbSBQbHVnaW5TZXR0aW5ncyAtIFRoZSBpbmZlcnJlZCB0eXBlIG9mIHRoZSBwbHVnaW4gc2V0dGluZ3Mgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luLlxuICogQHBhcmFtIHVpQ29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHdpbGwgZGlzcGxheSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc2V0dGluZyB2YWx1ZS5cbiAqIEBwYXJhbSBwcm9wZXJ0eSAtIFRoZSBwcm9wZXJ0eSBrZXkgaW4gYFBsdWdpblNldHRpbmdzYCB0byBiaW5kIHRvIHRoZSBVSSBjb21wb25lbnQuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqXG4gKiBAcmV0dXJucyBUaGUgYFVJQ29tcG9uZW50YCBpbnN0YW5jZSB0aGF0IHdhcyBib3VuZCB0byB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kVWlDb21wb25lbnQ8XG4gIFBsdWdpbiBleHRlbmRzIFBsdWdpbkJhc2U8b2JqZWN0PixcbiAgVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8dW5rbm93bj4sXG4gIFByb3BlcnR5IGV4dGVuZHMga2V5b2YgUGx1Z2luU2V0dGluZ3MsXG4gIFVJVmFsdWVUeXBlID0gVFVJQ29tcG9uZW50IGV4dGVuZHMgVUlDb21wb25lbnQ8aW5mZXIgUD4gPyBQIDogbmV2ZXIsXG4gIFBsdWdpblNldHRpbmdzIGV4dGVuZHMgb2JqZWN0ID0gUGx1Z2luIGV4dGVuZHMgUGx1Z2luQmFzZTxpbmZlciBQPiA/IFAgOiBuZXZlcixcbj4oXG4gIHBsdWdpbjogUGx1Z2luLFxuICB1aUNvbXBvbmVudDogVFVJQ29tcG9uZW50LFxuICBwcm9wZXJ0eTogUHJvcGVydHksXG4gIG9wdGlvbnM/OiBCaW5kVUlDb21wb25lbnRPcHRpb25zPFBsdWdpblNldHRpbmdzLCBVSVZhbHVlVHlwZT5cbik6IFRVSUNvbXBvbmVudCB7XG4gIHR5cGUgUHJvcGVydHlUeXBlID0gUGx1Z2luU2V0dGluZ3NbUHJvcGVydHldO1xuICBjb25zdCBERUZBVUxUX09QVElPTlM6IEJpbmRVSUNvbXBvbmVudE9wdGlvbnNFeHRlbmRlZDxQbHVnaW5TZXR0aW5ncywgVUlWYWx1ZVR5cGUsIFByb3BlcnR5PiA9IHtcbiAgICBhdXRvU2F2ZTogdHJ1ZSxcbiAgICBzZXR0aW5nVG9VSVZhbHVlQ29udmVydGVyOiAodmFsdWUpOiBVSVZhbHVlVHlwZSA9PiB2YWx1ZSBhcyBVSVZhbHVlVHlwZSxcbiAgICB1aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyOiAodmFsdWUpOiBQcm9wZXJ0eVR5cGUgPT4gdmFsdWUgYXMgUHJvcGVydHlUeXBlXG4gIH07XG5cbiAgY29uc3Qgb3B0aW9uc0V4dCA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucyBhcyBCaW5kVUlDb21wb25lbnRPcHRpb25zRXh0ZW5kZWQ8UGx1Z2luU2V0dGluZ3MsIFVJVmFsdWVUeXBlLCBQcm9wZXJ0eT4sIERFRkFVTFRfT1BUSU9OUyk7XG4gIGNvbnN0IHBsdWdpbkV4dCA9IHBsdWdpbiBhcyB1bmtub3duIGFzIFBsdWdpbkJhc2U8UGx1Z2luU2V0dGluZ3M+O1xuICBjb25zdCB1aUNvbXBvbmVudEV4dCA9IHVpQ29tcG9uZW50IGFzIFVJQ29tcG9uZW50PFVJVmFsdWVUeXBlPjtcbiAgY29uc3QgcGx1Z2luU2V0dGluZ3MgPSBvcHRpb25zRXh0LnBsdWdpblNldHRpbmdzID8/IHBsdWdpbkV4dC5zZXR0aW5nc0NvcHk7XG4gIHVpQ29tcG9uZW50RXh0XG4gICAgLnNldFZhbHVlKG9wdGlvbnNFeHQuc2V0dGluZ1RvVUlWYWx1ZUNvbnZlcnRlcihwbHVnaW5TZXR0aW5nc1twcm9wZXJ0eV0pKVxuICAgIC5vbkNoYW5nZShhc3luYyAodWlWYWx1ZSkgPT4ge1xuICAgICAgaWYgKG9wdGlvbnNFeHQudWlWYWx1ZVZhbGlkYXRvcikge1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBvcHRpb25zRXh0LnVpVmFsdWVWYWxpZGF0b3IodWlWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvckVsZW1lbnQgPSBnZXRWYWxpZGF0b3JFbGVtZW50KHVpQ29tcG9uZW50KTtcbiAgICAgICAgaWYgKHZhbGlkYXRvckVsZW1lbnQpIHtcbiAgICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnNldEN1c3RvbVZhbGlkaXR5KGVycm9yTWVzc2FnZSA/PyBcIlwiKTtcbiAgICAgICAgICB2YWxpZGF0b3JFbGVtZW50LnJlcG9ydFZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yTWVzc2FnZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGx1Z2luU2V0dGluZ3NbcHJvcGVydHldID0gb3B0aW9uc0V4dC51aVRvU2V0dGluZ1ZhbHVlQ29udmVydGVyKHVpVmFsdWUpO1xuICAgICAgaWYgKG9wdGlvbnNFeHQuYXV0b1NhdmUpIHtcbiAgICAgICAgYXdhaXQgcGx1Z2luRXh0LnNhdmVTZXR0aW5ncyhwbHVnaW5TZXR0aW5ncyk7XG4gICAgICB9XG4gICAgfSk7XG4gIHJldHVybiB1aUNvbXBvbmVudDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tIGEgVUkgY29tcG9uZW50IGlmIGl0IGV4aXN0cy5cbiAqIEBwYXJhbSB1aUNvbXBvbmVudCAtIFRoZSBVSSBjb21wb25lbnQgdG8gZ2V0IHRoZSB2YWxpZGF0b3IgZWxlbWVudCBmcm9tLlxuICogQHJldHVybnMgVGhlIHZhbGlkYXRvciBlbGVtZW50IGlmIGl0IGV4aXN0cywgb3IgYG51bGxgIGlmIGl0IGRvZXMgbm90LlxuICovXG5mdW5jdGlvbiBnZXRWYWxpZGF0b3JFbGVtZW50KHVpQ29tcG9uZW50OiBVSUNvbXBvbmVudDx1bmtub3duPik6IFZhbGlkYXRvckVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgRHJvcGRvd25Db21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2VsZWN0RWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBTbGlkZXJDb21wb25lbnQpIHtcbiAgICByZXR1cm4gdWlDb21wb25lbnQuc2xpZGVyRWw7XG4gIH1cblxuICBpZiAodWlDb21wb25lbnQgaW5zdGFuY2VvZiBUZXh0QXJlYUNvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgaWYgKHVpQ29tcG9uZW50IGluc3RhbmNlb2YgVGV4dENvbXBvbmVudCkge1xuICAgIHJldHVybiB1aUNvbXBvbmVudC5pbnB1dEVsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQSxzQkFLTztBQWJQLElBQUksb0JBQW9CLFdBQVcsaUJBQWlCLE1BQU0sTUFBSSxRQUFRLFVBQVUsRUFBRSxjQUFjLFVBQVUsR0FBRztBQUM3RyxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBNEpPLFNBQVMsZ0JBT2QsUUFDQSxhQUNBLFVBQ0EsU0FDYztBQUVkLFFBQU0sa0JBQXlGO0FBQUEsSUFDN0YsVUFBVTtBQUFBLElBQ1YsMkJBQTJCLENBQUMsVUFBdUI7QUFBQSxJQUNuRCwyQkFBMkIsQ0FBQyxVQUF3QjtBQUFBLEVBQ3REO0FBRUEsUUFBTSxhQUFhLE9BQU8sT0FBTyxTQUFrRixlQUFlO0FBQ2xJLFFBQU0sWUFBWTtBQUNsQixRQUFNLGlCQUFpQjtBQUN2QixRQUFNLGlCQUFpQixXQUFXLGtCQUFrQixVQUFVO0FBQzlELGlCQUNHLFNBQVMsV0FBVywwQkFBMEIsZUFBZSxRQUFRLENBQUMsQ0FBQyxFQUN2RSxTQUFTLE9BQU8sWUFBWTtBQUMzQixRQUFJLFdBQVcsa0JBQWtCO0FBQy9CLFlBQU0sZUFBZSxXQUFXLGlCQUFpQixPQUFPO0FBQ3hELFlBQU0sbUJBQW1CLG9CQUFvQixXQUFXO0FBQ3hELFVBQUksa0JBQWtCO0FBQ3BCLHlCQUFpQixrQkFBa0IsZ0JBQWdCLEVBQUU7QUFDckQseUJBQWlCLGVBQWU7QUFBQSxNQUNsQztBQUNBLFVBQUksY0FBYztBQUNoQjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQ0EsbUJBQWUsUUFBUSxJQUFJLFdBQVcsMEJBQTBCLE9BQU87QUFDdkUsUUFBSSxXQUFXLFVBQVU7QUFDdkIsWUFBTSxVQUFVLGFBQWEsY0FBYztBQUFBLElBQzdDO0FBQUEsRUFDRixDQUFDO0FBQ0gsU0FBTztBQUNUO0FBT0EsU0FBUyxvQkFBb0IsYUFBNEQ7QUFDdkYsTUFBSSx1QkFBdUIsbUNBQW1CO0FBQzVDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsaUNBQWlCO0FBQzFDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsbUNBQW1CO0FBQzVDLFdBQU8sWUFBWTtBQUFBLEVBQ3JCO0FBRUEsTUFBSSx1QkFBdUIsK0JBQWU7QUFDeEMsV0FBTyxZQUFZO0FBQUEsRUFDckI7QUFFQSxTQUFPO0FBQ1Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import type { KeysMatching } from "../../@types.ts";
|
2
|
-
import type { PluginSettingsTabBase } from "./PluginSettingsTabBase.ts";
|
3
2
|
import type { PluginBase } from "./PluginBase.ts";
|
4
3
|
/**
|
5
4
|
* A UI component that can be bound to a plugin setting.
|
@@ -19,17 +18,28 @@ export interface UIComponent<UIValue> {
|
|
19
18
|
/**
|
20
19
|
* Options for binding a value component to a plugin setting.
|
21
20
|
*/
|
22
|
-
|
21
|
+
interface BindUIComponentOptions<PluginSettings, UIValueType> {
|
23
22
|
autoSave?: boolean;
|
24
23
|
/**
|
25
24
|
* The plugin settings object to bind the component to. Default is the plugin's current settings.
|
26
25
|
*/
|
27
26
|
pluginSettings?: PluginSettings;
|
28
27
|
/**
|
29
|
-
*
|
30
|
-
* @param
|
31
|
-
* @returns
|
28
|
+
* Validates the UI value before setting it on the plugin settings.
|
29
|
+
* @param uiValue - The value of the UI component.
|
30
|
+
* @returns An error message if the value is invalid, or `null` if it is valid.
|
32
31
|
*/
|
32
|
+
uiValueValidator?: (uiValue: UIValueType) => string | null;
|
33
|
+
}
|
34
|
+
/**
|
35
|
+
* Extended options for binding a value component to a plugin setting.
|
36
|
+
*/
|
37
|
+
interface BindUIComponentOptionsExtended<PluginSettings, UIValueType, Property extends keyof PluginSettings> extends BindUIComponentOptions<PluginSettings, UIValueType> {
|
38
|
+
/**
|
39
|
+
* Converts the setting value to the value used by the UI component.
|
40
|
+
* @param propertyValue - The value of the property in the plugin settings.
|
41
|
+
* @returns The value to set on the UI component.
|
42
|
+
*/
|
33
43
|
settingToUIValueConverter: (propertyValue: PluginSettings[Property]) => UIValueType;
|
34
44
|
/**
|
35
45
|
* Converts the UI component's value back to the setting value.
|
@@ -37,47 +47,39 @@ type BindUIComponentOptions<PluginSettings, Property extends keyof PluginSetting
|
|
37
47
|
* @returns The value to set on the plugin settings.
|
38
48
|
*/
|
39
49
|
uiToSettingValueConverter: (uiValue: UIValueType) => PluginSettings[Property];
|
40
|
-
|
41
|
-
* Validates the UI value before setting it on the plugin settings.
|
42
|
-
* @param uiValue - The value of the UI component.
|
43
|
-
* @returns An error message if the value is invalid, or `null` if it is valid.
|
44
|
-
*/
|
45
|
-
uiValueValidator?: (uiValue: UIValueType) => string | null;
|
46
|
-
};
|
50
|
+
}
|
47
51
|
/**
|
48
52
|
* Binds a value component to a property in the plugin settings with optional automatic saving and value conversion.
|
49
53
|
*
|
50
|
-
* @typeParam
|
54
|
+
* @typeParam Plugin - The type of the plugin that extends `PluginBase`.
|
51
55
|
* @typeParam TUIComponent - The type of the value component extending `UIComponent`.
|
52
56
|
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
53
57
|
* @typeParam UIValueType - The inferred type based on the UI component's type.
|
54
|
-
* @typeParam TPlugin - The inferred type of the plugin that extends `PluginBase`.
|
55
58
|
* @typeParam PluginSettings - The inferred type of the plugin settings object.
|
56
59
|
*
|
57
|
-
* @param
|
60
|
+
* @param plugin - The plugin.
|
58
61
|
* @param uiComponent - The component that will display and interact with the setting value.
|
59
62
|
* @param property - The property key in `PluginSettings` to bind to the UI component.
|
60
63
|
* @param options - Configuration options.
|
61
64
|
*
|
62
65
|
* @returns The `UIComponent` instance that was bound to the property.
|
63
66
|
*/
|
64
|
-
export declare function bindUiComponent<
|
67
|
+
export declare function bindUiComponent<Plugin extends PluginBase<object>, TUIComponent extends UIComponent<unknown>, Property extends KeysMatching<PluginSettings, UIValueType>, UIValueType = TUIComponent extends UIComponent<infer P> ? P : never, PluginSettings extends object = Plugin extends PluginBase<infer P> ? P : never>(plugin: Plugin, uiComponent: TUIComponent, property: Property, options?: BindUIComponentOptions<PluginSettings, UIValueType>): TUIComponent;
|
65
68
|
/**
|
66
69
|
* Binds a value component to a property in the plugin settings with optional automatic saving and value conversion.
|
67
70
|
*
|
68
|
-
* @typeParam
|
71
|
+
* @typeParam Plugin - The type of the plugin that extends `PluginBase`.
|
69
72
|
* @typeParam TUIComponent - The type of the value component extending `UIComponent`.
|
70
73
|
* @typeParam Property - The key of the plugin setting that the component is bound to.
|
71
74
|
* @typeParam UIValueType - The inferred type based on the UI component's type.
|
72
|
-
* @typeParam TPlugin - The inferred type of the plugin that extends `PluginBase`.
|
73
75
|
* @typeParam PluginSettings - The inferred type of the plugin settings object.
|
74
76
|
*
|
75
|
-
* @param
|
77
|
+
* @param plugin - The plugin.
|
76
78
|
* @param uiComponent - The component that will display and interact with the setting value.
|
77
79
|
* @param property - The property key in `PluginSettings` to bind to the UI component.
|
78
80
|
* @param options - Configuration options.
|
79
81
|
*
|
80
82
|
* @returns The `UIComponent` instance that was bound to the property.
|
81
83
|
*/
|
82
|
-
export declare function bindUiComponent<
|
84
|
+
export declare function bindUiComponent<Plugin extends PluginBase<object>, TUIComponent extends UIComponent<unknown>, Property extends keyof PluginSettings, UIValueType = TUIComponent extends UIComponent<infer P> ? P : never, PluginSettings extends object = Plugin extends PluginBase<infer P> ? P : never>(plugin: Plugin, uiComponent: TUIComponent, property: Property, options: BindUIComponentOptionsExtended<PluginSettings, UIValueType, Property>): TUIComponent;
|
83
85
|
export {};
|
package/package.json
CHANGED