@inlang/sdk 0.6.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 (48) hide show
  1. package/dist/adapter/solidAdapter.test.js +5 -5
  2. package/dist/createMessageLintReportsQuery.d.ts.map +1 -1
  3. package/dist/createMessageLintReportsQuery.js +0 -1
  4. package/dist/createMessagesQuery.js +1 -1
  5. package/dist/createMessagesQuery.test.js +9 -0
  6. package/dist/loadProject.js +3 -2
  7. package/dist/loadProject.test.js +10 -10
  8. package/dist/messages/variant.d.ts +4 -4
  9. package/dist/messages/variant.d.ts.map +1 -1
  10. package/dist/messages/variant.js +55 -55
  11. package/dist/messages/variant.test.js +102 -45
  12. package/dist/resolve-modules/plugins/errors.d.ts +1 -1
  13. package/dist/resolve-modules/plugins/errors.d.ts.map +1 -1
  14. package/dist/resolve-modules/plugins/errors.js +1 -1
  15. package/dist/resolve-modules/plugins/resolvePlugins.d.ts.map +1 -1
  16. package/dist/resolve-modules/plugins/resolvePlugins.js +1 -11
  17. package/dist/resolve-modules/plugins/resolvePlugins.test.js +0 -28
  18. package/dist/resolve-modules/plugins/types.d.ts +0 -4
  19. package/dist/resolve-modules/plugins/types.d.ts.map +1 -1
  20. package/dist/test-utilities/createMessage.d.ts +1 -1
  21. package/dist/test-utilities/createMessage.js +1 -1
  22. package/dist/test-utilities/createMessage.test.js +4 -4
  23. package/package.json +1 -1
  24. package/src/adapter/solidAdapter.test.ts +13 -13
  25. package/src/adapter/solidAdapter.ts +1 -1
  26. package/src/api.ts +2 -2
  27. package/src/createMessageLintReportsQuery.ts +4 -5
  28. package/src/createMessagesQuery.test.ts +30 -17
  29. package/src/createMessagesQuery.ts +3 -3
  30. package/src/lint/message/lintMessages.ts +1 -1
  31. package/src/lint/message/lintSingleMessage.test.ts +1 -1
  32. package/src/lint/message/lintSingleMessage.ts +2 -2
  33. package/src/loadProject.test.ts +14 -14
  34. package/src/loadProject.ts +15 -15
  35. package/src/messages/errors.ts +2 -2
  36. package/src/messages/variant.test.ts +113 -49
  37. package/src/messages/variant.ts +73 -67
  38. package/src/parseConfig.ts +2 -2
  39. package/src/resolve-modules/import.test.ts +2 -2
  40. package/src/resolve-modules/import.ts +1 -1
  41. package/src/resolve-modules/message-lint-rules/resolveMessageLintRules.ts +1 -1
  42. package/src/resolve-modules/plugins/errors.ts +2 -2
  43. package/src/resolve-modules/plugins/resolvePlugins.test.ts +2 -33
  44. package/src/resolve-modules/plugins/resolvePlugins.ts +16 -27
  45. package/src/resolve-modules/plugins/types.ts +0 -4
  46. package/src/resolve-modules/resolveModules.ts +4 -4
  47. package/src/test-utilities/createMessage.test.ts +7 -7
  48. 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",
@@ -1,6 +1,6 @@
1
1
  import type { Plugin } from "@inlang/plugin";
2
2
  type PluginErrorOptions = {
3
- plugin: Plugin["id"];
3
+ plugin: Plugin["id"] | undefined;
4
4
  } & Partial<Error>;
