@payloadcms/translations 4.0.0-internal.e7d4ebc → 4.0.0-internal.ea6e8f8

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 (188) hide show
  1. package/dist/clientKeys.d.ts +1 -1
  2. package/dist/clientKeys.d.ts.map +1 -1
  3. package/dist/clientKeys.js +141 -1
  4. package/dist/clientKeys.js.map +1 -1
  5. package/dist/dateFNS/ar.js +1 -0
  6. package/dist/dateFNS/az.js +1 -0
  7. package/dist/dateFNS/bg.js +1 -0
  8. package/dist/dateFNS/bn.js +1 -0
  9. package/dist/dateFNS/ca.js +1 -0
  10. package/dist/dateFNS/chunk-YT6ULX4E.js +1 -0
  11. package/dist/dateFNS/cs.js +1 -0
  12. package/dist/dateFNS/da.js +1 -0
  13. package/dist/dateFNS/de.js +1 -0
  14. package/dist/dateFNS/es.js +1 -0
  15. package/dist/dateFNS/et.js +1 -0
  16. package/dist/dateFNS/fa-IR.js +1 -0
  17. package/dist/dateFNS/fr.js +1 -0
  18. package/dist/dateFNS/he.js +1 -0
  19. package/dist/dateFNS/hr.js +1 -0
  20. package/dist/dateFNS/hu.js +1 -0
  21. package/dist/dateFNS/id.js +1 -0
  22. package/dist/dateFNS/is.js +1 -0
  23. package/dist/dateFNS/it.js +1 -0
  24. package/dist/dateFNS/ja.js +1 -0
  25. package/dist/dateFNS/ko.js +1 -0
  26. package/dist/dateFNS/lt.js +1 -0
  27. package/dist/dateFNS/lv.js +1 -0
  28. package/dist/dateFNS/nb.js +1 -0
  29. package/dist/dateFNS/nl.js +1 -0
  30. package/dist/dateFNS/pl.js +1 -0
  31. package/dist/dateFNS/pt.js +1 -0
  32. package/dist/dateFNS/ro.js +1 -0
  33. package/dist/dateFNS/ru.js +1 -0
  34. package/dist/dateFNS/sk.js +1 -0
  35. package/dist/dateFNS/sl.js +1 -0
  36. package/dist/dateFNS/sr-Latn.js +1 -0
  37. package/dist/dateFNS/sr.js +1 -0
  38. package/dist/dateFNS/sv.js +1 -0
  39. package/dist/dateFNS/ta.js +1 -0
  40. package/dist/dateFNS/th.js +1 -0
  41. package/dist/dateFNS/tr.js +1 -0
  42. package/dist/dateFNS/uk.js +1 -0
  43. package/dist/dateFNS/vi.js +1 -0
  44. package/dist/dateFNS/zh-CN.js +1 -0
  45. package/dist/dateFNS/zh-TW.js +1 -0
  46. package/dist/importDateFNSLocale.js +41 -41
  47. package/dist/languages/ar.d.ts.map +1 -1
  48. package/dist/languages/ar.js +149 -5
  49. package/dist/languages/ar.js.map +1 -1
  50. package/dist/languages/az.d.ts.map +1 -1
  51. package/dist/languages/az.js +149 -5
  52. package/dist/languages/az.js.map +1 -1
  53. package/dist/languages/bg.d.ts.map +1 -1
  54. package/dist/languages/bg.js +148 -4
  55. package/dist/languages/bg.js.map +1 -1
  56. package/dist/languages/bnBd.d.ts.map +1 -1
  57. package/dist/languages/bnBd.js +149 -5
  58. package/dist/languages/bnBd.js.map +1 -1
  59. package/dist/languages/bnIn.d.ts.map +1 -1
  60. package/dist/languages/bnIn.js +149 -5
  61. package/dist/languages/bnIn.js.map +1 -1
  62. package/dist/languages/ca.d.ts.map +1 -1
  63. package/dist/languages/ca.js +149 -5
  64. package/dist/languages/ca.js.map +1 -1
  65. package/dist/languages/cs.d.ts.map +1 -1
  66. package/dist/languages/cs.js +149 -5
  67. package/dist/languages/cs.js.map +1 -1
  68. package/dist/languages/da.d.ts.map +1 -1
  69. package/dist/languages/da.js +149 -5
  70. package/dist/languages/da.js.map +1 -1
  71. package/dist/languages/de.d.ts.map +1 -1
  72. package/dist/languages/de.js +149 -5
  73. package/dist/languages/de.js.map +1 -1
  74. package/dist/languages/en.d.ts +145 -1
  75. package/dist/languages/en.d.ts.map +1 -1
  76. package/dist/languages/en.js +149 -5
  77. package/dist/languages/en.js.map +1 -1
  78. package/dist/languages/es.d.ts.map +1 -1
  79. package/dist/languages/es.js +148 -4
  80. package/dist/languages/es.js.map +1 -1
  81. package/dist/languages/et.d.ts.map +1 -1
  82. package/dist/languages/et.js +149 -5
  83. package/dist/languages/et.js.map +1 -1
  84. package/dist/languages/fa.d.ts.map +1 -1
  85. package/dist/languages/fa.js +149 -5
  86. package/dist/languages/fa.js.map +1 -1
  87. package/dist/languages/fr.d.ts.map +1 -1
  88. package/dist/languages/fr.js +149 -5
  89. package/dist/languages/fr.js.map +1 -1
  90. package/dist/languages/he.d.ts.map +1 -1
  91. package/dist/languages/he.js +149 -5
  92. package/dist/languages/he.js.map +1 -1
  93. package/dist/languages/hr.d.ts.map +1 -1
  94. package/dist/languages/hr.js +149 -5
  95. package/dist/languages/hr.js.map +1 -1
  96. package/dist/languages/hu.d.ts.map +1 -1
  97. package/dist/languages/hu.js +149 -5
  98. package/dist/languages/hu.js.map +1 -1
  99. package/dist/languages/hy.d.ts.map +1 -1
  100. package/dist/languages/hy.js +149 -5
  101. package/dist/languages/hy.js.map +1 -1
  102. package/dist/languages/id.d.ts.map +1 -1
  103. package/dist/languages/id.js +149 -5
  104. package/dist/languages/id.js.map +1 -1
  105. package/dist/languages/is.d.ts.map +1 -1
  106. package/dist/languages/is.js +149 -5
  107. package/dist/languages/is.js.map +1 -1
  108. package/dist/languages/it.d.ts.map +1 -1
  109. package/dist/languages/it.js +149 -5
  110. package/dist/languages/it.js.map +1 -1
  111. package/dist/languages/ja.d.ts.map +1 -1
  112. package/dist/languages/ja.js +166 -22
  113. package/dist/languages/ja.js.map +1 -1
  114. package/dist/languages/ko.d.ts.map +1 -1
  115. package/dist/languages/ko.js +149 -5
  116. package/dist/languages/ko.js.map +1 -1
  117. package/dist/languages/lt.d.ts.map +1 -1
  118. package/dist/languages/lt.js +149 -5
  119. package/dist/languages/lt.js.map +1 -1
  120. package/dist/languages/lv.d.ts.map +1 -1
  121. package/dist/languages/lv.js +149 -5
  122. package/dist/languages/lv.js.map +1 -1
  123. package/dist/languages/my.d.ts.map +1 -1
  124. package/dist/languages/my.js +149 -5
  125. package/dist/languages/my.js.map +1 -1
  126. package/dist/languages/nb.d.ts.map +1 -1
  127. package/dist/languages/nb.js +149 -5
  128. package/dist/languages/nb.js.map +1 -1
  129. package/dist/languages/nl.d.ts.map +1 -1
  130. package/dist/languages/nl.js +149 -5
  131. package/dist/languages/nl.js.map +1 -1
  132. package/dist/languages/pl.d.ts.map +1 -1
  133. package/dist/languages/pl.js +149 -5
  134. package/dist/languages/pl.js.map +1 -1
  135. package/dist/languages/pt.d.ts.map +1 -1
  136. package/dist/languages/pt.js +149 -5
  137. package/dist/languages/pt.js.map +1 -1
  138. package/dist/languages/ro.d.ts.map +1 -1
  139. package/dist/languages/ro.js +149 -5
  140. package/dist/languages/ro.js.map +1 -1
  141. package/dist/languages/rs.d.ts.map +1 -1
  142. package/dist/languages/rs.js +149 -5
  143. package/dist/languages/rs.js.map +1 -1
  144. package/dist/languages/rsLatin.d.ts.map +1 -1
  145. package/dist/languages/rsLatin.js +149 -5
  146. package/dist/languages/rsLatin.js.map +1 -1
  147. package/dist/languages/ru.d.ts.map +1 -1
  148. package/dist/languages/ru.js +149 -5
  149. package/dist/languages/ru.js.map +1 -1
  150. package/dist/languages/sk.d.ts.map +1 -1
  151. package/dist/languages/sk.js +149 -5
  152. package/dist/languages/sk.js.map +1 -1
  153. package/dist/languages/sl.d.ts.map +1 -1
  154. package/dist/languages/sl.js +149 -5
  155. package/dist/languages/sl.js.map +1 -1
  156. package/dist/languages/sv.d.ts.map +1 -1
  157. package/dist/languages/sv.js +149 -5
  158. package/dist/languages/sv.js.map +1 -1
  159. package/dist/languages/ta.d.ts.map +1 -1
  160. package/dist/languages/ta.js +149 -5
  161. package/dist/languages/ta.js.map +1 -1
  162. package/dist/languages/th.d.ts.map +1 -1
  163. package/dist/languages/th.js +149 -5
  164. package/dist/languages/th.js.map +1 -1
  165. package/dist/languages/tr.d.ts.map +1 -1
  166. package/dist/languages/tr.js +149 -5
  167. package/dist/languages/tr.js.map +1 -1
  168. package/dist/languages/uk.d.ts.map +1 -1
  169. package/dist/languages/uk.js +149 -5
  170. package/dist/languages/uk.js.map +1 -1
  171. package/dist/languages/vi.d.ts.map +1 -1
  172. package/dist/languages/vi.js +149 -5
  173. package/dist/languages/vi.js.map +1 -1
  174. package/dist/languages/zh.d.ts.map +1 -1
  175. package/dist/languages/zh.js +149 -5
  176. package/dist/languages/zh.js.map +1 -1
  177. package/dist/languages/zhTw.d.ts.map +1 -1
  178. package/dist/languages/zhTw.js +170 -26
  179. package/dist/languages/zhTw.js.map +1 -1
  180. package/dist/utilities/getTranslationsByContext.d.ts +145 -1
  181. package/dist/utilities/getTranslationsByContext.d.ts.map +1 -1
  182. package/dist/utilities/getTranslationsByContext.js +41 -33
  183. package/dist/utilities/getTranslationsByContext.js.map +1 -1
  184. package/package.json +8 -6
  185. package/dist/utilities/deepMergeSimple.spec.js +0 -81
  186. package/dist/utilities/deepMergeSimple.spec.js.map +0 -1
  187. package/dist/utilities/languages.spec.js +0 -42
  188. package/dist/utilities/languages.spec.js.map +0 -1
