
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
@emanimation/js-serial-js
Advanced tools
Safely serialize JavaScript expressions to/from a string. This includes Dates, BigInts, Functions, Maps, Sets, circular objs and more.
Safely serialize JavaScript expressions to a superset of JSON, which includes Dates, BigInts, Functions, Maps, Sets, circular objs and more. It produces a string that can be stored or transferred anywhere like normal JSON, but doesn't lose most of its properties. This string can also be parsed back by the provided parser.
pnpm add @emanimation/js-serial-js
import { stringify, parse, cloneDeep } from 'js-serial-js';
const original = {
str : 'string',
num : 0,
obj : {foo: 'foo'},
arr : [1, 2, 3],
bool : true,
nil : null,
undef: undefined,
inf : Infinity,
date : new Date('Thu, 28 Apr 2016 22:02:17 GMT'),
map : new Map([['hello', 'world']]),
set : new Set([123, 456]),
fn : function (bar) {
console.log('woo! a is '+this.str);
console.log('and bar is '+bar);
},
re : /([^\s]+)/g,
big : BigInt(10),
};
const serialized = stringify(original);
console.log('serialized: ', serialized);
/*
// produces the following string:
'{"json":{"str":"string","num":0,"obj":{"foo":"foo"},"arr":[1,2,3],"bool":true,
"nil":null,"undef":null,"inf":"Infinity","date":"2016-04-28T22:02:17.000Z",
"map":[["hello","world"]],"set":[123,456],"fn":function fn(bar) {
console.log("woo! a is " + this.str);
console.log("and bar is " + bar);
},"re":"\u002F([^\\s]+)\u002Fg","big":"10"},"meta":{"values":{"undef":
["undefined"],"inf":["number"],"date":["Date"],"map":["map"],"set":
["set"],"re":["regexp"],"big":["bigint"]}}}'
// notice the meta object, that tries to keep the object intact
*/
console.log('typeof serialized: ', typeof serialized); // => string
// to get things back as they were before
let parsed = parse(jm);
console.log(parsed); // => object similar to original obj
// the function still works as expected
parsed.fn('huga'); // => "woo! a is string" "and bar is huga"
/** quickly clone an object by serializing it and deserializing it as another obj. The object may not be represented completely since this can't handle some unknown objects */
cloneDeep(original); // => deep clone of original javascript
Emmanuel Mahuni
This library combines https://github.com/blitz-js/superjson and https://github.com/yahoo/serialize-javascript to produce a string that can be stored or transferred anywhere like normal JSON, but doesn't loose most of its properties. superjson generates the original object's data and metadata, and serialize-javascript stringifies both into a string that can be used anywhere.
FAQs
Safely serialize JavaScript expressions to/from a string. This includes Dates, BigInts, Functions, Maps, Sets, circular objs and more.
We found that @emanimation/js-serial-js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.