payload 3.80.0-internal.cdd7ef7 → 3.80.0

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 (265) hide show
  1. package/dist/admin/elements/Nav.d.ts +0 -13
  2. package/dist/admin/elements/Nav.d.ts.map +1 -1
  3. package/dist/admin/elements/Nav.js.map +1 -1
  4. package/dist/admin/functions/index.d.ts +38 -1
  5. package/dist/admin/functions/index.d.ts.map +1 -1
  6. package/dist/admin/functions/index.js.map +1 -1
  7. package/dist/admin/types.d.ts +4 -5
  8. package/dist/admin/types.d.ts.map +1 -1
  9. package/dist/admin/types.js.map +1 -1
  10. package/dist/admin/views/folderList.d.ts +56 -0
  11. package/dist/admin/views/folderList.d.ts.map +1 -0
  12. package/dist/admin/views/folderList.js +3 -0
  13. package/dist/admin/views/folderList.js.map +1 -0
  14. package/dist/admin/views/index.d.ts +3 -1
  15. package/dist/admin/views/index.d.ts.map +1 -1
  16. package/dist/admin/views/index.js.map +1 -1
  17. package/dist/admin/views/list.d.ts +2 -43
  18. package/dist/admin/views/list.d.ts.map +1 -1
  19. package/dist/admin/views/list.js.map +1 -1
  20. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  21. package/dist/bin/generateImportMap/iterateCollections.js +0 -1
  22. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  23. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  24. package/dist/bin/generateImportMap/iterateConfig.js +0 -7
  25. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  26. package/dist/collections/config/client.d.ts +1 -3
  27. package/dist/collections/config/client.d.ts.map +1 -1
  28. package/dist/collections/config/client.js +0 -11
  29. package/dist/collections/config/client.js.map +1 -1
  30. package/dist/collections/config/defaults.js +1 -1
  31. package/dist/collections/config/defaults.js.map +1 -1
  32. package/dist/collections/config/sanitize.d.ts.map +1 -1
  33. package/dist/collections/config/sanitize.js +7 -3
  34. package/dist/collections/config/sanitize.js.map +1 -1
  35. package/dist/collections/config/types.d.ts +7 -29
  36. package/dist/collections/config/types.d.ts.map +1 -1
  37. package/dist/collections/config/types.js.map +1 -1
  38. package/dist/collections/operations/create.js +17 -17
  39. package/dist/collections/operations/create.js.map +1 -1
  40. package/dist/collections/operations/findByID.js +3 -3
  41. package/dist/collections/operations/findByID.js.map +1 -1
  42. package/dist/collections/operations/update.js +1 -1
  43. package/dist/collections/operations/update.js.map +1 -1
  44. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  45. package/dist/collections/operations/utilities/update.js +6 -6
  46. package/dist/collections/operations/utilities/update.js.map +1 -1
  47. package/dist/config/client.d.ts.map +1 -1
  48. package/dist/config/client.js +10 -0
  49. package/dist/config/client.js.map +1 -1
  50. package/dist/config/defaults.d.ts.map +1 -1
  51. package/dist/config/defaults.js +15 -0
  52. package/dist/config/defaults.js.map +1 -1
  53. package/dist/config/sanitize.d.ts.map +1 -1
  54. package/dist/config/sanitize.js +26 -3
  55. package/dist/config/sanitize.js.map +1 -1
  56. package/dist/config/types.d.ts +12 -26
  57. package/dist/config/types.d.ts.map +1 -1
  58. package/dist/config/types.js.map +1 -1
  59. package/dist/exports/shared.d.ts +3 -2
  60. package/dist/exports/shared.d.ts.map +1 -1
  61. package/dist/exports/shared.js +2 -1
  62. package/dist/exports/shared.js.map +1 -1
  63. package/dist/fields/baseFields/slug/index.d.ts +7 -0
  64. package/dist/fields/baseFields/slug/index.d.ts.map +1 -1
  65. package/dist/fields/baseFields/slug/index.js +2 -2
  66. package/dist/fields/baseFields/slug/index.js.map +1 -1
  67. package/dist/fields/config/sanitize.d.ts.map +1 -1
  68. package/dist/fields/config/sanitize.js +0 -4
  69. package/dist/fields/config/sanitize.js.map +1 -1
  70. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
  71. package/dist/fields/config/sanitizeJoinField.js +0 -3
  72. package/dist/fields/config/sanitizeJoinField.js.map +1 -1
  73. package/dist/folders/addFolderCollection.d.ts +10 -0
  74. package/dist/folders/addFolderCollection.d.ts.map +1 -0
  75. package/dist/folders/addFolderCollection.js +26 -0
  76. package/dist/folders/addFolderCollection.js.map +1 -0
  77. package/dist/folders/addFolderFieldToCollection.d.ts +8 -0
  78. package/dist/folders/addFolderFieldToCollection.d.ts.map +1 -0
  79. package/dist/folders/addFolderFieldToCollection.js +20 -0
  80. package/dist/folders/addFolderFieldToCollection.js.map +1 -0
  81. package/dist/folders/buildFolderField.d.ts +8 -0
  82. package/dist/folders/buildFolderField.d.ts.map +1 -0
  83. package/dist/folders/buildFolderField.js +87 -0
  84. package/dist/folders/buildFolderField.js.map +1 -0
  85. package/dist/folders/constants.d.ts +3 -0
  86. package/dist/folders/constants.d.ts.map +1 -0
  87. package/dist/folders/constants.js +4 -0
  88. package/dist/folders/constants.js.map +1 -0
  89. package/dist/folders/createFolderCollection.d.ts +11 -0
  90. package/dist/folders/createFolderCollection.d.ts.map +1 -0
  91. package/dist/folders/createFolderCollection.js +115 -0
  92. package/dist/folders/createFolderCollection.js.map +1 -0
  93. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts +8 -0
  94. package/dist/folders/hooks/deleteSubfoldersAfterDelete.d.ts.map +1 -0
  95. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js +15 -0
  96. package/dist/folders/hooks/deleteSubfoldersAfterDelete.js.map +1 -0
  97. package/dist/folders/hooks/dissasociateAfterDelete.d.ts +8 -0
  98. package/dist/folders/hooks/dissasociateAfterDelete.d.ts.map +1 -0
  99. package/dist/folders/hooks/dissasociateAfterDelete.js +20 -0
  100. package/dist/folders/hooks/dissasociateAfterDelete.js.map +1 -0
  101. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts +5 -0
  102. package/dist/folders/hooks/ensureSafeCollectionsChange.d.ts.map +1 -0
  103. package/dist/folders/hooks/ensureSafeCollectionsChange.js +107 -0
  104. package/dist/folders/hooks/ensureSafeCollectionsChange.js.map +1 -0
  105. package/dist/folders/hooks/reparentChildFolder.d.ts +24 -0
  106. package/dist/folders/hooks/reparentChildFolder.d.ts.map +1 -0
  107. package/dist/folders/hooks/reparentChildFolder.js +72 -0
  108. package/dist/folders/hooks/reparentChildFolder.js.map +1 -0
  109. package/dist/folders/types.d.ts +118 -0
  110. package/dist/folders/types.d.ts.map +1 -0
  111. package/dist/folders/types.js +3 -0
  112. package/dist/folders/types.js.map +1 -0
  113. package/dist/folders/utils/buildFolderWhereConstraints.d.ts +13 -0
  114. package/dist/folders/utils/buildFolderWhereConstraints.d.ts.map +1 -0
  115. package/dist/folders/utils/buildFolderWhereConstraints.js +45 -0
  116. package/dist/folders/utils/buildFolderWhereConstraints.js.map +1 -0
  117. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts +12 -0
  118. package/dist/folders/utils/formatFolderOrDocumentItem.d.ts.map +1 -0
  119. package/dist/folders/utils/formatFolderOrDocumentItem.js +30 -0
  120. package/dist/folders/utils/formatFolderOrDocumentItem.js.map +1 -0
  121. package/dist/folders/utils/getFolderBreadcrumbs.d.ts +14 -0
  122. package/dist/folders/utils/getFolderBreadcrumbs.d.ts.map +1 -0
  123. package/dist/folders/utils/getFolderBreadcrumbs.js +45 -0
  124. package/dist/folders/utils/getFolderBreadcrumbs.js.map +1 -0
  125. package/dist/folders/utils/getFolderData.d.ts +33 -0
  126. package/dist/folders/utils/getFolderData.d.ts.map +1 -0
  127. package/dist/folders/utils/getFolderData.js +88 -0
  128. package/dist/folders/utils/getFolderData.js.map +1 -0
  129. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts +24 -0
  130. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.d.ts.map +1 -0
  131. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js +66 -0
  132. package/dist/folders/utils/getFoldersAndDocumentsFromJoin.js.map +1 -0
  133. package/dist/folders/utils/getOrphanedDocs.d.ts +15 -0
  134. package/dist/folders/utils/getOrphanedDocs.d.ts.map +1 -0
  135. package/dist/folders/utils/getOrphanedDocs.js +40 -0
  136. package/dist/folders/utils/getOrphanedDocs.js.map +1 -0
  137. package/dist/globals/config/types.d.ts +0 -4
  138. package/dist/globals/config/types.d.ts.map +1 -1
  139. package/dist/globals/config/types.js.map +1 -1
  140. package/dist/globals/operations/update.d.ts.map +1 -1
  141. package/dist/globals/operations/update.js +2 -1
  142. package/dist/globals/operations/update.js.map +1 -1
  143. package/dist/index.bundled.d.ts +288 -577
  144. package/dist/index.d.ts +9 -23
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +5 -13
  147. package/dist/index.js.map +1 -1
  148. package/dist/preferences/keys.d.ts +4 -8
  149. package/dist/preferences/keys.d.ts.map +1 -1
  150. package/dist/preferences/keys.js +4 -7
  151. package/dist/preferences/keys.js.map +1 -1
  152. package/dist/types/index.d.ts +0 -1
  153. package/dist/types/index.d.ts.map +1 -1
  154. package/dist/types/index.js.map +1 -1
  155. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  156. package/dist/utilities/addDataAndFileToRequest.js +7 -1
  157. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  158. package/dist/utilities/extractID.js +1 -1
  159. package/dist/utilities/extractID.js.map +1 -1
  160. package/dist/utilities/formatAdminURL.d.ts +2 -13
  161. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  162. package/dist/utilities/formatAdminURL.js.map +1 -1
  163. package/dist/versions/saveVersion.d.ts +1 -0
  164. package/dist/versions/saveVersion.d.ts.map +1 -1
  165. package/dist/versions/saveVersion.js +16 -66
  166. package/dist/versions/saveVersion.js.map +1 -1
  167. package/dist/versions/updateLatestVersion.d.ts +24 -0
  168. package/dist/versions/updateLatestVersion.d.ts.map +1 -0
  169. package/dist/versions/updateLatestVersion.js +64 -0
  170. package/dist/versions/updateLatestVersion.js.map +1 -0
  171. package/package.json +4 -4
  172. package/dist/admin/views/hierarchyList.d.ts +0 -9
  173. package/dist/admin/views/hierarchyList.d.ts.map +0 -1
  174. package/dist/admin/views/hierarchyList.js +0 -3
  175. package/dist/admin/views/hierarchyList.js.map +0 -1
  176. package/dist/hierarchy/addHierarchyToCollection.d.ts +0 -8
  177. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +0 -1
  178. package/dist/hierarchy/addHierarchyToCollection.js +0 -62
  179. package/dist/hierarchy/addHierarchyToCollection.js.map +0 -1
  180. package/dist/hierarchy/buildParentField.d.ts +0 -11
  181. package/dist/hierarchy/buildParentField.d.ts.map +0 -1
  182. package/dist/hierarchy/buildParentField.js +0 -42
  183. package/dist/hierarchy/buildParentField.js.map +0 -1
  184. package/dist/hierarchy/constants.d.ts +0 -15
  185. package/dist/hierarchy/constants.d.ts.map +0 -1
  186. package/dist/hierarchy/constants.js +0 -11
  187. package/dist/hierarchy/constants.js.map +0 -1
  188. package/dist/hierarchy/createFolderField.d.ts +0 -39
  189. package/dist/hierarchy/createFolderField.d.ts.map +0 -1
  190. package/dist/hierarchy/createFolderField.js +0 -54
  191. package/dist/hierarchy/createFolderField.js.map +0 -1
  192. package/dist/hierarchy/createFoldersCollection.d.ts +0 -57
  193. package/dist/hierarchy/createFoldersCollection.d.ts.map +0 -1
  194. package/dist/hierarchy/createFoldersCollection.js +0 -63
  195. package/dist/hierarchy/createFoldersCollection.js.map +0 -1
  196. package/dist/hierarchy/createTagField.d.ts +0 -44
  197. package/dist/hierarchy/createTagField.d.ts.map +0 -1
  198. package/dist/hierarchy/createTagField.js +0 -48
  199. package/dist/hierarchy/createTagField.js.map +0 -1
  200. package/dist/hierarchy/createTagsCollection.d.ts +0 -54
  201. package/dist/hierarchy/createTagsCollection.d.ts.map +0 -1
  202. package/dist/hierarchy/createTagsCollection.js +0 -56
  203. package/dist/hierarchy/createTagsCollection.js.map +0 -1
  204. package/dist/hierarchy/getInitialTreeData.d.ts +0 -27
  205. package/dist/hierarchy/getInitialTreeData.d.ts.map +0 -1
  206. package/dist/hierarchy/getInitialTreeData.js +0 -125
  207. package/dist/hierarchy/getInitialTreeData.js.map +0 -1
  208. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts +0 -14
  209. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +0 -1
  210. package/dist/hierarchy/hooks/collectionAfterDelete.js +0 -21
  211. package/dist/hierarchy/hooks/collectionAfterDelete.js.map +0 -1
  212. package/dist/hierarchy/hooks/collectionAfterRead.d.ts +0 -27
  213. package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +0 -1
  214. package/dist/hierarchy/hooks/collectionAfterRead.js +0 -64
  215. package/dist/hierarchy/hooks/collectionAfterRead.js.map +0 -1
  216. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts +0 -19
  217. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +0 -1
  218. package/dist/hierarchy/hooks/collectionBeforeChange.js +0 -90
  219. package/dist/hierarchy/hooks/collectionBeforeChange.js.map +0 -1
  220. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts +0 -15
  221. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +0 -1
  222. package/dist/hierarchy/hooks/collectionBeforeDelete.js +0 -20
  223. package/dist/hierarchy/hooks/collectionBeforeDelete.js.map +0 -1
  224. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts +0 -8
  225. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +0 -1
  226. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js +0 -108
  227. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.js.map +0 -1
  228. package/dist/hierarchy/injectHierarchyButton.d.ts +0 -14
  229. package/dist/hierarchy/injectHierarchyButton.d.ts.map +0 -1
  230. package/dist/hierarchy/injectHierarchyButton.js +0 -37
  231. package/dist/hierarchy/injectHierarchyButton.js.map +0 -1
  232. package/dist/hierarchy/resolveHierarchyCollections.d.ts +0 -23
  233. package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +0 -1
  234. package/dist/hierarchy/resolveHierarchyCollections.js +0 -312
  235. package/dist/hierarchy/resolveHierarchyCollections.js.map +0 -1
  236. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts +0 -14
  237. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +0 -1
  238. package/dist/hierarchy/sanitizeHierarchyCollection.js +0 -112
  239. package/dist/hierarchy/sanitizeHierarchyCollection.js.map +0 -1
  240. package/dist/hierarchy/types.d.ts +0 -137
  241. package/dist/hierarchy/types.d.ts.map +0 -1
  242. package/dist/hierarchy/types.js +0 -6
  243. package/dist/hierarchy/types.js.map +0 -1
  244. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts +0 -71
  245. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.d.ts.map +0 -1
  246. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js +0 -65
  247. package/dist/hierarchy/utils/buildLocalizedHierarchyPaths.js.map +0 -1
  248. package/dist/hierarchy/utils/computePaths.d.ts +0 -31
  249. package/dist/hierarchy/utils/computePaths.d.ts.map +0 -1
  250. package/dist/hierarchy/utils/computePaths.js +0 -371
  251. package/dist/hierarchy/utils/computePaths.js.map +0 -1
  252. package/dist/hierarchy/utils/findUseAsTitle.d.ts +0 -6
  253. package/dist/hierarchy/utils/findUseAsTitle.d.ts.map +0 -1
  254. package/dist/hierarchy/utils/findUseAsTitle.js +0 -72
  255. package/dist/hierarchy/utils/findUseAsTitle.js.map +0 -1
  256. package/dist/hierarchy/utils/getAncestors.d.ts +0 -34
  257. package/dist/hierarchy/utils/getAncestors.d.ts.map +0 -1
  258. package/dist/hierarchy/utils/getAncestors.js +0 -94
  259. package/dist/hierarchy/utils/getAncestors.js.map +0 -1
  260. package/dist/hierarchy/utils/getLocalizedValue.d.ts +0 -30
  261. package/dist/hierarchy/utils/getLocalizedValue.d.ts.map +0 -1
  262. package/dist/hierarchy/utils/getLocalizedValue.js +0 -46
  263. package/dist/hierarchy/utils/getLocalizedValue.js.map +0 -1
  264. package/dist/hierarchy/utils/getLocalizedValue.spec.js +0 -250
  265. package/dist/hierarchy/utils/getLocalizedValue.spec.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/hierarchy/utils/getAncestors.ts"],"sourcesContent":["import type { CollectionSlug } from '../../index.js'\nimport type { Document, PayloadRequest } from '../../types/index.js'\n\nimport { findUseAsTitleField } from './findUseAsTitle.js'\nimport { getLocalizedValue } from './getLocalizedValue.js'\n\nexport type Ancestor = {\n id: number | string\n title: string\n}\n\ntype GetAncestorsArgs = {\n /**\n * The collection slug\n */\n collectionSlug: CollectionSlug\n /**\n * The document ID to get ancestors for\n */\n id: number | string\n /**\n * Include the document itself in the returned ancestors (as last item)\n * @default true\n */\n includeSelf?: boolean\n /**\n * The request object\n */\n req: PayloadRequest\n}\n\n/**\n * Get ancestor chain for a hierarchical document.\n * Returns array of {id, title} from root to the document.\n *\n * Uses request context caching for efficiency when called multiple times.\n */\nexport async function getAncestors({\n id,\n collectionSlug,\n includeSelf = true,\n req,\n}: GetAncestorsArgs): Promise<Ancestor[]> {\n const { payload, user } = req\n\n const collectionConfig = payload.collections[collectionSlug]?.config\n if (!collectionConfig) {\n throw new Error(`Collection \"${collectionSlug}\" not found`)\n }\n\n const hierarchyConfig = collectionConfig.hierarchy\n if (!hierarchyConfig) {\n throw new Error(`Collection \"${collectionSlug}\" does not have hierarchy enabled`)\n }\n\n const parentFieldName = hierarchyConfig.parentFieldName\n const { localized: isTitleLocalized, titleFieldName } = findUseAsTitleField(collectionConfig)\n\n // Initialize cache if needed\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context = req.context as any\n if (!context.hierarchyAncestorCache) {\n context.hierarchyAncestorCache = {}\n }\n if (!context.hierarchyAncestorCache[collectionSlug]) {\n context.hierarchyAncestorCache[collectionSlug] = {}\n }\n\n const cache = context.hierarchyAncestorCache[collectionSlug]\n const ancestors: Ancestor[] = []\n\n let currentId: null | number | string = id\n\n while (currentId !== null) {\n const cacheKey: string = `ancestors_${currentId}`\n\n // Check cache first\n let doc: Document = cache[cacheKey]\n\n if (!doc) {\n // Cache miss - fetch document\n try {\n doc = await payload.findByID({\n id: currentId,\n collection: collectionSlug,\n depth: 0,\n overrideAccess: false,\n req,\n select: {\n [parentFieldName]: true,\n [titleFieldName]: true,\n },\n user,\n })\n cache[cacheKey] = doc\n } catch {\n break\n }\n }\n\n if (!doc) {\n break\n }\n\n // Extract title\n const rawTitle: unknown = doc[titleFieldName]\n let title: string\n\n if (isTitleLocalized && rawTitle && typeof rawTitle === 'object' && req.locale) {\n const localizedValue = getLocalizedValue({\n fallbackLocale: req.fallbackLocale,\n fieldType: 'text',\n locale: req.locale,\n value: rawTitle,\n })\n title = localizedValue || String(doc.id || currentId)\n } else if (isTitleLocalized && rawTitle && typeof rawTitle === 'object') {\n // No locale set - use first available value\n const values = Object.values(rawTitle as Record<string, string>)\n title = values[0] || String(doc.id || currentId)\n } else {\n title = String(rawTitle || doc.id || currentId)\n }\n\n ancestors.unshift({ id: currentId, title })\n\n // Get parent ID for next iteration\n const parentValue: unknown = doc[parentFieldName]\n if (!parentValue) {\n break\n }\n\n currentId =\n typeof parentValue === 'object' && parentValue !== null && 'id' in parentValue\n ? (parentValue as { id: number | string }).id\n : (parentValue as number | string)\n }\n\n if (!includeSelf && ancestors.length > 0) {\n ancestors.pop()\n }\n\n return ancestors\n}\n"],"names":["findUseAsTitleField","getLocalizedValue","getAncestors","id","collectionSlug","includeSelf","req","payload","user","collectionConfig","collections","config","Error","hierarchyConfig","hierarchy","parentFieldName","localized","isTitleLocalized","titleFieldName","context","hierarchyAncestorCache","cache","ancestors","currentId","cacheKey","doc","findByID","collection","depth","overrideAccess","select","rawTitle","title","locale","localizedValue","fallbackLocale","fieldType","value","String","values","Object","unshift","parentValue","length","pop"],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import type { TypedFallbackLocale } from '../../index.js';
2
- type GetLocalizedValueArgs = {
3
- /**
4
- * Fallback locale(s) to use if the requested locale has no value
5
- */
6
- fallbackLocale?: TypedFallbackLocale;
7
- /**
8
- * The field type - affects empty value handling for text/textarea fields
9
- */
10
- fieldType?: 'text' | 'textarea' | string;
11
- /**
12
- * The requested locale
13
- */
14
- locale: string;
15
- /**
16
- * The localized value object (e.g., { en: "Home", es: "", de: "Startseite" })
17
- * Can also be a non-localized value (string/number), which is returned as-is
18
- */
19
- value: any | Record<string, any>;
20
- };
21
- /**
22
- * Extracts a value from a localized field object, with fallback locale support.
23
- * Mirrors Payload's internal afterRead behavior for localized fields.
24
- *
25
- * @param args - Configuration for value extraction
26
- * @returns The field value for the requested locale, or fallback if not available
27
- */
28
- export declare function getLocalizedValue({ fallbackLocale, fieldType, locale, value, }: GetLocalizedValueArgs): any;
29
- export {};
30
- //# sourceMappingURL=getLocalizedValue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getLocalizedValue.d.ts","sourceRoot":"","sources":["../../../src/hierarchy/utils/getLocalizedValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,KAAK,qBAAqB,GAAG;IAC3B;;OAEG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAA;IACxC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACjC,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,SAAS,EACT,MAAM,EACN,KAAK,GACN,EAAE,qBAAqB,GAAG,GAAG,CAqD7B"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Extracts a value from a localized field object, with fallback locale support.
3
- * Mirrors Payload's internal afterRead behavior for localized fields.
4
- *
5
- * @param args - Configuration for value extraction
6
- * @returns The field value for the requested locale, or fallback if not available
7
- */ export function getLocalizedValue({ fallbackLocale, fieldType, locale, value }) {
8
- // If value is not an object (non-localized field), return it as-is
9
- if (!value || typeof value !== 'object' || Array.isArray(value)) {
10
- return value;
11
- }
12
- // Get the requested locale's value
13
- const requestedValue = value[locale];
14
- // Determine if we should use fallback
15
- const isNullOrUndefined = typeof requestedValue === 'undefined' || requestedValue === null;
16
- // For text/textarea fields, empty string also triggers fallback
17
- const shouldUseFallback = fieldType === 'text' || fieldType === 'textarea' ? requestedValue === '' || isNullOrUndefined : isNullOrUndefined;
18
- if (!shouldUseFallback) {
19
- return requestedValue;
20
- }
21
- // No fallback configured, return the (potentially empty) requested value
22
- if (!fallbackLocale || fallbackLocale === 'null' || fallbackLocale === 'none' || fallbackLocale === 'false') {
23
- return requestedValue;
24
- }
25
- // Handle array of fallback locales
26
- if (Array.isArray(fallbackLocale)) {
27
- for (const fallbackLoc of fallbackLocale){
28
- const fallbackValue = value[fallbackLoc];
29
- // Check if fallback value is non-empty
30
- if (fallbackValue !== undefined && fallbackValue !== null && fallbackValue !== '') {
31
- return fallbackValue;
32
- }
33
- }
34
- // No fallback had a value, return requested value
35
- return requestedValue;
36
- }
37
- // Single fallback locale
38
- const fallbackValue = value[fallbackLocale];
39
- if (fallbackValue !== undefined && fallbackValue !== null && fallbackValue !== '') {
40
- return fallbackValue;
41
- }
42
- // Fallback didn't have a value either, return requested value
43
- return requestedValue;
44
- }
45
-
46
- //# sourceMappingURL=getLocalizedValue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/hierarchy/utils/getLocalizedValue.ts"],"sourcesContent":["import type { TypedFallbackLocale } from '../../index.js'\n\ntype GetLocalizedValueArgs = {\n /**\n * Fallback locale(s) to use if the requested locale has no value\n */\n fallbackLocale?: TypedFallbackLocale\n /**\n * The field type - affects empty value handling for text/textarea fields\n */\n fieldType?: 'text' | 'textarea' | string\n /**\n * The requested locale\n */\n locale: string\n /**\n * The localized value object (e.g., { en: \"Home\", es: \"\", de: \"Startseite\" })\n * Can also be a non-localized value (string/number), which is returned as-is\n */\n value: any | Record<string, any>\n}\n\n/**\n * Extracts a value from a localized field object, with fallback locale support.\n * Mirrors Payload's internal afterRead behavior for localized fields.\n *\n * @param args - Configuration for value extraction\n * @returns The field value for the requested locale, or fallback if not available\n */\nexport function getLocalizedValue({\n fallbackLocale,\n fieldType,\n locale,\n value,\n}: GetLocalizedValueArgs): any {\n // If value is not an object (non-localized field), return it as-is\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return value\n }\n\n // Get the requested locale's value\n const requestedValue = value[locale]\n\n // Determine if we should use fallback\n const isNullOrUndefined = typeof requestedValue === 'undefined' || requestedValue === null\n\n // For text/textarea fields, empty string also triggers fallback\n const shouldUseFallback =\n fieldType === 'text' || fieldType === 'textarea'\n ? requestedValue === '' || isNullOrUndefined\n : isNullOrUndefined\n\n if (!shouldUseFallback) {\n return requestedValue\n }\n\n // No fallback configured, return the (potentially empty) requested value\n if (\n !fallbackLocale ||\n fallbackLocale === 'null' ||\n fallbackLocale === 'none' ||\n fallbackLocale === 'false'\n ) {\n return requestedValue\n }\n\n // Handle array of fallback locales\n if (Array.isArray(fallbackLocale)) {\n for (const fallbackLoc of fallbackLocale) {\n const fallbackValue = value[fallbackLoc]\n // Check if fallback value is non-empty\n if (fallbackValue !== undefined && fallbackValue !== null && fallbackValue !== '') {\n return fallbackValue\n }\n }\n // No fallback had a value, return requested value\n return requestedValue\n }\n\n // Single fallback locale\n const fallbackValue = value[fallbackLocale]\n if (fallbackValue !== undefined && fallbackValue !== null && fallbackValue !== '') {\n return fallbackValue\n }\n\n // Fallback didn't have a value either, return requested value\n return requestedValue\n}\n"],"names":["getLocalizedValue","fallbackLocale","fieldType","locale","value","Array","isArray","requestedValue","isNullOrUndefined","shouldUseFallback","fallbackLoc","fallbackValue","undefined"],"mappings":"AAsBA;;;;;;CAMC,GACD,OAAO,SAASA,kBAAkB,EAChCC,cAAc,EACdC,SAAS,EACTC,MAAM,EACNC,KAAK,EACiB;IACtB,mEAAmE;IACnE,IAAI,CAACA,SAAS,OAAOA,UAAU,YAAYC,MAAMC,OAAO,CAACF,QAAQ;QAC/D,OAAOA;IACT;IAEA,mCAAmC;IACnC,MAAMG,iBAAiBH,KAAK,CAACD,OAAO;IAEpC,sCAAsC;IACtC,MAAMK,oBAAoB,OAAOD,mBAAmB,eAAeA,mBAAmB;IAEtF,gEAAgE;IAChE,MAAME,oBACJP,cAAc,UAAUA,cAAc,aAClCK,mBAAmB,MAAMC,oBACzBA;IAEN,IAAI,CAACC,mBAAmB;QACtB,OAAOF;IACT;IAEA,yEAAyE;IACzE,IACE,CAACN,kBACDA,mBAAmB,UACnBA,mBAAmB,UACnBA,mBAAmB,SACnB;QACA,OAAOM;IACT;IAEA,mCAAmC;IACnC,IAAIF,MAAMC,OAAO,CAACL,iBAAiB;QACjC,KAAK,MAAMS,eAAeT,eAAgB;YACxC,MAAMU,gBAAgBP,KAAK,CAACM,YAAY;YACxC,uCAAuC;YACvC,IAAIC,kBAAkBC,aAAaD,kBAAkB,QAAQA,kBAAkB,IAAI;gBACjF,OAAOA;YACT;QACF;QACA,kDAAkD;QAClD,OAAOJ;IACT;IAEA,yBAAyB;IACzB,MAAMI,gBAAgBP,KAAK,CAACH,eAAe;IAC3C,IAAIU,kBAAkBC,aAAaD,kBAAkB,QAAQA,kBAAkB,IAAI;QACjF,OAAOA;IACT;IAEA,8DAA8D;IAC9D,OAAOJ;AACT"}
@@ -1,250 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { getLocalizedValue } from './getLocalizedValue.js';
3
- describe('getLocalizedValue', ()=>{
4
- describe('non-localized values', ()=>{
5
- it('should return non-object values as-is', ()=>{
6
- expect(getLocalizedValue({
7
- locale: 'en',
8
- value: 'Hello'
9
- })).toBe('Hello');
10
- expect(getLocalizedValue({
11
- locale: 'en',
12
- value: 123
13
- })).toBe(123);
14
- expect(getLocalizedValue({
15
- locale: 'en',
16
- value: null
17
- })).toBe(null);
18
- });
19
- it('should return array values as-is', ()=>{
20
- const arr = [
21
- 1,
22
- 2,
23
- 3
24
- ];
25
- expect(getLocalizedValue({
26
- locale: 'en',
27
- value: arr
28
- })).toBe(arr);
29
- });
30
- });
31
- describe('localized values without fallback', ()=>{
32
- it('should return the requested locale value', ()=>{
33
- const value = {
34
- en: 'Home',
35
- es: 'Inicio',
36
- de: 'Startseite'
37
- };
38
- expect(getLocalizedValue({
39
- locale: 'en',
40
- value
41
- })).toBe('Home');
42
- expect(getLocalizedValue({
43
- locale: 'es',
44
- value
45
- })).toBe('Inicio');
46
- expect(getLocalizedValue({
47
- locale: 'de',
48
- value
49
- })).toBe('Startseite');
50
- });
51
- it('should return undefined for missing locale', ()=>{
52
- const value = {
53
- en: 'Home',
54
- es: 'Inicio'
55
- };
56
- expect(getLocalizedValue({
57
- locale: 'fr',
58
- value
59
- })).toBeUndefined();
60
- });
61
- it('should return empty string for text fields', ()=>{
62
- const value = {
63
- en: 'Home',
64
- es: ''
65
- };
66
- expect(getLocalizedValue({
67
- locale: 'es',
68
- value
69
- })).toBe('');
70
- });
71
- });
72
- describe('localized values with single fallback', ()=>{
73
- it('should use fallback when requested locale is undefined', ()=>{
74
- const value = {
75
- en: 'Home',
76
- es: undefined,
77
- de: 'Startseite'
78
- };
79
- expect(getLocalizedValue({
80
- fallbackLocale: 'en',
81
- locale: 'es',
82
- value
83
- })).toBe('Home');
84
- });
85
- it('should use fallback when requested locale is null', ()=>{
86
- const value = {
87
- en: 'Home',
88
- es: null,
89
- de: 'Startseite'
90
- };
91
- expect(getLocalizedValue({
92
- fallbackLocale: 'en',
93
- locale: 'es',
94
- value
95
- })).toBe('Home');
96
- });
97
- it('should use fallback for empty string in text fields', ()=>{
98
- const value = {
99
- en: 'Home',
100
- es: '',
101
- de: 'Startseite'
102
- };
103
- expect(getLocalizedValue({
104
- fallbackLocale: 'en',
105
- fieldType: 'text',
106
- locale: 'es',
107
- value
108
- })).toBe('Home');
109
- });
110
- it('should NOT use fallback for empty string in non-text fields', ()=>{
111
- const value = {
112
- en: 'Home',
113
- es: '',
114
- de: 'Startseite'
115
- };
116
- expect(getLocalizedValue({
117
- fallbackLocale: 'en',
118
- fieldType: 'select',
119
- locale: 'es',
120
- value
121
- })).toBe('');
122
- });
123
- it('should return requested value when fallback is disabled', ()=>{
124
- const value = {
125
- en: 'Home',
126
- es: undefined
127
- };
128
- expect(getLocalizedValue({
129
- fallbackLocale: false,
130
- locale: 'es',
131
- value
132
- })).toBeUndefined();
133
- expect(getLocalizedValue({
134
- fallbackLocale: 'null',
135
- locale: 'es',
136
- value
137
- })).toBeUndefined();
138
- });
139
- });
140
- describe('localized values with array fallback', ()=>{
141
- it('should use first available fallback', ()=>{
142
- const value = {
143
- en: 'Home',
144
- es: undefined,
145
- de: 'Startseite',
146
- fr: 'Accueil'
147
- };
148
- expect(getLocalizedValue({
149
- fallbackLocale: [
150
- 'es',
151
- 'de',
152
- 'fr'
153
- ],
154
- locale: 'pt',
155
- value
156
- })).toBe('Startseite');
157
- });
158
- it('should skip empty fallback values for text fields', ()=>{
159
- const value = {
160
- en: 'Home',
161
- es: '',
162
- de: 'Startseite',
163
- fr: 'Accueil'
164
- };
165
- expect(getLocalizedValue({
166
- fallbackLocale: [
167
- 'es',
168
- 'de',
169
- 'fr'
170
- ],
171
- fieldType: 'text',
172
- locale: 'pt',
173
- value
174
- })).toBe('Startseite');
175
- });
176
- it('should return requested value when no fallback has value', ()=>{
177
- const value = {
178
- en: 'Home',
179
- es: undefined,
180
- de: undefined,
181
- fr: undefined
182
- };
183
- expect(getLocalizedValue({
184
- fallbackLocale: [
185
- 'es',
186
- 'de',
187
- 'fr'
188
- ],
189
- locale: 'pt',
190
- value
191
- })).toBeUndefined();
192
- });
193
- it('should skip null and undefined fallback values', ()=>{
194
- const value = {
195
- en: 'Home',
196
- es: null,
197
- de: undefined,
198
- fr: 'Accueil'
199
- };
200
- expect(getLocalizedValue({
201
- fallbackLocale: [
202
- 'es',
203
- 'de',
204
- 'fr'
205
- ],
206
- locale: 'pt',
207
- value
208
- })).toBe('Accueil');
209
- });
210
- });
211
- describe('edge cases', ()=>{
212
- it('should handle fallback that also has no value', ()=>{
213
- const value = {
214
- en: undefined,
215
- es: 'Inicio'
216
- };
217
- expect(getLocalizedValue({
218
- fallbackLocale: 'en',
219
- locale: 'fr',
220
- value
221
- })).toBeUndefined();
222
- });
223
- it('should not fallback when value exists and is 0', ()=>{
224
- const value = {
225
- en: 10,
226
- es: 0
227
- };
228
- expect(getLocalizedValue({
229
- fallbackLocale: 'en',
230
- fieldType: 'number',
231
- locale: 'es',
232
- value
233
- })).toBe(0);
234
- });
235
- it('should not fallback when value exists and is false', ()=>{
236
- const value = {
237
- en: true,
238
- es: false
239
- };
240
- expect(getLocalizedValue({
241
- fallbackLocale: 'en',
242
- fieldType: 'checkbox',
243
- locale: 'es',
244
- value
245
- })).toBe(false);
246
- });
247
- });
248
- });
249
-
250
- //# sourceMappingURL=getLocalizedValue.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/hierarchy/utils/getLocalizedValue.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { getLocalizedValue } from './getLocalizedValue.js'\n\ndescribe('getLocalizedValue', () => {\n describe('non-localized values', () => {\n it('should return non-object values as-is', () => {\n expect(getLocalizedValue({ locale: 'en', value: 'Hello' })).toBe('Hello')\n expect(getLocalizedValue({ locale: 'en', value: 123 })).toBe(123)\n expect(getLocalizedValue({ locale: 'en', value: null })).toBe(null)\n })\n\n it('should return array values as-is', () => {\n const arr = [1, 2, 3]\n\n expect(getLocalizedValue({ locale: 'en', value: arr })).toBe(arr)\n })\n })\n\n describe('localized values without fallback', () => {\n it('should return the requested locale value', () => {\n const value = { en: 'Home', es: 'Inicio', de: 'Startseite' }\n\n expect(getLocalizedValue({ locale: 'en', value })).toBe('Home')\n expect(getLocalizedValue({ locale: 'es', value })).toBe('Inicio')\n expect(getLocalizedValue({ locale: 'de', value })).toBe('Startseite')\n })\n\n it('should return undefined for missing locale', () => {\n const value = { en: 'Home', es: 'Inicio' }\n\n expect(getLocalizedValue({ locale: 'fr', value })).toBeUndefined()\n })\n\n it('should return empty string for text fields', () => {\n const value = { en: 'Home', es: '' }\n\n expect(getLocalizedValue({ locale: 'es', value })).toBe('')\n })\n })\n\n describe('localized values with single fallback', () => {\n it('should use fallback when requested locale is undefined', () => {\n const value = { en: 'Home', es: undefined, de: 'Startseite' }\n\n expect(\n getLocalizedValue({\n fallbackLocale: 'en',\n locale: 'es',\n value,\n }),\n ).toBe('Home')\n })\n\n it('should use fallback when requested locale is null', () => {\n const value = { en: 'Home', es: null, de: 'Startseite' }\n\n expect(\n getLocalizedValue({\n fallbackLocale: 'en',\n locale: 'es',\n value,\n }),\n ).toBe('Home')\n })\n\n it('should use fallback for empty string in text fields', () => {\n const value = { en: 'Home', es: '', de: 'Startseite' }\n\n expect(\n getLocalizedValue({\n fallbackLocale: 'en',\n fieldType: 'text',\n locale: 'es',\n value,\n }),\n ).toBe('Home')\n })\n\n it('should NOT use fallback for empty string in non-text fields', () => {\n const value = { en: 'Home', es: '', de: 'Startseite' }\n\n expect(\n getLocalizedValue({\n fallbackLocale: 'en',\n fieldType: 'select',\n locale: 'es',\n value,\n }),\n ).toBe('')\n })\n\n it('should return requested value when fallback is disabled', () => {\n const value = { en: 'Home', es: undefined }\n\n expect(\n getLocalizedValue({\n fallbackLocale: false,\n locale: 'es',\n value,\n }),\n ).toBeUndefined()\n\n expect(\n getLocalizedValue({\n fallbackLocale: 'null',\n locale: 'es',\n value,\n }),\n ).toBeUndefined()\n })\n })\n\n describe('localized values with array fallback', () => {\n it('should use first available fallback', () => {\n const value = { en: 'Home', es: undefined, de: 'Startseite', fr: 'Accueil' }\n\n expect(\n getLocalizedValue({\n fallbackLocale: ['es', 'de', 'fr'],\n locale: 'pt',\n value,\n }),\n ).toBe('Startseite')\n })\n\n it('should skip empty fallback values for text fields', () => {\n const value = { en: 'Home', es: '', de: 'Startseite', fr: 'Accueil' }\n\n expect(\n getLocalizedValue({\n fallbackLocale: ['es', 'de', 'fr'],\n fieldType: 'text',\n locale: 'pt',\n value,\n }),\n ).toBe('Startseite')\n })\n\n it('should return requested value when no fallback has value', () => {\n const value = { en: 'Home', es: undefined, de: undefined, fr: undefined }\n\n expect(\n getLocalizedValue({\n fallbackLocale: ['es', 'de', 'fr'],\n locale: 'pt',\n value,\n }),\n ).toBeUndefined()\n })\n\n it('should skip null and undefined fallback values', () => {\n const value = { en: 'Home', es: null, de: undefined, fr: 'Accueil' }\n\n expect(\n getLocalizedValue({\n fallbackLocale: ['es', 'de', 'fr'],\n locale: 'pt',\n value,\n }),\n ).toBe('Accueil')\n })\n })\n\n describe('edge cases', () => {\n it('should handle fallback that also has no value', () => {\n const value = { en: undefined, es: 'Inicio' }\n\n expect(\n getLocalizedValue({\n fallbackLocale: 'en',\n locale: 'fr',\n value,\n }),\n ).toBeUndefined()\n })\n\n it('should not fallback when value exists and is 0', () => {\n const value = { en: 10, es: 0 }\n\n expect(\n getLocalizedValue({\n fallbackLocale: 'en',\n fieldType: 'number',\n locale: 'es',\n value,\n }),\n ).toBe(0)\n })\n\n it('should not fallback when value exists and is false', () => {\n const value = { en: true, es: false }\n\n expect(\n getLocalizedValue({\n fallbackLocale: 'en',\n fieldType: 'checkbox',\n locale: 'es',\n value,\n }),\n ).toBe(false)\n })\n })\n})\n"],"names":["describe","expect","it","getLocalizedValue","locale","value","toBe","arr","en","es","de","toBeUndefined","undefined","fallbackLocale","fieldType","fr"],"mappings":"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"}