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

ts-import

Package Overview
Dependencies
Maintainers
1
Versions
88
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ts-import - npm Package Compare versions

Comparing version 4.0.0-beta.10 to 5.0.0-beta.0

7

dist/load.interfaces.js

@@ -1,9 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LoadMode = void 0;
var LoadMode;
export var LoadMode;
(function (LoadMode) {
LoadMode["Transpile"] = "transpile";
LoadMode["Compile"] = "compile";
})(LoadMode = exports.LoadMode || (exports.LoadMode = {}));
})(LoadMode = LoadMode || (LoadMode = {}));
//# sourceMappingURL=load.interfaces.js.map

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

import { LoadMode, LoadOptions } from './load.interfaces';
export declare const defaultLoadOptions: {
mode: LoadMode;
allowConfigurationWithComments: boolean;
useCache: boolean;
compiledJsExtension: string;
};
import { LoadOptions } from './load.interfaces.js';
export declare const load: (tsRelativePath: string, options?: LoadOptions) => Promise<any>;
export declare const loadSync: (tsRelativePath: string, options?: LoadOptions) => any;
export * from './load.interfaces';
export * from './load.interfaces.js';

@@ -1,26 +0,20 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadSync = exports.load = exports.defaultLoadOptions = void 0;
const tslib_1 = require("tslib");
const commentParser = require("./modules/comment-parser");
const crossPlatform = require("./modules/cross-platform");
const path = require("node:path");
const utils = require("./utils");
const load_interfaces_1 = require("./load.interfaces");
const options_defaults_1 = require("options-defaults");
const providers_1 = require("./providers/providers");
exports.defaultLoadOptions = {
mode: load_interfaces_1.LoadMode.Transpile,
allowConfigurationWithComments: false,
useCache: true,
compiledJsExtension: `.js`,
};
const load = async (tsRelativePath, options) => {
var _a, _b;
if (options === null || options === void 0 ? void 0 : options.allowConfigurationWithComments) {
import * as commentParser from './modules/comment-parser/index.js';
import * as crossPlatform from './modules/cross-platform/index.js';
import * as path from 'node:path';
import * as utils from './utils/index.js';
import { LoadMode } from './load.interfaces.js';
import { defaults } from 'options-defaults';
import { providersMap } from './providers/providers.js';
export const load = async (tsRelativePath, options) => {
if (options?.allowConfigurationWithComments) {
const commentConfig = await commentParser.getTsImportCommentConfig(tsRelativePath);
options = (0, options_defaults_1.defaults)(options, commentConfig);
options = defaults(options, commentConfig);
}
const loadConfig = (0, options_defaults_1.defaults)(exports.defaultLoadOptions, options);
const provider = providers_1.providersMap[loadConfig.mode];
const loadConfig = defaults({
mode: LoadMode.Transpile,
allowConfigurationWithComments: false,
useCache: true,
compiledJsExtension: `.mjs`,
}, options);
const provider = providersMap[loadConfig.mode];
const config = provider.getConfig(loadConfig);

@@ -39,45 +33,15 @@ const cwd = process.cwd();

if (jsFileExists && !utils.isFileNewer(tsFileExists, jsFileExists)) {
const loaded = await (_a = jsPath, Promise.resolve().then(() => require(_a)));
const loaded = await import(jsPath);
return loaded;
}
}
await provider.load(Object.assign({ tsPath,
jsPath }, config));
const loaded = await (_b = jsPath, Promise.resolve().then(() => require(_b)));
await provider.load({
tsPath,
jsPath,
...config,
});
const loaded = await import(jsPath);
return loaded;
};
exports.load = load;
const loadSync = (tsRelativePath, options) => {
if (options === null || options === void 0 ? void 0 : options.allowConfigurationWithComments) {
const commentConfig = commentParser.getTsImportCommentConfigSync(tsRelativePath);
options = (0, options_defaults_1.defaults)(options, commentConfig);
}
const loadConfig = (0, options_defaults_1.defaults)(exports.defaultLoadOptions, options);
const provider = providers_1.providersMap[loadConfig.mode];
const config = provider.getConfig(loadConfig);
const cwd = process.cwd();
const cacheDir = provider.getCacheDir(config);
const tsPath = path.resolve(cwd, tsRelativePath);
const jsAfterCachePath = crossPlatform.getJsAfterCachePath(tsPath);
const jsPath = path.join(cacheDir, jsAfterCachePath).replace(/\.[^/.]+$/u, loadConfig.compiledJsExtension);
if (loadConfig.useCache) {
const tsFileExists = utils.checkIfFileExistsSync(tsPath);
let jsFileExists;
try {
jsFileExists = utils.checkIfFileExistsSync(jsPath);
}
catch (err) {
}
if (jsFileExists && !utils.isFileNewer(tsFileExists, jsFileExists)) {
const loaded = require(jsPath);
return loaded;
}
}
provider.loadSync(Object.assign({ tsPath,
jsPath }, config));
const loaded = require(jsPath);
return loaded;
};
exports.loadSync = loadSync;
tslib_1.__exportStar(require("./load.interfaces"), exports);
export * from './load.interfaces.js';
//# sourceMappingURL=main.js.map

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTsImportCommentConfigSync = exports.getTsImportCommentConfig = void 0;
const commentParser = require("comment-parser");
const fs = require("node:fs");
const getTsImportCommentConfig = async (tsRelativePath) => {
import * as fs from 'node:fs';
const commentParser = await import('comment-parser');
export const getTsImportCommentConfig = async (tsRelativePath) => {
const tsContent = await fs.promises.readFile(tsRelativePath, `utf-8`);

@@ -22,4 +19,3 @@ const comments = commentParser.parse(tsContent);

};
exports.getTsImportCommentConfig = getTsImportCommentConfig;
const getTsImportCommentConfigSync = (tsRelativePath) => {
export const getTsImportCommentConfigSync = (tsRelativePath) => {
const tsContent = fs.readFileSync(tsRelativePath, `utf-8`);

@@ -40,3 +36,2 @@ const comments = commentParser.parse(tsContent);

};
exports.getTsImportCommentConfigSync = getTsImportCommentConfigSync;
//# sourceMappingURL=get-ts-import-comment-config.js.map

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

export * from './get-ts-import-comment-config';
export * from './get-ts-import-comment-config.js';

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./get-ts-import-comment-config"), exports);
export * from './get-ts-import-comment-config.js';
//# sourceMappingURL=index.js.map

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

import * as tsc from 'typescript';
import tsc from 'typescript';
export interface CompileOptions {

@@ -3,0 +3,0 @@ tsPath: string;

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.compile = void 0;
const tsc = require("typescript");
const compile = (options) => {
import tsc from 'typescript';
export const compile = (options) => {
const program = tsc.createProgram({

@@ -12,3 +9,2 @@ rootNames: [options.tsPath],

};
exports.compile = compile;
//# sourceMappingURL=compile.js.map

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

export * from './compile';
export * from './transpile';
export * from './compile.js';
export * from './transpile.js';

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./compile"), exports);
tslib_1.__exportStar(require("./transpile"), exports);
export * from './compile.js';
export * from './transpile.js';
//# sourceMappingURL=index.js.map

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

import * as tsc from 'typescript';
import tsc from 'typescript';
export interface TranspileOptions {

@@ -3,0 +3,0 @@ tsPath: string;

@@ -1,8 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.transpileSync = exports.transpile = void 0;
const fs = require("node:fs");
const path = require("node:path");
const tsc = require("typescript");
const transpile = async (options) => {
import * as fs from 'node:fs';
import * as path from 'node:path';
import tsc from 'typescript';
export const transpile = async (options) => {
const ts = await fs.promises.readFile(options.tsPath);

@@ -15,4 +12,3 @@ const tsTranspiled = tsc.transpileModule(ts.toString(), options.transpileOptions);

};
exports.transpile = transpile;
const transpileSync = (options) => {
export const transpileSync = (options) => {
const ts = fs.readFileSync(options.tsPath);

@@ -25,3 +21,2 @@ const tsTranspiled = tsc.transpileModule(ts.toString(), options.transpileOptions);

};
exports.transpileSync = transpileSync;
//# sourceMappingURL=transpile.js.map

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getJsAfterCachePath = void 0;
const getJsAfterCachePath = (tsPath) => {
export const getJsAfterCachePath = (tsPath) => {
let jsAfterCachePath = tsPath;

@@ -11,3 +8,2 @@ if (process.platform === `win32`) {

};
exports.getJsAfterCachePath = getJsAfterCachePath;
//# sourceMappingURL=get-js-after-cache-path.js.map

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

export * from './get-js-after-cache-path';
export * from './get-js-after-cache-path.js';

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./get-js-after-cache-path"), exports);
export * from './get-js-after-cache-path.js';
//# sourceMappingURL=index.js.map

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

import { LoadCompileOptions } from '../../load.interfaces';
import { LoadCompileOptions } from '../../load.interfaces.js';
export declare const getCacheDir: (options: LoadCompileOptions[`compileOptions`]) => string | undefined;

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCacheDir = void 0;
const getCacheDir = (options) => {
export const getCacheDir = (options) => {
return options.compilerOptions.outDir;
};
exports.getCacheDir = getCacheDir;
//# sourceMappingURL=get-cache-dir.js.map

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

import * as tsc from 'typescript';
import { LoadCompileOptions } from '../../load.interfaces';
import { LoadCompileOptions } from '../../load.interfaces.js';
import tsc from 'typescript';
export declare const getConfig: (options: LoadCompileOptions) => {

@@ -4,0 +4,0 @@ compilerOptions: tsc.CompilerOptions;

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getConfig = void 0;
const path = require("node:path");
const tsc = require("typescript");
const options_defaults_1 = require("options-defaults");
import * as path from 'node:path';
import { defaults } from 'options-defaults';
import tsc from 'typescript';
const getDefaultCompilerOptions = () => {

@@ -22,10 +19,19 @@ const cwd = process.cwd();

};
const getConfig = (options) => {
export const getConfig = (options) => {
const defaultCompileOptions = {
compilerOptions: Object.assign(Object.assign({}, getDefaultCompilerOptions()), { downlevelIteration: true, emitDecoratorMetadata: true, experimentalDecorators: true, module: tsc.ModuleKind.CommonJS, resolveJsonModule: true, skipLibCheck: true, target: tsc.ScriptTarget.ES2015 }),
compilerOptions: {
...getDefaultCompilerOptions(),
downlevelIteration: true,
emitDecoratorMetadata: true,
experimentalDecorators: true,
module: tsc.ModuleKind.ES2020,
moduleResolution: tsc.ModuleResolutionKind.Node16,
resolveJsonModule: true,
skipLibCheck: true,
target: tsc.ScriptTarget.ES2020,
},
};
const compileOptions = (0, options_defaults_1.defaults)(defaultCompileOptions, options);
const compileOptions = defaults(defaultCompileOptions, options);
return compileOptions;
};
exports.getConfig = getConfig;
//# sourceMappingURL=get-config.js.map

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

export * from './get-cache-dir';
export * from './get-config';
export * from './load';
export * from './load-sync';
export * from './get-cache-dir.js';
export * from './get-config.js';
export * from './load.js';

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./get-cache-dir"), exports);
tslib_1.__exportStar(require("./get-config"), exports);
tslib_1.__exportStar(require("./load"), exports);
tslib_1.__exportStar(require("./load-sync"), exports);
export * from './get-cache-dir.js';
export * from './get-config.js';
export * from './load.js';
//# sourceMappingURL=index.js.map

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

import * as compiler from '../../modules/compiler';
import * as compiler from '../../modules/compiler/index.js';
export declare const load: (options: compiler.CompileOptions) => Promise<void>;

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.load = void 0;
const compiler = require("../../modules/compiler");
const fs = require("node:fs");
const load = async (options) => {
import * as compiler from '../../modules/compiler/index.js';
import * as fs from 'node:fs';
export const load = async (options) => {
compiler.compile(options);

@@ -11,3 +8,2 @@ const jsWithNormalExtensionPath = options.jsPath.replace(/\.[^/.]+$/u, `.js`);

};
exports.load = load;
//# sourceMappingURL=load.js.map

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

import * as compiler from '../modules/compiler';
import { LoadCompileOptions, LoadMode, LoadOptions, LoadTranspileOptions } from '../load.interfaces';
import * as compiler from '../modules/compiler/index.js';
import { LoadCompileOptions, LoadMode, LoadOptions, LoadTranspileOptions } from '../load.interfaces.js';
export interface Providers {

@@ -7,4 +7,3 @@ getCacheDir: (options: LoadCompileOptions[`compileOptions`] | LoadTranspileOptions[`transpileOptions`]) => string;

load: (options: compiler.CompileOptions | compiler.TranspileOptions) => Promise<void>;
loadSync: (options: compiler.CompileOptions | compiler.TranspileOptions) => void;
}
export declare const providersMap: Record<LoadMode, Providers>;

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.providersMap = void 0;
const compileProviders = require("./compile");
const transpileProviders = require("./transpile");
exports.providersMap = {
import * as compileProviders from './compile/index.js';
import * as transpileProviders from './transpile/index.js';
export const providersMap = {
compile: compileProviders,

@@ -8,0 +5,0 @@ transpile: transpileProviders,

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

import { LoadTranspileOptions } from '../../load.interfaces';
import { LoadTranspileOptions } from '../../load.interfaces.js';
export declare const getCacheDir: (options: LoadTranspileOptions[`transpileOptions`]) => string;

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCacheDir = void 0;
const getCacheDir = (options) => {
export const getCacheDir = (options) => {
return options.cache.dir;
};
exports.getCacheDir = getCacheDir;
//# sourceMappingURL=get-cache-dir.js.map

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

import { LoadTranspileOptions } from '../../load.interfaces';
import { LoadTranspileOptions } from '../../load.interfaces.js';
import tsc from 'typescript';
export declare const getConfig: (options: LoadTranspileOptions) => {

@@ -6,3 +7,3 @@ cache: {

};
transpileOptions: import("typescript").TranspileOptions;
transpileOptions: tsc.TranspileOptions;
};

@@ -1,7 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getConfig = void 0;
const path = require("node:path");
const options_defaults_1 = require("options-defaults");
const getConfig = (options) => {
import * as path from 'node:path';
import { defaults } from 'options-defaults';
import tsc from 'typescript';
export const getConfig = (options) => {
const cwd = process.cwd();

@@ -12,3 +10,9 @@ const defaultTranspileOptions = {

},
transpileOptions: {},
transpileOptions: {
compilerOptions: {
module: tsc.ModuleKind.ES2020,
moduleResolution: tsc.ModuleResolutionKind.Node16,
target: tsc.ScriptTarget.ES2020,
},
},
};

@@ -19,6 +23,5 @@ if (process.platform === `win32`) {

}
const transpileOptions = (0, options_defaults_1.defaults)(defaultTranspileOptions, options.transpileOptions);
const transpileOptions = defaults(defaultTranspileOptions, options.transpileOptions);
return transpileOptions;
};
exports.getConfig = getConfig;
//# sourceMappingURL=get-config.js.map

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

export * from './get-cache-dir';
export * from './get-config';
export * from './load';
export * from './load-sync';
export * from './get-cache-dir.js';
export * from './get-config.js';
export * from './load.js';

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./get-cache-dir"), exports);
tslib_1.__exportStar(require("./get-config"), exports);
tslib_1.__exportStar(require("./load"), exports);
tslib_1.__exportStar(require("./load-sync"), exports);
export * from './get-cache-dir.js';
export * from './get-config.js';
export * from './load.js';
//# sourceMappingURL=index.js.map

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

import * as compiler from '../../modules/compiler';
import * as compiler from '../../modules/compiler/index.js';
export declare const load: (options: compiler.TranspileOptions) => Promise<void>;

@@ -1,9 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.load = void 0;
const compiler = require("../../modules/compiler");
const load = async (options) => {
import * as compiler from '../../modules/compiler/index.js';
export const load = async (options) => {
return compiler.transpile(options);
};
exports.load = load;
//# sourceMappingURL=load.js.map

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

/// <reference types="node" />
/// <reference types="node" resolution-mode="require"/>
import * as fs from 'node:fs';
export declare const checkIfFileExists: (filePath: string) => Promise<fs.Stats>;
export declare const checkIfFileExistsSync: (filePath: string) => fs.Stats;

@@ -1,13 +0,8 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkIfFileExistsSync = exports.checkIfFileExists = void 0;
const fs = require("node:fs");
const checkIfFileExists = async (filePath) => {
import * as fs from 'node:fs';
export const checkIfFileExists = async (filePath) => {
return fs.promises.stat(filePath);
};
exports.checkIfFileExists = checkIfFileExists;
const checkIfFileExistsSync = (filePath) => {
export const checkIfFileExistsSync = (filePath) => {
return fs.statSync(filePath);
};
exports.checkIfFileExistsSync = checkIfFileExistsSync;
//# sourceMappingURL=check-if-file-exists.js.map

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

export * from './check-if-file-exists';
export * from './is-file-newer';
export * from './check-if-file-exists.js';
export * from './is-file-newer.js';

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
tslib_1.__exportStar(require("./check-if-file-exists"), exports);
tslib_1.__exportStar(require("./is-file-newer"), exports);
export * from './check-if-file-exists.js';
export * from './is-file-newer.js';
//# sourceMappingURL=index.js.map

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

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isFileNewer = void 0;
const isFileNewer = (file1, file2) => {
export const isFileNewer = (file1, file2) => {
return file1.mtimeMs > file2.mtimeMs;
};
exports.isFileNewer = isFileNewer;
//# sourceMappingURL=is-file-newer.js.map
{
"name": "ts-import",
"version": "4.0.0-beta.10",
"version": "5.0.0-beta.0",
"description": "Import (compile and cache on the fly) TypeScript files dynamically with ease.",

@@ -20,23 +20,32 @@ "license": "MIT",

"types": "dist/main.d.ts",
"type": "module",
"dependencies": {
"comment-parser": "1.3.1",
"options-defaults": "2.0.40",
"tslib": "2.4.1"
"tslib": "2.5.0"
},
"devDependencies": {
"@jest/globals": "29.3.1",
"@radrat/cli": "3.0.0-beta.6",
"@types/jest": "29.2.3",
"@types/node": "18.11.9",
"jest": "29.3.1",
"ts-jest": "29.0.3",
"typescript": "4.9.3"
"@radrat/cli": "3.0.0-beta.9",
"@types/node": "18.15.11",
"ava": "5.2.0",
"typescript": "5.0.4"
},
"peerDependencies": {
"typescript": "4"
"typescript": "5"
},
"engines": {
"node": ">=14.14.0"
"node": ">=18"
},
"gitHead": "5f409f3708573a20e3ce2e5088531dcd8951df7b"
"ava": {
"extensions": {
"ts": "module"
},
"files": [
"tests/**/*",
"!tests/assets"
],
"nodeArguments": [
"--loader=ts-node/esm"
]
}
}
<p align="center">
<h1>ts-import</h1>
<div>Importing TypeScript files dynamically into JavaScript requires additional compilation step, which is troublesome to write for many. Popular **typescript-require** package seems to be obsolete and doesn't allow much customization. Typed alternative to https://github.com/theblacksmith/typescript-require written in TypeScript.</div>
<div>Importing TypeScript files dynamically into JavaScript requires additional compilation step, which is troublesome to write for many. Popular `typescript-require` package seems to be obsolete and doesn't allow much customization. Typed alternative to https://github.com/theblacksmith/typescript-require written in TypeScript.</div>
</p>
[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/radarsu)
## Table of contents
1. [Getting Started](#getting-started)
- [Table of contents](#table-of-contents)
- [Features](#features)
- [Install](#install)
- [Usage](#usage)
- [allowConfigurationWithComments](#allowconfigurationwithcomments)
2. [Usage](#usage)
## Features
3. [Features](#features)
- **Asynchronous and synchronous version** - uses **import** for async and **require** for sync.
- **Caches JavaScript** files into directory inside **.cache/ts-import**.
- **Fast** - I've benchmarked ways to compare detecting file changes with **fs** module and checking mtimeMs turned out to be fastest (https://jsperf.com/fs-stat-mtime-vs-mtimems). Also, compilation in versions 3+ is approximately 10x faster than in version 2.
- **Few dependencies** - uses only `comment-parser` and my tiny utility package `options-defaults`.
- **Highly flexible and configurable** - all compilerOptions are available under transpileOptions parameter.
- **No interference** - doesn't interfere with native import, require etc. changing their behavior or impacting their performance.
## Getting Started
## Install
`npm i ts-import`
`npm i ts-import@4` - CJS
`npm i ts-import@5` - ESM

@@ -28,2 +40,4 @@ ## Usage

});
// Only available in version 4.
const syncResult = tsImport.loadSync(filePath);

@@ -52,11 +66,2 @@ };

export { result };
```
## Features
- **Asynchronous and synchronous version** - uses **import** for async and **require** for sync.
- **Caches JavaScript** files into directory inside **.cache/ts-import**.
- **Fast** - I've benchmarked ways to compare detecting file changes with **fs** module and checking mtimeMs turned out to be fastest (https://jsperf.com/fs-stat-mtime-vs-mtimems). Also, compilation in version 3 is approximately 10x faster than in version 2.
- **Highly flexible and configurable** - all compilerOptions are available under transpileOptions parameter.
- **No interference** - doesn't interfere with native import, require etc. changing their behavior or impacting their performance.
- **Only 1 dependency** - uses only 1 tiny package maintained by myself (which has 0 dependencies).
```

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