Comparing version 3.0.3 to 3.1.0
@@ -1,1 +0,1 @@ | ||
!function(r,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Typeson=t():r.Typeson=t()}(this,function(){return function(r){function t(n){if(e[n])return e[n].exports;var o=e[n]={exports:{},id:n,loaded:!1};return r[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var e={};return t.m=r,t.c=e,t.p="",t(0)}([function(r,t){function e(r){var t=[],e={},u=this.types={};this.stringify=function(r,t,e){return JSON.stringify(c(r),t,e)},this.parse=function(r,t){return f(JSON.parse(r,t))};var c=this.encapsulate=function(n){function i(r,t,e){var n=typeof t;if(n in{string:1,"boolean":1,number:1,undefined:1})return"number"===n&&(isNaN(t)||t===-(1/0)||t===1/0)?u(r,t):t;if(null==t)return t;if(e){var a=f.indexOf(t);if(!(0>a))return c[r]="#","#"+s[a];e===!0&&(f.push(t),s.push(r))}var p=t.constructor===Object?t:u(r,t);if(p!==t)return p;if(null==t)return t;var v;if(t.constructor===Object)v={};else{if(t.constructor!==Array)return t;v=new Array(t.length)}return o(t).forEach(function(n){var o=i(r+(r?".":"")+n,t[n],e);void 0!==o&&(v[n]=o)}),v}function u(r,n){for(var o=t.length;o--;)if(t[o].test(n)){var u=t[o].type;if(e[u]){var f=c[r];c[r]=f?[u].concat(f):u}return i(r,t[o].replace(n),a&&"readonly")}return n}var c={},f=[],s=[],a=r&&"cyclic"in r?r.cyclic:!0,p=i("",n,a);if(o(c).length){if(p.constructor!==Object||p.$types)return{$:p,$types:{$:c}};p.$types=c}return p},f=this.revive=function(r){function t(r,f,s){if(!c||"$types"!==r){var a=u[r];if(f&&(f.constructor===Object||f.constructor===Array)){var p=i(f)?new Array(f.length):{};o(f).forEach(function(e){var n=t(r+(r?".":"")+e,f[e],s||p);void 0!==n&&(p[e]=n)}),f=p}return a?"#"===a?n(s,f.substr(1)):[].concat(a).reduce(function(r,t){var n=e[t];if(!n)throw new Error("Unregistered type: "+t);return n(r)},f):f}}var u=r.$types,c=!0;return u?(u.$&&u.$.constructor===Object&&(r=r.$,u=u.$,c=!1),t("",r)):r};this.register=function(r){return[].concat(r).forEach(function n(r){return i(r)?r.map(n):void(r&&o(r).forEach(function(n){var o=r[n],i=t.filter(function(r){return r.type===n});i.length&&(t.splice(t.indexOf(i[0]),1),delete e[n],delete u[n]),o&&(t.push({type:n,test:o[0],replace:o[1]}),o[2]&&(e[n]=o[2]),u[n]=o)}))}),this}}function n(r,t){if(""===t)return r;var e=t.indexOf(".");if(-1!==e){var o=r[t.substr(0,e)];return void 0===o?void 0:n(o,t.substr(e+1))}return r[t]}var o=Object.keys,i=Array.isArray;r.exports=e}])}); | ||
!function(r,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Typeson=t():r.Typeson=t()}(this,function(){return function(r){function t(n){if(e[n])return e[n].exports;var o=e[n]={exports:{},id:n,loaded:!1};return r[n].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var e={};return t.m=r,t.c=e,t.p="",t(0)}([function(r,t){function e(r){var t=[],e={},c=this.types={};this.stringify=function(r,t,e){return JSON.stringify(f(r),t,e)},this.parse=function(r,t){return s(JSON.parse(r,t))};var f=this.encapsulate=function(n){function o(r,t,e){var n=typeof t;if(n in{string:1,"boolean":1,number:1,undefined:1})return"number"===n&&(isNaN(t)||t===-(1/0)||t===1/0)?u(r,t):t;if(null==t)return t;if(e){var a=f.indexOf(t);if(!(0>a))return c[r]="#","#"+s[a];e===!0&&(f.push(t),s.push(r))}var p=t.constructor===Object?t:u(r,t);if(p!==t)return p;if(null==t)return t;var y;if(t.constructor===Object)y={};else{if(t.constructor!==Array)return t;y=new Array(t.length)}return i(t).forEach(function(n){var i=o(r+(r?".":"")+n,t[n],e);void 0!==i&&(y[n]=i)}),y}function u(r,n){for(var i=t.length;i--;)if(t[i].test(n)){var u=t[i].type;if(e[u]){var f=c[r];c[r]=f?[u].concat(f):u}return o(r,t[i].replace(n),a&&"readonly")}return n}var c={},f=[],s=[],a=r&&"cyclic"in r?r.cyclic:!0,p=o("",n,a);if(i(c).length){if(p.constructor!==Object||p.$types)return{$:p,$types:{$:c}};p.$types=c}return p},s=this.revive=function(r){function t(r,f,s){if(!c||"$types"!==r){var a=n[r];if(f&&(f.constructor===Object||f.constructor===Array)){var p=u(f)?new Array(f.length):{};i(f).forEach(function(e){var n=t(r+(r?".":"")+e,f[e],s||p);void 0!==n&&(p[e]=n)}),f=p}return a?"#"===a?o(s,f.substr(1)):[].concat(a).reduce(function(r,t){var n=e[t];if(!n)throw new Error("Unregistered type: "+t);return n(r)},f):f}}var n=r.$types,c=!0;return n?(n.$&&n.$.constructor===Object&&(r=r.$,n=n.$,c=!1),t("",r)):r};this.register=function(r){return[].concat(r).forEach(function o(r){return u(r)?r.map(o):void(r&&i(r).forEach(function(o){var i=r[o],u=t.filter(function(r){return r.type===o});if(u.length&&(t.splice(t.indexOf(u[0]),1),delete e[o],delete c[o]),i){if("function"==typeof i){var f=i;i=[function(r){return r.constructor===f},function(r){return n({},r)},function(r){return n(Object.create(f.prototype),r)}]}t.push({type:o,test:i[0],replace:i[1]}),i[2]&&(e[o]=i[2]),c[o]=i}}))}),this}}function n(r,t){return i(t).map(function(e){r[e]=t[e]}),r}function o(r,t){if(""===t)return r;var e=t.indexOf(".");if(-1!==e){var n=r[t.substr(0,e)];return void 0===n?void 0:o(n,t.substr(e+1))}return r[t]}var i=Object.keys,u=Array.isArray;r.exports=e}])}); |
{ | ||
"name": "typeson", | ||
"version": "3.0.3", | ||
"version": "3.1.0", | ||
"description": "Preserves types over JSON, BSON or socket.io", | ||
@@ -5,0 +5,0 @@ "main": "typeson.js", |
12
test.js
@@ -269,3 +269,13 @@ var Typeson = require('./typeson'); | ||
var back = typeson.parse(tson); | ||
assert (back.buf === back.bar.data.buffer); | ||
assert (back.buf === back.bar.data.buffer, "The buffers point to same object"); | ||
}, function shouldSupportRegisteringAClassWithoutReplacerOrReviver() { | ||
function MyClass() {} | ||
var TSON = new Typeson().register({MyClass: MyClass}); | ||
var x = new MyClass(); | ||
x.hello = "world"; | ||
var tson = TSON.stringify(x); | ||
console.log(tson); | ||
var back = TSON.parse(tson); | ||
assert (back instanceof MyClass, "Should revive to a MyClass instance."); | ||
assert (back.hello === "world", "Should have all properties there."); | ||
}]); |
@@ -183,2 +183,11 @@ var keys = Object.keys, | ||
if (spec) { | ||
if (typeof spec === 'function') { | ||
// Support registering just a class without replacer/reviver | ||
var Class = spec; | ||
spec = [ | ||
function(x){return x.constructor === Class;}, | ||
function(x){return assign({}, x)}, | ||
function(x){return assign(Object.create(Class.prototype), x)} | ||
]; | ||
} | ||
replacers.push({ | ||
@@ -198,2 +207,7 @@ type: typeId, | ||
function assign(t,s) { | ||
keys(s).map(function(k){t[k]=s[k];}); | ||
return t; | ||
} | ||
/** getByKeyPath() utility */ | ||
@@ -200,0 +214,0 @@ function getByKeyPath (obj, keyPath) { |
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
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
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
477
25059
6
1
0