@mnaoumov/typescript-lib 1.6.2 → 2.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.
@@ -61,11 +61,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
61
61
  var debug_exports = {};
62
62
  __export(debug_exports, {
63
63
  enableLibraryDebuggers: () => enableLibraryDebuggers,
64
+ formatDebugGuideReference: () => formatDebugGuideReference,
64
65
  getDebugController: () => getDebugController,
65
66
  getDebugger: () => getDebugger,
66
67
  getLibDebugger: () => getLibDebugger,
67
- printWithStackTrace: () => printWithStackTrace,
68
- showInitialDebugMessage: () => showInitialDebugMessage
68
+ isDebugNamespaceEnabled: () => isDebugNamespaceEnabled,
69
+ printWithStackTrace: () => printWithStackTrace
69
70
  });
70
71
  module.exports = __toCommonJS(debug_exports);
71
72
  var import_debug = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('debug')), 1);
@@ -78,6 +79,9 @@ const NEGATED_NAMESPACE_PREFIX = "-";
78
79
  function enableLibraryDebuggers() {
79
80
  enableNamespaces([import_library.Library.debugNamespace, `${import_library.Library.debugNamespace}:*`]);
80
81
  }
82
+ function formatDebugGuideReference(suffix = "") {
83
+ return import_library.Library.debugGuideUrl ? ` See ${import_library.Library.debugGuideUrl}${suffix}.` : "";
84
+ }
81
85
  function getDebugController() {
82
86
  return {
83
87
  disable: disableNamespaces,
@@ -125,6 +129,9 @@ function getLibDebugger(namespace) {
125
129
  }
126
130
  });
127
131
  }
