@inlang/paraglide-js 2.0.11 → 2.0.13

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 (37) hide show
  1. package/dist/cli/steps/initialize-inlang-project.d.ts.map +1 -1
  2. package/dist/cli/utils.d.ts.map +1 -1
  3. package/dist/compiler/compile-bundle.d.ts.map +1 -1
  4. package/dist/compiler/compile-message.d.ts.map +1 -1
  5. package/dist/compiler/compile-pattern.d.ts.map +1 -1
  6. package/dist/compiler/compile-project.d.ts.map +1 -1
  7. package/dist/compiler/create-paraglide.d.ts +20 -14
  8. package/dist/compiler/create-paraglide.d.ts.map +1 -1
  9. package/dist/compiler/create-paraglide.js +18 -14
  10. package/dist/compiler/create-paraglide.test.js +7 -11
  11. package/dist/compiler/index.d.ts +1 -1
  12. package/dist/compiler/index.d.ts.map +1 -1
  13. package/dist/compiler/index.js +1 -1
  14. package/dist/compiler/runtime/assert-is-locale.test.js +3 -3
  15. package/dist/compiler/runtime/extract-locale-from-cookie.test.js +7 -11
  16. package/dist/compiler/runtime/extract-locale-from-request.test.js +57 -77
  17. package/dist/compiler/runtime/extract-locale-from-url.d.ts.map +1 -1
  18. package/dist/compiler/runtime/extract-locale-from-url.js +35 -13
  19. package/dist/compiler/runtime/extract-locale-from-url.test.js +51 -61
  20. package/dist/compiler/runtime/generate-static-localized-urls.test.js +48 -58
  21. package/dist/compiler/runtime/get-locale.test.js +52 -68
  22. package/dist/compiler/runtime/get-url-origin.test.js +2 -4
  23. package/dist/compiler/runtime/localize-href.d.ts.map +1 -1
  24. package/dist/compiler/runtime/localize-href.js +7 -4
  25. package/dist/compiler/runtime/localize-href.test.js +48 -58
  26. package/dist/compiler/runtime/localize-url.test.js +258 -294
  27. package/dist/compiler/runtime/set-locale.test.js +56 -74
  28. package/dist/compiler/runtime/track-message-call.test.js +1 -1
  29. package/dist/compiler/server/middleware.d.ts +4 -2
  30. package/dist/compiler/server/middleware.d.ts.map +1 -1
  31. package/dist/compiler/server/middleware.js +5 -3
  32. package/dist/compiler/server/middleware.test.js +163 -109
  33. package/dist/services/codegen/quotes.d.ts.map +1 -1
  34. package/dist/services/env-variables/index.js +1 -1
  35. package/dist/services/telemetry/capture.d.ts.map +1 -1
  36. package/dist/utilities/detect-json-formatting.d.ts.map +1 -1
  37. package/package.json +7 -7
@@ -3,15 +3,13 @@ import { createParaglide } from "../create-paraglide.js";
3
3
  import { newProject } from "@inlang/sdk";
