obsidian-dev-utils 63.1.0 → 65.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 +24 -0
- package/dist/dev/main.js +33 -27
- package/dist/lib/cjs/library.cjs +1 -1
- package/dist/lib/cjs/obsidian/attachment-path.cjs +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.cjs +11 -11
- package/dist/lib/cjs/obsidian/command-handlers/abstract-file-command-handler.d.cts +9 -9
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.cjs +1 -1
- package/dist/lib/cjs/obsidian/command-handlers/command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.cjs +10 -10
- package/dist/lib/cjs/obsidian/command-handlers/editor-command-handler.d.cts +9 -9
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.cjs +2 -1
- package/dist/lib/cjs/obsidian/command-handlers/file-command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.cjs +2 -1
- package/dist/lib/cjs/obsidian/command-handlers/folder-command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.cjs +2 -1
- package/dist/lib/cjs/obsidian/command-handlers/global-command-handler.d.cts +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.cjs +9 -6
- package/dist/lib/cjs/obsidian/command-handlers/open-settings-command-handler.d.cts +18 -4
- package/dist/lib/cjs/obsidian/components/setting-components/code-highlighter-component.cjs +2 -2
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.cjs +1 -1
- package/dist/lib/cjs/obsidian/constructors/getDomEventsHandlersConstructor.d.cts +1 -1
- package/dist/lib/cjs/obsidian/file-change.cjs +2 -2
- package/dist/lib/cjs/obsidian/file-system.cjs +2 -2
- package/dist/lib/cjs/obsidian/frontmatter-link-cache-with-offsets.cjs +2 -2
- package/dist/lib/cjs/obsidian/link.cjs +2 -2
- package/dist/lib/cjs/obsidian/markdown-code-block-processor.cjs +1 -1
- package/dist/lib/cjs/obsidian/markdown.cjs +2 -2
- package/dist/lib/cjs/obsidian/metadata-cache.cjs +2 -2
- package/dist/lib/cjs/obsidian/metadata-cache.d.cts +1 -1
- package/dist/lib/cjs/obsidian/modals/confirm.cjs +1 -1
- package/dist/lib/cjs/obsidian/modals/confirm.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.cjs +2 -2
- package/dist/lib/cjs/obsidian/plugin/components/plugin-settings-component.d.cts +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin-settings-tab.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin.cjs +1 -1
- package/dist/lib/cjs/obsidian/plugin/plugin.d.cts +4 -3
- package/dist/lib/cjs/obsidian/reference.cjs +2 -2
- package/dist/lib/cjs/obsidian/rename-delete-handler.cjs +2 -2
- package/dist/lib/cjs/obsidian/resource-url.cjs +2 -2
- package/dist/lib/cjs/obsidian/vault.cjs +2 -2
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +1 -1
- package/dist/lib/cjs/script-utils/exec.cjs +1 -1
- package/dist/lib/cjs/script-utils/exec.d.cts +3 -3
- package/dist/lib/cjs/script-utils/formatters/dprint.cjs +1 -1
- package/dist/lib/cjs/script-utils/formatters/dprint.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/cspell.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/cspell.d.cts +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint-config.cjs +3 -1
- package/dist/lib/cjs/script-utils/linters/eslint-config.d.cts +2 -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/params-options-name-match.cjs +277 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/params-options-name-match.d.cts +19 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-members.cjs +172 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/readonly-params-options-members.d.cts +13 -0
- package/dist/lib/cjs/script-utils/linters/eslint-rules/require-super-call.cjs +29 -4
- package/dist/lib/cjs/script-utils/linters/eslint.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/eslint.d.cts +2 -2
- package/dist/lib/cjs/script-utils/linters/markdownlint.cjs +1 -1
- package/dist/lib/cjs/script-utils/linters/markdownlint.d.cts +2 -2
- package/dist/lib/cjs/script-utils/root.cjs +1 -1
- package/dist/lib/cjs/script-utils/test-runners/vitest.cjs +1 -1
- package/dist/lib/cjs/script-utils/test-runners/vitest.d.cts +2 -2
- package/dist/lib/esm/library.mjs +1 -1
- package/dist/lib/esm/obsidian/attachment-path.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.d.mts +9 -9
- package/dist/lib/esm/obsidian/command-handlers/abstract-file-command-handler.mjs +11 -11
- package/dist/lib/esm/obsidian/command-handlers/command-handler.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/command-handler.mjs +1 -1
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.d.mts +9 -9
- package/dist/lib/esm/obsidian/command-handlers/editor-command-handler.mjs +10 -10
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/file-command-handler.mjs +2 -1
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/folder-command-handler.mjs +2 -1
- package/dist/lib/esm/obsidian/command-handlers/global-command-handler.d.mts +2 -2
- package/dist/lib/esm/obsidian/command-handlers/global-command-handler.mjs +2 -1
- package/dist/lib/esm/obsidian/command-handlers/open-settings-command-handler.d.mts +18 -4
- package/dist/lib/esm/obsidian/command-handlers/open-settings-command-handler.mjs +9 -6
- package/dist/lib/esm/obsidian/components/setting-components/code-highlighter-component.mjs +2 -2
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.d.mts +1 -1
- package/dist/lib/esm/obsidian/constructors/getDomEventsHandlersConstructor.mjs +1 -1
- package/dist/lib/esm/obsidian/file-change.mjs +2 -2
- package/dist/lib/esm/obsidian/file-system.mjs +7 -7
- package/dist/lib/esm/obsidian/frontmatter-link-cache-with-offsets.mjs +2 -2
- package/dist/lib/esm/obsidian/link.mjs +2 -2
- package/dist/lib/esm/obsidian/markdown-code-block-processor.mjs +1 -1
- package/dist/lib/esm/obsidian/markdown.mjs +2 -2
- package/dist/lib/esm/obsidian/metadata-cache.d.mts +1 -1
- package/dist/lib/esm/obsidian/metadata-cache.mjs +2 -2
- package/dist/lib/esm/obsidian/modals/confirm.d.mts +1 -1
- package/dist/lib/esm/obsidian/modals/confirm.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.d.mts +1 -1
- package/dist/lib/esm/obsidian/plugin/components/plugin-settings-component.mjs +2 -2
- package/dist/lib/esm/obsidian/plugin/plugin-settings-tab.mjs +1 -1
- package/dist/lib/esm/obsidian/plugin/plugin.d.mts +4 -3
- package/dist/lib/esm/obsidian/plugin/plugin.mjs +1 -1
- package/dist/lib/esm/obsidian/reference.mjs +2 -2
- package/dist/lib/esm/obsidian/rename-delete-handler.mjs +5 -5
- package/dist/lib/esm/obsidian/resource-url.mjs +2 -2
- package/dist/lib/esm/obsidian/vault.mjs +6 -6
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +1 -1
- package/dist/lib/esm/script-utils/exec.d.mts +3 -3
- package/dist/lib/esm/script-utils/exec.mjs +1 -1
- package/dist/lib/esm/script-utils/formatters/dprint.d.mts +2 -2
- package/dist/lib/esm/script-utils/formatters/dprint.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/cspell.d.mts +1 -1
- package/dist/lib/esm/script-utils/linters/cspell.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/eslint-config.d.mts +2 -2
- package/dist/lib/esm/script-utils/linters/eslint-config.mjs +3 -1
- 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/params-options-name-match.d.mts +19 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/params-options-name-match.mjs +168 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-members.d.mts +13 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/readonly-params-options-members.mjs +63 -0
- package/dist/lib/esm/script-utils/linters/eslint-rules/require-super-call.mjs +29 -4
- package/dist/lib/esm/script-utils/linters/eslint.d.mts +2 -2
- package/dist/lib/esm/script-utils/linters/eslint.mjs +1 -1
- package/dist/lib/esm/script-utils/linters/markdownlint.d.mts +2 -2
- package/dist/lib/esm/script-utils/linters/markdownlint.mjs +1 -1
- package/dist/lib/esm/script-utils/root.mjs +1 -1
- package/dist/lib/esm/script-utils/test-runners/vitest.d.mts +2 -2
- package/dist/lib/esm/script-utils/test-runners/vitest.mjs +1 -1
- package/package.json +11 -19
- package/script-utils/linters/eslint-rules/params-options-name-match/package.json +6 -0
- package/script-utils/linters/eslint-rules/readonly-params-options-members/package.json +6 -0
|
@@ -0,0 +1,277 @@
|
|
|
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 params_options_name_match_exports = {};
|
|
127
|
+
__export(params_options_name_match_exports, {
|
|
128
|
+
MESSAGE_ID: () => MESSAGE_ID,
|
|
129
|
+
paramsOptionsNameMatch: () => paramsOptionsNameMatch
|
|
130
|
+
});
|
|
131
|
+
module.exports = __toCommonJS(params_options_name_match_exports);
|
|
132
|
+
const PARAMS_OPTIONS_SUFFIX_PATTERN = /^(?<prefix>.+?)(?<suffix>Params|Options)$/;
|
|
133
|
+
const MESSAGE_ID = "paramsOptionsNameMatch";
|
|
134
|
+
const paramsOptionsNameMatch = {
|
|
135
|
+
create(context) {
|
|
136
|
+
return {
|
|
137
|
+
":function[params.length>0]"(node) {
|
|
138
|
+
if (!isPublicOrExported(node)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
const fnNode = node;
|
|
142
|
+
const expectedPrefix = getExpectedPrefix(node);
|
|
143
|
+
if (!expectedPrefix) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
for (const param of fnNode.params) {
|
|
147
|
+
const typeInfo = getTypeAnnotationInfo(param);
|
|
148
|
+
if (!typeInfo) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const match = PARAMS_OPTIONS_SUFFIX_PATTERN.exec(typeInfo.name);
|
|
152
|
+
if (!match?.groups) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
const actualPrefix = match.groups["prefix"] ?? "";
|
|
156
|
+
const suffix = match.groups["suffix"] ?? "";
|
|
157
|
+
if (actualPrefix !== expectedPrefix) {
|
|
158
|
+
context.report({
|
|
159
|
+
data: {
|
|
160
|
+
actualName: typeInfo.name,
|
|
161
|
+
expectedName: `${expectedPrefix}${suffix}`
|
|
162
|
+
},
|
|
163
|
+
messageId: MESSAGE_ID,
|
|
164
|
+
node: typeInfo.node
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
function isPublicOrExported(node) {
|
|
171
|
+
const methodDef = node.parent;
|
|
172
|
+
if (methodDef?.type === "MethodDefinition") {
|
|
173
|
+
const accessibility = "accessibility" in methodDef ? methodDef.accessibility : void 0;
|
|
174
|
+
if (accessibility === "private") {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
const classBody = methodDef.parent;
|
|
178
|
+
const classNode = classBody?.parent;
|
|
179
|
+
if (!classNode) {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
const classParent = classNode.parent;
|
|
183
|
+
return classParent?.type === "ExportNamedDeclaration" || classParent?.type === "ExportDefaultDeclaration";
|
|
184
|
+
}
|
|
185
|
+
if (node.type === "FunctionDeclaration") {
|
|
186
|
+
const parentNode = node.parent;
|
|
187
|
+
return parentNode?.type === "ExportNamedDeclaration" || parentNode?.type === "ExportDefaultDeclaration";
|
|
188
|
+
}
|
|
189
|
+
if (node.parent?.type === "VariableDeclarator") {
|
|
190
|
+
const varDecl = node.parent.parent;
|
|
191
|
+
if (varDecl?.parent?.type === "ExportNamedDeclaration") {
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
function getExpectedPrefix(node) {
|
|
198
|
+
const methodPrefix = getMethodExpectedPrefix(node);
|
|
199
|
+
if (methodPrefix !== void 0) {
|
|
200
|
+
return methodPrefix;
|
|
201
|
+
}
|
|
202
|
+
return getFunctionExpectedPrefix(node);
|
|
203
|
+
}
|
|
204
|
+
function getMethodExpectedPrefix(node) {
|
|
205
|
+
const methodDef = node.parent;
|
|
206
|
+
if (methodDef?.type !== "MethodDefinition") {
|
|
207
|
+
return void 0;
|
|
208
|
+
}
|
|
209
|
+
if (!("key" in methodDef) || !methodDef.key || typeof methodDef.key !== "object" || !("name" in methodDef.key) || typeof methodDef.key.name !== "string") {
|
|
210
|
+
return void 0;
|
|
211
|
+
}
|
|
212
|
+
const methodName = methodDef.key.name;
|
|
213
|
+
const className = getClassName(methodDef);
|
|
214
|
+
if (!className) {
|
|
215
|
+
return void 0;
|
|
216
|
+
}
|
|
217
|
+
if (methodName === "constructor") {
|
|
218
|
+
return `${className}Constructor`;
|
|
219
|
+
}
|
|
220
|
+
return className + toPascalCase(methodName);
|
|
221
|
+
}
|
|
222
|
+
function getClassName(methodDef) {
|
|
223
|
+
const classBody = methodDef.parent;
|
|
224
|
+
const classNode = classBody?.parent;
|
|
225
|
+
if (!classNode || !("id" in classNode) || !classNode.id || typeof classNode.id !== "object" || !("name" in classNode.id) || typeof classNode.id.name !== "string") {
|
|
226
|
+
return void 0;
|
|
227
|
+
}
|
|
228
|
+
return classNode.id.name;
|
|
229
|
+
}
|
|
230
|
+
function getFunctionExpectedPrefix(node) {
|
|
231
|
+
if ("id" in node && node.id && typeof node.id === "object" && "name" in node.id && typeof node.id.name === "string") {
|
|
232
|
+
return toPascalCase(node.id.name);
|
|
233
|
+
}
|
|
234
|
+
if (node.parent?.type === "VariableDeclarator" && "id" in node.parent && node.parent.id && typeof node.parent.id === "object" && "name" in node.parent.id && typeof node.parent.id.name === "string") {
|
|
235
|
+
return toPascalCase(node.parent.id.name);
|
|
236
|
+
}
|
|
237
|
+
return void 0;
|
|
238
|
+
}
|
|
239
|
+
function getTypeAnnotationInfo(param) {
|
|
240
|
+
if (!("typeAnnotation" in param) || !param.typeAnnotation) {
|
|
241
|
+
return void 0;
|
|
242
|
+
}
|
|
243
|
+
const annotation = param.typeAnnotation;
|
|
244
|
+
const typeNode = annotation["typeAnnotation"];
|
|
245
|
+
if (!typeNode || typeof typeNode !== "object") {
|
|
246
|
+
return void 0;
|
|
247
|
+
}
|
|
248
|
+
const typeNodeObj = typeNode;
|
|
249
|
+
if (typeNodeObj["type"] === "TSTypeReference" && typeNodeObj["typeName"] && typeof typeNodeObj["typeName"] === "object") {
|
|
250
|
+
const typeName = typeNodeObj["typeName"];
|
|
251
|
+
if (typeName["type"] === "Identifier" && typeof typeName["name"] === "string") {
|
|
252
|
+
return { name: typeName["name"], node: typeNode };
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return void 0;
|
|
256
|
+
}
|
|
257
|
+
function toPascalCase(name) {
|
|
258
|
+
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
meta: {
|
|
262
|
+
docs: {
|
|
263
|
+
description: "Require `*Params`/`*Options` type names to match the function or constructor they belong to"
|
|
264
|
+
},
|
|
265
|
+
messages: {
|
|
266
|
+
[MESSAGE_ID]: 'Type "{{ actualName }}" does not match the expected name "{{ expectedName }}" for this function/constructor.'
|
|
267
|
+
},
|
|
268
|
+
schema: [],
|
|
269
|
+
type: "suggestion"
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
273
|
+
0 && (module.exports = {
|
|
274
|
+
MESSAGE_ID,
|
|
275
|
+
paramsOptionsNameMatch
|
|
276
|
+
});
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9wYXJhbXMtb3B0aW9ucy1uYW1lLW1hdGNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHBhcmFtcy1vcHRpb25zLW5hbWUtbWF0Y2hcbiAqXG4gKiBFbnN1cmVzIHRoYXQgcGFyYW1ldGVyLWJhZyB0eXBlIG5hbWVzIG1hdGNoIHRoZSBmdW5jdGlvbiBvciBjb25zdHJ1Y3RvciB0aGV5XG4gKiBiZWxvbmcgdG86XG4gKlxuICogLSBgZm9vQmFyKHBhcmFtczogRm9vQmFyUGFyYW1zKWAgXHUyMDE0IFBhc2NhbENhc2Ugb2YgZnVuY3Rpb24gbmFtZSArIGBQYXJhbXNgXG4gKiAtIGBjbGFzcyBCYXogeyBjb25zdHJ1Y3RvcihwYXJhbXM6IEJhekNvbnN0cnVjdG9yUGFyYW1zKSB9YCBcdTIwMTQgQ2xhc3NOYW1lICsgYENvbnN0cnVjdG9yUGFyYW1zYFxuICogLSBgY2xhc3MgQmF6IHsgbWV0aG9kKHBhcmFtczogQmF6TWV0aG9kUGFyYW1zKSB9YCBcdTIwMTQgQ2xhc3NOYW1lICsgUGFzY2FsQ2FzZShtZXRob2ROYW1lKSArIGBQYXJhbXNgXG4gKlxuICogT25seSBjaGVja3MgcGFyYW1ldGVycyB3aG9zZSB0eXBlIGFubm90YXRpb24gbmFtZSBlbmRzIHdpdGggYFBhcmFtc2Agb3JcbiAqIGBPcHRpb25zYC4gT25seSBjaGVja3MgZXhwb3J0ZWQgZnVuY3Rpb25zIGFuZCBwdWJsaWMvcHJvdGVjdGVkIGNsYXNzIG1lbWJlcnNcbiAqIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcyBmcm9tIGludGVybmFsIG9wdGlvbnMtcGFzc3Rocm91Z2ggaGVscGVycy5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktY29uZGl0aW9uIC0tIFJ1bGUuTm9kZSBwYXJlbnQvcHJvcGVydHkgdHlwZXMgYXJlIHdpZGVyIHRoYW4gd2hhdCB0aGUgdHlwZSBjaGVja2VyIGluZmVyczsgZGVmZW5zaXZlIGNoZWNrcyBhcmUgYXBwcm9wcmlhdGUgZm9yIEFTVCB0cmF2ZXJzYWwuICovXG5cbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmNvbnN0IFBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOID0gL14oPzxwcmVmaXg+Lis/KSg/PHN1ZmZpeD5QYXJhbXN8T3B0aW9ucykkLztcblxuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncGFyYW1zT3B0aW9uc05hbWVNYXRjaCc7XG5cbmludGVyZmFjZSBGdW5jdGlvbk5vZGVXaXRoUGFyYW1zIHtcbiAgcmVhZG9ubHkgcGFyYW1zOiBSdWxlLk5vZGVbXTtcbn1cblxuaW50ZXJmYWNlIFR5cGVBbm5vdGF0aW9uSW5mbyB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbm9kZTogUnVsZS5Ob2RlO1xufVxuXG5leHBvcnQgY29uc3QgcGFyYW1zT3B0aW9uc05hbWVNYXRjaDogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAnOmZ1bmN0aW9uW3BhcmFtcy5sZW5ndGg+MF0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUHVibGljT3JFeHBvcnRlZChub2RlKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZuTm9kZSA9IG5vZGUgYXMgRnVuY3Rpb25Ob2RlV2l0aFBhcmFtcyAmIFJ1bGUuTm9kZTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSBnZXRFeHBlY3RlZFByZWZpeChub2RlKTtcbiAgICAgICAgaWYgKCFleHBlY3RlZFByZWZpeCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgcGFyYW0gb2YgZm5Ob2RlLnBhcmFtcykge1xuICAgICAgICAgIGNvbnN0IHR5cGVJbmZvID0gZ2V0VHlwZUFubm90YXRpb25JbmZvKHBhcmFtKTtcbiAgICAgICAgICBpZiAoIXR5cGVJbmZvKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtYXRjaCA9IFBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOLmV4ZWModHlwZUluZm8ubmFtZSk7XG4gICAgICAgICAgaWYgKCFtYXRjaD8uZ3JvdXBzKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGZhbGxiYWNrOiByZWdleCBuYW1lZCBncm91cHMgYWx3YXlzIGNhcHR1cmUgd2hlbiBtYXRjaCBzdWNjZWVkcy4gKi9cbiAgICAgICAgICBjb25zdCBhY3R1YWxQcmVmaXggPSBtYXRjaC5ncm91cHNbJ3ByZWZpeCddID8/ICcnO1xuICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IG1hdGNoLmdyb3Vwc1snc3VmZml4J10gPz8gJyc7XG4gICAgICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICAgICAgICAgIGlmIChhY3R1YWxQcmVmaXggIT09IGV4cGVjdGVkUHJlZml4KSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBhY3R1YWxOYW1lOiB0eXBlSW5mby5uYW1lLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkTmFtZTogYCR7ZXhwZWN0ZWRQcmVmaXh9JHtzdWZmaXh9YFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSUQsXG4gICAgICAgICAgICAgIG5vZGU6IHR5cGVJbmZvLm5vZGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpc1B1YmxpY09yRXhwb3J0ZWQobm9kZTogUnVsZS5Ob2RlKTogYm9vbGVhbiB7XG4gICAgICAvLyBDbGFzcyBtZXRob2Qgb3IgY29uc3RydWN0b3I6IGNoZWNrIGFjY2Vzc2liaWxpdHkgQU5EIHRoYXQgdGhlIGNsYXNzIGlzIGV4cG9ydGVkXG4gICAgICBjb25zdCBtZXRob2REZWYgPSBub2RlLnBhcmVudDtcbiAgICAgIGlmIChtZXRob2REZWY/LnR5cGUgPT09ICdNZXRob2REZWZpbml0aW9uJykge1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBUeXBlU2NyaXB0IHBhcnNlciBhbHdheXMgaW5jbHVkZXMgYWNjZXNzaWJpbGl0eSBvbiBNZXRob2REZWZpbml0aW9uLiAqL1xuICAgICAgICBjb25zdCBhY2Nlc3NpYmlsaXR5ID0gJ2FjY2Vzc2liaWxpdHknIGluIG1ldGhvZERlZiA/IG1ldGhvZERlZi5hY2Nlc3NpYmlsaXR5IDogdW5kZWZpbmVkO1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICBpZiAoYWNjZXNzaWJpbGl0eSA9PT0gJ3ByaXZhdGUnKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBjbGFzcyBpdHNlbGYgaXMgZXhwb3J0ZWRcbiAgICAgICAgY29uc3QgY2xhc3NCb2R5ID0gbWV0aG9kRGVmLnBhcmVudDtcbiAgICAgICAgY29uc3QgY2xhc3NOb2RlID0gY2xhc3NCb2R5Py5wYXJlbnQ7XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWZlbnNpdmUgZ3VhcmQ6IEVTTGludCBBU1QgYWx3YXlzIGhhcyBwYXJlbnQgY2hhaW4gZm9yIGNsYXNzIG1ldGhvZHMuICovXG4gICAgICAgIGlmICghY2xhc3NOb2RlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIGNvbnN0IGNsYXNzUGFyZW50ID0gY2xhc3NOb2RlLnBhcmVudDtcbiAgICAgICAgcmV0dXJuIGNsYXNzUGFyZW50Py50eXBlID09PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicgfHwgY2xhc3NQYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nO1xuICAgICAgfVxuXG4gICAgICAvLyBUb3AtbGV2ZWwgZnVuY3Rpb246IGNoZWNrIGlmIGV4cG9ydGVkXG4gICAgICBpZiAobm9kZS50eXBlID09PSAnRnVuY3Rpb25EZWNsYXJhdGlvbicpIHtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50O1xuICAgICAgICByZXR1cm4gcGFyZW50Tm9kZT8udHlwZSA9PT0gJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nIHx8IHBhcmVudE5vZGU/LnR5cGUgPT09ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nO1xuICAgICAgfVxuXG4gICAgICAvLyBBcnJvdyBmdW5jdGlvbiBpbiB2YXJpYWJsZTogY2hlY2sgaWYgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGlzIGV4cG9ydGVkXG4gICAgICBpZiAobm9kZS5wYXJlbnQ/LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InKSB7XG4gICAgICAgIGNvbnN0IHZhckRlY2wgPSBub2RlLnBhcmVudC5wYXJlbnQ7XG4gICAgICAgIGlmICh2YXJEZWNsPy5wYXJlbnQ/LnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRFeHBlY3RlZFByZWZpeChub2RlOiBSdWxlLk5vZGUpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgY29uc3QgbWV0aG9kUHJlZml4ID0gZ2V0TWV0aG9kRXhwZWN0ZWRQcmVmaXgobm9kZSk7XG4gICAgICBpZiAobWV0aG9kUHJlZml4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG1ldGhvZFByZWZpeDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGdldEZ1bmN0aW9uRXhwZWN0ZWRQcmVmaXgobm9kZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TWV0aG9kRXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIGNvbnN0IG1ldGhvZERlZiA9IG5vZGUucGFyZW50O1xuICAgICAgaWYgKG1ldGhvZERlZj8udHlwZSAhPT0gJ01ldGhvZERlZmluaXRpb24nKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBEZWZlbnNpdmUgZ3VhcmQ6IEVTTGludCBBU1QgTWV0aG9kRGVmaW5pdGlvbiBhbHdheXMgaGFzIGEgbmFtZWQga2V5LiAqL1xuICAgICAgaWYgKFxuICAgICAgICAhKCdrZXknIGluIG1ldGhvZERlZikgfHwgIW1ldGhvZERlZi5rZXkgfHwgdHlwZW9mIG1ldGhvZERlZi5rZXkgIT09ICdvYmplY3QnIHx8ICEoJ25hbWUnIGluIG1ldGhvZERlZi5rZXkpIHx8IHR5cGVvZiBtZXRob2REZWYua2V5Lm5hbWUgIT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBtZXRob2REZWYua2V5Lm5hbWU7XG4gICAgICBjb25zdCBjbGFzc05hbWUgPSBnZXRDbGFzc05hbWUobWV0aG9kRGVmKTtcbiAgICAgIGlmICghY2xhc3NOYW1lKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRob2ROYW1lID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHJldHVybiBgJHtjbGFzc05hbWV9Q29uc3RydWN0b3JgO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2xhc3NOYW1lICsgdG9QYXNjYWxDYXNlKG1ldGhvZE5hbWUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENsYXNzTmFtZShtZXRob2REZWY6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICBjb25zdCBjbGFzc0JvZHkgPSBtZXRob2REZWYucGFyZW50O1xuICAgICAgY29uc3QgY2xhc3NOb2RlID0gY2xhc3NCb2R5Py5wYXJlbnQ7XG4gICAgICBpZiAoXG4gICAgICAgICFjbGFzc05vZGUgfHwgISgnaWQnIGluIGNsYXNzTm9kZSkgfHwgIWNsYXNzTm9kZS5pZCB8fCB0eXBlb2YgY2xhc3NOb2RlLmlkICE9PSAnb2JqZWN0JyB8fCAhKCduYW1lJyBpbiBjbGFzc05vZGUuaWQpXG4gICAgICAgIHx8IHR5cGVvZiBjbGFzc05vZGUuaWQubmFtZSAhPT0gJ3N0cmluZydcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNsYXNzTm9kZS5pZC5uYW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEZ1bmN0aW9uRXhwZWN0ZWRQcmVmaXgobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgIC8vIE5hbWVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uOiBmdW5jdGlvbiBmb29CYXIocGFyYW1zOiBGb29CYXJQYXJhbXMpXG4gICAgICBpZiAoJ2lkJyBpbiBub2RlICYmIG5vZGUuaWQgJiYgdHlwZW9mIG5vZGUuaWQgPT09ICdvYmplY3QnICYmICduYW1lJyBpbiBub2RlLmlkICYmIHR5cGVvZiBub2RlLmlkLm5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0b1Bhc2NhbENhc2Uobm9kZS5pZC5uYW1lKTtcbiAgICAgIH1cblxuICAgICAgLy8gQXJyb3cgZnVuY3Rpb24gYXNzaWduZWQgdG8gYSB2YXJpYWJsZTogY29uc3QgZm9vQmFyID0gKHBhcmFtczogRm9vQmFyUGFyYW1zKSA9PiAuLi5cbiAgICAgIGlmIChcbiAgICAgICAgbm9kZS5wYXJlbnQ/LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InICYmICdpZCcgaW4gbm9kZS5wYXJlbnQgJiYgbm9kZS5wYXJlbnQuaWQgJiYgdHlwZW9mIG5vZGUucGFyZW50LmlkID09PSAnb2JqZWN0JyAmJiAnbmFtZScgaW4gbm9kZS5wYXJlbnQuaWRcbiAgICAgICAgJiYgdHlwZW9mIG5vZGUucGFyZW50LmlkLm5hbWUgPT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRvUGFzY2FsQ2FzZShub2RlLnBhcmVudC5pZC5uYW1lKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUeXBlQW5ub3RhdGlvbkluZm8ocGFyYW06IFJ1bGUuTm9kZSk6IFR5cGVBbm5vdGF0aW9uSW5mbyB8IHVuZGVmaW5lZCB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRGVmZW5zaXZlIGd1YXJkOiBUeXBlU2NyaXB0LXBhcnNlZCBwYXJhbXMgYWx3YXlzIGhhdmUgdHlwZUFubm90YXRpb24gd2hlbiB0eXBlZC4gKi9cbiAgICAgIGlmICghKCd0eXBlQW5ub3RhdGlvbicgaW4gcGFyYW0pIHx8ICFwYXJhbS50eXBlQW5ub3RhdGlvbikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cblxuICAgICAgY29uc3QgYW5ub3RhdGlvbiA9IHBhcmFtLnR5cGVBbm5vdGF0aW9uIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3QgdHlwZU5vZGUgPSBhbm5vdGF0aW9uWyd0eXBlQW5ub3RhdGlvbiddO1xuICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogdGhlIFR5cGVTY3JpcHQgcGFyc2VyIGFsd2F5cyBwcm9kdWNlcyBhbiBBU1Qgbm9kZSBmb3IgdHlwZUFubm90YXRpb24uICovXG4gICAgICBpZiAoIXR5cGVOb2RlIHx8IHR5cGVvZiB0eXBlTm9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG5cbiAgICAgIGNvbnN0IHR5cGVOb2RlT2JqID0gdHlwZU5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICAgIC8vIERpcmVjdCByZWZlcmVuY2U6IEZvb0JhclBhcmFtc1xuICAgICAgaWYgKHR5cGVOb2RlT2JqWyd0eXBlJ10gPT09ICdUU1R5cGVSZWZlcmVuY2UnICYmIHR5cGVOb2RlT2JqWyd0eXBlTmFtZSddICYmIHR5cGVvZiB0eXBlTm9kZU9ialsndHlwZU5hbWUnXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlTm9kZU9ialsndHlwZU5hbWUnXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIERlZmVuc2l2ZSBndWFyZDogVFNUeXBlUmVmZXJlbmNlIHR5cGVOYW1lIGlzIGFsd2F5cyBhbiBJZGVudGlmaWVyIHdpdGggYSBzdHJpbmcgbmFtZS4gKi9cbiAgICAgICAgaWYgKHR5cGVOYW1lWyd0eXBlJ10gPT09ICdJZGVudGlmaWVyJyAmJiB0eXBlb2YgdHlwZU5hbWVbJ25hbWUnXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICAgIHJldHVybiB7IG5hbWU6IHR5cGVOYW1lWyduYW1lJ10sIG5vZGU6IHR5cGVOb2RlIGFzIFJ1bGUuTm9kZSB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9QYXNjYWxDYXNlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICByZXR1cm4gbmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoMSk7XG4gICAgfVxuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGAqUGFyYW1zYC9gKk9wdGlvbnNgIHR5cGUgbmFtZXMgdG8gbWF0Y2ggdGhlIGZ1bmN0aW9uIG9yIGNvbnN0cnVjdG9yIHRoZXkgYmVsb25nIHRvJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1R5cGUgXCJ7eyBhY3R1YWxOYW1lIH19XCIgZG9lcyBub3QgbWF0Y2ggdGhlIGV4cGVjdGVkIG5hbWUgXCJ7eyBleHBlY3RlZE5hbWUgfX1cIiBmb3IgdGhpcyBmdW5jdGlvbi9jb25zdHJ1Y3Rvci4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS1jb25kaXRpb24gLS0gUmUtZW5hYmxlIGFmdGVyIEFTVCB0cmF2ZXJzYWwgY29kZS4gKi9cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUJBLE1BQU0sZ0NBQWdDO0FBRS9CLE1BQU0sYUFBYTtBQVduQixNQUFNLHlCQUEwQztBQUFBLEVBQ3JELE9BQU8sU0FBUztBQUNkLFdBQU87QUFBQSxNQUNM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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* ESLint rule: params-options-name-match
|
|
5
|
+
*
|
|
6
|
+
* Ensures that parameter-bag type names match the function or constructor they
|
|
7
|
+
* belong to:
|
|
8
|
+
*
|
|
9
|
+
* - `fooBar(params: FooBarParams)` — PascalCase of function name + `Params`
|
|
10
|
+
* - `class Baz { constructor(params: BazConstructorParams) }` — ClassName + `ConstructorParams`
|
|
11
|
+
* - `class Baz { method(params: BazMethodParams) }` — ClassName + PascalCase(methodName) + `Params`
|
|
12
|
+
*
|
|
13
|
+
* Only checks parameters whose type annotation name ends with `Params` or
|
|
14
|
+
* `Options`. Only checks exported functions and public/protected class members
|
|
15
|
+
* to avoid false positives from internal options-passthrough helpers.
|
|
16
|
+
*/
|
|
17
|
+
import type { Rule } from 'eslint';
|
|
18
|
+
export declare const MESSAGE_ID = "paramsOptionsNameMatch";
|
|
19
|
+
export declare const paramsOptionsNameMatch: Rule.RuleModule;
|
|
@@ -0,0 +1,172 @@
|
|
|
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 readonly_params_options_members_exports = {};
|
|
127
|
+
__export(readonly_params_options_members_exports, {
|
|
128
|
+
MESSAGE_ID: () => MESSAGE_ID,
|
|
129
|
+
readonlyParamsOptionsMembers: () => readonlyParamsOptionsMembers
|
|
130
|
+
});
|
|
131
|
+
module.exports = __toCommonJS(readonly_params_options_members_exports);
|
|
132
|
+
var import_type_guards = require('../../../type-guards.cjs');
|
|
133
|
+
const MESSAGE_ID = "readonlyParamsOptionsMembers";
|
|
134
|
+
const readonlyParamsOptionsMembers = {
|
|
135
|
+
create(context) {
|
|
136
|
+
return {
|
|
137
|
+
"TSInterfaceDeclaration[id.name=/(?:Params|Options)$/] TSPropertySignature[readonly=false]"(node) {
|
|
138
|
+
reportNonReadonly(context, node);
|
|
139
|
+
},
|
|
140
|
+
"TSTypeAliasDeclaration[id.name=/(?:Params|Options)$/] TSPropertySignature[readonly=false]"(node) {
|
|
141
|
+
reportNonReadonly(context, node);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
function reportNonReadonly(ctx, node) {
|
|
145
|
+
const propertyNode = node;
|
|
146
|
+
ctx.report({
|
|
147
|
+
fix(fixer) {
|
|
148
|
+
return fixer.insertTextBefore((0, import_type_guards.ensureNonNullable)(propertyNode.key), "readonly ");
|
|
149
|
+
},
|
|
150
|
+
messageId: MESSAGE_ID,
|
|
151
|
+
node
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
meta: {
|
|
156
|
+
docs: {
|
|
157
|
+
description: "Require all properties in `*Params` and `*Options` interfaces to be `readonly`"
|
|
158
|
+
},
|
|
159
|
+
fixable: "code",
|
|
160
|
+
messages: {
|
|
161
|
+
[MESSAGE_ID]: "Property must be `readonly`. Params/Options interfaces should be immutable."
|
|
162
|
+
},
|
|
163
|
+
schema: [],
|
|
164
|
+
type: "suggestion"
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
168
|
+
0 && (module.exports = {
|
|
169
|
+
MESSAGE_ID,
|
|
170
|
+
readonlyParamsOptionsMembers
|
|
171
|
+
});
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZWFkb25seS1wYXJhbXMtb3B0aW9ucy1tZW1iZXJzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlYWRvbmx5LXBhcmFtcy1vcHRpb25zLW1lbWJlcnNcbiAqXG4gKiBSZXBvcnRzIGFuIGVycm9yIHdoZW4gYW4gaW50ZXJmYWNlIG9yIHR5cGUgYWxpYXMgd2hvc2UgbmFtZSBlbmRzIHdpdGhcbiAqIGBQYXJhbXNgIG9yIGBPcHRpb25zYCBoYXMgYSBwcm9wZXJ0eSBzaWduYXR1cmUgdGhhdCBpcyBub3QgYHJlYWRvbmx5YC5cbiAqIFBhcmFtZXRlci9vcHRpb25zIGJhZ3Mgc2hvdWxkIGJlIGltbXV0YWJsZSBcdTIwMTQgY2FsbGVycyBzaG91bGQgbmV2ZXIgbXV0YXRlXG4gKiB0aGUgb2JqZWN0IHRoZXkgcmVjZWl2ZWQuXG4gKi9cbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdyZWFkb25seVBhcmFtc09wdGlvbnNNZW1iZXJzJztcblxuaW50ZXJmYWNlIFByb3BlcnR5U2lnbmF0dXJlTm9kZSB7XG4gIHJlYWRvbmx5IGtleTogUnVsZS5Ob2RlO1xufVxuXG5leHBvcnQgY29uc3QgcmVhZG9ubHlQYXJhbXNPcHRpb25zTWVtYmVyczogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICAnVFNJbnRlcmZhY2VEZWNsYXJhdGlvbltpZC5uYW1lPS8oPzpQYXJhbXN8T3B0aW9ucykkL10gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH0sXG4gICAgICAnVFNUeXBlQWxpYXNEZWNsYXJhdGlvbltpZC5uYW1lPS8oPzpQYXJhbXN8T3B0aW9ucykkL10gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcmVwb3J0Tm9uUmVhZG9ubHkoY3R4OiBSdWxlLlJ1bGVDb250ZXh0LCBub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5Tm9kZSA9IG5vZGUgYXMgUGFydGlhbDxQcm9wZXJ0eVNpZ25hdHVyZU5vZGU+O1xuICAgICAgY3R4LnJlcG9ydCh7XG4gICAgICAgIGZpeChmaXhlcikge1xuICAgICAgICAgIHJldHVybiBmaXhlci5pbnNlcnRUZXh0QmVmb3JlKGVuc3VyZU5vbk51bGxhYmxlKHByb3BlcnR5Tm9kZS5rZXkpLCAncmVhZG9ubHkgJyk7XG4gICAgICAgIH0sXG4gICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgbm9kZVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGFsbCBwcm9wZXJ0aWVzIGluIGAqUGFyYW1zYCBhbmQgYCpPcHRpb25zYCBpbnRlcmZhY2VzIHRvIGJlIGByZWFkb25seWAnXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ1Byb3BlcnR5IG11c3QgYmUgYHJlYWRvbmx5YC4gUGFyYW1zL09wdGlvbnMgaW50ZXJmYWNlcyBzaG91bGQgYmUgaW1tdXRhYmxlLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nXG4gIH1cbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVlBLHlCQUFrQztBQUUzQixNQUFNLGFBQWE7QUFNbkIsTUFBTSwrQkFBZ0Q7QUFBQSxFQUMzRCxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCw0RkFBNEYsTUFBdUI7QUFDakgsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsTUFDQSw0RkFBNEYsTUFBdUI7QUFDakgsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsSUFDRjtBQUVBLGFBQVMsa0JBQWtCLEtBQXVCLE1BQXVCO0FBQ3ZFLFlBQU0sZUFBZTtBQUNyQixVQUFJLE9BQU87QUFBQSxRQUNULElBQUksT0FBTztBQUNULGlCQUFPLE1BQU0scUJBQWlCLHNDQUFrQixhQUFhLEdBQUcsR0FBRyxXQUFXO0FBQUEsUUFDaEY7QUFBQSxRQUNBLFdBQVc7QUFBQSxRQUNYO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file
|
|
3
|
+
*
|
|
4
|
+
* ESLint rule: readonly-params-options-members
|
|
5
|
+
*
|
|
6
|
+
* Reports an error when an interface or type alias whose name ends with
|
|
7
|
+
* `Params` or `Options` has a property signature that is not `readonly`.
|
|
8
|
+
* Parameter/options bags should be immutable — callers should never mutate
|
|
9
|
+
* the object they received.
|
|
10
|
+
*/
|
|
11
|
+
import type { Rule } from 'eslint';
|
|
12
|
+
export declare const MESSAGE_ID = "readonlyParamsOptionsMembers";
|
|
13
|
+
export declare const readonlyParamsOptionsMembers: Rule.RuleModule;
|
|
@@ -138,9 +138,19 @@ const requireSuperCall = {
|
|
|
138
138
|
const checker = services.program.getTypeChecker();
|
|
139
139
|
const methodStack = [];
|
|
140
140
|
return {
|
|
141
|
+
"AssignmentExpression"(node) {
|
|
142
|
+
const current = methodStack[methodStack.length - 1];
|
|
143
|
+
if (current?.kind !== "set") {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const assignNode = node;
|
|
147
|
+
if (checkIsSuperPropertyAccess(assignNode.left, current.methodName)) {
|
|
148
|
+
current.hasSuperCall = true;
|
|
149
|
+
}
|
|
150
|
+
},
|
|
141
151
|
"CallExpression"(node) {
|
|
142
152
|
const current = methodStack[methodStack.length - 1];
|
|
143
|
-
if (
|
|
153
|
+
if (current?.kind !== "method") {
|
|
144
154
|
return;
|
|
145
155
|
}
|
|
146
156
|
const callNode = node;
|
|
@@ -148,6 +158,16 @@ const requireSuperCall = {
|
|
|
148
158
|
current.hasSuperCall = true;
|
|
149
159
|
}
|
|
150
160
|
},
|
|
161
|
+
"MemberExpression"(node) {
|
|
162
|
+
const current = methodStack[methodStack.length - 1];
|
|
163
|
+
if (current?.kind !== "get") {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
const memberNode = node;
|
|
167
|
+
if (checkIsSuperPropertyAccess(memberNode, current.methodName)) {
|
|
168
|
+
current.hasSuperCall = true;
|
|
169
|
+
}
|
|
170
|
+
},
|
|
151
171
|
"MethodDefinition"(node) {
|
|
152
172
|
const methodNode = node;
|
|
153
173
|
if (!methodNode.override) {
|
|
@@ -156,8 +176,10 @@ const requireSuperCall = {
|
|
|
156
176
|
if (methodNode.key.type !== "Identifier") {
|
|
157
177
|
return;
|
|
158
178
|
}
|
|
179
|
+
const kind = methodNode.kind === "get" || methodNode.kind === "set" ? methodNode.kind : "method";
|
|
159
180
|
methodStack.push({
|
|
160
181
|
hasSuperCall: false,
|
|
182
|
+
kind,
|
|
161
183
|
methodName: methodNode.key.name,
|
|
162
184
|
node: methodNode,
|
|
163
185
|
reportNode: node
|
|
@@ -176,7 +198,7 @@ const requireSuperCall = {
|
|
|
176
198
|
return;
|
|
177
199
|
}
|
|
178
200
|
context.report({
|
|
179
|
-
data: { methodName: info.methodName },
|
|
201
|
+
data: { kind: info.kind, methodName: info.methodName },
|
|
180
202
|
messageId: MESSAGE_ID,
|
|
181
203
|
node: info.reportNode
|
|
182
204
|
});
|
|
@@ -188,7 +210,7 @@ const requireSuperCall = {
|
|
|
188
210
|
description: "Require `override` methods to call `super.methodName()`"
|
|
189
211
|
},
|
|
190
212
|
messages: {
|
|
191
|
-
[MESSAGE_ID]: "Override
|
|
213
|
+
[MESSAGE_ID]: "Override {{ kind }} `{{ methodName }}` must access `super.{{ methodName }}`."
|
|
192
214
|
},
|
|
193
215
|
schema: [],
|
|
194
216
|
type: "problem"
|
|
@@ -228,9 +250,12 @@ function checkIsSuperMethodCall(node, methodName) {
|
|
|
228
250
|
const callee = node.callee;
|
|
229
251
|
return callee.type === "MemberExpression" && callee.object.type === "Super" && callee.property.type === "Identifier" && callee.property.name === methodName;
|
|
230
252
|
}
|
|
253
|
+
function checkIsSuperPropertyAccess(node, propertyName) {
|
|
254
|
+
return node.type === "MemberExpression" && node.object.type === "Super" && node.property.type === "Identifier" && node.property.name === propertyName;
|
|
255
|
+
}
|
|
231
256
|
// Annotate the CommonJS export names for ESM import in node:
|
|
232
257
|
0 && (module.exports = {
|
|
233
258
|
MESSAGE_ID,
|
|
234
259
|
requireSuperCall
|
|
235
260
|
});
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLXN1cGVyLWNhbGwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcmVxdWlyZS1zdXBlci1jYWxsXG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGFuIGBvdmVycmlkZWAgbWV0aG9kIGRvZXMgbm90IGNhbGwgYHN1cGVyLm1ldGhvZE5hbWUoKWBcbiAqIGFueXdoZXJlIGluIGl0cyBib2R5LiBPdmVycmlkaW5nIGEgbWV0aG9kIHdpdGhvdXQgY2FsbGluZyBgc3VwZXJgIGlzIGFsbW9zdFxuICogYWx3YXlzIGEgbWlzdGFrZSB0aGF0IHNpbGVudGx5IGJyZWFrcyBwYXJlbnQtY2xhc3MgYmVoYXZpb3IgKGxpZmVjeWNsZSBob29rcyxcbiAqIGluaXRpYWxpemF0aW9uLCBldmVudCB3aXJpbmcsIGV0Yy4pLlxuICpcbiAqIFRoZSBzdXBlciBjYWxsIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIG1ldGhvZCBib2R5IFx1MjAxNCBhcyBhIHN0YW5kYWxvbmVcbiAqIHN0YXRlbWVudCwgYXdhaXRlZCwgYXNzaWduZWQgdG8gYSB2YXJpYWJsZSwgb3IgbmVzdGVkIGluIGFueSBleHByZXNzaW9uLlxuICpcbiAqIFRoZSBydWxlIGF1dG9tYXRpY2FsbHkgc2tpcHMgbWV0aG9kcyB3aGVyZSB0aGUgcGFyZW50IGltcGxlbWVudGF0aW9uIGlzXG4gKiBgYWJzdHJhY3RgLCBzaW5jZSB0aGVyZSBpcyBubyBjb25jcmV0ZSBgc3VwZXJgIHRvIGNhbGwuXG4gKlxuICogSWYgdGhlIG92ZXJyaWRlIGludGVudGlvbmFsbHkgcmVwbGFjZXMgdGhlIHBhcmVudCBpbXBsZW1lbnRhdGlvbiwgZGlzYWJsZSB0aGVcbiAqIHJ1bGUgb24gdGhhdCBsaW5lIHdpdGggYW4gZXhwbGFuYXRvcnkgY29tbWVudC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24sXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUge1xuICBEZWNsYXJhdGlvbixcbiAgVHlwZUNoZWNrZXJcbn0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7XG4gIGNhbkhhdmVNb2RpZmllcnMsXG4gIGdldE1vZGlmaWVycyxcbiAgU3ludGF4S2luZFxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdyZXF1aXJlU3VwZXJDYWxsJztcblxuaW50ZXJmYWNlIE92ZXJyaWRlTWV0aG9kSW5mbyB7XG4gIGhhc1N1cGVyQ2FsbDogYm9vbGVhbjtcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBub2RlOiBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuICByZXBvcnROb2RlOiBSdWxlLk5vZGU7XG59XG5cbmV4cG9ydCBjb25zdCByZXF1aXJlU3VwZXJDYWxsOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgY29uc3Qgc2VydmljZXMgPSBjb250ZXh0LnNvdXJjZUNvZGUucGFyc2VyU2VydmljZXMgYXMgUGFyc2VyU2VydmljZXNXaXRoVHlwZUluZm9ybWF0aW9uO1xuICAgIGNvbnN0IGNoZWNrZXIgPSBzZXJ2aWNlcy5wcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gICAgY29uc3QgbWV0aG9kU3RhY2s6IE92ZXJyaWRlTWV0aG9kSW5mb1tdID0gW107XG5cbiAgICByZXR1cm4ge1xuICAgICAgJ0NhbGxFeHByZXNzaW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IG1ldGhvZFN0YWNrW21ldGhvZFN0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYWxsTm9kZSA9IG5vZGUgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG4gICAgICAgIGlmIChjaGVja0lzU3VwZXJNZXRob2RDYWxsKGNhbGxOb2RlLCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ01ldGhvZERlZmluaXRpb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXRob2ROb2RlID0gbm9kZSBhcyBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuXG4gICAgICAgIGlmICghbWV0aG9kTm9kZS5vdmVycmlkZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuXG4gICAgICAgIGlmIChtZXRob2ROb2RlLmtleS50eXBlICE9PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBtZXRob2RTdGFjay5wdXNoKHtcbiAgICAgICAgICBoYXNTdXBlckNhbGw6IGZhbHNlLFxuICAgICAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5vZGUua2V5Lm5hbWUsXG4gICAgICAgICAgbm9kZTogbWV0aG9kTm9kZSxcbiAgICAgICAgICByZXBvcnROb2RlOiBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgICdNZXRob2REZWZpbml0aW9uOmV4aXQnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmZvID0gbWV0aG9kU3RhY2tbbWV0aG9kU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGhvZFN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGlmIChpbmZvLmhhc1N1cGVyQ2FsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGVja0lzUGFyZW50TWV0aG9kQWJzdHJhY3Qoc2VydmljZXMsIGNoZWNrZXIsIGluZm8ubm9kZSwgaW5mby5tZXRob2ROYW1lKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBkYXRhOiB7IG1ldGhvZE5hbWU6IGluZm8ubWV0aG9kTmFtZSB9LFxuICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICBub2RlOiBpbmZvLnJlcG9ydE5vZGVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUmVxdWlyZSBgb3ZlcnJpZGVgIG1ldGhvZHMgdG8gY2FsbCBgc3VwZXIubWV0aG9kTmFtZSgpYCdcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdPdmVycmlkZSBtZXRob2QgYHt7IG1ldGhvZE5hbWUgfX1gIG11c3QgY2FsbCBgc3VwZXIue3sgbWV0aG9kTmFtZSB9fSgpYC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaGFzIHRoZSBgYWJzdHJhY3RgIG1vZGlmaWVyLlxuICpcbiAqIEBwYXJhbSBkZWNsIC0gVGhlIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZGVjbGFyYXRpb24gaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNBYnN0cmFjdChkZWNsOiBEZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICBhc3NlcnQoY2FuSGF2ZU1vZGlmaWVycyhkZWNsKSwgJ0V4cGVjdGVkIG1ldGhvZCBkZWNsYXJhdGlvbiB0byBzdXBwb3J0IG1vZGlmaWVycycpO1xuXG4gIGNvbnN0IG1vZGlmaWVycyA9IGdldE1vZGlmaWVycyhkZWNsKTtcbiAgcmV0dXJuIG1vZGlmaWVycz8uc29tZSgobW9kKSA9PiBtb2Qua2luZCA9PT0gU3ludGF4S2luZC5BYnN0cmFjdEtleXdvcmQpID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwYXJlbnQgY2xhc3MncyB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaXMgYGFic3RyYWN0YC5cbiAqXG4gKiBAcGFyYW0gc2VydmljZXMgLSBUaGUgcGFyc2VyIHNlcnZpY2VzIHdpdGggdHlwZSBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBjaGVja2VyIC0gVGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHBhcmFtIG1ldGhvZE5vZGUgLSBUaGUgb3ZlcnJpZGUgbWV0aG9kIGRlZmluaXRpb24gQVNUIG5vZGUuXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBsb29rIHVwIGluIHRoZSBwYXJlbnQgY2xhc3MuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhcmVudCBtZXRob2QgaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNQYXJlbnRNZXRob2RBYnN0cmFjdChcbiAgc2VydmljZXM6IFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgY2hlY2tlcjogVHlwZUNoZWNrZXIsXG4gIG1ldGhvZE5vZGU6IFRTRVNUcmVlLk1ldGhvZERlZmluaXRpb24sXG4gIG1ldGhvZE5hbWU6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNsYXNzRGVjbCA9IG1ldGhvZE5vZGUucGFyZW50LnBhcmVudDtcbiAgY29uc3QgdHNDbGFzc05vZGUgPSBzZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KGNsYXNzRGVjbCk7XG4gIGNvbnN0IGNsYXNzVHlwZSA9IGNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNDbGFzc05vZGUpO1xuICBjb25zdCBiYXNlVHlwZXMgPSBjbGFzc1R5cGUuZ2V0QmFzZVR5cGVzKCk7XG5cbiAgaWYgKCFiYXNlVHlwZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IGJhc2VUeXBlIG9mIGJhc2VUeXBlcykge1xuICAgIGNvbnN0IHByb3AgPSBiYXNlVHlwZS5nZXRQcm9wZXJ0eShtZXRob2ROYW1lKTtcblxuICAgIGlmICghcHJvcCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zID0gcHJvcC5nZXREZWNsYXJhdGlvbnMoKTtcblxuICAgIGlmICghZGVjbGFyYXRpb25zKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlY2wgb2YgZGVjbGFyYXRpb25zKSB7XG4gICAgICBpZiAoY2hlY2tJc0Fic3RyYWN0KGRlY2wpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgc3VwZXIubWV0aG9kTmFtZSguLi4pYC5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBjYWxsIGV4cHJlc3Npb24gbm9kZS5cbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIGV4cGVjdGVkIG1ldGhvZCBuYW1lLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGEgbWF0Y2hpbmcgc3VwZXIgbWV0aG9kIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNTdXBlck1ldGhvZENhbGwobm9kZTogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24sIG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBjYWxsZWUgPSBub2RlLmNhbGxlZTtcbiAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLiAqL1xuICByZXR1cm4gY2FsbGVlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJ1xuICAgICYmIGNhbGxlZS5vYmplY3QudHlwZSA9PT0gJ1N1cGVyJ1xuICAgICYmIGNhbGxlZS5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcidcbiAgICAmJiBjYWxsZWUucHJvcGVydHkubmFtZSA9PT0gbWV0aG9kTmFtZTtcbiAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBSZS1lbmFibGUgYWZ0ZXIgbXVsdGktbGluZSBzdHJpbmcgY29tcGFyaXNvbiBibG9jay4gKi9cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkJBLHdCQUlPO0FBRVAseUJBQXVCO0FBRWhCLE1BQU0sYUFBYTtBQVNuQixNQUFNLG1CQUFvQztBQUFBLEVBQy9DLE9BQU8s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
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLXN1cGVyLWNhbGwudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogcmVxdWlyZS1zdXBlci1jYWxsXG4gKlxuICogUmVwb3J0cyBhbiBlcnJvciB3aGVuIGFuIGBvdmVycmlkZWAgbWV0aG9kIGRvZXMgbm90IGNhbGwgYHN1cGVyLm1ldGhvZE5hbWUoKWBcbiAqIGFueXdoZXJlIGluIGl0cyBib2R5LiBPdmVycmlkaW5nIGEgbWV0aG9kIHdpdGhvdXQgY2FsbGluZyBgc3VwZXJgIGlzIGFsbW9zdFxuICogYWx3YXlzIGEgbWlzdGFrZSB0aGF0IHNpbGVudGx5IGJyZWFrcyBwYXJlbnQtY2xhc3MgYmVoYXZpb3IgKGxpZmVjeWNsZSBob29rcyxcbiAqIGluaXRpYWxpemF0aW9uLCBldmVudCB3aXJpbmcsIGV0Yy4pLlxuICpcbiAqIFRoZSBzdXBlciBjYWxsIGNhbiBhcHBlYXIgYW55d2hlcmUgaW4gdGhlIG1ldGhvZCBib2R5IFx1MjAxNCBhcyBhIHN0YW5kYWxvbmVcbiAqIHN0YXRlbWVudCwgYXdhaXRlZCwgYXNzaWduZWQgdG8gYSB2YXJpYWJsZSwgb3IgbmVzdGVkIGluIGFueSBleHByZXNzaW9uLlxuICpcbiAqIFRoZSBydWxlIGF1dG9tYXRpY2FsbHkgc2tpcHMgbWV0aG9kcyB3aGVyZSB0aGUgcGFyZW50IGltcGxlbWVudGF0aW9uIGlzXG4gKiBgYWJzdHJhY3RgLCBzaW5jZSB0aGVyZSBpcyBubyBjb25jcmV0ZSBgc3VwZXJgIHRvIGNhbGwuXG4gKlxuICogSWYgdGhlIG92ZXJyaWRlIGludGVudGlvbmFsbHkgcmVwbGFjZXMgdGhlIHBhcmVudCBpbXBsZW1lbnRhdGlvbiwgZGlzYWJsZSB0aGVcbiAqIHJ1bGUgb24gdGhhdCBsaW5lIHdpdGggYW4gZXhwbGFuYXRvcnkgY29tbWVudC5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb24sXG4gIFRTRVNUcmVlXG59IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuaW1wb3J0IHR5cGUge1xuICBEZWNsYXJhdGlvbixcbiAgVHlwZUNoZWNrZXJcbn0gZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCB7XG4gIGNhbkhhdmVNb2RpZmllcnMsXG4gIGdldE1vZGlmaWVycyxcbiAgU3ludGF4S2luZFxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZS1ndWFyZHMudHMnO1xuXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdyZXF1aXJlU3VwZXJDYWxsJztcblxudHlwZSBNZXRob2RLaW5kID0gJ2dldCcgfCAnbWV0aG9kJyB8ICdzZXQnO1xuXG5pbnRlcmZhY2UgT3ZlcnJpZGVNZXRob2RJbmZvIHtcbiAgaGFzU3VwZXJDYWxsOiBib29sZWFuO1xuICBraW5kOiBNZXRob2RLaW5kO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIG5vZGU6IFRTRVNUcmVlLk1ldGhvZERlZmluaXRpb247XG4gIHJlcG9ydE5vZGU6IFJ1bGUuTm9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlcXVpcmVTdXBlckNhbGw6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGNvbnRleHQuc291cmNlQ29kZS5wYXJzZXJTZXJ2aWNlcyBhcyBQYXJzZXJTZXJ2aWNlc1dpdGhUeXBlSW5mb3JtYXRpb247XG4gICAgY29uc3QgY2hlY2tlciA9IHNlcnZpY2VzLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgICBjb25zdCBtZXRob2RTdGFjazogT3ZlcnJpZGVNZXRob2RJbmZvW10gPSBbXTtcblxuICAgIHJldHVybiB7XG4gICAgICAnQXNzaWdubWVudEV4cHJlc3Npb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gbWV0aG9kU3RhY2tbbWV0aG9kU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChjdXJyZW50Py5raW5kICE9PSAnc2V0Jykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFzc2lnbk5vZGUgPSBub2RlIGFzIFRTRVNUcmVlLkFzc2lnbm1lbnRFeHByZXNzaW9uO1xuICAgICAgICBpZiAoY2hlY2tJc1N1cGVyUHJvcGVydHlBY2Nlc3MoYXNzaWduTm9kZS5sZWZ0LCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ0NhbGxFeHByZXNzaW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IG1ldGhvZFN0YWNrW21ldGhvZFN0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoY3VycmVudD8ua2luZCAhPT0gJ21ldGhvZCcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjYWxsTm9kZSA9IG5vZGUgYXMgVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb247XG4gICAgICAgIGlmIChjaGVja0lzU3VwZXJNZXRob2RDYWxsKGNhbGxOb2RlLCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ01lbWJlckV4cHJlc3Npb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gbWV0aG9kU3RhY2tbbWV0aG9kU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChjdXJyZW50Py5raW5kICE9PSAnZ2V0Jykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lbWJlck5vZGUgPSBub2RlIGFzIFRTRVNUcmVlLk1lbWJlckV4cHJlc3Npb247XG4gICAgICAgIGlmIChjaGVja0lzU3VwZXJQcm9wZXJ0eUFjY2VzcyhtZW1iZXJOb2RlLCBjdXJyZW50Lm1ldGhvZE5hbWUpKSB7XG4gICAgICAgICAgY3VycmVudC5oYXNTdXBlckNhbGwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ01ldGhvZERlZmluaXRpb24nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBtZXRob2ROb2RlID0gbm9kZSBhcyBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuXG4gICAgICAgIGlmICghbWV0aG9kTm9kZS5vdmVycmlkZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBBU1Qgbm9kZSB0eXBlIHN0cmluZyBsaXRlcmFscyBtYXRjaCB0aGUgVFNFU1RyZWUgZW51bSB2YWx1ZXMuXG4gICAgICAgIGlmIChtZXRob2ROb2RlLmtleS50eXBlICE9PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBraW5kID0gbWV0aG9kTm9kZS5raW5kID09PSAnZ2V0JyB8fCBtZXRob2ROb2RlLmtpbmQgPT09ICdzZXQnID8gbWV0aG9kTm9kZS5raW5kIDogJ21ldGhvZCc7XG5cbiAgICAgICAgbWV0aG9kU3RhY2sucHVzaCh7XG4gICAgICAgICAgaGFzU3VwZXJDYWxsOiBmYWxzZSxcbiAgICAgICAgICBraW5kLFxuICAgICAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5vZGUua2V5Lm5hbWUsXG4gICAgICAgICAgbm9kZTogbWV0aG9kTm9kZSxcbiAgICAgICAgICByZXBvcnROb2RlOiBub2RlXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgICdNZXRob2REZWZpbml0aW9uOmV4aXQnKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmZvID0gbWV0aG9kU3RhY2tbbWV0aG9kU3RhY2subGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1ldGhvZFN0YWNrLnBvcCgpO1xuXG4gICAgICAgIGlmIChpbmZvLmhhc1N1cGVyQ2FsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjaGVja0lzUGFyZW50TWV0aG9kQWJzdHJhY3Qoc2VydmljZXMsIGNoZWNrZXIsIGluZm8ubm9kZSwgaW5mby5tZXRob2ROYW1lKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBkYXRhOiB7IGtpbmQ6IGluZm8ua2luZCwgbWV0aG9kTmFtZTogaW5mby5tZXRob2ROYW1lIH0sXG4gICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lELFxuICAgICAgICAgIG5vZGU6IGluZm8ucmVwb3J0Tm9kZVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGBvdmVycmlkZWAgbWV0aG9kcyB0byBjYWxsIGBzdXBlci5tZXRob2ROYW1lKClgJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ092ZXJyaWRlIHt7IGtpbmQgfX0gYHt7IG1ldGhvZE5hbWUgfX1gIG11c3QgYWNjZXNzIGBzdXBlci57eyBtZXRob2ROYW1lIH19YC4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdwcm9ibGVtJ1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaGFzIHRoZSBgYWJzdHJhY3RgIG1vZGlmaWVyLlxuICpcbiAqIEBwYXJhbSBkZWNsIC0gVGhlIFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZGVjbGFyYXRpb24gaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNBYnN0cmFjdChkZWNsOiBEZWNsYXJhdGlvbik6IGJvb2xlYW4ge1xuICBhc3NlcnQoY2FuSGF2ZU1vZGlmaWVycyhkZWNsKSwgJ0V4cGVjdGVkIG1ldGhvZCBkZWNsYXJhdGlvbiB0byBzdXBwb3J0IG1vZGlmaWVycycpO1xuXG4gIGNvbnN0IG1vZGlmaWVycyA9IGdldE1vZGlmaWVycyhkZWNsKTtcbiAgcmV0dXJuIG1vZGlmaWVycz8uc29tZSgobW9kKSA9PiBtb2Qua2luZCA9PT0gU3ludGF4S2luZC5BYnN0cmFjdEtleXdvcmQpID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIHRoZSBwYXJlbnQgY2xhc3MncyB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaXMgYGFic3RyYWN0YC5cbiAqXG4gKiBAcGFyYW0gc2VydmljZXMgLSBUaGUgcGFyc2VyIHNlcnZpY2VzIHdpdGggdHlwZSBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSBjaGVja2VyIC0gVGhlIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHBhcmFtIG1ldGhvZE5vZGUgLSBUaGUgb3ZlcnJpZGUgbWV0aG9kIGRlZmluaXRpb24gQVNUIG5vZGUuXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSAtIFRoZSBtZXRob2QgbmFtZSB0byBsb29rIHVwIGluIHRoZSBwYXJlbnQgY2xhc3MuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhcmVudCBtZXRob2QgaXMgYWJzdHJhY3QuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNQYXJlbnRNZXRob2RBYnN0cmFjdChcbiAgc2VydmljZXM6IFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgY2hlY2tlcjogVHlwZUNoZWNrZXIsXG4gIG1ldGhvZE5vZGU6IFRTRVNUcmVlLk1ldGhvZERlZmluaXRpb24sXG4gIG1ldGhvZE5hbWU6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNsYXNzRGVjbCA9IG1ldGhvZE5vZGUucGFyZW50LnBhcmVudDtcbiAgY29uc3QgdHNDbGFzc05vZGUgPSBzZXJ2aWNlcy5lc1RyZWVOb2RlVG9UU05vZGVNYXAuZ2V0KGNsYXNzRGVjbCk7XG4gIGNvbnN0IGNsYXNzVHlwZSA9IGNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24odHNDbGFzc05vZGUpO1xuICBjb25zdCBiYXNlVHlwZXMgPSBjbGFzc1R5cGUuZ2V0QmFzZVR5cGVzKCk7XG5cbiAgaWYgKCFiYXNlVHlwZXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IGJhc2VUeXBlIG9mIGJhc2VUeXBlcykge1xuICAgIGNvbnN0IHByb3AgPSBiYXNlVHlwZS5nZXRQcm9wZXJ0eShtZXRob2ROYW1lKTtcblxuICAgIGlmICghcHJvcCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgZGVjbGFyYXRpb25zID0gcHJvcC5nZXREZWNsYXJhdGlvbnMoKTtcblxuICAgIGlmICghZGVjbGFyYXRpb25zKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGRlY2wgb2YgZGVjbGFyYXRpb25zKSB7XG4gICAgICBpZiAoY2hlY2tJc0Fic3RyYWN0KGRlY2wpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGNhbGwgZXhwcmVzc2lvbiBpcyBgc3VwZXIubWV0aG9kTmFtZSguLi4pYC5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBjYWxsIGV4cHJlc3Npb24gbm9kZS5cbiAqIEBwYXJhbSBtZXRob2ROYW1lIC0gVGhlIGV4cGVjdGVkIG1ldGhvZCBuYW1lLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBub2RlIGlzIGEgbWF0Y2hpbmcgc3VwZXIgbWV0aG9kIGNhbGwuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNTdXBlck1ldGhvZENhbGwobm9kZTogVFNFU1RyZWUuQ2FsbEV4cHJlc3Npb24sIG1ldGhvZE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBjYWxsZWUgPSBub2RlLmNhbGxlZTtcbiAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gQVNUIG5vZGUgdHlwZSBzdHJpbmcgbGl0ZXJhbHMgbWF0Y2ggdGhlIFRTRVNUcmVlIGVudW0gdmFsdWVzLiAqL1xuICByZXR1cm4gY2FsbGVlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJ1xuICAgICYmIGNhbGxlZS5vYmplY3QudHlwZSA9PT0gJ1N1cGVyJ1xuICAgICYmIGNhbGxlZS5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcidcbiAgICAmJiBjYWxsZWUucHJvcGVydHkubmFtZSA9PT0gbWV0aG9kTmFtZTtcbiAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWVudW0tY29tcGFyaXNvbiAtLSBSZS1lbmFibGUgYWZ0ZXIgbXVsdGktbGluZSBzdHJpbmcgY29tcGFyaXNvbiBibG9jay4gKi9cbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIG5vZGUgaXMgYSBgc3VwZXIucHJvcGVydHlOYW1lYCBtZW1iZXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gbm9kZSAtIFRoZSBBU1Qgbm9kZSB0byBjaGVjayAoTWVtYmVyRXhwcmVzc2lvbiBvciBBc3NpZ25tZW50RXhwcmVzc2lvbiBsZWZ0LWhhbmQgc2lkZSkuXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIC0gVGhlIGV4cGVjdGVkIHByb3BlcnR5IG5hbWUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaXMgYSBtYXRjaGluZyBzdXBlciBwcm9wZXJ0eSBhY2Nlc3MuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrSXNTdXBlclByb3BlcnR5QWNjZXNzKG5vZGU6IFRTRVNUcmVlLk5vZGUsIHByb3BlcnR5TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZW51bS1jb21wYXJpc29uIC0tIEFTVCBub2RlIHR5cGUgc3RyaW5nIGxpdGVyYWxzIG1hdGNoIHRoZSBUU0VTVHJlZSBlbnVtIHZhbHVlcy4gKi9cbiAgcmV0dXJuIG5vZGUudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nXG4gICAgJiYgbm9kZS5vYmplY3QudHlwZSA9PT0gJ1N1cGVyJ1xuICAgICYmIG5vZGUucHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInXG4gICAgJiYgbm9kZS5wcm9wZXJ0eS5uYW1lID09PSBwcm9wZXJ0eU5hbWU7XG4gIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1lbnVtLWNvbXBhcmlzb24gLS0gUmUtZW5hYmxlIGFmdGVyIG11bHRpLWxpbmUgc3RyaW5nIGNvbXBhcmlzb24gYmxvY2suICovXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTZCQSx3QkFJTztBQUVQLHlCQUF1QjtBQUVoQixN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
|