Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ast-util-plus

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ast-util-plus - npm Package Compare versions

Comparing version 0.6.2 to 0.7.0

32

examples/swap-macro.js
#!/usr/bin/env node
var recast = require('recast');
var util = require('../lib');
var types = util.types;
var n = types.namedTypes;
var b = types.builders;
var assert = require('assert');
const recast = require('recast');
const util = require('../lib');
const { types } = util;
const n = types.namedTypes;
const b = types.builders;
const assert = require('assert');

@@ -26,3 +26,3 @@ /**

function transform(ast) {
var replaced = [];
const replaced = [];

@@ -33,18 +33,18 @@ types.traverse(ast, function(node) {

// swap(left, right)
var expression = node.expression;
assert.equal(expression.arguments.length, 2, 'expected 2 arguments to `swap`, got ' + expression.arguments.length);
const { expression } = node;
assert.equal(expression.arguments.length, 2, `expected 2 arguments to \`swap\`, got ${expression.arguments.length}`);
var left = expression.arguments[0];
var right = expression.arguments[1];
const left = expression.arguments[0];
const right = expression.arguments[1];
assert.ok(
n.Identifier.check(left) || n.MemberExpression.check(left),
'expected first argument of `swap` to be an Identifier or MemberExpression, found ' + left.type
`expected first argument of \`swap\` to be an Identifier or MemberExpression, found ${left.type}`
);
assert.ok(
n.Identifier.check(right) || n.MemberExpression.check(right),
'expected second argument of `swap` to be an Identifier or MemberExpression, found ' + right.type
`expected second argument of \`swap\` to be an Identifier or MemberExpression, found ${right.type}`
);
var tmp = util.uniqueIdentifier(this.scope);
const tmp = util.uniqueIdentifier(this.scope);

@@ -85,3 +85,3 @@ replaced.push(expression);

function readStdin(callback) {
var stdin = '';
let stdin = '';

@@ -91,3 +91,3 @@ process.stdin.setEncoding('utf8');

process.stdin.on('readable', function() {
var chunk = process.stdin.read();
const chunk = process.stdin.read();
if (chunk !== null) {

@@ -94,0 +94,0 @@ stdin += chunk;

(function get(object, property, receiver) {
var desc = Object.getOwnPropertyDescriptor(object, property);
const desc = Object.getOwnPropertyDescriptor(object, property);
if (desc === void 0) {
var parent = Object.getPrototypeOf(object);
const parent = Object.getPrototypeOf(object);
if (parent === null) {

@@ -13,3 +13,3 @@ return void 0;

} else {
var getter = desc.get;
const getter = desc.get;
if (getter === void 0) {

@@ -16,0 +16,0 @@ return void 0;

(function(array) {
var index = 0;
let index = 0;
return {
next: function() {
next() {
if (index < array.length) {

@@ -6,0 +6,0 @@ return {

(function(iterable) {
var sym = typeof Symbol === "function" && Symbol.iterator || "@@iterator";
const sym = typeof Symbol === "function" && Symbol.iterator || "@@iterator";

@@ -4,0 +4,0 @@ if (typeof iterable[sym] === "function") {

@@ -9,5 +9,5 @@ (function(iterator, index, begin, len) {

var range = [], end = begin + len;
const range = [], end = begin + len;
while (index < end) {
var next = iterator.next();
const next = iterator.next();
if (next.done) {

@@ -23,5 +23,5 @@ break;

return {
range: range,
index: index
range,
index
};
});

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

var b = require('ast-types').builders;
module.exports = function(scope) {
return b.functionExpression(
const b = require('ast-types').builders;
module.exports = scope =>
b.functionExpression(
b.identifier('get'),

@@ -160,2 +160,2 @@ [

false
)};
);

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

var b = require('ast-types').builders;
module.exports = function(scope) {
return b.functionExpression(
const b = require('ast-types').builders;
module.exports = scope =>
b.functionExpression(
null,

@@ -90,2 +90,2 @@ [b.identifier('array')],

false
)};
);

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

var b = require('ast-types').builders;
const b = require('ast-types').builders;
module.exports = function(scope) {
var getArrayIterator = require('..').getArrayIterator;
const { getArrayIterator } = require('..');

@@ -5,0 +5,0 @@ return b.functionExpression(

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

var b = require('ast-types').builders;
module.exports = function(scope) {
return b.functionExpression(
const b = require('ast-types').builders;
module.exports = scope =>
b.functionExpression(
null,

@@ -150,2 +150,2 @@ [

false
)};
);
/* jshint node:true, undef:true, unused:true */
var types = require('ast-types');
var b = types.builders;
var n = types.namedTypes;
var NodePath = types.NodePath;
const types = require('ast-types');
const b = types.builders;
const n = types.namedTypes;
const { NodePath } = types;
var getSecret = require('private').makeAccessor();
var hasOwnProp = Object.prototype.hasOwnProperty;
const getSecret = require('private').makeAccessor();
const hasOwnProp = Object.prototype.hasOwnProperty;
var assert = require('assert');
const assert = require('assert');

