@inlang/sdk 0.7.0 → 0.9.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 (42) hide show
  1. package/dist/adapter/solidAdapter.test.js +6 -6
  2. package/dist/createMessagesQuery.test.js +9 -0
  3. package/dist/loadProject.d.ts.map +1 -1
  4. package/dist/loadProject.js +8 -4
  5. package/dist/loadProject.test.js +14 -15
  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/resolve-modules/plugins/resolvePlugins.d.ts.map +1 -1
  11. package/dist/resolve-modules/plugins/resolvePlugins.js +3 -5
  12. package/dist/resolve-modules/plugins/resolvePlugins.test.js +79 -49
  13. package/dist/resolve-modules/plugins/types.d.ts +4 -5
  14. package/dist/resolve-modules/plugins/types.d.ts.map +1 -1
  15. package/dist/test-utilities/createMessage.d.ts +1 -1
  16. package/dist/test-utilities/createMessage.js +1 -1
  17. package/dist/test-utilities/createMessage.test.js +4 -4
  18. package/package.json +1 -1
  19. package/src/adapter/solidAdapter.test.ts +14 -14
  20. package/src/adapter/solidAdapter.ts +1 -1
  21. package/src/api.ts +2 -2
  22. package/src/createMessageLintReportsQuery.ts +4 -4
  23. package/src/createMessagesQuery.test.ts +30 -17
  24. package/src/createMessagesQuery.ts +2 -2
  25. package/src/lint/message/lintMessages.ts +1 -1
  26. package/src/lint/message/lintSingleMessage.test.ts +1 -1
  27. package/src/lint/message/lintSingleMessage.ts +2 -2
  28. package/src/loadProject.test.ts +24 -27
  29. package/src/loadProject.ts +20 -16
  30. package/src/messages/errors.ts +2 -2
  31. package/src/messages/variant.test.ts +113 -49
  32. package/src/messages/variant.ts +73 -67
  33. package/src/parseConfig.ts +2 -2
  34. package/src/resolve-modules/import.test.ts +2 -2
  35. package/src/resolve-modules/import.ts +1 -1
  36. package/src/resolve-modules/message-lint-rules/resolveMessageLintRules.ts +1 -1
  37. package/src/resolve-modules/plugins/resolvePlugins.test.ts +96 -64
  38. package/src/resolve-modules/plugins/resolvePlugins.ts +19 -21
  39. package/src/resolve-modules/plugins/types.ts +4 -8
  40. package/src/resolve-modules/resolveModules.ts +4 -4
  41. package/src/test-utilities/createMessage.test.ts +7 -7
  42. package/src/test-utilities/createMessage.ts +1 -1
@@ -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.9.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
@@ -175,7 +175,7 @@ describe("messages", () => {
175
175
  description: {
176
176
  en: "wo",
177
177
  },
178
- loadMessages: ({ languageTags }) => (languageTags.length ? exampleMessages : []),
178
+ loadMessages: ({ settings }) => (settings.languageTags.length ? exampleMessages : []),
179
179
  saveMessages: () => undefined,
180
180
  }
181
181
 
@@ -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
  }
@@ -54,10 +54,10 @@ describe("get", () => {
54
54
  const message2 = query.get({ where: { id: "first-message" } })!
55
55
 
56
56
  expect(
57
- (message1.variants.find((v) => v.languageTag === "en")!.pattern![0]! as Text).value,
57
+ (message1.variants.find((v) => v.languageTag === "en")!.pattern![0]! as Text).value
58
58
  ).toBe("Hello World 2")
59
59
  expect(
60
- (message2.variants.find((v) => v.languageTag === "en")!.pattern![0]! as Text).value,
60
+ (message2.variants.find((v) => v.languageTag === "en")!.pattern![0]! as Text).value
61
61
  ).toBe("Hello World")
62
62
  })
63
63
  })
@@ -94,7 +94,7 @@ describe("getAll", () => {
94
94
  (
95
95
  Object.values(query.getAll()!)[0]!.variants.find((v) => v.languageTag === "en")!
96
96
  .pattern![0]! as Text
97
- ).value,
97
+ ).value
98
98
  ).toBe("Hello World")
99
99
  })
100
100
  })
