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

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 +150 -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 +158 -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 +158 -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 +157 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -5
  73. package/dist/languages/de.js.map +1 -1
  74. package/dist/languages/en.d.ts +154 -1
  75. package/dist/languages/en.d.ts.map +1 -1
  76. package/dist/languages/en.js +158 -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 +157 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +175 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +158 -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 +179 -26
  179. package/dist/languages/zhTw.js.map +1 -1
  180. package/dist/utilities/getTranslationsByContext.d.ts +154 -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 +20 -22
  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,21 +338,26 @@ 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;
345
+ apiResponse: string;
250
346
  applyChanges: string;
251
347
  ascending: string;
252
348
  auto: string;
253
349
  automatic: string;
254
350
  backToDashboard: string;
351
+ breadcrumb: string;
255
352
  by: string;
256
353
  cancel: string;
257
354
  changesNotSaved: string;
258
355
  checked: string;
259
356
  clear: string;
260
357
  clearAll: string;
358
+ clearSearch: string;
261
359
  close: string;
360
+ closed: string;
262
361
  collapse: string;
263
362
  collection: string;
264
363
  collections: string;
@@ -283,6 +382,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
283
382
  create: string;
284
383
  created: string;
285
384
  createdAt: string;
385
+ createdBy: string;
286
386
  createNew: string;
287
387
  createNewLabel: string;
288
388
  creating: string;
@@ -310,6 +410,12 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
310
410
  documentModified: string;
311
411
  documentOutOfDate: string;
312
412
  documents: string;
413
+ dragCancelled: string;
414
+ dragDropped: string;
415
+ dragInstructions: string;
416
+ dragMoved: string;
417
+ dragPickedUp: string;
418
+ dragToMove: string;
313
419
  dragToReorder: string;
314
420
  duplicate: string;
315
421
  duplicateWithoutSaving: string;
@@ -343,6 +449,8 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
343
449
  filterWhere: string;
344
450
  globals: string;
345
451
  goBack: string;
452
+ goToPage: string;
453
+ gridLayout: string;
346
454
  groupByLabel: string;
347
455
  hideSidebar: string;
348
456
  import: string;
@@ -375,6 +483,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
375
483
  newLabel: string;
376
484
  newPassword: string;
377
485
  next: string;
486
+ nextPage: string;
378
487
  no: string;
379
488
  noDateSelected: string;
380
489
  noFiltersSet: string;
@@ -388,6 +497,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
388
497
  notFound: string;
389
498
  nothingFound: string;
390
499
  noTrashResults: string;
500
+ notSelectedDocument: string;
391
501
  notShownInTable: string;
392
502
  noUpcomingEventsScheduled: string;
393
503
  noValue: string;
@@ -400,7 +510,9 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
400
510
  original: string;
401
511
  overwriteExistingData: string;
402
512
  pageNotFound: string;
513
+ pageNumberRange: string;
403
514
  password: string;
515
+ pasteBelow: string;
404
516
  pasteField: string;
405
517
  pasteRow: string;
406
518
  payloadSettings: string;
@@ -410,11 +522,15 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
410
522
  perPageLabel: string;
411
523
  presets: string;
412
524
  previous: string;
525
+ previousPage: string;
413
526
  reindex: string;
414
527
  reindexingAll: string;
415
528
  reloadDocument: string;
416
529
  remove: string;
530
+ removeFilter: string;
417
531
  rename: string;
532
+ replaceRow: string;
533
+ requiredFields: string;
418
534
  reset: string;
419
535
  resetPreferences: string;
420
536
  resetPreferencesDescription: string;
@@ -430,21 +546,28 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
430
546
  saveChanges: string;
431
547
  saving: string;
432
548
  schedulePublishFor: string;
549
+ searchAutomatically: string;
433
550
  searchBy: string;
551
+ searchCleared: string;
434
552
  searchColumns: string;
553
+ searchGroups: string;
554
+ searchResults: string;
435
555
  select: string;
436
556
  selectAll: string;
437
557
  selectAllRows: string;
438
558
  selectedCount: string;
559
+ selectedDocument: string;
439
560
  selectLabel: string;
440
561
  selectValue: string;
441
562
  settings: string;
442
563
  showAllLabel: string;
443
564
  shownInTable: string;
444
565
  showSidebar: string;
566
+ skipToContent: string;
445
567
  sorryNotFound: string;
446
568
  sort: string;
447
569
  sortByLabelDirection: string;
570
+ sortByOrderToReorder: string;
448
571
  stayOnThisPage: string;
449
572
  submissionSuccessful: string;
450
573
  submit: string;
@@ -453,6 +576,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
453
576
  successfullyCreated: string;
454
577
  successfullyDuplicated: string;
455
578
  successfullyReindexed: string;
579
+ tableLayout: string;
456
580
  takeOver: string;
457
581
  theme: string;
