@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.
Files changed (2) hide show
  1. package/dist/index.js +66 -33
  2. 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 fs = __toESM(require("fs"));
31
- var import_fast_glob = __toESM(require("fast-glob"));
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 = path.join(DEFAULT_DIR, "lang");
37
- var EXTRACT_FILE = path.join(EXTRACT_DIR, "en.json");
38
- var COMPILE_DIR = path.join(DEFAULT_DIR, "compiled");
39
- var MISSING_DIR = path.join(DEFAULT_DIR, "missing");
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 fs.promises.readFile(path.join(process.cwd(), "package.json"));
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 = path.join(process.cwd(), "node_modules", dependency);
58
- const requirePath = path.join(dependencyPathFromCwd, EXTRACT_FILE);
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((acc, key) => {
61
- return {
62
- ...acc,
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 (error) {
69
+ } catch {
71
70
  continue;
72
71
  }
73
72
  }
74
73
  return ttossExtractedTranslations;
75
74
  };
76
- (async () => {
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, null, 2);
94
+ return JSON.stringify(finalExtractedData2, void 0, 2);
96
95
  })();
97
- await fs.promises.mkdir(EXTRACT_DIR, {
96
+ await import_node_fs.default.promises.mkdir(EXTRACT_DIR, {
98
97
  recursive: true
99
98
  });
100
- await fs.promises.writeFile(EXTRACT_FILE, finalExtractedData);
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 fs.promises.mkdir(COMPILE_DIR, {
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 fs.promises.writeFile(path.join(COMPILE_DIR, filename), compiledDataAsString);
116
+ await import_node_fs.default.promises.writeFile(import_node_path.default.join(COMPILE_DIR, filename), compiledDataAsString);
118
117
  }
119
118
  }
120
- await fs.promises.mkdir(MISSING_DIR, {
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 obj = JSON.parse(fs.readFileSync(translation, {
130
- encoding: "utf-8"
131
+ const object = JSON.parse(import_node_fs.default.readFileSync(translation, {
132
+ encoding: "utf8"
131
133
  }));
132
- const missingTranslations = Object.keys(extractedTranslations).reduce((acc, key) => {
133
- if (!obj[key]) {
134
- acc[key] = extractedTranslations[key];
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 acc;
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 fs.promises.writeFile(path.join(MISSING_DIR, filename), JSON.stringify(missingTranslations, null, 2));
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.26",
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.2"
30
+ "@ttoss/config": "^1.35.3"
31
31
  },
32
32
  "publishConfig": {
33
33
  "access": "public",