@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.
- package/dist/clientKeys.d.ts +1 -1
- package/dist/clientKeys.d.ts.map +1 -1
- package/dist/clientKeys.js +150 -1
- package/dist/clientKeys.js.map +1 -1
- package/dist/dateFNS/ar.js +1 -0
- package/dist/dateFNS/az.js +1 -0
- package/dist/dateFNS/bg.js +1 -0
- package/dist/dateFNS/bn.js +1 -0
- package/dist/dateFNS/ca.js +1 -0
- package/dist/dateFNS/chunk-YT6ULX4E.js +1 -0
- package/dist/dateFNS/cs.js +1 -0
- package/dist/dateFNS/da.js +1 -0
- package/dist/dateFNS/de.js +1 -0
- package/dist/dateFNS/es.js +1 -0
- package/dist/dateFNS/et.js +1 -0
- package/dist/dateFNS/fa-IR.js +1 -0
- package/dist/dateFNS/fr.js +1 -0
- package/dist/dateFNS/he.js +1 -0
- package/dist/dateFNS/hr.js +1 -0
- package/dist/dateFNS/hu.js +1 -0
- package/dist/dateFNS/id.js +1 -0
- package/dist/dateFNS/is.js +1 -0
- package/dist/dateFNS/it.js +1 -0
- package/dist/dateFNS/ja.js +1 -0
- package/dist/dateFNS/ko.js +1 -0
- package/dist/dateFNS/lt.js +1 -0
- package/dist/dateFNS/lv.js +1 -0
- package/dist/dateFNS/nb.js +1 -0
- package/dist/dateFNS/nl.js +1 -0
- package/dist/dateFNS/pl.js +1 -0
- package/dist/dateFNS/pt.js +1 -0
- package/dist/dateFNS/ro.js +1 -0
- package/dist/dateFNS/ru.js +1 -0
- package/dist/dateFNS/sk.js +1 -0
- package/dist/dateFNS/sl.js +1 -0
- package/dist/dateFNS/sr-Latn.js +1 -0
- package/dist/dateFNS/sr.js +1 -0
- package/dist/dateFNS/sv.js +1 -0
- package/dist/dateFNS/ta.js +1 -0
- package/dist/dateFNS/th.js +1 -0
- package/dist/dateFNS/tr.js +1 -0
- package/dist/dateFNS/uk.js +1 -0
- package/dist/dateFNS/vi.js +1 -0
- package/dist/dateFNS/zh-CN.js +1 -0
- package/dist/dateFNS/zh-TW.js +1 -0
- package/dist/importDateFNSLocale.js +41 -41
- package/dist/languages/ar.d.ts.map +1 -1
- package/dist/languages/ar.js +158 -5
- package/dist/languages/ar.js.map +1 -1
- package/dist/languages/az.d.ts.map +1 -1
- package/dist/languages/az.js +158 -5
- package/dist/languages/az.js.map +1 -1
- package/dist/languages/bg.d.ts.map +1 -1
- package/dist/languages/bg.js +157 -4
- package/dist/languages/bg.js.map +1 -1
- package/dist/languages/bnBd.d.ts.map +1 -1
- package/dist/languages/bnBd.js +158 -5
- package/dist/languages/bnBd.js.map +1 -1
- package/dist/languages/bnIn.d.ts.map +1 -1
- package/dist/languages/bnIn.js +158 -5
- package/dist/languages/bnIn.js.map +1 -1
- package/dist/languages/ca.d.ts.map +1 -1
- package/dist/languages/ca.js +158 -5
- package/dist/languages/ca.js.map +1 -1
- package/dist/languages/cs.d.ts.map +1 -1
- package/dist/languages/cs.js +158 -5
- package/dist/languages/cs.js.map +1 -1
- package/dist/languages/da.d.ts.map +1 -1
- package/dist/languages/da.js +158 -5
- package/dist/languages/da.js.map +1 -1
- package/dist/languages/de.d.ts.map +1 -1
- package/dist/languages/de.js +158 -5
- package/dist/languages/de.js.map +1 -1
- package/dist/languages/en.d.ts +154 -1
- package/dist/languages/en.d.ts.map +1 -1
- package/dist/languages/en.js +158 -5
- package/dist/languages/en.js.map +1 -1
- package/dist/languages/es.d.ts.map +1 -1
- package/dist/languages/es.js +157 -4
- package/dist/languages/es.js.map +1 -1
- package/dist/languages/et.d.ts.map +1 -1
- package/dist/languages/et.js +158 -5
- package/dist/languages/et.js.map +1 -1
- package/dist/languages/fa.d.ts.map +1 -1
- package/dist/languages/fa.js +158 -5
- package/dist/languages/fa.js.map +1 -1
- package/dist/languages/fr.d.ts.map +1 -1
- package/dist/languages/fr.js +158 -5
- package/dist/languages/fr.js.map +1 -1
- package/dist/languages/he.d.ts.map +1 -1
- package/dist/languages/he.js +158 -5
- package/dist/languages/he.js.map +1 -1
- package/dist/languages/hr.d.ts.map +1 -1
- package/dist/languages/hr.js +158 -5
- package/dist/languages/hr.js.map +1 -1
- package/dist/languages/hu.d.ts.map +1 -1
- package/dist/languages/hu.js +158 -5
- package/dist/languages/hu.js.map +1 -1
- package/dist/languages/hy.d.ts.map +1 -1
- package/dist/languages/hy.js +158 -5
- package/dist/languages/hy.js.map +1 -1
- package/dist/languages/id.d.ts.map +1 -1
- package/dist/languages/id.js +158 -5
- package/dist/languages/id.js.map +1 -1
- package/dist/languages/is.d.ts.map +1 -1
- package/dist/languages/is.js +158 -5
- package/dist/languages/is.js.map +1 -1
- package/dist/languages/it.d.ts.map +1 -1
- package/dist/languages/it.js +158 -5
- package/dist/languages/it.js.map +1 -1
- package/dist/languages/ja.d.ts.map +1 -1
- package/dist/languages/ja.js +175 -22
- package/dist/languages/ja.js.map +1 -1
- package/dist/languages/ko.d.ts.map +1 -1
- package/dist/languages/ko.js +158 -5
- package/dist/languages/ko.js.map +1 -1
- package/dist/languages/lt.d.ts.map +1 -1
- package/dist/languages/lt.js +158 -5
- package/dist/languages/lt.js.map +1 -1
- package/dist/languages/lv.d.ts.map +1 -1
- package/dist/languages/lv.js +158 -5
- package/dist/languages/lv.js.map +1 -1
- package/dist/languages/my.d.ts.map +1 -1
- package/dist/languages/my.js +158 -5
- package/dist/languages/my.js.map +1 -1
- package/dist/languages/nb.d.ts.map +1 -1
- package/dist/languages/nb.js +158 -5
- package/dist/languages/nb.js.map +1 -1
- package/dist/languages/nl.d.ts.map +1 -1
- package/dist/languages/nl.js +158 -5
- package/dist/languages/nl.js.map +1 -1
- package/dist/languages/pl.d.ts.map +1 -1
- package/dist/languages/pl.js +158 -5
- package/dist/languages/pl.js.map +1 -1
- package/dist/languages/pt.d.ts.map +1 -1
- package/dist/languages/pt.js +158 -5
- package/dist/languages/pt.js.map +1 -1
- package/dist/languages/ro.d.ts.map +1 -1
- package/dist/languages/ro.js +158 -5
- package/dist/languages/ro.js.map +1 -1
- package/dist/languages/rs.d.ts.map +1 -1
- package/dist/languages/rs.js +158 -5
- package/dist/languages/rs.js.map +1 -1
- package/dist/languages/rsLatin.d.ts.map +1 -1
- package/dist/languages/rsLatin.js +158 -5
- package/dist/languages/rsLatin.js.map +1 -1
- package/dist/languages/ru.d.ts.map +1 -1
- package/dist/languages/ru.js +158 -5
- package/dist/languages/ru.js.map +1 -1
- package/dist/languages/sk.d.ts.map +1 -1
- package/dist/languages/sk.js +158 -5
- package/dist/languages/sk.js.map +1 -1
- package/dist/languages/sl.d.ts.map +1 -1
- package/dist/languages/sl.js +158 -5
- package/dist/languages/sl.js.map +1 -1
- package/dist/languages/sv.d.ts.map +1 -1
- package/dist/languages/sv.js +158 -5
- package/dist/languages/sv.js.map +1 -1
- package/dist/languages/ta.d.ts.map +1 -1
- package/dist/languages/ta.js +158 -5
- package/dist/languages/ta.js.map +1 -1
- package/dist/languages/th.d.ts.map +1 -1
- package/dist/languages/th.js +158 -5
- package/dist/languages/th.js.map +1 -1
- package/dist/languages/tr.d.ts.map +1 -1
- package/dist/languages/tr.js +158 -5
- package/dist/languages/tr.js.map +1 -1
- package/dist/languages/uk.d.ts.map +1 -1
- package/dist/languages/uk.js +158 -5
- package/dist/languages/uk.js.map +1 -1
- package/dist/languages/vi.d.ts.map +1 -1
- package/dist/languages/vi.js +158 -5
- package/dist/languages/vi.js.map +1 -1
- package/dist/languages/zh.d.ts.map +1 -1
- package/dist/languages/zh.js +158 -5
- package/dist/languages/zh.js.map +1 -1
- package/dist/languages/zhTw.d.ts.map +1 -1
- package/dist/languages/zhTw.js +179 -26
- package/dist/languages/zhTw.js.map +1 -1
- package/dist/utilities/getTranslationsByContext.d.ts +154 -1
- package/dist/utilities/getTranslationsByContext.d.ts.map +1 -1
- package/dist/utilities/getTranslationsByContext.js +41 -33
- package/dist/utilities/getTranslationsByContext.js.map +1 -1
- package/package.json +20 -22
- package/dist/utilities/deepMergeSimple.spec.js +0 -81
- package/dist/utilities/deepMergeSimple.spec.js.map +0 -1
- package/dist/utilities/languages.spec.js +0 -42
- 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
|
-
|
|
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;
|
|
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
|
-
|
|
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 [
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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(
|
|
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\
|
|
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.
|
|
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
|
-
"
|
|
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.
|
|
49
|
+
"date-fns": "4.4.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@types/react": "19.
|
|
53
|
-
"@types/react-dom": "19.
|
|
52
|
+
"@types/react": "19.3.0",
|
|
53
|
+
"@types/react-dom": "19.3.0",
|
|
54
54
|
"dotenv": "16.4.7",
|
|
55
|
-
"
|
|
56
|
-
"typescript": "6.0.
|
|
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"}
|