@@ -194,13 +194,13 @@ describe("reactivity", () => {
194
194
  expect(message).toBeDefined()
195
195
  expect(
196
196
  (message?.variants.find((variant) => variant.languageTag === "en")?.pattern[0] as Text)
197
- .value,
197
+ .value
198
198
  ).toBe("before")
199
199
 
200
200
  query.update({ where: { id: "1" }, data: createMessage("1", { en: "after" }) })
201
201
  expect(
202
202
  (message?.variants.find((variant) => variant.languageTag === "en")?.pattern[0] as Text)
203
- .value,
203
+ .value
204
204
  ).toBe("after")
205
205
  })
206
206
  })
@@ -217,13 +217,13 @@ describe("reactivity", () => {
217
217
  expect(message).toBeDefined()
218
218
  expect(
219
219
  (message?.variants.find((variant) => variant.languageTag === "en")?.pattern[0] as Text)
220
- .value,
220
+ .value
221
221
  ).toBe("before")
222
222
 
223
223
  query.upsert({ where: { id: "1" }, data: createMessage("1", { en: "after" }) })
224
224
  expect(
225
225
  (message?.variants.find((variant) => variant.languageTag === "en")?.pattern[0] as Text)
226
- .value,
226
+ .value
227
227
  ).toBe("after")
228
228
  })
229
229
  })
@@ -254,14 +254,14 @@ describe("reactivity", () => {
254
254
  expect(message).toBeDefined()
255
255
  expect(
256
256
  (message!.variants.find((variant) => variant.languageTag === "en")?.pattern[0] as Text)
257
- .value,
257
+ .value
258
258
  ).toBe("before")
259
259
 
260
260
  setMessages([createMessage("1", { en: "after" })])
261
261
  expect(message).toBeDefined()
262
262
  expect(
263
263
  (message!.variants.find((variant) => variant.languageTag === "en")?.pattern[0] as Text)
264
- .value,
264
+ .value
265
265
  ).toBe("after")
266
266
  })
267
267
  })
@@ -301,7 +301,7 @@ describe("reactivity", () => {
301
301
  (
302
302
  Object.values(messages!)![0]!.variants.find((variant) => variant.languageTag === "en")!
303
303
  .pattern[0]! as Text
304
- ).value,
304
+ ).value
305
305
  ).toBe("before")
306
306
 
307
307
  query.update({ where: { id: "1" }, data: createMessage("1", { en: "after" }) })
@@ -310,7 +310,7 @@ describe("reactivity", () => {
310
310
  (
311
311
  Object.values(messages!)![0]!.variants.find((variant) => variant.languageTag === "en")!
312
312
  .pattern[0]! as Text
313
- ).value,
313
+ ).value
314
314
  ).toBe("after")
315
315
  })
316
316
  })
@@ -329,7 +329,7 @@ describe("reactivity", () => {
329
329
  (
330
330
  Object.values(messages!)![0]!.variants.find((variant) => variant.languageTag === "en")!
331
331
  .pattern[0]! as Text
332
- ).value,
332
+ ).value
333
333
  ).toBe("before")
334
334
 
335
335
  query.upsert({ where: { id: "1" }, data: createMessage("1", { en: "after" }) })
@@ -337,7 +337,7 @@ describe("reactivity", () => {
337
337
  (
338
338
  Object.values(messages!)![0]!.variants.find((variant) => variant.languageTag === "en")!
339
339
  .pattern[0]! as Text
340
- ).value,
340
+ ).value
341
341
  ).toBe("after")
342
342
  })
343
343
  })
@@ -385,7 +385,7 @@ describe("reactivity", () => {
385
385
  (
386
386
  Object.values(messages!)![0]!.variants.find((variant) => variant.languageTag === "en")!
387
387
  .pattern[0]! as Text
388
- ).value,
388
+ ).value
389
389
  ).toBe("before")
390
390
 
391
391
  setMessages([createMessage("1", { en: "after" })])
@@ -394,9 +394,22 @@ describe("reactivity", () => {
394
394
  (
395
395
  Object.values(messages!)![0]!.variants.find((variant) => variant.languageTag === "en")!
396
396
  .pattern[0]! as Text
397
- ).value,
397
+ ).value
398
398
  ).toBe("after")
399
399
  })