@@ -53,6 +53,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
53
53
  notRedirected: string;
54
54
  passed: string;
55
55
  passwordResetSuccessfully: string;
56
+ resend: string;
56
57
  resetPassword: string;
57
58
  resetPasswordExpiration: string;
58
59
  resetPasswordToken: string;
@@ -73,6 +74,80 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
73
74
  youAreReceivingResetPassword: string;
74
75
  youDidNotRequestPassword: string;
75
76
  };
77
+ branching: {
78
+ andMoreChanges: string;
79
+ branch: string;
80
+ branchClosed: string;
81
+ branchDescription: string;
82
+ branchedFrom: string;
83
+ branches: string;
84
+ branchHistory: string;
85
+ branchMerging: string;
86
+ branchName: string;
87
+ branchSettings: string;
88
+ cancelSchedule: string;
89
+ changedDocuments: string;
90
+ changesTo: string;
91
+ closeBranchAfterMerge: string;
92
+ closeBranchHelpOff: string;
93
+ closeBranchHelpOn: string;
94
+ confirmDiscardAll: string;
95
+ confirmDiscardSelected: string;
96
+ createAndSwitch: string;
97
+ createNewBranch: string;
98
+ currentChanges: string;
99
+ defaultBranch: string;
100
+ discardAll: string;
101
+ discardChanges: string;
102
+ discardedCount: string;
103
+ discarding: string;
104
+ discardSelected: string;
105
+ historyPageOf: string;
106
+ manage: string;
107
+ manageBranches: string;
108
+ merge: string;
109
+ mergeAllChanges: string;
110
+ mergeAllCount: string;
111
+ mergeBlocked: string;
112
+ mergeBranchInto: string;
113
+ mergeChanges: string;
114
+ mergeComplete: string;
115
+ merged: string;
116
+ mergedByCount: string;
117
+ mergedCount: string;
118
+ mergedOfTotal: string;
119
+ mergedOn: string;
120
+ mergeHistory: string;
121
+ mergeInterrupted: string;
122
+ mergeNow: string;
123
+ mergeOnlySelected: string;
124
+ mergePartial: string;
125
+ mergeScheduledFor: string;
126
+ mergeSelectedOfTotal: string;
127
+ mergeStarting: string;
128
+ merging: string;
129
+ mergingProgress: string;
130
+ noChangesYet: string;
131
+ operation_create: string;
132
+ operation_delete: string;
133
+ operation_update: string;
134
+ reviewingChangedDocuments: string;
135
+ scheduleAnotherMerge: string;
136
+ scheduleCancelled: string;
137
+ scheduleCount: string;
138
+ scheduledMerges: string;
139
+ scheduledToMerge: string;
140
+ scheduledToMergeOn: string;
141
+ scheduleHasNothingLeft: string;
142
+ scheduleMerge: string;
143
+ scheduleMergeHelp: string;
144
+ scheduleWillApplyAll: string;
145
+ scheduleWillApplySelected: string;
146
+ scheduling: string;
147
+ searchBranches: string;
148
+ selectBranch: string;
149
+ untouchedDocumentsNote: string;
150
+ };
76
151
  commandPalette: {
77
152
  actions: string;
78
153
  createNew: string;
@@ -100,23 +175,38 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
100
175
  editingDashboard: string;
101
176
  noItems: string;
102
177
  resetLayout: string;
178
+ resizeWidget: string;
103
179
  searchWidgets: string;
180
+ widgetAddPin: string;
104
181
  widgetCollectionRequired: string;
105
182
  widgetConfigurationError: string;
183
+ widgetDropFilesToUpload: string;
106
184
  widgetInvalidCollection: string;
107
185
  widgetInvalidFilterField: string;
108
186
  widgetInvalidSortField: string;
109
187
  widgetLimitLabel: string;
110
188
  widgetNonSortableSortField: string;
189
+ widgetPageCount: string;
190
+ widgetPagination: string;
191
+ widgetPinned: string;
192
+ widgetPinnedEmpty: string;
193
+ widgetPinnedEmptyDescription: string;
194
+ widgetPinnedSaveError: string;
111
195
  widgetQueryError: string;
112
196
  widgetRecentlyViewedEmpty: string;
197
+ widgetRecentlyViewedEmptyDescription: string;
198
+ widgetRecentlyViewedFilterDescription: string;
113
199
  widgetRecentlyViewedTitle: string;
200
+ widgetRecentsAndPinned: string;
201
+ widgetRemovePin: string;
114
202
  widgetSelectCollectionFirst: string;
115
203
  widgetSelectSortField: string;
116
204
  widgetSortDirectionLabel: string;
117
205
  widgetSortFieldLabel: string;
118
206
  widgetTitleFallback: string;
119
207
  widgetTitleLabel: string;
208
+ widgetUploadDropzoneDescription: string;
209
+ widgetUploadFiles: string;
120
210
  };
