@decaf-ts/reflection
Advanced tools
Comparing version 0.3.6 to 0.3.8
/*! For license information please see reflection.bundle.min.esm.js.LICENSE.txt */ | ||
var t={720:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Reflection=void 0;const n=r(640),o=r(233);e.Reflection=class{constructor(){}static checkType(t,e){return typeof t===e.toLowerCase()||"object"==typeof t&&t.constructor&&t.constructor.name.toLowerCase()===e.toLowerCase()}static checkTypes(t,e){return!e.every((e=>!this.checkType(t,e)))}static evaluateDesignTypes(t,e){switch(typeof e){case"string":return this.checkType(t,e);case"object":return!Array.isArray(e)||this.checkTypes(t,e);case"function":return!e.name||"Object"===e.name||this.checkType(t,e.name);default:return!0}}static getAllProperties(t,e=!0,r="Object"){const n=[];let o=t;const i=function(){if(!e)return;const t=Object.getPrototypeOf(o);return t&&t.constructor.name!==r?(o=t,o):void 0};do{Object.getOwnPropertyNames(o).forEach((function(t){-1===n.indexOf(t)&&n.push(t)}))}while(i());return n}static getClassDecorators(t,e){return Reflect.getOwnMetadataKeys(e.constructor).filter((e=>e.toString().startsWith(t))).reduce(((r,n)=>{const o={key:n.substring(t.length),props:Reflect.getMetadata(n,e.constructor)};return r.concat(o)}),[])}static getAllPropertyDecorators(t,...e){if(e&&e.length)return Object.getOwnPropertyNames(t).reduce(((r,n)=>(e.forEach(((e,o)=>{const i=this.getPropertyDecorators(e,t,n,0!==o);r||(r={}),function(t,e,r){r&&r.length&&(t[e]||(t[e]=[]),t[e].push(...r))}(r,n,i.decorators)})),r)),void 0)}static getTypeFromDecorator(t,e){const r=this.getPropertyDecorators(n.ReflectionKeys.TYPE,t,e,!1);if(!r||!r.decorators)return;const o=r.decorators.shift(),i=o.props?o.props.name:void 0;return"Function"!==i?i:void 0}static getPropertyDecorators(t,e,r,i=!1,a=!0,u){const c=function(t,e,r,o=!1,i){const a=Reflect.getMetadataKeys(e,r).filter((e=>o?e.toString().startsWith(t):e===n.ReflectionKeys.TYPE||e.toString().startsWith(t))).reduce(((o,i)=>{const a={key:i!==n.ReflectionKeys.TYPE?i.substring(t.length):i,props:Reflect.getMetadata(i,e,r)};return o.concat(a)}),i||[]);return{prop:r.toString(),decorators:a}}(t,e,r,i,u);return a&&Object.getPrototypeOf(e)!==Object.prototype?this.getPropertyDecorators(t,Object.getPrototypeOf(e.constructor),r,!0,a,c.decorators):{prop:c.prop,decorators:function(t){const r={};return t.filter((t=>t.key in r?((0,o.isEqual)(t.props,r[t.key])||console.log(`Found a similar decorator for the ${t.key} propertyof a ${e.constructor.name} model but with different attributes.The original one will be kept`),!1):(r[t.key.toString()]=t.props,!0)))}(c.decorators)}}}},640:(t,e)=>{var r;Object.defineProperty(e,"__esModule",{value:!0}),e.ReflectionKeys=void 0,function(t){t.TYPE="design:type"}(r||(e.ReflectionKeys=r={}))},503:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.metadata=function(t,e){return(r,n,o)=>{o?Reflect.defineMetadata(t,e,o.value):n?Reflect.defineMetadata(t,e,r,n):Reflect.defineMetadata(t,e,r)}},e.apply=function(...t){return(e,r,n)=>{for(const o of t)e instanceof Function&&!n?o(e):o(e,r,n)}},r(630)},233:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.isEqual=function t(e,r,...n){if(e===r)return!0;if(e instanceof Date&&r instanceof Date)return e.getTime()===r.getTime();if(!e||!r||"object"!=typeof e&&"object"!=typeof r)return e===r;if(null==e||null==r)return!1;if(typeof e!=typeof r)return!1;if(e.prototype!==r.prototype)return!1;const o=Object.keys(e).filter((t=>-1===n.indexOf(t)));return o.length===Object.keys(r).filter((t=>-1===n.indexOf(t))).length&&o.every((o=>-1!==n.indexOf(o)||t(e[o],r[o],...n)))}},729:function(t,e,r){var n=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),o=this&&this.__exportStar||function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.VERSION=void 0,o(r(640),e),o(r(503),e),o(r(233),e),o(r(720),e),o(r(732),e),e.VERSION="0.3.5"},732:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0})},630:(t,e,r)=>{var n;!function(t){!function(){var e="object"==typeof globalThis?globalThis:"object"==typeof r.g?r.g:"object"==typeof self?self:"object"==typeof this?this:function(){try{return Function("return this;")()}catch(t){}}()||function(){try{return(0,eval)("(function() { return this; })()")}catch(t){}}(),n=o(t);function o(t,e){return function(r,n){Object.defineProperty(t,r,{configurable:!0,writable:!0,value:n}),e&&e(r,n)}}void 0!==e.Reflect&&(n=o(e.Reflect,n)),function(t,e){var r=Object.prototype.hasOwnProperty,n="function"==typeof Symbol,o=n&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:"@@toPrimitive",i=n&&void 0!==Symbol.iterator?Symbol.iterator:"@@iterator",a="function"==typeof Object.create,u={__proto__:[]}instanceof Array,c=!a&&!u,f={create:a?function(){return L(Object.create(null))}:u?function(){return L({__proto__:null})}:function(){return L({})},has:c?function(t,e){return r.call(t,e)}:function(t,e){return e in t},get:c?function(t,e){return r.call(t,e)?t[e]:void 0}:function(t,e){return t[e]}},s=Object.getPrototypeOf(Function),y="function"==typeof Map&&"function"==typeof Map.prototype.entries?Map:function(){var t={},e=[],r=function(){function t(t,e,r){this._index=0,this._keys=t,this._values=e,this._selector=r}return t.prototype["@@iterator"]=function(){return this},t.prototype[i]=function(){return this},t.prototype.next=function(){var t=this._index;if(t>=0&&t<this._keys.length){var r=this._selector(this._keys[t],this._values[t]);return t+1>=this._keys.length?(this._index=-1,this._keys=e,this._values=e):this._index++,{value:r,done:!1}}return{value:void 0,done:!0}},t.prototype.throw=function(t){throw this._index>=0&&(this._index=-1,this._keys=e,this._values=e),t},t.prototype.return=function(t){return this._index>=0&&(this._index=-1,this._keys=e,this._values=e),{value:t,done:!0}},t}();return function(){function e(){this._keys=[],this._values=[],this._cacheKey=t,this._cacheIndex=-2}return Object.defineProperty(e.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),e.prototype.has=function(t){return this._find(t,!1)>=0},e.prototype.get=function(t){var e=this._find(t,!1);return e>=0?this._values[e]:void 0},e.prototype.set=function(t,e){var r=this._find(t,!0);return this._values[r]=e,this},e.prototype.delete=function(e){var r=this._find(e,!1);if(r>=0){for(var n=this._keys.length,o=r+1;o<n;o++)this._keys[o-1]=this._keys[o],this._values[o-1]=this._values[o];return this._keys.length--,this._values.length--,A(e,this._cacheKey)&&(this._cacheKey=t,this._cacheIndex=-2),!0}return!1},e.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=t,this._cacheIndex=-2},e.prototype.keys=function(){return new r(this._keys,this._values,n)},e.prototype.values=function(){return new r(this._keys,this._values,o)},e.prototype.entries=function(){return new r(this._keys,this._values,a)},e.prototype["@@iterator"]=function(){return this.entries()},e.prototype[i]=function(){return this.entries()},e.prototype._find=function(t,e){if(!A(this._cacheKey,t)){this._cacheIndex=-1;for(var r=0;r<this._keys.length;r++)if(A(this._keys[r],t)){this._cacheIndex=r;break}}return this._cacheIndex<0&&e&&(this._cacheIndex=this._keys.length,this._keys.push(t),this._values.push(void 0)),this._cacheIndex},e}();function n(t,e){return t}function o(t,e){return e}function a(t,e){return[t,e]}}(),l="function"==typeof Set&&"function"==typeof Set.prototype.entries?Set:function(){function t(){this._map=new y}return Object.defineProperty(t.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),t.prototype.has=function(t){return this._map.has(t)},t.prototype.add=function(t){return this._map.set(t,t),this},t.prototype.delete=function(t){return this._map.delete(t)},t.prototype.clear=function(){this._map.clear()},t.prototype.keys=function(){return this._map.keys()},t.prototype.values=function(){return this._map.keys()},t.prototype.entries=function(){return this._map.entries()},t.prototype["@@iterator"]=function(){return this.keys()},t.prototype[i]=function(){return this.keys()},t}(),p="function"==typeof WeakMap?WeakMap:function(){var t=f.create(),e=n();return function(){function t(){this._key=n()}return t.prototype.has=function(t){var e=o(t,!1);return void 0!==e&&f.has(e,this._key)},t.prototype.get=function(t){var e=o(t,!1);return void 0!==e?f.get(e,this._key):void 0},t.prototype.set=function(t,e){return o(t,!0)[this._key]=e,this},t.prototype.delete=function(t){var e=o(t,!1);return void 0!==e&&delete e[this._key]},t.prototype.clear=function(){this._key=n()},t}();function n(){var e;do{e="@@WeakMap@@"+a()}while(f.has(t,e));return t[e]=!0,e}function o(t,n){if(!r.call(t,e)){if(!n)return;Object.defineProperty(t,e,{value:f.create()})}return t[e]}function i(t,e){for(var r=0;r<e;++r)t[r]=255*Math.random()|0;return t}function a(){var t=function(t){if("function"==typeof Uint8Array){var e=new Uint8Array(t);return"undefined"!=typeof crypto?crypto.getRandomValues(e):"undefined"!=typeof msCrypto?msCrypto.getRandomValues(e):i(e,t),e}return i(new Array(t),t)}(16);t[6]=79&t[6]|64,t[8]=191&t[8]|128;for(var e="",r=0;r<16;++r){var n=t[r];4!==r&&6!==r&&8!==r||(e+="-"),n<16&&(e+="0"),e+=n.toString(16).toLowerCase()}return e}}(),h=n?Symbol.for("@reflect-metadata:registry"):void 0,d=function(){var t;return!m(h)&&T(e.Reflect)&&Object.isExtensible(e.Reflect)&&(t=e.Reflect[h]),m(t)&&(t=function(){var t,r,n,o;m(h)||void 0===e.Reflect||h in e.Reflect||"function"!=typeof e.Reflect.defineMetadata||(t=function(t){var e=t.defineMetadata,r=t.hasOwnMetadata,n=t.getOwnMetadata,o=t.getOwnMetadataKeys,i=t.deleteMetadata,a=new p;return{isProviderFor:function(t,e){var r=a.get(t);return!(m(r)||!r.has(e))||!!o(t,e).length&&(m(r)&&(r=new l,a.set(t,r)),r.add(e),!0)},OrdinaryDefineOwnMetadata:e,OrdinaryHasOwnMetadata:r,OrdinaryGetOwnMetadata:n,OrdinaryOwnMetadataKeys:o,OrdinaryDeleteMetadata:i}}(e.Reflect));var i=new p,a={registerProvider:u,getProvider:f,setProvider:d};return a;function u(e){if(!Object.isExtensible(a))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case t===e:break;case m(r):r=e;break;case r===e:break;case m(n):n=e;break;case n===e:break;default:void 0===o&&(o=new l),o.add(e)}}function c(e,i){if(!m(r)){if(r.isProviderFor(e,i))return r;if(!m(n)){if(n.isProviderFor(e,i))return r;if(!m(o))for(var a=I(o);;){var u=W(a);if(!u)return;var c=C(u);if(c.isProviderFor(e,i))return z(a),c}}}if(!m(t)&&t.isProviderFor(e,i))return t}function f(t,e){var r,n=i.get(t);return m(n)||(r=n.get(e)),m(r)?(m(r=c(t,e))||(m(n)&&(n=new y,i.set(t,n)),n.set(e,r)),r):r}function s(t){if(m(t))throw new TypeError;return r===t||n===t||!m(o)&&o.has(t)}function d(t,e,r){if(!s(r))throw new Error("Metadata provider not registered.");var n=f(t,e);if(n!==r){if(!m(n))return!1;var o=i.get(t);m(o)&&(o=new y,i.set(t,o)),o.set(e,r)}return!0}}()),!m(h)&&T(e.Reflect)&&Object.isExtensible(e.Reflect)&&Object.defineProperty(e.Reflect,h,{enumerable:!1,configurable:!1,writable:!1,value:t}),t}(),v=function(t){var e=new p,r={isProviderFor:function(t,r){var n=e.get(t);return!m(n)&&n.has(r)},OrdinaryDefineOwnMetadata:function(t,e,r,o){n(r,o,!0).set(t,e)},OrdinaryHasOwnMetadata:function(t,e,r){var o=n(e,r,!1);return!m(o)&&R(o.has(t))},OrdinaryGetOwnMetadata:function(t,e,r){var o=n(e,r,!1);if(!m(o))return o.get(t)},OrdinaryOwnMetadataKeys:function(t,e){var r=[],o=n(t,e,!1);if(m(o))return r;for(var i=I(o.keys()),a=0;;){var u=W(i);if(!u)return r.length=a,r;var c=C(u);try{r[a]=c}catch(t){try{z(i)}finally{throw t}}a++}},OrdinaryDeleteMetadata:function(t,r,o){var i=n(r,o,!1);if(m(i))return!1;if(!i.delete(t))return!1;if(0===i.size){var a=e.get(r);m(a)||(a.delete(o),0===a.size&&e.delete(a))}return!0}};return d.registerProvider(r),r;function n(n,o,i){var a=e.get(n),u=!1;if(m(a)){if(!i)return;a=new y,e.set(n,a),u=!0}var c=a.get(o);if(m(c)){if(!i)return;if(c=new y,a.set(o,c),!t.setProvider(n,o,r))throw a.delete(o),u&&e.delete(n),new Error("Wrong provider for target.")}return c}}(d);function w(t,e,r){if(g(t,e,r))return!0;var n=N(e);return!P(n)&&w(t,n,r)}function g(t,e,r){var n=V(e,r,!1);return!m(n)&&R(n.OrdinaryHasOwnMetadata(t,e,r))}function _(t,e,r){if(g(t,e,r))return b(t,e,r);var n=N(e);return P(n)?void 0:_(t,n,r)}function b(t,e,r){var n=V(e,r,!1);if(!m(n))return n.OrdinaryGetOwnMetadata(t,e,r)}function O(t,e,r,n){V(r,n,!0).OrdinaryDefineOwnMetadata(t,e,r,n)}function k(t,e){var r=M(t,e),n=N(t);if(null===n)return r;var o=k(n,e);if(o.length<=0)return r;if(r.length<=0)return o;for(var i=new l,a=[],u=0,c=r;u<c.length;u++){var f=c[u];i.has(f)||(i.add(f),a.push(f))}for(var s=0,y=o;s<y.length;s++)f=y[s],i.has(f)||(i.add(f),a.push(f));return a}function M(t,e){var r=V(t,e,!1);return r?r.OrdinaryOwnMetadataKeys(t,e):[]}function j(t){if(null===t)return 1;switch(typeof t){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return null===t?1:6;default:return 6}}function m(t){return void 0===t}function P(t){return null===t}function T(t){return"object"==typeof t?null!==t:"function"==typeof t}function E(t,e){switch(j(t)){case 0:case 1:case 2:case 3:case 4:case 5:return t}var r=3===e?"string":5===e?"number":"default",n=F(t,o);if(void 0!==n){var i=n.call(t,r);if(T(i))throw new TypeError;return i}return function(t,e){if("string"===e){var r=t.toString;if(K(r)&&!T(o=r.call(t)))return o;if(K(n=t.valueOf)&&!T(o=n.call(t)))return o}else{var n;if(K(n=t.valueOf)&&!T(o=n.call(t)))return o;var o,i=t.toString;if(K(i)&&!T(o=i.call(t)))return o}throw new TypeError}(t,"default"===r?"number":r)}function R(t){return!!t}function x(t){var e=E(t,3);return"symbol"==typeof e?e:function(t){return""+t}(e)}function S(t){return Array.isArray?Array.isArray(t):t instanceof Object?t instanceof Array:"[object Array]"===Object.prototype.toString.call(t)}function K(t){return"function"==typeof t}function D(t){return"function"==typeof t}function A(t,e){return t===e||t!=t&&e!=e}function F(t,e){var r=t[e];if(null!=r){if(!K(r))throw new TypeError;return r}}function I(t){var e=F(t,i);if(!K(e))throw new TypeError;var r=e.call(t);if(!T(r))throw new TypeError;return r}function C(t){return t.value}function W(t){var e=t.next();return!e.done&&e}function z(t){var e=t.return;e&&e.call(t)}function N(t){var e=Object.getPrototypeOf(t);if("function"!=typeof t||t===s)return e;if(e!==s)return e;var r=t.prototype,n=r&&Object.getPrototypeOf(r);if(null==n||n===Object.prototype)return e;var o=n.constructor;return"function"!=typeof o||o===t?e:o}function V(t,e,r){var n=d.getProvider(t,e);if(!m(n))return n;if(r){if(d.setProvider(t,e,v))return v;throw new Error("Illegal state.")}}function L(t){return t.__=void 0,delete t.__,t}t("decorate",(function(t,e,r,n){if(m(r)){if(!S(t))throw new TypeError;if(!D(e))throw new TypeError;return function(t,e){for(var r=t.length-1;r>=0;--r){var n=(0,t[r])(e);if(!m(n)&&!P(n)){if(!D(n))throw new TypeError;e=n}}return e}(t,e)}if(!S(t))throw new TypeError;if(!T(e))throw new TypeError;if(!T(n)&&!m(n)&&!P(n))throw new TypeError;return P(n)&&(n=void 0),function(t,e,r,n){for(var o=t.length-1;o>=0;--o){var i=(0,t[o])(e,r,n);if(!m(i)&&!P(i)){if(!T(i))throw new TypeError;n=i}}return n}(t,e,r=x(r),n)})),t("metadata",(function(t,e){return function(r,n){if(!T(r))throw new TypeError;if(!m(n)&&!function(t){switch(j(t)){case 3:case 4:return!0;default:return!1}}(n))throw new TypeError;O(t,e,r,n)}})),t("defineMetadata",(function(t,e,r,n){if(!T(r))throw new TypeError;return m(n)||(n=x(n)),O(t,e,r,n)})),t("hasMetadata",(function(t,e,r){if(!T(e))throw new TypeError;return m(r)||(r=x(r)),w(t,e,r)})),t("hasOwnMetadata",(function(t,e,r){if(!T(e))throw new TypeError;return m(r)||(r=x(r)),g(t,e,r)})),t("getMetadata",(function(t,e,r){if(!T(e))throw new TypeError;return m(r)||(r=x(r)),_(t,e,r)})),t("getOwnMetadata",(function(t,e,r){if(!T(e))throw new TypeError;return m(r)||(r=x(r)),b(t,e,r)})),t("getMetadataKeys",(function(t,e){if(!T(t))throw new TypeError;return m(e)||(e=x(e)),k(t,e)})),t("getOwnMetadataKeys",(function(t,e){if(!T(t))throw new TypeError;return m(e)||(e=x(e)),M(t,e)})),t("deleteMetadata",(function(t,e,r){if(!T(e))throw new TypeError;if(m(r)||(r=x(r)),!T(e))throw new TypeError;m(r)||(r=x(r));var n=V(e,r,!1);return!m(n)&&n.OrdinaryDeleteMetadata(t,e,r)}))}(n,e),void 0===e.Reflect&&(e.Reflect=t)}()}(n||(n={}))}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n].call(i.exports,i,i.exports,r),i.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(729); | ||
var t={720:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Reflection=void 0;const n=r(640),o=r(233);class i{constructor(){}static checkType(t,e){return typeof t===e.toLowerCase()||void 0!==t&&"object"==typeof t&&t.constructor&&t.constructor.name.toLowerCase()===e.toLowerCase()}static checkTypes(t,e){return!e.every((e=>!this.checkType(t,e)))}static evaluateDesignTypes(t,e){switch(typeof e){case"string":return this.checkType(t,e);case"object":return!Array.isArray(e)||i.checkTypes(t,e);case"function":return!e.name||"Object"===e.name||this.checkType(t,e.name);default:return!0}}static getAllProperties(t,e=!0,r="Object"){const n=new Set;let o=t;const i=function(){if(!e)return;const t=Object.getPrototypeOf(o);return t&&t.constructor.name!==r?(o=t,o):void 0};do{Object.getOwnPropertyNames(o).forEach((t=>n.add(t)))}while(i());return Array.from(n)}static getClassDecorators(t,e){const r=Reflect.getOwnMetadataKeys(e.constructor),n=[];for(const o of r)o.startsWith(t)&&n.push({key:o.slice(t.length),props:Reflect.getMetadata(o,e.constructor)});return n}static getAllPropertyDecorators(t,...e){if(!e||0===e.length)return;const r={},n=Object.getOwnPropertyNames(t);for(const o of n)for(let n=0;n<e.length;n++){const a=i.getPropertyDecorators(e[n],t,o,0!==n);a.decorators.length>0&&(r[o]||(r[o]=[]),r[o].push(...a.decorators))}return Object.keys(r).length>0?r:void 0}static getTypeFromDecorator(t,e){const r=i.getPropertyDecorators(n.ReflectionKeys.TYPE,t,e,!1);if(!r||!r.decorators)return;const o=r.decorators.shift(),a=o.props?o.props.name:void 0;return"Function"!==a?a:void 0}static getPropertyDecorators(t,e,r,a=!1,u=!0,f){const c=function(t,e,r,o=!1,i){const a=Reflect.getMetadataKeys(e,r).filter((e=>o?e.toString().startsWith(t):e===n.ReflectionKeys.TYPE||e.toString().startsWith(t))).reduce(((o,i)=>{const a={key:i!==n.ReflectionKeys.TYPE?i.substring(t.length):i,props:Reflect.getMetadata(i,e,r)};return o.concat(a)}),i||[]);return{prop:r.toString(),decorators:a}}(t,e,r,a,f);return u&&Object.getPrototypeOf(e)!==Object.prototype?i.getPropertyDecorators(t,Object.getPrototypeOf(e.constructor),r,!0,u,c.decorators):{prop:c.prop,decorators:function(t){const r={};return t.filter((t=>t.key in r?((0,o.isEqual)(t.props,r[t.key])||console.log(`Found a similar decorator for the ${t.key} propertyof a ${e.constructor.name} model but with different attributes.The original one will be kept`),!1):(r[t.key.toString()]=t.props,!0)))}(c.decorators)}}}e.Reflection=i},640:(t,e)=>{var r;Object.defineProperty(e,"__esModule",{value:!0}),e.ReflectionKeys=void 0,function(t){t.TYPE="design:type"}(r||(e.ReflectionKeys=r={}))},503:(t,e,r)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.metadata=function(t,e){return(r,n,o)=>{o?Reflect.defineMetadata(t,e,o.value):n?Reflect.defineMetadata(t,e,r,n):Reflect.defineMetadata(t,e,r)}},e.apply=function(...t){return(e,r,n)=>{for(const o of t)e instanceof Function&&!n?o(e):o(e,r,n)}},r(630)},233:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.isEqual=function t(e,r,...n){if(e===r)return 0!==e||1/e==1/r;if(null==e||null==r)return e===r;if(typeof e!=typeof r)return!1;if(Number.isNaN(e)&&Number.isNaN(r))return!0;if("object"!=typeof e)return e===r;if(e instanceof Date&&r instanceof Date)return!(!isNaN(e.getTime())||!isNaN(r.getTime()))||e.getTime()===r.getTime();if(e instanceof RegExp&&r instanceof RegExp)return e.toString()===r.toString();if(e instanceof Error&&r instanceof Error)return e.name===r.name&&e.message===r.message;if(Array.isArray(e)&&Array.isArray(r)){if(e.length!==r.length)return!1;for(let o=0;o<e.length;o++)if(!t(e[o],r[o],...n))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(const[o,i]of e)if(!r.has(o)||!t(i,r.get(o),...n))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(const t of e)if(!r.has(t))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(e.byteLength!==r.byteLength)return!1;if(e.byteOffset!==r.byteOffset)return!1;if(e.buffer.byteLength!==r.buffer.byteLength)return!1;const t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);for(let e=0;e<t.length;e++)if(t[e]!==n[e])return!1;return!0}const o=Object.keys(e).filter((t=>!n.includes(t))),i=Object.keys(r).filter((t=>!n.includes(t)));if(o.length!==i.length)return!1;for(const a of o){if(!i.includes(a))return!1;if(!t(e[a],r[a],...n))return!1}const a=Object.getOwnPropertySymbols(e).filter((t=>!n.includes(t.toString()))),u=Object.getOwnPropertySymbols(r).filter((t=>!n.includes(t.toString())));if(a.length!==u.length)return!1;for(const o of a){if(!u.includes(o))return!1;if(!t(e[o],r[o],...n))return!1}return Object.getPrototypeOf(e)===Object.getPrototypeOf(r)}},729:function(t,e,r){var n=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),o=this&&this.__exportStar||function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.VERSION=void 0,o(r(640),e),o(r(503),e),o(r(233),e),o(r(720),e),o(r(732),e),e.VERSION="0.3.7"},732:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0})},630:(t,e,r)=>{var n;!function(t){!function(){var e="object"==typeof globalThis?globalThis:"object"==typeof r.g?r.g:"object"==typeof self?self:"object"==typeof this?this:function(){try{return Function("return this;")()}catch(t){}}()||function(){try{return(0,eval)("(function() { return this; })()")}catch(t){}}(),n=o(t);function o(t,e){return function(r,n){Object.defineProperty(t,r,{configurable:!0,writable:!0,value:n}),e&&e(r,n)}}void 0!==e.Reflect&&(n=o(e.Reflect,n)),function(t,e){var r=Object.prototype.hasOwnProperty,n="function"==typeof Symbol,o=n&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:"@@toPrimitive",i=n&&void 0!==Symbol.iterator?Symbol.iterator:"@@iterator",a="function"==typeof Object.create,u={__proto__:[]}instanceof Array,f=!a&&!u,c={create:a?function(){return W(Object.create(null))}:u?function(){return W({__proto__:null})}:function(){return W({})},has:f?function(t,e){return r.call(t,e)}:function(t,e){return e in t},get:f?function(t,e){return r.call(t,e)?t[e]:void 0}:function(t,e){return t[e]}},s=Object.getPrototypeOf(Function),y="function"==typeof Map&&"function"==typeof Map.prototype.entries?Map:function(){var t={},e=[],r=function(){function t(t,e,r){this._index=0,this._keys=t,this._values=e,this._selector=r}return t.prototype["@@iterator"]=function(){return this},t.prototype[i]=function(){return this},t.prototype.next=function(){var t=this._index;if(t>=0&&t<this._keys.length){var r=this._selector(this._keys[t],this._values[t]);return t+1>=this._keys.length?(this._index=-1,this._keys=e,this._values=e):this._index++,{value:r,done:!1}}return{value:void 0,done:!0}},t.prototype.throw=function(t){throw this._index>=0&&(this._index=-1,this._keys=e,this._values=e),t},t.prototype.return=function(t){return this._index>=0&&(this._index=-1,this._keys=e,this._values=e),{value:t,done:!0}},t}();return function(){function e(){this._keys=[],this._values=[],this._cacheKey=t,this._cacheIndex=-2}return Object.defineProperty(e.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),e.prototype.has=function(t){return this._find(t,!1)>=0},e.prototype.get=function(t){var e=this._find(t,!1);return e>=0?this._values[e]:void 0},e.prototype.set=function(t,e){var r=this._find(t,!0);return this._values[r]=e,this},e.prototype.delete=function(e){var r=this._find(e,!1);if(r>=0){for(var n=this._keys.length,o=r+1;o<n;o++)this._keys[o-1]=this._keys[o],this._values[o-1]=this._values[o];return this._keys.length--,this._values.length--,D(e,this._cacheKey)&&(this._cacheKey=t,this._cacheIndex=-2),!0}return!1},e.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=t,this._cacheIndex=-2},e.prototype.keys=function(){return new r(this._keys,this._values,n)},e.prototype.values=function(){return new r(this._keys,this._values,o)},e.prototype.entries=function(){return new r(this._keys,this._values,a)},e.prototype["@@iterator"]=function(){return this.entries()},e.prototype[i]=function(){return this.entries()},e.prototype._find=function(t,e){if(!D(this._cacheKey,t)){this._cacheIndex=-1;for(var r=0;r<this._keys.length;r++)if(D(this._keys[r],t)){this._cacheIndex=r;break}}return this._cacheIndex<0&&e&&(this._cacheIndex=this._keys.length,this._keys.push(t),this._values.push(void 0)),this._cacheIndex},e}();function n(t,e){return t}function o(t,e){return e}function a(t,e){return[t,e]}}(),l="function"==typeof Set&&"function"==typeof Set.prototype.entries?Set:function(){function t(){this._map=new y}return Object.defineProperty(t.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),t.prototype.has=function(t){return this._map.has(t)},t.prototype.add=function(t){return this._map.set(t,t),this},t.prototype.delete=function(t){return this._map.delete(t)},t.prototype.clear=function(){this._map.clear()},t.prototype.keys=function(){return this._map.keys()},t.prototype.values=function(){return this._map.keys()},t.prototype.entries=function(){return this._map.entries()},t.prototype["@@iterator"]=function(){return this.keys()},t.prototype[i]=function(){return this.keys()},t}(),p="function"==typeof WeakMap?WeakMap:function(){var t=c.create(),e=n();return function(){function t(){this._key=n()}return t.prototype.has=function(t){var e=o(t,!1);return void 0!==e&&c.has(e,this._key)},t.prototype.get=function(t){var e=o(t,!1);return void 0!==e?c.get(e,this._key):void 0},t.prototype.set=function(t,e){return o(t,!0)[this._key]=e,this},t.prototype.delete=function(t){var e=o(t,!1);return void 0!==e&&delete e[this._key]},t.prototype.clear=function(){this._key=n()},t}();function n(){var e;do{e="@@WeakMap@@"+a()}while(c.has(t,e));return t[e]=!0,e}function o(t,n){if(!r.call(t,e)){if(!n)return;Object.defineProperty(t,e,{value:c.create()})}return t[e]}function i(t,e){for(var r=0;r<e;++r)t[r]=255*Math.random()|0;return t}function a(){var t=function(t){if("function"==typeof Uint8Array){var e=new Uint8Array(t);return"undefined"!=typeof crypto?crypto.getRandomValues(e):"undefined"!=typeof msCrypto?msCrypto.getRandomValues(e):i(e,t),e}return i(new Array(t),t)}(16);t[6]=79&t[6]|64,t[8]=191&t[8]|128;for(var e="",r=0;r<16;++r){var n=t[r];4!==r&&6!==r&&8!==r||(e+="-"),n<16&&(e+="0"),e+=n.toString(16).toLowerCase()}return e}}(),h=n?Symbol.for("@reflect-metadata:registry"):void 0,d=function(){var t;return!M(h)&&E(e.Reflect)&&Object.isExtensible(e.Reflect)&&(t=e.Reflect[h]),M(t)&&(t=function(){var t,r,n,o;M(h)||void 0===e.Reflect||h in e.Reflect||"function"!=typeof e.Reflect.defineMetadata||(t=function(t){var e=t.defineMetadata,r=t.hasOwnMetadata,n=t.getOwnMetadata,o=t.getOwnMetadataKeys,i=t.deleteMetadata,a=new p;return{isProviderFor:function(t,e){var r=a.get(t);return!(M(r)||!r.has(e))||!!o(t,e).length&&(M(r)&&(r=new l,a.set(t,r)),r.add(e),!0)},OrdinaryDefineOwnMetadata:e,OrdinaryHasOwnMetadata:r,OrdinaryGetOwnMetadata:n,OrdinaryOwnMetadataKeys:o,OrdinaryDeleteMetadata:i}}(e.Reflect));var i=new p,a={registerProvider:u,getProvider:c,setProvider:d};return a;function u(e){if(!Object.isExtensible(a))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case t===e:break;case M(r):r=e;break;case r===e:break;case M(n):n=e;break;case n===e:break;default:void 0===o&&(o=new l),o.add(e)}}function f(e,i){if(!M(r)){if(r.isProviderFor(e,i))return r;if(!M(n)){if(n.isProviderFor(e,i))return r;if(!M(o))for(var a=F(o);;){var u=z(a);if(!u)return;var f=I(u);if(f.isProviderFor(e,i))return L(a),f}}}if(!M(t)&&t.isProviderFor(e,i))return t}function c(t,e){var r,n=i.get(t);return M(n)||(r=n.get(e)),M(r)?(M(r=f(t,e))||(M(n)&&(n=new y,i.set(t,n)),n.set(e,r)),r):r}function s(t){if(M(t))throw new TypeError;return r===t||n===t||!M(o)&&o.has(t)}function d(t,e,r){if(!s(r))throw new Error("Metadata provider not registered.");var n=c(t,e);if(n!==r){if(!M(n))return!1;var o=i.get(t);M(o)&&(o=new y,i.set(t,o)),o.set(e,r)}return!0}}()),!M(h)&&E(e.Reflect)&&Object.isExtensible(e.Reflect)&&Object.defineProperty(e.Reflect,h,{enumerable:!1,configurable:!1,writable:!1,value:t}),t}(),v=function(t){var e=new p,r={isProviderFor:function(t,r){var n=e.get(t);return!M(n)&&n.has(r)},OrdinaryDefineOwnMetadata:function(t,e,r,o){n(r,o,!0).set(t,e)},OrdinaryHasOwnMetadata:function(t,e,r){var o=n(e,r,!1);return!M(o)&&R(o.has(t))},OrdinaryGetOwnMetadata:function(t,e,r){var o=n(e,r,!1);if(!M(o))return o.get(t)},OrdinaryOwnMetadataKeys:function(t,e){var r=[],o=n(t,e,!1);if(M(o))return r;for(var i=F(o.keys()),a=0;;){var u=z(i);if(!u)return r.length=a,r;var f=I(u);try{r[a]=f}catch(t){try{L(i)}finally{throw t}}a++}},OrdinaryDeleteMetadata:function(t,r,o){var i=n(r,o,!1);if(M(i))return!1;if(!i.delete(t))return!1;if(0===i.size){var a=e.get(r);M(a)||(a.delete(o),0===a.size&&e.delete(a))}return!0}};return d.registerProvider(r),r;function n(n,o,i){var a=e.get(n),u=!1;if(M(a)){if(!i)return;a=new y,e.set(n,a),u=!0}var f=a.get(o);if(M(f)){if(!i)return;if(f=new y,a.set(o,f),!t.setProvider(n,o,r))throw a.delete(o),u&&e.delete(n),new Error("Wrong provider for target.")}return f}}(d);function g(t,e,r){if(w(t,e,r))return!0;var n=C(e);return!P(n)&&g(t,n,r)}function w(t,e,r){var n=V(e,r,!1);return!M(n)&&R(n.OrdinaryHasOwnMetadata(t,e,r))}function b(t,e,r){if(w(t,e,r))return _(t,e,r);var n=C(e);return P(n)?void 0:b(t,n,r)}function _(t,e,r){var n=V(e,r,!1);if(!M(n))return n.OrdinaryGetOwnMetadata(t,e,r)}function O(t,e,r,n){V(r,n,!0).OrdinaryDefineOwnMetadata(t,e,r,n)}function m(t,e){var r=k(t,e),n=C(t);if(null===n)return r;var o=m(n,e);if(o.length<=0)return r;if(r.length<=0)return o;for(var i=new l,a=[],u=0,f=r;u<f.length;u++){var c=f[u];i.has(c)||(i.add(c),a.push(c))}for(var s=0,y=o;s<y.length;s++)c=y[s],i.has(c)||(i.add(c),a.push(c));return a}function k(t,e){var r=V(t,e,!1);return r?r.OrdinaryOwnMetadataKeys(t,e):[]}function j(t){if(null===t)return 1;switch(typeof t){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return null===t?1:6;default:return 6}}function M(t){return void 0===t}function P(t){return null===t}function E(t){return"object"==typeof t?null!==t:"function"==typeof t}function T(t,e){switch(j(t)){case 0:case 1:case 2:case 3:case 4:case 5:return t}var r=3===e?"string":5===e?"number":"default",n=N(t,o);if(void 0!==n){var i=n.call(t,r);if(E(i))throw new TypeError;return i}return function(t,e){if("string"===e){var r=t.toString;if(A(r)&&!E(o=r.call(t)))return o;if(A(n=t.valueOf)&&!E(o=n.call(t)))return o}else{var n;if(A(n=t.valueOf)&&!E(o=n.call(t)))return o;var o,i=t.toString;if(A(i)&&!E(o=i.call(t)))return o}throw new TypeError}(t,"default"===r?"number":r)}function R(t){return!!t}function S(t){var e=T(t,3);return"symbol"==typeof e?e:function(t){return""+t}(e)}function x(t){return Array.isArray?Array.isArray(t):t instanceof Object?t instanceof Array:"[object Array]"===Object.prototype.toString.call(t)}function A(t){return"function"==typeof t}function K(t){return"function"==typeof t}function D(t,e){return t===e||t!=t&&e!=e}function N(t,e){var r=t[e];if(null!=r){if(!A(r))throw new TypeError;return r}}function F(t){var e=N(t,i);if(!A(e))throw new TypeError;var r=e.call(t);if(!E(r))throw new TypeError;return r}function I(t){return t.value}function z(t){var e=t.next();return!e.done&&e}function L(t){var e=t.return;e&&e.call(t)}function C(t){var e=Object.getPrototypeOf(t);if("function"!=typeof t||t===s)return e;if(e!==s)return e;var r=t.prototype,n=r&&Object.getPrototypeOf(r);if(null==n||n===Object.prototype)return e;var o=n.constructor;return"function"!=typeof o||o===t?e:o}function V(t,e,r){var n=d.getProvider(t,e);if(!M(n))return n;if(r){if(d.setProvider(t,e,v))return v;throw new Error("Illegal state.")}}function W(t){return t.__=void 0,delete t.__,t}t("decorate",(function(t,e,r,n){if(M(r)){if(!x(t))throw new TypeError;if(!K(e))throw new TypeError;return function(t,e){for(var r=t.length-1;r>=0;--r){var n=(0,t[r])(e);if(!M(n)&&!P(n)){if(!K(n))throw new TypeError;e=n}}return e}(t,e)}if(!x(t))throw new TypeError;if(!E(e))throw new TypeError;if(!E(n)&&!M(n)&&!P(n))throw new TypeError;return P(n)&&(n=void 0),function(t,e,r,n){for(var o=t.length-1;o>=0;--o){var i=(0,t[o])(e,r,n);if(!M(i)&&!P(i)){if(!E(i))throw new TypeError;n=i}}return n}(t,e,r=S(r),n)})),t("metadata",(function(t,e){return function(r,n){if(!E(r))throw new TypeError;if(!M(n)&&!function(t){switch(j(t)){case 3:case 4:return!0;default:return!1}}(n))throw new TypeError;O(t,e,r,n)}})),t("defineMetadata",(function(t,e,r,n){if(!E(r))throw new TypeError;return M(n)||(n=S(n)),O(t,e,r,n)})),t("hasMetadata",(function(t,e,r){if(!E(e))throw new TypeError;return M(r)||(r=S(r)),g(t,e,r)})),t("hasOwnMetadata",(function(t,e,r){if(!E(e))throw new TypeError;return M(r)||(r=S(r)),w(t,e,r)})),t("getMetadata",(function(t,e,r){if(!E(e))throw new TypeError;return M(r)||(r=S(r)),b(t,e,r)})),t("getOwnMetadata",(function(t,e,r){if(!E(e))throw new TypeError;return M(r)||(r=S(r)),_(t,e,r)})),t("getMetadataKeys",(function(t,e){if(!E(t))throw new TypeError;return M(e)||(e=S(e)),m(t,e)})),t("getOwnMetadataKeys",(function(t,e){if(!E(t))throw new TypeError;return M(e)||(e=S(e)),k(t,e)})),t("deleteMetadata",(function(t,e,r){if(!E(e))throw new TypeError;if(M(r)||(r=S(r)),!E(e))throw new TypeError;M(r)||(r=S(r));var n=V(e,r,!1);return!M(n)&&n.OrdinaryDeleteMetadata(t,e,r)}))}(n,e),void 0===e.Reflect&&(e.Reflect=t)}()}(n||(n={}))}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n].call(i.exports,i,i.exports,r),i.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(729); |
/*! For license information please see reflection.bundle.min.js.LICENSE.txt */ | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("reflection",[],e):"object"==typeof exports?exports.reflection=e():t.reflection=e()}(this,(()=>(()=>{var t={720:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Reflection=void 0;const n=r(640),o=r(233);e.Reflection=class{constructor(){}static checkType(t,e){return typeof t===e.toLowerCase()||"object"==typeof t&&t.constructor&&t.constructor.name.toLowerCase()===e.toLowerCase()}static checkTypes(t,e){return!e.every((e=>!this.checkType(t,e)))}static evaluateDesignTypes(t,e){switch(typeof e){case"string":return this.checkType(t,e);case"object":return!Array.isArray(e)||this.checkTypes(t,e);case"function":return!e.name||"Object"===e.name||this.checkType(t,e.name);default:return!0}}static getAllProperties(t,e=!0,r="Object"){const n=[];let o=t;const i=function(){if(!e)return;const t=Object.getPrototypeOf(o);return t&&t.constructor.name!==r?(o=t,o):void 0};do{Object.getOwnPropertyNames(o).forEach((function(t){-1===n.indexOf(t)&&n.push(t)}))}while(i());return n}static getClassDecorators(t,e){return Reflect.getOwnMetadataKeys(e.constructor).filter((e=>e.toString().startsWith(t))).reduce(((r,n)=>{const o={key:n.substring(t.length),props:Reflect.getMetadata(n,e.constructor)};return r.concat(o)}),[])}static getAllPropertyDecorators(t,...e){if(e&&e.length)return Object.getOwnPropertyNames(t).reduce(((r,n)=>(e.forEach(((e,o)=>{const i=this.getPropertyDecorators(e,t,n,0!==o);r||(r={}),function(t,e,r){r&&r.length&&(t[e]||(t[e]=[]),t[e].push(...r))}(r,n,i.decorators)})),r)),void 0)}static getTypeFromDecorator(t,e){const r=this.getPropertyDecorators(n.ReflectionKeys.TYPE,t,e,!1);if(!r||!r.decorators)return;const o=r.decorators.shift(),i=o.props?o.props.name:void 0;return"Function"!==i?i:void 0}static getPropertyDecorators(t,e,r,i=!1,a=!0,u){const c=function(t,e,r,o=!1,i){const a=Reflect.getMetadataKeys(e,r).filter((e=>o?e.toString().startsWith(t):e===n.ReflectionKeys.TYPE||e.toString().startsWith(t))).reduce(((o,i)=>{const a={key:i!==n.ReflectionKeys.TYPE?i.substring(t.length):i,props:Reflect.getMetadata(i,e,r)};return o.concat(a)}),i||[]);return{prop:r.toString(),decorators:a}}(t,e,r,i,u);return a&&Object.getPrototypeOf(e)!==Object.prototype?this.getPropertyDecorators(t,Object.getPrototypeOf(e.constructor),r,!0,a,c.decorators):{prop:c.prop,decorators:function(t){const r={};return t.filter((t=>t.key in r?((0,o.isEqual)(t.props,r[t.key])||console.log(`Found a similar decorator for the ${t.key} propertyof a ${e.constructor.name} model but with different attributes.The original one will be kept`),!1):(r[t.key.toString()]=t.props,!0)))}(c.decorators)}}}},640:(t,e)=>{"use strict";var r;Object.defineProperty(e,"__esModule",{value:!0}),e.ReflectionKeys=void 0,function(t){t.TYPE="design:type"}(r||(e.ReflectionKeys=r={}))},503:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.metadata=function(t,e){return(r,n,o)=>{o?Reflect.defineMetadata(t,e,o.value):n?Reflect.defineMetadata(t,e,r,n):Reflect.defineMetadata(t,e,r)}},e.apply=function(...t){return(e,r,n)=>{for(const o of t)e instanceof Function&&!n?o(e):o(e,r,n)}},r(630)},233:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isEqual=function t(e,r,...n){if(e===r)return!0;if(e instanceof Date&&r instanceof Date)return e.getTime()===r.getTime();if(!e||!r||"object"!=typeof e&&"object"!=typeof r)return e===r;if(null==e||null==r)return!1;if(typeof e!=typeof r)return!1;if(e.prototype!==r.prototype)return!1;const o=Object.keys(e).filter((t=>-1===n.indexOf(t)));return o.length===Object.keys(r).filter((t=>-1===n.indexOf(t))).length&&o.every((o=>-1!==n.indexOf(o)||t(e[o],r[o],...n)))}},729:function(t,e,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),o=this&&this.__exportStar||function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.VERSION=void 0,o(r(640),e),o(r(503),e),o(r(233),e),o(r(720),e),o(r(732),e),e.VERSION="0.3.5"},732:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0})},630:(t,e,r)=>{var n;!function(t){!function(){var e="object"==typeof globalThis?globalThis:"object"==typeof r.g?r.g:"object"==typeof self?self:"object"==typeof this?this:function(){try{return Function("return this;")()}catch(t){}}()||function(){try{return(0,eval)("(function() { return this; })()")}catch(t){}}(),n=o(t);function o(t,e){return function(r,n){Object.defineProperty(t,r,{configurable:!0,writable:!0,value:n}),e&&e(r,n)}}void 0!==e.Reflect&&(n=o(e.Reflect,n)),function(t,e){var r=Object.prototype.hasOwnProperty,n="function"==typeof Symbol,o=n&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:"@@toPrimitive",i=n&&void 0!==Symbol.iterator?Symbol.iterator:"@@iterator",a="function"==typeof Object.create,u={__proto__:[]}instanceof Array,c=!a&&!u,f={create:a?function(){return L(Object.create(null))}:u?function(){return L({__proto__:null})}:function(){return L({})},has:c?function(t,e){return r.call(t,e)}:function(t,e){return e in t},get:c?function(t,e){return r.call(t,e)?t[e]:void 0}:function(t,e){return t[e]}},s=Object.getPrototypeOf(Function),y="function"==typeof Map&&"function"==typeof Map.prototype.entries?Map:function(){var t={},e=[],r=function(){function t(t,e,r){this._index=0,this._keys=t,this._values=e,this._selector=r}return t.prototype["@@iterator"]=function(){return this},t.prototype[i]=function(){return this},t.prototype.next=function(){var t=this._index;if(t>=0&&t<this._keys.length){var r=this._selector(this._keys[t],this._values[t]);return t+1>=this._keys.length?(this._index=-1,this._keys=e,this._values=e):this._index++,{value:r,done:!1}}return{value:void 0,done:!0}},t.prototype.throw=function(t){throw this._index>=0&&(this._index=-1,this._keys=e,this._values=e),t},t.prototype.return=function(t){return this._index>=0&&(this._index=-1,this._keys=e,this._values=e),{value:t,done:!0}},t}();return function(){function e(){this._keys=[],this._values=[],this._cacheKey=t,this._cacheIndex=-2}return Object.defineProperty(e.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),e.prototype.has=function(t){return this._find(t,!1)>=0},e.prototype.get=function(t){var e=this._find(t,!1);return e>=0?this._values[e]:void 0},e.prototype.set=function(t,e){var r=this._find(t,!0);return this._values[r]=e,this},e.prototype.delete=function(e){var r=this._find(e,!1);if(r>=0){for(var n=this._keys.length,o=r+1;o<n;o++)this._keys[o-1]=this._keys[o],this._values[o-1]=this._values[o];return this._keys.length--,this._values.length--,A(e,this._cacheKey)&&(this._cacheKey=t,this._cacheIndex=-2),!0}return!1},e.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=t,this._cacheIndex=-2},e.prototype.keys=function(){return new r(this._keys,this._values,n)},e.prototype.values=function(){return new r(this._keys,this._values,o)},e.prototype.entries=function(){return new r(this._keys,this._values,a)},e.prototype["@@iterator"]=function(){return this.entries()},e.prototype[i]=function(){return this.entries()},e.prototype._find=function(t,e){if(!A(this._cacheKey,t)){this._cacheIndex=-1;for(var r=0;r<this._keys.length;r++)if(A(this._keys[r],t)){this._cacheIndex=r;break}}return this._cacheIndex<0&&e&&(this._cacheIndex=this._keys.length,this._keys.push(t),this._values.push(void 0)),this._cacheIndex},e}();function n(t,e){return t}function o(t,e){return e}function a(t,e){return[t,e]}}(),p="function"==typeof Set&&"function"==typeof Set.prototype.entries?Set:function(){function t(){this._map=new y}return Object.defineProperty(t.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),t.prototype.has=function(t){return this._map.has(t)},t.prototype.add=function(t){return this._map.set(t,t),this},t.prototype.delete=function(t){return this._map.delete(t)},t.prototype.clear=function(){this._map.clear()},t.prototype.keys=function(){return this._map.keys()},t.prototype.values=function(){return this._map.keys()},t.prototype.entries=function(){return this._map.entries()},t.prototype["@@iterator"]=function(){return this.keys()},t.prototype[i]=function(){return this.keys()},t}(),l="function"==typeof WeakMap?WeakMap:function(){var t=f.create(),e=n();return function(){function t(){this._key=n()}return t.prototype.has=function(t){var e=o(t,!1);return void 0!==e&&f.has(e,this._key)},t.prototype.get=function(t){var e=o(t,!1);return void 0!==e?f.get(e,this._key):void 0},t.prototype.set=function(t,e){return o(t,!0)[this._key]=e,this},t.prototype.delete=function(t){var e=o(t,!1);return void 0!==e&&delete e[this._key]},t.prototype.clear=function(){this._key=n()},t}();function n(){var e;do{e="@@WeakMap@@"+a()}while(f.has(t,e));return t[e]=!0,e}function o(t,n){if(!r.call(t,e)){if(!n)return;Object.defineProperty(t,e,{value:f.create()})}return t[e]}function i(t,e){for(var r=0;r<e;++r)t[r]=255*Math.random()|0;return t}function a(){var t=function(t){if("function"==typeof Uint8Array){var e=new Uint8Array(t);return"undefined"!=typeof crypto?crypto.getRandomValues(e):"undefined"!=typeof msCrypto?msCrypto.getRandomValues(e):i(e,t),e}return i(new Array(t),t)}(16);t[6]=79&t[6]|64,t[8]=191&t[8]|128;for(var e="",r=0;r<16;++r){var n=t[r];4!==r&&6!==r&&8!==r||(e+="-"),n<16&&(e+="0"),e+=n.toString(16).toLowerCase()}return e}}(),h=n?Symbol.for("@reflect-metadata:registry"):void 0,d=function(){var t;return!M(h)&&T(e.Reflect)&&Object.isExtensible(e.Reflect)&&(t=e.Reflect[h]),M(t)&&(t=function(){var t,r,n,o;M(h)||void 0===e.Reflect||h in e.Reflect||"function"!=typeof e.Reflect.defineMetadata||(t=function(t){var e=t.defineMetadata,r=t.hasOwnMetadata,n=t.getOwnMetadata,o=t.getOwnMetadataKeys,i=t.deleteMetadata,a=new l;return{isProviderFor:function(t,e){var r=a.get(t);return!(M(r)||!r.has(e))||!!o(t,e).length&&(M(r)&&(r=new p,a.set(t,r)),r.add(e),!0)},OrdinaryDefineOwnMetadata:e,OrdinaryHasOwnMetadata:r,OrdinaryGetOwnMetadata:n,OrdinaryOwnMetadataKeys:o,OrdinaryDeleteMetadata:i}}(e.Reflect));var i=new l,a={registerProvider:u,getProvider:f,setProvider:d};return a;function u(e){if(!Object.isExtensible(a))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case t===e:break;case M(r):r=e;break;case r===e:break;case M(n):n=e;break;case n===e:break;default:void 0===o&&(o=new p),o.add(e)}}function c(e,i){if(!M(r)){if(r.isProviderFor(e,i))return r;if(!M(n)){if(n.isProviderFor(e,i))return r;if(!M(o))for(var a=I(o);;){var u=W(a);if(!u)return;var c=C(u);if(c.isProviderFor(e,i))return z(a),c}}}if(!M(t)&&t.isProviderFor(e,i))return t}function f(t,e){var r,n=i.get(t);return M(n)||(r=n.get(e)),M(r)?(M(r=c(t,e))||(M(n)&&(n=new y,i.set(t,n)),n.set(e,r)),r):r}function s(t){if(M(t))throw new TypeError;return r===t||n===t||!M(o)&&o.has(t)}function d(t,e,r){if(!s(r))throw new Error("Metadata provider not registered.");var n=f(t,e);if(n!==r){if(!M(n))return!1;var o=i.get(t);M(o)&&(o=new y,i.set(t,o)),o.set(e,r)}return!0}}()),!M(h)&&T(e.Reflect)&&Object.isExtensible(e.Reflect)&&Object.defineProperty(e.Reflect,h,{enumerable:!1,configurable:!1,writable:!1,value:t}),t}(),v=function(t){var e=new l,r={isProviderFor:function(t,r){var n=e.get(t);return!M(n)&&n.has(r)},OrdinaryDefineOwnMetadata:function(t,e,r,o){n(r,o,!0).set(t,e)},OrdinaryHasOwnMetadata:function(t,e,r){var o=n(e,r,!1);return!M(o)&&x(o.has(t))},OrdinaryGetOwnMetadata:function(t,e,r){var o=n(e,r,!1);if(!M(o))return o.get(t)},OrdinaryOwnMetadataKeys:function(t,e){var r=[],o=n(t,e,!1);if(M(o))return r;for(var i=I(o.keys()),a=0;;){var u=W(i);if(!u)return r.length=a,r;var c=C(u);try{r[a]=c}catch(t){try{z(i)}finally{throw t}}a++}},OrdinaryDeleteMetadata:function(t,r,o){var i=n(r,o,!1);if(M(i))return!1;if(!i.delete(t))return!1;if(0===i.size){var a=e.get(r);M(a)||(a.delete(o),0===a.size&&e.delete(a))}return!0}};return d.registerProvider(r),r;function n(n,o,i){var a=e.get(n),u=!1;if(M(a)){if(!i)return;a=new y,e.set(n,a),u=!0}var c=a.get(o);if(M(c)){if(!i)return;if(c=new y,a.set(o,c),!t.setProvider(n,o,r))throw a.delete(o),u&&e.delete(n),new Error("Wrong provider for target.")}return c}}(d);function w(t,e,r){if(g(t,e,r))return!0;var n=N(e);return!P(n)&&w(t,n,r)}function g(t,e,r){var n=V(e,r,!1);return!M(n)&&x(n.OrdinaryHasOwnMetadata(t,e,r))}function _(t,e,r){if(g(t,e,r))return b(t,e,r);var n=N(e);return P(n)?void 0:_(t,n,r)}function b(t,e,r){var n=V(e,r,!1);if(!M(n))return n.OrdinaryGetOwnMetadata(t,e,r)}function O(t,e,r,n){V(r,n,!0).OrdinaryDefineOwnMetadata(t,e,r,n)}function k(t,e){var r=j(t,e),n=N(t);if(null===n)return r;var o=k(n,e);if(o.length<=0)return r;if(r.length<=0)return o;for(var i=new p,a=[],u=0,c=r;u<c.length;u++){var f=c[u];i.has(f)||(i.add(f),a.push(f))}for(var s=0,y=o;s<y.length;s++)f=y[s],i.has(f)||(i.add(f),a.push(f));return a}function j(t,e){var r=V(t,e,!1);return r?r.OrdinaryOwnMetadataKeys(t,e):[]}function m(t){if(null===t)return 1;switch(typeof t){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return null===t?1:6;default:return 6}}function M(t){return void 0===t}function P(t){return null===t}function T(t){return"object"==typeof t?null!==t:"function"==typeof t}function E(t,e){switch(m(t)){case 0:case 1:case 2:case 3:case 4:case 5:return t}var r=3===e?"string":5===e?"number":"default",n=F(t,o);if(void 0!==n){var i=n.call(t,r);if(T(i))throw new TypeError;return i}return function(t,e){if("string"===e){var r=t.toString;if(K(r)&&!T(o=r.call(t)))return o;if(K(n=t.valueOf)&&!T(o=n.call(t)))return o}else{var n;if(K(n=t.valueOf)&&!T(o=n.call(t)))return o;var o,i=t.toString;if(K(i)&&!T(o=i.call(t)))return o}throw new TypeError}(t,"default"===r?"number":r)}function x(t){return!!t}function R(t){var e=E(t,3);return"symbol"==typeof e?e:function(t){return""+t}(e)}function S(t){return Array.isArray?Array.isArray(t):t instanceof Object?t instanceof Array:"[object Array]"===Object.prototype.toString.call(t)}function K(t){return"function"==typeof t}function D(t){return"function"==typeof t}function A(t,e){return t===e||t!=t&&e!=e}function F(t,e){var r=t[e];if(null!=r){if(!K(r))throw new TypeError;return r}}function I(t){var e=F(t,i);if(!K(e))throw new TypeError;var r=e.call(t);if(!T(r))throw new TypeError;return r}function C(t){return t.value}function W(t){var e=t.next();return!e.done&&e}function z(t){var e=t.return;e&&e.call(t)}function N(t){var e=Object.getPrototypeOf(t);if("function"!=typeof t||t===s)return e;if(e!==s)return e;var r=t.prototype,n=r&&Object.getPrototypeOf(r);if(null==n||n===Object.prototype)return e;var o=n.constructor;return"function"!=typeof o||o===t?e:o}function V(t,e,r){var n=d.getProvider(t,e);if(!M(n))return n;if(r){if(d.setProvider(t,e,v))return v;throw new Error("Illegal state.")}}function L(t){return t.__=void 0,delete t.__,t}t("decorate",(function(t,e,r,n){if(M(r)){if(!S(t))throw new TypeError;if(!D(e))throw new TypeError;return function(t,e){for(var r=t.length-1;r>=0;--r){var n=(0,t[r])(e);if(!M(n)&&!P(n)){if(!D(n))throw new TypeError;e=n}}return e}(t,e)}if(!S(t))throw new TypeError;if(!T(e))throw new TypeError;if(!T(n)&&!M(n)&&!P(n))throw new TypeError;return P(n)&&(n=void 0),function(t,e,r,n){for(var o=t.length-1;o>=0;--o){var i=(0,t[o])(e,r,n);if(!M(i)&&!P(i)){if(!T(i))throw new TypeError;n=i}}return n}(t,e,r=R(r),n)})),t("metadata",(function(t,e){return function(r,n){if(!T(r))throw new TypeError;if(!M(n)&&!function(t){switch(m(t)){case 3:case 4:return!0;default:return!1}}(n))throw new TypeError;O(t,e,r,n)}})),t("defineMetadata",(function(t,e,r,n){if(!T(r))throw new TypeError;return M(n)||(n=R(n)),O(t,e,r,n)})),t("hasMetadata",(function(t,e,r){if(!T(e))throw new TypeError;return M(r)||(r=R(r)),w(t,e,r)})),t("hasOwnMetadata",(function(t,e,r){if(!T(e))throw new TypeError;return M(r)||(r=R(r)),g(t,e,r)})),t("getMetadata",(function(t,e,r){if(!T(e))throw new TypeError;return M(r)||(r=R(r)),_(t,e,r)})),t("getOwnMetadata",(function(t,e,r){if(!T(e))throw new TypeError;return M(r)||(r=R(r)),b(t,e,r)})),t("getMetadataKeys",(function(t,e){if(!T(t))throw new TypeError;return M(e)||(e=R(e)),k(t,e)})),t("getOwnMetadataKeys",(function(t,e){if(!T(t))throw new TypeError;return M(e)||(e=R(e)),j(t,e)})),t("deleteMetadata",(function(t,e,r){if(!T(e))throw new TypeError;if(M(r)||(r=R(r)),!T(e))throw new TypeError;M(r)||(r=R(r));var n=V(e,r,!1);return!M(n)&&n.OrdinaryDeleteMetadata(t,e,r)}))}(n,e),void 0===e.Reflect&&(e.Reflect=t)}()}(n||(n={}))}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n].call(i.exports,i,i.exports,r),i.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(729)})())); | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("reflection",[],e):"object"==typeof exports?exports.reflection=e():t.reflection=e()}(this,(()=>(()=>{var t={720:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Reflection=void 0;const n=r(640),o=r(233);class i{constructor(){}static checkType(t,e){return typeof t===e.toLowerCase()||void 0!==t&&"object"==typeof t&&t.constructor&&t.constructor.name.toLowerCase()===e.toLowerCase()}static checkTypes(t,e){return!e.every((e=>!this.checkType(t,e)))}static evaluateDesignTypes(t,e){switch(typeof e){case"string":return this.checkType(t,e);case"object":return!Array.isArray(e)||i.checkTypes(t,e);case"function":return!e.name||"Object"===e.name||this.checkType(t,e.name);default:return!0}}static getAllProperties(t,e=!0,r="Object"){const n=new Set;let o=t;const i=function(){if(!e)return;const t=Object.getPrototypeOf(o);return t&&t.constructor.name!==r?(o=t,o):void 0};do{Object.getOwnPropertyNames(o).forEach((t=>n.add(t)))}while(i());return Array.from(n)}static getClassDecorators(t,e){const r=Reflect.getOwnMetadataKeys(e.constructor),n=[];for(const o of r)o.startsWith(t)&&n.push({key:o.slice(t.length),props:Reflect.getMetadata(o,e.constructor)});return n}static getAllPropertyDecorators(t,...e){if(!e||0===e.length)return;const r={},n=Object.getOwnPropertyNames(t);for(const o of n)for(let n=0;n<e.length;n++){const a=i.getPropertyDecorators(e[n],t,o,0!==n);a.decorators.length>0&&(r[o]||(r[o]=[]),r[o].push(...a.decorators))}return Object.keys(r).length>0?r:void 0}static getTypeFromDecorator(t,e){const r=i.getPropertyDecorators(n.ReflectionKeys.TYPE,t,e,!1);if(!r||!r.decorators)return;const o=r.decorators.shift(),a=o.props?o.props.name:void 0;return"Function"!==a?a:void 0}static getPropertyDecorators(t,e,r,a=!1,u=!0,f){const c=function(t,e,r,o=!1,i){const a=Reflect.getMetadataKeys(e,r).filter((e=>o?e.toString().startsWith(t):e===n.ReflectionKeys.TYPE||e.toString().startsWith(t))).reduce(((o,i)=>{const a={key:i!==n.ReflectionKeys.TYPE?i.substring(t.length):i,props:Reflect.getMetadata(i,e,r)};return o.concat(a)}),i||[]);return{prop:r.toString(),decorators:a}}(t,e,r,a,f);return u&&Object.getPrototypeOf(e)!==Object.prototype?i.getPropertyDecorators(t,Object.getPrototypeOf(e.constructor),r,!0,u,c.decorators):{prop:c.prop,decorators:function(t){const r={};return t.filter((t=>t.key in r?((0,o.isEqual)(t.props,r[t.key])||console.log(`Found a similar decorator for the ${t.key} propertyof a ${e.constructor.name} model but with different attributes.The original one will be kept`),!1):(r[t.key.toString()]=t.props,!0)))}(c.decorators)}}}e.Reflection=i},640:(t,e)=>{"use strict";var r;Object.defineProperty(e,"__esModule",{value:!0}),e.ReflectionKeys=void 0,function(t){t.TYPE="design:type"}(r||(e.ReflectionKeys=r={}))},503:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.metadata=function(t,e){return(r,n,o)=>{o?Reflect.defineMetadata(t,e,o.value):n?Reflect.defineMetadata(t,e,r,n):Reflect.defineMetadata(t,e,r)}},e.apply=function(...t){return(e,r,n)=>{for(const o of t)e instanceof Function&&!n?o(e):o(e,r,n)}},r(630)},233:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.isEqual=function t(e,r,...n){if(e===r)return 0!==e||1/e==1/r;if(null==e||null==r)return e===r;if(typeof e!=typeof r)return!1;if(Number.isNaN(e)&&Number.isNaN(r))return!0;if("object"!=typeof e)return e===r;if(e instanceof Date&&r instanceof Date)return!(!isNaN(e.getTime())||!isNaN(r.getTime()))||e.getTime()===r.getTime();if(e instanceof RegExp&&r instanceof RegExp)return e.toString()===r.toString();if(e instanceof Error&&r instanceof Error)return e.name===r.name&&e.message===r.message;if(Array.isArray(e)&&Array.isArray(r)){if(e.length!==r.length)return!1;for(let o=0;o<e.length;o++)if(!t(e[o],r[o],...n))return!1;return!0}if(e instanceof Map&&r instanceof Map){if(e.size!==r.size)return!1;for(const[o,i]of e)if(!r.has(o)||!t(i,r.get(o),...n))return!1;return!0}if(e instanceof Set&&r instanceof Set){if(e.size!==r.size)return!1;for(const t of e)if(!r.has(t))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(r)){if(e.byteLength!==r.byteLength)return!1;if(e.byteOffset!==r.byteOffset)return!1;if(e.buffer.byteLength!==r.buffer.byteLength)return!1;const t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),n=new Uint8Array(r.buffer,r.byteOffset,r.byteLength);for(let e=0;e<t.length;e++)if(t[e]!==n[e])return!1;return!0}const o=Object.keys(e).filter((t=>!n.includes(t))),i=Object.keys(r).filter((t=>!n.includes(t)));if(o.length!==i.length)return!1;for(const a of o){if(!i.includes(a))return!1;if(!t(e[a],r[a],...n))return!1}const a=Object.getOwnPropertySymbols(e).filter((t=>!n.includes(t.toString()))),u=Object.getOwnPropertySymbols(r).filter((t=>!n.includes(t.toString())));if(a.length!==u.length)return!1;for(const o of a){if(!u.includes(o))return!1;if(!t(e[o],r[o],...n))return!1}return Object.getPrototypeOf(e)===Object.getPrototypeOf(r)}},729:function(t,e,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(t,e,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(e,r);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,o)}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]}),o=this&&this.__exportStar||function(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||n(e,t,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.VERSION=void 0,o(r(640),e),o(r(503),e),o(r(233),e),o(r(720),e),o(r(732),e),e.VERSION="0.3.7"},732:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0})},630:(t,e,r)=>{var n;!function(t){!function(){var e="object"==typeof globalThis?globalThis:"object"==typeof r.g?r.g:"object"==typeof self?self:"object"==typeof this?this:function(){try{return Function("return this;")()}catch(t){}}()||function(){try{return(0,eval)("(function() { return this; })()")}catch(t){}}(),n=o(t);function o(t,e){return function(r,n){Object.defineProperty(t,r,{configurable:!0,writable:!0,value:n}),e&&e(r,n)}}void 0!==e.Reflect&&(n=o(e.Reflect,n)),function(t,e){var r=Object.prototype.hasOwnProperty,n="function"==typeof Symbol,o=n&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:"@@toPrimitive",i=n&&void 0!==Symbol.iterator?Symbol.iterator:"@@iterator",a="function"==typeof Object.create,u={__proto__:[]}instanceof Array,f=!a&&!u,c={create:a?function(){return W(Object.create(null))}:u?function(){return W({__proto__:null})}:function(){return W({})},has:f?function(t,e){return r.call(t,e)}:function(t,e){return e in t},get:f?function(t,e){return r.call(t,e)?t[e]:void 0}:function(t,e){return t[e]}},s=Object.getPrototypeOf(Function),y="function"==typeof Map&&"function"==typeof Map.prototype.entries?Map:function(){var t={},e=[],r=function(){function t(t,e,r){this._index=0,this._keys=t,this._values=e,this._selector=r}return t.prototype["@@iterator"]=function(){return this},t.prototype[i]=function(){return this},t.prototype.next=function(){var t=this._index;if(t>=0&&t<this._keys.length){var r=this._selector(this._keys[t],this._values[t]);return t+1>=this._keys.length?(this._index=-1,this._keys=e,this._values=e):this._index++,{value:r,done:!1}}return{value:void 0,done:!0}},t.prototype.throw=function(t){throw this._index>=0&&(this._index=-1,this._keys=e,this._values=e),t},t.prototype.return=function(t){return this._index>=0&&(this._index=-1,this._keys=e,this._values=e),{value:t,done:!0}},t}();return function(){function e(){this._keys=[],this._values=[],this._cacheKey=t,this._cacheIndex=-2}return Object.defineProperty(e.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),e.prototype.has=function(t){return this._find(t,!1)>=0},e.prototype.get=function(t){var e=this._find(t,!1);return e>=0?this._values[e]:void 0},e.prototype.set=function(t,e){var r=this._find(t,!0);return this._values[r]=e,this},e.prototype.delete=function(e){var r=this._find(e,!1);if(r>=0){for(var n=this._keys.length,o=r+1;o<n;o++)this._keys[o-1]=this._keys[o],this._values[o-1]=this._values[o];return this._keys.length--,this._values.length--,D(e,this._cacheKey)&&(this._cacheKey=t,this._cacheIndex=-2),!0}return!1},e.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=t,this._cacheIndex=-2},e.prototype.keys=function(){return new r(this._keys,this._values,n)},e.prototype.values=function(){return new r(this._keys,this._values,o)},e.prototype.entries=function(){return new r(this._keys,this._values,a)},e.prototype["@@iterator"]=function(){return this.entries()},e.prototype[i]=function(){return this.entries()},e.prototype._find=function(t,e){if(!D(this._cacheKey,t)){this._cacheIndex=-1;for(var r=0;r<this._keys.length;r++)if(D(this._keys[r],t)){this._cacheIndex=r;break}}return this._cacheIndex<0&&e&&(this._cacheIndex=this._keys.length,this._keys.push(t),this._values.push(void 0)),this._cacheIndex},e}();function n(t,e){return t}function o(t,e){return e}function a(t,e){return[t,e]}}(),l="function"==typeof Set&&"function"==typeof Set.prototype.entries?Set:function(){function t(){this._map=new y}return Object.defineProperty(t.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),t.prototype.has=function(t){return this._map.has(t)},t.prototype.add=function(t){return this._map.set(t,t),this},t.prototype.delete=function(t){return this._map.delete(t)},t.prototype.clear=function(){this._map.clear()},t.prototype.keys=function(){return this._map.keys()},t.prototype.values=function(){return this._map.keys()},t.prototype.entries=function(){return this._map.entries()},t.prototype["@@iterator"]=function(){return this.keys()},t.prototype[i]=function(){return this.keys()},t}(),p="function"==typeof WeakMap?WeakMap:function(){var t=c.create(),e=n();return function(){function t(){this._key=n()}return t.prototype.has=function(t){var e=o(t,!1);return void 0!==e&&c.has(e,this._key)},t.prototype.get=function(t){var e=o(t,!1);return void 0!==e?c.get(e,this._key):void 0},t.prototype.set=function(t,e){return o(t,!0)[this._key]=e,this},t.prototype.delete=function(t){var e=o(t,!1);return void 0!==e&&delete e[this._key]},t.prototype.clear=function(){this._key=n()},t}();function n(){var e;do{e="@@WeakMap@@"+a()}while(c.has(t,e));return t[e]=!0,e}function o(t,n){if(!r.call(t,e)){if(!n)return;Object.defineProperty(t,e,{value:c.create()})}return t[e]}function i(t,e){for(var r=0;r<e;++r)t[r]=255*Math.random()|0;return t}function a(){var t=function(t){if("function"==typeof Uint8Array){var e=new Uint8Array(t);return"undefined"!=typeof crypto?crypto.getRandomValues(e):"undefined"!=typeof msCrypto?msCrypto.getRandomValues(e):i(e,t),e}return i(new Array(t),t)}(16);t[6]=79&t[6]|64,t[8]=191&t[8]|128;for(var e="",r=0;r<16;++r){var n=t[r];4!==r&&6!==r&&8!==r||(e+="-"),n<16&&(e+="0"),e+=n.toString(16).toLowerCase()}return e}}(),h=n?Symbol.for("@reflect-metadata:registry"):void 0,d=function(){var t;return!M(h)&&E(e.Reflect)&&Object.isExtensible(e.Reflect)&&(t=e.Reflect[h]),M(t)&&(t=function(){var t,r,n,o;M(h)||void 0===e.Reflect||h in e.Reflect||"function"!=typeof e.Reflect.defineMetadata||(t=function(t){var e=t.defineMetadata,r=t.hasOwnMetadata,n=t.getOwnMetadata,o=t.getOwnMetadataKeys,i=t.deleteMetadata,a=new p;return{isProviderFor:function(t,e){var r=a.get(t);return!(M(r)||!r.has(e))||!!o(t,e).length&&(M(r)&&(r=new l,a.set(t,r)),r.add(e),!0)},OrdinaryDefineOwnMetadata:e,OrdinaryHasOwnMetadata:r,OrdinaryGetOwnMetadata:n,OrdinaryOwnMetadataKeys:o,OrdinaryDeleteMetadata:i}}(e.Reflect));var i=new p,a={registerProvider:u,getProvider:c,setProvider:d};return a;function u(e){if(!Object.isExtensible(a))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case t===e:break;case M(r):r=e;break;case r===e:break;case M(n):n=e;break;case n===e:break;default:void 0===o&&(o=new l),o.add(e)}}function f(e,i){if(!M(r)){if(r.isProviderFor(e,i))return r;if(!M(n)){if(n.isProviderFor(e,i))return r;if(!M(o))for(var a=F(o);;){var u=z(a);if(!u)return;var f=I(u);if(f.isProviderFor(e,i))return L(a),f}}}if(!M(t)&&t.isProviderFor(e,i))return t}function c(t,e){var r,n=i.get(t);return M(n)||(r=n.get(e)),M(r)?(M(r=f(t,e))||(M(n)&&(n=new y,i.set(t,n)),n.set(e,r)),r):r}function s(t){if(M(t))throw new TypeError;return r===t||n===t||!M(o)&&o.has(t)}function d(t,e,r){if(!s(r))throw new Error("Metadata provider not registered.");var n=c(t,e);if(n!==r){if(!M(n))return!1;var o=i.get(t);M(o)&&(o=new y,i.set(t,o)),o.set(e,r)}return!0}}()),!M(h)&&E(e.Reflect)&&Object.isExtensible(e.Reflect)&&Object.defineProperty(e.Reflect,h,{enumerable:!1,configurable:!1,writable:!1,value:t}),t}(),v=function(t){var e=new p,r={isProviderFor:function(t,r){var n=e.get(t);return!M(n)&&n.has(r)},OrdinaryDefineOwnMetadata:function(t,e,r,o){n(r,o,!0).set(t,e)},OrdinaryHasOwnMetadata:function(t,e,r){var o=n(e,r,!1);return!M(o)&&R(o.has(t))},OrdinaryGetOwnMetadata:function(t,e,r){var o=n(e,r,!1);if(!M(o))return o.get(t)},OrdinaryOwnMetadataKeys:function(t,e){var r=[],o=n(t,e,!1);if(M(o))return r;for(var i=F(o.keys()),a=0;;){var u=z(i);if(!u)return r.length=a,r;var f=I(u);try{r[a]=f}catch(t){try{L(i)}finally{throw t}}a++}},OrdinaryDeleteMetadata:function(t,r,o){var i=n(r,o,!1);if(M(i))return!1;if(!i.delete(t))return!1;if(0===i.size){var a=e.get(r);M(a)||(a.delete(o),0===a.size&&e.delete(a))}return!0}};return d.registerProvider(r),r;function n(n,o,i){var a=e.get(n),u=!1;if(M(a)){if(!i)return;a=new y,e.set(n,a),u=!0}var f=a.get(o);if(M(f)){if(!i)return;if(f=new y,a.set(o,f),!t.setProvider(n,o,r))throw a.delete(o),u&&e.delete(n),new Error("Wrong provider for target.")}return f}}(d);function g(t,e,r){if(w(t,e,r))return!0;var n=C(e);return!P(n)&&g(t,n,r)}function w(t,e,r){var n=V(e,r,!1);return!M(n)&&R(n.OrdinaryHasOwnMetadata(t,e,r))}function b(t,e,r){if(w(t,e,r))return _(t,e,r);var n=C(e);return P(n)?void 0:b(t,n,r)}function _(t,e,r){var n=V(e,r,!1);if(!M(n))return n.OrdinaryGetOwnMetadata(t,e,r)}function O(t,e,r,n){V(r,n,!0).OrdinaryDefineOwnMetadata(t,e,r,n)}function m(t,e){var r=k(t,e),n=C(t);if(null===n)return r;var o=m(n,e);if(o.length<=0)return r;if(r.length<=0)return o;for(var i=new l,a=[],u=0,f=r;u<f.length;u++){var c=f[u];i.has(c)||(i.add(c),a.push(c))}for(var s=0,y=o;s<y.length;s++)c=y[s],i.has(c)||(i.add(c),a.push(c));return a}function k(t,e){var r=V(t,e,!1);return r?r.OrdinaryOwnMetadataKeys(t,e):[]}function j(t){if(null===t)return 1;switch(typeof t){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return null===t?1:6;default:return 6}}function M(t){return void 0===t}function P(t){return null===t}function E(t){return"object"==typeof t?null!==t:"function"==typeof t}function T(t,e){switch(j(t)){case 0:case 1:case 2:case 3:case 4:case 5:return t}var r=3===e?"string":5===e?"number":"default",n=N(t,o);if(void 0!==n){var i=n.call(t,r);if(E(i))throw new TypeError;return i}return function(t,e){if("string"===e){var r=t.toString;if(A(r)&&!E(o=r.call(t)))return o;if(A(n=t.valueOf)&&!E(o=n.call(t)))return o}else{var n;if(A(n=t.valueOf)&&!E(o=n.call(t)))return o;var o,i=t.toString;if(A(i)&&!E(o=i.call(t)))return o}throw new TypeError}(t,"default"===r?"number":r)}function R(t){return!!t}function x(t){var e=T(t,3);return"symbol"==typeof e?e:function(t){return""+t}(e)}function S(t){return Array.isArray?Array.isArray(t):t instanceof Object?t instanceof Array:"[object Array]"===Object.prototype.toString.call(t)}function A(t){return"function"==typeof t}function K(t){return"function"==typeof t}function D(t,e){return t===e||t!=t&&e!=e}function N(t,e){var r=t[e];if(null!=r){if(!A(r))throw new TypeError;return r}}function F(t){var e=N(t,i);if(!A(e))throw new TypeError;var r=e.call(t);if(!E(r))throw new TypeError;return r}function I(t){return t.value}function z(t){var e=t.next();return!e.done&&e}function L(t){var e=t.return;e&&e.call(t)}function C(t){var e=Object.getPrototypeOf(t);if("function"!=typeof t||t===s)return e;if(e!==s)return e;var r=t.prototype,n=r&&Object.getPrototypeOf(r);if(null==n||n===Object.prototype)return e;var o=n.constructor;return"function"!=typeof o||o===t?e:o}function V(t,e,r){var n=d.getProvider(t,e);if(!M(n))return n;if(r){if(d.setProvider(t,e,v))return v;throw new Error("Illegal state.")}}function W(t){return t.__=void 0,delete t.__,t}t("decorate",(function(t,e,r,n){if(M(r)){if(!S(t))throw new TypeError;if(!K(e))throw new TypeError;return function(t,e){for(var r=t.length-1;r>=0;--r){var n=(0,t[r])(e);if(!M(n)&&!P(n)){if(!K(n))throw new TypeError;e=n}}return e}(t,e)}if(!S(t))throw new TypeError;if(!E(e))throw new TypeError;if(!E(n)&&!M(n)&&!P(n))throw new TypeError;return P(n)&&(n=void 0),function(t,e,r,n){for(var o=t.length-1;o>=0;--o){var i=(0,t[o])(e,r,n);if(!M(i)&&!P(i)){if(!E(i))throw new TypeError;n=i}}return n}(t,e,r=x(r),n)})),t("metadata",(function(t,e){return function(r,n){if(!E(r))throw new TypeError;if(!M(n)&&!function(t){switch(j(t)){case 3:case 4:return!0;default:return!1}}(n))throw new TypeError;O(t,e,r,n)}})),t("defineMetadata",(function(t,e,r,n){if(!E(r))throw new TypeError;return M(n)||(n=x(n)),O(t,e,r,n)})),t("hasMetadata",(function(t,e,r){if(!E(e))throw new TypeError;return M(r)||(r=x(r)),g(t,e,r)})),t("hasOwnMetadata",(function(t,e,r){if(!E(e))throw new TypeError;return M(r)||(r=x(r)),w(t,e,r)})),t("getMetadata",(function(t,e,r){if(!E(e))throw new TypeError;return M(r)||(r=x(r)),b(t,e,r)})),t("getOwnMetadata",(function(t,e,r){if(!E(e))throw new TypeError;return M(r)||(r=x(r)),_(t,e,r)})),t("getMetadataKeys",(function(t,e){if(!E(t))throw new TypeError;return M(e)||(e=x(e)),m(t,e)})),t("getOwnMetadataKeys",(function(t,e){if(!E(t))throw new TypeError;return M(e)||(e=x(e)),k(t,e)})),t("deleteMetadata",(function(t,e,r){if(!E(e))throw new TypeError;if(M(r)||(r=x(r)),!E(e))throw new TypeError;M(r)||(r=x(r));var n=V(e,r,!1);return!M(n)&&n.OrdinaryDeleteMetadata(t,e,r)}))}(n,e),void 0===e.Reflect&&(e.Reflect=t)}()}(n||(n={}))}},e={};function r(n){var o=e[n];if(void 0!==o)return o.exports;var i=e[n]={exports:{}};return t[n].call(i.exports,i,i.exports,r),i.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(729)})())); |
/** | ||
* @summary Deep Object Comparison | ||
* @description algorithm from {@link https://stackoverflow.com/questions/30476150/javascript-deep-comparison-recursively-objects-and-properties} | ||
* but with optional ignored properties | ||
* @description Enhanced algorithm for deep comparison with optional ignored properties | ||
* | ||
* @param {any} a | ||
* @param {any} b | ||
* @param {string} [propsToIgnore] a list of properties to ignore on the objects | ||
* @param {unknown} a - First value to compare | ||
* @param {unknown} b - Second value to compare | ||
* @param {string[]} propsToIgnore - A list of properties to ignore on the objects | ||
* | ||
@@ -10,0 +9,0 @@ * @function isEqual |
/** | ||
* @summary Deep Object Comparison | ||
* @description algorithm from {@link https://stackoverflow.com/questions/30476150/javascript-deep-comparison-recursively-objects-and-properties} | ||
* but with optional ignored properties | ||
* @description Enhanced algorithm for deep comparison with optional ignored properties | ||
* | ||
* @param {any} a | ||
* @param {any} b | ||
* @param {string} [propsToIgnore] a list of properties to ignore on the objects | ||
* @param {unknown} a - First value to compare | ||
* @param {unknown} b - Second value to compare | ||
* @param {string[]} propsToIgnore - A list of properties to ignore on the objects | ||
* | ||
@@ -10,0 +9,0 @@ * @function isEqual |
/** | ||
* @summary Deep Object Comparison | ||
* @description algorithm from {@link https://stackoverflow.com/questions/30476150/javascript-deep-comparison-recursively-objects-and-properties} | ||
* but with optional ignored properties | ||
* @description Enhanced algorithm for deep comparison with optional ignored properties | ||
* | ||
* @param {any} a | ||
* @param {any} b | ||
* @param {string} [propsToIgnore] a list of properties to ignore on the objects | ||
* @param {unknown} a - First value to compare | ||
* @param {unknown} b - Second value to compare | ||
* @param {string[]} propsToIgnore - A list of properties to ignore on the objects | ||
* | ||
@@ -14,25 +13,106 @@ * @function isEqual | ||
export function isEqual(a, b, ...propsToIgnore) { | ||
if (a === b) | ||
// Handle simple cases | ||
if (a === b) { | ||
// Special case for +0 and -0 | ||
return a !== 0 || 1 / a === 1 / b; | ||
} | ||
if (a == null || b == null) | ||
return a === b; | ||
if (typeof a !== typeof b) | ||
return false; | ||
// Handle NaN | ||
if (Number.isNaN(a) && Number.isNaN(b)) | ||
return true; | ||
if (a instanceof Date && b instanceof Date) | ||
// Handle primitive types | ||
if (typeof a !== "object") | ||
return a === b; | ||
// Handle Date objects | ||
if (a instanceof Date && b instanceof Date) { | ||
// Check if both dates are invalid | ||
if (isNaN(a.getTime()) && isNaN(b.getTime())) | ||
return true; | ||
return a.getTime() === b.getTime(); | ||
if (!a || !b || (typeof a !== "object" && typeof b !== "object")) | ||
return a === b; | ||
if (a === null || a === undefined || b === null || b === undefined) | ||
} | ||
// Handle RegExp objects | ||
if (a instanceof RegExp && b instanceof RegExp) | ||
return a.toString() === b.toString(); | ||
// Handle Error objects | ||
if (a instanceof Error && b instanceof Error) { | ||
return a.name === b.name && a.message === b.message; | ||
} | ||
// Handle Array objects | ||
if (Array.isArray(a) && Array.isArray(b)) { | ||
if (a.length !== b.length) | ||
return false; | ||
for (let i = 0; i < a.length; i++) { | ||
if (!isEqual(a[i], b[i], ...propsToIgnore)) | ||
return false; | ||
} | ||
return true; | ||
} | ||
// Handle Map objects | ||
if (a instanceof Map && b instanceof Map) { | ||
if (a.size !== b.size) | ||
return false; | ||
for (const [key, value] of a) { | ||
if (!b.has(key) || !isEqual(value, b.get(key), ...propsToIgnore)) | ||
return false; | ||
} | ||
return true; | ||
} | ||
// Handle Set objects | ||
if (a instanceof Set && b instanceof Set) { | ||
if (a.size !== b.size) | ||
return false; | ||
for (const item of a) { | ||
if (!b.has(item)) | ||
return false; | ||
} | ||
return true; | ||
} | ||
// Handle TypedArray objects | ||
if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) { | ||
if (a.byteLength !== b.byteLength) | ||
return false; | ||
if (a.byteOffset !== b.byteOffset) | ||
return false; | ||
if (a.buffer.byteLength !== b.buffer.byteLength) | ||
return false; | ||
const uint8A = new Uint8Array(a.buffer, a.byteOffset, a.byteLength); | ||
const uint8B = new Uint8Array(b.buffer, b.byteOffset, b.byteLength); | ||
for (let i = 0; i < uint8A.length; i++) { | ||
if (uint8A[i] !== uint8B[i]) | ||
return false; | ||
} | ||
return true; | ||
} | ||
// Handle other objects | ||
const aKeys = Object.keys(a).filter((k) => !propsToIgnore.includes(k)); | ||
const bKeys = Object.keys(b).filter((k) => !propsToIgnore.includes(k)); | ||
if (aKeys.length !== bKeys.length) | ||
return false; | ||
if (typeof a !== typeof b) { | ||
for (const key of aKeys) { | ||
if (!bKeys.includes(key)) | ||
return false; | ||
if (!isEqual(a[key], b[key], ...propsToIgnore)) | ||
return false; | ||
} | ||
// Handle Symbol properties | ||
const aSymbols = Object.getOwnPropertySymbols(a).filter((s) => !propsToIgnore.includes(s.toString())); | ||
const bSymbols = Object.getOwnPropertySymbols(b).filter((s) => !propsToIgnore.includes(s.toString())); | ||
if (aSymbols.length !== bSymbols.length) | ||
return false; | ||
for (const sym of aSymbols) { | ||
if (!bSymbols.includes(sym)) | ||
return false; | ||
if (!isEqual(a[sym], b[sym], ...propsToIgnore)) | ||
return false; | ||
} | ||
if (a.prototype !== | ||
b.prototype) { | ||
// Add this check right before the final return statement | ||
if (Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) { | ||
return false; | ||
} | ||
const keys = Object.keys(a).filter((k) => propsToIgnore.indexOf(k) === -1); | ||
if (keys.length !== | ||
Object.keys(b).filter((k) => propsToIgnore.indexOf(k) === -1).length) | ||
return false; | ||
return keys.every((k) => propsToIgnore.indexOf(k) !== -1 || | ||
isEqual(a[k], b[k], ...propsToIgnore)); | ||
return true; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9lcXVhbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxPQUFPLENBQ3JCLENBQVUsRUFDVixDQUFVLEVBQ1YsR0FBRyxhQUF1QjtJQUUxQixJQUFJLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDekIsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJO1FBQ3hDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQztRQUM5RCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakIsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssU0FBUztRQUNoRSxPQUFPLEtBQUssQ0FBQztJQUNmLElBQUksT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUNHLENBQTRCLENBQUMsU0FBUztRQUN0QyxDQUE0QixDQUFDLFNBQVMsRUFDdkMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsSUFDRSxJQUFJLENBQUMsTUFBTTtRQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtRQUVwRSxPQUFPLEtBQUssQ0FBQztJQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDZixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUNKLENBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLENBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQ2pDLEdBQUcsYUFBYSxDQUNqQixDQUNKLENBQUM7QUFDSixDQUFDIiwiZmlsZSI6ImVxdWFsaXR5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBEZWVwIE9iamVjdCBDb21wYXJpc29uXG4gKiBAZGVzY3JpcHRpb24gYWxnb3JpdGhtIGZyb20ge0BsaW5rIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMwNDc2MTUwL2phdmFzY3JpcHQtZGVlcC1jb21wYXJpc29uLXJlY3Vyc2l2ZWx5LW9iamVjdHMtYW5kLXByb3BlcnRpZXN9XG4gKiBidXQgd2l0aCBvcHRpb25hbCBpZ25vcmVkIHByb3BlcnRpZXNcbiAqXG4gKiBAcGFyYW0ge2FueX0gYVxuICogQHBhcmFtIHthbnl9IGJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbcHJvcHNUb0lnbm9yZV0gYSBsaXN0IG9mIHByb3BlcnRpZXMgdG8gaWdub3JlIG9uIHRoZSBvYmplY3RzXG4gKlxuICogQGZ1bmN0aW9uIGlzRXF1YWxcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cmVmbGVjdGlvbi5lcXVhbGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFcXVhbChcbiAgYTogdW5rbm93bixcbiAgYjogdW5rbm93bixcbiAgLi4ucHJvcHNUb0lnbm9yZTogc3RyaW5nW11cbik6IGJvb2xlYW4ge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gIGlmIChhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSlcbiAgICByZXR1cm4gYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpO1xuICBpZiAoIWEgfHwgIWIgfHwgKHR5cGVvZiBhICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBiICE9PSBcIm9iamVjdFwiKSlcbiAgICByZXR1cm4gYSA9PT0gYjtcbiAgaWYgKGEgPT09IG51bGwgfHwgYSA9PT0gdW5kZWZpbmVkIHx8IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoXG4gICAgKGEgYXMgeyBwcm90b3R5cGU6IHVua25vd24gfSkucHJvdG90eXBlICE9PVxuICAgIChiIGFzIHsgcHJvdG90eXBlOiB1bmtub3duIH0pLnByb3RvdHlwZVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGEpLmZpbHRlcigoaykgPT4gcHJvcHNUb0lnbm9yZS5pbmRleE9mKGspID09PSAtMSk7XG4gIGlmIChcbiAgICBrZXlzLmxlbmd0aCAhPT1cbiAgICBPYmplY3Qua2V5cyhiKS5maWx0ZXIoKGspID0+IHByb3BzVG9JZ25vcmUuaW5kZXhPZihrKSA9PT0gLTEpLmxlbmd0aFxuICApXG4gICAgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4ga2V5cy5ldmVyeShcbiAgICAoaykgPT5cbiAgICAgIHByb3BzVG9JZ25vcmUuaW5kZXhPZihrKSAhPT0gLTEgfHxcbiAgICAgIGlzRXF1YWwoXG4gICAgICAgIChhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrXSxcbiAgICAgICAgKGIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tdLFxuICAgICAgICAuLi5wcm9wc1RvSWdub3JlXG4gICAgICApXG4gICk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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ckQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FDN0MsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQ3JELENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQzdDLENBQUM7SUFFRixJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE1BQU07UUFBRSxPQUFPLEtBQUssQ0FBQztJQUV0RCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzFDLElBQ0UsQ0FBQyxPQUFPLENBQ0wsQ0FBNkIsQ0FBQyxHQUFHLENBQUMsRUFDbEMsQ0FBNkIsQ0FBQyxHQUFHLENBQUMsRUFDbkMsR0FBRyxhQUFhLENBQ2pCO1lBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsImZpbGUiOiJlcXVhbGl0eS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHN1bW1hcnkgRGVlcCBPYmplY3QgQ29tcGFyaXNvblxuICogQGRlc2NyaXB0aW9uIEVuaGFuY2VkIGFsZ29yaXRobSBmb3IgZGVlcCBjb21wYXJpc29uIHdpdGggb3B0aW9uYWwgaWdub3JlZCBwcm9wZXJ0aWVzXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSBhIC0gRmlyc3QgdmFsdWUgdG8gY29tcGFyZVxuICogQHBhcmFtIHt1bmtub3dufSBiIC0gU2Vjb25kIHZhbHVlIHRvIGNvbXBhcmVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHByb3BzVG9JZ25vcmUgLSBBIGxpc3Qgb2YgcHJvcGVydGllcyB0byBpZ25vcmUgb24gdGhlIG9iamVjdHNcbiAqXG4gKiBAZnVuY3Rpb24gaXNFcXVhbFxuICogQG1lbWJlck9mIG1vZHVsZTpyZWZsZWN0aW9uLmVxdWFsaXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0VxdWFsKFxuICBhOiB1bmtub3duLFxuICBiOiB1bmtub3duLFxuICAuLi5wcm9wc1RvSWdub3JlOiBzdHJpbmdbXVxuKTogYm9vbGVhbiB7XG4gIC8vIEhhbmRsZSBzaW1wbGUgY2FzZXNcbiAgaWYgKGEgPT09IGIpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yICswIGFuZCAtMFxuICAgIHJldHVybiBhICE9PSAwIHx8IDEgLyAoYSBhcyBudW1iZXIpID09PSAxIC8gKGIgYXMgbnVtYmVyKTtcbiAgfVxuICBpZiAoYSA9PSBudWxsIHx8IGIgPT0gbnVsbCkgcmV0dXJuIGEgPT09IGI7XG4gIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHJldHVybiBmYWxzZTtcblxuICAvLyBIYW5kbGUgTmFOXG4gIGlmIChOdW1iZXIuaXNOYU4oYSkgJiYgTnVtYmVyLmlzTmFOKGIpKSByZXR1cm4gdHJ1ZTtcblxuICAvLyBIYW5kbGUgcHJpbWl0aXZlIHR5cGVzXG4gIGlmICh0eXBlb2YgYSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIGEgPT09IGI7XG5cbiAgLy8gSGFuZGxlIERhdGUgb2JqZWN0c1xuICBpZiAoYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAvLyBDaGVjayBpZiBib3RoIGRhdGVzIGFyZSBpbnZhbGlkXG4gICAgaWYgKGlzTmFOKGEuZ2V0VGltZSgpKSAmJiBpc05hTihiLmdldFRpbWUoKSkpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG4gIH1cblxuICAvLyBIYW5kbGUgUmVnRXhwIG9iamVjdHNcbiAgaWYgKGEgaW5zdGFuY2VvZiBSZWdFeHAgJiYgYiBpbnN0YW5jZW9mIFJlZ0V4cClcbiAgICByZXR1cm4gYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCk7XG5cbiAgLy8gSGFuZGxlIEVycm9yIG9iamVjdHNcbiAgaWYgKGEgaW5zdGFuY2VvZiBFcnJvciAmJiBiIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICByZXR1cm4gYS5uYW1lID09PSBiLm5hbWUgJiYgYS5tZXNzYWdlID09PSBiLm1lc3NhZ2U7XG4gIH1cblxuICAvLyBIYW5kbGUgQXJyYXkgb2JqZWN0c1xuICBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFpc0VxdWFsKGFbaV0sIGJbaV0sIC4uLnByb3BzVG9JZ25vcmUpKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gSGFuZGxlIE1hcCBvYmplY3RzXG4gIGlmIChhIGluc3RhbmNlb2YgTWFwICYmIGIgaW5zdGFuY2VvZiBNYXApIHtcbiAgICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBhKSB7XG4gICAgICBpZiAoIWIuaGFzKGtleSkgfHwgIWlzRXF1YWwodmFsdWUsIGIuZ2V0KGtleSksIC4uLnByb3BzVG9JZ25vcmUpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gSGFuZGxlIFNldCBvYmplY3RzXG4gIGlmIChhIGluc3RhbmNlb2YgU2V0ICYmIGIgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICBpZiAoYS5zaXplICE9PSBiLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgYSkge1xuICAgICAgaWYgKCFiLmhhcyhpdGVtKSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIEhhbmRsZSBUeXBlZEFycmF5IG9iamVjdHNcbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhhKSAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcoYikpIHtcbiAgICBpZiAoYS5ieXRlTGVuZ3RoICE9PSBiLmJ5dGVMZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5ieXRlT2Zmc2V0ICE9PSBiLmJ5dGVPZmZzZXQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5idWZmZXIuYnl0ZUxlbmd0aCAhPT0gYi5idWZmZXIuYnl0ZUxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgdWludDhBID0gbmV3IFVpbnQ4QXJyYXkoYS5idWZmZXIsIGEuYnl0ZU9mZnNldCwgYS5ieXRlTGVuZ3RoKTtcbiAgICBjb25zdCB1aW50OEIgPSBuZXcgVWludDhBcnJheShiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB1aW50OEEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh1aW50OEFbaV0gIT09IHVpbnQ4QltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIEhhbmRsZSBvdGhlciBvYmplY3RzXG4gIGNvbnN0IGFLZXlzID0gT2JqZWN0LmtleXMoYSkuZmlsdGVyKChrKSA9PiAhcHJvcHNUb0lnbm9yZS5pbmNsdWRlcyhrKSk7XG4gIGNvbnN0IGJLZXlzID0gT2JqZWN0LmtleXMoYikuZmlsdGVyKChrKSA9PiAhcHJvcHNUb0lnbm9yZS5pbmNsdWRlcyhrKSk7XG5cbiAgaWYgKGFLZXlzLmxlbmd0aCAhPT0gYktleXMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgYUtleXMpIHtcbiAgICBpZiAoIWJLZXlzLmluY2x1ZGVzKGtleSkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoXG4gICAgICAhaXNFcXVhbChcbiAgICAgICAgKGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0sXG4gICAgICAgIChiIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldLFxuICAgICAgICAuLi5wcm9wc1RvSWdub3JlXG4gICAgICApXG4gICAgKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gSGFuZGxlIFN5bWJvbCBwcm9wZXJ0aWVzXG4gIGNvbnN0IGFTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhhKS5maWx0ZXIoXG4gICAgKHMpID0+ICFwcm9wc1RvSWdub3JlLmluY2x1ZGVzKHMudG9TdHJpbmcoKSlcbiAgKTtcbiAgY29uc3QgYlN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGIpLmZpbHRlcihcbiAgICAocykgPT4gIXByb3BzVG9JZ25vcmUuaW5jbHVkZXMocy50b1N0cmluZygpKVxuICApO1xuXG4gIGlmIChhU3ltYm9scy5sZW5ndGggIT09IGJTeW1ib2xzLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoY29uc3Qgc3ltIG9mIGFTeW1ib2xzKSB7XG4gICAgaWYgKCFiU3ltYm9scy5pbmNsdWRlcyhzeW0pKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKFxuICAgICAgIWlzRXF1YWwoXG4gICAgICAgIChhIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtzeW1dLFxuICAgICAgICAoYiBhcyBSZWNvcmQ8c3ltYm9sLCB1bmtub3duPilbc3ltXSxcbiAgICAgICAgLi4ucHJvcHNUb0lnbm9yZVxuICAgICAgKVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEFkZCB0aGlzIGNoZWNrIHJpZ2h0IGJlZm9yZSB0aGUgZmluYWwgcmV0dXJuIHN0YXRlbWVudFxuICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKGEpICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ== |
@@ -24,8 +24,2 @@ export * from "./constants"; | ||
/** | ||
* @summary Equality | ||
* @description Provides common reflection based functionality | ||
* @namespace utils | ||
* @memberOf module:reflection | ||
*/ | ||
/** | ||
* @summary stores the current package version | ||
@@ -36,2 +30,2 @@ * @description this is how you should document a constant | ||
*/ | ||
export declare const VERSION = "0.3.5"; | ||
export declare const VERSION = "0.3.7"; |
@@ -24,8 +24,2 @@ export * from "./constants"; | ||
/** | ||
* @summary Equality | ||
* @description Provides common reflection based functionality | ||
* @namespace utils | ||
* @memberOf module:reflection | ||
*/ | ||
/** | ||
* @summary stores the current package version | ||
@@ -36,4 +30,4 @@ * @description this is how you should document a constant | ||
*/ | ||
export const VERSION = "0.3.5"; | ||
export const VERSION = "0.3.7"; | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUV4Qjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFFSDs7Ozs7R0FLRztBQUVIOzs7OztHQUtHO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9lcXVhbGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmVmbGVjdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBSZWZsZWN0aW9uXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgY29tbW9uIHJlZmxlY3Rpb24gYmFzZWQgZnVuY3Rpb25hbGl0eVxuICogQG1vZHVsZSByZWZsZWN0aW9uXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWNvcmF0b3JzXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgY29tbW9uIHJlZmxlY3Rpb24gYmFzZWQgZnVuY3Rpb25hbGl0eVxuICogQG5hbWVzcGFjZSBkZWNvcmF0b3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOnJlZmxlY3Rpb25cbiAqL1xuXG4vKipcbiAqIEBzdW1tYXJ5IEVxdWFsaXR5XG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgY29tbW9uIHJlZmxlY3Rpb24gYmFzZWQgZnVuY3Rpb25hbGl0eVxuICogQG5hbWVzcGFjZSBlcXVhbGl0eVxuICogQG1lbWJlck9mIG1vZHVsZTpyZWZsZWN0aW9uXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBFcXVhbGl0eVxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGNvbW1vbiByZWZsZWN0aW9uIGJhc2VkIGZ1bmN0aW9uYWxpdHlcbiAqIEBuYW1lc3BhY2UgdXRpbHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cmVmbGVjdGlvblxuICovXG5cbi8qKlxuICogQHN1bW1hcnkgc3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvblxuICogQGRlc2NyaXB0aW9uIHRoaXMgaXMgaG93IHlvdSBzaG91bGQgZG9jdW1lbnQgYSBjb25zdGFudFxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6dHMtd29ya3NwYWNlXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIwLjMuNVwiO1xuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFNBQVMsQ0FBQztBQUV4Qjs7OztHQUlHO0FBRUg7Ozs7O0dBS0c7QUFFSDs7Ozs7R0FLRztBQUVIOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NvbnN0YW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXF1YWxpdHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JlZmxlY3Rpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgUmVmbGVjdGlvblxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGNvbW1vbiByZWZsZWN0aW9uIGJhc2VkIGZ1bmN0aW9uYWxpdHlcbiAqIEBtb2R1bGUgcmVmbGVjdGlvblxuICovXG5cbi8qKlxuICogQHN1bW1hcnkgRGVjb3JhdG9yc1xuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGNvbW1vbiByZWZsZWN0aW9uIGJhc2VkIGZ1bmN0aW9uYWxpdHlcbiAqIEBuYW1lc3BhY2UgZGVjb3JhdG9yc1xuICogQG1lbWJlck9mIG1vZHVsZTpyZWZsZWN0aW9uXG4gKi9cblxuLyoqXG4gKiBAc3VtbWFyeSBFcXVhbGl0eVxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGNvbW1vbiByZWZsZWN0aW9uIGJhc2VkIGZ1bmN0aW9uYWxpdHlcbiAqIEBuYW1lc3BhY2UgZXF1YWxpdHlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6cmVmbGVjdGlvblxuICovXG5cbi8qKlxuICogQHN1bW1hcnkgc3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvblxuICogQGRlc2NyaXB0aW9uIHRoaXMgaXMgaG93IHlvdSBzaG91bGQgZG9jdW1lbnQgYSBjb25zdGFudFxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6dHMtd29ya3NwYWNlXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIwLjMuN1wiO1xuIl19 |
@@ -8,4 +8,2 @@ import { DecoratorMetadata } from "./types"; | ||
* @static | ||
* | ||
* @memberOf module:reflection | ||
*/ | ||
@@ -47,5 +45,5 @@ export declare class Reflection { | ||
/** | ||
* @summary Retrieves all properties of an object | ||
* @description | ||
* - and of all its prototypes if {@param climbTree} until it reaches {@param stopAt} (or ends the prototype chain) | ||
* @description Retrieves all properties of an object | ||
* @summary | ||
* if {@param climbTree} it will crawl the prototype tree until it reaches {@param stopAt} (or ends the prototype chain) | ||
* | ||
@@ -77,2 +75,3 @@ * @param {Record<string, unknown>} obj | ||
* @static | ||
* @memberOf Reflection | ||
*/ | ||
@@ -100,2 +99,4 @@ static getAllPropertyDecorators<M extends object>(model: M, ...prefixes: string[]): Record<string, DecoratorMetadata[]> | undefined; | ||
* @param {DecoratorMetadata[]} [accumulator] used when recursive is true, to cache decorators while it climbs the prototypal tree | ||
* | ||
* @static | ||
*/ | ||
@@ -102,0 +103,0 @@ static getPropertyDecorators(annotationPrefix: string, target: object, propertyName: string | symbol, ignoreType?: boolean, recursive?: boolean, accumulator?: DecoratorMetadata[]): { |
@@ -9,4 +9,2 @@ import { ReflectionKeys } from "./constants"; | ||
* @static | ||
* | ||
* @memberOf module:reflection | ||
*/ | ||
@@ -28,2 +26,4 @@ export class Reflection { | ||
return true; | ||
if (typeof value === "undefined") | ||
return false; | ||
if (typeof value !== "object") | ||
@@ -61,3 +61,3 @@ return false; | ||
if (Array.isArray(types)) | ||
return this.checkTypes(value, types); | ||
return Reflection.checkTypes(value, types); | ||
return true; | ||
@@ -73,5 +73,5 @@ case "function": | ||
/** | ||
* @summary Retrieves all properties of an object | ||
* @description | ||
* - and of all its prototypes if {@param climbTree} until it reaches {@param stopAt} (or ends the prototype chain) | ||
* @description Retrieves all properties of an object | ||
* @summary | ||
* if {@param climbTree} it will crawl the prototype tree until it reaches {@param stopAt} (or ends the prototype chain) | ||
* | ||
@@ -85,3 +85,3 @@ * @param {Record<string, unknown>} obj | ||
static getAllProperties(obj, climbTree = true, stopAt = "Object") { | ||
const allProps = []; | ||
const allProps = new Set(); | ||
let curr = obj; | ||
@@ -98,9 +98,5 @@ const keepAtIt = function () { | ||
do { | ||
const props = Object.getOwnPropertyNames(curr); | ||
props.forEach(function (prop) { | ||
if (allProps.indexOf(prop) === -1) | ||
allProps.push(prop); | ||
}); | ||
Object.getOwnPropertyNames(curr).forEach((prop) => allProps.add(prop)); | ||
} while (keepAtIt()); | ||
return allProps; | ||
return Array.from(allProps); | ||
} | ||
@@ -116,12 +112,12 @@ /** | ||
const keys = Reflect.getOwnMetadataKeys(target.constructor); | ||
return keys | ||
.filter((key) => key.toString().startsWith(annotationPrefix)) | ||
.reduce((values, key) => { | ||
// get metadata value | ||
const currValues = { | ||
key: key.substring(annotationPrefix.length), | ||
props: Reflect.getMetadata(key, target.constructor), | ||
}; | ||
return values.concat(currValues); | ||
}, []); | ||
const result = []; | ||
for (const key of keys) { | ||
if (key.startsWith(annotationPrefix)) { | ||
result.push({ | ||
key: key.slice(annotationPrefix.length), | ||
props: Reflect.getMetadata(key, target.constructor), | ||
}); | ||
} | ||
} | ||
return result; | ||
} | ||
@@ -135,22 +131,21 @@ /** | ||
* @static | ||
* @memberOf Reflection | ||
*/ | ||
static getAllPropertyDecorators(model, ...prefixes) { | ||
if (!prefixes || !prefixes.length) | ||
return; | ||
function pushOrCreate(accum, key, decorators) { | ||
if (!decorators || !decorators.length) | ||
return; | ||
if (!accum[key]) | ||
accum[key] = []; | ||
accum[key].push(...decorators); | ||
if (!prefixes || prefixes.length === 0) | ||
return undefined; | ||
const result = {}; | ||
const properties = Object.getOwnPropertyNames(model); | ||
for (const propKey of properties) { | ||
for (let i = 0; i < prefixes.length; i++) { | ||
const decorators = Reflection.getPropertyDecorators(prefixes[i], model, propKey, i !== 0); | ||
if (decorators.decorators.length > 0) { | ||
if (!result[propKey]) { | ||
result[propKey] = []; | ||
} | ||
result[propKey].push(...decorators.decorators); | ||
} | ||
} | ||
} | ||
return Object.getOwnPropertyNames(model).reduce((accum, propKey) => { | ||
prefixes.forEach((p, index) => { | ||
const decorators = this.getPropertyDecorators(p, model, propKey, index !== 0); | ||
if (!accum) | ||
accum = {}; | ||
pushOrCreate(accum, propKey, decorators.decorators); | ||
}); | ||
return accum; | ||
}, undefined); | ||
return Object.keys(result).length > 0 ? result : undefined; | ||
} | ||
@@ -168,3 +163,3 @@ /** | ||
static getTypeFromDecorator(model, propKey) { | ||
const decorators = this.getPropertyDecorators(ReflectionKeys.TYPE, model, propKey, false); | ||
const decorators = Reflection.getPropertyDecorators(ReflectionKeys.TYPE, model, propKey, false); | ||
if (!decorators || !decorators.decorators) | ||
@@ -187,2 +182,4 @@ return; | ||
* @param {DecoratorMetadata[]} [accumulator] used when recursive is true, to cache decorators while it climbs the prototypal tree | ||
* | ||
* @static | ||
*/ | ||
@@ -238,6 +235,6 @@ static getPropertyDecorators(annotationPrefix, target, propertyName, ignoreType = false, recursive = true, accumulator) { | ||
// We choose to ignore type here, because in inheritance the expected type is from the lowest child class | ||
return this.getPropertyDecorators(annotationPrefix, Object.getPrototypeOf(target.constructor), propertyName, true, recursive, result.decorators); | ||
return Reflection.getPropertyDecorators(annotationPrefix, Object.getPrototypeOf(target.constructor), propertyName, true, recursive, result.decorators); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SZWZsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVyQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxVQUFVO0lBQ3JCLGdCQUF1QixDQUFDO0lBRXhCOzs7Ozs7Ozs7T0FTRztJQUNLLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBYyxFQUFFLFlBQW9CO1FBQzNELElBQUksT0FBTyxLQUFLLEtBQUssWUFBWSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzdELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzVDLE9BQU8sQ0FDSixLQUFnQixDQUFDLFdBQVc7WUFDNUIsS0FBZ0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDOUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUM3QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFjLEVBQUUsYUFBdUI7UUFDdkQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxtQkFBbUIsQ0FDeEIsS0FBYyxFQUNkLEtBQTJDO1FBRTNDLFFBQVEsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNyQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0QyxLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFBRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUMvRCxPQUFPLElBQUksQ0FBQztZQUNkLEtBQUssVUFBVTtnQkFDYixJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRO29CQUN2QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQ3JCLEdBQTRCLEVBQzVCLFNBQVMsR0FBRyxJQUFJLEVBQ2hCLE1BQU0sR0FBRyxRQUFRO1FBRWpCLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixJQUFJLElBQUksR0FBNEIsR0FBRyxDQUFDO1FBRXhDLE1BQU0sUUFBUSxHQUFHO1lBQ2YsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsT0FBTztZQUN2QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssTUFBTTtnQkFBRSxPQUFPO1lBQ2hFLElBQUksR0FBRyxTQUFTLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7UUFFRixHQUFHLENBQUM7WUFDRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0MsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUk7Z0JBQzFCLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsUUFBUSxRQUFRLEVBQUUsRUFBRTtRQUNyQixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGtCQUFrQixDQUN2QixnQkFBd0IsRUFDeEIsTUFBYztRQUVkLE1BQU0sSUFBSSxHQUFhLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFdEUsT0FBTyxJQUFJO2FBQ1IsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDNUQsTUFBTSxDQUFDLENBQUMsTUFBeUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUN6RCxxQkFBcUI7WUFDckIsTUFBTSxVQUFVLEdBQUc7Z0JBQ2pCLEdBQUcsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztnQkFDM0MsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDcEQsQ0FBQztZQUNGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyx3QkFBd0IsQ0FDN0IsS0FBUSxFQUNSLEdBQUcsUUFBa0I7UUFFckIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUUxQyxTQUFTLFlBQVksQ0FDbkIsS0FBMEMsRUFDMUMsR0FBVyxFQUNYLFVBQStCO1lBRS9CLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQzdDLENBQUMsS0FBd0MsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNwRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUM1QixNQUFNLFVBQVUsR0FHWixJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLENBQUMsS0FBSztvQkFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUN2QixZQUFZLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsRUFDRCxTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxNQUFNLENBQUMsb0JBQW9CLENBQ3pCLEtBQWEsRUFDYixPQUF3QjtRQUV4QixNQUFNLFVBQVUsR0FDZCxJQUFJLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFbEQsTUFBTSxhQUFhLEdBQ2pCLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUF1QixDQUFDO1FBQ3JELE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxLQUFLO1lBQzlCLENBQUMsQ0FBRSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQWU7WUFDdEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE9BQU8sSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILE1BQU0sQ0FBQyxxQkFBcUIsQ0FDMUIsZ0JBQXdCLEVBQ3hCLE1BQWMsRUFDZCxZQUE2QixFQUM3QixhQUFzQixLQUFLLEVBQzNCLFNBQVMsR0FBRyxJQUFJLEVBQ2hCLFdBQWlDO1FBRWpDLE1BQU0sNkJBQTZCLEdBQUcsVUFDcEMsZ0JBQXdCLEVBQ3hCLE1BQWMsRUFDZCxZQUE2QixFQUM3QixhQUFzQixLQUFLLEVBQzNCLFdBQWlDO1lBRWpDLG9EQUFvRDtZQUNwRCxNQUFNLElBQUksR0FBYSxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNyRSxNQUFNLFVBQVUsR0FBd0IsSUFBSTtnQkFDMUMsZ0NBQWdDO2lCQUMvQixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDZCxJQUFJLFVBQVU7b0JBQUUsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQ25FLE9BQU8sQ0FDTCxHQUFHLEtBQUssY0FBYyxDQUFDLElBQUk7b0JBQzNCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FDNUMsQ0FBQztZQUNKLENBQUMsQ0FBQztpQkFDRCxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ3RCLHNCQUFzQjtnQkFDdEIsTUFBTSxVQUFVLEdBQUc7b0JBQ2pCLEdBQUcsRUFDRCxHQUFHLEtBQUssY0FBYyxDQUFDLElBQUk7d0JBQ3pCLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQzt3QkFDeEMsQ0FBQyxDQUFDLEdBQUc7b0JBQ1QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUM7aUJBQ3RELENBQUM7Z0JBQ0YsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25DLENBQUMsRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDLENBQUM7WUFFeEIsT0FBTztnQkFDTCxJQUFJLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRTtnQkFDN0IsVUFBVSxFQUFFLFVBQVU7YUFDdkIsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUNWLDZCQUE2QixDQUMzQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxDQUNaLENBQUM7UUFFSixNQUFNLElBQUksR0FBRyxVQUFVLEtBQTBCO1lBQy9DLE1BQU0sS0FBSyxHQUFzQyxFQUFFLENBQUM7WUFDcEQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBdUIsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUN2QyxPQUFPLENBQUMsR0FBRyxDQUNULHFDQUFxQyxJQUFJLENBQUMsR0FBRyxXQUFXOzRCQUN0RCxRQUFRLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSx1Q0FBdUM7NEJBQ3RFLCtCQUErQixDQUNsQyxDQUFDO29CQUNKLE9BQU8sS0FBSyxDQUFDO2dCQUNmLENBQUM7Z0JBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBMEIsQ0FBQztnQkFDN0QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckUsT0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQzthQUNwQyxDQUFDO1FBQ0osQ0FBQztRQUVELHlHQUF5RztRQUN6RyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FDL0IsZ0JBQWdCLEVBQ2hCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUN6QyxZQUFZLEVBQ1osSUFBSSxFQUNKLFNBQVMsRUFDVCxNQUFNLENBQUMsVUFBVSxDQUNsQixDQUFDO0lBQ0osQ0FBQztDQUNGIiwiZmlsZSI6IlJlZmxlY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvcmF0b3JNZXRhZGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBSZWZsZWN0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gXCIuL2VxdWFsaXR5XCI7XG5cbi8qKlxuICogQHN1bW1hcnkgTmFtZXNwYWNlIGNsYXNzIGhvbGRpbmcgcmVmbGVjdGlvbiBBUElcbiAqIEBkZXNjcmlwdGlvbiBob2xkcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBoYW5kbGUgcmVmbGVjdGlvbiBtZXRhZGF0YVxuICpcbiAqIEBjbGFzcyBSZWZsZWN0aW9uXG4gKiBAc3RhdGljXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpyZWZsZWN0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWZsZWN0aW9uIHtcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFV0aWwgZnVuY3Rpb24gdG8gY2hlY2sgYSB0eXBlIGFjY29yZGluZyB0byBhIHR5cGVOYW1lXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjZXB0ZWRUeXBlXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgZm9yIGEgbWF0Y2gsIGZhbHNlIG90aGVyd2lzZVxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBjaGVja1R5cGUodmFsdWU6IHVua25vd24sIGFjY2VwdGVkVHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYWNjZXB0ZWRUeXBlLnRvTG93ZXJDYXNlKCkpIHJldHVybiB0cnVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gKFxuICAgICAgKHZhbHVlIGFzIG9iamVjdCkuY29uc3RydWN0b3IgJiZcbiAgICAgICh2YWx1ZSBhcyBvYmplY3QpLmNvbnN0cnVjdG9yLm5hbWUudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgYWNjZXB0ZWRUeXBlLnRvTG93ZXJDYXNlKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFV0aWwgZnVuY3Rpb24gdG8gY2hlY2sgYSB0eXBlIGFjY29yZGluZyBtdWx0aXBsZSBwb3NzaWJpbGl0aWVzXG4gICAqXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYWNjZXB0ZWRUeXBlc1xuICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIGFueSBpcyBhIG1hdGNoLCBmYWxzZSBvdGhlcndpc2VcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKi9cbiAgc3RhdGljIGNoZWNrVHlwZXModmFsdWU6IHVua25vd24sIGFjY2VwdGVkVHlwZXM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuICFhY2NlcHRlZFR5cGVzLmV2ZXJ5KCh0KSA9PiAhdGhpcy5jaGVja1R5cGUodmFsdWUsIHQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBldmFsdWF0ZXMgdGhlIHR5cGUgbWV0YWRhdGEgdnMgdGhlIHZhbHVlIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHthbnl9IHZhbHVlXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3RyaW5nW10gfCB7bmFtZTogc3RyaW5nfX0gdHlwZXNcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKi9cbiAgc3RhdGljIGV2YWx1YXRlRGVzaWduVHlwZXMoXG4gICAgdmFsdWU6IHVua25vd24sXG4gICAgdHlwZXM6IHN0cmluZyB8IHN0cmluZ1tdIHwgeyBuYW1lOiBzdHJpbmcgfVxuICApIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB0eXBlcykge1xuICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja1R5cGUodmFsdWUsIHR5cGVzKTtcbiAgICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZXMpKSByZXR1cm4gdGhpcy5jaGVja1R5cGVzKHZhbHVlLCB0eXBlcyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgIGlmICh0eXBlcy5uYW1lICYmIHR5cGVzLm5hbWUgIT09IFwiT2JqZWN0XCIpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tUeXBlKHZhbHVlLCB0eXBlcy5uYW1lKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIGFsbCBwcm9wZXJ0aWVzIG9mIGFuIG9iamVjdFxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogIC0gYW5kIG9mIGFsbCBpdHMgcHJvdG90eXBlcyBpZiB7QHBhcmFtIGNsaW1iVHJlZX0gdW50aWwgaXQgcmVhY2hlcyB7QHBhcmFtIHN0b3BBdH0gKG9yIGVuZHMgdGhlIHByb3RvdHlwZSBjaGFpbilcbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gb2JqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NsaW1iVHJlZV0gZGVmYXVsdCB0byB0cnVlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RvcEF0XSBkZWZhdWx0cyB0byAnT2JqZWN0J1xuICAgKlxuICAgKiBAc3RhdGljXG4gICAqL1xuICBzdGF0aWMgZ2V0QWxsUHJvcGVydGllcyhcbiAgICBvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGNsaW1iVHJlZSA9IHRydWUsXG4gICAgc3RvcEF0ID0gXCJPYmplY3RcIlxuICApIHtcbiAgICBjb25zdCBhbGxQcm9wczogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgY3VycjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBvYmo7XG5cbiAgICBjb25zdCBrZWVwQXRJdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY2xpbWJUcmVlKSByZXR1cm47XG4gICAgICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3Vycik7XG4gICAgICBpZiAoIXByb3RvdHlwZSB8fCBwcm90b3R5cGUuY29uc3RydWN0b3IubmFtZSA9PT0gc3RvcEF0KSByZXR1cm47XG4gICAgICBjdXJyID0gcHJvdG90eXBlO1xuICAgICAgcmV0dXJuIGN1cnI7XG4gICAgfTtcblxuICAgIGRvIHtcbiAgICAgIGNvbnN0IHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY3Vycik7XG4gICAgICBwcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICAgIGlmIChhbGxQcm9wcy5pbmRleE9mKHByb3ApID09PSAtMSkgYWxsUHJvcHMucHVzaChwcm9wKTtcbiAgICAgIH0pO1xuICAgIH0gd2hpbGUgKGtlZXBBdEl0KCkpO1xuICAgIHJldHVybiBhbGxQcm9wcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBDbGFzcyBkZWNvcmF0b3JzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbm5vdGF0aW9uUHJlZml4XG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXRcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKi9cbiAgc3RhdGljIGdldENsYXNzRGVjb3JhdG9ycyhcbiAgICBhbm5vdGF0aW9uUHJlZml4OiBzdHJpbmcsXG4gICAgdGFyZ2V0OiBvYmplY3RcbiAgKTogeyBrZXk6IHN0cmluZzsgcHJvcHM6IHVua25vd24gfVtdIHtcbiAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFJlZmxlY3QuZ2V0T3duTWV0YWRhdGFLZXlzKHRhcmdldC5jb25zdHJ1Y3Rvcik7XG5cbiAgICByZXR1cm4ga2V5c1xuICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkudG9TdHJpbmcoKS5zdGFydHNXaXRoKGFubm90YXRpb25QcmVmaXgpKVxuICAgICAgLnJlZHVjZSgodmFsdWVzOiB7IGtleTogc3RyaW5nOyBwcm9wczogdW5rbm93biB9W10sIGtleSkgPT4ge1xuICAgICAgICAvLyBnZXQgbWV0YWRhdGEgdmFsdWVcbiAgICAgICAgY29uc3QgY3VyclZhbHVlcyA9IHtcbiAgICAgICAgICBrZXk6IGtleS5zdWJzdHJpbmcoYW5ub3RhdGlvblByZWZpeC5sZW5ndGgpLFxuICAgICAgICAgIHByb3BzOiBSZWZsZWN0LmdldE1ldGFkYXRhKGtleSwgdGFyZ2V0LmNvbnN0cnVjdG9yKSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHZhbHVlcy5jb25jYXQoY3VyclZhbHVlcyk7XG4gICAgICB9LCBbXSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBkZWNvcmF0b3JzIGZvciBhbiBvYmplY3QncyBwcm9wZXJ0aWVzIHByZWZpeGVkIGJ5IHtAcGFyYW0gcHJlZml4ZXN9XG4gICAqXG4gICAqIEBwYXJhbSB7TX0gbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcHJlZml4ZXNcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKi9cbiAgc3RhdGljIGdldEFsbFByb3BlcnR5RGVjb3JhdG9yczxNIGV4dGVuZHMgb2JqZWN0PihcbiAgICBtb2RlbDogTSxcbiAgICAuLi5wcmVmaXhlczogc3RyaW5nW11cbiAgKTogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT4gfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJlZml4ZXMgfHwgIXByZWZpeGVzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgZnVuY3Rpb24gcHVzaE9yQ3JlYXRlKFxuICAgICAgYWNjdW06IFJlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhW10+LFxuICAgICAga2V5OiBzdHJpbmcsXG4gICAgICBkZWNvcmF0b3JzOiBEZWNvcmF0b3JNZXRhZGF0YVtdXG4gICAgKTogdm9pZCB7XG4gICAgICBpZiAoIWRlY29yYXRvcnMgfHwgIWRlY29yYXRvcnMubGVuZ3RoKSByZXR1cm47XG4gICAgICBpZiAoIWFjY3VtW2tleV0pIGFjY3VtW2tleV0gPSBbXTtcbiAgICAgIGFjY3VtW2tleV0ucHVzaCguLi5kZWNvcmF0b3JzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMobW9kZWwpLnJlZHVjZShcbiAgICAgIChhY2N1bTogUmVjb3JkPHN0cmluZywgbmV2ZXI+IHwgdW5kZWZpbmVkLCBwcm9wS2V5KSA9PiB7XG4gICAgICAgIHByZWZpeGVzLmZvckVhY2goKHAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVjb3JhdG9yczoge1xuICAgICAgICAgICAgcHJvcDogc3RyaW5nO1xuICAgICAgICAgICAgZGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXTtcbiAgICAgICAgICB9ID0gdGhpcy5nZXRQcm9wZXJ0eURlY29yYXRvcnMocCwgbW9kZWwsIHByb3BLZXksIGluZGV4ICE9PSAwKTtcbiAgICAgICAgICBpZiAoIWFjY3VtKSBhY2N1bSA9IHt9O1xuICAgICAgICAgIHB1c2hPckNyZWF0ZShhY2N1bSwgcHJvcEtleSwgZGVjb3JhdG9ycy5kZWNvcmF0b3JzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IGdldHMgdGhlIHByb3AgdHlwZSBmcm9tIHRoZSBkZWNvcmF0b3JcbiAgICogQGRlc2NyaXB0aW9uIHVzZXMgdGhlIG1ldGFkYXRhIHRvIGRpc2NvdmVyIHRoZSB0eXBlIG9mIHRoZSBvYmplY3Qgc3RvcmVkIHVuZGVyIG1vZGVsW3Byb0tleV1cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgc3ltYm9sfSBwcm9wS2V5XG4gICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICpcbiAgICogQHN0YXRpY1xuICAgKi9cbiAgc3RhdGljIGdldFR5cGVGcm9tRGVjb3JhdG9yKFxuICAgIG1vZGVsOiBvYmplY3QsXG4gICAgcHJvcEtleTogc3RyaW5nIHwgc3ltYm9sXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZGVjb3JhdG9yczogeyBwcm9wOiBzdHJpbmcgfCBzeW1ib2w7IGRlY29yYXRvcnM6IHVua25vd25bXSB9ID1cbiAgICAgIHRoaXMuZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFJlZmxlY3Rpb25LZXlzLlRZUEUsIG1vZGVsLCBwcm9wS2V5LCBmYWxzZSk7XG4gICAgaWYgKCFkZWNvcmF0b3JzIHx8ICFkZWNvcmF0b3JzLmRlY29yYXRvcnMpIHJldHVybjtcblxuICAgIGNvbnN0IHR5cGVEZWNvcmF0b3I6IERlY29yYXRvck1ldGFkYXRhID1cbiAgICAgIGRlY29yYXRvcnMuZGVjb3JhdG9ycy5zaGlmdCgpIGFzIERlY29yYXRvck1ldGFkYXRhO1xuICAgIGNvbnN0IG5hbWUgPSB0eXBlRGVjb3JhdG9yLnByb3BzXG4gICAgICA/ICh0eXBlRGVjb3JhdG9yLnByb3BzLm5hbWUgYXMgc3RyaW5nKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG5hbWUgIT09IFwiRnVuY3Rpb25cIiA/IG5hbWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgZGVjb3JhdG9ycyBmb3IgdGhlIHByb3ZpZGVkIFByb3BlcnR5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbm5vdGF0aW9uUHJlZml4XG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXRcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzeW1ib2x9IHByb3BlcnR5TmFtZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpZ25vcmVUeXBlXSBkZWZhdWx0cyB0byBmYWxzZS4gZGVjaWRlcyBpZiB0aGUge0BsaW5rIFJlZmxlY3Rpb25LZXlzLlRZUEV9IGlzIGlnbm9yZWQgb3Igbm90XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JlY3Vyc2l2ZV0gZGVmYXVsdHMgdG8gdHJ1ZS4gZGVjaWRlcyBpZiBpdCBzaG91bGQgY2xpbWIgdGhlIHByb3RvdHlwYWwgdHJlZSBzZWFyY2hpbmcgZm9yIG1vcmUgZGVjb3JhdG9ycyBvbiB0aGF0IHByb3BlcnR5XG4gICAqIEBwYXJhbSB7RGVjb3JhdG9yTWV0YWRhdGFbXX0gW2FjY3VtdWxhdG9yXSB1c2VkIHdoZW4gcmVjdXJzaXZlIGlzIHRydWUsIHRvIGNhY2hlIGRlY29yYXRvcnMgd2hpbGUgaXQgY2xpbWJzIHRoZSBwcm90b3R5cGFsIHRyZWVcbiAgICovXG4gIHN0YXRpYyBnZXRQcm9wZXJ0eURlY29yYXRvcnMoXG4gICAgYW5ub3RhdGlvblByZWZpeDogc3RyaW5nLFxuICAgIHRhcmdldDogb2JqZWN0LFxuICAgIHByb3BlcnR5TmFtZTogc3RyaW5nIHwgc3ltYm9sLFxuICAgIGlnbm9yZVR5cGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICByZWN1cnNpdmUgPSB0cnVlLFxuICAgIGFjY3VtdWxhdG9yPzogRGVjb3JhdG9yTWV0YWRhdGFbXVxuICApOiB7IHByb3A6IHN0cmluZzsgZGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXSB9IHtcbiAgICBjb25zdCBnZXRQcm9wZXJ0eURlY29yYXRvcnNGb3JNb2RlbCA9IGZ1bmN0aW9uIChcbiAgICAgIGFubm90YXRpb25QcmVmaXg6IHN0cmluZyxcbiAgICAgIHRhcmdldDogb2JqZWN0LFxuICAgICAgcHJvcGVydHlOYW1lOiBzdHJpbmcgfCBzeW1ib2wsXG4gICAgICBpZ25vcmVUeXBlOiBib29sZWFuID0gZmFsc2UsXG4gICAgICBhY2N1bXVsYXRvcj86IERlY29yYXRvck1ldGFkYXRhW11cbiAgICApOiB7IHByb3A6IHN0cmluZzsgZGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXSB9IHtcbiAgICAgIC8vIGdldCBpbmZvIGFib3V0IGtleXMgdGhhdCB1c2VkIGluIGN1cnJlbnQgcHJvcGVydHlcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gUmVmbGVjdC5nZXRNZXRhZGF0YUtleXModGFyZ2V0LCBwcm9wZXJ0eU5hbWUpO1xuICAgICAgY29uc3QgZGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXSA9IGtleXNcbiAgICAgICAgLy8gZmlsdGVyIHlvdXIgY3VzdG9tIGRlY29yYXRvcnNcbiAgICAgICAgLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgaWYgKGlnbm9yZVR5cGUpIHJldHVybiBrZXkudG9TdHJpbmcoKS5zdGFydHNXaXRoKGFubm90YXRpb25QcmVmaXgpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBrZXkgPT09IFJlZmxlY3Rpb25LZXlzLlRZUEUgfHxcbiAgICAgICAgICAgIGtleS50b1N0cmluZygpLnN0YXJ0c1dpdGgoYW5ub3RhdGlvblByZWZpeClcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAucmVkdWNlKCh2YWx1ZXMsIGtleSkgPT4ge1xuICAgICAgICAgIC8vIGdldCBtZXRhZGF0YSB2YWx1ZS5cbiAgICAgICAgICBjb25zdCBjdXJyVmFsdWVzID0ge1xuICAgICAgICAgICAga2V5OlxuICAgICAgICAgICAgICBrZXkgIT09IFJlZmxlY3Rpb25LZXlzLlRZUEVcbiAgICAgICAgICAgICAgICA/IGtleS5zdWJzdHJpbmcoYW5ub3RhdGlvblByZWZpeC5sZW5ndGgpXG4gICAgICAgICAgICAgICAgOiBrZXksXG4gICAgICAgICAgICBwcm9wczogUmVmbGVjdC5nZXRNZXRhZGF0YShrZXksIHRhcmdldCwgcHJvcGVydHlOYW1lKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiB2YWx1ZXMuY29uY2F0KGN1cnJWYWx1ZXMpO1xuICAgICAgICB9LCBhY2N1bXVsYXRvciB8fCBbXSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3A6IHByb3BlcnR5TmFtZS50b1N0cmluZygpLFxuICAgICAgICBkZWNvcmF0b3JzOiBkZWNvcmF0b3JzLFxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0OiB7IHByb3A6IHN0cmluZzsgZGVjb3JhdG9yczogRGVjb3JhdG9yTWV0YWRhdGFbXSB9ID1cbiAgICAgIGdldFByb3BlcnR5RGVjb3JhdG9yc0Zvck1vZGVsKFxuICAgICAgICBhbm5vdGF0aW9uUHJlZml4LFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgICAgaWdub3JlVHlwZSxcbiAgICAgICAgYWNjdW11bGF0b3JcbiAgICAgICk7XG5cbiAgICBjb25zdCB0cmltID0gZnVuY3Rpb24gKGl0ZW1zOiBEZWNvcmF0b3JNZXRhZGF0YVtdKSB7XG4gICAgICBjb25zdCBjYWNoZTogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGE+ID0ge307XG4gICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtOiBEZWNvcmF0b3JNZXRhZGF0YSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5rZXkgaW4gY2FjaGUpIHtcbiAgICAgICAgICBpZiAoIWlzRXF1YWwoaXRlbS5wcm9wcywgY2FjaGVbaXRlbS5rZXldKSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBgRm91bmQgYSBzaW1pbGFyIGRlY29yYXRvciBmb3IgdGhlICR7aXRlbS5rZXl9IHByb3BlcnR5YCArXG4gICAgICAgICAgICAgICAgYG9mIGEgJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0gbW9kZWwgYnV0IHdpdGggZGlmZmVyZW50IGF0dHJpYnV0ZXMuYCArXG4gICAgICAgICAgICAgICAgXCJUaGUgb3JpZ2luYWwgb25lIHdpbGwgYmUga2VwdFwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhY2hlW2l0ZW0ua2V5LnRvU3RyaW5nKCldID0gaXRlbS5wcm9wcyBhcyBEZWNvcmF0b3JNZXRhZGF0YTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKCFyZWN1cnNpdmUgfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKHRhcmdldCkgPT09IE9iamVjdC5wcm90b3R5cGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByb3A6IHJlc3VsdC5wcm9wLFxuICAgICAgICBkZWNvcmF0b3JzOiB0cmltKHJlc3VsdC5kZWNvcmF0b3JzKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gV2UgY2hvb3NlIHRvIGlnbm9yZSB0eXBlIGhlcmUsIGJlY2F1c2UgaW4gaW5oZXJpdGFuY2UgdGhlIGV4cGVjdGVkIHR5cGUgaXMgZnJvbSB0aGUgbG93ZXN0IGNoaWxkIGNsYXNzXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgYW5ub3RhdGlvblByZWZpeCxcbiAgICAgIE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQuY29uc3RydWN0b3IpLFxuICAgICAgcHJvcGVydHlOYW1lLFxuICAgICAgdHJ1ZSxcbiAgICAgIHJlY3Vyc2l2ZSxcbiAgICAgIHJlc3VsdC5kZWNvcmF0b3JzXG4gICAgKTtcbiAgfVxufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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T0FBTztnQkFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQzthQUNwQyxDQUFDO1FBQ0osQ0FBQztRQUVELHlHQUF5RztRQUN6RyxPQUFPLFVBQVUsQ0FBQyxxQkFBcUIsQ0FDckMsZ0JBQWdCLEVBQ2hCLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUN6QyxZQUFZLEVBQ1osSUFBSSxFQUNKLFNBQVMsRUFDVCxNQUFNLENBQUMsVUFBVSxDQUNsQixDQUFDO0lBQ0osQ0FBQztDQUNGIiwiZmlsZSI6IlJlZmxlY3Rpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZWNvcmF0b3JNZXRhZGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBSZWZsZWN0aW9uS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gXCIuL2VxdWFsaXR5XCI7XG5cbi8qKlxuICogQHN1bW1hcnkgTmFtZXNwYWNlIGNsYXNzIGhvbGRpbmcgcmVmbGVjdGlvbiBBUElcbiAqIEBkZXNjcmlwdGlvbiBob2xkcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBoYW5kbGUgcmVmbGVjdGlvbiBtZXRhZGF0YVxuICpcbiAqIEBjbGFzcyBSZWZsZWN0aW9uXG4gKiBAc3RhdGljXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWZsZWN0aW9uIHtcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFV0aWwgZnVuY3Rpb24gdG8gY2hlY2sgYSB0eXBlIGFjY29yZGluZyB0byBhIHR5cGVOYW1lXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjZXB0ZWRUeXBlXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgZm9yIGEgbWF0Y2gsIGZhbHNlIG90aGVyd2lzZVxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBjaGVja1R5cGUodmFsdWU6IHVua25vd24sIGFjY2VwdGVkVHlwZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gYWNjZXB0ZWRUeXBlLnRvTG93ZXJDYXNlKCkpIHJldHVybiB0cnVlO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIChcbiAgICAgICh2YWx1ZSBhcyBvYmplY3QpLmNvbnN0cnVjdG9yICYmXG4gICAgICAodmFsdWUgYXMgb2JqZWN0KS5jb25zdHJ1Y3Rvci5uYW1lLnRvTG93ZXJDYXNlKCkgPT09XG4gICAgICAgIGFjY2VwdGVkVHlwZS50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIGNoZWNrIGEgdHlwZSBhY2NvcmRpbmcgbXVsdGlwbGUgcG9zc2liaWxpdGllc1xuICAgKlxuICAgKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFjY2VwdGVkVHlwZXNcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBhbnkgaXMgYSBtYXRjaCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICovXG4gIHN0YXRpYyBjaGVja1R5cGVzKHZhbHVlOiB1bmtub3duLCBhY2NlcHRlZFR5cGVzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiAhYWNjZXB0ZWRUeXBlcy5ldmVyeSgodCkgPT4gIXRoaXMuY2hlY2tUeXBlKHZhbHVlLCB0KSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgZXZhbHVhdGVzIHRoZSB0eXBlIG1ldGFkYXRhIHZzIHRoZSB2YWx1ZSB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN0cmluZ1tdIHwge25hbWU6IHN0cmluZ319IHR5cGVzXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICovXG4gIHN0YXRpYyBldmFsdWF0ZURlc2lnblR5cGVzKFxuICAgIHZhbHVlOiB1bmtub3duLFxuICAgIHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH1cbiAgKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgdHlwZXMpIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tUeXBlKHZhbHVlLCB0eXBlcyk7XG4gICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGVzKSkgcmV0dXJuIFJlZmxlY3Rpb24uY2hlY2tUeXBlcyh2YWx1ZSwgdHlwZXMpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICBpZiAodHlwZXMubmFtZSAmJiB0eXBlcy5uYW1lICE9PSBcIk9iamVjdFwiKVxuICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrVHlwZSh2YWx1ZSwgdHlwZXMubmFtZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYWxsIHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0XG4gICAqIEBzdW1tYXJ5XG4gICAqIGlmIHtAcGFyYW0gY2xpbWJUcmVlfSBpdCB3aWxsIGNyYXdsIHRoZSBwcm90b3R5cGUgdHJlZSB1bnRpbCBpdCByZWFjaGVzIHtAcGFyYW0gc3RvcEF0fSAob3IgZW5kcyB0aGUgcHJvdG90eXBlIGNoYWluKVxuICAgKlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSBvYmpcbiAgICogQHBhcmFtIHtib29sZWFufSBbY2xpbWJUcmVlXSBkZWZhdWx0IHRvIHRydWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzdG9wQXRdIGRlZmF1bHRzIHRvICdPYmplY3QnXG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICovXG4gIHN0YXRpYyBnZXRBbGxQcm9wZXJ0aWVzKFxuICAgIG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgY2xpbWJUcmVlOiBib29sZWFuID0gdHJ1ZSxcbiAgICBzdG9wQXQ6IHN0cmluZyA9IFwiT2JqZWN0XCJcbiAgKSB7XG4gICAgY29uc3QgYWxsUHJvcHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBsZXQgY3VycjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBvYmo7XG5cbiAgICBjb25zdCBrZWVwQXRJdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY2xpbWJUcmVlKSByZXR1cm47XG4gICAgICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY3Vycik7XG4gICAgICBpZiAoIXByb3RvdHlwZSB8fCBwcm90b3R5cGUuY29uc3RydWN0b3IubmFtZSA9PT0gc3RvcEF0KSByZXR1cm47XG4gICAgICBjdXJyID0gcHJvdG90eXBlO1xuICAgICAgcmV0dXJuIGN1cnI7XG4gICAgfTtcblxuICAgIGRvIHtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGN1cnIpLmZvckVhY2goKHByb3ApID0+IGFsbFByb3BzLmFkZChwcm9wKSk7XG4gICAgfSB3aGlsZSAoa2VlcEF0SXQoKSk7XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShhbGxQcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgVXRpbCBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgQ2xhc3MgZGVjb3JhdG9yc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gYW5ub3RhdGlvblByZWZpeFxuICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0XG4gICAqXG4gICAqIEBzdGF0aWNcbiAgICovXG4gIHN0YXRpYyBnZXRDbGFzc0RlY29yYXRvcnMoXG4gICAgYW5ub3RhdGlvblByZWZpeDogc3RyaW5nLFxuICAgIHRhcmdldDogb2JqZWN0XG4gICk6IHsga2V5OiBzdHJpbmc7IHByb3BzOiB1bmtub3duIH1bXSB7XG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBSZWZsZWN0LmdldE93bk1ldGFkYXRhS2V5cyh0YXJnZXQuY29uc3RydWN0b3IpO1xuICAgIGNvbnN0IHJlc3VsdDogeyBrZXk6IHN0cmluZzsgcHJvcHM6IHVua25vd24gfVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoYW5ub3RhdGlvblByZWZpeCkpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgIGtleToga2V5LnNsaWNlKGFubm90YXRpb25QcmVmaXgubGVuZ3RoKSxcbiAgICAgICAgICBwcm9wczogUmVmbGVjdC5nZXRNZXRhZGF0YShrZXksIHRhcmdldC5jb25zdHJ1Y3RvciksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBkZWNvcmF0b3JzIGZvciBhbiBvYmplY3QncyBwcm9wZXJ0aWVzIHByZWZpeGVkIGJ5IHtAcGFyYW0gcHJlZml4ZXN9XG4gICAqXG4gICAqIEBwYXJhbSB7TX0gbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcHJlZml4ZXNcbiAgICpcbiAgICogQHN0YXRpY1xuICAgKiBAbWVtYmVyT2YgUmVmbGVjdGlvblxuICAgKi9cbiAgc3RhdGljIGdldEFsbFByb3BlcnR5RGVjb3JhdG9yczxNIGV4dGVuZHMgb2JqZWN0PihcbiAgICBtb2RlbDogTSxcbiAgICAuLi5wcmVmaXhlczogc3RyaW5nW11cbiAgKTogUmVjb3JkPHN0cmluZywgRGVjb3JhdG9yTWV0YWRhdGFbXT4gfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJlZml4ZXMgfHwgcHJlZml4ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBEZWNvcmF0b3JNZXRhZGF0YVtdPiA9IHt9O1xuICAgIGNvbnN0IHByb3BlcnRpZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtb2RlbCk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3BLZXkgb2YgcHJvcGVydGllcykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBkZWNvcmF0b3JzID0gUmVmbGVjdGlvbi5nZXRQcm9wZXJ0eURlY29yYXRvcnMoXG4gICAgICAgICAgcHJlZml4ZXNbaV0sXG4gICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgcHJvcEtleSxcbiAgICAgICAgICBpICE9PSAwXG4gICAgICAgICk7XG4gICAgICAgIGlmIChkZWNvcmF0b3JzLmRlY29yYXRvcnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmICghcmVzdWx0W3Byb3BLZXldKSB7XG4gICAgICAgICAgICByZXN1bHRbcHJvcEtleV0gPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0W3Byb3BLZXldLnB1c2goLi4uZGVjb3JhdG9ycy5kZWNvcmF0b3JzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyZXN1bHQpLmxlbmd0aCA+IDAgPyByZXN1bHQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgZ2V0cyB0aGUgcHJvcCB0eXBlIGZyb20gdGhlIGRlY29yYXRvclxuICAgKiBAZGVzY3JpcHRpb24gdXNlcyB0aGUgbWV0YWRhdGEgdG8gZGlzY292ZXIgdGhlIHR5cGUgb2YgdGhlIG9iamVjdCBzdG9yZWQgdW5kZXIgbW9kZWxbcHJvS2V5XVxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gbW9kZWxcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBzeW1ib2x9IHByb3BLZXlcbiAgICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfVxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqL1xuICBzdGF0aWMgZ2V0VHlwZUZyb21EZWNvcmF0b3IoXG4gICAgbW9kZWw6IG9iamVjdCxcbiAgICBwcm9wS2V5OiBzdHJpbmcgfCBzeW1ib2xcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBkZWNvcmF0b3JzOiB7IHByb3A6IHN0cmluZyB8IHN5bWJvbDsgZGVjb3JhdG9yczogdW5rbm93bltdIH0gPVxuICAgICAgUmVmbGVjdGlvbi5nZXRQcm9wZXJ0eURlY29yYXRvcnMoXG4gICAgICAgIFJlZmxlY3Rpb25LZXlzLlRZUEUsXG4gICAgICAgIG1vZGVsLFxuICAgICAgICBwcm9wS2V5LFxuICAgICAgICBmYWxzZVxuICAgICAgKTtcbiAgICBpZiAoIWRlY29yYXRvcnMgfHwgIWRlY29yYXRvcnMuZGVjb3JhdG9ycykgcmV0dXJuO1xuXG4gICAgY29uc3QgdHlwZURlY29yYXRvcjogRGVjb3JhdG9yTWV0YWRhdGEgPVxuICAgICAgZGVjb3JhdG9ycy5kZWNvcmF0b3JzLnNoaWZ0KCkgYXMgRGVjb3JhdG9yTWV0YWRhdGE7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVEZWNvcmF0b3IucHJvcHNcbiAgICAgID8gKHR5cGVEZWNvcmF0b3IucHJvcHMubmFtZSBhcyBzdHJpbmcpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gbmFtZSAhPT0gXCJGdW5jdGlvblwiID8gbmFtZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBVdGlsIGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSBkZWNvcmF0b3JzIGZvciB0aGUgcHJvdmlkZWQgUHJvcGVydHlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFubm90YXRpb25QcmVmaXhcbiAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldFxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHN5bWJvbH0gcHJvcGVydHlOYW1lXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lnbm9yZVR5cGVdIGRlZmF1bHRzIHRvIGZhbHNlLiBkZWNpZGVzIGlmIHRoZSB7QGxpbmsgUmVmbGVjdGlvbktleXMuVFlQRX0gaXMgaWdub3JlZCBvciBub3RcbiAgICogQHBhcmFtIHtib29sZWFufSBbcmVjdXJzaXZlXSBkZWZhdWx0cyB0byB0cnVlLiBkZWNpZGVzIGlmIGl0IHNob3VsZCBjbGltYiB0aGUgcHJvdG90eXBhbCB0cmVlIHNlYXJjaGluZyBmb3IgbW9yZSBkZWNvcmF0b3JzIG9uIHRoYXQgcHJvcGVydHlcbiAgICogQHBhcmFtIHtEZWNvcmF0b3JNZXRhZGF0YVtdfSBbYWNjdW11bGF0b3JdIHVzZWQgd2hlbiByZWN1cnNpdmUgaXMgdHJ1ZSwgdG8gY2FjaGUgZGVjb3JhdG9ycyB3aGlsZSBpdCBjbGltYnMgdGhlIHByb3RvdHlwYWwgdHJlZVxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqL1xuICBzdGF0aWMgZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgIGFubm90YXRpb25QcmVmaXg6IHN0cmluZyxcbiAgICB0YXJnZXQ6IG9iamVjdCxcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZyB8IHN5bWJvbCxcbiAgICBpZ25vcmVUeXBlOiBib29sZWFuID0gZmFsc2UsXG4gICAgcmVjdXJzaXZlID0gdHJ1ZSxcbiAgICBhY2N1bXVsYXRvcj86IERlY29yYXRvck1ldGFkYXRhW11cbiAgKTogeyBwcm9wOiBzdHJpbmc7IGRlY29yYXRvcnM6IERlY29yYXRvck1ldGFkYXRhW10gfSB7XG4gICAgY29uc3QgZ2V0UHJvcGVydHlEZWNvcmF0b3JzRm9yTW9kZWwgPSBmdW5jdGlvbiAoXG4gICAgICBhbm5vdGF0aW9uUHJlZml4OiBzdHJpbmcsXG4gICAgICB0YXJnZXQ6IG9iamVjdCxcbiAgICAgIHByb3BlcnR5TmFtZTogc3RyaW5nIHwgc3ltYm9sLFxuICAgICAgaWdub3JlVHlwZTogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgYWNjdW11bGF0b3I/OiBEZWNvcmF0b3JNZXRhZGF0YVtdXG4gICAgKTogeyBwcm9wOiBzdHJpbmc7IGRlY29yYXRvcnM6IERlY29yYXRvck1ldGFkYXRhW10gfSB7XG4gICAgICAvLyBnZXQgaW5mbyBhYm91dCBrZXlzIHRoYXQgdXNlZCBpbiBjdXJyZW50IHByb3BlcnR5XG4gICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCwgcHJvcGVydHlOYW1lKTtcbiAgICAgIGNvbnN0IGRlY29yYXRvcnM6IERlY29yYXRvck1ldGFkYXRhW10gPSBrZXlzXG4gICAgICAgIC8vIGZpbHRlciB5b3VyIGN1c3RvbSBkZWNvcmF0b3JzXG4gICAgICAgIC5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgIGlmIChpZ25vcmVUeXBlKSByZXR1cm4ga2V5LnRvU3RyaW5nKCkuc3RhcnRzV2l0aChhbm5vdGF0aW9uUHJlZml4KTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAga2V5ID09PSBSZWZsZWN0aW9uS2V5cy5UWVBFIHx8XG4gICAgICAgICAgICBrZXkudG9TdHJpbmcoKS5zdGFydHNXaXRoKGFubm90YXRpb25QcmVmaXgpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLnJlZHVjZSgodmFsdWVzLCBrZXkpID0+IHtcbiAgICAgICAgICAvLyBnZXQgbWV0YWRhdGEgdmFsdWUuXG4gICAgICAgICAgY29uc3QgY3VyclZhbHVlcyA9IHtcbiAgICAgICAgICAgIGtleTpcbiAgICAgICAgICAgICAga2V5ICE9PSBSZWZsZWN0aW9uS2V5cy5UWVBFXG4gICAgICAgICAgICAgICAgPyBrZXkuc3Vic3RyaW5nKGFubm90YXRpb25QcmVmaXgubGVuZ3RoKVxuICAgICAgICAgICAgICAgIDoga2V5LFxuICAgICAgICAgICAgcHJvcHM6IFJlZmxlY3QuZ2V0TWV0YWRhdGEoa2V5LCB0YXJnZXQsIHByb3BlcnR5TmFtZSksXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gdmFsdWVzLmNvbmNhdChjdXJyVmFsdWVzKTtcbiAgICAgICAgfSwgYWNjdW11bGF0b3IgfHwgW10pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9wOiBwcm9wZXJ0eU5hbWUudG9TdHJpbmcoKSxcbiAgICAgICAgZGVjb3JhdG9yczogZGVjb3JhdG9ycyxcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdDogeyBwcm9wOiBzdHJpbmc7IGRlY29yYXRvcnM6IERlY29yYXRvck1ldGFkYXRhW10gfSA9XG4gICAgICBnZXRQcm9wZXJ0eURlY29yYXRvcnNGb3JNb2RlbChcbiAgICAgICAgYW5ub3RhdGlvblByZWZpeCxcbiAgICAgICAgdGFyZ2V0LFxuICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgIGlnbm9yZVR5cGUsXG4gICAgICAgIGFjY3VtdWxhdG9yXG4gICAgICApO1xuXG4gICAgY29uc3QgdHJpbSA9IGZ1bmN0aW9uIChpdGVtczogRGVjb3JhdG9yTWV0YWRhdGFbXSkge1xuICAgICAgY29uc3QgY2FjaGU6IFJlY29yZDxzdHJpbmcsIERlY29yYXRvck1ldGFkYXRhPiA9IHt9O1xuICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbTogRGVjb3JhdG9yTWV0YWRhdGEpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0ua2V5IGluIGNhY2hlKSB7XG4gICAgICAgICAgaWYgKCFpc0VxdWFsKGl0ZW0ucHJvcHMsIGNhY2hlW2l0ZW0ua2V5XSkpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYEZvdW5kIGEgc2ltaWxhciBkZWNvcmF0b3IgZm9yIHRoZSAke2l0ZW0ua2V5fSBwcm9wZXJ0eWAgK1xuICAgICAgICAgICAgICAgIGBvZiBhICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9IG1vZGVsIGJ1dCB3aXRoIGRpZmZlcmVudCBhdHRyaWJ1dGVzLmAgK1xuICAgICAgICAgICAgICAgIFwiVGhlIG9yaWdpbmFsIG9uZSB3aWxsIGJlIGtlcHRcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjYWNoZVtpdGVtLmtleS50b1N0cmluZygpXSA9IGl0ZW0ucHJvcHMgYXMgRGVjb3JhdG9yTWV0YWRhdGE7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmICghcmVjdXJzaXZlIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpID09PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcm9wOiByZXN1bHQucHJvcCxcbiAgICAgICAgZGVjb3JhdG9yczogdHJpbShyZXN1bHQuZGVjb3JhdG9ycyksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFdlIGNob29zZSB0byBpZ25vcmUgdHlwZSBoZXJlLCBiZWNhdXNlIGluIGluaGVyaXRhbmNlIHRoZSBleHBlY3RlZCB0eXBlIGlzIGZyb20gdGhlIGxvd2VzdCBjaGlsZCBjbGFzc1xuICAgIHJldHVybiBSZWZsZWN0aW9uLmdldFByb3BlcnR5RGVjb3JhdG9ycyhcbiAgICAgIGFubm90YXRpb25QcmVmaXgsXG4gICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGFyZ2V0LmNvbnN0cnVjdG9yKSxcbiAgICAgIHByb3BlcnR5TmFtZSxcbiAgICAgIHRydWUsXG4gICAgICByZWN1cnNpdmUsXG4gICAgICByZXN1bHQuZGVjb3JhdG9yc1xuICAgICk7XG4gIH1cbn1cbiJdfQ== |
@@ -24,8 +24,2 @@ export * from "./constants"; | ||
/** | ||
* @summary Equality | ||
* @description Provides common reflection based functionality | ||
* @namespace utils | ||
* @memberOf module:reflection | ||
*/ | ||
/** | ||
* @summary stores the current package version | ||
@@ -36,2 +30,2 @@ * @description this is how you should document a constant | ||
*/ | ||
export declare const VERSION = "0.3.5"; | ||
export declare const VERSION = "0.3.7"; |
@@ -8,4 +8,2 @@ import { DecoratorMetadata } from "./types"; | ||
* @static | ||
* | ||
* @memberOf module:reflection | ||
*/ | ||
@@ -47,5 +45,5 @@ export declare class Reflection { | ||
/** | ||
* @summary Retrieves all properties of an object | ||
* @description | ||
* - and of all its prototypes if {@param climbTree} until it reaches {@param stopAt} (or ends the prototype chain) | ||
* @description Retrieves all properties of an object | ||
* @summary | ||
* if {@param climbTree} it will crawl the prototype tree until it reaches {@param stopAt} (or ends the prototype chain) | ||
* | ||
@@ -77,2 +75,3 @@ * @param {Record<string, unknown>} obj | ||
* @static | ||
* @memberOf Reflection | ||
*/ | ||
@@ -100,2 +99,4 @@ static getAllPropertyDecorators<M extends object>(model: M, ...prefixes: string[]): Record<string, DecoratorMetadata[]> | undefined; | ||
* @param {DecoratorMetadata[]} [accumulator] used when recursive is true, to cache decorators while it climbs the prototypal tree | ||
* | ||
* @static | ||
*/ | ||
@@ -102,0 +103,0 @@ static getPropertyDecorators(annotationPrefix: string, target: object, propertyName: string | symbol, ignoreType?: boolean, recursive?: boolean, accumulator?: DecoratorMetadata[]): { |
{ | ||
"name": "@decaf-ts/reflection", | ||
"version": "0.3.6", | ||
"version": "0.3.8", | ||
"description": "template for ts projects", | ||
@@ -90,3 +90,8 @@ "type": "module", | ||
"reflect-metadata": "^0.2.1" | ||
}, | ||
"overrides": { | ||
"gulp-run-command": { | ||
"cross-spawn": "^7.0.6" | ||
} | ||
} | ||
} |
126
README.md
 | ||
## Reflection | ||
## Decaf-ts' Reflection | ||
Provides the Reflection apis for decaf-ts | ||
 | ||
@@ -17,6 +17,6 @@  | ||
 | ||
 | ||
 | ||
 | ||
 | ||
 | ||
 | ||
 | ||
@@ -31,60 +31,9 @@ | ||
Defaults to module, but exports to CommonJS and ESM. | ||
Utilitarian library providing the Reflection implementation, currently based on `reflect-metadata` | ||
With documentation, update and release mechanisms and gitlab/github workflows to match; | ||
Please follow the Contributing guide or the developer's guide to contribute to this library. | ||
Defines a 'way' to write jsDocs to optimize the output | ||
All help is appreciated. | ||
Optimized for github in terms of badges. CI is equivalent between Gitlab and Github. | ||
Auto setup on first `npm install` | ||
Will accept a `.token` file containing token valid for private npm dependencies, npm and docker registries | ||
### ***Initial Setup*** | ||
#### if you use github | ||
create a new project using this one as a template. | ||
clone it `git clone <project>` and navigate to the root folder `cd <project>` | ||
#### If your project has private dependencies or publishes to private npm registries, create an `.npmrc` containing: | ||
```text | ||
@<scope1>:registry=https://<ADDRESS>.com/api/v4/packages/npm/ | ||
@<scope2>:registry=https://<ADDRESS>.<DOMAIN>.com/api/v4/packages/npm/ | ||
//<ADDRESS>.<DOMAIN>.com/:_authToken=${TOKEN} | ||
//<ADDRESS>.<DOMAIN>.com/api/v4/groups/<GROUP_ID>/packages/npm/:_authToken=${TOKEN} | ||
//<ADDRESS>.<DOMAIN>.com/api/v4/projects/<PROJECT_ID>/packages/npm/:_authToken=${TOKEN} | ||
``` | ||
Changing: | ||
- <ADDRESS> to `gitlab` or `github` (or other); | ||
- <DOMAIN> to your domain if any (if you are using plain gitlab or github use empty and take care to remove the extra `.`); | ||
- <GROUP_ID> to your project's group id (if any). otherwise remove this line | ||
- <PROJECT_ID> to your project's id | ||
and adding a `.token` file containing your access token to the private registries na repositories. | ||
### Installation | ||
Run `npm install` (or `npm run do-install` if you have private dependencies and a `.token` file) to install the dependencies: | ||
If this is the first time you are running this command it will also: | ||
- update this repository's dependencies to their latest version; | ||
- creates a `.token` file which you can leave empty unless you have private dependencies or publish to private registries | ||
- delete this 'first run script' file and npm call from the `package.json`; | ||
- try to commit the updated `package.json` and deleted files (having ssh access helps here); | ||
## Testing | ||
Preconfigured Jest based testing: | ||
- unit tests under the `tests/unit` folder; | ||
- include a default bundle test (helps with circular dependencies and such); | ||
- integration tests under the `tests/integration` folder; | ||
- stores converage results under `workdocs/coverage`; | ||
- publishes coverage result to docs; | ||
- ignores `cli.ts` from coverage since that is an executable file; | ||
- defines the coverage threshold in `jest.config.ts`; | ||
Technical documentation can be found [here](https://decaf-ts.github.io/reflection/) | ||
## Considerations | ||
@@ -96,37 +45,12 @@ - Setup for a linux based environment (Sorry windows users. use WSL... or just change already); | ||
[](https://github.com/decaf-ts/decorator-validation) | ||
[](https://github.com/decaf-ts/decorator-validation) | ||
[](https://github.com/decaf-ts/decaf-ts) | ||
### Social | ||
[](https://www.linkedin.com/in/decaf-ts/) | ||
### Scripts | ||
The following npm scripts are available for development: | ||
- `preinstall` - will run only on the first install to trigger the dep update. will self delete; | ||
- `do-install` - sets a `TOKEN` environment variable to the contents of `.token` and runs npm install (useful when you | ||
have private dependencies); | ||
- `flash-forward` - updates all dependencies. Take care, This may not be desirable is some cases; | ||
- `reset` - updates all dependencies. Take care, This may not be desirable is some cases; | ||
- `build` - builds the code (via gulp `gulpfile.js`) in development mode (generates `lib` and `dist` folder); | ||
- `build:prod` - builds the code (via gulp `gulpfile.js`) in production mode (generates `lib` and `dist` folder); | ||
- `test` - runs unit tests; | ||
- `test:integration` - runs it tests; | ||
- `test:all` - runs all tests; | ||
- `lint` - runs es lint on the code folder; | ||
- `lint-fix` - tries to auto-fix the code folder; | ||
- `prepare-release` - defines the commands to run prior to a new tag (defaults to linting, building production code, | ||
running tests and documentation generation); | ||
- `release` - triggers a new tag being pushed to master (via `./bin/tag_release.sh`); | ||
- `clean-publish` - cleans the package.json for publishing; | ||
- `coverage` - runs all test, calculates coverage and generates badges for readme; | ||
- `drawings` - compiles all DrawIO `*.drawio` files in the `workdocs/drawings` folder to png and moves them to | ||
the `workdocs/resources` folder; | ||
- `uml` - compiles all PlantUML `*.puml` files in the `workdocs/uml` folder to png and moves them to | ||
the `workdocs/resources` folder; | ||
- `docs` - compiles all the coverage, drawings, uml, jsdocs and md docs into a readable web page under `./docs`; | ||
[](https://www.linkedin.com/in/TiagoVenceslau/) | ||
### Repository Structure | ||
``` | ||
ts-workspace | ||
reflection | ||
│ | ||
@@ -136,11 +60,11 @@ │ .gitignore <-- Defines files ignored to git | ||
│ .nmprc <-- Defines the Npm registry for this package | ||
│ .eslintrc.cjs <-- linting for the project | ||
│ .prettier.config.cjs <-- Code style for the project | ||
│ .gitlab-ci.yml <-- Gillab CI/CD file | ||
│ .nmptoken <-- Defines access token for the Npm registry for this package | ||
│ .prettierrc <-- style definitions for the project | ||
│ .snyk <-- vulnerability scan (via snyk) config | ||
│ .eslint.config.js <-- linting for the project | ||
│ gulpfile.js <-- Gulp build scripts. used for building na other features (eg docs) | ||
│ jest.config.ts <-- Tests Configuration file | ||
│ mdCompile.json <-- md Documentation generation configuration file | ||
│ jsdocs.json <-- jsdoc Documentation generation configuration file | ||
│ Dockerfile <-- minimal example of a node service Dockerfile | ||
│ LICENCE.md <-- Licence disclamer | ||
│ mdCompile.json <-- md Documentation generation configuration file | ||
│ package.json | ||
@@ -151,2 +75,5 @@ │ package-lock.json | ||
│ | ||
└───.github | ||
│ │ ... <-- github workflows and templates | ||
│ | ||
└───bin | ||
@@ -167,9 +94,6 @@ │ │ tag_release.sh <-- Script to help with releases | ||
│ │───assets <-- Documentation asset folder | ||
│ │───badges <-- Auto generated coverage badges folder | ||
│ │───coverage <-- Auto generated coverage results | ||
│ │───drawings <-- DrawIO folder. Drawings (*.drawio) here will be processed to generate documentation (requires docker) | ||
│ │───uml <-- PlantUML folder. Diagrams (*.puml) here will be processed to generate documentation (requires docker) | ||
│ │───tutorials <-- Tutorial folder | ||
│ │───tutorials <-- Tutorial folder (will show up on tutorial section in generated documentation) | ||
│ │ ... <-- Categorized *.md files that are merged to generate the final readme (via md compile) | ||
│ │ Readme.md <-- Entry point to the README.md | ||
│ │ Readme.md <-- Entry point to the README.md (will import other referenced md files) | ||
│ | ||
@@ -176,0 +100,0 @@ └───dist |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
169232
1560
129