@messagevisor/core 0.0.1 → 0.1.0

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 (211) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +7 -0
  4. package/jest.config.js +8 -0
  5. package/lib/benchmark/index.d.ts +2 -0
  6. package/lib/benchmark/index.js +417 -0
  7. package/lib/benchmark/index.js.map +1 -0
  8. package/lib/builder/index.d.ts +70 -0
  9. package/lib/builder/index.js +831 -0
  10. package/lib/builder/index.js.map +1 -0
  11. package/lib/cli/index.d.ts +28 -0
  12. package/lib/cli/index.js +182 -0
  13. package/lib/cli/index.js.map +1 -0
  14. package/lib/config/index.d.ts +61 -0
  15. package/lib/config/index.js +255 -0
  16. package/lib/config/index.js.map +1 -0
  17. package/lib/create/index.d.ts +2 -0
  18. package/lib/create/index.js +405 -0
  19. package/lib/create/index.js.map +1 -0
  20. package/lib/datasource/filesystemAdapter.d.ts +44 -0
  21. package/lib/datasource/filesystemAdapter.js +424 -0
  22. package/lib/datasource/filesystemAdapter.js.map +1 -0
  23. package/lib/datasource/index.d.ts +39 -0
  24. package/lib/datasource/index.js +96 -0
  25. package/lib/datasource/index.js.map +1 -0
  26. package/lib/error.d.ts +6 -0
  27. package/lib/error.js +49 -0
  28. package/lib/error.js.map +1 -0
  29. package/lib/evaluate/cli.d.ts +8 -0
  30. package/lib/evaluate/cli.js +179 -0
  31. package/lib/evaluate/cli.js.map +1 -0
  32. package/lib/evaluate/index.d.ts +10 -0
  33. package/lib/evaluate/index.js +131 -0
  34. package/lib/evaluate/index.js.map +1 -0
  35. package/lib/examples/coerceExampleIsoDates.d.ts +12 -0
  36. package/lib/examples/coerceExampleIsoDates.js +81 -0
  37. package/lib/examples/coerceExampleIsoDates.js.map +1 -0
  38. package/lib/examples/index.d.ts +63 -0
  39. package/lib/examples/index.js +713 -0
  40. package/lib/examples/index.js.map +1 -0
  41. package/lib/exporter/index.d.ts +60 -0
  42. package/lib/exporter/index.js +610 -0
  43. package/lib/exporter/index.js.map +1 -0
  44. package/lib/find-duplicates/index.d.ts +41 -0
  45. package/lib/find-duplicates/index.js +297 -0
  46. package/lib/find-duplicates/index.js.map +1 -0
  47. package/lib/generate-code/index.d.ts +11 -0
  48. package/lib/generate-code/index.js +157 -0
  49. package/lib/generate-code/index.js.map +1 -0
  50. package/lib/generate-code/typescript.d.ts +14 -0
  51. package/lib/generate-code/typescript.js +307 -0
  52. package/lib/generate-code/typescript.js.map +1 -0
  53. package/lib/importer/index.d.ts +64 -0
  54. package/lib/importer/index.js +1092 -0
  55. package/lib/importer/index.js.map +1 -0
  56. package/lib/index.d.ts +18 -0
  57. package/lib/index.js +35 -0
  58. package/lib/index.js.map +1 -0
  59. package/lib/info/index.d.ts +17 -0
  60. package/lib/info/index.js +132 -0
  61. package/lib/info/index.js.map +1 -0
  62. package/lib/init/index.d.ts +30 -0
  63. package/lib/init/index.js +348 -0
  64. package/lib/init/index.js.map +1 -0
  65. package/lib/lint/index.d.ts +1 -0
  66. package/lib/lint/index.js +6 -0
  67. package/lib/lint/index.js.map +1 -0
  68. package/lib/linter/attributeSchema.d.ts +7 -0
  69. package/lib/linter/attributeSchema.js +36 -0
  70. package/lib/linter/attributeSchema.js.map +1 -0
  71. package/lib/linter/checkLocaleCircularDependency.d.ts +7 -0
  72. package/lib/linter/checkLocaleCircularDependency.js +42 -0
  73. package/lib/linter/checkLocaleCircularDependency.js.map +1 -0
  74. package/lib/linter/conditionSchema.d.ts +3 -0
  75. package/lib/linter/conditionSchema.js +283 -0
  76. package/lib/linter/conditionSchema.js.map +1 -0
  77. package/lib/linter/formatSchema.d.ts +325 -0
  78. package/lib/linter/formatSchema.js +165 -0
  79. package/lib/linter/formatSchema.js.map +1 -0
  80. package/lib/linter/icuStyleLint.d.ts +6 -0
  81. package/lib/linter/icuStyleLint.js +226 -0
  82. package/lib/linter/icuStyleLint.js.map +1 -0
  83. package/lib/linter/index.d.ts +34 -0
  84. package/lib/linter/index.js +557 -0
  85. package/lib/linter/index.js.map +1 -0
  86. package/lib/linter/localeSchema.d.ts +672 -0
  87. package/lib/linter/localeSchema.js +50 -0
  88. package/lib/linter/localeSchema.js.map +1 -0
  89. package/lib/linter/messageSchema.d.ts +35 -0
  90. package/lib/linter/messageSchema.js +115 -0
  91. package/lib/linter/messageSchema.js.map +1 -0
  92. package/lib/linter/printError.d.ts +8 -0
  93. package/lib/linter/printError.js +41 -0
  94. package/lib/linter/printError.js.map +1 -0
  95. package/lib/linter/schema.d.ts +33 -0
  96. package/lib/linter/schema.js +192 -0
  97. package/lib/linter/schema.js.map +1 -0
  98. package/lib/linter/segmentSchema.d.ts +8 -0
  99. package/lib/linter/segmentSchema.js +18 -0
  100. package/lib/linter/segmentSchema.js.map +1 -0
  101. package/lib/linter/targetSchema.d.ts +337 -0
  102. package/lib/linter/targetSchema.js +39 -0
  103. package/lib/linter/targetSchema.js.map +1 -0
  104. package/lib/linter/testSchema.d.ts +71 -0
  105. package/lib/linter/testSchema.js +165 -0
  106. package/lib/linter/testSchema.js.map +1 -0
  107. package/lib/linter/zodHelpers.d.ts +2 -0
  108. package/lib/linter/zodHelpers.js +15 -0
  109. package/lib/linter/zodHelpers.js.map +1 -0
  110. package/lib/list/index.d.ts +8 -0
  111. package/lib/list/index.js +524 -0
  112. package/lib/list/index.js.map +1 -0
  113. package/lib/matrix.d.ts +4 -0
  114. package/lib/matrix.js +66 -0
  115. package/lib/matrix.js.map +1 -0
  116. package/lib/promoter/index.d.ts +65 -0
  117. package/lib/promoter/index.js +1208 -0
  118. package/lib/promoter/index.js.map +1 -0
  119. package/lib/prune/index.d.ts +37 -0
  120. package/lib/prune/index.js +673 -0
  121. package/lib/prune/index.js.map +1 -0
  122. package/lib/sets.d.ts +10 -0
  123. package/lib/sets.js +120 -0
  124. package/lib/sets.js.map +1 -0
  125. package/lib/tester/cliFormat.d.ts +8 -0
  126. package/lib/tester/cliFormat.js +15 -0
  127. package/lib/tester/cliFormat.js.map +1 -0
  128. package/lib/tester/index.d.ts +35 -0
  129. package/lib/tester/index.js +713 -0
  130. package/lib/tester/index.js.map +1 -0
  131. package/lib/tester/matrix.d.ts +14 -0
  132. package/lib/tester/matrix.js +76 -0
  133. package/lib/tester/matrix.js.map +1 -0
  134. package/lib/tester/prettyDuration.d.ts +1 -0
  135. package/lib/tester/prettyDuration.js +30 -0
  136. package/lib/tester/prettyDuration.js.map +1 -0
  137. package/lib/tester/printTestResult.d.ts +2 -0
  138. package/lib/tester/printTestResult.js +32 -0
  139. package/lib/tester/printTestResult.js.map +1 -0
  140. package/lib/tester/types.d.ts +29 -0
  141. package/lib/tester/types.js +3 -0
  142. package/lib/tester/types.js.map +1 -0
  143. package/package.json +41 -13
  144. package/src/benchmark/index.spec.ts +375 -0
  145. package/src/benchmark/index.ts +433 -0
  146. package/src/builder/index.spec.ts +822 -0
  147. package/src/builder/index.ts +920 -0
  148. package/src/cli/index.spec.ts +54 -0
  149. package/src/cli/index.ts +150 -0
  150. package/src/config/index.spec.ts +70 -0
  151. package/src/config/index.ts +259 -0
  152. package/src/create/index.spec.ts +272 -0
  153. package/src/create/index.ts +295 -0
  154. package/src/datasource/filesystemAdapter.ts +313 -0
  155. package/src/datasource/index.ts +135 -0
  156. package/src/error.ts +33 -0
  157. package/src/evaluate/cli.spec.ts +368 -0
  158. package/src/evaluate/cli.ts +130 -0
  159. package/src/evaluate/index.ts +161 -0
  160. package/src/examples/coerceExampleIsoDates.spec.ts +81 -0
  161. package/src/examples/coerceExampleIsoDates.ts +98 -0
  162. package/src/examples/index.spec.ts +453 -0
  163. package/src/examples/index.ts +854 -0
  164. package/src/exporter/index.spec.ts +443 -0
  165. package/src/exporter/index.ts +643 -0
  166. package/src/find-duplicates/index.spec.ts +289 -0
  167. package/src/find-duplicates/index.ts +314 -0
  168. package/src/generate-code/index.ts +92 -0
  169. package/src/generate-code/typescript.spec.ts +241 -0
  170. package/src/generate-code/typescript.ts +284 -0
  171. package/src/importer/index.spec.ts +1101 -0
  172. package/src/importer/index.ts +1190 -0
  173. package/src/index.ts +18 -0
  174. package/src/info/index.ts +67 -0
  175. package/src/init/index.spec.ts +279 -0
  176. package/src/init/index.ts +292 -0
  177. package/src/lint/index.ts +1 -0
  178. package/src/linter/attributeSchema.ts +38 -0
  179. package/src/linter/checkLocaleCircularDependency.ts +51 -0
  180. package/src/linter/conditionSchema.ts +386 -0
  181. package/src/linter/formatSchema.ts +170 -0
  182. package/src/linter/icuStyleLint.ts +312 -0
  183. package/src/linter/index.spec.ts +824 -0
  184. package/src/linter/index.ts +460 -0
  185. package/src/linter/localeSchema.ts +70 -0
  186. package/src/linter/messageSchema.ts +152 -0
  187. package/src/linter/printError.ts +52 -0
  188. package/src/linter/schema.ts +230 -0
  189. package/src/linter/segmentSchema.ts +15 -0
  190. package/src/linter/targetSchema.ts +50 -0
  191. package/src/linter/testSchema.spec.ts +405 -0
  192. package/src/linter/testSchema.ts +239 -0
  193. package/src/linter/zodHelpers.ts +16 -0
  194. package/src/list/index.spec.ts +431 -0
  195. package/src/list/index.ts +463 -0
  196. package/src/matrix.ts +69 -0
  197. package/src/promoter/index.spec.ts +584 -0
  198. package/src/promoter/index.ts +1267 -0
  199. package/src/prune/index.spec.ts +418 -0
  200. package/src/prune/index.ts +693 -0
  201. package/src/sets.ts +74 -0
  202. package/src/tester/cliFormat.ts +11 -0
  203. package/src/tester/featurevisorIntegration.spec.ts +101 -0
  204. package/src/tester/index.spec.ts +577 -0
  205. package/src/tester/index.ts +679 -0
  206. package/src/tester/matrix.ts +106 -0
  207. package/src/tester/prettyDuration.ts +34 -0
  208. package/src/tester/printTestResult.ts +40 -0
  209. package/src/tester/types.ts +32 -0
  210. package/tsconfig.cjs.json +11 -0
  211. package/tsconfig.typecheck.json +4 -0
