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

@graphql-tools/utils

Package Overview
Dependencies
Maintainers
3
Versions
1279
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@graphql-tools/utils - npm Package Compare versions

Comparing version 10.5.3 to 10.5.4-alpha-20240816015725-ce463274e52be80999ac43adf98ff1e4095f1ae5

66

cjs/getDirectiveExtensions.js

@@ -6,4 +6,36 @@ "use strict";

const getArgumentValues_js_1 = require("./getArgumentValues.js");
const memoize_js_1 = require("./memoize.js");
function getDirectiveExtensions(directableObj, schema, pathToDirectivesInExtensions = ['directives']) {
const directiveExtensions = {};
if (directableObj.extensions) {
let directivesInExtensions = directableObj.extensions;
for (const pathSegment of pathToDirectivesInExtensions) {
directivesInExtensions = directivesInExtensions?.[pathSegment];
}
if (directivesInExtensions != null) {
for (const directiveNameProp in directivesInExtensions) {
const directiveObjs = directivesInExtensions[directiveNameProp];
const directiveName = directiveNameProp;
if (Array.isArray(directiveObjs)) {
for (const directiveObj of directiveObjs) {
let existingDirectiveExtensions = directiveExtensions[directiveName];
if (!existingDirectiveExtensions) {
existingDirectiveExtensions = [];
directiveExtensions[directiveName] = existingDirectiveExtensions;
}
existingDirectiveExtensions.push(directiveObj);
}
}
else {
let existingDirectiveExtensions = directiveExtensions[directiveName];
if (!existingDirectiveExtensions) {
existingDirectiveExtensions = [];
directiveExtensions[directiveName] = existingDirectiveExtensions;
}
existingDirectiveExtensions.push(directiveObjs);
}
}
}
}
const memoizedStringify = (0, memoize_js_1.memoize1)(obj => JSON.stringify(obj));
const astNodes = [];

@@ -44,33 +76,9 @@ if (directableObj.astNode) {

}
existingDirectiveExtensions.push(value);
}
}
}
if (directableObj.extensions) {
let directivesInExtensions = directableObj.extensions;
for (const pathSegment of pathToDirectivesInExtensions) {
directivesInExtensions = directivesInExtensions?.[pathSegment];
}
if (directivesInExtensions != null) {
for (const directiveNameProp in directivesInExtensions) {
const directiveObjs = directivesInExtensions[directiveNameProp];
const directiveName = directiveNameProp;
if (Array.isArray(directiveObjs)) {
for (const directiveObj of directiveObjs) {
let existingDirectiveExtensions = directiveExtensions[directiveName];
if (!existingDirectiveExtensions) {
existingDirectiveExtensions = [];
directiveExtensions[directiveName] = existingDirectiveExtensions;
}
existingDirectiveExtensions.push(directiveObj);
if (astNodes.length > 0 && existingDirectiveExtensions.length > 0) {
const valStr = memoizedStringify(value);
if (existingDirectiveExtensions.some(val => memoizedStringify(val) === valStr)) {
continue;
}
}
else {
let existingDirectiveExtensions = directiveExtensions[directiveName];
if (!existingDirectiveExtensions) {
existingDirectiveExtensions = [];
directiveExtensions[directiveName] = existingDirectiveExtensions;
}
existingDirectiveExtensions.push(directiveObjs);
}
existingDirectiveExtensions.push(value);
}

@@ -77,0 +85,0 @@ }

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeDirectiveNodes = exports.makeDirectiveNode = exports.makeDeprecatedDirective = exports.astFromEnumValue = exports.astFromInputField = exports.astFromField = exports.astFromScalarType = exports.astFromEnumType = exports.astFromInputObjectType = exports.astFromUnionType = exports.astFromInterfaceType = exports.astFromObjectType = exports.astFromArg = exports.getDeprecatableDirectiveNodes = exports.getDirectiveNodes = exports.astFromDirective = exports.astFromSchema = exports.printSchemaWithDirectives = exports.getDocumentNodeFromSchema = void 0;
exports.makeDirectiveNodes = exports.makeDirectiveNode = exports.makeDeprecatedDirective = exports.astFromEnumValue = exports.astFromInputField = exports.astFromField = exports.astFromScalarType = exports.astFromEnumType = exports.astFromInputObjectType = exports.astFromUnionType = exports.astFromInterfaceType = exports.astFromObjectType = exports.astFromArg = exports.getDirectiveNodes = exports.astFromDirective = exports.astFromSchema = exports.printSchemaWithDirectives = exports.getDocumentNodeFromSchema = void 0;
const graphql_1 = require("graphql");

@@ -141,10 +141,4 @@ const astFromType_js_1 = require("./astFromType.js");

function getDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {
let directiveNodesBesidesDeprecatedAndSpecifiedBy = [];
const directivesInExtensions = (0, get_directives_js_1.getDirectivesInExtensions)(entity, pathToDirectivesInExtensions);
let nodes = [];
if (entity.astNode != null) {
nodes.push(entity.astNode);
}
if ('extensionASTNodes' in entity && entity.extensionASTNodes != null) {
nodes = nodes.concat(entity.extensionASTNodes);
}
let directives;

@@ -154,39 +148,33 @@ if (directivesInExtensions != null) {

}
else {
directives = [];
for (const node of nodes) {
if (node.directives) {
directives.push(...node.directives);
}
}
}
return directives;
}
exports.getDirectiveNodes = getDirectiveNodes;
function getDeprecatableDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {
let directiveNodesBesidesDeprecated = [];
let deprecatedDirectiveNode = null;
const directivesInExtensions = (0, get_directives_js_1.getDirectivesInExtensions)(entity, pathToDirectivesInExtensions);
let directives;
if (directivesInExtensions != null) {
directives = makeDirectiveNodes(schema, directivesInExtensions);
}
else {
directives = entity.astNode?.directives;
}
let specifiedByDirectiveNode = null;
if (directives != null) {
directiveNodesBesidesDeprecated = directives.filter(directive => directive.name.value !== 'deprecated');
directiveNodesBesidesDeprecatedAndSpecifiedBy = directives.filter(directive => directive.name.value !== 'deprecated' && directive.name.value !== 'specifiedBy');
if (entity.deprecationReason != null) {
deprecatedDirectiveNode = directives.filter(directive => directive.name.value === 'deprecated')?.[0];
}
if (entity.specifiedByUrl != null || entity.specifiedByURL != null) {
specifiedByDirectiveNode = directives.filter(directive => directive.name.value === 'specifiedBy')?.[0];
}
}
if (entity.deprecationReason != null &&
deprecatedDirectiveNode == null) {
if (entity.deprecationReason != null && deprecatedDirectiveNode == null) {
deprecatedDirectiveNode = makeDeprecatedDirective(entity.deprecationReason);
}
return deprecatedDirectiveNode == null
? directiveNodesBesidesDeprecated
: [deprecatedDirectiveNode].concat(directiveNodesBesidesDeprecated);
if (entity.specifiedByUrl != null ||
(entity.specifiedByURL != null && specifiedByDirectiveNode == null)) {
const specifiedByValue = entity.specifiedByUrl || entity.specifiedByURL;
const specifiedByArgs = {
url: specifiedByValue,
};
specifiedByDirectiveNode = makeDirectiveNode('specifiedBy', specifiedByArgs);
}
if (deprecatedDirectiveNode != null) {
directiveNodesBesidesDeprecatedAndSpecifiedBy.push(deprecatedDirectiveNode);
}
if (specifiedByDirectiveNode != null) {
directiveNodesBesidesDeprecatedAndSpecifiedBy.push(specifiedByDirectiveNode);
}
return directiveNodesBesidesDeprecatedAndSpecifiedBy;
}
exports.getDeprecatableDirectiveNodes = getDeprecatableDirectiveNodes;
exports.getDirectiveNodes = getDirectiveNodes;
function astFromArg(arg, schema, pathToDirectivesInExtensions) {

@@ -205,3 +193,3 @@ return {

: undefined,
directives: getDeprecatableDirectiveNodes(arg, schema, pathToDirectivesInExtensions),
directives: getDirectiveNodes(arg, schema, pathToDirectivesInExtensions),
};

@@ -285,5 +273,3 @@ }

const directivesInExtensions = (0, get_directives_js_1.getDirectivesInExtensions)(type, pathToDirectivesInExtensions);
const directives = directivesInExtensions
? makeDirectiveNodes(schema, directivesInExtensions)
: type.astNode?.directives || [];
const directives = makeDirectiveNodes(schema, directivesInExtensions);
const specifiedByValue = (type['specifiedByUrl'] ||

@@ -321,3 +307,3 @@ type['specifiedByURL']);

// ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility
directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),
directives: getDirectiveNodes(field, schema, pathToDirectivesInExtensions),
};

@@ -336,3 +322,3 @@ }

// ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility
directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),
directives: getDirectiveNodes(field, schema, pathToDirectivesInExtensions),
defaultValue: (0, astFromValue_js_1.astFromValue)(field.defaultValue, field.type) ?? undefined,

