@payloadcms/translations 4.0.0-internal.5d5a2b2 → 4.0.0-internal.5e065b3

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 (198) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/clientKeys.d.ts +1 -1
  3. package/dist/clientKeys.d.ts.map +1 -1
  4. package/dist/clientKeys.js +85 -1
  5. package/dist/clientKeys.js.map +1 -1
  6. package/dist/dateFNS/ar.js +1 -0
  7. package/dist/dateFNS/az.js +1 -0
  8. package/dist/dateFNS/bg.js +1 -0
  9. package/dist/dateFNS/bn.js +1 -0
  10. package/dist/dateFNS/ca.js +1 -0
  11. package/dist/dateFNS/chunk-YT6ULX4E.js +1 -0
  12. package/dist/dateFNS/cs.js +1 -0
  13. package/dist/dateFNS/da.js +1 -0
  14. package/dist/dateFNS/de.js +1 -0
  15. package/dist/dateFNS/es.js +1 -0
  16. package/dist/dateFNS/et.js +1 -0
  17. package/dist/dateFNS/fa-IR.js +1 -0
  18. package/dist/dateFNS/fr.js +1 -0
  19. package/dist/dateFNS/he.js +1 -0
  20. package/dist/dateFNS/hr.js +1 -0
  21. package/dist/dateFNS/hu.js +1 -0
  22. package/dist/dateFNS/id.js +1 -0
  23. package/dist/dateFNS/is.js +1 -0
  24. package/dist/dateFNS/it.js +1 -0
  25. package/dist/dateFNS/ja.js +1 -0
  26. package/dist/dateFNS/ko.js +1 -0
  27. package/dist/dateFNS/lt.js +1 -0
  28. package/dist/dateFNS/lv.js +1 -0
  29. package/dist/dateFNS/nb.js +1 -0
  30. package/dist/dateFNS/nl.js +1 -0
  31. package/dist/dateFNS/pl.js +1 -0
  32. package/dist/dateFNS/pt.js +1 -0
  33. package/dist/dateFNS/ro.js +1 -0
  34. package/dist/dateFNS/ru.js +1 -0
  35. package/dist/dateFNS/sk.js +1 -0
  36. package/dist/dateFNS/sl.js +1 -0
  37. package/dist/dateFNS/sr-Latn.js +1 -0
  38. package/dist/dateFNS/sr.js +1 -0
  39. package/dist/dateFNS/sv.js +1 -0
  40. package/dist/dateFNS/ta.js +1 -0
  41. package/dist/dateFNS/th.js +1 -0
  42. package/dist/dateFNS/tr.js +1 -0
  43. package/dist/dateFNS/uk.js +1 -0
  44. package/dist/dateFNS/vi.js +1 -0
  45. package/dist/dateFNS/zh-CN.js +1 -0
  46. package/dist/dateFNS/zh-TW.js +1 -0
  47. package/dist/importDateFNSLocale.d.ts.map +1 -1
  48. package/dist/importDateFNSLocale.js +41 -41
  49. package/dist/languages/ar.d.ts.map +1 -1
  50. package/dist/languages/ar.js +91 -3
  51. package/dist/languages/ar.js.map +1 -1
  52. package/dist/languages/az.d.ts.map +1 -1
  53. package/dist/languages/az.js +91 -3
  54. package/dist/languages/az.js.map +1 -1
  55. package/dist/languages/bg.d.ts.map +1 -1
  56. package/dist/languages/bg.js +91 -3
  57. package/dist/languages/bg.js.map +1 -1
  58. package/dist/languages/bnBd.d.ts.map +1 -1
  59. package/dist/languages/bnBd.js +91 -3
  60. package/dist/languages/bnBd.js.map +1 -1
  61. package/dist/languages/bnIn.d.ts.map +1 -1
  62. package/dist/languages/bnIn.js +91 -3
  63. package/dist/languages/bnIn.js.map +1 -1
  64. package/dist/languages/ca.d.ts.map +1 -1
  65. package/dist/languages/ca.js +91 -3
  66. package/dist/languages/ca.js.map +1 -1
  67. package/dist/languages/cs.d.ts.map +1 -1
  68. package/dist/languages/cs.js +91 -3
  69. package/dist/languages/cs.js.map +1 -1
  70. package/dist/languages/da.d.ts.map +1 -1
  71. package/dist/languages/da.js +91 -3
  72. package/dist/languages/da.js.map +1 -1
  73. package/dist/languages/de.d.ts.map +1 -1
  74. package/dist/languages/de.js +91 -3
  75. package/dist/languages/de.js.map +1 -1
  76. package/dist/languages/en.d.ts +89 -1
  77. package/dist/languages/en.d.ts.map +1 -1
  78. package/dist/languages/en.js +91 -3
  79. package/dist/languages/en.js.map +1 -1
  80. package/dist/languages/es.d.ts.map +1 -1
  81. package/dist/languages/es.js +91 -3
  82. package/dist/languages/es.js.map +1 -1
  83. package/dist/languages/et.d.ts.map +1 -1
  84. package/dist/languages/et.js +91 -3
  85. package/dist/languages/et.js.map +1 -1
  86. package/dist/languages/fa.d.ts.map +1 -1
  87. package/dist/languages/fa.js +91 -3
  88. package/dist/languages/fa.js.map +1 -1
  89. package/dist/languages/fr.d.ts.map +1 -1
  90. package/dist/languages/fr.js +91 -3
  91. package/dist/languages/fr.js.map +1 -1
  92. package/dist/languages/he.d.ts.map +1 -1
  93. package/dist/languages/he.js +91 -3
  94. package/dist/languages/he.js.map +1 -1
  95. package/dist/languages/hr.d.ts.map +1 -1
  96. package/dist/languages/hr.js +91 -3
  97. package/dist/languages/hr.js.map +1 -1
  98. package/dist/languages/hu.d.ts.map +1 -1
  99. package/dist/languages/hu.js +91 -3
  100. package/dist/languages/hu.js.map +1 -1
  101. package/dist/languages/hy.d.ts.map +1 -1
  102. package/dist/languages/hy.js +91 -3
  103. package/dist/languages/hy.js.map +1 -1
  104. package/dist/languages/id.d.ts.map +1 -1
  105. package/dist/languages/id.js +91 -3
  106. package/dist/languages/id.js.map +1 -1
  107. package/dist/languages/is.d.ts.map +1 -1
  108. package/dist/languages/is.js +91 -3
  109. package/dist/languages/is.js.map +1 -1
  110. package/dist/languages/it.d.ts.map +1 -1
  111. package/dist/languages/it.js +91 -3
  112. package/dist/languages/it.js.map +1 -1
  113. package/dist/languages/ja.d.ts.map +1 -1
  114. package/dist/languages/ja.js +108 -20
  115. package/dist/languages/ja.js.map +1 -1
  116. package/dist/languages/ko.d.ts.map +1 -1
  117. package/dist/languages/ko.js +91 -3
  118. package/dist/languages/ko.js.map +1 -1
  119. package/dist/languages/lt.d.ts.map +1 -1
  120. package/dist/languages/lt.js +91 -3
  121. package/dist/languages/lt.js.map +1 -1
  122. package/dist/languages/lv.d.ts.map +1 -1
  123. package/dist/languages/lv.js +91 -3
  124. package/dist/languages/lv.js.map +1 -1
  125. package/dist/languages/my.d.ts.map +1 -1
  126. package/dist/languages/my.js +221 -133
  127. package/dist/languages/my.js.map +1 -1
  128. package/dist/languages/nb.d.ts.map +1 -1
  129. package/dist/languages/nb.js +91 -3
  130. package/dist/languages/nb.js.map +1 -1
  131. package/dist/languages/nl.d.ts.map +1 -1
  132. package/dist/languages/nl.js +91 -3
  133. package/dist/languages/nl.js.map +1 -1
  134. package/dist/languages/pl.d.ts.map +1 -1
  135. package/dist/languages/pl.js +91 -3
  136. package/dist/languages/pl.js.map +1 -1
  137. package/dist/languages/pt.d.ts.map +1 -1
  138. package/dist/languages/pt.js +91 -3
  139. package/dist/languages/pt.js.map +1 -1
  140. package/dist/languages/ro.d.ts.map +1 -1
  141. package/dist/languages/ro.js +91 -3
  142. package/dist/languages/ro.js.map +1 -1
  143. package/dist/languages/rs.d.ts.map +1 -1
  144. package/dist/languages/rs.js +91 -3
  145. package/dist/languages/rs.js.map +1 -1
  146. package/dist/languages/rsLatin.d.ts.map +1 -1
  147. package/dist/languages/rsLatin.js +91 -3
  148. package/dist/languages/rsLatin.js.map +1 -1
  149. package/dist/languages/ru.d.ts.map +1 -1
  150. package/dist/languages/ru.js +91 -3
  151. package/dist/languages/ru.js.map +1 -1
  152. package/dist/languages/sk.d.ts.map +1 -1
  153. package/dist/languages/sk.js +91 -3
  154. package/dist/languages/sk.js.map +1 -1
  155. package/dist/languages/sl.d.ts.map +1 -1
  156. package/dist/languages/sl.js +91 -3
  157. package/dist/languages/sl.js.map +1 -1
  158. package/dist/languages/sv.d.ts.map +1 -1
  159. package/dist/languages/sv.js +91 -3
  160. package/dist/languages/sv.js.map +1 -1
  161. package/dist/languages/ta.d.ts.map +1 -1
  162. package/dist/languages/ta.js +91 -3
  163. package/dist/languages/ta.js.map +1 -1
  164. package/dist/languages/th.d.ts.map +1 -1
  165. package/dist/languages/th.js +91 -3
  166. package/dist/languages/th.js.map +1 -1
  167. package/dist/languages/tr.d.ts.map +1 -1
  168. package/dist/languages/tr.js +91 -3
  169. package/dist/languages/tr.js.map +1 -1
  170. package/dist/languages/uk.d.ts.map +1 -1
  171. package/dist/languages/uk.js +91 -3
  172. package/dist/languages/uk.js.map +1 -1
  173. package/dist/languages/vi.d.ts.map +1 -1
  174. package/dist/languages/vi.js +91 -3
  175. package/dist/languages/vi.js.map +1 -1
  176. package/dist/languages/zh.d.ts.map +1 -1
  177. package/dist/languages/zh.js +91 -3
  178. package/dist/languages/zh.js.map +1 -1
  179. package/dist/languages/zhTw.d.ts.map +1 -1
  180. package/dist/languages/zhTw.js +109 -21
  181. package/dist/languages/zhTw.js.map +1 -1
  182. package/dist/types.d.ts +5 -2
  183. package/dist/types.d.ts.map +1 -1
  184. package/dist/types.js.map +1 -1
  185. package/dist/utilities/getTranslation.d.ts.map +1 -1
  186. package/dist/utilities/getTranslationsByContext.d.ts +91 -3
  187. package/dist/utilities/getTranslationsByContext.d.ts.map +1 -1
  188. package/dist/utilities/getTranslationsByContext.js +41 -33
  189. package/dist/utilities/getTranslationsByContext.js.map +1 -1
  190. package/dist/utilities/init.d.ts +3 -3
  191. package/dist/utilities/init.d.ts.map +1 -1
  192. package/dist/utilities/languages.d.ts +2 -2
  193. package/dist/utilities/languages.d.ts.map +1 -1
  194. package/package.json +8 -6
  195. package/dist/utilities/deepMergeSimple.spec.js +0 -81
  196. package/dist/utilities/deepMergeSimple.spec.js.map +0 -1
  197. package/dist/utilities/languages.spec.js +0 -42
  198. package/dist/utilities/languages.spec.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { Language } from '../types.js';