400
+
401
+ it("should not mutate messages signal outside the query when using the query", async () => {
402
+ const [inputMessages] = createSignal<Message[]>([createMessage("1", { en: "before" })])
403
+ const query = createMessagesQuery(inputMessages)
404
+
405
+ let messages: Readonly<Message[]> | undefined = undefined
406
+ await createChangeListener(() => (messages = query.getAll()))
407
+ expect(Object.values(messages!)).toHaveLength(1)
408
+
409
+ query.create({ data: createMessage("2", { en: "" }) })
410
+
411
+ expect(inputMessages().length).toBe(1)
412
+ })
400
413
  })
401
414
  })
402
415
 
@@ -421,11 +434,11 @@ it("instances should not share state", async () => {
421
434
  query1.update({ where: { id: "1" }, data: createMessage("1", { en: "after" }) })
422
435
  expect(
423
436
  (message1!.variants.find((variant) => variant.languageTag === "en")!.pattern[0]! as Text)
424
- .value,
437
+ .value
425
438
  ).toBe("after")
426
439
  expect(
427
440
  (message2!.variants.find((variant) => variant.languageTag === "en")!.pattern[0]! as Text)
428
- .value,
441
+ .value
429
442
  ).toBe("before")
430
443
 
431
444
  query1.delete({ where: { id: "1" } })
@@ -8,7 +8,7 @@ import type { InlangProject, MessageQueryApi } from "./api.js"
8
8
  * Creates a reactive query API for messages.
9
9
  */
10
10
  export function createMessagesQuery(
11
- messages: () => Array<Message>,
11
+ messages: () => Array<Message>
12
12
  ): InlangProject["query"]["messages"] {
13
13
  // @ts-expect-error
14
14
  const index = new ReactiveMap<string, Message>()
@@ -31,7 +31,7 @@ export function createMessagesQuery(
31
31
  get: Object.assign(get, {
32
32
  subscribe: (
33
33
  args: Parameters<MessageQueryApi["get"]["subscribe"]>[0],
34
- callback: Parameters<MessageQueryApi["get"]["subscribe"]>[1],
34
+ callback: Parameters<MessageQueryApi["get"]["subscribe"]>[1]
35
35
  ) => createSubscribable(() => get(args)).subscribe(callback),
36
36
  }) as any,
37
37
  includedMessageIds: createSubscribable(() => {
@@ -13,7 +13,7 @@ export const lintMessages = async (args: {
13
13
  lintSingleMessage({
14
14
  ...args,
15
15
  message,
16
- }),
16
+ })
17
17
  )
18
18
 
19
19
  const results = await Promise.all(promises)
@@ -44,7 +44,7 @@ describe("lintSingleMessage", async () => {
44
44
  messages,
45
45
  message: message1,
46
46
  rules: [lintRule1],
47
- }),
47
+ })
48
48
  )
49
49
  expect(result.error).toBeDefined()
50
50
  expect(result.data).toBeUndefined()
@@ -42,8 +42,8 @@ export const lintSingleMessage = async (args: {
42
42
  errors.push(
43
43
  new MessagedLintRuleThrowedError(
44
44
  `Lint rule '${rule.id}' throwed while linting message "${args.message.id}".`,
45
- { cause: error },
46
- ),
45
+ { cause: error }
46
+ )
47
47
  )
48
48
  }
49
49
  })