@@ -350,4 +336,3 @@ };

},
// ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility
directives: getDeprecatableDirectiveNodes(value, schema, pathToDirectivesInExtensions),
directives: getDirectiveNodes(value, schema, pathToDirectivesInExtensions),
};

@@ -354,0 +339,0 @@ }

import { valueFromAST, valueFromASTUntyped } from 'graphql';
import { getArgumentValues } from './getArgumentValues.js';
import { memoize1 } from './memoize.js';
export function getDirectiveExtensions(directableObj, schema, pathToDirectivesInExtensions = ['directives']) {
const directiveExtensions = {};
if (directableObj.extensions) {
let directivesInExtensions = directableObj.extensions;
for (const pathSegment of pathToDirectivesInExtensions) {
directivesInExtensions = directivesInExtensions?.[pathSegment];
}
if (directivesInExtensions != null) {
for (const directiveNameProp in directivesInExtensions) {
const directiveObjs = directivesInExtensions[directiveNameProp];
const directiveName = directiveNameProp;
if (Array.isArray(directiveObjs)) {
for (const directiveObj of directiveObjs) {
let existingDirectiveExtensions = directiveExtensions[directiveName];
if (!existingDirectiveExtensions) {
existingDirectiveExtensions = [];
directiveExtensions[directiveName] = existingDirectiveExtensions;
}
existingDirectiveExtensions.push(directiveObj);
}
}
else {
let existingDirectiveExtensions = directiveExtensions[directiveName];
if (!existingDirectiveExtensions) {
existingDirectiveExtensions = [];
directiveExtensions[directiveName] = existingDirectiveExtensions;
}
existingDirectiveExtensions.push(directiveObjs);
}
}
}
}
const memoizedStringify = memoize1(obj => JSON.stringify(obj));
const astNodes = [];

@@ -40,33 +72,9 @@ if (directableObj.astNode) {

}
existingDirectiveExtensions.push(value);
}
}
}
if (directableObj.extensions) {
let directivesInExtensions = directableObj.extensions;
for (const pathSegment of pathToDirectivesInExtensions) {
directivesInExtensions = directivesInExtensions?.[pathSegment];
}
if (directivesInExtensions != null) {
for (const directiveNameProp in directivesInExtensions) {
const directiveObjs = directivesInExtensions[directiveNameProp];
const directiveName = directiveNameProp;
if (Array.isArray(directiveObjs)) {
for (const directiveObj of directiveObjs) {
let existingDirectiveExtensions = directiveExtensions[directiveName];
if (!existingDirectiveExtensions) {
existingDirectiveExtensions = [];
directiveExtensions[directiveName] = existingDirectiveExtensions;
}
existingDirectiveExtensions.push(directiveObj);
if (astNodes.length > 0 && existingDirectiveExtensions.length > 0) {
const valStr = memoizedStringify(value);
if (existingDirectiveExtensions.some(val => memoizedStringify(val) === valStr)) {
continue;
}
}
else {
let existingDirectiveExtensions = directiveExtensions[directiveName];
if (!existingDirectiveExtensions) {
existingDirectiveExtensions = [];
directiveExtensions[directiveName] = existingDirectiveExtensions;
}
existingDirectiveExtensions.push(directiveObjs);
}
existingDirectiveExtensions.push(value);
}

@@ -73,0 +81,0 @@ }

@@ -6,3 +6,3 @@ import { GraphQLDeprecatedDirective, isEnumType, isInputObjectType, isInterfaceType, isIntrospectionType, isObjectType, isScalarType, isSpecifiedDirective, isSpecifiedScalarType, isUnionType, Kind, print, } from 'graphql';

import { getDescriptionNode } from './descriptionFromObject.js';
import { getDirectivesInExtensions } from './get-directives.js';
import { getDirectivesInExtensions, } from './get-directives.js';
import { isSome } from './helpers.js';

@@ -135,10 +135,4 @@ import { getRootTypeMap } from './rootTypes.js';

export function getDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {
let directiveNodesBesidesDeprecatedAndSpecifiedBy = [];
const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions);
let nodes = [];
if (entity.astNode != null) {
nodes.push(entity.astNode);
}
if ('extensionASTNodes' in entity && entity.extensionASTNodes != null) {
nodes = nodes.concat(entity.extensionASTNodes);
}
let directives;

@@ -148,36 +142,31 @@ if (directivesInExtensions != null) {

}
else {
directives = [];
for (const node of nodes) {
if (node.directives) {
directives.push(...node.directives);
}
}
}
return directives;
}
export function getDeprecatableDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {
let directiveNodesBesidesDeprecated = [];
let deprecatedDirectiveNode = null;
const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions);
let directives;
if (directivesInExtensions != null) {
directives = makeDirectiveNodes(schema, directivesInExtensions);
}
else {
directives = entity.astNode?.directives;
}
let specifiedByDirectiveNode = null;
if (directives != null) {
directiveNodesBesidesDeprecated = directives.filter(directive => directive.name.value !== 'deprecated');
directiveNodesBesidesDeprecatedAndSpecifiedBy = directives.filter(directive => directive.name.value !== 'deprecated' && directive.name.value !== 'specifiedBy');
if (entity.deprecationReason != null) {
deprecatedDirectiveNode = directives.filter(directive => directive.name.value === 'deprecated')?.[0];
}
if (entity.specifiedByUrl != null || entity.specifiedByURL != null) {
specifiedByDirectiveNode = directives.filter(directive => directive.name.value === 'specifiedBy')?.[0];
}
}
if (entity.deprecationReason != null &&
deprecatedDirectiveNode == null) {
if (entity.deprecationReason != null && deprecatedDirectiveNode == null) {
deprecatedDirectiveNode = makeDeprecatedDirective(entity.deprecationReason);
}
return deprecatedDirectiveNode == null
? directiveNodesBesidesDeprecated
: [deprecatedDirectiveNode].concat(directiveNodesBesidesDeprecated);
if (entity.specifiedByUrl != null ||
(entity.specifiedByURL != null && specifiedByDirectiveNode == null)) {
const specifiedByValue = entity.specifiedByUrl || entity.specifiedByURL;
const specifiedByArgs = {
url: specifiedByValue,
};
specifiedByDirectiveNode = makeDirectiveNode('specifiedBy', specifiedByArgs);
}
if (deprecatedDirectiveNode != null) {
directiveNodesBesidesDeprecatedAndSpecifiedBy.push(deprecatedDirectiveNode);
}
if (specifiedByDirectiveNode != null) {
directiveNodesBesidesDeprecatedAndSpecifiedBy.push(specifiedByDirectiveNode);
}
return directiveNodesBesidesDeprecatedAndSpecifiedBy;
}

@@ -197,3 +186,3 @@ export function astFromArg(arg, schema, pathToDirectivesInExtensions) {

: undefined,
directives: getDeprecatableDirectiveNodes(arg, schema, pathToDirectivesInExtensions),
directives: getDirectiveNodes(arg, schema, pathToDirectivesInExtensions),
};

@@ -271,5 +260,3 @@ }

const directivesInExtensions = getDirectivesInExtensions(type, pathToDirectivesInExtensions);
const directives = directivesInExtensions
? makeDirectiveNodes(schema, directivesInExtensions)
: type.astNode?.directives || [];
const directives = makeDirectiveNodes(schema, directivesInExtensions);
const specifiedByValue = (type['specifiedByUrl'] ||

@@ -306,3 +293,3 @@ type['specifiedByURL']);

// ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility
directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),
directives: getDirectiveNodes(field, schema, pathToDirectivesInExtensions),
};

