Socket
Socket
Sign inDemoInstall

@ssen/collect-dependencies

Package Overview
Dependencies
Maintainers
1
Versions
55
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ssen/collect-dependencies - npm Package Compare versions

Comparing version 0.2.8 to 0.2.9

121

collectDependencies.js
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -37,65 +46,63 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

};
async function collectDependencies({ rootDir, internalPackages, externalPackages, extensions = exports.collectTypeScript.extensions, excludes = exports.collectTypeScript.excludes, includes = exports.collectTypeScript.includes, compilerOptions = {}, selfNames = new Set(), }) {
compilerOptions = {
allowJs: extensions.some((ext) => /^.js/.test(ext)),
...compilerOptions,
rootDir,
};
const host = typescript_1.default.createCompilerHost(compilerOptions);
const files = host.readDirectory(rootDir, extensions, excludes, includes);
const program = typescript_1.default.createProgram(files, compilerOptions, host);
const importPaths = new Set();
for (const file of files) {
const sourceFile = program.getSourceFile(file);
if (!sourceFile)
continue;
function search(node) {
// import from '?'
if (typescript_1.default.isImportDeclaration(node) && typescript_1.default.isStringLiteralLike(node.moduleSpecifier) && node.moduleSpecifier.text) {
importPaths.add(node.moduleSpecifier.text);
function collectDependencies({ rootDir, internalPackages, externalPackages, extensions = exports.collectTypeScript.extensions, excludes = exports.collectTypeScript.excludes, includes = exports.collectTypeScript.includes, compilerOptions = {}, selfNames = new Set(), }) {
return __awaiter(this, void 0, void 0, function* () {
compilerOptions = Object.assign(Object.assign({ allowJs: extensions.some((ext) => /^.js/.test(ext)) }, compilerOptions), { rootDir });
const host = typescript_1.default.createCompilerHost(compilerOptions);
const files = host.readDirectory(rootDir, extensions, excludes, includes);
const program = typescript_1.default.createProgram(files, compilerOptions, host);
const importPaths = new Set();
for (const file of files) {
const sourceFile = program.getSourceFile(file);
if (!sourceFile)
continue;
function search(node) {
// import from '?'
if (typescript_1.default.isImportDeclaration(node) && typescript_1.default.isStringLiteralLike(node.moduleSpecifier) && node.moduleSpecifier.text) {
importPaths.add(node.moduleSpecifier.text);
}
// import('?')
else if (typescript_1.default.isCallExpression(node) &&
node.expression.kind === typescript_1.default.SyntaxKind.ImportKeyword &&
typescript_1.default.isStringLiteralLike(node.arguments[0])) {
importPaths.add(node.arguments[0].text);
}
// require.resolve('?')
else if (typescript_1.default.isCallExpression(node) &&
typescript_1.default.isPropertyAccessExpression(node.expression) &&
typescript_1.default.isIdentifier(node.expression.expression) &&
node.expression.expression.escapedText === 'require' &&
node.expression.name.escapedText === 'resolve' &&
typescript_1.default.isStringLiteralLike(node.arguments[0])) {
importPaths.add(node.arguments[0].text);
}
// require('?')
else if (typescript_1.default.isCallExpression(node) &&
typescript_1.default.isIdentifier(node.expression) &&
node.expression.escapedText === 'require' &&
typescript_1.default.isStringLiteralLike(node.arguments[0])) {
importPaths.add(node.arguments[0].text);
}
typescript_1.default.forEachChild(node, search);
}
// import('?')
else if (typescript_1.default.isCallExpression(node) &&
node.expression.kind === typescript_1.default.SyntaxKind.ImportKeyword &&
typescript_1.default.isStringLiteralLike(node.arguments[0])) {
importPaths.add(node.arguments[0].text);
}
// require.resolve('?')
else if (typescript_1.default.isCallExpression(node) &&
typescript_1.default.isPropertyAccessExpression(node.expression) &&
typescript_1.default.isIdentifier(node.expression.expression) &&
node.expression.expression.escapedText === 'require' &&
node.expression.name.escapedText === 'resolve' &&
typescript_1.default.isStringLiteralLike(node.arguments[0])) {
importPaths.add(node.arguments[0].text);
}
// require('?')
else if (typescript_1.default.isCallExpression(node) &&
typescript_1.default.isIdentifier(node.expression) &&
node.expression.escapedText === 'require' &&
typescript_1.default.isStringLiteralLike(node.arguments[0])) {
importPaths.add(node.arguments[0].text);
}
typescript_1.default.forEachChild(node, search);
search(sourceFile);
}
search(sourceFile);
}
const imports = {};
for (const importPath of importPaths) {
const packageName = /^@/.test(importPath)
? importPath.split('/').slice(0, 2).join('/')
: importPath.split('/')[0];
if (!imports[packageName] && !selfNames.has(packageName)) {
const internalPackage = internalPackages.get(packageName);
if (internalPackage) {
imports[packageName] = `^${internalPackage.version}`;
const imports = {};
for (const importPath of importPaths) {
const packageName = /^@/.test(importPath)
? importPath.split('/').slice(0, 2).join('/')
: importPath.split('/')[0];
if (!imports[packageName] && !selfNames.has(packageName)) {
const internalPackage = internalPackages.get(packageName);
if (internalPackage) {
imports[packageName] = `^${internalPackage.version}`;
}
else if (externalPackages[packageName]) {
imports[packageName] = externalPackages[packageName];
}
}
else if (externalPackages[packageName]) {
imports[packageName] = externalPackages[packageName];
}
}
}
return imports;
return imports;
});
}
exports.collectDependencies = collectDependencies;
//# sourceMappingURL=collectDependencies.js.map

@@ -14,3 +14,3 @@ {

"name": "@ssen/collect-dependencies",
"version": "0.2.8",
"version": "0.2.9",
"dependencies": {

@@ -17,0 +17,0 @@ "type-fest": "^0.15.0",

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