2
- export declare const getTranslationsByContext: (selectedLanguage: Language, context: "api" | "client") => {
2
+ export declare const getTranslationsByContext: (selectedLanguage: Language, context: 'api' | 'client') => Record<string, unknown> | {
3
3
  authentication: {
4
4
  account: string;
5
5
  accountOfCurrentUser: string;
@@ -20,6 +20,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
20
20
  emailOrUsername: string;
21
21
  emailSent: string;
22
22
  emailVerified: string;
23
+ emailVerifiedRedirecting: string;
23
24
  enableAPIKey: string;
24
25
  failedToUnlock: string;
25
26
  forceUnlock: string;
@@ -49,8 +50,10 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
49
50
  newAccountCreated: string;
50
51
  newAPIKeyGenerated: string;
51
52
  newPassword: string;
53
+ notRedirected: string;
52
54
  passed: string;
53
55
  passwordResetSuccessfully: string;
56
+ resend: string;
54
57
  resetPassword: string;
55
58
  resetPasswordExpiration: string;
56
59
  resetPasswordToken: string;
@@ -61,6 +64,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
61
64
  tokenRefreshSuccessful: string;
62
65
  unableToVerify: string;
63
66
  username: string;
67
+ verificationFailedRequestNew: string;
64
68
  verified: string;
65
69
  verifiedSuccessfully: string;
66
70
  verify: string;
@@ -97,7 +101,27 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
97
101
  editingDashboard: string;
98
102
  noItems: string;
99
103
  resetLayout: string;
104
+ resizeWidget: string;
100
105
  searchWidgets: string;
106
+ widgetCollectionRequired: string;
107
+ widgetConfigurationError: string;
108
+ widgetDropFilesToUpload: string;
109
+ widgetInvalidCollection: string;
110
+ widgetInvalidFilterField: string;
111
+ widgetInvalidSortField: string;
112
+ widgetLimitLabel: string;
113
+ widgetNonSortableSortField: string;
114
+ widgetQueryError: string;
115
+ widgetRecentlyViewedEmpty: string;
116
+ widgetRecentlyViewedTitle: string;
117
+ widgetSelectCollectionFirst: string;
118
+ widgetSelectSortField: string;
119
+ widgetSortDirectionLabel: string;
120
+ widgetSortFieldLabel: string;
121
+ widgetTitleFallback: string;
122
+ widgetTitleLabel: string;
123
+ widgetUploadDropzoneDescription: string;
124
+ widgetUploadFiles: string;
101
125
  };
102
126
  error: {
103
127
  accountAlreadyActivated: string;
@@ -109,6 +133,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
109
133
  emailOrPasswordIncorrect: string;
110
134
  failedToResetLayout: string;
111
135
  failedToSaveLayout: string;
136
+ fileFetchFailed: string;
112
137
  followingFieldsInvalid_one: string;
113
138
  followingFieldsInvalid_other: string;
114
139
  incorrectCollection: string;
@@ -125,6 +150,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
125
150
  missingIDOfDocument: string;
126
151
  missingIDOfVersion: string;
127
152
  missingRequiredData: string;
153
+ noFileFoundInClipboard: string;
128
154
  noFilesUploaded: string;
129
155
  noMatchedField: string;
130
156
  notAllowedToAccessPage: string;
@@ -139,6 +165,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
139
165
  tokenNotProvided: string;
140
166
  unableToCopy: string;
141
167
  unableToDeleteCount: string;
168
+ unableToReadClipboard: string;
142
169
  unableToReindexCollection: string;
143
170
  unableToUpdateCount: string;
144
171
  unauthorized: string;
@@ -147,6 +174,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
147
174
  unPublishingDocument: string;
148
175
  unspecific: string;
149
176
  unverifiedEmail: string;
177
+ urlNotAllowed: string;
150
178
  userEmailAlreadyRegistered: string;
151
179
  userLocked: string;
152
180
  usernameAlreadyRegistered: string;
@@ -162,6 +190,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
162
190
  addRelationship: string;
163
191
  addUpload: string;
164
192
  block: string;
193
+ blockName: string;
165
194
  blocks: string;
166
195
  blockType: string;
167
196
  chooseBetweenCustomTextOrDocument: string;
@@ -217,25 +246,30 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
217
246
  aboutToTrash: string;
218
247
  aboutToTrashCount: string;
219
248
  accepts: string;
249
+ access: string;
220
250
  addBelow: string;
221
251
  addFilter: string;
222
252
  adminTheme: string;
223
253
  all: string;
224
254
  allCollections: string;
225
255
  allLocales: string;
256
+ allowedTypes: string;
226
257
  and: string;
227
258
  anotherUser: string;
228
259
  anotherUserTakenOver: string;
229
260
  applyChanges: string;
230
261
  ascending: string;
262
+ auto: string;
231
263
  automatic: string;
232
264
  backToDashboard: string;
265
+ breadcrumb: string;
233
266
  by: string;
234
267
  cancel: string;
235
268
  changesNotSaved: string;
236
269
  checked: string;
237
270
  clear: string;
238
271
  clearAll: string;
272
+ clearSearch: string;
239
273
  close: string;
240
274
  collapse: string;
241
275
  collection: string;
@@ -261,6 +295,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
261
295
  create: string;
262
296
  created: string;
263
297
  createdAt: string;
298
+ createdBy: string;
264
299
  createNew: string;
265
300
  createNewLabel: string;
266
301
  creating: string;
@@ -321,6 +356,8 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
321
356
  filterWhere: string;
322
357
  globals: string;
323
358
  goBack: string;
359
+ goToPage: string;
360
+ gridLayout: string;
324
361
  groupByLabel: string;
325
362
  hideSidebar: string;
326
363
  import: string;
@@ -353,6 +390,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
353
390
  newLabel: string;
354
391
  newPassword: string;
355
392
  next: string;
393
+ nextPage: string;
356
394
  no: string;
357
395
  noDateSelected: string;
358
396
  noFiltersSet: string;
@@ -366,6 +404,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
366
404
  notFound: string;
367
405
  nothingFound: string;
368
406
  noTrashResults: string;
407
+ notSelectedDocument: string;
369
408
  notShownInTable: string;
370
409
  noUpcomingEventsScheduled: string;
371
410
  noValue: string;
@@ -375,9 +414,12 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
375
414
  openInNewWindow: string;
376
415
  or: string;
377
416
  order: string;
417
+ original: string;
378
418
  overwriteExistingData: string;
379
419
  pageNotFound: string;
420
+ pageNumberRange: string;
380
421
  password: string;
422
+ pasteBelow: string;
381
423
  pasteField: string;
382
424
  pasteRow: string;
383
425
  payloadSettings: string;
@@ -385,12 +427,16 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
385
427
  permanentlyDeletedCountSuccessfully: string;
386
428
  perPage: string;
387
429
  perPageLabel: string;
430
+ presets: string;
388
431
  previous: string;
432
+ previousPage: string;
389
433
  reindex: string;
390
434
  reindexingAll: string;
391
435
  reloadDocument: string;
392
436
  remove: string;
393
437
  rename: string;
438
+ replaceRow: string;
439
+ requiredFields: string;
394
440
  reset: string;
395
441
  resetPreferences: string;
396
442
  resetPreferencesDescription: string;
@@ -406,20 +452,28 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
406
452
  saveChanges: string;
407
453
  saving: string;
408
454
  schedulePublishFor: string;
455
+ searchAutomatically: string;
409
456
  searchBy: string;
457
+ searchCleared: string;
410
458
  searchColumns: string;
459
+ searchGroups: string;
460
+ searchResults: string;
411
461
  select: string;
412
462
  selectAll: string;
413
463
  selectAllRows: string;
414
464
  selectedCount: string;
465
+ selectedDocument: string;
415
466
  selectLabel: string;
416
467
  selectValue: string;
468
+ settings: string;
417
469
  showAllLabel: string;
418
470
  shownInTable: string;
419
471
  showSidebar: string;
472
+ skipToContent: string;
420
473
  sorryNotFound: string;
421
474
  sort: string;
422
475
  sortByLabelDirection: string;
476
+ sortByOrderToReorder: string;
423
477
  stayOnThisPage: string;
424
478
  submissionSuccessful: string;
425
479
  submit: string;
@@ -428,7 +482,9 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
428
482
  successfullyCreated: string;
429
483
  successfullyDuplicated: string;
430
484
  successfullyReindexed: string;
485
+ tableLayout: string;
431
486
  takeOver: string;
487
+ theme: string;
432
488
  thisLanguage: string;
433
489
  time: string;
434
490
  timezone: string;
@@ -448,6 +504,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
448
504
  upcomingEvents: string;
449
505
  updatedAgo: string;
450
506
  updatedAt: string;
507
+ updatedBy: string;
451
508
  updatedCountSuccessfully: string;
452
509
  updatedLabelSuccessfully: string;
453
510
  updatedSuccessfully: string;
@@ -466,13 +523,29 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
466
523
  yes: string;
467
524
  };
468
525
  hierarchy: {
526
+ goTo: string;
469
527
  itemsMovedTo: string;
470
528
  itemsMovedToRoot: string;
471
- moveItemsToRootConfirmation: string;
529
+ moveTo: string;
472
530
  moveToRoot: string;
473
531
  noParent: string;
474
532
  noResults: string;
533
+ removeFrom: string;
475
534
  searchLabel: string;
535
+ searchResults: string;
536
+ };
537
+ llmInstructions: {
538
+ additionalInstructions: string;
539
+ collectionDescription: string;
540
+ collectionSystemDescription: string;
541
+ editInstructions: string;
542
+ global: string;
543
+ globalDescription: string;
544
+ globalSystemDescription: string;
545
+ instructions: string;
546
+ systemInstructions: string;
547
+ targetCannotBeChanged: string;
548
+ title: string;
476
549
  };
477
550
  localization: {
478
551
  cannotCopySameLocale: string;
@@ -506,8 +579,18 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
506
579
  addFile: string;
507
580
  addFiles: string;
508
581
  bulkUpload: string;
582
+ copyLinkToFile: string;
583
+ copyURL: string;
509
584
  crop: string;
585
+ cropBottom: string;
586
+ cropBottomLeft: string;
587
+ cropBottomRight: string;
588
+ cropLeft: string;
589
+ cropRight: string;
510
590
  cropToolDescription: string;
591
+ cropTop: string;
592
+ cropTopLeft: string;
593
+ cropTopRight: string;
511
594
  download: string;
512
595
  dragAndDrop: string;
513
596
  dragAndDropHere: string;
@@ -518,12 +601,17 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
518
601
  fileToUpload: string;
519
602
  focalPoint: string;
520
603
  focalPointDescription: string;
604
+ fromURL: string;
521
605
  height: string;
522
606
  lessInfo: string;
607
+ linkToFile: string;
523
608
  moreInfo: string;
524
609
  noFile: string;
610
+ pasteFromClipboard: string;
525
611
  pasteURL: string;
526
612
  previewSizes: string;
613
+ renameFile: string;
614
+ replaceFile: string;
527
615
  selectCollectionToBrowse: string;
528
616
  selectFile: string;
529
617
  setCropArea: string;
@@ -640,5 +728,5 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
640
728
  viewingVersions: string;
641
729
  viewingVersionsGlobal: string;
642
730
  };
643
- } | Record<string, unknown>;
731
+ };
644
732
  //# sourceMappingURL=getTranslationsByContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getTranslationsByContext.d.ts","sourceRoot":"","sources":["../../src/utilities/getTranslationsByContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAwD3C,eAAO,MAAM,wBAAwB,GAAI,kBAAkB,QAAQ,EAAE,SAAS,KAAK,GAAG,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAM7F,CAAA"}