@@ -320,3 +307,3 @@ }

// ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility
directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),
directives: getDirectiveNodes(field, schema, pathToDirectivesInExtensions),
defaultValue: astFromValue(field.defaultValue, field.type) ?? undefined,

@@ -333,4 +320,3 @@ };

},
// ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility
directives: getDeprecatableDirectiveNodes(value, schema, pathToDirectivesInExtensions),
directives: getDirectiveNodes(value, schema, pathToDirectivesInExtensions),
};

@@ -337,0 +323,0 @@ }

{
"name": "@graphql-tools/utils",
"version": "10.5.3",
"version": "10.5.4-alpha-20240816015725-ce463274e52be80999ac43adf98ff1e4095f1ae5",
"description": "Common package containing utils and types for GraphQL tools",

@@ -5,0 +5,0 @@ "sideEffects": false,

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

import { GraphQLEnumTypeConfig, GraphQLEnumValue, GraphQLEnumValueConfig, GraphQLField, GraphQLFieldConfig, GraphQLInputField, GraphQLInputFieldConfig, GraphQLInputObjectTypeConfig, GraphQLInterfaceTypeConfig, GraphQLNamedType, GraphQLObjectTypeConfig, GraphQLScalarTypeConfig, GraphQLSchema, GraphQLSchemaConfig, GraphQLUnionTypeConfig } from 'graphql';
import { GraphQLSchema } from 'graphql';
import { DirectableObject } from './getDirectiveExtensions.js';
export interface DirectiveAnnotation {

@@ -6,3 +7,3 @@ name: string;

}
export type DirectableGraphQLObject = GraphQLSchema | GraphQLSchemaConfig | GraphQLNamedType | GraphQLObjectTypeConfig<any, any> | GraphQLInterfaceTypeConfig<any, any> | GraphQLUnionTypeConfig<any, any> | GraphQLScalarTypeConfig<any, any> | GraphQLEnumTypeConfig | GraphQLEnumValue | GraphQLEnumValueConfig | GraphQLInputObjectTypeConfig | GraphQLField<any, any> | GraphQLInputField | GraphQLFieldConfig<any, any> | GraphQLInputFieldConfig;
export type DirectableGraphQLObject = DirectableObject;
export declare function getDirectivesInExtensions(node: DirectableGraphQLObject, pathToDirectivesInExtensions?: string[]): Array<DirectiveAnnotation>;

@@ -9,0 +10,0 @@ export declare function getDirectiveInExtensions(node: DirectableGraphQLObject, directiveName: string, pathToDirectivesInExtensions?: string[]): Array<Record<string, any>> | undefined;

@@ -1,3 +0,3 @@

import { DirectiveDefinitionNode, DirectiveNode, DocumentNode, EnumTypeDefinitionNode, EnumValueDefinitionNode, FieldDefinitionNode, GraphQLArgument, GraphQLDirective, GraphQLEnumType, GraphQLEnumValue, GraphQLField, GraphQLInputField, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLNamedType, GraphQLObjectType, GraphQLScalarType, GraphQLSchema, GraphQLUnionType, InputObjectTypeDefinitionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, SchemaDefinitionNode, SchemaExtensionNode, UnionTypeDefinitionNode } from 'graphql';
import { DirectiveAnnotation } from './get-directives.js';
import { DirectiveDefinitionNode, DirectiveNode, DocumentNode, EnumTypeDefinitionNode, EnumValueDefinitionNode, FieldDefinitionNode, GraphQLArgument, GraphQLDirective, GraphQLEnumType, GraphQLEnumValue, GraphQLField, GraphQLInputField, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLObjectType, GraphQLScalarType, GraphQLSchema, GraphQLUnionType, InputObjectTypeDefinitionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, SchemaDefinitionNode, SchemaExtensionNode, UnionTypeDefinitionNode } from 'graphql';
import { DirectableGraphQLObject, DirectiveAnnotation } from './get-directives.js';
import { GetDocumentNodeFromSchemaOptions, Maybe, PrintSchemaWithDirectivesOptions } from './types.js';

@@ -8,4 +8,7 @@ export declare function getDocumentNodeFromSchema(schema: GraphQLSchema, options?: GetDocumentNodeFromSchemaOptions): DocumentNode;

export declare function astFromDirective(directive: GraphQLDirective, schema?: GraphQLSchema, pathToDirectivesInExtensions?: Array<string>): DirectiveDefinitionNode;
export declare function getDirectiveNodes(entity: GraphQLSchema | GraphQLNamedType | GraphQLEnumValue, schema: GraphQLSchema, pathToDirectivesInExtensions?: Array<string>): Array<DirectiveNode>;
export declare function getDeprecatableDirectiveNodes(entity: GraphQLArgument | GraphQLField<any, any> | GraphQLInputField | GraphQLEnumValue, schema?: GraphQLSchema, pathToDirectivesInExtensions?: Array<string>): Array<DirectiveNode>;
export declare function getDirectiveNodes<TDirectiveNode extends DirectiveNode>(entity: DirectableGraphQLObject & {
deprecationReason?: string | null;
specifiedByUrl?: string | null;
specifiedByURL?: string | null;
}, schema?: GraphQLSchema, pathToDirectivesInExtensions?: Array<string>): Array<TDirectiveNode>;
export declare function astFromArg(arg: GraphQLArgument, schema?: GraphQLSchema, pathToDirectivesInExtensions?: Array<string>): InputValueDefinitionNode;

@@ -21,4 +24,4 @@ export declare function astFromObjectType(type: GraphQLObjectType, schema: GraphQLSchema, pathToDirectivesInExtensions?: Array<string>): ObjectTypeDefinitionNode;

export declare function astFromEnumValue(value: GraphQLEnumValue, schema: GraphQLSchema, pathToDirectivesInExtensions?: Array<string>): EnumValueDefinitionNode;
export declare function makeDeprecatedDirective(deprecationReason: string): DirectiveNode;
export declare function makeDirectiveNode(name: string, args?: Record<string, any>, directive?: Maybe<GraphQLDirective>): DirectiveNode;
export declare function makeDirectiveNodes(schema: Maybe<GraphQLSchema>, directiveValues: DirectiveAnnotation[]): Array<DirectiveNode>;
export declare function makeDeprecatedDirective<TDirectiveNode extends DirectiveNode>(deprecationReason: string): TDirectiveNode;
export declare function makeDirectiveNode<TDirectiveNode extends DirectiveNode>(name: string, args?: Record<string, any>, directive?: Maybe<GraphQLDirective>): TDirectiveNode;
export declare function makeDirectiveNodes<TDirectiveNode extends DirectiveNode>(schema: Maybe<GraphQLSchema>, directiveValues: DirectiveAnnotation[]): Array<TDirectiveNode>;

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