@prosopo/locale 3.6.0 → 3.6.2

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 (132) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +9 -7
  2. package/.turbo/turbo-build$colon$tsc.log +6 -6
  3. package/.turbo/turbo-build.log +11 -9
  4. package/CHANGELOG.md +31 -0
  5. package/dist/cjs/direction.cjs +19 -0
  6. package/dist/cjs/errorMessage.cjs +15 -0
  7. package/dist/cjs/index.cjs +5 -0
  8. package/dist/cjs/locales/en/translation.cjs +21 -4
  9. package/dist/cjs/translationKey.cjs +4 -0
  10. package/dist/direction.d.ts +3 -0
  11. package/dist/direction.d.ts.map +1 -0
  12. package/dist/direction.js +19 -0
  13. package/dist/direction.js.map +1 -0
  14. package/dist/errorMessage.d.ts +7 -0
  15. package/dist/errorMessage.d.ts.map +1 -0
  16. package/dist/errorMessage.js +15 -0
  17. package/dist/errorMessage.js.map +1 -0
  18. package/dist/index.d.ts +5 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -2
  21. package/dist/index.js.map +1 -1
  22. package/dist/locales/ar/translation.json +21 -4
  23. package/dist/locales/az/translation.json +21 -4
  24. package/dist/locales/cs/translation.json +21 -4
  25. package/dist/locales/de/translation.json +21 -4
  26. package/dist/locales/el/translation.json +21 -4
  27. package/dist/locales/en/translation.js +21 -4
  28. package/dist/locales/en/translation.json +21 -4
  29. package/dist/locales/es/translation.json +21 -4
  30. package/dist/locales/fi/translation.json +22 -5
  31. package/dist/locales/fr/translation.json +21 -4
  32. package/dist/locales/hi/translation.json +424 -407
  33. package/dist/locales/hu/translation.json +21 -4
  34. package/dist/locales/id/translation.json +21 -4
  35. package/dist/locales/it/translation.json +21 -4
  36. package/dist/locales/ja/translation.json +21 -4
  37. package/dist/locales/jv/translation.json +21 -4
  38. package/dist/locales/ko/translation.json +21 -4
  39. package/dist/locales/ml/translation.json +21 -4
  40. package/dist/locales/ms/translation.json +21 -4
  41. package/dist/locales/nl/translation.json +22 -5
  42. package/dist/locales/no/translation.json +21 -4
  43. package/dist/locales/pl/translation.json +21 -4
  44. package/dist/locales/pt/translation.json +21 -4
  45. package/dist/locales/pt-BR/translation.json +21 -4
  46. package/dist/locales/ro/translation.json +21 -4
  47. package/dist/locales/ru/translation.json +21 -4
  48. package/dist/locales/sr/translation.json +21 -4
  49. package/dist/locales/sv/translation.json +21 -4
  50. package/dist/locales/th/translation.json +21 -4
  51. package/dist/locales/tr/translation.json +21 -4
  52. package/dist/locales/uk/translation.json +21 -4
  53. package/dist/locales/vi/translation.json +21 -4
  54. package/dist/locales/zh-CN/translation.json +21 -4
  55. package/dist/tests/direction.unit.test.d.ts +2 -0
  56. package/dist/tests/direction.unit.test.d.ts.map +1 -0
  57. package/dist/tests/direction.unit.test.js +31 -0
  58. package/dist/tests/direction.unit.test.js.map +1 -0
  59. package/dist/tests/errorMessage.unit.test.d.ts +2 -0
  60. package/dist/tests/errorMessage.unit.test.d.ts.map +1 -0
  61. package/dist/tests/errorMessage.unit.test.js +49 -0
  62. package/dist/tests/errorMessage.unit.test.js.map +1 -0
  63. package/dist/tests/i18nFrontend.unit.test.js +22 -11
  64. package/dist/tests/i18nFrontend.unit.test.js.map +1 -1
  65. package/dist/tests/locale.test-d.js +18 -3
  66. package/dist/tests/locale.test-d.js.map +1 -1
  67. package/dist/tests/localePlaceholders.unit.test.d.ts +2 -0
  68. package/dist/tests/localePlaceholders.unit.test.d.ts.map +1 -0
  69. package/dist/tests/localePlaceholders.unit.test.js +35 -0
  70. package/dist/tests/localePlaceholders.unit.test.js.map +1 -0
  71. package/dist/tests/thrownErrorKeys.unit.test.d.ts +2 -0
  72. package/dist/tests/thrownErrorKeys.unit.test.d.ts.map +1 -0
  73. package/dist/tests/thrownErrorKeys.unit.test.js +59 -0
  74. package/dist/tests/thrownErrorKeys.unit.test.js.map +1 -0
  75. package/dist/tests/translationKey.unit.test.js +13 -1
  76. package/dist/tests/translationKey.unit.test.js.map +1 -1
  77. package/dist/translationKey.d.ts +7 -1
  78. package/dist/translationKey.d.ts.map +1 -1
  79. package/dist/translationKey.js +4 -1
  80. package/dist/translationKey.js.map +1 -1
  81. package/dist/translator.d.ts +2 -1
  82. package/dist/translator.d.ts.map +1 -1
  83. package/dist/translator.js.map +1 -1
  84. package/dist/types.d.ts +2 -1
  85. package/dist/types.d.ts.map +1 -1
  86. package/package.json +3 -3
  87. package/src/direction.ts +36 -0
  88. package/src/errorMessage.ts +37 -0
  89. package/src/index.ts +5 -1
  90. package/src/locales/ar/translation.json +21 -4
  91. package/src/locales/az/translation.json +21 -4
  92. package/src/locales/cs/translation.json +21 -4
  93. package/src/locales/de/translation.json +21 -4
  94. package/src/locales/el/translation.json +21 -4
  95. package/src/locales/en/translation.json +21 -4
  96. package/src/locales/es/translation.json +21 -4
  97. package/src/locales/fi/translation.json +22 -5
  98. package/src/locales/fr/translation.json +21 -4
  99. package/src/locales/hi/translation.json +424 -407
  100. package/src/locales/hu/translation.json +21 -4
  101. package/src/locales/id/translation.json +21 -4
  102. package/src/locales/it/translation.json +21 -4
  103. package/src/locales/ja/translation.json +21 -4
  104. package/src/locales/jv/translation.json +21 -4
  105. package/src/locales/ko/translation.json +21 -4
  106. package/src/locales/ml/translation.json +21 -4
  107. package/src/locales/ms/translation.json +21 -4
  108. package/src/locales/nl/translation.json +22 -5
  109. package/src/locales/no/translation.json +21 -4
  110. package/src/locales/pl/translation.json +21 -4
  111. package/src/locales/pt/translation.json +21 -4
  112. package/src/locales/pt-BR/translation.json +21 -4
  113. package/src/locales/ro/translation.json +21 -4
  114. package/src/locales/ru/translation.json +21 -4
  115. package/src/locales/sr/translation.json +21 -4
  116. package/src/locales/sv/translation.json +21 -4
  117. package/src/locales/th/translation.json +21 -4
  118. package/src/locales/tr/translation.json +21 -4
  119. package/src/locales/uk/translation.json +21 -4
  120. package/src/locales/vi/translation.json +21 -4
  121. package/src/locales/zh-CN/translation.json +21 -4
  122. package/src/tests/direction.unit.test.ts +52 -0
  123. package/src/tests/errorMessage.unit.test.ts +84 -0
  124. package/src/tests/i18nFrontend.unit.test.ts +25 -14
  125. package/src/tests/locale.test-d.ts +26 -2
  126. package/src/tests/localePlaceholders.unit.test.ts +81 -0
  127. package/src/tests/thrownErrorKeys.unit.test.ts +91 -0
  128. package/src/tests/translationKey.unit.test.ts +15 -0
  129. package/src/translationKey.ts +14 -5
  130. package/src/translator.ts +3 -2
  131. package/src/types.ts +6 -1
  132. package/tsconfig.tsbuildinfo +1 -1
