@onurege3467/zerohelper
Version:
ZeroHelper is a versatile high-performance utility library and database framework for Node.js, fully written in TypeScript.
37 lines (36 loc) • 1.74 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.zpackCommand = void 0;
const commander_1 = require("commander");
const chalk_1 = __importDefault(require("chalk"));
const ora_1 = __importDefault(require("ora"));
const fs_1 = __importDefault(require("fs"));
const config_1 = require("../utils/config");
const config_2 = require("../utils/config");
exports.zpackCommand = new commander_1.Command().name('zpack');
exports.zpackCommand
.command('vacuum')
.description('Compact a ZPack binary file to save disk space')
.argument('<file>', 'ZPack file path')
.action(async (file) => {
const spinner = (0, ora_1.default)(`Vacuuming ${file}...`).start();
const startSize = fs_1.default.existsSync(file) ? fs_1.default.statSync(file).size : 0;
try {
const db = await (0, config_1.getDatabase)('zero.config.ts');
await db.vacuum();
await db.close();
const endSize = fs_1.default.statSync(file).size;
const reduction = startSize > 0 ? ((1 - endSize / startSize) * 100) : 0;
spinner.succeed(chalk_1.default.green(`✅ Vacuum complete for ${file}`));
console.log(chalk_1.default.gray(` Original Size: ${(0, config_2.formatBytes)(startSize)}`));
console.log(chalk_1.default.gray(` New Size: ${(0, config_2.formatBytes)(endSize)}`));
console.log(chalk_1.default.bold.blue(` Efficiency: ${reduction.toFixed(1)}% reduction`));
}
catch (error) {
spinner.fail(chalk_1.default.red(`❌ Vacuum failed: ${error.message}`));
process.exit(1);
}
});