@@ -42,3 +42,3 @@ /**

var args = [];
const args = [];
if (begin) { args.push(begin); }

@@ -68,3 +68,3 @@ if (end) { args.push(end); }

function callFunctionBind(scope, fn, context, args) {
var bind = sharedFor(scope, 'Function.prototype.bind');
const bind = sharedFor(scope, 'Function.prototype.bind');

@@ -100,3 +100,3 @@ if (n.Expression.check(args)) {

function callGetIterator(scope, expression) {
var getIterator = injectGetIteratorHelper(scope.getGlobalScope());
const getIterator = injectGetIteratorHelper(scope.getGlobalScope());
return b.callExpression(getIterator, [expression]);

@@ -130,3 +130,3 @@ }

function callGetIteratorRange(scope, iterator, index, begin, len) {
var getIteratorRange = injectGetIteratorRangeHelper(scope.getGlobalScope());
const getIteratorRange = injectGetIteratorRangeHelper(scope.getGlobalScope());
return b.callExpression(getIteratorRange, [iterator, index, begin, len]);

@@ -146,3 +146,3 @@ }

function callGet(scope, object, property, receiver) {
var get = injectGetHelper(scope.getGlobalScope());
const get = injectGetHelper(scope.getGlobalScope());
return b.callExpression(get, [object, property, receiver]);

@@ -269,9 +269,9 @@ }

function getGlobals(ast) {
var globals = [];
var seen = Object.create(null);
const globals = [];
const seen = Object.create(null);
types.visit(ast, {
visitNode: function(path) {
visitNode(path) {
this.traverse(path);
var node = path.value;
const node = path.value;

@@ -313,5 +313,3 @@ if (isReference(path) && !path.scope.lookup(node.name)) {

'get',
function() {
return require('./helpers/get')(scope);
}
() => require('./helpers/get')(scope)
);

@@ -330,5 +328,3 @@ }

'getArrayIterator',
function() {
return require('./helpers/getArrayIterator')(scope);
}
() => require('./helpers/getArrayIterator')(scope)
);

@@ -347,5 +343,3 @@ }

'getIterator',
function() {
return require('./helpers/getIterator')(scope);
}
() => require('./helpers/getIterator')(scope)
);

@@ -364,5 +358,3 @@ }

'getIteratorRange',
function() {
return require('./helpers/getIteratorRange')(scope);
}
() => require('./helpers/getIteratorRange')(scope)
);

@@ -384,3 +376,3 @@ }

function injectShared(scope, name, expression) {
var scopeSecret = getSecret(scope);
const scopeSecret = getSecret(scope);

@@ -411,3 +403,3 @@ if (!(name in scopeSecret)) {

function injectVariable(scope, identifier, init) {
var bodyPath = scope.path.get('body');
let bodyPath = scope.path.get('body');

@@ -418,7 +410,7 @@ if (n.BlockStatement.check(bodyPath.value)) {

var declarationIndex;
var bodyStatements = bodyPath.node.body;
let declarationIndex;
const bodyStatements = bodyPath.node.body;
for (declarationIndex = 0; declarationIndex < bodyStatements.length; declarationIndex++) {
var statement = bodyStatements[declarationIndex];
const statement = bodyStatements[declarationIndex];
if (!isDirectivePrologue(statement)) {

@@ -438,4 +430,4 @@ break;

// Ensure this identifier counts as used in this scope.
var name = identifier.name;
var bindings = scope.getBindings();
const { name } = identifier;
const bindings = scope.getBindings();
if (!hasOwnProp.call(bindings, name)) {

@@ -459,3 +451,3 @@ bindings[name] = [];

if (n.ExpressionStatement.check(statement)) {
var expression = statement.expression;
const { expression } = statement;
if (n.Literal.check(expression)) {

@@ -482,3 +474,3 @@ return typeof expression.value === 'string';

function isReference(path, name) {
var node = path.value;
const node = path.value;
assert.ok(n.Node.check(node));

@@ -489,3 +481,3 @@

var parent = path.parent.value;
const parent = path.parent.value;
if (n.VariableDeclarator.check(parent)) {

@@ -498,5 +490,3 @@ return parent.init === node;

} else if (n.Function.check(parent)) {
return parent.id !== node && !parent.params.some(function(param) {
return param === node;
});
return parent.id !== node && !parent.params.some(param => param === node);
} else if (n.ClassDeclaration.check(parent) || n.ClassExpression.check(parent)) {

@@ -554,4 +544,4 @@ return parent.id !== node;

var globalScope = scope.getGlobalScope();
var globalScopeSecret = getSecret(globalScope);
const globalScope = scope.getGlobalScope();
const globalScopeSecret = getSecret(globalScope);

@@ -562,5 +552,3 @@ if (!globalScopeSecret.globals) {

return globalScopeSecret.globals.some(function(global) {
return global.name === name;
});
return globalScopeSecret.globals.some(global => global.name === name);
}

@@ -588,6 +576,6 @@ exports.isUsed = isUsed;

function() {
var parts = name.split('.');
var result = b.identifier(parts[0]);
const parts = name.split('.');
let result = b.identifier(parts[0]);
for (var i = 1, length = parts.length; i < length; i++) {
for (let i = 1, { length } = parts; i < length; i++) {
result = b.memberExpression(

@@ -624,6 +612,6 @@ result,

function uniqueIdentifier(scope, name) {
var prefix = '$__' + identifierForString(name ? name : '');
var globalScopeSecret = getSecret(scope.getGlobalScope());
var n = globalScopeSecret.nextId || 0;
var identifier = name ? prefix : null;
const prefix = `$__${identifierForString(name ? name : '')}`;
const globalScopeSecret = getSecret(scope.getGlobalScope());
let n = globalScopeSecret.nextId || 0;
let identifier = name ? prefix : null;

@@ -630,0 +618,0 @@ while (!identifier || isUsed(scope, identifier)) {

@@ -21,4 +21,4 @@ /* jshint node:true, undef:true, unused:true */

