valyrian.js 8.1.4 → 8.1.5

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.
@@ -1,3 +1,3 @@
1
- export declare function deepFreeze(obj: any, freezeClassInstances?: boolean): any;
1
+ export declare function deepFreeze(obj: any, freezeClassInstances?: boolean, seen?: WeakSet<WeakKey>): any;
2
2
  export declare function deepCloneUnfreeze<T>(obj: T, cloneClassInstances?: boolean, seen?: WeakMap<WeakKey, any>): T;
3
3
  //# sourceMappingURL=deep-freeze.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deep-freeze.d.ts","sourceRoot":"","sources":["../../../lib/utils/deep-freeze.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,GAAE,OAAe,GAAG,GAAG,CAwB/E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,mBAAmB,UAAQ,EAAE,IAAI,wBAAgB,GAAG,CAAC,CAuHjG"}
1
+ {"version":3,"file":"deep-freeze.d.ts","sourceRoot":"","sources":["../../../lib/utils/deep-freeze.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,GAAE,OAAe,EAAE,IAAI,mBAAgB,GAAG,GAAG,CA6BrG;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,mBAAmB,UAAQ,EAAE,IAAI,wBAAgB,GAAG,CAAC,CAuHjG"}
@@ -94,26 +94,28 @@ function hasChanged(prev, current) {
94
94
  }
95
95
 
96
96
  // lib/utils/deep-freeze.ts
97
- function deepFreeze(obj, freezeClassInstances = false) {
98
- if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
99
- if (Array.isArray(obj)) {
100
- for (let i = 0, l = obj.length; i < l; i++) {
101
- deepFreeze(obj[i]);
102
- }
103
- } else {
104
- const props = Reflect.ownKeys(obj);
105
- for (let i = 0, l = props.length; i < l; i++) {
106
- deepFreeze(obj[props[i]]);
107
- }
108
- if (freezeClassInstances) {
109
- const proto = Object.getPrototypeOf(obj);
110
- if (proto && proto !== Object.prototype) {
111
- deepFreeze(proto);
112
- }
97
+ function deepFreeze(obj, freezeClassInstances = false, seen = /* @__PURE__ */ new WeakSet()) {
98
+ if (obj === null || typeof obj !== "object" || seen.has(obj) || Object.isFrozen(obj)) {
99
+ return obj;
100
+ }
101
+ seen.add(obj);
102
+ if (Array.isArray(obj)) {
103
+ for (let i = 0, l = obj.length; i < l; i++) {
104
+ deepFreeze(obj[i], freezeClassInstances, seen);
105
+ }
106
+ } else {
107
+ const props = Reflect.ownKeys(obj);
108
+ for (let i = 0, l = props.length; i < l; i++) {
109
+ deepFreeze(obj[props[i]], freezeClassInstances, seen);
110
+ }
111
+ if (freezeClassInstances) {
112
+ const proto = Object.getPrototypeOf(obj);
113
+ if (proto && proto !== Object.prototype) {
114
+ deepFreeze(proto, freezeClassInstances, seen);
113
115
  }
114
116
  }
115
- Object.freeze(obj);
116
117
  }
118
+ Object.freeze(obj);
117
119
  return obj;
118
120
  }
119
121
  function deepCloneUnfreeze(obj, cloneClassInstances = false, seen = /* @__PURE__ */ new WeakMap()) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../lib/utils/index.ts", "../../lib/utils/getter-setter.ts", "../../lib/utils/has-changed.ts", "../../lib/utils/deep-freeze.ts"],
4
- "sourcesContent": ["export * from \"./getter-setter\";\nexport * from \"./has-changed\";\nexport * from \"./deep-freeze\";\n", "// Dot notation: get(obj, 'a.b.c' ) === obj.a.b.c\n// get(obj, 'a.0.c') === obj.a[0].c\nexport function get(obj: unknown, path: string, defaultValue?: unknown) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return defaultValue;\n }\n\n const result = path.split(\".\").reduce((acc: any, part) => acc && acc?.[part], obj);\n\n if (typeof result === \"undefined\") {\n return defaultValue || null;\n }\n\n return result;\n}\n\n// Dot notation: set(obj, 'a.b.c', value) === obj.a.b.c = value\n// set(obj, 'a.0.c', value) === obj.a[0].c = value\nexport function set(obj: any, path: string, value: any) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return;\n }\n\n const parts = path.split(\".\");\n const last = parts.pop();\n\n if (!last) {\n return;\n }\n\n let target = obj;\n for (const part of parts) {\n if (!target[part]) {\n target[part] = {};\n }\n target = target[part];\n }\n\n target[last] = value;\n}\n", "// Utility function to check if dependencies have changed recursively\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function hasChanged(prev: any, current: any) {\n if (Array.isArray(prev)) {\n if (Array.isArray(current) === false) {\n return true;\n }\n\n if (prev.length !== current.length) {\n return true;\n }\n\n for (let i = 0; i < current.length; i++) {\n if (hasChanged(prev[i], current[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n if (typeof prev === \"object\" && prev !== null) {\n if (typeof current !== \"object\" || current === null) {\n return true;\n }\n\n for (const key in current) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n for (const key in prev) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n return false;\n }\n\n return Object.is(prev, current) === false;\n}\n", "export function deepFreeze(obj: any, freezeClassInstances: boolean = false): any {\n if (typeof obj === \"object\" && obj !== null && !Object.isFrozen(obj)) {\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i]);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]]);\n }\n\n // If the object is an instance of a class (not a plain object or array) we need to freeze the prototype\n if (freezeClassInstances) {\n const proto = Object.getPrototypeOf(obj);\n if (proto && proto !== Object.prototype) {\n deepFreeze(proto);\n }\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nexport function deepCloneUnfreeze<T>(obj: T, cloneClassInstances = false, seen = new WeakMap()): T {\n if (typeof obj === \"undefined\" || obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (seen.has(obj)) {\n return seen.get(obj);\n }\n\n let clone: any;\n let cloned = false;\n\n switch (true) {\n case Array.isArray(obj): {\n clone = [];\n for (let i = 0, l = obj.length; i < l; i++) {\n clone[i] = deepCloneUnfreeze(obj[i], cloneClassInstances, seen);\n }\n cloned = true;\n break;\n }\n case obj instanceof Date: {\n clone = new Date(obj.getTime());\n cloned = true;\n break;\n }\n case obj instanceof RegExp: {\n clone = new RegExp(obj.source, obj.flags);\n cloned = true;\n break;\n }\n case obj instanceof Map: {\n clone = new Map();\n for (const [key, value] of obj.entries()) {\n clone.set(\n deepCloneUnfreeze(key, cloneClassInstances, seen),\n deepCloneUnfreeze(value, cloneClassInstances, seen)\n );\n }\n cloned = true;\n break;\n }\n case obj instanceof Set: {\n clone = new Set();\n for (const value of obj.values()) {\n clone.add(deepCloneUnfreeze(value, cloneClassInstances, seen));\n }\n cloned = true;\n break;\n }\n case obj instanceof ArrayBuffer: {\n clone = obj.slice(0);\n cloned = true;\n break;\n }\n // TypedArrays and DataView\n case ArrayBuffer.isView(obj): {\n clone = new (obj as any).constructor(obj.buffer.slice(0));\n cloned = true;\n break;\n }\n // Node.js Buffer\n case typeof Buffer !== \"undefined\" && obj instanceof Buffer: {\n clone = Buffer.from(obj);\n cloned = true;\n break;\n }\n case obj instanceof Error: {\n clone = new (obj as any).constructor(obj.message);\n break;\n }\n // Non clonable objects\n case obj instanceof Promise ||\n obj instanceof WeakMap ||\n obj instanceof WeakSet ||\n typeof obj === \"function\" ||\n typeof obj === \"symbol\": {\n clone = obj;\n cloned = true;\n break;\n }\n // Instance of a class\n case obj.constructor && obj.constructor !== Object: {\n if (!cloneClassInstances) {\n clone = obj;\n cloned = true;\n break;\n }\n clone = Object.create(Object.getPrototypeOf(obj));\n break;\n }\n\n // Plain objects\n default: {\n clone = {};\n\n for (const key in obj) {\n clone[key] = deepCloneUnfreeze(obj[key], cloneClassInstances, seen);\n }\n\n cloned = true;\n break;\n }\n }\n\n seen.set(obj, clone);\n\n if (!cloned) {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n for (const key of Reflect.ownKeys(descriptors)) {\n const descriptor = descriptors[key as string];\n if (\"value\" in descriptor) {\n descriptor.value = deepCloneUnfreeze(descriptor.value, cloneClassInstances, seen);\n }\n Object.defineProperty(clone, key, descriptor);\n }\n }\n\n return clone;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["export * from \"./getter-setter\";\nexport * from \"./has-changed\";\nexport * from \"./deep-freeze\";\n", "// Dot notation: get(obj, 'a.b.c' ) === obj.a.b.c\n// get(obj, 'a.0.c') === obj.a[0].c\nexport function get(obj: unknown, path: string, defaultValue?: unknown) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return defaultValue;\n }\n\n const result = path.split(\".\").reduce((acc: any, part) => acc && acc?.[part], obj);\n\n if (typeof result === \"undefined\") {\n return defaultValue || null;\n }\n\n return result;\n}\n\n// Dot notation: set(obj, 'a.b.c', value) === obj.a.b.c = value\n// set(obj, 'a.0.c', value) === obj.a[0].c = value\nexport function set(obj: any, path: string, value: any) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return;\n }\n\n const parts = path.split(\".\");\n const last = parts.pop();\n\n if (!last) {\n return;\n }\n\n let target = obj;\n for (const part of parts) {\n if (!target[part]) {\n target[part] = {};\n }\n target = target[part];\n }\n\n target[last] = value;\n}\n", "// Utility function to check if dependencies have changed recursively\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function hasChanged(prev: any, current: any) {\n if (Array.isArray(prev)) {\n if (Array.isArray(current) === false) {\n return true;\n }\n\n if (prev.length !== current.length) {\n return true;\n }\n\n for (let i = 0; i < current.length; i++) {\n if (hasChanged(prev[i], current[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n if (typeof prev === \"object\" && prev !== null) {\n if (typeof current !== \"object\" || current === null) {\n return true;\n }\n\n for (const key in current) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n for (const key in prev) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n return false;\n }\n\n return Object.is(prev, current) === false;\n}\n", "export function deepFreeze(obj: any, freezeClassInstances: boolean = false, seen = new WeakSet()): any {\n if (obj === null || typeof obj !== \"object\" || seen.has(obj) || Object.isFrozen(obj)) {\n return obj;\n }\n\n seen.add(obj);\n\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i], freezeClassInstances, seen);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]], freezeClassInstances, seen);\n }\n\n // If the object is an instance of a class (not a plain object or array) we need to freeze the prototype\n if (freezeClassInstances) {\n const proto = Object.getPrototypeOf(obj);\n if (proto && proto !== Object.prototype) {\n deepFreeze(proto, freezeClassInstances, seen);\n }\n }\n }\n\n Object.freeze(obj);\n\n return obj;\n}\n\nexport function deepCloneUnfreeze<T>(obj: T, cloneClassInstances = false, seen = new WeakMap()): T {\n if (typeof obj === \"undefined\" || obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (seen.has(obj)) {\n return seen.get(obj);\n }\n\n let clone: any;\n let cloned = false;\n\n switch (true) {\n case Array.isArray(obj): {\n clone = [];\n for (let i = 0, l = obj.length; i < l; i++) {\n clone[i] = deepCloneUnfreeze(obj[i], cloneClassInstances, seen);\n }\n cloned = true;\n break;\n }\n case obj instanceof Date: {\n clone = new Date(obj.getTime());\n cloned = true;\n break;\n }\n case obj instanceof RegExp: {\n clone = new RegExp(obj.source, obj.flags);\n cloned = true;\n break;\n }\n case obj instanceof Map: {\n clone = new Map();\n for (const [key, value] of obj.entries()) {\n clone.set(\n deepCloneUnfreeze(key, cloneClassInstances, seen),\n deepCloneUnfreeze(value, cloneClassInstances, seen)\n );\n }\n cloned = true;\n break;\n }\n case obj instanceof Set: {\n clone = new Set();\n for (const value of obj.values()) {\n clone.add(deepCloneUnfreeze(value, cloneClassInstances, seen));\n }\n cloned = true;\n break;\n }\n case obj instanceof ArrayBuffer: {\n clone = obj.slice(0);\n cloned = true;\n break;\n }\n // TypedArrays and DataView\n case ArrayBuffer.isView(obj): {\n clone = new (obj as any).constructor(obj.buffer.slice(0));\n cloned = true;\n break;\n }\n // Node.js Buffer\n case typeof Buffer !== \"undefined\" && obj instanceof Buffer: {\n clone = Buffer.from(obj);\n cloned = true;\n break;\n }\n case obj instanceof Error: {\n clone = new (obj as any).constructor(obj.message);\n break;\n }\n // Non clonable objects\n case obj instanceof Promise ||\n obj instanceof WeakMap ||\n obj instanceof WeakSet ||\n typeof obj === \"function\" ||\n typeof obj === \"symbol\": {\n clone = obj;\n cloned = true;\n break;\n }\n // Instance of a class\n case obj.constructor && obj.constructor !== Object: {\n if (!cloneClassInstances) {\n clone = obj;\n cloned = true;\n break;\n }\n clone = Object.create(Object.getPrototypeOf(obj));\n break;\n }\n\n // Plain objects\n default: {\n clone = {};\n\n for (const key in obj) {\n clone[key] = deepCloneUnfreeze(obj[key], cloneClassInstances, seen);\n }\n\n cloned = true;\n break;\n }\n }\n\n seen.set(obj, clone);\n\n if (!cloned) {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n for (const key of Reflect.ownKeys(descriptors)) {\n const descriptor = descriptors[key as string];\n if (\"value\" in descriptor) {\n descriptor.value = deepCloneUnfreeze(descriptor.value, cloneClassInstances, seen);\n }\n Object.defineProperty(clone, key, descriptor);\n }\n }\n\n return clone;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- (()=>{"use strict";var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,o={};((t,r)=>{for(var n in r)e(t,n,{get:r[n],enumerable:!0})})(o,{deepCloneUnfreeze:()=>l,deepFreeze:()=>u,get:()=>s,hasChanged:()=>i,set:()=>a});var f,c=(f=o,((o,f,c,s)=>{if(f&&"object"==typeof f||"function"==typeof f)for(let a of r(f))n.call(o,a)||a===c||e(o,a,{get:()=>f[a],enumerable:!(s=t(f,a))||s.enumerable});return o})(e({},"__esModule",{value:!0}),f));function s(e,t,r){if(!t||"string"!=typeof t||!e||"object"!=typeof e)return r;const n=t.split(".").reduce((e,t)=>e&&e?.[t],e);return void 0===n?r||null:n}function a(e,t,r){if(!t||"string"!=typeof t||!e||"object"!=typeof e)return;const n=t.split("."),o=n.pop();if(!o)return;let f=e;for(const e of n)f[e]||(f[e]={}),f=f[e];f[o]=r}function i(e,t){if(Array.isArray(e)){if(!1===Array.isArray(t))return!0;if(e.length!==t.length)return!0;for(let r=0;r<t.length;r++)if(i(e[r],t[r]))return!0;return!1}if("object"==typeof e&&null!==e){if("object"!=typeof t||null===t)return!0;for(const r in t)if(i(e[r],t[r]))return!0;for(const r in e)if(i(e[r],t[r]))return!0;return!1}return!1===Object.is(e,t)}function u(e,t=!1){if("object"==typeof e&&null!==e&&!Object.isFrozen(e)){if(Array.isArray(e))for(let t=0,r=e.length;t<r;t++)u(e[t]);else{const r=Reflect.ownKeys(e);for(let t=0,n=r.length;t<n;t++)u(e[r[t]]);if(t){const t=Object.getPrototypeOf(e);t&&t!==Object.prototype&&u(t)}}Object.freeze(e)}return e}function l(e,t=!1,r=new WeakMap){if(null==e||"object"!=typeof e)return e;if(r.has(e))return r.get(e);let n,o=!1;switch(!0){case Array.isArray(e):n=[];for(let o=0,f=e.length;o<f;o++)n[o]=l(e[o],t,r);o=!0;break;case e instanceof Date:n=new Date(e.getTime()),o=!0;break;case e instanceof RegExp:n=new RegExp(e.source,e.flags),o=!0;break;case e instanceof Map:n=new Map;for(const[o,f]of e.entries())n.set(l(o,t,r),l(f,t,r));o=!0;break;case e instanceof Set:n=new Set;for(const o of e.values())n.add(l(o,t,r));o=!0;break;case e instanceof ArrayBuffer:n=e.slice(0),o=!0;break;case ArrayBuffer.isView(e):n=new e.constructor(e.buffer.slice(0)),o=!0;break;case"undefined"!=typeof Buffer&&e instanceof Buffer:n=Buffer.from(e),o=!0;break;case e instanceof Error:n=new e.constructor(e.message);break;case e instanceof Promise||e instanceof WeakMap||e instanceof WeakSet||"function"==typeof e||"symbol"==typeof e:n=e,o=!0;break;case e.constructor&&e.constructor!==Object:if(!t){n=e,o=!0;break}n=Object.create(Object.getPrototypeOf(e));break;default:n={};for(const o in e)n[o]=l(e[o],t,r);o=!0}if(r.set(e,n),!o){const o=Object.getOwnPropertyDescriptors(e);for(const e of Reflect.ownKeys(o)){const f=o[e];"value"in f&&(f.value=l(f.value,t,r)),Object.defineProperty(n,e,f)}}return n}"undefined"!=typeof module?module.exports=c:self.ValyrianUtils=c})();//# sourceMappingURL=index.min.js.map
1
+ (()=>{"use strict";var e=Object.defineProperty,t=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,n=Object.prototype.hasOwnProperty,o={};((t,r)=>{for(var n in r)e(t,n,{get:r[n],enumerable:!0})})(o,{deepCloneUnfreeze:()=>l,deepFreeze:()=>u,get:()=>s,hasChanged:()=>i,set:()=>a});var f,c=(f=o,((o,f,c,s)=>{if(f&&"object"==typeof f||"function"==typeof f)for(let a of r(f))n.call(o,a)||a===c||e(o,a,{get:()=>f[a],enumerable:!(s=t(f,a))||s.enumerable});return o})(e({},"__esModule",{value:!0}),f));function s(e,t,r){if(!t||"string"!=typeof t||!e||"object"!=typeof e)return r;const n=t.split(".").reduce((e,t)=>e&&e?.[t],e);return void 0===n?r||null:n}function a(e,t,r){if(!t||"string"!=typeof t||!e||"object"!=typeof e)return;const n=t.split("."),o=n.pop();if(!o)return;let f=e;for(const e of n)f[e]||(f[e]={}),f=f[e];f[o]=r}function i(e,t){if(Array.isArray(e)){if(!1===Array.isArray(t))return!0;if(e.length!==t.length)return!0;for(let r=0;r<t.length;r++)if(i(e[r],t[r]))return!0;return!1}if("object"==typeof e&&null!==e){if("object"!=typeof t||null===t)return!0;for(const r in t)if(i(e[r],t[r]))return!0;for(const r in e)if(i(e[r],t[r]))return!0;return!1}return!1===Object.is(e,t)}function u(e,t=!1,r=new WeakSet){if(null===e||"object"!=typeof e||r.has(e)||Object.isFrozen(e))return e;if(r.add(e),Array.isArray(e))for(let n=0,o=e.length;n<o;n++)u(e[n],t,r);else{const n=Reflect.ownKeys(e);for(let o=0,f=n.length;o<f;o++)u(e[n[o]],t,r);if(t){const n=Object.getPrototypeOf(e);n&&n!==Object.prototype&&u(n,t,r)}}return Object.freeze(e),e}function l(e,t=!1,r=new WeakMap){if(null==e||"object"!=typeof e)return e;if(r.has(e))return r.get(e);let n,o=!1;switch(!0){case Array.isArray(e):n=[];for(let o=0,f=e.length;o<f;o++)n[o]=l(e[o],t,r);o=!0;break;case e instanceof Date:n=new Date(e.getTime()),o=!0;break;case e instanceof RegExp:n=new RegExp(e.source,e.flags),o=!0;break;case e instanceof Map:n=new Map;for(const[o,f]of e.entries())n.set(l(o,t,r),l(f,t,r));o=!0;break;case e instanceof Set:n=new Set;for(const o of e.values())n.add(l(o,t,r));o=!0;break;case e instanceof ArrayBuffer:n=e.slice(0),o=!0;break;case ArrayBuffer.isView(e):n=new e.constructor(e.buffer.slice(0)),o=!0;break;case"undefined"!=typeof Buffer&&e instanceof Buffer:n=Buffer.from(e),o=!0;break;case e instanceof Error:n=new e.constructor(e.message);break;case e instanceof Promise||e instanceof WeakMap||e instanceof WeakSet||"function"==typeof e||"symbol"==typeof e:n=e,o=!0;break;case e.constructor&&e.constructor!==Object:if(!t){n=e,o=!0;break}n=Object.create(Object.getPrototypeOf(e));break;default:n={};for(const o in e)n[o]=l(e[o],t,r);o=!0}if(r.set(e,n),!o){const o=Object.getOwnPropertyDescriptors(e);for(const e of Reflect.ownKeys(o)){const f=o[e];"value"in f&&(f.value=l(f.value,t,r)),Object.defineProperty(n,e,f)}}return n}"undefined"!=typeof module?module.exports=c:self.ValyrianUtils=c})();//# sourceMappingURL=index.min.js.map
@@ -1 +1 @@
1
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRleF9leHBvcnRzIiwiX19leHBvcnQiLCJkZWVwQ2xvbmVVbmZyZWV6ZSIsImRlZXBGcmVlemUiLCJnZXQiLCJoYXNDaGFuZ2VkIiwic2V0IiwiX19FWFBPUlRTX18iLCJvYmoiLCJwYXRoIiwiZGVmYXVsdFZhbHVlIiwicmVzdWx0Iiwic3BsaXQiLCJyZWR1Y2UiLCJhY2MiLCJwYXJ0IiwidmFsdWUiLCJwYXJ0cyIsImxhc3QiLCJwb3AiLCJ0YXJnZXQiLCJwcmV2IiwiY3VycmVudCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImkiLCJrZXkiLCJPYmplY3QiLCJpcyIsImZyZWV6ZUNsYXNzSW5zdGFuY2VzIiwiaXNGcm96ZW4iLCJsIiwicHJvcHMiLCJSZWZsZWN0Iiwib3duS2V5cyIsInByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJwcm90b3R5cGUiLCJmcmVlemUiLCJjbG9uZUNsYXNzSW5zdGFuY2VzIiwic2VlbiIsIldlYWtNYXAiLCJoYXMiLCJjbG9uZSIsImNsb25lZCIsIkRhdGUiLCJnZXRUaW1lIiwiUmVnRXhwIiwic291cmNlIiwiZmxhZ3MiLCJNYXAiLCJlbnRyaWVzIiwiU2V0IiwidmFsdWVzIiwiYWRkIiwiQXJyYXlCdWZmZXIiLCJzbGljZSIsImlzVmlldyIsImNvbnN0cnVjdG9yIiwiYnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsIkVycm9yIiwibWVzc2FnZSIsIlByb21pc2UiLCJXZWFrU2V0IiwiY3JlYXRlIiwiZGVzY3JpcHRvcnMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVzY3JpcHRvciIsImRlZmluZVByb3BlcnR5Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzL2luZGV4LnRzIiwiLi4vLi4vbGliL3V0aWxzL2dldHRlci1zZXR0ZXIudHMiLCIuLi8uLi9saWIvdXRpbHMvaGFzLWNoYW5nZWQudHMiLCIuLi8uLi9saWIvdXRpbHMvZGVlcC1mcmVlemUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZ2V0dGVyLXNldHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaGFzLWNoYW5nZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlZXAtZnJlZXplXCI7XG4iLCIvLyBEb3Qgbm90YXRpb246IGdldChvYmosICdhLmIuYycgKSA9PT0gb2JqLmEuYi5jXG4vLyBnZXQob2JqLCAnYS4wLmMnKSA9PT0gb2JqLmFbMF0uY1xuZXhwb3J0IGZ1bmN0aW9uIGdldChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogdW5rbm93bikge1xuICBpZiAoIXBhdGggfHwgdHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIgfHwgIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgoYWNjOiBhbnksIHBhcnQpID0+IGFjYyAmJiBhY2M/LltwYXJ0XSwgb2JqKTtcblxuICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgbnVsbDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIERvdCBub3RhdGlvbjogc2V0KG9iaiwgJ2EuYi5jJywgdmFsdWUpID09PSBvYmouYS5iLmMgPSB2YWx1ZVxuLy8gc2V0KG9iaiwgJ2EuMC5jJywgdmFsdWUpID09PSBvYmouYVswXS5jID0gdmFsdWVcbmV4cG9ydCBmdW5jdGlvbiBzZXQob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICBpZiAoIXBhdGggfHwgdHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIgfHwgIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcbiAgY29uc3QgbGFzdCA9IHBhcnRzLnBvcCgpO1xuXG4gIGlmICghbGFzdCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCB0YXJnZXQgPSBvYmo7XG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmICghdGFyZ2V0W3BhcnRdKSB7XG4gICAgICB0YXJnZXRbcGFydF0gPSB7fTtcbiAgICB9XG4gICAgdGFyZ2V0ID0gdGFyZ2V0W3BhcnRdO1xuICB9XG5cbiAgdGFyZ2V0W2xhc3RdID0gdmFsdWU7XG59XG4iLCIvLyBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGRlcGVuZGVuY2llcyBoYXZlIGNoYW5nZWQgcmVjdXJzaXZlbHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG5leHBvcnQgZnVuY3Rpb24gaGFzQ2hhbmdlZChwcmV2OiBhbnksIGN1cnJlbnQ6IGFueSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShwcmV2KSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByZXYubGVuZ3RoICE9PSBjdXJyZW50Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaGFzQ2hhbmdlZChwcmV2W2ldLCBjdXJyZW50W2ldKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByZXYgPT09IFwib2JqZWN0XCIgJiYgcHJldiAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlb2YgY3VycmVudCAhPT0gXCJvYmplY3RcIiB8fCBjdXJyZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjdXJyZW50KSB7XG4gICAgICBpZiAoaGFzQ2hhbmdlZChwcmV2W2tleV0sIGN1cnJlbnRba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcHJldikge1xuICAgICAgaWYgKGhhc0NoYW5nZWQocHJldltrZXldLCBjdXJyZW50W2tleV0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuaXMocHJldiwgY3VycmVudCkgPT09IGZhbHNlO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGRlZXBGcmVlemUob2JqOiBhbnksIGZyZWV6ZUNsYXNzSW5zdGFuY2VzOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuICBpZiAodHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIiAmJiBvYmogIT09IG51bGwgJiYgIU9iamVjdC5pc0Zyb3plbihvYmopKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGRlZXBGcmVlemUob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJvcHMgPSBSZWZsZWN0Lm93bktleXMob2JqKTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gcHJvcHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGRlZXBGcmVlemUob2JqW3Byb3BzW2ldXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyAobm90IGEgcGxhaW4gb2JqZWN0IG9yIGFycmF5KSB3ZSBuZWVkIHRvIGZyZWV6ZSB0aGUgcHJvdG90eXBlXG4gICAgICBpZiAoZnJlZXplQ2xhc3NJbnN0YW5jZXMpIHtcbiAgICAgICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTtcbiAgICAgICAgaWYgKHByb3RvICYmIHByb3RvICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgICAgICAgZGVlcEZyZWV6ZShwcm90byk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmZyZWV6ZShvYmopO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBDbG9uZVVuZnJlZXplPFQ+KG9iajogVCwgY2xvbmVDbGFzc0luc3RhbmNlcyA9IGZhbHNlLCBzZWVuID0gbmV3IFdlYWtNYXAoKSk6IFQge1xuICBpZiAodHlwZW9mIG9iaiA9PT0gXCJ1bmRlZmluZWRcIiB8fCBvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICBpZiAoc2Vlbi5oYXMob2JqKSkge1xuICAgIHJldHVybiBzZWVuLmdldChvYmopO1xuICB9XG5cbiAgbGV0IGNsb25lOiBhbnk7XG4gIGxldCBjbG9uZWQgPSBmYWxzZTtcblxuICBzd2l0Y2ggKHRydWUpIHtcbiAgICBjYXNlIEFycmF5LmlzQXJyYXkob2JqKToge1xuICAgICAgY2xvbmUgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBjbG9uZVtpXSA9IGRlZXBDbG9uZVVuZnJlZXplKG9ialtpXSwgY2xvbmVDbGFzc0luc3RhbmNlcywgc2Vlbik7XG4gICAgICB9XG4gICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2Ugb2JqIGluc3RhbmNlb2YgRGF0ZToge1xuICAgICAgY2xvbmUgPSBuZXcgRGF0ZShvYmouZ2V0VGltZSgpKTtcbiAgICAgIGNsb25lZCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBvYmogaW5zdGFuY2VvZiBSZWdFeHA6IHtcbiAgICAgIGNsb25lID0gbmV3IFJlZ0V4cChvYmouc291cmNlLCBvYmouZmxhZ3MpO1xuICAgICAgY2xvbmVkID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIG9iaiBpbnN0YW5jZW9mIE1hcDoge1xuICAgICAgY2xvbmUgPSBuZXcgTWFwKCk7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBvYmouZW50cmllcygpKSB7XG4gICAgICAgIGNsb25lLnNldChcbiAgICAgICAgICBkZWVwQ2xvbmVVbmZyZWV6ZShrZXksIGNsb25lQ2xhc3NJbnN0YW5jZXMsIHNlZW4pLFxuICAgICAgICAgIGRlZXBDbG9uZVVuZnJlZXplKHZhbHVlLCBjbG9uZUNsYXNzSW5zdGFuY2VzLCBzZWVuKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgY2xvbmVkID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIG9iaiBpbnN0YW5jZW9mIFNldDoge1xuICAgICAgY2xvbmUgPSBuZXcgU2V0KCk7XG4gICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIG9iai52YWx1ZXMoKSkge1xuICAgICAgICBjbG9uZS5hZGQoZGVlcENsb25lVW5mcmVlemUodmFsdWUsIGNsb25lQ2xhc3NJbnN0YW5jZXMsIHNlZW4pKTtcbiAgICAgIH1cbiAgICAgIGNsb25lZCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBvYmogaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcjoge1xuICAgICAgY2xvbmUgPSBvYmouc2xpY2UoMCk7XG4gICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIFR5cGVkQXJyYXlzIGFuZCBEYXRhVmlld1xuICAgIGNhc2UgQXJyYXlCdWZmZXIuaXNWaWV3KG9iaik6IHtcbiAgICAgIGNsb25lID0gbmV3IChvYmogYXMgYW55KS5jb25zdHJ1Y3RvcihvYmouYnVmZmVyLnNsaWNlKDApKTtcbiAgICAgIGNsb25lZCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gTm9kZS5qcyBCdWZmZXJcbiAgICBjYXNlIHR5cGVvZiBCdWZmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgb2JqIGluc3RhbmNlb2YgQnVmZmVyOiB7XG4gICAgICBjbG9uZSA9IEJ1ZmZlci5mcm9tKG9iaik7XG4gICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2Ugb2JqIGluc3RhbmNlb2YgRXJyb3I6IHtcbiAgICAgIGNsb25lID0gbmV3IChvYmogYXMgYW55KS5jb25zdHJ1Y3RvcihvYmoubWVzc2FnZSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gTm9uIGNsb25hYmxlIG9iamVjdHNcbiAgICBjYXNlIG9iaiBpbnN0YW5jZW9mIFByb21pc2UgfHxcbiAgICAgIG9iaiBpbnN0YW5jZW9mIFdlYWtNYXAgfHxcbiAgICAgIG9iaiBpbnN0YW5jZW9mIFdlYWtTZXQgfHxcbiAgICAgIHR5cGVvZiBvYmogPT09IFwiZnVuY3Rpb25cIiB8fFxuICAgICAgdHlwZW9mIG9iaiA9PT0gXCJzeW1ib2xcIjoge1xuICAgICAgY2xvbmUgPSBvYmo7XG4gICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIEluc3RhbmNlIG9mIGEgY2xhc3NcbiAgICBjYXNlIG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IgIT09IE9iamVjdDoge1xuICAgICAgaWYgKCFjbG9uZUNsYXNzSW5zdGFuY2VzKSB7XG4gICAgICAgIGNsb25lID0gb2JqO1xuICAgICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNsb25lID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBQbGFpbiBvYmplY3RzXG4gICAgZGVmYXVsdDoge1xuICAgICAgY2xvbmUgPSB7fTtcblxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGNsb25lW2tleV0gPSBkZWVwQ2xvbmVVbmZyZWV6ZShvYmpba2V5XSwgY2xvbmVDbGFzc0luc3RhbmNlcywgc2Vlbik7XG4gICAgICB9XG5cbiAgICAgIGNsb25lZCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZWVuLnNldChvYmosIGNsb25lKTtcblxuICBpZiAoIWNsb25lZCkge1xuICAgIGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXMoZGVzY3JpcHRvcnMpKSB7XG4gICAgICBjb25zdCBkZXNjcmlwdG9yID0gZGVzY3JpcHRvcnNba2V5IGFzIHN0cmluZ107XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IGRlZXBDbG9uZVVuZnJlZXplKGRlc2NyaXB0b3IudmFsdWUsIGNsb25lQ2xhc3NJbnN0YW5jZXMsIHNlZW4pO1xuICAgICAgfVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNsb25lLCBrZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbG9uZTtcbn1cbiJdLCJtYXBwaW5ncyI6ImdKQUFBQSxFQUFBLEcseURBQUFDLENBQUFELEVBQUEsQ0FBQUUsa0JBQUEsSUFBQUEsRUFBQUMsV0FBQSxJQUFBQSxFQUFBQyxJQUFBLElBQUFBLEVBQUFDLFdBQUEsSUFBQUEsRUFBQUMsSUFBQSxJQUFBQSxJQUFBLEksRUFBQUMsRyxFQUFBUCxFLDBNQ0VPLFNBQVNJLEVBQUlJLEVBQWNDLEVBQWNDLEdBQzlDLElBQUtELEdBQXdCLGlCQUFUQSxJQUFzQkQsR0FBc0IsaUJBQVJBLEVBQ3RELE9BQU9FLEVBR1QsTUFBTUMsRUFBU0YsRUFBS0csTUFBTSxLQUFLQyxPQUFPLENBQUNDLEVBQVVDLElBQVNELEdBQU9BLElBQU1DLEdBQU9QLEdBRTlFLFlBQXNCLElBQVhHLEVBQ0ZELEdBQWdCLEtBR2xCQyxDQUNULENBSU8sU0FBU0wsRUFBSUUsRUFBVUMsRUFBY08sR0FDMUMsSUFBS1AsR0FBd0IsaUJBQVRBLElBQXNCRCxHQUFzQixpQkFBUkEsRUFDdEQsT0FHRixNQUFNUyxFQUFRUixFQUFLRyxNQUFNLEtBQ25CTSxFQUFPRCxFQUFNRSxNQUVuQixJQUFLRCxFQUNILE9BR0YsSUFBSUUsRUFBU1osRUFDYixVQUFXTyxLQUFRRSxFQUNaRyxFQUFPTCxLQUNWSyxFQUFPTCxHQUFRLENBQUMsR0FFbEJLLEVBQVNBLEVBQU9MLEdBR2xCSyxFQUFPRixHQUFRRixDQUNqQixDQ3JDTyxTQUFTWCxFQUFXZ0IsRUFBV0MsR0FDcEMsR0FBSUMsTUFBTUMsUUFBUUgsR0FBTyxDQUN2QixJQUErQixJQUEzQkUsTUFBTUMsUUFBUUYsR0FDaEIsT0FBTyxFQUdULEdBQUlELEVBQUtJLFNBQVdILEVBQVFHLE9BQzFCLE9BQU8sRUFHVCxRQUFTQyxFQUFJLEVBQUdBLEVBQUlKLEVBQVFHLE9BQVFDLElBQ2xDLEdBQUlyQixFQUFXZ0IsRUFBS0ssR0FBSUosRUFBUUksSUFDOUIsT0FBTyxFQUlYLE9BQU8sQ0FDVCxDQUVBLEdBQW9CLGlCQUFUTCxHQUE4QixPQUFUQSxFQUFlLENBQzdDLEdBQXVCLGlCQUFaQyxHQUFvQyxPQUFaQSxFQUNqQyxPQUFPLEVBR1QsVUFBV0ssS0FBT0wsRUFDaEIsR0FBSWpCLEVBQVdnQixFQUFLTSxHQUFNTCxFQUFRSyxJQUNoQyxPQUFPLEVBSVgsVUFBV0EsS0FBT04sRUFDaEIsR0FBSWhCLEVBQVdnQixFQUFLTSxHQUFNTCxFQUFRSyxJQUNoQyxPQUFPLEVBSVgsT0FBTyxDQUNULENBRUEsT0FBb0MsSUFBN0JDLE9BQU9DLEdBQUdSLEVBQU1DLEVBQ3pCLENDMUNPLFNBQVNuQixFQUFXSyxFQUFVc0IsR0FBZ0MsR0FDbkUsR0FBbUIsaUJBQVJ0QixHQUE0QixPQUFSQSxJQUFpQm9CLE9BQU9HLFNBQVN2QixHQUFNLENBQ3BFLEdBQUllLE1BQU1DLFFBQVFoQixHQUNoQixRQUFTa0IsRUFBSSxFQUFHTSxFQUFJeEIsRUFBSWlCLE9BQVFDLEVBQUlNLEVBQUdOLElBQ3JDdkIsRUFBV0ssRUFBSWtCLFFBRVosQ0FDTCxNQUFNTyxFQUFRQyxRQUFRQyxRQUFRM0IsR0FDOUIsUUFBU2tCLEVBQUksRUFBR00sRUFBSUMsRUFBTVIsT0FBUUMsRUFBSU0sRUFBR04sSUFDdkN2QixFQUFXSyxFQUFJeUIsRUFBTVAsS0FJdkIsR0FBSUksRUFBc0IsQ0FDeEIsTUFBTU0sRUFBUVIsT0FBT1MsZUFBZTdCLEdBQ2hDNEIsR0FBU0EsSUFBVVIsT0FBT1UsV0FDNUJuQyxFQUFXaUMsRUFFZixDQUNGLENBQ0FSLE9BQU9XLE9BQU8vQixFQUNoQixDQUVBLE9BQU9BLENBQ1QsQ0FFTyxTQUFTTixFQUFxQk0sRUFBUWdDLEdBQXNCLEVBQU9DLEVBQU8sSUFBSUMsU0FDbkYsR0FBSSxNQUFPbEMsR0FBc0QsaUJBQVJBLEVBQ3ZELE9BQU9BLEVBR1QsR0FBSWlDLEVBQUtFLElBQUluQyxHQUNYLE9BQU9pQyxFQUFLckMsSUFBSUksR0FHbEIsSUFBSW9DLEVBQ0FDLEdBQVMsRUFFYixRQUFRLEdBQ04sS0FBS3RCLE1BQU1DLFFBQVFoQixHQUNqQm9DLEVBQVEsR0FDUixRQUFTbEIsRUFBSSxFQUFHTSxFQUFJeEIsRUFBSWlCLE9BQVFDLEVBQUlNLEVBQUdOLElBQ3JDa0IsRUFBTWxCLEdBQUt4QixFQUFrQk0sRUFBSWtCLEdBQUljLEVBQXFCQyxHQUU1REksR0FBUyxFQUNULE1BRUYsS0FBS3JDLGFBQWVzQyxLQUNsQkYsRUFBUSxJQUFJRSxLQUFLdEMsRUFBSXVDLFdBQ3JCRixHQUFTLEVBQ1QsTUFFRixLQUFLckMsYUFBZXdDLE9BQ2xCSixFQUFRLElBQUlJLE9BQU94QyxFQUFJeUMsT0FBUXpDLEVBQUkwQyxPQUNuQ0wsR0FBUyxFQUNULE1BRUYsS0FBS3JDLGFBQWUyQyxJQUNsQlAsRUFBUSxJQUFJTyxJQUNaLFVBQVl4QixFQUFLWCxLQUFVUixFQUFJNEMsVUFDN0JSLEVBQU10QyxJQUNKSixFQUFrQnlCLEVBQUthLEVBQXFCQyxHQUM1Q3ZDLEVBQWtCYyxFQUFPd0IsRUFBcUJDLElBR2xESSxHQUFTLEVBQ1QsTUFFRixLQUFLckMsYUFBZTZDLElBQ2xCVCxFQUFRLElBQUlTLElBQ1osVUFBV3JDLEtBQVNSLEVBQUk4QyxTQUN0QlYsRUFBTVcsSUFBSXJELEVBQWtCYyxFQUFPd0IsRUFBcUJDLElBRTFESSxHQUFTLEVBQ1QsTUFFRixLQUFLckMsYUFBZWdELFlBQ2xCWixFQUFRcEMsRUFBSWlELE1BQU0sR0FDbEJaLEdBQVMsRUFDVCxNQUdGLEtBQUtXLFlBQVlFLE9BQU9sRCxHQUN0Qm9DLEVBQVEsSUFBS3BDLEVBQVltRCxZQUFZbkQsRUFBSW9ELE9BQU9ILE1BQU0sSUFDdERaLEdBQVMsRUFDVCxNQUdGLElBQXVCLG9CQUFYZ0IsUUFBMEJyRCxhQUFlcUQsT0FDbkRqQixFQUFRaUIsT0FBT0MsS0FBS3RELEdBQ3BCcUMsR0FBUyxFQUNULE1BRUYsS0FBS3JDLGFBQWV1RCxNQUNsQm5CLEVBQVEsSUFBS3BDLEVBQVltRCxZQUFZbkQsRUFBSXdELFNBQ3pDLE1BR0YsS0FBS3hELGFBQWV5RCxTQUNsQnpELGFBQWVrQyxTQUNmbEMsYUFBZTBELFNBQ0EsbUJBQVIxRCxHQUNRLGlCQUFSQSxFQUNQb0MsRUFBUXBDLEVBQ1JxQyxHQUFTLEVBQ1QsTUFHRixLQUFLckMsRUFBSW1ELGFBQWVuRCxFQUFJbUQsY0FBZ0IvQixPQUMxQyxJQUFLWSxFQUFxQixDQUN4QkksRUFBUXBDLEVBQ1JxQyxHQUFTLEVBQ1QsS0FDRixDQUNBRCxFQUFRaEIsT0FBT3VDLE9BQU92QyxPQUFPUyxlQUFlN0IsSUFDNUMsTUFJRixRQUNFb0MsRUFBUSxDQUFDLEVBRVQsVUFBV2pCLEtBQU9uQixFQUNoQm9DLEVBQU1qQixHQUFPekIsRUFBa0JNLEVBQUltQixHQUFNYSxFQUFxQkMsR0FHaEVJLEdBQVMsRUFPYixHQUZBSixFQUFLbkMsSUFBSUUsRUFBS29DLElBRVRDLEVBQVEsQ0FDWCxNQUFNdUIsRUFBY3hDLE9BQU95QywwQkFBMEI3RCxHQUNyRCxVQUFXbUIsS0FBT08sUUFBUUMsUUFBUWlDLEdBQWMsQ0FDOUMsTUFBTUUsRUFBYUYsRUFBWXpDLEdBQzNCLFVBQVcyQyxJQUNiQSxFQUFXdEQsTUFBUWQsRUFBa0JvRSxFQUFXdEQsTUFBT3dCLEVBQXFCQyxJQUU5RWIsT0FBTzJDLGVBQWUzQixFQUFPakIsRUFBSzJDLEVBQ3BDLENBQ0YsQ0FFQSxPQUFPMUIsQ0FDVCxDIn0=
1
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRleF9leHBvcnRzIiwiX19leHBvcnQiLCJkZWVwQ2xvbmVVbmZyZWV6ZSIsImRlZXBGcmVlemUiLCJnZXQiLCJoYXNDaGFuZ2VkIiwic2V0IiwiX19FWFBPUlRTX18iLCJvYmoiLCJwYXRoIiwiZGVmYXVsdFZhbHVlIiwicmVzdWx0Iiwic3BsaXQiLCJyZWR1Y2UiLCJhY2MiLCJwYXJ0IiwidmFsdWUiLCJwYXJ0cyIsImxhc3QiLCJwb3AiLCJ0YXJnZXQiLCJwcmV2IiwiY3VycmVudCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsImkiLCJrZXkiLCJPYmplY3QiLCJpcyIsImZyZWV6ZUNsYXNzSW5zdGFuY2VzIiwic2VlbiIsIldlYWtTZXQiLCJoYXMiLCJpc0Zyb3plbiIsImFkZCIsImwiLCJwcm9wcyIsIlJlZmxlY3QiLCJvd25LZXlzIiwicHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsInByb3RvdHlwZSIsImZyZWV6ZSIsImNsb25lQ2xhc3NJbnN0YW5jZXMiLCJXZWFrTWFwIiwiY2xvbmUiLCJjbG9uZWQiLCJEYXRlIiwiZ2V0VGltZSIsIlJlZ0V4cCIsInNvdXJjZSIsImZsYWdzIiwiTWFwIiwiZW50cmllcyIsIlNldCIsInZhbHVlcyIsIkFycmF5QnVmZmVyIiwic2xpY2UiLCJpc1ZpZXciLCJjb25zdHJ1Y3RvciIsImJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJFcnJvciIsIm1lc3NhZ2UiLCJQcm9taXNlIiwiY3JlYXRlIiwiZGVzY3JpcHRvcnMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVzY3JpcHRvciIsImRlZmluZVByb3BlcnR5Il0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWxzL2luZGV4LnRzIiwiLi4vLi4vbGliL3V0aWxzL2dldHRlci1zZXR0ZXIudHMiLCIuLi8uLi9saWIvdXRpbHMvaGFzLWNoYW5nZWQudHMiLCIuLi8uLi9saWIvdXRpbHMvZGVlcC1mcmVlemUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZ2V0dGVyLXNldHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaGFzLWNoYW5nZWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlZXAtZnJlZXplXCI7XG4iLCIvLyBEb3Qgbm90YXRpb246IGdldChvYmosICdhLmIuYycgKSA9PT0gb2JqLmEuYi5jXG4vLyBnZXQob2JqLCAnYS4wLmMnKSA9PT0gb2JqLmFbMF0uY1xuZXhwb3J0IGZ1bmN0aW9uIGdldChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlPzogdW5rbm93bikge1xuICBpZiAoIXBhdGggfHwgdHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIgfHwgIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IHBhdGguc3BsaXQoXCIuXCIpLnJlZHVjZSgoYWNjOiBhbnksIHBhcnQpID0+IGFjYyAmJiBhY2M/LltwYXJ0XSwgb2JqKTtcblxuICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiBkZWZhdWx0VmFsdWUgfHwgbnVsbDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIERvdCBub3RhdGlvbjogc2V0KG9iaiwgJ2EuYi5jJywgdmFsdWUpID09PSBvYmouYS5iLmMgPSB2YWx1ZVxuLy8gc2V0KG9iaiwgJ2EuMC5jJywgdmFsdWUpID09PSBvYmouYVswXS5jID0gdmFsdWVcbmV4cG9ydCBmdW5jdGlvbiBzZXQob2JqOiBhbnksIHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICBpZiAoIXBhdGggfHwgdHlwZW9mIHBhdGggIT09IFwic3RyaW5nXCIgfHwgIW9iaiB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiLlwiKTtcbiAgY29uc3QgbGFzdCA9IHBhcnRzLnBvcCgpO1xuXG4gIGlmICghbGFzdCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCB0YXJnZXQgPSBvYmo7XG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmICghdGFyZ2V0W3BhcnRdKSB7XG4gICAgICB0YXJnZXRbcGFydF0gPSB7fTtcbiAgICB9XG4gICAgdGFyZ2V0ID0gdGFyZ2V0W3BhcnRdO1xuICB9XG5cbiAgdGFyZ2V0W2xhc3RdID0gdmFsdWU7XG59XG4iLCIvLyBVdGlsaXR5IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGRlcGVuZGVuY2llcyBoYXZlIGNoYW5nZWQgcmVjdXJzaXZlbHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG5leHBvcnQgZnVuY3Rpb24gaGFzQ2hhbmdlZChwcmV2OiBhbnksIGN1cnJlbnQ6IGFueSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShwcmV2KSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHByZXYubGVuZ3RoICE9PSBjdXJyZW50Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJyZW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoaGFzQ2hhbmdlZChwcmV2W2ldLCBjdXJyZW50W2ldKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIHByZXYgPT09IFwib2JqZWN0XCIgJiYgcHJldiAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlb2YgY3VycmVudCAhPT0gXCJvYmplY3RcIiB8fCBjdXJyZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBjdXJyZW50KSB7XG4gICAgICBpZiAoaGFzQ2hhbmdlZChwcmV2W2tleV0sIGN1cnJlbnRba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcHJldikge1xuICAgICAgaWYgKGhhc0NoYW5nZWQocHJldltrZXldLCBjdXJyZW50W2tleV0pKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuaXMocHJldiwgY3VycmVudCkgPT09IGZhbHNlO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGRlZXBGcmVlemUob2JqOiBhbnksIGZyZWV6ZUNsYXNzSW5zdGFuY2VzOiBib29sZWFuID0gZmFsc2UsIHNlZW4gPSBuZXcgV2Vha1NldCgpKTogYW55IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiIHx8IHNlZW4uaGFzKG9iaikgfHwgT2JqZWN0LmlzRnJvemVuKG9iaikpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgc2Vlbi5hZGQob2JqKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvYmoubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBkZWVwRnJlZXplKG9ialtpXSwgZnJlZXplQ2xhc3NJbnN0YW5jZXMsIHNlZW4pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwcm9wcyA9IFJlZmxlY3Qub3duS2V5cyhvYmopO1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gcHJvcHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBkZWVwRnJlZXplKG9ialtwcm9wc1tpXV0sIGZyZWV6ZUNsYXNzSW5zdGFuY2VzLCBzZWVuKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgKG5vdCBhIHBsYWluIG9iamVjdCBvciBhcnJheSkgd2UgbmVlZCB0byBmcmVlemUgdGhlIHByb3RvdHlwZVxuICAgIGlmIChmcmVlemVDbGFzc0luc3RhbmNlcykge1xuICAgICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTtcbiAgICAgIGlmIChwcm90byAmJiBwcm90byAhPT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgICAgICBkZWVwRnJlZXplKHByb3RvLCBmcmVlemVDbGFzc0luc3RhbmNlcywgc2Vlbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmZyZWV6ZShvYmopO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWVwQ2xvbmVVbmZyZWV6ZTxUPihvYmo6IFQsIGNsb25lQ2xhc3NJbnN0YW5jZXMgPSBmYWxzZSwgc2VlbiA9IG5ldyBXZWFrTWFwKCkpOiBUIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgfHwgb2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgaWYgKHNlZW4uaGFzKG9iaikpIHtcbiAgICByZXR1cm4gc2Vlbi5nZXQob2JqKTtcbiAgfVxuXG4gIGxldCBjbG9uZTogYW55O1xuICBsZXQgY2xvbmVkID0gZmFsc2U7XG5cbiAgc3dpdGNoICh0cnVlKSB7XG4gICAgY2FzZSBBcnJheS5pc0FycmF5KG9iaik6IHtcbiAgICAgIGNsb25lID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY2xvbmVbaV0gPSBkZWVwQ2xvbmVVbmZyZWV6ZShvYmpbaV0sIGNsb25lQ2xhc3NJbnN0YW5jZXMsIHNlZW4pO1xuICAgICAgfVxuICAgICAgY2xvbmVkID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIG9iaiBpbnN0YW5jZW9mIERhdGU6IHtcbiAgICAgIGNsb25lID0gbmV3IERhdGUob2JqLmdldFRpbWUoKSk7XG4gICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2Ugb2JqIGluc3RhbmNlb2YgUmVnRXhwOiB7XG4gICAgICBjbG9uZSA9IG5ldyBSZWdFeHAob2JqLnNvdXJjZSwgb2JqLmZsYWdzKTtcbiAgICAgIGNsb25lZCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBvYmogaW5zdGFuY2VvZiBNYXA6IHtcbiAgICAgIGNsb25lID0gbmV3IE1hcCgpO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2Ygb2JqLmVudHJpZXMoKSkge1xuICAgICAgICBjbG9uZS5zZXQoXG4gICAgICAgICAgZGVlcENsb25lVW5mcmVlemUoa2V5LCBjbG9uZUNsYXNzSW5zdGFuY2VzLCBzZWVuKSxcbiAgICAgICAgICBkZWVwQ2xvbmVVbmZyZWV6ZSh2YWx1ZSwgY2xvbmVDbGFzc0luc3RhbmNlcywgc2VlbilcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNsb25lZCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSBvYmogaW5zdGFuY2VvZiBTZXQ6IHtcbiAgICAgIGNsb25lID0gbmV3IFNldCgpO1xuICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBvYmoudmFsdWVzKCkpIHtcbiAgICAgICAgY2xvbmUuYWRkKGRlZXBDbG9uZVVuZnJlZXplKHZhbHVlLCBjbG9uZUNsYXNzSW5zdGFuY2VzLCBzZWVuKSk7XG4gICAgICB9XG4gICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2Ugb2JqIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI6IHtcbiAgICAgIGNsb25lID0gb2JqLnNsaWNlKDApO1xuICAgICAgY2xvbmVkID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBUeXBlZEFycmF5cyBhbmQgRGF0YVZpZXdcbiAgICBjYXNlIEFycmF5QnVmZmVyLmlzVmlldyhvYmopOiB7XG4gICAgICBjbG9uZSA9IG5ldyAob2JqIGFzIGFueSkuY29uc3RydWN0b3Iob2JqLmJ1ZmZlci5zbGljZSgwKSk7XG4gICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIE5vZGUuanMgQnVmZmVyXG4gICAgY2FzZSB0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIG9iaiBpbnN0YW5jZW9mIEJ1ZmZlcjoge1xuICAgICAgY2xvbmUgPSBCdWZmZXIuZnJvbShvYmopO1xuICAgICAgY2xvbmVkID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIG9iaiBpbnN0YW5jZW9mIEVycm9yOiB7XG4gICAgICBjbG9uZSA9IG5ldyAob2JqIGFzIGFueSkuY29uc3RydWN0b3Iob2JqLm1lc3NhZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIE5vbiBjbG9uYWJsZSBvYmplY3RzXG4gICAgY2FzZSBvYmogaW5zdGFuY2VvZiBQcm9taXNlIHx8XG4gICAgICBvYmogaW5zdGFuY2VvZiBXZWFrTWFwIHx8XG4gICAgICBvYmogaW5zdGFuY2VvZiBXZWFrU2V0IHx8XG4gICAgICB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgfHxcbiAgICAgIHR5cGVvZiBvYmogPT09IFwic3ltYm9sXCI6IHtcbiAgICAgIGNsb25lID0gb2JqO1xuICAgICAgY2xvbmVkID0gdHJ1ZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBJbnN0YW5jZSBvZiBhIGNsYXNzXG4gICAgY2FzZSBvYmouY29uc3RydWN0b3IgJiYgb2JqLmNvbnN0cnVjdG9yICE9PSBPYmplY3Q6IHtcbiAgICAgIGlmICghY2xvbmVDbGFzc0luc3RhbmNlcykge1xuICAgICAgICBjbG9uZSA9IG9iajtcbiAgICAgICAgY2xvbmVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjbG9uZSA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gUGxhaW4gb2JqZWN0c1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIGNsb25lID0ge307XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBjbG9uZVtrZXldID0gZGVlcENsb25lVW5mcmVlemUob2JqW2tleV0sIGNsb25lQ2xhc3NJbnN0YW5jZXMsIHNlZW4pO1xuICAgICAgfVxuXG4gICAgICBjbG9uZWQgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2Vlbi5zZXQob2JqLCBjbG9uZSk7XG5cbiAgaWYgKCFjbG9uZWQpIHtcbiAgICBjb25zdCBkZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iaik7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKGRlc2NyaXB0b3JzKSkge1xuICAgICAgY29uc3QgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JzW2tleSBhcyBzdHJpbmddO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSB7XG4gICAgICAgIGRlc2NyaXB0b3IudmFsdWUgPSBkZWVwQ2xvbmVVbmZyZWV6ZShkZXNjcmlwdG9yLnZhbHVlLCBjbG9uZUNsYXNzSW5zdGFuY2VzLCBzZWVuKTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbG9uZSwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xvbmU7XG59XG4iXSwibWFwcGluZ3MiOiJnSkFBQUEsRUFBQSxHLHlEQUFBQyxDQUFBRCxFQUFBLENBQUFFLGtCQUFBLElBQUFBLEVBQUFDLFdBQUEsSUFBQUEsRUFBQUMsSUFBQSxJQUFBQSxFQUFBQyxX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
@@ -64,26 +64,28 @@ function hasChanged(prev, current) {
64
64
  }
65
65
 
66
66
  // lib/utils/deep-freeze.ts
67
- function deepFreeze(obj, freezeClassInstances = false) {
68
- if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
69
- if (Array.isArray(obj)) {
70
- for (let i = 0, l = obj.length; i < l; i++) {
71
- deepFreeze(obj[i]);
72
- }
73
- } else {
74
- const props = Reflect.ownKeys(obj);
75
- for (let i = 0, l = props.length; i < l; i++) {
76
- deepFreeze(obj[props[i]]);
77
- }
78
- if (freezeClassInstances) {
79
- const proto = Object.getPrototypeOf(obj);
80
- if (proto && proto !== Object.prototype) {
81
- deepFreeze(proto);
82
- }
67
+ function deepFreeze(obj, freezeClassInstances = false, seen = /* @__PURE__ */ new WeakSet()) {
68
+ if (obj === null || typeof obj !== "object" || seen.has(obj) || Object.isFrozen(obj)) {
69
+ return obj;
70
+ }
71
+ seen.add(obj);
72
+ if (Array.isArray(obj)) {
73
+ for (let i = 0, l = obj.length; i < l; i++) {
74
+ deepFreeze(obj[i], freezeClassInstances, seen);
75
+ }
76
+ } else {
77
+ const props = Reflect.ownKeys(obj);
78
+ for (let i = 0, l = props.length; i < l; i++) {
79
+ deepFreeze(obj[props[i]], freezeClassInstances, seen);
80
+ }
81
+ if (freezeClassInstances) {
82
+ const proto = Object.getPrototypeOf(obj);
83
+ if (proto && proto !== Object.prototype) {
84
+ deepFreeze(proto, freezeClassInstances, seen);
83
85
  }
84
86
  }
85
- Object.freeze(obj);
86
87
  }
88
+ Object.freeze(obj);
87
89
  return obj;
88
90
  }
89
91
  function deepCloneUnfreeze(obj, cloneClassInstances = false, seen = /* @__PURE__ */ new WeakMap()) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../lib/utils/getter-setter.ts", "../../lib/utils/has-changed.ts", "../../lib/utils/deep-freeze.ts"],
4
- "sourcesContent": ["// Dot notation: get(obj, 'a.b.c' ) === obj.a.b.c\n// get(obj, 'a.0.c') === obj.a[0].c\nexport function get(obj: unknown, path: string, defaultValue?: unknown) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return defaultValue;\n }\n\n const result = path.split(\".\").reduce((acc: any, part) => acc && acc?.[part], obj);\n\n if (typeof result === \"undefined\") {\n return defaultValue || null;\n }\n\n return result;\n}\n\n// Dot notation: set(obj, 'a.b.c', value) === obj.a.b.c = value\n// set(obj, 'a.0.c', value) === obj.a[0].c = value\nexport function set(obj: any, path: string, value: any) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return;\n }\n\n const parts = path.split(\".\");\n const last = parts.pop();\n\n if (!last) {\n return;\n }\n\n let target = obj;\n for (const part of parts) {\n if (!target[part]) {\n target[part] = {};\n }\n target = target[part];\n }\n\n target[last] = value;\n}\n", "// Utility function to check if dependencies have changed recursively\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function hasChanged(prev: any, current: any) {\n if (Array.isArray(prev)) {\n if (Array.isArray(current) === false) {\n return true;\n }\n\n if (prev.length !== current.length) {\n return true;\n }\n\n for (let i = 0; i < current.length; i++) {\n if (hasChanged(prev[i], current[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n if (typeof prev === \"object\" && prev !== null) {\n if (typeof current !== \"object\" || current === null) {\n return true;\n }\n\n for (const key in current) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n for (const key in prev) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n return false;\n }\n\n return Object.is(prev, current) === false;\n}\n", "export function deepFreeze(obj: any, freezeClassInstances: boolean = false): any {\n if (typeof obj === \"object\" && obj !== null && !Object.isFrozen(obj)) {\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i]);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]]);\n }\n\n // If the object is an instance of a class (not a plain object or array) we need to freeze the prototype\n if (freezeClassInstances) {\n const proto = Object.getPrototypeOf(obj);\n if (proto && proto !== Object.prototype) {\n deepFreeze(proto);\n }\n }\n }\n Object.freeze(obj);\n }\n\n return obj;\n}\n\nexport function deepCloneUnfreeze<T>(obj: T, cloneClassInstances = false, seen = new WeakMap()): T {\n if (typeof obj === \"undefined\" || obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (seen.has(obj)) {\n return seen.get(obj);\n }\n\n let clone: any;\n let cloned = false;\n\n switch (true) {\n case Array.isArray(obj): {\n clone = [];\n for (let i = 0, l = obj.length; i < l; i++) {\n clone[i] = deepCloneUnfreeze(obj[i], cloneClassInstances, seen);\n }\n cloned = true;\n break;\n }\n case obj instanceof Date: {\n clone = new Date(obj.getTime());\n cloned = true;\n break;\n }\n case obj instanceof RegExp: {\n clone = new RegExp(obj.source, obj.flags);\n cloned = true;\n break;\n }\n case obj instanceof Map: {\n clone = new Map();\n for (const [key, value] of obj.entries()) {\n clone.set(\n deepCloneUnfreeze(key, cloneClassInstances, seen),\n deepCloneUnfreeze(value, cloneClassInstances, seen)\n );\n }\n cloned = true;\n break;\n }\n case obj instanceof Set: {\n clone = new Set();\n for (const value of obj.values()) {\n clone.add(deepCloneUnfreeze(value, cloneClassInstances, seen));\n }\n cloned = true;\n break;\n }\n case obj instanceof ArrayBuffer: {\n clone = obj.slice(0);\n cloned = true;\n break;\n }\n // TypedArrays and DataView\n case ArrayBuffer.isView(obj): {\n clone = new (obj as any).constructor(obj.buffer.slice(0));\n cloned = true;\n break;\n }\n // Node.js Buffer\n case typeof Buffer !== \"undefined\" && obj instanceof Buffer: {\n clone = Buffer.from(obj);\n cloned = true;\n break;\n }\n case obj instanceof Error: {\n clone = new (obj as any).constructor(obj.message);\n break;\n }\n // Non clonable objects\n case obj instanceof Promise ||\n obj instanceof WeakMap ||\n obj instanceof WeakSet ||\n typeof obj === \"function\" ||\n typeof obj === \"symbol\": {\n clone = obj;\n cloned = true;\n break;\n }\n // Instance of a class\n case obj.constructor && obj.constructor !== Object: {\n if (!cloneClassInstances) {\n clone = obj;\n cloned = true;\n break;\n }\n clone = Object.create(Object.getPrototypeOf(obj));\n break;\n }\n\n // Plain objects\n default: {\n clone = {};\n\n for (const key in obj) {\n clone[key] = deepCloneUnfreeze(obj[key], cloneClassInstances, seen);\n }\n\n cloned = true;\n break;\n }\n }\n\n seen.set(obj, clone);\n\n if (!cloned) {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n for (const key of Reflect.ownKeys(descriptors)) {\n const descriptor = descriptors[key as string];\n if (\"value\" in descriptor) {\n descriptor.value = deepCloneUnfreeze(descriptor.value, cloneClassInstances, seen);\n }\n Object.defineProperty(clone, key, descriptor);\n }\n }\n\n return clone;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Dot notation: get(obj, 'a.b.c' ) === obj.a.b.c\n// get(obj, 'a.0.c') === obj.a[0].c\nexport function get(obj: unknown, path: string, defaultValue?: unknown) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return defaultValue;\n }\n\n const result = path.split(\".\").reduce((acc: any, part) => acc && acc?.[part], obj);\n\n if (typeof result === \"undefined\") {\n return defaultValue || null;\n }\n\n return result;\n}\n\n// Dot notation: set(obj, 'a.b.c', value) === obj.a.b.c = value\n// set(obj, 'a.0.c', value) === obj.a[0].c = value\nexport function set(obj: any, path: string, value: any) {\n if (!path || typeof path !== \"string\" || !obj || typeof obj !== \"object\") {\n return;\n }\n\n const parts = path.split(\".\");\n const last = parts.pop();\n\n if (!last) {\n return;\n }\n\n let target = obj;\n for (const part of parts) {\n if (!target[part]) {\n target[part] = {};\n }\n target = target[part];\n }\n\n target[last] = value;\n}\n", "// Utility function to check if dependencies have changed recursively\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport function hasChanged(prev: any, current: any) {\n if (Array.isArray(prev)) {\n if (Array.isArray(current) === false) {\n return true;\n }\n\n if (prev.length !== current.length) {\n return true;\n }\n\n for (let i = 0; i < current.length; i++) {\n if (hasChanged(prev[i], current[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n if (typeof prev === \"object\" && prev !== null) {\n if (typeof current !== \"object\" || current === null) {\n return true;\n }\n\n for (const key in current) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n for (const key in prev) {\n if (hasChanged(prev[key], current[key])) {\n return true;\n }\n }\n\n return false;\n }\n\n return Object.is(prev, current) === false;\n}\n", "export function deepFreeze(obj: any, freezeClassInstances: boolean = false, seen = new WeakSet()): any {\n if (obj === null || typeof obj !== \"object\" || seen.has(obj) || Object.isFrozen(obj)) {\n return obj;\n }\n\n seen.add(obj);\n\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n deepFreeze(obj[i], freezeClassInstances, seen);\n }\n } else {\n const props = Reflect.ownKeys(obj);\n for (let i = 0, l = props.length; i < l; i++) {\n deepFreeze(obj[props[i]], freezeClassInstances, seen);\n }\n\n // If the object is an instance of a class (not a plain object or array) we need to freeze the prototype\n if (freezeClassInstances) {\n const proto = Object.getPrototypeOf(obj);\n if (proto && proto !== Object.prototype) {\n deepFreeze(proto, freezeClassInstances, seen);\n }\n }\n }\n\n Object.freeze(obj);\n\n return obj;\n}\n\nexport function deepCloneUnfreeze<T>(obj: T, cloneClassInstances = false, seen = new WeakMap()): T {\n if (typeof obj === \"undefined\" || obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (seen.has(obj)) {\n return seen.get(obj);\n }\n\n let clone: any;\n let cloned = false;\n\n switch (true) {\n case Array.isArray(obj): {\n clone = [];\n for (let i = 0, l = obj.length; i < l; i++) {\n clone[i] = deepCloneUnfreeze(obj[i], cloneClassInstances, seen);\n }\n cloned = true;\n break;\n }\n case obj instanceof Date: {\n clone = new Date(obj.getTime());\n cloned = true;\n break;\n }\n case obj instanceof RegExp: {\n clone = new RegExp(obj.source, obj.flags);\n cloned = true;\n break;\n }\n case obj instanceof Map: {\n clone = new Map();\n for (const [key, value] of obj.entries()) {\n clone.set(\n deepCloneUnfreeze(key, cloneClassInstances, seen),\n deepCloneUnfreeze(value, cloneClassInstances, seen)\n );\n }\n cloned = true;\n break;\n }\n case obj instanceof Set: {\n clone = new Set();\n for (const value of obj.values()) {\n clone.add(deepCloneUnfreeze(value, cloneClassInstances, seen));\n }\n cloned = true;\n break;\n }\n case obj instanceof ArrayBuffer: {\n clone = obj.slice(0);\n cloned = true;\n break;\n }\n // TypedArrays and DataView\n case ArrayBuffer.isView(obj): {\n clone = new (obj as any).constructor(obj.buffer.slice(0));\n cloned = true;\n break;\n }\n // Node.js Buffer\n case typeof Buffer !== \"undefined\" && obj instanceof Buffer: {\n clone = Buffer.from(obj);\n cloned = true;\n break;\n }\n case obj instanceof Error: {\n clone = new (obj as any).constructor(obj.message);\n break;\n }\n // Non clonable objects\n case obj instanceof Promise ||\n obj instanceof WeakMap ||\n obj instanceof WeakSet ||\n typeof obj === \"function\" ||\n typeof obj === \"symbol\": {\n clone = obj;\n cloned = true;\n break;\n }\n // Instance of a class\n case obj.constructor && obj.constructor !== Object: {\n if (!cloneClassInstances) {\n clone = obj;\n cloned = true;\n break;\n }\n clone = Object.create(Object.getPrototypeOf(obj));\n break;\n }\n\n // Plain objects\n default: {\n clone = {};\n\n for (const key in obj) {\n clone[key] = deepCloneUnfreeze(obj[key], cloneClassInstances, seen);\n }\n\n cloned = true;\n break;\n }\n }\n\n seen.set(obj, clone);\n\n if (!cloned) {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n for (const key of Reflect.ownKeys(descriptors)) {\n const descriptor = descriptors[key as string];\n if (\"value\" in descriptor) {\n descriptor.value = deepCloneUnfreeze(descriptor.value, cloneClassInstances, seen);\n }\n Object.defineProperty(clone, key, descriptor);\n }\n }\n\n return clone;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,26 +1,31 @@
1
- export function deepFreeze(obj: any, freezeClassInstances: boolean = false): any {
2
- if (typeof obj === "object" && obj !== null && !Object.isFrozen(obj)) {
3
- if (Array.isArray(obj)) {
4
- for (let i = 0, l = obj.length; i < l; i++) {
5
- deepFreeze(obj[i]);
6
- }
7
- } else {
8
- const props = Reflect.ownKeys(obj);
9
- for (let i = 0, l = props.length; i < l; i++) {
10
- deepFreeze(obj[props[i]]);
11
- }
1
+ export function deepFreeze(obj: any, freezeClassInstances: boolean = false, seen = new WeakSet()): any {
2
+ if (obj === null || typeof obj !== "object" || seen.has(obj) || Object.isFrozen(obj)) {
3
+ return obj;
4
+ }
12
5
 
13
- // If the object is an instance of a class (not a plain object or array) we need to freeze the prototype
14
- if (freezeClassInstances) {
15
- const proto = Object.getPrototypeOf(obj);
16
- if (proto && proto !== Object.prototype) {
17
- deepFreeze(proto);
18
- }
6
+ seen.add(obj);
7
+
8
+ if (Array.isArray(obj)) {
9
+ for (let i = 0, l = obj.length; i < l; i++) {
10
+ deepFreeze(obj[i], freezeClassInstances, seen);
11
+ }
12
+ } else {
13
+ const props = Reflect.ownKeys(obj);
14
+ for (let i = 0, l = props.length; i < l; i++) {
15
+ deepFreeze(obj[props[i]], freezeClassInstances, seen);
16
+ }
17
+
18
+ // If the object is an instance of a class (not a plain object or array) we need to freeze the prototype
19
+ if (freezeClassInstances) {
20
+ const proto = Object.getPrototypeOf(obj);
21
+ if (proto && proto !== Object.prototype) {
22
+ deepFreeze(proto, freezeClassInstances, seen);
19
23
  }
20
24
  }
21
- Object.freeze(obj);
22
25
  }
23
26
 
27
+ Object.freeze(obj);
28
+
24
29
  return obj;
25
30
  }
26
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valyrian.js",
3
- "version": "8.1.4",
3
+ "version": "8.1.5",
4
4
  "description": "Lightweight steel to forge PWAs. (Minimal Frontend Framework with server side rendering and other capabilities)",
5
5
  "repository": "git@github.com:Masquerade-Circus/valyrian.js.git",
6
6
  "author": "Masquerade <christian@masquerade-circus.net>",