UNPKG

lr-i18n

Version:

Allows to connect your `Laravel` Framework localization files with `React`.

36 lines (35 loc) 1.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertToKeyType = convertToKeyType; exports.saveKeyTypeToFile = saveKeyTypeToFile; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); /** * * @param dirname * @param basename */ function convertToKeyType(dirname, basename) { const result = fs_1.default.readFileSync(`${dirname + path_1.default.sep + basename}.json`, 'utf8'); const obj = Object.entries(JSON.parse(result)); let str = ''; obj.forEach(([key], index) => { // Escaping a key const escKey = key.replace(/[!@#$%^&*()+=\-[\]\\';,/{}|":<>?~_]/g, '\\$&'); str = obj.length === 1 || obj.length - 1 === index ? `${str}'${escKey}'` : `${str}'${escKey}'|`; }); return str; } /** * * @param keys * @param dirname */ function saveKeyTypeToFile(keys, dirname = 'resources/js') { const sanitizeDirname = dirname.replace(/[\\/]$/, '') + path_1.default.sep; const data = `export type I18nKeyType = ${keys};`.replace(/[\r\n]+/g, ''); fs_1.default.writeFileSync(`${sanitizeDirname}LaravelReactI18n.types.ts`, data); }