@@ -0,0 +1,610 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
47
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
48
+ return new (P || (P = Promise))(function (resolve, reject) {
49
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
50
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
51
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
52
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
53
+ });
54
+ };
55
+ var __generator = (this && this.__generator) || function (thisArg, body) {
56
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
57
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
58
+ function verb(n) { return function (v) { return step([n, v]); }; }
59
+ function step(op) {
60
+ if (f) throw new TypeError("Generator is already executing.");
61
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
62
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
63
+ if (y = 0, t) op = [op[0] & 2, t.value];
64
+ switch (op[0]) {
65
+ case 0: case 1: t = op; break;
66
+ case 4: _.label++; return { value: op[1], done: false };
67
+ case 5: _.label++; y = op[1]; op = [0]; continue;
68
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
69
+ default:
70
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
71
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
72
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
73
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
74
+ if (t[2]) _.ops.pop();
75
+ _.trys.pop(); continue;
76
+ }
77
+ op = body.call(thisArg, _);
78
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
79
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
80
+ }
81
+ };
82
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
83
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
84
+ if (ar || !(i in from)) {
85
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
86
+ ar[i] = from[i];
87
+ }
88
+ }
89
+ return to.concat(ar || Array.prototype.slice.call(from));
90
+ };
91
+ Object.defineProperty(exports, "__esModule", { value: true });
92
+ exports.exportPlugin = void 0;
93
+ exports.toCsv = toCsv;
94
+ exports.exportProject = exportProject;
95
+ exports.exportProjectSets = exportProjectSets;
96
+ var fs = __importStar(require("fs"));
97
+ var path = __importStar(require("path"));
98
+ var error_1 = require("../error");
99
+ var sets_1 = require("../sets");
100
+ function toArray(value) {
101
+ if (typeof value === "undefined")
102
+ return [];
103
+ return Array.isArray(value) ? value : [value];
104
+ }
105
+ function matchesPattern(key, patterns) {
106
+ if (!patterns || patterns.length === 0) {
107
+ return false;
108
+ }
109
+ return patterns.some(function (pattern) {
110
+ var escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
111
+ return new RegExp("^".concat(escaped, "$")).test(key);
112
+ });
113
+ }
114
+ function readAll(keys, read) {
115
+ return __awaiter(this, void 0, void 0, function () {
116
+ var entries;
117
+ var _this = this;
118
+ return __generator(this, function (_a) {
119
+ switch (_a.label) {
120
+ case 0: return [4 /*yield*/, Promise.all(keys.map(function (key) { return __awaiter(_this, void 0, void 0, function () { var _a; return __generator(this, function (_b) {
121
+ switch (_b.label) {
122
+ case 0:
123
+ _a = [key];
124
+ return [4 /*yield*/, read(key)];
125
+ case 1: return [2 /*return*/, _a.concat([_b.sent()])];
126
+ }
127
+ }); }); }))];
128
+ case 1:
129
+ entries = _a.sent();
130
+ return [2 /*return*/, Object.fromEntries(entries)];
131
+ }
132
+ });
133
+ });
134
+ }
135
+ function isAvailable(message) {
136
+ return !message.archived;
137
+ }
138
+ function resolveLocaleChain(localeKey, locales) {
139
+ var _a;
140
+ var chain = [];
141
+ var seen = new Set();
142
+ var currentKey = localeKey;
143
+ while (currentKey && !seen.has(currentKey)) {
144
+ seen.add(currentKey);
145
+ chain.unshift(currentKey);
146
+ currentKey = (_a = locales[currentKey]) === null || _a === void 0 ? void 0 : _a.inheritTranslationsFrom;
147
+ }
148
+ return chain;
149
+ }
150
+ function resolveTranslationStatus(translations, localeKey, locales) {
151
+ if (typeof (translations === null || translations === void 0 ? void 0 : translations[localeKey]) !== "undefined") {
152
+ return {
153
+ value: translations[localeKey],
154
+ status: "direct",
155
+ };
156
+ }
157
+ var candidates = resolveLocaleChain(localeKey, locales).reverse();
158
+ for (var _i = 0, candidates_1 = candidates; _i < candidates_1.length; _i++) {
159
+ var candidate = candidates_1[_i];
160
+ if (translations && typeof translations[candidate] !== "undefined") {
161
+ return {
162
+ value: translations[candidate],
163
+ status: "inherited",
164
+ };
165
+ }
166
+ }
167
+ return {
168
+ value: "",
169
+ status: "missing",
170
+ };
171
+ }
172
+ function resolveTranslation(translations, localeKey, locales) {
173
+ var result = resolveTranslationStatus(translations, localeKey, locales);
174
+ return result.status === "missing" ? undefined : result.value;
175
+ }
176
+ function csvEscape(value, delimiter) {
177
+ var stringValue = typeof value === "undefined" || value === null ? "" : String(value);
178
+ var needsEscaping = stringValue.includes(delimiter) || stringValue.includes('"') || /[\n\r]/.test(stringValue);
179
+ if (needsEscaping) {
180
+ return "\"".concat(stringValue.replace(/"/g, '""'), "\"");
181
+ }
182
+ return stringValue;
183
+ }
184
+ function toCsv(headers, rows, options) {
185
+ if (options === void 0) { options = {}; }
186
+ var delimiter = options.delimiter || ",";
187
+ var lineEnding = options.lineEnding === "crlf" ? "\r\n" : "\n";
188
+ var csv = __spreadArray([headers], rows, true).map(function (row) { return row.map(function (value) { return csvEscape(value, delimiter); }).join(delimiter); })
189
+ .join(lineEnding);
190
+ return options.bom ? "\uFEFF".concat(csv) : csv;
191
+ }
192
+ function formatTimestamp(date) {
193
+ var pad = function (value) { return String(value).padStart(2, "0"); };
194
+ return [
195
+ date.getFullYear(),
196
+ pad(date.getMonth() + 1),
197
+ pad(date.getDate()),
198
+ "T",
199
+ pad(date.getHours()),
200
+ pad(date.getMinutes()),
201
+ pad(date.getSeconds()),
202
+ ].join("");
203
+ }
204
+ function getExportFilePath(projectConfig, options) {
205
+ return __awaiter(this, void 0, void 0, function () {
206
+ var projectRootDirectoryPath, filePath, timestamp, index, suffix, filePath;
207
+ return __generator(this, function (_a) {
208
+ switch (_a.label) {
209
+ case 0:
210
+ if (!options.output) return [3 /*break*/, 2];
211
+ projectRootDirectoryPath = path.dirname(projectConfig.exportsDirectoryPath);
212
+ filePath = path.isAbsolute(options.output)
213
+ ? options.output
214
+ : path.join(projectRootDirectoryPath, options.output);
215
+ if (!options.force && fs.existsSync(filePath)) {
216
+ throw new error_1.MessagevisorCLIError("Export output file already exists: ".concat(filePath, ". Pass --force to overwrite."));
217
+ }
218
+ return [4 /*yield*/, fs.promises.mkdir(path.dirname(filePath), { recursive: true })];
219
+ case 1:
220
+ _a.sent();
221
+ return [2 /*return*/, filePath];
222
+ case 2: return [4 /*yield*/, fs.promises.mkdir(projectConfig.exportsDirectoryPath, { recursive: true })];
223
+ case 3:
224
+ _a.sent();
225
+ timestamp = formatTimestamp(options.now || new Date());
226
+ index = 0;
227
+ while (true) {
228
+ suffix = index === 0 ? "" : "-".concat(index);
229
+ filePath = path.join(projectConfig.exportsDirectoryPath, "messagevisor-export-".concat(timestamp).concat(suffix, ".csv"));
230
+ if (!fs.existsSync(filePath)) {
231
+ return [2 /*return*/, filePath];
232
+ }
233
+ index++;
234
+ }
235
+ return [2 /*return*/];
236
+ }
237
+ });
238
+ });
239
+ }
240
+ function assertKnownValues(label, requested, available) {
241
+ for (var _i = 0, requested_1 = requested; _i < requested_1.length; _i++) {
242
+ var value = requested_1[_i];
243
+ if (!available.includes(value)) {
244
+ throw new error_1.MessagevisorCLIError("Unknown ".concat(label, " \"").concat(value, "\". Available ").concat(label, "s: ").concat(available.join(", ") || "none", "."));
245
+ }
246
+ }
247
+ }
248
+ function addLocale(locales, locale) {
249
+ if (!locales.includes(locale)) {
250
+ locales.push(locale);
251
+ }
252
+ }
253
+ function shouldIncludeForUntranslatedFilter(translations, locales, selectedLocales, options) {
254
+ if (!options.onlyUntranslated && !options.onlyDirectlyUntranslated) {
255
+ return true;
256
+ }
257
+ return selectedLocales.some(function (locale) {
258
+ if (options.onlyDirectlyUntranslated) {
259
+ return typeof (translations === null || translations === void 0 ? void 0 : translations[locale]) === "undefined";
260
+ }
261
+ return typeof resolveTranslation(translations, locale, locales) === "undefined";
262
+ });
263
+ }
264
+ function collectRows(projectConfig, datasource, options, set) {
265
+ return __awaiter(this, void 0, void 0, function () {
266
+ function createRow(messageKey, description, translations, isOverride) {
267
+ if (!shouldIncludeForUntranslatedFilter(translations, locales, selectedLocales, options)) {
268
+ return;
269
+ }
270
+ rows.push({
271
+ set: set,
272
+ messageKey: messageKey,
273
+ isOverride: isOverride,
274
+ messageDescription: options.withoutDescription ? undefined : description || "",
275
+ translations: Object.fromEntries(selectedLocales.map(function (locale) { return [
276
+ locale,
277
+ resolveTranslationStatus(translations, locale, locales).value,
278
+ ]; })),
279
+ statuses: Object.fromEntries(selectedLocales.map(function (locale) { return [
280
+ locale,
281
+ resolveTranslationStatus(translations, locale, locales).status,
282
+ ]; })),
283
+ });
284
+ }
285
+ var requestedLocales, requestedTargets, includeMessages, excludeMessages, _a, localeKeys, targetKeys, messageKeys, datasourceLocales, _b, locales, targets, messages, selectedMessageKeys, selectedLocales, _i, requestedTargets_1, targetKey, target, targetIncludeMessages, targetExcludeMessages, targetLocales, _c, targetLocales_1, locale, _d, messageKeys_1, messageKey, _e, _f, messageKey, _g, _h, messageKey, _j, _k, locale, rows, _l, _m, messageKey, message, messageDescription, _o, _p, override, overrideDescription;
286
+ var _q, _r, _s, _t;
287
+ return __generator(this, function (_u) {
288
+ switch (_u.label) {
289
+ case 0:
290
+ requestedLocales = toArray(options.locale);
291
+ requestedTargets = toArray(options.target);
292
+ includeMessages = toArray(options.includeMessages);
293
+ excludeMessages = toArray(options.excludeMessages);
294
+ return [4 /*yield*/, Promise.all([
295
+ datasource.listLocales(),
296
+ datasource.listTargets(),
297
+ datasource.listMessages(),
298
+ ])];
299
+ case 1:
300
+ _a = _u.sent(), localeKeys = _a[0], targetKeys = _a[1], messageKeys = _a[2];
301
+ datasourceLocales = options.allowMissingLocales
302
+ ? requestedLocales.filter(function (locale) { return localeKeys.includes(locale); })
303
+ : requestedLocales;
304
+ if (!options.allowMissingLocales) {
305
+ assertKnownValues("locale", requestedLocales, localeKeys);
306
+ }
307
+ assertKnownValues("target", requestedTargets, targetKeys);
308
+ return [4 /*yield*/, Promise.all([
309
+ readAll(localeKeys, function (key) { return datasource.readLocale(key); }),
310
+ readAll(targetKeys, function (key) { return datasource.readTarget(key); }),
311
+ readAll(messageKeys, function (key) { return datasource.readMessage(key); }),
312
+ ])];
313
+ case 2:
314
+ _b = _u.sent(), locales = _b[0], targets = _b[1], messages = _b[2];
315
+ selectedMessageKeys = new Set();
316
+ selectedLocales = [];
317
+ if (requestedTargets.length > 0) {
318
+ for (_i = 0, requestedTargets_1 = requestedTargets; _i < requestedTargets_1.length; _i++) {
319
+ targetKey = requestedTargets_1[_i];
320
+ target = targets[targetKey];
321
+ targetIncludeMessages = ((_q = target.includeMessages) === null || _q === void 0 ? void 0 : _q.length) ? target.includeMessages : ["*"];
322
+ targetExcludeMessages = target.excludeMessages || [];
323
+ targetLocales = ((_r = target.locales) === null || _r === void 0 ? void 0 : _r.length) ? target.locales : localeKeys;
324
+ for (_c = 0, targetLocales_1 = targetLocales; _c < targetLocales_1.length; _c++) {
325
+ locale = targetLocales_1[_c];
326
+ if (datasourceLocales.length === 0 || datasourceLocales.includes(locale)) {
327
+ addLocale(selectedLocales, locale);
328
+ }
329
+ }
330
+ for (_d = 0, messageKeys_1 = messageKeys; _d < messageKeys_1.length; _d++) {
331
+ messageKey = messageKeys_1[_d];
332
+ if (matchesPattern(messageKey, targetIncludeMessages) &&
333
+ !matchesPattern(messageKey, targetExcludeMessages)) {
334
+ selectedMessageKeys.add(messageKey);
335
+ }
336
+ }
337
+ }
338
+ }
339
+ else {
340
+ messageKeys.forEach(function (key) { return selectedMessageKeys.add(key); });
341
+ }
342
+ if (includeMessages.length > 0) {
343
+ for (_e = 0, _f = Array.from(selectedMessageKeys); _e < _f.length; _e++) {
344
+ messageKey = _f[_e];
345
+ if (!matchesPattern(messageKey, includeMessages)) {
346
+ selectedMessageKeys.delete(messageKey);
347
+ }
348
+ }
349
+ }
350
+ for (_g = 0, _h = Array.from(selectedMessageKeys); _g < _h.length; _g++) {
351
+ messageKey = _h[_g];
352
+ if (matchesPattern(messageKey, excludeMessages)) {
353
+ selectedMessageKeys.delete(messageKey);
354
+ }
355
+ }
356
+ if (selectedLocales.length === 0 && requestedTargets.length === 0) {
357
+ for (_j = 0, _k = requestedLocales.length > 0 ? datasourceLocales : localeKeys; _j < _k.length; _j++) {
358
+ locale = _k[_j];
359
+ addLocale(selectedLocales, locale);
360
+ }
361
+ }
362
+ rows = [];
363
+ for (_l = 0, _m = Array.from(selectedMessageKeys).sort(); _l < _m.length; _l++) {
364
+ messageKey = _m[_l];
365
+ message = messages[messageKey];
366
+ if (!message || !isAvailable(message)) {
367
+ continue;
368
+ }
369
+ messageDescription = (_s = message.summary) !== null && _s !== void 0 ? _s : message.description;
370
+ createRow(messageKey, messageDescription, message.translations, false);
371
+ if (options.excludeOverrides) {
372
+ continue;
373
+ }
374
+ for (_o = 0, _p = message.overrides || []; _o < _p.length; _o++) {
375
+ override = _p[_o];
376
+ overrideDescription = (_t = override.summary) !== null && _t !== void 0 ? _t : override.description;
377
+ createRow("".concat(messageKey).concat(projectConfig.exportOverrideKeySeparator).concat(override.key), overrideDescription, override.translations, true);
378
+ }
379
+ }
380
+ return [2 /*return*/, {
381
+ rows: rows,
382
+ locales: selectedLocales,
383
+ }];
384
+ }
385
+ });
386
+ });
387
+ }
388
+ function createCsv(rows, locales, options, withSets) {
389
+ var localeHeaders = locales.flatMap(function (locale) {
390
+ return options.withoutStatus ? [locale] : [locale, "".concat(locale, "Status")];
391
+ });
392
+ var headers = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], (withSets ? ["set"] : []), true), [
393
+ "messageKey"
394
+ ], false), (options.withoutDescription ? [] : ["messageDescription"]), true), localeHeaders, true);
395
+ return toCsv(headers, rows.map(function (row) { return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], (withSets ? [row.set || ""] : []), true), [
396
+ row.messageKey
397
+ ], false), (options.withoutDescription ? [] : [row.messageDescription || ""]), true), locales.flatMap(function (locale) {
398
+ return options.withoutStatus
399
+ ? [row.translations[locale] || ""]
400
+ : [row.translations[locale] || "", row.statuses[locale] || "missing"];
401
+ }), true); }), {
402
+ delimiter: options.delimiter,
403
+ bom: options.bom,
404
+ lineEnding: options.lineEnding,
405
+ });
406
+ }
407
+ function createExportSummary(rows, locales) {
408
+ return {
409
+ messageRows: rows.filter(function (row) { return !row.isOverride; }).length,
410
+ overrideRows: rows.filter(function (row) { return row.isOverride; }).length,
411
+ totalRows: rows.length,
412
+ locales: locales,
413
+ sets: Array.from(new Set(rows.map(function (row) { return row.set; }).filter(function (set) { return Boolean(set); }))),
414
+ };
415
+ }
416
+ function finishExport(projectConfig, rows, locales, options, withSets) {
417
+ return __awaiter(this, void 0, void 0, function () {
418
+ var csv, summary, filePath;
419
+ return __generator(this, function (_a) {
420
+ switch (_a.label) {
421
+ case 0:
422
+ csv = createCsv(rows, locales, options, withSets);
423
+ summary = createExportSummary(rows, locales);
424
+ if (options.print) {
425
+ return [2 /*return*/, {
426
+ csv: csv,
427
+ rows: rows,
428
+ locales: locales,
429
+ summary: summary,
430
+ }];
431
+ }
432
+ return [4 /*yield*/, getExportFilePath(projectConfig, options)];
433
+ case 1:
434
+ filePath = _a.sent();
435
+ return [4 /*yield*/, fs.promises.writeFile(filePath, csv)];
436
+ case 2:
437
+ _a.sent();
438
+ return [2 /*return*/, {
439
+ csv: csv,
440
+ filePath: filePath,
441
+ rows: rows,
442
+ locales: locales,
443
+ summary: summary,
444
+ }];
445
+ }
446
+ });
447
+ });
448
+ }
449
+ function assertExportOptions(options) {
450
+ if (options.onlyUntranslated && options.onlyDirectlyUntranslated) {
451
+ throw new error_1.MessagevisorCLIError("Use either --onlyUntranslated or --onlyDirectlyUntranslated, not both.");
452
+ }
453
+ if (typeof options.delimiter !== "undefined" && options.delimiter.length !== 1) {
454
+ throw new error_1.MessagevisorCLIError("--delimiter must be a single character.");
455
+ }
456
+ if (options.print && options.output) {
457
+ throw new error_1.MessagevisorCLIError("Use either --print or --output, not both.");
458
+ }
459
+ }
460
+ function exportProject(projectConfig_1, datasource_1) {
461
+ return __awaiter(this, arguments, void 0, function (projectConfig, datasource, options) {
462
+ var collected;
463
+ if (options === void 0) { options = {}; }
464
+ return __generator(this, function (_a) {
465
+ switch (_a.label) {
466
+ case 0:
467
+ assertExportOptions(options);
468
+ if (!projectConfig.sets && toArray(options.set).length > 0) {
469
+ throw new error_1.MessagevisorCLIError("--set can only be used when `sets: true` is configured.");
470
+ }
471
+ return [4 /*yield*/, collectRows(projectConfig, datasource, options)];
472
+ case 1:
473
+ collected = _a.sent();
474
+ return [2 /*return*/, finishExport(projectConfig, collected.rows, collected.locales, options, false)];
475
+ }
476
+ });
477
+ });
478
+ }
479
+ function exportProjectSets(projectConfig_1, datasource_1) {
480
+ return __awaiter(this, arguments, void 0, function (projectConfig, datasource, options) {
481
+ var executions, requestedSets, selectedExecutions, rows, requestedLocales, locales, availableLocales, _i, selectedExecutions_1, execution, localeKeys, _a, selectedExecutions_2, execution, collected;
482
+ if (options === void 0) { options = {}; }
483
+ return __generator(this, function (_b) {
484
+ switch (_b.label) {
485
+ case 0:
486
+ assertExportOptions(options);
487
+ if (!projectConfig.sets) {
488
+ return [2 /*return*/, exportProject(projectConfig, datasource, options)];
489
+ }
490
+ return [4 /*yield*/, (0, sets_1.getProjectSetExecutions)(projectConfig, datasource, undefined)];
491
+ case 1:
492
+ executions = _b.sent();
493
+ requestedSets = toArray(options.set);
494
+ selectedExecutions = requestedSets.length > 0
495
+ ? executions.filter(function (execution) { return requestedSets.includes(execution.set); })
496
+ : executions;
497
+ assertKnownValues("set", requestedSets, executions.map(function (execution) { return execution.set; }));
498
+ rows = [];
499
+ requestedLocales = toArray(options.locale);
500
+ locales = [];
501
+ availableLocales = [];
502
+ _i = 0, selectedExecutions_1 = selectedExecutions;
503
+ _b.label = 2;
504
+ case 2:
505
+ if (!(_i < selectedExecutions_1.length)) return [3 /*break*/, 5];
506
+ execution = selectedExecutions_1[_i];
507
+ return [4 /*yield*/, execution.datasource.listLocales()];
508
+ case 3:
509
+ localeKeys = _b.sent();
510
+ localeKeys.forEach(function (locale) { return addLocale(availableLocales, locale); });
511
+ _b.label = 4;
512
+ case 4:
513
+ _i++;
514
+ return [3 /*break*/, 2];
515
+ case 5:
516
+ assertKnownValues("locale", requestedLocales, availableLocales);
517
+ requestedLocales.forEach(function (locale) { return addLocale(locales, locale); });
518
+ _a = 0, selectedExecutions_2 = selectedExecutions;
519
+ _b.label = 6;
520
+ case 6:
521
+ if (!(_a < selectedExecutions_2.length)) return [3 /*break*/, 9];
522
+ execution = selectedExecutions_2[_a];
523
+ return [4 /*yield*/, collectRows(projectConfig, execution.datasource, __assign(__assign({}, options), { allowMissingLocales: true }), execution.set)];
524
+ case 7:
525
+ collected = _b.sent();
526
+ rows.push.apply(rows, collected.rows);
527
+ if (requestedLocales.length === 0) {
528
+ collected.locales.forEach(function (locale) { return addLocale(locales, locale); });
529
+ }
530
+ _b.label = 8;
531
+ case 8:
532
+ _a++;
533
+ return [3 /*break*/, 6];
534
+ case 9: return [2 /*return*/, finishExport(projectConfig, rows, locales, options, true)];
535
+ }
536
+ });
537
+ });
538
+ }
539
+ function printExportResult(result, print) {
540
+ if (print) {
541
+ console.log(result.csv);
542
+ return;
543
+ }
544
+ console.log("CSV file generated successfully at ".concat(result.filePath));
545
+ console.log("Rows: ".concat(result.summary.totalRows, " total"));
546
+ console.log("Messages: ".concat(result.summary.messageRows));
547
+ console.log("Overrides: ".concat(result.summary.overrideRows));
548
+ console.log("Locales: ".concat(result.summary.locales.join(", ") || "(none)"));
549
+ if (result.summary.sets.length > 0) {
550
+ console.log("Sets: ".concat(result.summary.sets.join(", ")));
551
+ }
552
+ }
553
+ exports.exportPlugin = {
554
+ command: "export",
555
+ handler: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
556
+ var result, error_2;
557
+ var projectConfig = _b.projectConfig, datasource = _b.datasource, parsed = _b.parsed;
558
+ return __generator(this, function (_c) {
559
+ switch (_c.label) {
560
+ case 0:
561
+ _c.trys.push([0, 2, , 3]);
562
+ return [4 /*yield*/, exportProjectSets(projectConfig, datasource, {
563
+ set: parsed.set,
564
+ locale: parsed.locale,
565
+ target: parsed.target,
566
+ includeMessages: parsed.includeMessages,
567
+ excludeMessages: parsed.excludeMessages,
568
+ excludeOverrides: parsed.excludeOverrides,
569
+ withoutDescription: parsed.withoutDescription,
570
+ withoutStatus: parsed.withoutStatus,
571
+ onlyUntranslated: parsed.onlyUntranslated,
572
+ onlyDirectlyUntranslated: parsed.onlyDirectlyUntranslated,
573
+ print: parsed.print,
574
+ output: parsed.output,
575
+ force: parsed.force,
576
+ delimiter: parsed.delimiter,
577
+ bom: parsed.bom,
578
+ lineEnding: parsed.lineEnding,
579
+ })];
580
+ case 1:
581
+ result = _c.sent();
582
+ printExportResult(result, parsed.print);
583
+ return [3 /*break*/, 3];
584
+ case 2:
585
+ error_2 = _c.sent();
586
+ if ((0, error_1.printMessagevisorCLIError)(error_2)) {
587
+ return [2 /*return*/, false];
588
+ }
589
+ throw error_2;
590
+ case 3: return [2 /*return*/];
591
+ }
592
+ });
593
+ }); },
594
+ examples: [
595
+ { command: "export", description: "export translations to CSV" },
596
+ {
597
+ command: "export --locale=en-US --target=web",
598
+ description: "export translations for one locale and target",
599
+ },
600
+ {
601
+ command: "export --locale=en --locale=nl --target=web",
602
+ description: "export multiple locales, for example source plus target",
603
+ },
604
+ {
605
+ command: "export --print",
606
+ description: "print exported CSV to the console",
607
+ },
608
+ ],
609
+ };
610
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exporter/index.ts"],"names":[],"mappings":"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"}