i18ntk 1.10.1 โ 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +141 -1185
- package/main/i18ntk-analyze.js +149 -133
- package/main/i18ntk-backup-class.js +420 -0
- package/main/i18ntk-backup.js +4 -4
- package/main/i18ntk-complete.js +90 -65
- package/main/i18ntk-doctor.js +123 -103
- package/main/i18ntk-fixer.js +61 -725
- package/main/i18ntk-go.js +14 -15
- package/main/i18ntk-init.js +76 -25
- package/main/i18ntk-java.js +27 -32
- package/main/i18ntk-js.js +70 -68
- package/main/i18ntk-manage.js +128 -29
- package/main/i18ntk-php.js +75 -75
- package/main/i18ntk-py.js +55 -56
- package/main/i18ntk-scanner.js +59 -57
- package/main/i18ntk-setup.js +10 -396
- package/main/i18ntk-sizing.js +46 -40
- package/main/i18ntk-summary.js +21 -18
- package/main/i18ntk-ui.js +11 -10
- package/main/i18ntk-usage.js +55 -19
- package/main/i18ntk-validate.js +13 -13
- package/main/manage/commands/AnalyzeCommand.js +1124 -0
- package/main/manage/commands/BackupCommand.js +62 -0
- package/main/manage/commands/CommandRouter.js +295 -0
- package/main/manage/commands/CompleteCommand.js +61 -0
- package/main/manage/commands/DoctorCommand.js +60 -0
- package/main/manage/commands/FixerCommand.js +624 -0
- package/main/manage/commands/InitCommand.js +62 -0
- package/main/manage/commands/ScannerCommand.js +654 -0
- package/main/manage/commands/SizingCommand.js +60 -0
- package/main/manage/commands/SummaryCommand.js +61 -0
- package/main/manage/commands/UsageCommand.js +60 -0
- package/main/manage/commands/ValidateCommand.js +978 -0
- package/main/manage/index-fixed.js +1447 -0
- package/main/manage/index.js +1462 -0
- package/main/manage/managers/DebugMenu.js +140 -0
- package/main/manage/managers/InteractiveMenu.js +177 -0
- package/main/manage/managers/LanguageMenu.js +62 -0
- package/main/manage/managers/SettingsMenu.js +53 -0
- package/main/manage/services/AuthenticationService.js +263 -0
- package/main/manage/services/ConfigurationService-fixed.js +449 -0
- package/main/manage/services/ConfigurationService.js +449 -0
- package/main/manage/services/FileManagementService.js +368 -0
- package/main/manage/services/FrameworkDetectionService.js +458 -0
- package/main/manage/services/InitService.js +1051 -0
- package/main/manage/services/SetupService.js +462 -0
- package/main/manage/services/SummaryService.js +450 -0
- package/main/manage/services/UsageService.js +1502 -0
- package/package.json +32 -30
- package/runtime/enhanced.d.ts +221 -221
- package/runtime/index.d.ts +29 -29
- package/runtime/index.full.d.ts +331 -331
- package/runtime/index.js +7 -6
- package/scripts/build-lite.js +17 -17
- package/scripts/deprecate-versions.js +23 -6
- package/scripts/export-translations.js +5 -5
- package/scripts/fix-all-i18n.js +3 -3
- package/scripts/fix-and-purify-i18n.js +3 -2
- package/scripts/fix-locale-control-chars.js +110 -0
- package/scripts/lint-locales.js +80 -0
- package/scripts/locale-optimizer.js +8 -8
- package/scripts/prepublish.js +21 -21
- package/scripts/security-check.js +13 -5
- package/scripts/sync-translations.js +4 -4
- package/scripts/sync-ui-locales.js +9 -8
- package/scripts/validate-all-translations.js +8 -7
- package/scripts/verify-deprecations.js +23 -15
- package/scripts/verify-translations.js +6 -5
- package/settings/i18ntk-config.json +282 -282
- package/settings/language-config.json +5 -5
- package/settings/settings-cli.js +9 -9
- package/settings/settings-manager.js +23 -20
- package/ui-locales/de.json +2417 -2348
- package/ui-locales/en.json +2415 -2352
- package/ui-locales/es.json +2425 -2353
- package/ui-locales/fr.json +2418 -2348
- package/ui-locales/ja.json +2463 -2361
- package/ui-locales/ru.json +2463 -2359
- package/ui-locales/zh.json +2418 -2351
- package/utils/admin-auth.js +2 -2
- package/utils/admin-cli.js +297 -297
- package/utils/admin-pin.js +9 -9
- package/utils/cli-helper.js +9 -9
- package/utils/config-helper.js +152 -103
- package/utils/config-manager.js +204 -164
- package/utils/config.js +5 -4
- package/utils/env-manager.js +256 -0
- package/utils/framework-detector.js +27 -24
- package/utils/i18n-helper.js +85 -41
- package/utils/init-helper.js +152 -94
- package/utils/json-output.js +98 -98
- package/utils/logger.js +6 -2
- package/utils/mini-commander.js +179 -0
- package/utils/missing-key-validator.js +5 -5
- package/utils/plugin-loader.js +29 -11
- package/utils/prompt.js +14 -44
- package/utils/safe-json.js +40 -0
- package/utils/secure-errors.js +3 -3
- package/utils/security-check-improved.js +390 -0
- package/utils/security-config.js +5 -5
- package/utils/security-fixed.js +607 -0
- package/utils/security.js +462 -248
- package/utils/setup-enforcer.js +136 -44
- package/utils/setup-validator.js +33 -32
- package/utils/terminal-icons.js +1 -1
- package/utils/ultra-performance-optimizer.js +11 -9
- package/utils/watch-locales.js +2 -1
- package/utils/prompt-fixed.js +0 -55
- package/utils/security-check.js +0 -450
|
@@ -6,10 +6,10 @@ const SecurityUtils = require('../utils/security');
|
|
|
6
6
|
|
|
7
7
|
class SettingsManager {
|
|
8
8
|
constructor() {
|
|
9
|
-
// Use
|
|
10
|
-
this.configDir = path.resolve(__dirname, '..'
|
|
11
|
-
this.configFile = path.join(
|
|
12
|
-
this.backupDir = path.join(
|
|
9
|
+
// Use centralized .i18ntk-settings file as single source of truth
|
|
10
|
+
this.configDir = path.resolve(__dirname, '..');
|
|
11
|
+
this.configFile = path.join(process.cwd(), '.i18ntk-settings');
|
|
12
|
+
this.backupDir = path.join(process.cwd(), 'backups');
|
|
13
13
|
this.saveTimeout = null;
|
|
14
14
|
|
|
15
15
|
this.defaultConfig = {
|
|
@@ -317,8 +317,8 @@ class SettingsManager {
|
|
|
317
317
|
*/
|
|
318
318
|
loadSettings() {
|
|
319
319
|
try {
|
|
320
|
-
if (
|
|
321
|
-
const content =
|
|
320
|
+
if (SecurityUtils.safeExistsSync(this.configFile)) {
|
|
321
|
+
const content = SecurityUtils.safeReadFileSync(this.configFile, process.cwd(), 'utf8');
|
|
322
322
|
const loadedSettings = JSON.parse(content);
|
|
323
323
|
// Merge with defaults to ensure all properties exist
|
|
324
324
|
this.settings = this.mergeWithDefaults(loadedSettings);
|
|
@@ -431,12 +431,12 @@ class SettingsManager {
|
|
|
431
431
|
*/
|
|
432
432
|
_saveImmediately() {
|
|
433
433
|
try {
|
|
434
|
-
if (!
|
|
434
|
+
if (!SecurityUtils.safeExistsSync(this.configDir)) {
|
|
435
435
|
fs.mkdirSync(this.configDir, { recursive: true });
|
|
436
436
|
}
|
|
437
437
|
|
|
438
438
|
const content = JSON.stringify(this.settings, null, 4);
|
|
439
|
-
|
|
439
|
+
SecurityUtils.safeWriteFileSync(this.configFile, content, path.dirname(this.configFile), 'utf8');
|
|
440
440
|
|
|
441
441
|
// Create backup if enabled
|
|
442
442
|
if (this.settings.backup?.enabled) {
|
|
@@ -456,7 +456,7 @@ class SettingsManager {
|
|
|
456
456
|
*/
|
|
457
457
|
createBackup() {
|
|
458
458
|
try {
|
|
459
|
-
if (!
|
|
459
|
+
if (!SecurityUtils.safeExistsSync(this.backupDir)) {
|
|
460
460
|
fs.mkdirSync(this.backupDir, { recursive: true });
|
|
461
461
|
}
|
|
462
462
|
|
|
@@ -509,6 +509,8 @@ class SettingsManager {
|
|
|
509
509
|
"version": null,
|
|
510
510
|
"setupId": null
|
|
511
511
|
};
|
|
512
|
+
// Set projectRoot to "/" for fresh install state
|
|
513
|
+
this.settings.projectRoot = "/";
|
|
512
514
|
this.saveSettings();
|
|
513
515
|
console.log('Settings reset to defaults');
|
|
514
516
|
}
|
|
@@ -523,8 +525,9 @@ class SettingsManager {
|
|
|
523
525
|
try {
|
|
524
526
|
console.log('๐งน Performing complete reset...');
|
|
525
527
|
|
|
526
|
-
// 1. Reset to defaults
|
|
528
|
+
// 1. Reset to defaults with projectRoot set to "/" for fresh install
|
|
527
529
|
this.settings = { ...this.defaultConfig };
|
|
530
|
+
this.settings.projectRoot = "/"; // Set to root for fresh install
|
|
528
531
|
|
|
529
532
|
// 2. Remove actual configuration files used by the system
|
|
530
533
|
const packageDir = path.resolve(__dirname, '..');
|
|
@@ -532,28 +535,28 @@ class SettingsManager {
|
|
|
532
535
|
|
|
533
536
|
// Main configuration file
|
|
534
537
|
const mainConfigPath = path.join(settingsDir, 'i18ntk-config.json');
|
|
535
|
-
if (
|
|
538
|
+
if (SecurityUtils.safeExistsSync(mainConfigPath)) {
|
|
536
539
|
fs.unlinkSync(mainConfigPath);
|
|
537
540
|
console.log('โ
Main configuration file removed');
|
|
538
541
|
}
|
|
539
542
|
|
|
540
543
|
// Project configuration file
|
|
541
544
|
const projectConfigPath = path.join(settingsDir, 'project-config.json');
|
|
542
|
-
if (
|
|
545
|
+
if (SecurityUtils.safeExistsSync(projectConfigPath)) {
|
|
543
546
|
fs.unlinkSync(projectConfigPath);
|
|
544
547
|
console.log('โ
Project configuration removed');
|
|
545
548
|
}
|
|
546
549
|
|
|
547
550
|
// Setup tracking file
|
|
548
551
|
const setupFile = path.join(settingsDir, 'setup.json');
|
|
549
|
-
if (
|
|
552
|
+
if (SecurityUtils.safeExistsSync(setupFile)) {
|
|
550
553
|
fs.unlinkSync(setupFile);
|
|
551
554
|
console.log('โ
Setup tracking cleared');
|
|
552
555
|
}
|
|
553
556
|
|
|
554
557
|
// 3. Clear all backup files from backups directory
|
|
555
558
|
const backupsDir = path.join(packageDir, 'backups');
|
|
556
|
-
if (
|
|
559
|
+
if (SecurityUtils.safeExistsSync(backupsDir)) {
|
|
557
560
|
const backupFiles = fs.readdirSync(backupsDir);
|
|
558
561
|
for (const file of backupFiles) {
|
|
559
562
|
if (file.endsWith('.json') || file.endsWith('.bak')) {
|
|
@@ -572,7 +575,7 @@ class SettingsManager {
|
|
|
572
575
|
];
|
|
573
576
|
|
|
574
577
|
for (const adminConfigPath of adminConfigPaths) {
|
|
575
|
-
if (
|
|
578
|
+
if (SecurityUtils.safeExistsSync(adminConfigPath)) {
|
|
576
579
|
fs.unlinkSync(adminConfigPath);
|
|
577
580
|
console.log('โ
Admin PIN configuration cleared');
|
|
578
581
|
}
|
|
@@ -585,7 +588,7 @@ class SettingsManager {
|
|
|
585
588
|
];
|
|
586
589
|
|
|
587
590
|
for (const initFile of initFiles) {
|
|
588
|
-
if (
|
|
591
|
+
if (SecurityUtils.safeExistsSync(initFile)) {
|
|
589
592
|
fs.unlinkSync(initFile);
|
|
590
593
|
console.log('โ
Initialization tracking cleared');
|
|
591
594
|
}
|
|
@@ -598,7 +601,7 @@ class SettingsManager {
|
|
|
598
601
|
];
|
|
599
602
|
|
|
600
603
|
for (const cacheDir of cacheDirs) {
|
|
601
|
-
if (
|
|
604
|
+
if (SecurityUtils.safeExistsSync(cacheDir)) {
|
|
602
605
|
const cacheFiles = fs.readdirSync(cacheDir);
|
|
603
606
|
for (const file of cacheFiles) {
|
|
604
607
|
fs.unlinkSync(path.join(cacheDir, file));
|
|
@@ -621,7 +624,7 @@ class SettingsManager {
|
|
|
621
624
|
];
|
|
622
625
|
|
|
623
626
|
for (const tempFile of tempFiles) {
|
|
624
|
-
if (
|
|
627
|
+
if (SecurityUtils.safeExistsSync(tempFile)) {
|
|
625
628
|
fs.unlinkSync(tempFile);
|
|
626
629
|
}
|
|
627
630
|
}
|
|
@@ -638,7 +641,7 @@ class SettingsManager {
|
|
|
638
641
|
];
|
|
639
642
|
|
|
640
643
|
for (const file of additionalFiles) {
|
|
641
|
-
if (
|
|
644
|
+
if (SecurityUtils.safeExistsSync(file)) {
|
|
642
645
|
fs.unlinkSync(file);
|
|
643
646
|
console.log(`โ
Removed ${path.basename(file)}`);
|
|
644
647
|
}
|
|
@@ -647,7 +650,7 @@ class SettingsManager {
|
|
|
647
650
|
// 9. Reset all script directory overrides to defaults
|
|
648
651
|
this.settings.scriptDirectories = {
|
|
649
652
|
"main": "./main",
|
|
650
|
-
"utils": "./utils",
|
|
653
|
+
"utils": "./utils",
|
|
651
654
|
"scripts": "./scripts",
|
|
652
655
|
"settings": "./settings",
|
|
653
656
|
"uiLocales": "./ui-locales"
|