458
582
  thisLanguage: string;
@@ -474,6 +598,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
474
598
  upcomingEvents: string;
475
599
  updatedAgo: string;
476
600
  updatedAt: string;
601
+ updatedBy: string;
477
602
  updatedCountSuccessfully: string;
478
603
  updatedLabelSuccessfully: string;
479
604
  updatedSuccessfully: string;
@@ -492,13 +617,30 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
492
617
  yes: string;
493
618
  };
494
619
  hierarchy: {
620
+ folderLocation: string;
621
+ goTo: string;
495
622
  itemsMovedTo: string;
496
623
  itemsMovedToRoot: string;
497
- moveItemsToRootConfirmation: string;
624
+ moveTo: string;
498
625
  moveToRoot: string;
499
626
  noParent: string;
500
627
  noResults: string;
628
+ removeFrom: string;
501
629
  searchLabel: string;
630
+ searchResults: string;
631
+ };
632
+ llmInstructions: {
633
+ additionalInstructions: string;
634
+ collectionDescription: string;
635
+ collectionSystemDescription: string;
636
+ editInstructions: string;
637
+ global: string;
638
+ globalDescription: string;
639
+ globalSystemDescription: string;
640
+ instructions: string;
641
+ systemInstructions: string;
642
+ targetCannotBeChanged: string;
643
+ title: string;
502
644
  };
503
645
  localization: {
504
646
  cannotCopySameLocale: string;
@@ -532,8 +674,18 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
532
674
  addFile: string;
533
675
  addFiles: string;
534
676
  bulkUpload: string;
677
+ copyLinkToFile: string;
678
+ copyURL: string;
535
679
  crop: string;
680
+ cropBottom: string;
681
+ cropBottomLeft: string;
682
+ cropBottomRight: string;
683
+ cropLeft: string;
684
+ cropRight: string;
536
685
  cropToolDescription: string;
686
+ cropTop: string;
687
+ cropTopLeft: string;
688
+ cropTopRight: string;
537
689
  download: string;
538
690
  dragAndDrop: string;
539
691
  dragAndDropHere: string;
@@ -550,6 +702,7 @@ export declare const getTranslationsByContext: (selectedLanguage: Language, cont
550
702
  linkToFile: string;
551
703
  moreInfo: string;
552
704
  noFile: string;
705
+ pasteFromClipboard: string;
553
706
  pasteURL: string;
554
707
  previewSizes: string;
555
708
  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,12 +1,7 @@
1
1
  {
2
2
  "name": "@payloadcms/translations",
3
- "version": "4.0.0-internal.e7d4ebc",
3
+ "version": "4.0.0-internal.ec73d44",
4
4
  "homepage": "https://payloadcms.com",
5
- "repository": {
6
- "type": "git",
7
- "url": "https://github.com/payloadcms/payload.git",
8
- "directory": "packages/translations"
9
- },
10
5
  "license": "MIT",
11
6
  "author": "Payload <dev@payloadcms.com> (https://payloadcms.com)",
12
7
  "maintainers": [
@@ -16,8 +11,18 @@
16
11
  "url": "https://payloadcms.com"
17
12
  }
18
13
  ],
19
- "sideEffects": false,
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/payloadcms/payload.git",
17
+ "directory": "packages/translations"
18
+ },
19
+ "files": [
20
+ "dist"
21
+ ],
20
22
  "type": "module",
23
+ "sideEffects": false,
24
+ "main": "./dist/exports/index.js",
25
+ "types": "./dist/exports/index.d.ts",
21
26
  "exports": {
22
27
  ".": {
23
28
  "import": "./dist/exports/index.js",
@@ -40,29 +45,22 @@
40
45
  "default": "./dist/languages/*.js"
41
46
  }
42
47
  },
43
- "main": "./dist/exports/index.js",
44
- "types": "./dist/exports/index.d.ts",
45
- "files": [
46
- "dist"
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
- "prettier": "3.5.3",
56
- "typescript": "6.0.3",
57
- "@payloadcms/eslint-config": "3.28.0"
55
+ "esbuild": "0.27.1",
56
+ "typescript": "npm:@typescript/typescript6@6.0.2"
58
57
  },
59
58
  "scripts": {
60
- "build": "pnpm build:types && pnpm build:swc",
59
+ "build": "pnpm build:types && pnpm build:swc && pnpm build:dateFNS",
60
+ "build:dateFNS": "node bundleDateFNSLocales.js",
61
61
  "build:debug": "pnpm build",
62
62
  "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
63
63
  "build:types": "tsc --emitDeclarationOnly --outDir dist",
64
- "clean": "rimraf -g {dist,*.tsbuildinfo}",
65
- "lint": "eslint .",
66
- "lint:fix": "eslint . --fix"
64
+ "clean": "rimraf -g {dist,*.tsbuildinfo}"
67
65
  }
68
66
  }
@@ -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"}