4
4
  test("sets the locale and origin", async () => {
5
5
  const runtime = await createParaglide({
6
- project: await newProject({
6
+ blob: await newProject({
7
7
  settings: {
8
8
  baseLocale: "en",
9
9
  locales: ["en", "de", "fr"],
10
10
  },
11
11
  }),
12
- compilerOptions: {
13
- strategy: ["url", "globalVariable"],
14
- },
12
+ strategy: ["url", "globalVariable"],
15
13
  });
16
14
  // setting the global variable to fr to assure that
17
15
  runtime.setLocale("fr");
@@ -37,15 +35,13 @@ test("sets the locale and origin", async () => {
37
35
  });
38
36
  test("delocalizes the url if the url strategy is used and returns the locale", async () => {
39
37
  const runtime = await createParaglide({
40
- project: await newProject({
38
+ blob: await newProject({
41
39
  settings: {
42
40
  baseLocale: "en",
43
41
  locales: ["en", "de"],
44
42
  },
45
43
  }),
46
- compilerOptions: {
47
- strategy: ["url"],
48
- },
44
+ strategy: ["url"],
49
45
  });
50
46
  const request = new Request(new URL("https://example.com/de/page"), {
51
47
  headers: { "Sec-Fetch-Dest": "document" },
@@ -59,15 +55,13 @@ test("delocalizes the url if the url strategy is used and returns the locale", a
59
55
  });
60
56
  test("does not delocalize the url if the url strategy is not used", async () => {
61
57
  const runtime = await createParaglide({
62
- project: await newProject({
58
+ blob: await newProject({
63
59
  settings: {
64
60
  baseLocale: "en",
65
61
  locales: ["en", "de"],
66
62
  },
67
63
  }),
68
- compilerOptions: {
69
- strategy: ["globalVariable", "baseLocale"],
70
- },
64
+ strategy: ["globalVariable", "baseLocale"],
71
65
  });
72
66
  const request = new Request(new URL("https://example.com/de/page"), {
73
67
  headers: { "Sec-Fetch-Dest": "document" },
@@ -81,25 +75,23 @@ test("does not delocalize the url if the url strategy is not used", async () =>
81
75
  });
82
76
  test("redirects to localized URL when non-URL strategy determines locale", async () => {
83
77
  const runtime = await createParaglide({
84
- project: await newProject({
78
+ blob: await newProject({
85
79
  settings: {
86
80
  baseLocale: "en",
87
81
  locales: ["en", "fr"],
88
82
  },
89
83
  }),
90
- compilerOptions: {
91
- strategy: ["cookie", "url"],
92
- cookieName: "PARAGLIDE_LOCALE",
93
- urlPatterns: [
94
- {
95
- pattern: "https://example.com/:path(.*)?",
96
- localized: [
97
- ["en", "https://example.com/en/:path(.*)?"],
98
- ["fr", "https://example.com/fr/:path(.*)?"],
99
- ],
100
- },
101
- ],
102
- },
84
+ strategy: ["cookie", "url"],
85
+ cookieName: "PARAGLIDE_LOCALE",
86
+ urlPatterns: [
87
+ {
88
+ pattern: "https://example.com/:path(.*)?",
89
+ localized: [
90
+ ["en", "https://example.com/en/:path(.*)?"],
91
+ ["fr", "https://example.com/fr/:path(.*)?"],
92
+ ],
93
+ },
94
+ ],
103
95
  });
104
96
  // Request to URL in en with cookie specifying French
105
97
  const request = new Request("https://example.com/en/some-path", {
@@ -117,28 +109,104 @@ test("redirects to localized URL when non-URL strategy determines locale", async
117
109
  expect(response.status).toBe(307); // Redirect status code
118
110
  expect(response.headers.get("Location")).toBe("https://example.com/fr/some-path");
119
111
  });
120
- test("does not redirect if URL already matches determined locale", async () => {
112
+ test("call onRedirect callback when redirecting to new url", async () => {
121
113
  const runtime = await createParaglide({
122
- project: await newProject({
114
+ blob: await newProject({
123
115
  settings: {
124
116
  baseLocale: "en",
125
117
  locales: ["en", "fr"],
126
118
  },
127
119
  }),
128
- compilerOptions: {
129
- strategy: ["cookie", "url"],
130
- cookieName: "PARAGLIDE_LOCALE",
131
- urlPatterns: [
132
- {
133
- pattern: "https://example.com/:path(.*)?",
134
- localized: [
135
- ["en", "https://example.com/en/:path(.*)?"],
136
- ["fr", "https://example.com/fr/:path(.*)?"],
137
- ],
138
- },
139
- ],
120
+ strategy: ["cookie", "url"],
121
+ cookieName: "PARAGLIDE_LOCALE",
122
+ urlPatterns: [
123
+ {
124
+ pattern: "https://example.com/:path(.*)?",
125
+ localized: [
126
+ ["en", "https://example.com/en/:path(.*)?"],
127
+ ["fr", "https://example.com/fr/:path(.*)?"],
128
+ ],
129
+ },
130
+ ],
131
+ });
132
+ // Request to URL in en with cookie specifying French
133
+ const request = new Request("https://example.com/en/some-path", {
134
+ headers: {
135
+ cookie: `PARAGLIDE_LOCALE=fr`,
136
+ "Sec-Fetch-Dest": "document",
137
+ },
138
+ });
139
+ let response;
140
+ await runtime.paraglideMiddleware(request, () => {
141
+ // This shouldn't be called since we should redirect
142
+ throw new Error("Should not reach here");
143
+ }, {
144
+ onRedirect: (res) => {
145
+ response = res;
140
146
  },
141
147
  });
148
+ expect(response instanceof Response).toBe(true);
149
+ // needs to be 307 status code https://github.com/opral/inlang-paraglide-js/issues/416
150
+ expect(response.status).toBe(307); // Redirect status code
151
+ expect(response.headers.get("Location")).toBe("https://example.com/fr/some-path");
152
+ });
153
+ test("does not call onRedirect callback when there is no redirecting", async () => {
154
+ const runtime = await createParaglide({
155
+ blob: await newProject({
156
+ settings: {
157
+ baseLocale: "en",
158
+ locales: ["en", "fr"],
159
+ },
160
+ }),
161
+ strategy: ["cookie", "url"],
162
+ cookieName: "PARAGLIDE_LOCALE",
163
+ urlPatterns: [
164
+ {
165
+ pattern: "https://example.com/:path(.*)?",
166
+ localized: [
167
+ ["en", "https://example.com/en/:path(.*)?"],
168
+ ["fr", "https://example.com/fr/:path(.*)?"],
169
+ ],
170
+ },
171
+ ],
172
+ });
173
+ // Request to URL in en with cookie specifying French
174
+ const request = new Request("https://example.com/fr/some-path", {
175
+ headers: {
176
+ cookie: `PARAGLIDE_LOCALE=fr`,
177
+ "Sec-Fetch-Dest": "document",
178
+ },
179
+ });
180
+ let response = null;
181
+ await runtime.paraglideMiddleware(request, () => {
182
+ return new Response("Hello World");
183
+ }, {
184
+ onRedirect: (res) => {
185
+ response = res;
186
+ },
187
+ });
188
+ expect(response).toBe(null);
189
+ });
190
+ test("does not redirect if URL already matches determined locale", async () => {
191
+ const runtime = await createParaglide({
192
+ blob: await newProject({
193
+ settings: {
194
+ baseLocale: "en",
195
+ locales: ["en", "fr"],
196
+ },
197
+ }),
198
+ strategy: ["cookie", "url"],
199
+ cookieName: "PARAGLIDE_LOCALE",
200
+ urlPatterns: [
201
+ {
202
+ pattern: "https://example.com/:path(.*)?",
203
+ localized: [
204
+ ["en", "https://example.com/en/:path(.*)?"],
205
+ ["fr", "https://example.com/fr/:path(.*)?"],
206
+ ],
207
+ },
208
+ ],
209
+ });
142
210
  // Request to already localized URL matching cookie locale
143
211
  const request = new Request("https://example.com/fr/some-path", {
144
212
  headers: {
@@ -155,16 +223,14 @@ test("does not redirect if URL already matches determined locale", async () => {
155
223
  });
156
224
  test("works with disableAsyncLocalStorage option", async () => {
157
225
  const runtime = await createParaglide({
158
- project: await newProject({
226
+ blob: await newProject({
159
227
  settings: {
160
228
  baseLocale: "en",
161
229
  locales: ["en", "de", "fr"],
162
230
  },
163
231
  }),
164
- compilerOptions: {
165
- strategy: ["url", "globalVariable"],
166
- disableAsyncLocalStorage: true,
167
- },
232
+ strategy: ["url", "globalVariable"],
233
+ disableAsyncLocalStorage: true,
168
234
  });
169
235
  // Set a global locale to verify it doesn't interfere with request processing
170
236
  runtime.setLocale("fr");
@@ -189,15 +255,13 @@ test("works with disableAsyncLocalStorage option", async () => {
189
255
  });
190
256
  test("works with sequential parallel requests using disableAsyncLocalStorage", async () => {
191
257
  const runtime = await createParaglide({
192
- project: await newProject({
258
+ blob: await newProject({
193
259
  settings: {
194
260
  baseLocale: "en",
195
261
  locales: ["en", "de", "fr"],
196
262
  },
197
263
  }),
198
- compilerOptions: {
199
- strategy: ["url", "globalVariable"],
200
- },
264
+ strategy: ["url", "globalVariable"],
201
265
  });
202
266
  // setting the global variable to fr to assure that
203
267
  runtime.setLocale("fr");
@@ -224,25 +288,23 @@ test("works with sequential parallel requests using disableAsyncLocalStorage", a
224
288
  // https://github.com/opral/inlang-paraglide-js/issues/442
225
289
  test("falls back to next strategy when cookie contains invalid locale", async () => {
226
290
  const runtime = await createParaglide({
227
- project: await newProject({
291
+ blob: await newProject({
228
292
  settings: {
229
293
  baseLocale: "en",
230
294
  locales: ["en", "fr"],
231
295
  },
232
296
  }),
233
- compilerOptions: {
234
- strategy: ["cookie", "url", "baseLocale"],
235
- cookieName: "PARAGLIDE_LOCALE",
236
- urlPatterns: [
237
- {
238
- pattern: "https://example.com/:path(.*)?",
239
- localized: [
240
- ["en", "https://example.com/en/:path(.*)?"],
241
- ["fr", "https://example.com/fr/:path(.*)?"],
242
- ],
243
- },
244
- ],
245
- },
297
+ strategy: ["cookie", "url", "baseLocale"],
298
+ cookieName: "PARAGLIDE_LOCALE",
299
+ urlPatterns: [
300
+ {
301
+ pattern: "https://example.com/:path(.*)?",
302
+ localized: [
303
+ ["en", "https://example.com/en/:path(.*)?"],
304
+ ["fr", "https://example.com/fr/:path(.*)?"],
305
+ ],
306
+ },
307
+ ],
246
308
  });
247
309
  // Request with an invalid locale in cookie
248
310
  const request = new Request("https://example.com/fr/some-path", {
@@ -276,25 +338,23 @@ test("falls back to next strategy when cookie contains invalid locale", async ()
276
338
  test("prevents redirect loops by normalizing URLs with trailing slashes in different scenarios", async () => {
277
339
  // Create two different runtimes to test different strategy configurations
278
340
  const runtime = await createParaglide({
279
- project: await newProject({
341
+ blob: await newProject({
280
342
  settings: {
281
343
  baseLocale: "en",
282
344
  locales: ["en", "fr"],
283
345
  },
284
346
  }),
285
- compilerOptions: {
286
- strategy: ["cookie", "url"],
287
- cookieName: "PARAGLIDE_LOCALE",
288
- urlPatterns: [
289
- {
290
- pattern: "https://example.com/:path(.*)?",
291
- localized: [
292
- ["en", "https://example.com/en/:path(.*)?"],
293
- ["fr", "https://example.com/fr/:path(.*)?"],
294
- ],
295
- },
296
- ],
297
- },
347
+ strategy: ["cookie", "url"],
348
+ cookieName: "PARAGLIDE_LOCALE",
349
+ urlPatterns: [
350
+ {
351
+ pattern: "https://example.com/:path(.*)?",
352
+ localized: [
353
+ ["en", "https://example.com/en/:path(.*)?"],
354
+ ["fr", "https://example.com/fr/:path(.*)?"],
355
+ ],
356
+ },
357
+ ],
298
358
  });
299
359
  // SCENARIO 1: Basic trailing slash normalization with cookie strategy
300
360
  // Case 1A: Request URL has trailing slash, but localized URL might not
@@ -342,25 +402,23 @@ test("prevents redirect loops by normalizing URLs with trailing slashes in diffe
342
402
  // strategy: ["cookie", "url"]
343
403
  test.skip("doesn't redirect if disableUrlRedirect is true", async () => {
344
404
  const runtime = await createParaglide({
345
- project: await newProject({
405
+ blob: await newProject({
346
406
  settings: {
347
407
  baseLocale: "en",
348
408
  locales: ["en", "fr"],
349
409
  },
350
410
  }),
351
- compilerOptions: {
352
- cookieName: "PARAGLIDE_LOCALE",
353
- strategy: ["cookie", "url"],
354
- urlPatterns: [
355
- {
356
- pattern: "https://example.com/:path(.*)?",
357
- localized: [
358
- ["en", "https://example.com/en/:path(.*)?"],
359
- ["fr", "https://example.com/fr/:path(.*)?"],
360
- ],
361
- },
362
- ],
363
- },
411
+ cookieName: "PARAGLIDE_LOCALE",
412
+ strategy: ["cookie", "url"],
413
+ urlPatterns: [
414
+ {
415
+ pattern: "https://example.com/:path(.*)?",
416
+ localized: [
417
+ ["en", "https://example.com/en/:path(.*)?"],
418
+ ["fr", "https://example.com/fr/:path(.*)?"],
419
+ ],
420
+ },
421
+ ],
364
422
  });
365
423
  // Create a request that would normally be redirected
366
424
  const request = new Request("https://example.com/en/some-path", {
@@ -382,25 +440,23 @@ test.skip("doesn't redirect if disableUrlRedirect is true", async () => {
382
440
  });
383
441
  test("only redirects if the request.headers.get('Sec-Fetch-Dest') === 'document'", async () => {
384
442
  const runtime = await createParaglide({
385
- project: await newProject({
443
+ blob: await newProject({
386
444
  settings: {
387
445
  baseLocale: "en",
388
446
  locales: ["en", "fr"],
389
447
  },
390
448
  }),
391
- compilerOptions: {
392
- strategy: ["cookie", "url"],
393
- cookieName: "PARAGLIDE_LOCALE",
394
- urlPatterns: [
395
- {
396
- pattern: "https://example.com/:path(.*)?",
397
- localized: [
398
- ["en", "https://example.com/en/:path(.*)?"],
399
- ["fr", "https://example.com/fr/:path(.*)?"],
400
- ],
401
- },
402
- ],
403
- },
449
+ strategy: ["cookie", "url"],
450
+ cookieName: "PARAGLIDE_LOCALE",
451
+ urlPatterns: [
452
+ {
453
+ pattern: "https://example.com/:path(.*)?",
454
+ localized: [
455
+ ["en", "https://example.com/en/:path(.*)?"],
456
+ ["fr", "https://example.com/fr/:path(.*)?"],
457
+ ],
458
+ },
459
+ ],
404
460
  });
405
461
  // Test with Sec-Fetch-Dest = document (should redirect)
406
462
  const documentRequest = new Request("https://example.com/en/some-path", {
@@ -436,15 +492,13 @@ test("only redirects if the request.headers.get('Sec-Fetch-Dest') === 'document'
436
492
  // https://github.com/opral/inlang-paraglide-js/issues/477
437
493
  test("does not catch errors thrown by downstream resolve call", async () => {
438
494
  const runtime = await createParaglide({
439
- project: await newProject({
495
+ blob: await newProject({
440
496
  settings: {
441
497
  baseLocale: "en",
442
498
  locales: ["en"],
443
499
  },
444
500
  }),
445
- compilerOptions: {
446
- strategy: ["url"],
447
- },
501
+ strategy: ["url"],
448
502
  });
449
503
  await expect(() => runtime.paraglideMiddleware(new Request(new URL("https://example.com/page"), {
450
504
  headers: { "Sec-Fetch-Dest": "document" },
@@ -1 +1 @@
1
- {"version":3,"file":"quotes.d.ts","sourceRoot":"","sources":["../../../src/services/codegen/quotes.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,eAAO,MAAM,WAAW,QAAS,MAAM,WAAoC,CAAC;AAC5E,yCAAyC;AACzC,eAAO,MAAM,QAAQ,QAAS,MAAM,WAAiB,CAAC"}
1
+ {"version":3,"file":"quotes.d.ts","sourceRoot":"","sources":["../../../src/services/codegen/quotes.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,WAAoC,CAAC;AAC5E,yCAAyC;AACzC,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,WAAiB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export const ENV_VARIABLES = {
2
2
  PARJS_APP_ID: "library.inlang.paraglideJs",
3
3
  PARJS_POSTHOG_TOKEN: "phc_m5yJZCxjOGxF8CJvP5sQ3H0d76xpnLrsmiZHduT4jDz",
4
- PARJS_PACKAGE_VERSION: "2.0.11",
4
+ PARJS_PACKAGE_VERSION: "2.0.13",
5
5
  };
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/services/telemetry/capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;GAIG;AACH,eAAO,MAAM,OAAO,UACZ,+BAA+B,QAChC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;CAC7C,kBA8BD,CAAC"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/services/telemetry/capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;;;GAIG;AACH,eAAO,MAAM,OAAO,GACnB,OAAO,+BAA+B,EACtC,MAAM;IACL,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;CAC7C,kBA8BD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect-json-formatting.d.ts","sourceRoot":"","sources":["../../src/utilities/detect-json-formatting.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,SAC1B,MAAM,KACV,CAAC,CACH,KAAK,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC3C,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAE3C,MAAM,CAOV,CAAC"}
1
+ {"version":3,"file":"detect-json-formatting.d.ts","sourceRoot":"","sources":["../../src/utilities/detect-json-formatting.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAChC,MAAM,MAAM,KACV,CAAC,CACH,KAAK,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAC3C,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAE3C,MAAM,CAOV,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@inlang/paraglide-js",
3
3
  "type": "module",
4
- "version": "2.0.11",
4
+ "version": "2.0.13",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
7
7
  "access": "public",
@@ -31,7 +31,7 @@
31
31
  "json5": "2.2.3",
32
32
  "unplugin": "^2.1.2",
33
33
  "urlpattern-polyfill": "^10.0.0",
34
- "@inlang/sdk": "2.4.7",
34
+ "@inlang/sdk": "2.4.8",
35
35
  "@inlang/recommend-sherlock": "0.2.1"
36
36
  },
37
37
  "devDependencies": {
@@ -44,15 +44,15 @@
44
44
  "memfs": "4.17.0",
45
45
  "prettier": "^3.4.2",
46
46
  "rolldown": "1.0.0-beta.1",
47
- "typedoc": "^0.27.7",
48
- "typedoc-plugin-markdown": "^4.4.2",
49
- "typedoc-plugin-missing-exports": "^3.1.0",
47
+ "typedoc": "0.28.3",
48
+ "typedoc-plugin-markdown": "^4.6.0",
49
+ "typedoc-plugin-missing-exports": "4.0.0",
50
50
  "typescript": "^5.7.3",
51
51
  "typescript-eslint": "^8.20.0",
52
52
  "vitest": "2.1.8",
53
53
  "@inlang/plugin-message-format": "4.0.0",
54
- "@opral/tsconfig": "1.1.0",
55
- "@inlang/paraglide-js": "2.0.11"
54
+ "@inlang/paraglide-js": "2.0.13",
55
+ "@opral/tsconfig": "1.1.0"
56
56
  },
57
57
  "keywords": [
58
58
  "inlang",