HEX
Server: LiteSpeed
System: Linux s3604.bom1.stableserver.net 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User: dmstechonline (1480)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/dmstechonline/whatsapp.dmstech.online/node_modules/laravel-vue-i18n/dist/loader.cjs
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateFiles = exports.prepareExtendedParsedLangFiles = exports.readThroughDir = exports.reset = exports.parse = exports.parseAll = exports.hasPhpTranslations = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const php_parser_1 = require("php-parser");
const hasPhpTranslations = (folderPath) => {
    folderPath = folderPath.replace(/[\\/]$/, '') + path_1.default.sep;
    try {
        const folders = fs_1.default
            .readdirSync(folderPath)
            .filter((file) => fs_1.default.statSync(folderPath + path_1.default.sep + file).isDirectory())
            .sort();
        for (const folder of folders) {
            const lang = {};
            const files = fs_1.default.readdirSync(folderPath + path_1.default.sep + folder).filter((file) => /\.php$/.test(file));
            if (files.length > 0) {
                return true;
            }
        }
    }
    catch (e) { }
    return false;
};
exports.hasPhpTranslations = hasPhpTranslations;
const parseAll = (folderPath) => {
    folderPath = folderPath.replace(/[\\/]$/, '') + path_1.default.sep;
    if (!fs_1.default.existsSync(folderPath)) {
        return [];
    }
    const folders = fs_1.default
        .readdirSync(folderPath)
        .filter((file) => fs_1.default.statSync(folderPath + path_1.default.sep + file).isDirectory())
        .sort();
    const data = [];
    for (const folder of folders) {
        const langFolderPath = folderPath + path_1.default.sep + folder;
        const lang = (0, exports.readThroughDir)(langFolderPath);
        data.push({
            folder,
            translations: convertToDotsSyntax(lang)
        });
    }
    return data
        .filter(({ translations }) => {
        return Object.keys(translations).length > 0;
    })
        .map(({ folder, translations }) => {
        return {
            name: `php_${folder}.json`,
            translations
        };
    });
};
exports.parseAll = parseAll;
const parse = (content) => {
    var _a;
    const arr = new php_parser_1.Engine({}).parseCode(content, 'lang').children.filter((child) => child.kind === 'return')[0];
    if (((_a = arr === null || arr === void 0 ? void 0 : arr.expr) === null || _a === void 0 ? void 0 : _a.kind) !== 'array') {
        return {};
    }
    return convertToDotsSyntax(parseItem(arr.expr));
};
exports.parse = parse;
const parseItem = (expr) => {
    if (expr.kind === 'string') {
        return expr.value;
    }
    if (expr.kind === 'nullkeyword') {
        return null;
    }
    if (expr.kind === 'array') {
        let items = expr.items.map((item) => parseItem(item));
        if (expr.items.every((item) => item.key !== null)) {
            items = items.reduce((acc, val) => Object.assign({}, acc, val), {});
        }
        return items;
    }
    if (expr.kind === 'bin') {
        return parseItem(expr.left) + parseItem(expr.right);
    }
    if (expr.key) {
        return { [expr.key.value]: parseItem(expr.value) };
    }
    return parseItem(expr.value);
};
const convertToDotsSyntax = (list) => {
    const flatten = (items, context = '') => {
        const data = {};
        if (items === null) {
            return data;
        }
        Object.entries(items).forEach(([key, value]) => {
            if (typeof value === 'string') {
                data[context + key] = value;
                return;
            }
            Object.entries(flatten(value, context + key + '.')).forEach(([itemKey, itemValue]) => {
                data[itemKey] = itemValue;
            });
        });
        return data;
    };
    return flatten(list);
};
const reset = (folderPath) => {
    const dir = fs_1.default.readdirSync(folderPath);
    dir
        .filter((file) => file.match(/^php_/))
        .forEach((file) => {
        fs_1.default.unlinkSync(folderPath + file);
    });
};
exports.reset = reset;
const readThroughDir = (dir) => {
    const data = {};
    fs_1.default.readdirSync(dir).forEach((file) => {
        const absoluteFile = dir + path_1.default.sep + file;
        if (fs_1.default.statSync(absoluteFile).isDirectory()) {
            const subFolderFileKey = file.replace(/\.\w+$/, '');
            data[subFolderFileKey] = (0, exports.readThroughDir)(absoluteFile);
        }
        else {
            data[file.replace(/\.\w+$/, '')] = (0, exports.parse)(fs_1.default.readFileSync(absoluteFile).toString());
        }
    });
    return data;
};
exports.readThroughDir = readThroughDir;
const prepareExtendedParsedLangFiles = (langPaths) => langPaths.reduce((acc, langPath) => [...acc, ...(0, exports.parseAll)(langPath)], new Array());
exports.prepareExtendedParsedLangFiles = prepareExtendedParsedLangFiles;
const generateFiles = (langPath, data) => {
    data = mergeData(data);
    if (!fs_1.default.existsSync(langPath)) {
        fs_1.default.mkdirSync(langPath);
    }
    data.forEach(({ name, translations }) => {
        fs_1.default.writeFileSync(langPath + name, JSON.stringify(translations));
    });
    return data;
};
exports.generateFiles = generateFiles;
function mergeData(data) {
    const obj = {};
    data.forEach(({ name, translations }) => {
        if (!obj[name]) {
            obj[name] = {};
        }
        obj[name] = Object.assign(Object.assign({}, obj[name]), translations);
    });
    const arr = [];
    Object.entries(obj).forEach(([name, translations]) => {
        arr.push({ name, translations });
    });
    return arr;
}
//# sourceMappingURL=loader.cjs.map