obsidian-dev-utils 12.2.1 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 13.0.0
4
+
5
+ - Refactor toJson
6
+
3
7
  ## 12.2.1
4
8
 
5
9
  - Update tsdoc
@@ -27,6 +27,7 @@ var __copyProps = (to, from, except, desc) => {
27
27
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
28
  var Object_exports = {};
29
29
  __export(Object_exports, {
30
+ FunctionHandlingMode: () => FunctionHandlingMode,
30
31
  assignWithNonEnumerableProperties: () => assignWithNonEnumerableProperties,
31
32
  cloneWithNonEnumerableProperties: () => cloneWithNonEnumerableProperties,
32
33
  deepEqual: () => deepEqual,
@@ -47,6 +48,12 @@ var __process = globalThis["process"] ?? {
47
48
  "env": {},
48
49
  "platform": "android"
49
50
  };
51
+ var FunctionHandlingMode = /* @__PURE__ */ ((FunctionHandlingMode2) => {
52
+ FunctionHandlingMode2["Exclude"] = "exclude";
53
+ FunctionHandlingMode2["Full"] = "full";
54
+ FunctionHandlingMode2["NameOnly"] = "nameOnly";
55
+ return FunctionHandlingMode2;
56
+ })(FunctionHandlingMode || {});
50
57
  function assignWithNonEnumerableProperties(target, ...sources) {
51
58
  return _assignWithNonEnumerableProperties(target, ...sources);
52
59
  }
@@ -128,24 +135,61 @@ function setNestedPropertyValue(obj, path, value) {
128
135
  node[lastKey] = value;
129
136
  }
130
137
  function toJson(value, options = {}) {
131
- const {
132
- shouldHandleFunctions = false,
133
- space = 2
134
- } = options;
135
- if (!shouldHandleFunctions) {
136
- return JSON.stringify(value, null, space);
137
- }
138
+ const DEFAULT_OPTIONS = {
139
+ functionHandlingMode: "exclude" /* Exclude */,
140
+ maxDepth: -1,
141
+ shouldHandleCircularReferences: false,
142
+ shouldHandleUndefined: false,
143
+ space: 2
144
+ };
145
+ const fullOptions = { ...DEFAULT_OPTIONS, ...options };
146
+ const maxDepth = fullOptions.maxDepth === -1 ? Infinity : fullOptions.maxDepth;
138
147
  const functionTexts = [];
139
- const replacer = (_, value2) => {
148
+ const objectDepthMap = /* @__PURE__ */ new WeakMap();
149
+ const usedObjects = /* @__PURE__ */ new WeakSet();
150
+ const replacer = (_key, value2) => {
151
+ if (value2 === void 0) {
152
+ if (fullOptions.shouldHandleUndefined) {
153
+ return "__UNDEFINED__";
154
+ }
155
+ return void 0;
156
+ }
140
157
  if (typeof value2 === "function") {
158
+ if (fullOptions.functionHandlingMode === "exclude" /* Exclude */) {
159
+ return void 0;
160
+ }
141
161
  const index = functionTexts.length;
142
- functionTexts.push(value2.toString());
143
- return `__FUNCTION_${index.toString()}`;
162
+ const functionText = fullOptions.functionHandlingMode === "full" /* Full */ ? value2.toString() : `function ${value2.name || "anonymous"}()`;
163
+ functionTexts.push(functionText);
164
+ return `__FUNCTION__${index.toString()}`;
165
+ }
166
+ if (typeof value2 === "object" && value2 !== null) {
167
+ if (fullOptions.shouldHandleCircularReferences) {
168
+ if (usedObjects.has(value2)) {
169
+ return "[Circular Reference]";
170
+ }
171
+ usedObjects.add(value2);
172
+ }
173
+ let depth = objectDepthMap.get(value2);
174
+ if (depth === void 0) {
175
+ depth = 0;
176
+ objectDepthMap.set(value2, 0);
177
+ }
178
+ if (depth > maxDepth) {
179
+ return "[...]";
180
+ }
181
+ for (const property of Object.values(value2)) {
182
+ if (!property || typeof property !== "object") {
183
+ continue;
184
+ }
185
+ objectDepthMap.set(property, depth + 1);
186
+ }
144
187
  }
145
188
  return value2;
146
189
  };
147
- let json = JSON.stringify(value, replacer, space);
148
- json = json.replaceAll(/"__FUNCTION_(\d+)"/g, (_, indexStr) => functionTexts[parseInt(indexStr)] ?? (0, import_Error.throwExpression)(new Error(`Function with index ${indexStr} not found`)));
190
+ let json = JSON.stringify(value, replacer, fullOptions.space);
191
+ json = json.replaceAll(/"__FUNCTION__(\d+)"/g, (_, indexStr) => functionTexts[parseInt(indexStr)] ?? (0, import_Error.throwExpression)(new Error(`Function with index ${indexStr} not found`)));
192
+ json = json.replaceAll('"__UNDEFINED__"', "undefined");
149
193
  return json;
150
194
  }
151
195
  function _assignWithNonEnumerableProperties(target, ...sources) {
@@ -161,6 +205,7 @@ function _assignWithNonEnumerableProperties(target, ...sources) {
161
205
  }
162
206
  // Annotate the CommonJS export names for ESM import in node:
163
207
  0 && (module.exports = {
208
+ FunctionHandlingMode,
164
209
  assignWithNonEnumerableProperties,
165
210
  cloneWithNonEnumerableProperties,
166
211
  deepEqual,
@@ -173,4 +218,4 @@ function _assignWithNonEnumerableProperties(target, ...sources) {
173
218
  setNestedPropertyValue,
174
219
  toJson
175
220
  });
176
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL09iamVjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiYnJvd3NlclwiOiB0cnVlLFxuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gT2JqZWN0XG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgT2JqZWN0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFVuZGVmaW5lZE9uUGFydGlhbERlZXAgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuL0Vycm9yLnRzJztcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb252ZXJ0aW5nIGFuIG9iamVjdCB0byBKU09OLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRvSnNvbk9wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCBmdW5jdGlvbnMgd2l0aGluIHRoZSB2YWx1ZSB3aWxsIGJlIGhhbmRsZWQgYW5kIGluY2x1ZGVkIGluIHRoZSBKU09OIHN0cmluZy4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZUZ1bmN0aW9ucz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBKU09OIG91dHB1dC4gVGhpcyBjYW4gYmUgYSBudW1iZXIgb2Ygc3BhY2VzIG9yIGEgc3RyaW5nLiBEZWZhdWx0cyB0byBgMmAuXG4gICAqL1xuICBzcGFjZT86IG51bWJlciB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVPih0YXJnZXQ6IFQsIHNvdXJjZTogVSk6IFQgJiBVO1xuXG4vKipcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UxIC0gVGhlIGZpcnN0IHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UyIC0gVGhlIHNlY29uZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFUsIFY+KHRhcmdldDogVCwgc291cmNlMTogVSwgc291cmNlMjogVik6IFQgJiBVICYgVjtcblxuLyoqXG4gKiBBc3NpZ25zIHByb3BlcnRpZXMgZnJvbSBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBUaGUgdGFyZ2V0IG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSBzb3VyY2UxIC0gVGhlIGZpcnN0IHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBzb3VyY2UyIC0gVGhlIHNlY29uZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMyAtIFRoZSB0aGlyZCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IG9iamVjdCB3aXRoIHRoZSBhc3NpZ25lZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3QsIFUsIFYsIFc+KHRhcmdldDogVCwgc291cmNlMTogVSwgc291cmNlMjogViwgc291cmNlMzogVyk6IFQgJiBVICYgViAmIFc7XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlcyAtIFRoZSBzb3VyY2Ugb2JqZWN0cyB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQ6IG9iamVjdCwgLi4uc291cmNlczogb2JqZWN0W10pOiBvYmplY3Qge1xuICByZXR1cm4gX2Fzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQsIC4uLnNvdXJjZXMpO1xufVxuXG4vKipcbiAqIENsb25lcyBhbiBvYmplY3QsIGluY2x1ZGluZyBub24tZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMgQSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgcHJvcGVydGllcyBhcyB0aGUgb3JpZ2luYWwgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogVCk6IFQge1xuICByZXR1cm4gT2JqZWN0LmNyZWF0ZShnZXRQcm90b3R5cGVPZihvYmopLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvYmopKSBhcyBUO1xufVxuXG4vKipcbiAqIENvbXBhcmVzIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGRlZXBseSBlcXVhbC5cbiAqXG4gKiBAcGFyYW0gYSAtIFRoZSBmaXJzdCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIGIgLSBUaGUgc2Vjb25kIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZGVlcGx5IGVxdWFsLCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBFcXVhbChhOiB1bmtub3duLCBiOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGEgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IGIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGFSZWNvcmQgPSBhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCBiUmVjb3JkID0gYiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzQSkge1xuICAgIGlmICgha2V5c0IuaW5jbHVkZXMoa2V5KSB8fCAhZGVlcEVxdWFsKGFSZWNvcmRba2V5XSwgYlJlY29yZFtrZXldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIERlbGV0ZXMgbXVsdGlwbGUgcHJvcGVydGllcyBmcm9tIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBkZWxldGUgdGhlIHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVzIC0gVGhlIG5hbWVzIG9mIHRoZSBwcm9wZXJ0aWVzIHRvIGRlbGV0ZS5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhbnkgb2YgdGhlIHByb3BlcnRpZXMgd2VyZSBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnRpZXMob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcHJvcGVydHlOYW1lczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgbGV0IGFucyA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3QgcHJvcGVydHlOYW1lIG9mIHByb3BlcnR5TmFtZXMpIHtcbiAgICBhbnMgPSBkZWxldGVQcm9wZXJ0eShvYmosIHByb3BlcnR5TmFtZSkgfHwgYW5zO1xuICB9XG5cbiAgcmV0dXJuIGFucztcbn1cblxuLyoqXG4gKiBEZWxldGVzIGEgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0eSBmcm9tLlxuICogQHBhcmFtIHByb3BlcnR5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IHdhcyBwcmVzZW50LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHByb3BlcnR5TmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcGVydHlOYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWR5bmFtaWMtZGVsZXRlXG4gIGRlbGV0ZSBvYmpbcHJvcGVydHlOYW1lXTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgb2YgYSBuZXN0ZWQgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZ2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgZnJvbS5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBvZiB0aGUgbmVzdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwYXRoOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgbGV0IG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc3BlY2lmaWVkIG9iamVjdC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LlxuICogQHBhcmFtIGluc3RhbmNlIC0gVGhlIG9iamVjdCBpbnN0YW5jZSB0byByZXRyaWV2ZSB0aGUgcHJvdG90eXBlIG9mLlxuICogQHJldHVybnMgVGhlIHByb3RvdHlwZSBvZiB0aGUgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2Y8VD4oaW5zdGFuY2U6IFQpOiBUIHtcbiAgaWYgKGluc3RhbmNlID09PSB1bmRlZmluZWQgfHwgaW5zdGFuY2UgPT09IG51bGwpIHtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnN0YW5jZSkgYXMgVDtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgYSBwcm9wZXJ0eSBvZiBhIGdpdmVuIHR5cGUgYFRgLlxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0eXBlIG9mIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgcHJvcGVydHkuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBhcyBhIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5hbWVvZjxUPihuYW1lOiBFeHRyYWN0PGtleW9mIFQsIHN0cmluZz4pOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gYWxsb3cgYHVuZGVmaW5lZGAgYXNzaWdubWVudCBpbiBzdHJpY3QgbW9kZS5cbiAqXG4gKiBUaGlzIHV0aWxpdHkgcHJvdmlkZXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYCBUeXBlU2NyaXB0IGZsYWcsXG4gKiB3aGljaCBwcm9oaWJpdHMgZGlyZWN0bHkgYXNzaWduaW5nIGB1bmRlZmluZWRgIHRvIG9wdGlvbmFsIHByb3BlcnRpZXMgd2hlbiB0aGUgdHlwZVxuICogZXhwbGljaXRseSBvbWl0cyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gV2l0aCBgZXhhY3RPcHRpb25hbFByb3BlcnR5VHlwZXM6IHRydWVgXG4gKiBjb25zdCB4OiB7IHByb3A/OiBzdHJpbmcgfSA9IHsgcHJvcDogdW5kZWZpbmVkIH07IC8vIENvbXBpbGVyIGVycm9yXG4gKlxuICogLy8gVXNpbmcgdGhpcyB1dGlsaXR5OlxuICogY29uc3QgeTogeyBwcm9wPzogc3RyaW5nIH0gPSBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8eyBwcm9wPzogc3RyaW5nIH0+KHsgcHJvcDogdW5kZWZpbmVkIH0pOyAvLyBXb3Jrc1xuICogYGBgXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHRhcmdldCB0eXBlIHdpdGggb3B0aW9uYWwgcHJvcGVydGllcyB0byBub3JtYWxpemUuXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBub3JtYWxpemUsIGFsbG93aW5nIGV4cGxpY2l0IGB1bmRlZmluZWRgIGZvciBvcHRpb25hbCBwcm9wZXJ0aWVzLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgb2JqZWN0LCBjb21wYXRpYmxlIHdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wdGlvbmFsUHJvcGVydGllczxUPihvYmo6IFVuZGVmaW5lZE9uUGFydGlhbERlZXA8VD4pOiBUIHtcbiAgcmV0dXJuIG9iaiBhcyBUO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGluIGFuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBzZXQgdGhlIG5lc3RlZCBwcm9wZXJ0eSB2YWx1ZSBpbi5cbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXROZXN0ZWRQcm9wZXJ0eVZhbHVlKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYFByb3BlcnR5IHBhdGggJHtwYXRofSBub3QgZm91bmRgKTtcbiAgbGV0IG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkID0gb2JqO1xuICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzLnNsaWNlKDAsIC0xKSkge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBub2RlID0gbm9kZVtrZXldIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbGFzdEtleSA9IGtleXMuYXQoLTEpO1xuICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkIHx8IGxhc3RLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IGVycm9yO1xuICB9XG5cbiAgbm9kZVtsYXN0S2V5XSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gdmFsdWUgdG8gYSBKU09OIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYmUgY29udmVydGVkIHRvIEpTT04uIFRoaXMgY2FuIGJlIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciBjdXN0b21pemluZyB0aGUgSlNPTiBjb252ZXJzaW9uIHByb2Nlc3MuXG4gKiBAcmV0dXJucyBUaGUgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlucHV0IHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uKHZhbHVlOiB1bmtub3duLCBvcHRpb25zOiBUb0pzb25PcHRpb25zID0ge30pOiBzdHJpbmcge1xuICBjb25zdCB7XG4gICAgc2hvdWxkSGFuZGxlRnVuY3Rpb25zID0gZmFsc2UsXG4gICAgc3BhY2UgPSAyXG4gIH0gPSBvcHRpb25zO1xuICBpZiAoIXNob3VsZEhhbmRsZUZ1bmN0aW9ucykge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgc3BhY2UpO1xuICB9XG5cbiAgY29uc3QgZnVuY3Rpb25UZXh0czogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCByZXBsYWNlciA9IChfOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgaW5kZXggPSBmdW5jdGlvblRleHRzLmxlbmd0aDtcbiAgICAgIGZ1bmN0aW9uVGV4dHMucHVzaCh2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgIHJldHVybiBgX19GVU5DVElPTl8ke2luZGV4LnRvU3RyaW5nKCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG5cbiAgbGV0IGpzb24gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlKTtcbiAganNvbiA9IGpzb24ucmVwbGFjZUFsbCgvXCJfX0ZVTkNUSU9OXyhcXGQrKVwiL2csIChfLCBpbmRleFN0cjogc3RyaW5nKSA9PiBmdW5jdGlvblRleHRzW3BhcnNlSW50KGluZGV4U3RyKV0gPz8gdGhyb3dFeHByZXNzaW9uKG5ldyBFcnJvcihgRnVuY3Rpb24gd2l0aCBpbmRleCAke2luZGV4U3RyfSBub3QgZm91bmRgKSkpO1xuICByZXR1cm4ganNvbjtcbn1cblxuZnVuY3Rpb24gX2Fzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllcyh0YXJnZXQ6IG9iamVjdCwgLi4uc291cmNlczogb2JqZWN0W10pOiBvYmplY3Qge1xuICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZVByb3RvdHlwZXMgPSAoc291cmNlcy5tYXAoKHNvdXJjZSkgPT4gZ2V0UHJvdG90eXBlT2Yoc291cmNlKSkgYXMgKG51bGwgfCBvYmplY3QpW10pLmZpbHRlcjxudWxsIHwgb2JqZWN0PigocHJvdG8pID0+ICEhcHJvdG8pIGFzIG9iamVjdFtdO1xuXG4gIGlmIChzb3VyY2VQcm90b3R5cGVzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCB0YXJnZXRQcm90b3R5cGUgPSBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHt9LCBnZXRQcm90b3R5cGVPZih0YXJnZXQpLCAuLi5zb3VyY2VQcm90b3R5cGVzKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGFyZ2V0LCB0YXJnZXRQcm90b3R5cGUpO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
221
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL09iamVjdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsidmFyIF9fcHJvY2VzcyA9IGdsb2JhbFRoaXNbJ3Byb2Nlc3MnXSA/PyB7XG4gIFwiYnJvd3NlclwiOiB0cnVlLFxuICBcImN3ZFwiOiAoKT0+XCIvXCIsXG4gIFwiZW52XCI6IHt9LFxuICBcInBsYXRmb3JtXCI6IFwiYW5kcm9pZFwiXG59O1xuLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb24gT2JqZWN0XG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgT2JqZWN0cy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFVuZGVmaW5lZE9uUGFydGlhbERlZXAgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuL0Vycm9yLnRzJztcblxuLyoqXG4gKiBTcGVjaWZpZXMgaG93IGZ1bmN0aW9ucyBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgSlNPTiBvdXRwdXQuXG4gICAqL1xuZXhwb3J0IGVudW0gRnVuY3Rpb25IYW5kbGluZ01vZGUge1xuICAvKipcbiAgICogRXhjbHVkZXMgZnVuY3Rpb25zIGZyb20gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRXhjbHVkZSA9ICdleGNsdWRlJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIHRoZSBmdWxsIGZ1bmN0aW9uIGRlZmluaXRpb24gaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgRnVsbCA9ICdmdWxsJyxcbiAgLyoqXG4gICAqIEluY2x1ZGVzIG9ubHkgdGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIEpTT04gb3V0cHV0LlxuICAgKi9cbiAgTmFtZU9ubHkgPSAnbmFtZU9ubHknXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29udmVydGluZyBhbiBvYmplY3QgdG8gSlNPTi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb0pzb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBob3cgZnVuY3Rpb25zIHNob3VsZCBiZSBoYW5kbGVkIGluIHRoZSBKU09OIG91dHB1dCAoZGVmYXVsdDogYGV4Y2x1ZGVgKS5cbiAgICovXG4gIGZ1bmN0aW9uSGFuZGxpbmdNb2RlOiBGdW5jdGlvbkhhbmRsaW5nTW9kZTtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBkZXB0aCBvZiBuZXN0ZWQgb2JqZWN0cyB0byBpbmNsdWRlIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogVXNlIGAtMWAgZm9yIG5vIGxpbWl0LlxuICAgKiBEZWZhdWx0cyB0byBgLTFgLlxuICAgKi9cbiAgbWF4RGVwdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSBjaXJjdWxhciByZWZlcmVuY2VzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZUNpcmN1bGFyUmVmZXJlbmNlczogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGhhbmRsZSB1bmRlZmluZWQgdmFsdWVzIGluIHRoZSBKU09OIG91dHB1dC5cbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZEhhbmRsZVVuZGVmaW5lZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIEpTT04gb3V0cHV0LiBUaGlzIGNhbiBiZSBhIG51bWJlciBvZiBzcGFjZXMgb3IgYSBzdHJpbmcuIERlZmF1bHRzIHRvIGAyYC5cbiAgICovXG4gIHNwYWNlOiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXM8VCBleHRlbmRzIG9iamVjdCwgVT4odGFyZ2V0OiBULCBzb3VyY2U6IFUpOiBUICYgVTtcblxuLyoqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYpOiBUICYgVSAmIFY7XG5cbi8qKlxuICogQXNzaWducyBwcm9wZXJ0aWVzIGZyb20gb25lIG9yIG1vcmUgc291cmNlIG9iamVjdHMgdG8gYSB0YXJnZXQgb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gVGhlIHRhcmdldCBvYmplY3QgdG8gYXNzaWduIHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0gc291cmNlMSAtIFRoZSBmaXJzdCBzb3VyY2Ugb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gc291cmNlMiAtIFRoZSBzZWNvbmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHNvdXJjZTMgLSBUaGUgdGhpcmQgc291cmNlIG9iamVjdCB0byBhc3NpZ24gcHJvcGVydGllcyBmcm9tLlxuICogQHJldHVybnMgVGhlIHRhcmdldCBvYmplY3Qgd2l0aCB0aGUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbldpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0LCBVLCBWLCBXPih0YXJnZXQ6IFQsIHNvdXJjZTE6IFUsIHNvdXJjZTI6IFYsIHNvdXJjZTM6IFcpOiBUICYgVSAmIFYgJiBXO1xuXG4vKipcbiAqIEFzc2lnbnMgcHJvcGVydGllcyBmcm9tIG9uZSBvciBtb3JlIHNvdXJjZSBvYmplY3RzIHRvIGEgdGFyZ2V0IG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIFRoZSB0YXJnZXQgb2JqZWN0IHRvIGFzc2lnbiBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHNvdXJjZXMgLSBUaGUgc291cmNlIG9iamVjdHMgdG8gYXNzaWduIHByb3BlcnRpZXMgZnJvbS5cbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgb2JqZWN0IHdpdGggdGhlIGFzc2lnbmVkIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0OiBvYmplY3QsIC4uLnNvdXJjZXM6IG9iamVjdFtdKTogb2JqZWN0IHtcbiAgcmV0dXJuIF9hc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXModGFyZ2V0LCAuLi5zb3VyY2VzKTtcbn1cblxuLyoqXG4gKiBDbG9uZXMgYW4gb2JqZWN0LCBpbmNsdWRpbmcgbm9uLWVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIEEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIHByb3BlcnRpZXMgYXMgdGhlIG9yaWdpbmFsIG9iamVjdCwgaW5jbHVkaW5nIG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVdpdGhOb25FbnVtZXJhYmxlUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpOiBUIHtcbiAgcmV0dXJuIE9iamVjdC5jcmVhdGUoZ2V0UHJvdG90eXBlT2Yob2JqKSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSkgYXMgVDtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBkZWVwbHkgZXF1YWwuXG4gKlxuICogQHBhcmFtIGEgLSBUaGUgZmlyc3QgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSBiIC0gVGhlIHNlY29uZCB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGRlZXBseSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwoYTogdW5rbm93biwgYjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgYiAhPT0gJ29iamVjdCcgfHwgYSA9PT0gbnVsbCB8fCBiID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3Qga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgY29uc3Qga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcblxuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBhUmVjb3JkID0gYSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgYlJlY29yZCA9IGIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5c0EpIHtcbiAgICBpZiAoIWtleXNCLmluY2x1ZGVzKGtleSkgfHwgIWRlZXBFcXVhbChhUmVjb3JkW2tleV0sIGJSZWNvcmRba2V5XSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBEZWxldGVzIG11bHRpcGxlIHByb3BlcnRpZXMgZnJvbSBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gZGVsZXRlIHRoZSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lcyAtIFRoZSBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyB0byBkZWxldGUuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYW55IG9mIHRoZSBwcm9wZXJ0aWVzIHdlcmUgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0aWVzKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHByb3BlcnR5TmFtZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gIGxldCBhbnMgPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiBwcm9wZXJ0eU5hbWVzKSB7XG4gICAgYW5zID0gZGVsZXRlUHJvcGVydHkob2JqLCBwcm9wZXJ0eU5hbWUpIHx8IGFucztcbiAgfVxuXG4gIHJldHVybiBhbnM7XG59XG5cbi8qKlxuICogRGVsZXRlcyBhIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGRlbGV0ZSB0aGUgcHJvcGVydHkgZnJvbS5cbiAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gZGVsZXRlLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm9wZXJ0eSB3YXMgcHJlc2VudCwgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVQcm9wZXJ0eShvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3BlcnR5TmFtZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1keW5hbWljLWRlbGV0ZVxuICBkZWxldGUgb2JqW3Byb3BlcnR5TmFtZV07XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIG9mIGEgbmVzdGVkIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBvYmogLSBUaGUgb2JqZWN0IHRvIGdldCB0aGUgbmVzdGVkIHByb3BlcnR5IHZhbHVlIGZyb20uXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgb2YgdGhlIG5lc3RlZCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5lc3RlZFByb3BlcnR5VmFsdWUob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcGF0aDogc3RyaW5nKTogdW5rbm93biB7XG4gIGxldCBub2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCA9IG9iajtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIG5vZGUgPSBub2RlW2tleV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNwZWNpZmllZCBvYmplY3QuXG4gKlxuICogQHR5cGVQYXJhbSBUIC0gVGhlIHR5cGUgb2YgdGhlIG9iamVjdC5cbiAqIEBwYXJhbSBpbnN0YW5jZSAtIFRoZSBvYmplY3QgaW5zdGFuY2UgdG8gcmV0cmlldmUgdGhlIHByb3RvdHlwZSBvZi5cbiAqIEByZXR1cm5zIFRoZSBwcm90b3R5cGUgb2YgdGhlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mPFQ+KGluc3RhbmNlOiBUKTogVCB7XG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkIHx8IGluc3RhbmNlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoaW5zdGFuY2UpIGFzIFQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIGEgcHJvcGVydHkgb2YgYSBnaXZlbiB0eXBlIGBUYC5cbiAqXG4gKiBAdHlwZVBhcmFtIFQgLSBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYXMgYSBzdHJpbmcuXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lb2Y8VD4obmFtZTogRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWU7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBvcHRpb25hbCBwcm9wZXJ0aWVzIHRvIGFsbG93IGB1bmRlZmluZWRgIGFzc2lnbm1lbnQgaW4gc3RyaWN0IG1vZGUuXG4gKlxuICogVGhpcyB1dGlsaXR5IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AgVHlwZVNjcmlwdCBmbGFnLFxuICogd2hpY2ggcHJvaGliaXRzIGRpcmVjdGx5IGFzc2lnbmluZyBgdW5kZWZpbmVkYCB0byBvcHRpb25hbCBwcm9wZXJ0aWVzIHdoZW4gdGhlIHR5cGVcbiAqIGV4cGxpY2l0bHkgb21pdHMgYHVuZGVmaW5lZGAuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFdpdGggYGV4YWN0T3B0aW9uYWxQcm9wZXJ0eVR5cGVzOiB0cnVlYFxuICogY29uc3QgeDogeyBwcm9wPzogc3RyaW5nIH0gPSB7IHByb3A6IHVuZGVmaW5lZCB9OyAvLyBDb21waWxlciBlcnJvclxuICpcbiAqIC8vIFVzaW5nIHRoaXMgdXRpbGl0eTpcbiAqIGNvbnN0IHk6IHsgcHJvcD86IHN0cmluZyB9ID0gbm9ybWFsaXplT3B0aW9uYWxQcm9wZXJ0aWVzPHsgcHJvcD86IHN0cmluZyB9Pih7IHByb3A6IHVuZGVmaW5lZCB9KTsgLy8gV29ya3NcbiAqIGBgYFxuICpcbiAqIEB0eXBlUGFyYW0gVCAtIFRoZSB0YXJnZXQgdHlwZSB3aXRoIG9wdGlvbmFsIHByb3BlcnRpZXMgdG8gbm9ybWFsaXplLlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gbm9ybWFsaXplLCBhbGxvd2luZyBleHBsaWNpdCBgdW5kZWZpbmVkYCBmb3Igb3B0aW9uYWwgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIG9iamVjdCwgY29tcGF0aWJsZSB3aXRoIGBleGFjdE9wdGlvbmFsUHJvcGVydHlUeXBlc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVPcHRpb25hbFByb3BlcnRpZXM8VD4ob2JqOiBVbmRlZmluZWRPblBhcnRpYWxEZWVwPFQ+KTogVCB7XG4gIHJldHVybiBvYmogYXMgVDtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIG5lc3RlZCBwcm9wZXJ0eSBpbiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gc2V0IHRoZSBuZXN0ZWQgcHJvcGVydHkgdmFsdWUgaW4uXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIHRoZSBuZXN0ZWQgcHJvcGVydHkuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gc2V0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TmVzdGVkUHJvcGVydHlWYWx1ZShvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBwYXRoOiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBQcm9wZXJ0eSBwYXRoICR7cGF0aH0gbm90IGZvdW5kYCk7XG4gIGxldCBub2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCA9IG9iajtcbiAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cy5zbGljZSgwLCAtMSkpIHtcbiAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGVba2V5XSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGxhc3RLZXkgPSBrZXlzLmF0KC0xKTtcbiAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCB8fCBsYXN0S2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIG5vZGVbbGFzdEtleV0gPSB2YWx1ZTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGdpdmVuIHZhbHVlIHRvIGEgSlNPTiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZCB0byBKU09OLiBUaGlzIGNhbiBiZSBvZiBhbnkgdHlwZS5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgY3VzdG9taXppbmcgdGhlIEpTT04gY29udmVyc2lvbiBwcm9jZXNzLlxuICogQHJldHVybnMgVGhlIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbih2YWx1ZTogdW5rbm93biwgb3B0aW9uczogUGFydGlhbDxUb0pzb25PcHRpb25zPiA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3QgREVGQVVMVF9PUFRJT05TOiBUb0pzb25PcHRpb25zID0ge1xuICAgIGZ1bmN0aW9uSGFuZGxpbmdNb2RlOiBGdW5jdGlvbkhhbmRsaW5nTW9kZS5FeGNsdWRlLFxuICAgIG1heERlcHRoOiAtMSxcbiAgICBzaG91bGRIYW5kbGVDaXJjdWxhclJlZmVyZW5jZXM6IGZhbHNlLFxuICAgIHNob3VsZEhhbmRsZVVuZGVmaW5lZDogZmFsc2UsXG4gICAgc3BhY2U6IDJcbiAgfTtcblxuICBjb25zdCBmdWxsT3B0aW9ucyA9IHsgLi4uREVGQVVMVF9PUFRJT05TLCAuLi5vcHRpb25zIH07XG5cbiAgY29uc3QgbWF4RGVwdGggPSBmdWxsT3B0aW9ucy5tYXhEZXB0aCA9PT0gLTEgPyBJbmZpbml0eSA6IGZ1bGxPcHRpb25zLm1heERlcHRoO1xuXG4gIGNvbnN0IGZ1bmN0aW9uVGV4dHM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IG9iamVjdERlcHRoTWFwID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBudW1iZXI+KCk7XG4gIGNvbnN0IHVzZWRPYmplY3RzID0gbmV3IFdlYWtTZXQ8b2JqZWN0PigpO1xuXG4gIGNvbnN0IHJlcGxhY2VyID0gKF9rZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLnNob3VsZEhhbmRsZVVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gJ19fVU5ERUZJTkVEX18nO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGZ1bGxPcHRpb25zLmZ1bmN0aW9uSGFuZGxpbmdNb2RlID09PSBGdW5jdGlvbkhhbmRsaW5nTW9kZS5FeGNsdWRlKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBjb25zdCBpbmRleCA9IGZ1bmN0aW9uVGV4dHMubGVuZ3RoO1xuICAgICAgY29uc3QgZnVuY3Rpb25UZXh0ID0gZnVsbE9wdGlvbnMuZnVuY3Rpb25IYW5kbGluZ01vZGUgPT09IEZ1bmN0aW9uSGFuZGxpbmdNb2RlLkZ1bGwgPyB2YWx1ZS50b1N0cmluZygpIDogYGZ1bmN0aW9uICR7dmFsdWUubmFtZSB8fCAnYW5vbnltb3VzJ30oKWA7XG4gICAgICBmdW5jdGlvblRleHRzLnB1c2goZnVuY3Rpb25UZXh0KTtcbiAgICAgIHJldHVybiBgX19GVU5DVElPTl9fJHtpbmRleC50b1N0cmluZygpfWA7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICBpZiAoZnVsbE9wdGlvbnMuc2hvdWxkSGFuZGxlQ2lyY3VsYXJSZWZlcmVuY2VzKSB7XG4gICAgICAgIGlmICh1c2VkT2JqZWN0cy5oYXModmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXIgUmVmZXJlbmNlXSc7XG4gICAgICAgIH1cbiAgICAgICAgdXNlZE9iamVjdHMuYWRkKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGRlcHRoID0gb2JqZWN0RGVwdGhNYXAuZ2V0KHZhbHVlKTtcbiAgICAgIGlmIChkZXB0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRlcHRoID0gMDtcbiAgICAgICAgb2JqZWN0RGVwdGhNYXAuc2V0KHZhbHVlLCAwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRlcHRoID4gbWF4RGVwdGgpIHtcbiAgICAgICAgcmV0dXJuICdbLi4uXSc7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgT2JqZWN0LnZhbHVlcyh2YWx1ZSkpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0eSB8fCB0eXBlb2YgcHJvcGVydHkgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0RGVwdGhNYXAuc2V0KHByb3BlcnR5IGFzIG9iamVjdCwgZGVwdGggKyAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG5cbiAgbGV0IGpzb24gPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgcmVwbGFjZXIsIGZ1bGxPcHRpb25zLnNwYWNlKTtcbiAganNvbiA9IGpzb24ucmVwbGFjZUFsbCgvXCJfX0ZVTkNUSU9OX18oXFxkKylcIi9nLCAoXywgaW5kZXhTdHI6IHN0cmluZykgPT4gZnVuY3Rpb25UZXh0c1twYXJzZUludChpbmRleFN0cildID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoYEZ1bmN0aW9uIHdpdGggaW5kZXggJHtpbmRleFN0cn0gbm90IGZvdW5kYCkpKTtcbiAganNvbiA9IGpzb24ucmVwbGFjZUFsbCgnXCJfX1VOREVGSU5FRF9fXCInLCAndW5kZWZpbmVkJyk7XG4gIHJldHVybiBqc29uO1xufVxuXG5mdW5jdGlvbiBfYXNzaWduV2l0aE5vbkVudW1lcmFibGVQcm9wZXJ0aWVzKHRhcmdldDogb2JqZWN0LCAuLi5zb3VyY2VzOiBvYmplY3RbXSk6IG9iamVjdCB7XG4gIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICB9XG5cbiAgY29uc3Qgc291cmNlUHJvdG90eXBlcyA9IChzb3VyY2VzLm1hcCgoc291cmNlKSA9PiBnZXRQcm90b3R5cGVPZihzb3VyY2UpKSBhcyAobnVsbCB8IG9iamVjdClbXSkuZmlsdGVyPG51bGwgfCBvYmplY3Q+KChwcm90bykgPT4gISFwcm90bykgYXMgb2JqZWN0W107XG5cbiAgaWYgKHNvdXJjZVByb3RvdHlwZXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHRhcmdldFByb3RvdHlwZSA9IF9hc3NpZ25XaXRoTm9uRW51bWVyYWJsZVByb3BlcnRpZXMoe30sIGdldFByb3RvdHlwZU9mKHRhcmdldCksIC4uLnNvdXJjZVByb3RvdHlwZXMpO1xuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0YXJnZXQsIHRhcmdldFByb3RvdHlwZSk7XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSxtQkFBZ0M7QUFiaEMsSUFBSSxZQUFZLFdBQVcsU0FBUyxLQUFLO0FBQUEsRUFDdkMsV0FBVztBQUFBLEVBQ1gsT0FBTyxNQUFJO0FBQUEsRUFDWCxPQUFPLENBQUM7QUFBQSxFQUNSLFlBQVk7QUFDZDtBQWFPLElBQUssdUJBQUwsa0JBQUtBLDBCQUFMO0FBSUwsRUFBQUEsc0JBQUEsYUFBVTtBQUlWLEVBQUFBLHNCQUFBLFVBQU87QUFJUCxFQUFBQSxzQkFBQSxjQUFXO0FBWkQsU0FBQUE7QUFBQSxHQUFBO0FBZ0ZMLFNBQVMsa0NBQWtDLFdBQW1C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WUFBWSxLQUFLO0FBQzVELFNBQU8sS0FBSyxXQUFXLHdCQUF3QixDQUFDLEdBQUcsYUFBcUIsY0FBYyxTQUFTLFFBQVEsQ0FBQyxTQUFLLDhCQUFnQixJQUFJLE1BQU0sdUJBQXVCLFFBQVEsWUFBWSxDQUFDLENBQUM7QUFDcEwsU0FBTyxLQUFLLFdBQVcsbUJBQW1CLFdBQVc7QUFDckQsU0FBTztBQUNUO0FBRUEsU0FBUyxtQ0FBbUMsV0FBbUIsU0FBMkI7QUFDeEYsYUFBVyxVQUFVLFNBQVM7QUFDNUIsV0FBTyxpQkFBaUIsUUFBUSxPQUFPLDBCQUEwQixNQUFNLENBQUM7QUFBQSxFQUMxRTtBQUVBLFFBQU0sbUJBQW9CLFFBQVEsSUFBSSxDQUFDLFdBQVcsZUFBZSxNQUFNLENBQUMsRUFBd0IsT0FBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLO0FBRXhJLE1BQUksaUJBQWlCLFNBQVMsR0FBRztBQUMvQixVQUFNLGtCQUFrQixtQ0FBbUMsQ0FBQyxHQUFHLGVBQWUsTUFBTSxHQUFHLEdBQUcsZ0JBQWdCO0FBQzFHLFdBQU8sZUFBZSxRQUFRLGVBQWU7QUFBQSxFQUMvQztBQUVBLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFsiRnVuY3Rpb25IYW5kbGluZ01vZGUiLCAidmFsdWUiXQp9Cg==
@@ -3,18 +3,51 @@
3
3
  * Contains utility functions for Objects.
4
4
  */
5
5
  import type { UndefinedOnPartialDeep } from 'type-fest';
6
+ /**
7
+ * Specifies how functions should be handled in the JSON output.
8
+ */
9
+ export declare enum FunctionHandlingMode {
10
+ /**
11
+ * Excludes functions from the JSON output.
12
+ */
13
+ Exclude = "exclude",
14
+ /**
15
+ * Includes the full function definition in the JSON output.
16
+ */
17
+ Full = "full",
18
+ /**
19
+ * Includes only the function name in the JSON output.
20
+ */
21
+ NameOnly = "nameOnly"
22
+ }
6
23
  /**
7
24
  * Options for converting an object to JSON.
8
25
  */
9
26
  export interface ToJsonOptions {
10
27
  /**
11
- * If `true`, functions within the value will be handled and included in the JSON string. Defaults to `false`.
28
+ * Specifies how functions should be handled in the JSON output (default: `exclude`).
29
+ */
30
+ functionHandlingMode: FunctionHandlingMode;
31
+ /**
32
+ * Specifies the maximum depth of nested objects to include in the JSON output.
33
+ * Use `-1` for no limit.
34
+ * Defaults to `-1`.
35
+ */
36
+ maxDepth: number;
37
+ /**
38
+ * Specifies whether to handle circular references in the JSON output.
39
+ * Defaults to `false`.
40
+ */
41
+ shouldHandleCircularReferences: boolean;
42
+ /**
43
+ * Specifies whether to handle undefined values in the JSON output.
44
+ * Defaults to `false`.
12
45
  */
13
- shouldHandleFunctions?: boolean;
46
+ shouldHandleUndefined: boolean;
14
47
  /**
15
48
  * Specifies the indentation of the JSON output. This can be a number of spaces or a string. Defaults to `2`.
16
49
  */
17
- space?: number | string;
50
+ space: number | string;
18
51
  }
19
52
  /**
20
53
  * Assigns properties from one or more source objects to a target object, including non-enumerable properties.
@@ -132,4 +165,4 @@ export declare function setNestedPropertyValue(obj: Record<string, unknown>, pat
132
165
  * @param options - Options for customizing the JSON conversion process.
133
166
  * @returns The JSON string representation of the input value.
134
167
  */
135
- export declare function toJson(value: unknown, options?: ToJsonOptions): string;
168
+ export declare function toJson(value: unknown, options?: Partial<ToJsonOptions>): string;
@@ -80,7 +80,7 @@ ${__extractDefault.toString()}
80
80
  if (!contents.includes(key)) {
81
81
  continue;
82
82
  }
83
- const valueStr = typeof value === "function" ? `(${value.toString()})()` : (0, import_Object.toJson)(value, { shouldHandleFunctions: true });
83
+ const valueStr = typeof value === "function" ? `(${value.toString()})()` : (0, import_Object.toJson)(value, { functionHandlingMode: import_Object.FunctionHandlingMode.Full });
84
84
  if (contents.includes(`var ${variable}`)) {
85
85
  continue;
86
86
  }
@@ -110,4 +110,4 @@ ${__extractDefault.toString()}
110
110
  0 && (module.exports = {
111
111
  preprocessPlugin
112
112
  });
113
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdHMvZXNidWlsZC9wcmVwcm9jZXNzUGx1Z2luLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJicm93c2VyXCI6IHRydWUsXG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBwcmVwcm9jZXNzUGx1Z2luXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3VzdG9tIGVzYnVpbGQgcGx1Z2luIHRoYXQgcHJlcHJvY2Vzc2VzIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQgZmlsZXMuXG4gKiBUaGUgcHJlcHJvY2Vzc2luZyBpbmNsdWRlcyByZXBsYWNpbmcgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCB3aXRoIGEgTm9kZS5qcy1jb21wYXRpYmxlIGFsdGVybmF0aXZlLFxuICogZW5zdXJpbmcgY29tcGF0aWJpbGl0eSB3aXRoIE9ic2lkaWFuJ3MgcGx1Z2luIHN5c3RlbSwgYW5kIGFkZGluZyBhIGJhc2ljIGBwcm9jZXNzYCBvYmplY3QgZm9yIGVudmlyb25tZW50c1xuICogd2hlcmUgYHByb2Nlc3NgIGlzIG5vdCBhdmFpbGFibGUgKGxpa2UgbW9iaWxlIG9yIHdlYiBlbnZpcm9ubWVudHMpLlxuICpcbiAqIEByZW1hcmtzXG4gKiBXZSBjYW5ub3QgdXNlIGAuYCBpbnN0ZWFkIG9mIGAoZG90KWAgaW4gdGhlIGFib3ZlIGRlc2NyaXB0aW9uIGJlY2F1c2UgdGhlIGZpbGUgaXRzZWxmIGlzIHByZXByb2Nlc3NlZCB3aXRoIHRoZSBzYW1lIHJ1bGUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHsgdG9Kc29uIH0gZnJvbSAnLi4vLi4vT2JqZWN0LnRzJztcbmltcG9ydCB7IG1ha2VWYWxpZFZhcmlhYmxlTmFtZSB9IGZyb20gJy4uLy4uL1N0cmluZy50cyc7XG5pbXBvcnQge1xuICBwcm9jZXNzLFxuICByZWFkRmlsZVxufSBmcm9tICcuLi9Ob2RlTW9kdWxlcy50cyc7XG5cbmludGVyZmFjZSBFc21Nb2R1bGUge1xuICBfX2VzTW9kdWxlOiBib29sZWFuO1xuICBkZWZhdWx0OiB1bmtub3duO1xufVxuXG50eXBlIFByb2Nlc3NFeCA9IHtcbiAgYnJvd3NlcjogYm9vbGVhbjtcbn0gJiB0eXBlb2YgcHJvY2VzcztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVzYnVpbGQgcGx1Z2luIHRoYXQgcHJlcHJvY2Vzc2VzIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQgZmlsZXMuXG4gKlxuICogVGhpcyBwbHVnaW4gcGVyZm9ybXMgdGhlIGZvbGxvd2luZyB0YXNrczpcbiAqIC0gUmVwbGFjZXMgaW5zdGFuY2VzIG9mIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAgd2l0aCBhIE5vZGUuanMtY29tcGF0aWJsZSBgX19maWxlbmFtZWAgYWx0ZXJuYXRpdmUuXG4gKiAtIE1vZGlmaWVzIHRoZSBgc291cmNlTWFwcGluZ1VSTGAgY29tbWVudCB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIE9ic2lkaWFuJ3MgcGx1Z2luIHN5c3RlbS5cbiAqIC0gQWRkcyBhIGJhc2ljIGBwcm9jZXNzYCBvYmplY3QgdG8gdGhlIGdsb2JhbCBzY29wZSBpZiBgcHJvY2Vzc2AgaXMgcmVmZXJlbmNlZCBidXQgbm90IGRlZmluZWQuXG4gKlxuICogQHJldHVybnMgQW4gZXNidWlsZCBgUGx1Z2luYCBvYmplY3QgdGhhdCBoYW5kbGVzIHRoZSBwcmVwcm9jZXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2Vzc1BsdWdpbigpOiBQbHVnaW4ge1xuICBjb25zdCByZXBsYWNlbWVudHMgPSB7XG4gICAgWydpbXBvcnQoZG90KW1ldGEoZG90KXVybCcucmVwbGFjZUFsbCgnKGRvdCknLCAnLicpXTogKCk6IHN0cmluZyA9PiB7XG4gICAgICBpZiAodHlwZW9mIF9fZmlsZW5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQteC9uby1ub2RlanMtbW9kdWxlcywgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuICAgICAgICBjb25zdCB1cmwgPSByZXF1aXJlKCdub2RlOnVybCcpIGFzIHR5cGVvZiBpbXBvcnQoJ25vZGU6dXJsJyk7XG4gICAgICAgIHJldHVybiB1cmwucGF0aFRvRmlsZVVSTChfX2ZpbGVuYW1lKS5ocmVmO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgICAgfVxuXG4gICAgICAvLyBGYWxsYmFjayB0byBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGVudmlyb25tZW50IGlzIHVua25vd25cbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICAgIHByb2Nlc3M6IHtcbiAgICAgIGJyb3dzZXI6IHRydWUsXG4gICAgICBjd2Q6ICgpID0+ICcvJyxcbiAgICAgIGVudjoge30sXG4gICAgICBwbGF0Zm9ybTogJ2FuZHJvaWQnXG4gICAgfSBhcyBQcm9jZXNzRXhcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdwcmVwcm9jZXNzJyxcbiAgICBzZXR1cChidWlsZCk6IHZvaWQge1xuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuZGVmaW5lID8/PSB7fTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocmVwbGFjZW1lbnRzKSkge1xuICAgICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5kZWZpbmVba2V5XSA9IGBfXyR7bWFrZVZhbGlkVmFyaWFibGVOYW1lKGtleSl9YDtcbiAgICAgIH1cblxuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYmFubmVyID8/PSB7fTtcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmJhbm5lclsnanMnXSA/Pz0gJyc7XG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5iYW5uZXJbJ2pzJ10gKz0gJ1xcbicgKyBgJHtfX2V4dHJhY3REZWZhdWx0LnRvU3RyaW5nKCl9XFxuYDtcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmJhbm5lclsnanMnXSArPSAnXFxuJyArIGAoJHtwYXRjaFJlcXVpcmVFc21EZWZhdWx0LnRvU3RyaW5nKCl9KSgpXFxuYDtcblxuICAgICAgYnVpbGQub25Mb2FkKHsgZmlsdGVyOiAvXFwuKGpzfHRzfGNqc3xtanN8Y3RzfG10cykkLyB9LCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCByZWFkRmlsZShhcmdzLnBhdGgsICd1dGYtOCcpO1xuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlcGxhY2VtZW50cykpIHtcbiAgICAgICAgICBjb25zdCB2YXJpYWJsZSA9IGBfXyR7bWFrZVZhbGlkVmFyaWFibGVOYW1lKGtleSl9YDtcbiAgICAgICAgICBpZiAoIWNvbnRlbnRzLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB2YWx1ZVN0ciA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGAoJHt2YWx1ZS50b1N0cmluZygpfSkoKWAgOiB0b0pzb24odmFsdWUsIHsgc2hvdWxkSGFuZGxlRnVuY3Rpb25zOiB0cnVlIH0pO1xuICAgICAgICAgIGlmIChjb250ZW50cy5pbmNsdWRlcyhgdmFyICR7dmFyaWFibGV9YCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250ZW50cyA9IGB2YXIgJHt2YXJpYWJsZX0gPSBnbG9iYWxUaGlzWycke2tleX0nXSA/PyAke3ZhbHVlU3RyfTtcXG5gICsgY29udGVudHM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIQUNLOiBUaGUgJHsnJ30gcGFydCBpcyB1c2VkIHRvIGVuc3VyZSBPYnNpZGlhbiBsb2FkcyB0aGUgcGx1Z2luIHByb3Blcmx5LFxuICAgICAgICAvLyBvdGhlcndpc2UsIGl0IHN0b3BzIGxvYWRpbmcgYWZ0ZXIgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNvdXJjZU1hcHBpbmdVUkwgY29tbWVudC5cbiAgICAgICAgY29udGVudHMgPSBjb250ZW50cy5yZXBsYWNlKC9gXFxyP1xcblxcL1xcLyMgc291cmNlTWFwcGluZ1VSTC9nLCAnYFxcbi8vIyR7XFwnXFwnfSBzb3VyY2VNYXBwaW5nVVJMJyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb250ZW50cyxcbiAgICAgICAgICBsb2FkZXI6ICd0cydcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBfX2V4dHJhY3REZWZhdWx0KG1vZHVsZTogUGFydGlhbDxFc21Nb2R1bGU+IHwgdW5kZWZpbmVkKTogdW5rbm93biB7XG4gICAgcmV0dXJuIG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSAmJiBtb2R1bGUuZGVmYXVsdCA/IG1vZHVsZS5kZWZhdWx0IDogbW9kdWxlO1xuICB9XG5cbiAgZnVuY3Rpb24gcGF0Y2hSZXF1aXJlRXNtRGVmYXVsdCgpOiB2b2lkIHtcbiAgICBjb25zdCBfX3JlcXVpcmUgPSByZXF1aXJlO1xuICAgIHJlcXVpcmUgPSBPYmplY3QuYXNzaWduKChpZDogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gICAgICBjb25zdCBtb2R1bGUgPSBfX3JlcXVpcmUoaWQpIGFzIChQYXJ0aWFsPEVzbU1vZHVsZT4gfCB1bmRlZmluZWQpID8/IHt9O1xuICAgICAgcmV0dXJuIF9fZXh0cmFjdERlZmF1bHQobW9kdWxlKTtcbiAgICB9LCBfX3Jl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
113
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3NjcmlwdHMvZXNidWlsZC9wcmVwcm9jZXNzUGx1Z2luLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJ2YXIgX19wcm9jZXNzID0gZ2xvYmFsVGhpc1sncHJvY2VzcyddID8/IHtcbiAgXCJicm93c2VyXCI6IHRydWUsXG4gIFwiY3dkXCI6ICgpPT5cIi9cIixcbiAgXCJlbnZcIjoge30sXG4gIFwicGxhdGZvcm1cIjogXCJhbmRyb2lkXCJcbn07XG4vKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvbiBwcmVwcm9jZXNzUGx1Z2luXG4gKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY3VzdG9tIGVzYnVpbGQgcGx1Z2luIHRoYXQgcHJlcHJvY2Vzc2VzIEphdmFTY3JpcHQgYW5kIFR5cGVTY3JpcHQgZmlsZXMuXG4gKiBUaGUgcHJlcHJvY2Vzc2luZyBpbmNsdWRlcyByZXBsYWNpbmcgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCB3aXRoIGEgTm9kZS5qcy1jb21wYXRpYmxlIGFsdGVybmF0aXZlLFxuICogZW5zdXJpbmcgY29tcGF0aWJpbGl0eSB3aXRoIE9ic2lkaWFuJ3MgcGx1Z2luIHN5c3RlbSwgYW5kIGFkZGluZyBhIGJhc2ljIGBwcm9jZXNzYCBvYmplY3QgZm9yIGVudmlyb25tZW50c1xuICogd2hlcmUgYHByb2Nlc3NgIGlzIG5vdCBhdmFpbGFibGUgKGxpa2UgbW9iaWxlIG9yIHdlYiBlbnZpcm9ubWVudHMpLlxuICpcbiAqIEByZW1hcmtzXG4gKiBXZSBjYW5ub3QgdXNlIGAuYCBpbnN0ZWFkIG9mIGAoZG90KWAgaW4gdGhlIGFib3ZlIGRlc2NyaXB0aW9uIGJlY2F1c2UgdGhlIGZpbGUgaXRzZWxmIGlzIHByZXByb2Nlc3NlZCB3aXRoIHRoZSBzYW1lIHJ1bGUuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcblxuaW1wb3J0IHtcbiAgRnVuY3Rpb25IYW5kbGluZ01vZGUsXG4gIHRvSnNvblxufSBmcm9tICcuLi8uLi9PYmplY3QudHMnO1xuaW1wb3J0IHsgbWFrZVZhbGlkVmFyaWFibGVOYW1lIH0gZnJvbSAnLi4vLi4vU3RyaW5nLnRzJztcbmltcG9ydCB7XG4gIHByb2Nlc3MsXG4gIHJlYWRGaWxlXG59IGZyb20gJy4uL05vZGVNb2R1bGVzLnRzJztcblxuaW50ZXJmYWNlIEVzbU1vZHVsZSB7XG4gIF9fZXNNb2R1bGU6IGJvb2xlYW47XG4gIGRlZmF1bHQ6IHVua25vd247XG59XG5cbnR5cGUgUHJvY2Vzc0V4ID0ge1xuICBicm93c2VyOiBib29sZWFuO1xufSAmIHR5cGVvZiBwcm9jZXNzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBwcmVwcm9jZXNzZXMgSmF2YVNjcmlwdCBhbmQgVHlwZVNjcmlwdCBmaWxlcy5cbiAqXG4gKiBUaGlzIHBsdWdpbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHRhc2tzOlxuICogLSBSZXBsYWNlcyBpbnN0YW5jZXMgb2YgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCB3aXRoIGEgTm9kZS5qcy1jb21wYXRpYmxlIGBfX2ZpbGVuYW1lYCBhbHRlcm5hdGl2ZS5cbiAqIC0gTW9kaWZpZXMgdGhlIGBzb3VyY2VNYXBwaW5nVVJMYCBjb21tZW50IHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IHdpdGggT2JzaWRpYW4ncyBwbHVnaW4gc3lzdGVtLlxuICogLSBBZGRzIGEgYmFzaWMgYHByb2Nlc3NgIG9iamVjdCB0byB0aGUgZ2xvYmFsIHNjb3BlIGlmIGBwcm9jZXNzYCBpcyByZWZlcmVuY2VkIGJ1dCBub3QgZGVmaW5lZC5cbiAqXG4gKiBAcmV0dXJucyBBbiBlc2J1aWxkIGBQbHVnaW5gIG9iamVjdCB0aGF0IGhhbmRsZXMgdGhlIHByZXByb2Nlc3NpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwcm9jZXNzUGx1Z2luKCk6IFBsdWdpbiB7XG4gIGNvbnN0IHJlcGxhY2VtZW50cyA9IHtcbiAgICBbJ2ltcG9ydChkb3QpbWV0YShkb3QpdXJsJy5yZXBsYWNlQWxsKCcoZG90KScsICcuJyldOiAoKTogc3RyaW5nID0+IHtcbiAgICAgIGlmICh0eXBlb2YgX19maWxlbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC14L25vLW5vZGVqcy1tb2R1bGVzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gICAgICAgIGNvbnN0IHVybCA9IHJlcXVpcmUoJ25vZGU6dXJsJykgYXMgdHlwZW9mIGltcG9ydCgnbm9kZTp1cmwnKTtcbiAgICAgICAgcmV0dXJuIHVybC5wYXRoVG9GaWxlVVJMKF9fZmlsZW5hbWUpLmhyZWY7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gICAgICB9XG5cbiAgICAgIC8vIEZhbGxiYWNrIHRvIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgZW52aXJvbm1lbnQgaXMgdW5rbm93blxuICAgICAgcmV0dXJuICcnO1xuICAgIH0sXG4gICAgcHJvY2Vzczoge1xuICAgICAgYnJvd3NlcjogdHJ1ZSxcbiAgICAgIGN3ZDogKCkgPT4gJy8nLFxuICAgICAgZW52OiB7fSxcbiAgICAgIHBsYXRmb3JtOiAnYW5kcm9pZCdcbiAgICB9IGFzIFByb2Nlc3NFeFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3ByZXByb2Nlc3MnLFxuICAgIHNldHVwKGJ1aWxkKTogdm9pZCB7XG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5kZWZpbmUgPz89IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhyZXBsYWNlbWVudHMpKSB7XG4gICAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmRlZmluZVtrZXldID0gYF9fJHttYWtlVmFsaWRWYXJpYWJsZU5hbWUoa2V5KX1gO1xuICAgICAgfVxuXG4gICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5iYW5uZXIgPz89IHt9O1xuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYmFubmVyWydqcyddID8/PSAnJztcbiAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmJhbm5lclsnanMnXSArPSAnXFxuJyArIGAke19fZXh0cmFjdERlZmF1bHQudG9TdHJpbmcoKX1cXG5gO1xuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMuYmFubmVyWydqcyddICs9ICdcXG4nICsgYCgke3BhdGNoUmVxdWlyZUVzbURlZmF1bHQudG9TdHJpbmcoKX0pKClcXG5gO1xuXG4gICAgICBidWlsZC5vbkxvYWQoeyBmaWx0ZXI6IC9cXC4oanN8dHN8Y2pzfG1qc3xjdHN8bXRzKSQvIH0sIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IHJlYWRGaWxlKGFyZ3MucGF0aCwgJ3V0Zi04Jyk7XG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVwbGFjZW1lbnRzKSkge1xuICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gYF9fJHttYWtlVmFsaWRWYXJpYWJsZU5hbWUoa2V5KX1gO1xuICAgICAgICAgIGlmICghY29udGVudHMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHZhbHVlU3RyID0gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nID8gYCgke3ZhbHVlLnRvU3RyaW5nKCl9KSgpYCA6IHRvSnNvbih2YWx1ZSwgeyBmdW5jdGlvbkhhbmRsaW5nTW9kZTogRnVuY3Rpb25IYW5kbGluZ01vZGUuRnVsbCB9KTtcbiAgICAgICAgICBpZiAoY29udGVudHMuaW5jbHVkZXMoYHZhciAke3ZhcmlhYmxlfWApKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGVudHMgPSBgdmFyICR7dmFyaWFibGV9ID0gZ2xvYmFsVGhpc1snJHtrZXl9J10gPz8gJHt2YWx1ZVN0cn07XFxuYCArIGNvbnRlbnRzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSEFDSzogVGhlICR7Jyd9IHBhcnQgaXMgdXNlZCB0byBlbnN1cmUgT2JzaWRpYW4gbG9hZHMgdGhlIHBsdWdpbiBwcm9wZXJseSxcbiAgICAgICAgLy8gb3RoZXJ3aXNlLCBpdCBzdG9wcyBsb2FkaW5nIGFmdGVyIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzb3VyY2VNYXBwaW5nVVJMIGNvbW1lbnQuXG4gICAgICAgIGNvbnRlbnRzID0gY29udGVudHMucmVwbGFjZSgvYFxccj9cXG5cXC9cXC8jIHNvdXJjZU1hcHBpbmdVUkwvZywgJ2BcXG4vLyMke1xcJ1xcJ30gc291cmNlTWFwcGluZ1VSTCcpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29udGVudHMsXG4gICAgICAgICAgbG9hZGVyOiAndHMnXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gX19leHRyYWN0RGVmYXVsdChtb2R1bGU6IFBhcnRpYWw8RXNtTW9kdWxlPiB8IHVuZGVmaW5lZCk6IHVua25vd24ge1xuICAgIHJldHVybiBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgJiYgbW9kdWxlLmRlZmF1bHQgPyBtb2R1bGUuZGVmYXVsdCA6IG1vZHVsZTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBhdGNoUmVxdWlyZUVzbURlZmF1bHQoKTogdm9pZCB7XG4gICAgY29uc3QgX19yZXF1aXJlID0gcmVxdWlyZTtcbiAgICByZXF1aXJlID0gT2JqZWN0LmFzc2lnbigoaWQ6IHN0cmluZyk6IHVua25vd24gPT4ge1xuICAgICAgY29uc3QgbW9kdWxlID0gX19yZXF1aXJlKGlkKSBhcyAoUGFydGlhbDxFc21Nb2R1bGU+IHwgdW5kZWZpbmVkKSA/PyB7fTtcbiAgICAgIHJldHVybiBfX2V4dHJhY3REZWZhdWx0KG1vZHVsZSk7XG4gICAgfSwgX19yZXF1aXJlKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1CQSxvQkFHTztBQUNQLG9CQUFzQztBQUN0Qyx5QkFHTztBQTNCUCxJQUFJLFlBQVksV0FBVyxTQUFTLEtBQUs7QUFBQSxFQUN2QyxXQUFXO0FBQUEsRUFDWCxPQUFPLE1BQUk7QUFBQSxFQUNYLE9BQU8sQ0FBQztBQUFBLEVBQ1IsWUFBWTtBQUNkO0FBMkNPLFNBQVMsbUJBQTJCO0FBQ3pDLFFBQU0sZUFBZTtBQUFBLElBQ25CLENBQUMsMEJBQTBCLFdBQVcsU0FBUyxHQUFHLENBQUMsR0FBRyxNQUFjO0FBQ2xFLFVBQUksT0FBTyxlQUFlLFVBQVU7QUFFbEMsY0FBTSxNQUFNLFFBQVEsVUFBVTtBQUM5QixlQUFPLElBQUksY0FBYyxVQUFVLEVBQUU7QUFBQSxNQUN2QztBQUVBLFVBQUksT0FBTyxXQUFXLGFBQWE7QUFDakMsZUFBTyxPQUFPLFNBQVM7QUFBQSxNQUN6QjtBQUdBLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQSxTQUFTO0FBQUEsTUFDUCxTQUFTO0FBQUEsTUFDVCxLQUFLLE1BQU07QUFBQSxNQUNYLEtBQUssQ0FBQztBQUFBLE1BQ04sVUFBVTtBQUFBLElBQ1o7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sTUFBTSxPQUFhO0FBQ2pCLFlBQU0sZUFBZSxXQUFXLENBQUM7QUFFakMsaUJBQVcsT0FBTyxPQUFPLEtBQUssWUFBWSxHQUFHO0FBQzNDLGNBQU0sZUFBZSxPQUFPLEdBQUcsSUFBSSxTQUFLLHFDQUFzQixHQUFHLENBQUM7QUFBQSxNQUNwRTtBQUVBLFlBQU0sZUFBZSxXQUFXLENBQUM7QUFDakMsWUFBTSxlQUFlLE9BQU8sSUFBSSxNQUFNO0FBQ3RDLFlBQU0sZUFBZSxPQUFPLElBQUksS0FBSztBQUFBLEVBQVUsaUJBQWlCLFNBQVMsQ0FBQztBQUFBO0FBQzFFLFlBQU0sZUFBZSxPQUFPLElBQUksS0FBSztBQUFBLEdBQVcsdUJBQXVCLFNBQVMsQ0FBQztBQUFBO0FBRWpGLFlBQU0sT0FBTyxFQUFFLFFBQVEsNkJBQTZCLEdBQUcsT0FBTyxTQUFTO0FBQ3JFLFlBQUksV0FBVyxVQUFNLDZCQUFTLEtBQUssTUFBTSxPQUFPO0FBRWhELG1CQUFXLENBQUMsS0FBSyxLQUFLLEtBQUssT0FBTyxRQUFRLFlBQVksR0FBRztBQUN2RCxnQkFBTSxXQUFXLFNBQUsscUNBQXNCLEdBQUcsQ0FBQztBQUNoRCxjQUFJLENBQUMsU0FBUyxTQUFTLEdBQUcsR0FBRztBQUMzQjtBQUFBLFVBQ0Y7QUFDQSxnQkFBTSxXQUFXLE9BQU8sVUFBVSxhQUFhLElBQUksTUFBTSxTQUFTLENBQUMsWUFBUSxzQkFBTyxPQUFPLEVBQUUsc0JBQXNCLG1DQUFxQixLQUFLLENBQUM7QUFDNUksY0FBSSxTQUFTLFNBQVMsT0FBTyxRQUFRLEVBQUUsR0FBRztBQUN4QztBQUFBLFVBQ0Y7QUFDQSxxQkFBVyxPQUFPLFFBQVEsa0JBQWtCLEdBQUcsU0FBUyxRQUFRO0FBQUEsSUFBUTtBQUFBLFFBQzFFO0FBSUEsbUJBQVcsU0FBUyxRQUFRLGlDQUFpQyw4QkFBZ0M7QUFFN0YsZUFBTztBQUFBLFVBQ0w7QUFBQSxVQUNBLFFBQVE7QUFBQSxRQUNWO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFFQSxXQUFTLGlCQUFpQkEsU0FBaUQ7QUFDekUsV0FBT0EsV0FBVUEsUUFBTyxjQUFjQSxRQUFPLFVBQVVBLFFBQU8sVUFBVUE7QUFBQSxFQUMxRTtBQUVBLFdBQVMseUJBQStCO0FBQ3RDLFVBQU0sWUFBWTtBQUNsQixjQUFVLE9BQU8sT0FBTyxDQUFDLE9BQXdCO0FBQy9DLFlBQU1BLFVBQVMsVUFBVSxFQUFFLEtBQXlDLENBQUM7QUFDckUsYUFBTyxpQkFBaUJBLE9BQU07QUFBQSxJQUNoQyxHQUFHLFNBQVM7QUFBQSxFQUNkO0FBQ0Y7IiwKICAibmFtZXMiOiBbIm1vZHVsZSJdCn0K
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-dev-utils",
3
- "version": "12.2.1",
3
+ "version": "13.0.0",
4
4
  "description": "This is the collection of useful functions that you can use for your Obsidian plugin development",
5
5
  "main": "./dist/lib/index.cjs",
6
6
  "types": "./dist/lib/index.d.ts",