1
+ {"version":3,"file":"getTranslationsByContext.d.ts","sourceRoot":"","sources":["../../src/utilities/getTranslationsByContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AA6E3C,eAAO,MAAM,wBAAwB,qBAAsB,QAAQ,WAAW,KAAK,GAAG,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM7F,CAAA"}
@@ -1,41 +1,49 @@
1
1
  import { clientTranslationKeys } from '../clientKeys.js';
2
- function filterKeys(obj, parentGroupKey = '', keys) {
2
+ /**
3
+ * The client translation keys, grouped by namespace. For example, the keys `general:cancel`,
4
+ * `general:item` and `authentication:account` are stored as:
5
+ *
6
+ * `Map { 'general' => Set { 'cancel', 'item' }, 'authentication' => Set { 'account' } }`
7
+ */ const clientKeysByNamespace = new Map();
8
+ for (const clientKey of clientTranslationKeys){
9
+ const separatorIndex = clientKey.indexOf(':');
10
+ const namespace = clientKey.slice(0, separatorIndex);
11
+ const key = clientKey.slice(separatorIndex + 1);
12
+ const keys = clientKeysByNamespace.get(namespace) ?? new Set();
13
+ clientKeysByNamespace.set(namespace, keys.add(key));
14
+ }
15
+ /** Plural forms of a key, for example `item_one` and `item_other` for `item` */ const pluralSuffix = /_(?:zero|one|two|few|many|other)$/;
16
+ /**
17
+ * Keeps only the translations the admin needs in the browser: the keys listed in
18
+ * `clientTranslationKeys`, plus their plural forms. Namespaces that end up empty are left out.
19
+ *
20
+ * @example
21
+ * // With the client keys `general:cancel` and `general:item`:
22
+ * filterClientKeys({
23
+ * general: { cancel: 'Cancel', item: 'Item', item_other: 'Items', save: 'Save' },
24
+ * error: { notFound: 'Not found' },
25
+ * })
26
+ * // => { general: { cancel: 'Cancel', item: 'Item', item_other: 'Items' } }
27
+ */ function filterClientKeys(translations) {
3
28
  const result = {};
4
- for (const [namespaceKey, value] of Object.entries(obj)){
5
- // Skip $schema key
6
- if (namespaceKey === '$schema') {
7
- result[namespaceKey] = value;
29
+ for (const [namespace, value] of Object.entries(translations)){
30
+ if (namespace === '$schema') {
31
+ result[namespace] = value;
8
32
  continue;
9
33
  }
10
- if (typeof value === 'object') {
11
- const filteredObject = filterKeys(value, namespaceKey, keys);
12
- if (Object.keys(filteredObject).length > 0) {
13
- result[namespaceKey] = filteredObject;
14
- }
15
- } else {
16
- for (const key of keys){
17
- const [groupKey, selector] = key.split(':');
18
- if (parentGroupKey === groupKey) {
19
- if (namespaceKey === selector) {
20
- result[selector] = value;
21
- } else {
22
- const pluralKeys = [
23
- 'zero',
24
- 'one',
25
- 'two',
26
- 'few',
27
- 'many',
28
- 'other'
29
- ];
30
- pluralKeys.forEach((pluralKey)=>{
31
- if (namespaceKey === `${selector}_${pluralKey}`) {
32
- result[`${selector}_${pluralKey}`] = value;
33
- }
34
- });
35
- }
36
- }
34
+ const clientKeys = clientKeysByNamespace.get(namespace);
35
+ if (!clientKeys || typeof value !== 'object' || value === null) {
36
+ continue;
37
+ }
38
+ const clientTranslations = {};
39
+ for (const [key, translation] of Object.entries(value)){
40
+ if (clientKeys.has(key) || clientKeys.has(key.replace(pluralSuffix, ''))) {
41
+ clientTranslations[key] = translation;
37
42
  }
38
43
  }
44
+ if (Object.keys(clientTranslations).length > 0) {
45
+ result[namespace] = clientTranslations;
46
+ }
39
47
  }
40
48
  return result;
41
49
  }
@@ -52,7 +60,7 @@ function sortObject(obj) {
52
60
  }
53
61
  export const getTranslationsByContext = (selectedLanguage, context)=>{
54
62
  if (context === 'client') {
55
- return sortObject(filterKeys(selectedLanguage.translations, '', clientTranslationKeys));
63
+ return sortObject(filterClientKeys(selectedLanguage.translations));
56
64
  } else {
57
65
  return selectedLanguage.translations;
58
66
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getTranslationsByContext.ts"],"sourcesContent":["import type { Language } from '../types.js'\n\nimport { clientTranslationKeys } from '../clientKeys.js'\n\nfunction filterKeys(obj: Record<string, unknown>, parentGroupKey = '', keys: string[]) {\n const result: Record<string, unknown> = {}\n\n for (const [namespaceKey, value] of Object.entries(obj)) {\n // Skip $schema key\n if (namespaceKey === '$schema') {\n result[namespaceKey] = value\n continue\n }\n\n if (typeof value === 'object') {\n const filteredObject = filterKeys(value as Record<string, unknown>, namespaceKey, keys)\n if (Object.keys(filteredObject).length > 0) {\n result[namespaceKey] = filteredObject\n }\n } else {\n for (const key of keys) {\n const [groupKey, selector] = key.split(':')\n\n if (parentGroupKey === groupKey) {\n if (namespaceKey === selector) {\n result[selector] = value\n } else {\n const pluralKeys = ['zero', 'one', 'two', 'few', 'many', 'other']\n pluralKeys.forEach((pluralKey) => {\n if (namespaceKey === `${selector}_${pluralKey}`) {\n result[`${selector}_${pluralKey}`] = value\n }\n })\n }\n }\n }\n }\n }\n\n return result\n}\n\nfunction sortObject(obj: Record<string, unknown>) {\n const sortedObject: Record<string, unknown> = {}\n Object.keys(obj)\n .sort()\n .forEach((key) => {\n if (typeof obj[key] === 'object') {\n sortedObject[key] = sortObject(obj[key] as Record<string, unknown>)\n } else {\n sortedObject[key] = obj[key]\n }\n })\n return sortedObject\n}\n\nexport const getTranslationsByContext = (selectedLanguage: Language, context: 'api' | 'client') => {\n if (context === 'client') {\n return sortObject(filterKeys(selectedLanguage.translations, '', clientTranslationKeys))\n } else {\n return selectedLanguage.translations\n }\n}\n"],"names":["clientTranslationKeys","filterKeys","obj","parentGroupKey","keys","result","namespaceKey","value","Object","entries","filteredObject","length","key","groupKey","selector","split","pluralKeys","forEach","pluralKey","sortObject","sortedObject","sort","getTranslationsByContext","selectedLanguage","context","translations"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,mBAAkB;AAExD,SAASC,WAAWC,GAA4B,EAAEC,iBAAiB,EAAE,EAAEC,IAAc;IACnF,MAAMC,SAAkC,CAAC;IAEzC,KAAK,MAAM,CAACC,cAAcC,MAAM,IAAIC,OAAOC,OAAO,CAACP,KAAM;QACvD,mBAAmB;QACnB,IAAII,iBAAiB,WAAW;YAC9BD,MAAM,CAACC,aAAa,GAAGC;YACvB;QACF;QAEA,IAAI,OAAOA,UAAU,UAAU;YAC7B,MAAMG,iBAAiBT,WAAWM,OAAkCD,cAAcF;YAClF,IAAII,OAAOJ,IAAI,CAACM,gBAAgBC,MAAM,GAAG,GAAG;gBAC1CN,MAAM,CAACC,aAAa,GAAGI;YACzB;QACF,OAAO;YACL,KAAK,MAAME,OAAOR,KAAM;gBACtB,MAAM,CAACS,UAAUC,SAAS,GAAGF,IAAIG,KAAK,CAAC;gBAEvC,IAAIZ,mBAAmBU,UAAU;oBAC/B,IAAIP,iBAAiBQ,UAAU;wBAC7BT,MAAM,CAACS,SAAS,GAAGP;oBACrB,OAAO;wBACL,MAAMS,aAAa;4BAAC;4BAAQ;4BAAO;4BAAO;4BAAO;4BAAQ;yBAAQ;wBACjEA,WAAWC,OAAO,CAAC,CAACC;4BAClB,IAAIZ,iBAAiB,GAAGQ,SAAS,CAAC,EAAEI,WAAW,EAAE;gCAC/Cb,MAAM,CAAC,GAAGS,SAAS,CAAC,EAAEI,WAAW,CAAC,GAAGX;4BACvC;wBACF;oBACF;gBACF;YACF;QACF;IACF;IAEA,OAAOF;AACT;AAEA,SAASc,WAAWjB,GAA4B;IAC9C,MAAMkB,eAAwC,CAAC;IAC/CZ,OAAOJ,IAAI,CAACF,KACTmB,IAAI,GACJJ,OAAO,CAAC,CAACL;QACR,IAAI,OAAOV,GAAG,CAACU,IAAI,KAAK,UAAU;YAChCQ,YAAY,CAACR,IAAI,GAAGO,WAAWjB,GAAG,CAACU,IAAI;QACzC,OAAO;YACLQ,YAAY,CAACR,IAAI,GAAGV,GAAG,CAACU,IAAI;QAC9B;IACF;IACF,OAAOQ;AACT;AAEA,OAAO,MAAME,2BAA2B,CAACC,kBAA4BC;IACnE,IAAIA,YAAY,UAAU;QACxB,OAAOL,WAAWlB,WAAWsB,iBAAiBE,YAAY,EAAE,IAAIzB;IAClE,OAAO;QACL,OAAOuB,iBAAiBE,YAAY;IACtC;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getTranslationsByContext.ts"],"sourcesContent":["import type { Language } from '../types.js'\n\nimport { clientTranslationKeys } from '../clientKeys.js'\n\n/**\n * The client translation keys, grouped by namespace. For example, the keys `general:cancel`,\n * `general:item` and `authentication:account` are stored as:\n *\n * `Map { 'general' => Set { 'cancel', 'item' }, 'authentication' => Set { 'account' } }`\n */\nconst clientKeysByNamespace = new Map<string, Set<string>>()\nfor (const clientKey of clientTranslationKeys) {\n const separatorIndex = clientKey.indexOf(':')\n const namespace = clientKey.slice(0, separatorIndex)\n const key = clientKey.slice(separatorIndex + 1)\n const keys = clientKeysByNamespace.get(namespace) ?? new Set<string>()\n clientKeysByNamespace.set(namespace, keys.add(key))\n}\n\n/** Plural forms of a key, for example `item_one` and `item_other` for `item` */\nconst pluralSuffix = /_(?:zero|one|two|few|many|other)$/\n\n/**\n * Keeps only the translations the admin needs in the browser: the keys listed in\n * `clientTranslationKeys`, plus their plural forms. Namespaces that end up empty are left out.\n *\n * @example\n * // With the client keys `general:cancel` and `general:item`:\n * filterClientKeys({\n * general: { cancel: 'Cancel', item: 'Item', item_other: 'Items', save: 'Save' },\n * error: { notFound: 'Not found' },\n * })\n * // => { general: { cancel: 'Cancel', item: 'Item', item_other: 'Items' } }\n */\nfunction filterClientKeys(translations: Record<string, unknown>) {\n const result: Record<string, unknown> = {}\n\n for (const [namespace, value] of Object.entries(translations)) {\n if (namespace === '$schema') {\n result[namespace] = value\n continue\n }\n\n const clientKeys = clientKeysByNamespace.get(namespace)\n if (!clientKeys || typeof value !== 'object' || value === null) {\n continue\n }\n\n const clientTranslations: Record<string, unknown> = {}\n for (const [key, translation] of Object.entries(value)) {\n if (clientKeys.has(key) || clientKeys.has(key.replace(pluralSuffix, ''))) {\n clientTranslations[key] = translation\n }\n }\n\n if (Object.keys(clientTranslations).length > 0) {\n result[namespace] = clientTranslations\n }\n }\n\n return result\n}\n\nfunction sortObject(obj: Record<string, unknown>) {\n const sortedObject: Record<string, unknown> = {}\n Object.keys(obj)\n .sort()\n .forEach((key) => {\n if (typeof obj[key] === 'object') {\n sortedObject[key] = sortObject(obj[key] as Record<string, unknown>)\n } else {\n sortedObject[key] = obj[key]\n }\n })\n return sortedObject\n}\n\nexport const getTranslationsByContext = (selectedLanguage: Language, context: 'api' | 'client') => {\n if (context === 'client') {\n return sortObject(filterClientKeys(selectedLanguage.translations))\n } else {\n return selectedLanguage.translations\n }\n}\n"],"names":["clientTranslationKeys","clientKeysByNamespace","Map","clientKey","separatorIndex","indexOf","namespace","slice","key","keys","get","Set","set","add","pluralSuffix","filterClientKeys","translations","result","value","Object","entries","clientKeys","clientTranslations","translation","has","replace","length","sortObject","obj","sortedObject","sort","forEach","getTranslationsByContext","selectedLanguage","context"],"mappings":"AAEA,SAASA,qBAAqB,QAAQ,mBAAkB;AAExD;;;;;CAKC,GACD,MAAMC,wBAAwB,IAAIC;AAClC,KAAK,MAAMC,aAAaH,sBAAuB;IAC7C,MAAMI,iBAAiBD,UAAUE,OAAO,CAAC;IACzC,MAAMC,YAAYH,UAAUI,KAAK,CAAC,GAAGH;IACrC,MAAMI,MAAML,UAAUI,KAAK,CAACH,iBAAiB;IAC7C,MAAMK,OAAOR,sBAAsBS,GAAG,CAACJ,cAAc,IAAIK;IACzDV,sBAAsBW,GAAG,CAACN,WAAWG,KAAKI,GAAG,CAACL;AAChD;AAEA,8EAA8E,GAC9E,MAAMM,eAAe;AAErB;;;;;;;;;;;CAWC,GACD,SAASC,iBAAiBC,YAAqC;IAC7D,MAAMC,SAAkC,CAAC;IAEzC,KAAK,MAAM,CAACX,WAAWY,MAAM,IAAIC,OAAOC,OAAO,CAACJ,cAAe;QAC7D,IAAIV,cAAc,WAAW;YAC3BW,MAAM,CAACX,UAAU,GAAGY;YACpB;QACF;QAEA,MAAMG,aAAapB,sBAAsBS,GAAG,CAACJ;QAC7C,IAAI,CAACe,cAAc,OAAOH,UAAU,YAAYA,UAAU,MAAM;YAC9D;QACF;QAEA,MAAMI,qBAA8C,CAAC;QACrD,KAAK,MAAM,CAACd,KAAKe,YAAY,IAAIJ,OAAOC,OAAO,CAACF,OAAQ;YACtD,IAAIG,WAAWG,GAAG,CAAChB,QAAQa,WAAWG,GAAG,CAAChB,IAAIiB,OAAO,CAACX,cAAc,MAAM;gBACxEQ,kBAAkB,CAACd,IAAI,GAAGe;YAC5B;QACF;QAEA,IAAIJ,OAAOV,IAAI,CAACa,oBAAoBI,MAAM,GAAG,GAAG;YAC9CT,MAAM,CAACX,UAAU,GAAGgB;QACtB;IACF;IAEA,OAAOL;AACT;AAEA,SAASU,WAAWC,GAA4B;IAC9C,MAAMC,eAAwC,CAAC;IAC/CV,OAAOV,IAAI,CAACmB,KACTE,IAAI,GACJC,OAAO,CAAC,CAACvB;QACR,IAAI,OAAOoB,GAAG,CAACpB,IAAI,KAAK,UAAU;YAChCqB,YAAY,CAACrB,IAAI,GAAGmB,WAAWC,GAAG,CAACpB,IAAI;QACzC,OAAO;YACLqB,YAAY,CAACrB,IAAI,GAAGoB,GAAG,CAACpB,IAAI;QAC9B;IACF;IACF,OAAOqB;AACT;AAEA,OAAO,MAAMG,2BAA2B,CAACC,kBAA4BC;IACnE,IAAIA,YAAY,UAAU;QACxB,OAAOP,WAAWZ,iBAAiBkB,iBAAiBjB,YAAY;IAClE,OAAO;QACL,OAAOiB,iBAAiBjB,YAAY;IACtC;AACF,EAAC"}
@@ -9,7 +9,7 @@ import type { DefaultTranslationKeys, DefaultTranslationsObject, I18n, Language
9
9
  export declare const getTranslationString: <TTranslations = DefaultTranslationsObject, TTranslationKeys = DefaultTranslationKeys>({ count, key, translations, }: {
10
10
  count?: number;
11
11
  key: TTranslationKeys;
12
- translations: Language<TTranslations>["translations"];
12
+ translations: Language<TTranslations>['translations'];
13
13
  }) => string;
14
14
  /**
15
15
  * @function t
@@ -26,11 +26,11 @@ export declare function t<TTranslations = DefaultTranslationsObject, TTranslatio
26
26
  }): string;
27
27
  export declare const initI18n: (args: {
28
28
  config: import("../types.js").I18nOptions;
29
- context: "api";
29
+ context: 'api';
30
30
  language: import("../types.js").AcceptedLanguages;
31
31
  } | {
32
32
  config: import("../types.js").I18nOptions<import("../types.js").ClientTranslationsObject>;
33
- context: "client";
33
+ context: 'client';
34
34
  language: import("../types.js").AcceptedLanguages;
35
35
  }) => Promise<I18n>;
36
36
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/utilities/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,IAAI,EAGJ,QAAQ,EACT,MAAM,aAAa,CAAA;AAMpB;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC/B,aAAa,GAAG,yBAAyB,EACzC,gBAAgB,GAAG,sBAAsB,EACzC,+BAIC;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,gBAAgB,CAAA;IACrB,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,CAAA;CACtD,KAAG,MAyCH,CAAA;AAiCD;;;;;;;GAOG;AACH,wBAAgB,CAAC,CACf,aAAa,GAAG,yBAAyB,EACzC,gBAAgB,GAAG,sBAAsB,EACzC,EACA,GAAG,EACH,YAAY,EACZ,IAAI,GACL,EAAE;IACD,GAAG,EAAE,gBAAgB,CAAA;IACrB,YAAY,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,CAAA;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC3B,GAAG,MAAM,CAmBT;AA4CD,eAAO,MAAM,QAAQ;;;;;;;;MAjBL,OAAO,CAAC,IAAI,CA+C3B,CAAA"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/utilities/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,IAAI,EAGJ,QAAQ,EACT,MAAM,aAAa,CAAA;AAMpB;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAC/B,aAAa,GAAG,yBAAyB,EACzC,gBAAgB,GAAG,sBAAsB,iCAKxC;IACD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,gBAAgB,CAAA;IACrB,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,CAAA;CACtD,KAAG,MAyCH,CAAA;AAiCD;;;;;;;GAOG;AACH,wBAAgB,CAAC,CACf,aAAa,GAAG,yBAAyB,EACzC,gBAAgB,GAAG,sBAAsB,EACzC,EACA,GAAG,EACH,YAAY,EACZ,IAAI,GACL,EAAE;IACD,GAAG,EAAE,gBAAgB,CAAA;IACrB,YAAY,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,CAAA;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC3B,GAAG,MAAM,CAmBT;AA4CD,eAAO,MAAM,QAAQ;;;;;;;;MAjBL,OAAO,CAAC,IAAI,CA+C3B,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { AcceptedLanguages } from '../types.js';
2
- export declare const rtlLanguages: readonly ["ar", "fa", "he"];
3
- export declare const acceptedLanguages: readonly ["ar", "az", "bg", "bn-BD", "bn-IN", "ca", "cs", "bn-BD", "bn-IN", "da", "de", "en", "es", "et", "fa", "fr", "he", "hr", "hu", "hy", "id", "is", "it", "ja", "ko", "lt", "lv", "my", "nb", "nl", "pl", "pt", "ro", "rs", "rs-latin", "ru", "sk", "sl", "sv", "ta", "th", "tr", "uk", "vi", "zh", "zh-TW"];
2
+ export declare const rtlLanguages: readonly ['ar', 'fa', 'he'];
3
+ export declare const acceptedLanguages: readonly ['ar', 'az', 'bg', 'bn-BD', 'bn-IN', 'ca', 'cs', 'bn-BD', 'bn-IN', 'da', 'de', 'en', 'es', 'et', 'fa', 'fr', 'he', 'hr', 'hu', 'hy', 'id', 'is', 'it', 'ja', 'ko', 'lt', 'lv', 'my', 'nb', 'nl', 'pl', 'pt', 'ro', 'rs', 'rs-latin', 'ru', 'sk', 'sl', 'sv', 'ta', 'th', 'tr', 'uk', 'vi', 'zh', 'zh-TW'];
4
4
  export declare function extractHeaderLanguage(acceptLanguageHeader: string): AcceptedLanguages | undefined;
5
5
  //# sourceMappingURL=languages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../src/utilities/languages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,aAAa,CAAA;AAExE,eAAO,MAAM,YAAY,6BAA8B,CAAA;AAEvD,eAAO,MAAM,iBAAiB,oTAmIpB,CAAA;AAkBV,wBAAgB,qBAAqB,CAAC,oBAAoB,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAuBjG"}
1
+ {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../src/utilities/languages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,aAAa,CAAA;AAExE,eAAO,MAAM,YAAY,YAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAEvD,eAAO,MAAM,iBAAiB,YAC5B,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,OAAO,CAqFC,CAAA;AAkBV,wBAAgB,qBAAqB,CAAC,oBAAoB,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAuBjG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/translations",
3
- "version": "4.0.0-internal.5d5a2b2",
3
+ "version": "4.0.0-internal.5e065b3",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -46,18 +46,20 @@
46
46
  "dist"
47
47
  ],
48
48
  "dependencies": {
49
- "date-fns": "4.1.0"
49
+ "date-fns": "4.4.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@types/react": "19.2.14",
53
- "@types/react-dom": "19.2.3",
52
+ "@types/react": "19.3.0",
53
+ "@types/react-dom": "19.3.0",
54
54
  "dotenv": "16.4.7",
55
+ "esbuild": "0.27.1",
55
56
  "prettier": "3.5.3",
56
- "typescript": "6.0.3",
57
+ "typescript": "npm:@typescript/typescript6@6.0.2",
57
58
  "@payloadcms/eslint-config": "3.28.0"
58
59
  },
59
60
  "scripts": {
60
- "build": "pnpm build:types && pnpm build:swc",
61
+ "build": "pnpm build:types && pnpm build:swc && pnpm build:dateFNS",
62
+ "build:dateFNS": "node bundleDateFNSLocales.js",
61
63
  "build:debug": "pnpm build",
62
64
  "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
63
65
  "build:types": "tsc --emitDeclarationOnly --outDir dist",
@@ -1,81 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { deepMergeSimple } from './deepMergeSimple.js';
3
- describe('deepMergeSimple', ()=>{
4
- it('should merge two flat objects', ()=>{
5
- const result = deepMergeSimple({
6
- a: 1
7
- }, {
8
- b: 2
9
- });
10
- expect(result).toEqual({
11
- a: 1,
12
- b: 2
13
- });
14
- });
15
- it('should let obj2 override obj1 keys', ()=>{
16
- const result = deepMergeSimple({
17
- a: 1
18
- }, {
19
- a: 2
20
- });
21
- expect(result).toEqual({
22
- a: 2
23
- });
24
- });
25
- it('should recursively merge nested objects', ()=>{
26
- const result = deepMergeSimple({
27
- a: {
28
- b: 1,
29
- c: 2
30
- }
31
- }, {
32
- a: {
33
- c: 3,
34
- d: 4
35
- }
36
- });
37
- expect(result).toEqual({
38
- a: {
39
- b: 1,
40
- c: 3,
41
- d: 4
42
- }
43
- });
44
- });
45
- it('should not mutate the input objects', ()=>{
46
- const obj1 = {
47
- a: 1
48
- };
49
- const obj2 = {
50
- b: 2
51
- };
52
- deepMergeSimple(obj1, obj2);
53
- expect(obj1).toEqual({
54
- a: 1
55
- });
56
- expect(obj2).toEqual({
57
- b: 2
58
- });
59
- });
60
- it('should not pollute global Object.prototype via __proto__', ()=>{
61
- const malicious = JSON.parse('{"__proto__": {"isAdmin": true}}');
62
- deepMergeSimple({}, malicious);
63
- expect({}.isAdmin).toBeUndefined();
64
- });
65
- it('should not hijack the returned object prototype via __proto__', ()=>{
66
- const malicious = JSON.parse('{"__proto__": {"isAdmin": true}}');
67
- const result = deepMergeSimple({}, malicious);
68
- expect(result.isAdmin).toBeUndefined();
69
- });
70
- it('should not hijack prototype via nested __proto__ key', ()=>{
71
- const malicious = JSON.parse('{"a": {"__proto__": {"isAdmin": true}}}');
72
- const base = {
73
- a: {}
74
- };
75
- const result = deepMergeSimple(base, malicious);
76
- expect(result.a.isAdmin).toBeUndefined();
77
- expect({}.isAdmin).toBeUndefined();
78
- });
79
- });
80
-
81
- //# sourceMappingURL=deepMergeSimple.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utilities/deepMergeSimple.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { deepMergeSimple } from './deepMergeSimple.js'\n\ndescribe('deepMergeSimple', () => {\n it('should merge two flat objects', () => {\n const result = deepMergeSimple({ a: 1 }, { b: 2 })\n expect(result).toEqual({ a: 1, b: 2 })\n })\n\n it('should let obj2 override obj1 keys', () => {\n const result = deepMergeSimple({ a: 1 }, { a: 2 })\n expect(result).toEqual({ a: 2 })\n })\n\n it('should recursively merge nested objects', () => {\n const result = deepMergeSimple({ a: { b: 1, c: 2 } }, { a: { c: 3, d: 4 } })\n expect(result).toEqual({ a: { b: 1, c: 3, d: 4 } })\n })\n\n it('should not mutate the input objects', () => {\n const obj1 = { a: 1 }\n const obj2 = { b: 2 }\n deepMergeSimple(obj1, obj2)\n expect(obj1).toEqual({ a: 1 })\n expect(obj2).toEqual({ b: 2 })\n })\n\n it('should not pollute global Object.prototype via __proto__', () => {\n const malicious = JSON.parse('{\"__proto__\": {\"isAdmin\": true}}')\n deepMergeSimple({}, malicious)\n expect(({} as any).isAdmin).toBeUndefined()\n })\n\n it('should not hijack the returned object prototype via __proto__', () => {\n const malicious = JSON.parse('{\"__proto__\": {\"isAdmin\": true}}')\n const result = deepMergeSimple({}, malicious) as any\n expect(result.isAdmin).toBeUndefined()\n })\n\n it('should not hijack prototype via nested __proto__ key', () => {\n const malicious = JSON.parse('{\"a\": {\"__proto__\": {\"isAdmin\": true}}}')\n const base = { a: {} }\n const result = deepMergeSimple(base, malicious) as any\n expect(result.a.isAdmin).toBeUndefined()\n expect(({} as any).isAdmin).toBeUndefined()\n })\n})\n"],"names":["describe","expect","it","deepMergeSimple","result","a","b","toEqual","c","d","obj1","obj2","malicious","JSON","parse","isAdmin","toBeUndefined","base"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,eAAe,QAAQ,uBAAsB;AAEtDH,SAAS,mBAAmB;IAC1BE,GAAG,iCAAiC;QAClC,MAAME,SAASD,gBAAgB;YAAEE,GAAG;QAAE,GAAG;YAAEC,GAAG;QAAE;QAChDL,OAAOG,QAAQG,OAAO,CAAC;YAAEF,GAAG;YAAGC,GAAG;QAAE;IACtC;IAEAJ,GAAG,sCAAsC;QACvC,MAAME,SAASD,gBAAgB;YAAEE,GAAG;QAAE,GAAG;YAAEA,GAAG;QAAE;QAChDJ,OAAOG,QAAQG,OAAO,CAAC;YAAEF,GAAG;QAAE;IAChC;IAEAH,GAAG,2CAA2C;QAC5C,MAAME,SAASD,gBAAgB;YAAEE,GAAG;gBAAEC,GAAG;gBAAGE,GAAG;YAAE;QAAE,GAAG;YAAEH,GAAG;gBAAEG,GAAG;gBAAGC,GAAG;YAAE;QAAE;QAC1ER,OAAOG,QAAQG,OAAO,CAAC;YAAEF,GAAG;gBAAEC,GAAG;gBAAGE,GAAG;gBAAGC,GAAG;YAAE;QAAE;IACnD;IAEAP,GAAG,uCAAuC;QACxC,MAAMQ,OAAO;YAAEL,GAAG;QAAE;QACpB,MAAMM,OAAO;YAAEL,GAAG;QAAE;QACpBH,gBAAgBO,MAAMC;QACtBV,OAAOS,MAAMH,OAAO,CAAC;YAAEF,GAAG;QAAE;QAC5BJ,OAAOU,MAAMJ,OAAO,CAAC;YAAED,GAAG;QAAE;IAC9B;IAEAJ,GAAG,4DAA4D;QAC7D,MAAMU,YAAYC,KAAKC,KAAK,CAAC;QAC7BX,gBAAgB,CAAC,GAAGS;QACpBX,OAAO,AAAC,CAAC,EAAUc,OAAO,EAAEC,aAAa;IAC3C;IAEAd,GAAG,iEAAiE;QAClE,MAAMU,YAAYC,KAAKC,KAAK,CAAC;QAC7B,MAAMV,SAASD,gBAAgB,CAAC,GAAGS;QACnCX,OAAOG,OAAOW,OAAO,EAAEC,aAAa;IACtC;IAEAd,GAAG,wDAAwD;QACzD,MAAMU,YAAYC,KAAKC,KAAK,CAAC;QAC7B,MAAMG,OAAO;YAAEZ,GAAG,CAAC;QAAE;QACrB,MAAMD,SAASD,gBAAgBc,MAAML;QACrCX,OAAOG,OAAOC,CAAC,CAACU,OAAO,EAAEC,aAAa;QACtCf,OAAO,AAAC,CAAC,EAAUc,OAAO,EAAEC,aAAa;IAC3C;AACF"}
@@ -1,42 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { extractHeaderLanguage } from './languages.js';
3
- describe('extractHeaderLanguage', ()=>{
4
- it('should return exact match when base language tag is supported', ()=>{
5
- expect(extractHeaderLanguage('ja')).toBe('ja');
6
- expect(extractHeaderLanguage('en')).toBe('en');
7
- expect(extractHeaderLanguage('de')).toBe('de');
8
- });
9
- it('should fall back to base tag when regional tag has no exact match', ()=>{
10
- expect(extractHeaderLanguage('ja-JP')).toBe('ja');
11
- expect(extractHeaderLanguage('de-AT')).toBe('de');
12
- expect(extractHeaderLanguage('fr-BE')).toBe('fr');
13
- });
14
- it('should match exact regional tag when it is supported', ()=>{
15
- // zh-TW is in acceptedLanguages, so it should match directly
16
- expect(extractHeaderLanguage('zh-TW')).toBe('zh-TW');
17
- // bn-BD is in acceptedLanguages
18
- expect(extractHeaderLanguage('bn-BD')).toBe('bn-BD');
19
- });
20
- it('should fall back to base tag for unsupported regional variant of a supported regional language', ()=>{
21
- // zh-CN is not in acceptedLanguages, but zh is
22
- expect(extractHeaderLanguage('zh-CN')).toBe('zh');
23
- });
24
- it('should return undefined for unsupported languages', ()=>{
25
- expect(extractHeaderLanguage('xx')).toBeUndefined();
26
- expect(extractHeaderLanguage('xx-XX')).toBeUndefined();
27
- });
28
- it('should respect quality ordering and return highest quality supported language', ()=>{
29
- expect(extractHeaderLanguage('ja-JP;q=0.9, en;q=1.0')).toBe('en');
30
- expect(extractHeaderLanguage('ja-JP, en;q=0.9')).toBe('ja');
31
- });
32
- it('should skip unsupported languages and find the next supported one', ()=>{
33
- expect(extractHeaderLanguage('xx-XX, ja-JP')).toBe('ja');
34
- expect(extractHeaderLanguage('xx, yy, de-DE')).toBe('de');
35
- });
36
- it('should handle empty string', ()=>{
37
- // empty string produces one entry with empty language, which won't match
38
- expect(extractHeaderLanguage('')).toBeUndefined();
39
- });
40
- });
41
-
42
- //# sourceMappingURL=languages.spec.js.map