obsidian-dev-utils 44.2.4 → 44.3.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 +4 -0
- package/dist/lib/cjs/Library.cjs +1 -1
- package/dist/lib/cjs/obsidian/Backlink.cjs +2 -3
- package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.cjs +56 -41
- package/dist/lib/cjs/obsidian/Commands/AbstractFileCommandBase.d.cts +45 -12
- package/dist/lib/cjs/obsidian/Commands/CommandBase.cjs +13 -1
- package/dist/lib/cjs/obsidian/Commands/CommandBase.d.cts +7 -0
- package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.cjs +3 -9
- package/dist/lib/cjs/obsidian/Commands/EditorCommandBase.d.cts +7 -7
- package/dist/lib/cjs/obsidian/Commands/FileCommandBase.cjs +123 -26
- package/dist/lib/cjs/obsidian/Commands/FileCommandBase.d.cts +100 -9
- package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.cjs +115 -26
- package/dist/lib/cjs/obsidian/Commands/FolderCommandBase.d.cts +94 -10
- package/dist/lib/cjs/obsidian/FileSystem.cjs +44 -1
- package/dist/lib/cjs/obsidian/FileSystem.d.cts +81 -33
- package/dist/lib/esm/Library.mjs +1 -1
- package/dist/lib/esm/obsidian/Backlink.mjs +4 -4
- package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.d.mts +45 -12
- package/dist/lib/esm/obsidian/Commands/AbstractFileCommandBase.mjs +54 -40
- package/dist/lib/esm/obsidian/Commands/CommandBase.d.mts +7 -0
- package/dist/lib/esm/obsidian/Commands/CommandBase.mjs +13 -1
- package/dist/lib/esm/obsidian/Commands/EditorCommandBase.d.mts +7 -7
- package/dist/lib/esm/obsidian/Commands/EditorCommandBase.mjs +3 -9
- package/dist/lib/esm/obsidian/Commands/FileCommandBase.d.mts +100 -9
- package/dist/lib/esm/obsidian/Commands/FileCommandBase.mjs +127 -26
- package/dist/lib/esm/obsidian/Commands/FolderCommandBase.d.mts +94 -10
- package/dist/lib/esm/obsidian/Commands/FolderCommandBase.mjs +119 -26
- package/dist/lib/esm/obsidian/FileSystem.d.mts +81 -33
- package/dist/lib/esm/obsidian/FileSystem.mjs +38 -1
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { Plugin, TAbstractFile, WorkspaceLeaf } from 'obsidian';
|
|
7
7
|
import { TFile } from 'obsidian';
|
|
8
|
-
import { AbstractFileCommandBase, AbstractFileCommandInvocationBase } from './AbstractFileCommandBase.mjs';
|
|
8
|
+
import { AbstractFileCommandBase, AbstractFileCommandInvocationBase, AbstractFilesCommandInvocationBase } from './AbstractFileCommandBase.mjs';
|
|
9
9
|
/**
|
|
10
10
|
* Base class for file commands.
|
|
11
11
|
*
|
|
@@ -13,20 +13,58 @@ import { AbstractFileCommandBase, AbstractFileCommandInvocationBase } from './Ab
|
|
|
13
13
|
*/
|
|
14
14
|
export declare abstract class FileCommandBase<TPlugin extends Plugin = Plugin> extends AbstractFileCommandBase<TPlugin> {
|
|
15
15
|
/**
|
|
16
|
-
* Creates a new file command invocation.
|
|
16
|
+
* Creates a new abstract file command invocation.
|
|
17
|
+
*
|
|
18
|
+
* @param abstractFile - The abstract file to invoke the command for.
|
|
19
|
+
* @returns The command invocation.
|
|
20
|
+
*/
|
|
21
|
+
protected createCommandInvocation(abstractFile?: TAbstractFile): AbstractFileCommandInvocationBase<TPlugin>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new abstract file command invocation for an abstract file.
|
|
17
24
|
*
|
|
25
|
+
* @param abstractFile - The abstract file to invoke the command for. If `null`, the active file is used.
|
|
18
26
|
* @returns The command invocation.
|
|
19
27
|
*/
|
|
20
|
-
protected
|
|
28
|
+
protected createCommandInvocationForAbstractFile(abstractFile: null | TAbstractFile): AbstractFileCommandInvocationBase<TPlugin>;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new abstract files command invocation for abstract files.
|
|
31
|
+
*
|
|
32
|
+
* @param abstractFiles - The abstract files to invoke the command for.
|
|
33
|
+
* @returns A new abstract files command invocation.
|
|
34
|
+
*/
|
|
35
|
+
protected createCommandInvocationForAbstractFiles(abstractFiles: TAbstractFile[]): AbstractFilesCommandInvocationBase<TPlugin>;
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new file command invocation for a file.
|
|
38
|
+
*
|
|
39
|
+
* @param file - The file to invoke the command for.
|
|
40
|
+
* @returns A new file command invocation.
|
|
41
|
+
*/
|
|
42
|
+
protected abstract createCommandInvocationForFile(file: null | TFile): FileCommandInvocationBase<TPlugin>;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new files command invocation for files.
|
|
45
|
+
*
|
|
46
|
+
* @param files - The files to invoke the command for.
|
|
47
|
+
* @returns A new files command invocation.
|
|
48
|
+
*/
|
|
49
|
+
protected createCommandInvocationForFiles(files: TFile[]): FilesCommandInvocationBase<TPlugin>;
|
|
21
50
|
/**
|
|
22
51
|
* Checks if the command should be added to the abstract file menu.
|
|
23
52
|
*
|
|
24
53
|
* @param abstractFile - The abstract file to check.
|
|
25
|
-
* @param
|
|
26
|
-
* @param
|
|
54
|
+
* @param source - The source of the abstract file.
|
|
55
|
+
* @param leaf - The leaf to check.
|
|
27
56
|
* @returns Whether the command should be added to the abstract file menu.
|
|
28
57
|
*/
|
|
29
|
-
protected shouldAddToAbstractFileMenu(abstractFile: TAbstractFile,
|
|
58
|
+
protected shouldAddToAbstractFileMenu(abstractFile: TAbstractFile, source: string, leaf?: WorkspaceLeaf): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Checks if the command should be added to the abstract files menu.
|
|
61
|
+
*
|
|
62
|
+
* @param abstractFiles - The abstract files to check.
|
|
63
|
+
* @param source - The source of the abstract files.
|
|
64
|
+
* @param leaf - The leaf to check.
|
|
65
|
+
* @returns Whether the command should be added to the abstract files menu.
|
|
66
|
+
*/
|
|
67
|
+
protected shouldAddToAbstractFilesMenu(abstractFiles: TAbstractFile[], source: string, leaf?: WorkspaceLeaf): boolean;
|
|
30
68
|
/**
|
|
31
69
|
* Checks if the command should be added to the file menu.
|
|
32
70
|
*
|
|
@@ -36,6 +74,15 @@ export declare abstract class FileCommandBase<TPlugin extends Plugin = Plugin> e
|
|
|
36
74
|
* @returns Whether the command should be added to the file menu.
|
|
37
75
|
*/
|
|
38
76
|
protected shouldAddToFileMenu(_file: TFile, _source: string, _leaf?: WorkspaceLeaf): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Checks if the command should be added to the files menu.
|
|
79
|
+
*
|
|
80
|
+
* @param _files - The files to check.
|
|
81
|
+
* @param _source - The source of the files.
|
|
82
|
+
* @param _leaf - The leaf to check.
|
|
83
|
+
* @returns Whether the command should be added to the files menu.
|
|
84
|
+
*/
|
|
85
|
+
protected shouldAddToFilesMenu(_files: TFile[], _source: string, _leaf?: WorkspaceLeaf): boolean;
|
|
39
86
|
}
|
|
40
87
|
/**
|
|
41
88
|
* Base class for file command invocations.
|
|
@@ -51,15 +98,59 @@ export declare abstract class FileCommandInvocationBase<TPlugin extends Plugin>
|
|
|
51
98
|
*/
|
|
52
99
|
protected get file(): TFile;
|
|
53
100
|
/**
|
|
54
|
-
*
|
|
101
|
+
* Creates a new file command invocation.
|
|
102
|
+
*
|
|
103
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
104
|
+
* @param file - The file to invoke the command for.
|
|
105
|
+
*/
|
|
106
|
+
constructor(plugin: TPlugin, file: null | TFile);
|
|
107
|
+
/**
|
|
108
|
+
* Checks if the command can execute.
|
|
109
|
+
*
|
|
110
|
+
* @returns Whether the command can execute.
|
|
111
|
+
*/
|
|
112
|
+
protected canExecute(): boolean;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Base class for files command invocations.
|
|
116
|
+
*
|
|
117
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
118
|
+
*/
|
|
119
|
+
export declare abstract class FilesCommandInvocationBase<TPlugin extends Plugin> extends AbstractFilesCommandInvocationBase<TPlugin> {
|
|
120
|
+
readonly files: TFile[];
|
|
121
|
+
/**
|
|
122
|
+
* Creates a new files command invocation.
|
|
123
|
+
*
|
|
124
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
125
|
+
* @param files - The files to invoke the command for.
|
|
126
|
+
*/
|
|
127
|
+
constructor(plugin: TPlugin, files: TFile[]);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Base class for sequential files command invocations.
|
|
131
|
+
*
|
|
132
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
133
|
+
*/
|
|
134
|
+
export declare class SequentialFilesCommandInvocationBase<TPlugin extends Plugin> extends FilesCommandInvocationBase<TPlugin> {
|
|
135
|
+
private readonly createCommandInvocationForFile;
|
|
136
|
+
/**
|
|
137
|
+
* Creates a new sequential files command invocation.
|
|
55
138
|
*
|
|
56
|
-
* @param
|
|
139
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
140
|
+
* @param files - The files to invoke the command for.
|
|
141
|
+
* @param createCommandInvocationForFile - The function to create a command invocation for a file.
|
|
57
142
|
*/
|
|
58
|
-
|
|
143
|
+
constructor(plugin: TPlugin, files: TFile[], createCommandInvocationForFile: (file: TFile) => FileCommandInvocationBase<TPlugin>);
|
|
59
144
|
/**
|
|
60
145
|
* Checks if the command can execute.
|
|
61
146
|
*
|
|
62
147
|
* @returns Whether the command can execute.
|
|
63
148
|
*/
|
|
64
149
|
protected canExecute(): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Executes the command.
|
|
152
|
+
*
|
|
153
|
+
* @returns A promise that resolves when the command has been executed.
|
|
154
|
+
*/
|
|
155
|
+
protected execute(): Promise<void>;
|
|
65
156
|
}
|
|
@@ -20,24 +20,81 @@ if you want to view the source, please visit the github repository of this plugi
|
|
|
20
20
|
})();
|
|
21
21
|
|
|
22
22
|
import { TFile } from "obsidian";
|
|
23
|
+
import {
|
|
24
|
+
asArrayOfFiles,
|
|
25
|
+
asFile,
|
|
26
|
+
asFileOrNull,
|
|
27
|
+
isFile
|
|
28
|
+
} from "../FileSystem.mjs";
|
|
23
29
|
import {
|
|
24
30
|
AbstractFileCommandBase,
|
|
25
|
-
AbstractFileCommandInvocationBase
|
|
31
|
+
AbstractFileCommandInvocationBase,
|
|
32
|
+
AbstractFilesCommandInvocationBase
|
|
26
33
|
} from "./AbstractFileCommandBase.mjs";
|
|
27
34
|
class FileCommandBase extends AbstractFileCommandBase {
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new abstract file command invocation.
|
|
37
|
+
*
|
|
38
|
+
* @param abstractFile - The abstract file to invoke the command for.
|
|
39
|
+
* @returns The command invocation.
|
|
40
|
+
*/
|
|
41
|
+
createCommandInvocation(abstractFile) {
|
|
42
|
+
return this.createCommandInvocationForAbstractFile(abstractFile ?? this.app.workspace.getActiveFile());
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Creates a new abstract file command invocation for an abstract file.
|
|
46
|
+
*
|
|
47
|
+
* @param abstractFile - The abstract file to invoke the command for. If `null`, the active file is used.
|
|
48
|
+
* @returns The command invocation.
|
|
49
|
+
*/
|
|
50
|
+
createCommandInvocationForAbstractFile(abstractFile) {
|
|
51
|
+
return this.createCommandInvocationForFile(asFileOrNull(abstractFile));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates a new abstract files command invocation for abstract files.
|
|
55
|
+
*
|
|
56
|
+
* @param abstractFiles - The abstract files to invoke the command for.
|
|
57
|
+
* @returns A new abstract files command invocation.
|
|
58
|
+
*/
|
|
59
|
+
createCommandInvocationForAbstractFiles(abstractFiles) {
|
|
60
|
+
return this.createCommandInvocationForFiles(asArrayOfFiles(abstractFiles));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates a new files command invocation for files.
|
|
64
|
+
*
|
|
65
|
+
* @param files - The files to invoke the command for.
|
|
66
|
+
* @returns A new files command invocation.
|
|
67
|
+
*/
|
|
68
|
+
createCommandInvocationForFiles(files) {
|
|
69
|
+
return new SequentialFilesCommandInvocationBase(this.plugin, files, this.createCommandInvocationForFile.bind(this));
|
|
70
|
+
}
|
|
28
71
|
/**
|
|
29
72
|
* Checks if the command should be added to the abstract file menu.
|
|
30
73
|
*
|
|
31
74
|
* @param abstractFile - The abstract file to check.
|
|
32
|
-
* @param
|
|
33
|
-
* @param
|
|
75
|
+
* @param source - The source of the abstract file.
|
|
76
|
+
* @param leaf - The leaf to check.
|
|
34
77
|
* @returns Whether the command should be added to the abstract file menu.
|
|
35
78
|
*/
|
|
36
|
-
shouldAddToAbstractFileMenu(abstractFile,
|
|
37
|
-
if (!(abstractFile
|
|
79
|
+
shouldAddToAbstractFileMenu(abstractFile, source, leaf) {
|
|
80
|
+
if (!isFile(abstractFile)) {
|
|
38
81
|
return false;
|
|
39
82
|
}
|
|
40
|
-
return this.shouldAddToFileMenu(abstractFile,
|
|
83
|
+
return this.shouldAddToFileMenu(abstractFile, source, leaf);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Checks if the command should be added to the abstract files menu.
|
|
87
|
+
*
|
|
88
|
+
* @param abstractFiles - The abstract files to check.
|
|
89
|
+
* @param source - The source of the abstract files.
|
|
90
|
+
* @param leaf - The leaf to check.
|
|
91
|
+
* @returns Whether the command should be added to the abstract files menu.
|
|
92
|
+
*/
|
|
93
|
+
shouldAddToAbstractFilesMenu(abstractFiles, source, leaf) {
|
|
94
|
+
if (!abstractFiles.every((abstractFile) => isFile(abstractFile))) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
return this.shouldAddToFilesMenu(asArrayOfFiles(abstractFiles), source, leaf);
|
|
41
98
|
}
|
|
42
99
|
/**
|
|
43
100
|
* Checks if the command should be added to the file menu.
|
|
@@ -50,6 +107,17 @@ class FileCommandBase extends AbstractFileCommandBase {
|
|
|
50
107
|
shouldAddToFileMenu(_file, _source, _leaf) {
|
|
51
108
|
return false;
|
|
52
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Checks if the command should be added to the files menu.
|
|
112
|
+
*
|
|
113
|
+
* @param _files - The files to check.
|
|
114
|
+
* @param _source - The source of the files.
|
|
115
|
+
* @param _leaf - The leaf to check.
|
|
116
|
+
* @returns Whether the command should be added to the files menu.
|
|
117
|
+
*/
|
|
118
|
+
shouldAddToFilesMenu(_files, _source, _leaf) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
53
121
|
}
|
|
54
122
|
class FileCommandInvocationBase extends AbstractFileCommandInvocationBase {
|
|
55
123
|
/**
|
|
@@ -59,18 +127,16 @@ class FileCommandInvocationBase extends AbstractFileCommandInvocationBase {
|
|
|
59
127
|
* @throws If the abstract file is not a file.
|
|
60
128
|
*/
|
|
61
129
|
get file() {
|
|
62
|
-
|
|
63
|
-
throw new Error("Abstract file is not a file");
|
|
64
|
-
}
|
|
65
|
-
return this.abstractFile;
|
|
130
|
+
return asFile(this._abstractFile);
|
|
66
131
|
}
|
|
67
132
|
/**
|
|
68
|
-
*
|
|
133
|
+
* Creates a new file command invocation.
|
|
69
134
|
*
|
|
70
|
-
* @param
|
|
135
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
136
|
+
* @param file - The file to invoke the command for.
|
|
71
137
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
138
|
+
constructor(plugin, file) {
|
|
139
|
+
super(plugin, file);
|
|
74
140
|
}
|
|
75
141
|
/**
|
|
76
142
|
* Checks if the command can execute.
|
|
@@ -78,21 +144,56 @@ class FileCommandInvocationBase extends AbstractFileCommandInvocationBase {
|
|
|
78
144
|
* @returns Whether the command can execute.
|
|
79
145
|
*/
|
|
80
146
|
canExecute() {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
147
|
+
return super.canExecute() && !!this._abstractFile;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
class FilesCommandInvocationBase extends AbstractFilesCommandInvocationBase {
|
|
151
|
+
/**
|
|
152
|
+
* Creates a new files command invocation.
|
|
153
|
+
*
|
|
154
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
155
|
+
* @param files - The files to invoke the command for.
|
|
156
|
+
*/
|
|
157
|
+
constructor(plugin, files) {
|
|
158
|
+
super(plugin, files);
|
|
159
|
+
this.files = files;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
class SequentialFilesCommandInvocationBase extends FilesCommandInvocationBase {
|
|
163
|
+
/**
|
|
164
|
+
* Creates a new sequential files command invocation.
|
|
165
|
+
*
|
|
166
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
167
|
+
* @param files - The files to invoke the command for.
|
|
168
|
+
* @param createCommandInvocationForFile - The function to create a command invocation for a file.
|
|
169
|
+
*/
|
|
170
|
+
constructor(plugin, files, createCommandInvocationForFile) {
|
|
171
|
+
super(plugin, files);
|
|
172
|
+
this.createCommandInvocationForFile = createCommandInvocationForFile;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Checks if the command can execute.
|
|
176
|
+
*
|
|
177
|
+
* @returns Whether the command can execute.
|
|
178
|
+
*/
|
|
179
|
+
canExecute() {
|
|
180
|
+
return super.canExecute() && this.files.every((file) => this.createCommandInvocationForFile(file).invoke(true));
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Executes the command.
|
|
184
|
+
*
|
|
185
|
+
* @returns A promise that resolves when the command has been executed.
|
|
186
|
+
*/
|
|
187
|
+
async execute() {
|
|
188
|
+
for (const file of this.files) {
|
|
189
|
+
await this.createCommandInvocationForFile(file).invokeAsync(false);
|
|
90
190
|
}
|
|
91
|
-
return true;
|
|
92
191
|
}
|
|
93
192
|
}
|
|
94
193
|
export {
|
|
95
194
|
FileCommandBase,
|
|
96
|
-
FileCommandInvocationBase
|
|
195
|
+
FileCommandInvocationBase,
|
|
196
|
+
FilesCommandInvocationBase,
|
|
197
|
+
SequentialFilesCommandInvocationBase
|
|
97
198
|
};
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZpbGVDb21tYW5kQmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBCYXNlIGNsYXNzZXMgZm9yIGZpbGUgY29tbWFuZHMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBQbHVnaW4sXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2UsXG4gIEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZVxufSBmcm9tICcuL0Fic3RyYWN0RmlsZUNvbW1hbmRCYXNlLnRzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBmaWxlIGNvbW1hbmRzLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZUNvbW1hbmRCYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4gPSBQbHVnaW4+IGV4dGVuZHMgQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbigpOiBGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhYnN0cmFjdCBmaWxlIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGUgLSBUaGUgYWJzdHJhY3QgZmlsZSB0byBjaGVjay5cbiAgICogQHBhcmFtIF9zb3VyY2UgLSBUaGUgc291cmNlIG9mIHRoZSBhYnN0cmFjdCBmaWxlLlxuICAgKiBAcGFyYW0gX2xlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlLCBfc291cmNlOiBzdHJpbmcsIF9sZWFmPzogV29ya3NwYWNlTGVhZik6IGJvb2xlYW4ge1xuICAgIGlmICghKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zaG91bGRBZGRUb0ZpbGVNZW51KGFic3RyYWN0RmlsZSwgX3NvdXJjZSwgX2xlYWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIF9maWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBfc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgZmlsZS5cbiAgICogQHBhcmFtIF9sZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmaWxlIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9GaWxlTWVudShfZmlsZTogVEZpbGUsIF9zb3VyY2U6IHN0cmluZywgX2xlYWY/OiBXb3Jrc3BhY2VMZWFmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZmlsZSBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWxlIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZmlsZSB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICogQHRocm93cyBJZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlKCk6IFRGaWxlIHtcbiAgICBpZiAoISh0aGlzLmFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBYnN0cmFjdCBmaWxlIGlzIG5vdCBhIGZpbGUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYWJzdHJhY3RGaWxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGZpbGUgdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0IGZpbGUoZmlsZTogVEZpbGUpIHtcbiAgICB0aGlzLmFic3RyYWN0RmlsZSA9IGZpbGU7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFzdXBlci5jYW5FeGVjdXRlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoISh0aGlzLmFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkge1xuICAgICAgY29uc3QgZmlsZSA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XG4gICAgICBpZiAoIWZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUEsU0FBUyxhQUFhO0FBRXRCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBT0EsTUFBZSx3QkFBeUQsd0JBQWlDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBZ0IzRiw0QkFBNEIsY0FBNkIsU0FBaUIsT0FBZ0M7QUFDM0gsUUFBSSxFQUFFLHdCQUF3QixRQUFRO0FBQ3BDLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxLQUFLLG9CQUFvQixjQUFjLFNBQVMsS0FBSztBQUFBLEVBQzlEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVVUsb0JBQW9CLE9BQWMsU0FBaUIsT0FBZ0M7QUFDM0YsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQU9PLE1BQWUsa0NBQTBELGtDQUEyQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT3pILElBQWMsT0FBYztBQUMxQixRQUFJLEVBQUUsS0FBSyx3QkFBd0IsUUFBUTtBQUN6QyxZQUFNLElBQUksTUFBTSw2QkFBNkI7QUFBQSxJQUMvQztBQUNBLFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFjLEtBQUssTUFBYTtBQUM5QixTQUFLLGVBQWU7QUFBQSxFQUN0QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9tQixhQUFzQjtBQUN2QyxRQUFJLENBQUMsTUFBTSxXQUFXLEdBQUc7QUFDdkIsYUFBTztBQUFBLElBQ1Q7QUFFQSxRQUFJLEVBQUUsS0FBSyx3QkFBd0IsUUFBUTtBQUN6QyxZQUFNLE9BQU8sS0FBSyxJQUFJLFVBQVUsY0FBYztBQUM5QyxVQUFJLENBQUMsTUFBTTtBQUNULGVBQU87QUFBQSxNQUNUO0FBQ0EsV0FBSyxPQUFPO0FBQUEsSUFDZDtBQUVBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL29ic2lkaWFuL0NvbW1hbmRzL0ZpbGVDb21tYW5kQmFzZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBCYXNlIGNsYXNzZXMgZm9yIGZpbGUgY29tbWFuZHMuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBQbHVnaW4sXG4gIFRBYnN0cmFjdEZpbGUsXG4gIFdvcmtzcGFjZUxlYWZcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgeyBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHtcbiAgYXNBcnJheU9mRmlsZXMsXG4gIGFzRmlsZSxcbiAgYXNGaWxlT3JOdWxsLFxuICBpc0ZpbGVcbn0gZnJvbSAnLi4vRmlsZVN5c3RlbS50cyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZSxcbiAgQWJzdHJhY3RGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlLFxuICBBYnN0cmFjdEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlXG59IGZyb20gJy4vQWJzdHJhY3RGaWxlQ29tbWFuZEJhc2UudHMnO1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZpbGUgY29tbWFuZHMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWxlQ29tbWFuZEJhc2U8VFBsdWdpbiBleHRlbmRzIFBsdWdpbiA9IFBsdWdpbj4gZXh0ZW5kcyBBYnN0cmFjdEZpbGVDb21tYW5kQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYWJzdHJhY3RGaWxlIC0gVGhlIGFic3RyYWN0IGZpbGUgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICogQHJldHVybnMgVGhlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbihhYnN0cmFjdEZpbGU/OiBUQWJzdHJhY3RGaWxlKTogQWJzdHJhY3RGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckFic3RyYWN0RmlsZShhYnN0cmFjdEZpbGUgPz8gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBhYnN0cmFjdCBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYW4gYWJzdHJhY3QgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuIElmIGBudWxsYCwgdGhlIGFjdGl2ZSBmaWxlIGlzIHVzZWQuXG4gICAqIEByZXR1cm5zIFRoZSBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JBYnN0cmFjdEZpbGUoYWJzdHJhY3RGaWxlOiBudWxsIHwgVEFic3RyYWN0RmlsZSk6IEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlKGFzRmlsZU9yTnVsbChhYnN0cmFjdEZpbGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGFic3RyYWN0IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYWJzdHJhY3QgZmlsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGFic3RyYWN0IGZpbGVzIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGFic3RyYWN0IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBjcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckFic3RyYWN0RmlsZXMoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdKTogQWJzdHJhY3RGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyhhc0FycmF5T2ZGaWxlcyhhYnN0cmFjdEZpbGVzKSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZSAtIFRoZSBmaWxlIHRvIGludm9rZSB0aGUgY29tbWFuZCBmb3IuXG4gICAqIEByZXR1cm5zIEEgbmV3IGZpbGUgY29tbWFuZCBpbnZvY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNyZWF0ZUNvbW1hbmRJbnZvY2F0aW9uRm9yRmlsZShmaWxlOiBudWxsIHwgVEZpbGUpOiBGaWxlQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgZmlsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcmV0dXJucyBBIG5ldyBmaWxlcyBjb21tYW5kIGludm9jYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlcyhmaWxlczogVEZpbGVbXSk6IEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4+IHtcbiAgICByZXR1cm4gbmV3IFNlcXVlbnRpYWxGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZSh0aGlzLnBsdWdpbiwgZmlsZXMsIHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGUgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIGFic3RyYWN0RmlsZSAtIFRoZSBhYnN0cmFjdCBmaWxlIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgYWJzdHJhY3QgZmlsZS5cbiAgICogQHBhcmFtIGxlYWYgLSBUaGUgbGVhZiB0byBjaGVjay5cbiAgICogQHJldHVybnMgV2hldGhlciB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGUgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBzaG91bGRBZGRUb0Fic3RyYWN0RmlsZU1lbnUoYWJzdHJhY3RGaWxlOiBUQWJzdHJhY3RGaWxlLCBzb3VyY2U6IHN0cmluZywgbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICBpZiAoIWlzRmlsZShhYnN0cmFjdEZpbGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNob3VsZEFkZFRvRmlsZU1lbnUoYWJzdHJhY3RGaWxlLCBzb3VyY2UsIGxlYWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGFic3RyYWN0IGZpbGVzIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBhYnN0cmFjdEZpbGVzIC0gVGhlIGFic3RyYWN0IGZpbGVzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgYWJzdHJhY3QgZmlsZXMuXG4gICAqIEBwYXJhbSBsZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBhYnN0cmFjdCBmaWxlcyBtZW51LlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHNob3VsZEFkZFRvQWJzdHJhY3RGaWxlc01lbnUoYWJzdHJhY3RGaWxlczogVEFic3RyYWN0RmlsZVtdLCBzb3VyY2U6IHN0cmluZywgbGVhZj86IFdvcmtzcGFjZUxlYWYpOiBib29sZWFuIHtcbiAgICBpZiAoIWFic3RyYWN0RmlsZXMuZXZlcnkoKGFic3RyYWN0RmlsZSkgPT4gaXNGaWxlKGFic3RyYWN0RmlsZSkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNob3VsZEFkZFRvRmlsZXNNZW51KGFzQXJyYXlPZkZpbGVzKGFic3RyYWN0RmlsZXMpLCBzb3VyY2UsIGxlYWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGUgbWVudS5cbiAgICpcbiAgICogQHBhcmFtIF9maWxlIC0gVGhlIGZpbGUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBfc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgZmlsZS5cbiAgICogQHBhcmFtIF9sZWFmIC0gVGhlIGxlYWYgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmaWxlIG1lbnUuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2hvdWxkQWRkVG9GaWxlTWVudShfZmlsZTogVEZpbGUsIF9zb3VyY2U6IHN0cmluZywgX2xlYWY/OiBXb3Jrc3BhY2VMZWFmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgY29tbWFuZCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGZpbGVzIG1lbnUuXG4gICAqXG4gICAqIEBwYXJhbSBfZmlsZXMgLSBUaGUgZmlsZXMgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBfc291cmNlIC0gVGhlIHNvdXJjZSBvZiB0aGUgZmlsZXMuXG4gICAqIEBwYXJhbSBfbGVhZiAtIFRoZSBsZWFmIHRvIGNoZWNrLlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZmlsZXMgbWVudS5cbiAgICovXG4gIHByb3RlY3RlZCBzaG91bGRBZGRUb0ZpbGVzTWVudShfZmlsZXM6IFRGaWxlW10sIF9zb3VyY2U6IHN0cmluZywgX2xlYWY/OiBXb3Jrc3BhY2VMZWFmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZmlsZSBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEFic3RyYWN0RmlsZUNvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luPiB7XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmaWxlIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZmlsZSB0aGF0IHRoZSBjb21tYW5kIGludm9jYXRpb24gYmVsb25ncyB0by5cbiAgICogQHRocm93cyBJZiB0aGUgYWJzdHJhY3QgZmlsZSBpcyBub3QgYSBmaWxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaWxlKCk6IFRGaWxlIHtcbiAgICByZXR1cm4gYXNGaWxlKHRoaXMuX2Fic3RyYWN0RmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmaWxlIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqIEBwYXJhbSBmaWxlIC0gVGhlIGZpbGUgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwbHVnaW46IFRQbHVnaW4sIGZpbGU6IG51bGwgfCBURmlsZSkge1xuICAgIHN1cGVyKHBsdWdpbiwgZmlsZSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBjb21tYW5kIGNhbiBleGVjdXRlLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGNhbkV4ZWN1dGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN1cGVyLmNhbkV4ZWN1dGUoKSAmJiAhIXRoaXMuX2Fic3RyYWN0RmlsZTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbnMuXG4gKlxuICogQHR5cGVQYXJhbSBUUGx1Z2luIC0gVGhlIHR5cGUgb2YgdGhlIHBsdWdpbiB0aGF0IHRoZSBjb21tYW5kIGJlbG9uZ3MgdG8uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWxlc0NvbW1hbmRJbnZvY2F0aW9uQmFzZTxUUGx1Z2luIGV4dGVuZHMgUGx1Z2luPiBleHRlbmRzIEFic3RyYWN0RmlsZXNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBmaWxlcyBjb21tYW5kIGludm9jYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwbHVnaW4gLSBUaGUgcGx1Z2luIHRoYXQgdGhlIGNvbW1hbmQgaW52b2NhdGlvbiBiZWxvbmdzIHRvLlxuICAgKiBAcGFyYW0gZmlsZXMgLSBUaGUgZmlsZXMgdG8gaW52b2tlIHRoZSBjb21tYW5kIGZvci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwbHVnaW46IFRQbHVnaW4sIHB1YmxpYyByZWFkb25seSBmaWxlczogVEZpbGVbXSkge1xuICAgIHN1cGVyKHBsdWdpbiwgZmlsZXMpO1xuICB9XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3Igc2VxdWVudGlhbCBmaWxlcyBjb21tYW5kIGludm9jYXRpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gVFBsdWdpbiAtIFRoZSB0eXBlIG9mIHRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBiZWxvbmdzIHRvLlxuICovXG5leHBvcnQgY2xhc3MgU2VxdWVudGlhbEZpbGVzQ29tbWFuZEludm9jYXRpb25CYXNlPFRQbHVnaW4gZXh0ZW5kcyBQbHVnaW4+IGV4dGVuZHMgRmlsZXNDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4ge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBzZXF1ZW50aWFsIGZpbGVzIGNvbW1hbmQgaW52b2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHBsdWdpbiAtIFRoZSBwbHVnaW4gdGhhdCB0aGUgY29tbWFuZCBpbnZvY2F0aW9uIGJlbG9uZ3MgdG8uXG4gICAqIEBwYXJhbSBmaWxlcyAtIFRoZSBmaWxlcyB0byBpbnZva2UgdGhlIGNvbW1hbmQgZm9yLlxuICAgKiBAcGFyYW0gY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlIC0gVGhlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGNvbW1hbmQgaW52b2NhdGlvbiBmb3IgYSBmaWxlLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBsdWdpbjogVFBsdWdpbiwgZmlsZXM6IFRGaWxlW10sIHByaXZhdGUgcmVhZG9ubHkgY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlOiAoZmlsZTogVEZpbGUpID0+IEZpbGVDb21tYW5kSW52b2NhdGlvbkJhc2U8VFBsdWdpbj4pIHtcbiAgICBzdXBlcihwbHVnaW4sIGZpbGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqXG4gICAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGNvbW1hbmQgY2FuIGV4ZWN1dGUuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgY2FuRXhlY3V0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3VwZXIuY2FuRXhlY3V0ZSgpICYmIHRoaXMuZmlsZXMuZXZlcnkoKGZpbGUpID0+IHRoaXMuY3JlYXRlQ29tbWFuZEludm9jYXRpb25Gb3JGaWxlKGZpbGUpLmludm9rZSh0cnVlKSk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbW1hbmQgaGFzIGJlZW4gZXhlY3V0ZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgdGhpcy5maWxlcykge1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVDb21tYW5kSW52b2NhdGlvbkZvckZpbGUoZmlsZSkuaW52b2tlQXN5bmMoZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUEsU0FBUyxhQUFhO0FBRXRCO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFPQSxNQUFlLHdCQUF5RCx3QkFBaUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU8zRix3QkFBd0Is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
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { Plugin, TAbstractFile, WorkspaceLeaf } from 'obsidian';
|
|
7
7
|
import { TFolder } from 'obsidian';
|
|
8
|
-
import { AbstractFileCommandBase, AbstractFileCommandInvocationBase } from './AbstractFileCommandBase.mjs';
|
|
8
|
+
import { AbstractFileCommandBase, AbstractFileCommandInvocationBase, AbstractFilesCommandInvocationBase } from './AbstractFileCommandBase.mjs';
|
|
9
9
|
/**
|
|
10
10
|
* Base class for folder commands.
|
|
11
11
|
*
|
|
@@ -13,20 +13,58 @@ import { AbstractFileCommandBase, AbstractFileCommandInvocationBase } from './Ab
|
|
|
13
13
|
*/
|
|
14
14
|
export declare abstract class FolderCommandBase<TPlugin extends Plugin = Plugin> extends AbstractFileCommandBase<TPlugin> {
|
|
15
15
|
/**
|
|
16
|
-
* Creates a new file command invocation.
|
|
16
|
+
* Creates a new abstract file command invocation.
|
|
17
17
|
*
|
|
18
|
-
* @
|
|
18
|
+
* @param abstractFile - The abstract file to invoke the command for.
|
|
19
|
+
* @returns A new abstract file command invocation.
|
|
19
20
|
*/
|
|
20
|
-
protected
|
|
21
|
+
protected createCommandInvocation(abstractFile?: TAbstractFile): AbstractFileCommandInvocationBase<TPlugin>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new abstract file command invocation for an abstract file.
|
|
24
|
+
*
|
|
25
|
+
* @param abstractFile - The abstract file to invoke the command for.
|
|
26
|
+
* @returns A new abstract file command invocation.
|
|
27
|
+
*/
|
|
28
|
+
protected createCommandInvocationForAbstractFile(abstractFile: null | TAbstractFile): AbstractFileCommandInvocationBase<TPlugin>;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new abstract files command invocation for abstract files.
|
|
31
|
+
*
|
|
32
|
+
* @param abstractFiles - The abstract files to invoke the command for.
|
|
33
|
+
* @returns A new abstract files command invocation.
|
|
34
|
+
*/
|
|
35
|
+
protected createCommandInvocationForAbstractFiles(abstractFiles: TAbstractFile[]): AbstractFilesCommandInvocationBase<TPlugin>;
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new abstract file command invocation for a folder.
|
|
38
|
+
*
|
|
39
|
+
* @param folder - The folder to invoke the command for.
|
|
40
|
+
* @returns A new folder command invocation.
|
|
41
|
+
*/
|
|
42
|
+
protected abstract createCommandInvocationForFolder(folder: null | TFolder): FolderCommandInvocationBase<TPlugin>;
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new folders command invocation for folders.
|
|
45
|
+
*
|
|
46
|
+
* @param folders - The folders to invoke the command for.
|
|
47
|
+
* @returns A new folders command invocation.
|
|
48
|
+
*/
|
|
49
|
+
protected createCommandInvocationForFolders(folders: TFolder[]): FoldersCommandInvocationBase<TPlugin>;
|
|
21
50
|
/**
|
|
22
51
|
* Checks if the command should be added to the abstract file menu.
|
|
23
52
|
*
|
|
24
53
|
* @param abstractFile - The abstract file to check.
|
|
25
|
-
* @param
|
|
26
|
-
* @param
|
|
54
|
+
* @param source - The source of the abstract file.
|
|
55
|
+
* @param leaf - The leaf to check.
|
|
27
56
|
* @returns Whether the command should be added to the abstract file menu.
|
|
28
57
|
*/
|
|
29
|
-
protected shouldAddToAbstractFileMenu(abstractFile: TAbstractFile,
|
|
58
|
+
protected shouldAddToAbstractFileMenu(abstractFile: TAbstractFile, source: string, leaf?: WorkspaceLeaf): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Checks if the command should be added to the abstract files menu.
|
|
61
|
+
*
|
|
62
|
+
* @param abstractFiles - The abstract files to check.
|
|
63
|
+
* @param source - The source of the abstract files.
|
|
64
|
+
* @param leaf - The leaf to check.
|
|
65
|
+
* @returns Whether the command should be added to the abstract files menu.
|
|
66
|
+
*/
|
|
67
|
+
protected shouldAddToAbstractFilesMenu(abstractFiles: TAbstractFile[], source: string, leaf?: WorkspaceLeaf): boolean;
|
|
30
68
|
/**
|
|
31
69
|
* Checks if the command should be added to the folder menu.
|
|
32
70
|
*
|
|
@@ -36,6 +74,15 @@ export declare abstract class FolderCommandBase<TPlugin extends Plugin = Plugin>
|
|
|
36
74
|
* @returns Whether the command should be added to the folder menu.
|
|
37
75
|
*/
|
|
38
76
|
protected shouldAddToFolderMenu(_folder: TFolder, _source: string, _leaf?: WorkspaceLeaf): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Checks if the command should be added to the folders menu.
|
|
79
|
+
*
|
|
80
|
+
* @param _folders - The folders to check.
|
|
81
|
+
* @param _source - The source of the folders.
|
|
82
|
+
* @param _leaf - The leaf to check.
|
|
83
|
+
* @returns Whether the command should be added to the folders menu.
|
|
84
|
+
*/
|
|
85
|
+
protected shouldAddToFoldersMenu(_folders: TFolder[], _source: string, _leaf?: WorkspaceLeaf): boolean;
|
|
39
86
|
}
|
|
40
87
|
/**
|
|
41
88
|
* Base class for folder command invocations.
|
|
@@ -51,15 +98,52 @@ export declare abstract class FolderCommandInvocationBase<TPlugin extends Plugin
|
|
|
51
98
|
*/
|
|
52
99
|
protected get folder(): TFolder;
|
|
53
100
|
/**
|
|
54
|
-
*
|
|
101
|
+
* Checks if the command can execute.
|
|
102
|
+
*
|
|
103
|
+
* @returns Whether the command can execute.
|
|
104
|
+
*/
|
|
105
|
+
protected canExecute(): boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Base class for folders command invocations.
|
|
109
|
+
*
|
|
110
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
111
|
+
*/
|
|
112
|
+
export declare abstract class FoldersCommandInvocationBase<TPlugin extends Plugin> extends AbstractFilesCommandInvocationBase<TPlugin> {
|
|
113
|
+
readonly folders: TFolder[];
|
|
114
|
+
/**
|
|
115
|
+
* Creates a new folders command invocation.
|
|
55
116
|
*
|
|
56
|
-
* @param
|
|
117
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
118
|
+
* @param folders - The folders to invoke the command for.
|
|
57
119
|
*/
|
|
58
|
-
|
|
120
|
+
constructor(plugin: TPlugin, folders: TFolder[]);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Base class for sequential folders command invocations.
|
|
124
|
+
*
|
|
125
|
+
* @typeParam TPlugin - The type of the plugin that the command belongs to.
|
|
126
|
+
*/
|
|
127
|
+
export declare class SequentialFoldersCommandInvocationBase<TPlugin extends Plugin> extends FoldersCommandInvocationBase<TPlugin> {
|
|
128
|
+
private readonly createCommandInvocationForFolder;
|
|
129
|
+
/**
|
|
130
|
+
* Creates a new sequential folders command invocation.
|
|
131
|
+
*
|
|
132
|
+
* @param plugin - The plugin that the command invocation belongs to.
|
|
133
|
+
* @param folders - The folders to invoke the command for.
|
|
134
|
+
* @param createCommandInvocationForFolder - The function to create a command invocation for a folder.
|
|
135
|
+
*/
|
|
136
|
+
constructor(plugin: TPlugin, folders: TFolder[], createCommandInvocationForFolder: (folder: TFolder) => FolderCommandInvocationBase<TPlugin>);
|
|
59
137
|
/**
|
|
60
138
|
* Checks if the command can execute.
|
|
61
139
|
*
|
|
62
140
|
* @returns Whether the command can execute.
|
|
63
141
|
*/
|
|
64
142
|
protected canExecute(): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Executes the command.
|
|
145
|
+
*
|
|
146
|
+
* @returns A promise that resolves when the command has been executed.
|
|
147
|
+
*/
|
|
148
|
+
protected execute(): Promise<void>;
|
|
65
149
|
}
|