UNPKG

ts-minifer

Version:

Advanced TypeScript code minification and compression tool

130 lines 5.07 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); const fs = __importStar(require("fs")); const path = __importStar(require("path")); const compressor_1 = require("../compressor"); const types_1 = require("../types"); describe('TypeScriptCompressor', () => { let compressor; const testDir = path.join(__dirname, 'test-files'); beforeEach(() => { compressor = new compressor_1.TypeScriptCompressor(false); // Ensure test directory exists if (!fs.existsSync(testDir)) { fs.mkdirSync(testDir, { recursive: true }); } }); afterEach(() => { // Clean up test files fs.rmSync(testDir, { recursive: true, force: true }); }); const createTestFile = (filename, content) => { fs.writeFileSync(path.join(testDir, filename), content); }; test('compresses single file with minimal settings', () => { createTestFile('sample.ts', ` // This is a comment const longVariableName = 'Hello World'; function longFunctionName() { console.log(longVariableName); } longFunctionName(); `); const result = compressor.compressFiles([testDir], { level: types_1.CompressionLevel.MINIMAL, outputFormat: 'single' }); expect(result.outputFiles.length).toBe(1); expect(result.stats.compressionRatio).toBeGreaterThan(0); const compressedContent = fs.readFileSync(result.outputFiles[0], 'utf-8'); expect(compressedContent).not.toContain('// This is a comment'); }); test('compresses multiple files with aggressive settings', () => { createTestFile('file1.ts', ` const complexVariableName = 'First File'; export function complexFunctionName() { return complexVariableName; } `); createTestFile('file2.ts', ` const anotherComplexVariable = 'Second File'; export function anotherComplexFunction() { return anotherComplexVariable; } `); const result = compressor.compressFiles([testDir], { level: types_1.CompressionLevel.AGGRESSIVE, outputFormat: 'multiple', generateSourceMaps: true }); expect(result.outputFiles.length).toBe(2); expect(result.sourceMapFiles?.length).toBe(2); expect(result.stats.compressionRatio).toBeGreaterThan(0); }); test('handles source map generation', () => { createTestFile('sourcemap.ts', ` function originalFunction() { const originalVariable = 'Test'; return originalVariable; } `); const result = compressor.compressFiles([testDir], { level: types_1.CompressionLevel.MINIMAL, outputFormat: 'single', generateSourceMaps: true }); expect(result.sourceMapFiles?.length).toBe(1); const sourceMapContent = fs.readFileSync(result.sourceMapFiles[0], 'utf-8'); expect(sourceMapContent).toBeTruthy(); }); test('excludes specified files', () => { createTestFile('include.ts', ` const includeVar = 'Include Me'; `); createTestFile('exclude.ts', ` const excludeVar = 'Exclude Me'; `); const result = compressor.compressFiles([testDir], { level: types_1.CompressionLevel.MINIMAL, outputFormat: 'multiple', excludePatterns: ['**/exclude.ts'] }); const outputFileNames = result.outputFiles.map(f => path.basename(f)); expect(outputFileNames).toContain('include.ts'); expect(outputFileNames).not.toContain('exclude.ts'); }); }); //# sourceMappingURL=compressor.test.js.map