@@ -10,7 +10,9 @@
10
10
  "INVALID_SIGNATURE": "Chữ ký không hợp lệ",
11
11
  "SITE_KEY_MISSING": "SITE KEY thiếu",
12
12
  "ACCOUNT_NOT_FOUND": "Không tìm thấy tài khoản",
13
- "INVALID_TIMESTAMP": "Thời điểm không hợp lệ"
13
+ "INVALID_TIMESTAMP": "Thời điểm không hợp lệ",
14
+ "MISSING_AUTH_HEADER": "Thiếu tiêu đề ủy quyền",
15
+ "INVALID_JWT": "JWT không hợp lệ"
14
16
  },
15
17
  "API": {
16
18
  "INSUFFICIENT_PERMISSIONS": "Không đủ quyền để thực hiện hành động này",
@@ -54,7 +56,8 @@
54
56
  "MOBILE_BLOCKED": "Các yêu cầu từ kết nối mạng di động không được phép cho trang web này",
55
57
  "SATELLITE_BLOCKED": "Các yêu cầu từ kết nối vệ tinh không được phép cho trang web này",
56
58
  "CRAWLER_BLOCKED": "Các yêu cầu từ trình thu thập dữ liệu đã biết không được phép cho trang web này",
57
- "DISALLOWED_WEBVIEW": "Yêu cầu từ trình duyệt trong ứng dụng (WebView) không được phép cho trang web này"
59
+ "DISALLOWED_WEBVIEW": "Yêu cầu từ trình duyệt trong ứng dụng (WebView) không được phép cho trang web này",
60
+ "INTERNAL_SERVER_ERROR": "Lỗi máy chủ nội bộ"
58
61
  },