Replacement.prototype.replace = function() {
for (var i = 0, length = this.queue.length; i < length; i++) {
var item = this.queue[i];
for (let i = 0, { length } = this.queue; i < length; i++) {
const item = this.queue[i];
item[0].replace.apply(item[0], item[1]);

@@ -44,5 +44,3 @@ }

*/
Replacement.removes = function(nodePath) {
return new Replacement(nodePath, []);
};
Replacement.removes = nodePath => new Replacement(nodePath, []);

@@ -57,5 +55,3 @@ /**

*/
Replacement.adds = function(nodePath, nodes) {
return new Replacement(nodePath, [nodePath.node].concat(nodes));
};
Replacement.adds = (nodePath, nodes) => new Replacement(nodePath, [nodePath.node].concat(nodes));

@@ -86,6 +82,6 @@ /**

Replacement.map = function(nodePaths, callback) {
var result = new Replacement();
const result = new Replacement();
nodePaths.each(function(nodePath) {
var replacement = callback(nodePath);
const replacement = callback(nodePath);
if (replacement) {

@@ -92,0 +88,0 @@ result.and(replacement);

@@ -5,19 +5,19 @@ /**

var types = require('ast-types');
var Scope = require('ast-types/lib/scope');
var NodePath = types.NodePath;
const types = require('ast-types');
const Scope = require('ast-types/lib/scope');
const { NodePath } = types;
/** @typedef Object */
var Node;
let Node;
/** @typedef Node */
var Expression;
let Expression;
/** @typedef Expression */
var CallExpression;
let CallExpression;
/** @typedef Expression */
var Literal;
let Literal;
/** @typedef Expression */
var Identifier;
let Identifier;
{
"name": "ast-util-plus",
"version": "0.6.2",
"version": "0.7.0",
"description": "Utilities for AST transformers.",

@@ -14,3 +14,3 @@ "main": "lib/index.js",

"type": "git",
"url": "git://github.com/aminya/ast-util.git"
"url": "git://github.com/aminya/ast-util-plus.git"
},

@@ -27,5 +27,5 @@ "keywords": [

"bugs": {
"url": "https://github.com/aminya/ast-util/issues"
"url": "https://github.com/aminya/ast-util-plus/issues"
},
"homepage": "https://github.com/aminya/ast-util",
"homepage": "https://github.com/aminya/ast-util-plus",
"devDependencies": {

@@ -32,0 +32,0 @@ "esprima-fb": "15001.1001.0-dev-harmony-fb",

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

# ast-util
# ast-util-plus

@@ -8,3 +8,3 @@ Utilities for AST transformers.

```
$ npm install [--save] ast-util
$ npm install ast-util-plus
```

@@ -11,0 +11,0 @@

/* jshint node:true, mocha:true, undef:true, unused:true */
var Replacement = require('../lib').Replacement;
var assert = require('assert');
const { Replacement } = require('../lib');
const assert = require('assert');
describe('Replacement', function() {
var nodePath;
let nodePath;
function makeNodePath() {
var node = {};
const node = {};
return {
node: node,
replace: function() {
node,
replace() {
this.replacedWith = [].slice.call(arguments);

@@ -25,3 +25,3 @@ }

it('creates a Replacement that replaces with nothing', function() {
var repl = Replacement.removes(nodePath);
const repl = Replacement.removes(nodePath);
repl.replace();

@@ -34,4 +34,4 @@ assert.equal(nodePath.replacedWith.length, 0);

it('creates a Replacement that replaces with another', function() {
var swappedIn = {};
var repl = Replacement.swaps(nodePath, swappedIn);
const swappedIn = {};
const repl = Replacement.swaps(nodePath, swappedIn);
repl.replace();

@@ -43,5 +43,5 @@ assert.equal(nodePath.replacedWith.length, 1);

it('creates a Replacement that replaces with a list', function() {
var swappedIn1 = {};
var swappedIn2 = {};
var repl = Replacement.swaps(nodePath, [swappedIn1, swappedIn2]);
const swappedIn1 = {};
const swappedIn2 = {};
const repl = Replacement.swaps(nodePath, [swappedIn1, swappedIn2]);
repl.replace();

@@ -56,5 +56,5 @@ assert.equal(nodePath.replacedWith.length, 2);

it('creates a Replacement that adds additional nodes', function() {
var added1 = {};
var added2 = {};
var repl = Replacement.adds(nodePath, [added1, added2]);
const added1 = {};
const added2 = {};
const repl = Replacement.adds(nodePath, [added1, added2]);
repl.replace();

@@ -69,7 +69,7 @@ assert.equal(nodePath.replacedWith.length, 3);

describe('.map', function() {
var from1;
var from2;
var nodeArrayPath;
var to1;
var to2;
let from1;
let from2;
let nodeArrayPath;
let to1;
let to2;

@@ -86,3 +86,3 @@ beforeEach(function() {

it('creates a Replacement with the results of the map', function() {
var repl = Replacement.map(nodeArrayPath, function(nodePath) {
const repl = Replacement.map(nodeArrayPath, function(nodePath) {
if (nodePath === from1) {

@@ -93,3 +93,3 @@ return Replacement.swaps(nodePath, to1);

} else {
assert.ok(false, 'unexpected argument to callback: ' + nodePath);
assert.ok(false, `unexpected argument to callback: ${nodePath}`);
}

@@ -107,3 +107,3 @@ });

it('ignores null returns from the callback', function() {
var repl = Replacement.map(nodeArrayPath, function(nodePath) {
const repl = Replacement.map(nodeArrayPath, function(nodePath) {
if (nodePath === from1) {

@@ -114,3 +114,3 @@ return Replacement.swaps(nodePath, to1);

} else {
assert.ok(false, 'unexpected argument to callback: ' + nodePath);
assert.ok(false, `unexpected argument to callback: ${nodePath}`);
}

@@ -129,5 +129,5 @@ });

it('adds the given Replacement to the receiver', function() {
var node1 = {};
var anotherNodePath = makeNodePath();
var repl = Replacement.swaps(
const node1 = {};
const anotherNodePath = makeNodePath();
const repl = Replacement.swaps(
nodePath, node1

@@ -134,0 +134,0 @@ ).and(

/* jshint node:true, mocha:true, undef:true, unused:true */
var util = require('../lib');
const util = require('../lib');
var recast = require('recast');
var esprima = require('esprima-fb');
var types = recast.types;
var n = types.namedTypes;
var b = types.builders;
var NodePath = types.NodePath;
const recast = require('recast');
const esprima = require('esprima-fb');
const { types } = recast;
const n = types.namedTypes;
const b = types.builders;
const { NodePath } = types;
var assert = require('assert');
const assert = require('assert');
function parse(source) {
return recast.parse(source, { esprima: esprima });
return recast.parse(source, { esprima });
}

@@ -23,5 +23,5 @@

function processIt(source, callback) {
var ast = parse(source);
const ast = parse(source);
types.visit(ast, {
visitIdentifier: function(path) {
visitIdentifier(path) {
if (path.value.name === 'IT') {

@@ -52,3 +52,3 @@ callback.call(path, path.value);

function check(source, expected, name) {
var identifier;
let identifier;

@@ -109,5 +109,5 @@ processIt(source, function() {

function check(source, names, expected) {
var ast = parse(source).program;
var rootPath = new NodePath({ root: ast });
var globalScope = rootPath.get('root').scope;
const ast = parse(source).program;
const rootPath = new NodePath({ root: ast });
const globalScope = rootPath.get('root').scope;

@@ -119,7 +119,7 @@ if (typeof names === 'string') {

names.forEach(function(name) {
var actual = util.isUsed(globalScope, name);
const actual = util.isUsed(globalScope, name);
assert.ok(
actual === expected,
'expected `' + name + '` ' +
`expected \`${name}\` ` +
(expected ? '' : 'not ') +

@@ -159,3 +159,3 @@ 'to be used globally by `' + JSON.stringify(source) + '`'

expected,
'expected `IT` in `' + source + '` to ' +
`expected \`IT\` in \`${source}\` to ` +
(expected ? '' : 'not ') + 'be a reference'

@@ -193,5 +193,3 @@ );

it('is true for variable references', function() {
check('var IT; foo(IT);', true, function(path) {
return n.CallExpression.check(path.parent.value);
});
check('var IT; foo(IT);', true, path => n.CallExpression.check(path.parent.value));
});

@@ -205,5 +203,3 @@

check('({a: IT})', true);
check('({IT: IT})', true, function(path) {
return path.parent.value === path.value;
});
check('({IT: IT})', true, path => path.parent.value === path.value);
});

@@ -217,5 +213,3 @@

check('IT: 1', false);
check('IT: IT', true, function(path) {
return n.ExpressionStatement.check(path.parent.value);
});
check('IT: IT', true, path => n.ExpressionStatement.check(path.parent.value));
});

@@ -225,3 +219,3 @@

types.visit(parse('a'), {
visitIdentifier: function(path) {
visitIdentifier(path) {
assert.ok(util.isReference(path, 'a'));

@@ -265,4 +259,4 @@ assert.ok(!util.isReference(path, 'b'));

it('creates a variable in the scope node', function() {
var identifier = b.identifier('a');
var ast = processIt('function foo(){ IT; }', function() {
const identifier = b.identifier('a');
const ast = processIt('function foo(){ IT; }', function() {
assert.strictEqual(

@@ -278,7 +272,7 @@ util.injectVariable(this.scope, identifier),

it('marks the variable as bound in the given scope', function() {
var identifier = b.identifier('a');
var scope;
const identifier = b.identifier('a');
let scope;
processIt('function foo(){ IT; }', function() {
scope = this.scope;
({ scope } = this);
assert.strictEqual(

@@ -295,3 +289,3 @@ util.injectVariable(scope, identifier),

it('can create a variable with an initial value', function() {
var ast = processIt('IT;', function() {
const ast = processIt('IT;', function() {
util.injectVariable(

@@ -316,6 +310,6 @@ this.scope,

it('can inject a variable in a scope at a position that is later replaced', function() {
var ast = parse('var a;');
const ast = parse('var a;');
types.visit(ast, {
visitVariableDeclaration: function(path) {
visitVariableDeclaration(path) {
util.injectVariable(path.scope, b.identifier('b'));

@@ -335,3 +329,3 @@ return b.expressionStatement(

it('injects after any global "use strict" pragma', function() {
var ast = processIt('"use strict"; IT;', function() {
const ast = processIt('"use strict"; IT;', function() {
util.injectVariable(

@@ -348,3 +342,3 @@ this.scope,

it('injects after any local "use strict" pragma', function() {
var ast = processIt('function getIt() { "use strict"; return IT; }', function() {
const ast = processIt('function getIt() { "use strict"; return IT; }', function() {
util.injectVariable(

@@ -362,3 +356,3 @@ this.scope,

describe('#injectShared', function() {
var hasOwnPropAST = b.memberExpression(
const hasOwnPropAST = b.memberExpression(
b.memberExpression(

@@ -373,3 +367,3 @@ b.identifier('Object'),

var arraySliceAST = b.memberExpression(
const arraySliceAST = b.memberExpression(
b.memberExpression(

@@ -385,3 +379,3 @@ b.identifier('Array'),

it('can inject a shared value', function() {
var ast = processIt('IT;', function() {
const ast = processIt('IT;', function() {
assert.equal(

@@ -428,3 +422,3 @@ util.injectShared(

it('returns a CallExpression with the given object and property', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callHasOwnProperty(this.scope, node, 'is'));

@@ -443,3 +437,3 @@ });

it('returns a CallExpression with the given object and property', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callGetOwnPropertyDescriptor(this.scope, node, 'is'));

@@ -458,3 +452,3 @@ });

it('returns a CallExpression with the given object', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callGetPrototypeOf(this.scope, node));

@@ -473,3 +467,3 @@ });

it('returns a CallExpression with the given object and omits missing begin/end', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callArraySlice(this.scope, node));

@@ -486,3 +480,3 @@ });

it('returns a CallExpression with the given object and begin/end', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callArraySlice(this.scope, node, 1, 2));

@@ -501,3 +495,3 @@ });

it('uses call when given args as an array', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callFunctionBind(

@@ -519,3 +513,3 @@ this.scope,

it('uses apply when given args as an expression', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callFunctionBind(

@@ -539,3 +533,3 @@ this.scope,

it('calls the get iterator helper', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callGetIterator(

@@ -583,3 +577,3 @@ this.scope, node

it('calls the get iterator range helper', function() {
var ast = processIt('IT;', function(node) {
const ast = processIt('IT;', function(node) {
this.replace(util.callGetIteratorRange(

@@ -623,5 +617,3 @@ this.scope, node, b.literal(1), b.literal(2), b.literal(3)

assert.deepEqual(
util.getGlobals(parse(source).program).map(function(identifier) {
return identifier.name;
}),
util.getGlobals(parse(source).program).map(identifier => identifier.name),
globals

@@ -628,0 +620,0 @@ );

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc