UNPKG

@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
"use strict"; 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