obsidian-dev-utils 66.0.1 → 67.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/dev/main.js +71 -103
- package/dist/lib/cjs/async-events.cjs +10 -20
- package/dist/lib/cjs/async-events.d.cts +0 -16
- package/dist/lib/cjs/async.cjs +2 -2
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +2 -4
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +1 -1
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +2 -3
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +3 -3
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +2 -1
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +2 -3
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +1 -1
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +1 -6
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +1 -6
- package/dist/lib/cjs/obsidian/components/abort-signal-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/components/async-component.cjs +8 -7
- package/dist/lib/cjs/obsidian/components/async-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/components/async-error-handler-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/components/i18n-component.cjs +2 -3
- package/dist/lib/cjs/obsidian/components/i18n-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/components/layout-ready-component.cjs +8 -2
- package/dist/lib/cjs/obsidian/components/layout-ready-component.d.cts +2 -2
- package/dist/lib/cjs/obsidian/components/plugin-context-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/components/plugin-settings-component.cjs +24 -23
- package/dist/lib/cjs/obsidian/components/plugin-settings-component.d.cts +22 -12
- package/dist/lib/cjs/obsidian/components/plugin-settings-tab-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/modals/alert.cjs +1 -3
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +1 -3
- package/dist/lib/cjs/obsidian/modals/prompt.cjs +1 -3
- package/dist/lib/cjs/obsidian/modals/select-item.cjs +1 -2
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +3 -3
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +2 -2
- package/dist/lib/cjs/obsidian/queue.cjs +2 -2
- package/dist/lib/cjs/obsidian/setting-components/checkbox-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/setting-components/checkbox-component.d.cts +1 -2
- package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.cjs +4 -2
- package/dist/lib/cjs/obsidian/setting-components/code-highlighter-component.d.cts +4 -3
- package/dist/lib/cjs/obsidian/setting-components/date-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/setting-components/date-time-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/setting-components/file-component.cjs +1 -3
- package/dist/lib/cjs/obsidian/setting-components/month-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.cjs +4 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-dropdown-component.d.cts +4 -3
- package/dist/lib/cjs/obsidian/setting-components/multiple-email-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-file-component.cjs +1 -3
- package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.cjs +4 -2
- package/dist/lib/cjs/obsidian/setting-components/multiple-text-component.d.cts +4 -3
- package/dist/lib/cjs/obsidian/setting-components/time-component.cjs +1 -2
- package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.cjs +1 -1
- package/dist/lib/cjs/obsidian/setting-components/tri-state-checkbox-component.d.cts +1 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.cjs +2 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-dropdown-component.d.cts +2 -3
- package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.cjs +4 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-multiple-dropdown-component.d.cts +4 -3
- package/dist/lib/cjs/obsidian/setting-components/typed-text-component.cjs +4 -2
- package/dist/lib/cjs/obsidian/setting-components/typed-text-component.d.cts +1 -2
- package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.cjs +1 -1
- package/dist/lib/cjs/obsidian/setting-components/value-component-with-change-tracking.d.cts +1 -2
- package/dist/lib/cjs/obsidian/setting-components/week-component.cjs +1 -2
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +7 -2
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.cjs +7 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/index.d.cts +2 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.cjs +5 -1
- package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.cjs +184 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/prefer-noop-async.d.cts +3 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.cjs +242 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-component-suffix.d.cts +5 -0
- package/dist/lib/cjs/transformers/group-transformer.cjs +1 -3
- package/dist/lib/esm/async-events.d.mts +0 -16
- package/dist/lib/esm/async-events.mjs +10 -20
- package/dist/lib/esm/async.mjs +6 -3
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +1 -1
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +2 -4
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +3 -4
- package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +2 -1
- package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +4 -4
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +1 -1
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +2 -3
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +1 -6
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +1 -6
- package/dist/lib/esm/obsidian/components/abort-signal-component.mjs +1 -2
- package/dist/lib/esm/obsidian/components/async-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/components/async-component.mjs +7 -6
- package/dist/lib/esm/obsidian/components/async-error-handler-component.mjs +1 -2
- package/dist/lib/esm/obsidian/components/i18n-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/components/i18n-component.mjs +3 -4
- package/dist/lib/esm/obsidian/components/layout-ready-component.d.mts +2 -2
- package/dist/lib/esm/obsidian/components/layout-ready-component.mjs +8 -2
- package/dist/lib/esm/obsidian/components/plugin-context-component.mjs +1 -2
- package/dist/lib/esm/obsidian/components/plugin-settings-component.d.mts +22 -12
- package/dist/lib/esm/obsidian/components/plugin-settings-component.mjs +25 -24
- package/dist/lib/esm/obsidian/components/plugin-settings-tab-component.mjs +1 -2
- package/dist/lib/esm/obsidian/modals/alert.mjs +1 -3
- package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -3
- package/dist/lib/esm/obsidian/modals/prompt.mjs +1 -3
- package/dist/lib/esm/obsidian/modals/select-item.mjs +1 -2
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +3 -3
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +2 -2
- package/dist/lib/esm/obsidian/queue.mjs +6 -3
- package/dist/lib/esm/obsidian/setting-components/checkbox-component.d.mts +1 -2
- package/dist/lib/esm/obsidian/setting-components/checkbox-component.mjs +1 -1
- package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.d.mts +4 -3
- package/dist/lib/esm/obsidian/setting-components/code-highlighter-component.mjs +4 -2
- package/dist/lib/esm/obsidian/setting-components/date-component.mjs +1 -2
- package/dist/lib/esm/obsidian/setting-components/date-time-component.mjs +1 -2
- package/dist/lib/esm/obsidian/setting-components/file-component.mjs +1 -3
- package/dist/lib/esm/obsidian/setting-components/month-component.mjs +1 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.d.mts +4 -3
- package/dist/lib/esm/obsidian/setting-components/multiple-dropdown-component.mjs +4 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-email-component.mjs +1 -2
- package/dist/lib/esm/obsidian/setting-components/multiple-file-component.mjs +1 -3
- package/dist/lib/esm/obsidian/setting-components/multiple-text-component.d.mts +4 -3
- package/dist/lib/esm/obsidian/setting-components/multiple-text-component.mjs +4 -2
- package/dist/lib/esm/obsidian/setting-components/time-component.mjs +1 -2
- package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.d.mts +1 -2
- package/dist/lib/esm/obsidian/setting-components/tri-state-checkbox-component.mjs +1 -1
- package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.d.mts +2 -3
- package/dist/lib/esm/obsidian/setting-components/typed-dropdown-component.mjs +2 -2
- package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.d.mts +4 -3
- package/dist/lib/esm/obsidian/setting-components/typed-multiple-dropdown-component.mjs +4 -2
- package/dist/lib/esm/obsidian/setting-components/typed-text-component.d.mts +1 -2
- package/dist/lib/esm/obsidian/setting-components/typed-text-component.mjs +4 -2
- package/dist/lib/esm/obsidian/setting-components/value-component-with-change-tracking.d.mts +1 -2
- package/dist/lib/esm/obsidian/setting-components/week-component.mjs +1 -2
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +7 -2
- package/dist/lib/esm/script-utils/linters/eslint-rules/index.d.mts +2 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/index.mjs +5 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/obsidian-dev-utils-plugin.mjs +5 -1
- package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.d.mts +3 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/prefer-noop-async.mjs +75 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.d.mts +5 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-component-suffix.mjs +131 -0
- package/dist/lib/esm/transformers/group-transformer.mjs +1 -3
- package/package.json +2 -2
- package/script-utils/linters/eslint-rules/prefer-noop-async/package.json +6 -0
- package/script-utils/linters/eslint-rules/require-component-suffix/package.json +6 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
(function initCjs() {
|
|
7
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
8
|
+
const globalThisRecord = globalThis;
|
|
9
|
+
globalThisRecord['__name'] ??= name;
|
|
10
|
+
const originalRequire = require;
|
|
11
|
+
if (originalRequire && !originalRequire.__isPatched) {
|
|
12
|
+
// eslint-disable-next-line no-global-assign, no-implicit-globals -- We need to patch the `require()` function.
|
|
13
|
+
require = Object.assign(
|
|
14
|
+
(id) => requirePatched(id),
|
|
15
|
+
originalRequire,
|
|
16
|
+
{
|
|
17
|
+
__isPatched: true
|
|
18
|
+
}
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const newFuncs = {
|
|
23
|
+
__extractDefault() {
|
|
24
|
+
return extractDefault;
|
|
25
|
+
},
|
|
26
|
+
process() {
|
|
27
|
+
const browserProcess = {
|
|
28
|
+
browser: true,
|
|
29
|
+
cwd() {
|
|
30
|
+
return '/';
|
|
31
|
+
},
|
|
32
|
+
env: {},
|
|
33
|
+
platform: 'android'
|
|
34
|
+
};
|
|
35
|
+
return browserProcess;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
for (const key of Object.keys(newFuncs)) {
|
|
40
|
+
globalThisRecord[key] ??= newFuncs[key]?.();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function name(obj) {
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function extractDefault(module) {
|
|
48
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
52
|
+
'obsidian',
|
|
53
|
+
'@codemirror/autocomplete',
|
|
54
|
+
'@codemirror/collab',
|
|
55
|
+
'@codemirror/commands',
|
|
56
|
+
'@codemirror/language',
|
|
57
|
+
'@codemirror/lint',
|
|
58
|
+
'@codemirror/search',
|
|
59
|
+
'@codemirror/state',
|
|
60
|
+
'@codemirror/text',
|
|
61
|
+
'@codemirror/view',
|
|
62
|
+
'@lezer/common',
|
|
63
|
+
'@lezer/lr',
|
|
64
|
+
'@lezer/highlight'];
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = [
|
|
68
|
+
'@codemirror/closebrackets',
|
|
69
|
+
'@codemirror/comment',
|
|
70
|
+
'@codemirror/fold',
|
|
71
|
+
'@codemirror/gutter',
|
|
72
|
+
'@codemirror/highlight',
|
|
73
|
+
'@codemirror/history',
|
|
74
|
+
'@codemirror/matchbrackets',
|
|
75
|
+
'@codemirror/panel',
|
|
76
|
+
'@codemirror/rangeset',
|
|
77
|
+
'@codemirror/rectangular-selection',
|
|
78
|
+
'@codemirror/stream-parser',
|
|
79
|
+
'@codemirror/tooltip'];
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
function requirePatched(id) {
|
|
83
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.includes(id)) {
|
|
84
|
+
return originalRequire?.(id);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
88
|
+
if (globalThis.app.isMobile) {
|
|
89
|
+
if (id === 'process' || id === 'node:process') {
|
|
90
|
+
// eslint-disable-next-line no-console -- Valid usage.
|
|
91
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
92
|
+
// eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
|
|
93
|
+
return globalThis.process;
|
|
94
|
+
}
|
|
95
|
+
} else {
|
|
96
|
+
const module = originalRequire?.(id);
|
|
97
|
+
if (module) {
|
|
98
|
+
return extractDefault(module);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// eslint-disable-next-line no-console -- Valid usage.
|
|
103
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
104
|
+
return {};
|
|
105
|
+
}
|
|
106
|
+
})();
|
|
107
|
+
|
|
108
|
+
"use strict";
|
|
109
|
+
var __defProp = Object.defineProperty;
|
|
110
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
111
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
112
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
113
|
+
var __export = (target, all) => {
|
|
114
|
+
for (var name in all)
|
|
115
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
116
|
+
};
|
|
117
|
+
var __copyProps = (to, from, except, desc) => {
|
|
118
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
119
|
+
for (let key of __getOwnPropNames(from))
|
|
120
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
121
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
122
|
+
}
|
|
123
|
+
return to;
|
|
124
|
+
};
|
|
125
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
126
|
+
var require_component_suffix_exports = {};
|
|
127
|
+
__export(require_component_suffix_exports, {
|
|
128
|
+
MESSAGE_ID_ABSTRACT_NEEDS_BASE: () => MESSAGE_ID_ABSTRACT_NEEDS_BASE,
|
|
129
|
+
MESSAGE_ID_BASE_NOT_ABSTRACT: () => MESSAGE_ID_BASE_NOT_ABSTRACT,
|
|
130
|
+
MESSAGE_ID_MISSING_SUFFIX: () => MESSAGE_ID_MISSING_SUFFIX,
|
|
131
|
+
requireComponentSuffix: () => requireComponentSuffix
|
|
132
|
+
});
|
|
133
|
+
module.exports = __toCommonJS(require_component_suffix_exports);
|
|
134
|
+
const MESSAGE_ID_MISSING_SUFFIX = "requireComponentSuffix";
|
|
135
|
+
const MESSAGE_ID_ABSTRACT_NEEDS_BASE = "abstractNeedsComponentBase";
|
|
136
|
+
const MESSAGE_ID_BASE_NOT_ABSTRACT = "componentBaseNotAbstract";
|
|
137
|
+
const EXCLUDED_ANCESTORS = /* @__PURE__ */ new Set(["Plugin"]);
|
|
138
|
+
const REQUIRED_ANCESTOR = "Component";
|
|
139
|
+
const requireComponentSuffix = {
|
|
140
|
+
create(context) {
|
|
141
|
+
const services = context.sourceCode.parserServices;
|
|
142
|
+
const checker = services.program.getTypeChecker();
|
|
143
|
+
return {
|
|
144
|
+
"ClassDeclaration[id]"(node) {
|
|
145
|
+
checkClass(context, services, checker, node);
|
|
146
|
+
},
|
|
147
|
+
"ClassExpression[id]"(node) {
|
|
148
|
+
checkClass(context, services, checker, node);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
meta: {
|
|
153
|
+
docs: {
|
|
154
|
+
description: "Require classes extending `Component` to have names ending with `Component`"
|
|
155
|
+
},
|
|
156
|
+
messages: {
|
|
157
|
+
[MESSAGE_ID_ABSTRACT_NEEDS_BASE]: "Abstract class `{{ className }}` extends `Component` but its name does not end with `ComponentBase`.",
|
|
158
|
+
[MESSAGE_ID_BASE_NOT_ABSTRACT]: "Class `{{ className }}` ends with `ComponentBase` but is not abstract. Only abstract classes may use the `ComponentBase` suffix.",
|
|
159
|
+
[MESSAGE_ID_MISSING_SUFFIX]: "Class `{{ className }}` extends `Component` but its name does not end with `Component`."
|
|
160
|
+
},
|
|
161
|
+
schema: [],
|
|
162
|
+
type: "problem"
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
function checkClass(context, services, checker, node) {
|
|
166
|
+
const classNode = node;
|
|
167
|
+
const classId = classNode.id;
|
|
168
|
+
if (!classId) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const className = classId.name;
|
|
172
|
+
const { abstract: isAbstract } = classNode;
|
|
173
|
+
const endsWithComponentBase = className.endsWith("ComponentBase");
|
|
174
|
+
const endsWithComponent = !endsWithComponentBase && className.endsWith("Component");
|
|
175
|
+
if (endsWithComponent && !isAbstract) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (endsWithComponentBase && isAbstract) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const tsNode = services.esTreeNodeToTSNodeMap.get(classNode);
|
|
182
|
+
const classType = checker.getTypeAtLocation(tsNode);
|
|
183
|
+
const ancestors = collectAncestorNames(classType);
|
|
184
|
+
if (!ancestors.has(REQUIRED_ANCESTOR)) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
for (const excluded of EXCLUDED_ANCESTORS) {
|
|
188
|
+
if (ancestors.has(excluded)) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (endsWithComponentBase && !isAbstract) {
|
|
193
|
+
context.report({
|
|
194
|
+
data: { className },
|
|
195
|
+
messageId: MESSAGE_ID_BASE_NOT_ABSTRACT,
|
|
196
|
+
node
|
|
197
|
+
});
|
|
198
|
+
} else if (isAbstract) {
|
|
199
|
+
context.report({
|
|
200
|
+
data: { className },
|
|
201
|
+
messageId: MESSAGE_ID_ABSTRACT_NEEDS_BASE,
|
|
202
|
+
node
|
|
203
|
+
});
|
|
204
|
+
} else {
|
|
205
|
+
context.report({
|
|
206
|
+
data: { className },
|
|
207
|
+
messageId: MESSAGE_ID_MISSING_SUFFIX,
|
|
208
|
+
node
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function collectAncestorNames(type) {
|
|
213
|
+
const names = /* @__PURE__ */ new Set();
|
|
214
|
+
const visited = /* @__PURE__ */ new Set();
|
|
215
|
+
walkAncestors(type, names, visited);
|
|
216
|
+
return names;
|
|
217
|
+
function walkAncestors(currentType, collectedNames, visitedTypes) {
|
|
218
|
+
if (visitedTypes.has(currentType)) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
visitedTypes.add(currentType);
|
|
222
|
+
const baseTypes = currentType.getBaseTypes?.();
|
|
223
|
+
if (!baseTypes) {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
for (const baseType of baseTypes) {
|
|
227
|
+
const symbol = baseType.getSymbol();
|
|
228
|
+
if (symbol) {
|
|
229
|
+
collectedNames.add(symbol.getName());
|
|
230
|
+
}
|
|
231
|
+
walkAncestors(baseType, collectedNames, visitedTypes);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
236
|
+
0 && (module.exports = {
|
|
237
|
+
MESSAGE_ID_ABSTRACT_NEEDS_BASE,
|
|
238
|
+
MESSAGE_ID_BASE_NOT_ABSTRACT,
|
|
239
|
+
MESSAGE_ID_MISSING_SUFFIX,
|
|
240
|
+
requireComponentSuffix
|
|
241
|
+
});
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLWNvbXBvbmVudC1zdWZmaXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcmVxdWlyZS1jb21wb25lbnQtc3VmZml4XG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGEgY2xhc3MgdGhhdCBleHRlbmRzIGBDb21wb25lbnRgIChmcm9tIE9ic2lkaWFuLFxuICogZGlyZWN0bHkgb3IgdHJhbnNpdGl2ZWx5KSBkb2VzIG5vdCBoYXZlIGEgbmFtZSBlbmRpbmcgd2l0aCBgQ29tcG9uZW50YFxuICogKG9yIGBDb21wb25lbnRCYXNlYCBmb3IgYWJzdHJhY3QgYmFzZSBjbGFzc2VzKS5cbiAqXG4gKiBDbGFzc2VzIHRoYXQgZXh0ZW5kIGBQbHVnaW5gICh3aGljaCBpdHNlbGYgZXh0ZW5kcyBgQ29tcG9uZW50YCkgYXJlXG4gKiBleGNsdWRlZCBiZWNhdXNlIHRoZXkgZm9sbG93IGEgZGlmZmVyZW50IG5hbWluZyBjb252ZW50aW9uLlxuICpcbiAqIFRoZSBydWxlIHVzZXMgdGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyIHRvIHdhbGsgdGhlIGZ1bGwgaW5oZXJpdGFuY2VcbiAqIGNoYWluLCBzbyBpdCB3b3JrcyByZWdhcmRsZXNzIG9mIGhvdyBtYW55IGludGVybWVkaWF0ZSBjbGFzc2VzIHNpdFxuICogYmV0d2VlbiB0aGUgdXNlcidzIGNsYXNzIGFuZCBgQ29tcG9uZW50YC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24sXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEX01JU1NJTkdfU1VGRklYID0gJ3JlcXVpcmVDb21wb25lbnRTdWZmaXgnO1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfQUJTVFJBQ1RfTkVFRFNfQkFTRSA9ICdhYnN0cmFjdE5lZWRzQ29tcG9uZW50QmFzZSc7XG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9CQVNFX05PVF9BQlNUUkFDVCA9ICdjb21wb25lbnRCYXNlTm90QWJzdHJhY3QnO1xuXG4vKiogQW5jZXN0b3IgY2xhc3MgbmFtZXMgdGhhdCBvcHQgYSBzdWJ0cmVlIG91dCBvZiB0aGUgc3VmZml4IHJlcXVpcmVtZW50LiAqL1xuY29uc3QgRVhDTFVERURfQU5DRVNUT1JTID0gbmV3IFNldChbJ1BsdWdpbiddKTtcblxuLyoqIFRoZSBhbmNlc3RvciBjbGFzcyBuYW1lIHRoYXQgdHJpZ2dlcnMgdGhlIHN1ZmZpeCByZXF1aXJlbWVudC4gKi9cbmNvbnN0IFJFUVVJUkVEX0FOQ0VTVE9SID0gJ0NvbXBvbmVudCc7XG5cbmludGVyZmFjZSBUeXBlV2l0aEJhc2VUeXBlcyB7XG4gIGdldEJhc2VUeXBlcz8oKTogVHlwZVtdIHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgcmVxdWlyZUNvbXBvbmVudFN1ZmZpeDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gY29udGV4dC5zb3VyY2VDb2RlLnBhcnNlclNlcnZpY2VzIGFzIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcbiAgICBjb25zdCBjaGVja2VyID0gc2VydmljZXMucHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICdDbGFzc0RlY2xhcmF0aW9uW2lkXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNoZWNrQ2xhc3MoY29udGV4dCwgc2VydmljZXMsIGNoZWNrZXIsIG5vZGUpO1xuICAgICAgfSxcbiAgICAgICdDbGFzc0V4cHJlc3Npb25baWRdJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY2hlY2tDbGFzcyhjb250ZXh0LCBzZXJ2aWNlcywgY2hlY2tlciwgbm9kZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBjbGFzc2VzIGV4dGVuZGluZyBgQ29tcG9uZW50YCB0byBoYXZlIG5hbWVzIGVuZGluZyB3aXRoIGBDb21wb25lbnRgJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0VdOiAnQWJzdHJhY3QgY2xhc3MgYHt7IGNsYXNzTmFtZSB9fWAgZXh0ZW5kcyBgQ29tcG9uZW50YCBidXQgaXRzIG5hbWUgZG9lcyBub3QgZW5kIHdpdGggYENvbXBvbmVudEJhc2VgLicsXG4gICAgICBbTUVTU0FHRV9JRF9CQVNFX05PVF9BQlNUUkFDVF06XG4gICAgICAgICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBlbmRzIHdpdGggYENvbXBvbmVudEJhc2VgIGJ1dCBpcyBub3QgYWJzdHJhY3QuIE9ubHkgYWJzdHJhY3QgY2xhc3NlcyBtYXkgdXNlIHRoZSBgQ29tcG9uZW50QmFzZWAgc3VmZml4LicsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWF06ICdDbGFzcyBge3sgY2xhc3NOYW1lIH19YCBleHRlbmRzIGBDb21wb25lbnRgIGJ1dCBpdHMgbmFtZSBkb2VzIG5vdCBlbmQgd2l0aCBgQ29tcG9uZW50YC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBhIHNpbmdsZSBjbGFzcyBkZWNsYXJhdGlvbiBvciBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIEVTTGludCBydWxlIGNvbnRleHQuXG4gKiBAcGFyYW0gc2VydmljZXMgLSBUaGUgcGFyc2VyIHNlcnZpY2VzIHdpdGggdHlwZSBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBjaGVja2VyIC0gVGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHBhcmFtIG5vZGUgLSBUaGUgY2xhc3MgQVNUIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ2xhc3MoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIHNlcnZpY2VzOiBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24sXG4gIGNoZWNrZXI6IFJldHVyblR5cGU8UGFyc2VyU2VydmljZXNXaXRoVHlwZUluZm9ybWF0aW9uWydwcm9ncmFtJ11bJ2dldFR5cGVDaGVja2VyJ10+LFxuICBub2RlOiBSdWxlLk5vZGVcbik6IHZvaWQge1xuICBjb25zdCBjbGFzc05vZGUgPSBub2RlIGFzIFRTRVNUcmVlLkNsYXNzRGVjbGFyYXRpb24gfCBUU0VTVHJlZS5DbGFzc0V4cHJlc3Npb247XG4gIGNvbnN0IGNsYXNzSWQgPSBjbGFzc05vZGUuaWQ7XG5cbiAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEVTTGludCBzZWxlY3RvciBgW2lkXWAgZ3VhcmFudGVlcyBjbGFzc0lkIGlzIHByZXNlbnQuICovXG4gIGlmICghY2xhc3NJZCkge1xuICAgIHJldHVybjtcbiAgfVxuICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuXG4gIGNvbnN0IGNsYXNzTmFtZSA9IGNsYXNzSWQubmFtZTtcbiAgY29uc3QgeyBhYnN0cmFjdDogaXNBYnN0cmFjdCB9ID0gY2xhc3NOb2RlO1xuICBjb25zdCBlbmRzV2l0aENvbXBvbmVudEJhc2UgPSBjbGFzc05hbWUuZW5kc1dpdGgoJ0NvbXBvbmVudEJhc2UnKTtcbiAgY29uc3QgZW5kc1dpdGhDb21wb25lbnQgPSAhZW5kc1dpdGhDb21wb25lbnRCYXNlICYmIGNsYXNzTmFtZS5lbmRzV2l0aCgnQ29tcG9uZW50Jyk7XG5cbiAgLy8gQ29ycmVjdDogbm9uLWFic3RyYWN0IGVuZGluZyB3aXRoIENvbXBvbmVudFxuICBpZiAoZW5kc1dpdGhDb21wb25lbnQgJiYgIWlzQWJzdHJhY3QpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBDb3JyZWN0OiBhYnN0cmFjdCBlbmRpbmcgd2l0aCBDb21wb25lbnRCYXNlXG4gIGlmIChlbmRzV2l0aENvbXBvbmVudEJhc2UgJiYgaXNBYnN0cmFjdCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHRzTm9kZSA9IHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQoY2xhc3NOb2RlKTtcbiAgY29uc3QgY2xhc3NUeXBlID0gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbih0c05vZGUpO1xuICBjb25zdCBhbmNlc3RvcnMgPSBjb2xsZWN0QW5jZXN0b3JOYW1lcyhjbGFzc1R5cGUpO1xuXG4gIGlmICghYW5jZXN0b3JzLmhhcyhSRVFVSVJFRF9BTkNFU1RPUikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKGNvbnN0IGV4Y2x1ZGVkIG9mIEVYQ0xVREVEX0FOQ0VTVE9SUykge1xuICAgIGlmIChhbmNlc3RvcnMuaGFzKGV4Y2x1ZGVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmRzV2l0aENvbXBvbmVudEJhc2UgJiYgIWlzQWJzdHJhY3QpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX0JBU0VfTk9UX0FCU1RSQUNULFxuICAgICAgbm9kZVxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzQWJzdHJhY3QpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICBkYXRhOiB7IGNsYXNzTmFtZSB9LFxuICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lEX0FCU1RSQUNUX05FRURTX0JBU0UsXG4gICAgICBub2RlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgZGF0YTogeyBjbGFzc05hbWUgfSxcbiAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1NVRkZJWCxcbiAgICAgIG5vZGVcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbGxlY3RzIHRoZSBuYW1lcyBvZiBhbGwgYW5jZXN0b3IgdHlwZXMgaW4gdGhlIGluaGVyaXRhbmNlIGNoYWluLlxuICpcbiAqIEBwYXJhbSB0eXBlIC0gVGhlIFR5cGVTY3JpcHQgdHlwZSB0byBzdGFydCBmcm9tLlxuICogQHJldHVybnMgQSBzZXQgb2YgYW5jZXN0b3IgY2xhc3MgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RBbmNlc3Rvck5hbWVzKHR5cGU6IFR5cGUpOiBTZXQ8c3RyaW5nPiB7XG4gIGNvbnN0IG5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PFR5cGU+KCk7XG5cbiAgd2Fsa0FuY2VzdG9ycyh0eXBlLCBuYW1lcywgdmlzaXRlZCk7XG5cbiAgcmV0dXJuIG5hbWVzO1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSB3YWxrcyB0aGUgYmFzZSB0eXBlcyBvZiBhIHR5cGUsIGNvbGxlY3RpbmcgdGhlaXIgbmFtZXMuXG4gICAqXG4gICAqIEBwYXJhbSBjdXJyZW50VHlwZSAtIFRoZSBjdXJyZW50IHR5cGUgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIGNvbGxlY3RlZE5hbWVzIC0gVGhlIHNldCB0byBhZGQgZGlzY292ZXJlZCBhbmNlc3RvciBuYW1lcyB0by5cbiAgICogQHBhcmFtIHZpc2l0ZWRUeXBlcyAtIFR5cGVzIGFscmVhZHkgdmlzaXRlZCwgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcy5cbiAgICovXG4gIGZ1bmN0aW9uIHdhbGtBbmNlc3RvcnMoY3VycmVudFR5cGU6IFR5cGUsIGNvbGxlY3RlZE5hbWVzOiBTZXQ8c3RyaW5nPiwgdmlzaXRlZFR5cGVzOiBTZXQ8VHlwZT4pOiB2b2lkIHtcbiAgICBpZiAodmlzaXRlZFR5cGVzLmhhcyhjdXJyZW50VHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2aXNpdGVkVHlwZXMuYWRkKGN1cnJlbnRUeXBlKTtcblxuICAgIGNvbnN0IGJhc2VUeXBlcyA9IChjdXJyZW50VHlwZSBhcyBUeXBlV2l0aEJhc2VUeXBlcykuZ2V0QmFzZVR5cGVzPy4oKTtcblxuICAgIGlmICghYmFzZVR5cGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBiYXNlVHlwZSBvZiBiYXNlVHlwZXMpIHtcbiAgICAgIGNvbnN0IHN5bWJvbCA9IGJhc2VUeXBlLmdldFN5bWJvbCgpO1xuXG4gICAgICBpZiAoc3ltYm9sKSB7XG4gICAgICAgIGNvbGxlY3RlZE5hbWVzLmFkZChzeW1ib2wuZ2V0TmFtZSgpKTtcbiAgICAgIH1cblxuICAgICAgd2Fsa0FuY2VzdG9ycyhiYXNlVHlwZSwgY29sbGVjdGVkTmFtZXMsIHZpc2l0ZWRUeXBlcyk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1Qk8sTUFBTSw0QkFBNEI7QUFDbEMsTUFBTSxpQ0FBaUM7QUFDdkMsTUFBTSwrQkFBK0I7QUFHNUMsTUFBTSxxQkFBcUIsb0JBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUc3QyxNQUFNLG9CQUFvQjtBQU1uQixNQUFNLHlCQUEwQztBQUFBLEVBQ3JELE9BQU8sU0FBUztBQUNkLFVBQU0sV0FBVyxRQUFRLFdBQVc7QUFDcEMsVUFBTSxVQUFVLFNBQVMsUUFBUSxlQUFlO0FB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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Rule } from 'eslint';
|
|
2
|
+
export declare const MESSAGE_ID_MISSING_SUFFIX = "requireComponentSuffix";
|
|
3
|
+
export declare const MESSAGE_ID_ABSTRACT_NEEDS_BASE = "abstractNeedsComponentBase";
|
|
4
|
+
export declare const MESSAGE_ID_BASE_NOT_ABSTRACT = "componentBaseNotAbstract";
|
|
5
|
+
export declare const requireComponentSuffix: Rule.RuleModule;
|
|
@@ -165,7 +165,6 @@ class GroupTransformer extends import_transformer.Transformer {
|
|
|
165
165
|
* @param transformerId - The id of the transformer to get.
|
|
166
166
|
* @returns The transformer with the given id.
|
|
167
167
|
*/
|
|
168
|
-
// eslint-disable-next-line obsidian-dev-utils/require-super-call -- Intentionally replaces parent lookup with search across child transformers.
|
|
169
168
|
getTransformer(transformerId) {
|
|
170
169
|
return (0, import_type_guards.ensureNonNullable)(this.transformers.find((t) => t.id === transformerId), `No transformer with id ${transformerId} found`);
|
|
171
170
|
}
|
|
@@ -188,7 +187,6 @@ class GroupTransformer extends import_transformer.Transformer {
|
|
|
188
187
|
* @param key - The key of the value to get the transformer id for.
|
|
189
188
|
* @returns The id of the transformer that can transform the given value.
|
|
190
189
|
*/
|
|
191
|
-
// eslint-disable-next-line obsidian-dev-utils/require-super-call -- Intentionally replaces parent lookup with composite transformer search.
|
|
192
190
|
getTransformerId(value, key) {
|
|
193
191
|
const transformer = this.getFirstTransformerThatCanTransform(value, key);
|
|
194
192
|
if (transformer === null) {
|
|
@@ -219,4 +217,4 @@ class GroupTransformer extends import_transformer.Transformer {
|
|
|
219
217
|
0 && (module.exports = {
|
|
220
218
|
GroupTransformer
|
|
221
219
|
});
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9ncm91cC10cmFuc2Zvcm1lci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEEgdHJhbnNmb3JtZXIgdGhhdCBjb21iaW5lcyBtdWx0aXBsZSB0cmFuc2Zvcm1lcnMuXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNzZXJ0Tm9uTnVsbGFibGUsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4uL3R5cGUtZ3VhcmRzLnRzJztcbmltcG9ydCB7IFRyYW5zZm9ybWVyIH0gZnJvbSAnLi90cmFuc2Zvcm1lci50cyc7XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNvbWJpbmVzIG11bHRpcGxlIHRyYW5zZm9ybWVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyb3VwVHJhbnNmb3JtZXIgZXh0ZW5kcyBUcmFuc2Zvcm1lciB7XG4gIC8qKlxuICAgKiBBbiBpZCBvZiB0aGUgdHJhbnNmb3JtZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIGBncm91cGAuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdncm91cCc7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtZXJzIHRvIGNvbWJpbmUuXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2Zvcm1lcnMgLSBUaGUgdHJhbnNmb3JtZXJzIHRvIGNvbWJpbmUuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0cmFuc2Zvcm1lcnM6IFRyYW5zZm9ybWVyW10pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGNhbiBiZSB0cmFuc2Zvcm1lZCBieSBhbnkgb2YgdGhlIHRyYW5zZm9ybWVycy5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSB2YWx1ZSBjYW4gYmUgdHJhbnNmb3JtZWQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgY2FuVHJhbnNmb3JtKHZhbHVlOiB1bmtub3duLCBrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEZpcnN0VHJhbnNmb3JtZXJUaGF0Q2FuVHJhbnNmb3JtKHZhbHVlLCBrZXkpICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRyYW5zZm9ybWVyIHdpdGggdGhlIGdpdmVuIGlkLlxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNmb3JtZXJJZCAtIFRoZSBpZCBvZiB0aGUgdHJhbnNmb3JtZXIgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBUaGUgdHJhbnNmb3JtZXIgd2l0aCB0aGUgZ2l2ZW4gaWQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0VHJhbnNmb3JtZXIodHJhbnNmb3JtZXJJZDogc3RyaW5nKTogVHJhbnNmb3JtZXIge1xuICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZSh0aGlzLnRyYW5zZm9ybWVycy5maW5kKCh0KSA9PiB0LmlkID09PSB0cmFuc2Zvcm1lcklkKSwgYE5vIHRyYW5zZm9ybWVyIHdpdGggaWQgJHt0cmFuc2Zvcm1lcklkfSBmb3VuZGApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdGhlIHZhbHVlIHVzaW5nIHRoZSBmaXJzdCB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gaXQuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogdW5rbm93biwga2V5OiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lciA9IHRoaXMuZ2V0Rmlyc3RUcmFuc2Zvcm1lclRoYXRDYW5UcmFuc2Zvcm0odmFsdWUsIGtleSk7XG4gICAgYXNzZXJ0Tm9uTnVsbGFibGUodHJhbnNmb3JtZXIsICdObyB0cmFuc2Zvcm1lciBjYW4gdHJhbnNmb3JtIHRoZSB2YWx1ZScpO1xuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVyLnRyYW5zZm9ybVZhbHVlKHZhbHVlLCBrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGlkIG9mIHRoZSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gdGhlIGdpdmVuIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gZ2V0IHRoZSB0cmFuc2Zvcm1lciBpZCBmb3IuXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQgdGhlIHRyYW5zZm9ybWVyIGlkIGZvci5cbiAgICogQHJldHVybnMgVGhlIGlkIG9mIHRoZSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFRyYW5zZm9ybWVySWQodmFsdWU6IHVua25vd24sIGtleTogc3RyaW5nKTogbnVsbCB8IHN0cmluZyB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSB0aGlzLmdldEZpcnN0VHJhbnNmb3JtZXJUaGF0Q2FuVHJhbnNmb3JtKHZhbHVlLCBrZXkpO1xuICAgIGlmICh0cmFuc2Zvcm1lciA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zZm9ybWVyLmlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgdHJhbnNmb3JtZXIgZG9lcyBub3Qgc3VwcG9ydCByZXN0b3JpbmcgdmFsdWVzLlxuICAgKlxuICAgKiBAdGhyb3dzXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVzdG9yZVZhbHVlKCk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0dyb3VwVHJhbnNmb3JtZXIgZG9lcyBub3Qgc3VwcG9ydCByZXN0b3JpbmcgdmFsdWVzJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZmlyc3QgdHJhbnNmb3JtZXIgdGhhdCBjYW4gdHJhbnNmb3JtIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGdldCB0aGUgZmlyc3QgdHJhbnNmb3JtZXIgZm9yLlxuICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0IHRoZSBmaXJzdCB0cmFuc2Zvcm1lciBmb3IuXG4gICAqIEByZXR1cm5zIFRoZSBmaXJzdCB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gdGhlIGdpdmVuIHZhbHVlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRGaXJzdFRyYW5zZm9ybWVyVGhhdENhblRyYW5zZm9ybSh2YWx1ZTogdW5rbm93biwga2V5OiBzdHJpbmcpOiBudWxsIHwgVHJhbnNmb3JtZXIge1xuICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybWVycy5maW5kKCh0KSA9PiB0LmNhblRyYW5zZm9ybSh2YWx1ZSwga2V5KSkgPz8gbnVsbDtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEseUJBR087QUFDUCx5QkFBNEI7QUFLckIsTUFBTSx5QkFBeUIsK0JBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFlekMsWUFBNkIsY0FBNkI7QUFDL0QsVUFBTTtBQUQ0QjtBQUFBLEVBRXBDO0FBQUEsRUFGb0M7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFUcEMsSUFBb0IsS0FBYTtBQUMvQixXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFrQmdCLGFBQWEsT0FBZ0IsS0FBc0I7QUFDakUsV0FBTyxLQUFLLG9DQUFvQyxPQUFPLEdBQUcsTUFBTTtBQUFBLEVBQ2xFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZUFBZSxlQUFvQztBQUNqRSxlQUFPLHNDQUFrQixLQUFLLGFBQWEsS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLGFBQWEsR0FBRywwQkFBMEIsYUFBYSxRQUFRO0FBQUEsRUFDakk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU2dCLGVBQWUsT0FBZ0IsS0FBc0I7QUFDbkUsVUFBTSxjQUFjLEtBQUssb0NBQW9DLE9BQU8sR0FBRztBQUN2RSw4Q0FBa0IsYUFBYSx3Q0FBd0M7QUFFdkUsV0FBTyxZQUFZLGVBQWUsT0FBTyxHQUFHO0FBQUEsRUFDOUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU21CLGlCQUFpQixPQUFnQixLQUE0QjtBQUM5RSxVQUFNLGNBQWMsS0FBSyxvQ0FBb0MsT0FBTyxHQUFHO0FBQ3ZFLFFBQUksZ0JBQWdCLE1BQU07QUFDeEIsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLFlBQVk7QUFBQSxFQUNyQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9tQixlQUFzQjtBQUN2QyxVQUFNLElBQUksTUFBTSxvREFBb0Q7QUFBQSxFQUN0RTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTUSxvQ0FBb0MsT0FBZ0IsS0FBaUM7QUFDM0YsV0FBTyxLQUFLLGFBQWEsS0FBSyxDQUFDLE1BQU0sRUFBRSxhQUFhLE9BQU8sR0FBRyxDQUFDLEtBQUs7QUFBQSxFQUN0RTtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -70,14 +70,6 @@ export declare class AsyncEvents {
|
|
|
70
70
|
* });
|
|
71
71
|
* ```
|
|
72
72
|
*/
|
|
73
|
-
/**
|
|
74
|
-
* Subscribes to an event.
|
|
75
|
-
*
|
|
76
|
-
* @param name - The name of the event.
|
|
77
|
-
* @param callback - The callback.
|
|
78
|
-
* @param thisArg - The `this` context.
|
|
79
|
-
* @returns A reference to the event listener.
|
|
80
|
-
*/
|
|
81
73
|
on<Args extends unknown[]>(name: string, callback: GenericPromisableVoidFunction<Args>, thisArg?: unknown): AsyncEventRef;
|
|
82
74
|
/**
|
|
83
75
|
* Add an event listener that will be triggered only once.
|
|
@@ -95,14 +87,6 @@ export declare class AsyncEvents {
|
|
|
95
87
|
* });
|
|
96
88
|
* ```
|
|
97
89
|
*/
|
|
98
|
-
/**
|
|
99
|
-
* Subscribes to an event once.
|
|
100
|
-
*
|
|
101
|
-
* @param name - The name of the event.
|
|
102
|
-
* @param callback - The callback to call when the event is triggered.
|
|
103
|
-
* @param thisArg - The context passed as `this` to the `callback`.
|
|
104
|
-
* @returns A reference to the event listener.
|
|
105
|
-
*/
|
|
106
90
|
once<Args extends unknown[]>(name: string, callback: GenericPromisableVoidFunction<Args>, thisArg?: unknown): AsyncEventRef;
|
|
107
91
|
/**
|
|
108
92
|
* Trigger an event, executing all the listeners in order even if some of them throw an error.
|
|
@@ -81,14 +81,6 @@ class AsyncEvents {
|
|
|
81
81
|
* });
|
|
82
82
|
* ```
|
|
83
83
|
*/
|
|
84
|
-
/**
|
|
85
|
-
* Subscribes to an event.
|
|
86
|
-
*
|
|
87
|
-
* @param name - The name of the event.
|
|
88
|
-
* @param callback - The callback.
|
|
89
|
-
* @param thisArg - The `this` context.
|
|
90
|
-
* @returns A reference to the event listener.
|
|
91
|
-
*/
|
|
92
84
|
on(name, callback, thisArg) {
|
|
93
85
|
let eventRefs = this.eventRefsMap.get(name);
|
|
94
86
|
if (!eventRefs) {
|
|
@@ -120,14 +112,6 @@ class AsyncEvents {
|
|
|
120
112
|
* });
|
|
121
113
|
* ```
|
|
122
114
|
*/
|
|
123
|
-
/**
|
|
124
|
-
* Subscribes to an event once.
|
|
125
|
-
*
|
|
126
|
-
* @param name - The name of the event.
|
|
127
|
-
* @param callback - The callback to call when the event is triggered.
|
|
128
|
-
* @param thisArg - The context passed as `this` to the `callback`.
|
|
129
|
-
* @returns A reference to the event listener.
|
|
130
|
-
*/
|
|
131
115
|
once(name, callback, thisArg) {
|
|
132
116
|
const originalEventRef = this.on(name, callback, thisArg);
|
|
133
117
|
const cleanupEventRef = this.on(name, () => {
|
|
@@ -181,7 +165,14 @@ class AsyncEvents {
|
|
|
181
165
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- We need to use the dummy parameter to get type inference.
|
|
182
166
|
tryTrigger(eventRef, args) {
|
|
183
167
|
try {
|
|
184
|
-
eventRef.callback.
|
|
168
|
+
const result = eventRef.callback.call(eventRef.thisArg, ...args);
|
|
169
|
+
if (result instanceof Promise) {
|
|
170
|
+
result.catch((e) => {
|
|
171
|
+
window.setTimeout(() => {
|
|
172
|
+
throw e;
|
|
173
|
+
}, 0);
|
|
174
|
+
});
|
|
175
|
+
}
|
|
185
176
|
} catch (e) {
|
|
186
177
|
window.setTimeout(() => {
|
|
187
178
|
throw e;
|
|
@@ -197,8 +188,7 @@ class AsyncEvents {
|
|
|
197
188
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- We need to use the dummy parameter to get type inference.
|
|
198
189
|
async tryTriggerAsync(eventRef, args) {
|
|
199
190
|
try {
|
|
200
|
-
|
|
201
|
-
await result;
|
|
191
|
+
await eventRef.callback.call(eventRef.thisArg, ...args);
|
|
202
192
|
} catch (e) {
|
|
203
193
|
window.setTimeout(() => {
|
|
204
194
|
throw e;
|
|
@@ -209,4 +199,4 @@ class AsyncEvents {
|
|
|
209
199
|
export {
|
|
210
200
|
AsyncEvents
|
|
211
201
|
};
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzeW5jLWV2ZW50cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEFzeW5jIGV2ZW50IGVtaXR0ZXIuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbiB9IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuXG5pbXBvcnQgeyBmaWx0ZXJJblBsYWNlIH0gZnJvbSAnLi9hcnJheS50cyc7XG5cbi8qKlxuICogQXN5bmMgZXZlbnQgcmVmZXJlbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzeW5jRXZlbnRSZWYge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlci5cbiAgICovXG4gIGFzeW5jRXZlbnRzOiBBc3luY0V2ZW50cztcblxuICAvKipcbiAgICogQSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICovXG4gIGNhbGxiYWNrOiBHZW5lcmljQ2FsbGJhY2s7XG5cbiAgLyoqXG4gICAqIEEgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBwYXNzZWQgYXMgYHRoaXNgIHRvIHRoZSBgY2FsbGJhY2tgLlxuICAgKi9cbiAgdGhpc0FyZzogdW5rbm93bjtcbn1cblxudHlwZSBHZW5lcmljQ2FsbGJhY2sgPSBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbjx1bmtub3duW10+O1xuXG4vKipcbiAqIEFzeW5jIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEFzeW5jRXZlbnRzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudFJlZnNNYXAgPSBuZXcgTWFwPHN0cmluZywgQXN5bmNFdmVudFJlZltdPigpO1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gcmVtb3ZlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub2ZmKCdteS1ldmVudCcsIG15TGlzdGVuZXIpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBvZmY8QXJncyBleHRlbmRzIHVua25vd25bXT4obmFtZTogc3RyaW5nLCBjYWxsYmFjazogR2VuZXJpY1Byb21pc2FibGVWb2lkRnVuY3Rpb248QXJncz4pOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFJlZnMgPSB0aGlzLmV2ZW50UmVmc01hcC5nZXQobmFtZSk7XG4gICAgaWYgKCFldmVudFJlZnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmaWx0ZXJJblBsYWNlKGV2ZW50UmVmcywgKGV2ZW50UmVmKSA9PiBldmVudFJlZi5jYWxsYmFjayAhPT0gY2FsbGJhY2spO1xuICAgIGlmIChldmVudFJlZnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmV2ZW50UmVmc01hcC5kZWxldGUobmFtZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lciBieSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFJlZiAtIFRoZSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub2ZmcmVmKG15UmVmKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgb2ZmcmVmKGV2ZW50UmVmOiBBc3luY0V2ZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRSZWZzID0gdGhpcy5ldmVudFJlZnNNYXAuZ2V0KGV2ZW50UmVmLm5hbWUpO1xuICAgIGlmICghZXZlbnRSZWZzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZmlsdGVySW5QbGFjZShldmVudFJlZnMsIChzdG9yZWRFdmVudFJlZikgPT4gc3RvcmVkRXZlbnRSZWYgIT09IGV2ZW50UmVmKTtcbiAgICBpZiAoZXZlbnRSZWZzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5ldmVudFJlZnNNYXAuZGVsZXRlKGV2ZW50UmVmLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub24oJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBhbiBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBjYWxsYmFjayAtIFRoZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHRoaXNBcmcgLSBUaGUgYHRoaXNgIGNvbnRleHQuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIHB1YmxpYyBvbjxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbjxBcmdzPiwgdGhpc0FyZz86IHVua25vd24pOiBBc3luY0V2ZW50UmVmIHtcbiAgICBsZXQgZXZlbnRSZWZzID0gdGhpcy5ldmVudFJlZnNNYXAuZ2V0KG5hbWUpO1xuICAgIGlmICghZXZlbnRSZWZzKSB7XG4gICAgICBldmVudFJlZnMgPSBbXTtcbiAgICAgIHRoaXMuZXZlbnRSZWZzTWFwLnNldChuYW1lLCBldmVudFJlZnMpO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50UmVmOiBBc3luY0V2ZW50UmVmID0ge1xuICAgICAgYXN5bmNFdmVudHM6IHRoaXMsXG4gICAgICBjYWxsYmFjazogY2FsbGJhY2sgYXMgR2VuZXJpY0NhbGxiYWNrLFxuICAgICAgbmFtZSxcbiAgICAgIHRoaXNBcmdcbiAgICB9O1xuICAgIGV2ZW50UmVmcy5wdXNoKGV2ZW50UmVmKTtcbiAgICByZXR1cm4gZXZlbnRSZWY7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IGxpc3RlbmVyIHRoYXQgd2lsbCBiZSB0cmlnZ2VyZWQgb25seSBvbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZyAtIFRoZSBjb250ZXh0IHBhc3NlZCBhcyBgdGhpc2AgdG8gdGhlIGBjYWxsYmFja2AuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogZXZlbnRzLm9uY2UoJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cblxuICAvKipcbiAgICogU3Vic2NyaWJlcyB0byBhbiBldmVudCBvbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrIHRvIGNhbGwgd2hlbiB0aGUgZXZlbnQgaXMgdHJpZ2dlcmVkLlxuICAgKiBAcGFyYW0gdGhpc0FyZyAtIFRoZSBjb250ZXh0IHBhc3NlZCBhcyBgdGhpc2AgdG8gdGhlIGBjYWxsYmFja2AuXG4gICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCBsaXN0ZW5lci5cbiAgICovXG4gIHB1YmxpYyBvbmNlPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEdlbmVyaWNQcm9taXNhYmxlVm9pZEZ1bmN0aW9uPEFyZ3M+LCB0aGlzQXJnPzogdW5rbm93bik6IEFzeW5jRXZlbnRSZWYge1xuICAgIGNvbnN0IG9yaWdpbmFsRXZlbnRSZWYgPSB0aGlzLm9uKG5hbWUsIGNhbGxiYWNrLCB0aGlzQXJnKTtcbiAgICBjb25zdCBjbGVhbnVwRXZlbnRSZWYgPSB0aGlzLm9uKG5hbWUsICgpID0+IHtcbiAgICAgIHRoaXMub2ZmcmVmKG9yaWdpbmFsRXZlbnRSZWYpO1xuICAgICAgdGhpcy5vZmZyZWYoY2xlYW51cEV2ZW50UmVmKTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3JpZ2luYWxFdmVudFJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGFuIGV2ZW50LCBleGVjdXRpbmcgYWxsIHRoZSBsaXN0ZW5lcnMgaW4gb3JkZXIgZXZlbiBpZiBzb21lIG9mIHRoZW0gdGhyb3cgYW4gZXJyb3IuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gYXJncyAtIFRoZSBkYXRhIHRvIHBhc3MgdG8gdGhlIGV2ZW50IGxpc3RlbmVycy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogZXZlbnRzLnRyaWdnZXIoJ215LWV2ZW50JywgJ2FyZzEnLCAnYXJnMicpO1xuICAgKiBgYGBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzIC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBkdW1teSBwYXJhbWV0ZXIgdG8gZ2V0IHR5cGUgaW5mZXJlbmNlLlxuICBwdWJsaWMgdHJpZ2dlcjxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IEFyZ3MpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFJlZnMgPSB0aGlzLmV2ZW50UmVmc01hcC5nZXQobmFtZSkgPz8gW107XG4gICAgZm9yIChjb25zdCBldmVudFJlZiBvZiBldmVudFJlZnMuc2xpY2UoKSkge1xuICAgICAgdGhpcy50cnlUcmlnZ2VyKGV2ZW50UmVmLCBhcmdzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBhbiBldmVudCBhc3luY2hyb25vdXNseSwgZXhlY3V0aW5nIGFsbCB0aGUgbGlzdGVuZXJzIGluIG9yZGVyIGV2ZW4gaWYgc29tZSBvZiB0aGVtIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgZGF0YSB0byBwYXNzIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZHVtbXkgcGFyYW1ldGVyIHRvIGdldCB0eXBlIGluZmVyZW5jZS5cbiAgcHVibGljIGFzeW5jIHRyaWdnZXJBc3luYzxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IEFyZ3MpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBldmVudFJlZnMgPSB0aGlzLmV2ZW50UmVmc01hcC5nZXQobmFtZSkgPz8gW107XG4gICAgZm9yIChjb25zdCBldmVudFJlZiBvZiBldmVudFJlZnMuc2xpY2UoKSkge1xuICAgICAgYXdhaXQgdGhpcy50cnlUcmlnZ2VyQXN5bmMoZXZlbnRSZWYsIGFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gdHJpZ2dlciBhbiBldmVudCwgZXhlY3V0aW5nIGFsbCB0aGUgbGlzdGVuZXJzIGluIG9yZGVyIGV2ZW4gaWYgc29tZSBvZiB0aGVtIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRSZWYgLSBUaGUgZXZlbnQgcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0gYXJncyAtIFRoZSBkYXRhIHRvIHBhc3MgdG8gdGhlIGV2ZW50IGxpc3RlbmVycy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHNcbiAgICogZXZlbnRzLnRyeVRyaWdnZXIobXlSZWYsIFsnYXJnMScsICdhcmcyJ10pO1xuICAgKiBgYGBcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzIC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBkdW1teSBwYXJhbWV0ZXIgdG8gZ2V0IHR5cGUgaW5mZXJlbmNlLlxuICBwdWJsaWMgdHJ5VHJpZ2dlcjxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihldmVudFJlZjogQXN5bmNFdmVudFJlZiwgYXJnczogQXJncyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBldmVudFJlZi5jYWxsYmFjay5hcHBseShldmVudFJlZi50aGlzQXJnLCBhcmdzKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIHRyaWdnZXIgYW4gZXZlbnQgYXN5bmNocm9ub3VzbHksIGV4ZWN1dGluZyBhbGwgdGhlIGxpc3RlbmVycyBpbiBvcmRlciBldmVuIGlmIHNvbWUgb2YgdGhlbSB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50UmVmIC0gVGhlIGV2ZW50IHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgZGF0YSB0byBwYXNzIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMuXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZHVtbXkgcGFyYW1ldGVyIHRvIGdldCB0eXBlIGluZmVyZW5jZS5cbiAgcHVibGljIGFzeW5jIHRyeVRyaWdnZXJBc3luYzxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihldmVudFJlZjogQXN5bmNFdmVudFJlZiwgYXJnczogQXJncyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBldmVudFJlZi5jYWxsYmFjay5jYWxsKGV2ZW50UmVmLnRoaXNBcmcsIC4uLmFyZ3MpO1xuICAgICAgYXdhaXQgKHJlc3VsdCBhcyBQcm9taXNlPHZvaWQ+KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUUEsU0FBUyxxQkFBcUI7QUFnQ3ZCLE1BQU0sWUFBWTtBQUFBLEVB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
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzeW5jLWV2ZW50cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEFzeW5jIGV2ZW50IGVtaXR0ZXIuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbiB9IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuXG5pbXBvcnQgeyBmaWx0ZXJJblBsYWNlIH0gZnJvbSAnLi9hcnJheS50cyc7XG5cbi8qKlxuICogQXN5bmMgZXZlbnQgcmVmZXJlbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzeW5jRXZlbnRSZWYge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlci5cbiAgICovXG4gIGFzeW5jRXZlbnRzOiBBc3luY0V2ZW50cztcblxuICAvKipcbiAgICogQSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIGV2ZW50IGlzIHRyaWdnZXJlZC5cbiAgICovXG4gIGNhbGxiYWNrOiBHZW5lcmljQ2FsbGJhY2s7XG5cbiAgLyoqXG4gICAqIEEgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY29udGV4dCBwYXNzZWQgYXMgYHRoaXNgIHRvIHRoZSBgY2FsbGJhY2tgLlxuICAgKi9cbiAgdGhpc0FyZzogdW5rbm93bjtcbn1cblxudHlwZSBHZW5lcmljQ2FsbGJhY2sgPSBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbjx1bmtub3duW10+O1xuXG4vKipcbiAqIEFzeW5jIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIEFzeW5jRXZlbnRzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudFJlZnNNYXAgPSBuZXcgTWFwPHN0cmluZywgQXN5bmNFdmVudFJlZltdPigpO1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gcmVtb3ZlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub2ZmKCdteS1ldmVudCcsIG15TGlzdGVuZXIpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBvZmY8QXJncyBleHRlbmRzIHVua25vd25bXT4obmFtZTogc3RyaW5nLCBjYWxsYmFjazogR2VuZXJpY1Byb21pc2FibGVWb2lkRnVuY3Rpb248QXJncz4pOiB2b2lkIHtcbiAgICBjb25zdCBldmVudFJlZnMgPSB0aGlzLmV2ZW50UmVmc01hcC5nZXQobmFtZSk7XG4gICAgaWYgKCFldmVudFJlZnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmaWx0ZXJJblBsYWNlKGV2ZW50UmVmcywgKGV2ZW50UmVmKSA9PiBldmVudFJlZi5jYWxsYmFjayAhPT0gY2FsbGJhY2spO1xuICAgIGlmIChldmVudFJlZnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmV2ZW50UmVmc01hcC5kZWxldGUobmFtZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBldmVudCBsaXN0ZW5lciBieSByZWZlcmVuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFJlZiAtIFRoZSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub2ZmcmVmKG15UmVmKTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgb2ZmcmVmKGV2ZW50UmVmOiBBc3luY0V2ZW50UmVmKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRSZWZzID0gdGhpcy5ldmVudFJlZnNNYXAuZ2V0KGV2ZW50UmVmLm5hbWUpO1xuICAgIGlmICghZXZlbnRSZWZzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZmlsdGVySW5QbGFjZShldmVudFJlZnMsIChzdG9yZWRFdmVudFJlZikgPT4gc3RvcmVkRXZlbnRSZWYgIT09IGV2ZW50UmVmKTtcbiAgICBpZiAoZXZlbnRSZWZzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5ldmVudFJlZnNNYXAuZGVsZXRlKGV2ZW50UmVmLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub24oJ215LWV2ZW50JywgYXN5bmMgKGFyZzEsIGFyZzIpID0+IHtcbiAgICogICAgIGF3YWl0IHNsZWVwKDEwMCk7XG4gICAqICAgICBjb25zb2xlLmxvZyhhcmcxLCBhcmcyKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIG9uPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IEdlbmVyaWNQcm9taXNhYmxlVm9pZEZ1bmN0aW9uPEFyZ3M+LCB0aGlzQXJnPzogdW5rbm93bik6IEFzeW5jRXZlbnRSZWYge1xuICAgIGxldCBldmVudFJlZnMgPSB0aGlzLmV2ZW50UmVmc01hcC5nZXQobmFtZSk7XG4gICAgaWYgKCFldmVudFJlZnMpIHtcbiAgICAgIGV2ZW50UmVmcyA9IFtdO1xuICAgICAgdGhpcy5ldmVudFJlZnNNYXAuc2V0KG5hbWUsIGV2ZW50UmVmcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnRSZWY6IEFzeW5jRXZlbnRSZWYgPSB7XG4gICAgICBhc3luY0V2ZW50czogdGhpcyxcbiAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayBhcyBHZW5lcmljQ2FsbGJhY2ssXG4gICAgICBuYW1lLFxuICAgICAgdGhpc0FyZ1xuICAgIH07XG4gICAgZXZlbnRSZWZzLnB1c2goZXZlbnRSZWYpO1xuICAgIHJldHVybiBldmVudFJlZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gZXZlbnQgbGlzdGVuZXIgdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCBvbmx5IG9uY2UuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxuICAgKiBAcGFyYW0gY2FsbGJhY2sgLSBUaGUgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSBldmVudCBpcyB0cmlnZ2VyZWQuXG4gICAqIEBwYXJhbSB0aGlzQXJnIC0gVGhlIGNvbnRleHQgcGFzc2VkIGFzIGB0aGlzYCB0byB0aGUgYGNhbGxiYWNrYC5cbiAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhlIGV2ZW50IGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0c1xuICAgKiBldmVudHMub25jZSgnbXktZXZlbnQnLCBhc3luYyAoYXJnMSwgYXJnMikgPT4ge1xuICAgKiAgICAgYXdhaXQgc2xlZXAoMTAwKTtcbiAgICogICAgIGNvbnNvbGUubG9nKGFyZzEsIGFyZzIpO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgb25jZTxBcmdzIGV4dGVuZHMgdW5rbm93bltdPihuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBHZW5lcmljUHJvbWlzYWJsZVZvaWRGdW5jdGlvbjxBcmdzPiwgdGhpc0FyZz86IHVua25vd24pOiBBc3luY0V2ZW50UmVmIHtcbiAgICBjb25zdCBvcmlnaW5hbEV2ZW50UmVmID0gdGhpcy5vbihuYW1lLCBjYWxsYmFjaywgdGhpc0FyZyk7XG4gICAgY29uc3QgY2xlYW51cEV2ZW50UmVmID0gdGhpcy5vbihuYW1lLCAoKSA9PiB7XG4gICAgICB0aGlzLm9mZnJlZihvcmlnaW5hbEV2ZW50UmVmKTtcbiAgICAgIHRoaXMub2ZmcmVmKGNsZWFudXBFdmVudFJlZik7XG4gICAgfSk7XG4gICAgcmV0dXJuIG9yaWdpbmFsRXZlbnRSZWY7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlciBhbiBldmVudCwgZXhlY3V0aW5nIGFsbCB0aGUgbGlzdGVuZXJzIGluIG9yZGVyIGV2ZW4gaWYgc29tZSBvZiB0aGVtIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgZGF0YSB0byBwYXNzIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIGV2ZW50cy50cmlnZ2VyKCdteS1ldmVudCcsICdhcmcxJywgJ2FyZzInKTtcbiAgICogYGBgXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZHVtbXkgcGFyYW1ldGVyIHRvIGdldCB0eXBlIGluZmVyZW5jZS5cbiAgcHVibGljIHRyaWdnZXI8QXJncyBleHRlbmRzIHVua25vd25bXT4obmFtZTogc3RyaW5nLCAuLi5hcmdzOiBBcmdzKTogdm9pZCB7XG4gICAgY29uc3QgZXZlbnRSZWZzID0gdGhpcy5ldmVudFJlZnNNYXAuZ2V0KG5hbWUpID8/IFtdO1xuICAgIGZvciAoY29uc3QgZXZlbnRSZWYgb2YgZXZlbnRSZWZzLnNsaWNlKCkpIHtcbiAgICAgIHRoaXMudHJ5VHJpZ2dlcihldmVudFJlZiwgYXJncyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgYW4gZXZlbnQgYXN5bmNocm9ub3VzbHksIGV4ZWN1dGluZyBhbGwgdGhlIGxpc3RlbmVycyBpbiBvcmRlciBldmVuIGlmIHNvbWUgb2YgdGhlbSB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXG4gICAqIEBwYXJhbSBhcmdzIC0gVGhlIGRhdGEgdG8gcGFzcyB0byB0aGUgZXZlbnQgbGlzdGVuZXJzLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG4gIHB1YmxpYyBhc3luYyB0cmlnZ2VyQXN5bmM8QXJncyBleHRlbmRzIHVua25vd25bXT4obmFtZTogc3RyaW5nLCAuLi5hcmdzOiBBcmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZXZlbnRSZWZzID0gdGhpcy5ldmVudFJlZnNNYXAuZ2V0KG5hbWUpID8/IFtdO1xuICAgIGZvciAoY29uc3QgZXZlbnRSZWYgb2YgZXZlbnRSZWZzLnNsaWNlKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMudHJ5VHJpZ2dlckFzeW5jKGV2ZW50UmVmLCBhcmdzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIHRyaWdnZXIgYW4gZXZlbnQsIGV4ZWN1dGluZyBhbGwgdGhlIGxpc3RlbmVycyBpbiBvcmRlciBldmVuIGlmIHNvbWUgb2YgdGhlbSB0aHJvdyBhbiBlcnJvci5cbiAgICpcbiAgICogQHBhcmFtIGV2ZW50UmVmIC0gVGhlIGV2ZW50IHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIGFyZ3MgLSBUaGUgZGF0YSB0byBwYXNzIHRvIHRoZSBldmVudCBsaXN0ZW5lcnMuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHRzXG4gICAqIGV2ZW50cy50cnlUcmlnZ2VyKG15UmVmLCBbJ2FyZzEnLCAnYXJnMiddKTtcbiAgICogYGBgXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LXR5cGUtcGFyYW1ldGVycyAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZHVtbXkgcGFyYW1ldGVyIHRvIGdldCB0eXBlIGluZmVyZW5jZS5cbiAgcHVibGljIHRyeVRyaWdnZXI8QXJncyBleHRlbmRzIHVua25vd25bXT4oZXZlbnRSZWY6IEFzeW5jRXZlbnRSZWYsIGFyZ3M6IEFyZ3MpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZXZlbnRSZWYuY2FsbGJhY2suY2FsbChldmVudFJlZi50aGlzQXJnLCAuLi5hcmdzKTtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHJlc3VsdC5jYXRjaCgoZTogdW5rbm93bikgPT4ge1xuICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gdHJpZ2dlciBhbiBldmVudCBhc3luY2hyb25vdXNseSwgZXhlY3V0aW5nIGFsbCB0aGUgbGlzdGVuZXJzIGluIG9yZGVyIGV2ZW4gaWYgc29tZSBvZiB0aGVtIHRocm93IGFuIGVycm9yLlxuICAgKlxuICAgKiBAcGFyYW0gZXZlbnRSZWYgLSBUaGUgZXZlbnQgcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0gYXJncyAtIFRoZSBkYXRhIHRvIHBhc3MgdG8gdGhlIGV2ZW50IGxpc3RlbmVycy5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzIC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBkdW1teSBwYXJhbWV0ZXIgdG8gZ2V0IHR5cGUgaW5mZXJlbmNlLlxuICBwdWJsaWMgYXN5bmMgdHJ5VHJpZ2dlckFzeW5jPEFyZ3MgZXh0ZW5kcyB1bmtub3duW10+KGV2ZW50UmVmOiBBc3luY0V2ZW50UmVmLCBhcmdzOiBBcmdzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV2ZW50UmVmLmNhbGxiYWNrLmNhbGwoZXZlbnRSZWYudGhpc0FyZywgLi4uYXJncyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfSwgMCk7XG4gICAgfVxuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVFBLFNBQVMscUJBQXFCO0FBZ0N2QixNQUFNLFlBQVk7QUFBQSxFQUNOLGVBQWUsb0JBQUksSUFBNkI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFhMUQsSUFBNEIsTUFBYyxVQUFxRDtBQUNwRyxVQUFNLFlBQVksS0FBSyxhQUFhLElBQUksSUFBSTtBQUM1QyxRQUFJLENBQUMsV0FBVztBQUNkO0FBQUEsSUFDRjtBQUVBLGtCQUFjLFdBQVcsQ0FBQyxhQUFhLFNBQVMsYUFBYSxRQUFRO0FBQ3JFLFFBQUksVUFBVSxXQUFXLEdBQUc7QUFDMUIsV0FBSyxhQUFhLE9BQU8sSUFBSTtBQUFBLElBQy9CO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFZTyxPQUFPLFVBQStCO0FBQzNDLFVBQU0sWUFB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
|