@inlang/sdk 0.7.0 → 0.8.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 (36) hide show
  1. package/dist/adapter/solidAdapter.test.js +5 -5
  2. package/dist/createMessagesQuery.test.js +9 -0
  3. package/dist/loadProject.d.ts.map +1 -1
  4. package/dist/loadProject.js +3 -1
  5. package/dist/loadProject.test.js +10 -10
  6. package/dist/messages/variant.d.ts +4 -4
  7. package/dist/messages/variant.d.ts.map +1 -1
  8. package/dist/messages/variant.js +55 -55
  9. package/dist/messages/variant.test.js +102 -45
  10. package/dist/test-utilities/createMessage.d.ts +1 -1
  11. package/dist/test-utilities/createMessage.js +1 -1
  12. package/dist/test-utilities/createMessage.test.js +4 -4
  13. package/package.json +1 -1
  14. package/src/adapter/solidAdapter.test.ts +13 -13
  15. package/src/adapter/solidAdapter.ts +1 -1
  16. package/src/api.ts +2 -2
  17. package/src/createMessageLintReportsQuery.ts +4 -4
  18. package/src/createMessagesQuery.test.ts +30 -17
  19. package/src/createMessagesQuery.ts +2 -2
  20. package/src/lint/message/lintMessages.ts +1 -1
  21. package/src/lint/message/lintSingleMessage.test.ts +1 -1
  22. package/src/lint/message/lintSingleMessage.ts +2 -2
  23. package/src/loadProject.test.ts +14 -14
  24. package/src/loadProject.ts +15 -13
  25. package/src/messages/errors.ts +2 -2
  26. package/src/messages/variant.test.ts +113 -49
  27. package/src/messages/variant.ts +73 -67
  28. package/src/parseConfig.ts +2 -2
  29. package/src/resolve-modules/import.test.ts +2 -2
  30. package/src/resolve-modules/import.ts +1 -1
  31. package/src/resolve-modules/message-lint-rules/resolveMessageLintRules.ts +1 -1
  32. package/src/resolve-modules/plugins/resolvePlugins.test.ts +2 -2
  33. package/src/resolve-modules/plugins/resolvePlugins.ts +16 -16
  34. package/src/resolve-modules/resolveModules.ts +4 -4
  35. package/src/test-utilities/createMessage.test.ts +7 -7
  36. package/src/test-utilities/createMessage.ts +1 -1