132
+ function isDebugNamespaceEnabled(namespace) {
133
+ return getSharedDebugLibInstance().enabled(namespace);
134
+ }
128
135
  function printWithStackTrace(params) {
129
136
  const {
130
137
  $arguments,
@@ -138,12 +145,6 @@ function printWithStackTrace(params) {
138
145
  }
139
146
  debuggerInstance(message, ...$arguments, "\n\n---\nContext stack trace:\n", makeStackTraceError(stackTrace));
140
147
  }
141
- function showInitialDebugMessage(pluginId) {
142
- if (!getSharedDebugLibInstance().enabled(pluginId)) {
143
- return;
144
- }
145
- getDebugger(pluginId)(`Debug messages for plugin ${pluginId} are enabled.${formatGuideReference(" how to disable them")}`);
146
- }
147
148
  function disableNamespaces(namespaces) {
148
149
  const set = new Set(getNamespaces());
149
150
  for (const namespace of toArray(namespaces)) {
@@ -167,9 +168,6 @@ function enableNamespaces(namespaces) {
167
168
  }
168
169
  setNamespaces([...set]);
169
170
  }
170
- function formatGuideReference(suffix) {
171
- return import_library.Library.debugGuideUrl ? ` See ${import_library.Library.debugGuideUrl}${suffix}.` : "";
172
- }
173
171
  function getNamespaces() {
174
172
  return toArray(getSharedDebugLibInstance().load() ?? "");
175
173
  }
@@ -183,7 +181,7 @@ function logWithCaller(params) {
183
181
  message,
184
182
  namespace
185
183
  } = params;
186
- if (!getSharedDebugLibInstance().enabled(namespace)) {
184
+ if (!isDebugNamespaceEnabled(namespace)) {
187
185
  return;
188
186
  }
189
187
  if (!import_library.Library.shouldPrintStackTrace) {
@@ -196,7 +194,7 @@ function logWithCaller(params) {
196
194
  function makeStackTraceError(stackTrace) {
197
195
  return new import_error.CustomStackTraceError({
198
196
  cause: void 0,
199
- message: `Debug mode: intentional placeholder error.${formatGuideReference("")}`,
197
+ message: `Debug mode: intentional placeholder error.${formatDebugGuideReference()}`,
200
198
  stackTrace
201
199
  });
202
200
  }
@@ -209,10 +207,11 @@ function toArray(namespaces) {
209
207
  // Annotate the CommonJS export names for ESM import in node:
210
208
  0 && (module.exports = {
211
209
  enableLibraryDebuggers,
210
+ formatDebugGuideReference,
212
211
  getDebugController,
213
212
  getDebugger,
214
213
  getLibDebugger,
215
- printWithStackTrace,
216
- showInitialDebugMessage
214
+ isDebugNamespaceEnabled,
215
+ printWithStackTrace
217
216
  });
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyIH0gZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnQ29udHJvbGxlciB9IGZyb20gJy4vZGVidWctY29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7XG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgZ2V0VHlwZXNjcmlwdExpYlN0YXRlIH0gZnJvbSAnLi90eXBlc2NyaXB0LWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGFsaWFzaW5nIGRlYnVnZ2VyJ3Mgb3duIGZyYW1lIGJldHdlZW4gdGhlIGNhbGxlciBhbmQgdGhlIGBkZWJ1Z2AgcGFja2FnZTogdGhlIGBhcHBseWAgdHJhcCBvZiBpdHMgcHJveHkuXG4gKi9cbmNvbnN0IEFMSUFTX0ZSQU1FU19UT19TS0lQID0gMTtcbmNvbnN0IE5BTUVTUEFDRV9TRVBBUkFUT1IgPSAnLCc7XG5jb25zdCBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggPSAnLSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByaW50V2l0aFN0YWNrVHJhY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW50V2l0aFN0YWNrVHJhY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5ICRhcmd1bWVudHM6IHVua25vd25bXTtcblxuICAvKipcbiAgICogVGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2UgdG8gcHJpbnQuXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvZ1dpdGhDYWxsZXJ9LlxuICovXG5pbnRlcmZhY2UgTG9nV2l0aENhbGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGFyZ3VtZW50czogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1lc1RvU2tpcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5hYmxlcyB0aGUgZGVidWdnZXJzIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlLCBgJHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToqYF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1ZyBjb250cm9sbGVyLlxuICpcbiAqIEByZXR1cm5zIEEgZGVidWcgY29udHJvbGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnQ29udHJvbGxlcigpOiBEZWJ1Z0NvbnRyb2xsZXIge1xuICByZXR1cm4ge1xuICAgIGRpc2FibGU6IGRpc2FibGVOYW1lc3BhY2VzLFxuICAgIGVuYWJsZTogZW5hYmxlTmFtZXNwYWNlcyxcbiAgICBnZXQ6IGdldE5hbWVzcGFjZXMsXG4gICAgc2V0OiBzZXROYW1lc3BhY2VzXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIHdpdGggYSBsb2cgZnVuY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgY2FsbGVyJ3MgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlci5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHBhcmFtIGZyYW1lc1RvU2tpcCAtIFRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIHNraXAgaW4gdGhlIHN0YWNrIHRyYWNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSB3aXRoIGEgbG9nIGZ1bmN0aW9uIHRoYXQgaW5jbHVkZXMgdGhlIGNhbGxlcidzIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZywgZnJhbWVzVG9Ta2lwID0gMCk6IERlYnVnZ2VyIHtcbiAgY29uc3Qga2V5ID0gYCR7bmFtZXNwYWNlfToke1N0cmluZyhmcmFtZXNUb1NraXApfWA7XG4gIGNvbnN0IGRlYnVnZ2Vyc01hcCA9IGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWdnZXJzJywgbmV3IE1hcDxzdHJpbmcsIERlYnVnZ2VyPigpKS52YWx1ZTtcbiAgbGV0IGRlYnVnZ2VyRXggPSBkZWJ1Z2dlcnNNYXAuZ2V0KGtleSk7XG4gIGlmICghZGVidWdnZXJFeCkge1xuICAgIGRlYnVnZ2VyRXggPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkobmFtZXNwYWNlKTtcbiAgICBkZWJ1Z2dlckV4LmxvZyA9IChtZXNzYWdlOiBzdHJpbmcsIC4uLiRhcmd1bWVudHM6IHVua25vd25bXSk6IHZvaWQgPT4ge1xuICAgICAgbG9nV2l0aENhbGxlcih7XG4gICAgICAgICRhcmd1bWVudHMsXG4gICAgICAgIGZyYW1lc1RvU2tpcCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgbmFtZXNwYWNlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgZGVidWdnZXJzTWFwLnNldChrZXksIGRlYnVnZ2VyRXgpO1xuICB9XG5cbiAgcmV0dXJuIGRlYnVnZ2VyRXg7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKlxuICogV2hlbiB0aGUgaG9zdCBzdXBwbGllZCBgTGlicmFyeS5kZWJ1Z05hbWVzcGFjZUFsaWFzZXNgLCBhIGZpbHRlciB3cml0dGVuIGZvciBhbiBhbGlhcyBzdGlsbCBzaG93cyB0aGUgbWVzc2FnZXMuXG4gKiBFYWNoIG1lc3NhZ2UgcHJpbnRzIE9OQ0U6IHVuZGVyIHRoZSBjdXJyZW50IG5hbWVzcGFjZSB3aGVuIGEgZmlsdGVyIGVuYWJsZXMgaXQsIG90aGVyd2lzZSB1bmRlciB0aGUgZmlyc3QgYWxpYXMgYVxuICogZmlsdGVyIGVuYWJsZXMuIFByaW50aW5nIHVuZGVyIGV2ZXJ5IGVuYWJsZWQgb25lIHdvdWxkIGRvdWJsZSBlYWNoIG1lc3NhZ2UgdW5kZXIgdGhlIG1vc3QgY29tbW9uIGZpbHRlciBvZiBhbGwsXG4gKiBgPHByZWZpeD4qYCwgd2hpY2ggZW5hYmxlcyB0aGVtIGFsbC5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSBmb3IgdGhlIGxpYnJhcnkgKHVuZGVyIGl0cyBkZWJ1ZyBuYW1lc3BhY2UsIHNlZSBgTGlicmFyeS5kZWJ1Z05hbWVzcGFjZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGliRGVidWdnZXIobmFtZXNwYWNlOiBzdHJpbmcpOiBEZWJ1Z2dlciB7XG4gIGNvbnN0IGFsaWFzZXMgPSBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlQWxpYXNlcztcbiAgaWYgKGFsaWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToke25hbWVzcGFjZX1gKTtcbiAgfVxuXG4gIC8vIEV2ZXJ5IGRlYnVnZ2VyIGNvbWVzIGZyb20gdGhlIHNoYXJlZCBjYWNoZSBgZ2V0RGVidWdnZXJgIGtlZXBzLCBzbyBvbmx5IHRoZSBjaGVhcCBwcm94eSBpcyBuZXcgb24gZWFjaCBjYWxsLCBhbmQgYVxuICAvLyBzcHkgaW5zdGFsbGVkIG9uIG9uZSBjYWxsJ3MgYGxvZ2AgaXMgdGhlIG9uZSB0aGUgbmV4dCBjYWxsIHJlYWNoZXMuXG4gIGNvbnN0IGN1cnJlbnREZWJ1Z2dlciA9IGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToke25hbWVzcGFjZX1gLCBBTElBU19GUkFNRVNfVE9fU0tJUCk7XG4gIGNvbnN0IGFsaWFzRGVidWdnZXJzID0gYWxpYXNlcy5tYXAoKGFsaWFzKSA9PiBnZXREZWJ1Z2dlcihgJHtMaWJyYXJ5LmRlYnVnUHJlZml4TmFtZXNwYWNlfSR7YWxpYXN9OiR7bmFtZXNwYWNlfWAsIEFMSUFTX0ZSQU1FU19UT19TS0lQKSk7XG4gIGNvbnN0IGFsbERlYnVnZ2VycyA9IFtjdXJyZW50RGVidWdnZXIsIC4uLmFsaWFzRGVidWdnZXJzXTtcbiAgcmV0dXJuIG5ldyBQcm94eShjdXJyZW50RGVidWdnZXIsIHtcbiAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZ3VtZW50LCAkYXJndW1lbnRzOiBQYXJhbWV0ZXJzPERlYnVnZ2VyPik6IHZvaWQge1xuICAgICAgYWxsRGVidWdnZXJzLmZpbmQoKGRlYnVnZ2VySW5zdGFuY2UpID0+IGRlYnVnZ2VySW5zdGFuY2UuZW5hYmxlZCk/LiguLi4kYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGdldCh0YXJnZXQsIHByb3BlcnR5LCByZWNlaXZlcik6IHVua25vd24ge1xuICAgICAgaWYgKHByb3BlcnR5ID09PSAnZW5hYmxlZCcpIHtcbiAgICAgICAgcmV0dXJuIGFsbERlYnVnZ2Vycy5zb21lKChkZWJ1Z2dlckluc3RhbmNlKSA9PiBkZWJ1Z2dlckluc3RhbmNlLmVuYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZTogdW5rbm93biA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFByaW50cyBhIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHJpbnRpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFdpdGhTdGFja1RyYWNlKHBhcmFtczogUHJpbnRXaXRoU3RhY2tUcmFjZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgJGFyZ3VtZW50cyxcbiAgICBkZWJ1Z2dlckluc3RhbmNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhY2tUcmFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xufVxuXG4vKipcbiAqIFNob3dzIGFuIGluaXRpYWwgZGVidWcgbWVzc2FnZSwgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gZGlzYWJsZSB0aGUgcGx1Z2luJ3MgZGVidWcgbWVzc2FnZXMuXG4gKlxuICogUHJpbnRzIG5vdGhpbmcgd2hpbGUgdGhlIHBsdWdpbidzIGRlYnVnIG1lc3NhZ2VzIGFyZSBkaXNhYmxlZCwgc28gYSBwbHVnaW4gaW4gaXRzIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3cml0ZXMgbm90aGluZyB0byB0aGUgY29uc29sZS5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2UocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKS5lbmFibGVkKHBsdWdpbklkKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGdldERlYnVnZ2VyKHBsdWdpbklkKShgRGVidWcgbWVzc2FnZXMgZm9yIHBsdWdpbiAke3BsdWdpbklkfSBhcmUgZW5hYmxlZC4ke2Zvcm1hdEd1aWRlUmVmZXJlbmNlKCcgaG93IHRvIGRpc2FibGUgdGhlbScpfWApO1xufVxuXG5mdW5jdGlvbiBkaXNhYmxlTmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0KGdldE5hbWVzcGFjZXMoKSk7XG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHRvQXJyYXkobmFtZXNwYWNlcykpIHtcbiAgICBpZiAobmFtZXNwYWNlLnN0YXJ0c1dpdGgoTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5lZ2F0ZWROYW1lc3BhY2UgPSBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggKyBuYW1lc3BhY2U7XG4gICAgc2V0LmRlbGV0ZShuYW1lc3BhY2UpO1xuICAgIHNldC5hZGQobmVnYXRlZE5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhbLi4uc2V0XSk7XG59XG5cbmZ1bmN0aW9uIGVuYWJsZU5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldChnZXROYW1lc3BhY2VzKCkpO1xuICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiB0b0FycmF5KG5hbWVzcGFjZXMpKSB7XG4gICAgaWYgKCFuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb25zdCBuZWdhdGVkTmFtZXNwYWNlID0gTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYICsgbmFtZXNwYWNlO1xuICAgICAgc2V0LmRlbGV0ZShuZWdhdGVkTmFtZXNwYWNlKTtcbiAgICB9XG4gICAgc2V0LmFkZChuYW1lc3BhY2UpO1xuICB9XG4gIHNldE5hbWVzcGFjZXMoWy4uLnNldF0pO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRHdWlkZVJlZmVyZW5jZShzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBMaWJyYXJ5LmRlYnVnR3VpZGVVcmwgPyBgIFNlZSAke0xpYnJhcnkuZGVidWdHdWlkZVVybH0ke3N1ZmZpeH0uYCA6ICcnO1xufVxuXG5mdW5jdGlvbiBnZXROYW1lc3BhY2VzKCk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHRvQXJyYXkoZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmxvYWQoKSA/PyAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKTogdHlwZW9mIGRlYnVnIHtcbiAgcmV0dXJuIGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWcnLCBkZWJ1ZykudmFsdWU7XG59XG5cbmZ1bmN0aW9uIGxvZ1dpdGhDYWxsZXIocGFyYW1zOiBMb2dXaXRoQ2FsbGVyUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICAkYXJndW1lbnRzLFxuICAgIGZyYW1lc1RvU2tpcCxcbiAgICBtZXNzYWdlLFxuICAgIG5hbWVzcGFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIWdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKS5lbmFibGVkKG5hbWVzcGFjZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gVmFsaWQgdXNhZ2UuXG4gICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNhbGxlciBpcyAzIGZyYW1lcyBhYm92ZSB0aGlzIG9uZSwgYmVjYXVzZSB0aGUgY2FsbCBzdGFjayBpcyBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiAwOiBsb2dXaXRoQ2FsbGVyXG4gICAqIDE6IGRlYnVnSW5zdGFuY2UubG9nXG4gICAqIDI6IGRlYnVnXG4gICAqIDM6IGZ1bmN0aW9uTmFtZSAodGhlIGNhbGxlcilcbiAgICpcbiAgICogYGdldFN0YWNrVHJhY2VgIGRyb3BzIGl0cyBvd24gZnJhbWUgYW5kLCBvbiBhbiBlbmdpbmUgdGhhdCB3cml0ZXMgb25lLCB0aGUgYEVycm9yYCBoZWFkZXIgbGluZS5cbiAgICovXG4gIGNvbnN0IENBTExFUl9GUkFNRV9JTkRFWCA9IDM7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gVmFsaWQgdXNhZ2UuXG4gIGNvbnNvbGUuZGVidWcobWVzc2FnZSwgLi4uJGFyZ3VtZW50cywgJ1xcblxcbi0tLVxcbkxvZ2dlciBzdGFjayB0cmFjZTpcXG4nLCBtYWtlU3RhY2tUcmFjZUVycm9yKGdldFN0YWNrVHJhY2UoQ0FMTEVSX0ZSQU1FX0lOREVYICsgZnJhbWVzVG9Ta2lwKSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlU3RhY2tUcmFjZUVycm9yKHN0YWNrVHJhY2U6IHN0cmluZyk6IEN1c3RvbVN0YWNrVHJhY2VFcnJvciB7XG4gIHJldHVybiBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICBjYXVzZTogdW5kZWZpbmVkLFxuICAgIG1lc3NhZ2U6IGBEZWJ1ZyBtb2RlOiBpbnRlbnRpb25hbCBwbGFjZWhvbGRlciBlcnJvci4ke2Zvcm1hdEd1aWRlUmVmZXJlbmNlKCcnKX1gLFxuICAgIHN0YWNrVHJhY2VcbiAgfSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZXMgLSBUaGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKi9cbmZ1bmN0aW9uIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZSh0b0FycmF5KG5hbWVzcGFjZXMpLmpvaW4oTkFNRVNQQUNFX1NFUEFSQVRPUikpO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gdHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcy5zcGxpdChOQU1FU1BBQ0VfU0VQQVJBVE9SKS5maWx0ZXIoQm9vbGVhbikgOiBuYW1lc3BhY2VzLmZsYXRNYXAoKG5hbWVzcGFjZSkgPT4gdG9BcnJheShuYW1lc3BhY2UpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyIH0gZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnQ29udHJvbGxlciB9IGZyb20gJy4vZGVidWctY29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7XG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgZ2V0VHlwZXNjcmlwdExpYlN0YXRlIH0gZnJvbSAnLi90eXBlc2NyaXB0LWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGFsaWFzaW5nIGRlYnVnZ2VyJ3Mgb3duIGZyYW1lIGJldHdlZW4gdGhlIGNhbGxlciBhbmQgdGhlIGBkZWJ1Z2AgcGFja2FnZTogdGhlIGBhcHBseWAgdHJhcCBvZiBpdHMgcHJveHkuXG4gKi9cbmNvbnN0IEFMSUFTX0ZSQU1FU19UT19TS0lQID0gMTtcbmNvbnN0IE5BTUVTUEFDRV9TRVBBUkFUT1IgPSAnLCc7XG5jb25zdCBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggPSAnLSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByaW50V2l0aFN0YWNrVHJhY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW50V2l0aFN0YWNrVHJhY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5ICRhcmd1bWVudHM6IHVua25vd25bXTtcblxuICAvKipcbiAgICogVGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2UgdG8gcHJpbnQuXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvZ1dpdGhDYWxsZXJ9LlxuICovXG5pbnRlcmZhY2UgTG9nV2l0aENhbGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGFyZ3VtZW50czogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1lc1RvU2tpcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5hYmxlcyB0aGUgZGVidWdnZXJzIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlLCBgJHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToqYF0pO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgdGhlIHNlbnRlbmNlIHRoYXQgcG9pbnRzIGF0IHRoZSBkZWJ1ZyBndWlkZSB0aGUgaG9zdCBzdXBwbGllZCAoc2VlIGBMaWJyYXJ5LmRlYnVnR3VpZGVVcmxgKS5cbiAqXG4gKiBAcGFyYW0gc3VmZml4IC0gVGhlIHRleHQgYXBwZW5kZWQgdG8gdGhlIGd1aWRlIFVSTCwgaW5zaWRlIHRoZSBzZW50ZW5jZSAoZS5nLiBgJyBob3cgdG8gZGlzYWJsZSB0aGVtJ2ApLlxuICogQHJldHVybnMgVGhlIHNlbnRlbmNlLCB3aXRoIGEgbGVhZGluZyBzcGFjZSwgb3IgYW4gZW1wdHkgc3RyaW5nIHdoZW4gdGhlIGhvc3Qgc3VwcGxpZWQgbm8gZ3VpZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREZWJ1Z0d1aWRlUmVmZXJlbmNlKHN1ZmZpeCA9ICcnKTogc3RyaW5nIHtcbiAgcmV0dXJuIExpYnJhcnkuZGVidWdHdWlkZVVybCA/IGAgU2VlICR7TGlicmFyeS5kZWJ1Z0d1aWRlVXJsfSR7c3VmZml4fS5gIDogJyc7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnIGNvbnRyb2xsZXIuXG4gKlxuICogQHJldHVybnMgQSBkZWJ1ZyBjb250cm9sbGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVidWdDb250cm9sbGVyKCk6IERlYnVnQ29udHJvbGxlciB7XG4gIHJldHVybiB7XG4gICAgZGlzYWJsZTogZGlzYWJsZU5hbWVzcGFjZXMsXG4gICAgZW5hYmxlOiBlbmFibGVOYW1lc3BhY2VzLFxuICAgIGdldDogZ2V0TmFtZXNwYWNlcyxcbiAgICBzZXQ6IHNldE5hbWVzcGFjZXNcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVidWdnZXIgaW5zdGFuY2Ugd2l0aCBhIGxvZyBmdW5jdGlvbiB0aGF0IGluY2x1ZGVzIHRoZSBjYWxsZXIncyBmaWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyLlxuICpcbiAqIEBwYXJhbSBuYW1lc3BhY2UgLSBUaGUgbmFtZXNwYWNlIGZvciB0aGUgZGVidWdnZXIgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZnJhbWVzVG9Ta2lwIC0gVGhlIG51bWJlciBvZiBmcmFtZXMgdG8gc2tpcCBpbiB0aGUgc3RhY2sgdHJhY2UuXG4gKiBAcmV0dXJucyBBIGRlYnVnZ2VyIGluc3RhbmNlIHdpdGggYSBsb2cgZnVuY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgY2FsbGVyJ3MgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnZ2VyKG5hbWVzcGFjZTogc3RyaW5nLCBmcmFtZXNUb1NraXAgPSAwKTogRGVidWdnZXIge1xuICBjb25zdCBrZXkgPSBgJHtuYW1lc3BhY2V9OiR7U3RyaW5nKGZyYW1lc1RvU2tpcCl9YDtcbiAgY29uc3QgZGVidWdnZXJzTWFwID0gZ2V0VHlwZXNjcmlwdExpYlN0YXRlKCdkZWJ1Z2dlcnMnLCBuZXcgTWFwPHN0cmluZywgRGVidWdnZXI+KCkpLnZhbHVlO1xuICBsZXQgZGVidWdnZXJFeCA9IGRlYnVnZ2Vyc01hcC5nZXQoa2V5KTtcbiAgaWYgKCFkZWJ1Z2dlckV4KSB7XG4gICAgZGVidWdnZXJFeCA9IGdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKShuYW1lc3BhY2UpO1xuICAgIGRlYnVnZ2VyRXgubG9nID0gKG1lc3NhZ2U6IHN0cmluZywgLi4uJGFyZ3VtZW50czogdW5rbm93bltdKTogdm9pZCA9PiB7XG4gICAgICBsb2dXaXRoQ2FsbGVyKHtcbiAgICAgICAgJGFyZ3VtZW50cyxcbiAgICAgICAgZnJhbWVzVG9Ta2lwLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBuYW1lc3BhY2VcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBkZWJ1Z2dlcnNNYXAuc2V0KGtleSwgZGVidWdnZXJFeCk7XG4gIH1cblxuICByZXR1cm4gZGVidWdnZXJFeDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVidWdnZXIgaW5zdGFuY2UgZm9yIHRoZSBsaWJyYXJ5ICh1bmRlciBpdHMgZGVidWcgbmFtZXNwYWNlLCBzZWUgYExpYnJhcnkuZGVidWdOYW1lc3BhY2VgKS5cbiAqXG4gKiBXaGVuIHRoZSBob3N0IHN1cHBsaWVkIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlQWxpYXNlc2AsIGEgZmlsdGVyIHdyaXR0ZW4gZm9yIGFuIGFsaWFzIHN0aWxsIHNob3dzIHRoZSBtZXNzYWdlcy5cbiAqIEVhY2ggbWVzc2FnZSBwcmludHMgT05DRTogdW5kZXIgdGhlIGN1cnJlbnQgbmFtZXNwYWNlIHdoZW4gYSBmaWx0ZXIgZW5hYmxlcyBpdCwgb3RoZXJ3aXNlIHVuZGVyIHRoZSBmaXJzdCBhbGlhcyBhXG4gKiBmaWx0ZXIgZW5hYmxlcy4gUHJpbnRpbmcgdW5kZXIgZXZlcnkgZW5hYmxlZCBvbmUgd291bGQgZG91YmxlIGVhY2ggbWVzc2FnZSB1bmRlciB0aGUgbW9zdCBjb21tb24gZmlsdGVyIG9mIGFsbCxcbiAqIGA8cHJlZml4PipgLCB3aGljaCBlbmFibGVzIHRoZW0gYWxsLlxuICpcbiAqIEBwYXJhbSBuYW1lc3BhY2UgLSBUaGUgbmFtZXNwYWNlIGZvciB0aGUgZGVidWdnZXIgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaWJEZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZyk6IERlYnVnZ2VyIHtcbiAgY29uc3QgYWxpYXNlcyA9IExpYnJhcnkuZGVidWdOYW1lc3BhY2VBbGlhc2VzO1xuICBpZiAoYWxpYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZ2V0RGVidWdnZXIoYCR7TGlicmFyeS5kZWJ1Z1ByZWZpeE5hbWVzcGFjZX0ke0xpYnJhcnkuZGVidWdOYW1lc3BhY2V9OiR7bmFtZXNwYWNlfWApO1xuICB9XG5cbiAgLy8gRXZlcnkgZGVidWdnZXIgY29tZXMgZnJvbSB0aGUgc2hhcmVkIGNhY2hlIGBnZXREZWJ1Z2dlcmAga2VlcHMsIHNvIG9ubHkgdGhlIGNoZWFwIHByb3h5IGlzIG5ldyBvbiBlYWNoIGNhbGwsIGFuZCBhXG4gIC8vIHNweSBpbnN0YWxsZWQgb24gb25lIGNhbGwncyBgbG9nYCBpcyB0aGUgb25lIHRoZSBuZXh0IGNhbGwgcmVhY2hlcy5cbiAgY29uc3QgY3VycmVudERlYnVnZ2VyID0gZ2V0RGVidWdnZXIoYCR7TGlicmFyeS5kZWJ1Z1ByZWZpeE5hbWVzcGFjZX0ke0xpYnJhcnkuZGVidWdOYW1lc3BhY2V9OiR7bmFtZXNwYWNlfWAsIEFMSUFTX0ZSQU1FU19UT19TS0lQKTtcbiAgY29uc3QgYWxpYXNEZWJ1Z2dlcnMgPSBhbGlhc2VzLm1hcCgoYWxpYXMpID0+IGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHthbGlhc306JHtuYW1lc3BhY2V9YCwgQUxJQVNfRlJBTUVTX1RPX1NLSVApKTtcbiAgY29uc3QgYWxsRGVidWdnZXJzID0gW2N1cnJlbnREZWJ1Z2dlciwgLi4uYWxpYXNEZWJ1Z2dlcnNdO1xuICByZXR1cm4gbmV3IFByb3h5KGN1cnJlbnREZWJ1Z2dlciwge1xuICAgIGFwcGx5KF90YXJnZXQsIF90aGlzQXJndW1lbnQsICRhcmd1bWVudHM6IFBhcmFtZXRlcnM8RGVidWdnZXI+KTogdm9pZCB7XG4gICAgICBhbGxEZWJ1Z2dlcnMuZmluZCgoZGVidWdnZXJJbnN0YW5jZSkgPT4gZGVidWdnZXJJbnN0YW5jZS5lbmFibGVkKT8uKC4uLiRhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKTogdW5rbm93biB7XG4gICAgICBpZiAocHJvcGVydHkgPT09ICdlbmFibGVkJykge1xuICAgICAgICByZXR1cm4gYWxsRGVidWdnZXJzLnNvbWUoKGRlYnVnZ2VySW5zdGFuY2UpID0+IGRlYnVnZ2VySW5zdGFuY2UuZW5hYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlOiB1bmtub3duID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZGVidWcgZmlsdGVyIGVuYWJsZXMgYSBuYW1lc3BhY2UuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZSAtIFRoZSBuYW1lc3BhY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBuYW1lc3BhY2UgaXMgZW5hYmxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVidWdOYW1lc3BhY2VFbmFibGVkKG5hbWVzcGFjZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlZChuYW1lc3BhY2UpO1xufVxuXG4vKipcbiAqIFByaW50cyBhIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHJpbnRpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFdpdGhTdGFja1RyYWNlKHBhcmFtczogUHJpbnRXaXRoU3RhY2tUcmFjZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgJGFyZ3VtZW50cyxcbiAgICBkZWJ1Z2dlckluc3RhbmNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhY2tUcmFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xufVxuXG5mdW5jdGlvbiBkaXNhYmxlTmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0KGdldE5hbWVzcGFjZXMoKSk7XG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHRvQXJyYXkobmFtZXNwYWNlcykpIHtcbiAgICBpZiAobmFtZXNwYWNlLnN0YXJ0c1dpdGgoTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5lZ2F0ZWROYW1lc3BhY2UgPSBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggKyBuYW1lc3BhY2U7XG4gICAgc2V0LmRlbGV0ZShuYW1lc3BhY2UpO1xuICAgIHNldC5hZGQobmVnYXRlZE5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhbLi4uc2V0XSk7XG59XG5cbmZ1bmN0aW9uIGVuYWJsZU5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldChnZXROYW1lc3BhY2VzKCkpO1xuICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiB0b0FycmF5KG5hbWVzcGFjZXMpKSB7XG4gICAgaWYgKCFuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb25zdCBuZWdhdGVkTmFtZXNwYWNlID0gTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYICsgbmFtZXNwYWNlO1xuICAgICAgc2V0LmRlbGV0ZShuZWdhdGVkTmFtZXNwYWNlKTtcbiAgICB9XG4gICAgc2V0LmFkZChuYW1lc3BhY2UpO1xuICB9XG4gIHNldE5hbWVzcGFjZXMoWy4uLnNldF0pO1xufVxuXG5mdW5jdGlvbiBnZXROYW1lc3BhY2VzKCk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHRvQXJyYXkoZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmxvYWQoKSA/PyAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKTogdHlwZW9mIGRlYnVnIHtcbiAgcmV0dXJuIGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWcnLCBkZWJ1ZykudmFsdWU7XG59XG5cbmZ1bmN0aW9uIGxvZ1dpdGhDYWxsZXIocGFyYW1zOiBMb2dXaXRoQ2FsbGVyUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICAkYXJndW1lbnRzLFxuICAgIGZyYW1lc1RvU2tpcCxcbiAgICBtZXNzYWdlLFxuICAgIG5hbWVzcGFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIWlzRGVidWdOYW1lc3BhY2VFbmFibGVkKG5hbWVzcGFjZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gVmFsaWQgdXNhZ2UuXG4gICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNhbGxlciBpcyAzIGZyYW1lcyBhYm92ZSB0aGlzIG9uZSwgYmVjYXVzZSB0aGUgY2FsbCBzdGFjayBpcyBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiAwOiBsb2dXaXRoQ2FsbGVyXG4gICAqIDE6IGRlYnVnSW5zdGFuY2UubG9nXG4gICAqIDI6IGRlYnVnXG4gICAqIDM6IGZ1bmN0aW9uTmFtZSAodGhlIGNhbGxlcilcbiAgICpcbiAgICogYGdldFN0YWNrVHJhY2VgIGRyb3BzIGl0cyBvd24gZnJhbWUgYW5kLCBvbiBhbiBlbmdpbmUgdGhhdCB3cml0ZXMgb25lLCB0aGUgYEVycm9yYCBoZWFkZXIgbGluZS5cbiAgICovXG4gIGNvbnN0IENBTExFUl9GUkFNRV9JTkRFWCA9IDM7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gVmFsaWQgdXNhZ2UuXG4gIGNvbnNvbGUuZGVidWcobWVzc2FnZSwgLi4uJGFyZ3VtZW50cywgJ1xcblxcbi0tLVxcbkxvZ2dlciBzdGFjayB0cmFjZTpcXG4nLCBtYWtlU3RhY2tUcmFjZUVycm9yKGdldFN0YWNrVHJhY2UoQ0FMTEVSX0ZSQU1FX0lOREVYICsgZnJhbWVzVG9Ta2lwKSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlU3RhY2tUcmFjZUVycm9yKHN0YWNrVHJhY2U6IHN0cmluZyk6IEN1c3RvbVN0YWNrVHJhY2VFcnJvciB7XG4gIHJldHVybiBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICBjYXVzZTogdW5kZWZpbmVkLFxuICAgIG1lc3NhZ2U6IGBEZWJ1ZyBtb2RlOiBpbnRlbnRpb25hbCBwbGFjZWhvbGRlciBlcnJvci4ke2Zvcm1hdERlYnVnR3VpZGVSZWZlcmVuY2UoKX1gLFxuICAgIHN0YWNrVHJhY2VcbiAgfSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZXMgLSBUaGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKi9cbmZ1bmN0aW9uIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZSh0b0FycmF5KG5hbWVzcGFjZXMpLmpvaW4oTkFNRVNQQUNFX1NFUEFSQVRPUikpO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gdHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcy5zcGxpdChOQU1FU1BBQ0VfU0VQQVJBVE9SKS5maWx0ZXIoQm9vbGVhbikgOiBuYW1lc3BhY2VzLmZsYXRN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
@@ -31,6 +31,13 @@ export interface PrintWithStackTraceParams {
31
31
  * Enables the debuggers for the library (under its debug namespace, see `Library.debugNamespace`).
32
32
  */
33
33
  export declare function enableLibraryDebuggers(): void;
34
+ /**
35
+ * Formats the sentence that points at the debug guide the host supplied (see `Library.debugGuideUrl`).
36
+ *
37
+ * @param suffix - The text appended to the guide URL, inside the sentence (e.g. `' how to disable them'`).
38
+ * @returns The sentence, with a leading space, or an empty string when the host supplied no guide.
39
+ */
40
+ export declare function formatDebugGuideReference(suffix?: string): string;
34
41
  /**
35
42
  * Returns a debug controller.
36
43
  *
@@ -58,16 +65,15 @@ export declare function getDebugger(namespace: string, framesToSkip?: number): D
58
65
  */
59
66
  export declare function getLibDebugger(namespace: string): Debugger;
60
67
  /**
61
- * Prints a message with a stack trace.
68
+ * Checks whether the current debug filter enables a namespace.
62
69
  *
63
- * @param params - The parameters for printing the message.
70
+ * @param namespace - The namespace to check.
71
+ * @returns Whether the namespace is enabled.
64
72
  */
65
- export declare function printWithStackTrace(params: PrintWithStackTraceParams): void;
73
+ export declare function isDebugNamespaceEnabled(namespace: string): boolean;
66
74
  /**
67
- * Shows an initial debug message, telling the user how to disable the plugin's debug messages.
68
- *
69
- * Prints nothing while the plugin's debug messages are disabled, so a plugin in its default configuration writes nothing to the console.
75
+ * Prints a message with a stack trace.
70
76
  *
71
- * @param pluginId - The plugin ID.
77
+ * @param params - The parameters for printing the message.
72
78
  */
73
- export declare function showInitialDebugMessage(pluginId: string): void;
79
+ export declare function printWithStackTrace(params: PrintWithStackTraceParams): void;
@@ -31,6 +31,13 @@ export interface PrintWithStackTraceParams {
31
31
  * Enables the debuggers for the library (under its debug namespace, see `Library.debugNamespace`).
32
32
  */
33
33
  export declare function enableLibraryDebuggers(): void;
34
+ /**
35
+ * Formats the sentence that points at the debug guide the host supplied (see `Library.debugGuideUrl`).
36
+ *
37
+ * @param suffix - The text appended to the guide URL, inside the sentence (e.g. `' how to disable them'`).
38
+ * @returns The sentence, with a leading space, or an empty string when the host supplied no guide.
39
+ */
40
+ export declare function formatDebugGuideReference(suffix?: string): string;
34
41
  /**
35
42
  * Returns a debug controller.
36
43
  *
@@ -58,16 +65,15 @@ export declare function getDebugger(namespace: string, framesToSkip?: number): D
58
65
  */
59
66
  export declare function getLibDebugger(namespace: string): Debugger;
60
67
  /**
61
- * Prints a message with a stack trace.
68
+ * Checks whether the current debug filter enables a namespace.
62
69
  *
63
- * @param params - The parameters for printing the message.
70
+ * @param namespace - The namespace to check.
71
+ * @returns Whether the namespace is enabled.
64
72
  */
65
- export declare function printWithStackTrace(params: PrintWithStackTraceParams): void;
73
+ export declare function isDebugNamespaceEnabled(namespace: string): boolean;
66
74
  /**
67
- * Shows an initial debug message, telling the user how to disable the plugin's debug messages.
68
- *
69
- * Prints nothing while the plugin's debug messages are disabled, so a plugin in its default configuration writes nothing to the console.
75
+ * Prints a message with a stack trace.
70
76
  *
71
- * @param pluginId - The plugin ID.
77
+ * @param params - The parameters for printing the message.
72
78
  */
73
- export declare function showInitialDebugMessage(pluginId: string): void;
79
+ export declare function printWithStackTrace(params: PrintWithStackTraceParams): void;
@@ -43,6 +43,9 @@ const NEGATED_NAMESPACE_PREFIX = "-";
43
43
  function enableLibraryDebuggers() {
44
44
  enableNamespaces([Library.debugNamespace, `${Library.debugNamespace}:*`]);
45
45
  }
46
+ function formatDebugGuideReference(suffix = "") {
47
+ return Library.debugGuideUrl ? ` See ${Library.debugGuideUrl}${suffix}.` : "";
48
+ }
46
49
  function getDebugController() {
47
50
  return {
48
51
  disable: disableNamespaces,
@@ -90,6 +93,9 @@ function getLibDebugger(namespace) {
90
93
  }
91
94
  });
92
95
  }
96
+ function isDebugNamespaceEnabled(namespace) {
97
+ return getSharedDebugLibInstance().enabled(namespace);
98
+ }
93
99
  function printWithStackTrace(params) {
94
100
  const {
95
101
  $arguments,
@@ -103,12 +109,6 @@ function printWithStackTrace(params) {
103
109
  }
104
110
  debuggerInstance(message, ...$arguments, "\n\n---\nContext stack trace:\n", makeStackTraceError(stackTrace));
105
111
  }
106
- function showInitialDebugMessage(pluginId) {
107
- if (!getSharedDebugLibInstance().enabled(pluginId)) {
108
- return;
109
- }
110
- getDebugger(pluginId)(`Debug messages for plugin ${pluginId} are enabled.${formatGuideReference(" how to disable them")}`);
111
- }
112
112
  function disableNamespaces(namespaces) {
113
113
  const set = new Set(getNamespaces());
114
114
  for (const namespace of toArray(namespaces)) {
@@ -132,9 +132,6 @@ function enableNamespaces(namespaces) {
132
132
  }
133
133
  setNamespaces([...set]);
134
134
  }
135
- function formatGuideReference(suffix) {
136
- return Library.debugGuideUrl ? ` See ${Library.debugGuideUrl}${suffix}.` : "";
137
- }
138
135
  function getNamespaces() {
139
136
  return toArray(getSharedDebugLibInstance().load() ?? "");
140
137
  }
@@ -148,7 +145,7 @@ function logWithCaller(params) {
148
145
  message,
149
146
  namespace
150
147
  } = params;
151
- if (!getSharedDebugLibInstance().enabled(namespace)) {
148
+ if (!isDebugNamespaceEnabled(namespace)) {
152
149
  return;
153
150
  }
154
151
  if (!Library.shouldPrintStackTrace) {
@@ -161,7 +158,7 @@ function logWithCaller(params) {
161
158
  function makeStackTraceError(stackTrace) {
162
159
  return new CustomStackTraceError({
163
160
  cause: void 0,
164
- message: `Debug mode: intentional placeholder error.${formatGuideReference("")}`,
161
+ message: `Debug mode: intentional placeholder error.${formatDebugGuideReference()}`,
165
162
  stackTrace
166
163
  });
167
164
  }
@@ -173,10 +170,11 @@ function toArray(namespaces) {
173
170
  }
174
171
  export {
175
172
  enableLibraryDebuggers,
173
+ formatDebugGuideReference,
176
174
  getDebugController,
177
175
  getDebugger,
178
176
  getLibDebugger,
179
- printWithStackTrace,
180
- showInitialDebugMessage
177
+ isDebugNamespaceEnabled,
178
+ printWithStackTrace
181
179
  };
182
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyIH0gZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnQ29udHJvbGxlciB9IGZyb20gJy4vZGVidWctY29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7XG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgZ2V0VHlwZXNjcmlwdExpYlN0YXRlIH0gZnJvbSAnLi90eXBlc2NyaXB0LWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGFsaWFzaW5nIGRlYnVnZ2VyJ3Mgb3duIGZyYW1lIGJldHdlZW4gdGhlIGNhbGxlciBhbmQgdGhlIGBkZWJ1Z2AgcGFja2FnZTogdGhlIGBhcHBseWAgdHJhcCBvZiBpdHMgcHJveHkuXG4gKi9cbmNvbnN0IEFMSUFTX0ZSQU1FU19UT19TS0lQID0gMTtcbmNvbnN0IE5BTUVTUEFDRV9TRVBBUkFUT1IgPSAnLCc7XG5jb25zdCBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggPSAnLSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByaW50V2l0aFN0YWNrVHJhY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW50V2l0aFN0YWNrVHJhY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5ICRhcmd1bWVudHM6IHVua25vd25bXTtcblxuICAvKipcbiAgICogVGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2UgdG8gcHJpbnQuXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvZ1dpdGhDYWxsZXJ9LlxuICovXG5pbnRlcmZhY2UgTG9nV2l0aENhbGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGFyZ3VtZW50czogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1lc1RvU2tpcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5hYmxlcyB0aGUgZGVidWdnZXJzIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlLCBgJHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToqYF0pO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBkZWJ1ZyBjb250cm9sbGVyLlxuICpcbiAqIEByZXR1cm5zIEEgZGVidWcgY29udHJvbGxlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnQ29udHJvbGxlcigpOiBEZWJ1Z0NvbnRyb2xsZXIge1xuICByZXR1cm4ge1xuICAgIGRpc2FibGU6IGRpc2FibGVOYW1lc3BhY2VzLFxuICAgIGVuYWJsZTogZW5hYmxlTmFtZXNwYWNlcyxcbiAgICBnZXQ6IGdldE5hbWVzcGFjZXMsXG4gICAgc2V0OiBzZXROYW1lc3BhY2VzXG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIHdpdGggYSBsb2cgZnVuY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgY2FsbGVyJ3MgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlci5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHBhcmFtIGZyYW1lc1RvU2tpcCAtIFRoZSBudW1iZXIgb2YgZnJhbWVzIHRvIHNraXAgaW4gdGhlIHN0YWNrIHRyYWNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSB3aXRoIGEgbG9nIGZ1bmN0aW9uIHRoYXQgaW5jbHVkZXMgdGhlIGNhbGxlcidzIGZpbGUgbmFtZSBhbmQgbGluZSBudW1iZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZywgZnJhbWVzVG9Ta2lwID0gMCk6IERlYnVnZ2VyIHtcbiAgY29uc3Qga2V5ID0gYCR7bmFtZXNwYWNlfToke1N0cmluZyhmcmFtZXNUb1NraXApfWA7XG4gIGNvbnN0IGRlYnVnZ2Vyc01hcCA9IGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWdnZXJzJywgbmV3IE1hcDxzdHJpbmcsIERlYnVnZ2VyPigpKS52YWx1ZTtcbiAgbGV0IGRlYnVnZ2VyRXggPSBkZWJ1Z2dlcnNNYXAuZ2V0KGtleSk7XG4gIGlmICghZGVidWdnZXJFeCkge1xuICAgIGRlYnVnZ2VyRXggPSBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkobmFtZXNwYWNlKTtcbiAgICBkZWJ1Z2dlckV4LmxvZyA9IChtZXNzYWdlOiBzdHJpbmcsIC4uLiRhcmd1bWVudHM6IHVua25vd25bXSk6IHZvaWQgPT4ge1xuICAgICAgbG9nV2l0aENhbGxlcih7XG4gICAgICAgICRhcmd1bWVudHMsXG4gICAgICAgIGZyYW1lc1RvU2tpcCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgbmFtZXNwYWNlXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgZGVidWdnZXJzTWFwLnNldChrZXksIGRlYnVnZ2VyRXgpO1xuICB9XG5cbiAgcmV0dXJuIGRlYnVnZ2VyRXg7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKlxuICogV2hlbiB0aGUgaG9zdCBzdXBwbGllZCBgTGlicmFyeS5kZWJ1Z05hbWVzcGFjZUFsaWFzZXNgLCBhIGZpbHRlciB3cml0dGVuIGZvciBhbiBhbGlhcyBzdGlsbCBzaG93cyB0aGUgbWVzc2FnZXMuXG4gKiBFYWNoIG1lc3NhZ2UgcHJpbnRzIE9OQ0U6IHVuZGVyIHRoZSBjdXJyZW50IG5hbWVzcGFjZSB3aGVuIGEgZmlsdGVyIGVuYWJsZXMgaXQsIG90aGVyd2lzZSB1bmRlciB0aGUgZmlyc3QgYWxpYXMgYVxuICogZmlsdGVyIGVuYWJsZXMuIFByaW50aW5nIHVuZGVyIGV2ZXJ5IGVuYWJsZWQgb25lIHdvdWxkIGRvdWJsZSBlYWNoIG1lc3NhZ2UgdW5kZXIgdGhlIG1vc3QgY29tbW9uIGZpbHRlciBvZiBhbGwsXG4gKiBgPHByZWZpeD4qYCwgd2hpY2ggZW5hYmxlcyB0aGVtIGFsbC5cbiAqXG4gKiBAcGFyYW0gbmFtZXNwYWNlIC0gVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICogQHJldHVybnMgQSBkZWJ1Z2dlciBpbnN0YW5jZSBmb3IgdGhlIGxpYnJhcnkgKHVuZGVyIGl0cyBkZWJ1ZyBuYW1lc3BhY2UsIHNlZSBgTGlicmFyeS5kZWJ1Z05hbWVzcGFjZWApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGliRGVidWdnZXIobmFtZXNwYWNlOiBzdHJpbmcpOiBEZWJ1Z2dlciB7XG4gIGNvbnN0IGFsaWFzZXMgPSBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlQWxpYXNlcztcbiAgaWYgKGFsaWFzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToke25hbWVzcGFjZX1gKTtcbiAgfVxuXG4gIC8vIEV2ZXJ5IGRlYnVnZ2VyIGNvbWVzIGZyb20gdGhlIHNoYXJlZCBjYWNoZSBgZ2V0RGVidWdnZXJgIGtlZXBzLCBzbyBvbmx5IHRoZSBjaGVhcCBwcm94eSBpcyBuZXcgb24gZWFjaCBjYWxsLCBhbmQgYVxuICAvLyBzcHkgaW5zdGFsbGVkIG9uIG9uZSBjYWxsJ3MgYGxvZ2AgaXMgdGhlIG9uZSB0aGUgbmV4dCBjYWxsIHJlYWNoZXMuXG4gIGNvbnN0IGN1cnJlbnREZWJ1Z2dlciA9IGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToke25hbWVzcGFjZX1gLCBBTElBU19GUkFNRVNfVE9fU0tJUCk7XG4gIGNvbnN0IGFsaWFzRGVidWdnZXJzID0gYWxpYXNlcy5tYXAoKGFsaWFzKSA9PiBnZXREZWJ1Z2dlcihgJHtMaWJyYXJ5LmRlYnVnUHJlZml4TmFtZXNwYWNlfSR7YWxpYXN9OiR7bmFtZXNwYWNlfWAsIEFMSUFTX0ZSQU1FU19UT19TS0lQKSk7XG4gIGNvbnN0IGFsbERlYnVnZ2VycyA9IFtjdXJyZW50RGVidWdnZXIsIC4uLmFsaWFzRGVidWdnZXJzXTtcbiAgcmV0dXJuIG5ldyBQcm94eShjdXJyZW50RGVidWdnZXIsIHtcbiAgICBhcHBseShfdGFyZ2V0LCBfdGhpc0FyZ3VtZW50LCAkYXJndW1lbnRzOiBQYXJhbWV0ZXJzPERlYnVnZ2VyPik6IHZvaWQge1xuICAgICAgYWxsRGVidWdnZXJzLmZpbmQoKGRlYnVnZ2VySW5zdGFuY2UpID0+IGRlYnVnZ2VySW5zdGFuY2UuZW5hYmxlZCk/LiguLi4kYXJndW1lbnRzKTtcbiAgICB9LFxuICAgIGdldCh0YXJnZXQsIHByb3BlcnR5LCByZWNlaXZlcik6IHVua25vd24ge1xuICAgICAgaWYgKHByb3BlcnR5ID09PSAnZW5hYmxlZCcpIHtcbiAgICAgICAgcmV0dXJuIGFsbERlYnVnZ2Vycy5zb21lKChkZWJ1Z2dlckluc3RhbmNlKSA9PiBkZWJ1Z2dlckluc3RhbmNlLmVuYWJsZWQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWx1ZTogdW5rbm93biA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFByaW50cyBhIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHJpbnRpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFdpdGhTdGFja1RyYWNlKHBhcmFtczogUHJpbnRXaXRoU3RhY2tUcmFjZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgJGFyZ3VtZW50cyxcbiAgICBkZWJ1Z2dlckluc3RhbmNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhY2tUcmFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xufVxuXG4vKipcbiAqIFNob3dzIGFuIGluaXRpYWwgZGVidWcgbWVzc2FnZSwgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gZGlzYWJsZSB0aGUgcGx1Z2luJ3MgZGVidWcgbWVzc2FnZXMuXG4gKlxuICogUHJpbnRzIG5vdGhpbmcgd2hpbGUgdGhlIHBsdWdpbidzIGRlYnVnIG1lc3NhZ2VzIGFyZSBkaXNhYmxlZCwgc28gYSBwbHVnaW4gaW4gaXRzIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3cml0ZXMgbm90aGluZyB0byB0aGUgY29uc29sZS5cbiAqXG4gKiBAcGFyYW0gcGx1Z2luSWQgLSBUaGUgcGx1Z2luIElELlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0luaXRpYWxEZWJ1Z01lc3NhZ2UocGx1Z2luSWQ6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKS5lbmFibGVkKHBsdWdpbklkKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGdldERlYnVnZ2VyKHBsdWdpbklkKShgRGVidWcgbWVzc2FnZXMgZm9yIHBsdWdpbiAke3BsdWdpbklkfSBhcmUgZW5hYmxlZC4ke2Zvcm1hdEd1aWRlUmVmZXJlbmNlKCcgaG93IHRvIGRpc2FibGUgdGhlbScpfWApO1xufVxuXG5mdW5jdGlvbiBkaXNhYmxlTmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0KGdldE5hbWVzcGFjZXMoKSk7XG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHRvQXJyYXkobmFtZXNwYWNlcykpIHtcbiAgICBpZiAobmFtZXNwYWNlLnN0YXJ0c1dpdGgoTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5lZ2F0ZWROYW1lc3BhY2UgPSBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggKyBuYW1lc3BhY2U7XG4gICAgc2V0LmRlbGV0ZShuYW1lc3BhY2UpO1xuICAgIHNldC5hZGQobmVnYXRlZE5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhbLi4uc2V0XSk7XG59XG5cbmZ1bmN0aW9uIGVuYWJsZU5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldChnZXROYW1lc3BhY2VzKCkpO1xuICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiB0b0FycmF5KG5hbWVzcGFjZXMpKSB7XG4gICAgaWYgKCFuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb25zdCBuZWdhdGVkTmFtZXNwYWNlID0gTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYICsgbmFtZXNwYWNlO1xuICAgICAgc2V0LmRlbGV0ZShuZWdhdGVkTmFtZXNwYWNlKTtcbiAgICB9XG4gICAgc2V0LmFkZChuYW1lc3BhY2UpO1xuICB9XG4gIHNldE5hbWVzcGFjZXMoWy4uLnNldF0pO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRHdWlkZVJlZmVyZW5jZShzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBMaWJyYXJ5LmRlYnVnR3VpZGVVcmwgPyBgIFNlZSAke0xpYnJhcnkuZGVidWdHdWlkZVVybH0ke3N1ZmZpeH0uYCA6ICcnO1xufVxuXG5mdW5jdGlvbiBnZXROYW1lc3BhY2VzKCk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHRvQXJyYXkoZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmxvYWQoKSA/PyAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKTogdHlwZW9mIGRlYnVnIHtcbiAgcmV0dXJuIGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWcnLCBkZWJ1ZykudmFsdWU7XG59XG5cbmZ1bmN0aW9uIGxvZ1dpdGhDYWxsZXIocGFyYW1zOiBMb2dXaXRoQ2FsbGVyUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICAkYXJndW1lbnRzLFxuICAgIGZyYW1lc1RvU2tpcCxcbiAgICBtZXNzYWdlLFxuICAgIG5hbWVzcGFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIWdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKS5lbmFibGVkKG5hbWVzcGFjZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gVmFsaWQgdXNhZ2UuXG4gICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNhbGxlciBpcyAzIGZyYW1lcyBhYm92ZSB0aGlzIG9uZSwgYmVjYXVzZSB0aGUgY2FsbCBzdGFjayBpcyBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiAwOiBsb2dXaXRoQ2FsbGVyXG4gICAqIDE6IGRlYnVnSW5zdGFuY2UubG9nXG4gICAqIDI6IGRlYnVnXG4gICAqIDM6IGZ1bmN0aW9uTmFtZSAodGhlIGNhbGxlcilcbiAgICpcbiAgICogYGdldFN0YWNrVHJhY2VgIGRyb3BzIGl0cyBvd24gZnJhbWUgYW5kLCBvbiBhbiBlbmdpbmUgdGhhdCB3cml0ZXMgb25lLCB0aGUgYEVycm9yYCBoZWFkZXIgbGluZS5cbiAgICovXG4gIGNvbnN0IENBTExFUl9GUkFNRV9JTkRFWCA9IDM7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gVmFsaWQgdXNhZ2UuXG4gIGNvbnNvbGUuZGVidWcobWVzc2FnZSwgLi4uJGFyZ3VtZW50cywgJ1xcblxcbi0tLVxcbkxvZ2dlciBzdGFjayB0cmFjZTpcXG4nLCBtYWtlU3RhY2tUcmFjZUVycm9yKGdldFN0YWNrVHJhY2UoQ0FMTEVSX0ZSQU1FX0lOREVYICsgZnJhbWVzVG9Ta2lwKSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlU3RhY2tUcmFjZUVycm9yKHN0YWNrVHJhY2U6IHN0cmluZyk6IEN1c3RvbVN0YWNrVHJhY2VFcnJvciB7XG4gIHJldHVybiBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICBjYXVzZTogdW5kZWZpbmVkLFxuICAgIG1lc3NhZ2U6IGBEZWJ1ZyBtb2RlOiBpbnRlbnRpb25hbCBwbGFjZWhvbGRlciBlcnJvci4ke2Zvcm1hdEd1aWRlUmVmZXJlbmNlKCcnKX1gLFxuICAgIHN0YWNrVHJhY2VcbiAgfSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZXMgLSBUaGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKi9cbmZ1bmN0aW9uIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZSh0b0FycmF5KG5hbWVzcGFjZXMpLmpvaW4oTkFNRVNQQUNFX1NFUEFSQVRPUikpO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gdHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcy5zcGxpdChOQU1FU1BBQ0VfU0VQQVJBVE9SKS5maWx0ZXIoQm9vbGVhbikgOiBuYW1lc3BhY2VzLmZsYXRNYXAoKG5hbWVzcGFjZSkgPT4gdG9BcnJheShuYW1lc3BhY2UpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7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
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kZWJ1Zy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlYnVnZ2luZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnZ2VyIH0gZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuXG5pbXBvcnQgdHlwZSB7IERlYnVnQ29udHJvbGxlciB9IGZyb20gJy4vZGVidWctY29udHJvbGxlci50cyc7XG5cbmltcG9ydCB7XG4gIEN1c3RvbVN0YWNrVHJhY2VFcnJvcixcbiAgZ2V0U3RhY2tUcmFjZVxufSBmcm9tICcuL2Vycm9yLnRzJztcbmltcG9ydCB7IExpYnJhcnkgfSBmcm9tICcuL2xpYnJhcnkudHMnO1xuaW1wb3J0IHsgZ2V0VHlwZXNjcmlwdExpYlN0YXRlIH0gZnJvbSAnLi90eXBlc2NyaXB0LWxpYi1zdGF0ZS50cyc7XG5cbi8qKlxuICogVGhlIGFsaWFzaW5nIGRlYnVnZ2VyJ3Mgb3duIGZyYW1lIGJldHdlZW4gdGhlIGNhbGxlciBhbmQgdGhlIGBkZWJ1Z2AgcGFja2FnZTogdGhlIGBhcHBseWAgdHJhcCBvZiBpdHMgcHJveHkuXG4gKi9cbmNvbnN0IEFMSUFTX0ZSQU1FU19UT19TS0lQID0gMTtcbmNvbnN0IE5BTUVTUEFDRV9TRVBBUkFUT1IgPSAnLCc7XG5jb25zdCBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggPSAnLSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHByaW50V2l0aFN0YWNrVHJhY2V9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaW50V2l0aFN0YWNrVHJhY2VQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGFyZ3VtZW50cyB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5ICRhcmd1bWVudHM6IHVua25vd25bXTtcblxuICAvKipcbiAgICogVGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVidWdnZXJJbnN0YW5jZTogRGVidWdnZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgdHJhY2UgdG8gcHJpbnQuXG4gICAqL1xuICByZWFkb25seSBzdGFja1RyYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvZ1dpdGhDYWxsZXJ9LlxuICovXG5pbnRlcmZhY2UgTG9nV2l0aENhbGxlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYXJndW1lbnRzIHRvIHByaW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGFyZ3VtZW50czogdW5rbm93bltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGZyYW1lcyB0byBza2lwIGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IGZyYW1lc1RvU2tpcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVzc2FnZSB0byBwcmludC5cbiAgICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzcGFjZSBmb3IgdGhlIGRlYnVnZ2VyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5hYmxlcyB0aGUgZGVidWdnZXJzIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmFibGVMaWJyYXJ5RGVidWdnZXJzKCk6IHZvaWQge1xuICBlbmFibGVOYW1lc3BhY2VzKFtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlLCBgJHtMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlfToqYF0pO1xufVxuXG4vKipcbiAqIEZvcm1hdHMgdGhlIHNlbnRlbmNlIHRoYXQgcG9pbnRzIGF0IHRoZSBkZWJ1ZyBndWlkZSB0aGUgaG9zdCBzdXBwbGllZCAoc2VlIGBMaWJyYXJ5LmRlYnVnR3VpZGVVcmxgKS5cbiAqXG4gKiBAcGFyYW0gc3VmZml4IC0gVGhlIHRleHQgYXBwZW5kZWQgdG8gdGhlIGd1aWRlIFVSTCwgaW5zaWRlIHRoZSBzZW50ZW5jZSAoZS5nLiBgJyBob3cgdG8gZGlzYWJsZSB0aGVtJ2ApLlxuICogQHJldHVybnMgVGhlIHNlbnRlbmNlLCB3aXRoIGEgbGVhZGluZyBzcGFjZSwgb3IgYW4gZW1wdHkgc3RyaW5nIHdoZW4gdGhlIGhvc3Qgc3VwcGxpZWQgbm8gZ3VpZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREZWJ1Z0d1aWRlUmVmZXJlbmNlKHN1ZmZpeCA9ICcnKTogc3RyaW5nIHtcbiAgcmV0dXJuIExpYnJhcnkuZGVidWdHdWlkZVVybCA/IGAgU2VlICR7TGlicmFyeS5kZWJ1Z0d1aWRlVXJsfSR7c3VmZml4fS5gIDogJyc7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGRlYnVnIGNvbnRyb2xsZXIuXG4gKlxuICogQHJldHVybnMgQSBkZWJ1ZyBjb250cm9sbGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVidWdDb250cm9sbGVyKCk6IERlYnVnQ29udHJvbGxlciB7XG4gIHJldHVybiB7XG4gICAgZGlzYWJsZTogZGlzYWJsZU5hbWVzcGFjZXMsXG4gICAgZW5hYmxlOiBlbmFibGVOYW1lc3BhY2VzLFxuICAgIGdldDogZ2V0TmFtZXNwYWNlcyxcbiAgICBzZXQ6IHNldE5hbWVzcGFjZXNcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVidWdnZXIgaW5zdGFuY2Ugd2l0aCBhIGxvZyBmdW5jdGlvbiB0aGF0IGluY2x1ZGVzIHRoZSBjYWxsZXIncyBmaWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyLlxuICpcbiAqIEBwYXJhbSBuYW1lc3BhY2UgLSBUaGUgbmFtZXNwYWNlIGZvciB0aGUgZGVidWdnZXIgaW5zdGFuY2UuXG4gKiBAcGFyYW0gZnJhbWVzVG9Ta2lwIC0gVGhlIG51bWJlciBvZiBmcmFtZXMgdG8gc2tpcCBpbiB0aGUgc3RhY2sgdHJhY2UuXG4gKiBAcmV0dXJucyBBIGRlYnVnZ2VyIGluc3RhbmNlIHdpdGggYSBsb2cgZnVuY3Rpb24gdGhhdCBpbmNsdWRlcyB0aGUgY2FsbGVyJ3MgZmlsZSBuYW1lIGFuZCBsaW5lIG51bWJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlYnVnZ2VyKG5hbWVzcGFjZTogc3RyaW5nLCBmcmFtZXNUb1NraXAgPSAwKTogRGVidWdnZXIge1xuICBjb25zdCBrZXkgPSBgJHtuYW1lc3BhY2V9OiR7U3RyaW5nKGZyYW1lc1RvU2tpcCl9YDtcbiAgY29uc3QgZGVidWdnZXJzTWFwID0gZ2V0VHlwZXNjcmlwdExpYlN0YXRlKCdkZWJ1Z2dlcnMnLCBuZXcgTWFwPHN0cmluZywgRGVidWdnZXI+KCkpLnZhbHVlO1xuICBsZXQgZGVidWdnZXJFeCA9IGRlYnVnZ2Vyc01hcC5nZXQoa2V5KTtcbiAgaWYgKCFkZWJ1Z2dlckV4KSB7XG4gICAgZGVidWdnZXJFeCA9IGdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKShuYW1lc3BhY2UpO1xuICAgIGRlYnVnZ2VyRXgubG9nID0gKG1lc3NhZ2U6IHN0cmluZywgLi4uJGFyZ3VtZW50czogdW5rbm93bltdKTogdm9pZCA9PiB7XG4gICAgICBsb2dXaXRoQ2FsbGVyKHtcbiAgICAgICAgJGFyZ3VtZW50cyxcbiAgICAgICAgZnJhbWVzVG9Ta2lwLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBuYW1lc3BhY2VcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBkZWJ1Z2dlcnNNYXAuc2V0KGtleSwgZGVidWdnZXJFeCk7XG4gIH1cblxuICByZXR1cm4gZGVidWdnZXJFeDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZGVidWdnZXIgaW5zdGFuY2UgZm9yIHRoZSBsaWJyYXJ5ICh1bmRlciBpdHMgZGVidWcgbmFtZXNwYWNlLCBzZWUgYExpYnJhcnkuZGVidWdOYW1lc3BhY2VgKS5cbiAqXG4gKiBXaGVuIHRoZSBob3N0IHN1cHBsaWVkIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlQWxpYXNlc2AsIGEgZmlsdGVyIHdyaXR0ZW4gZm9yIGFuIGFsaWFzIHN0aWxsIHNob3dzIHRoZSBtZXNzYWdlcy5cbiAqIEVhY2ggbWVzc2FnZSBwcmludHMgT05DRTogdW5kZXIgdGhlIGN1cnJlbnQgbmFtZXNwYWNlIHdoZW4gYSBmaWx0ZXIgZW5hYmxlcyBpdCwgb3RoZXJ3aXNlIHVuZGVyIHRoZSBmaXJzdCBhbGlhcyBhXG4gKiBmaWx0ZXIgZW5hYmxlcy4gUHJpbnRpbmcgdW5kZXIgZXZlcnkgZW5hYmxlZCBvbmUgd291bGQgZG91YmxlIGVhY2ggbWVzc2FnZSB1bmRlciB0aGUgbW9zdCBjb21tb24gZmlsdGVyIG9mIGFsbCxcbiAqIGA8cHJlZml4PipgLCB3aGljaCBlbmFibGVzIHRoZW0gYWxsLlxuICpcbiAqIEBwYXJhbSBuYW1lc3BhY2UgLSBUaGUgbmFtZXNwYWNlIGZvciB0aGUgZGVidWdnZXIgaW5zdGFuY2UuXG4gKiBAcmV0dXJucyBBIGRlYnVnZ2VyIGluc3RhbmNlIGZvciB0aGUgbGlicmFyeSAodW5kZXIgaXRzIGRlYnVnIG5hbWVzcGFjZSwgc2VlIGBMaWJyYXJ5LmRlYnVnTmFtZXNwYWNlYCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaWJEZWJ1Z2dlcihuYW1lc3BhY2U6IHN0cmluZyk6IERlYnVnZ2VyIHtcbiAgY29uc3QgYWxpYXNlcyA9IExpYnJhcnkuZGVidWdOYW1lc3BhY2VBbGlhc2VzO1xuICBpZiAoYWxpYXNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZ2V0RGVidWdnZXIoYCR7TGlicmFyeS5kZWJ1Z1ByZWZpeE5hbWVzcGFjZX0ke0xpYnJhcnkuZGVidWdOYW1lc3BhY2V9OiR7bmFtZXNwYWNlfWApO1xuICB9XG5cbiAgLy8gRXZlcnkgZGVidWdnZXIgY29tZXMgZnJvbSB0aGUgc2hhcmVkIGNhY2hlIGBnZXREZWJ1Z2dlcmAga2VlcHMsIHNvIG9ubHkgdGhlIGNoZWFwIHByb3h5IGlzIG5ldyBvbiBlYWNoIGNhbGwsIGFuZCBhXG4gIC8vIHNweSBpbnN0YWxsZWQgb24gb25lIGNhbGwncyBgbG9nYCBpcyB0aGUgb25lIHRoZSBuZXh0IGNhbGwgcmVhY2hlcy5cbiAgY29uc3QgY3VycmVudERlYnVnZ2VyID0gZ2V0RGVidWdnZXIoYCR7TGlicmFyeS5kZWJ1Z1ByZWZpeE5hbWVzcGFjZX0ke0xpYnJhcnkuZGVidWdOYW1lc3BhY2V9OiR7bmFtZXNwYWNlfWAsIEFMSUFTX0ZSQU1FU19UT19TS0lQKTtcbiAgY29uc3QgYWxpYXNEZWJ1Z2dlcnMgPSBhbGlhc2VzLm1hcCgoYWxpYXMpID0+IGdldERlYnVnZ2VyKGAke0xpYnJhcnkuZGVidWdQcmVmaXhOYW1lc3BhY2V9JHthbGlhc306JHtuYW1lc3BhY2V9YCwgQUxJQVNfRlJBTUVTX1RPX1NLSVApKTtcbiAgY29uc3QgYWxsRGVidWdnZXJzID0gW2N1cnJlbnREZWJ1Z2dlciwgLi4uYWxpYXNEZWJ1Z2dlcnNdO1xuICByZXR1cm4gbmV3IFByb3h5KGN1cnJlbnREZWJ1Z2dlciwge1xuICAgIGFwcGx5KF90YXJnZXQsIF90aGlzQXJndW1lbnQsICRhcmd1bWVudHM6IFBhcmFtZXRlcnM8RGVidWdnZXI+KTogdm9pZCB7XG4gICAgICBhbGxEZWJ1Z2dlcnMuZmluZCgoZGVidWdnZXJJbnN0YW5jZSkgPT4gZGVidWdnZXJJbnN0YW5jZS5lbmFibGVkKT8uKC4uLiRhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgZ2V0KHRhcmdldCwgcHJvcGVydHksIHJlY2VpdmVyKTogdW5rbm93biB7XG4gICAgICBpZiAocHJvcGVydHkgPT09ICdlbmFibGVkJykge1xuICAgICAgICByZXR1cm4gYWxsRGVidWdnZXJzLnNvbWUoKGRlYnVnZ2VySW5zdGFuY2UpID0+IGRlYnVnZ2VySW5zdGFuY2UuZW5hYmxlZCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlOiB1bmtub3duID0gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wZXJ0eSwgcmVjZWl2ZXIpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgZGVidWcgZmlsdGVyIGVuYWJsZXMgYSBuYW1lc3BhY2UuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZSAtIFRoZSBuYW1lc3BhY2UgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBuYW1lc3BhY2UgaXMgZW5hYmxlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGVidWdOYW1lc3BhY2VFbmFibGVkKG5hbWVzcGFjZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRTaGFyZWREZWJ1Z0xpYkluc3RhbmNlKCkuZW5hYmxlZChuYW1lc3BhY2UpO1xufVxuXG4vKipcbiAqIFByaW50cyBhIG1lc3NhZ2Ugd2l0aCBhIHN0YWNrIHRyYWNlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgcHJpbnRpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmludFdpdGhTdGFja1RyYWNlKHBhcmFtczogUHJpbnRXaXRoU3RhY2tUcmFjZVBhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7XG4gICAgJGFyZ3VtZW50cyxcbiAgICBkZWJ1Z2dlckluc3RhbmNlLFxuICAgIG1lc3NhZ2UsXG4gICAgc3RhY2tUcmFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgZGVidWdnZXJJbnN0YW5jZShtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkZWJ1Z2dlckluc3RhbmNlKG1lc3NhZ2UsIC4uLiRhcmd1bWVudHMsICdcXG5cXG4tLS1cXG5Db250ZXh0IHN0YWNrIHRyYWNlOlxcbicsIG1ha2VTdGFja1RyYWNlRXJyb3Ioc3RhY2tUcmFjZSkpO1xufVxuXG5mdW5jdGlvbiBkaXNhYmxlTmFtZXNwYWNlcyhuYW1lc3BhY2VzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xuICBjb25zdCBzZXQgPSBuZXcgU2V0KGdldE5hbWVzcGFjZXMoKSk7XG4gIGZvciAoY29uc3QgbmFtZXNwYWNlIG9mIHRvQXJyYXkobmFtZXNwYWNlcykpIHtcbiAgICBpZiAobmFtZXNwYWNlLnN0YXJ0c1dpdGgoTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG5lZ2F0ZWROYW1lc3BhY2UgPSBORUdBVEVEX05BTUVTUEFDRV9QUkVGSVggKyBuYW1lc3BhY2U7XG4gICAgc2V0LmRlbGV0ZShuYW1lc3BhY2UpO1xuICAgIHNldC5hZGQobmVnYXRlZE5hbWVzcGFjZSk7XG4gIH1cbiAgc2V0TmFtZXNwYWNlcyhbLi4uc2V0XSk7XG59XG5cbmZ1bmN0aW9uIGVuYWJsZU5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldChnZXROYW1lc3BhY2VzKCkpO1xuICBmb3IgKGNvbnN0IG5hbWVzcGFjZSBvZiB0b0FycmF5KG5hbWVzcGFjZXMpKSB7XG4gICAgaWYgKCFuYW1lc3BhY2Uuc3RhcnRzV2l0aChORUdBVEVEX05BTUVTUEFDRV9QUkVGSVgpKSB7XG4gICAgICBjb25zdCBuZWdhdGVkTmFtZXNwYWNlID0gTkVHQVRFRF9OQU1FU1BBQ0VfUFJFRklYICsgbmFtZXNwYWNlO1xuICAgICAgc2V0LmRlbGV0ZShuZWdhdGVkTmFtZXNwYWNlKTtcbiAgICB9XG4gICAgc2V0LmFkZChuYW1lc3BhY2UpO1xuICB9XG4gIHNldE5hbWVzcGFjZXMoWy4uLnNldF0pO1xufVxuXG5mdW5jdGlvbiBnZXROYW1lc3BhY2VzKCk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHRvQXJyYXkoZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmxvYWQoKSA/PyAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldFNoYXJlZERlYnVnTGliSW5zdGFuY2UoKTogdHlwZW9mIGRlYnVnIHtcbiAgcmV0dXJuIGdldFR5cGVzY3JpcHRMaWJTdGF0ZSgnZGVidWcnLCBkZWJ1ZykudmFsdWU7XG59XG5cbmZ1bmN0aW9uIGxvZ1dpdGhDYWxsZXIocGFyYW1zOiBMb2dXaXRoQ2FsbGVyUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHtcbiAgICAkYXJndW1lbnRzLFxuICAgIGZyYW1lc1RvU2tpcCxcbiAgICBtZXNzYWdlLFxuICAgIG5hbWVzcGFjZVxuICB9ID0gcGFyYW1zO1xuICBpZiAoIWlzRGVidWdOYW1lc3BhY2VFbmFibGVkKG5hbWVzcGFjZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIUxpYnJhcnkuc2hvdWxkUHJpbnRTdGFja1RyYWNlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gVmFsaWQgdXNhZ2UuXG4gICAgY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi4kYXJndW1lbnRzKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNhbGxlciBpcyAzIGZyYW1lcyBhYm92ZSB0aGlzIG9uZSwgYmVjYXVzZSB0aGUgY2FsbCBzdGFjayBpcyBhcyBmb2xsb3dzOlxuICAgKlxuICAgKiAwOiBsb2dXaXRoQ2FsbGVyXG4gICAqIDE6IGRlYnVnSW5zdGFuY2UubG9nXG4gICAqIDI6IGRlYnVnXG4gICAqIDM6IGZ1bmN0aW9uTmFtZSAodGhlIGNhbGxlcilcbiAgICpcbiAgICogYGdldFN0YWNrVHJhY2VgIGRyb3BzIGl0cyBvd24gZnJhbWUgYW5kLCBvbiBhbiBlbmdpbmUgdGhhdCB3cml0ZXMgb25lLCB0aGUgYEVycm9yYCBoZWFkZXIgbGluZS5cbiAgICovXG4gIGNvbnN0IENBTExFUl9GUkFNRV9JTkRFWCA9IDM7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gVmFsaWQgdXNhZ2UuXG4gIGNvbnNvbGUuZGVidWcobWVzc2FnZSwgLi4uJGFyZ3VtZW50cywgJ1xcblxcbi0tLVxcbkxvZ2dlciBzdGFjayB0cmFjZTpcXG4nLCBtYWtlU3RhY2tUcmFjZUVycm9yKGdldFN0YWNrVHJhY2UoQ0FMTEVSX0ZSQU1FX0lOREVYICsgZnJhbWVzVG9Ta2lwKSkpO1xufVxuXG5mdW5jdGlvbiBtYWtlU3RhY2tUcmFjZUVycm9yKHN0YWNrVHJhY2U6IHN0cmluZyk6IEN1c3RvbVN0YWNrVHJhY2VFcnJvciB7XG4gIHJldHVybiBuZXcgQ3VzdG9tU3RhY2tUcmFjZUVycm9yKHtcbiAgICBjYXVzZTogdW5kZWZpbmVkLFxuICAgIG1lc3NhZ2U6IGBEZWJ1ZyBtb2RlOiBpbnRlbnRpb25hbCBwbGFjZWhvbGRlciBlcnJvci4ke2Zvcm1hdERlYnVnR3VpZGVSZWZlcmVuY2UoKX1gLFxuICAgIHN0YWNrVHJhY2VcbiAgfSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKlxuICogQHBhcmFtIG5hbWVzcGFjZXMgLSBUaGUgbmFtZXNwYWNlcyB0byBlbmFibGUuXG4gKi9cbmZ1bmN0aW9uIHNldE5hbWVzcGFjZXMobmFtZXNwYWNlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcbiAgZ2V0U2hhcmVkRGVidWdMaWJJbnN0YW5jZSgpLmVuYWJsZSh0b0FycmF5KG5hbWVzcGFjZXMpLmpvaW4oTkFNRVNQQUNFX1NFUEFSQVRPUikpO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KG5hbWVzcGFjZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICByZXR1cm4gdHlwZW9mIG5hbWVzcGFjZXMgPT09ICdzdHJpbmcnID8gbmFtZXNwYWNlcy5zcGxpdChOQU1FU1BBQ0VfU0VQQVJBVE9SKS5maWx0ZXIoQm9vbGVhbikgOiBuYW1lc3BhY2VzLmZsYXRN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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mnaoumov/typescript-lib",
3
- "version": "1.6.2",
3
+ "version": "2.0.0",
4
4
  "description": "Generic TypeScript utilities: async helpers, errors, disposables, strings, paths, debug logging and more, usable in any TypeScript project.",
5
5
  "keywords": [
6
6
  "typescript",