Comparing version 3.1.1 to 3.2.0
@@ -95,1 +95,6 @@ 'use strict'; | ||
exports.stringify = stringify; | ||
const toJSON = any => $parse(stringify(any)); | ||
exports.toJSON = toJSON; | ||
const fromJSON = any => parse($stringify(any)); | ||
exports.fromJSON = fromJSON; |
self.Flatted=function(t){"use strict"; | ||
/*! (c) 2020 Andrea Giammarchi */const{parse:e,stringify:n}=JSON,{keys:r}=Object,s=String,c="string",l={},o="object",a=(t,e)=>e,i=t=>t instanceof s?s(t):t,f=(t,e)=>typeof e===c?new s(e):e,u=(t,e,n,c)=>{const a=[];for(let i=r(n),{length:f}=i,u=0;u<f;u++){const r=i[u],f=n[r];if(f instanceof s){const s=t[f];typeof s!==o||e.has(s)?n[r]=c.call(n,r,s):(e.add(s),n[r]=l,a.push({k:r,a:[t,e,s,c]}))}else n[r]!==l&&(n[r]=c.call(n,r,f))}for(let{length:t}=a,e=0;e<t;e++){const{k:t,a:r}=a[e];n[t]=c.call(n,t,u.apply(null,r))}return n},p=(t,e,n)=>{const r=s(e.push(n)-1);return t.set(n,r),r};return t.parse=(t,n)=>{const r=e(t,f).map(i),s=r[0],c=n||a,l=typeof s===o&&s?u(r,new Set,s,c):s;return c.call({"":l},"",l)},t.stringify=(t,e,r)=>{const s=e&&typeof e===o?(t,n)=>""===t||-1<e.indexOf(t)?n:void 0:e||a,l=new Map,i=[],f=[];let u=+p(l,i,s.call({"":t},"",t)),y=!u;for(;u<i.length;)y=!0,f[u]=n(i[u++],g,r);return"["+f.join(",")+"]";function g(t,e){if(y)return y=!y,e;const n=s.call(this,t,e);switch(typeof n){case o:if(null===n)return n;case c:return l.get(n)||p(l,i,n)}return n}},t}({}); | ||
/*! (c) 2020 Andrea Giammarchi */const{parse:e,stringify:n}=JSON,{keys:r}=Object,s=String,o="string",c={},l="object",a=(t,e)=>e,f=t=>t instanceof s?s(t):t,i=(t,e)=>typeof e===o?new s(e):e,u=(t,e,n,o)=>{const a=[];for(let f=r(n),{length:i}=f,u=0;u<i;u++){const r=f[u],i=n[r];if(i instanceof s){const s=t[i];typeof s!==l||e.has(s)?n[r]=o.call(n,r,s):(e.add(s),n[r]=c,a.push({k:r,a:[t,e,s,o]}))}else n[r]!==c&&(n[r]=o.call(n,r,i))}for(let{length:t}=a,e=0;e<t;e++){const{k:t,a:r}=a[e];n[t]=o.call(n,t,u.apply(null,r))}return n},p=(t,e,n)=>{const r=s(e.push(n)-1);return t.set(n,r),r},y=(t,n)=>{const r=e(t,i).map(f),s=r[0],o=n||a,c=typeof s===l&&s?u(r,new Set,s,o):s;return o.call({"":c},"",c)},g=(t,e,r)=>{const s=e&&typeof e===l?(t,n)=>""===t||-1<e.indexOf(t)?n:void 0:e||a,c=new Map,f=[],i=[];let u=+p(c,f,s.call({"":t},"",t)),y=!u;for(;u<f.length;)y=!0,i[u]=n(f[u++],g,r);return"["+i.join(",")+"]";function g(t,e){if(y)return y=!y,e;const n=s.call(this,t,e);switch(typeof n){case l:if(null===n)return n;case o:return c.get(n)||p(c,f,n)}return n}};return t.fromJSON=t=>y(n(t)),t.parse=y,t.stringify=g,t.toJSON=t=>e(g(t)),t}({}); |
@@ -92,1 +92,4 @@ /*! (c) 2020 Andrea Giammarchi */ | ||
}; | ||
export const toJSON = any => $parse(stringify(any)); | ||
export const fromJSON = any => parse($stringify(any)); |
@@ -113,5 +113,13 @@ self.Flatted = (function (exports) { | ||
}; | ||
var toJSON = function toJSON(any) { | ||
return $parse(stringify(any)); | ||
}; | ||
var fromJSON = function fromJSON(any) { | ||
return parse($stringify(any)); | ||
}; | ||
exports.fromJSON = fromJSON; | ||
exports.parse = parse; | ||
exports.stringify = stringify; | ||
exports.toJSON = toJSON; | ||
@@ -118,0 +126,0 @@ return exports; |
self.Flatted=function(n){"use strict"; | ||
/*! (c) 2020 Andrea Giammarchi */var t=JSON.parse,r=JSON.stringify,e=Object.keys,a=String,u="string",f={},i="object",c=function(n,t){return t},l=function(n){return n instanceof a?a(n):n},o=function(n,t){return typeof t===u?new a(t):t},s=function(n,t,r){var e=a(t.push(r)-1);return n.set(r,e),e};return n.parse=function(n,r){var u=t(n,o).map(l),s=u[0],p=r||c,v=typeof s===i&&s?function n(t,r,u,c){for(var l=[],o=e(u),s=o.length,p=0;p<s;p++){var v=o[p],y=u[v];if(y instanceof a){var g=t[y];typeof g!==i||r.has(g)?u[v]=c.call(u,v,g):(r.add(g),u[v]=f,l.push({k:v,a:[t,r,g,c]}))}else u[v]!==f&&(u[v]=c.call(u,v,y))}for(var h=l.length,d=0;d<h;d++){var w=l[d],O=w.k,S=w.a;u[O]=c.call(u,O,n.apply(null,S))}return u}(u,new Set,s,p):s;return p.call({"":v},"",v)},n.stringify=function(n,t,e){for(var a=t&&typeof t===i?function(n,r){return""===n||-1<t.indexOf(n)?r:void 0}:t||c,f=new Map,l=[],o=[],p=+s(f,l,a.call({"":n},"",n)),v=!p;p<l.length;)v=!0,o[p]=r(l[p++],y,e);return"["+o.join(",")+"]";function y(n,t){if(v)return v=!v,t;var r=a.call(this,n,t);switch(typeof r){case i:if(null===r)return r;case u:return f.get(r)||s(f,l,r)}return r}},n}({}); | ||
/*! (c) 2020 Andrea Giammarchi */var t=JSON.parse,r=JSON.stringify,e=Object.keys,u=String,a="string",f={},i="object",o=function(n,t){return t},c=function(n){return n instanceof u?u(n):n},l=function(n,t){return typeof t===a?new u(t):t},s=function n(t,r,a,o){for(var c=[],l=e(a),s=l.length,p=0;p<s;p++){var v=l[p],y=a[v];if(y instanceof u){var g=t[y];typeof g!==i||r.has(g)?a[v]=o.call(a,v,g):(r.add(g),a[v]=f,c.push({k:v,a:[t,r,g,o]}))}else a[v]!==f&&(a[v]=o.call(a,v,y))}for(var h=c.length,O=0;O<h;O++){var S=c[O],d=S.k,w=S.a;a[d]=o.call(a,d,n.apply(null,w))}return a},p=function(n,t,r){var e=u(t.push(r)-1);return n.set(r,e),e},v=function(n,r){var e=t(n,l).map(c),u=e[0],a=r||o,f=typeof u===i&&u?s(e,new Set,u,a):u;return a.call({"":f},"",f)},y=function(n,t,e){for(var u=t&&typeof t===i?function(n,r){return""===n||-1<t.indexOf(n)?r:void 0}:t||o,f=new Map,c=[],l=[],s=+p(f,c,u.call({"":n},"",n)),v=!s;s<c.length;)v=!0,l[s]=r(c[s++],y,e);return"["+l.join(",")+"]";function y(n,t){if(v)return v=!v,t;var r=u.call(this,n,t);switch(typeof r){case i:if(null===r)return r;case a:return f.get(r)||p(f,c,r)}return r}};return n.fromJSON=function(n){return v(r(n))},n.parse=v,n.stringify=y,n.toJSON=function(n){return t(y(n))},n}({}); |
{ | ||
"name": "flatted", | ||
"version": "3.1.1", | ||
"version": "3.2.0", | ||
"description": "A super light and fast circular JSON parser.", | ||
@@ -36,16 +36,16 @@ "unpkg": "min.js", | ||
"devDependencies": { | ||
"@babel/core": "^7.11.6", | ||
"@babel/preset-env": "^7.11.5", | ||
"ascjs": "^4.0.1", | ||
"@babel/core": "^7.14.6", | ||
"@babel/preset-env": "^7.14.7", | ||
"ascjs": "^5.0.1", | ||
"circular-json": "^0.5.9", | ||
"circular-json-es6": "^2.0.2", | ||
"coveralls": "^3.1.0", | ||
"coveralls": "^3.1.1", | ||
"drop-babel-typeof": "^1.0.3", | ||
"jsan": "^3.1.13", | ||
"nyc": "^15.1.0", | ||
"rollup": "^2.26.11", | ||
"rollup": "^2.52.6", | ||
"rollup-plugin-babel": "^4.4.0", | ||
"rollup-plugin-node-resolve": "^5.2.0", | ||
"rollup-plugin-terser": "^7.0.2", | ||
"terser": "^5.3.0" | ||
"terser": "^5.7.1" | ||
}, | ||
@@ -52,0 +52,0 @@ "module": "./esm/index.js", |
@@ -21,6 +21,6 @@ # flatted | ||
// ESM | ||
import {parse, stringify} from 'flatted'; | ||
import {parse, stringify, toJSON, fromJSON} from 'flatted'; | ||
// CJS | ||
const {parse, stringify} = require('flatted'); | ||
const {parse, stringify, toJSON, fromJSON} = require('flatted'); | ||
@@ -34,2 +34,30 @@ const a = [{}]; | ||
## toJSON and from JSON | ||
If you'd like to implicitly survive JSON serialization, these two helpers helps: | ||
```js | ||
import {toJSON, fromJSON} from 'flatted'; | ||
class RecursiveMap extends Map { | ||
static fromJSON(any) { | ||
return new this(fromJSON(any)); | ||
} | ||
toJSON() { | ||
return toJSON([...this.entries()]); | ||
} | ||
} | ||
const recursive = new RecursiveMap; | ||
const same = {}; | ||
same.same = same; | ||
recursive.set('same', same); | ||
const asString = JSON.stringify(recursive); | ||
const asMap = RecursiveMap.fromJSON(JSON.parse(asString)); | ||
asMap.get('same') === asMap.get('same').same; | ||
// true | ||
``` | ||
## Flatted VS JSON | ||
@@ -36,0 +64,0 @@ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
80673
330
100