59
62
  "PORTAL": {
60
63
  "CANNOT_MODIFY_OWNER_USER": "Không thể sửa đổi người dùng chủ sở hữu",
@@ -381,6 +384,11 @@
381
384
  "INSECURE_CONTEXT": "Procaptcha yêu cầu kết nối an toàn (HTTPS)",
382
385
  "CHECKING": "Đang xác minh bạn là người thật",
383
386
  "IMAGE_DIALOG_LABEL": "Thử thách hình ảnh",
387
+ "CANNOT_LOAD": "Không thể tải CAPTCHA",
388
+ "RELOAD": "Tải lại",
389
+ "VERIFIED_AGENT": "Tác nhân đã xác minh",
390
+ "TRUSTED_REQUEST": "Yêu cầu đáng tin cậy",
391
+ "LOADING": "Đang tải",
384
392
  "PUZZLE": {
385
393
  "DIALOG_LABEL": "Thử thách ghép hình",
386
394
  "DRAG": "Kéo mảnh ghép đến vị trí đích",
@@ -436,7 +444,13 @@
436
444
  "TABLES_UNDEFINED": "Bảng chưa xác định",
437
445
  "CONNECTION_UNDEFINED": "Kết nối không xác định",
438
446
  "COMMITMENT_FLAG_FAILED": "Không thể đánh dấu cam kết là đã xử lý",
439
- "UNKNOWN": "Lỗi cơ sở dữ liệu không xác định"
447
+ "UNKNOWN": "Lỗi cơ sở dữ liệu không xác định",
448
+ "QUERY_ERROR": "Truy vấn cơ sở dữ liệu thất bại",
449
+ "REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "Chưa xác định kết nối Redis cho quy tắc truy cập",
450
+ "USER_ACCESS_RULES_STORAGE_UNDEFINED": "Chưa xác định bộ lưu trữ quy tắc truy cập người dùng",
451
+ "SESSION_STORE_FAILED": "Không thể lưu phiên",
452
+ "SESSION_CHECK_REMOVE_FAILED": "Không thể kiểm tra và xóa phiên",
453
+ "SESSION_GET_FAILED": "Không thể lấy phiên"
440
454
  },
441
455
  "CAPTCHA": {
442
456
  "PARSE_ERROR": "Lỗi phân tích captcha",
@@ -455,7 +469,10 @@
455
469
  "INVALID_SALT": "Salt không hợp lệ",
456
470
  "INVALID_TOKEN": "Token không hợp lệ",
457
471
  "INVALID_SOLUTION": "Giải pháp không hợp lệ",
458
- "DECRYPTION_ERROR": "Lỗi giải mã"
472
+ "DECRYPTION_ERROR": "Lỗi giải mã",
473
+ "SOLUTION_NOT_FOUND": "Không tìm thấy lời giải",
474
+ "DECISION_MACHINE_DENIED": "Bị máy quyết định từ chối",
475
+ "INVALID_TIMESTAMP": "Thời điểm không hợp lệ"
459
476
  },
460
477
  "CLI": {
461
478
  "PARAMETER_ERROR": "Tham số không hợp lệ"
@@ -10,7 +10,9 @@
10
10
  "INVALID_SIGNATURE": "无效的签名",
11
11
  "SITE_KEY_MISSING": "缺少SITE KEY",
12
12
  "ACCOUNT_NOT_FOUND": "找不到帐户",
13
- "INVALID_TIMESTAMP": "无效的时间戳"
13
+ "INVALID_TIMESTAMP": "无效的时间戳",
14
+ "MISSING_AUTH_HEADER": "缺少授权标头",
15
+ "INVALID_JWT": "无效的 JWT"
14
16
  },
15
17
  "API": {
16
18
  "INSUFFICIENT_PERMISSIONS": "权限不足,无法执行此操作",
@@ -54,7 +56,8 @@
54
56
  "MOBILE_BLOCKED": "此网站不允许来自移动网络连接的请求",
55
57
  "SATELLITE_BLOCKED": "此网站不允许来自卫星连接的请求",
56
58
  "CRAWLER_BLOCKED": "此网站不允许来自已知爬虫的请求",
57
- "DISALLOWED_WEBVIEW": "此站点不允许来自应用内浏览器 (WebView) 的请求"
59
+ "DISALLOWED_WEBVIEW": "此站点不允许来自应用内浏览器 (WebView) 的请求",
60
+ "INTERNAL_SERVER_ERROR": "服务器内部错误"
58
61
  },
59
62
  "PORTAL": {
60
63
  "CANNOT_MODIFY_OWNER_USER": "无法修改所有者用户",
@@ -381,6 +384,11 @@
381
384
  "INSECURE_CONTEXT": "Procaptcha 需要安全连接 (HTTPS)",
382
385
  "CHECKING": "正在验证您是真人",
383
386
  "IMAGE_DIALOG_LABEL": "图片验证",
387
+ "CANNOT_LOAD": "无法加载验证码",
388
+ "RELOAD": "重新加载",
389
+ "VERIFIED_AGENT": "已验证的代理",
390
+ "TRUSTED_REQUEST": "受信任的请求",
391
+ "LOADING": "加载中",
384
392
  "PUZZLE": {
385
393
  "DIALOG_LABEL": "拼图验证",
386
394
  "DRAG": "将拼块拖到目标位置",
@@ -436,7 +444,13 @@
436
444
  "TABLES_UNDEFINED": "未定义表",
437
445
  "CONNECTION_UNDEFINED": "连接未定义",
438
446
  "COMMITMENT_FLAG_FAILED": "标记承诺为已处理失败",
439
- "UNKNOWN": "未知数据库错误"
447
+ "UNKNOWN": "未知数据库错误",
448
+ "QUERY_ERROR": "数据库查询失败",
449
+ "REDIS_ACCESS_RULES_CONNECTION_UNDEFINED": "访问规则的 Redis 连接未定义",
450
+ "USER_ACCESS_RULES_STORAGE_UNDEFINED": "用户访问规则存储未定义",
451
+ "SESSION_STORE_FAILED": "存储会话失败",
452
+ "SESSION_CHECK_REMOVE_FAILED": "检查并移除会话失败",
453
+ "SESSION_GET_FAILED": "获取会话失败"
440
454
  },
441
455
  "CAPTCHA": {
442
456
  "PARSE_ERROR": "解析验证码时出错",
@@ -455,7 +469,10 @@
455
469
  "INVALID_SALT": "盐值无效",
456
470
  "INVALID_TOKEN": "无效的令牌",
457
471
  "INVALID_SOLUTION": "无效的解决方案",
458
- "DECRYPTION_ERROR": "解密错误"
472
+ "DECRYPTION_ERROR": "解密错误",
473
+ "SOLUTION_NOT_FOUND": "未找到解答",
474
+ "DECISION_MACHINE_DENIED": "被决策机拒绝",
475
+ "INVALID_TIMESTAMP": "无效的时间戳"
459
476
  },
460
477
  "CLI": {
461
478
  "PARAMETER_ERROR": "无效的参数"
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=direction.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direction.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/direction.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ import { describe, expect, test } from "vitest";
2
+ import { getLanguageDirection } from "../direction.js";
3
+ import { LanguageCodes } from "../translations.js";
4
+ describe("getLanguageDirection", () => {
5
+ test("is rtl for Arabic", () => {
6
+ expect(getLanguageDirection("ar")).toBe("rtl");
7
+ });
8
+ test("is rtl for regional and differently-cased Arabic tags", () => {
9
+ expect(getLanguageDirection("ar-EG")).toBe("rtl");
10
+ expect(getLanguageDirection("AR_sa")).toBe("rtl");
11
+ });
12
+ test("is rtl for other right-to-left scripts", () => {
13
+ for (const language of ["he", "fa", "ur", "yi"]) {
14
+ expect(getLanguageDirection(language)).toBe("rtl");
15
+ }
16
+ });
17
+ test("is ltr for every other shipped language", () => {
18
+ const others = LanguageCodes.filter((code) => code !== "ar");
19
+ for (const language of others) {
20
+ expect(getLanguageDirection(language)).toBe("ltr");
21
+ }
22
+ });
23
+ test("is ltr for an empty or unknown tag", () => {
24
+ expect(getLanguageDirection("")).toBe("ltr");
25
+ expect(getLanguageDirection("xx")).toBe("ltr");
26
+ });
27
+ test("matches only the primary subtag", () => {
28
+ expect(getLanguageDirection("en-AR")).toBe("ltr");
29
+ });
30
+ });
31
+ //# sourceMappingURL=direction.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direction.unit.test.js","sourceRoot":"","sources":["../../src/tests/direction.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACnD,KAAK,MAAM,QAAQ,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAa,aAAa,CAAC,MAAM,CAC5C,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAC/B,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=errorMessage.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorMessage.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/errorMessage.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ import { flatten } from "@prosopo/util";
2
+ import { describe, expect, test } from "vitest";
3
+ import { localiseErrorMessage } from "../errorMessage.js";
4
+ import de from "../locales/de/translation.json" with { type: "json" };
5
+ const i18nIn = (catalogue, isInitialized = true) => {
6
+ const flat = flatten(catalogue);
7
+ return {
8
+ language: "de",
9
+ isInitialized,
10
+ t: (key, options) => flat[key] ?? options?.defaultValue ?? key,
11
+ changeLanguage: async () => undefined,
12
+ hasLoadedNamespace: () => isInitialized,
13
+ on: () => undefined,
14
+ off: () => undefined,
15
+ };
16
+ };
17
+ const germanI18n = () => i18nIn(de);
18
+ describe("localiseErrorMessage", () => {
19
+ test("translates a catalogue key into the widget's language, not the server's", () => {
20
+ const i18n = germanI18n();
21
+ expect(localiseErrorMessage(i18n, {
22
+ message: "Invalid site key",
23
+ key: "API.INVALID_SITE_KEY",
24
+ })).toBe("Ungültiger Site-Schlüssel");
25
+ });
26
+ test("keeps the server message when the key is not in the catalogue", () => {
27
+ const i18n = germanI18n();
28
+ expect(localiseErrorMessage(i18n, {
29
+ message: "upstream timed out",
30
+ key: "API.NOT_A_REAL_KEY",
31
+ })).toBe("upstream timed out");
32
+ });
33
+ test("keeps the server message when there is no key", () => {
34
+ const i18n = germanI18n();
35
+ expect(localiseErrorMessage(i18n, { message: "Invalid site key" })).toBe("Invalid site key");
36
+ });
37
+ test("keeps the server message until i18n is initialised", () => {
38
+ const i18n = i18nIn(de, false);
39
+ expect(localiseErrorMessage(i18n, {
40
+ message: "Invalid site key",
41
+ key: "API.INVALID_SITE_KEY",
42
+ })).toBe("Invalid site key");
43
+ expect(localiseErrorMessage(undefined, {
44
+ message: "Invalid site key",
45
+ key: "API.INVALID_SITE_KEY",
46
+ })).toBe("Invalid site key");
47
+ });
48
+ });
49
+ //# sourceMappingURL=errorMessage.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorMessage.unit.test.js","sourceRoot":"","sources":["../../src/tests/errorMessage.unit.test.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,MAAM,gCAAgC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAKtE,MAAM,MAAM,GAAG,CACd,SAAkC,EAClC,aAAa,GAAG,IAAI,EACZ,EAAE;IACV,MAAM,IAAI,GAA2B,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,OAAO;QACN,QAAQ,EAAE,IAAI;QACd,aAAa;QACb,CAAC,EAAE,CAAC,GAAW,EAAE,OAA0B,EAAU,EAAE,CACtD,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,YAAY,IAAI,GAAG;QAC1C,cAAc,EAAE,KAAK,IAAmB,EAAE,CAAC,SAAS;QACpD,kBAAkB,EAAE,GAAY,EAAE,CAAC,aAAa;QAChD,EAAE,EAAE,GAAS,EAAE,CAAC,SAAS;QACzB,GAAG,EAAE,GAAS,EAAE,CAAC,SAAS;KAC1B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,GAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE3C,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACpF,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,CACL,oBAAoB,CAAC,IAAI,EAAE;YAC1B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,EAAE,sBAAsB;SAC3B,CAAC,CACF,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;QAC1E,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,CACL,oBAAoB,CAAC,IAAI,EAAE;YAC1B,OAAO,EAAE,oBAAoB;YAC7B,GAAG,EAAE,oBAAoB;SACzB,CAAC,CACF,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CACvE,kBAAkB,CAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,MAAM,CACL,oBAAoB,CAAC,IAAI,EAAE;YAC1B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,EAAE,sBAAsB;SAC3B,CAAC,CACF,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3B,MAAM,CACL,oBAAoB,CAAC,SAAS,EAAE;YAC/B,OAAO,EAAE,kBAAkB;YAC3B,GAAG,EAAE,sBAAsB;SAC3B,CAAC,CACF,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -129,17 +129,25 @@ describe("translating", () => {
129
129
  });
130
130
  test("substitutes interpolation values", async () => {
131
131
  const harness = await load({
132
- catalogues: { en: { POSITION: "{{x}} across, {{y}} down" } },
132
+ catalogues: {
133
+ en: { WIDGET: { PUZZLE: { POSITION: "{{x}} across, {{y}} down" } } },
134
+ },
133
135
  });
134
- expect((await initialised(harness)).t("POSITION", { x: 10, y: 20 })).toBe("10 across, 20 down");
136
+ expect((await initialised(harness)).t("WIDGET.PUZZLE.POSITION", {
137
+ x: 10,
138
+ y: 20,
139
+ })).toBe("10 across, 20 down");
135
140
  });
136
141
  test("falls back to English when the translation lacks the key", async () => {
137
142
  const harness = await load({
138
- catalogues: { fr: { KEPT: "gardé" }, en: { KEPT: "kept", ONLY: "only" } },
143
+ catalogues: {
144
+ fr: { WIDGET: { SUBMIT: "gardé" } },
145
+ en: { WIDGET: { SUBMIT: "kept", CANCEL: "only" } },
146
+ },
139
147
  });
140
148
  const i18n = await initialised(harness, "fr");
141
- expect(i18n.t("KEPT")).toBe("gardé");
142
- expect(i18n.t("ONLY")).toBe("only");
149
+ expect(i18n.t("WIDGET.SUBMIT")).toBe("gardé");
150
+ expect(i18n.t("WIDGET.CANCEL")).toBe("only");
143
151
  });
144
152
  test("falls back to the caller's default when no catalogue has the key", async () => {
145
153
  const harness = await load({ catalogues: { en: {} } });
@@ -149,20 +157,20 @@ describe("translating", () => {
149
157
  });
150
158
  test("interpolates the default too", async () => {
151
159
  const harness = await load({ catalogues: { en: {} } });
152
- expect((await initialised(harness)).t("POSITION", {
160
+ expect((await initialised(harness)).t("WIDGET.PUZZLE.POSITION", {
153
161
  defaultValue: "{{x}} across",
154
162
  x: 7,
155
163
  })).toBe("7 across");
156
164
  });
157
165
  test("falls back to the key when there is no default either", async () => {
158
166
  const harness = await load({ catalogues: { en: {} } });
159
- expect((await initialised(harness)).t("WIDGET.MISSING")).toBe("WIDGET.MISSING");
167
+ expect((await initialised(harness)).t("WIDGET.SUBMIT")).toBe("WIDGET.SUBMIT");
160
168
  });
161
169
  test("leaves a placeholder alone when no value was supplied for it", async () => {
162
170
  const harness = await load({
163
- catalogues: { en: { GREET: "hello {{name}}" } },
171
+ catalogues: { en: { WIDGET: { SUBMIT: "hello {{name}}" } } },
164
172
  });
165
- expect((await initialised(harness)).t("GREET", { other: 1 })).toBe("hello {{name}}");
173
+ expect((await initialised(harness)).t("WIDGET.SUBMIT", { other: 1 })).toBe("hello {{name}}");
166
174
  });
167
175
  });
168
176
  describe("when the catalogue cannot be fetched", () => {
@@ -180,12 +188,15 @@ describe("when the catalogue cannot be fetched", () => {
180
188
  describe("switching language", () => {
181
189
  test("loads the new catalogue and translates against it", async () => {
182
190
  const harness = await load({
183
- catalogues: { en: { YES: "yes" }, de: { YES: "ja" } },
191
+ catalogues: {
192
+ en: { WIDGET: { SUBMIT: "yes" } },
193
+ de: { WIDGET: { SUBMIT: "ja" } },
194
+ },
184
195
  });
185
196
  const i18n = await initialised(harness, "en");
186
197
  await i18n.changeLanguage("de");
187
198
  expect(i18n.language).toBe("de");
188
- expect(i18n.t("YES")).toBe("ja");
199
+ expect(i18n.t("WIDGET.SUBMIT")).toBe("ja");
189
200
  });
190
201
  test("notifies subscribers", async () => {
191
202
  const harness = await load({ catalogues: { en: {}, de: {} } });
@@ -1 +1 @@
1
- {"version":3,"file":"i18nFrontend.unit.test.js","sourceRoot":"","sources":["../../src/tests/i18nFrontend.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18nFrontend.unit.test.js","sourceRoot":"","sources":["../../src/tests/i18nFrontend.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAiB3E,MAAM,IAAI,GAAG,KAAK,EAAE,OAOnB,EAAoB,EAAE;IACtB,EAAE,CAAC,YAAY,EAAE,CAAC;IAElB,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,KAAK,GAA2B,OAAO,CAAC,MAAM;QACnD,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE;QAChC,CAAC,CAAC,EAAE,CAAC;IACN,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/D,EAAE,CAAC,UAAU,CACZ,OAAO,EACP,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAW,EAAqB,EAAE;QAC9C,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,IAAI,OAAO,CAAW,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO;YACN,EAAE,EAAE,IAAI,KAAK,SAAS;YACtB,IAAI,EAAE,KAAK,IAAsB,EAAE,CAAC,IAAI;SAC5B,CAAC;IACf,CAAC,CAAC,CACF,CAAC;IACF,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE;QAC7B,OAAO,EAAE,CAAC,GAAW,EAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI;QAC3D,OAAO,EAAE,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;YAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;KACD,CAAC,CAAC;IACH,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE;QACzB,IAAI,MAAM;YACT,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,MAAM,CAAC,KAAa;YACvB,MAAM,GAAG,KAAK,CAAC;QAChB,CAAC;KACD,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpD,OAAO;QACN,cAAc,EAAE,QAAQ,CAAC,OAAO;QAChC,SAAS;QACT,MAAM,EAAE,GAAW,EAAE,CAAC,MAAM;QAC5B,MAAM,EAAE,GAA2B,EAAE,CAAC,KAAK;KAC3C,CAAC;AACH,CAAC,CAAC;AAGF,MAAM,WAAW,GAAG,KAAK,EAAE,OAAgB,EAAE,GAAY,EAAkB,EAAE,CAC5E,IAAI,OAAO,CAAQ,CAAC,OAAO,EAAE,EAAE;IAC9B,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEJ,SAAS,CAAC,GAAG,EAAE;IACd,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtB,EAAE,CAAC,YAAY,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QAGzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YAC9B,SAAS,EAAE,CAAC,IAAI,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YAC9B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,CAAC,IAAI,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YAC9B,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,CAAC,IAAI,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YAC9B,SAAS,EAAE,CAAC,IAAI,CAAC;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAG/D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;YACtB,SAAS,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE1E,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAGpE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/D,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEjC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/D,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEjC,MAAM,CACL,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9B,GAAG,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAC5C,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE/D,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEjC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CACL,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC9B,GAAG,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAC5C,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvD,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEjC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;SAC5D,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAC/D,YAAY,CACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE;gBACX,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,0BAA0B,EAAE,EAAE,EAAE;aACpE;SACD,CAAC,CAAC;QAEH,MAAM,CACL,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE;YACxD,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;SACL,CAAC,CACF,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE;gBACX,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;gBACnC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;aAClD;SACD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvD,MAAM,CACL,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE;YACjD,YAAY,EAAE,6BAA6B;SAC3C,CAAC,CACF,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvD,MAAM,CACL,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE;YACxD,YAAY,EAAE,cAAc;YAC5B,CAAC,EAAE,CAAC;SACJ,CAAC,CACF,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvD,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAC3D,eAAe,CACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE;SAC5D,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CACzE,gBAAgB,CAChB,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACrD,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QAGxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAExC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CACnE,UAAU,CACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjE,MAAM,CAAC,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAC1E,IAAI,CACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;YAC1B,UAAU,EAAE;gBACX,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;gBACjC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;aAChC;SACD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE9C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAErC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;QAExC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAEtC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAE3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;QAExC,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QAGzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEjC,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC7C,IAAI,OAAgB,CAAC;IAErB,UAAU,CAAC,KAAK,IAAI,EAAE;QACrB,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CACtE,KAAK,CACL,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { assertType, describe, expectTypeOf, it } from "vitest";
2
- import { LanguageCodes, Languages, createTranslator, i18nMiddleware, isClientSide, isLanguage, loadI18next, translationKeys, } from "../index.js";
2
+ import { LanguageCodes, Languages, createTranslator, i18nMiddleware, isClientSide, isLanguage, isTranslationKey, loadI18next, translationKeys, } from "../index.js";
3
3
  describe("Languages", () => {
4
4
  it("is a frozen const map of name to code, not a widened record", () => {
5
5
  expectTypeOf(Languages.english).toEqualTypeOf();
@@ -25,8 +25,23 @@ describe("isLanguage", () => {
25
25
  });
26
26
  });
27
27
  describe("TranslationKey", () => {
28
- it("is a plain string — keys are read from JSON, never narrowed", () => {
29
- expectTypeOf().toEqualTypeOf();
28
+ it("is the union of the English catalogue's leaf paths", () => {
29
+ expectTypeOf().toExtend();
30
+ expectTypeOf().toExtend();
31
+ expectTypeOf().not.toExtend();
32
+ });
33
+ it("rejects a mistyped key", () => {
34
+ assertType("WIDGET.I_AM_HUMANN");
35
+ });
36
+ it("rejects a branch, which has no text of its own", () => {
37
+ assertType("WIDGET");
38
+ });
39
+ it("rejects a mistyped key at a translate call", () => {
40
+ const translate = (key) => key;
41
+ translate("API.UNKNOWNN");
42
+ });
43
+ it("narrows a runtime string with isTranslationKey", () => {
44
+ expectTypeOf(isTranslationKey).guards.toEqualTypeOf();
30
45
  });
31
46
  it("accepts a key literal, so error call sites need no cast", () => {
32
47
  assertType("API.UNKNOWN");
@@ -1 +1 @@
1
- {"version":3,"file":"locale.test-d.js","sourceRoot":"","sources":["../../src/tests/locale.test-d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locale.test-d.js","sourceRoot":"","sources":["../../src/tests/locale.test-d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=localePlaceholders.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localePlaceholders.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/localePlaceholders.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { describe, expect, it } from "vitest";
4
+ import { Languages } from "../index.js";
5
+ const readLocale = (locale) => JSON.parse(fs.readFileSync(path.resolve(`./src/locales/${locale}/translation.json`), "utf8"));
6
+ const flatten = (tree, prefix = "") => Object.entries(tree).flatMap(([key, value]) => typeof value === "string"
7
+ ? [[`${prefix}${key}`, value]]
8
+ : flatten(value, `${prefix}${key}.`));
9
+ const placeholders = (text) => (text.match(/\{\{[^}]*\}\}/g) ?? [])
10
+ .map((token) => token.replace(/\s+/g, ""))
11
+ .sort();
12
+ const en = new Map(flatten(readLocale("en")));
13
+ const locales = Object.values(Languages).filter((locale) => locale !== "en");
14
+ describe("locale interpolation placeholders", () => {
15
+ it.each(locales)("%s keeps every {{placeholder}} of the en source", (locale) => {
16
+ const mismatches = flatten(readLocale(locale))
17
+ .filter(([key, value]) => en.has(key) &&
18
+ placeholders(value).join() !==
19
+ placeholders(en.get(key) ?? "").join())
20
+ .map(([key, value]) => `${key}: ${value}`);
21
+ expect(mismatches).toEqual([]);
22
+ });
23
+ });
24
+ describe("hi translations", () => {
25
+ it("keep their Devanagari vowel signs", () => {
26
+ const devanagariLetter = /[ऄ-हक़-ॡ]/gu;
27
+ const sign = /[ऀ-ःऺ-ॏॕ-ॗॢॣ]/u;
28
+ const stripped = flatten(readLocale("hi"))
29
+ .filter(([, value]) => (value.match(devanagariLetter) ?? []).length >= 4 &&
30
+ !sign.test(value))
31
+ .map(([key, value]) => `${key}: ${value}`);
32
+ expect(stripped).toEqual([]);
33
+ });
34
+ });
35
+ //# sourceMappingURL=localePlaceholders.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localePlaceholders.unit.test.js","sourceRoot":"","sources":["../../src/tests/localePlaceholders.unit.test.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAmB,EAAE,CACtD,IAAI,CAAC,KAAK,CACT,EAAE,CAAC,YAAY,CACd,IAAI,CAAC,OAAO,CAAC,iBAAiB,MAAM,mBAAmB,CAAC,EACxD,MAAM,CACN,CACD,CAAC;AAEH,MAAM,OAAO,GAAG,CAAC,IAAqB,EAAE,MAAM,GAAG,EAAE,EAA2B,EAAE,CAC/E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAC3B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAA2B,EAAE,CACzC,OAAO,KAAK,KAAK,QAAQ;IACxB,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC,CACtC,CAAC;AAEH,MAAM,YAAY,GAAG,CAAC,IAAY,EAAY,EAAE,CAC/C,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAClC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KACjD,IAAI,EAAE,CAAC;AAEV,MAAM,EAAE,GAAG,IAAI,GAAG,CAAiB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAa,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CACxD,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CACnC,CAAC;AAEF,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CACf,iDAAiD,EACjD,CAAC,MAAc,EAAE,EAAE;QAClB,MAAM,UAAU,GAAa,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aACtD,MAAM,CACN,CAAC,CAAC,GAAG,EAAE,KAAK,CAAmB,EAAE,EAAE,CAClC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;YACX,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBACzB,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CACxC;aACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAmB,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CACD,CAAC;AACH,CAAC,CAAC,CAAC;AAKH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC5C,MAAM,gBAAgB,GAAG,YAAY,CAAC;QACtC,MAAM,IAAI,GAAG,gBAAgB,CAAC;QAC9B,MAAM,QAAQ,GAAa,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAClD,MAAM,CACN,CAAC,CAAC,EAAE,KAAK,CAAmB,EAAE,EAAE,CAC/B,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC;YACjD,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAClB;aACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAmB,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=thrownErrorKeys.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thrownErrorKeys.unit.test.d.ts","sourceRoot":"","sources":["../../src/tests/thrownErrorKeys.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { describe, expect, test } from "vitest";
4
+ import translationEn from "../locales/en/translation.json" with {
5
+ type: "json"
6
+ };
7
+ const PACKAGES_DIR = path.resolve("..");
8
+ const THROWN_KEY = /Error\(\s*["']([A-Z][A-Z_]*\.[A-Z0-9_]+)["']/g;
9
+ const REASON_KEY = /=\s*"([A-Z][A-Z_]*\.[A-Z0-9_]+)"/g;
10
+ const isCatalogueKey = (key) => {
11
+ const [section, name] = key.split(".");
12
+ const entries = section && section in translationEn
13
+ ? translationEn[section]
14
+ : undefined;
15
+ return name !== undefined && entries !== undefined && name in entries;
16
+ };
17
+ const sourceFiles = (dir) => fs.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
18
+ const full = path.join(dir, entry.name);
19
+ if (entry.isDirectory()) {
20
+ return entry.name === "tests" || entry.name === "node_modules"
21
+ ? []
22
+ : sourceFiles(full);
23
+ }
24
+ return entry.name.endsWith(".ts") && !entry.name.includes(".test.")
25
+ ? [full]
26
+ : [];
27
+ });
28
+ const workspaceSources = () => fs
29
+ .readdirSync(PACKAGES_DIR)
30
+ .map((name) => path.join(PACKAGES_DIR, name, "src"))
31
+ .filter((dir) => fs.existsSync(dir))
32
+ .flatMap(sourceFiles);
33
+ const uncataloguedKeys = (files, pattern) => {
34
+ const missing = new Set();
35
+ for (const file of files) {
36
+ for (const match of fs.readFileSync(file, "utf8").matchAll(pattern)) {
37
+ const key = match[1];
38
+ if (key && !isCatalogueKey(key)) {
39
+ missing.add(`${key} (${path.relative(PACKAGES_DIR, file)})`);
40
+ }
41
+ }
42
+ }
43
+ return [...missing].sort();
44
+ };
45
+ describe("error keys", () => {
46
+ test("every key an error class is constructed with is in the catalogue", () => {
47
+ expect(uncataloguedKeys(workspaceSources(), THROWN_KEY)).toEqual([]);
48
+ });
49
+ test("every ResultReason is in the catalogue", () => {
50
+ const reasons = path.join(PACKAGES_DIR, "types/src/provider/reasons.ts");
51
+ expect(uncataloguedKeys([reasons], REASON_KEY)).toEqual([]);
52
+ });
53
+ test("the scan finds the keys it is looking for", () => {
54
+ const found = workspaceSources().flatMap((file) => [...fs.readFileSync(file, "utf8").matchAll(THROWN_KEY)].map((match) => match[1]));
55
+ expect(found).toContain("DATABASE.DATABASE_IMPORT_FAILED");
56
+ expect(found.length).toBeGreaterThan(100);
57
+ });
58
+ });
59
+ //# sourceMappingURL=thrownErrorKeys.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thrownErrorKeys.unit.test.js","sourceRoot":"","sources":["../../src/tests/thrownErrorKeys.unit.test.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { describe, expect, test } from "vitest";
2
2
  import translationEn from "../locales/en/translation.json" with {
3
3
  type: "json"
4
4
  };
5
- import { getLeafFieldPath, translationKeys, } from "../translationKey.js";
5
+ import { getLeafFieldPath, isTranslationKey, translationKeys, } from "../translationKey.js";
6
6
  describe("getLeafFieldPath", () => {
7
7
  test("returns no paths for a bare string, which is a leaf and not a container", () => {
8
8
  expect(getLeafFieldPath("a string")).toEqual([]);
@@ -83,4 +83,16 @@ describe("translationKeys", () => {
83
83
  expect(translationKeys).not.toContain("");
84
84
  });
85
85
  });
86
+ describe("isTranslationKey", () => {
87
+ test("accepts a leaf of the English catalogue", () => {
88
+ expect(isTranslationKey("WIDGET.I_AM_HUMAN")).toBe(true);
89
+ expect(isTranslationKey("API.INVALID_SITE_KEY")).toBe(true);
90
+ });
91
+ test("rejects a section, a mistyped key, free text and the empty string", () => {
92
+ expect(isTranslationKey("WIDGET")).toBe(false);
93
+ expect(isTranslationKey("WIDGET.I_AM_HUMANN")).toBe(false);
94
+ expect(isTranslationKey("Invalid site key")).toBe(false);
95
+ expect(isTranslationKey("")).toBe(false);
96
+ });
97
+ });
86
98
  //# sourceMappingURL=translationKey.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"translationKey.unit.test.js","sourceRoot":"","sources":["../../src/tests/translationKey.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translationKey.unit.test.js","sourceRoot":"","sources":["../../src/tests/translationKey.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
+ import translationEn from "./locales/en/translation.json";
1
2
  export type TranslationNode = {
2
3
  [key: string]: TranslationNode | string;
3
4
  } | string;
4
5
  export declare function getLeafFieldPath(obj: TranslationNode): string[];
5
6
  export declare const translationKeys: string[];
6
- export type TranslationKey = string;
7
+ type LeafPath<Node> = {
8
+ [Key in keyof Node & string]: Node[Key] extends string ? Key : `${Key}.${LeafPath<Node[Key]>}`;
9
+ }[keyof Node & string];
10
+ export type TranslationKey = LeafPath<typeof translationEn>;
11
+ export declare const isTranslationKey: (value: string) => value is TranslationKey;
12
+ export {};
7
13
  //# sourceMappingURL=translationKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"translationKey.d.ts","sourceRoot":"","sources":["../src/translationKey.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,eAAe,GACxB;IACA,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,MAAM,CAAC;CACvC,GACD,MAAM,CAAC;AAKV,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CA8B/D;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,EAAoC,CAAC;AAMzE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"translationKey.d.ts","sourceRoot":"","sources":["../src/translationKey.ts"],"names":[],"mappings":"AAcA,OAAO,aAAa,MAAM,+BAA+B,CAAuB;AAEhF,MAAM,MAAM,eAAe,GACxB;IACA,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,MAAM,CAAC;CACvC,GACD,MAAM,CAAC;AAKV,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CA8B/D;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,EAAoC,CAAC;AAEzE,KAAK,QAAQ,CAAC,IAAI,IAAI;KACpB,GAAG,IAAI,MAAM,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,MAAM,GACnD,GAAG,GACH,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;CAClC,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC;AAGvB,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAK5D,eAAO,MAAM,gBAAgB,UAAW,MAAM,KAAG,KAAK,IAAI,cAC7B,CAAC"}