121
211
  error: {
122
212
  accountAlreadyActivated: string;
@@ -128,6 +218,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
128
218
  emailOrPasswordIncorrect: string;
129
219
  failedToResetLayout: string;
130
220
  failedToSaveLayout: string;
221
+ fileFetchFailed: string;
131
222
  followingFieldsInvalid_one: string;
132
223
  followingFieldsInvalid_other: string;
133
224
  incorrectCollection: string;
@@ -144,6 +235,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
144
235
  missingIDOfDocument: string;
145
236
  missingIDOfVersion: string;
146
237
  missingRequiredData: string;
238
+ noFileFoundInClipboard: string;
147
239
  noFilesUploaded: string;
148
240
  noMatchedField: string;
149
241
  notAllowedToAccessPage: string;
@@ -158,6 +250,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
158
250
  tokenNotProvided: string;
159
251
  unableToCopy: string;
160
252
  unableToDeleteCount: string;
253
+ unableToReadClipboard: string;
161
254
  unableToReindexCollection: string;
162
255
  unableToUpdateCount: string;
163
256
  unauthorized: string;
@@ -166,6 +259,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
166
259
  unPublishingDocument: string;
167
260
  unspecific: string;
168
261
  unverifiedEmail: string;
262
+ urlNotAllowed: string;
169
263
  userEmailAlreadyRegistered: string;
170
264
  userLocked: string;
171
265
  usernameAlreadyRegistered: string;
@@ -244,6 +338,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
244
338
  all: string;
245
339
  allCollections: string;
246
340
  allLocales: string;
341
+ allowedTypes: string;
247
342
  and: string;
248
343
  anotherUser: string;
249
344
  anotherUserTakenOver: string;
@@ -252,13 +347,16 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
252
347
  auto: string;
253
348
  automatic: string;
254
349
  backToDashboard: string;
350
+ breadcrumb: string;
255
351
  by: string;
256
352
  cancel: string;
257
353
  changesNotSaved: string;
258
354
  checked: string;
259
355
  clear: string;
260
356
  clearAll: string;
357
+ clearSearch: string;
261
358
  close: string;
359
+ closed: string;
262
360
  collapse: string;
263
361
  collection: string;
264
362
  collections: string;
@@ -283,6 +381,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
283
381
  create: string;
284
382
  created: string;
285
383
  createdAt: string;
384
+ createdBy: string;
286
385
  createNew: string;
287
386
  createNewLabel: string;
288
387
  creating: string;
@@ -343,6 +442,8 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
343
442
  filterWhere: string;
344
443
  globals: string;
345
444
  goBack: string;
445
+ goToPage: string;
446
+ gridLayout: string;
346
447
  groupByLabel: string;
347
448
  hideSidebar: string;
348
449
  import: string;
@@ -375,6 +476,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
375
476
  newLabel: string;
376
477
  newPassword: string;
377
478
  next: string;
479
+ nextPage: string;
378
480
  no: string;
379
481
  noDateSelected: string;
380
482
  noFiltersSet: string;
@@ -388,6 +490,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
388
490
  notFound: string;
389
491
  nothingFound: string;
390
492
  noTrashResults: string;
493
+ notSelectedDocument: string;
391
494
  notShownInTable: string;
392
495
  noUpcomingEventsScheduled: string;
393
496
  noValue: string;
@@ -400,7 +503,9 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
400
503
  original: string;
401
504
  overwriteExistingData: string;
402
505
  pageNotFound: string;
506
+ pageNumberRange: string;
403
507
  password: string;
508
+ pasteBelow: string;
404
509
  pasteField: string;
405
510
  pasteRow: string;
406
511
  payloadSettings: string;
@@ -410,11 +515,14 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
410
515
  perPageLabel: string;
411
516
  presets: string;
412
517
  previous: string;
518
+ previousPage: string;
413
519
  reindex: string;
414
520
  reindexingAll: string;
415
521
  reloadDocument: string;
416
522
  remove: string;
417
523
  rename: string;
524
+ replaceRow: string;
525
+ requiredFields: string;
418
526
  reset: string;
419
527
  resetPreferences: string;
420
528
  resetPreferencesDescription: string;
@@ -430,21 +538,28 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
430
538
  saveChanges: string;
431
539
  saving: string;
432
540
  schedulePublishFor: string;
541
+ searchAutomatically: string;
433
542
  searchBy: string;
543
+ searchCleared: string;
434
544
  searchColumns: string;
545
+ searchGroups: string;
546
+ searchResults: string;
435
547
  select: string;
436
548
  selectAll: string;
437
549
  selectAllRows: string;
438
550
  selectedCount: string;
551
+ selectedDocument: string;
439
552
  selectLabel: string;
440
553
  selectValue: string;
441
554
  settings: string;
442
555
  showAllLabel: string;
443
556
  shownInTable: string;
444
557
  showSidebar: string;
558
+ skipToContent: string;
445
559
  sorryNotFound: string;
446
560
  sort: string;
447
561
  sortByLabelDirection: string;
562
+ sortByOrderToReorder: string;
448
563
  stayOnThisPage: string;
449
564
  submissionSuccessful: string;
450
565
  submit: string;
@@ -453,6 +568,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
453
568
  successfullyCreated: string;
454
569
  successfullyDuplicated: string;
455
570
  successfullyReindexed: string;
571
+ tableLayout: string;
456
572
  takeOver: string;
457
573
  theme: string;
458
574
  thisLanguage: string;
@@ -474,6 +590,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
474
590
  upcomingEvents: string;
475
591
  updatedAgo: string;
476
592
  updatedAt: string;
593
+ updatedBy: string;
477
594
  updatedCountSuccessfully: string;
478
595
  updatedLabelSuccessfully: string;
479
596
  updatedSuccessfully: string;
@@ -492,13 +609,29 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
492
609
  yes: string;
493
610
  };