@@ -53,7 +53,7 @@ const exampleMessages: Message[] = [
53
53
  variants: [
54
54
  {
55
55
  languageTag: "en",
56
- match: {},
56
+ match: [],
57
57
  pattern: [
58
58
  {
59
59
  type: "Text",
@@ -69,7 +69,7 @@ const exampleMessages: Message[] = [
69
69
  variants: [
70
70
  {
71
71
  languageTag: "en",
72
- match: {},
72
+ match: [],
73
73
  pattern: [
74
74
  {
75
75
  type: "Text",
@@ -363,7 +363,7 @@ describe("functionality", () => {
363
363
  sourceLanguageTag: "en",
364
364
  languageTags: ["en"],
365
365
  modules: ["plugin.js", "lintRule.js"],
366
- } satisfies ProjectSettings),
366
+ } satisfies ProjectSettings)
367
367
  )
368
368
 
369
369
  const _import: ImportFunction = async (name) => {
@@ -411,7 +411,7 @@ describe("functionality", () => {
411
411
  sourceLanguageTag: "en",
412
412
  languageTags: ["en"],
413
413
  modules: ["plugin.js", "lintRule.js"],
414
- } satisfies ProjectSettings),
414
+ } satisfies ProjectSettings)
415
415
  )
416
416
  const _import: ImportFunction = async (name) => {
417
417
  return {
@@ -428,7 +428,7 @@ describe("functionality", () => {
428
428
  await new Promise((resolve) => setTimeout(resolve, 510))
429
429
 
430
430
  expect(
431
- project.query.messageLintReports.get({ where: { messageId: "some-message" } }),
431
+ project.query.messageLintReports.get({ where: { messageId: "some-message" } })
432
432
  ).toHaveLength(1)
433
433
  })
434
434
  })
@@ -482,17 +482,16 @@ describe("functionality", () => {
482
482
  it("should call saveMessages() on updates", async () => {
483
483
  const fs = createNodeishMemoryFs()
484
484
 
485
- await fs.writeFile(
486
- "./project.inlang.json",
487
- JSON.stringify({
488
- sourceLanguageTag: "en",
489
- languageTags: ["en", "de"],
490
- modules: ["plugin.js"],
491
- "plugin.project.json": {
492
- pathPattern: "./resources/{languageTag}.json",
493
- },
494
- }),
495
- )
485
+ const settings: ProjectSettings = {
486
+ sourceLanguageTag: "en",
487
+ languageTags: ["en", "de"],
488
+ modules: ["plugin.js"],
489
+ "plugin.project.json": {
490
+ pathPattern: "./resources/{languageTag}.json",
491
+ },
492
+ }
493
+
494
+ await fs.writeFile("./project.inlang.json", JSON.stringify(settings))
496
495
 
497
496
  await fs.mkdir("./resources")
498
497
 
@@ -526,7 +525,7 @@ describe("functionality", () => {
526
525
  variants: [
527
526
  {
528
527
  languageTag: "en",
529
- match: {},
528
+ match: [],
530
529
  pattern: [
531
530
  {
532
531
  type: "Text",
@@ -536,7 +535,7 @@ describe("functionality", () => {
536
535
  },
537
536
  {
538
537
  languageTag: "de",
539
- match: {},
538
+ match: [],
540
539
  pattern: [
541
540
  {
542
541
  type: "Text",
@@ -556,7 +555,7 @@ describe("functionality", () => {
556
555
  variants: [
557
556
  {
558
557
  languageTag: "en",
559
- match: {},
558
+ match: [],
560
559
  pattern: [
561
560
  {
562
561
  type: "Text",
@@ -567,7 +566,7 @@ describe("functionality", () => {
567
566
 
568
567
  {
569
568
  languageTag: "de",
570
- match: {},
569
+ match: [],
571
570
  pattern: [
572
571
  {
573
572
  type: "Text",
@@ -583,9 +582,7 @@ describe("functionality", () => {
583
582
 
584
583
  expect(mockSaveFn.mock.calls.length).toBe(1)
585
584
 
586
- expect(mockSaveFn.mock.calls[0][0].settings).toStrictEqual({
587
- pathPattern: "./resources/{languageTag}.json",
588
- })
585
+ expect(mockSaveFn.mock.calls[0][0].settings).toStrictEqual(settings)
589
586
 
590
587
  expect(Object.values(mockSaveFn.mock.calls[0][0].messages)).toStrictEqual([
591
588
  {
@@ -594,7 +591,7 @@ describe("functionality", () => {
594
591
  variants: [
595
592
  {
596
593
  languageTag: "en",
597
- match: {},
594
+ match: [],
598
595
  pattern: [
599
596
  {
600
597
  type: "Text",
@@ -604,7 +601,7 @@ describe("functionality", () => {
604
601
  },
605
602
  {
606
603
  languageTag: "de",
607
- match: {},
604
+ match: [],
608
605
  pattern: [
609
606
  {
610
607
  type: "Text",
@@ -620,7 +617,7 @@ describe("functionality", () => {
620
617
  variants: [
621
618
  {
622
619
  languageTag: "en",
623
- match: {},
620
+ match: [],
624
621
  pattern: [
625
622
  {
626
623
  type: "Text",
@@ -630,7 +627,7 @@ describe("functionality", () => {
630
627
  },
631
628
  {
632
629
  languageTag: "de",
633
- match: {},
630
+ match: [],
634
631
  pattern: [
635
632
  {
636
633
  type: "Text",