@nxworker/workspace
Version:
Nx plugin providing generators for managing workspace files, including the move-file generator for safely moving files between projects while updating all imports
185 lines (184 loc) • 8.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
const _tinybenchutils = require("../../../../../../tools/tinybench-utils");
const _testing = require("@nx/devkit/testing");
const _checkforrelativeimportsinproject = require("../validation/check-for-relative-imports-in-project");
const _checkforunexportedrelativedependencies = require("../validation/check-for-unexported-relative-dependencies");
const _cachedtreeexists = require("../cache/cached-tree-exists");
const _jscodeshiftutils = require("../jscodeshift-utils");
const _treecache = require("../tree-cache");
let cachedTreeExists;
let fileExistenceCache;
let project;
let sourceFiles;
let targetFile;
let tree;
let treeReadCache;
(0, _tinybenchutils.benchmarkSuite)('Validation Operations', {
'Check for relative imports - no imports': {
fn: ()=>{
(0, _checkforrelativeimportsinproject.checkForRelativeImportsInProject)(tree, project, targetFile, ()=>sourceFiles);
},
fnOptions: {
beforeAll () {
sourceFiles = Array.from({
length: 20
}, (_, i)=>i === 0 ? targetFile : `packages/lib1/src/lib/file-${i}.ts`);
// Create files without imports
sourceFiles.forEach((file)=>{
tree.write(file, 'export function test() { return "test"; }');
});
}
}
},
'Check for relative imports - with imports': {
fn: ()=>{
(0, _checkforrelativeimportsinproject.checkForRelativeImportsInProject)(tree, project, targetFile, ()=>sourceFiles);
},
fnOptions: {
beforeAll () {
const importerFile = 'packages/lib1/src/lib/main.ts';
const otherFiles = Array.from({
length: 18
}, (_, i)=>i === 0 ? targetFile : `packages/lib1/src/lib/file-${i}.ts`);
sourceFiles = [
targetFile,
importerFile,
...otherFiles
];
// Create target file
tree.write(targetFile, 'export function helper() { return "hello"; }');
// Create importer file
tree.write(importerFile, "import { helper } from './utils/helper';\nexport const result = helper();");
// Create other files without imports
otherFiles.forEach((file)=>{
if (file !== targetFile) {
tree.write(file, 'export function test() { return "test"; }');
}
});
}
}
},
'Check for relative imports - nested paths': {
fn: ()=>{
(0, _checkforrelativeimportsinproject.checkForRelativeImportsInProject)(tree, project, targetFile, ()=>sourceFiles);
},
fnOptions: {
beforeAll () {
const importerFile = 'packages/lib1/src/lib/features/auth/login.ts';
sourceFiles = [
targetFile,
importerFile
];
// Create target file
tree.write(targetFile, 'export function helper() { return "hello"; }');
// Create importer file with nested relative import
tree.write(importerFile, "import { helper } from '../../utils/helper';\nexport const login = () => helper();");
}
}
},
'Check for relative imports - large project': {
fn: ()=>{
(0, _checkforrelativeimportsinproject.checkForRelativeImportsInProject)(tree, project, targetFile, ()=>sourceFiles);
},
fnOptions: {
beforeAll () {
// Simulate a larger project with 100 files
sourceFiles = Array.from({
length: 100
}, (_, i)=>i === 0 ? targetFile : `packages/lib1/src/lib/file-${i}.ts`);
// Create target file
tree.write(targetFile, 'export function helper() { return "hello"; }');
// Create files, with one file importing the target
sourceFiles.forEach((file, i)=>{
if (file === targetFile) {
return;
}
if (i === 50) {
// One file in the middle imports the target
tree.write(file, "import { helper } from './utils/helper';\nexport const use = helper();");
} else {
tree.write(file, 'export function test() { return "test"; }');
}
});
}
}
},
'Check for unexported dependencies - no imports': {
fn: ()=>{
(0, _checkforunexportedrelativedependencies.checkForUnexportedRelativeDependencies)(tree, targetFile, project, cachedTreeExists);
},
fnOptions: {
beforeAll () {
tree.write('packages/lib1/src/index.ts', '');
tree.write(targetFile, 'export function helper() { return "hello"; }');
}
}
},
'Check for unexported dependencies - multiple imports': {
fn: ()=>{
(0, _checkforunexportedrelativedependencies.checkForUnexportedRelativeDependencies)(tree, 'packages/lib1/src/lib/file.ts', project, cachedTreeExists);
},
fnOptions: {
beforeAll () {
tree.write('packages/lib1/src/index.ts', '');
// Create multiple dependency files
for(let i = 1; i <= 10; i++){
tree.write(`packages/lib1/src/lib/util${i}.ts`, `export function util${i}() { return "util${i}"; }`);
}
// Create file with multiple imports
const imports = Array.from({
length: 10
}, (_, i)=>`import { util${i + 1} } from './util${i + 1}';`).join('\n');
tree.write('packages/lib1/src/lib/file.ts', `${imports}\nexport function file() { return "test"; }`);
}
}
},
'Check for unexported dependencies - large file': {
fn: ()=>{
(0, _checkforunexportedrelativedependencies.checkForUnexportedRelativeDependencies)(tree, 'packages/lib1/src/lib/large-file.ts', project, cachedTreeExists);
},
fnOptions: {
beforeAll () {
tree.write('packages/lib1/src/index.ts', '');
// Create a large number of dependency files
for(let i = 1; i <= 20; i++){
tree.write(`packages/lib1/src/lib/util${i}.ts`, `export function util${i}() { return "util${i}"; }`);
}
// Create a large file with many imports
const imports = Array.from({
length: 20
}, (_, i)=>`import { util${i + 1} } from './util${i + 1}';`).join('\n');
const functions = Array.from({
length: 20
}, (_, i)=>`function func${i}() { return util${i + 1}(); }`).join('\n');
tree.write('packages/lib1/src/lib/large-file.ts', `${imports}\n${functions}\nexport function main() { return "test"; }`);
}
}
}
}, {
setupSuite () {
cachedTreeExists = (tree, filePath)=>(0, _cachedtreeexists.cachedTreeExists)(tree, filePath, fileExistenceCache);
fileExistenceCache = new Map();
project = {
name: 'lib1',
root: 'packages/lib1',
sourceRoot: 'packages/lib1/src',
projectType: 'library'
};
targetFile = 'packages/lib1/src/lib/utils/helper.ts';
treeReadCache = new _treecache.TreeReadCache();
},
setup () {
(0, _jscodeshiftutils.clearCache)();
sourceFiles = [];
tree = (0, _testing.createTreeWithEmptyWorkspace)();
},
teardown () {
fileExistenceCache.clear();
treeReadCache.clear();
}
});
//# sourceMappingURL=validation.bench.js.map