494
611
  hierarchy: {
612
+ goTo: string;
495
613
  itemsMovedTo: string;
496
614
  itemsMovedToRoot: string;
497
- moveItemsToRootConfirmation: string;
615
+ moveTo: string;
498
616
  moveToRoot: string;
499
617
  noParent: string;
500
618
  noResults: string;
619
+ removeFrom: string;
501
620
  searchLabel: string;
621
+ searchResults: string;
622
+ };
623
+ llmInstructions: {
624
+ additionalInstructions: string;
625
+ collectionDescription: string;
626
+ collectionSystemDescription: string;
627
+ editInstructions: string;
628
+ global: string;
629
+ globalDescription: string;
630
+ globalSystemDescription: string;
631
+ instructions: string;
632
+ systemInstructions: string;
633
+ targetCannotBeChanged: string;
634
+ title: string;
502
635
  };
503
636
  localization: {
504
637
  cannotCopySameLocale: string;
@@ -532,8 +665,18 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
532
665
  addFile: string;
533
666
  addFiles: string;
534
667
  bulkUpload: string;
668
+ copyLinkToFile: string;
669
+ copyURL: string;
535
670
  crop: string;
671
+ cropBottom: string;
672
+ cropBottomLeft: string;
673
+ cropBottomRight: string;
674
+ cropLeft: string;
675
+ cropRight: string;
536
676
  cropToolDescription: string;
677
+ cropTop: string;
678
+ cropTopLeft: string;
679
+ cropTopRight: string;
537
680
  download: string;
538
681
  dragAndDrop: string;
539
682
  dragAndDropHere: string;
@@ -550,6 +693,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
550
693
  linkToFile: string;
551
694
  moreInfo: string;
552
695
  noFile: string;
696
+ pasteFromClipboard: string;
553
697
  pasteURL: string;
554
698
  previewSizes: string;
555
699
  renameFile: string;
@@ -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,qBAAsB,QAAQ,WAAW,KAAK,GAAG,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM7F,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/translations",
3
- "version": "4.0.0-internal.e7d4ebc",
3
+ "version": "4.0.0-internal.ea6e8f8",
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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/utilities/languages.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { extractHeaderLanguage } from './languages.js'\n\ndescribe('extractHeaderLanguage', () => {\n it('should return exact match when base language tag is supported', () => {\n expect(extractHeaderLanguage('ja')).toBe('ja')\n expect(extractHeaderLanguage('en')).toBe('en')\n expect(extractHeaderLanguage('de')).toBe('de')\n })\n\n it('should fall back to base tag when regional tag has no exact match', () => {\n expect(extractHeaderLanguage('ja-JP')).toBe('ja')\n expect(extractHeaderLanguage('de-AT')).toBe('de')\n expect(extractHeaderLanguage('fr-BE')).toBe('fr')\n })\n\n it('should match exact regional tag when it is supported', () => {\n // zh-TW is in acceptedLanguages, so it should match directly\n expect(extractHeaderLanguage('zh-TW')).toBe('zh-TW')\n // bn-BD is in acceptedLanguages\n expect(extractHeaderLanguage('bn-BD')).toBe('bn-BD')\n })\n\n it('should fall back to base tag for unsupported regional variant of a supported regional language', () => {\n // zh-CN is not in acceptedLanguages, but zh is\n expect(extractHeaderLanguage('zh-CN')).toBe('zh')\n })\n\n it('should return undefined for unsupported languages', () => {\n expect(extractHeaderLanguage('xx')).toBeUndefined()\n expect(extractHeaderLanguage('xx-XX')).toBeUndefined()\n })\n\n it('should respect quality ordering and return highest quality supported language', () => {\n expect(extractHeaderLanguage('ja-JP;q=0.9, en;q=1.0')).toBe('en')\n expect(extractHeaderLanguage('ja-JP, en;q=0.9')).toBe('ja')\n })\n\n it('should skip unsupported languages and find the next supported one', () => {\n expect(extractHeaderLanguage('xx-XX, ja-JP')).toBe('ja')\n expect(extractHeaderLanguage('xx, yy, de-DE')).toBe('de')\n })\n\n it('should handle empty string', () => {\n // empty string produces one entry with empty language, which won't match\n expect(extractHeaderLanguage('')).toBeUndefined()\n })\n})\n"],"names":["describe","expect","it","extractHeaderLanguage","toBe","toBeUndefined"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,qBAAqB,QAAQ,iBAAgB;AAEtDH,SAAS,yBAAyB;IAChCE,GAAG,iEAAiE;QAClED,OAAOE,sBAAsB,OAAOC,IAAI,CAAC;QACzCH,OAAOE,sBAAsB,OAAOC,IAAI,CAAC;QACzCH,OAAOE,sBAAsB,OAAOC,IAAI,CAAC;IAC3C;IAEAF,GAAG,qEAAqE;QACtED,OAAOE,sBAAsB,UAAUC,IAAI,CAAC;QAC5CH,OAAOE,sBAAsB,UAAUC,IAAI,CAAC;QAC5CH,OAAOE,sBAAsB,UAAUC,IAAI,CAAC;IAC9C;IAEAF,GAAG,wDAAwD;QACzD,6DAA6D;QAC7DD,OAAOE,sBAAsB,UAAUC,IAAI,CAAC;QAC5C,gCAAgC;QAChCH,OAAOE,sBAAsB,UAAUC,IAAI,CAAC;IAC9C;IAEAF,GAAG,kGAAkG;QACnG,+CAA+C;QAC/CD,OAAOE,sBAAsB,UAAUC,IAAI,CAAC;IAC9C;IAEAF,GAAG,qDAAqD;QACtDD,OAAOE,sBAAsB,OAAOE,aAAa;QACjDJ,OAAOE,sBAAsB,UAAUE,aAAa;IACtD;IAEAH,GAAG,iFAAiF;QAClFD,OAAOE,sBAAsB,0BAA0BC,IAAI,CAAC;QAC5DH,OAAOE,sBAAsB,oBAAoBC,IAAI,CAAC;IACxD;IAEAF,GAAG,qEAAqE;QACtED,OAAOE,sBAAsB,iBAAiBC,IAAI,CAAC;QACnDH,OAAOE,sBAAsB,kBAAkBC,IAAI,CAAC;IACtD;IAEAF,GAAG,8BAA8B;QAC/B,yEAAyE;QACzED,OAAOE,sBAAsB,KAAKE,aAAa;IACjD;AACF"}