Socket
Socket
Sign inDemoInstall

@web/dev-server-core

Package Overview
Dependencies
Maintainers
7
Versions
83
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@web/dev-server-core - npm Package Compare versions

Comparing version 0.5.0 to 0.5.1

6

dist/dom5/index.js
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {

@@ -6,0 +10,0 @@ if (k2 === undefined) k2 = k;

6

dist/dom5/modification.js

@@ -69,3 +69,3 @@ "use strict";

node.parentNode = undefined;
const clone = clone_1.default(node);
const clone = (0, clone_1.default)(node);
node.parentNode = parent;

@@ -87,3 +87,3 @@ return clone;

if (newNode) {
if (predicates_1.isDocumentFragment(newNode)) {
if ((0, predicates_1.isDocumentFragment)(newNode)) {
if (newNode.childNodes) {

@@ -160,3 +160,3 @@ newNodes = Array.from(newNode.childNodes);

function removeFakeRootElements(ast) {
const injectedNodes = walking_1.queryAll(ast, predicates_1.predicates.AND(node => !node.__location, predicates_1.predicates.hasMatchingTagName(/^(html|head|body)$/i)), undefined,
const injectedNodes = (0, walking_1.queryAll)(ast, predicates_1.predicates.AND(node => !node.__location, predicates_1.predicates.hasMatchingTagName(/^(html|head|body)$/i)), undefined,
// Don't descend past 3 levels 'document > html > head|body'

@@ -163,0 +163,0 @@ node => (node.parentNode && node.parentNode.parentNode ? undefined : node.childNodes));

@@ -21,3 +21,3 @@ /**

declare function hasTextValue(value: string): Predicate;
export declare type Predicate = (node: any) => boolean;
export type Predicate = (node: any) => boolean;
/**

@@ -24,0 +24,0 @@ * OR an array of predicates

@@ -27,3 +27,3 @@ "use strict";

return function (node) {
return util_1.getTextContent(node) === value;
return (0, util_1.getTextContent)(node) === value;
};

@@ -85,3 +85,3 @@ }

return function (node) {
return util_1.getAttributeIndex(node, attr) > -1;
return (0, util_1.getAttributeIndex)(node, attr) > -1;
};

@@ -91,3 +91,3 @@ }

return function (node) {
return util_1.getAttribute(node, attr) === value;
return (0, util_1.getAttribute)(node, attr) === value;
};

@@ -122,3 +122,3 @@ }

return function (element) {
const attributeValue = util_1.getAttribute(element, name);
const attributeValue = (0, util_1.getAttribute)(element, name);
if (typeof attributeValue !== 'string') {

@@ -125,0 +125,0 @@ return false;

@@ -44,4 +44,4 @@ /**

export declare function setTextContent(node: any, value: string): void;
export declare type GetChildNodes = (node: any) => Node[] | undefined;
export type GetChildNodes = (node: any) => Node[] | undefined;
export declare const defaultChildNodes: (node: any) => any;
//# sourceMappingURL=util.d.ts.map

@@ -26,9 +26,9 @@ "use strict";

function getTextContent(node) {
if (predicates_1.isCommentNode(node)) {
if ((0, predicates_1.isCommentNode)(node)) {
return node.data || '';
}
if (predicates_1.isTextNode(node)) {
if ((0, predicates_1.isTextNode)(node)) {
return node.value || '';
}
const subtree = walking_1.nodeWalkAll(node, predicates_1.isTextNode);
const subtree = (0, walking_1.nodeWalkAll)(node, predicates_1.isTextNode);
return subtree.map(getTextContent).join('');

@@ -107,3 +107,3 @@ }

function normalize(node) {
if (!(predicates_1.isElement(node) || predicates_1.isDocument(node) || predicates_1.isDocumentFragment(node))) {
if (!((0, predicates_1.isElement)(node) || (0, predicates_1.isDocument)(node) || (0, predicates_1.isDocumentFragment)(node))) {
return;

@@ -117,3 +117,3 @@ }

n = node.childNodes[i];
if (predicates_1.isTextNode(n)) {
if ((0, predicates_1.isTextNode)(n)) {
if (textRangeStart === -1) {

@@ -145,6 +145,6 @@ textRangeStart = i;

function setTextContent(node, value) {
if (predicates_1.isCommentNode(node)) {
if ((0, predicates_1.isCommentNode)(node)) {
node.data = value;
}
else if (predicates_1.isTextNode(node)) {
else if ((0, predicates_1.isTextNode)(node)) {
node.value = value;

@@ -151,0 +151,0 @@ }

@@ -17,3 +17,7 @@ "use strict";

if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {

@@ -20,0 +24,0 @@ if (k2 === undefined) k2 = k;

@@ -16,3 +16,3 @@ "use strict";

const relativeAppIndex = path_1.default.relative(rootDir, resolvedAppIndex);
const appIndexBrowserPath = `/${utils_1.toBrowserPath(relativeAppIndex)}`;
const appIndexBrowserPath = `/${(0, utils_1.toBrowserPath)(relativeAppIndex)}`;
const appIndexBrowserPathPrefix = path_1.default.dirname(appIndexBrowserPath);

@@ -19,0 +19,0 @@ return (ctx, next) => {

@@ -11,3 +11,3 @@ "use strict";

const utils_1 = require("../utils");
const fsStat = util_1.promisify(fs_1.default.stat);
const fsStat = (0, util_1.promisify)(fs_1.default.stat);
async function fileExists(filePath) {

@@ -14,0 +14,0 @@ try {

@@ -40,3 +40,3 @@ "use strict";

// ensure response body is turned into a string or buffer
await utils_1.getResponseBody(context);
await (0, utils_1.getResponseBody)(context);
let disableCache = false;

@@ -67,8 +67,8 @@ let transformedCode = false;

logger.debug(`Added cache key "${cacheKey}" to plugin transform cache`);
const filePath = utils_1.getRequestFilePath(context.url, config.rootDir);
const filePath = (0, utils_1.getRequestFilePath)(context.url, config.rootDir);
cache.set(filePath, context.body, context.response.headers, cacheKey);
}
}
catch (error) {
if (error instanceof utils_1.RequestCancelledError) {
catch (e) {
if (e instanceof utils_1.RequestCancelledError) {
return undefined;

@@ -78,2 +78,3 @@ }

context.status = 500;
const error = e;
if (error.name === 'PluginSyntaxError') {

@@ -80,0 +81,0 @@ logger.logSyntaxError(error);

@@ -26,5 +26,5 @@ "use strict";

const serveCustomRootDirMiddleware = async (ctx, next) => {
if (utils_1.isOutsideRootDir(ctx.path)) {
const { normalizedPath, newRootDir } = utils_1.resolvePathOutsideRootDir(ctx.path, rootDir);
await koa_send_1.default(ctx, normalizedPath, Object.assign(Object.assign({}, koaStaticOptions), { root: newRootDir }));
if ((0, utils_1.isOutsideRootDir)(ctx.path)) {
const { normalizedPath, newRootDir } = (0, utils_1.resolvePathOutsideRootDir)(ctx.path, rootDir);
await (0, koa_send_1.default)(ctx, normalizedPath, Object.assign(Object.assign({}, koaStaticOptions), { root: newRootDir }));
return;

@@ -35,5 +35,5 @@ }

// serve static files from the regular root dir
return [serveCustomRootDirMiddleware, koa_static_1.default(rootDir, koaStaticOptions)];
return [serveCustomRootDirMiddleware, (0, koa_static_1.default)(rootDir, koaStaticOptions)];
}
exports.serveFilesMiddleware = serveFilesMiddleware;
//# sourceMappingURL=serveFilesMiddleware.js.map

@@ -17,3 +17,3 @@ "use strict";

if (ctx.response.status !== 404) {
let filePath = utils_1.getRequestFilePath(ctx.url, rootDir);
let filePath = (0, utils_1.getRequestFilePath)(ctx.url, rootDir);
// if the request ends with a / it might be an index.html, check if it exists

@@ -20,0 +20,0 @@ // and watch it

@@ -11,4 +11,4 @@ "use strict";

function createMatcher(rootDir, pattern) {
const resolvedPattern = !path_1.isAbsolute(pattern) && !pattern.startsWith('*') ? path_1.posix.join(rootDir, pattern) : pattern;
return picomatch_1.default(resolvedPattern, { dot: true });
const resolvedPattern = !(0, path_1.isAbsolute)(pattern) && !pattern.startsWith('*') ? path_1.posix.join(rootDir, pattern) : pattern;
return (0, picomatch_1.default)(resolvedPattern, { dot: true });
}

@@ -28,3 +28,3 @@ function mimeTypesPlugin(mappings) {

resolveMimeType(context) {
const filePath = utils_1.getRequestFilePath(context.url, rootDir);
const filePath = (0, utils_1.getRequestFilePath)(context.url, rootDir);
for (const matcher of matchers) {

@@ -31,0 +31,0 @@ if (matcher.fn(filePath)) {

@@ -8,3 +8,3 @@ /// <reference types="node" />

import { WebSocketsManager } from '../web-sockets/WebSocketsManager';
export declare type ServeResult = void | string | {
export type ServeResult = void | string | {
body: string;

@@ -14,3 +14,3 @@ type?: string;

};
export declare type TransformResult = void | string | {
export type TransformResult = void | string | {
body?: string;

@@ -20,6 +20,6 @@ headers?: Record<string, string>;

};
export declare type ResolveResult = void | string | {
export type ResolveResult = void | string | {
id?: string;
};
export declare type ResolveMimeTypeResult = void | string | {
export type ResolveMimeTypeResult = void | string | {
type?: string;

@@ -26,0 +26,0 @@ };

import { Plugin } from './Plugin';
import { Logger } from '../logger/Logger';
export declare type ResolveImport = (source: string, code: string, line: number, column: number) => string | undefined | Promise<string | undefined>;
export type ResolveImport = (source: string, code: string, line: number, column: number) => string | undefined | Promise<string | undefined>;
export declare function transformImports(code: string, filePath: string, resolveImport: ResolveImport): Promise<string>;
export declare function transformModuleImportsPlugin(logger: Logger, plugins: Plugin[], rootDir: string): Plugin;
//# sourceMappingURL=transformModuleImportsPlugin.d.ts.map

@@ -77,3 +77,3 @@ "use strict";

try {
const parseResult = await es_module_lexer_1.parse(code, filePath);
const parseResult = await (0, es_module_lexer_1.parse)(code, filePath);
imports = parseResult[0];

@@ -83,3 +83,4 @@ }

if (typeof error.idx === 'number') {
throw new PluginSyntaxError_1.PluginSyntaxError('Syntax error', filePath, code, code.slice(0, error.idx).split('\n').length, error.idx - code.lastIndexOf('\n', error.idx - 1));
const lexerError = error;
throw new PluginSyntaxError_1.PluginSyntaxError('Syntax error', filePath, code, code.slice(0, lexerError.idx).split('\n').length, lexerError.idx - code.lastIndexOf('\n', lexerError.idx - 1));
}

@@ -104,3 +105,3 @@ throw error;

// dynamic import
const { importString, importSpecifier, stringLiteral, concatenatedString, dynamicStart, dynamicEnd, } = parseDynamicImport_1.parseDynamicImport(code, start, end);
const { importString, importSpecifier, stringLiteral, concatenatedString, dynamicStart, dynamicEnd, } = (0, parseDynamicImport_1.parseDynamicImport)(code, start, end);
const lines = code.slice(0, dynamicStart).split('\n');

@@ -128,3 +129,3 @@ const line = lines.length;

async function transformModuleImportsWithPlugins(logger, context, jsCode, rootDir, resolvePlugins) {
const filePath = path_1.default.join(rootDir, utils_1.toFilePath(context.path));
const filePath = path_1.default.join(rootDir, (0, utils_1.toFilePath)(context.path));
async function resolveImport(source, code, column, line) {

@@ -182,10 +183,10 @@ var _a;

if (context.response.is('html') && typeof context.body === 'string') {
const documentAst = parse5_1.parse(context.body);
const inlineModuleNodes = dom5_1.queryAll(documentAst, dom5_1.predicates.AND(dom5_1.predicates.hasTagName('script'), dom5_1.predicates.hasAttrValue('type', 'module'), dom5_1.predicates.NOT(dom5_1.predicates.hasAttr('src'))));
const documentAst = (0, parse5_1.parse)(context.body);
const inlineModuleNodes = (0, dom5_1.queryAll)(documentAst, dom5_1.predicates.AND(dom5_1.predicates.hasTagName('script'), dom5_1.predicates.hasAttrValue('type', 'module'), dom5_1.predicates.NOT(dom5_1.predicates.hasAttr('src'))));
let transformed = false;
for (const node of inlineModuleNodes) {
const code = dom5_1.getTextContent(node);
const code = (0, dom5_1.getTextContent)(node);
const resolvedCode = await transformModuleImportsWithPlugins(logger, context, code, rootDir, importPlugins);
if (code !== resolvedCode) {
dom5_1.setTextContent(node, resolvedCode);
(0, dom5_1.setTextContent)(node, resolvedCode);
transformed = true;

@@ -195,3 +196,3 @@ }

if (transformed) {
return { body: parse5_1.serialize(documentAst) };
return { body: (0, parse5_1.serialize)(documentAst) };
}

@@ -198,0 +199,0 @@ }

@@ -13,10 +13,10 @@ "use strict";

if (config.mimeTypes && Object.keys(config.mimeTypes).length > 0) {
config.plugins.unshift(mimeTypesPlugin_1.mimeTypesPlugin(config.mimeTypes));
config.plugins.unshift((0, mimeTypesPlugin_1.mimeTypesPlugin)(config.mimeTypes));
}
if (config.injectWebSocket && ((_a = config.plugins) === null || _a === void 0 ? void 0 : _a.some(pl => pl.injectWebSocket))) {
config.plugins.unshift(webSocketsPlugin_1.webSocketsPlugin());
config.plugins.unshift((0, webSocketsPlugin_1.webSocketsPlugin)());
}
if ((_b = config.plugins) === null || _b === void 0 ? void 0 : _b.some(pl => 'resolveImport' in pl || 'transformImport' in pl)) {
// transform module imports must happen after all other plugins did their regular transforms
config.plugins.push(transformModuleImportsPlugin_1.transformModuleImportsPlugin(logger, config.plugins, config.rootDir));
config.plugins.push((0, transformModuleImportsPlugin_1.transformModuleImportsPlugin)(logger, config.plugins, config.rootDir));
}

@@ -23,0 +23,0 @@ }

@@ -31,3 +31,3 @@ "use strict";

if (config.basePath) {
middlewares.push(basePathMiddleware_1.basePathMiddleware(config.basePath));
middlewares.push((0, basePathMiddleware_1.basePathMiddleware)(config.basePath));
}

@@ -40,18 +40,18 @@ // adds custom user's middlewares

// watch files that are served
middlewares.push(watchServedFilesMiddleware_1.watchServedFilesMiddleware(fileWatcher, config.rootDir));
middlewares.push((0, watchServedFilesMiddleware_1.watchServedFilesMiddleware)(fileWatcher, config.rootDir));
}
// serves 304 responses if resource hasn't changed
middlewares.push(etagCacheMiddleware_1.etagCacheMiddleware());
middlewares.push((0, etagCacheMiddleware_1.etagCacheMiddleware)());
// adds etag headers for caching
middlewares.push(koa_etag_1.default());
middlewares.push((0, koa_etag_1.default)());
// serves index.html for non-file requests for SPA routing
if (config.appIndex) {
middlewares.push(historyApiFallbackMiddleware_1.historyApiFallbackMiddleware(config.appIndex, config.rootDir, logger));
middlewares.push((0, historyApiFallbackMiddleware_1.historyApiFallbackMiddleware)(config.appIndex, config.rootDir, logger));
}
const plugins = (_b = config.plugins) !== null && _b !== void 0 ? _b : [];
middlewares.push(pluginFileParsedMiddleware_1.pluginFileParsedMiddleware(plugins));
middlewares.push(pluginTransformMiddleware_1.pluginTransformMiddleware(logger, config, fileWatcher));
middlewares.push(pluginMimeTypeMiddleware_1.pluginMimeTypeMiddleware(logger, plugins));
middlewares.push(pluginServeMiddleware_1.pluginServeMiddleware(logger, plugins));
middlewares.push(...serveFilesMiddleware_1.serveFilesMiddleware(config.rootDir));
middlewares.push((0, pluginFileParsedMiddleware_1.pluginFileParsedMiddleware)(plugins));
middlewares.push((0, pluginTransformMiddleware_1.pluginTransformMiddleware)(logger, config, fileWatcher));
middlewares.push((0, pluginMimeTypeMiddleware_1.pluginMimeTypeMiddleware)(logger, plugins));
middlewares.push((0, pluginServeMiddleware_1.pluginServeMiddleware)(logger, plugins));
middlewares.push(...(0, serveFilesMiddleware_1.serveFilesMiddleware)(config.rootDir));
return middlewares;

@@ -58,0 +58,0 @@ }

@@ -38,3 +38,3 @@ "use strict";

});
addPlugins_1.addPlugins(logger, cfg);
(0, addPlugins_1.addPlugins)(logger, cfg);
// special case the legacy plugin, if it is given make sure the resolve module imports plugin

@@ -51,3 +51,3 @@ // runs before the legacy plugin because it compiles away module syntax. ideally we have a

}
const middleware = createMiddleware_1.createMiddleware(cfg, logger, fileWatcher);
const middleware = (0, createMiddleware_1.createMiddleware)(cfg, logger, fileWatcher);
for (const m of middleware) {

@@ -54,0 +54,0 @@ app.use(m);

@@ -20,4 +20,4 @@ /// <reference types="node" />

private closeServer;
stop(): Promise<void[] | undefined>;
stop(): Promise<[void, ...(void | undefined)[], void | undefined] | undefined>;
}
//# sourceMappingURL=DevServer.d.ts.map

@@ -22,3 +22,3 @@ "use strict";

throw new Error('Missing logger.');
const createResult = createServer_1.createServer(this.logger, this.config, this.fileWatcher);
const createResult = (0, createServer_1.createServer)(this.logger, this.config, this.fileWatcher);
this.koaApp = createResult.app;

@@ -37,3 +37,3 @@ this.server = createResult.server;

this.started = true;
await util_1.promisify(this.server.listen).bind(this.server)({
await (0, util_1.promisify)(this.server.listen).bind(this.server)({
port: this.config.port,

@@ -40,0 +40,0 @@ // in case of localhost the host should be undefined, otherwise some browsers

import { Middleware } from 'koa';
import { Plugin } from '../plugins/Plugin';
export declare type MimeTypeMappings = Record<string, string>;
export type MimeTypeMappings = Record<string, string>;
export interface DevServerCoreConfig {

@@ -5,0 +5,0 @@ /**

@@ -50,4 +50,4 @@ "use strict";

async function fetchText(url, init) {
const response = await node_fetch_1.default(url, init);
chai_1.expect(response.status).to.equal(200);
const response = await (0, node_fetch_1.default)(url, init);
(0, chai_1.expect)(response.status).to.equal(200);
return response.text();

@@ -58,3 +58,3 @@ }

if (!text.includes(expected)) {
throw new Error(nanocolors_1.red(`Expected "${nanocolors_1.yellow(expected)}" in string: \n\n${nanocolors_1.green(text)}`));
throw new Error((0, nanocolors_1.red)(`Expected "${(0, nanocolors_1.yellow)(expected)}" in string: \n\n${(0, nanocolors_1.green)(text)}`));
}

@@ -61,0 +61,0 @@ }

@@ -48,3 +48,3 @@ "use strict";

const contentLength = Number(ctx.response.get('content-length'));
const canStringify = !(await isbinaryfile_1.isBinaryFile(ctx.body, contentLength));
const canStringify = !(await (0, isbinaryfile_1.isBinaryFile)(ctx.body, contentLength));
if (requestCanceled) {

@@ -61,3 +61,3 @@ throw new RequestCancelledError();

}
if (is_stream_1.default(ctx.body)) {
if ((0, is_stream_1.default)(ctx.body)) {
// a stream can only be read once, so after reading it assign

@@ -64,0 +64,0 @@ // the string response to the body so that it can be accessed

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

declare type EventMap = Record<string, any>;
declare type EventKey<T extends EventMap> = string & keyof T;
declare type EventReceiver<T> = (params: T) => void;
type EventMap = Record<string, any>;
type EventKey<T extends EventMap> = string & keyof T;
type EventReceiver<T> = (params: T) => void;
interface Emitter<T extends EventMap> {

@@ -5,0 +5,0 @@ on<K extends EventKey<T>>(eventName: K, fn: EventReceiver<T[K]>): void;

@@ -7,3 +7,3 @@ /// <reference types="node" />

export declare const NAME_WEB_SOCKET_API = "wds";
export declare type WebSocketData = {
export type WebSocketData = {
type: string;

@@ -10,0 +10,0 @@ } & Record<string, unknown>;

@@ -255,6 +255,6 @@ "use strict";

}
if (parse5_utils_1.isHtmlFragment(context.body)) {
if ((0, parse5_utils_1.isHtmlFragment)(context.body)) {
return;
}
return parse5_utils_1.appendToDocument(context.body, exports.webSocketScript);
return (0, parse5_utils_1.appendToDocument)(context.body, exports.webSocketScript);
}

@@ -261,0 +261,0 @@ },

{
"name": "@web/dev-server-core",
"version": "0.5.0",
"version": "0.5.1",
"publishConfig": {

@@ -5,0 +5,0 @@ "access": "public"

@@ -8,2 +8,3 @@ import { FSWatcher } from 'chokidar';

import { Logger } from '../logger/Logger';
import type { PluginSyntaxError } from '../logger/PluginSyntaxError';

@@ -88,4 +89,4 @@ /**

}
} catch (error) {
if (error instanceof RequestCancelledError) {
} catch (e) {
if (e instanceof RequestCancelledError) {
return undefined;

@@ -96,4 +97,6 @@ }

const error = e as NodeJS.ErrnoException;
if (error.name === 'PluginSyntaxError') {
logger.logSyntaxError(error);
logger.logSyntaxError(error as PluginSyntaxError);
return;

@@ -100,0 +103,0 @@ }

@@ -120,3 +120,4 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */

} catch (error) {
if (typeof error.idx === 'number') {
if (typeof (error as Error & { idx: number }).idx === 'number') {
const lexerError = error as Error & { idx: number };
throw new PluginSyntaxError(

@@ -126,4 +127,4 @@ 'Syntax error',

code,
code.slice(0, error.idx).split('\n').length,
error.idx - code.lastIndexOf('\n', error.idx - 1),
code.slice(0, lexerError.idx).split('\n').length,
lexerError.idx - code.lastIndexOf('\n', lexerError.idx - 1),
);

@@ -130,0 +131,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

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

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

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

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

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

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

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

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

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