@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,8 @@
1
+ export declare const listPlugin: {
2
+ command: string;
3
+ handler: ({ datasource, parsed }: any) => Promise<boolean>;
4
+ examples: {
5
+ command: string;
6
+ description: string;
7
+ }[];
8
+ };
@@ -0,0 +1,524 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ 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);
24
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ 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;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.listPlugin = void 0;
51
+ var error_1 = require("../error");
52
+ var sets_1 = require("../sets");
53
+ var matrix_1 = require("../tester/matrix");
54
+ function toArray(value) {
55
+ if (typeof value === "undefined") {
56
+ return [];
57
+ }
58
+ return Array.isArray(value) ? value : [String(value)];
59
+ }
60
+ function toRegex(pattern) {
61
+ return new RegExp(pattern, "i");
62
+ }
63
+ function matchesPattern(key, patterns) {
64
+ if (!patterns || patterns.length === 0) {
65
+ return false;
66
+ }
67
+ return patterns.some(function (pattern) {
68
+ var escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
69
+ return new RegExp("^".concat(escaped, "$")).test(key);
70
+ });
71
+ }
72
+ function parseBooleanOption(name, value) {
73
+ if (value === true || value === "true") {
74
+ return true;
75
+ }
76
+ if (value === false || value === "false") {
77
+ return false;
78
+ }
79
+ throw new error_1.MessagevisorCLIError("Invalid ".concat(name, ": expected true or false"));
80
+ }
81
+ function matchesOptionalBoolean(optionValue, actualValue, optionName, defaultValue) {
82
+ if (defaultValue === void 0) { defaultValue = false; }
83
+ if (typeof optionValue === "undefined") {
84
+ return true;
85
+ }
86
+ return (actualValue !== null && actualValue !== void 0 ? actualValue : defaultValue) === parseBooleanOption(optionName, optionValue);
87
+ }
88
+ function hasFormats(formats) {
89
+ return typeof formats !== "undefined";
90
+ }
91
+ function hasContext(context) {
92
+ return typeof context !== "undefined";
93
+ }
94
+ function hasMeta(meta) {
95
+ return typeof meta !== "undefined";
96
+ }
97
+ function hasOverrides(overrides) {
98
+ return Array.isArray(overrides) && overrides.length > 0;
99
+ }
100
+ function getEntitiesWithTests(datasource) {
101
+ return __awaiter(this, void 0, void 0, function () {
102
+ var messages, locales, segments, targets, testKeys, _i, testKeys_1, testKey, test_1;
103
+ return __generator(this, function (_a) {
104
+ switch (_a.label) {
105
+ case 0:
106
+ messages = new Set();
107
+ locales = new Set();
108
+ segments = new Set();
109
+ targets = new Set();
110
+ return [4 /*yield*/, datasource.listTests()];
111
+ case 1:
112
+ testKeys = _a.sent();
113
+ _i = 0, testKeys_1 = testKeys;
114
+ _a.label = 2;
115
+ case 2:
116
+ if (!(_i < testKeys_1.length)) return [3 /*break*/, 5];
117
+ testKey = testKeys_1[_i];
118
+ return [4 /*yield*/, datasource.readTest(testKey)];
119
+ case 3:
120
+ test_1 = (_a.sent());
121
+ if ("message" in test_1) {
122
+ messages.add(test_1.message);
123
+ return [3 /*break*/, 4];
124
+ }
125
+ if ("locale" in test_1) {
126
+ locales.add(test_1.locale);
127
+ return [3 /*break*/, 4];
128
+ }
129
+ if ("segment" in test_1) {
130
+ segments.add(test_1.segment);
131
+ return [3 /*break*/, 4];
132
+ }
133
+ if ("target" in test_1) {
134
+ targets.add(test_1.target);
135
+ }
136
+ _a.label = 4;
137
+ case 4:
138
+ _i++;
139
+ return [3 /*break*/, 2];
140
+ case 5: return [2 /*return*/, {
141
+ messages: Array.from(messages).sort(),
142
+ locales: Array.from(locales).sort(),
143
+ segments: Array.from(segments).sort(),
144
+ targets: Array.from(targets).sort(),
145
+ }];
146
+ }
147
+ });
148
+ });
149
+ }
150
+ function getSelectedEntityType(options) {
151
+ var selected = ["messages", "locales", "segments", "attributes", "targets", "tests"].filter(function (entityType) { return Boolean(options[entityType]); });
152
+ if (selected.length === 0) {
153
+ throw new error_1.MessagevisorCLIError("Nothing to list. Pass exactly one of --messages, --locales, --segments, --attributes, --targets, or --tests.");
154
+ }
155
+ if (selected.length > 1) {
156
+ throw new error_1.MessagevisorCLIError("Pass exactly one of --messages, --locales, --segments, --attributes, --targets, or --tests.");
157
+ }
158
+ return selected[0];
159
+ }
160
+ function validateFilters(entityType, options) {
161
+ if ((options.withTests || options.withoutTests) && entityType === "attributes") {
162
+ throw new error_1.MessagevisorCLIError("--with-tests and --without-tests are not supported for attributes.");
163
+ }
164
+ }
165
+ function listEntityKeys(datasource, entityType) {
166
+ return __awaiter(this, void 0, void 0, function () {
167
+ return __generator(this, function (_a) {
168
+ if (entityType === "messages")
169
+ return [2 /*return*/, datasource.listMessages()];
170
+ if (entityType === "locales")
171
+ return [2 /*return*/, datasource.listLocales()];
172
+ if (entityType === "segments")
173
+ return [2 /*return*/, datasource.listSegments()];
174
+ if (entityType === "attributes")
175
+ return [2 /*return*/, datasource.listAttributes()];
176
+ if (entityType === "tests")
177
+ return [2 /*return*/, datasource.listTests()];
178
+ return [2 /*return*/, datasource.listTargets()];
179
+ });
180
+ });
181
+ }
182
+ function readEntity(datasource, entityType, key) {
183
+ return __awaiter(this, void 0, void 0, function () {
184
+ return __generator(this, function (_a) {
185
+ switch (_a.label) {
186
+ case 0:
187
+ if (!(entityType === "messages")) return [3 /*break*/, 2];
188
+ return [4 /*yield*/, datasource.readMessage(key)];
189
+ case 1: return [2 /*return*/, (_a.sent())];
190
+ case 2:
191
+ if (!(entityType === "locales")) return [3 /*break*/, 4];
192
+ return [4 /*yield*/, datasource.readLocale(key)];
193
+ case 3: return [2 /*return*/, (_a.sent())];
194
+ case 4:
195
+ if (!(entityType === "segments")) return [3 /*break*/, 6];
196
+ return [4 /*yield*/, datasource.readSegment(key)];
197
+ case 5: return [2 /*return*/, (_a.sent())];
198
+ case 6:
199
+ if (!(entityType === "attributes")) return [3 /*break*/, 8];
200
+ return [4 /*yield*/, datasource.readAttribute(key)];
201
+ case 7: return [2 /*return*/, (_a.sent())];
202
+ case 8:
203
+ if (!(entityType === "tests")) return [3 /*break*/, 10];
204
+ return [4 /*yield*/, datasource.readTest(key)];
205
+ case 9: return [2 /*return*/, (_a.sent())];
206
+ case 10: return [4 /*yield*/, datasource.readTarget(key)];
207
+ case 11: return [2 /*return*/, (_a.sent())];
208
+ }
209
+ });
210
+ });
211
+ }
212
+ function getTargetFilteredMessageKeys(datasource, targetOptions) {
213
+ return __awaiter(this, void 0, void 0, function () {
214
+ var targetKeys, allMessageKeys, selected, _i, targetKeys_1, targetKey, target, includeMessages, excludeMessages, _a, allMessageKeys_1, messageKey;
215
+ var _b;
216
+ return __generator(this, function (_c) {
217
+ switch (_c.label) {
218
+ case 0:
219
+ targetKeys = toArray(targetOptions);
220
+ if (targetKeys.length === 0) {
221
+ return [2 /*return*/, undefined];
222
+ }
223
+ return [4 /*yield*/, datasource.listMessages()];
224
+ case 1:
225
+ allMessageKeys = _c.sent();
226
+ selected = new Set();
227
+ _i = 0, targetKeys_1 = targetKeys;
228
+ _c.label = 2;
229
+ case 2:
230
+ if (!(_i < targetKeys_1.length)) return [3 /*break*/, 5];
231
+ targetKey = targetKeys_1[_i];
232
+ return [4 /*yield*/, datasource.readTarget(targetKey)];
233
+ case 3:
234
+ target = (_c.sent());
235
+ includeMessages = ((_b = target.includeMessages) === null || _b === void 0 ? void 0 : _b.length) ? target.includeMessages : ["*"];
236
+ excludeMessages = target.excludeMessages || [];
237
+ for (_a = 0, allMessageKeys_1 = allMessageKeys; _a < allMessageKeys_1.length; _a++) {
238
+ messageKey = allMessageKeys_1[_a];
239
+ if (matchesPattern(messageKey, includeMessages) &&
240
+ !matchesPattern(messageKey, excludeMessages)) {
241
+ selected.add(messageKey);
242
+ }
243
+ }
244
+ _c.label = 4;
245
+ case 4:
246
+ _i++;
247
+ return [3 /*break*/, 2];
248
+ case 5: return [2 /*return*/, selected];
249
+ }
250
+ });
251
+ });
252
+ }
253
+ function applySharedFilters(item, entityType, options, entitiesWithTests) {
254
+ if (options.keyPattern && !toRegex(options.keyPattern).test(item.key)) {
255
+ return false;
256
+ }
257
+ if (options.description) {
258
+ var description = item.entity.description || "";
259
+ if (!toRegex(options.description).test(description)) {
260
+ return false;
261
+ }
262
+ }
263
+ if ("promotable" in item.entity) {
264
+ var promotable = item.entity.promotable;
265
+ if (!matchesOptionalBoolean(options.promotable, promotable, "--promotable")) {
266
+ return false;
267
+ }
268
+ }
269
+ if (options.withTests || options.withoutTests) {
270
+ var entityKeysWithTests = (entitiesWithTests === null || entitiesWithTests === void 0 ? void 0 : entitiesWithTests[entityType]) || [];
271
+ var hasTests = entityKeysWithTests.includes(item.key);
272
+ if (options.withTests && !hasTests) {
273
+ return false;
274
+ }
275
+ if (options.withoutTests && hasTests) {
276
+ return false;
277
+ }
278
+ }
279
+ return true;
280
+ }
281
+ function applyEntitySpecificFilters(item, entityType, options) {
282
+ var _a, _b;
283
+ if (entityType === "tests") {
284
+ return true;
285
+ }
286
+ if (entityType === "messages") {
287
+ var message = item.entity;
288
+ if (!matchesOptionalBoolean(options.archived, message.archived, "--archived"))
289
+ return false;
290
+ if (!matchesOptionalBoolean(options.deprecated, message.deprecated, "--deprecated"))
291
+ return false;
292
+ if (options.withOverrides && !hasOverrides(message.overrides))
293
+ return false;
294
+ if (options.withoutOverrides && hasOverrides(message.overrides))
295
+ return false;
296
+ if (options.withMeta && !hasMeta(message.meta))
297
+ return false;
298
+ if (options.withoutMeta && hasMeta(message.meta))
299
+ return false;
300
+ if (options.locale && typeof ((_a = message.translations) === null || _a === void 0 ? void 0 : _a[options.locale]) === "undefined")
301
+ return false;
302
+ return true;
303
+ }
304
+ if (entityType === "locales") {
305
+ var locale = item.entity;
306
+ if (options.withFormats && !hasFormats(locale.formats))
307
+ return false;
308
+ if (options.withoutFormats && hasFormats(locale.formats))
309
+ return false;
310
+ if (options.inheritFormatsFrom && locale.inheritFormatsFrom !== options.inheritFormatsFrom)
311
+ return false;
312
+ if (options.inheritTranslationsFrom &&
313
+ locale.inheritTranslationsFrom !== options.inheritTranslationsFrom) {
314
+ return false;
315
+ }
316
+ return true;
317
+ }
318
+ if (entityType === "segments") {
319
+ return matchesOptionalBoolean(options.archived, item.entity.archived, "--archived");
320
+ }
321
+ if (entityType === "attributes") {
322
+ var attribute = item.entity;
323
+ if (!matchesOptionalBoolean(options.archived, attribute.archived, "--archived"))
324
+ return false;
325
+ if (options.type && attribute.type !== options.type)
326
+ return false;
327
+ return true;
328
+ }
329
+ var target = item.entity;
330
+ if (options.locale && !((_b = target.locales) === null || _b === void 0 ? void 0 : _b.includes(options.locale)))
331
+ return false;
332
+ if (options.withContext && !hasContext(target.context))
333
+ return false;
334
+ if (options.withoutContext && hasContext(target.context))
335
+ return false;
336
+ if (options.withFormats && !hasFormats(target.formats))
337
+ return false;
338
+ if (options.withoutFormats && hasFormats(target.formats))
339
+ return false;
340
+ return true;
341
+ }
342
+ function listEntities(datasource, options, entityType) {
343
+ return __awaiter(this, void 0, void 0, function () {
344
+ var entityKeys, requiresTestScan, entitiesWithTests, _a, targetFilteredMessageKeys, _b, result, _i, entityKeys_1, key, entity, item, test_2;
345
+ return __generator(this, function (_c) {
346
+ switch (_c.label) {
347
+ case 0:
348
+ validateFilters(entityType, options);
349
+ return [4 /*yield*/, listEntityKeys(datasource, entityType)];
350
+ case 1:
351
+ entityKeys = _c.sent();
352
+ requiresTestScan = Boolean(options.withTests || options.withoutTests);
353
+ if (!requiresTestScan) return [3 /*break*/, 3];
354
+ return [4 /*yield*/, getEntitiesWithTests(datasource)];
355
+ case 2:
356
+ _a = _c.sent();
357
+ return [3 /*break*/, 4];
358
+ case 3:
359
+ _a = undefined;
360
+ _c.label = 4;
361
+ case 4:
362
+ entitiesWithTests = _a;
363
+ if (!(entityType === "messages")) return [3 /*break*/, 6];
364
+ return [4 /*yield*/, getTargetFilteredMessageKeys(datasource, options.target)];
365
+ case 5:
366
+ _b = _c.sent();
367
+ return [3 /*break*/, 7];
368
+ case 6:
369
+ _b = undefined;
370
+ _c.label = 7;
371
+ case 7:
372
+ targetFilteredMessageKeys = _b;
373
+ result = [];
374
+ _i = 0, entityKeys_1 = entityKeys;
375
+ _c.label = 8;
376
+ case 8:
377
+ if (!(_i < entityKeys_1.length)) return [3 /*break*/, 11];
378
+ key = entityKeys_1[_i];
379
+ if (targetFilteredMessageKeys && !targetFilteredMessageKeys.has(key)) {
380
+ return [3 /*break*/, 10];
381
+ }
382
+ return [4 /*yield*/, readEntity(datasource, entityType, key)];
383
+ case 9:
384
+ entity = _c.sent();
385
+ item = {
386
+ key: key,
387
+ entity: entity,
388
+ };
389
+ if (!applySharedFilters(item, entityType, options, entitiesWithTests)) {
390
+ return [3 /*break*/, 10];
391
+ }
392
+ if (!applyEntitySpecificFilters(item, entityType, options)) {
393
+ return [3 /*break*/, 10];
394
+ }
395
+ if (entityType === "tests" && options.applyMatrix) {
396
+ test_2 = entity;
397
+ if ("message" in test_2) {
398
+ result.push({
399
+ key: key,
400
+ entity: __assign(__assign({}, test_2), { assertions: (0, matrix_1.expandMessageAssertions)(test_2.assertions || []) }),
401
+ });
402
+ return [3 /*break*/, 10];
403
+ }
404
+ if ("segment" in test_2) {
405
+ result.push({
406
+ key: key,
407
+ entity: __assign(__assign({}, test_2), { assertions: (0, matrix_1.expandSegmentAssertions)(test_2.assertions || []) }),
408
+ });
409
+ return [3 /*break*/, 10];
410
+ }
411
+ if ("locale" in test_2) {
412
+ result.push({
413
+ key: key,
414
+ entity: __assign(__assign({}, test_2), { assertions: (0, matrix_1.expandLocaleAssertions)(test_2.assertions || []) }),
415
+ });
416
+ return [3 /*break*/, 10];
417
+ }
418
+ result.push({
419
+ key: key,
420
+ entity: __assign(__assign({}, test_2), { assertions: (0, matrix_1.expandTargetAssertions)(test_2.assertions || []) }),
421
+ });
422
+ return [3 /*break*/, 10];
423
+ }
424
+ result.push(item);
425
+ _c.label = 10;
426
+ case 10:
427
+ _i++;
428
+ return [3 /*break*/, 8];
429
+ case 11: return [2 /*return*/, result.map(function (_a) {
430
+ var key = _a.key, entity = _a.entity;
431
+ return (__assign({ key: key }, entity));
432
+ })];
433
+ }
434
+ });
435
+ });
436
+ }
437
+ function ucfirst(str) {
438
+ return str.charAt(0).toUpperCase() + str.slice(1);
439
+ }
440
+ function printEntityList(entityType, result) {
441
+ if (result.length === 0) {
442
+ console.log("No ".concat(entityType, " found."));
443
+ return;
444
+ }
445
+ console.log("\n".concat(ucfirst(entityType), ":\n"));
446
+ for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {
447
+ var item = result_1[_i];
448
+ console.log("- ".concat(item.key));
449
+ }
450
+ console.log("\nFound ".concat(result.length, " ").concat(entityType, "."));
451
+ }
452
+ exports.listPlugin = {
453
+ command: "list",
454
+ handler: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
455
+ var projectConfig, entityType, executions, result_2, _i, executions_1, execution, _c, _d, result, error_2;
456
+ var datasource = _b.datasource, parsed = _b.parsed;
457
+ return __generator(this, function (_e) {
458
+ switch (_e.label) {
459
+ case 0:
460
+ _e.trys.push([0, 10, , 11]);
461
+ projectConfig = datasource.getConfig();
462
+ entityType = getSelectedEntityType(parsed);
463
+ (0, sets_1.assertProjectSetJsonSelection)(projectConfig, parsed.set, parsed.json);
464
+ if (!projectConfig.sets) return [3 /*break*/, 8];
465
+ return [4 /*yield*/, (0, sets_1.getProjectSetExecutions)(projectConfig, datasource, parsed.set)];
466
+ case 1:
467
+ executions = _e.sent();
468
+ if (!parsed.json) return [3 /*break*/, 3];
469
+ return [4 /*yield*/, listEntities(executions[0].datasource, parsed, entityType)];
470
+ case 2:
471
+ result_2 = _e.sent();
472
+ console.log(parsed.pretty ? JSON.stringify(result_2, null, 2) : JSON.stringify(result_2));
473
+ return [2 /*return*/];
474
+ case 3:
475
+ _i = 0, executions_1 = executions;
476
+ _e.label = 4;
477
+ case 4:
478
+ if (!(_i < executions_1.length)) return [3 /*break*/, 7];
479
+ execution = executions_1[_i];
480
+ console.log("\nSet \"".concat(execution.set, "\":"));
481
+ _c = printEntityList;
482
+ _d = [entityType];
483
+ return [4 /*yield*/, listEntities(execution.datasource, parsed, entityType)];
484
+ case 5:
485
+ _c.apply(void 0, _d.concat([_e.sent()]));
486
+ console.log("");
487
+ _e.label = 6;
488
+ case 6:
489
+ _i++;
490
+ return [3 /*break*/, 4];
491
+ case 7: return [2 /*return*/];
492
+ case 8: return [4 /*yield*/, listEntities(datasource, parsed, entityType)];
493
+ case 9:
494
+ result = _e.sent();
495
+ if (parsed.json) {
496
+ console.log(parsed.pretty ? JSON.stringify(result, null, 2) : JSON.stringify(result));
497
+ return [2 /*return*/];
498
+ }
499
+ printEntityList(entityType, result);
500
+ return [3 /*break*/, 11];
501
+ case 10:
502
+ error_2 = _e.sent();
503
+ if ((0, error_1.printMessagevisorCLIError)(error_2)) {
504
+ return [2 /*return*/, false];
505
+ }
506
+ throw error_2;
507
+ case 11: return [2 /*return*/];
508
+ }
509
+ });
510
+ }); },
511
+ examples: [
512
+ { command: "list --messages", description: "list messages" },
513
+ { command: "list --messages --target=web", description: "list messages covered by a target" },
514
+ { command: "list --locales", description: "list locales" },
515
+ { command: "list --segments", description: "list segments" },
516
+ { command: "list --attributes", description: "list attributes" },
517
+ { command: "list --targets", description: "list targets" },
518
+ {
519
+ command: "list --tests --applyMatrix --json",
520
+ description: "list tests with matrix-expanded assertions as JSON",
521
+ },
522
+ ],
523
+ };
524
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/list/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Matrix } from "@messagevisor/types";
2
+ export type MatrixCombination = Record<string, unknown>;
3
+ export declare function getMatrixCombinations(matrix: Matrix): MatrixCombination[];
4
+ export declare function applyCombinationToValue(value: unknown, combination: MatrixCombination): unknown;
package/lib/matrix.js ADDED
@@ -0,0 +1,66 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.getMatrixCombinations = getMatrixCombinations;
15
+ exports.applyCombinationToValue = applyCombinationToValue;
16
+ function generateCombinations(keys, matrix, index, previous, combinations) {
17
+ var _a;
18
+ var key = keys[index];
19
+ var values = matrix[key] || [];
20
+ for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {
21
+ var value = values_1[_i];
22
+ var combination = __assign(__assign({}, previous), (_a = {}, _a[key] = value, _a));
23
+ if (index === keys.length - 1) {
24
+ combinations.push(combination);
25
+ }
26
+ else {
27
+ generateCombinations(keys, matrix, index + 1, combination, combinations);
28
+ }
29
+ }
30
+ }
31
+ function getMatrixCombinations(matrix) {
32
+ var keys = Object.keys(matrix || {});
33
+ if (keys.length === 0) {
34
+ return [];
35
+ }
36
+ var combinations = [];
37
+ generateCombinations(keys, matrix, 0, {}, combinations);
38
+ return combinations;
39
+ }
40
+ function applyCombinationToValue(value, combination) {
41
+ if (typeof value === "string") {
42
+ var variableKeys = value.match(/\${{(.+?)}}/g);
43
+ if (!variableKeys) {
44
+ return value;
45
+ }
46
+ if (variableKeys.length === 1 && value.startsWith("${{") && value.endsWith("}}")) {
47
+ var key = value.replace("${{", "").replace("}}", "").trim();
48
+ return combination[key];
49
+ }
50
+ return value.replace(/\${{(.+?)}}/g, function (_, key) { return String(combination[key.trim()]); });
51
+ }
52
+ if (Array.isArray(value)) {
53
+ return value.map(function (entry) { return applyCombinationToValue(entry, combination); });
54
+ }
55
+ if (typeof value === "object" && value !== null) {
56
+ return Object.fromEntries(Object.entries(value).map(function (_a) {
57
+ var key = _a[0], entry = _a[1];
58
+ return [
59
+ key,
60
+ applyCombinationToValue(entry, combination),
61
+ ];
62
+ }));
63
+ }
64
+ return value;
65
+ }
66
+ //# sourceMappingURL=matrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix.js","sourceRoot":"","sources":["../src/matrix.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAyBA,sDAWC;AAED,0DA8BC;AAhED,SAAS,oBAAoB,CAC3B,IAAc,EACd,MAAc,EACd,KAAa,EACb,QAA2B,EAC3B,YAAiC;;IAEjC,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,IAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjC,KAAoB,UAAM,EAAN,iBAAM,EAAN,oBAAM,EAAN,IAAM,EAAE,CAAC;QAAxB,IAAM,KAAK,eAAA;QACd,IAAM,WAAW,yBAAQ,QAAQ,gBAAG,GAAG,IAAG,KAAK,MAAE,CAAC;QAElD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAAc;IAClD,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAM,YAAY,GAAwB,EAAE,CAAC;IAC7C,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;IAExD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,uBAAuB,CAAC,KAAc,EAAE,WAA8B;IACpF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjF,IAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9D,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,UAAC,CAAC,EAAE,GAAG,IAAK,OAAA,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAA/B,CAA+B,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,EAA3C,CAA2C,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAC,EAAY;gBAAX,GAAG,QAAA,EAAE,KAAK,QAAA;YAAM,OAAA;gBAC1C,GAAG;gBACH,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC;aAC5C;QAH2C,CAG3C,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}