@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.
- package/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.md +7 -0
- package/jest.config.js +8 -0
- package/lib/benchmark/index.d.ts +2 -0
- package/lib/benchmark/index.js +417 -0
- package/lib/benchmark/index.js.map +1 -0
- package/lib/builder/index.d.ts +70 -0
- package/lib/builder/index.js +831 -0
- package/lib/builder/index.js.map +1 -0
- package/lib/cli/index.d.ts +28 -0
- package/lib/cli/index.js +182 -0
- package/lib/cli/index.js.map +1 -0
- package/lib/config/index.d.ts +61 -0
- package/lib/config/index.js +255 -0
- package/lib/config/index.js.map +1 -0
- package/lib/create/index.d.ts +2 -0
- package/lib/create/index.js +405 -0
- package/lib/create/index.js.map +1 -0
- package/lib/datasource/filesystemAdapter.d.ts +44 -0
- package/lib/datasource/filesystemAdapter.js +424 -0
- package/lib/datasource/filesystemAdapter.js.map +1 -0
- package/lib/datasource/index.d.ts +39 -0
- package/lib/datasource/index.js +96 -0
- package/lib/datasource/index.js.map +1 -0
- package/lib/error.d.ts +6 -0
- package/lib/error.js +49 -0
- package/lib/error.js.map +1 -0
- package/lib/evaluate/cli.d.ts +8 -0
- package/lib/evaluate/cli.js +179 -0
- package/lib/evaluate/cli.js.map +1 -0
- package/lib/evaluate/index.d.ts +10 -0
- package/lib/evaluate/index.js +131 -0
- package/lib/evaluate/index.js.map +1 -0
- package/lib/examples/coerceExampleIsoDates.d.ts +12 -0
- package/lib/examples/coerceExampleIsoDates.js +81 -0
- package/lib/examples/coerceExampleIsoDates.js.map +1 -0
- package/lib/examples/index.d.ts +63 -0
- package/lib/examples/index.js +713 -0
- package/lib/examples/index.js.map +1 -0
- package/lib/exporter/index.d.ts +60 -0
- package/lib/exporter/index.js +610 -0
- package/lib/exporter/index.js.map +1 -0
- package/lib/find-duplicates/index.d.ts +41 -0
- package/lib/find-duplicates/index.js +297 -0
- package/lib/find-duplicates/index.js.map +1 -0
- package/lib/generate-code/index.d.ts +11 -0
- package/lib/generate-code/index.js +157 -0
- package/lib/generate-code/index.js.map +1 -0
- package/lib/generate-code/typescript.d.ts +14 -0
- package/lib/generate-code/typescript.js +307 -0
- package/lib/generate-code/typescript.js.map +1 -0
- package/lib/importer/index.d.ts +64 -0
- package/lib/importer/index.js +1092 -0
- package/lib/importer/index.js.map +1 -0
- package/lib/index.d.ts +18 -0
- package/lib/index.js +35 -0
- package/lib/index.js.map +1 -0
- package/lib/info/index.d.ts +17 -0
- package/lib/info/index.js +132 -0
- package/lib/info/index.js.map +1 -0
- package/lib/init/index.d.ts +30 -0
- package/lib/init/index.js +348 -0
- package/lib/init/index.js.map +1 -0
- package/lib/lint/index.d.ts +1 -0
- package/lib/lint/index.js +6 -0
- package/lib/lint/index.js.map +1 -0
- package/lib/linter/attributeSchema.d.ts +7 -0
- package/lib/linter/attributeSchema.js +36 -0
- package/lib/linter/attributeSchema.js.map +1 -0
- package/lib/linter/checkLocaleCircularDependency.d.ts +7 -0
- package/lib/linter/checkLocaleCircularDependency.js +42 -0
- package/lib/linter/checkLocaleCircularDependency.js.map +1 -0
- package/lib/linter/conditionSchema.d.ts +3 -0
- package/lib/linter/conditionSchema.js +283 -0
- package/lib/linter/conditionSchema.js.map +1 -0
- package/lib/linter/formatSchema.d.ts +325 -0
- package/lib/linter/formatSchema.js +165 -0
- package/lib/linter/formatSchema.js.map +1 -0
- package/lib/linter/icuStyleLint.d.ts +6 -0
- package/lib/linter/icuStyleLint.js +226 -0
- package/lib/linter/icuStyleLint.js.map +1 -0
- package/lib/linter/index.d.ts +34 -0
- package/lib/linter/index.js +557 -0
- package/lib/linter/index.js.map +1 -0
- package/lib/linter/localeSchema.d.ts +672 -0
- package/lib/linter/localeSchema.js +50 -0
- package/lib/linter/localeSchema.js.map +1 -0
- package/lib/linter/messageSchema.d.ts +35 -0
- package/lib/linter/messageSchema.js +115 -0
- package/lib/linter/messageSchema.js.map +1 -0
- package/lib/linter/printError.d.ts +8 -0
- package/lib/linter/printError.js +41 -0
- package/lib/linter/printError.js.map +1 -0
- package/lib/linter/schema.d.ts +33 -0
- package/lib/linter/schema.js +192 -0
- package/lib/linter/schema.js.map +1 -0
- package/lib/linter/segmentSchema.d.ts +8 -0
- package/lib/linter/segmentSchema.js +18 -0
- package/lib/linter/segmentSchema.js.map +1 -0
- package/lib/linter/targetSchema.d.ts +337 -0
- package/lib/linter/targetSchema.js +39 -0
- package/lib/linter/targetSchema.js.map +1 -0
- package/lib/linter/testSchema.d.ts +71 -0
- package/lib/linter/testSchema.js +165 -0
- package/lib/linter/testSchema.js.map +1 -0
- package/lib/linter/zodHelpers.d.ts +2 -0
- package/lib/linter/zodHelpers.js +15 -0
- package/lib/linter/zodHelpers.js.map +1 -0
- package/lib/list/index.d.ts +8 -0
- package/lib/list/index.js +524 -0
- package/lib/list/index.js.map +1 -0
- package/lib/matrix.d.ts +4 -0
- package/lib/matrix.js +66 -0
- package/lib/matrix.js.map +1 -0
- package/lib/promoter/index.d.ts +65 -0
- package/lib/promoter/index.js +1208 -0
- package/lib/promoter/index.js.map +1 -0
- package/lib/prune/index.d.ts +37 -0
- package/lib/prune/index.js +673 -0
- package/lib/prune/index.js.map +1 -0
- package/lib/sets.d.ts +10 -0
- package/lib/sets.js +120 -0
- package/lib/sets.js.map +1 -0
- package/lib/tester/cliFormat.d.ts +8 -0
- package/lib/tester/cliFormat.js +15 -0
- package/lib/tester/cliFormat.js.map +1 -0
- package/lib/tester/index.d.ts +35 -0
- package/lib/tester/index.js +713 -0
- package/lib/tester/index.js.map +1 -0
- package/lib/tester/matrix.d.ts +14 -0
- package/lib/tester/matrix.js +76 -0
- package/lib/tester/matrix.js.map +1 -0
- package/lib/tester/prettyDuration.d.ts +1 -0
- package/lib/tester/prettyDuration.js +30 -0
- package/lib/tester/prettyDuration.js.map +1 -0
- package/lib/tester/printTestResult.d.ts +2 -0
- package/lib/tester/printTestResult.js +32 -0
- package/lib/tester/printTestResult.js.map +1 -0
- package/lib/tester/types.d.ts +29 -0
- package/lib/tester/types.js +3 -0
- package/lib/tester/types.js.map +1 -0
- package/package.json +41 -13
- package/src/benchmark/index.spec.ts +375 -0
- package/src/benchmark/index.ts +433 -0
- package/src/builder/index.spec.ts +822 -0
- package/src/builder/index.ts +920 -0
- package/src/cli/index.spec.ts +54 -0
- package/src/cli/index.ts +150 -0
- package/src/config/index.spec.ts +70 -0
- package/src/config/index.ts +259 -0
- package/src/create/index.spec.ts +272 -0
- package/src/create/index.ts +295 -0
- package/src/datasource/filesystemAdapter.ts +313 -0
- package/src/datasource/index.ts +135 -0
- package/src/error.ts +33 -0
- package/src/evaluate/cli.spec.ts +368 -0
- package/src/evaluate/cli.ts +130 -0
- package/src/evaluate/index.ts +161 -0
- package/src/examples/coerceExampleIsoDates.spec.ts +81 -0
- package/src/examples/coerceExampleIsoDates.ts +98 -0
- package/src/examples/index.spec.ts +453 -0
- package/src/examples/index.ts +854 -0
- package/src/exporter/index.spec.ts +443 -0
- package/src/exporter/index.ts +643 -0
- package/src/find-duplicates/index.spec.ts +289 -0
- package/src/find-duplicates/index.ts +314 -0
- package/src/generate-code/index.ts +92 -0
- package/src/generate-code/typescript.spec.ts +241 -0
- package/src/generate-code/typescript.ts +284 -0
- package/src/importer/index.spec.ts +1101 -0
- package/src/importer/index.ts +1190 -0
- package/src/index.ts +18 -0
- package/src/info/index.ts +67 -0
- package/src/init/index.spec.ts +279 -0
- package/src/init/index.ts +292 -0
- package/src/lint/index.ts +1 -0
- package/src/linter/attributeSchema.ts +38 -0
- package/src/linter/checkLocaleCircularDependency.ts +51 -0
- package/src/linter/conditionSchema.ts +386 -0
- package/src/linter/formatSchema.ts +170 -0
- package/src/linter/icuStyleLint.ts +312 -0
- package/src/linter/index.spec.ts +824 -0
- package/src/linter/index.ts +460 -0
- package/src/linter/localeSchema.ts +70 -0
- package/src/linter/messageSchema.ts +152 -0
- package/src/linter/printError.ts +52 -0
- package/src/linter/schema.ts +230 -0
- package/src/linter/segmentSchema.ts +15 -0
- package/src/linter/targetSchema.ts +50 -0
- package/src/linter/testSchema.spec.ts +405 -0
- package/src/linter/testSchema.ts +239 -0
- package/src/linter/zodHelpers.ts +16 -0
- package/src/list/index.spec.ts +431 -0
- package/src/list/index.ts +463 -0
- package/src/matrix.ts +69 -0
- package/src/promoter/index.spec.ts +584 -0
- package/src/promoter/index.ts +1267 -0
- package/src/prune/index.spec.ts +418 -0
- package/src/prune/index.ts +693 -0
- package/src/sets.ts +74 -0
- package/src/tester/cliFormat.ts +11 -0
- package/src/tester/featurevisorIntegration.spec.ts +101 -0
- package/src/tester/index.spec.ts +577 -0
- package/src/tester/index.ts +679 -0
- package/src/tester/matrix.ts +106 -0
- package/src/tester/prettyDuration.ts +34 -0
- package/src/tester/printTestResult.ts +40 -0
- package/src/tester/types.ts +32 -0
- package/tsconfig.cjs.json +11 -0
- package/tsconfig.typecheck.json +4 -0
|
@@ -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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"}
|
package/lib/matrix.d.ts
ADDED
|
@@ -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"}
|