@ttoss/i18n-cli 0.7.26 → 0.7.28
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/dist/index.js +66 -33
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -27,19 +27,20 @@ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
|
27
27
|
}) : target, mod));
|
|
28
28
|
|
|
29
29
|
// src/index.ts
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
var path = __toESM(require("path"));
|
|
30
|
+
var import_node_fs = __toESM(require("fs"));
|
|
31
|
+
var import_node_path = __toESM(require("path"));
|
|
33
32
|
var import_cli_lib = require("@formatjs/cli-lib");
|
|
33
|
+
var import_fast_glob = __toESM(require("fast-glob"));
|
|
34
34
|
var import_minimist = __toESM(require("minimist"));
|
|
35
35
|
var DEFAULT_DIR = "i18n";
|
|
36
|
-
var EXTRACT_DIR =
|
|
37
|
-
var EXTRACT_FILE =
|
|
38
|
-
var COMPILE_DIR =
|
|
39
|
-
var MISSING_DIR =
|
|
36
|
+
var EXTRACT_DIR = import_node_path.default.join(DEFAULT_DIR, "lang");
|
|
37
|
+
var EXTRACT_FILE = import_node_path.default.join(EXTRACT_DIR, "en.json");
|
|
38
|
+
var COMPILE_DIR = import_node_path.default.join(DEFAULT_DIR, "compiled");
|
|
39
|
+
var MISSING_DIR = import_node_path.default.join(DEFAULT_DIR, "missing");
|
|
40
|
+
var UNUSED_DIR = import_node_path.default.join(DEFAULT_DIR, "unused");
|
|
40
41
|
var argv = (0, import_minimist.default)(process.argv.slice(2));
|
|
41
42
|
var getTtossExtractedTranslations = async () => {
|
|
42
|
-
const packageJsonAsString = await
|
|
43
|
+
const packageJsonAsString = await import_node_fs.default.promises.readFile(import_node_path.default.join(process.cwd(), "package.json"));
|
|
43
44
|
const packageJson = JSON.parse(packageJsonAsString.toString());
|
|
44
45
|
const ttossDependencies = Object.keys({
|
|
45
46
|
...packageJson.dependencies,
|
|
@@ -54,26 +55,24 @@ var getTtossExtractedTranslations = async () => {
|
|
|
54
55
|
const ttossExtractedTranslations = {};
|
|
55
56
|
for (const dependency of ttossDependencies) {
|
|
56
57
|
try {
|
|
57
|
-
const dependencyPathFromCwd =
|
|
58
|
-
const requirePath =
|
|
58
|
+
const dependencyPathFromCwd = import_node_path.default.join(process.cwd(), "node_modules", dependency);
|
|
59
|
+
const requirePath = import_node_path.default.join(dependencyPathFromCwd, EXTRACT_FILE);
|
|
59
60
|
const extractedTranslations = require(requirePath);
|
|
60
|
-
const extractedTranslationsWithModule = Object.keys(extractedTranslations).reduce((
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
[key]
|
|
64
|
-
...extractedTranslations[key],
|
|
65
|
-
module: dependency
|
|
66
|
-
}
|
|
61
|
+
const extractedTranslationsWithModule = Object.keys(extractedTranslations).reduce((accumulator, key) => {
|
|
62
|
+
accumulator[key] = {
|
|
63
|
+
module: dependency,
|
|
64
|
+
...extractedTranslations[key]
|
|
67
65
|
};
|
|
66
|
+
return accumulator;
|
|
68
67
|
}, {});
|
|
69
68
|
Object.assign(ttossExtractedTranslations, extractedTranslationsWithModule);
|
|
70
|
-
} catch
|
|
69
|
+
} catch {
|
|
71
70
|
continue;
|
|
72
71
|
}
|
|
73
72
|
}
|
|
74
73
|
return ttossExtractedTranslations;
|
|
75
74
|
};
|
|
76
|
-
|
|
75
|
+
var executeI18nCli = async () => {
|
|
77
76
|
const pattern = argv.pattern || "src/**/*.{ts,tsx}";
|
|
78
77
|
const ignore = argv.ignore || ["src/**/*.test.{ts,tsx}", "src/**/*.d.ts"];
|
|
79
78
|
const extractedDataAsString = await (0, import_cli_lib.extract)(import_fast_glob.default.sync(pattern, {
|
|
@@ -92,12 +91,12 @@ var getTtossExtractedTranslations = async () => {
|
|
|
92
91
|
...parsedExtractedData,
|
|
93
92
|
...ttossExtractedTranslations
|
|
94
93
|
};
|
|
95
|
-
return JSON.stringify(finalExtractedData2,
|
|
94
|
+
return JSON.stringify(finalExtractedData2, void 0, 2);
|
|
96
95
|
})();
|
|
97
|
-
await
|
|
96
|
+
await import_node_fs.default.promises.mkdir(EXTRACT_DIR, {
|
|
98
97
|
recursive: true
|
|
99
98
|
});
|
|
100
|
-
await
|
|
99
|
+
await import_node_fs.default.promises.writeFile(EXTRACT_FILE, finalExtractedData);
|
|
101
100
|
if (argv["no-compile"]) {
|
|
102
101
|
return;
|
|
103
102
|
}
|
|
@@ -105,7 +104,7 @@ var getTtossExtractedTranslations = async () => {
|
|
|
105
104
|
cwd: EXTRACT_DIR,
|
|
106
105
|
absolute: true
|
|
107
106
|
});
|
|
108
|
-
await
|
|
107
|
+
await import_node_fs.default.promises.mkdir(COMPILE_DIR, {
|
|
109
108
|
recursive: true
|
|
110
109
|
});
|
|
111
110
|
for (const translation of translations) {
|
|
@@ -114,10 +113,13 @@ var getTtossExtractedTranslations = async () => {
|
|
|
114
113
|
ast: true
|
|
115
114
|
});
|
|
116
115
|
if (filename) {
|
|
117
|
-
await
|
|
116
|
+
await import_node_fs.default.promises.writeFile(import_node_path.default.join(COMPILE_DIR, filename), compiledDataAsString);
|
|
118
117
|
}
|
|
119
118
|
}
|
|
120
|
-
await
|
|
119
|
+
await import_node_fs.default.promises.mkdir(MISSING_DIR, {
|
|
120
|
+
recursive: true
|
|
121
|
+
});
|
|
122
|
+
await import_node_fs.default.promises.mkdir(UNUSED_DIR, {
|
|
121
123
|
recursive: true
|
|
122
124
|
});
|
|
123
125
|
for (const translation of translations) {
|
|
@@ -126,19 +128,50 @@ var getTtossExtractedTranslations = async () => {
|
|
|
126
128
|
continue;
|
|
127
129
|
}
|
|
128
130
|
const extractedTranslations = JSON.parse(finalExtractedData);
|
|
129
|
-
const
|
|
130
|
-
encoding: "
|
|
131
|
+
const object = JSON.parse(import_node_fs.default.readFileSync(translation, {
|
|
132
|
+
encoding: "utf8"
|
|
131
133
|
}));
|
|
132
|
-
const missingTranslations = Object.keys(extractedTranslations).reduce((
|
|
133
|
-
if (!
|
|
134
|
-
|
|
134
|
+
const missingTranslations = Object.keys(extractedTranslations).reduce((accumulator, key) => {
|
|
135
|
+
if (!object[key]) {
|
|
136
|
+
accumulator[key] = extractedTranslations[key];
|
|
137
|
+
}
|
|
138
|
+
return accumulator;
|
|
139
|
+
},
|
|
140
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
141
|
+
{});
|
|
142
|
+
const unusedTranslations = Object.keys(object).reduce((accumulator, key) => {
|
|
143
|
+
if (!extractedTranslations[key]) {
|
|
144
|
+
accumulator[key] = object[key];
|
|
135
145
|
}
|
|
136
|
-
return
|
|
146
|
+
return accumulator;
|
|
147
|
+
},
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
149
|
+
{});
|
|
150
|
+
const withoutUnnecessaryTranslations = Object.keys(object).reduce((accumulator, key) => {
|
|
151
|
+
if (object[key] !== unusedTranslations[key]) {
|
|
152
|
+
accumulator[key] = object[key];
|
|
153
|
+
}
|
|
154
|
+
return accumulator;
|
|
137
155
|
},
|
|
138
156
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
139
157
|
{});
|
|
140
158
|
if (filename) {
|
|
141
|
-
await
|
|
159
|
+
await import_node_fs.default.promises.writeFile(import_node_path.default.join(MISSING_DIR, filename), JSON.stringify(missingTranslations, void 0, 2));
|
|
160
|
+
try {
|
|
161
|
+
const existentUnusedJsonAsString = await import_node_fs.default.promises.readFile(import_node_path.default.join(UNUSED_DIR, filename));
|
|
162
|
+
if (existentUnusedJsonAsString) {
|
|
163
|
+
const existentUnusedJson = JSON.parse(existentUnusedJsonAsString.toString());
|
|
164
|
+
const updatedUnusedTranslations = {
|
|
165
|
+
...existentUnusedJson,
|
|
166
|
+
...unusedTranslations
|
|
167
|
+
};
|
|
168
|
+
await import_node_fs.default.promises.writeFile(import_node_path.default.join(UNUSED_DIR, filename), JSON.stringify(updatedUnusedTranslations, void 0, 2));
|
|
169
|
+
}
|
|
170
|
+
} catch {
|
|
171
|
+
await import_node_fs.default.promises.writeFile(import_node_path.default.join(UNUSED_DIR, filename), JSON.stringify(unusedTranslations, void 0, 2));
|
|
172
|
+
}
|
|
173
|
+
await import_node_fs.default.promises.writeFile(import_node_path.default.join(EXTRACT_DIR, filename), JSON.stringify(withoutUnnecessaryTranslations, void 0, 2));
|
|
142
174
|
}
|
|
143
175
|
}
|
|
144
|
-
}
|
|
176
|
+
};
|
|
177
|
+
executeI18nCli();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttoss/i18n-cli",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.28",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "ttoss",
|
|
6
6
|
"contributors": [
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"@types/minimist": "^1.2.5",
|
|
28
28
|
"ts-node": "^10.9.2",
|
|
29
29
|
"tsup": "^8.3.5",
|
|
30
|
-
"@ttoss/config": "^1.35.
|
|
30
|
+
"@ttoss/config": "^1.35.3"
|
|
31
31
|
},
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public",
|