@messagevisor/core 0.16.0 → 0.17.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 CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.17.0](https://github.com/messagevisor/messagevisor/compare/v0.16.0...v0.17.0) (2026-06-27)
7
+
8
+
9
+ ### Features
10
+
11
+ * lint test specs for redundant expectations ([#23](https://github.com/messagevisor/messagevisor/issues/23)) ([a758121](https://github.com/messagevisor/messagevisor/commit/a7581210b320926160298ff8b2703563ff7792a8))
12
+
13
+
14
+
15
+
16
+
6
17
  # [0.16.0](https://github.com/messagevisor/messagevisor/compare/v0.15.0...v0.16.0) (2026-06-11)
7
18
 
8
19
 
@@ -6,8 +6,27 @@ var zodHelpers_1 = require("./zodHelpers");
6
6
  function getTestZodSchema(messageKeys, segmentKeys, localeKeys, targetKeys) {
7
7
  var matrixZodSchema = zod_1.z.record(zod_1.z.string(), zod_1.z.array(zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean(), zod_1.z.null()])));
8
8
  var formatPresets = zod_1.z.record(zod_1.z.string(), zod_1.z.unknown());
9
- var expectedByRuntime = zod_1.z.record(zod_1.z.string(), zod_1.z.string());
9
+ var expectedByRuntime = zod_1.z
10
+ .record(zod_1.z.string(), zod_1.z.string())
11
+ .refine(function (value) { return Object.keys(value).length > 0; }, {
12
+ message: "`expectedByRuntime` must define at least one runtime.",
13
+ });
10
14
  var targetOrMatrixValue = (0, zodHelpers_1.refineWithMessage)(zod_1.z.string(), function (value) { return targetKeys.includes(value) || /^\$\{\{.+\}\}$/.test(value); }, function (value) { return "Unknown target \"".concat(value, "\""); });
15
+ var validateExpectedByRuntime = function (data, ctx) {
16
+ if (!data.expectedTranslation || !data.expectedByRuntime) {
17
+ return;
18
+ }
19
+ for (var _i = 0, _a = Object.entries(data.expectedByRuntime); _i < _a.length; _i++) {
20
+ var _b = _a[_i], runtime = _b[0], expectedTranslation = _b[1];
21
+ if (expectedTranslation === data.expectedTranslation) {
22
+ ctx.addIssue({
23
+ code: zod_1.z.ZodIssueCode.custom,
24
+ message: "`expectedByRuntime` entries must differ from `expectedTranslation`; remove redundant runtime expectations.",
25
+ path: ["expectedByRuntime", runtime],
26
+ });
27
+ }
28
+ }
29
+ };
11
30
  var messageAssertion = zod_1.z
12
31
  .object({
13
32
  matrix: matrixZodSchema.optional(),
@@ -24,7 +43,8 @@ function getTestZodSchema(messageKeys, segmentKeys, localeKeys, targetKeys) {
24
43
  expectedTranslation: zod_1.z.string(),
25
44
  expectedByRuntime: expectedByRuntime.optional(),
26
45
  })
27
- .strict();
46
+ .strict()
47
+ .superRefine(validateExpectedByRuntime);
28
48
  var segmentAssertion = zod_1.z
29
49
  .object({
30
50
  matrix: matrixZodSchema.optional(),
@@ -51,6 +71,7 @@ function getTestZodSchema(messageKeys, segmentKeys, localeKeys, targetKeys) {
51
71
  })
52
72
  .strict()
53
73
  .superRefine(function (data, ctx) {
74
+ validateExpectedByRuntime(data, ctx);
54
75
  var hasExpectedFormats = typeof data.expectedFormats !== "undefined";
55
76
  var hasRawMessage = typeof data.rawMessage !== "undefined";
56
77
  var hasExpectedTranslation = typeof data.expectedTranslation !== "undefined";
@@ -93,6 +114,7 @@ function getTestZodSchema(messageKeys, segmentKeys, localeKeys, targetKeys) {
93
114
  })
94
115
  .strict()
95
116
  .superRefine(function (data, ctx) {
117
+ validateExpectedByRuntime(data, ctx);
96
118
  var hasRawMessage = typeof data.rawMessage !== "undefined";
97
119
  var hasMessage = typeof data.message !== "undefined";
98
120
  var hasExpectedTranslation = typeof data.expectedTranslation !== "undefined";
@@ -1 +1 @@
1
- {"version":3,"file":"testSchema.js","sourceRoot":"","sources":["../../src/linter/testSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testSchema.js","sourceRoot":"","sources":["../../src/linter/testSchema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@messagevisor/core",
3
- "version": "0.16.0",
3
+ "version": "0.17.0",
4
4
  "description": "Core package of Messagevisor for Node.js usage",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -31,13 +31,13 @@
31
31
  "dependencies": {
32
32
  "@featurevisor/parsers": "^2.24.0",
33
33
  "@featurevisor/sdk": "^2.23.0",
34
- "@messagevisor/catalog": "0.16.0",
35
- "@messagevisor/sdk": "0.16.0",
36
- "@messagevisor/types": "0.16.0",
34
+ "@messagevisor/catalog": "0.17.0",
35
+ "@messagevisor/sdk": "0.17.0",
36
+ "@messagevisor/types": "0.17.0",
37
37
  "intl-messageformat": "^10.7.16",
38
38
  "tar": "^7.5.11",
39
39
  "yargs": "^17.7.2",
40
40
  "zod": "^4.3.6"
41
41
  },
42
- "gitHead": "f8ebecb1ddea50aac5b06511883af76aefda7872"
42
+ "gitHead": "a7603f5b942fb9a1c28c9e71f4fb99bded9c7542"
43
43
  }
@@ -29,7 +29,7 @@ describe("getTestZodSchema", function () {
29
29
  },
30
30
  expectedTranslation: "Hello ${{ name }}",
31
31
  expectedByRuntime: {
32
- go: "Hello ${{ name }}",
32
+ go: "Hi ${{ name }}",
33
33
  },
34
34
  },
35
35
  ],
@@ -183,6 +183,62 @@ describe("getTestZodSchema", function () {
183
183
  ).toEqual(true);
184
184
  });
185
185
 
186
+ it("rejects empty runtime-specific expected values", function () {
187
+ const result = schema.safeParse({
188
+ message: "auth.signin",
189
+ assertions: [
190
+ {
191
+ locale: "en",
192
+ target: "web",
193
+ expectedTranslation: "Sign in",
194
+ expectedByRuntime: {},
195
+ },
196
+ ],
197
+ });
198
+
199
+ expect(result.success).toEqual(false);
200
+ const nestedIssues =
201
+ result.error.issues[0]?.code === "invalid_union"
202
+ ? result.error.issues[0].errors.flat()
203
+ : result.error.issues;
204
+ expect(
205
+ nestedIssues.some(
206
+ (issue) =>
207
+ issue.path.join(".") === "assertions.0.expectedByRuntime" &&
208
+ issue.message.includes("at least one runtime"),
209
+ ),
210
+ ).toEqual(true);
211
+ });
212
+
213
+ it("rejects runtime-specific expected values that duplicate expectedTranslation", function () {
214
+ const result = schema.safeParse({
215
+ message: "auth.signin",
216
+ assertions: [
217
+ {
218
+ locale: "en",
219
+ target: "web",
220
+ expectedTranslation: "Sign in",
221
+ expectedByRuntime: {
222
+ java: "Sign in",
223
+ },
224
+ },
225
+ ],
226
+ });
227
+
228
+ expect(result.success).toEqual(false);
229
+ const nestedIssues =
230
+ result.error.issues[0]?.code === "invalid_union"
231
+ ? result.error.issues[0].errors.flat()
232
+ : result.error.issues;
233
+ expect(
234
+ nestedIssues.some(
235
+ (issue) =>
236
+ issue.path.join(".") === "assertions.0.expectedByRuntime.java" &&
237
+ issue.message.includes("remove redundant runtime expectations"),
238
+ ),
239
+ ).toEqual(true);
240
+ });
241
+
186
242
  it("keeps key-like fields strict and literal", function () {
187
243
  const result = schema.safeParse({
188
244
  message: "auth.signin",
@@ -13,12 +13,38 @@ export function getTestZodSchema(
13
13
  z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])),
14
14
  );
15
15
  const formatPresets = z.record(z.string(), z.unknown());
16
- const expectedByRuntime = z.record(z.string(), z.string());
16
+ const expectedByRuntime = z
17
+ .record(z.string(), z.string())
18
+ .refine((value) => Object.keys(value).length > 0, {
19
+ message: "`expectedByRuntime` must define at least one runtime.",
20
+ });
17
21
  const targetOrMatrixValue = refineWithMessage(
18
22
  z.string(),
19
23
  (value) => targetKeys.includes(value) || /^\$\{\{.+\}\}$/.test(value),
20
24
  (value) => `Unknown target "${value}"`,
21
25
  );
26
+ const validateExpectedByRuntime = (
27
+ data: {
28
+ expectedTranslation?: string;
29
+ expectedByRuntime?: Record<string, string>;
30
+ },
31
+ ctx: z.RefinementCtx,
32
+ ) => {
33
+ if (!data.expectedTranslation || !data.expectedByRuntime) {
34
+ return;
35
+ }
36
+
37
+ for (const [runtime, expectedTranslation] of Object.entries(data.expectedByRuntime)) {
38
+ if (expectedTranslation === data.expectedTranslation) {
39
+ ctx.addIssue({
40
+ code: z.ZodIssueCode.custom,
41
+ message:
42
+ "`expectedByRuntime` entries must differ from `expectedTranslation`; remove redundant runtime expectations.",
43
+ path: ["expectedByRuntime", runtime],
44
+ });
45
+ }
46
+ }
47
+ };
22
48
 
23
49
  const messageAssertion = z
24
50
  .object({
@@ -40,7 +66,8 @@ export function getTestZodSchema(
40
66
  expectedTranslation: z.string(),
41
67
  expectedByRuntime: expectedByRuntime.optional(),
42
68
  })
43
- .strict();
69
+ .strict()
70
+ .superRefine(validateExpectedByRuntime);
44
71
 
45
72
  const segmentAssertion = z
46
73
  .object({
@@ -73,6 +100,8 @@ export function getTestZodSchema(
73
100
  })
74
101
  .strict()
75
102
  .superRefine((data, ctx) => {
103
+ validateExpectedByRuntime(data, ctx);
104
+
76
105
  const hasExpectedFormats = typeof data.expectedFormats !== "undefined";
77
106
  const hasRawMessage = typeof data.rawMessage !== "undefined";
78
107
  const hasExpectedTranslation = typeof data.expectedTranslation !== "undefined";
@@ -139,6 +168,8 @@ export function getTestZodSchema(
139
168
  })
140
169
  .strict()
141
170
  .superRefine((data, ctx) => {
171
+ validateExpectedByRuntime(data, ctx);
172
+
142
173
  const hasRawMessage = typeof data.rawMessage !== "undefined";
143
174
  const hasMessage = typeof data.message !== "undefined";
144
175
  const hasExpectedTranslation = typeof data.expectedTranslation !== "undefined";