@@ -8,7 +8,7 @@ describe("getVariant", () => {
8
8
  const variant = getVariant(mockMessage, {
9
9
  where: {
10
10
  languageTag: "en",
11
- selectors: { gender: "female", guestOther: "1" },
11
+ match: ["female", "1"],
12
12
  },
13
13
  });
14
14
  expect(variant?.pattern[0]).toStrictEqual({
@@ -21,7 +21,7 @@ describe("getVariant", () => {
21
21
  const variant = getVariant(mockMessage, {
22
22
  where: {
23
23
  languageTag: "en",
24
- selectors: { gender: "female", guestOther: "0" },
24
+ match: ["female", "0"],
25
25
  },
26
26
  });
27
27
  expect(variant?.pattern[0]).toStrictEqual({
@@ -29,7 +29,7 @@ describe("getVariant", () => {
29
29
  value: "{$hostName} invites {$guestName} and {$guestsOther} other people to her party.",
30
30
  });
31
31
  });
32
- test("it should return undefined (but never throw an error) if selectors is an empty array", () => {
32
+ test("it should not throw error if selector is empty and match", () => {
33
33
  const mockMessage = {
34
34
  id: "mockMessage",
35
35
  selectors: [],
@@ -37,21 +37,44 @@ describe("getVariant", () => {
37
37
  {
38
38
  languageTag: "en",
39
39
  pattern: [{ type: "Text", value: "Gender male" }],
40
- match: {
41
- gender: "male",
42
- },
40
+ match: [],
41
+ },
42
+ {
43
+ languageTag: "de",
44
+ pattern: [{ type: "Text", value: "Veraltete Übersetzung" }],
45
+ match: [],
46
+ },
47
+ ],
48
+ };
49
+ const variant = getVariant(mockMessage, {
50
+ where: {
51
+ languageTag: "en",
52
+ match: [],
53
+ },
54
+ });
55
+ expect(variant).toBeDefined();
56
+ });
57
+ test("it should not throw error if selector is empty, return undefined", () => {
58
+ const mockMessage = {
59
+ id: "mockMessage",
60
+ selectors: [],
61
+ variants: [
62
+ {
63
+ languageTag: "en",
64
+ pattern: [{ type: "Text", value: "Gender male" }],
65
+ match: ["male", "*"],
43
66
  },
44
67
  {
45
68
  languageTag: "de",
46
69
  pattern: [{ type: "Text", value: "Veraltete Übersetzung" }],
47
- match: {},
70
+ match: ["*", "*"],
48
71
  },
49
72
  ],
50
73
  };
51
74
  const variant = getVariant(mockMessage, {
52
75
  where: {
53
76
  languageTag: "fr",
54
- selectors: {},
77
+ match: ["*", "*"],
55
78
  },
56
79
  });
57
80
  expect(variant).toBeUndefined();
@@ -61,7 +84,7 @@ describe("getVariant", () => {
61
84
  const variant = getVariant(mockMessage, {
62
85
  where: {
63
86
  languageTag: "en",
64
- selectors: { guestOther: "0" },
87
+ match: ["*", "0"],
65
88
  },
66
89
  });
67
90
  expect(variant?.pattern[0]).toStrictEqual({
@@ -74,7 +97,7 @@ describe("getVariant", () => {
74
97
  const variant = getVariant(mockMessage, {
75
98
  where: {
76
99
  languageTag: "en",
77
- selectors: {},
100
+ match: ["*", "*"],
78
101
  },
79
102
  });
80
103
  expect(variant?.pattern[0]).toStrictEqual({
@@ -87,7 +110,7 @@ describe("getVariant", () => {
87
110
  const variant = getVariant(mockMessage, {
88
111
  where: {
89
112
  languageTag: "en",
90
- selectors: { gender: "trans", guestOther: "2" },
113
+ match: ["trans", "2"],
91
114
  },
92
115
  });
93
116
  expect(variant?.pattern[0]).toStrictEqual({
@@ -97,7 +120,7 @@ describe("getVariant", () => {
97
120
  const variant2 = getVariant(mockMessage, {
98
121
  where: {
99
122
  languageTag: "en",
100
- selectors: { gender: "male", guestOther: "8" },
123
+ match: ["male", "8"],
101
124
  },
102
125
  });
103
126
  expect(variant2?.pattern[0]).toStrictEqual({
@@ -108,12 +131,12 @@ describe("getVariant", () => {
108
131
  test("should return undefined of no variant matches", () => {
109
132
  const mockMessage = getMockMessage();
110
133
  mockMessage.variants = [
111
- ...mockMessage.variants.filter((v) => v.languageTag === "en" && (v.match.gender !== "*" || v.match.guestOther !== "*")),
134
+ ...mockMessage.variants.filter((v) => v.languageTag === "en" && (v.match[0] !== "*" || v.match[1] !== "*")),
112
135
  ];
113
136
  const variant = getVariant(mockMessage, {
114
137
  where: {
115
138
  languageTag: "en",
116
- selectors: {},
139
+ match: ["*", "*"],
117
140
  },
118
141
  });
119
142
  expect(variant).toBeUndefined();
@@ -123,17 +146,18 @@ describe("getVariant", () => {
123
146
  const variant = getVariant(mockMessage, {
124
147
  where: {
125
148
  languageTag: "de",
126
- selectors: { gender: "female", guestOther: "1" },
149
+ match: ["female", "1"],
127
150
  },
128
151
  });
129
152
  expect(variant).toBeUndefined();
130
153
  });
131
- test("should return the catch all variant if no selector defined", () => {
154
+ test("should return undefined variant if no selector defined", () => {
132
155
  const mockMessage = {};
156
+ mockMessage.selectors = [];
133
157
  mockMessage.variants = [
134
158
  {
135
159
  languageTag: "en",
136
- match: {},
160
+ match: ["*", "*"],
137
161
  pattern: [
138
162
  {
139
163
  type: "Text",
@@ -145,13 +169,46 @@ describe("getVariant", () => {
145
169
  const variant = getVariant(mockMessage, {
146
170
  where: {
147
171
  languageTag: "en",
148
- selectors: {},
172
+ match: ["*", "*"],
149
173
  },
150
174
  });
151
- // should return the female variant
152
- expect(variant?.pattern[0]).toStrictEqual({
175
+ // should return undefined
176
+ expect(variant).toBeUndefined();
177
+ });
178
+ test("should match catch all if the number of matches and selectors do not match", () => {
179
+ const mockMessage = getMockMessage();
180
+ const variant1 = getVariant(mockMessage, {
181
+ where: {
182
+ languageTag: "en",
183
+ match: ["12"],
184
+ },
185
+ });
186
+ // should return catch all
187
+ expect(variant1?.pattern[0]).toStrictEqual({
153
188
  type: "Text",
154
- value: "test",
189
+ value: "{$hostName} invites {$guestName} and {$guestsOther} other people to their party.",
190
+ });
191
+ const variant2 = getVariant(mockMessage, {
192
+ where: {
193
+ languageTag: "en",
194
+ match: ["12", "*", "23"],
195
+ },
196
+ });
197
+ // should return catch all
198
+ expect(variant2?.pattern[0]).toStrictEqual({
199
+ type: "Text",
200
+ value: "{$hostName} invites {$guestName} and {$guestsOther} other people to their party.",
201
+ });
202
+ const variant3 = getVariant(mockMessage, {
203
+ where: {
204
+ languageTag: "en",
205
+ match: [],
206
+ },
207
+ });
208
+ // should return catch all
209
+ expect(variant3?.pattern[0]).toStrictEqual({
210
+ type: "Text",
211
+ value: "{$hostName} invites {$guestName} and {$guestsOther} other people to their party.",
155
212
  });
156
213
  });
157
214
  });
@@ -160,36 +217,36 @@ describe("createVariant", () => {
160
217
  const mockMessage = getMockMessage();
161
218
  const newVariant = {
162
219
  languageTag: "en",
163
- match: { gender: "female", guestOther: "0" },
220
+ match: ["female", "0"],
164
221
  pattern: [],
165
222
  };
166
223
  const message = createVariant(mockMessage, {
167
224
  data: newVariant,
168
225
  });
169
226
  // should return the female variant
170
- expect(message.data.variants.find((v) => v.languageTag === "en" && v.match.gender === "female" && v.match.guestOther === "0")?.pattern).toStrictEqual([]);
227
+ expect(message.data.variants.find((v) => v.languageTag === "en" && v.match[0] === "female" && v.match[1] === "0")?.pattern).toStrictEqual([]);
171
228
  });
172
229
  test("should create a variant, also if matcher are not full defined", () => {
173
230
  const mockMessage = getMockMessage();
174
231
  mockMessage.variants = [
175
- ...mockMessage.variants.filter((v) => v.languageTag === "en" && (v.match.gender !== "*" || v.match.guestOther !== "*")),
232
+ ...mockMessage.variants.filter((v) => v.languageTag === "en" && (v.match[0] !== "*" || v.match[1] !== "*")),
176
233
  ];
177
234
  const message = createVariant(mockMessage, {
178
235
  data: {
179
236
  languageTag: "en",
180
- match: {},
237
+ match: ["*", "*"],
181
238
  pattern: [],
182
239
  },
183
240
  });
184
241
  // should return the female variant
185
- expect(message.data.variants.find((v) => v.languageTag === "en" && v.match.gender === "*" && v.match.guestOther === "*")?.pattern).toStrictEqual([]);
242
+ expect(message.data.variants.find((v) => v.languageTag === "en" && v.match[0] === "*" && v.match[1] === "*")?.pattern).toStrictEqual([]);
186
243
  });
187
244
  test("should return error if variant matches", () => {
188
245
  const mockMessage = getMockMessage();
189
246
  const variant = createVariant(mockMessage, {
190
247
  data: {
191
248
  languageTag: "en",
192
- match: { gender: "male", guestOther: "1" },
249
+ match: ["male", "1"],
193
250
  pattern: [],
194
251
  },
195
252
  });
@@ -202,7 +259,7 @@ describe("createVariant", () => {
202
259
  const variant = createVariant(mockMessage, {
203
260
  data: {
204
261
  languageTag: "de",
205
- match: { gender: "female", guestOther: "1" },
262
+ match: ["female", "1"],
206
263
  pattern: [],
207
264
  },
208
265
  });
@@ -217,34 +274,34 @@ describe("updateVariant", () => {
217
274
  const message = updateVariantPattern(mockMessage, {
218
275
  where: {
219
276
  languageTag: "en",
220
- selectors: { gender: "female", guestOther: "1" },
277
+ match: ["female", "1"],
221
278
  },
222
279
  data: [],
223
280
  });
224
281
  // should return the female variant
225
- expect(message.data.variants.find((v) => v.languageTag === "en" && v.match.gender === "female" && v.match.guestOther === "1")?.pattern).toStrictEqual([]);
282
+ expect(message.data.variants.find((v) => v.languageTag === "en" && v.match[0] === "female" && v.match[1] === "1")?.pattern).toStrictEqual([]);
226
283
  });
227
284
  test("should update a variant, also if matcher are not full defined", () => {
228
285
  const mockMessage = getMockMessage();
229
286
  const message = updateVariantPattern(mockMessage, {
230
287
  where: {
231
288
  languageTag: "en",
232
- selectors: {},
289
+ match: ["*", "*"],
233
290
  },
234
291
  data: [],
235
292
  });
236
293
  // should return the female variant
237
- expect(message.data.variants.find((v) => v.languageTag === "en" && v.match.gender === "*" && v.match.guestOther === "*")?.pattern).toStrictEqual([]);
294
+ expect(message.data.variants.find((v) => v.languageTag === "en" && v.match[0] === "*" && v.match[1] === "*")?.pattern).toStrictEqual([]);
238
295
  });
239
296
  test("should return error if no variant matches", () => {
240
297
  const mockMessage = getMockMessage();
241
298
  mockMessage.variants = [
242
- ...mockMessage.variants.filter((v) => v.languageTag === "en" && (v.match.gender !== "*" || v.match.guestOther !== "*")),
299
+ ...mockMessage.variants.filter((v) => v.languageTag === "en" && (v.match[0] !== "*" || v.match[1] !== "*")),
243
300
  ];
244
301
  const variant = updateVariantPattern(mockMessage, {
245
302
  where: {
246
303
  languageTag: "en",
247
- selectors: {},
304
+ match: ["*", "*"],
248
305
  },
249
306
  data: [],
250
307
  });
@@ -257,7 +314,7 @@ describe("updateVariant", () => {
257
314
  const variant = updateVariantPattern(mockMessage, {
258
315
  where: {
259
316
  languageTag: "de",
260
- selectors: {},
317
+ match: ["*", "*"],
261
318
  },
262
319
  data: [],
263
320
  });
@@ -276,7 +333,7 @@ const getMockMessage = () => {
276
333
  variants: [
277
334
  {
278
335
  languageTag: "en",
279
- match: { gender: "female", guestOther: "1" },
336
+ match: ["female", "1"],
280
337
  pattern: [
281
338
  {
282
339
  type: "Text",
@@ -286,7 +343,7 @@ const getMockMessage = () => {
286
343
  },
287
344
  {
288
345
  languageTag: "en",
289
- match: { gender: "female", guestOther: "2" },
346
+ match: ["female", "2"],
290
347
  pattern: [
291
348
  {
292
349
  type: "Text",
@@ -296,7 +353,7 @@ const getMockMessage = () => {
296
353
  },
297
354
  {
298
355
  languageTag: "en",
299
- match: { gender: "female", guestOther: "*" },
356
+ match: ["female", "*"],
300
357
  pattern: [
301
358
  {
302
359
  type: "Text",
@@ -306,7 +363,7 @@ const getMockMessage = () => {
306
363
  },
307
364
  {
308
365
  languageTag: "en",
309
- match: { gender: "male", guestOther: "1" },
366
+ match: ["male", "1"],
310
367
  pattern: [
311
368
  {
312
369
  type: "Text",
@@ -316,7 +373,7 @@ const getMockMessage = () => {
316
373
  },
317
374
  {
318
375
  languageTag: "en",
319
- match: { gender: "male", guestOther: "2" },
376
+ match: ["male", "2"],
320
377
  pattern: [
321
378
  {
322
379
  type: "Text",
@@ -326,7 +383,7 @@ const getMockMessage = () => {
326
383
  },
327
384
  {
328
385
  languageTag: "en",
329
- match: { gender: "male", guestOther: "*" },
386
+ match: ["male", "*"],
330
387
  pattern: [
331
388
  {
332
389
  type: "Text",
@@ -336,7 +393,7 @@ const getMockMessage = () => {
336
393
  },
337
394
  {
338
395
  languageTag: "en",
339
- match: { gender: "*", guestOther: "0" },
396
+ match: ["*", "0"],
340
397
  pattern: [
341
398
  {
342
399
  type: "Text",
@@ -346,7 +403,7 @@ const getMockMessage = () => {
346
403
  },
347
404
  {
348
405
  languageTag: "en",
349
- match: { gender: "*", guestOther: "1" },
406
+ match: ["*", "1"],
350
407
  pattern: [
351
408
  {
352
409
  type: "Text",
@@ -356,7 +413,7 @@ const getMockMessage = () => {
356
413
  },
357
414
  {
358
415
  languageTag: "en",
359
- match: { gender: "*", guestOther: "2" },
416
+ match: ["*", "2"],
360
417
  pattern: [
361
418
  {
362
419
  type: "Text",
@@ -366,7 +423,7 @@ const getMockMessage = () => {
366
423
  },
367
424
  {
368
425
  languageTag: "en",
369
- match: { gender: "*", guestOther: "*" },
426
+ match: ["*", "*"],
370
427
  pattern: [
371
428
  {
372
429
  type: "Text",
@@ -4,7 +4,7 @@ export declare const createMessage: (id: string, patterns: Record<string, Patter
4
4
  selectors: never[];
5
5
  variants: {
6
6
  languageTag: string;
7
- match: {};
7
+ match: never[];
8
8
  pattern: ({
9
9
  type: "Text";
10
10
  value: string;
@@ -3,7 +3,7 @@ export const createMessage = (id, patterns) => ({
3
3
  selectors: [],
4
4
  variants: Object.entries(patterns).map(([languageTag, patterns]) => ({
5
5
  languageTag,
6
- match: {},
6
+ match: [],
7
7
  pattern: typeof patterns === "string"
8
8
  ? [
9
9
  {
@@ -10,7 +10,7 @@ test("should create a simple message", () => {
10
10
  "variants": [
11
11
  {
12
12
  "languageTag": "de",
13
- "match": {},
13
+ "match": [],
14
14
  "pattern": [
15
15
  {
16
16
  "type": "Text",
@@ -36,7 +36,7 @@ test("should create a message with pattern", () => {
36
36
  "variants": [
37
37
  {
38
38
  "languageTag": "en",
39
- "match": {},
39
+ "match": [],
40
40
  "pattern": [
41
41
  {
42
42
  "type": "Text",
@@ -67,7 +67,7 @@ test("should create a message with a pattern", () => {
67
67
  "variants": [
68
68
  {
69
69
  "languageTag": "en",
70
- "match": {},
70
+ "match": [],
71
71
  "pattern": [
72
72
  {
73
73
  "type": "Text",
@@ -77,7 +77,7 @@ test("should create a message with a pattern", () => {
77
77
  },
78
78
  {
79
79
  "languageTag": "de",
80
- "match": {},
80
+ "match": [],
81
81
  "pattern": [
82
82
  {
83
83
  "type": "Text",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@inlang/sdk",
3
3
  "type": "module",
4
- "version": "0.7.0",
4
+ "version": "0.8.0",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -44,7 +44,7 @@ const exampleMessages: Message[] = [
44
44
  variants: [
45
45
  {
46
46
  languageTag: "en",
47
- match: {},
47
+ match: [],
48
48
  pattern: [
49
49
  {
50
50
  type: "Text",
@@ -60,7 +60,7 @@ const exampleMessages: Message[] = [
60
60
  variants: [
61
61
  {
62
62
  languageTag: "en",
63
- match: {},
63
+ match: [],
64
64
  pattern: [
65
65
  {
66
66
  type: "Text",
@@ -95,7 +95,7 @@ describe("config", () => {
95
95
  nodeishFs: fs,
96
96
  _import: $import,
97
97
  }),
98
- { from },
98
+ { from }
99
99
  )
100
100
 
101
101
  let counter = 0
@@ -125,7 +125,7 @@ describe("installed", () => {
125
125
  nodeishFs: fs,
126
126
  _import: $import,
127
127
  }),
128
- { from },
128
+ { from }
129
129
  )
130
130
  let counterPlugins = 0
131
131
  let counterLint = 0
@@ -188,7 +188,7 @@ describe("messages", () => {
188
188
  nodeishFs: fs,
189
189
  _import: mockImport,
190
190
  }),
191
- { from },
191
+ { from }
192
192
  )
193
193
 
194
194
  let counter = 0
@@ -217,7 +217,7 @@ describe("messages", () => {
217
217
  nodeishFs: fs,
218
218
  _import: $import,
219
219
  }),
220
- { from },
220
+ { from }
221
221
  )
222
222
 
223
223
  let counter = 0
@@ -232,7 +232,7 @@ describe("messages", () => {
232
232
  (
233
233
  Object.values(messagesBefore())[0]?.variants.find((variant) => variant.languageTag === "en")
234
234
  ?.pattern[0] as Text
235
- ).value,
235
+ ).value
236
236
  ).toBe("test")
237
237
 
238
238
  project.query.messages.update({
@@ -243,7 +243,7 @@ describe("messages", () => {
243
243
  variants: [
244
244
  {
245
245
  languageTag: "en",
246
- match: {},
246
+ match: [],
247
247
  pattern: [
248
248
  {
249
249
  type: "Text",
@@ -262,7 +262,7 @@ describe("messages", () => {
262
262
  (
263
263
  Object.values(messagesAfter())[0]?.variants.find((variant) => variant.languageTag === "en")
264
264
  ?.pattern[0] as Text
265
- ).value,
265
+ ).value
266
266
  ).toBe("test2")
267
267
  })
268
268
  })
@@ -278,7 +278,7 @@ describe("lint", () => {
278
278
  nodeishFs: fs,
279
279
  _import: $import,
280
280
  }),
281
- { from },
281
+ { from }
282
282
  )
283
283
 
284
284
  let counter = 0
@@ -316,7 +316,7 @@ describe("lint", () => {
316
316
  nodeishFs: fs,
317
317
  _import: $import,
318
318
  }),
319
- { from },
319
+ { from }
320
320
  )
321
321
 
322
322
  let counter = 0
@@ -329,7 +329,7 @@ describe("lint", () => {
329
329
  where: { id: "a" },
330
330
  data: {
331
331
  ...exampleMessages[0],
332
- variants: [{ languageTag: "en", match: {}, pattern: [{ type: "Text", value: "new" }] }],
332
+ variants: [{ languageTag: "en", match: [], pattern: [{ type: "Text", value: "new" }] }],
333
333
  },
334
334
  })
335
335
 
@@ -342,7 +342,7 @@ describe("lint", () => {
342
342
  where: { id: "a" },
343
343
  data: {
344
344
  ...exampleMessages[0],
345
- variants: [{ languageTag: "en", match: {}, pattern: [{ type: "Text", value: "new" }] }],
345
+ variants: [{ languageTag: "en", match: [], pattern: [{ type: "Text", value: "new" }] }],
346
346
  },
347
347
  })
348
348
 
@@ -6,7 +6,7 @@ export const solidAdapter = (
6
6
  project: InlangProject,
7
7
  arg: {
8
8
  from: typeof solidFrom
9
- },
9
+ }
10
10
  ): InlangProjectWithSolidAdapter => {
11
11
  const convert = <T>(signal: () => T): (() => T) => {
12
12
  return arg.from(observable(signal)) as () => T
package/src/api.ts CHANGED
@@ -64,7 +64,7 @@ export type MessageQueryApi = {
64
64
  get: ((args: { where: { id: Message["id"] } }) => Readonly<Message>) & {
65
65
  subscribe: (
66
66
  args: { where: { id: Message["id"] } },
67
- callback: (message: Message) => void,
67
+ callback: (message: Message) => void
68
68
  ) => void
69
69
  }
70
70
  includedMessageIds: Subscribable<Message["id"][]>
@@ -84,7 +84,7 @@ export type MessageLintReportsQueryApi = {
84
84
  }) => Readonly<MessageLintReport[]>) & {
85
85
  subscribe: (
86
86
  args: { where: { messageId: MessageLintReport["messageId"] } },
87
- callback: (MessageLintRules: Readonly<MessageLintReport[]>) => void,
87
+ callback: (MessageLintRules: Readonly<MessageLintReport[]>) => void
88
88
  ) => void
89
89
  }
90
90
  }
@@ -14,7 +14,7 @@ export function createMessageLintReportsQuery(
14
14
  messages: () => Array<Message> | undefined,
15
15
  settings: () => ProjectSettings,
16
16
  installedMessageLintRules: () => Array<InstalledMessageLintRule>,
17
- resolvedModules: () => Awaited<ReturnType<typeof resolveModules>> | undefined,
17
+ resolvedModules: () => Awaited<ReturnType<typeof resolveModules>> | undefined
18
18
  ): InlangProject["query"]["messageLintReports"] {
19
19
  // @ts-expect-error
20
20
  const index = new ReactiveMap<MessageLintReport["messageId"], MessageLintReport[]>()
@@ -34,7 +34,7 @@ export function createMessageLintReportsQuery(
34
34
  settings: {
35
35
  ..._settings,
36
36
  messageLintRuleLevels: Object.fromEntries(
37
- installedMessageLintRules().map((rule) => [rule.id, rule.level]),
37
+ installedMessageLintRules().map((rule) => [rule.id, rule.level])
38
38
  ),
39
39
  },
40
40
  messages: _messages,
@@ -58,13 +58,13 @@ export function createMessageLintReportsQuery(
58
58
  return {
59
59
  getAll: createSubscribable(() => {
60
60
  return structuredClone(
61
- [...index.values()].flat().length === 0 ? [] : [...index.values()].flat(),
61
+ [...index.values()].flat().length === 0 ? [] : [...index.values()].flat()
62
62
  )
63
63
  }),
64
64
  get: Object.assign(get, {
65
65
  subscribe: (
66
66
  args: Parameters<MessageLintReportsQueryApi["get"]["subscribe"]>[0],
67
- callback: Parameters<MessageLintReportsQueryApi["get"]["subscribe"]>[1],
67
+ callback: Parameters<MessageLintReportsQueryApi["get"]["subscribe"]>[1]
68
68
  ) => createSubscribable(() => get(args)).subscribe(callback),
69
69
  }) as any,
70
70
  }