5
5
  declare class PluginError extends Error {
6
6
  readonly plugin: string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/plugins/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,KAAK,kBAAkB,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;CACpB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AAElB,cAAM,WAAY,SAAQ,KAAK;IAC9B,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAElB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAKxD;AAED,qBAAa,uBAAwB,SAAQ,WAAW;gBAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,gCAAiC,SAAQ,WAAW;gBACpD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,2BAA4B,SAAQ,WAAW;gBAC/C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,6CAA8C,SAAQ,WAAW;gBACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,6CAA8C,SAAQ,WAAW;gBACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,mCAAoC,SAAQ,WAAW;gBACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,0CAA2C,SAAQ,WAAW;gBAC9D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAKxD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/plugins/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,KAAK,kBAAkB,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;CAChC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AAElB,cAAM,WAAY,SAAQ,KAAK;IAC9B,SAAgB,MAAM,EAAE,MAAM,CAAA;gBAElB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAKxD;AAED,qBAAa,uBAAwB,SAAQ,WAAW;gBAC3C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,gCAAiC,SAAQ,WAAW;gBACpD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,2BAA4B,SAAQ,WAAW;gBAC/C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,6CAA8C,SAAQ,WAAW;gBACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,6CAA8C,SAAQ,WAAW;gBACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,mCAAoC,SAAQ,WAAW;gBACvD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAIxD;AAED,qBAAa,0CAA2C,SAAQ,WAAW;gBAC9D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB;CAKxD"}
@@ -3,7 +3,7 @@ class PluginError extends Error {
3
3
  constructor(message, options) {
4
4
  super(message);
5
5
  this.name = "PluginError";
6
- this.plugin = options.plugin;
6
+ this.plugin = options.plugin ?? "unknown";
7
7
  }
8
8
  }
9
9
  export class PluginHasInvalidIdError extends PluginError {
@@ -1 +1 @@
1
- {"version":3,"file":"resolvePlugins.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/plugins/resolvePlugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAuBxD,eAAO,MAAM,cAAc,EAAE,sBA+J5B,CAAA"}
1
+ {"version":3,"file":"resolvePlugins.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/plugins/resolvePlugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAuBxD,eAAO,MAAM,cAAc,EAAE,sBAoJ5B,CAAA"}
@@ -15,7 +15,6 @@ export const resolvePlugins = async (args) => {
15
15
  data: {
16
16
  loadMessages: undefined,
17
17
  saveMessages: undefined,
18
- detectedLanguageTags: [],
19
18
  customApi: {},
20
19
  },
21
20
  errors: [],
@@ -86,15 +85,6 @@ export const resolvePlugins = async (args) => {
86
85
  nodeishFs: args.nodeishFs,
87
86
  });
88
87
  }
89
- if (typeof plugin.detectedLanguageTags === "function") {
90
- const detectedLangugeTags = await plugin.detectedLanguageTags({
91
- settings: args.settings?.[plugin.id] ?? {},
92
- nodeishFs: args.nodeishFs,
93
- });
94
- result.data.detectedLanguageTags = [
95
- ...new Set([...result.data.detectedLanguageTags, ...detectedLangugeTags]),
96
- ];
97
- }
98
88
  if (typeof plugin.addCustomApi === "function") {
99
89
  const { data: customApi } = tryCatch(() => plugin.addCustomApi({
100
90
  settings: args.settings?.[plugin.id] ?? {},
@@ -107,7 +97,7 @@ export const resolvePlugins = async (args) => {
107
97
  // --- LOADMESSAGE / SAVEMESSAGE NOT DEFINED ---
108
98
  if (typeof result.data.loadMessages !== "function" ||
109
99
  typeof result.data.saveMessages !== "function") {
110
- result.errors.push(new PluginsDoNotProvideLoadOrSaveMessagesError("It seems you did not install any plugin that handles messages. Please add one to make inlang work. See https://inlang.com/documentation/plugins/registry.", { plugin: "plugin.inlang.missing" }));
100
+ result.errors.push(new PluginsDoNotProvideLoadOrSaveMessagesError("It seems you did not install any plugin that handles messages. Please add one to make inlang work. See https://inlang.com/documentation/plugins/registry.", { plugin: undefined }));
111
101
  }
112
102
  return result;
113
103
  };
@@ -159,34 +159,6 @@ describe("saveMessages", () => {
159
159
  expect(resolved.errors[0]).toBeInstanceOf(PluginsDoNotProvideLoadOrSaveMessagesError);
160
160
  });
161
161
  });
162
- describe("detectedLanguageTags", () => {
163
- it("should merge language tags from plugins", async () => {
164
- const mockPlugin = {
165
- id: "plugin.namepsace.detectedLanguageTags",
166
- description: { en: "My plugin description" },
167
- displayName: { en: "My plugin" },
168
- detectedLanguageTags: async () => ["de", "en"],
169
- addCustomApi: () => {
170
- return {};
171
- },
172
- };
173
- const mockPlugin2 = {
174
- id: "plugin.namepsace.detectedLanguageTags2",
175
- description: { en: "My plugin description" },
176
- displayName: { en: "My plugin" },
177
- addCustomApi: () => {
178
- return {};
179
- },
180
- detectedLanguageTags: async () => ["de", "fr"],
181
- };
182
- const resolved = await resolvePlugins({
183
- plugins: [mockPlugin, mockPlugin2],
184
- settings: {},
185
- nodeishFs: {},
186
- });
187
- expect(resolved.data.detectedLanguageTags).toEqual(["de", "en", "fr"]);
188
- });
189
- });
190
162
  describe("addCustomApi", () => {
191
163
  it("it should resolve app specific api", async () => {
192
164
  const mockPlugin = {
@@ -32,10 +32,6 @@ export type ResolvedPluginApi = {
32
32
  saveMessages: (args: {
33
33
  messages: Message[];
34
34
  }) => Promise<void> | void;
35
- /**
36
- * Detect language tags in the project provided plugins.
37
- */
38
- detectedLanguageTags: LanguageTag[];
39
35
  /**
40
36
  * App specific APIs.
41
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAC5E,OAAO,KAAK,EACX,mCAAmC,EACnC,6CAA6C,EAC7C,6CAA6C,EAC7C,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,0CAA0C,EAC1C,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEzE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACzC,qBAAqB,EACrB,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAC9C,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE;IAC3C,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;IAC1C,SAAS,EAAE,uBAAuB,CAAA;CAClC,KAAK,OAAO,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,KAAK,CACV,mCAAmC,GACnC,6CAA6C,GAC7C,6CAA6C,GAC7C,uBAAuB,GACvB,2BAA2B,GAC3B,gCAAgC,GAChC,0CAA0C,CAC5C,CAAA;CACD,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE;QACpB,YAAY,EAAE,WAAW,EAAE,CAAA;QAC3B,iBAAiB,EAAE,WAAW,CAAA;KAC9B,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAA;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACrE;;OAEG;IACH,oBAAoB,EAAE,WAAW,EAAE,CAAA;IACnC;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,EAAE,MAAM,CAAC,OAAO,MAAM,IAAI,MAAM,EAAE,GAAG,WAAW,MAAM,IAAI,MAAM,EAAE,EAAE,OAAO,CAAC,GAAG;QACvF,yBAAyB,CAAC,EAAE,2BAA2B,CAAA;KACvD,CAAA;CACD,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/resolve-modules/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,IAAI,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAC5E,OAAO,KAAK,EACX,mCAAmC,EACnC,6CAA6C,EAC7C,6CAA6C,EAC7C,uBAAuB,EACvB,2BAA2B,EAC3B,gCAAgC,EAChC,0CAA0C,EAC1C,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEzE;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACzC,qBAAqB,EACrB,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAC9C,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE;IAC3C,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;IAC1C,SAAS,EAAE,uBAAuB,CAAA;CAClC,KAAK,OAAO,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,KAAK,CACV,mCAAmC,GACnC,6CAA6C,GAC7C,6CAA6C,GAC7C,uBAAuB,GACvB,2BAA2B,GAC3B,gCAAgC,GAChC,0CAA0C,CAC5C,CAAA;CACD,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE;QACpB,YAAY,EAAE,WAAW,EAAE,CAAA;QAC3B,iBAAiB,EAAE,WAAW,CAAA;KAC9B,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,CAAA;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACrE;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,EAAE,MAAM,CAAC,OAAO,MAAM,IAAI,MAAM,EAAE,GAAG,WAAW,MAAM,IAAI,MAAM,EAAE,EAAE,OAAO,CAAC,GAAG;QACvF,yBAAyB,CAAC,EAAE,2BAA2B,CAAA;KACvD,CAAA;CACD,CAAA"}
@@ -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.6.0",
4
+ "version": "0.8.0",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {
7
7
  "access": "public"