Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
ejson-extras
Advanced tools
Extends EJSON with additional types, including Qty (js-quantities) objects.
ejson
extends JSON to support more types, including user-defined types.
ejson-extras
adds support for additional types not included in ejson
, such
as the native Map
. ejson-extras
also enables importing EJSON-encoded JSON
files.
const EJSON = require('ejson');
require('ejson-extras').apply();
const map1 = new Map().set('foo', 'bar').set('hello', 'world');
EJSON.stringify(map1); // '{"$type":"Map","$value":"[[\\"foo\\",\\"bar\\"],[\\"hello\\",\\"world\\"]]"}'
JSON.stringify(map1); // '{}'
const string = '{"$type":"Map","$value":"[[\\"hello\\",\\"world\\"]]"}';
EJSON.parse(string); // Map { 'hello' => 'world' }
const map2 = new Map().set('hello', 'world').set('foo', 'bar');
EJSON.equals(map1, map2); // true
// test.json
{ "$type": "Map", "$value": "[[\"hello\",\"world\"]]" }
// in your javascript file
require('ejson-extras').apply();
let data = require('./test.json') // Map { 'hello' => 'world' }
Currently, ejson-extras
adds support for the following types:
Please submit an issue if you'd like to see an addtional type.
Adding an additional type is as easy as adding a file to the /types directory.
Here is a sample type file for supporting the native Map
object:
module.exports = {
prototype: Map.prototype,
shims: {
typeName() {
return 'Map';
},
toJSONValue() {
return JSON.stringify([...this]);
},
clone() {
return new Map(this);
},
equals(other) {
if (this.size !== other.size) return false;
Array.from(other.entries()).keys(key => {
return this.get(key) == other.get(key);
});
},
},
factory(json) {
return new Map(JSON.parse(jsonStr));
},
typeName: 'Map',
};
Many custom types will require a peer dependancy. An example of this is
jsQuantities.js
, in this case we use try-require
to import the peer library.
If the peer library isn't found, ejson-extras will skip adding support for that
particular type.
1.0.15 - Fixed Map EJSON stringify/parsing bug.
1.0.11 - Fixed patching of 'require' inside Meteor.
1.0.10 - Fixed ejson detection and import inside Meteor.
1.0.9 - Reverted to standard try/catch syntax.
1.0.8 - Handles multiple calls to apply().
1.0.7 - Added Meteor autodetection for patching of bundled EJSON.
1.0.6 - Removed dependancy on fs
to enable browser usage of ejson-extras
.
FAQs
Extends EJSON with additional types, including Qty (js-quantities) objects.
We found that ejson-extras 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.