@ssen/collect-dependencies
Advanced tools
Comparing version 0.2.8 to 0.2.9
"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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
16681
222