obsidian-dev-utils 86.1.3 → 87.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 +23 -0
- package/dist/lib/cjs/__merged.cjs +34 -3
- package/dist/lib/cjs/__merged.d.cts +5 -4
- package/dist/lib/cjs/async-events.cjs +32 -3
- package/dist/lib/cjs/async-events.d.cts +63 -0
- package/dist/lib/cjs/disposable.cjs +103 -115
- package/dist/lib/cjs/disposable.d.cts +81 -57
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.cjs +48 -21
- package/dist/lib/cjs/obsidian/command-handlers/command-handler-component.d.cts +11 -8
- package/dist/lib/cjs/obsidian/command-handlers/open-demo-vault-command-handler.cjs +1 -1
- package/dist/lib/cjs/obsidian/community-plugins.cjs +109 -9
- package/dist/lib/cjs/obsidian/community-plugins.d.cts +175 -3
- package/dist/lib/cjs/obsidian/components/component-ex.cjs +18 -1
- package/dist/lib/cjs/obsidian/components/component-ex.d.cts +12 -0
- package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.cjs +8 -4
- package/dist/lib/cjs/obsidian/components/menu-event-registrar-component.d.cts +7 -3
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.cjs +80 -38
- package/dist/lib/cjs/obsidian/components/plugin-notice-component.d.cts +81 -19
- package/dist/lib/cjs/obsidian/css-class.cjs +4 -2
- package/dist/lib/cjs/obsidian/css-class.d.cts +12 -3
- package/dist/lib/cjs/obsidian/desktop-demo-vault-opener.cjs +2 -7
- package/dist/lib/cjs/obsidian/events.cjs +165 -0
- package/dist/lib/cjs/obsidian/events.d.cts +98 -0
- package/dist/lib/cjs/obsidian/i18n/locales/en.cjs +1 -2
- package/dist/lib/cjs/obsidian/i18n/locales/en.d.cts +0 -1
- package/dist/lib/cjs/obsidian/i18n/locales/translations-map.d.cts +0 -1
- package/dist/lib/cjs/obsidian/index.cjs +4 -1
- package/dist/lib/cjs/obsidian/index.d.cts +1 -0
- package/dist/lib/cjs/obsidian/menu-event-registrar.cjs +1 -1
- package/dist/lib/cjs/obsidian/menu-event-registrar.d.cts +7 -3
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.cjs +31 -33
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.cts +11 -0
- package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +39 -52
- package/dist/lib/cjs/script-utils/linters/eslint-no-restricted-syntax.cjs +1 -5
- package/dist/lib/cjs/type.cjs +31 -12
- package/dist/lib/cjs/type.d.cts +56 -36
- package/dist/lib/esm/__merged.d.mts +5 -4
- package/dist/lib/esm/__merged.mjs +39 -5
- package/dist/lib/esm/async-events.d.mts +63 -0
- package/dist/lib/esm/async-events.mjs +29 -2
- package/dist/lib/esm/disposable.d.mts +81 -57
- package/dist/lib/esm/disposable.mjs +101 -115
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.d.mts +11 -8
- package/dist/lib/esm/obsidian/command-handlers/command-handler-component.mjs +49 -22
- package/dist/lib/esm/obsidian/command-handlers/open-demo-vault-command-handler.mjs +1 -1
- package/dist/lib/esm/obsidian/community-plugins.d.mts +175 -3
- package/dist/lib/esm/obsidian/community-plugins.mjs +100 -8
- package/dist/lib/esm/obsidian/components/component-ex.d.mts +12 -0
- package/dist/lib/esm/obsidian/components/component-ex.mjs +18 -1
- package/dist/lib/esm/obsidian/components/menu-event-registrar-component.d.mts +7 -3
- package/dist/lib/esm/obsidian/components/menu-event-registrar-component.mjs +8 -4
- package/dist/lib/esm/obsidian/components/plugin-notice-component.d.mts +81 -19
- package/dist/lib/esm/obsidian/components/plugin-notice-component.mjs +80 -38
- package/dist/lib/esm/obsidian/css-class.d.mts +12 -3
- package/dist/lib/esm/obsidian/css-class.mjs +4 -2
- package/dist/lib/esm/obsidian/desktop-demo-vault-opener.mjs +5 -7
- package/dist/lib/esm/obsidian/events.d.mts +98 -0
- package/dist/lib/esm/obsidian/events.mjs +55 -0
- package/dist/lib/esm/obsidian/i18n/locales/en.d.mts +0 -1
- package/dist/lib/esm/obsidian/i18n/locales/en.mjs +1 -2
- package/dist/lib/esm/obsidian/i18n/locales/translations-map.d.mts +0 -1
- package/dist/lib/esm/obsidian/index.d.mts +1 -0
- package/dist/lib/esm/obsidian/index.mjs +3 -1
- package/dist/lib/esm/obsidian/menu-event-registrar.d.mts +7 -3
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.d.mts +11 -0
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/change-extension-plugin.mjs +29 -32
- package/dist/lib/esm/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +40 -55
- package/dist/lib/esm/script-utils/linters/eslint-no-restricted-syntax.mjs +1 -5
- package/dist/lib/esm/type.d.mts +56 -36
- package/dist/lib/esm/type.mjs +30 -11
- package/dist/styles.css +5 -18
- package/obsidian/events/package.json +6 -0
- package/package.json +18 -15
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Menu event registrar.
|
|
6
6
|
*/
|
|
7
7
|
import type { Editor, MarkdownFileInfo, Menu, TAbstractFile, WorkspaceLeaf } from 'obsidian' with { 'resolution-mode': 'import' };
|
|
8
|
+
import type { DisposableEx } from '../disposable.cjs';
|
|
8
9
|
/**
|
|
9
10
|
* Handler for the editor context menu event.
|
|
10
11
|
*
|
|
@@ -39,18 +40,21 @@ export interface MenuEventRegistrar {
|
|
|
39
40
|
* Registers a handler for the editor context menu event.
|
|
40
41
|
*
|
|
41
42
|
* @param handler - The handler to register.
|
|
43
|
+
* @returns A {@link DisposableEx} that unregisters the handler when disposed.
|
|
42
44
|
*/
|
|
43
|
-
registerEditorMenuEventHandler(handler: EditorMenuEventHandler):
|
|
45
|
+
registerEditorMenuEventHandler(handler: EditorMenuEventHandler): DisposableEx;
|
|
44
46
|
/**
|
|
45
47
|
* Registers a handler for the single-file context menu event.
|
|
46
48
|
*
|
|
47
49
|
* @param handler - The handler to register.
|
|
50
|
+
* @returns A {@link DisposableEx} that unregisters the handler when disposed.
|
|
48
51
|
*/
|
|
49
|
-
registerFileMenuEventHandler(handler: FileMenuEventHandler):
|
|
52
|
+
registerFileMenuEventHandler(handler: FileMenuEventHandler): DisposableEx;
|
|
50
53
|
/**
|
|
51
54
|
* Registers a handler for the multi-file context menu event.
|
|
52
55
|
*
|
|
53
56
|
* @param handler - The handler to register.
|
|
57
|
+
* @returns A {@link DisposableEx} that unregisters the handler when disposed.
|
|
54
58
|
*/
|
|
55
|
-
registerFilesMenuEventHandler(handler: FilesMenuEventHandler):
|
|
59
|
+
registerFilesMenuEventHandler(handler: FilesMenuEventHandler): DisposableEx;
|
|
56
60
|
}
|
|
@@ -125,7 +125,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
125
125
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
126
126
|
var change_extension_plugin_exports = {};
|
|
127
127
|
__export(change_extension_plugin_exports, {
|
|
128
|
-
changeExtensionPlugin: () => changeExtensionPlugin
|
|
128
|
+
changeExtensionPlugin: () => changeExtensionPlugin,
|
|
129
|
+
rewriteImportPathExtensions: () => rewriteImportPathExtensions
|
|
129
130
|
});
|
|
130
131
|
module.exports = __toCommonJS(change_extension_plugin_exports);
|
|
131
132
|
var import_promises = require('node:fs/promises');
|
|
@@ -145,44 +146,41 @@ function changeExtensionPlugin(extension) {
|
|
|
145
146
|
searchValue: /\.js$/g,
|
|
146
147
|
str: file.path
|
|
147
148
|
});
|
|
148
|
-
|
|
149
|
-
replacer: ({ capturedGroupArgs: [importPath = ""] }) => {
|
|
150
|
-
if (importPath.endsWith(import_obsidian_dev_utils_repo_paths.ObsidianDevUtilsRepoPaths.DtsExtension)) {
|
|
151
|
-
return "undefined";
|
|
152
|
-
}
|
|
153
|
-
const fixedImportPath = (0, import_string.replaceAll)({
|
|
154
|
-
replacer: extension,
|
|
155
|
-
searchValue: /\.ts$/g,
|
|
156
|
-
str: importPath
|
|
157
|
-
});
|
|
158
|
-
return `require('${fixedImportPath}')`;
|
|
159
|
-
},
|
|
160
|
-
searchValue: /require\(["'](?<ImportPath>.+?)["']\)/g,
|
|
161
|
-
str: file.text
|
|
162
|
-
});
|
|
163
|
-
newText = (0, import_string.replaceAll)({
|
|
164
|
-
replacer: ({ capturedGroupArgs: [importPath = ""] }) => {
|
|
165
|
-
if (importPath.endsWith(import_obsidian_dev_utils_repo_paths.ObsidianDevUtilsRepoPaths.DtsExtension)) {
|
|
166
|
-
return "undefined";
|
|
167
|
-
}
|
|
168
|
-
const fixedImportPath = (0, import_string.replaceAll)({
|
|
169
|
-
replacer: extension,
|
|
170
|
-
searchValue: /\.ts$/g,
|
|
171
|
-
str: importPath
|
|
172
|
-
});
|
|
173
|
-
return `from "${fixedImportPath}"`;
|
|
174
|
-
},
|
|
175
|
-
searchValue: /from "(?<ImportPath>.+?)"/g,
|
|
176
|
-
str: newText
|
|
177
|
-
});
|
|
149
|
+
const newText = rewriteImportPathExtensions(file.text, extension);
|
|
178
150
|
await (0, import_promises.writeFile)(newPath, newText);
|
|
179
151
|
}
|
|
180
152
|
});
|
|
181
153
|
}
|
|
182
154
|
};
|
|
183
155
|
}
|
|
156
|
+
function rewriteImportPathExtensions(text, extension) {
|
|
157
|
+
let newText = (0, import_string.replaceAll)({
|
|
158
|
+
replacer: ({ capturedGroupArgs: [importPath = ""] }) => `require('${rewriteTsExtension(importPath, extension)}')`,
|
|
159
|
+
searchValue: /require\(["'](?<ImportPath>.+?)["']\)/g,
|
|
160
|
+
str: text
|
|
161
|
+
});
|
|
162
|
+
newText = (0, import_string.replaceAll)({
|
|
163
|
+
replacer: ({ capturedGroupArgs: [importPath = ""] }) => `from "${rewriteTsExtension(importPath, extension)}"`,
|
|
164
|
+
searchValue: /from "(?<ImportPath>.+?)"/g,
|
|
165
|
+
str: newText
|
|
166
|
+
});
|
|
167
|
+
newText = (0, import_string.replaceAll)({
|
|
168
|
+
replacer: ({ capturedGroupArgs: [importPath = ""] }) => `import("${rewriteTsExtension(importPath, extension)}")`,
|
|
169
|
+
searchValue: /import\(["'](?<ImportPath>.+?)["']\)/g,
|
|
170
|
+
str: newText
|
|
171
|
+
});
|
|
172
|
+
return newText;
|
|
173
|
+
}
|
|
174
|
+
function rewriteTsExtension(importPath, extension) {
|
|
175
|
+
return (0, import_string.replaceAll)({
|
|
176
|
+
replacer: extension,
|
|
177
|
+
searchValue: /\.ts$/g,
|
|
178
|
+
str: importPath
|
|
179
|
+
});
|
|
180
|
+
}
|
|
184
181
|
// Annotate the CommonJS export names for ESM import in node:
|
|
185
182
|
0 && (module.exports = {
|
|
186
|
-
changeExtensionPlugin
|
|
183
|
+
changeExtensionPlugin,
|
|
184
|
+
rewriteImportPathExtensions
|
|
187
185
|
});
|
|
188
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY2hhbmdlLWV4dGVuc2lvbi1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgY2hhbmdlcyB0aGUgZXh0ZW5zaW9uIG9mIEphdmFTY3JpcHQgZmlsZXMgYWZ0ZXIgdGhlIGJ1aWxkIHByb2Nlc3MuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHsgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5cbmltcG9ydCB7IHJlcGxhY2VBbGwgfSBmcm9tICcuLi8uLi8uLi9zdHJpbmcudHMnO1xuaW1wb3J0IHsgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocyB9IGZyb20gJy4uLy4uL29ic2lkaWFuLWRldi11dGlscy1yZXBvLXBhdGhzLnRzJztcblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIGVzYnVpbGQgcGx1Z2luIHRoYXQgcmV3cml0ZXMgZmlsZSBleHRlbnNpb25zIGF0IGJ1aWxkIHRpbWU7IHJlcXVpcmVzIGEgbGl2ZSBlc2J1aWxkIGNvbnRleHQuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IGNoYW5nZXMgdGhlIGV4dGVuc2lvbiBvZiBKYXZhU2NyaXB0IGZpbGVzIGFmdGVyIHRoZSBidWlsZCBwcm9jZXNzLlxuICpcbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgZXh0ZW5zaW9uIHRvIGNoYW5nZSB0aGUgZmlsZXMgdG8uXG4gKiBAcmV0dXJucyBBbiBlc2J1aWxkIGBQbHVnaW5gIG9iamVjdCB0aGF0IGhhbmRsZXMgdGhlIHJlbmFtaW5nIGFuZCBtb2RpZmljYXRpb24gb2Ygb3V0cHV0IGZpbGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlRXh0ZW5zaW9uUGx1Z2luKGV4dGVuc2lvbjogc3RyaW5nKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnY2hhbmdlLWV4dGVuc2lvbicsXG4gICAgc2V0dXAoYnVpbGQpOiB2b2lkIHtcbiAgICAgIGJ1aWxkLm9uRW5kKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIHJlc3VsdC5vdXRwdXRGaWxlcyA/PyBbXSkge1xuICAgICAgICAgIGlmICghZmlsZS5wYXRoLmVuZHNXaXRoKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuSnNFeHRlbnNpb24pIHx8IGZpbGUucGF0aC5lbmRzV2l0aChPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRqc0V4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5ld1BhdGggPSByZXBsYWNlQWxsKHtcbiAgICAgICAgICAgIHJlcGxhY2VyOiBleHRlbnNpb24sXG4gICAgICAgICAgICBzZWFyY2hWYWx1ZTogL1xcLmpzJC9nLFxuICAgICAgICAgICAgc3RyOiBmaWxlLnBhdGhcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IG5ld1RleHQgPSByZXdyaXRlSW1wb3J0UGF0aEV4dGVuc2lvbnMoZmlsZS50ZXh0LCBleHRlbnNpb24pO1xuXG4gICAgICAgICAgYXdhaXQgd3JpdGVGaWxlKG5ld1BhdGgsIG5ld1RleHQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG5cbi8qKlxuICogUmV3cml0ZXMgdGhlIGV4dGVuc2lvbiBvZiBldmVyeSBpbXBvcnQtbGlrZSBwYXRoIGluIGFuIGVtaXR0ZWQgbW9kdWxlJ3MgdGV4dCBmcm9tIGAudHNgIHRvIHRoZSB0YXJnZXRcbiAqIG91dHB1dCBleHRlbnNpb24gKGAubWpzYCAvIGAuY2pzYCksIHNvIHRoZSBtdWx0aS1maWxlIGBkaXN0L2xpYmAgYnVpbGQgcmVmZXJlbmNlcyBpdHMgcmVhbCBzaWJsaW5ncy5cbiAqXG4gKiBDb3ZlcnMgYHJlcXVpcmUoJ1x1MjAyNicpYCwgc3RhdGljIGBmcm9tIFwiXHUyMDI2XCJgLCBhbmQgZHluYW1pYyBgaW1wb3J0KFwiXHUyMDI2XCIpYCBvY2N1cnJlbmNlcy5cbiAqXG4gKiBAcGFyYW0gdGV4dCAtIFRoZSBlbWl0dGVkIG1vZHVsZSB0ZXh0IHRvIHJld3JpdGUuXG4gKiBAcGFyYW0gZXh0ZW5zaW9uIC0gVGhlIG91dHB1dCBleHRlbnNpb24gdG8gcmV3cml0ZSBgLnRzYCBwYXRocyB0byAoZS5nLiBgLm1qc2Agb3IgYC5janNgKS5cbiAqIEByZXR1cm5zIFRoZSByZXdyaXR0ZW4gbW9kdWxlIHRleHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXdyaXRlSW1wb3J0UGF0aEV4dGVuc2lvbnModGV4dDogc3RyaW5nLCBleHRlbnNpb246IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBuZXdUZXh0ID0gcmVwbGFjZUFsbCh7XG4gICAgcmVwbGFjZXI6ICh7IGNhcHR1cmVkR3JvdXBBcmdzOiBbaW1wb3J0UGF0aCA9ICcnXSB9KSA9PiBgcmVxdWlyZSgnJHtyZXdyaXRlVHNFeHRlbnNpb24oaW1wb3J0UGF0aCwgZXh0ZW5zaW9uKX0nKWAsXG4gICAgc2VhcmNoVmFsdWU6IC9yZXF1aXJlXFwoW1wiJ10oPzxJbXBvcnRQYXRoPi4rPylbXCInXVxcKS9nLFxuICAgIHN0cjogdGV4dFxuICB9KTtcblxuICBuZXdUZXh0ID0gcmVwbGFjZUFsbCh7XG4gICAgcmVwbGFjZXI6ICh7IGNhcHR1cmVkR3JvdXBBcmdzOiBbaW1wb3J0UGF0aCA9ICcnXSB9KSA9PiBgZnJvbSBcIiR7cmV3cml0ZVRzRXh0ZW5zaW9uKGltcG9ydFBhdGgsIGV4dGVuc2lvbil9XCJgLFxuICAgIHNlYXJjaFZhbHVlOiAvZnJvbSBcIig/PEltcG9ydFBhdGg+Lis/KVwiL2csXG4gICAgc3RyOiBuZXdUZXh0XG4gIH0pO1xuXG4gIG5ld1RleHQgPSByZXBsYWNlQWxsKHtcbiAgICByZXBsYWNlcjogKHsgY2FwdHVyZWRHcm91cEFyZ3M6IFtpbXBvcnRQYXRoID0gJyddIH0pID0+IGBpbXBvcnQoXCIke3Jld3JpdGVUc0V4dGVuc2lvbihpbXBvcnRQYXRoLCBleHRlbnNpb24pfVwiKWAsXG4gICAgc2VhcmNoVmFsdWU6IC9pbXBvcnRcXChbXCInXSg/PEltcG9ydFBhdGg+Lis/KVtcIiddXFwpL2csXG4gICAgc3RyOiBuZXdUZXh0XG4gIH0pO1xuXG4gIHJldHVybiBuZXdUZXh0O1xufVxuXG4vKipcbiAqIFJld3JpdGVzIGEgdHJhaWxpbmcgYC50c2AgZXh0ZW5zaW9uIGluIGEgc2luZ2xlIGltcG9ydCBwYXRoIHRvIHRoZSB0YXJnZXQgb3V0cHV0IGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0gaW1wb3J0UGF0aCAtIFRoZSBjYXB0dXJlZCBpbXBvcnQgcGF0aC5cbiAqIEBwYXJhbSBleHRlbnNpb24gLSBUaGUgb3V0cHV0IGV4dGVuc2lvbiB0byByZXdyaXRlIGEgdHJhaWxpbmcgYC50c2AgdG8uXG4gKiBAcmV0dXJucyBUaGUgcmV3cml0dGVuIHBhdGguXG4gKi9cbmZ1bmN0aW9uIHJld3JpdGVUc0V4dGVuc2lvbihpbXBvcnRQYXRoOiBzdHJpbmcsIGV4dGVuc2lvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgIHJlcGxhY2VyOiBleHRlbnNpb24sXG4gICAgc2VhcmNoVmFsdWU6IC9cXC50cyQvZyxcbiAgICBzdHI6IGltcG9ydFBhdGhcbiAgfSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHNCQUEwQjtBQUUxQixvQkFBMkI7QUFDM0IsMkNBQTBDO0FBVW5DLFNBQVMsc0JBQXNCLFdBQTJCO0FBQy9ELFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU0sT0FBYTtBQUNqQixZQUFNLE1BQU0sT0FBTyxXQUFXO0FBQzVCLG1CQUFXLFFBQVEsT0FBTyxlQUFlLENBQUMsR0FBRztBQUMzQyxjQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsK0RBQTBCLFdBQVcsS0FBSyxLQUFLLEtBQUssU0FBUywrREFBMEIsWUFBWSxHQUFHO0FBQzVIO0FBQUEsVUFDRjtBQUVBLGdCQUFNLGNBQVUsMEJBQVc7QUFBQSxZQUN6QixVQUFVO0FBQUEsWUFDVixhQUFhO0FBQUEsWUFDYixLQUFLLEtBQUs7QUFBQSxVQUNaLENBQUM7QUFFRCxnQkFBTSxVQUFVLDRCQUE0QixLQUFLLE1BQU0sU0FBUztBQUVoRSxvQkFBTSwyQkFBVSxTQUFTLE9BQU87QUFBQSxRQUNsQztBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7QUFjTyxTQUFTLDRCQUE0QixNQUFjLFdBQTJCO0FBQ25GLE1BQUksY0FBVSwwQkFBVztBQUFBLElBQ3ZCLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sWUFBWSxtQkFBbUIsWUFBWSxTQUFTLENBQUM7QUFBQSxJQUM3RyxhQUFhO0FBQUEsSUFDYixLQUFLO0FBQUEsRUFDUCxDQUFDO0FBRUQsZ0JBQVUsMEJBQVc7QUFBQSxJQUNuQixVQUFVLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLFNBQVMsbUJBQW1CLFlBQVksU0FBUyxDQUFDO0FBQUEsSUFDMUcsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1AsQ0FBQztBQUVELGdCQUFVLDBCQUFXO0FBQUEsSUFDbkIsVUFBVSxDQUFDLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxXQUFXLG1CQUFtQixZQUFZLFNBQVMsQ0FBQztBQUFBLElBQzVHLGFBQWE7QUFBQSxJQUNiLEtBQUs7QUFBQSxFQUNQLENBQUM7QUFFRCxTQUFPO0FBQ1Q7QUFTQSxTQUFTLG1CQUFtQixZQUFvQixXQUEyQjtBQUN6RSxhQUFPLDBCQUFXO0FBQUEsSUFDaEIsVUFBVTtBQUFBLElBQ1YsYUFBYTtBQUFBLElBQ2IsS0FBSztBQUFBLEVBQ1AsQ0FBQztBQUNIOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -12,3 +12,14 @@ import type { Plugin } from 'esbuild' with { 'resolution-mode': 'import' };
|
|
|
12
12
|
* @returns An esbuild `Plugin` object that handles the renaming and modification of output files.
|
|
13
13
|
*/
|
|
14
14
|
export declare function changeExtensionPlugin(extension: string): Plugin;
|
|
15
|
+
/**
|
|
16
|
+
* Rewrites the extension of every import-like path in an emitted module's text from `.ts` to the target
|
|
17
|
+
* output extension (`.mjs` / `.cjs`), so the multi-file `dist/lib` build references its real siblings.
|
|
18
|
+
*
|
|
19
|
+
* Covers `require('…')`, static `from "…"`, and dynamic `import("…", { with: { 'resolution-mode': 'import' } })` occurrences.
|
|
20
|
+
*
|
|
21
|
+
* @param text - The emitted module text to rewrite.
|
|
22
|
+
* @param extension - The output extension to rewrite `.ts` paths to (e.g. `.mjs` or `.cjs`).
|
|
23
|
+
* @returns The rewritten module text.
|
|
24
|
+
*/
|
|
25
|
+
export declare function rewriteImportPathExtensions(text: string, extension: string): string;
|
package/dist/lib/cjs/script-utils/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs
CHANGED
|
@@ -138,7 +138,6 @@ __export(copy_to_obsidian_plugins_folder_plugin_exports, {
|
|
|
138
138
|
copyToObsidianPluginsFolderPlugin: () => copyToObsidianPluginsFolderPlugin
|
|
139
139
|
});
|
|
140
140
|
module.exports = __toCommonJS(copy_to_obsidian_plugins_folder_plugin_exports);
|
|
141
|
-
var import_node_fs = require('node:fs');
|
|
142
141
|
var import_promises = require('node:fs/promises');
|
|
143
142
|
var import_node_process = __toESM(__extractDefault(require('node:process')), 1);
|
|
144
143
|
var import_obsidian_integration_testing = require('obsidian-integration-testing');
|
|
@@ -171,63 +170,16 @@ function copyToObsidianPluginsFolderPlugin(params) {
|
|
|
171
170
|
}
|
|
172
171
|
obsidianConfigFolder = (0, import_path.toPosixPath)(obsidianConfigFolder);
|
|
173
172
|
const pluginFolder = (0, import_path.join)(obsidianConfigFolder, "plugins", pluginName);
|
|
174
|
-
|
|
175
|
-
await (0, import_promises.mkdir)(pluginFolder, { recursive: true });
|
|
176
|
-
}
|
|
173
|
+
await (0, import_promises.mkdir)(pluginFolder, { recursive: true });
|
|
177
174
|
await (0, import_promises.cp)(distFolder, pluginFolder, { recursive: true });
|
|
178
|
-
|
|
179
|
-
if (!(0, import_node_fs.existsSync)(hotReloadFolder)) {
|
|
180
|
-
await (0, import_promises.mkdir)(hotReloadFolder, { recursive: true });
|
|
181
|
-
const hotReloadRepoUrl = "https://raw.githubusercontent.com/pjeby/hot-reload/master/";
|
|
182
|
-
for (const fileName of ["main.js", "manifest.json"]) {
|
|
183
|
-
const fileUrl = hotReloadRepoUrl + fileName;
|
|
184
|
-
const response = await fetch(fileUrl);
|
|
185
|
-
const text = await response.text();
|
|
186
|
-
await (0, import_promises.writeFile)((0, import_path.join)(hotReloadFolder, fileName), text);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
await enableCommunityPlugin({
|
|
190
|
-
obsidianConfigFolder,
|
|
191
|
-
pluginId: "hot-reload"
|
|
192
|
-
});
|
|
193
|
-
await enableCommunityPlugin({
|
|
175
|
+
await installAndEnableHotReload({
|
|
194
176
|
obsidianConfigFolder,
|
|
195
|
-
|
|
177
|
+
pluginName
|
|
196
178
|
});
|
|
197
179
|
});
|
|
198
180
|
}
|
|
199
181
|
};
|
|
200
182
|
}
|
|
201
|
-
async function enableCommunityPlugin(params) {
|
|
202
|
-
const { obsidianConfigFolder, pluginId } = params;
|
|
203
|
-
const communityPluginsPath = (0, import_path.join)(obsidianConfigFolder, "community-plugins.json");
|
|
204
|
-
let plugins = [];
|
|
205
|
-
if ((0, import_node_fs.existsSync)(communityPluginsPath)) {
|
|
206
|
-
const content = await (0, import_promises.readFile)(communityPluginsPath, "utf-8");
|
|
207
|
-
plugins = JSON.parse(content);
|
|
208
|
-
}
|
|
209
|
-
if (!plugins.includes(pluginId)) {
|
|
210
|
-
plugins.push(pluginId);
|
|
211
|
-
const JSON_INDENT = 2;
|
|
212
|
-
await (0, import_promises.writeFile)(communityPluginsPath, JSON.stringify(plugins, null, JSON_INDENT), "utf-8");
|
|
213
|
-
}
|
|
214
|
-
const vaultPath = (0, import_path.dirname)(obsidianConfigFolder);
|
|
215
|
-
try {
|
|
216
|
-
const transport = await getOrLaunchDevInstance(vaultPath);
|
|
217
|
-
await (0, import_obsidian_integration_testing.evalInObsidian)({
|
|
218
|
-
args: { pluginId },
|
|
219
|
-
// eslint-disable-next-line no-shadow -- No actual shadowing as the function is executed externally.
|
|
220
|
-
async fn({ app, pluginId: pluginId2 }) {
|
|
221
|
-
await app.plugins.enablePluginAndSave(pluginId2);
|
|
222
|
-
},
|
|
223
|
-
shouldSkipPreflightChecks: true,
|
|
224
|
-
transport,
|
|
225
|
-
vaultPath
|
|
226
|
-
});
|
|
227
|
-
} catch (e) {
|
|
228
|
-
(0, import_debug.getLibDebugger)("copyToObsidianPluginsFolderPlugin")(`Failed to live-enable plugin '${pluginId}'. It will be enabled on the next vault open.`, e);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
183
|
async function getOrLaunchDevInstance(vaultPath) {
|
|
232
184
|
devInstanceTransportPromise ??= launchDevInstance(vaultPath);
|
|
233
185
|
try {
|
|
@@ -237,6 +189,41 @@ async function getOrLaunchDevInstance(vaultPath) {
|
|
|
237
189
|
throw e;
|
|
238
190
|
}
|
|
239
191
|
}
|
|
192
|
+
async function installAndEnableHotReload(params) {
|
|
193
|
+
const {
|
|
194
|
+
obsidianConfigFolder,
|
|
195
|
+
pluginName
|
|
196
|
+
} = params;
|
|
197
|
+
const vaultPath = (0, import_path.dirname)(obsidianConfigFolder);
|
|
198
|
+
const transport = await getOrLaunchDevInstance(vaultPath);
|
|
199
|
+
await (0, import_obsidian_integration_testing.evalInObsidian)({
|
|
200
|
+
args: { pluginName },
|
|
201
|
+
// eslint-disable-next-line no-shadow -- No actual shadowing as the function is executed externally.
|
|
202
|
+
async fn({ app, obsidianModule, pluginName: pluginName2 }) {
|
|
203
|
+
const HOT_RELOAD_PLUGIN_ID = "hot-reload";
|
|
204
|
+
const COMMUNITY_PLUGINS_REGISTRY_URL = "https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json";
|
|
205
|
+
const { requestUrl } = obsidianModule;
|
|
206
|
+
if (!app.plugins.manifests[HOT_RELOAD_PLUGIN_ID]) {
|
|
207
|
+
const registryEntries = (await requestUrl(COMMUNITY_PLUGINS_REGISTRY_URL)).json;
|
|
208
|
+
const entry = registryEntries.find((candidate) => candidate.id === HOT_RELOAD_PLUGIN_ID);
|
|
209
|
+
if (!entry) {
|
|
210
|
+
throw new Error(`Plugin '${HOT_RELOAD_PLUGIN_ID}' was not found in the Obsidian community plugins registry.`);
|
|
211
|
+
}
|
|
212
|
+
const latestRelease = (await requestUrl(`https://api.github.com/repos/${entry.repo}/releases/latest`)).json;
|
|
213
|
+
const version = latestRelease.tag_name;
|
|
214
|
+
const manifest = (await requestUrl(`https://github.com/${entry.repo}/releases/download/${version}/manifest.json`)).json;
|
|
215
|
+
await app.plugins.installPlugin(entry.repo, version, manifest);
|
|
216
|
+
}
|
|
217
|
+
if (!app.plugins.enabledPlugins.has(HOT_RELOAD_PLUGIN_ID)) {
|
|
218
|
+
await app.plugins.enablePluginAndSave(HOT_RELOAD_PLUGIN_ID);
|
|
219
|
+
}
|
|
220
|
+
await app.plugins.enablePluginAndSave(pluginName2);
|
|
221
|
+
},
|
|
222
|
+
shouldSkipPreflightChecks: true,
|
|
223
|
+
transport,
|
|
224
|
+
vaultPath
|
|
225
|
+
});
|
|
226
|
+
}
|
|
240
227
|
async function launchDevInstance(vaultPath) {
|
|
241
228
|
const transport = await (0, import_obsidian_integration_testing.createTransportFromOptions)();
|
|
242
229
|
try {
|
|
@@ -272,4 +259,4 @@ function registerDevInstanceCleanup(transport) {
|
|
|
272
259
|
0 && (module.exports = {
|
|
273
260
|
copyToObsidianPluginsFolderPlugin
|
|
274
261
|
});
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY29weS10by1vYnNpZGlhbi1wbHVnaW5zLWZvbGRlci1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgYXV0b21hdGljYWxseSBjb3BpZXMgdGhlIGJ1aWxkIG91dHB1dFxuICogdG8gdGhlIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyIGR1cmluZyBkZXZlbG9wbWVudC4gVGhpcyBwbHVnaW4gaGVscHMgc3RyZWFtbGluZVxuICogdGhlIGRldmVsb3BtZW50IHdvcmtmbG93IGJ5IGVuc3VyaW5nIHRoYXQgdGhlIGxhdGVzdCBidWlsZCBpcyBhbHdheXMgYXZhaWxhYmxlXG4gKiBpbiB0aGUgY29ycmVjdCBPYnNpZGlhbiBmb2xkZXIgZm9yIHRlc3RpbmcgYW5kIHVzZS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZCBwbHVnaW4gdGhhdCBjb3BpZXMgYnVpbGQgb3V0cHV0IHRvIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyOyByZXF1aXJlcyBhIGxpdmUgZXNidWlsZCBjb250ZXh0LiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblRyYW5zcG9ydCB9IGZyb20gJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnO1xuXG5pbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQge1xuICBjcCxcbiAgbWtkaXIsXG4gIHJlYWRGaWxlLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgcHJvY2VzcyBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHtcbiAgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMsXG4gIGV2YWxJbk9ic2lkaWFuXG59IGZyb20gJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnO1xuXG5pbXBvcnQgeyBnZXRMaWJEZWJ1Z2dlciB9IGZyb20gJy4uLy4uLy4uL2RlYnVnLnRzJztcbmltcG9ydCB7XG4gIGRpcm5hbWUsXG4gIGpvaW4sXG4gIHRvUG9zaXhQYXRoXG59IGZyb20gJy4uLy4uLy4uL3BhdGgudHMnO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW59LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyIHdoZXJlIHRoZSBidWlsdCBmaWxlcyBhcmUgbG9jYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3RGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgYnVpbGQgaXMgYSBwcm9kdWN0aW9uIGJ1aWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNQcm9kdWN0aW9uQnVpbGQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgb2YgdGhlIE9ic2lkaWFuIGNvbmZpZ3VyYXRpb24uIElmIG5vdCBwcm92aWRlZCwgdGhlIHBsdWdpbiB3aWxsIG5vdCBjb3B5IGZpbGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5Db25maWdGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIE9ic2lkaWFuIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZW5hYmxlQ29tbXVuaXR5UGx1Z2lufS5cbiAqL1xuaW50ZXJmYWNlIEVuYWJsZUNvbW11bml0eVBsdWdpblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyIG9mIHRoZSBPYnNpZGlhbiBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5Db25maWdGb2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBjb21tdW5pdHkgcGx1Z2luIHRvIGVuYWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG59XG5cbi8vIFRoZSBgbnBtIHJ1biBkZXZgLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlOiBsYXVuY2hlZCBvbiB0aGUgZmlyc3QgcmVidWlsZCBhbmQgcmV1c2VkIGFjcm9zcyByZWJ1aWxkcy5cbi8vIEl0IGlzIGNsb3NlZCB3aGVuIHRoZSBgbnBtIHJ1biBkZXZgIHByb2Nlc3MgdGVybWluYXRlcyAoc2VlIGByZWdpc3RlckRldkluc3RhbmNlQ2xlYW51cGApLlxubGV0IGRldkluc3RhbmNlVHJhbnNwb3J0UHJvbWlzZTogUHJvbWlzZTxPYnNpZGlhblRyYW5zcG9ydD4gfCB1bmRlZmluZWQ7XG5sZXQgaXNEZXZJbnN0YW5jZUNsZWFudXBSZWdpc3RlcmVkID0gZmFsc2U7XG5sZXQgaXNEZXZJbnN0YW5jZURpc3Bvc2VkID0gZmFsc2U7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IGNvcGllcyB0aGUgYnVpbGQgb3V0cHV0IHRvIHRoZSBPYnNpZGlhbiBwbHVnaW5zIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEFuIGVzYnVpbGQgYFBsdWdpbmAgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luKHBhcmFtczogQ29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luUGFyYW1zKTogUGx1Z2luIHtcbiAgY29uc3Qge1xuICAgIGRpc3RGb2xkZXIsXG4gICAgaXNQcm9kdWN0aW9uQnVpbGQsXG4gICAgcGx1Z2luTmFtZVxuICB9ID0gcGFyYW1zO1xuICBsZXQge1xuICAgIG9ic2lkaWFuQ29uZmlnRm9sZGVyXG4gIH0gPSBwYXJhbXM7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2NvcHktdG8tb2JzaWRpYW4tcGx1Z2lucy1mb2xkZXInLFxuICAgIHNldHVwKGJ1aWxkKTogdm9pZCB7XG4gICAgICBidWlsZC5vbkVuZChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChpc1Byb2R1Y3Rpb25CdWlsZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb2JzaWRpYW5Db25maWdGb2xkZXIpIHtcbiAgICAgICAgICBnZXRMaWJEZWJ1Z2dlcignY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luJykoXG4gICAgICAgICAgICAnTm8gT2JzaWRpYW4gY29uZmlnIGZvbGRlciBjb25maWd1cmVkLiBgT0JTSURJQU5fQ09ORklHX0ZPTERFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCBpbiBzeXN0ZW0gb3IgaW4gYC5lbnZgIGZpbGUuIFRoZSBjb21waWxlZCBwbHVnaW4gd2lsbCBub3QgYmUgY29waWVkIGludG8gT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIuJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgb2JzaWRpYW5Db25maWdGb2xkZXIgPSB0b1Bvc2l4UGF0aChvYnNpZGlhbkNvbmZpZ0ZvbGRlcik7XG5cbiAgICAgICAgY29uc3QgcGx1Z2luRm9sZGVyID0gam9pbihvYnNpZGlhbkNvbmZpZ0ZvbGRlciwgJ3BsdWdpbnMnLCBwbHVnaW5OYW1lKTtcblxuICAgICAgICBpZiAoIWV4aXN0c1N5bmMocGx1Z2luRm9sZGVyKSkge1xuICAgICAgICAgIGF3YWl0IG1rZGlyKHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBjcChkaXN0Rm9sZGVyLCBwbHVnaW5Gb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgICAgIGNvbnN0IGhvdFJlbG9hZEZvbGRlciA9IGpvaW4ob2JzaWRpYW5Db25maWdGb2xkZXIsICdwbHVnaW5zL2hvdC1yZWxvYWQnKTtcbiAgICAgICAgaWYgKCFleGlzdHNTeW5jKGhvdFJlbG9hZEZvbGRlcikpIHtcbiAgICAgICAgICBhd2FpdCBta2Rpcihob3RSZWxvYWRGb2xkZXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnN0IGhvdFJlbG9hZFJlcG9VcmwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3BqZWJ5L2hvdC1yZWxvYWQvbWFzdGVyLyc7XG4gICAgICAgICAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBbJ21haW4uanMnLCAnbWFuaWZlc3QuanNvbiddKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlVXJsID0gaG90UmVsb2FkUmVwb1VybCArIGZpbGVOYW1lO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBXZSBydW4gdGhpcyBvdXRzaWRlIG9mIE9ic2lkaWFuLCBzbyB3ZSBkb24ndCBoYXZlIGByZXF1ZXN0VXJsKClgLlxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChmaWxlVXJsKTtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoam9pbihob3RSZWxvYWRGb2xkZXIsIGZpbGVOYW1lKSwgdGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgZW5hYmxlQ29tbXVuaXR5UGx1Z2luKHtcbiAgICAgICAgICBvYnNpZGlhbkNvbmZpZ0ZvbGRlcixcbiAgICAgICAgICBwbHVnaW5JZDogJ2hvdC1yZWxvYWQnXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBlbmFibGVDb21tdW5pdHlQbHVnaW4oe1xuICAgICAgICAgIG9ic2lkaWFuQ29uZmlnRm9sZGVyLFxuICAgICAgICAgIHBsdWdpbklkOiBwbHVnaW5OYW1lXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIEVuYWJsZXMgYSBjb21tdW5pdHkgcGx1Z2luIGluIHRoZSBPYnNpZGlhbiBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgZW5hYmxpbmcgdGhlIGNvbW11bml0eSBwbHVnaW4uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHBsdWdpbiBpcyBlbmFibGVkLlxuICovXG5hc3luYyBmdW5jdGlvbiBlbmFibGVDb21tdW5pdHlQbHVnaW4ocGFyYW1zOiBFbmFibGVDb21tdW5pdHlQbHVnaW5QYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBvYnNpZGlhbkNvbmZpZ0ZvbGRlciwgcGx1Z2luSWQgfSA9IHBhcmFtcztcbiAgY29uc3QgY29tbXVuaXR5UGx1Z2luc1BhdGggPSBqb2luKG9ic2lkaWFuQ29uZmlnRm9sZGVyLCAnY29tbXVuaXR5LXBsdWdpbnMuanNvbicpO1xuICBsZXQgcGx1Z2luczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKGV4aXN0c1N5bmMoY29tbXVuaXR5UGx1Z2luc1BhdGgpKSB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGNvbW11bml0eVBsdWdpbnNQYXRoLCAndXRmLTgnKTtcbiAgICBwbHVnaW5zID0gSlNPTi5wYXJzZShjb250ZW50KSBhcyBzdHJpbmdbXTtcbiAgfVxuXG4gIGlmICghcGx1Z2lucy5pbmNsdWRlcyhwbHVnaW5JZCkpIHtcbiAgICBwbHVnaW5zLnB1c2gocGx1Z2luSWQpO1xuICAgIGNvbnN0IEpTT05fSU5ERU5UID0gMjtcbiAgICBhd2FpdCB3cml0ZUZpbGUoY29tbXVuaXR5UGx1Z2luc1BhdGgsIEpTT04uc3RyaW5naWZ5KHBsdWdpbnMsIG51bGwsIEpTT05fSU5ERU5UKSwgJ3V0Zi04Jyk7XG4gIH1cblxuICBjb25zdCB2YXVsdFBhdGggPSBkaXJuYW1lKG9ic2lkaWFuQ29uZmlnRm9sZGVyKTtcblxuICAvLyBMaXZlLWVuYWJsaW5nIGlzIGJlc3QtZWZmb3J0OiB0aGUgcGx1Z2luIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBpbiBgY29tbXVuaXR5LXBsdWdpbnMuanNvbmAsIHNvIGl0IGlzIGVuYWJsZWQgb24gdGhlIG5leHQgdmF1bHQgb3BlbiBldmVuIGlmIHRoaXMgZmFpbHMgKGFuZCBob3QtcmVsb2FkIHBpY2tzIHVwIHJlYnVpbGRzIG1lYW53aGlsZSkuXG4gIHRyeSB7XG4gICAgY29uc3QgdHJhbnNwb3J0ID0gYXdhaXQgZ2V0T3JMYXVuY2hEZXZJbnN0YW5jZSh2YXVsdFBhdGgpO1xuICAgIGF3YWl0IGV2YWxJbk9ic2lkaWFuKHtcbiAgICAgIGFyZ3M6IHsgcGx1Z2luSWQgfSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3cgLS0gTm8gYWN0dWFsIHNoYWRvd2luZyBhcyB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgZXh0ZXJuYWxseS5cbiAgICAgIGFzeW5jIGZuKHsgYXBwLCBwbHVnaW5JZCB9KSB7XG4gICAgICAgIGF3YWl0IGFwcC5wbHVnaW5zLmVuYWJsZVBsdWdpbkFuZFNhdmUocGx1Z2luSWQpO1xuICAgICAgfSxcbiAgICAgIHNob3VsZFNraXBQcmVmbGlnaHRDaGVja3M6IHRydWUsXG4gICAgICB0cmFuc3BvcnQsXG4gICAgICB2YXVsdFBhdGhcbiAgICB9KTtcbiAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgIGdldExpYkRlYnVnZ2VyKCdjb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW4nKShgRmFpbGVkIHRvIGxpdmUtZW5hYmxlIHBsdWdpbiAnJHtwbHVnaW5JZH0nLiBJdCB3aWxsIGJlIGVuYWJsZWQgb24gdGhlIG5leHQgdmF1bHQgb3Blbi5gLCBlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGBucG0gcnVuIGRldmAtb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgZm9yIHRoZSBnaXZlbiB2YXVsdCwgbGF1bmNoaW5nIGl0IG9uIGZpcnN0IHVzZSBhbmRcbiAqIHJldXNpbmcgaXQgb24gc3Vic2VxdWVudCByZWJ1aWxkcy5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlciB0byBvcGVuLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBvd25lZCB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnR9LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRPckxhdW5jaERldkluc3RhbmNlKHZhdWx0UGF0aDogc3RyaW5nKTogUHJvbWlzZTxPYnNpZGlhblRyYW5zcG9ydD4ge1xuICBkZXZJbnN0YW5jZVRyYW5zcG9ydFByb21pc2UgPz89IGxhdW5jaERldkluc3RhbmNlKHZhdWx0UGF0aCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGRldkluc3RhbmNlVHJhbnNwb3J0UHJvbWlzZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIENsZWFyIHRoZSBjYWNoZSBzbyBhIGxhdGVyIHJlYnVpbGQgcmV0cmllcyB0aGUgbGF1bmNoLlxuICAgIGRldkluc3RhbmNlVHJhbnNwb3J0UHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICB0aHJvdyBlO1xuICB9XG59XG5cbi8qKlxuICogTGF1bmNoZXMgYSBmcmVzaCBvd25lZCBPYnNpZGlhbiBpbnN0YW5jZSAoaXNvbGF0ZWQgdXNlci1kYXRhIGRpcikgYW5kIG9wZW5zIHRoZSBnaXZlbiB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlciB0byBvcGVuLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBsYXVuY2hlZCB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnR9LlxuICovXG5hc3luYyBmdW5jdGlvbiBsYXVuY2hEZXZJbnN0YW5jZSh2YXVsdFBhdGg6IHN0cmluZyk6IFByb21pc2U8T2JzaWRpYW5UcmFuc3BvcnQ+IHtcbiAgY29uc3QgdHJhbnNwb3J0ID0gYXdhaXQgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMoKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0cmFuc3BvcnQucmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdHJhbnNwb3J0LmRpc3Bvc2VTeW5jPy4oKTtcbiAgICB0aHJvdyBlO1xuICB9XG4gIHJlZ2lzdGVyRGV2SW5zdGFuY2VDbGVhbnVwKHRyYW5zcG9ydCk7XG4gIHJldHVybiB0cmFuc3BvcnQ7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHByb2Nlc3MtZXhpdCBhbmQgc2lnbmFsIGhhbmRsZXJzIChvbmNlKSB0aGF0IHN5bmNocm9ub3VzbHkgY2xvc2UgdGhlIG93bmVkIE9ic2lkaWFuXG4gKiBpbnN0YW5jZSB3aGVuIHRoZSBgbnBtIHJ1biBkZXZgIHByb2Nlc3MgdGVybWluYXRlcy5cbiAqXG4gKiBAcGFyYW0gdHJhbnNwb3J0IC0gVGhlIG93bmVkIHRyYW5zcG9ydCB0byBkaXNwb3NlIG9uIHNodXRkb3duLlxuICovXG5mdW5jdGlvbiByZWdpc3RlckRldkluc3RhbmNlQ2xlYW51cCh0cmFuc3BvcnQ6IE9ic2lkaWFuVHJhbnNwb3J0KTogdm9pZCB7XG4gIGlmIChpc0Rldkluc3RhbmNlQ2xlYW51cFJlZ2lzdGVyZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaXNEZXZJbnN0YW5jZUNsZWFudXBSZWdpc3RlcmVkID0gdHJ1ZTtcblxuICAvLyBgZXhpdGAgY292ZXJzIGFueSBgcHJvY2Vzcy5leGl0KClgLCBidXQgYSBkZWZhdWx0IEN0cmwrQyB0ZXJtaW5hdGVzIFdJVEhPVVQgZmlyaW5nIGBleGl0YCwgc28gdGhlIHNpZ25hbCBoYW5kbGVycyBndWFyYW50ZWUgdGhlIG93bmVkIE9ic2lkaWFuIGlzIGtpbGxlZCBvbiBzaHV0ZG93bi5cbiAgcHJvY2Vzcy5vbignZXhpdCcsIGRpc3Bvc2VEZXZJbnN0YW5jZSk7XG4gIGZvciAoY29uc3Qgc2lnbmFsIG9mIFsnU0lHSFVQJywgJ1NJR0lOVCcsICdTSUdURVJNJ10gYXMgY29uc3QpIHtcbiAgICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCAoKSA9PiB7XG4gICAgICBkaXNwb3NlRGV2SW5zdGFuY2UoKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcG9zZURldkluc3RhbmNlKCk6IHZvaWQge1xuICAgIGlmIChpc0Rldkluc3RhbmNlRGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNEZXZJbnN0YW5jZURpc3Bvc2VkID0gdHJ1ZTtcbiAgICB0cmFuc3BvcnQuZGlzcG9zZVN5bmM/LigpO1xuICB9XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBY0EscUJBQTJCO0FBQzNCLHNCQUtPO0FBQ1AsMEJBQW9CO0FBQ3BCLDBDQUdPO0FBRVAsbUJBQStCO0FBQy9CLGtCQUlPO0FBNENQLElBQUk7QUFDSixJQUFJLGlDQUFpQztBQUNyQyxJQUFJLHdCQUF3QjtBQVFyQixTQUFTLGtDQUFrQyxRQUF5RDtB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
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9idW5kbGVycy9lc2J1aWxkLWltcGwvY29weS10by1vYnNpZGlhbi1wbHVnaW5zLWZvbGRlci1wbHVnaW4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgYXV0b21hdGljYWxseSBjb3BpZXMgdGhlIGJ1aWxkIG91dHB1dFxuICogdG8gdGhlIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyIGR1cmluZyBkZXZlbG9wbWVudC4gVGhpcyBwbHVnaW4gaGVscHMgc3RyZWFtbGluZVxuICogdGhlIGRldmVsb3BtZW50IHdvcmtmbG93IGJ5IGVuc3VyaW5nIHRoYXQgdGhlIGxhdGVzdCBidWlsZCBpcyBhbHdheXMgYXZhaWxhYmxlXG4gKiBpbiB0aGUgY29ycmVjdCBPYnNpZGlhbiBmb2xkZXIgZm9yIHRlc3RpbmcgYW5kIHVzZS5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gZXNidWlsZCBwbHVnaW4gdGhhdCBjb3BpZXMgYnVpbGQgb3V0cHV0IHRvIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyOyByZXF1aXJlcyBhIGxpdmUgZXNidWlsZCBjb250ZXh0LiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbiB9IGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5NYW5pZmVzdCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgT2JzaWRpYW5UcmFuc3BvcnQgfSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcblxuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVRyYW5zcG9ydEZyb21PcHRpb25zLFxuICBldmFsSW5PYnNpZGlhblxufSBmcm9tICdvYnNpZGlhbi1pbnRlZ3JhdGlvbi10ZXN0aW5nJztcblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi8uLi8uLi9kZWJ1Zy50cyc7XG5pbXBvcnQge1xuICBkaXJuYW1lLFxuICBqb2luLFxuICB0b1Bvc2l4UGF0aFxufSBmcm9tICcuLi8uLi8uLi9wYXRoLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2lufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3B5VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQbHVnaW5QYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciB3aGVyZSB0aGUgYnVpbHQgZmlsZXMgYXJlIGxvY2F0ZWQuXG4gICAqL1xuICByZWFkb25seSBkaXN0Rm9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGJ1aWxkIGlzIGEgcHJvZHVjdGlvbiBidWlsZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzUHJvZHVjdGlvbkJ1aWxkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZm9sZGVyIG9mIHRoZSBPYnNpZGlhbiBjb25maWd1cmF0aW9uLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBwbHVnaW4gd2lsbCBub3QgY29weSBmaWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuQ29uZmlnRm9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBPYnNpZGlhbiBwbHVnaW4uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzaW5nbGUgZW50cnkgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeSAoYGNvbW11bml0eS1wbHVnaW5zLmpzb25gKS5cbiAqL1xuaW50ZXJmYWNlIENvbW11bml0eVBsdWdpblJlZ2lzdHJ5RW50cnkge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBgb3duZXIvbmFtZWAgR2l0SHViIHJlcG9zaXRvcnkgdGhlIHBsdWdpbiBpcyBwdWJsaXNoZWQgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgc3Vic2V0IG9mIGEgR2l0SHViIHJlbGVhc2Ugd2UgcmVhZC5cbiAqL1xuaW50ZXJmYWNlIEdpdEh1YlJlbGVhc2Uge1xuICAvKipcbiAgICogVGhlIHJlbGVhc2UgdGFnLCBhIGJhcmUgdmVyc2lvbiBzdWNoIGFzIGAxLjIuM2AuXG4gICAqL1xuICByZWFkb25seSB0YWdfbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbnN0YWxsQW5kRW5hYmxlSG90UmVsb2FkfS5cbiAqL1xuaW50ZXJmYWNlIEluc3RhbGxBbmRFbmFibGVIb3RSZWxvYWRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciBvZiB0aGUgT2JzaWRpYW4gY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuQ29uZmlnRm9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWlsdCBPYnNpZGlhbiBwbHVnaW4gdG8gZW5hYmxlIG9uY2UgSG90UmVsb2FkIGlzIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vLyBUaGUgYG5wbSBydW4gZGV2YC1vd25lZCBPYnNpZGlhbiBpbnN0YW5jZTogbGF1bmNoZWQgb24gdGhlIGZpcnN0IHJlYnVpbGQgYW5kIHJldXNlZCBhY3Jvc3MgcmVidWlsZHMuXG4vLyBJdCBpcyBjbG9zZWQgd2hlbiB0aGUgYG5wbSBydW4gZGV2YCBwcm9jZXNzIHRlcm1pbmF0ZXMgKHNlZSBgcmVnaXN0ZXJEZXZJbnN0YW5jZUNsZWFudXBgKS5cbmxldCBkZXZJbnN0YW5jZVRyYW5zcG9ydFByb21pc2U6IFByb21pc2U8T2JzaWRpYW5UcmFuc3BvcnQ+IHwgdW5kZWZpbmVkO1xubGV0IGlzRGV2SW5zdGFuY2VDbGVhbnVwUmVnaXN0ZXJlZCA9IGZhbHNlO1xubGV0IGlzRGV2SW5zdGFuY2VEaXNwb3NlZCA9IGZhbHNlO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBjb3BpZXMgdGhlIGJ1aWxkIG91dHB1dCB0byB0aGUgT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBBbiBlc2J1aWxkIGBQbHVnaW5gIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbihwYXJhbXM6IENvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpblBhcmFtcyk6IFBsdWdpbiB7XG4gIGNvbnN0IHtcbiAgICBkaXN0Rm9sZGVyLFxuICAgIGlzUHJvZHVjdGlvbkJ1aWxkLFxuICAgIHBsdWdpbk5hbWVcbiAgfSA9IHBhcmFtcztcbiAgbGV0IHtcbiAgICBvYnNpZGlhbkNvbmZpZ0ZvbGRlclxuICB9ID0gcGFyYW1zO1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdjb3B5LXRvLW9ic2lkaWFuLXBsdWdpbnMtZm9sZGVyJyxcbiAgICBzZXR1cChidWlsZCk6IHZvaWQge1xuICAgICAgYnVpbGQub25FbmQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoaXNQcm9kdWN0aW9uQnVpbGQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9ic2lkaWFuQ29uZmlnRm9sZGVyKSB7XG4gICAgICAgICAgZ2V0TGliRGVidWdnZXIoJ2NvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbicpKFxuICAgICAgICAgICAgJ05vIE9ic2lkaWFuIGNvbmZpZyBmb2xkZXIgY29uZmlndXJlZC4gYE9CU0lESUFOX0NPTkZJR19GT0xERVJgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgaW4gc3lzdGVtIG9yIGluIGAuZW52YCBmaWxlLiBUaGUgY29tcGlsZWQgcGx1Z2luIHdpbGwgbm90IGJlIGNvcGllZCBpbnRvIE9ic2lkaWFuIHBsdWdpbnMgZm9sZGVyLidcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG9ic2lkaWFuQ29uZmlnRm9sZGVyID0gdG9Qb3NpeFBhdGgob2JzaWRpYW5Db25maWdGb2xkZXIpO1xuXG4gICAgICAgIGNvbnN0IHBsdWdpbkZvbGRlciA9IGpvaW4ob2JzaWRpYW5Db25maWdGb2xkZXIsICdwbHVnaW5zJywgcGx1Z2luTmFtZSk7XG4gICAgICAgIGF3YWl0IG1rZGlyKHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgICAgIGF3YWl0IGNwKGRpc3RGb2xkZXIsIHBsdWdpbkZvbGRlciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAgICAgYXdhaXQgaW5zdGFsbEFuZEVuYWJsZUhvdFJlbG9hZCh7XG4gICAgICAgICAgb2JzaWRpYW5Db25maWdGb2xkZXIsXG4gICAgICAgICAgcGx1Z2luTmFtZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBgbnBtIHJ1biBkZXZgLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlIGZvciB0aGUgZ2l2ZW4gdmF1bHQsIGxhdW5jaGluZyBpdCBvbiBmaXJzdCB1c2UgYW5kXG4gKiByZXVzaW5nIGl0IG9uIHN1YnNlcXVlbnQgcmVidWlsZHMuXG4gKlxuICogQHBhcmFtIHZhdWx0UGF0aCAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSB2YXVsdCBmb2xkZXIgdG8gb3Blbi5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHJlc29sdmluZyB0byB0aGUgb3duZWQge0BsaW5rIE9ic2lkaWFuVHJhbnNwb3J0fS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0T3JMYXVuY2hEZXZJbnN0YW5jZSh2YXVsdFBhdGg6IHN0cmluZyk6IFByb21pc2U8T2JzaWRpYW5UcmFuc3BvcnQ+IHtcbiAgZGV2SW5zdGFuY2VUcmFuc3BvcnRQcm9taXNlID8/PSBsYXVuY2hEZXZJbnN0YW5jZSh2YXVsdFBhdGgpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBkZXZJbnN0YW5jZVRyYW5zcG9ydFByb21pc2U7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBDbGVhciB0aGUgY2FjaGUgc28gYSBsYXRlciByZWJ1aWxkIHJldHJpZXMgdGhlIGxhdW5jaC5cbiAgICBkZXZJbnN0YW5jZVRyYW5zcG9ydFByb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgdGhyb3cgZTtcbiAgfVxufVxuXG4vKipcbiAqIEluc3RhbGxzIHRoZSBIb3RSZWxvYWQgcGx1Z2luIGZyb20gdGhlIG9mZmljaWFsIGNvbW11bml0eSBzdG9yZSAoaWYgbm90IGFscmVhZHkgaW5zdGFsbGVkKSwgZW5hYmxlcyBpdFxuICogKGlmIG5vdCBhbHJlYWR5IGVuYWJsZWQpLCBhbmQgZW5hYmxlcyB0aGUgZnJlc2hseS1idWlsdCBwbHVnaW4gXHUyMDE0IGFsbCB0aHJvdWdoIHRoZSBgbnBtIHJ1biBkZXZgLW93bmVkXG4gKiBPYnNpZGlhbiBpbnN0YW5jZSwgc28gSG90UmVsb2FkIHRoZW4gYXV0by1yZWZyZXNoZXMgdGhlIGRlcGxveWVkIHBsdWdpbiBvbiBldmVyeSByZWJ1aWxkLlxuICpcbiAqIFRoZSBpbnN0YWxsIGdvZXMgdGhyb3VnaCBPYnNpZGlhbidzIG93biBgaW5zdGFsbFBsdWdpbmAgKHRoZSBjb21tdW5pdHktc3RvcmUgbWVjaGFuaXNtKSwgYW5kIGV2ZXJ5IHN0ZXBcbiAqIHJ1bnMgYWdhaW5zdCB0aGUgb3duZWQgaW5zdGFuY2Ugb3ZlciBDRFA7IGFueSBmYWlsdXJlIHN1cmZhY2VzICh0aGUgZGV2IGJ1aWxkIHJlcG9ydHMgaXQpIHJhdGhlciB0aGFuXG4gKiBiZWluZyBzaWxlbnRseSBzd2FsbG93ZWQuXG4gKlxuICogVGhlIGluc3RhbGwtaWYtbWlzc2luZyAvIGVuYWJsZS1pZi1kaXNhYmxlZCBsb2dpYyBiZWxvdyBpbnRlbnRpb25hbGx5IG1pcnJvcnMgdGhlIHB1YmxpY1xuICogYGluc3RhbGxDb21tdW5pdHlQbHVnaW5gIC8gYGVuYWJsZUNvbW11bml0eVBsdWdpbmAgaGVscGVycyBpbiBgc3JjL29ic2lkaWFuL2NvbW11bml0eS1wbHVnaW5zLnRzYC4gSXRcbiAqIGNhbm5vdCBpbXBvcnQgYW5kIGNhbGwgdGhlbTogdGhlIGBmbmAgaXMgc2VyaWFsaXplZCAoYHRvU3RyaW5nKClgKSBhbmQgZXhlY3V0ZWQgaW4gdGhlIHJlbmRlcmVyLCBhbmRcbiAqIHRoaXMgYnVpbGQtb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgaXMgYmFyZSBcdTIwMTQgaXQgaGFzIG5vIGRldi11dGlscyBgbGliYCBwcm92aWRlciB3aXJlZCAodGhhdCByZXNvbHZlciBpc1xuICogcmVnaXN0ZXJlZCBvbmx5IGluIHRoZSBpbnRlZ3JhdGlvbi10ZXN0IHNldHVwLCB3aG9zZSBmaXh0dXJlIHB1Ymxpc2hlcyB0aGUgbWVyZ2VkIHN1cmZhY2Ugb24gYHdpbmRvd2ApLFxuICogc28gdGhlIGNsb3N1cmUgaGFzIG5vIGFjY2VzcyB0byB0aGUgbGlicmFyeSBzdXJmYWNlIGFuZCBtdXN0IGlubGluZSB0aGUgZXF1aXZhbGVudCBzdGVwcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBJbnN0YWxsQW5kRW5hYmxlSG90UmVsb2FkUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSBIb3RSZWxvYWQgYW5kIHRoZSBidWlsdCBwbHVnaW4gYXJlIGluc3RhbGxlZCBhbmQgZW5hYmxlZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbEFuZEVuYWJsZUhvdFJlbG9hZChwYXJhbXM6IEluc3RhbGxBbmRFbmFibGVIb3RSZWxvYWRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3Qge1xuICAgIG9ic2lkaWFuQ29uZmlnRm9sZGVyLFxuICAgIHBsdWdpbk5hbWVcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgdmF1bHRQYXRoID0gZGlybmFtZShvYnNpZGlhbkNvbmZpZ0ZvbGRlcik7XG4gIGNvbnN0IHRyYW5zcG9ydCA9IGF3YWl0IGdldE9yTGF1bmNoRGV2SW5zdGFuY2UodmF1bHRQYXRoKTtcbiAgYXdhaXQgZXZhbEluT2JzaWRpYW4oe1xuICAgIGFyZ3M6IHsgcGx1Z2luTmFtZSB9LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zaGFkb3cgLS0gTm8gYWN0dWFsIHNoYWRvd2luZyBhcyB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgZXh0ZXJuYWxseS5cbiAgICBhc3luYyBmbih7IGFwcCwgb2JzaWRpYW5Nb2R1bGUsIHBsdWdpbk5hbWUgfSkge1xuICAgICAgY29uc3QgSE9UX1JFTE9BRF9QTFVHSU5fSUQgPSAnaG90LXJlbG9hZCc7XG4gICAgICBjb25zdCBDT01NVU5JVFlfUExVR0lOU19SRUdJU1RSWV9VUkwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL29ic2lkaWFubWQvb2JzaWRpYW4tcmVsZWFzZXMvSEVBRC9jb21tdW5pdHktcGx1Z2lucy5qc29uJztcbiAgICAgIGNvbnN0IHsgcmVxdWVzdFVybCB9ID0gb2JzaWRpYW5Nb2R1bGU7XG5cbiAgICAgIGlmICghYXBwLnBsdWdpbnMubWFuaWZlc3RzW0hPVF9SRUxPQURfUExVR0lOX0lEXSkge1xuICAgICAgICBjb25zdCByZWdpc3RyeUVudHJpZXMgPSAoYXdhaXQgcmVxdWVzdFVybChDT01NVU5JVFlfUExVR0lOU19SRUdJU1RSWV9VUkwpKS5qc29uIGFzIENvbW11bml0eVBsdWdpblJlZ2lzdHJ5RW50cnlbXTtcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWdpc3RyeUVudHJpZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaWQgPT09IEhPVF9SRUxPQURfUExVR0lOX0lEKTtcbiAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGx1Z2luICcke0hPVF9SRUxPQURfUExVR0lOX0lEfScgd2FzIG5vdCBmb3VuZCBpbiB0aGUgT2JzaWRpYW4gY29tbXVuaXR5IHBsdWdpbnMgcmVnaXN0cnkuYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXRlc3RSZWxlYXNlID0gKGF3YWl0IHJlcXVlc3RVcmwoYGh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvJHtlbnRyeS5yZXBvfS9yZWxlYXNlcy9sYXRlc3RgKSkuanNvbiBhcyBHaXRIdWJSZWxlYXNlO1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gbGF0ZXN0UmVsZWFzZS50YWdfbmFtZTtcbiAgICAgICAgY29uc3QgbWFuaWZlc3QgPSAoYXdhaXQgcmVxdWVzdFVybChgaHR0cHM6Ly9naXRodWIuY29tLyR7ZW50cnkucmVwb30vcmVsZWFzZXMvZG93bmxvYWQvJHt2ZXJzaW9ufS9tYW5pZmVzdC5qc29uYCkpLmpzb24gYXMgUGx1Z2luTWFuaWZlc3Q7XG4gICAgICAgIGF3YWl0IGFwcC5wbHVnaW5zLmluc3RhbGxQbHVnaW4oZW50cnkucmVwbywgdmVyc2lvbiwgbWFuaWZlc3QpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWFwcC5wbHVnaW5zLmVuYWJsZWRQbHVnaW5zLmhhcyhIT1RfUkVMT0FEX1BMVUdJTl9JRCkpIHtcbiAgICAgICAgYXdhaXQgYXBwLnBsdWdpbnMuZW5hYmxlUGx1Z2luQW5kU2F2ZShIT1RfUkVMT0FEX1BMVUdJTl9JRCk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGFwcC5wbHVnaW5zLmVuYWJsZVBsdWdpbkFuZFNhdmUocGx1Z2luTmFtZSk7XG4gICAgfSxcbiAgICBzaG91bGRTa2lwUHJlZmxpZ2h0Q2hlY2tzOiB0cnVlLFxuICAgIHRyYW5zcG9ydCxcbiAgICB2YXVsdFBhdGhcbiAgfSk7XG59XG5cbi8qKlxuICogTGF1bmNoZXMgYSBmcmVzaCBvd25lZCBPYnNpZGlhbiBpbnN0YW5jZSAoaXNvbGF0ZWQgdXNlci1kYXRhIGRpcikgYW5kIG9wZW5zIHRoZSBnaXZlbiB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlciB0byBvcGVuLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBsYXVuY2hlZCB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnR9LlxuICovXG5hc3luYyBmdW5jdGlvbiBsYXVuY2hEZXZJbnN0YW5jZSh2YXVsdFBhdGg6IHN0cmluZyk6IFByb21pc2U8T2JzaWRpYW5UcmFuc3BvcnQ+IHtcbiAgY29uc3QgdHJhbnNwb3J0ID0gYXdhaXQgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMoKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0cmFuc3BvcnQucmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdHJhbnNwb3J0LmRpc3Bvc2VTeW5jPy4oKTtcbiAgICB0aHJvdyBlO1xuICB9XG4gIHJlZ2lzdGVyRGV2SW5zdGFuY2VDbGVhbnVwKHRyYW5zcG9ydCk7XG4gIHJldHVybiB0cmFuc3BvcnQ7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHByb2Nlc3MtZXhpdCBhbmQgc2lnbmFsIGhhbmRsZXJzIChvbmNlKSB0aGF0IHN5bmNocm9ub3VzbHkgY2xvc2UgdGhlIG93bmVkIE9ic2lkaWFuXG4gKiBpbnN0YW5jZSB3aGVuIHRoZSBgbnBtIHJ1biBkZXZgIHByb2Nlc3MgdGVybWluYXRlcy5cbiAqXG4gKiBAcGFyYW0gdHJhbnNwb3J0IC0gVGhlIG93bmVkIHRyYW5zcG9ydCB0byBkaXNwb3NlIG9uIHNodXRkb3duLlxuICovXG5mdW5jdGlvbiByZWdpc3RlckRldkluc3RhbmNlQ2xlYW51cCh0cmFuc3BvcnQ6IE9ic2lkaWFuVHJhbnNwb3J0KTogdm9pZCB7XG4gIGlmIChpc0Rldkluc3RhbmNlQ2xlYW51cFJlZ2lzdGVyZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaXNEZXZJbnN0YW5jZUNsZWFudXBSZWdpc3RlcmVkID0gdHJ1ZTtcblxuICAvLyBgZXhpdGAgY292ZXJzIGFueSBgcHJvY2Vzcy5leGl0KClgLCBidXQgYSBkZWZhdWx0IEN0cmwrQyB0ZXJtaW5hdGVzIFdJVEhPVVQgZmlyaW5nIGBleGl0YCwgc28gdGhlIHNpZ25hbCBoYW5kbGVycyBndWFyYW50ZWUgdGhlIG93bmVkIE9ic2lkaWFuIGlzIGtpbGxlZCBvbiBzaHV0ZG93bi5cbiAgcHJvY2Vzcy5vbignZXhpdCcsIGRpc3Bvc2VEZXZJbnN0YW5jZSk7XG4gIGZvciAoY29uc3Qgc2lnbmFsIG9mIFsnU0lHSFVQJywgJ1NJR0lOVCcsICdTSUdURVJNJ10gYXMgY29uc3QpIHtcbiAgICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCAoKSA9PiB7XG4gICAgICBkaXNwb3NlRGV2SW5zdGFuY2UoKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGlzcG9zZURldkluc3RhbmNlKCk6IHZvaWQge1xuICAgIGlmIChpc0Rldkluc3RhbmNlRGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXNEZXZJbnN0YW5jZURpc3Bvc2VkID0gdHJ1ZTtcbiAgICB0cmFuc3BvcnQuZGlzcG9zZVN5bmM/LigpO1xuICB9XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
@@ -133,10 +133,6 @@ const noRestrictedSyntaxRuleEntries = [
|
|
|
133
133
|
message: "Do not use definite assignment assertions (!). Initialize the field or make it optional.",
|
|
134
134
|
selector: "PropertyDefinition[definite=true]"
|
|
135
135
|
},
|
|
136
|
-
{
|
|
137
|
-
message: "Do not use definite assignment assertions (!) on abstract fields.",
|
|
138
|
-
selector: "TSAbstractPropertyDefinition[definite=true]"
|
|
139
|
-
},
|
|
140
136
|
{
|
|
141
137
|
message: "Do not use anonymous inline object types. Define a named interface or `type` alias instead.",
|
|
142
138
|
selector: "TSTypeLiteral:not(TSTypeAliasDeclaration > TSTypeLiteral)"
|
|
@@ -178,4 +174,4 @@ const noRestrictedSyntaxRuleEntries = [
|
|
|
178
174
|
0 && (module.exports = {
|
|
179
175
|
noRestrictedSyntaxRuleEntries
|
|
180
176
|
});
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL3NjcmlwdC11dGlscy9saW50ZXJzL2VzbGludC1uby1yZXN0cmljdGVkLXN5bnRheC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIGBuby1yZXN0cmljdGVkLXN5bnRheGAgcnVsZSBlbnRyaWVzIGZvciB0aGUgc2hhcmVkIEVTTGludCBjb25maWcuXG4gKlxuICogRXhwb3J0ZWQgYXMgYSBzdGFuZGFsb25lIGNvbnN0YW50IHNvIGVhY2ggc2VsZWN0b3IgY2FuIGJlIHVuaXQtdGVzdGVkXG4gKiBpbmRlcGVuZGVudGx5IG9mIHRoZSBsYXJnZXIgZGVjbGFyYXRpdmUgY29uZmlnLlxuICovXG5cbi8qKlxuICogQSBzaW5nbGUgYG5vLXJlc3RyaWN0ZWQtc3ludGF4YCBlbnRyeSBwYWlyaW5nIGFuIEVTTGludCBBU1Qgc2VsZWN0b3Igd2l0aCBhXG4gKiBodW1hbi1yZWFkYWJsZSBtZXNzYWdlIGV4cGxhaW5pbmcgd2h5IHRoZSBwYXR0ZXJuIGlzIGJhbm5lZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cnkge1xuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSBzaG93biB3aGVuIHRoZSBzZWxlY3RvciBtYXRjaGVzLlxuICAgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFU0xpbnQgQVNUIHNlbGVjdG9yIGlkZW50aWZ5aW5nIHRoZSBiYW5uZWQgcGF0dGVybi5cbiAgICovXG4gIHNlbGVjdG9yOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdHJpY3RlZC1zeW50YXggZW50cmllcyBlbmZvcmNlZCBieSB0aGUgc2hhcmVkIEVTTGludCBjb25maWcuXG4gKi9cbmV4cG9ydCBjb25zdCBub1Jlc3RyaWN0ZWRTeW50YXhSdWxlRW50cmllczogcmVhZG9ubHkgTm9SZXN0cmljdGVkU3ludGF4UnVsZUVudHJ5W10gPSBbXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBkZWZpbml0ZSBhc3NpZ25tZW50IGFzc2VydGlvbnMgKCEpLiBJbml0aWFsaXplIHRoZSBmaWVsZCBvciBtYWtlIGl0IG9wdGlvbmFsLicsXG4gICAgc2VsZWN0b3I6ICdQcm9wZXJ0eURlZmluaXRpb25bZGVmaW5pdGU9dHJ1ZV0nXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBhbm9ueW1vdXMgaW5saW5lIG9iamVjdCB0eXBlcy4gRGVmaW5lIGEgbmFtZWQgaW50ZXJmYWNlIG9yIGB0eXBlYCBhbGlhcyBpbnN0ZWFkLicsXG4gICAgc2VsZWN0b3I6ICdUU1R5cGVMaXRlcmFsOm5vdChUU1R5cGVBbGlhc0RlY2xhcmF0aW9uID4gVFNUeXBlTGl0ZXJhbCknXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBhbm9ueW1vdXMgaW5saW5lIG1hcHBlZCB0eXBlcy4gRGVmaW5lIGEgbmFtZWQgYHR5cGVgIGFsaWFzIGluc3RlYWQuJyxcbiAgICBzZWxlY3RvcjogJ1RTTWFwcGVkVHlwZTpub3QoVFNUeXBlQWxpYXNEZWNsYXJhdGlvbiA+IFRTTWFwcGVkVHlwZSknXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBkb3VibGUgdHlwZSBhc3NlcnRpb25zIChhcyBYIGFzIFkpLicsXG4gICAgc2VsZWN0b3I6ICdUU0FzRXhwcmVzc2lvbiA+IFRTQXNFeHByZXNzaW9uJ1xuICB9LFxuICB7XG4gICAgbWVzc2FnZTogJ0RvIG5vdCB1c2UgYGFzIG5ldmVyYC4gSXQgc2lsZW50bHkgc2F0aXNmaWVzIHR5cGUgY29uc3RyYWludHMgYnkgY2xhaW1pbmcgXCJ0aGlzIHZhbHVlIGlzIG9mIGV2ZXJ5IHR5cGVcIiBcdTIwMTQgYWxtb3N0IGFsd2F5cyBtYXNrcyBhIHJlYWwgdHlwZSBtaXNtYXRjaC4gRml4IHRoZSB1bmRlcmx5aW5nIHR5cGVzIGluc3RlYWQuJyxcbiAgICBzZWxlY3RvcjogJ1RTQXNFeHByZXNzaW9uID4gVFNOZXZlcktleXdvcmQnXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBgPG5ldmVyPmAgdHlwZSBhc3NlcnRpb25zLiBTYW1lIHJlYXNvbmluZyBhcyBgYXMgbmV2ZXJgLicsXG4gICAgc2VsZWN0b3I6ICdUU1R5cGVBc3NlcnRpb24gPiBUU05ldmVyS2V5d29yZCdcbiAgfSxcbiAge1xuICAgIG1lc3NhZ2U6ICdEbyBub3QgdXNlIF8gcHJlZml4IG9uIG1ldGhvZHMgb3IgZnVuY3Rpb25zLiBUaGUgXyBwcmVmaXggaXMgZm9yIHVudXNlZCBwYXJhbWV0ZXJzIG9ubHkuJyxcbiAgICBzZWxlY3RvcjogJ01ldGhvZERlZmluaXRpb25ba2V5Lm5hbWU9L15fL106bm90KFtvdmVycmlkZT10cnVlXSknXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBfIHByZWZpeCBvbiBtZXRob2RzIG9yIGZ1bmN0aW9ucy4gVGhlIF8gcHJlZml4IGlzIGZvciB1bnVzZWQgcGFyYW1ldGVycyBvbmx5LicsXG4gICAgc2VsZWN0b3I6ICdGdW5jdGlvbkRlY2xhcmF0aW9uW2lkLm5hbWU9L15fL10nXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHJlbmFtZSBpbXBvcnRzIHdpdGggXCJNb2NrXCIgaW4gdGhlIGFsaWFzLiBNb2NrIGNsYXNzZXMgYXJlIHRoZSBjYW5vbmljYWwgdHlwZXMgXHUyMDE0IHVzZSB0aGUgb3JpZ2luYWwgbmFtZS4nLFxuICAgIHNlbGVjdG9yOiAnSW1wb3J0U3BlY2lmaWVyW2xvY2FsLm5hbWU9L01vY2svXTpub3QoW2ltcG9ydGVkLm5hbWU9L01vY2svXSknXG4gIH0sXG4gIHtcbiAgICBtZXNzYWdlOiAnRG8gbm90IHVzZSBgZGVjbGFyZWAgb24gY2xhc3MgcHJvcGVydGllcy4gSW5pdGlhbGl6ZSB0aGUgcHJvcGVydHkgb3IgdXNlIGEgcmVndWxhciB0eXBlIGFubm90YXRpb24uJyxcbiAgICBzZWxlY3RvcjogJ1Byb3BlcnR5RGVmaW5pdGlvbltkZWNsYXJlPXRydWVdJ1xuICB9XG5dO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNEJPLE1BQU0sZ0NBQXdFO0FBQUEsRUFDbkY7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQTtBQUFBLElBQ0UsU0FBUztBQUFBLElBQ1QsVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQUEsSUFDRSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsRUFDWjtBQUFBLEVBQ0E7QUFBQSxJQUNFLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxFQUNaO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist/lib/cjs/type.cjs
CHANGED
|
@@ -125,22 +125,41 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
125
125
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
126
126
|
var type_exports = {};
|
|
127
127
|
__export(type_exports, {
|
|
128
|
-
|
|
128
|
+
TypeAsserter: () => TypeAsserter
|
|
129
129
|
});
|
|
130
130
|
module.exports = __toCommonJS(type_exports);
|
|
131
131
|
var import_object_utils = require('./object-utils.cjs');
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
132
|
+
class TypeAsserter {
|
|
133
|
+
/**
|
|
134
|
+
* Asserts that all keys of an object type are present in a list of keys.
|
|
135
|
+
*
|
|
136
|
+
* @remarks Only available when `[Type] extends [object]`.
|
|
137
|
+
*/
|
|
138
|
+
assertAllKeys;
|
|
139
|
+
/**
|
|
140
|
+
* Asserts that all members of a union type are present in a list of members.
|
|
141
|
+
*
|
|
142
|
+
* @remarks Only available when `[Type] extends [LiteralKey]`.
|
|
143
|
+
*/
|
|
144
|
+
assertAllMembers;
|
|
145
|
+
/**
|
|
146
|
+
* Creates a type asserter that captures {@link Type} for compile-time exhaustiveness checks.
|
|
147
|
+
*/
|
|
148
|
+
constructor() {
|
|
149
|
+
const assertions = (0, import_object_utils.castTo)({
|
|
150
|
+
assertAllKeys(keys) {
|
|
151
|
+
return Object.freeze(keys.slice());
|
|
152
|
+
},
|
|
153
|
+
assertAllMembers(keys) {
|
|
154
|
+
return Object.freeze(keys.slice());
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
this.assertAllKeys = assertions.assertAllKeys;
|
|
158
|
+
this.assertAllMembers = assertions.assertAllMembers;
|
|
159
|
+
}
|
|
141
160
|
}
|
|
142
161
|
// Annotate the CommonJS export names for ESM import in node:
|
|
143
162
|
0 && (module.exports = {
|
|
144
|
-
|
|
163
|
+
TypeAsserter
|
|
145
164
|
});
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUeXBlIHV0aWxpdGllcy5cbiAqL1xuXG5pbXBvcnQgeyBjYXN0VG8gfSBmcm9tICcuL29iamVjdC11dGlscy50cyc7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUga2V5cyBvZiBhbiBvYmplY3QgYXMgc3RyaW5ncyBhbmQgYXNzZXJ0cyB0aGF0IGFsbCBrZXlzIGFyZSBwcmVzZW50IGluIGEgbGlzdCBvZiBrZXlzLlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAdHlwZVBhcmFtIEtleXMgLSBUaGUgbGlzdCBvZiBrZXlzIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IHR5cGUgRXhhY3RLZXlzPFR5cGUgZXh0ZW5kcyBvYmplY3QsIEtleXMgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXT4gPSBFeGFjdE1lbWJlcnM8U3RyaW5nS2V5czxUeXBlPiwgS2V5cz47XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUgbWVtYmVycyBvZiBhIHR5cGUuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgdG8gYXNzZXJ0IHRoZSBtZW1iZXJzIG9mLlxuICogQHR5cGVQYXJhbSBLZXlzIC0gVGhlIGxpc3Qgb2YgbWVtYmVycyB0byBhc3NlcnQuXG4gKi9cbmV4cG9ydCB0eXBlIEV4YWN0TWVtYmVyczxcbiAgVHlwZSBleHRlbmRzIExpdGVyYWxLZXksXG4gIEtleXMgZXh0ZW5kcyByZWFkb25seSBMaXRlcmFsS2V5W11cbj4gPSBFeGNsdWRlPEtleXNbbnVtYmVyXSwgVHlwZT4gZXh0ZW5kcyBuZXZlciA/IEV4Y2x1ZGU8VHlwZSwgS2V5c1tudW1iZXJdPiBleHRlbmRzIG5ldmVyID8gRHVwbGljYXRlczxLZXlzPiBleHRlbmRzIFtdID8gS2V5c1xuICAgIDogYEVSUk9SOiBEdXBsaWNhdGUgbWVtYmVyczogJHtUdXBsZVRvQ1NWPER1cGxpY2F0ZXM8S2V5cz4+fWBcbiAgOiBgRVJST1I6IE1pc3NpbmcgbWVtYmVyczogJHtUdXBsZVRvQ1NWPFVuaW9uVG9UdXBsZTxFeGNsdWRlPFR5cGUsIEtleXNbbnVtYmVyXT4+Pn1gXG4gIDogYEVSUk9SOiBJbnZhbGlkIG1lbWJlcnM6ICR7VHVwbGVUb0NTVjxVbmlvblRvVHVwbGU8RXhjbHVkZTxLZXlzW251bWJlcl0sIFR5cGU+Pj59YDtcblxuLyoqXG4gKiBBIHR5cGUgdGhhdCByZXByZXNlbnRzIGEgcmV0dXJuIHZhbHVlIHRoYXQgbWF5IGJlIGB2b2lkYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgdmFsdWUgdGhhdCBtYXkgYmUgcmV0dXJuZWQuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW52YWxpZC12b2lkLXR5cGUgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGB2b2lkYCByZXR1cm4gdHlwZS5cbmV4cG9ydCB0eXBlIE1heWJlUmV0dXJuPFQ+ID0gVCB8IHZvaWQ7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUgdmFsdWVzIG9mIGFuIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBQcm9wZXJ0eVZhbHVlczxUIGV4dGVuZHMgb2JqZWN0PiA9IFRbU3RyaW5nS2V5czxUPl07XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUga2V5cyBvZiBhbiBvYmplY3QgYXMgc3RyaW5ncy5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgdHlwZSBTdHJpbmdLZXlzPFQgZXh0ZW5kcyBvYmplY3Q+ID0gRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+O1xuXG4vKipcbiAqIEEgaGVscGVyIHRoYXQgY2FwdHVyZXMgYSB0eXBlIHBhcmFtZXRlciBhbmQgcHJvdmlkZXMgbWV0aG9kcyBmb3IgY29tcGlsZS10aW1lIGV4aGF1c3RpdmVuZXNzIGNoZWNrcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgY2FwdHVyZWQgdHlwZS5cbiAqXG4gKiBAcmVtYXJrc1xuICogLSBgYXNzZXJ0QWxsS2V5c2AgaXMgYXZhaWxhYmxlIHdoZW4gYFR5cGVgIGlzIGFuIG9iamVjdCB0eXBlLlxuICogLSBgYXNzZXJ0QWxsTWVtYmVyc2AgaXMgYXZhaWxhYmxlIHdoZW4gYFR5cGVgIGlzIGEgbGl0ZXJhbCBrZXkgdW5pb24gKGBzdHJpbmcgfCBudW1iZXJgKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHR5cGUgQSA9IHsgYTogMSwgYjogMiwgYzogMyB9O1xuICogdHlwZUFzc2VydGVyPEE+KCkuYXNzZXJ0QWxsS2V5cyhbJ2EnLCAnYicsICdjJ10pOyAvLyBPS1xuICogdHlwZUFzc2VydGVyPEE+KCkuYXNzZXJ0QWxsS2V5cyhbJ2MnLCAnYScsICdiJ10pOyAvLyBPSywgb3JkZXIgaXMgaWdub3JlZFxuICogdHlwZUFzc2VydGVyPEE+KCkuYXNzZXJ0QWxsS2V5cyhbJ2EnLCAnYicsICdjJywgJ2QnXSk7IC8vIEVycm9yOiBJbnZhbGlkIG1lbWJlcnM6IGRcbiAqIHR5cGVBc3NlcnRlcjxBPigpLmFzc2VydEFsbEtleXMoWydhJywgJ2InXSk7IC8vIEVycm9yOiBNaXNzaW5nIG1lbWJlcnM6IGNcbiAqXG4gKiB0eXBlIEIgPSAxIHwgMiB8IDMgfCAnYSc7XG4gKiB0eXBlQXNzZXJ0ZXI8Qj4oKS5hc3NlcnRBbGxNZW1iZXJzKFsxLCAyLCAzLCAnYSddKTsgLy8gT0tcbiAqIHR5cGVBc3NlcnRlcjxCPigpLmFzc2VydEFsbE1lbWJlcnMoWzEsIDIsIDMsICdhJywgNF0pOyAvLyBFcnJvcjogSW52YWxpZCBtZW1iZXJzOiA0XG4gKiB0eXBlQXNzZXJ0ZXI8Qj4oKS5hc3NlcnRBbGxNZW1iZXJzKFsxLCAyLCAzXSk7IC8vIEVycm9yOiBNaXNzaW5nIG1lbWJlcnM6IGFcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVBc3NlcnRlcjxUeXBlPiB7XG4gIC8qKlxuICAgKiBBc3NlcnRzIHRoYXQgYWxsIGtleXMgb2YgYW4gb2JqZWN0IHR5cGUgYXJlIHByZXNlbnQgaW4gYSBsaXN0IG9mIGtleXMuXG4gICAqXG4gICAqIEByZW1hcmtzIE9ubHkgYXZhaWxhYmxlIHdoZW4gYFtUeXBlXSBleHRlbmRzIFtvYmplY3RdYC5cbiAgICovXG4gIGFzc2VydEFsbEtleXM6IFtUeXBlXSBleHRlbmRzIFtvYmplY3RdID8gPGNvbnN0IEtleXMgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXT4oXG4gICAgICBrZXlzOiBFeGFjdE1lbWJlcnM8U3RyaW5nS2V5czxUeXBlPiwgS2V5cz5cbiAgICApID0+IHJlYWRvbmx5IChrZXlvZiBUeXBlKVtdXG4gICAgOiBuZXZlcjtcblxuICAvKipcbiAgICogQXNzZXJ0cyB0aGF0IGFsbCBtZW1iZXJzIG9mIGEgdW5pb24gdHlwZSBhcmUgcHJlc2VudCBpbiBhIGxpc3Qgb2YgbWVtYmVycy5cbiAgICpcbiAgICogQHJlbWFya3MgT25seSBhdmFpbGFibGUgd2hlbiBgW1R5cGVdIGV4dGVuZHMgW0xpdGVyYWxLZXldYC5cbiAgICovXG4gIGFzc2VydEFsbE1lbWJlcnM6IFtUeXBlXSBleHRlbmRzIFtMaXRlcmFsS2V5XSA/IDxjb25zdCBLZXlzIGV4dGVuZHMgcmVhZG9ubHkgTGl0ZXJhbEtleVtdPihcbiAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxUeXBlLCBLZXlzPlxuICAgICkgPT4gcmVhZG9ubHkgVHlwZVtdXG4gICAgOiBuZXZlcjtcbn1cblxudHlwZSBEdXBsaWNhdGVzPFxuICBUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdLFxuICBTZWVuIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID0gW10sXG4gIEFkZGVkIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID0gW10sXG4gIE91dCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA9IFtdXG4+ID0gVCBleHRlbmRzIHJlYWRvbmx5IFtpbmZlciBGaXJzdCwgLi4uaW5mZXIgUmVzdF0gPyBJbmNsdWRlczxTZWVuLCBGaXJzdD4gZXh0ZW5kcyB0cnVlID8gSW5jbHVkZXM8QWRkZWQsIEZpcnN0PiBleHRlbmRzIHRydWUgPyBEdXBsaWNhdGVzPFJlc3QsIFNlZW4sIEFkZGVkLCBPdXQ+XG4gICAgOiBEdXBsaWNhdGVzPFJlc3QsIFNlZW4sIFsuLi5BZGRlZCwgRmlyc3RdLCBbLi4uT3V0LCBGaXJzdF0+XG4gIDogRHVwbGljYXRlczxSZXN0LCBbLi4uU2VlbiwgRmlyc3RdLCBBZGRlZCwgT3V0PlxuICA6IE91dDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bm5lY2Vzc2FyeS10eXBlLXBhcmFtZXRlcnMsbm8tbWFnaWMtbnVtYmVycyAtLSBXZSBuZWVkIHRvIHVzZSB0aGUgZHVtbXkgcGFyYW1ldGVyIHRvIGdldCB0eXBlIGluZmVyZW5jZS5cbnR5cGUgRXF1YWw8WCwgWT4gPSAoPFQ+KCkgPT4gVCBleHRlbmRzIFggPyAxIDogMikgZXh0ZW5kcyAoPFQ+KCkgPT4gVCBleHRlbmRzIFkgPyAxIDogMikgPyB0cnVlIDogZmFsc2U7XG5cbnR5cGUgSW5jbHVkZXM8VHlwZSBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSwgTWVtYmVyPiA9IFR5cGUgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgRmlyc3QsIC4uLmluZmVyIFJlc3RdID8gRXF1YWw8Rmlyc3QsIE1lbWJlcj4gZXh0ZW5kcyB0cnVlID8gdHJ1ZSA6IEluY2x1ZGVzPFJlc3QsIE1lbWJlcj5cbiAgOiBmYWxzZTtcblxudHlwZSBMYXN0SW5VbmlvbjxVbmlvbj4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPFVuaW9uIGV4dGVuZHMgdW5rbm93biA/ICgpID0+IFVuaW9uIDogbmV2ZXI+IGV4dGVuZHMgKCkgPT4gaW5mZXIgTGFzdCA/IExhc3QgOiBuZXZlcjtcblxudHlwZSBMaXRlcmFsS2V5ID0gbnVtYmVyIHwgc3RyaW5nO1xuXG50eXBlIFRvU3RyaW5nPFQ+ID0gVCBleHRlbmRzIG51bWJlciB8IHN0cmluZyA/IGAke1R9YCA6IG5ldmVyO1xuXG50eXBlIFR1cGxlVG9DU1Y8VHVwbGUgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gVHVwbGUgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgRmlyc3QsIC4uLmluZmVyIFJlc3RdID8gRmlyc3QgZXh0ZW5kcyBMaXRlcmFsS2V5ID8gUmVzdCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA/IFJlc3RbJ2xlbmd0aCddIGV4dGVuZHMgMCA/IFRvU3RyaW5nPEZpcnN0PiA6IGAke1RvU3RyaW5nPEZpcnN0Pn0sJHtUdXBsZVRvQ1NWPFJlc3Q+fWBcbiAgICA6IG5ldmVyXG4gIDogbmV2ZXJcbiAgOiAnJztcblxudHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFVuaW9uPiA9IChVbmlvbiBleHRlbmRzIHVua25vd24gPyAoa2V5OiBVbmlvbikgPT4gdm9pZCA6IG5ldmVyKSBleHRlbmRzIChrZXk6IGluZmVyIEludGVyc2VjdGlvbikgPT4gdm9pZCA/IEludGVyc2VjdGlvbiA6IG5ldmVyO1xuXG50eXBlIFVuaW9uVG9UdXBsZTxVbmlvbiwgTGFzdCA9IExhc3RJblVuaW9uPFVuaW9uPj4gPSBbVW5pb25dIGV4dGVuZHMgW25ldmVyXSA/IFtdIDogWy4uLlVuaW9uVG9UdXBsZTxFeGNsdWRlPFVuaW9uLCBMYXN0Pj4sIExhc3RdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0eXBlIGhlbHBlciB0aGF0IGNhcHR1cmVzIGEgdHlwZSBwYXJhbWV0ZXIgZm9yIGNvbXBpbGUtdGltZSBleGhhdXN0aXZlbmVzcyBjaGVja3MuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgdG8gY2FwdHVyZS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFR5cGVBc3NlcnRlcn0gd2l0aCBgYXNzZXJ0QWxsS2V5c2AgYW5kIGBhc3NlcnRBbGxNZW1iZXJzYCBtZXRob2RzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogdHlwZSBBID0geyBhOiAxLCBiOiAyLCBjOiAzIH07XG4gKiB0eXBlQXNzZXJ0ZXI8QT4oKS5hc3NlcnRBbGxLZXlzKFsnYScsICdiJywgJ2MnXSk7IC8vIE9LXG4gKiB0eXBlQXNzZXJ0ZXI8QT4oKS5hc3NlcnRBbGxLZXlzKFsnYycsICdhJywgJ2InXSk7IC8vIE9LLCBvcmRlciBpcyBpZ25vcmVkXG4gKlxuICogdHlwZSBCID0gMSB8IDIgfCAzIHwgJ2EnO1xuICogdHlwZUFzc2VydGVyPEI+KCkuYXNzZXJ0QWxsTWVtYmVycyhbMSwgMiwgMywgJ2EnXSk7IC8vIE9LXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHR5cGVBc3NlcnRlcjxUeXBlPigpOiBUeXBlQXNzZXJ0ZXI8VHlwZT4ge1xuICByZXR1cm4gY2FzdFRvPFR5cGVBc3NlcnRlcjxUeXBlPj4oe1xuICAgIGFzc2VydEFsbEtleXM8Y29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdPihcbiAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxTdHJpbmdLZXlzPG9iamVjdCAmIFR5cGU+LCBLZXlzPlxuICAgICk6IHJlYWRvbmx5IChrZXlvZiAob2JqZWN0ICYgVHlwZSkpW10ge1xuICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUoa2V5cy5zbGljZSgpIGFzIChrZXlvZiAob2JqZWN0ICYgVHlwZSkpW10pO1xuICAgIH0sXG4gICAgYXNzZXJ0QWxsTWVtYmVyczxjb25zdCBLZXlzIGV4dGVuZHMgcmVhZG9ubHkgTGl0ZXJhbEtleVtdPihcbiAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxMaXRlcmFsS2V5ICYgVHlwZSwgS2V5cz5cbiAgICApOiByZWFkb25seSAoTGl0ZXJhbEtleSAmIFR5cGUpW10ge1xuICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUoa2V5cy5zbGljZSgpIGFzIChMaXRlcmFsS2V5ICYgVHlwZSlbXSk7XG4gICAgfVxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLDBCQUF1QjtBQTBJaEIsU0FBUyxlQUF5QztBQUN2RCxhQUFPLDRCQUEyQjtBQUFBLElBQ2hDLGNBQ0UsTUFDb0M7QUFDcEMsYUFBTyxPQUFPLE9BQU8sS0FBSyxNQUFNLENBQThCO0FBQUEsSUFDaEU7QUFBQSxJQUNBLGlCQUNFLE1BQ2dDO0FBQ2hDLGFBQU8sT0FBTyxPQUFPLEtBQUssTUFBTSxDQUEwQjtBQUFBLElBQzVEO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3R5cGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBUeXBlIHV0aWxpdGllcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEdlbmVyaWNGdW5jdGlvbiB9IGZyb20gJy4vZnVuY3Rpb24udHMnO1xuXG5pbXBvcnQgeyBjYXN0VG8gfSBmcm9tICcuL29iamVjdC11dGlscy50cyc7XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUga2V5cyBvZiBhbiBvYmplY3QgYXMgc3RyaW5ncyBhbmQgYXNzZXJ0cyB0aGF0IGFsbCBrZXlzIGFyZSBwcmVzZW50IGluIGEgbGlzdCBvZiBrZXlzLlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QuXG4gKiBAdHlwZVBhcmFtIEtleXMgLSBUaGUgbGlzdCBvZiBrZXlzIHRvIGFzc2VydC5cbiAqL1xuZXhwb3J0IHR5cGUgRXhhY3RLZXlzPFR5cGUgZXh0ZW5kcyBvYmplY3QsIEtleXMgZXh0ZW5kcyByZWFkb25seSBzdHJpbmdbXT4gPSBFeGFjdE1lbWJlcnM8U3RyaW5nS2V5czxUeXBlPiwgS2V5cz47XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUgbWVtYmVycyBvZiBhIHR5cGUuXG4gKlxuICogQHR5cGVQYXJhbSBUeXBlIC0gVGhlIHR5cGUgdG8gYXNzZXJ0IHRoZSBtZW1iZXJzIG9mLlxuICogQHR5cGVQYXJhbSBLZXlzIC0gVGhlIGxpc3Qgb2YgbWVtYmVycyB0byBhc3NlcnQuXG4gKi9cbmV4cG9ydCB0eXBlIEV4YWN0TWVtYmVyczxcbiAgVHlwZSBleHRlbmRzIExpdGVyYWxLZXksXG4gIEtleXMgZXh0ZW5kcyByZWFkb25seSBMaXRlcmFsS2V5W11cbj4gPSBFeGNsdWRlPEtleXNbbnVtYmVyXSwgVHlwZT4gZXh0ZW5kcyBuZXZlciA/IEV4Y2x1ZGU8VHlwZSwgS2V5c1tudW1iZXJdPiBleHRlbmRzIG5ldmVyID8gRHVwbGljYXRlczxLZXlzPiBleHRlbmRzIFtdID8gS2V5c1xuICAgIDogYEVSUk9SOiBEdXBsaWNhdGUgbWVtYmVyczogJHtUdXBsZVRvQ1NWPER1cGxpY2F0ZXM8S2V5cz4+fWBcbiAgOiBgRVJST1I6IE1pc3NpbmcgbWVtYmVyczogJHtUdXBsZVRvQ1NWPFVuaW9uVG9UdXBsZTxFeGNsdWRlPFR5cGUsIEtleXNbbnVtYmVyXT4+Pn1gXG4gIDogYEVSUk9SOiBJbnZhbGlkIG1lbWJlcnM6ICR7VHVwbGVUb0NTVjxVbmlvblRvVHVwbGU8RXhjbHVkZTxLZXlzW251bWJlcl0sIFR5cGU+Pj59YDtcblxuLyoqXG4gKiBEZXJpdmVzIGFuIGV2ZW50IG1hcCAoYHsgZXZlbnROYW1lOiBbY2FsbGJhY2tBcmdzXSB9YCkgZnJvbSBhIHR5cGUgZXhwb3NpbmcgYW4gb3ZlcmxvYWRlZCBgb24obmFtZSwgY2FsbGJhY2spYFxuICogbWV0aG9kIFx1MjAxNCBlLmcuIE9ic2lkaWFuJ3MgYFdvcmtzcGFjZWAgLyBgVmF1bHRgIC8gYE1ldGFkYXRhQ2FjaGVgLiBFYWNoIGBvbmAgb3ZlcmxvYWQgYmVjb21lcyBvbmUgZW50cnkga2V5ZWQgYnlcbiAqIHRoZSBldmVudCBuYW1lLCB3aXRoIHRoZSBjYWxsYmFjaydzIHBhcmFtZXRlcnMgYXMgYSBsYWJlbGVkIHR1cGxlOyB0aGUgd2lkZSBgb24obmFtZTogc3RyaW5nLCBcdTIwMjYpYCBjYXRjaC1hbGxcbiAqIG92ZXJsb2FkIGlzIGRyb3BwZWQuIFRoZSBtYXAgYXV0by10cmFja3MgdXBzdHJlYW0gb3ZlcmxvYWRzIChubyBoYW5kLWF1dGhvcmluZykuIEl0IGNhbm5vdCByZWNvbnN0cnVjdFxuICogZ2VudWluZWx5IGdlbmVyaWMgb3ZlcmxvYWRzLCBidXQgT2JzaWRpYW4ncyBldmVudCBvdmVybG9hZHMgYXJlIGFsbCBjb25jcmV0ZSBzdHJpbmctbGl0ZXJhbCBvbmVzLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIEEgdHlwZSBleHBvc2luZyBhbiBgb24obmFtZSwgY2FsbGJhY2ssIFx1MjAyNilgIG1ldGhvZCAoZS5nLiBhbiBPYnNpZGlhbiBgRXZlbnRzYCBzdWJjbGFzcykuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiB0eXBlIFdvcmtzcGFjZUV2ZW50TWFwID0gRXh0cmFjdEV2ZW50TWFwPFdvcmtzcGFjZT47XG4gKiAvLyB7ICdmaWxlLW1lbnUnOiBbbWVudTogTWVudSwgZmlsZTogVEFic3RyYWN0RmlsZSwgc291cmNlOiBzdHJpbmcsIGxlYWY/OiBXb3Jrc3BhY2VMZWFmXTsgXHUyMDI2IH1cbiAqIGBgYFxuICovXG5leHBvcnQgdHlwZSBFeHRyYWN0RXZlbnRNYXA8VCBleHRlbmRzIEV2ZW50c1dpdGhPbj4gPSBVbmlvblRvSW50ZXJzZWN0aW9uPEVudHJ5T2ZPdmVybG9hZDxPdmVybG9hZFVuaW9uPFRbJ29uJ10+Pj47XG5cbi8qKlxuICogQSB0eXBlIHRoYXQgcmVwcmVzZW50cyBhIHJldHVybiB2YWx1ZSB0aGF0IG1heSBiZSBgdm9pZGAuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIHZhbHVlIHRoYXQgbWF5IGJlIHJldHVybmVkLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlIC0tIFdlIG5lZWQgdG8gdXNlIHRoZSBgdm9pZGAgcmV0dXJuIHR5cGUuXG5leHBvcnQgdHlwZSBNYXliZVJldHVybjxUPiA9IFQgfCB2b2lkO1xuXG4vKipcbiAqIEEgdHlwZSB0aGF0IHJlcHJlc2VudHMgdGhlIHZhbHVlcyBvZiBhbiBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IHR5cGUgUHJvcGVydHlWYWx1ZXM8VCBleHRlbmRzIG9iamVjdD4gPSBUW1N0cmluZ0tleXM8VD5dO1xuXG4vKipcbiAqIEEgdHlwZSB0aGF0IHJlcHJlc2VudHMgdGhlIGtleXMgb2YgYW4gb2JqZWN0IGFzIHN0cmluZ3MuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IHR5cGUgU3RyaW5nS2V5czxUIGV4dGVuZHMgb2JqZWN0PiA9IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPjtcblxudHlwZSBEdXBsaWNhdGVzPFxuICBUIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdLFxuICBTZWVuIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID0gW10sXG4gIEFkZGVkIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID0gW10sXG4gIE91dCBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA9IFtdXG4+ID0gVCBleHRlbmRzIHJlYWRvbmx5IFtpbmZlciBGaXJzdCwgLi4uaW5mZXIgUmVzdF0gPyBJbmNsdWRlczxTZWVuLCBGaXJzdD4gZXh0ZW5kcyB0cnVlID8gSW5jbHVkZXM8QWRkZWQsIEZpcnN0PiBleHRlbmRzIHRydWUgPyBEdXBsaWNhdGVzPFJlc3QsIFNlZW4sIEFkZGVkLCBPdXQ+XG4gICAgOiBEdXBsaWNhdGVzPFJlc3QsIFNlZW4sIFsuLi5BZGRlZCwgRmlyc3RdLCBbLi4uT3V0LCBGaXJzdF0+XG4gIDogRHVwbGljYXRlczxSZXN0LCBbLi4uU2VlbiwgRmlyc3RdLCBBZGRlZCwgT3V0PlxuICA6IE91dDtcblxuLy8gTWFwcyBvbmUgYG9uKG5hbWUsIGNhbGxiYWNrLCBcdTIwMjYpYCBvdmVybG9hZCB0byBhIGB7IFtuYW1lXTogW2NhbGxiYWNrQXJnc10gfWAgZW50cnk7IGRyb3BzIHRoZSB3aWRlIGBuYW1lOiBzdHJpbmdgIGNhdGNoLWFsbC5cbnR5cGUgRW50cnlPZk92ZXJsb2FkPFRPdmVybG9hZD4gPSBUT3ZlcmxvYWQgZXh0ZW5kcyAobmFtZTogaW5mZXIgTmFtZSwgY2FsbGJhY2s6ICguLi5hcmdzOiBpbmZlciBBcmdzKSA9PiB1bmtub3duLCAuLi5yZXN0OiBuZXZlcltdKSA9PiB1bmtub3duID8gTmFtZSBleHRlbmRzIHN0cmluZyA/IHN0cmluZyBleHRlbmRzIE5hbWUgPyBuZXZlciA6IFJlY29yZDxOYW1lLCBBcmdzPlxuICA6IG5ldmVyXG4gIDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5uZWNlc3NhcnktdHlwZS1wYXJhbWV0ZXJzLG5vLW1hZ2ljLW51bWJlcnMgLS0gV2UgbmVlZCB0byB1c2UgdGhlIGR1bW15IHBhcmFtZXRlciB0byBnZXQgdHlwZSBpbmZlcmVuY2UuXG50eXBlIEVxdWFsPFgsIFk+ID0gKDxUPigpID0+IFQgZXh0ZW5kcyBYID8gMSA6IDIpIGV4dGVuZHMgKDxUPigpID0+IFQgZXh0ZW5kcyBZID8gMSA6IDIpID8gdHJ1ZSA6IGZhbHNlO1xuXG4vLyBUaGUgbWluaW1hbCBzaGFwZSB7QGxpbmsgRXh0cmFjdEV2ZW50TWFwfSBvcGVyYXRlcyBvbjogYSB0eXBlIGV4cG9zaW5nIGFuIG92ZXJsb2FkZWQgYG9uYCBtZXRob2QuXG5pbnRlcmZhY2UgRXZlbnRzV2l0aE9uIHtcbiAgb246IEdlbmVyaWNGdW5jdGlvbjtcbn1cblxudHlwZSBJbmNsdWRlczxUeXBlIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdLCBNZW1iZXI+ID0gVHlwZSBleHRlbmRzIHJlYWRvbmx5IFtpbmZlciBGaXJzdCwgLi4uaW5mZXIgUmVzdF0gPyBFcXVhbDxGaXJzdCwgTWVtYmVyPiBleHRlbmRzIHRydWUgPyB0cnVlIDogSW5jbHVkZXM8UmVzdCwgTWVtYmVyPlxuICA6IGZhbHNlO1xuXG50eXBlIExhc3RJblVuaW9uPFVuaW9uPiA9IFVuaW9uVG9JbnRlcnNlY3Rpb248VW5pb24gZXh0ZW5kcyB1bmtub3duID8gKCkgPT4gVW5pb24gOiBuZXZlcj4gZXh0ZW5kcyAoKSA9PiBpbmZlciBMYXN0ID8gTGFzdCA6IG5ldmVyO1xuXG50eXBlIExpdGVyYWxLZXkgPSBudW1iZXIgfCBzdHJpbmc7XG5cbi8vIFNwbGl0cyBhbiBvdmVybG9hZGVkIGNhbGwgc2lnbmF0dXJlIGludG8gYSB1bmlvbiBvZiBpdHMgaW5kaXZpZHVhbCBjYWxsIHNpZ25hdHVyZXMgKGEgd2VsbC1rbm93biBvdmVybG9hZC10by11bmlvbiB0cmljaykuXG4vKiBlc2xpbnQtZGlzYWJsZSBwZXJmZWN0aW9uaXN0L3NvcnQtaW50ZXJzZWN0aW9uLXR5cGVzLCBwZXJmZWN0aW9uaXN0L3NvcnQtdW5pb24tdHlwZXMsIEBzdHlsaXN0aWMvb3BlcmF0b3ItbGluZWJyZWFrIC0tIFRoZSBPdmVybG9hZFVuaW9uIHJlY3Vyc2lvbiByZWxpZXMgb24gdGhpcyBleGFjdCBvcGVyYW5kIG9yZGVyOyByZW9yZGVyaW5nIGJyZWFrcyB0ZXJtaW5hdGlvbiAoVFMyNTg5KSwgYW5kIHRoZSBsaW5lLWJyZWFrIHNoYXBlIGlzIGxlZnQgdG8gZHByaW50LiAqL1xudHlwZSBPdmVybG9hZFVuaW9uPFRPdmVybG9hZCBleHRlbmRzIEdlbmVyaWNGdW5jdGlvbj4gPSBFeGNsdWRlPFxuICBPdmVybG9hZFVuaW9uUmVjdXJzaXZlPCgoKSA9PiBuZXZlcikgJiBUT3ZlcmxvYWQ+LFxuICBUT3ZlcmxvYWQgZXh0ZW5kcyAoKSA9PiBuZXZlciA/IG5ldmVyIDogKCkgPT4gbmV2ZXJcbj47XG5cbnR5cGUgT3ZlcmxvYWRVbmlvblJlY3Vyc2l2ZTxUT3ZlcmxvYWQsIFRQYXJ0aWFsT3ZlcmxvYWQgPSB1bmtub3duPiA9IFRPdmVybG9hZCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBcmdzKSA9PiBpbmZlciBSZXR1cm4gPyBUUGFydGlhbE92ZXJsb2FkIGV4dGVuZHMgVE92ZXJsb2FkID8gbmV2ZXJcbiAgOlxuICAgIHwgT3ZlcmxvYWRVbmlvblJlY3Vyc2l2ZTxUUGFydGlhbE92ZXJsb2FkICYgVE92ZXJsb2FkLCBUUGFydGlhbE92ZXJsb2FkICYgKCguLi5hcmdzOiBBcmdzKSA9PiBSZXR1cm4pICYgUGljazxUT3ZlcmxvYWQsIGtleW9mIFRPdmVybG9hZD4+XG4gICAgfCAoKC4uLmFyZ3M6IEFyZ3MpID0+IFJldHVybilcbiAgOiBuZXZlcjtcbi8qIGVzbGludC1lbmFibGUgcGVyZmVjdGlvbmlzdC9zb3J0LWludGVyc2VjdGlvbi10eXBlcywgcGVyZmVjdGlvbmlzdC9zb3J0LXVuaW9uLXR5cGVzLCBAc3R5bGlzdGljL29wZXJhdG9yLWxpbmVicmVhayAtLSBUaGUgT3ZlcmxvYWRVbmlvbiByZWN1cnNpb24gcmVsaWVzIG9uIHRoaXMgZXhhY3Qgb3BlcmFuZCBvcmRlcjsgcmVvcmRlcmluZyBicmVha3MgdGVybWluYXRpb24gKFRTMjU4OSksIGFuZCB0aGUgbGluZS1icmVhayBzaGFwZSBpcyBsZWZ0IHRvIGRwcmludC4gKi9cblxudHlwZSBUb1N0cmluZzxUPiA9IFQgZXh0ZW5kcyBudW1iZXIgfCBzdHJpbmcgPyBgJHtUfWAgOiBuZXZlcjtcblxudHlwZSBUdXBsZVRvQ1NWPFR1cGxlIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiA9IFR1cGxlIGV4dGVuZHMgcmVhZG9ubHkgW2luZmVyIEZpcnN0LCAuLi5pbmZlciBSZXN0XSA/IEZpcnN0IGV4dGVuZHMgTGl0ZXJhbEtleSA/IFJlc3QgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPyBSZXN0WydsZW5ndGgnXSBleHRlbmRzIDAgPyBUb1N0cmluZzxGaXJzdD4gOiBgJHtUb1N0cmluZzxGaXJzdD59LCR7VHVwbGVUb0NTVjxSZXN0Pn1gXG4gICAgOiBuZXZlclxuICA6IG5ldmVyXG4gIDogJyc7XG5cbi8qKlxuICogSW50ZXJuYWwgbWV0aG9kIHNoYXBlcyBmb3Ige0BsaW5rIFR5cGVBc3NlcnRlcn06IGEgY29uZGl0aW9uYWwgdHlwZSBkaXNhYmxlcyBlYWNoIG1ldGhvZCB3aGVuIHRoZVxuICogY2FwdHVyZWQgdHlwZSBkb2VzIG5vdCBzdXBwb3J0IGl0LlxuICpcbiAqIEB0eXBlUGFyYW0gVHlwZSAtIFRoZSBjYXB0dXJlZCB0eXBlLlxuICovXG5pbnRlcmZhY2UgVHlwZUFzc2VydGlvbnM8VHlwZT4ge1xuICBhc3NlcnRBbGxLZXlzOiBbVHlwZV0gZXh0ZW5kcyBbb2JqZWN0XSA/IDxjb25zdCBLZXlzIGV4dGVuZHMgcmVhZG9ubHkgc3RyaW5nW10+KFxuICAgICAga2V5czogRXhhY3RNZW1iZXJzPFN0cmluZ0tleXM8VHlwZT4sIEtleXM+XG4gICAgKSA9PiByZWFkb25seSAoa2V5b2YgVHlwZSlbXVxuICAgIDogbmV2ZXI7XG4gIGFzc2VydEFsbE1lbWJlcnM6IFtUeXBlXSBleHRlbmRzIFtMaXRlcmFsS2V5XSA/IDxjb25zdCBLZXlzIGV4dGVuZHMgcmVhZG9ubHkgTGl0ZXJhbEtleVtdPihcbiAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxUeXBlLCBLZXlzPlxuICAgICkgPT4gcmVhZG9ubHkgVHlwZVtdXG4gICAgOiBuZXZlcjtcbn1cblxudHlwZSBVbmlvblRvSW50ZXJzZWN0aW9uPFVuaW9uPiA9IChVbmlvbiBleHRlbmRzIHVua25vd24gPyAoa2V5OiBVbmlvbikgPT4gdm9pZCA6IG5ldmVyKSBleHRlbmRzIChrZXk6IGluZmVyIEludGVyc2VjdGlvbikgPT4gdm9pZCA/IEludGVyc2VjdGlvbiA6IG5ldmVyO1xuXG50eXBlIFVuaW9uVG9UdXBsZTxVbmlvbiwgTGFzdCA9IExhc3RJblVuaW9uPFVuaW9uPj4gPSBbVW5pb25dIGV4dGVuZHMgW25ldmVyXSA/IFtdIDogWy4uLlVuaW9uVG9UdXBsZTxFeGNsdWRlPFVuaW9uLCBMYXN0Pj4sIExhc3RdO1xuXG4vKipcbiAqIEEgaGVscGVyIHRoYXQgY2FwdHVyZXMgYSB0eXBlIHBhcmFtZXRlciBhbmQgcHJvdmlkZXMgbWV0aG9kcyBmb3IgY29tcGlsZS10aW1lIGV4aGF1c3RpdmVuZXNzIGNoZWNrcy5cbiAqXG4gKiBAdHlwZVBhcmFtIFR5cGUgLSBUaGUgY2FwdHVyZWQgdHlwZS5cbiAqXG4gKiBAcmVtYXJrc1xuICogLSBgYXNzZXJ0QWxsS2V5c2AgaXMgYXZhaWxhYmxlIHdoZW4gYFR5cGVgIGlzIGFuIG9iamVjdCB0eXBlLlxuICogLSBgYXNzZXJ0QWxsTWVtYmVyc2AgaXMgYXZhaWxhYmxlIHdoZW4gYFR5cGVgIGlzIGEgbGl0ZXJhbCBrZXkgdW5pb24gKGBzdHJpbmcgfCBudW1iZXJgKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIHR5cGUgQSA9IHsgYTogMSwgYjogMiwgYzogMyB9O1xuICogbmV3IFR5cGVBc3NlcnRlcjxBPigpLmFzc2VydEFsbEtleXMoWydhJywgJ2InLCAnYyddKTsgLy8gT0tcbiAqIG5ldyBUeXBlQXNzZXJ0ZXI8QT4oKS5hc3NlcnRBbGxLZXlzKFsnYycsICdhJywgJ2InXSk7IC8vIE9LLCBvcmRlciBpcyBpZ25vcmVkXG4gKiBuZXcgVHlwZUFzc2VydGVyPEE+KCkuYXNzZXJ0QWxsS2V5cyhbJ2EnLCAnYicsICdjJywgJ2QnXSk7IC8vIEVycm9yOiBJbnZhbGlkIG1lbWJlcnM6IGRcbiAqIG5ldyBUeXBlQXNzZXJ0ZXI8QT4oKS5hc3NlcnRBbGxLZXlzKFsnYScsICdiJ10pOyAvLyBFcnJvcjogTWlzc2luZyBtZW1iZXJzOiBjXG4gKlxuICogdHlwZSBCID0gMSB8IDIgfCAzIHwgJ2EnO1xuICogbmV3IFR5cGVBc3NlcnRlcjxCPigpLmFzc2VydEFsbE1lbWJlcnMoWzEsIDIsIDMsICdhJ10pOyAvLyBPS1xuICogbmV3IFR5cGVBc3NlcnRlcjxCPigpLmFzc2VydEFsbE1lbWJlcnMoWzEsIDIsIDMsICdhJywgNF0pOyAvLyBFcnJvcjogSW52YWxpZCBtZW1iZXJzOiA0XG4gKiBuZXcgVHlwZUFzc2VydGVyPEI+KCkuYXNzZXJ0QWxsTWVtYmVycyhbMSwgMiwgM10pOyAvLyBFcnJvcjogTWlzc2luZyBtZW1iZXJzOiBhXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVBc3NlcnRlcjxUeXBlPiB7XG4gIC8qKlxuICAgKiBBc3NlcnRzIHRoYXQgYWxsIGtleXMgb2YgYW4gb2JqZWN0IHR5cGUgYXJlIHByZXNlbnQgaW4gYSBsaXN0IG9mIGtleXMuXG4gICAqXG4gICAqIEByZW1hcmtzIE9ubHkgYXZhaWxhYmxlIHdoZW4gYFtUeXBlXSBleHRlbmRzIFtvYmplY3RdYC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhc3NlcnRBbGxLZXlzOiBUeXBlQXNzZXJ0aW9uczxUeXBlPlsnYXNzZXJ0QWxsS2V5cyddO1xuXG4gIC8qKlxuICAgKiBBc3NlcnRzIHRoYXQgYWxsIG1lbWJlcnMgb2YgYSB1bmlvbiB0eXBlIGFyZSBwcmVzZW50IGluIGEgbGlzdCBvZiBtZW1iZXJzLlxuICAgKlxuICAgKiBAcmVtYXJrcyBPbmx5IGF2YWlsYWJsZSB3aGVuIGBbVHlwZV0gZXh0ZW5kcyBbTGl0ZXJhbEtleV1gLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFzc2VydEFsbE1lbWJlcnM6IFR5cGVBc3NlcnRpb25zPFR5cGU+Wydhc3NlcnRBbGxNZW1iZXJzJ107XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB0eXBlIGFzc2VydGVyIHRoYXQgY2FwdHVyZXMge0BsaW5rIFR5cGV9IGZvciBjb21waWxlLXRpbWUgZXhoYXVzdGl2ZW5lc3MgY2hlY2tzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGFzc2VydGlvbnMgPSBjYXN0VG88VHlwZUFzc2VydGlvbnM8VHlwZT4+KHtcbiAgICAgIGFzc2VydEFsbEtleXM8Y29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IHN0cmluZ1tdPihcbiAgICAgICAga2V5czogRXhhY3RNZW1iZXJzPFN0cmluZ0tleXM8b2JqZWN0ICYgVHlwZT4sIEtleXM+XG4gICAgICApOiByZWFkb25seSAoa2V5b2YgKG9iamVjdCAmIFR5cGUpKVtdIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcmVlemUoa2V5cy5zbGljZSgpIGFzIChrZXlvZiAob2JqZWN0ICYgVHlwZSkpW10pO1xuICAgICAgfSxcbiAgICAgIGFzc2VydEFsbE1lbWJlcnM8Y29uc3QgS2V5cyBleHRlbmRzIHJlYWRvbmx5IExpdGVyYWxLZXlbXT4oXG4gICAgICAgIGtleXM6IEV4YWN0TWVtYmVyczxMaXRlcmFsS2V5ICYgVHlwZSwgS2V5cz5cbiAgICAgICk6IHJlYWRvbmx5IChMaXRlcmFsS2V5ICYgVHlwZSlbXSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZnJlZXplKGtleXMuc2xpY2UoKSBhcyAoTGl0ZXJhbEtleSAmIFR5cGUpW10pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYXNzZXJ0QWxsS2V5cyA9IGFzc2VydGlvbnMuYXNzZXJ0QWxsS2V5cztcbiAgICB0aGlzLmFzc2VydEFsbE1lbWJlcnMgPSBhc3NlcnRpb25zLmFzc2VydEFsbE1lbWJlcnM7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLDBCQUF1QjtBQThKaEIsTUFBTSxhQUFtQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1kO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtULGNBQWM7QUFDbkIsVUFBTSxpQkFBYSw0QkFBNkI7QUFBQSxNQUM5QyxjQUNFLE1BQ29DO0FBQ3BDLGVBQU8sT0FBTyxPQUFPLEtBQUssTUFBTSxDQUE4QjtBQUFBLE1BQ2hFO0FBQUEsTUFDQSxpQkFDRSxNQUNnQztBQUNoQyxlQUFPLE9BQU8sT0FBTyxLQUFLLE1BQU0sQ0FBMEI7QUFBQSxNQUM1RDtBQUFBLElBQ0YsQ0FBQztBQUNELFNBQUssZ0JBQWdCLFdBQVc7QUFDaEMsU0FBSyxtQkFBbUIsV0FBVztBQUFBLEVBQ3JDO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
package/dist/lib/cjs/type.d.cts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Type utilities.
|
|
6
6
|
*/
|
|
7
|
+
import type { GenericFunction } from './function.cjs';
|
|
7
8
|
/**
|
|
8
9
|
* A type that represents the keys of an object as strings and asserts that all keys are present in a list of keys.
|
|
9
10
|
*
|
|
@@ -18,6 +19,22 @@ export type ExactKeys<Type extends object, Keys extends readonly string[]> = Exa
|
|
|
18
19
|
* @typeParam Keys - The list of members to assert.
|
|
19
20
|
*/
|
|
20
21
|
export type ExactMembers<Type extends LiteralKey, Keys extends readonly LiteralKey[]> = Exclude<Keys[number], Type> extends never ? Exclude<Type, Keys[number]> extends never ? Duplicates<Keys> extends [] ? Keys : `ERROR: Duplicate members: ${TupleToCSV<Duplicates<Keys>>}` : `ERROR: Missing members: ${TupleToCSV<UnionToTuple<Exclude<Type, Keys[number]>>>}` : `ERROR: Invalid members: ${TupleToCSV<UnionToTuple<Exclude<Keys[number], Type>>>}`;
|
|
22
|
+
/**
|
|
23
|
+
* Derives an event map (`{ eventName: [callbackArgs] }`) from a type exposing an overloaded `on(name, callback)`
|
|
24
|
+
* method — e.g. Obsidian's `Workspace` / `Vault` / `MetadataCache`. Each `on` overload becomes one entry keyed by
|
|
25
|
+
* the event name, with the callback's parameters as a labeled tuple; the wide `on(name: string, …)` catch-all
|
|
26
|
+
* overload is dropped. The map auto-tracks upstream overloads (no hand-authoring). It cannot reconstruct
|
|
27
|
+
* genuinely generic overloads, but Obsidian's event overloads are all concrete string-literal ones.
|
|
28
|
+
*
|
|
29
|
+
* @typeParam T - A type exposing an `on(name, callback, …)` method (e.g. an Obsidian `Events` subclass).
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* type WorkspaceEventMap = ExtractEventMap<Workspace>;
|
|
34
|
+
* // { 'file-menu': [menu: Menu, file: TAbstractFile, source: string, leaf?: WorkspaceLeaf]; … }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export type ExtractEventMap<T extends EventsWithOn> = UnionToIntersection<EntryOfOverload<OverloadUnion<T['on']>>>;
|
|
21
38
|
/**
|
|
22
39
|
* A type that represents a return value that may be `void`.
|
|
23
40
|
*
|
|
@@ -36,6 +53,31 @@ export type PropertyValues<T extends object> = T[StringKeys<T>];
|
|
|
36
53
|
* @typeParam T - The type of the object.
|
|
37
54
|
*/
|
|
38
55
|
export type StringKeys<T extends object> = Extract<keyof T, string>;
|
|
56
|
+
type Duplicates<T extends readonly unknown[], Seen extends readonly unknown[] = [], Added extends readonly unknown[] = [], Out extends readonly unknown[] = []> = T extends readonly [infer First, ...infer Rest] ? Includes<Seen, First> extends true ? Includes<Added, First> extends true ? Duplicates<Rest, Seen, Added, Out> : Duplicates<Rest, Seen, [...Added, First], [...Out, First]> : Duplicates<Rest, [...Seen, First], Added, Out> : Out;
|
|
57
|
+
type EntryOfOverload<TOverload> = TOverload extends (name: infer Name, callback: (...args: infer Args) => unknown, ...rest: never[]) => unknown ? Name extends string ? string extends Name ? never : Record<Name, Args> : never : never;
|
|
58
|
+
type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
|
|
59
|
+
interface EventsWithOn {
|
|
60
|
+
on: GenericFunction;
|
|
61
|
+
}
|
|
62
|
+
type Includes<Type extends readonly unknown[], Member> = Type extends readonly [infer First, ...infer Rest] ? Equal<First, Member> extends true ? true : Includes<Rest, Member> : false;
|
|
63
|
+
type LastInUnion<Union> = UnionToIntersection<Union extends unknown ? () => Union : never> extends () => infer Last ? Last : never;
|
|
64
|
+
type LiteralKey = number | string;
|
|
65
|
+
type OverloadUnion<TOverload extends GenericFunction> = Exclude<OverloadUnionRecursive<(() => never) & TOverload>, TOverload extends () => never ? never : () => never>;
|
|
66
|
+
type OverloadUnionRecursive<TOverload, TPartialOverload = unknown> = TOverload extends (...args: infer Args) => infer Return ? TPartialOverload extends TOverload ? never : OverloadUnionRecursive<TPartialOverload & TOverload, TPartialOverload & ((...args: Args) => Return) & Pick<TOverload, keyof TOverload>> | ((...args: Args) => Return) : never;
|
|
67
|
+
type ToString<T> = T extends number | string ? `${T}` : never;
|
|
68
|
+
type TupleToCSV<Tuple extends readonly unknown[]> = Tuple extends readonly [infer First, ...infer Rest] ? First extends LiteralKey ? Rest extends readonly unknown[] ? Rest['length'] extends 0 ? ToString<First> : `${ToString<First>},${TupleToCSV<Rest>}` : never : never : '';
|
|
69
|
+
/**
|
|
70
|
+
* Internal method shapes for {@link TypeAsserter}: a conditional type disables each method when the
|
|
71
|
+
* captured type does not support it.
|
|
72
|
+
*
|
|
73
|
+
* @typeParam Type - The captured type.
|
|
74
|
+
*/
|
|
75
|
+
interface TypeAssertions<Type> {
|
|
76
|
+
assertAllKeys: [Type] extends [object] ? <const Keys extends readonly string[]>(keys: ExactMembers<StringKeys<Type>, Keys>) => readonly (keyof Type)[] : never;
|
|
77
|
+
assertAllMembers: [Type] extends [LiteralKey] ? <const Keys extends readonly LiteralKey[]>(keys: ExactMembers<Type, Keys>) => readonly Type[] : never;
|
|
78
|
+
}
|
|
79
|
+
type UnionToIntersection<Union> = (Union extends unknown ? (key: Union) => void : never) extends (key: infer Intersection) => void ? Intersection : never;
|
|
80
|
+
type UnionToTuple<Union, Last = LastInUnion<Union>> = [Union] extends [never] ? [] : [...UnionToTuple<Exclude<Union, Last>>, Last];
|
|
39
81
|
/**
|
|
40
82
|
* A helper that captures a type parameter and provides methods for compile-time exhaustiveness checks.
|
|
41
83
|
*
|
|
@@ -48,55 +90,33 @@ export type StringKeys<T extends object> = Extract<keyof T, string>;
|
|
|
48
90
|
* @example
|
|
49
91
|
* ```ts
|
|
50
92
|
* type A = { a: 1, b: 2, c: 3 };
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
93
|
+
* new TypeAsserter<A>().assertAllKeys(['a', 'b', 'c']); // OK
|
|
94
|
+
* new TypeAsserter<A>().assertAllKeys(['c', 'a', 'b']); // OK, order is ignored
|
|
95
|
+
* new TypeAsserter<A>().assertAllKeys(['a', 'b', 'c', 'd']); // Error: Invalid members: d
|
|
96
|
+
* new TypeAsserter<A>().assertAllKeys(['a', 'b']); // Error: Missing members: c
|
|
55
97
|
*
|
|
56
98
|
* type B = 1 | 2 | 3 | 'a';
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
99
|
+
* new TypeAsserter<B>().assertAllMembers([1, 2, 3, 'a']); // OK
|
|
100
|
+
* new TypeAsserter<B>().assertAllMembers([1, 2, 3, 'a', 4]); // Error: Invalid members: 4
|
|
101
|
+
* new TypeAsserter<B>().assertAllMembers([1, 2, 3]); // Error: Missing members: a
|
|
60
102
|
* ```
|
|
61
103
|
*/
|
|
62
|
-
export
|
|
104
|
+
export declare class TypeAsserter<Type> {
|
|
63
105
|
/**
|
|
64
106
|
* Asserts that all keys of an object type are present in a list of keys.
|
|
65
107
|
*
|
|
66
108
|
* @remarks Only available when `[Type] extends [object]`.
|
|
67
109
|
*/
|
|
68
|
-
|
|
110
|
+
readonly assertAllKeys: TypeAssertions<Type>['assertAllKeys'];
|
|
69
111
|
/**
|
|
70
112
|
* Asserts that all members of a union type are present in a list of members.
|
|
71
113
|
*
|
|
72
114
|
* @remarks Only available when `[Type] extends [LiteralKey]`.
|
|
73
115
|
*/
|
|
74
|
-
|
|
116
|
+
readonly assertAllMembers: TypeAssertions<Type>['assertAllMembers'];
|
|
117
|
+
/**
|
|
118
|
+
* Creates a type asserter that captures {@link Type} for compile-time exhaustiveness checks.
|
|
119
|
+
*/
|
|
120
|
+
constructor();
|
|
75
121
|
}
|
|
76
|
-
type Duplicates<T extends readonly unknown[], Seen extends readonly unknown[] = [], Added extends readonly unknown[] = [], Out extends readonly unknown[] = []> = T extends readonly [infer First, ...infer Rest] ? Includes<Seen, First> extends true ? Includes<Added, First> extends true ? Duplicates<Rest, Seen, Added, Out> : Duplicates<Rest, Seen, [...Added, First], [...Out, First]> : Duplicates<Rest, [...Seen, First], Added, Out> : Out;
|
|
77
|
-
type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
|
|
78
|
-
type Includes<Type extends readonly unknown[], Member> = Type extends readonly [infer First, ...infer Rest] ? Equal<First, Member> extends true ? true : Includes<Rest, Member> : false;
|
|
79
|
-
type LastInUnion<Union> = UnionToIntersection<Union extends unknown ? () => Union : never> extends () => infer Last ? Last : never;
|
|
80
|
-
type LiteralKey = number | string;
|
|
81
|
-
type ToString<T> = T extends number | string ? `${T}` : never;
|
|
82
|
-
type TupleToCSV<Tuple extends readonly unknown[]> = Tuple extends readonly [infer First, ...infer Rest] ? First extends LiteralKey ? Rest extends readonly unknown[] ? Rest['length'] extends 0 ? ToString<First> : `${ToString<First>},${TupleToCSV<Rest>}` : never : never : '';
|
|
83
|
-
type UnionToIntersection<Union> = (Union extends unknown ? (key: Union) => void : never) extends (key: infer Intersection) => void ? Intersection : never;
|
|
84
|
-
type UnionToTuple<Union, Last = LastInUnion<Union>> = [Union] extends [never] ? [] : [...UnionToTuple<Exclude<Union, Last>>, Last];
|
|
85
|
-
/**
|
|
86
|
-
* Creates a type helper that captures a type parameter for compile-time exhaustiveness checks.
|
|
87
|
-
*
|
|
88
|
-
* @typeParam Type - The type to capture.
|
|
89
|
-
* @returns A {@link TypeAsserter} with `assertAllKeys` and `assertAllMembers` methods.
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* ```ts
|
|
93
|
-
* type A = { a: 1, b: 2, c: 3 };
|
|
94
|
-
* typeAsserter<A>().assertAllKeys(['a', 'b', 'c']); // OK
|
|
95
|
-
* typeAsserter<A>().assertAllKeys(['c', 'a', 'b']); // OK, order is ignored
|
|
96
|
-
*
|
|
97
|
-
* type B = 1 | 2 | 3 | 'a';
|
|
98
|
-
* typeAsserter<B>().assertAllMembers([1, 2, 3, 'a']); // OK
|
|
99
|
-
* ```
|
|
100
|
-
*/
|
|
101
|
-
export declare function typeAsserter<Type>(): TypeAsserter<Type>;
|
|
102
122
|
export {};
|