Socket
Socket
Sign inDemoInstall

typescript-json-serializer

Package Overview
Dependencies
2
Maintainers
1
Versions
61
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 4.0.1 to 4.1.0

16

CHANGELOG.md

@@ -0,1 +1,15 @@

<a name="4.1.0"></a>
# 4.1.0 (2022-04-08)
### Features
- **deserialize**: support to deserialize using instance of type ([#170](https://github.com/GillianPerard/typescript-json-serializer/issues/170)) ([f4d33f9](https://github.com/GillianPerard/typescript-json-serializer/commit/f4d33f964ffd3a18569f181e7d8051cf0bbabbcd))
- **deserializeObject**: support to deserialize using instance of type ([#170](https://github.com/GillianPerard/typescript-json-serializer/issues/170)) ([f4d33f9](https://github.com/GillianPerard/typescript-json-serializer/commit/f4d33f964ffd3a18569f181e7d8051cf0bbabbcd))
- **deserializeObjectArray**: support to deserialize using instance of type ([#170](https://github.com/GillianPerard/typescript-json-serializer/issues/170)) ([f4d33f9](https://github.com/GillianPerard/typescript-json-serializer/commit/f4d33f964ffd3a18569f181e7d8051cf0bbabbcd))
(special thanks to [@dhkatz](https://github.com/dhkatz))
<a name="4.0.1"></a>

@@ -6,3 +20,3 @@ # 4.0.1 (2022-03-11)

* **JsonSerializer:** apply properly `NullishPolicy` validation ([#167](https://github.com/GillianPerard/typescript-json-serializer/issues/161)) ([8faa6ae](https://github.com/GillianPerard/typescript-json-serializer/commit/8faa6aee2c18a5c3fb87005a0990ef0bfd7b23d2))
* **JsonSerializer:** apply properly `NullishPolicy` validation ([#167](https://github.com/GillianPerard/typescript-json-serializer/issues/167)) ([8faa6ae](https://github.com/GillianPerard/typescript-json-serializer/commit/8faa6aee2c18a5c3fb87005a0990ef0bfd7b23d2))
* **deps:** bump `trim-off-newlines` from 1.0.1 to 1.0.3 ([8786244](https://github.com/GillianPerard/typescript-json-serializer/commit/87862441f69665dcee98896e071507bc9d7dba24))

@@ -9,0 +23,0 @@

import { PredicateProto } from './json-property';
export declare type Type<T> = new (...args: Array<any>) => T;
export declare const isString: (value: unknown) => value is string;

@@ -13,1 +14,2 @@ export declare const isNumber: (value: any) => value is number;

export declare const tryParse: (value: any) => any;
export declare const hasConstructor: <T = any>(f: unknown) => f is Type<T>;

2

dist/index.cjs.js

@@ -1,1 +0,1 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib");require("reflect-metadata");var t=function(){function e(){}return e.getBaseClass=function(e){return e?Reflect.getPrototypeOf(e):void 0},e.getJsonPropertiesMetadata=function(t,i){if(t){var r=""+e.apiMap+(i||t.constructor.name);return Reflect.getMetadata(r,t)}},e.getParamTypes=function(t){return t?Reflect.getMetadata(e.designParamTypes,t):void 0},e.getJsonObjectMetadata=function(t){return t?Reflect.getMetadata(e.apiMapJsonObject,t):void 0},e.getType=function(t,i){return t?Reflect.getMetadata(e.designType,t,i):void 0},e.isJsonObject=function(t){return!!t&&Reflect.hasOwnMetadata(e.apiMapJsonObject,t)},e.setJsonPropertiesMetadata=function(t,i){if(i){var r=""+e.apiMap+i.constructor.name;Reflect.defineMetadata(r,t,i)}},e.setJsonObject=function(t,i){i&&Reflect.defineMetadata(e.apiMapJsonObject,t,i)},e.setType=function(t,i,r){i&&t&&Reflect.defineMetadata(e.designType,t,i,r)},e.apiMap="api:map:",e.apiMapJsonObject=e.apiMap+"jsonObject",e.designType="design:type",e.designParamTypes="design:paramtypes",e}(),i=function(e){return"string"==typeof e},r=function(e){return null!==e&&"object"==typeof e&&!n(e)},n=function(e){return Array.isArray(e)},o=function(e){return"[object Date]"===toString.call(e)},a=function(e){return[null,void 0].includes(e)},s=function(e){return t.isJsonObject(e)},l=function(e){try{var t=JSON.parse(e);return"object"==typeof t?t:e}catch(t){return e}},u=function(){this.errorCallback=c,this.nullishPolicy={undefined:"remove",null:"allow"}},c=function(e){console.error(e)},p=function(){function c(t){this.options=new u,this.options=e.__assign(e.__assign({},this.options),t)}return c.prototype.deserialize=function(e,t){return i(e)&&(e=l(e)),n(e)?this.deserializeObjectArray(e,t):r(e)?this.deserializeObject(e,t):void this.error("Fail to deserialize: value is not an Array nor an Object.\nReceived: "+JSON.stringify(e)+".")},c.prototype.deserializeObject=function(e,t){var n=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to deserialize: null is not assignable to type Object."),null;if(void 0!==e){if(i(e)&&(e=l(e)),r(e)){var o=new t({}),s=this.getJsonPropertiesMetadata(o);return s?(Object.keys(s).forEach((function(t){var i=s[t],r=n.deserializeProperty(o,t,e,i);if(i.required&&a(r)){var l=o.constructor.name;n.error("Property '"+t+"' is required in "+l+" "+JSON.stringify(e)+".")}n.isAllowedProperty(r)&&(o[t]=r)})),o):o}this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Object'.\nReceived: "+JSON.stringify(e))}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to deserialize: undefined is not assignable to type Object.")},c.prototype.deserializeObjectArray=function(e,t){var r=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to deserialize: null is not assignable to type Array."),null;if(void 0!==e){if(i(e)&&(e=l(e)),n(e))return e.reduce((function(e,i){var n=r.deserializeObject(i,t);return(!a(n)||null===n&&"remove"!==r.options.nullishPolicy.null||void 0===n&&"remove"!==r.options.nullishPolicy.undefined)&&e.push(n),e}),[]);this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e))}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to deserialize: undefined is not assignable to type Array.")},c.prototype.serialize=function(e){return n(e)?this.serializeObjectArray(e):r(e)?this.serializeObject(e):void this.error("Fail to serialize: value is not an Array nor an Object.\nReceived: "+JSON.stringify(e)+".")},c.prototype.serializeObject=function(e){var t=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to serialize: null is not assignable to type Object."),null;if(void 0!==e){if(!r(e))return e;var i=this.getJsonPropertiesMetadata(e);if(!i)return e;var o={},a=Object.keys(e);return Object.keys(i).forEach((function(r){if(a.includes(r)){var s=i[r],l=void 0;s.beforeSerialize&&(l=e[r],e[r]=s.beforeSerialize(e[r],e));var u=t.serializeProperty(e,r,s);if(s.afterSerialize&&(u=s.afterSerialize(u,e)),e[r]=l||e[r],n(s.name))s.name.forEach((function(e){t.isAllowedProperty(u[e])&&(o[e]=u[e])}));else if(t.isAllowedProperty(u))if(s.isNameOverridden||void 0===t.options.formatPropertyName)o[s.name]=u;else{var c=t.options.formatPropertyName(s.name);o[c]=u}}else"remove"!==t.options.nullishPolicy.undefined&&(o[r]=void 0)})),o}"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to serialize: undefined is not assignable to type Object.")},c.prototype.serializeObjectArray=function(e){var t=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to serialize: null is not assignable to type Array."),null;if(void 0!==e){if(n(e))return e.reduce((function(e,i){var r=t.serializeObject(i);return(!a(r)||null===r&&"remove"!==t.options.nullishPolicy.null||void 0===r&&"remove"!==t.options.nullishPolicy.undefined)&&e.push(r),e}),[]);this.error("Fail to serialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e)+".")}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to serialize: undefined is not assignable to type Array.")},c.prototype.deserializeProperty=function(e,i,r,n){var o;if(!a(r)){var l=this.getDataSource(r,n,this.options.formatPropertyName);if(a(l))return l;var u,c=t.getType(e,i),p="array"===(null===(o=null==c?void 0:c.name)||void 0===o?void 0:o.toLowerCase()),d=n.type||c;n.beforeDeserialize&&(l=n.beforeDeserialize(l,e));var f=n.predicate;return n.isDictionary?u=this.deserializeDictionary(l,d,f):p?u=this.deserializeArray(l,d,f):!s(d)&&!f||f&&!f(l,r)?u=this.deserializePrimitive(l,d.name):(d=n.predicate?n.predicate(l,r):d,u=this.deserializeObject(l,d)),n.afterDeserialize&&(u=n.afterDeserialize(u,e)),u}},c.prototype.deserializePrimitive=function(e,t){if(a(t))return e;if(typeof e===(t=t.toLowerCase()))return e;var i="Fail to deserialize: type '"+typeof e+"' is not assignable to type '"+t+"'.\nReceived: "+JSON.stringify(e);switch(t){case"string":var r=e.toString();return"[object Object]"===r?void this.error(i):r;case"number":return function(e){return"number"==typeof e}(e)?+e:void this.error(i);case"boolean":return void this.error(i);case"date":return function(e){return!o(e)&&!n(e)&&!isNaN(Date.parse(e))}(e)?new Date(e):void this.error(i);default:return e}},c.prototype.deserializeDictionary=function(e,t,i){var n=this;if(r(e)){var o={};return Object.keys(e).forEach((function(r){var a=i?i(e[r],e):void 0;s(t)||a?o[r]=n.deserializeObject(e[r],a||t):o[r]=n.deserializePrimitive(e[r],typeof e[r])})),o}this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Dictionary'.\nReceived: "+JSON.stringify(e)+".")},c.prototype.deserializeArray=function(e,t,i){var r=this;if(n(e))return e.reduce((function(n,o){var l;return s(t)||i?(t=i?i(o,e):t,l=r.deserializeObject(o,t)):l=r.deserializePrimitive(o,typeof o),(!a(l)||null===l&&"remove"!==r.options.nullishPolicy.null||void 0===l&&"remove"!==r.options.nullishPolicy.undefined)&&n.push(l),n}),[]);this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e))},c.prototype.error=function(e){this.options.errorCallback&&this.options.errorCallback(e)},c.prototype.getClassesJsonPropertiesMetadata=function(e,i){return e?e.reduce((function(e,r){var n=t.getJsonPropertiesMetadata(i,r);return n&&e.push(n),e}),[]):[]},c.prototype.getDataSource=function(e,t,i){var r=t.name,o=t.isNameOverridden;if(n(r)){var a={};return r.forEach((function(t){return a[t]=e[t]})),a}return!o&&i?(r=i(r),e[r]):e[r]},c.prototype.getJsonPropertiesMetadata=function(i){var r,n=(null!==(r=t.getJsonObjectMetadata(i.constructor))&&void 0!==r?r:{}).baseClassNames,o=t.getJsonPropertiesMetadata(i);if(!(o||n&&n.length))return o;if(n&&n.length){var a=this.getClassesJsonPropertiesMetadata(n,i);return this.mergeJsonPropertiesMetadata.apply(this,e.__spreadArray(e.__spreadArray([],a),[o]))}return o},c.prototype.isAllowedProperty=function(e){if(a(e)){if("disallow"===this.options.nullishPolicy[""+e])return this.error("Disallowed "+e+" value detected."),!1;if("remove"===this.options.nullishPolicy[""+e])return!1}return!0},c.prototype.mergeJsonPropertiesMetadata=function(){for(var t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];var r={};return t.forEach((function(t){t&&Object.keys(t).forEach((function(i){r[i]=e.__assign(e.__assign({},r[i]),t[i])}))})),r},c.prototype.serializeDictionary=function(e){var t=this;if(r(e)){var i={};return Object.keys(e).forEach((function(r){i[r]=t.serializeObject(e[r])})),i}this.error("Fail to serialize: type '"+typeof e+"' is not assignable to type 'Dictionary'.\nReceived: "+JSON.stringify(e)+".")},c.prototype.serializeProperty=function(e,i,r){var n,a,l=e[i],u=t.getType(e,i),c="array"===(null===(n=null==u?void 0:u.name)||void 0===n?void 0:n.toLocaleLowerCase()),p=r.predicate,d=r.type||u,f=s(d);return l&&(f||p)?c?this.serializeObjectArray(l):r.isDictionary?this.serializeDictionary(l):this.serializeObject(l):"date"===(null===(a=null==d?void 0:d.name)||void 0===a?void 0:a.toLocaleLowerCase())&&o(l)?l.toISOString():l},c}(),d=function(i){var r=t.getBaseClass(i);return r&&r.name?e.__spreadArray(e.__spreadArray([],d(r)),[r.name]):[]},f=function(e){var t,i=e.toString().split("}")[0].replace(/(\/\*[\s\S]*?\*\/|\/\/.*$)/gm,"").replace(/[\r\t\n\v\f ]/g,""),r=i.length;","===i[r-2]&&(t=i[r-1]);var n=t?new RegExp("(?:(this|"+t+"|\\("+t+"=t.call\\(this(,.)*\\)\\))\\.)([^,;\n}]+)","gm"):new RegExp("(?:(this)\\.)([^,;\n}]+)","gm"),o=new Map,a=/(?:.*(?:constructor|function).*?(?=\())(?:\()(.+?(?=\)))/m.exec(i);if(!a||!a.length)return o;for(var s,l=a[1].split(","),u=function(){var e=s.length-1,t=s[e].split("="),i=l.findIndex((function(e){return e===t[1]}));i>-1&&o.set(i,t[0])};s=n.exec(i);)u();return o},y=function(n,o){var a={name:n.toString()};return o?i(o)?(a.name=o,a.isNameOverridden=!0,a):(r(o)&&(a=e.__assign(e.__assign({},a),o),o.name&&(a.name=o.name,a.isNameOverridden=!0),function(e){if(!e)return!1;var i=t.getParamTypes(e),r=e.length;return(1===r||2===r)&&!i}(o.type)&&(delete a.type,a.predicate=o.type)),a):a};exports.JsonObject=function(){return function(e){var i=d(e);t.setJsonObject({baseClassNames:i},e)}},exports.JsonProperty=function(e){return function(i,r,n){var o;if(void 0===r&&i.prototype){var a=t.getParamTypes(i)[n];r=f(i.prototype.constructor).get(n),i=i.prototype,t.setType(a,i,r)}var s=null!==(o=t.getJsonPropertiesMetadata(i))&&void 0!==o?o:{};s[r]=y(r,e),t.setJsonPropertiesMetadata(s,i)}},exports.JsonSerializer=p,exports.JsonSerializerOptions=u,exports.logError=c,exports.throwError=function(e){throw new Error(e)};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("tslib");require("reflect-metadata");var t=function(){function e(){}return e.getBaseClass=function(e){return e?Reflect.getPrototypeOf(e):void 0},e.getJsonPropertiesMetadata=function(t,r){if(t){var i=""+e.apiMap+(r||t.constructor.name);return Reflect.getMetadata(i,t)}},e.getParamTypes=function(t){return t?Reflect.getMetadata(e.designParamTypes,t):void 0},e.getJsonObjectMetadata=function(t){return t?Reflect.getMetadata(e.apiMapJsonObject,t):void 0},e.getType=function(t,r){return t?Reflect.getMetadata(e.designType,t,r):void 0},e.isJsonObject=function(t){return!!t&&Reflect.hasOwnMetadata(e.apiMapJsonObject,t)},e.setJsonPropertiesMetadata=function(t,r){if(r){var i=""+e.apiMap+r.constructor.name;Reflect.defineMetadata(i,t,r)}},e.setJsonObject=function(t,r){r&&Reflect.defineMetadata(e.apiMapJsonObject,t,r)},e.setType=function(t,r,i){r&&t&&Reflect.defineMetadata(e.designType,t,r,i)},e.apiMap="api:map:",e.apiMapJsonObject=e.apiMap+"jsonObject",e.designType="design:type",e.designParamTypes="design:paramtypes",e}(),r=function(e){return"string"==typeof e},i=function(e){return null!==e&&"object"==typeof e&&!n(e)},n=function(e){return Array.isArray(e)},o=function(e){return"[object Date]"===toString.call(e)},a=function(e){return[null,void 0].includes(e)},s=function(e){return t.isJsonObject(e)},l=function(e){try{var t=JSON.parse(e);return"object"==typeof t?t:e}catch(t){return e}},u=function(){this.errorCallback=c,this.nullishPolicy={undefined:"remove",null:"allow"}},c=function(e){console.error(e)},p=function(){function c(t){this.options=new u,this.options=e.__assign(e.__assign({},this.options),t)}return c.prototype.deserialize=function(e,t){return r(e)&&(e=l(e)),n(e)?this.deserializeObjectArray(e,t):i(e)?this.deserializeObject(e,t):void this.error("Fail to deserialize: value is not an Array nor an Object.\nReceived: "+JSON.stringify(e)+".")},c.prototype.deserializeObject=function(e,t){var n=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to deserialize: null is not assignable to type Object."),null;if(void 0!==e){if(r(e)&&(e=l(e)),i(e)){var o=function(e){if("function"!=typeof e)return!1;try{Reflect.construct(String,[],e)}catch(e){return!1}return!0}(t)?new t({}):t,s=this.getJsonPropertiesMetadata(o);return s?(Object.keys(s).forEach((function(t){var r=s[t],i=n.deserializeProperty(o,t,e,r);if(r.required&&a(i)){var l=o.constructor.name;n.error("Property '"+t+"' is required in "+l+" "+JSON.stringify(e)+".")}n.isAllowedProperty(i)&&(o[t]=i)})),o):o}this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Object'.\nReceived: "+JSON.stringify(e))}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to deserialize: undefined is not assignable to type Object.")},c.prototype.deserializeObjectArray=function(e,t){var i=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to deserialize: null is not assignable to type Array."),null;if(void 0!==e){if(r(e)&&(e=l(e)),n(e))return e.reduce((function(e,r){var n=i.deserializeObject(r,t);return(!a(n)||null===n&&"remove"!==i.options.nullishPolicy.null||void 0===n&&"remove"!==i.options.nullishPolicy.undefined)&&e.push(n),e}),[]);this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e))}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to deserialize: undefined is not assignable to type Array.")},c.prototype.serialize=function(e){return n(e)?this.serializeObjectArray(e):i(e)?this.serializeObject(e):void this.error("Fail to serialize: value is not an Array nor an Object.\nReceived: "+JSON.stringify(e)+".")},c.prototype.serializeObject=function(e){var t=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to serialize: null is not assignable to type Object."),null;if(void 0!==e){if(!i(e))return e;var r=this.getJsonPropertiesMetadata(e);if(!r)return e;var o={},a=Object.keys(e);return Object.keys(r).forEach((function(i){if(a.includes(i)){var s=r[i],l=void 0;s.beforeSerialize&&(l=e[i],e[i]=s.beforeSerialize(e[i],e));var u=t.serializeProperty(e,i,s);if(s.afterSerialize&&(u=s.afterSerialize(u,e)),e[i]=l||e[i],n(s.name))s.name.forEach((function(e){t.isAllowedProperty(u[e])&&(o[e]=u[e])}));else if(t.isAllowedProperty(u))if(s.isNameOverridden||void 0===t.options.formatPropertyName)o[s.name]=u;else{var c=t.options.formatPropertyName(s.name);o[c]=u}}else"remove"!==t.options.nullishPolicy.undefined&&(o[i]=void 0)})),o}"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to serialize: undefined is not assignable to type Object.")},c.prototype.serializeObjectArray=function(e){var t=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to serialize: null is not assignable to type Array."),null;if(void 0!==e){if(n(e))return e.reduce((function(e,r){var i=t.serializeObject(r);return(!a(i)||null===i&&"remove"!==t.options.nullishPolicy.null||void 0===i&&"remove"!==t.options.nullishPolicy.undefined)&&e.push(i),e}),[]);this.error("Fail to serialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e)+".")}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to serialize: undefined is not assignable to type Array.")},c.prototype.deserializeProperty=function(e,r,i,n){var o;if(!a(i)){var l=this.getDataSource(i,n,this.options.formatPropertyName);if(a(l))return l;var u,c=t.getType(e,r),p="array"===(null===(o=null==c?void 0:c.name)||void 0===o?void 0:o.toLowerCase()),f=n.type||c;n.beforeDeserialize&&(l=n.beforeDeserialize(l,e));var d=n.predicate;return n.isDictionary?u=this.deserializeDictionary(l,f,d):p?u=this.deserializeArray(l,f,d):!s(f)&&!d||d&&!d(l,i)?u=this.deserializePrimitive(l,f.name):(f=n.predicate?n.predicate(l,i):f,u=this.deserializeObject(l,f)),n.afterDeserialize&&(u=n.afterDeserialize(u,e)),u}},c.prototype.deserializePrimitive=function(e,t){if(a(t))return e;if(typeof e===(t=t.toLowerCase()))return e;var r="Fail to deserialize: type '"+typeof e+"' is not assignable to type '"+t+"'.\nReceived: "+JSON.stringify(e);switch(t){case"string":var i=e.toString();return"[object Object]"===i?void this.error(r):i;case"number":return function(e){return"number"==typeof e}(e)?+e:void this.error(r);case"boolean":return void this.error(r);case"date":return function(e){return!o(e)&&!n(e)&&!isNaN(Date.parse(e))}(e)?new Date(e):void this.error(r);default:return e}},c.prototype.deserializeDictionary=function(e,t,r){var n=this;if(i(e)){var o={};return Object.keys(e).forEach((function(i){var a=r?r(e[i],e):void 0;s(t)||a?o[i]=n.deserializeObject(e[i],a||t):o[i]=n.deserializePrimitive(e[i],typeof e[i])})),o}this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Dictionary'.\nReceived: "+JSON.stringify(e)+".")},c.prototype.deserializeArray=function(e,t,r){var i=this;if(n(e))return e.reduce((function(n,o){var l;return s(t)||r?(t=r?r(o,e):t,l=i.deserializeObject(o,t)):l=i.deserializePrimitive(o,typeof o),(!a(l)||null===l&&"remove"!==i.options.nullishPolicy.null||void 0===l&&"remove"!==i.options.nullishPolicy.undefined)&&n.push(l),n}),[]);this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e))},c.prototype.error=function(e){this.options.errorCallback&&this.options.errorCallback(e)},c.prototype.getClassesJsonPropertiesMetadata=function(e,r){return e?e.reduce((function(e,i){var n=t.getJsonPropertiesMetadata(r,i);return n&&e.push(n),e}),[]):[]},c.prototype.getDataSource=function(e,t,r){var i=t.name,o=t.isNameOverridden;if(n(i)){var a={};return i.forEach((function(t){return a[t]=e[t]})),a}return!o&&r?(i=r(i),e[i]):e[i]},c.prototype.getJsonPropertiesMetadata=function(r){var i,n=(null!==(i=t.getJsonObjectMetadata(r.constructor))&&void 0!==i?i:{}).baseClassNames,o=t.getJsonPropertiesMetadata(r);if(!(o||n&&n.length))return o;if(n&&n.length){var a=this.getClassesJsonPropertiesMetadata(n,r);return this.mergeJsonPropertiesMetadata.apply(this,e.__spreadArray(e.__spreadArray([],a),[o]))}return o},c.prototype.isAllowedProperty=function(e){if(a(e)){if("disallow"===this.options.nullishPolicy[""+e])return this.error("Disallowed "+e+" value detected."),!1;if("remove"===this.options.nullishPolicy[""+e])return!1}return!0},c.prototype.mergeJsonPropertiesMetadata=function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];var i={};return t.forEach((function(t){t&&Object.keys(t).forEach((function(r){i[r]=e.__assign(e.__assign({},i[r]),t[r])}))})),i},c.prototype.serializeDictionary=function(e){var t=this;if(i(e)){var r={};return Object.keys(e).forEach((function(i){r[i]=t.serializeObject(e[i])})),r}this.error("Fail to serialize: type '"+typeof e+"' is not assignable to type 'Dictionary'.\nReceived: "+JSON.stringify(e)+".")},c.prototype.serializeProperty=function(e,r,i){var n,a,l=e[r],u=t.getType(e,r),c="array"===(null===(n=null==u?void 0:u.name)||void 0===n?void 0:n.toLocaleLowerCase()),p=i.predicate,f=i.type||u,d=s(f);return l&&(d||p)?c?this.serializeObjectArray(l):i.isDictionary?this.serializeDictionary(l):this.serializeObject(l):"date"===(null===(a=null==f?void 0:f.name)||void 0===a?void 0:a.toLocaleLowerCase())&&o(l)?l.toISOString():l},c}(),f=function(r){var i=t.getBaseClass(r);return i&&i.name?e.__spreadArray(e.__spreadArray([],f(i)),[i.name]):[]},d=function(e){var t,r=e.toString().split("}")[0].replace(/(\/\*[\s\S]*?\*\/|\/\/.*$)/gm,"").replace(/[\r\t\n\v\f ]/g,""),i=r.length;","===r[i-2]&&(t=r[i-1]);var n=t?new RegExp("(?:(this|"+t+"|\\("+t+"=t.call\\(this(,.)*\\)\\))\\.)([^,;\n}]+)","gm"):new RegExp("(?:(this)\\.)([^,;\n}]+)","gm"),o=new Map,a=/(?:.*(?:constructor|function).*?(?=\())(?:\()(.+?(?=\)))/m.exec(r);if(!a||!a.length)return o;for(var s,l=a[1].split(","),u=function(){var e=s.length-1,t=s[e].split("="),r=l.findIndex((function(e){return e===t[1]}));r>-1&&o.set(r,t[0])};s=n.exec(r);)u();return o},y=function(n,o){var a={name:n.toString()};return o?r(o)?(a.name=o,a.isNameOverridden=!0,a):(i(o)&&(a=e.__assign(e.__assign({},a),o),o.name&&(a.name=o.name,a.isNameOverridden=!0),function(e){if(!e)return!1;var r=t.getParamTypes(e),i=e.length;return(1===i||2===i)&&!r}(o.type)&&(delete a.type,a.predicate=o.type)),a):a};exports.JsonObject=function(){return function(e){var r=f(e);t.setJsonObject({baseClassNames:r},e)}},exports.JsonProperty=function(e){return function(r,i,n){var o;if(void 0===i&&r.prototype){var a=t.getParamTypes(r)[n];i=d(r.prototype.constructor).get(n),r=r.prototype,t.setType(a,r,i)}var s=null!==(o=t.getJsonPropertiesMetadata(r))&&void 0!==o?o:{};s[i]=y(i,e),t.setJsonPropertiesMetadata(s,r)}},exports.JsonSerializer=p,exports.JsonSerializerOptions=u,exports.logError=c,exports.throwError=function(e){throw new Error(e)};

@@ -1,1 +0,1 @@

import{__spreadArray as e,__assign as t}from"tslib";import"reflect-metadata";var i=function(){function e(){}return e.getBaseClass=function(e){return e?Reflect.getPrototypeOf(e):void 0},e.getJsonPropertiesMetadata=function(t,i){if(t){var r=""+e.apiMap+(i||t.constructor.name);return Reflect.getMetadata(r,t)}},e.getParamTypes=function(t){return t?Reflect.getMetadata(e.designParamTypes,t):void 0},e.getJsonObjectMetadata=function(t){return t?Reflect.getMetadata(e.apiMapJsonObject,t):void 0},e.getType=function(t,i){return t?Reflect.getMetadata(e.designType,t,i):void 0},e.isJsonObject=function(t){return!!t&&Reflect.hasOwnMetadata(e.apiMapJsonObject,t)},e.setJsonPropertiesMetadata=function(t,i){if(i){var r=""+e.apiMap+i.constructor.name;Reflect.defineMetadata(r,t,i)}},e.setJsonObject=function(t,i){i&&Reflect.defineMetadata(e.apiMapJsonObject,t,i)},e.setType=function(t,i,r){i&&t&&Reflect.defineMetadata(e.designType,t,i,r)},e.apiMap="api:map:",e.apiMapJsonObject=e.apiMap+"jsonObject",e.designType="design:type",e.designParamTypes="design:paramtypes",e}(),r=function(e){return"string"==typeof e},n=function(e){return null!==e&&"object"==typeof e&&!o(e)},o=function(e){return Array.isArray(e)},a=function(e){return"[object Date]"===toString.call(e)},s=function(e){return[null,void 0].includes(e)},l=function(e){return i.isJsonObject(e)},u=function(e){try{var t=JSON.parse(e);return"object"==typeof t?t:e}catch(t){return e}},c=function(){this.errorCallback=f,this.nullishPolicy={undefined:"remove",null:"allow"}},p=function(e){throw new Error(e)},f=function(e){console.error(e)},d=function(){function p(e){this.options=new c,this.options=t(t({},this.options),e)}return p.prototype.deserialize=function(e,t){return r(e)&&(e=u(e)),o(e)?this.deserializeObjectArray(e,t):n(e)?this.deserializeObject(e,t):void this.error("Fail to deserialize: value is not an Array nor an Object.\nReceived: "+JSON.stringify(e)+".")},p.prototype.deserializeObject=function(e,t){var i=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to deserialize: null is not assignable to type Object."),null;if(void 0!==e){if(r(e)&&(e=u(e)),n(e)){var o=new t({}),a=this.getJsonPropertiesMetadata(o);return a?(Object.keys(a).forEach((function(t){var r=a[t],n=i.deserializeProperty(o,t,e,r);if(r.required&&s(n)){var l=o.constructor.name;i.error("Property '"+t+"' is required in "+l+" "+JSON.stringify(e)+".")}i.isAllowedProperty(n)&&(o[t]=n)})),o):o}this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Object'.\nReceived: "+JSON.stringify(e))}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to deserialize: undefined is not assignable to type Object.")},p.prototype.deserializeObjectArray=function(e,t){var i=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to deserialize: null is not assignable to type Array."),null;if(void 0!==e){if(r(e)&&(e=u(e)),o(e))return e.reduce((function(e,r){var n=i.deserializeObject(r,t);return(!s(n)||null===n&&"remove"!==i.options.nullishPolicy.null||void 0===n&&"remove"!==i.options.nullishPolicy.undefined)&&e.push(n),e}),[]);this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e))}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to deserialize: undefined is not assignable to type Array.")},p.prototype.serialize=function(e){return o(e)?this.serializeObjectArray(e):n(e)?this.serializeObject(e):void this.error("Fail to serialize: value is not an Array nor an Object.\nReceived: "+JSON.stringify(e)+".")},p.prototype.serializeObject=function(e){var t=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to serialize: null is not assignable to type Object."),null;if(void 0!==e){if(!n(e))return e;var i=this.getJsonPropertiesMetadata(e);if(!i)return e;var r={},a=Object.keys(e);return Object.keys(i).forEach((function(n){if(a.includes(n)){var s=i[n],l=void 0;s.beforeSerialize&&(l=e[n],e[n]=s.beforeSerialize(e[n],e));var u=t.serializeProperty(e,n,s);if(s.afterSerialize&&(u=s.afterSerialize(u,e)),e[n]=l||e[n],o(s.name))s.name.forEach((function(e){t.isAllowedProperty(u[e])&&(r[e]=u[e])}));else if(t.isAllowedProperty(u))if(s.isNameOverridden||void 0===t.options.formatPropertyName)r[s.name]=u;else{var c=t.options.formatPropertyName(s.name);r[c]=u}}else"remove"!==t.options.nullishPolicy.undefined&&(r[n]=void 0)})),r}"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to serialize: undefined is not assignable to type Object.")},p.prototype.serializeObjectArray=function(e){var t=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to serialize: null is not assignable to type Array."),null;if(void 0!==e){if(o(e))return e.reduce((function(e,i){var r=t.serializeObject(i);return(!s(r)||null===r&&"remove"!==t.options.nullishPolicy.null||void 0===r&&"remove"!==t.options.nullishPolicy.undefined)&&e.push(r),e}),[]);this.error("Fail to serialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e)+".")}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to serialize: undefined is not assignable to type Array.")},p.prototype.deserializeProperty=function(e,t,r,n){var o;if(!s(r)){var a=this.getDataSource(r,n,this.options.formatPropertyName);if(s(a))return a;var u,c=i.getType(e,t),p="array"===(null===(o=null==c?void 0:c.name)||void 0===o?void 0:o.toLowerCase()),f=n.type||c;n.beforeDeserialize&&(a=n.beforeDeserialize(a,e));var d=n.predicate;return n.isDictionary?u=this.deserializeDictionary(a,f,d):p?u=this.deserializeArray(a,f,d):!l(f)&&!d||d&&!d(a,r)?u=this.deserializePrimitive(a,f.name):(f=n.predicate?n.predicate(a,r):f,u=this.deserializeObject(a,f)),n.afterDeserialize&&(u=n.afterDeserialize(u,e)),u}},p.prototype.deserializePrimitive=function(e,t){if(s(t))return e;if(typeof e===(t=t.toLowerCase()))return e;var i="Fail to deserialize: type '"+typeof e+"' is not assignable to type '"+t+"'.\nReceived: "+JSON.stringify(e);switch(t){case"string":var r=e.toString();return"[object Object]"===r?void this.error(i):r;case"number":return function(e){return"number"==typeof e}(e)?+e:void this.error(i);case"boolean":return void this.error(i);case"date":return function(e){return!a(e)&&!o(e)&&!isNaN(Date.parse(e))}(e)?new Date(e):void this.error(i);default:return e}},p.prototype.deserializeDictionary=function(e,t,i){var r=this;if(n(e)){var o={};return Object.keys(e).forEach((function(n){var a=i?i(e[n],e):void 0;l(t)||a?o[n]=r.deserializeObject(e[n],a||t):o[n]=r.deserializePrimitive(e[n],typeof e[n])})),o}this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Dictionary'.\nReceived: "+JSON.stringify(e)+".")},p.prototype.deserializeArray=function(e,t,i){var r=this;if(o(e))return e.reduce((function(n,o){var a;return l(t)||i?(t=i?i(o,e):t,a=r.deserializeObject(o,t)):a=r.deserializePrimitive(o,typeof o),(!s(a)||null===a&&"remove"!==r.options.nullishPolicy.null||void 0===a&&"remove"!==r.options.nullishPolicy.undefined)&&n.push(a),n}),[]);this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e))},p.prototype.error=function(e){this.options.errorCallback&&this.options.errorCallback(e)},p.prototype.getClassesJsonPropertiesMetadata=function(e,t){return e?e.reduce((function(e,r){var n=i.getJsonPropertiesMetadata(t,r);return n&&e.push(n),e}),[]):[]},p.prototype.getDataSource=function(e,t,i){var r=t.name,n=t.isNameOverridden;if(o(r)){var a={};return r.forEach((function(t){return a[t]=e[t]})),a}return!n&&i?(r=i(r),e[r]):e[r]},p.prototype.getJsonPropertiesMetadata=function(t){var r,n=(null!==(r=i.getJsonObjectMetadata(t.constructor))&&void 0!==r?r:{}).baseClassNames,o=i.getJsonPropertiesMetadata(t);if(!(o||n&&n.length))return o;if(n&&n.length){var a=this.getClassesJsonPropertiesMetadata(n,t);return this.mergeJsonPropertiesMetadata.apply(this,e(e([],a),[o]))}return o},p.prototype.isAllowedProperty=function(e){if(s(e)){if("disallow"===this.options.nullishPolicy[""+e])return this.error("Disallowed "+e+" value detected."),!1;if("remove"===this.options.nullishPolicy[""+e])return!1}return!0},p.prototype.mergeJsonPropertiesMetadata=function(){for(var e=[],i=0;i<arguments.length;i++)e[i]=arguments[i];var r={};return e.forEach((function(e){e&&Object.keys(e).forEach((function(i){r[i]=t(t({},r[i]),e[i])}))})),r},p.prototype.serializeDictionary=function(e){var t=this;if(n(e)){var i={};return Object.keys(e).forEach((function(r){i[r]=t.serializeObject(e[r])})),i}this.error("Fail to serialize: type '"+typeof e+"' is not assignable to type 'Dictionary'.\nReceived: "+JSON.stringify(e)+".")},p.prototype.serializeProperty=function(e,t,r){var n,o,s=e[t],u=i.getType(e,t),c="array"===(null===(n=null==u?void 0:u.name)||void 0===n?void 0:n.toLocaleLowerCase()),p=r.predicate,f=r.type||u,d=l(f);return s&&(d||p)?c?this.serializeObjectArray(s):r.isDictionary?this.serializeDictionary(s):this.serializeObject(s):"date"===(null===(o=null==f?void 0:f.name)||void 0===o?void 0:o.toLocaleLowerCase())&&a(s)?s.toISOString():s},p}(),y=function(t){var r=i.getBaseClass(t);return r&&r.name?e(e([],y(r)),[r.name]):[]},v=function(){return function(e){var t=y(e);i.setJsonObject({baseClassNames:t},e)}},h=function(e){return function(t,r,n){var o;if(void 0===r&&t.prototype){var a=i.getParamTypes(t)[n];r=g(t.prototype.constructor).get(n),t=t.prototype,i.setType(a,t,r)}var s=null!==(o=i.getJsonPropertiesMetadata(t))&&void 0!==o?o:{};s[r]=b(r,e),i.setJsonPropertiesMetadata(s,t)}},g=function(e){var t,i=e.toString().split("}")[0].replace(/(\/\*[\s\S]*?\*\/|\/\/.*$)/gm,"").replace(/[\r\t\n\v\f ]/g,""),r=i.length;","===i[r-2]&&(t=i[r-1]);var n=t?new RegExp("(?:(this|"+t+"|\\("+t+"=t.call\\(this(,.)*\\)\\))\\.)([^,;\n}]+)","gm"):new RegExp("(?:(this)\\.)([^,;\n}]+)","gm"),o=new Map,a=/(?:.*(?:constructor|function).*?(?=\())(?:\()(.+?(?=\)))/m.exec(i);if(!a||!a.length)return o;for(var s,l=a[1].split(","),u=function(){var e=s.length-1,t=s[e].split("="),i=l.findIndex((function(e){return e===t[1]}));i>-1&&o.set(i,t[0])};s=n.exec(i);)u();return o},b=function(e,o){var a={name:e.toString()};return o?r(o)?(a.name=o,a.isNameOverridden=!0,a):(n(o)&&(a=t(t({},a),o),o.name&&(a.name=o.name,a.isNameOverridden=!0),function(e){if(!e)return!1;var t=i.getParamTypes(e),r=e.length;return(1===r||2===r)&&!t}(o.type)&&(delete a.type,a.predicate=o.type)),a):a};export{v as JsonObject,h as JsonProperty,d as JsonSerializer,c as JsonSerializerOptions,f as logError,p as throwError};
import{__spreadArray as e,__assign as t}from"tslib";import"reflect-metadata";var i=function(){function e(){}return e.getBaseClass=function(e){return e?Reflect.getPrototypeOf(e):void 0},e.getJsonPropertiesMetadata=function(t,i){if(t){var r=""+e.apiMap+(i||t.constructor.name);return Reflect.getMetadata(r,t)}},e.getParamTypes=function(t){return t?Reflect.getMetadata(e.designParamTypes,t):void 0},e.getJsonObjectMetadata=function(t){return t?Reflect.getMetadata(e.apiMapJsonObject,t):void 0},e.getType=function(t,i){return t?Reflect.getMetadata(e.designType,t,i):void 0},e.isJsonObject=function(t){return!!t&&Reflect.hasOwnMetadata(e.apiMapJsonObject,t)},e.setJsonPropertiesMetadata=function(t,i){if(i){var r=""+e.apiMap+i.constructor.name;Reflect.defineMetadata(r,t,i)}},e.setJsonObject=function(t,i){i&&Reflect.defineMetadata(e.apiMapJsonObject,t,i)},e.setType=function(t,i,r){i&&t&&Reflect.defineMetadata(e.designType,t,i,r)},e.apiMap="api:map:",e.apiMapJsonObject=e.apiMap+"jsonObject",e.designType="design:type",e.designParamTypes="design:paramtypes",e}(),r=function(e){return"string"==typeof e},n=function(e){return null!==e&&"object"==typeof e&&!o(e)},o=function(e){return Array.isArray(e)},a=function(e){return"[object Date]"===toString.call(e)},s=function(e){return[null,void 0].includes(e)},l=function(e){return i.isJsonObject(e)},u=function(e){try{var t=JSON.parse(e);return"object"==typeof t?t:e}catch(t){return e}},c=function(){this.errorCallback=f,this.nullishPolicy={undefined:"remove",null:"allow"}},p=function(e){throw new Error(e)},f=function(e){console.error(e)},d=function(){function p(e){this.options=new c,this.options=t(t({},this.options),e)}return p.prototype.deserialize=function(e,t){return r(e)&&(e=u(e)),o(e)?this.deserializeObjectArray(e,t):n(e)?this.deserializeObject(e,t):void this.error("Fail to deserialize: value is not an Array nor an Object.\nReceived: "+JSON.stringify(e)+".")},p.prototype.deserializeObject=function(e,t){var i=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to deserialize: null is not assignable to type Object."),null;if(void 0!==e){if(r(e)&&(e=u(e)),n(e)){var o=function(e){if("function"!=typeof e)return!1;try{Reflect.construct(String,[],e)}catch(e){return!1}return!0}(t)?new t({}):t,a=this.getJsonPropertiesMetadata(o);return a?(Object.keys(a).forEach((function(t){var r=a[t],n=i.deserializeProperty(o,t,e,r);if(r.required&&s(n)){var l=o.constructor.name;i.error("Property '"+t+"' is required in "+l+" "+JSON.stringify(e)+".")}i.isAllowedProperty(n)&&(o[t]=n)})),o):o}this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Object'.\nReceived: "+JSON.stringify(e))}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to deserialize: undefined is not assignable to type Object.")},p.prototype.deserializeObjectArray=function(e,t){var i=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to deserialize: null is not assignable to type Array."),null;if(void 0!==e){if(r(e)&&(e=u(e)),o(e))return e.reduce((function(e,r){var n=i.deserializeObject(r,t);return(!s(n)||null===n&&"remove"!==i.options.nullishPolicy.null||void 0===n&&"remove"!==i.options.nullishPolicy.undefined)&&e.push(n),e}),[]);this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e))}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to deserialize: undefined is not assignable to type Array.")},p.prototype.serialize=function(e){return o(e)?this.serializeObjectArray(e):n(e)?this.serializeObject(e):void this.error("Fail to serialize: value is not an Array nor an Object.\nReceived: "+JSON.stringify(e)+".")},p.prototype.serializeObject=function(e){var t=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to serialize: null is not assignable to type Object."),null;if(void 0!==e){if(!n(e))return e;var i=this.getJsonPropertiesMetadata(e);if(!i)return e;var r={},a=Object.keys(e);return Object.keys(i).forEach((function(n){if(a.includes(n)){var s=i[n],l=void 0;s.beforeSerialize&&(l=e[n],e[n]=s.beforeSerialize(e[n],e));var u=t.serializeProperty(e,n,s);if(s.afterSerialize&&(u=s.afterSerialize(u,e)),e[n]=l||e[n],o(s.name))s.name.forEach((function(e){t.isAllowedProperty(u[e])&&(r[e]=u[e])}));else if(t.isAllowedProperty(u))if(s.isNameOverridden||void 0===t.options.formatPropertyName)r[s.name]=u;else{var c=t.options.formatPropertyName(s.name);r[c]=u}}else"remove"!==t.options.nullishPolicy.undefined&&(r[n]=void 0)})),r}"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to serialize: undefined is not assignable to type Object.")},p.prototype.serializeObjectArray=function(e){var t=this;if(null===e)return"disallow"===this.options.nullishPolicy.null&&this.error("Fail to serialize: null is not assignable to type Array."),null;if(void 0!==e){if(o(e))return e.reduce((function(e,i){var r=t.serializeObject(i);return(!s(r)||null===r&&"remove"!==t.options.nullishPolicy.null||void 0===r&&"remove"!==t.options.nullishPolicy.undefined)&&e.push(r),e}),[]);this.error("Fail to serialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e)+".")}else"disallow"===this.options.nullishPolicy.undefined&&this.error("Fail to serialize: undefined is not assignable to type Array.")},p.prototype.deserializeProperty=function(e,t,r,n){var o;if(!s(r)){var a=this.getDataSource(r,n,this.options.formatPropertyName);if(s(a))return a;var u,c=i.getType(e,t),p="array"===(null===(o=null==c?void 0:c.name)||void 0===o?void 0:o.toLowerCase()),f=n.type||c;n.beforeDeserialize&&(a=n.beforeDeserialize(a,e));var d=n.predicate;return n.isDictionary?u=this.deserializeDictionary(a,f,d):p?u=this.deserializeArray(a,f,d):!l(f)&&!d||d&&!d(a,r)?u=this.deserializePrimitive(a,f.name):(f=n.predicate?n.predicate(a,r):f,u=this.deserializeObject(a,f)),n.afterDeserialize&&(u=n.afterDeserialize(u,e)),u}},p.prototype.deserializePrimitive=function(e,t){if(s(t))return e;if(typeof e===(t=t.toLowerCase()))return e;var i="Fail to deserialize: type '"+typeof e+"' is not assignable to type '"+t+"'.\nReceived: "+JSON.stringify(e);switch(t){case"string":var r=e.toString();return"[object Object]"===r?void this.error(i):r;case"number":return function(e){return"number"==typeof e}(e)?+e:void this.error(i);case"boolean":return void this.error(i);case"date":return function(e){return!a(e)&&!o(e)&&!isNaN(Date.parse(e))}(e)?new Date(e):void this.error(i);default:return e}},p.prototype.deserializeDictionary=function(e,t,i){var r=this;if(n(e)){var o={};return Object.keys(e).forEach((function(n){var a=i?i(e[n],e):void 0;l(t)||a?o[n]=r.deserializeObject(e[n],a||t):o[n]=r.deserializePrimitive(e[n],typeof e[n])})),o}this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Dictionary'.\nReceived: "+JSON.stringify(e)+".")},p.prototype.deserializeArray=function(e,t,i){var r=this;if(o(e))return e.reduce((function(n,o){var a;return l(t)||i?(t=i?i(o,e):t,a=r.deserializeObject(o,t)):a=r.deserializePrimitive(o,typeof o),(!s(a)||null===a&&"remove"!==r.options.nullishPolicy.null||void 0===a&&"remove"!==r.options.nullishPolicy.undefined)&&n.push(a),n}),[]);this.error("Fail to deserialize: type '"+typeof e+"' is not assignable to type 'Array'.\nReceived: "+JSON.stringify(e))},p.prototype.error=function(e){this.options.errorCallback&&this.options.errorCallback(e)},p.prototype.getClassesJsonPropertiesMetadata=function(e,t){return e?e.reduce((function(e,r){var n=i.getJsonPropertiesMetadata(t,r);return n&&e.push(n),e}),[]):[]},p.prototype.getDataSource=function(e,t,i){var r=t.name,n=t.isNameOverridden;if(o(r)){var a={};return r.forEach((function(t){return a[t]=e[t]})),a}return!n&&i?(r=i(r),e[r]):e[r]},p.prototype.getJsonPropertiesMetadata=function(t){var r,n=(null!==(r=i.getJsonObjectMetadata(t.constructor))&&void 0!==r?r:{}).baseClassNames,o=i.getJsonPropertiesMetadata(t);if(!(o||n&&n.length))return o;if(n&&n.length){var a=this.getClassesJsonPropertiesMetadata(n,t);return this.mergeJsonPropertiesMetadata.apply(this,e(e([],a),[o]))}return o},p.prototype.isAllowedProperty=function(e){if(s(e)){if("disallow"===this.options.nullishPolicy[""+e])return this.error("Disallowed "+e+" value detected."),!1;if("remove"===this.options.nullishPolicy[""+e])return!1}return!0},p.prototype.mergeJsonPropertiesMetadata=function(){for(var e=[],i=0;i<arguments.length;i++)e[i]=arguments[i];var r={};return e.forEach((function(e){e&&Object.keys(e).forEach((function(i){r[i]=t(t({},r[i]),e[i])}))})),r},p.prototype.serializeDictionary=function(e){var t=this;if(n(e)){var i={};return Object.keys(e).forEach((function(r){i[r]=t.serializeObject(e[r])})),i}this.error("Fail to serialize: type '"+typeof e+"' is not assignable to type 'Dictionary'.\nReceived: "+JSON.stringify(e)+".")},p.prototype.serializeProperty=function(e,t,r){var n,o,s=e[t],u=i.getType(e,t),c="array"===(null===(n=null==u?void 0:u.name)||void 0===n?void 0:n.toLocaleLowerCase()),p=r.predicate,f=r.type||u,d=l(f);return s&&(d||p)?c?this.serializeObjectArray(s):r.isDictionary?this.serializeDictionary(s):this.serializeObject(s):"date"===(null===(o=null==f?void 0:f.name)||void 0===o?void 0:o.toLocaleLowerCase())&&a(s)?s.toISOString():s},p}(),y=function(t){var r=i.getBaseClass(t);return r&&r.name?e(e([],y(r)),[r.name]):[]},v=function(){return function(e){var t=y(e);i.setJsonObject({baseClassNames:t},e)}},h=function(e){return function(t,r,n){var o;if(void 0===r&&t.prototype){var a=i.getParamTypes(t)[n];r=g(t.prototype.constructor).get(n),t=t.prototype,i.setType(a,t,r)}var s=null!==(o=i.getJsonPropertiesMetadata(t))&&void 0!==o?o:{};s[r]=b(r,e),i.setJsonPropertiesMetadata(s,t)}},g=function(e){var t,i=e.toString().split("}")[0].replace(/(\/\*[\s\S]*?\*\/|\/\/.*$)/gm,"").replace(/[\r\t\n\v\f ]/g,""),r=i.length;","===i[r-2]&&(t=i[r-1]);var n=t?new RegExp("(?:(this|"+t+"|\\("+t+"=t.call\\(this(,.)*\\)\\))\\.)([^,;\n}]+)","gm"):new RegExp("(?:(this)\\.)([^,;\n}]+)","gm"),o=new Map,a=/(?:.*(?:constructor|function).*?(?=\())(?:\()(.+?(?=\)))/m.exec(i);if(!a||!a.length)return o;for(var s,l=a[1].split(","),u=function(){var e=s.length-1,t=s[e].split("="),i=l.findIndex((function(e){return e===t[1]}));i>-1&&o.set(i,t[0])};s=n.exec(i);)u();return o},b=function(e,o){var a={name:e.toString()};return o?r(o)?(a.name=o,a.isNameOverridden=!0,a):(n(o)&&(a=t(t({},a),o),o.name&&(a.name=o.name,a.isNameOverridden=!0),function(e){if(!e)return!1;var t=i.getParamTypes(e),r=e.length;return(1===r||2===r)&&!t}(o.type)&&(delete a.type,a.predicate=o.type)),a):a};export{v as JsonObject,h as JsonProperty,d as JsonSerializer,c as JsonSerializerOptions,f as logError,p as throwError};

@@ -0,3 +1,3 @@

import { Type } from './helpers';
import { JsonSerializerOptions } from './json-serializer-options';
declare type Type<T> = new (...args: Array<any>) => T;
declare type Nullish = null | undefined;

@@ -7,5 +7,5 @@ export declare class JsonSerializer {

constructor(options?: Partial<JsonSerializerOptions>);
deserialize<T extends object>(value: string | object | Array<object>, type: Type<T>): T | Array<T | Nullish> | Nullish;
deserializeObject<T extends object>(obj: string | object, type: Type<T>): T | Nullish;
deserializeObjectArray<T extends object>(array: string | Array<any>, type: new (...args: Array<any>) => T): Array<T | Nullish> | Nullish;
deserialize<T extends object>(value: string | object | Array<object>, type: Type<T> | T): T | Array<T | Nullish> | Nullish;
deserializeObject<T extends object>(obj: string | object, type: Type<T> | T): T | Nullish;
deserializeObjectArray<T extends object>(array: string | Array<any>, type: Type<T> | T): Array<T | Nullish> | Nullish;
serialize(value: object | Array<object>): object | Array<object> | Nullish;

@@ -12,0 +12,0 @@ serializeObject(instance: object): object | Nullish;

{
"name": "typescript-json-serializer",
"version": "4.0.1",
"version": "4.1.0",
"description": "Typescript library to serialize classes into json and deserialize json into classes.",

@@ -5,0 +5,0 @@ "source": "src/index.ts",

@@ -5,3 +5,3 @@ # typescript-json-serializer

![npm](https://img.shields.io/npm/dt/typescript-json-serializer)
![npm bundle size (version)](https://img.shields.io/bundlephobia/minzip/typescript-json-serializer/4.0.1)
![npm bundle size (version)](https://img.shields.io/bundlephobia/minzip/typescript-json-serializer/4.1.0)
[![Coverage Status](https://coveralls.io/repos/github/GillianPerard/typescript-json-serializer/badge.svg)](https://coveralls.io/github/GillianPerard/typescript-json-serializer)

@@ -606,3 +606,3 @@ [![Known Vulnerabilities](https://snyk.io/test/github/gillianperard/typescript-json-serializer/badge.svg?targetFile=package.json)](https://snyk.io/test/github/gillianperard/typescript-json-serializer?targetFile=package.json)

value: string | object | Array<object>,
type: Type<T>
type: Type<T> | T
): T | Array<T|Nullish> | Nullish

@@ -619,3 +619,3 @@ ```

**type**
Type: [`Type<T>`](#typet)
Type: [`Type<T>`](#typet) | `T`
Optional: `false`

@@ -636,3 +636,3 @@ Description: The constructor class to deserialize into.

obj: string | object,
type: Type<T>
type: Type<T> | T
): T | Nullish

@@ -649,3 +649,3 @@ ```

**type**
Type: [`Type<T>`](#typet)
Type: [`Type<T>`](#typet) | `T`
Optional: `false`

@@ -666,3 +666,3 @@ Description: The constructor class to deserialize into.

array: string | Array<any>,
type: Type<T>
type: Type<T> | T
): Array<T|Nullish> | Nullish

@@ -679,3 +679,3 @@ ```

**type**
Type: [`Type<T>`](#typet)
Type: [`Type<T>`](#typet) | `T`
Optional: `false`

@@ -682,0 +682,0 @@ Description: The constructor class to deserialize into.

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc