@mnaoumov/obsidian-lib 10.11.0 → 10.12.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/README.md +26 -0
- package/components/all-windows-status-bar-item-component/package.json +6 -0
- package/components/shared-component-pool-component/package.json +6 -0
- package/components/workspace-layout-state-component/package.json +6 -0
- package/dist/lib/cjs/__merged.cjs +76 -1
- package/dist/lib/cjs/__merged.d.cts +11 -4
- package/dist/lib/cjs/bug-report-diagnostics.cjs +222 -0
- package/dist/lib/cjs/bug-report-diagnostics.d.cts +186 -0
- package/dist/lib/cjs/bug-report.cjs +36 -10
- package/dist/lib/cjs/bug-report.d.cts +65 -0
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +93 -2
- package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +34 -2
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +245 -0
- package/dist/lib/cjs/components/all-windows-status-bar-item-component.d.cts +146 -0
- package/dist/lib/cjs/components/embed-extensions-component.cjs +20 -3
- package/dist/lib/cjs/components/embed-extensions-component.d.cts +8 -0
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +16 -2
- package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +9 -0
- package/dist/lib/cjs/components/index.cjs +12 -3
- package/dist/lib/cjs/components/index.d.cts +3 -0
- package/dist/lib/cjs/components/plugin-gate-component.cjs +2 -9
- package/dist/lib/cjs/components/plugin-settings-component.cjs +7 -2
- package/dist/lib/cjs/components/shared-component-pool-component.cjs +368 -0
- package/dist/lib/cjs/components/shared-component-pool-component.d.cts +129 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.cjs +495 -0
- package/dist/lib/cjs/components/workspace-layout-state-component.d.cts +239 -0
- package/dist/lib/cjs/css-class.cjs +5 -1
- package/dist/lib/cjs/css-class.d.cts +16 -0
- package/dist/lib/cjs/data-handler.cjs +156 -5
- package/dist/lib/cjs/data-handler.d.cts +128 -2
- package/dist/lib/cjs/desktop-git-runner.cjs +4 -14
- package/dist/lib/cjs/desktop-git-runner.d.cts +8 -2
- package/dist/lib/cjs/generated-during-build.cjs +2 -2
- package/dist/lib/cjs/git-rename-history.cjs +1 -1
- package/dist/lib/cjs/git-rename-history.d.cts +2 -2
- package/dist/lib/cjs/i18n/locales/en.cjs +23 -1
- package/dist/lib/cjs/i18n/locales/en.d.cts +22 -0
- package/dist/lib/cjs/i18n/locales/translations-map.d.cts +22 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/markdown-view.cjs +191 -3
- package/dist/lib/cjs/markdown-view.d.cts +48 -1
- package/dist/lib/cjs/modals/copy-text-manually.cjs +181 -0
- package/dist/lib/cjs/modals/copy-text-manually.d.cts +38 -0
- package/dist/lib/cjs/modals/index.cjs +7 -1
- package/dist/lib/cjs/modals/index.d.cts +2 -0
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +202 -0
- package/dist/lib/cjs/modals/review-bug-report-diagnostics.d.cts +30 -0
- package/dist/lib/cjs/plugin/index.cjs +4 -1
- package/dist/lib/cjs/plugin/index.d.cts +1 -0
- package/dist/lib/cjs/plugin/plugin-api.cjs +13 -4
- package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -1
- package/dist/lib/cjs/plugin/plugin-install-state.cjs +46 -1
- package/dist/lib/cjs/plugin/plugin-install-state.d.cts +30 -0
- package/dist/lib/cjs/plugin/plugin-instance.cjs +448 -0
- package/dist/lib/cjs/plugin/plugin-instance.d.cts +251 -0
- package/dist/lib/cjs/plugin/plugin.cjs +16 -1
- package/dist/lib/cjs/plugin/plugin.d.cts +7 -0
- package/dist/lib/esm/__merged.d.mts +11 -4
- package/dist/lib/esm/__merged.mjs +83 -3
- package/dist/lib/esm/bug-report-diagnostics.d.mts +186 -0
- package/dist/lib/esm/bug-report-diagnostics.mjs +127 -0
- package/dist/lib/esm/bug-report.d.mts +65 -0
- package/dist/lib/esm/bug-report.mjs +33 -10
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +34 -2
- package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +99 -3
- package/dist/lib/esm/components/all-windows-status-bar-item-component.d.mts +146 -0
- package/dist/lib/esm/components/all-windows-status-bar-item-component.mjs +154 -0
- package/dist/lib/esm/components/embed-extensions-component.d.mts +8 -0
- package/dist/lib/esm/components/embed-extensions-component.mjs +20 -3
- package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +9 -0
- package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +16 -2
- package/dist/lib/esm/components/index.d.mts +3 -0
- package/dist/lib/esm/components/index.mjs +8 -2
- package/dist/lib/esm/components/plugin-gate-component.mjs +5 -13
- package/dist/lib/esm/components/plugin-settings-component.mjs +7 -2
- package/dist/lib/esm/components/shared-component-pool-component.d.mts +129 -0
- package/dist/lib/esm/components/shared-component-pool-component.mjs +280 -0
- package/dist/lib/esm/components/workspace-layout-state-component.d.mts +239 -0
- package/dist/lib/esm/components/workspace-layout-state-component.mjs +404 -0
- package/dist/lib/esm/css-class.d.mts +16 -0
- package/dist/lib/esm/css-class.mjs +5 -1
- package/dist/lib/esm/data-handler.d.mts +128 -2
- package/dist/lib/esm/data-handler.mjs +152 -4
- package/dist/lib/esm/desktop-git-runner.d.mts +8 -2
- package/dist/lib/esm/desktop-git-runner.mjs +3 -3
- package/dist/lib/esm/generated-during-build.mjs +2 -2
- package/dist/lib/esm/git-rename-history.d.mts +2 -2
- package/dist/lib/esm/git-rename-history.mjs +1 -1
- package/dist/lib/esm/i18n/locales/en.d.mts +22 -0
- package/dist/lib/esm/i18n/locales/en.mjs +23 -1
- package/dist/lib/esm/i18n/locales/translations-map.d.mts +22 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/markdown-view.d.mts +48 -1
- package/dist/lib/esm/markdown-view.mjs +192 -2
- package/dist/lib/esm/modals/copy-text-manually.d.mts +38 -0
- package/dist/lib/esm/modals/copy-text-manually.mjs +99 -0
- package/dist/lib/esm/modals/index.d.mts +2 -0
- package/dist/lib/esm/modals/index.mjs +5 -1
- package/dist/lib/esm/modals/review-bug-report-diagnostics.d.mts +30 -0
- package/dist/lib/esm/modals/review-bug-report-diagnostics.mjs +120 -0
- package/dist/lib/esm/plugin/index.d.mts +1 -0
- package/dist/lib/esm/plugin/index.mjs +3 -1
- package/dist/lib/esm/plugin/plugin-api.d.mts +5 -1
- package/dist/lib/esm/plugin/plugin-api.mjs +13 -4
- package/dist/lib/esm/plugin/plugin-install-state.d.mts +30 -0
- package/dist/lib/esm/plugin/plugin-install-state.mjs +44 -1
- package/dist/lib/esm/plugin/plugin-instance.d.mts +251 -0
- package/dist/lib/esm/plugin/plugin-instance.mjs +366 -0
- package/dist/lib/esm/plugin/plugin.d.mts +7 -0
- package/dist/lib/esm/plugin/plugin.mjs +16 -1
- package/dist/styles.css +16 -1
- package/modals/copy-text-manually/package.json +6 -0
- package/modals/review-bug-report-diagnostics/package.json +6 -0
- package/package.json +2 -1
- package/plugin/plugin-instance/package.json +6 -0
|
@@ -125,7 +125,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
125
125
|
var bug_report_exports = {};
|
|
126
126
|
__export(bug_report_exports, {
|
|
127
127
|
BUG_REPORT_ISSUE_FORM_TEMPLATE: () => BUG_REPORT_ISSUE_FORM_TEMPLATE,
|
|
128
|
+
BUG_REPORT_PASTE_INSTRUCTIONS: () => BUG_REPORT_PASTE_INSTRUCTIONS,
|
|
128
129
|
BugReportIssueFormFieldId: () => BugReportIssueFormFieldId,
|
|
130
|
+
DEFAULT_BUG_REPORT_MAX_URL_LENGTH: () => DEFAULT_BUG_REPORT_MAX_URL_LENGTH,
|
|
131
|
+
buildBugReportIssueFormLink: () => buildBugReportIssueFormLink,
|
|
129
132
|
formatBugReportEnvironment: () => formatBugReportEnvironment,
|
|
130
133
|
getBugReportEnvironment: () => getBugReportEnvironment,
|
|
131
134
|
getBugReportIssueFormUrl: () => getBugReportIssueFormUrl,
|
|
@@ -133,6 +136,7 @@ __export(bug_report_exports, {
|
|
|
133
136
|
});
|
|
134
137
|
module.exports = __toCommonJS(bug_report_exports);
|
|
135
138
|
var import_obsidian = require('obsidian');
|
|
139
|
+
var import_bug_report_diagnostics = require('./bug-report-diagnostics.cjs');
|
|
136
140
|
var import_mobile_app_info = require('./mobile-app-info.cjs');
|
|
137
141
|
var BugReportIssueFormFieldId = /* @__PURE__ */ ((BugReportIssueFormFieldId2) => {
|
|
138
142
|
BugReportIssueFormFieldId2["Environment"] = "environment";
|
|
@@ -142,7 +146,31 @@ var BugReportIssueFormFieldId = /* @__PURE__ */ ((BugReportIssueFormFieldId2) =>
|
|
|
142
146
|
return BugReportIssueFormFieldId2;
|
|
143
147
|
})(BugReportIssueFormFieldId || {});
|
|
144
148
|
const BUG_REPORT_ISSUE_FORM_TEMPLATE = "bug_report.yml";
|
|
149
|
+
const DEFAULT_BUG_REPORT_MAX_URL_LENGTH = 6e3;
|
|
150
|
+
const BUG_REPORT_PASTE_INSTRUCTIONS = "The full environment and diagnostics were copied to your clipboard because they are too long for a link. Replace this text by pasting them here.";
|
|
145
151
|
const UNKNOWN = "unknown";
|
|
152
|
+
function buildBugReportIssueFormLink(params) {
|
|
153
|
+
const { environment } = params;
|
|
154
|
+
const diagnosticsMarkdown = (0, import_bug_report_diagnostics.formatBugReportDiagnostics)(params.diagnostics ?? []);
|
|
155
|
+
const environmentText = diagnosticsMarkdown === "" ? formatBugReportEnvironment(environment) : `${formatBugReportEnvironment(environment)}
|
|
156
|
+
|
|
157
|
+
${diagnosticsMarkdown}`;
|
|
158
|
+
function buildUrl(environmentFieldValue) {
|
|
159
|
+
return getGitHubIssueFormUrl({
|
|
160
|
+
fields: {
|
|
161
|
+
["environment" /* Environment */]: environmentFieldValue,
|
|
162
|
+
["obsidian-version" /* ObsidianVersion */]: environment.obsidianVersion,
|
|
163
|
+
["operating-system" /* OperatingSystem */]: environment.operatingSystem,
|
|
164
|
+
["plugin-version" /* PluginVersion */]: environment.plugin.version ?? UNKNOWN
|
|
165
|
+
},
|
|
166
|
+
gitHubRepo: params.gitHubRepo,
|
|
167
|
+
template: BUG_REPORT_ISSUE_FORM_TEMPLATE,
|
|
168
|
+
...params.title !== void 0 && { title: params.title }
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
const fullUrl = buildUrl(environmentText);
|
|
172
|
+
return fullUrl.length <= (params.maxUrlLength ?? DEFAULT_BUG_REPORT_MAX_URL_LENGTH) ? { clipboardText: null, url: fullUrl } : { clipboardText: environmentText, url: buildUrl(BUG_REPORT_PASTE_INSTRUCTIONS) };
|
|
173
|
+
}
|
|
146
174
|
function formatBugReportEnvironment(environment) {
|
|
147
175
|
const enabledPlugins = environment.enabledPlugins.length === 0 ? "none" : environment.enabledPlugins.map((pluginInfo) => formatPluginInfo(pluginInfo)).join(", ");
|
|
148
176
|
return `- Plugin: ${formatPluginInfo(environment.plugin)}
|
|
@@ -167,17 +195,12 @@ async function getBugReportEnvironment(params) {
|
|
|
167
195
|
}
|
|
168
196
|
async function getBugReportIssueFormUrl(params) {
|
|
169
197
|
const environment = await getBugReportEnvironment(params);
|
|
170
|
-
return
|
|
171
|
-
|
|
172
|
-
["environment" /* Environment */]: formatBugReportEnvironment(environment),
|
|
173
|
-
["obsidian-version" /* ObsidianVersion */]: environment.obsidianVersion,
|
|
174
|
-
["operating-system" /* OperatingSystem */]: environment.operatingSystem,
|
|
175
|
-
["plugin-version" /* PluginVersion */]: environment.plugin.version ?? UNKNOWN
|
|
176
|
-
},
|
|
198
|
+
return buildBugReportIssueFormLink({
|
|
199
|
+
environment,
|
|
177
200
|
gitHubRepo: params.gitHubRepo,
|
|
178
|
-
|
|
201
|
+
maxUrlLength: Infinity,
|
|
179
202
|
...params.title !== void 0 && { title: params.title }
|
|
180
|
-
});
|
|
203
|
+
}).url;
|
|
181
204
|
}
|
|
182
205
|
function getGitHubIssueFormUrl(params) {
|
|
183
206
|
const searchParams = new URLSearchParams({ template: params.template });
|
|
@@ -234,10 +257,13 @@ function getPluginInfo(app, pluginId) {
|
|
|
234
257
|
// Annotate the CommonJS export names for ESM import in node:
|
|
235
258
|
0 && (module.exports = {
|
|
236
259
|
BUG_REPORT_ISSUE_FORM_TEMPLATE,
|
|
260
|
+
BUG_REPORT_PASTE_INSTRUCTIONS,
|
|
237
261
|
BugReportIssueFormFieldId,
|
|
262
|
+
DEFAULT_BUG_REPORT_MAX_URL_LENGTH,
|
|
263
|
+
buildBugReportIssueFormLink,
|
|
238
264
|
formatBugReportEnvironment,
|
|
239
265
|
getBugReportEnvironment,
|
|
240
266
|
getBugReportIssueFormUrl,
|
|
241
267
|
getGitHubIssueFormUrl
|
|
242
268
|
});
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWctcmVwb3J0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBIZWxwZXJzIGZvciBhIHBsdWdpbidzIGJ1ZyByZXBvcnRzOiB0aGUgZW52aXJvbm1lbnQgYSByZXBvcnQgbmVlZHMsIGFuZCBhIGxpbmsgdG8gYSBHaXRIdWIgaXNzdWUgZm9ybVxuICogcHJlZmlsbGVkIHdpdGggaXQuXG4gKlxuICogQ3Jvc3MtcGxhdGZvcm0tbG9hZGFibGU6IHRoZSBkZXNrdG9wIG9wZXJhdGluZy1zeXN0ZW0gbG9va3VwIHJlYWRzIGBub2RlOm9zYCwgc28gaXQgaXMgaW1wb3J0ZWRcbiAqIGR5bmFtaWNhbGx5LCBvbiBkZXNrdG9wIG9ubHkuXG4gKlxuICogVGhlIGRlc2t0b3AgaW5zdGFsbGVyIHZlcnNpb24gaXMgYFBsYXRmb3JtLmJ1aWxkYCwgd2hpY2ggbm8gcHVibGljIHR5cGluZyBkZWNsYXJlczogT2JzaWRpYW4ncyBkZXNrdG9wXG4gKiBzdGFydHVwIHNldHMgaXQgZnJvbSBFbGVjdHJvbidzIGBhcHAuZ2V0VmVyc2lvbigpYCAocmVhZCBmcm9tIE9ic2lkaWFuIGAxLjE1LjBgKSwgc28gaXQgaXMgcmVhZFxuICogc3RydWN0dXJhbGx5IGhlcmUsIGFuZCByZWFkcyBhcyBgdW5rbm93bmAgaWYgYSBsYXRlciB2ZXJzaW9uIGRyb3BzIGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBhcGlWZXJzaW9uLFxuICBQbGF0Zm9ybVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB7IGdldE1vYmlsZUFwcEluZm8gfSBmcm9tICcuL21vYmlsZS1hcHAtaW5mby50cyc7XG5cbi8qKlxuICogVGhlIGlkcyBvZiB0aGUgYnVnLXJlcG9ydCBpc3N1ZSBmb3JtJ3MgZmllbGRzIHRoYXQge0BsaW5rIGdldEJ1Z1JlcG9ydElzc3VlRm9ybVVybH0gcHJlZmlsbHMuIEdpdEh1YlxuICogcHJlZmlsbHMgYSBmaWVsZCBmcm9tIGEgcXVlcnkgcGFyYW1ldGVyIG5hbWVkIGFmdGVyIHRoZSBmaWVsZCdzIGBpZGAsIHNvIGEgZm9ybSBtdXN0IGdpdmUgaXRzIGZpZWxkc1xuICogdGhlc2UgaWRzIGZvciB0aGVtIHRvIGJlIGZpbGxlZC5cbiAqL1xuZXhwb3J0IGVudW0gQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZCB7XG4gIC8qKlxuICAgKiBUaGUgd2hvbGUgZW52aXJvbm1lbnQsIGFzIHtAbGluayBmb3JtYXRCdWdSZXBvcnRFbnZpcm9ubWVudH0gcmVuZGVycyBpdC5cbiAgICovXG4gIEVudmlyb25tZW50ID0gJ2Vudmlyb25tZW50JyxcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIHZlcnNpb24uXG4gICAqL1xuICBPYnNpZGlhblZlcnNpb24gPSAnb2JzaWRpYW4tdmVyc2lvbicsXG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpbmcgc3lzdGVtLlxuICAgKi9cbiAgT3BlcmF0aW5nU3lzdGVtID0gJ29wZXJhdGluZy1zeXN0ZW0nLFxuXG4gIC8qKlxuICAgKiBUaGUgcmVwb3J0aW5nIHBsdWdpbidzIHZlcnNpb24uXG4gICAqL1xuICBQbHVnaW5WZXJzaW9uID0gJ3BsdWdpbi12ZXJzaW9uJ1xufVxuXG4vKipcbiAqIFRoZSBmaWxlIG5hbWUgb2YgdGhlIGJ1Zy1yZXBvcnQgaXNzdWUgZm9ybSwgdW5kZXIgYC5naXRodWIvSVNTVUVfVEVNUExBVEVgLlxuICovXG5leHBvcnQgY29uc3QgQlVHX1JFUE9SVF9JU1NVRV9GT1JNX1RFTVBMQVRFID0gJ2J1Z19yZXBvcnQueW1sJztcblxuLyoqXG4gKiBUaGUgZW52aXJvbm1lbnQgYSBidWcgcmVwb3J0IG5lZWRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Z1JlcG9ydEVudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIFRoZSBvdGhlciBsb2FkZWQgcGx1Z2lucywgc29ydGVkIGJ5IGlkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZFBsdWdpbnM6IHJlYWRvbmx5IEJ1Z1JlcG9ydFBsdWdpbkluZm9bXTtcblxuICAvKipcbiAgICogVGhlIGluc3RhbGxlZCBhcHAncyB2ZXJzaW9uLCB3aGljaCBjYW4gbGFnIGJlaGluZCB7QGxpbmsgb2JzaWRpYW5WZXJzaW9ufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxlclZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSBvYnNpZGlhblZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBuYW1lIGFuZCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW5nU3lzdGVtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbGF0Zm9ybTogYEFuZHJvaWRgLCBgaU9TYCwgYG1hY09TYCwgYFdpbmRvd3NgLCBgTGludXhgIG9yIGB1bmtub3duYC5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvcnRpbmcgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luOiBCdWdSZXBvcnRQbHVnaW5JbmZvO1xufVxuXG4vKipcbiAqIEEgcGx1Z2luLCBhcyBhIGJ1ZyByZXBvcnQgbmFtZXMgaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVnUmVwb3J0UGx1Z2luSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgaWQuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgaW5zdGFsbGVkIHZlcnNpb24sIG9yIGBudWxsYCB3aGVuIGl0cyBtYW5pZmVzdCBpcyBub3Qga25vd24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBudWxsIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRCdWdSZXBvcnRFbnZpcm9ubWVudH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QnVnUmVwb3J0RW52aXJvbm1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHJlcG9ydGluZyBwbHVnaW4uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRCdWdSZXBvcnRJc3N1ZUZvcm1Vcmx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJ1Z1JlcG9ydElzc3VlRm9ybVVybFBhcmFtcyBleHRlbmRzIEdldEJ1Z1JlcG9ydEVudmlyb25tZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4ncyBHaXRIdWIgcmVwb3NpdG9yeSwgYXMgYG93bmVyL25hbWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0SHViUmVwbzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaXNzdWUncyB0aXRsZS4gTGVhdmUgaXQgb3V0IHRvIGtlZXAgdGhlIGZvcm0ncyBvd24gZGVmYXVsdCB0aXRsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRHaXRIdWJJc3N1ZUZvcm1Vcmx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEdpdEh1Yklzc3VlRm9ybVVybFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIHRvIHByZWZpbGwsIGtleWVkIGJ5IGZpZWxkIGBpZGAuXG4gICAqL1xuICByZWFkb25seSBmaWVsZHM/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiByZXBvc2l0b3J5LCBhcyBgb3duZXIvbmFtZWAuXG4gICAqL1xuICByZWFkb25seSBnaXRIdWJSZXBvOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb3JtJ3MgZmlsZSBuYW1lLCB1bmRlciBgLmdpdGh1Yi9JU1NVRV9URU1QTEFURWAuXG4gICAqL1xuICByZWFkb25seSB0ZW1wbGF0ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaXNzdWUncyB0aXRsZS4gTGVhdmUgaXQgb3V0IHRvIGtlZXAgdGhlIGZvcm0ncyBvd24gZGVmYXVsdCB0aXRsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQXBwQW5kT3BlcmF0aW5nU3lzdGVtIHtcbiAgcmVhZG9ubHkgaW5zdGFsbGVyVmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBvcGVyYXRpbmdTeXN0ZW06IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBsYXRmb3JtV2l0aEJ1aWxkIHtcbiAgcmVhZG9ubHkgYnVpbGQ/OiB1bmtub3duO1xufVxuXG5jb25zdCBVTktOT1dOID0gJ3Vua25vd24nO1xuXG4vKipcbiAqIFJlbmRlcnMgYSBidWcgcmVwb3J0J3MgZW52aXJvbm1lbnQgYXMgYSBNYXJrZG93biBsaXN0LlxuICpcbiAqIEBwYXJhbSBlbnZpcm9ubWVudCAtIFRoZSBlbnZpcm9ubWVudC5cbiAqIEByZXR1cm5zIFRoZSBNYXJrZG93bi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ1Z1JlcG9ydEVudmlyb25tZW50KGVudmlyb25tZW50OiBCdWdSZXBvcnRFbnZpcm9ubWVudCk6IHN0cmluZyB7XG4gIGNvbnN0IGVuYWJsZWRQbHVnaW5zID0gZW52aXJvbm1lbnQuZW5hYmxlZFBsdWdpbnMubGVuZ3RoID09PSAwXG4gICAgPyAnbm9uZSdcbiAgICA6IGVudmlyb25tZW50LmVuYWJsZWRQbHVnaW5zLm1hcCgocGx1Z2luSW5mbykgPT4gZm9ybWF0UGx1Z2luSW5mbyhwbHVnaW5JbmZvKSkuam9pbignLCAnKTtcblxuICByZXR1cm4gYC0gUGx1Z2luOiAke2Zvcm1hdFBsdWdpbkluZm8oZW52aXJvbm1lbnQucGx1Z2luKX1cXG5gXG4gICAgKyBgLSBPYnNpZGlhbjogJHtlbnZpcm9ubWVudC5vYnNpZGlhblZlcnNpb259IChpbnN0YWxsZXIgJHtlbnZpcm9ubWVudC5pbnN0YWxsZXJWZXJzaW9ufSlcXG5gXG4gICAgKyBgLSBQbGF0Zm9ybTogJHtlbnZpcm9ubWVudC5wbGF0Zm9ybX1cXG5gXG4gICAgKyBgLSBPcGVyYXRpbmcgc3lzdGVtOiAke2Vudmlyb25tZW50Lm9wZXJhdGluZ1N5c3RlbX1cXG5gXG4gICAgKyBgLSBPdGhlciBlbmFibGVkIHBsdWdpbnM6ICR7ZW5hYmxlZFBsdWdpbnN9YDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBlbnZpcm9ubWVudCBhIGJ1ZyByZXBvcnQgbmVlZHM6IHRoZSBwbHVnaW4ncyB2ZXJzaW9uLCB0aGUgb3RoZXIgZW5hYmxlZCBwbHVnaW5zLCB0aGVcbiAqIE9ic2lkaWFuIGFuZCBpbnN0YWxsZXIgdmVyc2lvbnMsIHRoZSBwbGF0Zm9ybSBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0uXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIGVudmlyb25tZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QnVnUmVwb3J0RW52aXJvbm1lbnQocGFyYW1zOiBHZXRCdWdSZXBvcnRFbnZpcm9ubWVudFBhcmFtcyk6IFByb21pc2U8QnVnUmVwb3J0RW52aXJvbm1lbnQ+IHtcbiAgY29uc3QgeyBhcHAsIHBsdWdpbklkIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHsgaW5zdGFsbGVyVmVyc2lvbiwgb3BlcmF0aW5nU3lzdGVtIH0gPSBhd2FpdCBnZXRBcHBBbmRPcGVyYXRpbmdTeXN0ZW0oKTtcblxuICByZXR1cm4ge1xuICAgIC8vIFRoZSBsb2FkZWQgcGx1Z2lucywgYXMgT2JzaWRpYW4ncyBTaG93IGRlYnVnIGluZm8gbGlzdHMgdGhlbTogYGVuYWJsZWRQbHVnaW5zYCBhbHNvIGhvbGRzIGFuIGlkXG4gICAgLy8gd2hvc2UgZm9sZGVyIHdhcyBkZWxldGVkLCBvciB3aG9zZSBsb2FkIGZhaWxlZC5cbiAgICBlbmFibGVkUGx1Z2luczogT2JqZWN0LmtleXMoYXBwLnBsdWdpbnMucGx1Z2lucylcbiAgICAgIC5maWx0ZXIoKGlkKSA9PiBpZCAhPT0gcGx1Z2luSWQpXG4gICAgICAuc29ydCgpXG4gICAgICAubWFwKChpZCkgPT4gZ2V0UGx1Z2luSW5mbyhhcHAsIGlkKSksXG4gICAgaW5zdGFsbGVyVmVyc2lvbixcbiAgICBvYnNpZGlhblZlcnNpb246IGFwaVZlcnNpb24sXG4gICAgb3BlcmF0aW5nU3lzdGVtLFxuICAgIHBsYXRmb3JtOiBnZXRQbGF0Zm9ybU5hbWUoKSxcbiAgICBwbHVnaW46IGdldFBsdWdpbkluZm8oYXBwLCBwbHVnaW5JZClcbiAgfTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgbGluayB0byBhIHBsdWdpbidzIGJ1Zy1yZXBvcnQgaXNzdWUgZm9ybSAoe0BsaW5rIEJVR19SRVBPUlRfSVNTVUVfRk9STV9URU1QTEFURX0pLCBwcmVmaWxsZWQgd2l0aFxuICogdGhlIGVudmlyb25tZW50LCBpbiB0aGUgZmllbGRzIHtAbGluayBCdWdSZXBvcnRJc3N1ZUZvcm1GaWVsZElkfSBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgbGluay5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJ1Z1JlcG9ydElzc3VlRm9ybVVybChwYXJhbXM6IEdldEJ1Z1JlcG9ydElzc3VlRm9ybVVybFBhcmFtcyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGVudmlyb25tZW50ID0gYXdhaXQgZ2V0QnVnUmVwb3J0RW52aXJvbm1lbnQocGFyYW1zKTtcblxuICByZXR1cm4gZ2V0R2l0SHViSXNzdWVGb3JtVXJsKHtcbiAgICBmaWVsZHM6IHtcbiAgICAgIFtCdWdSZXBvcnRJc3N1ZUZvcm1GaWVsZElkLkVudmlyb25tZW50XTogZm9ybWF0QnVnUmVwb3J0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpLFxuICAgICAgW0J1Z1JlcG9ydElzc3VlRm9ybUZpZWxkSWQuT2JzaWRpYW5WZXJzaW9uXTogZW52aXJvbm1lbnQub2JzaWRpYW5WZXJzaW9uLFxuICAgICAgW0J1Z1JlcG9ydElzc3VlRm9ybUZpZWxkSWQuT3BlcmF0aW5nU3lzdGVtXTogZW52aXJvbm1lbnQub3BlcmF0aW5nU3lzdGVtLFxuICAgICAgW0J1Z1JlcG9ydElzc3VlRm9ybUZpZWxkSWQuUGx1Z2luVmVyc2lvbl06IGVudmlyb25tZW50LnBsdWdpbi52ZXJzaW9uID8/IFVOS05PV05cbiAgICB9LFxuICAgIGdpdEh1YlJlcG86IHBhcmFtcy5naXRIdWJSZXBvLFxuICAgIHRlbXBsYXRlOiBCVUdfUkVQT1JUX0lTU1VFX0ZPUk1fVEVNUExBVEUsXG4gICAgLi4ucGFyYW1zLnRpdGxlICE9PSB1bmRlZmluZWQgJiYgeyB0aXRsZTogcGFyYW1zLnRpdGxlIH1cbiAgfSk7XG59XG5cbi8qKlxuICogR2V0cyBhIGxpbmsgdGhhdCBvcGVucyBhIEdpdEh1YiBpc3N1ZSBmb3JtIHdpdGggZmllbGRzIHByZWZpbGxlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgbGluay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdpdEh1Yklzc3VlRm9ybVVybChwYXJhbXM6IEdldEdpdEh1Yklzc3VlRm9ybVVybFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoeyB0ZW1wbGF0ZTogcGFyYW1zLnRlbXBsYXRlIH0pO1xuICBpZiAocGFyYW1zLnRpdGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBzZWFyY2hQYXJhbXMuc2V0KCd0aXRsZScsIHBhcmFtcy50aXRsZSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtmaWVsZElkLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zLmZpZWxkcyA/PyB7fSkpIHtcbiAgICBzZWFyY2hQYXJhbXMuc2V0KGZpZWxkSWQsIHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7cGFyYW1zLmdpdEh1YlJlcG99L2lzc3Vlcy9uZXc/JHtzZWFyY2hQYXJhbXMudG9TdHJpbmcoKX1gO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRQbHVnaW5JbmZvKHBsdWdpbkluZm86IEJ1Z1JlcG9ydFBsdWdpbkluZm8pOiBzdHJpbmcge1xuICByZXR1cm4gYFxcYCR7cGx1Z2luSW5mby5pZH1cXGAgJHtwbHVnaW5JbmZvLnZlcnNpb24gPz8gVU5LTk9XTn1gO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBcHBBbmRPcGVyYXRpbmdTeXN0ZW0oKTogUHJvbWlzZTxBcHBBbmRPcGVyYXRpbmdTeXN0ZW0+IHtcbiAgaWYgKFBsYXRmb3JtLmlzTW9iaWxlQXBwKSB7XG4gICAgY29uc3QgbW9iaWxlQXBwSW5mbyA9IGF3YWl0IGdldE1vYmlsZUFwcEluZm8oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaW5zdGFsbGVyVmVyc2lvbjogbW9iaWxlQXBwSW5mbz8uaW5zdGFsbGVyVmVyc2lvbiA/PyBVTktOT1dOLFxuICAgICAgb3BlcmF0aW5nU3lzdGVtOiBtb2JpbGVBcHBJbmZvPy5vcGVyYXRpbmdTeXN0ZW0gPz8gVU5LTk9XTlxuICAgIH07XG4gIH1cblxuICBpZiAoIVBsYXRmb3JtLmlzRGVza3RvcEFwcCkge1xuICAgIHJldHVybiB7IGluc3RhbGxlclZlcnNpb246IFVOS05PV04sIG9wZXJhdGluZ1N5c3RlbTogVU5LTk9XTiB9O1xuICB9XG5cbiAgLy8gQ29uZGl0aW9uYWwgaW1wb3J0IG9mIHRoZSBkZXNrdG9wLW9ubHkgbG9va3VwLCB3aGljaCByZWFkcyBgbm9kZTpvc2A7IHRoaXMgYnJhbmNoIHJ1bnMgb25seSBvbiBkZXNrdG9wLlxuICBjb25zdCB7IGdldERlc2t0b3BPcGVyYXRpbmdTeXN0ZW0gfSA9IGF3YWl0IGltcG9ydCgnLi9kZXNrdG9wLW9wZXJhdGluZy1zeXN0ZW0udHMnKTtcbiAgY29uc3QgYnVpbGQgPSAoUGxhdGZvcm0gYXMgUGxhdGZvcm1XaXRoQnVpbGQpLmJ1aWxkO1xuICByZXR1cm4ge1xuICAgIGluc3RhbGxlclZlcnNpb246IHR5cGVvZiBidWlsZCA9PT0gJ3N0cmluZycgPyBidWlsZCA6IFVOS05PV04sXG4gICAgb3BlcmF0aW5nU3lzdGVtOiBnZXREZXNrdG9wT3BlcmF0aW5nU3lzdGVtKClcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UGxhdGZvcm1OYW1lKCk6IHN0cmluZyB7XG4gIGlmIChQbGF0Zm9ybS5pc0FuZHJvaWRBcHApIHtcbiAgICByZXR1cm4gJ0FuZHJvaWQnO1xuICB9XG4gIGlmIChQbGF0Zm9ybS5pc0lvc0FwcCkge1xuICAgIHJldHVybiAnaU9TJztcbiAgfVxuICBpZiAoUGxhdGZvcm0uaXNNYWNPUykge1xuICAgIHJldHVybiAnbWFjT1MnO1xuICB9XG4gIGlmIChQbGF0Zm9ybS5pc1dpbikge1xuICAgIHJldHVybiAnV2luZG93cyc7XG4gIH1cbiAgcmV0dXJuIFBsYXRmb3JtLmlzTGludXggPyAnTGludXgnIDogVU5LTk9XTjtcbn1cblxuZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhhcHA6IEFwcCwgcGx1Z2luSWQ6IHN0cmluZyk6IEJ1Z1JlcG9ydFBsdWdpbkluZm8ge1xuICByZXR1cm4ge1xuICAgIGlkOiBwbHVnaW5JZCxcbiAgICB2ZXJzaW9uOiBhcHAucGx1Z2lucy5tYW5pZmVzdHNbcGx1Z2luSWRdPy52ZXJzaW9uID8/IG51bGxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idWctcmVwb3J0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBIZWxwZXJzIGZvciBhIHBsdWdpbidzIGJ1ZyByZXBvcnRzOiB0aGUgZW52aXJvbm1lbnQgYSByZXBvcnQgbmVlZHMsIGFuZCBhIGxpbmsgdG8gYSBHaXRIdWIgaXNzdWUgZm9ybVxuICogcHJlZmlsbGVkIHdpdGggaXQuXG4gKlxuICogQ3Jvc3MtcGxhdGZvcm0tbG9hZGFibGU6IHRoZSBkZXNrdG9wIG9wZXJhdGluZy1zeXN0ZW0gbG9va3VwIHJlYWRzIGBub2RlOm9zYCwgc28gaXQgaXMgaW1wb3J0ZWRcbiAqIGR5bmFtaWNhbGx5LCBvbiBkZXNrdG9wIG9ubHkuXG4gKlxuICogVGhlIGRlc2t0b3AgaW5zdGFsbGVyIHZlcnNpb24gaXMgYFBsYXRmb3JtLmJ1aWxkYCwgd2hpY2ggbm8gcHVibGljIHR5cGluZyBkZWNsYXJlczogT2JzaWRpYW4ncyBkZXNrdG9wXG4gKiBzdGFydHVwIHNldHMgaXQgZnJvbSBFbGVjdHJvbidzIGBhcHAuZ2V0VmVyc2lvbigpYCAocmVhZCBmcm9tIE9ic2lkaWFuIGAxLjE1LjBgKSwgc28gaXQgaXMgcmVhZFxuICogc3RydWN0dXJhbGx5IGhlcmUsIGFuZCByZWFkcyBhcyBgdW5rbm93bmAgaWYgYSBsYXRlciB2ZXJzaW9uIGRyb3BzIGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXBwIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBhcGlWZXJzaW9uLFxuICBQbGF0Zm9ybVxufSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCB0eXBlIHsgQnVnUmVwb3J0RGlhZ25vc3RpY1NlY3Rpb24gfSBmcm9tICcuL2J1Zy1yZXBvcnQtZGlhZ25vc3RpY3MudHMnO1xuXG5pbXBvcnQgeyBmb3JtYXRCdWdSZXBvcnREaWFnbm9zdGljcyB9IGZyb20gJy4vYnVnLXJlcG9ydC1kaWFnbm9zdGljcy50cyc7XG5pbXBvcnQgeyBnZXRNb2JpbGVBcHBJbmZvIH0gZnJvbSAnLi9tb2JpbGUtYXBwLWluZm8udHMnO1xuXG4vKipcbiAqIFRoZSBpZHMgb2YgdGhlIGJ1Zy1yZXBvcnQgaXNzdWUgZm9ybSdzIGZpZWxkcyB0aGF0IHtAbGluayBnZXRCdWdSZXBvcnRJc3N1ZUZvcm1Vcmx9IHByZWZpbGxzLiBHaXRIdWJcbiAqIHByZWZpbGxzIGEgZmllbGQgZnJvbSBhIHF1ZXJ5IHBhcmFtZXRlciBuYW1lZCBhZnRlciB0aGUgZmllbGQncyBgaWRgLCBzbyBhIGZvcm0gbXVzdCBnaXZlIGl0cyBmaWVsZHNcbiAqIHRoZXNlIGlkcyBmb3IgdGhlbSB0byBiZSBmaWxsZWQuXG4gKi9cbmV4cG9ydCBlbnVtIEJ1Z1JlcG9ydElzc3VlRm9ybUZpZWxkSWQge1xuICAvKipcbiAgICogVGhlIHdob2xlIGVudmlyb25tZW50LCBhcyB7QGxpbmsgZm9ybWF0QnVnUmVwb3J0RW52aXJvbm1lbnR9IHJlbmRlcnMgaXQuXG4gICAqL1xuICBFbnZpcm9ubWVudCA9ICdlbnZpcm9ubWVudCcsXG5cbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiB2ZXJzaW9uLlxuICAgKi9cbiAgT2JzaWRpYW5WZXJzaW9uID0gJ29ic2lkaWFuLXZlcnNpb24nLFxuXG4gIC8qKlxuICAgKiBUaGUgb3BlcmF0aW5nIHN5c3RlbS5cbiAgICovXG4gIE9wZXJhdGluZ1N5c3RlbSA9ICdvcGVyYXRpbmctc3lzdGVtJyxcblxuICAvKipcbiAgICogVGhlIHJlcG9ydGluZyBwbHVnaW4ncyB2ZXJzaW9uLlxuICAgKi9cbiAgUGx1Z2luVmVyc2lvbiA9ICdwbHVnaW4tdmVyc2lvbidcbn1cblxuLyoqXG4gKiBUaGUgZmlsZSBuYW1lIG9mIHRoZSBidWctcmVwb3J0IGlzc3VlIGZvcm0sIHVuZGVyIGAuZ2l0aHViL0lTU1VFX1RFTVBMQVRFYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEJVR19SRVBPUlRfSVNTVUVfRk9STV9URU1QTEFURSA9ICdidWdfcmVwb3J0LnltbCc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgYnVkZ2V0LCBpbiBjaGFyYWN0ZXJzIG9mIHRoZSBlbmNvZGVkIFVSTCwgb2YgYSBwcmVmaWxsZWQgYnVnLXJlcG9ydCBsaW5rLlxuICpcbiAqIE1lYXN1cmVkIGFnYWluc3QgYGdpdGh1Yi5jb21gIG9uIDIwMjYtMTEtMDcsIHNpZ25lZCBvdXQ6IGFuIGlzc3VlLWZvcm0gVVJMIHVwIHRvIGFib3V0IDYsNTQwIGNoYXJhY3RlcnNcbiAqIHdhcyBhbnN3ZXJlZCB3aXRoIHRoZSB1c3VhbCByZWRpcmVjdCB0byB0aGUgZm9ybSwgYWJvdXQgOCwwODggd2l0aCBhIDUwMiwgYW5kIDgsMjg4IGFuZCBtb3JlIHdpdGggYSA0MTQuXG4gKiA2LDAwMCBsZWF2ZXMgcm9vbSBmb3IgYSBsb25nZXIgcmVwb3NpdG9yeSBuYW1lIGFuZCBmb3IgYSBzaWduZWQtaW4gc2Vzc2lvbidzIG93biBsaW1pdHMuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JVR19SRVBPUlRfTUFYX1VSTF9MRU5HVEggPSA2MDAwO1xuXG4vKipcbiAqIEEgbGluayB0byBhIGJ1Zy1yZXBvcnQgaXNzdWUgZm9ybSwgYXMge0BsaW5rIGJ1aWxkQnVnUmVwb3J0SXNzdWVGb3JtTGlua30gYnVpbGRzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Z1JlcG9ydElzc3VlRm9ybUxpbmsge1xuICAvKipcbiAgICogVGhlIHRleHQgdGhlIHVzZXIgbXVzdCBwYXN0ZSBpbnRvIHRoZSBmb3JtJ3MgZW52aXJvbm1lbnQgZmllbGQsIHdoZW4gdGhlIGZ1bGwgcmVwb3J0IGRpZCBub3QgZml0IHRoZVxuICAgKiBVUkwgYnVkZ2V0OyBgbnVsbGAgd2hlbiB0aGUgVVJMIGNhcnJpZXMgdGhlIHdob2xlIHJlcG9ydC5cbiAgICovXG4gIHJlYWRvbmx5IGNsaXBib2FyZFRleHQ6IG51bGwgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGJ1aWxkQnVnUmVwb3J0SXNzdWVGb3JtTGlua30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRCdWdSZXBvcnRJc3N1ZUZvcm1MaW5rUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBkaWFnbm9zdGljcyB0aGUgdXNlciBhZ3JlZWQgdG8gaW5jbHVkZSwgYXBwZW5kZWQgdG8gdGhlIGVudmlyb25tZW50IGZpZWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlhZ25vc3RpY3M/OiByZWFkb25seSBCdWdSZXBvcnREaWFnbm9zdGljU2VjdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQsIGZyb20ge0BsaW5rIGdldEJ1Z1JlcG9ydEVudmlyb25tZW50fS5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50OiBCdWdSZXBvcnRFbnZpcm9ubWVudDtcblxuICAvKipcbiAgICogVGhlIHBsdWdpbidzIEdpdEh1YiByZXBvc2l0b3J5LCBhcyBgb3duZXIvbmFtZWAuXG4gICAqL1xuICByZWFkb25seSBnaXRIdWJSZXBvOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBtb3N0IGNoYXJhY3RlcnMgdGhlIGVuY29kZWQgVVJMIG1heSBoYXZlIGJlZm9yZSB0aGUgcmVwb3J0IG1vdmVzIHRvIHRoZSBjbGlwYm9hcmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHtAbGluayBERUZBVUxUX0JVR19SRVBPUlRfTUFYX1VSTF9MRU5HVEh9XG4gICAqL1xuICByZWFkb25seSBtYXhVcmxMZW5ndGg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBpc3N1ZSdzIHRpdGxlLiBMZWF2ZSBpdCBvdXQgdG8ga2VlcCB0aGUgZm9ybSdzIG93biBkZWZhdWx0IHRpdGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHRleHQgdGhlIGVudmlyb25tZW50IGZpZWxkIGhvbGRzIHdoZW4gdGhlIHJlcG9ydCBtb3ZlZCB0byB0aGUgY2xpcGJvYXJkLlxuICovXG5leHBvcnQgY29uc3QgQlVHX1JFUE9SVF9QQVNURV9JTlNUUlVDVElPTlMgPSAnVGhlIGZ1bGwgZW52aXJvbm1lbnQgYW5kIGRpYWdub3N0aWNzIHdlcmUgY29waWVkIHRvIHlvdXIgY2xpcGJvYXJkIGJlY2F1c2UgdGhleSBhcmUgdG9vIGxvbmcgZm9yIGEgbGluay4gUmVwbGFjZSB0aGlzIHRleHQgYnkgcGFzdGluZyB0aGVtIGhlcmUuJztcblxuLyoqXG4gKiBUaGUgZW52aXJvbm1lbnQgYSBidWcgcmVwb3J0IG5lZWRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Z1JlcG9ydEVudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIFRoZSBvdGhlciBsb2FkZWQgcGx1Z2lucywgc29ydGVkIGJ5IGlkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZFBsdWdpbnM6IHJlYWRvbmx5IEJ1Z1JlcG9ydFBsdWdpbkluZm9bXTtcblxuICAvKipcbiAgICogVGhlIGluc3RhbGxlZCBhcHAncyB2ZXJzaW9uLCB3aGljaCBjYW4gbGFnIGJlaGluZCB7QGxpbmsgb2JzaWRpYW5WZXJzaW9ufS5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxlclZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSBvYnNpZGlhblZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBuYW1lIGFuZCB2ZXJzaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW5nU3lzdGVtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbGF0Zm9ybTogYEFuZHJvaWRgLCBgaU9TYCwgYG1hY09TYCwgYFdpbmRvd3NgLCBgTGludXhgIG9yIGB1bmtub3duYC5cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvcnRpbmcgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luOiBCdWdSZXBvcnRQbHVnaW5JbmZvO1xufVxuXG4vKipcbiAqIEEgcGx1Z2luLCBhcyBhIGJ1ZyByZXBvcnQgbmFtZXMgaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVnUmVwb3J0UGx1Z2luSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgaWQuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGx1Z2luJ3MgaW5zdGFsbGVkIHZlcnNpb24sIG9yIGBudWxsYCB3aGVuIGl0cyBtYW5pZmVzdCBpcyBub3Qga25vd24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBudWxsIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRCdWdSZXBvcnRFbnZpcm9ubWVudH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QnVnUmVwb3J0RW52aXJvbm1lbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHJlcG9ydGluZyBwbHVnaW4uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRCdWdSZXBvcnRJc3N1ZUZvcm1Vcmx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEJ1Z1JlcG9ydElzc3VlRm9ybVVybFBhcmFtcyBleHRlbmRzIEdldEJ1Z1JlcG9ydEVudmlyb25tZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4ncyBHaXRIdWIgcmVwb3NpdG9yeSwgYXMgYG93bmVyL25hbWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0SHViUmVwbzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaXNzdWUncyB0aXRsZS4gTGVhdmUgaXQgb3V0IHRvIGtlZXAgdGhlIGZvcm0ncyBvd24gZGVmYXVsdCB0aXRsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBnZXRHaXRIdWJJc3N1ZUZvcm1Vcmx9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdldEdpdEh1Yklzc3VlRm9ybVVybFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIHRvIHByZWZpbGwsIGtleWVkIGJ5IGZpZWxkIGBpZGAuXG4gICAqL1xuICByZWFkb25seSBmaWVsZHM/OiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiByZXBvc2l0b3J5LCBhcyBgb3duZXIvbmFtZWAuXG4gICAqL1xuICByZWFkb25seSBnaXRIdWJSZXBvOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmb3JtJ3MgZmlsZSBuYW1lLCB1bmRlciBgLmdpdGh1Yi9JU1NVRV9URU1QTEFURWAuXG4gICAqL1xuICByZWFkb25seSB0ZW1wbGF0ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaXNzdWUncyB0aXRsZS4gTGVhdmUgaXQgb3V0IHRvIGtlZXAgdGhlIGZvcm0ncyBvd24gZGVmYXVsdCB0aXRsZS5cbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQXBwQW5kT3BlcmF0aW5nU3lzdGVtIHtcbiAgcmVhZG9ubHkgaW5zdGFsbGVyVmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBvcGVyYXRpbmdTeXN0ZW06IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBsYXRmb3JtV2l0aEJ1aWxkIHtcbiAgcmVhZG9ubHkgYnVpbGQ/OiB1bmtub3duO1xufVxuXG5jb25zdCBVTktOT1dOID0gJ3Vua25vd24nO1xuXG4vKipcbiAqIEJ1aWxkcyBhIGxpbmsgdG8gYSBwbHVnaW4ncyBidWctcmVwb3J0IGlzc3VlIGZvcm0sIHByZWZpbGxlZCB3aXRoIHRoZSBlbnZpcm9ubWVudCBhbmQgdGhlIGdpdmVuXG4gKiBkaWFnbm9zdGljcy4gV2hlbiB0aGUgZW5jb2RlZCBsaW5rIHdvdWxkIGJlIGxvbmdlciB0aGFuXG4gKiB7QGxpbmsgQnVpbGRCdWdSZXBvcnRJc3N1ZUZvcm1MaW5rUGFyYW1zLm1heFVybExlbmd0aH0sIHRoZSBlbnZpcm9ubWVudCBmaWVsZCBnZXRzXG4gKiB7QGxpbmsgQlVHX1JFUE9SVF9QQVNURV9JTlNUUlVDVElPTlN9IGluc3RlYWQsIGFuZCB0aGUgZnVsbCB0ZXh0IGlzIHJldHVybmVkIGFzXG4gKiB7QGxpbmsgQnVnUmVwb3J0SXNzdWVGb3JtTGluay5jbGlwYm9hcmRUZXh0fSBmb3IgdGhlIGNhbGxlciB0byBjb3B5LiBOb3RoaW5nIGlzIGN1dC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgbGluaywgYW5kIHRoZSB0ZXh0IHRvIHBhc3RlIHdoZW4gaXQgZGlkIG5vdCBmaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEJ1Z1JlcG9ydElzc3VlRm9ybUxpbmsocGFyYW1zOiBCdWlsZEJ1Z1JlcG9ydElzc3VlRm9ybUxpbmtQYXJhbXMpOiBCdWdSZXBvcnRJc3N1ZUZvcm1MaW5rIHtcbiAgY29uc3QgeyBlbnZpcm9ubWVudCB9ID0gcGFyYW1zO1xuICBjb25zdCBkaWFnbm9zdGljc01hcmtkb3duID0gZm9ybWF0QnVnUmVwb3J0RGlhZ25vc3RpY3MocGFyYW1zLmRpYWdub3N0aWNzID8/IFtdKTtcbiAgY29uc3QgZW52aXJvbm1lbnRUZXh0ID0gZGlhZ25vc3RpY3NNYXJrZG93biA9PT0gJydcbiAgICA/IGZvcm1hdEJ1Z1JlcG9ydEVudmlyb25tZW50KGVudmlyb25tZW50KVxuICAgIDogYCR7Zm9ybWF0QnVnUmVwb3J0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpfVxcblxcbiR7ZGlhZ25vc3RpY3NNYXJrZG93bn1gO1xuXG4gIGZ1bmN0aW9uIGJ1aWxkVXJsKGVudmlyb25tZW50RmllbGRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0R2l0SHViSXNzdWVGb3JtVXJsKHtcbiAgICAgIGZpZWxkczoge1xuICAgICAgICBbQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZC5FbnZpcm9ubWVudF06IGVudmlyb25tZW50RmllbGRWYWx1ZSxcbiAgICAgICAgW0J1Z1JlcG9ydElzc3VlRm9ybUZpZWxkSWQuT2JzaWRpYW5WZXJzaW9uXTogZW52aXJvbm1lbnQub2JzaWRpYW5WZXJzaW9uLFxuICAgICAgICBbQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZC5PcGVyYXRpbmdTeXN0ZW1dOiBlbnZpcm9ubWVudC5vcGVyYXRpbmdTeXN0ZW0sXG4gICAgICAgIFtCdWdSZXBvcnRJc3N1ZUZvcm1GaWVsZElkLlBsdWdpblZlcnNpb25dOiBlbnZpcm9ubWVudC5wbHVnaW4udmVyc2lvbiA/PyBVTktOT1dOXG4gICAgICB9LFxuICAgICAgZ2l0SHViUmVwbzogcGFyYW1zLmdpdEh1YlJlcG8sXG4gICAgICB0ZW1wbGF0ZTogQlVHX1JFUE9SVF9JU1NVRV9GT1JNX1RFTVBMQVRFLFxuICAgICAgLi4ucGFyYW1zLnRpdGxlICE9PSB1bmRlZmluZWQgJiYgeyB0aXRsZTogcGFyYW1zLnRpdGxlIH1cbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGZ1bGxVcmwgPSBidWlsZFVybChlbnZpcm9ubWVudFRleHQpO1xuICByZXR1cm4gZnVsbFVybC5sZW5ndGggPD0gKHBhcmFtcy5tYXhVcmxMZW5ndGggPz8gREVGQVVMVF9CVUdfUkVQT1JUX01BWF9VUkxfTEVOR1RIKSA/IHsgY2xpcGJvYXJkVGV4dDogbnVsbCwgdXJsOiBmdWxsVXJsIH0gOiB7IGNsaXBib2FyZFRleHQ6IGVudmlyb25tZW50VGV4dCwgdXJsOiBidWlsZFVybChCVUdfUkVQT1JUX1BBU1RFX0lOU1RSVUNUSU9OUykgfTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgYnVnIHJlcG9ydCdzIGVudmlyb25tZW50IGFzIGEgTWFya2Rvd24gbGlzdC5cbiAqXG4gKiBAcGFyYW0gZW52aXJvbm1lbnQgLSBUaGUgZW52aXJvbm1lbnQuXG4gKiBAcmV0dXJucyBUaGUgTWFya2Rvd24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRCdWdSZXBvcnRFbnZpcm9ubWVudChlbnZpcm9ubWVudDogQnVnUmVwb3J0RW52aXJvbm1lbnQpOiBzdHJpbmcge1xuICBjb25zdCBlbmFibGVkUGx1Z2lucyA9IGVudmlyb25tZW50LmVuYWJsZWRQbHVnaW5zLmxlbmd0aCA9PT0gMFxuICAgID8gJ25vbmUnXG4gICAgOiBlbnZpcm9ubWVudC5lbmFibGVkUGx1Z2lucy5tYXAoKHBsdWdpbkluZm8pID0+IGZvcm1hdFBsdWdpbkluZm8ocGx1Z2luSW5mbykpLmpvaW4oJywgJyk7XG5cbiAgcmV0dXJuIGAtIFBsdWdpbjogJHtmb3JtYXRQbHVnaW5JbmZvKGVudmlyb25tZW50LnBsdWdpbil9XFxuYFxuICAgICsgYC0gT2JzaWRpYW46ICR7ZW52aXJvbm1lbnQub2JzaWRpYW5WZXJzaW9ufSAoaW5zdGFsbGVyICR7ZW52aXJvbm1lbnQuaW5zdGFsbGVyVmVyc2lvbn0pXFxuYFxuICAgICsgYC0gUGxhdGZvcm06ICR7ZW52aXJvbm1lbnQucGxhdGZvcm19XFxuYFxuICAgICsgYC0gT3BlcmF0aW5nIHN5c3RlbTogJHtlbnZpcm9ubWVudC5vcGVyYXRpbmdTeXN0ZW19XFxuYFxuICAgICsgYC0gT3RoZXIgZW5hYmxlZCBwbHVnaW5zOiAke2VuYWJsZWRQbHVnaW5zfWA7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZW52aXJvbm1lbnQgYSBidWcgcmVwb3J0IG5lZWRzOiB0aGUgcGx1Z2luJ3MgdmVyc2lvbiwgdGhlIG90aGVyIGVuYWJsZWQgcGx1Z2lucywgdGhlXG4gKiBPYnNpZGlhbiBhbmQgaW5zdGFsbGVyIHZlcnNpb25zLCB0aGUgcGxhdGZvcm0gYW5kIHRoZSBvcGVyYXRpbmcgc3lzdGVtLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEJ1Z1JlcG9ydEVudmlyb25tZW50KHBhcmFtczogR2V0QnVnUmVwb3J0RW52aXJvbm1lbnRQYXJhbXMpOiBQcm9taXNlPEJ1Z1JlcG9ydEVudmlyb25tZW50PiB7XG4gIGNvbnN0IHsgYXBwLCBwbHVnaW5JZCB9ID0gcGFyYW1zO1xuICBjb25zdCB7IGluc3RhbGxlclZlcnNpb24sIG9wZXJhdGluZ1N5c3RlbSB9ID0gYXdhaXQgZ2V0QXBwQW5kT3BlcmF0aW5nU3lzdGVtKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBUaGUgbG9hZGVkIHBsdWdpbnMsIGFzIE9ic2lkaWFuJ3MgU2hvdyBkZWJ1ZyBpbmZvIGxpc3RzIHRoZW06IGBlbmFibGVkUGx1Z2luc2AgYWxzbyBob2xkcyBhbiBpZFxuICAgIC8vIHdob3NlIGZvbGRlciB3YXMgZGVsZXRlZCwgb3Igd2hvc2UgbG9hZCBmYWlsZWQuXG4gICAgZW5hYmxlZFBsdWdpbnM6IE9iamVjdC5rZXlzKGFwcC5wbHVnaW5zLnBsdWdpbnMpXG4gICAgICAuZmlsdGVyKChpZCkgPT4gaWQgIT09IHBsdWdpbklkKVxuICAgICAgLnNvcnQoKVxuICAgICAgLm1hcCgoaWQpID0+IGdldFBsdWdpbkluZm8oYXBwLCBpZCkpLFxuICAgIGluc3RhbGxlclZlcnNpb24sXG4gICAgb2JzaWRpYW5WZXJzaW9uOiBhcGlWZXJzaW9uLFxuICAgIG9wZXJhdGluZ1N5c3RlbSxcbiAgICBwbGF0Zm9ybTogZ2V0UGxhdGZvcm1OYW1lKCksXG4gICAgcGx1Z2luOiBnZXRQbHVnaW5JbmZvKGFwcCwgcGx1Z2luSWQpXG4gIH07XG59XG5cbi8qKlxuICogR2V0cyBhIGxpbmsgdG8gYSBwbHVnaW4ncyBidWctcmVwb3J0IGlzc3VlIGZvcm0gKHtAbGluayBCVUdfUkVQT1JUX0lTU1VFX0ZPUk1fVEVNUExBVEV9KSwgcHJlZmlsbGVkIHdpdGhcbiAqIHRoZSBlbnZpcm9ubWVudCwgaW4gdGhlIGZpZWxkcyB7QGxpbmsgQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZH0gbmFtZXMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIGxpbmsuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCdWdSZXBvcnRJc3N1ZUZvcm1VcmwocGFyYW1zOiBHZXRCdWdSZXBvcnRJc3N1ZUZvcm1VcmxQYXJhbXMpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBlbnZpcm9ubWVudCA9IGF3YWl0IGdldEJ1Z1JlcG9ydEVudmlyb25tZW50KHBhcmFtcyk7XG5cbiAgcmV0dXJuIGJ1aWxkQnVnUmVwb3J0SXNzdWVGb3JtTGluayh7XG4gICAgZW52aXJvbm1lbnQsXG4gICAgZ2l0SHViUmVwbzogcGFyYW1zLmdpdEh1YlJlcG8sXG4gICAgbWF4VXJsTGVuZ3RoOiBJbmZpbml0eSxcbiAgICAuLi5wYXJhbXMudGl0bGUgIT09IHVuZGVmaW5lZCAmJiB7IHRpdGxlOiBwYXJhbXMudGl0bGUgfVxuICB9KS51cmw7XG59XG5cbi8qKlxuICogR2V0cyBhIGxpbmsgdGhhdCBvcGVucyBhIEdpdEh1YiBpc3N1ZSBmb3JtIHdpdGggZmllbGRzIHByZWZpbGxlZC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgbGluay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdpdEh1Yklzc3VlRm9ybVVybChwYXJhbXM6IEdldEdpdEh1Yklzc3VlRm9ybVVybFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoeyB0ZW1wbGF0ZTogcGFyYW1zLnRlbXBsYXRlIH0pO1xuICBpZiAocGFyYW1zLnRpdGxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBzZWFyY2hQYXJhbXMuc2V0KCd0aXRsZScsIHBhcmFtcy50aXRsZSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtmaWVsZElkLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zLmZpZWxkcyA/PyB7fSkpIHtcbiAgICBzZWFyY2hQYXJhbXMuc2V0KGZpZWxkSWQsIHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7cGFyYW1zLmdpdEh1YlJlcG99L2lzc3Vlcy9uZXc/JHtzZWFyY2hQYXJhbXMudG9TdHJpbmcoKX1gO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRQbHVnaW5JbmZvKHBsdWdpbkluZm86IEJ1Z1JlcG9ydFBsdWdpbkluZm8pOiBzdHJpbmcge1xuICByZXR1cm4gYFxcYCR7cGx1Z2luSW5mby5pZH1cXGAgJHtwbHVnaW5JbmZvLnZlcnNpb24gPz8gVU5LTk9XTn1gO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBcHBBbmRPcGVyYXRpbmdTeXN0ZW0oKTogUHJvbWlzZTxBcHBBbmRPcGVyYXRpbmdTeXN0ZW0+IHtcbiAgaWYgKFBsYXRmb3JtLmlzTW9iaWxlQXBwKSB7XG4gICAgY29uc3QgbW9iaWxlQXBwSW5mbyA9IGF3YWl0IGdldE1vYmlsZUFwcEluZm8oKTtcbiAgICByZXR1cm4ge1xuICAgICAgaW5zdGFsbGVyVmVyc2lvbjogbW9iaWxlQXBwSW5mbz8uaW5zdGFsbGVyVmVyc2lvbiA/PyBVTktOT1dOLFxuICAgICAgb3BlcmF0aW5nU3lzdGVtOiBtb2JpbGVBcHBJbmZvPy5vcGVyYXRpbmdTeXN0ZW0gPz8gVU5LTk9XTlxuICAgIH07XG4gIH1cblxuICBpZiAoIVBsYXRmb3JtLmlzRGVza3RvcEFwcCkge1xuICAgIHJldHVybiB7IGluc3RhbGxlclZlcnNpb246IFVOS05PV04sIG9wZXJhdGluZ1N5c3RlbTogVU5LTk9XTiB9O1xuICB9XG5cbiAgLy8gQ29uZGl0aW9uYWwgaW1wb3J0IG9mIHRoZSBkZXNrdG9wLW9ubHkgbG9va3VwLCB3aGljaCByZWFkcyBgbm9kZTpvc2A7IHRoaXMgYnJhbmNoIHJ1bnMgb25seSBvbiBkZXNrdG9wLlxuICBjb25zdCB7IGdldERlc2t0b3BPcGVyYXRpbmdTeXN0ZW0gfSA9IGF3YWl0IGltcG9ydCgnLi9kZXNrdG9wLW9wZXJhdGluZy1zeXN0ZW0udHMnKTtcbiAgY29uc3QgYnVpbGQgPSAoUGxhdGZvcm0gYXMgUGxhdGZvcm1XaXRoQnVpbGQpLmJ1aWxkO1xuICByZXR1cm4ge1xuICAgIGluc3RhbGxlclZlcnNpb246IHR5cGVvZiBidWlsZCA9PT0gJ3N0cmluZycgPyBidWlsZCA6IFVOS05PV04sXG4gICAgb3BlcmF0aW5nU3lzdGVtOiBnZXREZXNrdG9wT3BlcmF0aW5nU3lzdGVtKClcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UGxhdGZvcm1OYW1lKCk6IHN0cmluZyB7XG4gIGlmIChQbGF0Zm9ybS5pc0FuZHJvaWRBcHApIHtcbiAgICByZXR1cm4gJ0FuZHJvaWQnO1xuICB9XG4gIGlmIChQbGF0Zm9ybS5pc0lvc0FwcCkge1xuICAgIHJldHVybiAnaU9TJztcbiAgfVxuICBpZiAoUGxhdGZvcm0uaXNNYWNPUykge1xuICAgIHJldHVybiAnbWFjT1MnO1xuICB9XG4gIGlmIChQbGF0Zm9ybS5pc1dpbikge1xuICAgIHJldHVybiAnV2luZG93cyc7XG4gIH1cbiAgcmV0dXJuIFBsYXRmb3JtLmlzTGludXggPyAnTGludXgnIDogVU5LTk9XTjtcbn1cblxuZnVuY3Rpb24gZ2V0UGx1Z2luSW5mbyhhcHA6IEFwcCwgcGx1Z2luSWQ6IHN0cmluZyk6IEJ1Z1JlcG9ydFBsdWdpbkluZm8ge1xuICByZXR1cm4ge1xuICAgIGlkOiBwbHVnaW5JZCxcbiAgICB2ZXJzaW9uOiBhcHAucGx1Z2lucy5tYW5pZmVzdHNbcGx1Z2luSWRdPy52ZXJzaW9uID8/IG51bGxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFBQSxJQUNkLEdBQUcsT0FBTyxVQUFVLFVBQWEsRUFBRSxPQUFPLE9BQU8sTUFBTTtBQUFBLEVBQ3pELENBQUMsRUFBRTtBQUNMO0FBUU8sU0FBUyxzQkFBc0IsUUFBNkM7QUFDakYsUUFBTSxlQUFlLElBQUksZ0JBQWdCLEVBQUUsVUFBVSxPQUFPLFNBQVMsQ0FBQztBQUN0RSxNQUFJLE9BQU8sVUFBVSxRQUFXO0FBQzlCLGlCQUFhLElBQUksU0FBUyxPQUFPLEtBQUs7QUFBQSxFQUN4QztBQUVBLGFBQVcsQ0FBQyxTQUFTLEtBQUssS0FBSyxPQUFPLFFBQVEsT0FBTyxVQUFVLENBQUMsQ0FBQyxHQUFHO0FBQ2xFLGlCQUFhLElBQUksU0FBUyxLQUFLO0FBQUEsRUFDakM7QUFFQSxTQUFPLHNCQUFzQixPQUFPLFVBQVUsZUFBZSxhQUFhLFNBQVMsQ0FBQztBQUN0RjtBQUVBLFNBQVMsaUJBQWlCLFlBQXlDO0FBQ2pFLFNBQU8sS0FBSyxXQUFXLEVBQUUsTUFBTSxXQUFXLFdBQVcsT0FBTztBQUM5RDtBQUVBLGVBQWUsMkJBQTJEO0FBQ3hFLE1BQUkseUJBQVMsYUFBYTtBQUN4QixVQUFNLGdCQUFnQixVQUFNLHlDQUFpQjtBQUM3QyxXQUFPO0FBQUEsTUFDTCxrQkFBa0IsZUFBZSxvQkFBb0I7QUFBQSxNQUNyRCxpQkFBaUIsZUFBZSxtQkFBbUI7QUFBQSxJQUNyRDtBQUFBLEVBQ0Y7QUFFQSxNQUFJLENBQUMseUJBQVMsY0FBYztBQUMxQixXQUFPLEVBQUUsa0JBQWtCLFNBQVMsaUJBQWlCLFFBQVE7QUFBQSxFQUMvRDtBQUdBLFFBQU0sRUFBRSwwQkFBMEIsSUFBSSxNQUFNLE9BQU8sK0JBQStCO0FBQ2xGLFFBQU0sUUFBUyx5QkFBK0I7QUFDOUMsU0FBTztBQUFBLElBQ0wsa0JBQWtCLE9BQU8sVUFBVSxXQUFXLFFBQVE7QUFBQSxJQUN0RCxpQkFBaUIsMEJBQTBCO0FBQUEsRUFDN0M7QUFDRjtBQUVBLFNBQVMsa0JBQTBCO0FBQ2pDLE1BQUkseUJBQVMsY0FBYztBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUkseUJBQVMsVUFBVTtBQUNyQixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUkseUJBQVMsU0FBUztBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUkseUJBQVMsT0FBTztBQUNsQixXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU8seUJBQVMsVUFBVSxVQUFVO0FBQ3RDO0FBRUEsU0FBUyxjQUFjLEtBQVUsVUFBdUM7QUFDdEUsU0FBTztBQUFBLElBQ0wsSUFBSTtBQUFBLElBQ0osU0FBUyxJQUFJLFFBQVEsVUFBVSxRQUFRLEdBQUcsV0FBVztBQUFBLEVBQ3ZEO0FBQ0Y7IiwibmFtZXMiOlsiQnVnUmVwb3J0SXNzdWVGb3JtRmllbGRJZCJdfQ==
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* structurally here, and reads as `unknown` if a later version drops it.
|
|
14
14
|
*/
|
|
15
15
|
import type { App } from 'obsidian' with { 'resolution-mode': 'import' };
|
|
16
|
+
import type { BugReportDiagnosticSection } from './bug-report-diagnostics.cjs';
|
|
16
17
|
/**
|
|
17
18
|
* The ids of the bug-report issue form's fields that {@link getBugReportIssueFormUrl} prefills. GitHub
|
|
18
19
|
* prefills a field from a query parameter named after the field's `id`, so a form must give its fields
|
|
@@ -40,6 +41,59 @@ export declare enum BugReportIssueFormFieldId {
|
|
|
40
41
|
* The file name of the bug-report issue form, under `.github/ISSUE_TEMPLATE`.
|
|
41
42
|
*/
|
|
42
43
|
export declare const BUG_REPORT_ISSUE_FORM_TEMPLATE = "bug_report.yml";
|
|
44
|
+
/**
|
|
45
|
+
* The default budget, in characters of the encoded URL, of a prefilled bug-report link.
|
|
46
|
+
*
|
|
47
|
+
* Measured against `github.com` on 2026-11-07, signed out: an issue-form URL up to about 6,540 characters
|
|
48
|
+
* was answered with the usual redirect to the form, about 8,088 with a 502, and 8,288 and more with a 414.
|
|
49
|
+
* 6,000 leaves room for a longer repository name and for a signed-in session's own limits.
|
|
50
|
+
*/
|
|
51
|
+
export declare const DEFAULT_BUG_REPORT_MAX_URL_LENGTH = 6000;
|
|
52
|
+
/**
|
|
53
|
+
* A link to a bug-report issue form, as {@link buildBugReportIssueFormLink} builds it.
|
|
54
|
+
*/
|
|
55
|
+
export interface BugReportIssueFormLink {
|
|
56
|
+
/**
|
|
57
|
+
* The text the user must paste into the form's environment field, when the full report did not fit the
|
|
58
|
+
* URL budget; `null` when the URL carries the whole report.
|
|
59
|
+
*/
|
|
60
|
+
readonly clipboardText: null | string;
|
|
61
|
+
/**
|
|
62
|
+
* The link.
|
|
63
|
+
*/
|
|
64
|
+
readonly url: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parameters for {@link buildBugReportIssueFormLink}.
|
|
68
|
+
*/
|
|
69
|
+
export interface BuildBugReportIssueFormLinkParams {
|
|
70
|
+
/**
|
|
71
|
+
* The diagnostics the user agreed to include, appended to the environment field.
|
|
72
|
+
*/
|
|
73
|
+
readonly diagnostics?: readonly BugReportDiagnosticSection[];
|
|
74
|
+
/**
|
|
75
|
+
* The environment, from {@link getBugReportEnvironment}.
|
|
76
|
+
*/
|
|
77
|
+
readonly environment: BugReportEnvironment;
|
|
78
|
+
/**
|
|
79
|
+
* The plugin's GitHub repository, as `owner/name`.
|
|
80
|
+
*/
|
|
81
|
+
readonly gitHubRepo: string;
|
|
82
|
+
/**
|
|
83
|
+
* The most characters the encoded URL may have before the report moves to the clipboard.
|
|
84
|
+
*
|
|
85
|
+
* @default {@link DEFAULT_BUG_REPORT_MAX_URL_LENGTH}
|
|
86
|
+
*/
|
|
87
|
+
readonly maxUrlLength?: number;
|
|
88
|
+
/**
|
|
89
|
+
* The issue's title. Leave it out to keep the form's own default title.
|
|
90
|
+
*/
|
|
91
|
+
readonly title?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The text the environment field holds when the report moved to the clipboard.
|
|
95
|
+
*/
|
|
96
|
+
export declare const BUG_REPORT_PASTE_INSTRUCTIONS = "The full environment and diagnostics were copied to your clipboard because they are too long for a link. Replace this text by pasting them here.";
|
|
43
97
|
/**
|
|
44
98
|
* The environment a bug report needs.
|
|
45
99
|
*/
|
|
@@ -129,6 +183,17 @@ export interface GetGitHubIssueFormUrlParams {
|
|
|
129
183
|
*/
|
|
130
184
|
readonly title?: string;
|
|
131
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Builds a link to a plugin's bug-report issue form, prefilled with the environment and the given
|
|
188
|
+
* diagnostics. When the encoded link would be longer than
|
|
189
|
+
* {@link BuildBugReportIssueFormLinkParams.maxUrlLength}, the environment field gets
|
|
190
|
+
* {@link BUG_REPORT_PASTE_INSTRUCTIONS} instead, and the full text is returned as
|
|
191
|
+
* {@link BugReportIssueFormLink.clipboardText} for the caller to copy. Nothing is cut.
|
|
192
|
+
*
|
|
193
|
+
* @param params - The parameters.
|
|
194
|
+
* @returns The link, and the text to paste when it did not fit.
|
|
195
|
+
*/
|
|
196
|
+
export declare function buildBugReportIssueFormLink(params: BuildBugReportIssueFormLinkParams): BugReportIssueFormLink;
|
|
132
197
|
/**
|
|
133
198
|
* Renders a bug report's environment as a Markdown list.
|
|
134
199
|
*
|
|
@@ -2,6 +2,33 @@
|
|
|
2
2
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
4
|
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
5
32
|
(function patchObsidianRequire() {
|
|
6
33
|
const originalRequire = require;
|
|
7
34
|
if (!originalRequire || originalRequire.__isPatched) {
|
|
@@ -90,13 +117,26 @@ __export(open_bug_report_command_handler_exports, {
|
|
|
90
117
|
OpenBugReportCommandHandler: () => OpenBugReportCommandHandler
|
|
91
118
|
});
|
|
92
119
|
module.exports = __toCommonJS(open_bug_report_command_handler_exports);
|
|
120
|
+
var import_obsidian = require('obsidian');
|
|
93
121
|
var import_bug_report = require('../bug-report.cjs');
|
|
122
|
+
var import_i18n = require('../i18n/i18n.cjs');
|
|
123
|
+
var import_copy_text_manually = require('../modals/copy-text-manually.cjs');
|
|
124
|
+
var import_review_bug_report_diagnostics = require('../modals/review-bug-report-diagnostics.cjs');
|
|
94
125
|
var import_open_git_hub_command_handler = require('./open-git-hub-command-handler.cjs');
|
|
126
|
+
const CLIPBOARD_NOTICE_DURATION_IN_MILLISECONDS = 15e3;
|
|
95
127
|
class OpenBugReportCommandHandler extends import_open_git_hub_command_handler.OpenGitHubCommandHandler {
|
|
96
128
|
/**
|
|
97
129
|
* The Obsidian app instance.
|
|
98
130
|
*/
|
|
99
131
|
app;
|
|
132
|
+
/**
|
|
133
|
+
* Gets the optional diagnostics the report can carry.
|
|
134
|
+
*/
|
|
135
|
+
getDiagnostics;
|
|
136
|
+
/**
|
|
137
|
+
* The most characters the encoded link may have before the report moves to the clipboard.
|
|
138
|
+
*/
|
|
139
|
+
maxUrlLength;
|
|
100
140
|
/**
|
|
101
141
|
* The id of the reporting plugin.
|
|
102
142
|
*/
|
|
@@ -114,10 +154,46 @@ class OpenBugReportCommandHandler extends import_open_git_hub_command_handler.Op
|
|
|
114
154
|
name: "Report a bug"
|
|
115
155
|
});
|
|
116
156
|
this.app = params.app;
|
|
157
|
+
this.getDiagnostics = params.getDiagnostics;
|
|
158
|
+
this.maxUrlLength = params.maxUrlLength;
|
|
117
159
|
this.pluginId = params.pluginId;
|
|
118
160
|
}
|
|
119
161
|
/**
|
|
120
|
-
*
|
|
162
|
+
* Lets the user review the diagnostics, if any, then opens the issue form. When the report is too long
|
|
163
|
+
* for a link, it is copied to the clipboard first, or shown for copying by hand when the clipboard
|
|
164
|
+
* refuses it.
|
|
165
|
+
*/
|
|
166
|
+
async execute() {
|
|
167
|
+
if (!this.canExecute()) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const environment = await (0, import_bug_report.getBugReportEnvironment)({ app: this.app, pluginId: this.pluginId });
|
|
171
|
+
const sections = await this.getDiagnostics?.() ?? [];
|
|
172
|
+
let diagnostics = [];
|
|
173
|
+
if (sections.length > 0) {
|
|
174
|
+
const reviewedSections = await (0, import_review_bug_report_diagnostics.reviewBugReportDiagnostics)({
|
|
175
|
+
alwaysIncludedText: (0, import_bug_report.formatBugReportEnvironment)(environment),
|
|
176
|
+
app: this.app,
|
|
177
|
+
sections
|
|
178
|
+
});
|
|
179
|
+
if (reviewedSections === null) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
diagnostics = reviewedSections;
|
|
183
|
+
}
|
|
184
|
+
const link = (0, import_bug_report.buildBugReportIssueFormLink)({
|
|
185
|
+
diagnostics,
|
|
186
|
+
environment,
|
|
187
|
+
gitHubRepo: this.gitHubRepo,
|
|
188
|
+
...this.maxUrlLength !== void 0 && { maxUrlLength: this.maxUrlLength }
|
|
189
|
+
});
|
|
190
|
+
if (link.clipboardText !== null && !await this.copyReport(link.clipboardText)) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
window.open(link.url, "_blank");
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Builds the prefilled bug-report URL, with the environment only.
|
|
121
197
|
*
|
|
122
198
|
* @returns The link.
|
|
123
199
|
*/
|
|
@@ -128,9 +204,24 @@ class OpenBugReportCommandHandler extends import_open_git_hub_command_handler.Op
|
|
|
128
204
|
pluginId: this.pluginId
|
|
129
205
|
});
|
|
130
206
|
}
|
|
207
|
+
async copyReport(text) {
|
|
208
|
+
try {
|
|
209
|
+
await activeWindow.navigator.clipboard.writeText(text);
|
|
210
|
+
new import_obsidian.Notice((0, import_i18n.t)(($) => $.obsidianLib.bugReport.clipboardCopied), CLIPBOARD_NOTICE_DURATION_IN_MILLISECONDS);
|
|
211
|
+
return true;
|
|
212
|
+
} catch {
|
|
213
|
+
return await (0, import_copy_text_manually.copyTextManually)({
|
|
214
|
+
app: this.app,
|
|
215
|
+
message: (0, import_i18n.t)(($) => $.obsidianLib.bugReport.copyManuallyMessage),
|
|
216
|
+
okButtonText: (0, import_i18n.t)(($) => $.obsidianLib.bugReport.openIssueForm),
|
|
217
|
+
text,
|
|
218
|
+
title: (0, import_i18n.t)(($) => $.obsidianLib.bugReport.copyManuallyTitle)
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}
|
|
131
222
|
}
|
|
132
223
|
// Annotate the CommonJS export names for ESM import in node:
|
|
133
224
|
0 && (module.exports = {
|
|
134
225
|
OpenBugReportCommandHandler
|
|
135
226
|
});
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kLWhhbmRsZXJzL29wZW4tYnVnLXJlcG9ydC1jb21tYW5kLWhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhhbmRsZXMgdGhlIFwiUmVwb3J0IGEgYnVnXCIgY29tbWFuZC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsIH0gZnJvbSAnLi4vYnVnLXJlcG9ydC50cyc7XG5pbXBvcnQgeyBPcGVuR2l0SHViQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29wZW4tZ2l0LWh1Yi1jb21tYW5kLWhhbmRsZXIudHMnO1xuXG4vKipcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBPcGVuQnVnUmVwb3J0Q29tbWFuZEhhbmRsZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5CdWdSZXBvcnRDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogVGhlIHBsdWdpbidzIEdpdEh1YiByZXBvc2l0b3J5LCBhcyBgb3duZXIvbmFtZWAuXG4gICAqL1xuICByZWFkb25seSBnaXRIdWJSZXBvOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgcmVwb3J0aW5nIHBsdWdpbi5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBjb21tYW5kIGhhbmRsZXIgdGhhdCBvcGVucyB0aGUgcGx1Z2luJ3MgYnVnLXJlcG9ydCBpc3N1ZSBmb3JtIG9uIEdpdEh1YiwgcHJlZmlsbGVkIHdpdGggdGhlXG4gKiBlbnZpcm9ubWVudC4gU2VlIHtAbGluayBnZXRCdWdSZXBvcnRJc3N1ZUZvcm1Vcmx9IGZvciB0aGUgZmllbGQgaWRzIHRoZSBmb3JtIG11c3QgdXNlLlxuICovXG5leHBvcnQgY2xhc3MgT3BlbkJ1Z1JlcG9ydENvbW1hbmRIYW5kbGVyIGV4dGVuZHMgT3BlbkdpdEh1YkNvbW1hbmRIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgcmVwb3J0aW5nIHBsdWdpbi5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIC0gQ29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IE9wZW5CdWdSZXBvcnRDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgZ2l0SHViUmVwbzogcGFyYW1zLmdpdEh1YlJlcG8sXG4gICAgICBpY29uOiAnYnVnJyxcbiAgICAgIGlkOiAncmVwb3J0LWJ1ZycsXG4gICAgICBuYW1lOiAnUmVwb3J0IGEgYnVnJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5hcHAgPSBwYXJhbXMuYXBwO1xuICAgIHRoaXMucGx1Z2luSWQgPSBwYXJhbXMucGx1Z2luSWQ7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBwcmVmaWxsZWQgYnVnLXJlcG9ydCBVUkwuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBsaW5rLlxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGdldFVybCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBnZXRCdWdSZXBvcnRJc3N1ZUZvcm1Vcmwoe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIGdpdEh1YlJlcG86IHRoaXMuZ2l0SHViUmVwbyxcbiAgICAgIHBsdWdpbklkOiB0aGlzLnBsdWdpbklkXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHdCQUF5QztBQUN6QywwQ0FBeUM7QUEwQmxDLE1BQU0sb0NBQW9DLDZEQUF5QjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBSXJEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9aLFlBQVksUUFBc0Q7QUFDdkUsVUFBTTtBQUFBLE1BQ0osWUFBWSxPQUFPO0FBQUEsTUFDbkIsTUFBTTtBQUFBLE1BQ04sSUFBSTtBQUFBLE1BQ0osTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUVELFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssV0FBVyxPQUFPO0FBQUEsRUFDekI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxNQUF5QixTQUEwQjtBQUNqRCxlQUFPLDRDQUF5QjtBQUFBLE1BQzlCLEtBQUssS0FBSztBQUFBLE1BQ1YsWUFBWSxLQUFLO0FBQUEsTUFDakIsVUFBVSxLQUFLO0FBQUEsSUFDakIsQ0FBQztBQUFBLEVBQ0g7QUFDRjsiLCJuYW1lcyI6W119
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21tYW5kLWhhbmRsZXJzL29wZW4tYnVnLXJlcG9ydC1jb21tYW5kLWhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEhhbmRsZXMgdGhlIFwiUmVwb3J0IGEgYnVnXCIgY29tbWFuZC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEFwcCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB0eXBlIHsgUHJvbWlzYWJsZSB9IGZyb20gJ3R5cGUtZmVzdCc7XG5cbmltcG9ydCB7IE5vdGljZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHR5cGUgeyBCdWdSZXBvcnREaWFnbm9zdGljU2VjdGlvbiB9IGZyb20gJy4uL2J1Zy1yZXBvcnQtZGlhZ25vc3RpY3MudHMnO1xuXG5pbXBvcnQge1xuICBidWlsZEJ1Z1JlcG9ydElzc3VlRm9ybUxpbmssXG4gIGZvcm1hdEJ1Z1JlcG9ydEVudmlyb25tZW50LFxuICBnZXRCdWdSZXBvcnRFbnZpcm9ubWVudCxcbiAgZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsXG59IGZyb20gJy4uL2J1Zy1yZXBvcnQudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBjb3B5VGV4dE1hbnVhbGx5IH0gZnJvbSAnLi4vbW9kYWxzL2NvcHktdGV4dC1tYW51YWxseS50cyc7XG5pbXBvcnQgeyByZXZpZXdCdWdSZXBvcnREaWFnbm9zdGljcyB9IGZyb20gJy4uL21vZGFscy9yZXZpZXctYnVnLXJlcG9ydC1kaWFnbm9zdGljcy50cyc7XG5pbXBvcnQgeyBPcGVuR2l0SHViQ29tbWFuZEhhbmRsZXIgfSBmcm9tICcuL29wZW4tZ2l0LWh1Yi1jb21tYW5kLWhhbmRsZXIudHMnO1xuXG4vKipcbiAqIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMgZm9yIHtAbGluayBPcGVuQnVnUmVwb3J0Q29tbWFuZEhhbmRsZXJ9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5CdWdSZXBvcnRDb21tYW5kSGFuZGxlckNvbnN0cnVjdG9yUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBhcHA6IEFwcDtcblxuICAvKipcbiAgICogR2V0cyB0aGUgb3B0aW9uYWwgZGlhZ25vc3RpY3MgdGhlIHJlcG9ydCBjYW4gY2FycnksIHN1Y2ggYXMgYSBgQnVnUmVwb3J0TG9nQnVmZmVyYCdzIHNlY3Rpb24gb3IgdGhlXG4gICAqIHBsdWdpbidzIG93biByZWRhY3RlZCBzZXR0aW5ncy4gQ2FsbGVkIGVhY2ggdGltZSB0aGUgY29tbWFuZCBydW5zLiBXaGVuIGl0IHJldHVybnMgYW55IHNlY3Rpb24sIHRoZVxuICAgKiB1c2VyIHJldmlld3MgdGhlbSBhbmQgY2hvb3NlcyB3aGljaCB0byBpbmNsdWRlIGJlZm9yZSB0aGUgZm9ybSBvcGVuczsgYSBwb3RlbnRpYWxseSBwcml2YXRlIHNlY3Rpb25cbiAgICogc3RhcnRzIGV4Y2x1ZGVkLiBMZWF2ZSBpdCBvdXQgdG8gb3BlbiB0aGUgZm9ybSB3aXRoIHRoZSBlbnZpcm9ubWVudCBvbmx5LCBhcyBiZWZvcmUuXG4gICAqL1xuICByZWFkb25seSBnZXREaWFnbm9zdGljcz86ICgpID0+IFByb21pc2FibGU8cmVhZG9ubHkgQnVnUmVwb3J0RGlhZ25vc3RpY1NlY3Rpb25bXT47XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4ncyBHaXRIdWIgcmVwb3NpdG9yeSwgYXMgYG93bmVyL25hbWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0SHViUmVwbzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbW9zdCBjaGFyYWN0ZXJzIHRoZSBlbmNvZGVkIGxpbmsgbWF5IGhhdmUgYmVmb3JlIHRoZSByZXBvcnQgbW92ZXMgdG8gdGhlIGNsaXBib2FyZC5cbiAgICpcbiAgICogQGRlZmF1bHQgYERFRkFVTFRfQlVHX1JFUE9SVF9NQVhfVVJMX0xFTkdUSGBcbiAgICovXG4gIHJlYWRvbmx5IG1heFVybExlbmd0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSByZXBvcnRpbmcgcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcbn1cblxuLy8gTG9uZyBlbm91Z2ggdG8gcmVhZCB0aGUgcGFzdGUgaW5zdHJ1Y3Rpb24gd2hpbGUgdGhlIGJyb3dzZXIgb3BlbnMuXG5jb25zdCBDTElQQk9BUkRfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyA9IDE1XzAwMDtcblxuLyoqXG4gKiBBIGNvbW1hbmQgaGFuZGxlciB0aGF0IG9wZW5zIHRoZSBwbHVnaW4ncyBidWctcmVwb3J0IGlzc3VlIGZvcm0gb24gR2l0SHViLCBwcmVmaWxsZWQgd2l0aCB0aGVcbiAqIGVudmlyb25tZW50IGFuZCBhbnkgZGlhZ25vc3RpY3MgdGhlIHVzZXIgYWdyZWVkIHRvIGluY2x1ZGUuIFNlZSB7QGxpbmsgZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsfSBmb3IgdGhlXG4gKiBmaWVsZCBpZHMgdGhlIGZvcm0gbXVzdCB1c2UsIGFuZCB7QGxpbmsgYnVpbGRCdWdSZXBvcnRJc3N1ZUZvcm1MaW5rfSBmb3Igd2hhdCBoYXBwZW5zIHRvIGEgcmVwb3J0IHRvbyBsb25nXG4gKiBmb3IgYSBsaW5rLlxuICovXG5leHBvcnQgY2xhc3MgT3BlbkJ1Z1JlcG9ydENvbW1hbmRIYW5kbGVyIGV4dGVuZHMgT3BlbkdpdEh1YkNvbW1hbmRIYW5kbGVyIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG9wdGlvbmFsIGRpYWdub3N0aWNzIHRoZSByZXBvcnQgY2FuIGNhcnJ5LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGdldERpYWdub3N0aWNzOiAoKCkgPT4gUHJvbWlzYWJsZTxyZWFkb25seSBCdWdSZXBvcnREaWFnbm9zdGljU2VjdGlvbltdPikgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBtb3N0IGNoYXJhY3RlcnMgdGhlIGVuY29kZWQgbGluayBtYXkgaGF2ZSBiZWZvcmUgdGhlIHJlcG9ydCBtb3ZlcyB0byB0aGUgY2xpcGJvYXJkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG1heFVybExlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIHJlcG9ydGluZyBwbHVnaW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIENvbnN0cnVjdG9yIHBhcmFtZXRlcnMuXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocGFyYW1zOiBPcGVuQnVnUmVwb3J0Q29tbWFuZEhhbmRsZXJDb25zdHJ1Y3RvclBhcmFtcykge1xuICAgIHN1cGVyKHtcbiAgICAgIGdpdEh1YlJlcG86IHBhcmFtcy5naXRIdWJSZXBvLFxuICAgICAgaWNvbjogJ2J1ZycsXG4gICAgICBpZDogJ3JlcG9ydC1idWcnLFxuICAgICAgbmFtZTogJ1JlcG9ydCBhIGJ1ZydcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLmdldERpYWdub3N0aWNzID0gcGFyYW1zLmdldERpYWdub3N0aWNzO1xuICAgIHRoaXMubWF4VXJsTGVuZ3RoID0gcGFyYW1zLm1heFVybExlbmd0aDtcbiAgICB0aGlzLnBsdWdpbklkID0gcGFyYW1zLnBsdWdpbklkO1xuICB9XG5cbiAgLyoqXG4gICAqIExldHMgdGhlIHVzZXIgcmV2aWV3IHRoZSBkaWFnbm9zdGljcywgaWYgYW55LCB0aGVuIG9wZW5zIHRoZSBpc3N1ZSBmb3JtLiBXaGVuIHRoZSByZXBvcnQgaXMgdG9vIGxvbmdcbiAgICogZm9yIGEgbGluaywgaXQgaXMgY29waWVkIHRvIHRoZSBjbGlwYm9hcmQgZmlyc3QsIG9yIHNob3duIGZvciBjb3B5aW5nIGJ5IGhhbmQgd2hlbiB0aGUgY2xpcGJvYXJkXG4gICAqIHJlZnVzZXMgaXQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuY2FuRXhlY3V0ZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBhd2FpdCBnZXRCdWdSZXBvcnRFbnZpcm9ubWVudCh7IGFwcDogdGhpcy5hcHAsIHBsdWdpbklkOiB0aGlzLnBsdWdpbklkIH0pO1xuICAgIGNvbnN0IHNlY3Rpb25zID0gYXdhaXQgdGhpcy5nZXREaWFnbm9zdGljcz8uKCkgPz8gW107XG4gICAgbGV0IGRpYWdub3N0aWNzOiByZWFkb25seSBCdWdSZXBvcnREaWFnbm9zdGljU2VjdGlvbltdID0gW107XG4gICAgaWYgKHNlY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJldmlld2VkU2VjdGlvbnMgPSBhd2FpdCByZXZpZXdCdWdSZXBvcnREaWFnbm9zdGljcyh7XG4gICAgICAgIGFsd2F5c0luY2x1ZGVkVGV4dDogZm9ybWF0QnVnUmVwb3J0RW52aXJvbm1lbnQoZW52aXJvbm1lbnQpLFxuICAgICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgICBzZWN0aW9uc1xuICAgICAgfSk7XG4gICAgICBpZiAocmV2aWV3ZWRTZWN0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkaWFnbm9zdGljcyA9IHJldmlld2VkU2VjdGlvbnM7XG4gICAgfVxuXG4gICAgY29uc3QgbGluayA9IGJ1aWxkQnVnUmVwb3J0SXNzdWVGb3JtTGluayh7XG4gICAgICBkaWFnbm9zdGljcyxcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgZ2l0SHViUmVwbzogdGhpcy5naXRIdWJSZXBvLFxuICAgICAgLi4udGhpcy5tYXhVcmxMZW5ndGggIT09IHVuZGVmaW5lZCAmJiB7IG1heFVybExlbmd0aDogdGhpcy5tYXhVcmxMZW5ndGggfVxuICAgIH0pO1xuXG4gICAgaWYgKGxpbmsuY2xpcGJvYXJkVGV4dCAhPT0gbnVsbCAmJiAhYXdhaXQgdGhpcy5jb3B5UmVwb3J0KGxpbmsuY2xpcGJvYXJkVGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cub3BlbihsaW5rLnVybCwgJ19ibGFuaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgcHJlZmlsbGVkIGJ1Zy1yZXBvcnQgVVJMLCB3aXRoIHRoZSBlbnZpcm9ubWVudCBvbmx5LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbGluay5cbiAgICovXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBnZXRVcmwoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gZ2V0QnVnUmVwb3J0SXNzdWVGb3JtVXJsKHtcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBnaXRIdWJSZXBvOiB0aGlzLmdpdEh1YlJlcG8sXG4gICAgICBwbHVnaW5JZDogdGhpcy5wbHVnaW5JZFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb3B5UmVwb3J0KHRleHQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGUgY2xpcGJvYXJkIG9mIHRoZSBmb2N1c2VkIHdpbmRvdzogYSBwb3BvdXQncyBkb2N1bWVudCBpcyB0aGUgb25lIHRoYXQgaG9sZHMgdGhlIGZvY3VzLlxuICAgICAgYXdhaXQgYWN0aXZlV2luZG93Lm5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgICAgbmV3IE5vdGljZSh0KCgkKSA9PiAkLm9ic2lkaWFuTGliLmJ1Z1JlcG9ydC5jbGlwYm9hcmRDb3BpZWQpLCBDTElQQk9BUkRfTk9USUNFX0RVUkFUSU9OX0lOX01JTExJU0VDT05EUyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBhd2FpdCBjb3B5VGV4dE1hbnVhbGx5KHtcbiAgICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgICAgbWVzc2FnZTogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5idWdSZXBvcnQuY29weU1hbnVhbGx5TWVzc2FnZSksXG4gICAgICAgIG9rQnV0dG9uVGV4dDogdCgoJCkgPT4gJC5vYnNpZGlhbkxpYi5idWdSZXBvcnQub3Blbklzc3VlRm9ybSksXG4gICAgICAgIHRleHQsXG4gICAgICAgIHRpdGxlOiB0KCgkKSA9PiAkLm9ic2lkaWFuTGliLmJ1Z1JlcG9ydC5jb3B5TWFudWFsbHlUaXRsZSlcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0Esc0JBQXVCO0FBSXZCLHdCQUtPO0FBQ1Asa0JBQWtCO0FBQ2xCLGdDQUFpQztBQUNqQywyQ0FBMkM7QUFDM0MsMENBQXlDO0FBc0N6QyxNQUFNLDRDQUE0QztBQVEzQyxNQUFNLG9DQUFvQyw2REFBeUI7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlyRDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9aLFlBQVksUUFBc0Q7QUFDdkUsVUFBTTtBQUFBLE1BQ0osWUFBWSxPQUFPO0FBQUEsTUFDbkIsTUFBTTtBQUFBLE1BQ04sSUFBSTtBQUFBLE1BQ0osTUFBTTtBQUFBLElBQ1IsQ0FBQztBQUVELFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssaUJBQWlCLE9BQU87QUFDN0IsU0FBSyxlQUFlLE9BQU87QUFDM0IsU0FBSyxXQUFXLE9BQU87QUFBQSxFQUN6QjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE1BQXNCLFVBQXlCO0FBQzdDLFFBQUksQ0FBQyxLQUFLLFdBQVcsR0FBRztBQUN0QjtBQUFBLElBQ0Y7QUFFQSxVQUFNLGNBQWMsVUFBTSwyQ0FBd0IsRUFBRSxLQUFLLEtBQUssS0FBSyxVQUFVLEtBQUssU0FBUyxDQUFDO0FBQzVGLFVBQU0sV0FBVyxNQUFNLEtBQUssaUJBQWlCLEtBQUssQ0FBQztBQUNuRCxRQUFJLGNBQXFELENBQUM7QUFDMUQsUUFBSSxTQUFTLFNBQVMsR0FBRztBQUN2QixZQUFNLG1CQUFtQixVQUFNLGlFQUEyQjtBQUFBLFFBQ3hELHdCQUFvQiw4Q0FBMkIsV0FBVztBQUFBLFFBQzFELEtBQUssS0FBSztBQUFBLFFBQ1Y7QUFBQSxNQUNGLENBQUM7QUFDRCxVQUFJLHFCQUFxQixNQUFNO0FBQzdCO0FBQUEsTUFDRjtBQUNBLG9CQUFjO0FBQUEsSUFDaEI7QUFFQSxVQUFNLFdBQU8sK0NBQTRCO0FBQUEsTUFDdkM7QUFBQSxNQUNBO0FBQUEsTUFDQSxZQUFZLEtBQUs7QUFBQSxNQUNqQixHQUFHLEtBQUssaUJBQWlCLFVBQWEsRUFBRSxjQUFjLEtBQUssYUFBYTtBQUFBLElBQzFFLENBQUM7QUFFRCxRQUFJLEtBQUssa0JBQWtCLFFBQVEsQ0FBQyxNQUFNLEtBQUssV0FBVyxLQUFLLGFBQWEsR0FBRztBQUM3RTtBQUFBLElBQ0Y7QUFFQSxXQUFPLEtBQUssS0FBSyxLQUFLLFFBQVE7QUFBQSxFQUNoQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE1BQXlCLFNBQTBCO0FBQ2pELGVBQU8sNENBQXlCO0FBQUEsTUFDOUIsS0FBSyxLQUFLO0FBQUEsTUFDVixZQUFZLEtBQUs7QUFBQSxNQUNqQixVQUFVLEtBQUs7QUFBQSxJQUNqQixDQUFDO0FBQUEsRUFDSDtBQUFBLEVBRUEsTUFBYyxXQUFXLE1BQWdDO0FBQ3ZELFFBQUk7QUFFRixZQUFNLGFBQWEsVUFBVSxVQUFVLFVBQVUsSUFBSTtBQUNyRCxVQUFJLDJCQUFPLGVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxVQUFVLGVBQWUsR0FBRyx5Q0FBeUM7QUFDdkcsYUFBTztBQUFBLElBQ1QsUUFBUTtBQUNOLGFBQU8sVUFBTSw0Q0FBaUI7QUFBQSxRQUM1QixLQUFLLEtBQUs7QUFBQSxRQUNWLGFBQVMsZUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLFVBQVUsbUJBQW1CO0FBQUEsUUFDN0Qsa0JBQWMsZUFBRSxDQUFDLE1BQU0sRUFBRSxZQUFZLFVBQVUsYUFBYTtBQUFBLFFBQzVEO0FBQUEsUUFDQSxXQUFPLGVBQUUsQ0FBQyxNQUFNLEVBQUUsWUFBWSxVQUFVLGlCQUFpQjtBQUFBLE1BQzNELENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUNGOyIsIm5hbWVzIjpbXX0=
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* Handles the "Report a bug" command.
|
|
6
6
|
*/
|
|
7
7
|
import type { App } from 'obsidian' with { 'resolution-mode': 'import' };
|
|
8
|
+
import type { Promisable } from 'type-fest' with { 'resolution-mode': 'import' };
|
|
9
|
+
import type { BugReportDiagnosticSection } from '../bug-report-diagnostics.cjs';
|
|
8
10
|
import { OpenGitHubCommandHandler } from './open-git-hub-command-handler.cjs';
|
|
9
11
|
/**
|
|
10
12
|
* Constructor parameters for {@link OpenBugReportCommandHandler}.
|
|
@@ -14,10 +16,23 @@ export interface OpenBugReportCommandHandlerConstructorParams {
|
|
|
14
16
|
* The Obsidian app instance.
|
|
15
17
|
*/
|
|
16
18
|
readonly app: App;
|
|
19
|
+
/**
|
|
20
|
+
* Gets the optional diagnostics the report can carry, such as a `BugReportLogBuffer`'s section or the
|
|
21
|
+
* plugin's own redacted settings. Called each time the command runs. When it returns any section, the
|
|
22
|
+
* user reviews them and chooses which to include before the form opens; a potentially private section
|
|
23
|
+
* starts excluded. Leave it out to open the form with the environment only, as before.
|
|
24
|
+
*/
|
|
25
|
+
readonly getDiagnostics?: () => Promisable<readonly BugReportDiagnosticSection[]>;
|
|
17
26
|
/**
|
|
18
27
|
* The plugin's GitHub repository, as `owner/name`.
|
|
19
28
|
*/
|
|
20
29
|
readonly gitHubRepo: string;
|
|
30
|
+
/**
|
|
31
|
+
* The most characters the encoded link may have before the report moves to the clipboard.
|
|
32
|
+
*
|
|
33
|
+
* @default `DEFAULT_BUG_REPORT_MAX_URL_LENGTH`
|
|
34
|
+
*/
|
|
35
|
+
readonly maxUrlLength?: number;
|
|
21
36
|
/**
|
|
22
37
|
* The id of the reporting plugin.
|
|
23
38
|
*/
|
|
@@ -25,13 +40,23 @@ export interface OpenBugReportCommandHandlerConstructorParams {
|
|
|
25
40
|
}
|
|
26
41
|
/**
|
|
27
42
|
* A command handler that opens the plugin's bug-report issue form on GitHub, prefilled with the
|
|
28
|
-
* environment. See {@link getBugReportIssueFormUrl} for the
|
|
43
|
+
* environment and any diagnostics the user agreed to include. See {@link getBugReportIssueFormUrl} for the
|
|
44
|
+
* field ids the form must use, and {@link buildBugReportIssueFormLink} for what happens to a report too long
|
|
45
|
+
* for a link.
|
|
29
46
|
*/
|
|
30
47
|
export declare class OpenBugReportCommandHandler extends OpenGitHubCommandHandler {
|
|
31
48
|
/**
|
|
32
49
|
* The Obsidian app instance.
|
|
33
50
|
*/
|
|
34
51
|
protected readonly app: App;
|
|
52
|
+
/**
|
|
53
|
+
* Gets the optional diagnostics the report can carry.
|
|
54
|
+
*/
|
|
55
|
+
protected readonly getDiagnostics: (() => Promisable<readonly BugReportDiagnosticSection[]>) | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* The most characters the encoded link may have before the report moves to the clipboard.
|
|
58
|
+
*/
|
|
59
|
+
protected readonly maxUrlLength: number | undefined;
|
|
35
60
|
/**
|
|
36
61
|
* The id of the reporting plugin.
|
|
37
62
|
*/
|
|
@@ -43,9 +68,16 @@ export declare class OpenBugReportCommandHandler extends OpenGitHubCommandHandle
|
|
|
43
68
|
*/
|
|
44
69
|
constructor(params: OpenBugReportCommandHandlerConstructorParams);
|
|
45
70
|
/**
|
|
46
|
-
*
|
|
71
|
+
* Lets the user review the diagnostics, if any, then opens the issue form. When the report is too long
|
|
72
|
+
* for a link, it is copied to the clipboard first, or shown for copying by hand when the clipboard
|
|
73
|
+
* refuses it.
|
|
74
|
+
*/
|
|
75
|
+
execute(): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Builds the prefilled bug-report URL, with the environment only.
|
|
47
78
|
*
|
|
48
79
|
* @returns The link.
|
|
49
80
|
*/
|
|
50
81
|
protected getUrl(): Promise<string>;
|
|
82
|
+
private copyReport;
|
|
51
83
|
}
|