@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,165 @@
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.formatPresetsZodSchema = void 0;
15
+ var zod_1 = require("zod");
16
+ var numberShared = {
17
+ useGrouping: zod_1.z.union([zod_1.z.boolean(), zod_1.z.enum(["min2", "auto", "always"])]).optional(),
18
+ minimumIntegerDigits: zod_1.z.number().int().nonnegative().optional(),
19
+ minimumFractionDigits: zod_1.z.number().int().nonnegative().optional(),
20
+ maximumFractionDigits: zod_1.z.number().int().nonnegative().optional(),
21
+ minimumSignificantDigits: zod_1.z.number().int().nonnegative().optional(),
22
+ maximumSignificantDigits: zod_1.z.number().int().nonnegative().optional(),
23
+ notation: zod_1.z.enum(["standard", "scientific", "engineering", "compact"]).optional(),
24
+ compactDisplay: zod_1.z.enum(["short", "long"]).optional(),
25
+ signDisplay: zod_1.z.enum(["auto", "never", "always", "exceptZero", "negative"]).optional(),
26
+ roundingPriority: zod_1.z.enum(["auto", "morePrecision", "lessPrecision"]).optional(),
27
+ roundingIncrement: zod_1.z
28
+ .union([
29
+ zod_1.z.literal(1),
30
+ zod_1.z.literal(2),
31
+ zod_1.z.literal(5),
32
+ zod_1.z.literal(10),
33
+ zod_1.z.literal(20),
34
+ zod_1.z.literal(25),
35
+ zod_1.z.literal(50),
36
+ zod_1.z.literal(100),
37
+ zod_1.z.literal(200),
38
+ zod_1.z.literal(250),
39
+ zod_1.z.literal(500),
40
+ zod_1.z.literal(1000),
41
+ zod_1.z.literal(2000),
42
+ zod_1.z.literal(2500),
43
+ zod_1.z.literal(5000),
44
+ ])
45
+ .optional(),
46
+ roundingMode: zod_1.z
47
+ .enum([
48
+ "ceil",
49
+ "floor",
50
+ "expand",
51
+ "trunc",
52
+ "halfCeil",
53
+ "halfFloor",
54
+ "halfExpand",
55
+ "halfTrunc",
56
+ "halfEven",
57
+ ])
58
+ .optional(),
59
+ trailingZeroDisplay: zod_1.z.enum(["auto", "stripIfInteger"]).optional(),
60
+ numberingSystem: zod_1.z.string().optional(),
61
+ };
62
+ var numberPresetZodSchema = zod_1.z
63
+ .object(__assign(__assign({}, numberShared), { style: zod_1.z.enum(["decimal", "currency", "percent", "unit"]).optional(), currency: zod_1.z.string().optional(), currencyDisplay: zod_1.z.enum(["code", "symbol", "narrowSymbol", "name"]).optional(), currencySign: zod_1.z.enum(["standard", "accounting"]).optional(), unit: zod_1.z.string().optional(), unitDisplay: zod_1.z.enum(["short", "narrow", "long"]).optional() }))
64
+ .strict()
65
+ .superRefine(function (data, ctx) {
66
+ if (data.style !== "currency" && (data.currency || data.currencyDisplay || data.currencySign)) {
67
+ ctx.addIssue({
68
+ code: zod_1.z.ZodIssueCode.custom,
69
+ message: "Currency options can only be used when `style` is \"currency\".",
70
+ path: ["style"],
71
+ });
72
+ }
73
+ if (data.style === "unit" && !data.unit) {
74
+ ctx.addIssue({
75
+ code: zod_1.z.ZodIssueCode.custom,
76
+ message: "Unit number formats must define `unit`.",
77
+ path: ["unit"],
78
+ });
79
+ }
80
+ if (data.style !== "unit" && (data.unit || data.unitDisplay)) {
81
+ ctx.addIssue({
82
+ code: zod_1.z.ZodIssueCode.custom,
83
+ message: "Unit options can only be used when `style` is \"unit\".",
84
+ path: ["style"],
85
+ });
86
+ }
87
+ if (data.notation !== "compact" && data.compactDisplay) {
88
+ ctx.addIssue({
89
+ code: zod_1.z.ZodIssueCode.custom,
90
+ message: "`compactDisplay` can only be used when `notation` is \"compact\".",
91
+ path: ["notation"],
92
+ });
93
+ }
94
+ });
95
+ var dateTimePresetZodSchema = zod_1.z
96
+ .object({
97
+ timeZone: zod_1.z.string().optional(),
98
+ calendar: zod_1.z.string().optional(),
99
+ numberingSystem: zod_1.z.string().optional(),
100
+ hour12: zod_1.z.boolean().optional(),
101
+ hourCycle: zod_1.z.enum(["h11", "h12", "h23", "h24"]).optional(),
102
+ dateStyle: zod_1.z.enum(["full", "long", "medium", "short"]).optional(),
103
+ timeStyle: zod_1.z.enum(["full", "long", "medium", "short"]).optional(),
104
+ formatMatcher: zod_1.z.enum(["basic", "best fit"]).optional(),
105
+ fractionalSecondDigits: zod_1.z.union([zod_1.z.literal(1), zod_1.z.literal(2), zod_1.z.literal(3)]).optional(),
106
+ weekday: zod_1.z.enum(["long", "short", "narrow"]).optional(),
107
+ era: zod_1.z.enum(["long", "short", "narrow"]).optional(),
108
+ year: zod_1.z.enum(["numeric", "2-digit"]).optional(),
109
+ month: zod_1.z.enum(["numeric", "2-digit", "long", "short", "narrow"]).optional(),
110
+ day: zod_1.z.enum(["numeric", "2-digit"]).optional(),
111
+ dayPeriod: zod_1.z.enum(["long", "short", "narrow"]).optional(),
112
+ hour: zod_1.z.enum(["numeric", "2-digit"]).optional(),
113
+ minute: zod_1.z.enum(["numeric", "2-digit"]).optional(),
114
+ second: zod_1.z.enum(["numeric", "2-digit"]).optional(),
115
+ timeZoneName: zod_1.z
116
+ .enum(["long", "short", "shortOffset", "longOffset", "shortGeneric", "longGeneric"])
117
+ .optional(),
118
+ })
119
+ .strict()
120
+ .superRefine(function (data, ctx) {
121
+ var hasStyleShortcut = typeof data.dateStyle !== "undefined" || typeof data.timeStyle !== "undefined";
122
+ var hasGranularFields = [
123
+ "weekday",
124
+ "era",
125
+ "year",
126
+ "month",
127
+ "day",
128
+ "dayPeriod",
129
+ "hour",
130
+ "minute",
131
+ "second",
132
+ "fractionalSecondDigits",
133
+ "timeZoneName",
134
+ ].some(function (field) { return typeof data[field] !== "undefined"; });
135
+ if (hasStyleShortcut && hasGranularFields) {
136
+ ctx.addIssue({
137
+ code: zod_1.z.ZodIssueCode.custom,
138
+ message: "`dateStyle` / `timeStyle` cannot be combined with granular date/time component fields.",
139
+ path: ["dateStyle"],
140
+ });
141
+ }
142
+ if (hasStyleShortcut && typeof data.formatMatcher !== "undefined") {
143
+ ctx.addIssue({
144
+ code: zod_1.z.ZodIssueCode.custom,
145
+ message: "`formatMatcher` cannot be combined with `dateStyle` / `timeStyle`.",
146
+ path: ["formatMatcher"],
147
+ });
148
+ }
149
+ });
150
+ var relativeTimePresetZodSchema = zod_1.z
151
+ .object({
152
+ numeric: zod_1.z.enum(["always", "auto"]).optional(),
153
+ style: zod_1.z.enum(["long", "short", "narrow"]).optional(),
154
+ })
155
+ .strict();
156
+ exports.formatPresetsZodSchema = zod_1.z
157
+ .object({
158
+ number: zod_1.z.record(zod_1.z.string(), numberPresetZodSchema).optional(),
159
+ date: zod_1.z.record(zod_1.z.string(), dateTimePresetZodSchema).optional(),
160
+ time: zod_1.z.record(zod_1.z.string(), dateTimePresetZodSchema).optional(),
161
+ relative: zod_1.z.record(zod_1.z.string(), relativeTimePresetZodSchema).optional(),
162
+ dateTimeRange: zod_1.z.record(zod_1.z.string(), dateTimePresetZodSchema).optional(),
163
+ })
164
+ .strict();
165
+ //# sourceMappingURL=formatSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatSchema.js","sourceRoot":"","sources":["../../src/linter/formatSchema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Locale, Message } from "@messagevisor/types";
2
+ import type { LintError } from "./index";
3
+ export interface LintMessageIcuOptions {
4
+ icuSkeleton: boolean;
5
+ }
6
+ export declare function lintMessageIcuFormatStyles(messagesByKey: Record<string, Message>, localesByKey: Record<string, Locale>, getMessageFilePath: (key: string) => string, options: LintMessageIcuOptions): LintError[];
@@ -0,0 +1,226 @@
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.lintMessageIcuFormatStyles = lintMessageIcuFormatStyles;
15
+ var IntlMessageFormat = require("intl-messageformat").default || require("intl-messageformat").IntlMessageFormat;
16
+ function isPlainObject(value) {
17
+ return typeof value === "object" && value !== null && !Array.isArray(value);
18
+ }
19
+ function deepMerge(parent, child) {
20
+ if (typeof parent === "undefined") {
21
+ return child;
22
+ }
23
+ if (typeof child === "undefined") {
24
+ return parent;
25
+ }
26
+ if (!isPlainObject(parent) || !isPlainObject(child)) {
27
+ return child;
28
+ }
29
+ var result = __assign({}, parent);
30
+ for (var _i = 0, _a = Object.keys(child); _i < _a.length; _i++) {
31
+ var key = _a[_i];
32
+ result[key] = deepMerge(result[key], child[key]);
33
+ }
34
+ return result;
35
+ }
36
+ function resolveLocaleFormatChain(localeKey, localesByKey) {
37
+ var _a;
38
+ var chain = [];
39
+ var seen = new Set();
40
+ var currentKey = localeKey;
41
+ while (currentKey && !seen.has(currentKey)) {
42
+ seen.add(currentKey);
43
+ chain.unshift(currentKey);
44
+ currentKey = (_a = localesByKey[currentKey]) === null || _a === void 0 ? void 0 : _a.inheritFormatsFrom;
45
+ }
46
+ return chain;
47
+ }
48
+ function resolveLocaleFormats(localeKey, localesByKey) {
49
+ var _a;
50
+ var chain = resolveLocaleFormatChain(localeKey, localesByKey);
51
+ var formats;
52
+ for (var _i = 0, chain_1 = chain; _i < chain_1.length; _i++) {
53
+ var key = chain_1[_i];
54
+ formats = deepMerge(formats, (_a = localesByKey[key]) === null || _a === void 0 ? void 0 : _a.formats);
55
+ }
56
+ return formats;
57
+ }
58
+ function findMatchingBrace(value, openIndex) {
59
+ var depth = 0;
60
+ for (var index = openIndex; index < value.length; index++) {
61
+ var character = value[index];
62
+ if (character === "{") {
63
+ depth++;
64
+ }
65
+ if (character === "}") {
66
+ depth--;
67
+ if (depth === 0) {
68
+ return index;
69
+ }
70
+ }
71
+ }
72
+ return -1;
73
+ }
74
+ function splitTopLevelCommas(value) {
75
+ var parts = [];
76
+ var depth = 0;
77
+ var startIndex = 0;
78
+ for (var index = 0; index < value.length; index++) {
79
+ var character = value[index];
80
+ if (character === "{") {
81
+ depth++;
82
+ continue;
83
+ }
84
+ if (character === "}") {
85
+ depth--;
86
+ continue;
87
+ }
88
+ if (character === "," && depth === 0) {
89
+ parts.push(value.slice(startIndex, index).trim());
90
+ startIndex = index + 1;
91
+ }
92
+ }
93
+ parts.push(value.slice(startIndex).trim());
94
+ return parts;
95
+ }
96
+ function normalizeStyle(style) {
97
+ var trimmedStyle = style.trim();
98
+ if (!trimmedStyle) {
99
+ return { style: "", isSkeleton: false };
100
+ }
101
+ if (trimmedStyle.startsWith("::")) {
102
+ return { style: trimmedStyle, isSkeleton: true };
103
+ }
104
+ return { style: trimmedStyle.split(/\s+/)[0], isSkeleton: false };
105
+ }
106
+ function extractIcuStyleReferences(value) {
107
+ var _a;
108
+ var references = [];
109
+ var index = 0;
110
+ while (index < value.length) {
111
+ var openIndex = value.indexOf("{", index);
112
+ if (openIndex === -1) {
113
+ break;
114
+ }
115
+ var closeIndex = findMatchingBrace(value, openIndex);
116
+ if (closeIndex === -1) {
117
+ break;
118
+ }
119
+ var content = value.slice(openIndex + 1, closeIndex);
120
+ var parts = splitTopLevelCommas(content);
121
+ var type = (_a = parts[1]) === null || _a === void 0 ? void 0 : _a.trim();
122
+ var styleReference = parts[2] ? normalizeStyle(parts[2]) : { style: "", isSkeleton: false };
123
+ if ((type === "number" || type === "date" || type === "time") && styleReference.style) {
124
+ references.push({ type: type, style: styleReference.style, isSkeleton: styleReference.isSkeleton });
125
+ }
126
+ references.push.apply(references, extractIcuStyleReferences(content));
127
+ index = closeIndex + 1;
128
+ }
129
+ return references;
130
+ }
131
+ function hasFormatStyle(formats, type, style) {
132
+ var _a;
133
+ return typeof ((_a = formats === null || formats === void 0 ? void 0 : formats[type]) === null || _a === void 0 ? void 0 : _a[style]) !== "undefined";
134
+ }
135
+ function getTranslationErrors(messageKey, messageFilePath, translation, localeKey, path, localesByKey, options) {
136
+ var errors = [];
137
+ var formats = resolveLocaleFormats(localeKey, localesByKey);
138
+ var reportedReferences = new Set();
139
+ try {
140
+ new IntlMessageFormat(translation, localeKey);
141
+ }
142
+ catch (error) {
143
+ errors.push({
144
+ level: "error",
145
+ filePath: messageFilePath,
146
+ entityType: "message",
147
+ entityKey: messageKey,
148
+ message: "Invalid ICU syntax for locale \"".concat(localeKey, "\" in message \"").concat(messageKey, "\". Fix the ICU message syntax before building datafiles. Parser reported: ").concat(error instanceof Error ? error.message : String(error)),
149
+ path: path,
150
+ code: "invalid_icu_syntax",
151
+ value: translation,
152
+ });
153
+ return errors;
154
+ }
155
+ for (var _i = 0, _a = extractIcuStyleReferences(translation); _i < _a.length; _i++) {
156
+ var reference = _a[_i];
157
+ var referenceKey = "".concat(reference.type, ":").concat(reference.style);
158
+ if (reportedReferences.has(referenceKey)) {
159
+ continue;
160
+ }
161
+ reportedReferences.add(referenceKey);
162
+ if (reference.isSkeleton) {
163
+ if (!options.icuSkeleton) {
164
+ errors.push({
165
+ level: "error",
166
+ filePath: messageFilePath,
167
+ entityType: "message",
168
+ entityKey: messageKey,
169
+ message: "ICU skeleton style \"".concat(reference.style, "\" is not allowed for locale \"").concat(localeKey, "\" in message \"").concat(messageKey, "\" because messagevisor.config.js has icuSkeleton set to false. Use a named formats.").concat(reference.type, " preset instead, or enable icuSkeleton."),
170
+ path: path,
171
+ code: "icu_skeleton_not_allowed",
172
+ value: reference.style,
173
+ });
174
+ }
175
+ continue;
176
+ }
177
+ if (hasFormatStyle(formats, reference.type, reference.style)) {
178
+ continue;
179
+ }
180
+ errors.push({
181
+ level: "error",
182
+ filePath: messageFilePath,
183
+ entityType: "message",
184
+ entityKey: messageKey,
185
+ message: "Missing ICU ".concat(reference.type, " format style \"").concat(reference.style, "\" for locale \"").concat(localeKey, "\" in message \"").concat(messageKey, "\". Add formats.").concat(reference.type, ".").concat(reference.style, " to locale \"").concat(localeKey, "\" or one of its inheritFormatsFrom ancestors."),
186
+ path: path,
187
+ code: "missing_icu_format_style",
188
+ value: reference.style,
189
+ });
190
+ }
191
+ return errors;
192
+ }
193
+ function lintMessageIcuFormatStyles(messagesByKey, localesByKey, getMessageFilePath, options) {
194
+ var errors = [];
195
+ for (var _i = 0, _a = Object.keys(messagesByKey); _i < _a.length; _i++) {
196
+ var messageKey = _a[_i];
197
+ var message = messagesByKey[messageKey];
198
+ var messageFilePath = getMessageFilePath(messageKey);
199
+ var translations = isPlainObject(message === null || message === void 0 ? void 0 : message.translations) ? message.translations : {};
200
+ for (var _b = 0, _c = Object.keys(translations); _b < _c.length; _b++) {
201
+ var localeKey = _c[_b];
202
+ var translation = translations[localeKey];
203
+ if (typeof translation !== "string") {
204
+ continue;
205
+ }
206
+ errors.push.apply(errors, getTranslationErrors(messageKey, messageFilePath, translation, localeKey, ["translations", localeKey], localesByKey, options));
207
+ }
208
+ var overrides = Array.isArray(message === null || message === void 0 ? void 0 : message.overrides) ? message.overrides : [];
209
+ for (var index = 0; index < overrides.length; index++) {
210
+ var override = overrides[index];
211
+ var overrideTranslations = isPlainObject(override === null || override === void 0 ? void 0 : override.translations)
212
+ ? override.translations
213
+ : {};
214
+ for (var _d = 0, _e = Object.keys(overrideTranslations); _d < _e.length; _d++) {
215
+ var localeKey = _e[_d];
216
+ var translation = overrideTranslations[localeKey];
217
+ if (typeof translation !== "string") {
218
+ continue;
219
+ }
220
+ errors.push.apply(errors, getTranslationErrors(messageKey, messageFilePath, translation, localeKey, ["overrides", index, "translations", localeKey], localesByKey, options));
221
+ }
222
+ }
223
+ }
224
+ return errors;
225
+ }
226
+ //# sourceMappingURL=icuStyleLint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icuStyleLint.js","sourceRoot":"","sources":["../../src/linter/icuStyleLint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { ProjectConfig } from "../config";
2
+ import type { Datasource } from "../datasource";
3
+ export type LintEntityType = "locale" | "attribute" | "segment" | "message" | "target" | "test" | "project";
4
+ export interface LintProjectOptions {
5
+ keyPattern?: string;
6
+ entityType?: string;
7
+ set?: string;
8
+ json?: boolean;
9
+ pretty?: boolean;
10
+ }
11
+ export interface LintError {
12
+ level: "error";
13
+ filePath: string;
14
+ entityType: LintEntityType;
15
+ entityKey: string;
16
+ message: string;
17
+ path: (string | number)[];
18
+ code?: string;
19
+ value?: unknown;
20
+ }
21
+ export interface LintResult {
22
+ hasError: boolean;
23
+ errors: LintError[];
24
+ duration: number;
25
+ }
26
+ export declare function lintProject(projectConfig: ProjectConfig, datasource: Datasource, options?: LintProjectOptions): Promise<LintResult>;
27
+ export declare const lintPlugin: {
28
+ command: string;
29
+ handler: ({ projectConfig, datasource, parsed }: any) => Promise<boolean>;
30
+ examples: {
31
+ command: string;
32
+ description: string;
33
+ }[];
34
+ };