@webiny/api-headless-cms 6.1.0 → 6.2.0-beta.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 (577) hide show
  1. package/context.d.ts +2 -5
  2. package/context.js +16 -7
  3. package/context.js.map +1 -1
  4. package/crud/AccessControl/AccessControl.d.ts +18 -28
  5. package/crud/AccessControl/AccessControl.js.map +1 -1
  6. package/crud/contentEntry/entryDataFactories/createEntryData.js +17 -6
  7. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
  8. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +9 -3
  9. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
  10. package/crud/contentEntry/entryDataValidation.d.ts +1 -1
  11. package/crud/contentEntry/entryDataValidation.js +16 -13
  12. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  13. package/crud/contentEntry/searchableFields.d.ts +2 -3
  14. package/crud/contentEntry/searchableFields.js +10 -18
  15. package/crud/contentEntry/searchableFields.js.map +1 -1
  16. package/crud/contentModel.crud.js +2 -1
  17. package/crud/contentModel.crud.js.map +1 -1
  18. package/domain/contentModel/validation/modelFields.js +15 -20
  19. package/domain/contentModel/validation/modelFields.js.map +1 -1
  20. package/exports/api/cms/graphql.d.ts +1 -0
  21. package/exports/api/cms/graphql.js +3 -0
  22. package/exports/api/cms/graphql.js.map +1 -0
  23. package/exports/api/cms/storage.d.ts +3 -0
  24. package/exports/api/cms/storage.js +5 -0
  25. package/exports/api/cms/storage.js.map +1 -0
  26. package/exports/api/cms/validation.d.ts +4 -0
  27. package/exports/api/cms/validation.js +6 -0
  28. package/exports/api/cms/validation.js.map +1 -0
  29. package/features/contentEntry/CreateEntry/CreateEntryUseCase.d.ts +3 -3
  30. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +3 -3
  31. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
  32. package/features/contentEntry/CreateEntry/events.d.ts +2 -2
  33. package/features/contentEntry/CreateEntry/events.js +1 -1
  34. package/features/contentEntry/CreateEntry/events.js.map +1 -1
  35. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.d.ts +3 -3
  36. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js +3 -3
  37. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
  38. package/features/contentEntry/CreateEntryRevisionFrom/events.d.ts +2 -2
  39. package/features/contentEntry/CreateEntryRevisionFrom/events.js +1 -1
  40. package/features/contentEntry/CreateEntryRevisionFrom/events.js.map +1 -1
  41. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.d.ts +1 -1
  42. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js +1 -1
  43. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js.map +1 -1
  44. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.d.ts +2 -2
  45. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js +2 -2
  46. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js.map +1 -1
  47. package/features/contentEntry/DeleteEntry/events.d.ts +2 -2
  48. package/features/contentEntry/DeleteEntry/events.js +1 -1
  49. package/features/contentEntry/DeleteEntry/events.js.map +1 -1
  50. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.d.ts +1 -1
  51. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js +1 -1
  52. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js.map +1 -1
  53. package/features/contentEntry/DeleteEntryRevision/events.d.ts +2 -2
  54. package/features/contentEntry/DeleteEntryRevision/events.js +1 -1
  55. package/features/contentEntry/DeleteEntryRevision/events.js.map +1 -1
  56. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.d.ts +1 -1
  57. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js +1 -1
  58. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js.map +1 -1
  59. package/features/contentEntry/DeleteMultipleEntries/events.d.ts +2 -2
  60. package/features/contentEntry/DeleteMultipleEntries/events.js +1 -1
  61. package/features/contentEntry/DeleteMultipleEntries/events.js.map +1 -1
  62. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +6 -11
  63. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
  64. package/features/contentEntry/ListEntries/ListEntriesUseCase.d.ts +1 -1
  65. package/features/contentEntry/ListEntries/ListEntriesUseCase.js +1 -1
  66. package/features/contentEntry/ListEntries/ListEntriesUseCase.js.map +1 -1
  67. package/features/contentEntry/MoveEntry/MoveEntryUseCase.d.ts +1 -1
  68. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js +1 -1
  69. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js.map +1 -1
  70. package/features/contentEntry/MoveEntry/events.d.ts +2 -2
  71. package/features/contentEntry/MoveEntry/events.js +1 -1
  72. package/features/contentEntry/MoveEntry/events.js.map +1 -1
  73. package/features/contentEntry/PublishEntry/PublishEntryUseCase.d.ts +2 -2
  74. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js +2 -2
  75. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
  76. package/features/contentEntry/PublishEntry/events.d.ts +2 -2
  77. package/features/contentEntry/PublishEntry/events.js +1 -1
  78. package/features/contentEntry/PublishEntry/events.js.map +1 -1
  79. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.d.ts +2 -2
  80. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js +2 -2
  81. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js.map +1 -1
  82. package/features/contentEntry/RepublishEntry/events.d.ts +2 -2
  83. package/features/contentEntry/RepublishEntry/events.js +1 -1
  84. package/features/contentEntry/RepublishEntry/events.js.map +1 -1
  85. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.d.ts +2 -2
  86. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js +2 -2
  87. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js.map +1 -1
  88. package/features/contentEntry/RestoreEntryFromBin/events.d.ts +2 -2
  89. package/features/contentEntry/RestoreEntryFromBin/events.js +1 -1
  90. package/features/contentEntry/RestoreEntryFromBin/events.js.map +1 -1
  91. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.d.ts +2 -2
  92. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js +2 -2
  93. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js.map +1 -1
  94. package/features/contentEntry/UnpublishEntry/events.d.ts +2 -2
  95. package/features/contentEntry/UnpublishEntry/events.js +1 -1
  96. package/features/contentEntry/UnpublishEntry/events.js.map +1 -1
  97. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.d.ts +3 -3
  98. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js +3 -3
  99. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js.map +1 -1
  100. package/features/contentEntry/UpdateEntry/events.d.ts +2 -2
  101. package/features/contentEntry/UpdateEntry/events.js +1 -1
  102. package/features/contentEntry/UpdateEntry/events.js.map +1 -1
  103. package/features/contentModel/CreateModel/CreateModelRepository.d.ts +1 -1
  104. package/features/contentModel/CreateModel/CreateModelRepository.js +1 -1
  105. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  106. package/features/contentModel/CreateModel/CreateModelUseCase.d.ts +3 -3
  107. package/features/contentModel/CreateModel/CreateModelUseCase.js +3 -3
  108. package/features/contentModel/CreateModel/CreateModelUseCase.js.map +1 -1
  109. package/features/contentModel/CreateModel/events.d.ts +2 -2
  110. package/features/contentModel/CreateModel/events.js +1 -1
  111. package/features/contentModel/CreateModel/events.js.map +1 -1
  112. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.d.ts +1 -1
  113. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +1 -1
  114. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  115. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.d.ts +3 -3
  116. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js +4 -3
  117. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js.map +1 -1
  118. package/features/contentModel/CreateModelFrom/events.d.ts +2 -2
  119. package/features/contentModel/CreateModelFrom/events.js +1 -1
  120. package/features/contentModel/CreateModelFrom/events.js.map +1 -1
  121. package/features/contentModel/DeleteModel/DeleteModelUseCase.d.ts +1 -1
  122. package/features/contentModel/DeleteModel/DeleteModelUseCase.js +1 -1
  123. package/features/contentModel/DeleteModel/DeleteModelUseCase.js.map +1 -1
  124. package/features/contentModel/DeleteModel/events.d.ts +2 -2
  125. package/features/contentModel/DeleteModel/events.js +1 -1
  126. package/features/contentModel/DeleteModel/events.js.map +1 -1
  127. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.d.ts +3 -3
  128. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.js +6 -6
  129. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.js.map +1 -1
  130. package/features/contentModel/UpdateModel/UpdateModelUseCase.d.ts +2 -2
  131. package/features/contentModel/UpdateModel/UpdateModelUseCase.js +2 -2
  132. package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
  133. package/features/contentModel/UpdateModel/events.d.ts +2 -2
  134. package/features/contentModel/UpdateModel/events.js +1 -1
  135. package/features/contentModel/UpdateModel/events.js.map +1 -1
  136. package/features/contentModel/shared/ModelsFetcher.d.ts +1 -1
  137. package/features/contentModel/shared/ModelsFetcher.js +1 -1
  138. package/features/contentModel/shared/ModelsFetcher.js.map +1 -1
  139. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.d.ts +1 -1
  140. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js +1 -1
  141. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js.map +1 -1
  142. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.d.ts +3 -3
  143. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js +3 -3
  144. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js.map +1 -1
  145. package/features/contentModelGroup/CreateGroup/events.d.ts +2 -2
  146. package/features/contentModelGroup/CreateGroup/events.js +1 -1
  147. package/features/contentModelGroup/CreateGroup/events.js.map +1 -1
  148. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.d.ts +1 -1
  149. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js +1 -1
  150. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js.map +1 -1
  151. package/features/contentModelGroup/DeleteGroup/events.d.ts +2 -2
  152. package/features/contentModelGroup/DeleteGroup/events.js +1 -1
  153. package/features/contentModelGroup/DeleteGroup/events.js.map +1 -1
  154. package/features/contentModelGroup/GetGroup/GetGroupRepository.d.ts +2 -2
  155. package/features/contentModelGroup/GetGroup/GetGroupRepository.js +2 -2
  156. package/features/contentModelGroup/GetGroup/GetGroupRepository.js.map +1 -1
  157. package/features/contentModelGroup/ListGroups/ListGroupsRepository.d.ts +2 -2
  158. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js +2 -2
  159. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js.map +1 -1
  160. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.d.ts +2 -2
  161. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js +2 -2
  162. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js.map +1 -1
  163. package/features/contentModelGroup/UpdateGroup/events.d.ts +2 -2
  164. package/features/contentModelGroup/UpdateGroup/events.js +1 -1
  165. package/features/contentModelGroup/UpdateGroup/events.js.map +1 -1
  166. package/features/contentModelGroup/shared/PluginGroupsProvider.d.ts +2 -2
  167. package/features/contentModelGroup/shared/PluginGroupsProvider.js +2 -2
  168. package/features/contentModelGroup/shared/PluginGroupsProvider.js.map +1 -1
  169. package/features/graphql/feature.d.ts +1 -0
  170. package/features/graphql/feature.js +34 -0
  171. package/features/graphql/feature.js.map +1 -0
  172. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.d.ts +13 -0
  173. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.js +27 -0
  174. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.js.map +1 -0
  175. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.d.ts +97 -0
  176. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js +4 -0
  177. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js.map +1 -0
  178. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.d.ts +10 -0
  179. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.js +4 -0
  180. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.js.map +1 -0
  181. package/features/graphql/fields/base/BooleanToGraphQL.d.ts +26 -0
  182. package/features/graphql/fields/base/BooleanToGraphQL.js +68 -0
  183. package/features/graphql/fields/base/BooleanToGraphQL.js.map +1 -0
  184. package/features/graphql/fields/base/DateTimeToGraphQL.d.ts +26 -0
  185. package/features/graphql/fields/base/DateTimeToGraphQL.js +97 -0
  186. package/features/graphql/fields/base/DateTimeToGraphQL.js.map +1 -0
  187. package/features/graphql/fields/base/DynamicZoneToGraphQL.d.ts +30 -0
  188. package/features/graphql/fields/base/DynamicZoneToGraphQL.js +280 -0
  189. package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -0
  190. package/features/graphql/fields/base/FileToGraphQL.d.ts +22 -0
  191. package/features/graphql/fields/base/FileToGraphQL.js +39 -0
  192. package/features/graphql/fields/base/FileToGraphQL.js.map +1 -0
  193. package/features/graphql/fields/base/JsonToGraphQL.d.ts +24 -0
  194. package/features/graphql/fields/base/JsonToGraphQL.js +52 -0
  195. package/features/graphql/fields/base/JsonToGraphQL.js.map +1 -0
  196. package/features/graphql/fields/base/LongTextToGraphQL.d.ts +24 -0
  197. package/features/graphql/fields/base/LongTextToGraphQL.js +57 -0
  198. package/features/graphql/fields/base/LongTextToGraphQL.js.map +1 -0
  199. package/features/graphql/fields/base/NumberToGraphQL.d.ts +26 -0
  200. package/features/graphql/fields/base/NumberToGraphQL.js +78 -0
  201. package/features/graphql/fields/base/NumberToGraphQL.js.map +1 -0
  202. package/features/graphql/fields/base/ObjectToGraphQL.d.ts +31 -0
  203. package/features/graphql/fields/base/ObjectToGraphQL.js +264 -0
  204. package/features/graphql/fields/base/ObjectToGraphQL.js.map +1 -0
  205. package/features/graphql/fields/base/RefToGraphQL.d.ts +29 -0
  206. package/features/graphql/fields/base/RefToGraphQL.js +261 -0
  207. package/features/graphql/fields/base/RefToGraphQL.js.map +1 -0
  208. package/features/graphql/fields/base/RichTextToGraphQL.d.ts +25 -0
  209. package/features/graphql/fields/base/RichTextToGraphQL.js +58 -0
  210. package/features/graphql/fields/base/RichTextToGraphQL.js.map +1 -0
  211. package/features/graphql/fields/base/SearchableJsonToGraphQL.d.ts +26 -0
  212. package/features/graphql/fields/base/SearchableJsonToGraphQL.js +62 -0
  213. package/features/graphql/fields/base/SearchableJsonToGraphQL.js.map +1 -0
  214. package/features/graphql/fields/base/TextToGraphQL.d.ts +26 -0
  215. package/features/graphql/fields/base/TextToGraphQL.js +74 -0
  216. package/features/graphql/fields/base/TextToGraphQL.js.map +1 -0
  217. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.d.ts +16 -0
  218. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.js +37 -0
  219. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.js.map +1 -0
  220. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.d.ts +3 -0
  221. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.js +14 -0
  222. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.js.map +1 -0
  223. package/{graphqlFields → features/graphql/fields/base}/richText/richTextResolver.d.ts +1 -1
  224. package/{graphqlFields → features/graphql/fields/base}/richText/richTextResolver.js +2 -2
  225. package/features/graphql/fields/base/richText/richTextResolver.js.map +1 -0
  226. package/{graphqlFields/helpers.d.ts → features/graphql/fields/base/utils/createGraphQLInputField.d.ts} +1 -1
  227. package/features/graphql/fields/base/utils/createGraphQLInputField.js +17 -0
  228. package/features/graphql/fields/base/utils/createGraphQLInputField.js.map +1 -0
  229. package/features/graphql/index.d.ts +4 -0
  230. package/features/graphql/index.js +6 -0
  231. package/features/graphql/index.js.map +1 -0
  232. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.d.ts +13 -0
  233. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.js +4 -0
  234. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.js.map +1 -0
  235. package/features/installer/CmsInstaller.d.ts +1 -1
  236. package/features/installer/CmsInstaller.js +1 -1
  237. package/features/installer/CmsInstaller.js.map +1 -1
  238. package/features/shared/abstractions.d.ts +9 -2
  239. package/features/shared/abstractions.js +1 -0
  240. package/features/shared/abstractions.js.map +1 -1
  241. package/features/storage/StorageTransformRegistry.d.ts +13 -0
  242. package/features/storage/StorageTransformRegistry.js +27 -0
  243. package/features/storage/StorageTransformRegistry.js.map +1 -0
  244. package/features/storage/abstractions/StorageTransform.d.ts +26 -0
  245. package/features/storage/abstractions/StorageTransform.js +4 -0
  246. package/features/storage/abstractions/StorageTransform.js.map +1 -0
  247. package/features/storage/abstractions/StorageTransformRegistry.d.ts +10 -0
  248. package/features/storage/abstractions/StorageTransformRegistry.js +4 -0
  249. package/features/storage/abstractions/StorageTransformRegistry.js.map +1 -0
  250. package/features/storage/feature.d.ts +1 -0
  251. package/features/storage/feature.js +24 -0
  252. package/features/storage/feature.js.map +1 -0
  253. package/features/storage/fields/DateStorageTransform.d.ts +10 -0
  254. package/features/storage/fields/DateStorageTransform.js +110 -0
  255. package/features/storage/fields/DateStorageTransform.js.map +1 -0
  256. package/features/storage/fields/DefaultStorageTransform.d.ts +10 -0
  257. package/features/storage/fields/DefaultStorageTransform.js +20 -0
  258. package/features/storage/fields/DefaultStorageTransform.js.map +1 -0
  259. package/features/storage/fields/DynamicZoneStorageTransform.d.ts +10 -0
  260. package/features/storage/fields/DynamicZoneStorageTransform.js +142 -0
  261. package/features/storage/fields/DynamicZoneStorageTransform.js.map +1 -0
  262. package/features/storage/fields/JsonStorageTransform.d.ts +13 -0
  263. package/features/storage/fields/JsonStorageTransform.js +31 -0
  264. package/features/storage/fields/JsonStorageTransform.js.map +1 -0
  265. package/features/storage/fields/LongTextStorageTransform.d.ts +18 -0
  266. package/features/storage/fields/LongTextStorageTransform.js +55 -0
  267. package/features/storage/fields/LongTextStorageTransform.js.map +1 -0
  268. package/features/storage/fields/ObjectStorageTransform.d.ts +10 -0
  269. package/features/storage/fields/ObjectStorageTransform.js +99 -0
  270. package/features/storage/fields/ObjectStorageTransform.js.map +1 -0
  271. package/features/storage/fields/RichTextStorageTransform.d.ts +13 -0
  272. package/features/storage/fields/RichTextStorageTransform.js +39 -0
  273. package/features/storage/fields/RichTextStorageTransform.js.map +1 -0
  274. package/features/storage/index.d.ts +3 -0
  275. package/features/storage/index.js +5 -0
  276. package/features/storage/index.js.map +1 -0
  277. package/features/validation/CmsModelFieldPatternValidatorRegistry.d.ts +12 -0
  278. package/features/validation/CmsModelFieldPatternValidatorRegistry.js +21 -0
  279. package/features/validation/CmsModelFieldPatternValidatorRegistry.js.map +1 -0
  280. package/features/validation/CmsModelFieldValidatorRegistry.d.ts +12 -0
  281. package/features/validation/CmsModelFieldValidatorRegistry.js +23 -0
  282. package/features/validation/CmsModelFieldValidatorRegistry.js.map +1 -0
  283. package/features/validation/abstractions/CmsModelFieldPatternValidator.d.ts +13 -0
  284. package/features/validation/abstractions/CmsModelFieldPatternValidator.js +4 -0
  285. package/features/validation/abstractions/CmsModelFieldPatternValidator.js.map +1 -0
  286. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.d.ts +9 -0
  287. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.js +4 -0
  288. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.js.map +1 -0
  289. package/features/validation/abstractions/CmsModelFieldValidator.d.ts +11 -0
  290. package/features/validation/abstractions/CmsModelFieldValidator.js +4 -0
  291. package/features/validation/abstractions/CmsModelFieldValidator.js.map +1 -0
  292. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.d.ts +9 -0
  293. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.js +4 -0
  294. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.js.map +1 -0
  295. package/features/validation/feature.d.ts +1 -0
  296. package/features/validation/feature.js +48 -0
  297. package/features/validation/feature.js.map +1 -0
  298. package/features/validation/index.d.ts +5 -0
  299. package/features/validation/index.js +7 -0
  300. package/features/validation/index.js.map +1 -0
  301. package/features/validation/validators/DateGteValidator.d.ts +10 -0
  302. package/features/validation/validators/DateGteValidator.js +26 -0
  303. package/features/validation/validators/DateGteValidator.js.map +1 -0
  304. package/features/validation/validators/DateLteValidator.d.ts +10 -0
  305. package/features/validation/validators/DateLteValidator.js +26 -0
  306. package/features/validation/validators/DateLteValidator.js.map +1 -0
  307. package/features/validation/validators/GteValidator.d.ts +10 -0
  308. package/features/validation/validators/GteValidator.js +21 -0
  309. package/features/validation/validators/GteValidator.js.map +1 -0
  310. package/features/validation/validators/InValidator.d.ts +10 -0
  311. package/features/validation/validators/InValidator.js +21 -0
  312. package/features/validation/validators/InValidator.js.map +1 -0
  313. package/features/validation/validators/LteValidator.d.ts +10 -0
  314. package/features/validation/validators/LteValidator.js +21 -0
  315. package/features/validation/validators/LteValidator.js.map +1 -0
  316. package/features/validation/validators/MaxLengthValidator.d.ts +10 -0
  317. package/features/validation/validators/MaxLengthValidator.js +21 -0
  318. package/features/validation/validators/MaxLengthValidator.js.map +1 -0
  319. package/features/validation/validators/MinLengthValidator.d.ts +10 -0
  320. package/features/validation/validators/MinLengthValidator.js +21 -0
  321. package/features/validation/validators/MinLengthValidator.js.map +1 -0
  322. package/features/validation/validators/PatternValidator.d.ts +13 -0
  323. package/features/validation/validators/PatternValidator.js +38 -0
  324. package/features/validation/validators/PatternValidator.js.map +1 -0
  325. package/features/validation/validators/RequiredValidator.d.ts +10 -0
  326. package/features/validation/validators/RequiredValidator.js +16 -0
  327. package/features/validation/validators/RequiredValidator.js.map +1 -0
  328. package/features/validation/validators/TimeGteValidator.d.ts +10 -0
  329. package/features/validation/validators/TimeGteValidator.js +21 -0
  330. package/features/validation/validators/TimeGteValidator.js.map +1 -0
  331. package/features/validation/validators/TimeLteValidator.d.ts +10 -0
  332. package/features/validation/validators/TimeLteValidator.js +21 -0
  333. package/features/validation/validators/TimeLteValidator.js.map +1 -0
  334. package/features/validation/validators/UniqueValidator.d.ts +10 -0
  335. package/features/validation/validators/UniqueValidator.js +47 -0
  336. package/features/validation/validators/UniqueValidator.js.map +1 -0
  337. package/features/validation/validators/patterns/EmailPattern.d.ts +12 -0
  338. package/features/validation/validators/patterns/EmailPattern.js +14 -0
  339. package/features/validation/validators/patterns/EmailPattern.js.map +1 -0
  340. package/features/validation/validators/patterns/LowerCasePattern.d.ts +12 -0
  341. package/features/validation/validators/patterns/LowerCasePattern.js +14 -0
  342. package/features/validation/validators/patterns/LowerCasePattern.js.map +1 -0
  343. package/features/validation/validators/patterns/LowerCaseSpacePattern.d.ts +12 -0
  344. package/features/validation/validators/patterns/LowerCaseSpacePattern.js +14 -0
  345. package/features/validation/validators/patterns/LowerCaseSpacePattern.js.map +1 -0
  346. package/features/validation/validators/patterns/UpperCasePattern.d.ts +12 -0
  347. package/features/validation/validators/patterns/UpperCasePattern.js +14 -0
  348. package/features/validation/validators/patterns/UpperCasePattern.js.map +1 -0
  349. package/features/validation/validators/patterns/UpperCaseSpacePattern.d.ts +12 -0
  350. package/features/validation/validators/patterns/UpperCaseSpacePattern.js +14 -0
  351. package/features/validation/validators/patterns/UpperCaseSpacePattern.js.map +1 -0
  352. package/features/validation/validators/patterns/UrlPattern.d.ts +12 -0
  353. package/features/validation/validators/patterns/UrlPattern.js +14 -0
  354. package/features/validation/validators/patterns/UrlPattern.js.map +1 -0
  355. package/graphql/getSchema/generateCacheKey.js +1 -1
  356. package/graphql/getSchema/generateCacheKey.js.map +1 -1
  357. package/graphql/schema/baseSchema.d.ts +2 -1
  358. package/graphql/schema/baseSchema.js +11 -9
  359. package/graphql/schema/baseSchema.js.map +1 -1
  360. package/graphql/schema/createFieldResolvers.d.ts +3 -2
  361. package/graphql/schema/createFieldResolvers.js +5 -4
  362. package/graphql/schema/createFieldResolvers.js.map +1 -1
  363. package/graphql/schema/createManageResolvers.d.ts +3 -2
  364. package/graphql/schema/createManageResolvers.js +3 -3
  365. package/graphql/schema/createManageResolvers.js.map +1 -1
  366. package/graphql/schema/createManageSDL.d.ts +4 -4
  367. package/graphql/schema/createManageSDL.js +8 -8
  368. package/graphql/schema/createManageSDL.js.map +1 -1
  369. package/graphql/schema/createPreviewResolvers.d.ts +3 -2
  370. package/graphql/schema/createPreviewResolvers.js +4 -4
  371. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  372. package/graphql/schema/createReadResolvers.d.ts +3 -2
  373. package/graphql/schema/createReadResolvers.js +4 -4
  374. package/graphql/schema/createReadResolvers.js.map +1 -1
  375. package/graphql/schema/createReadSDL.d.ts +4 -4
  376. package/graphql/schema/createReadSDL.js +7 -7
  377. package/graphql/schema/createReadSDL.js.map +1 -1
  378. package/graphql/schema/createSingularResolvers.d.ts +3 -2
  379. package/graphql/schema/createSingularResolvers.js +3 -3
  380. package/graphql/schema/createSingularResolvers.js.map +1 -1
  381. package/graphql/schema/createSingularSDL.d.ts +3 -2
  382. package/graphql/schema/createSingularSDL.js +3 -3
  383. package/graphql/schema/createSingularSDL.js.map +1 -1
  384. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js +6 -7
  385. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js.map +1 -1
  386. package/graphql/schema/schemaPlugins.js +14 -17
  387. package/graphql/schema/schemaPlugins.js.map +1 -1
  388. package/index.d.ts +1 -4
  389. package/index.js +2 -6
  390. package/index.js.map +1 -1
  391. package/package.json +25 -25
  392. package/plugins/index.d.ts +0 -2
  393. package/plugins/index.js +0 -2
  394. package/plugins/index.js.map +1 -1
  395. package/types/modelField.d.ts +1 -1
  396. package/types/modelField.js.map +1 -1
  397. package/types/plugins.d.ts +1 -305
  398. package/types/plugins.js.map +1 -1
  399. package/types/types.d.ts +4 -44
  400. package/types/types.js +0 -4
  401. package/types/types.js.map +1 -1
  402. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.d.ts +3 -2
  403. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js +3 -3
  404. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js.map +1 -1
  405. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.d.ts +4 -3
  406. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js +3 -3
  407. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js.map +1 -1
  408. package/utils/converters/ConverterCollection.d.ts +2 -0
  409. package/utils/converters/ConverterCollection.js +3 -2
  410. package/utils/converters/ConverterCollection.js.map +1 -1
  411. package/utils/converters/valueKeyFromStorageConverter.d.ts +2 -0
  412. package/utils/converters/valueKeyFromStorageConverter.js +4 -2
  413. package/utils/converters/valueKeyFromStorageConverter.js.map +1 -1
  414. package/utils/converters/valueKeyStorageConverter.d.ts +2 -3
  415. package/utils/converters/valueKeyStorageConverter.js +7 -3
  416. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  417. package/utils/converters/valueKeyToStorageConverter.d.ts +2 -0
  418. package/utils/converters/valueKeyToStorageConverter.js +4 -2
  419. package/utils/converters/valueKeyToStorageConverter.js.map +1 -1
  420. package/utils/createTypeFromFields.d.ts +3 -2
  421. package/utils/createTypeFromFields.js +3 -3
  422. package/utils/createTypeFromFields.js.map +1 -1
  423. package/utils/entryStorage.d.ts +8 -15
  424. package/utils/entryStorage.js +31 -59
  425. package/utils/entryStorage.js.map +1 -1
  426. package/utils/getBaseFieldType.js +3 -0
  427. package/utils/getBaseFieldType.js.map +1 -1
  428. package/utils/getSchemaFromFieldPlugins.d.ts +3 -2
  429. package/utils/getSchemaFromFieldPlugins.js +5 -9
  430. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  431. package/utils/renderFields.d.ts +4 -3
  432. package/utils/renderFields.js +14 -9
  433. package/utils/renderFields.js.map +1 -1
  434. package/utils/renderGetFilterFields.d.ts +3 -2
  435. package/utils/renderGetFilterFields.js +2 -2
  436. package/utils/renderGetFilterFields.js.map +1 -1
  437. package/utils/renderInputFields.d.ts +4 -3
  438. package/utils/renderInputFields.js +5 -11
  439. package/utils/renderInputFields.js.map +1 -1
  440. package/utils/renderListFilterFields.d.ts +3 -2
  441. package/utils/renderListFilterFields.js +5 -3
  442. package/utils/renderListFilterFields.js.map +1 -1
  443. package/utils/renderSortEnum.d.ts +4 -4
  444. package/utils/renderSortEnum.js +11 -11
  445. package/utils/renderSortEnum.js.map +1 -1
  446. package/graphql/schema/createFieldTypePluginRecords.d.ts +0 -3
  447. package/graphql/schema/createFieldTypePluginRecords.js +0 -8
  448. package/graphql/schema/createFieldTypePluginRecords.js.map +0 -1
  449. package/graphqlFields/boolean.d.ts +0 -2
  450. package/graphqlFields/boolean.js +0 -52
  451. package/graphqlFields/boolean.js.map +0 -1
  452. package/graphqlFields/datetime.d.ts +0 -2
  453. package/graphqlFields/datetime.js +0 -71
  454. package/graphqlFields/datetime.js.map +0 -1
  455. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +0 -2
  456. package/graphqlFields/dynamicZone/dynamicZoneField.js +0 -313
  457. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +0 -1
  458. package/graphqlFields/dynamicZone/index.d.ts +0 -1
  459. package/graphqlFields/dynamicZone/index.js +0 -3
  460. package/graphqlFields/dynamicZone/index.js.map +0 -1
  461. package/graphqlFields/file.d.ts +0 -2
  462. package/graphqlFields/file.js +0 -37
  463. package/graphqlFields/file.js.map +0 -1
  464. package/graphqlFields/helpers.js +0 -20
  465. package/graphqlFields/helpers.js.map +0 -1
  466. package/graphqlFields/index.d.ts +0 -2
  467. package/graphqlFields/index.js +0 -15
  468. package/graphqlFields/index.js.map +0 -1
  469. package/graphqlFields/json.d.ts +0 -2
  470. package/graphqlFields/json.js +0 -42
  471. package/graphqlFields/json.js.map +0 -1
  472. package/graphqlFields/longText.d.ts +0 -2
  473. package/graphqlFields/longText.js +0 -57
  474. package/graphqlFields/longText.js.map +0 -1
  475. package/graphqlFields/number.d.ts +0 -2
  476. package/graphqlFields/number.js +0 -63
  477. package/graphqlFields/number.js.map +0 -1
  478. package/graphqlFields/object.d.ts +0 -2
  479. package/graphqlFields/object.js +0 -245
  480. package/graphqlFields/object.js.map +0 -1
  481. package/graphqlFields/ref.d.ts +0 -2
  482. package/graphqlFields/ref.js +0 -286
  483. package/graphqlFields/ref.js.map +0 -1
  484. package/graphqlFields/richText/richTextResolver.js.map +0 -1
  485. package/graphqlFields/richText.d.ts +0 -2
  486. package/graphqlFields/richText.js +0 -48
  487. package/graphqlFields/richText.js.map +0 -1
  488. package/graphqlFields/searchableJson.d.ts +0 -2
  489. package/graphqlFields/searchableJson.js +0 -53
  490. package/graphqlFields/searchableJson.js.map +0 -1
  491. package/graphqlFields/text.d.ts +0 -2
  492. package/graphqlFields/text.js +0 -59
  493. package/graphqlFields/text.js.map +0 -1
  494. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +0 -20
  495. package/plugins/CmsGraphQLSchemaSorterPlugin.js +0 -19
  496. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +0 -1
  497. package/plugins/StorageTransformPlugin.d.ts +0 -35
  498. package/plugins/StorageTransformPlugin.js +0 -26
  499. package/plugins/StorageTransformPlugin.js.map +0 -1
  500. package/storage/date.d.ts +0 -3
  501. package/storage/date.js +0 -110
  502. package/storage/date.js.map +0 -1
  503. package/storage/default.d.ts +0 -2
  504. package/storage/default.js +0 -19
  505. package/storage/default.js.map +0 -1
  506. package/storage/dynamicZone.d.ts +0 -2
  507. package/storage/dynamicZone.js +0 -149
  508. package/storage/dynamicZone.js.map +0 -1
  509. package/storage/index.d.ts +0 -1
  510. package/storage/index.js +0 -13
  511. package/storage/index.js.map +0 -1
  512. package/storage/json.d.ts +0 -2
  513. package/storage/json.js +0 -49
  514. package/storage/json.js.map +0 -1
  515. package/storage/object.d.ts +0 -2
  516. package/storage/object.js +0 -104
  517. package/storage/object.js.map +0 -1
  518. package/validators/dateGte.d.ts +0 -2
  519. package/validators/dateGte.js +0 -25
  520. package/validators/dateGte.js.map +0 -1
  521. package/validators/dateLte.d.ts +0 -2
  522. package/validators/dateLte.js +0 -25
  523. package/validators/dateLte.js.map +0 -1
  524. package/validators/gte.d.ts +0 -2
  525. package/validators/gte.js +0 -22
  526. package/validators/gte.js.map +0 -1
  527. package/validators/in.d.ts +0 -2
  528. package/validators/in.js +0 -22
  529. package/validators/in.js.map +0 -1
  530. package/validators/index.d.ts +0 -1
  531. package/validators/index.js +0 -16
  532. package/validators/index.js.map +0 -1
  533. package/validators/lte.d.ts +0 -2
  534. package/validators/lte.js +0 -22
  535. package/validators/lte.js.map +0 -1
  536. package/validators/maxLength.d.ts +0 -2
  537. package/validators/maxLength.js +0 -22
  538. package/validators/maxLength.js.map +0 -1
  539. package/validators/minLength.d.ts +0 -2
  540. package/validators/minLength.js +0 -22
  541. package/validators/minLength.js.map +0 -1
  542. package/validators/pattern.d.ts +0 -2
  543. package/validators/pattern.js +0 -36
  544. package/validators/pattern.js.map +0 -1
  545. package/validators/patternPlugins/email.d.ts +0 -2
  546. package/validators/patternPlugins/email.js +0 -13
  547. package/validators/patternPlugins/email.js.map +0 -1
  548. package/validators/patternPlugins/index.d.ts +0 -2
  549. package/validators/patternPlugins/index.js +0 -11
  550. package/validators/patternPlugins/index.js.map +0 -1
  551. package/validators/patternPlugins/lowerCase.d.ts +0 -2
  552. package/validators/patternPlugins/lowerCase.js +0 -13
  553. package/validators/patternPlugins/lowerCase.js.map +0 -1
  554. package/validators/patternPlugins/lowerCaseSpace.d.ts +0 -2
  555. package/validators/patternPlugins/lowerCaseSpace.js +0 -13
  556. package/validators/patternPlugins/lowerCaseSpace.js.map +0 -1
  557. package/validators/patternPlugins/upperCase.d.ts +0 -2
  558. package/validators/patternPlugins/upperCase.js +0 -13
  559. package/validators/patternPlugins/upperCase.js.map +0 -1
  560. package/validators/patternPlugins/upperCaseSpace.d.ts +0 -2
  561. package/validators/patternPlugins/upperCaseSpace.js +0 -13
  562. package/validators/patternPlugins/upperCaseSpace.js.map +0 -1
  563. package/validators/patternPlugins/url.d.ts +0 -2
  564. package/validators/patternPlugins/url.js +0 -13
  565. package/validators/patternPlugins/url.js.map +0 -1
  566. package/validators/required.d.ts +0 -2
  567. package/validators/required.js +0 -17
  568. package/validators/required.js.map +0 -1
  569. package/validators/timeGte.d.ts +0 -2
  570. package/validators/timeGte.js +0 -20
  571. package/validators/timeGte.js.map +0 -1
  572. package/validators/timeLte.d.ts +0 -2
  573. package/validators/timeLte.js +0 -20
  574. package/validators/timeLte.js.map +0 -1
  575. package/validators/unique.d.ts +0 -6
  576. package/validators/unique.js +0 -57
  577. package/validators/unique.js.map +0 -1
@@ -1,11 +1,11 @@
1
1
  import { CmsModelFieldToAstFromPlugin } from "./CmsModelFieldToAstFromPlugin.js";
2
2
  import { getBaseFieldType } from "../getBaseFieldType.js";
3
3
  export class CmsModelFieldToAstConverterFromPlugins {
4
- constructor(plugins) {
5
- this.converters = plugins.reduce((converters, plugin) => {
4
+ constructor(fields) {
5
+ this.converters = fields.reduce((converters, field) => {
6
6
  return {
7
7
  ...converters,
8
- [plugin.fieldType]: new CmsModelFieldToAstFromPlugin(plugin, this)
8
+ [field.fieldType]: new CmsModelFieldToAstFromPlugin(field, this)
9
9
  };
10
10
  }, {});
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"names":["CmsModelFieldToAstFromPlugin","getBaseFieldType","CmsModelFieldToAstConverterFromPlugins","constructor","plugins","converters","reduce","plugin","fieldType","toAst","field","type","Error","fieldId"],"sources":["CmsModelFieldToAstConverterFromPlugins.ts"],"sourcesContent":["import type {\n CmsModelField,\n CmsModelFieldToGraphQLPlugin,\n ICmsModelFieldToAst\n} from \"~/types/index.js\";\nimport { CmsModelFieldToAstFromPlugin } from \"./CmsModelFieldToAstFromPlugin.js\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\n\ntype FieldToAstConverters = Record<string, ICmsModelFieldToAst>;\n\nexport class CmsModelFieldToAstConverterFromPlugins implements ICmsModelFieldToAst {\n private readonly converters: FieldToAstConverters;\n\n public constructor(plugins: CmsModelFieldToGraphQLPlugin[]) {\n this.converters = plugins.reduce<FieldToAstConverters>((converters, plugin) => {\n return {\n ...converters,\n [plugin.fieldType]: new CmsModelFieldToAstFromPlugin(plugin, this)\n };\n }, {});\n }\n\n public toAst(field: CmsModelField) {\n const type = getBaseFieldType(field);\n if (!this.converters[type]) {\n throw new Error(\n `Cannot convert model field \"${field.fieldId}\" to AST. No converter found for field type \"${type}\".`\n );\n }\n return this.converters[type].toAst(field);\n }\n}\n"],"mappings":"AAKA,SAASA,4BAA4B;AACrC,SAASC,gBAAgB;AAIzB,OAAO,MAAMC,sCAAsC,CAAgC;EAGxEC,WAAWA,CAACC,OAAuC,EAAE;IACxD,IAAI,CAACC,UAAU,GAAGD,OAAO,CAACE,MAAM,CAAuB,CAACD,UAAU,EAAEE,MAAM,KAAK;MAC3E,OAAO;QACH,GAAGF,UAAU;QACb,CAACE,MAAM,CAACC,SAAS,GAAG,IAAIR,4BAA4B,CAACO,MAAM,EAAE,IAAI;MACrE,CAAC;IACL,CAAC,EAAE,CAAC,CAAC,CAAC;EACV;EAEOE,KAAKA,CAACC,KAAoB,EAAE;IAC/B,MAAMC,IAAI,GAAGV,gBAAgB,CAACS,KAAK,CAAC;IACpC,IAAI,CAAC,IAAI,CAACL,UAAU,CAACM,IAAI,CAAC,EAAE;MACxB,MAAM,IAAIC,KAAK,CACX,+BAA+BF,KAAK,CAACG,OAAO,gDAAgDF,IAAI,IACpG,CAAC;IACL;IACA,OAAO,IAAI,CAACN,UAAU,CAACM,IAAI,CAAC,CAACF,KAAK,CAACC,KAAK,CAAC;EAC7C;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["CmsModelFieldToAstFromPlugin","getBaseFieldType","CmsModelFieldToAstConverterFromPlugins","constructor","fields","converters","reduce","field","fieldType","toAst","type","Error","fieldId"],"sources":["CmsModelFieldToAstConverterFromPlugins.ts"],"sourcesContent":["import type { CmsModelField, ICmsModelFieldToAst } from \"~/types/index.js\";\nimport type { CmsModelFieldToGraphQL } from \"~/features/graphql/index.js\";\nimport { CmsModelFieldToAstFromPlugin } from \"./CmsModelFieldToAstFromPlugin.js\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\n\ntype FieldToAstConverters = Record<string, ICmsModelFieldToAst>;\n\nexport class CmsModelFieldToAstConverterFromPlugins implements ICmsModelFieldToAst {\n private readonly converters: FieldToAstConverters;\n\n public constructor(fields: CmsModelFieldToGraphQL.Interface[]) {\n this.converters = fields.reduce<FieldToAstConverters>((converters, field) => {\n return {\n ...converters,\n [field.fieldType]: new CmsModelFieldToAstFromPlugin(field, this)\n };\n }, {});\n }\n\n public toAst(field: CmsModelField) {\n const type = getBaseFieldType(field);\n if (!this.converters[type]) {\n throw new Error(\n `Cannot convert model field \"${field.fieldId}\" to AST. No converter found for field type \"${type}\".`\n );\n }\n return this.converters[type].toAst(field);\n }\n}\n"],"mappings":"AAEA,SAASA,4BAA4B;AACrC,SAASC,gBAAgB;AAIzB,OAAO,MAAMC,sCAAsC,CAAgC;EAGxEC,WAAWA,CAACC,MAA0C,EAAE;IAC3D,IAAI,CAACC,UAAU,GAAGD,MAAM,CAACE,MAAM,CAAuB,CAACD,UAAU,EAAEE,KAAK,KAAK;MACzE,OAAO;QACH,GAAGF,UAAU;QACb,CAACE,KAAK,CAACC,SAAS,GAAG,IAAIR,4BAA4B,CAACO,KAAK,EAAE,IAAI;MACnE,CAAC;IACL,CAAC,EAAE,CAAC,CAAC,CAAC;EACV;EAEOE,KAAKA,CAACF,KAAoB,EAAE;IAC/B,MAAMG,IAAI,GAAGT,gBAAgB,CAACM,KAAK,CAAC;IACpC,IAAI,CAAC,IAAI,CAACF,UAAU,CAACK,IAAI,CAAC,EAAE;MACxB,MAAM,IAAIC,KAAK,CACX,+BAA+BJ,KAAK,CAACK,OAAO,gDAAgDF,IAAI,IACpG,CAAC;IACL;IACA,OAAO,IAAI,CAACL,UAAU,CAACK,IAAI,CAAC,CAACD,KAAK,CAACF,KAAK,CAAC;EAC7C;AACJ","ignoreList":[]}
@@ -1,7 +1,8 @@
1
- import type { CmsModelField, CmsModelFieldAstNode, CmsModelFieldToGraphQLPlugin, ICmsModelFieldToAst } from "../../types/index.js";
1
+ import type { CmsModelField, CmsModelFieldAstNode, ICmsModelFieldToAst } from "../../types/index.js";
2
+ import type { CmsModelFieldToGraphQL } from "../../features/graphql/index.js";
2
3
  export declare class CmsModelFieldToAstFromPlugin implements ICmsModelFieldToAst {
3
4
  private readonly converter;
4
- private plugin;
5
- constructor(plugin: CmsModelFieldToGraphQLPlugin, converter: ICmsModelFieldToAst);
5
+ private field;
6
+ constructor(field: CmsModelFieldToGraphQL.Interface, converter: ICmsModelFieldToAst);
6
7
  toAst(field: CmsModelField): CmsModelFieldAstNode;
7
8
  }
@@ -1,10 +1,10 @@
1
1
  export class CmsModelFieldToAstFromPlugin {
2
- constructor(plugin, converter) {
2
+ constructor(field, converter) {
3
3
  this.converter = converter;
4
- this.plugin = plugin;
4
+ this.field = field;
5
5
  }
6
6
  toAst(field) {
7
- return this.plugin.getFieldAst ? this.plugin.getFieldAst(field, this.converter) : {
7
+ return this.field.getFieldAst ? this.field.getFieldAst(field, this.converter) : {
8
8
  type: "field",
9
9
  field,
10
10
  children: []
@@ -1 +1 @@
1
- {"version":3,"names":["CmsModelFieldToAstFromPlugin","constructor","plugin","converter","toAst","field","getFieldAst","type","children"],"sources":["CmsModelFieldToAstFromPlugin.ts"],"sourcesContent":["import type {\n CmsModelField,\n CmsModelFieldAstNode,\n CmsModelFieldToGraphQLPlugin,\n ICmsModelFieldToAst\n} from \"~/types/index.js\";\n\nexport class CmsModelFieldToAstFromPlugin implements ICmsModelFieldToAst {\n private readonly converter: ICmsModelFieldToAst;\n private plugin: CmsModelFieldToGraphQLPlugin;\n\n constructor(plugin: CmsModelFieldToGraphQLPlugin, converter: ICmsModelFieldToAst) {\n this.converter = converter;\n this.plugin = plugin;\n }\n\n toAst(field: CmsModelField): CmsModelFieldAstNode {\n return this.plugin.getFieldAst\n ? this.plugin.getFieldAst(field, this.converter)\n : { type: \"field\", field, children: [] };\n }\n}\n"],"mappings":"AAOA,OAAO,MAAMA,4BAA4B,CAAgC;EAIrEC,WAAWA,CAACC,MAAoC,EAAEC,SAA8B,EAAE;IAC9E,IAAI,CAACA,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACD,MAAM,GAAGA,MAAM;EACxB;EAEAE,KAAKA,CAACC,KAAoB,EAAwB;IAC9C,OAAO,IAAI,CAACH,MAAM,CAACI,WAAW,GACxB,IAAI,CAACJ,MAAM,CAACI,WAAW,CAACD,KAAK,EAAE,IAAI,CAACF,SAAS,CAAC,GAC9C;MAAEI,IAAI,EAAE,OAAO;MAAEF,KAAK;MAAEG,QAAQ,EAAE;IAAG,CAAC;EAChD;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["CmsModelFieldToAstFromPlugin","constructor","field","converter","toAst","getFieldAst","type","children"],"sources":["CmsModelFieldToAstFromPlugin.ts"],"sourcesContent":["import type { CmsModelField, CmsModelFieldAstNode, ICmsModelFieldToAst } from \"~/types/index.js\";\nimport type { CmsModelFieldToGraphQL } from \"~/features/graphql/index.js\";\n\nexport class CmsModelFieldToAstFromPlugin implements ICmsModelFieldToAst {\n private readonly converter: ICmsModelFieldToAst;\n private field: CmsModelFieldToGraphQL.Interface;\n\n constructor(field: CmsModelFieldToGraphQL.Interface, converter: ICmsModelFieldToAst) {\n this.converter = converter;\n this.field = field;\n }\n\n toAst(field: CmsModelField): CmsModelFieldAstNode {\n return this.field.getFieldAst\n ? this.field.getFieldAst(field, this.converter)\n : { type: \"field\", field, children: [] };\n }\n}\n"],"mappings":"AAGA,OAAO,MAAMA,4BAA4B,CAAgC;EAIrEC,WAAWA,CAACC,KAAuC,EAAEC,SAA8B,EAAE;IACjF,IAAI,CAACA,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACD,KAAK,GAAGA,KAAK;EACtB;EAEAE,KAAKA,CAACF,KAAoB,EAAwB;IAC9C,OAAO,IAAI,CAACA,KAAK,CAACG,WAAW,GACvB,IAAI,CAACH,KAAK,CAACG,WAAW,CAACH,KAAK,EAAE,IAAI,CAACC,SAAS,CAAC,GAC7C;MAAEG,IAAI,EAAE,OAAO;MAAEJ,KAAK;MAAEK,QAAQ,EAAE;IAAG,CAAC;EAChD;AACJ","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import { Converter } from "./Converter.js";
2
2
  import type { CmsEntryValues, CmsModelField } from "../../types/index.js";
3
3
  import type { PluginsContainer } from "@webiny/plugins";
4
+ import type { CmsModelFieldToGraphQLRegistry } from "../../features/graphql/index.js";
4
5
  export interface CmsModelFieldsWithParent extends CmsModelField {
5
6
  parent?: CmsModelField | null;
6
7
  }
@@ -13,6 +14,7 @@ export interface ConverterCollectionConvertParams<T extends CmsEntryValues = Cms
13
14
  }
14
15
  export interface ConverterCollectionParams {
15
16
  plugins: PluginsContainer;
17
+ fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;
16
18
  }
17
19
  export declare class ConverterCollection {
18
20
  private readonly converters;
@@ -6,9 +6,10 @@ export class ConverterCollection {
6
6
  converters = new Map();
7
7
  constructor(params) {
8
8
  const {
9
- plugins
9
+ plugins,
10
+ fieldRegistry
10
11
  } = params;
11
- const fieldGraphQLPlugins = plugins.byType("cms-model-field-to-graphql");
12
+ const fieldGraphQLPlugins = fieldRegistry.getAll();
12
13
  const fieldConverterPlugins = plugins.byType(CmsModelFieldConverterPlugin.type);
13
14
  const defaultFieldConverterPlugin = fieldConverterPlugins.find(pl => pl.getFieldType() === "*");
14
15
  if (defaultFieldConverterPlugin === undefined) {
@@ -1 +1 @@
1
- {"version":3,"names":["WebinyError","Converter","CmsModelFieldConverterPlugin","getBaseFieldType","ConverterCollection","converters","Map","constructor","params","plugins","fieldGraphQLPlugins","byType","fieldConverterPlugins","type","defaultFieldConverterPlugin","find","pl","getFieldType","undefined","fieldGraphQLPlugin","plugin","fieldType","converter","addConverter","setConverterCollection","set","getType","getConverter","baseType","get","convertToStorage","fields","values","inputValues","attachHasOwnProperty","reduce","output","field","hasOwnProperty","fieldId","value","convertFromStorage","storageId","Array","isArray","Object","defineProperty","enumerable","writable","property"],"sources":["ConverterCollection.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Converter } from \"./Converter.js\";\nimport type { CmsEntryValues, CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types/index.js\";\nimport { CmsModelFieldConverterPlugin } from \"~/plugins/index.js\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\n\nexport interface CmsModelFieldsWithParent extends CmsModelField {\n parent?: CmsModelField | null;\n}\n\nexport interface CmsModelConverterCallable<T extends CmsEntryValues = CmsEntryValues> {\n (params: ConverterCollectionConvertParams<T>): T;\n}\n\nexport interface ConverterCollectionConvertParams<T extends CmsEntryValues = CmsEntryValues> {\n fields: CmsModelFieldsWithParent[];\n values?: T;\n}\n\nexport interface ConverterCollectionParams {\n plugins: PluginsContainer;\n}\n\nexport class ConverterCollection {\n private readonly converters: Map<string, Converter> = new Map();\n\n public constructor(params: ConverterCollectionParams) {\n const { plugins } = params;\n const fieldGraphQLPlugins = plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n const fieldConverterPlugins = plugins.byType<CmsModelFieldConverterPlugin>(\n CmsModelFieldConverterPlugin.type\n );\n const defaultFieldConverterPlugin = fieldConverterPlugins.find(\n pl => pl.getFieldType() === \"*\"\n );\n if (defaultFieldConverterPlugin === undefined) {\n throw new WebinyError(\n `Missing default field converter plugin.`,\n \"DEFAULT_FIELD_CONVERTER_ERROR\"\n );\n }\n for (const fieldGraphQLPlugin of fieldGraphQLPlugins) {\n const plugin = fieldConverterPlugins.find(\n pl => pl.getFieldType() === fieldGraphQLPlugin.fieldType\n );\n const converter = new Converter({\n type: fieldGraphQLPlugin.fieldType,\n plugin: plugin || defaultFieldConverterPlugin\n });\n\n this.addConverter(converter);\n }\n }\n\n public addConverter(converter: Converter): void {\n converter.setConverterCollection(this);\n this.converters.set(converter.getType(), converter);\n }\n\n public getConverter(type: string): Converter {\n const baseType = getBaseFieldType({ type });\n const converter = this.converters.get(baseType);\n if (converter === undefined) {\n throw new WebinyError(\n `Missing converter for field type \"${type}\".`,\n \"CONVERTER_ERROR\",\n {\n type\n }\n );\n }\n return converter;\n }\n\n public convertToStorage<T extends CmsEntryValues = CmsEntryValues>(\n params: ConverterCollectionConvertParams<T>\n ): T | undefined {\n const { fields, values: inputValues } = params;\n if (inputValues === undefined) {\n return undefined;\n }\n\n this.attachHasOwnProperty<T>(inputValues);\n\n return fields.reduce<T>((output, field) => {\n const converter = this.getConverter(field.type);\n if (inputValues === null || inputValues.hasOwnProperty(field.fieldId) === false) {\n return output;\n }\n const values = converter.convertToStorage({\n field,\n value: inputValues[field.fieldId as keyof T]\n });\n\n return {\n ...output,\n ...values\n };\n }, {} as T);\n }\n\n public convertFromStorage<T extends CmsEntryValues = CmsEntryValues>(\n params: ConverterCollectionConvertParams<T>\n ): T | undefined {\n const { fields, values: inputValues } = params;\n if (inputValues === undefined) {\n return undefined;\n }\n\n return fields.reduce<T>((output, field) => {\n const converter = this.getConverter(field.type);\n if (inputValues === null || inputValues.hasOwnProperty(field.storageId) === false) {\n return output;\n }\n const values = converter.convertFromStorage({\n field,\n value: inputValues[field.storageId as keyof T]\n });\n\n return {\n ...output,\n ...values\n };\n }, {} as T);\n }\n\n /**\n * This method attaches hasOwnProperty when received object was created via Object.create(null) - no inheritance of Object.\n * At that point, hasOwnProperty does not exist, and we need to add it.\n *\n * TODO add more checks if required\n */\n private attachHasOwnProperty<T extends CmsEntryValues = CmsEntryValues>(values: T) {\n if (\n // null or undefined?\n values === null ||\n values === undefined ||\n // not an object?\n typeof values !== \"object\" ||\n // maybe it's an array?\n Array.isArray(values) ||\n // and in the end, check if hasOwnProperty is a function already\n typeof values?.hasOwnProperty === \"function\"\n ) {\n return;\n }\n Object.defineProperty(values, \"hasOwnProperty\", {\n enumerable: false,\n writable: false,\n value: function (property: string) {\n return this[property] !== undefined;\n }\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["WebinyError","Converter","CmsModelFieldConverterPlugin","getBaseFieldType","ConverterCollection","converters","Map","constructor","params","plugins","fieldRegistry","fieldGraphQLPlugins","getAll","fieldConverterPlugins","byType","type","defaultFieldConverterPlugin","find","pl","getFieldType","undefined","fieldGraphQLPlugin","plugin","fieldType","converter","addConverter","setConverterCollection","set","getType","getConverter","baseType","get","convertToStorage","fields","values","inputValues","attachHasOwnProperty","reduce","output","field","hasOwnProperty","fieldId","value","convertFromStorage","storageId","Array","isArray","Object","defineProperty","enumerable","writable","property"],"sources":["ConverterCollection.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { Converter } from \"./Converter.js\";\nimport type { CmsEntryValues, CmsModelField } from \"~/types/index.js\";\nimport { CmsModelFieldConverterPlugin } from \"~/plugins/index.js\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\nimport type { CmsModelFieldToGraphQLRegistry } from \"~/features/graphql/index.js\";\n\nexport interface CmsModelFieldsWithParent extends CmsModelField {\n parent?: CmsModelField | null;\n}\n\nexport interface CmsModelConverterCallable<T extends CmsEntryValues = CmsEntryValues> {\n (params: ConverterCollectionConvertParams<T>): T;\n}\n\nexport interface ConverterCollectionConvertParams<T extends CmsEntryValues = CmsEntryValues> {\n fields: CmsModelFieldsWithParent[];\n values?: T;\n}\n\nexport interface ConverterCollectionParams {\n plugins: PluginsContainer;\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\n\nexport class ConverterCollection {\n private readonly converters: Map<string, Converter> = new Map();\n\n public constructor(params: ConverterCollectionParams) {\n const { plugins, fieldRegistry } = params;\n const fieldGraphQLPlugins = fieldRegistry.getAll();\n const fieldConverterPlugins = plugins.byType<CmsModelFieldConverterPlugin>(\n CmsModelFieldConverterPlugin.type\n );\n const defaultFieldConverterPlugin = fieldConverterPlugins.find(\n pl => pl.getFieldType() === \"*\"\n );\n if (defaultFieldConverterPlugin === undefined) {\n throw new WebinyError(\n `Missing default field converter plugin.`,\n \"DEFAULT_FIELD_CONVERTER_ERROR\"\n );\n }\n for (const fieldGraphQLPlugin of fieldGraphQLPlugins) {\n const plugin = fieldConverterPlugins.find(\n pl => pl.getFieldType() === fieldGraphQLPlugin.fieldType\n );\n const converter = new Converter({\n type: fieldGraphQLPlugin.fieldType,\n plugin: plugin || defaultFieldConverterPlugin\n });\n\n this.addConverter(converter);\n }\n }\n\n public addConverter(converter: Converter): void {\n converter.setConverterCollection(this);\n this.converters.set(converter.getType(), converter);\n }\n\n public getConverter(type: string): Converter {\n const baseType = getBaseFieldType({ type });\n const converter = this.converters.get(baseType);\n if (converter === undefined) {\n throw new WebinyError(\n `Missing converter for field type \"${type}\".`,\n \"CONVERTER_ERROR\",\n {\n type\n }\n );\n }\n return converter;\n }\n\n public convertToStorage<T extends CmsEntryValues = CmsEntryValues>(\n params: ConverterCollectionConvertParams<T>\n ): T | undefined {\n const { fields, values: inputValues } = params;\n if (inputValues === undefined) {\n return undefined;\n }\n\n this.attachHasOwnProperty<T>(inputValues);\n\n return fields.reduce<T>((output, field) => {\n const converter = this.getConverter(field.type);\n if (inputValues === null || inputValues.hasOwnProperty(field.fieldId) === false) {\n return output;\n }\n const values = converter.convertToStorage({\n field,\n value: inputValues[field.fieldId as keyof T]\n });\n\n return {\n ...output,\n ...values\n };\n }, {} as T);\n }\n\n public convertFromStorage<T extends CmsEntryValues = CmsEntryValues>(\n params: ConverterCollectionConvertParams<T>\n ): T | undefined {\n const { fields, values: inputValues } = params;\n if (inputValues === undefined) {\n return undefined;\n }\n\n return fields.reduce<T>((output, field) => {\n const converter = this.getConverter(field.type);\n if (inputValues === null || inputValues.hasOwnProperty(field.storageId) === false) {\n return output;\n }\n const values = converter.convertFromStorage({\n field,\n value: inputValues[field.storageId as keyof T]\n });\n\n return {\n ...output,\n ...values\n };\n }, {} as T);\n }\n\n /**\n * This method attaches hasOwnProperty when received object was created via Object.create(null) - no inheritance of Object.\n * At that point, hasOwnProperty does not exist, and we need to add it.\n *\n * TODO add more checks if required\n */\n private attachHasOwnProperty<T extends CmsEntryValues = CmsEntryValues>(values: T) {\n if (\n // null or undefined?\n values === null ||\n values === undefined ||\n // not an object?\n typeof values !== \"object\" ||\n // maybe it's an array?\n Array.isArray(values) ||\n // and in the end, check if hasOwnProperty is a function already\n typeof values?.hasOwnProperty === \"function\"\n ) {\n return;\n }\n Object.defineProperty(values, \"hasOwnProperty\", {\n enumerable: false,\n writable: false,\n value: function (property: string) {\n return this[property] !== undefined;\n }\n });\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,11 @@
1
1
  import type { PluginsContainer } from "@webiny/plugins";
2
2
  import type { CmsModelConverterCallable } from "./ConverterCollection.js";
3
3
  import type { CmsEntryValues, CmsModel } from "../../types/index.js";
4
+ import type { CmsModelFieldToGraphQLRegistry } from "../../features/graphql/index.js";
4
5
  interface Params {
5
6
  model: Pick<CmsModel, "fields">;
6
7
  plugins: PluginsContainer;
8
+ fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;
7
9
  }
8
10
  export declare const createValueKeyFromStorageConverter: <T extends CmsEntryValues = CmsEntryValues>(params: Params) => CmsModelConverterCallable<T>;
9
11
  export {};
@@ -2,10 +2,12 @@ import { ConverterCollection } from "./ConverterCollection.js";
2
2
  export const createValueKeyFromStorageConverter = params => {
3
3
  const {
4
4
  plugins,
5
- model
5
+ model,
6
+ fieldRegistry
6
7
  } = params;
7
8
  const converters = new ConverterCollection({
8
- plugins
9
+ plugins,
10
+ fieldRegistry
9
11
  });
10
12
  return ({
11
13
  fields,
@@ -1 +1 @@
1
- {"version":3,"names":["ConverterCollection","createValueKeyFromStorageConverter","params","plugins","model","converters","fields","values","result","convertFromStorage"],"sources":["valueKeyFromStorageConverter.ts"],"sourcesContent":["import type { PluginsContainer } from \"@webiny/plugins\";\nimport type { CmsModelConverterCallable } from \"./ConverterCollection.js\";\nimport { ConverterCollection } from \"./ConverterCollection.js\";\nimport type { CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport type { ConverterCollectionConvertParams } from \"./types.js\";\n\ninterface Params {\n model: Pick<CmsModel, \"fields\">;\n plugins: PluginsContainer;\n}\n\nexport const createValueKeyFromStorageConverter = <T extends CmsEntryValues = CmsEntryValues>(\n params: Params\n): CmsModelConverterCallable<T> => {\n const { plugins, model } = params;\n\n const converters = new ConverterCollection({\n plugins\n });\n\n return <T extends CmsEntryValues = CmsEntryValues>({\n fields,\n values\n }: ConverterCollectionConvertParams<T>) => {\n const result = converters.convertFromStorage<T>({\n fields: fields || model.fields,\n values\n });\n return result || ({} as T);\n };\n};\n"],"mappings":"AAEA,SAASA,mBAAmB;AAS5B,OAAO,MAAMC,kCAAkC,GAC3CC,MAAc,IACiB;EAC/B,MAAM;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGF,MAAM;EAEjC,MAAMG,UAAU,GAAG,IAAIL,mBAAmB,CAAC;IACvCG;EACJ,CAAC,CAAC;EAEF,OAAO,CAA4C;IAC/CG,MAAM;IACNC;EACiC,CAAC,KAAK;IACvC,MAAMC,MAAM,GAAGH,UAAU,CAACI,kBAAkB,CAAI;MAC5CH,MAAM,EAAEA,MAAM,IAAIF,KAAK,CAACE,MAAM;MAC9BC;IACJ,CAAC,CAAC;IACF,OAAOC,MAAM,IAAK,CAAC,CAAO;EAC9B,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ConverterCollection","createValueKeyFromStorageConverter","params","plugins","model","fieldRegistry","converters","fields","values","result","convertFromStorage"],"sources":["valueKeyFromStorageConverter.ts"],"sourcesContent":["import type { PluginsContainer } from \"@webiny/plugins\";\nimport type { CmsModelConverterCallable } from \"./ConverterCollection.js\";\nimport { ConverterCollection } from \"./ConverterCollection.js\";\nimport type { CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport type { ConverterCollectionConvertParams } from \"./types.js\";\nimport type { CmsModelFieldToGraphQLRegistry } from \"~/features/graphql/index.js\";\n\ninterface Params {\n model: Pick<CmsModel, \"fields\">;\n plugins: PluginsContainer;\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\n\nexport const createValueKeyFromStorageConverter = <T extends CmsEntryValues = CmsEntryValues>(\n params: Params\n): CmsModelConverterCallable<T> => {\n const { plugins, model, fieldRegistry } = params;\n\n const converters = new ConverterCollection({\n plugins,\n fieldRegistry\n });\n\n return <T extends CmsEntryValues = CmsEntryValues>({\n fields,\n values\n }: ConverterCollectionConvertParams<T>) => {\n const result = converters.convertFromStorage<T>({\n fields: fields || model.fields,\n values\n });\n return result || ({} as T);\n };\n};\n"],"mappings":"AAEA,SAASA,mBAAmB;AAW5B,OAAO,MAAMC,kCAAkC,GAC3CC,MAAc,IACiB;EAC/B,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAc,CAAC,GAAGH,MAAM;EAEhD,MAAMI,UAAU,GAAG,IAAIN,mBAAmB,CAAC;IACvCG,OAAO;IACPE;EACJ,CAAC,CAAC;EAEF,OAAO,CAA4C;IAC/CE,MAAM;IACNC;EACiC,CAAC,KAAK;IACvC,MAAMC,MAAM,GAAGH,UAAU,CAACI,kBAAkB,CAAI;MAC5CH,MAAM,EAAEA,MAAM,IAAIH,KAAK,CAACG,MAAM;MAC9BC;IACJ,CAAC,CAAC;IACF,OAAOC,MAAM,IAAK,CAAC,CAAO;EAC9B,CAAC;AACL,CAAC","ignoreList":[]}
@@ -1,3 +1,2 @@
1
- import type { PluginsContainer } from "@webiny/plugins";
2
- import type { CmsEntryValues, CmsModel, StorageOperationsCmsModel } from "../../types/index.js";
3
- export declare const createCmsModelFieldConvertersAttachFactory: (plugins: PluginsContainer) => <T extends CmsEntryValues = CmsEntryValues>(model: StorageOperationsCmsModel | CmsModel) => StorageOperationsCmsModel<T>;
1
+ import type { CmsContext, CmsEntryValues, CmsModel, StorageOperationsCmsModel } from "../../types/index.js";
2
+ export declare const createCmsModelFieldConvertersAttachFactory: (context: CmsContext) => <T extends CmsEntryValues = CmsEntryValues>(model: StorageOperationsCmsModel | CmsModel) => StorageOperationsCmsModel<T>;
@@ -1,20 +1,24 @@
1
1
  import { createValueKeyToStorageConverter } from "./valueKeyToStorageConverter.js";
2
2
  import { createValueKeyFromStorageConverter } from "./valueKeyFromStorageConverter.js";
3
- export const createCmsModelFieldConvertersAttachFactory = plugins => {
3
+ import { CmsModelFieldToGraphQLRegistry } from "../../features/graphql/index.js";
4
+ export const createCmsModelFieldConvertersAttachFactory = context => {
4
5
  return model => {
5
6
  const storageModel = model;
6
7
  if (!!storageModel.convertValueKeyToStorage && !!storageModel.convertValueKeyFromStorage) {
7
8
  return storageModel;
8
9
  }
10
+ const fieldRegistry = context.container.resolve(CmsModelFieldToGraphQLRegistry);
9
11
  return {
10
12
  ...model,
11
13
  convertValueKeyToStorage: createValueKeyToStorageConverter({
12
14
  model,
13
- plugins
15
+ plugins: context.plugins,
16
+ fieldRegistry
14
17
  }),
15
18
  convertValueKeyFromStorage: createValueKeyFromStorageConverter({
16
19
  model,
17
- plugins
20
+ plugins: context.plugins,
21
+ fieldRegistry
18
22
  })
19
23
  };
20
24
  };
@@ -1 +1 @@
1
- {"version":3,"names":["createValueKeyToStorageConverter","createValueKeyFromStorageConverter","createCmsModelFieldConvertersAttachFactory","plugins","model","storageModel","convertValueKeyToStorage","convertValueKeyFromStorage"],"sources":["valueKeyStorageConverter.ts"],"sourcesContent":["import type { PluginsContainer } from \"@webiny/plugins\";\nimport type { CmsEntryValues, CmsModel, StorageOperationsCmsModel } from \"~/types/index.js\";\nimport { createValueKeyToStorageConverter } from \"./valueKeyToStorageConverter.js\";\nimport { createValueKeyFromStorageConverter } from \"./valueKeyFromStorageConverter.js\";\n\nexport const createCmsModelFieldConvertersAttachFactory = (plugins: PluginsContainer) => {\n return <T extends CmsEntryValues = CmsEntryValues>(\n model: StorageOperationsCmsModel | CmsModel\n ): StorageOperationsCmsModel<T> => {\n const storageModel = model as Partial<StorageOperationsCmsModel<T>>;\n if (!!storageModel.convertValueKeyToStorage && !!storageModel.convertValueKeyFromStorage) {\n return storageModel as StorageOperationsCmsModel<T>;\n }\n return {\n ...model,\n convertValueKeyToStorage: createValueKeyToStorageConverter<T>({\n model,\n plugins\n }),\n convertValueKeyFromStorage: createValueKeyFromStorageConverter<T>({\n model,\n plugins\n })\n };\n };\n};\n"],"mappings":"AAEA,SAASA,gCAAgC;AACzC,SAASC,kCAAkC;AAE3C,OAAO,MAAMC,0CAA0C,GAAIC,OAAyB,IAAK;EACrF,OACIC,KAA2C,IACZ;IAC/B,MAAMC,YAAY,GAAGD,KAA8C;IACnE,IAAI,CAAC,CAACC,YAAY,CAACC,wBAAwB,IAAI,CAAC,CAACD,YAAY,CAACE,0BAA0B,EAAE;MACtF,OAAOF,YAAY;IACvB;IACA,OAAO;MACH,GAAGD,KAAK;MACRE,wBAAwB,EAAEN,gCAAgC,CAAI;QAC1DI,KAAK;QACLD;MACJ,CAAC,CAAC;MACFI,0BAA0B,EAAEN,kCAAkC,CAAI;QAC9DG,KAAK;QACLD;MACJ,CAAC;IACL,CAAC;EACL,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createValueKeyToStorageConverter","createValueKeyFromStorageConverter","CmsModelFieldToGraphQLRegistry","createCmsModelFieldConvertersAttachFactory","context","model","storageModel","convertValueKeyToStorage","convertValueKeyFromStorage","fieldRegistry","container","resolve","plugins"],"sources":["valueKeyStorageConverter.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntryValues,\n CmsModel,\n StorageOperationsCmsModel\n} from \"~/types/index.js\";\nimport { createValueKeyToStorageConverter } from \"./valueKeyToStorageConverter.js\";\nimport { createValueKeyFromStorageConverter } from \"./valueKeyFromStorageConverter.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"~/features/graphql/index.js\";\n\nexport const createCmsModelFieldConvertersAttachFactory = (context: CmsContext) => {\n return <T extends CmsEntryValues = CmsEntryValues>(\n model: StorageOperationsCmsModel | CmsModel\n ): StorageOperationsCmsModel<T> => {\n const storageModel = model as Partial<StorageOperationsCmsModel<T>>;\n if (!!storageModel.convertValueKeyToStorage && !!storageModel.convertValueKeyFromStorage) {\n return storageModel as StorageOperationsCmsModel<T>;\n }\n\n const fieldRegistry = context.container.resolve(CmsModelFieldToGraphQLRegistry);\n return {\n ...model,\n convertValueKeyToStorage: createValueKeyToStorageConverter<T>({\n model,\n plugins: context.plugins,\n fieldRegistry\n }),\n convertValueKeyFromStorage: createValueKeyFromStorageConverter<T>({\n model,\n plugins: context.plugins,\n fieldRegistry\n })\n };\n };\n};\n"],"mappings":"AAMA,SAASA,gCAAgC;AACzC,SAASC,kCAAkC;AAC3C,SAASC,8BAA8B;AAEvC,OAAO,MAAMC,0CAA0C,GAAIC,OAAmB,IAAK;EAC/E,OACIC,KAA2C,IACZ;IAC/B,MAAMC,YAAY,GAAGD,KAA8C;IACnE,IAAI,CAAC,CAACC,YAAY,CAACC,wBAAwB,IAAI,CAAC,CAACD,YAAY,CAACE,0BAA0B,EAAE;MACtF,OAAOF,YAAY;IACvB;IAEA,MAAMG,aAAa,GAAGL,OAAO,CAACM,SAAS,CAACC,OAAO,CAACT,8BAA8B,CAAC;IAC/E,OAAO;MACH,GAAGG,KAAK;MACRE,wBAAwB,EAAEP,gCAAgC,CAAI;QAC1DK,KAAK;QACLO,OAAO,EAAER,OAAO,CAACQ,OAAO;QACxBH;MACJ,CAAC,CAAC;MACFD,0BAA0B,EAAEP,kCAAkC,CAAI;QAC9DI,KAAK;QACLO,OAAO,EAAER,OAAO,CAACQ,OAAO;QACxBH;MACJ,CAAC;IACL,CAAC;EACL,CAAC;AACL,CAAC","ignoreList":[]}
@@ -1,9 +1,11 @@
1
1
  import type { PluginsContainer } from "@webiny/plugins";
2
2
  import type { CmsModelConverterCallable } from "./ConverterCollection.js";
3
3
  import type { CmsEntryValues, CmsModel } from "../../types/index.js";
4
+ import type { CmsModelFieldToGraphQLRegistry } from "../../features/graphql/index.js";
4
5
  interface Params {
5
6
  model: Pick<CmsModel, "fields">;
6
7
  plugins: PluginsContainer;
8
+ fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;
7
9
  }
8
10
  export declare const createValueKeyToStorageConverter: <T extends CmsEntryValues = CmsEntryValues>(params: Params) => CmsModelConverterCallable<T>;
9
11
  export {};
@@ -2,10 +2,12 @@ import { ConverterCollection } from "./ConverterCollection.js";
2
2
  export const createValueKeyToStorageConverter = params => {
3
3
  const {
4
4
  plugins,
5
- model
5
+ model,
6
+ fieldRegistry
6
7
  } = params;
7
8
  const converters = new ConverterCollection({
8
- plugins
9
+ plugins,
10
+ fieldRegistry
9
11
  });
10
12
  return ({
11
13
  fields,
@@ -1 +1 @@
1
- {"version":3,"names":["ConverterCollection","createValueKeyToStorageConverter","params","plugins","model","converters","fields","values","result","convertToStorage"],"sources":["valueKeyToStorageConverter.ts"],"sourcesContent":["import type { PluginsContainer } from \"@webiny/plugins\";\nimport type { CmsModelConverterCallable } from \"./ConverterCollection.js\";\nimport { ConverterCollection } from \"./ConverterCollection.js\";\nimport type { CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport type { ConverterCollectionConvertParams } from \"./types.js\";\n\ninterface Params {\n model: Pick<CmsModel, \"fields\">;\n plugins: PluginsContainer;\n}\n\nexport const createValueKeyToStorageConverter = <T extends CmsEntryValues = CmsEntryValues>(\n params: Params\n): CmsModelConverterCallable<T> => {\n const { plugins, model } = params;\n\n const converters = new ConverterCollection({\n plugins\n });\n\n return <T extends CmsEntryValues = CmsEntryValues>({\n fields,\n values\n }: ConverterCollectionConvertParams<T>) => {\n const result = converters.convertToStorage<T>({\n fields: fields || model.fields,\n values\n });\n return result || ({} as T);\n };\n};\n"],"mappings":"AAEA,SAASA,mBAAmB;AAS5B,OAAO,MAAMC,gCAAgC,GACzCC,MAAc,IACiB;EAC/B,MAAM;IAAEC,OAAO;IAAEC;EAAM,CAAC,GAAGF,MAAM;EAEjC,MAAMG,UAAU,GAAG,IAAIL,mBAAmB,CAAC;IACvCG;EACJ,CAAC,CAAC;EAEF,OAAO,CAA4C;IAC/CG,MAAM;IACNC;EACiC,CAAC,KAAK;IACvC,MAAMC,MAAM,GAAGH,UAAU,CAACI,gBAAgB,CAAI;MAC1CH,MAAM,EAAEA,MAAM,IAAIF,KAAK,CAACE,MAAM;MAC9BC;IACJ,CAAC,CAAC;IACF,OAAOC,MAAM,IAAK,CAAC,CAAO;EAC9B,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ConverterCollection","createValueKeyToStorageConverter","params","plugins","model","fieldRegistry","converters","fields","values","result","convertToStorage"],"sources":["valueKeyToStorageConverter.ts"],"sourcesContent":["import type { PluginsContainer } from \"@webiny/plugins\";\nimport type { CmsModelConverterCallable } from \"./ConverterCollection.js\";\nimport { ConverterCollection } from \"./ConverterCollection.js\";\nimport type { CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport type { ConverterCollectionConvertParams } from \"./types.js\";\nimport type { CmsModelFieldToGraphQLRegistry } from \"~/features/graphql/index.js\";\n\ninterface Params {\n model: Pick<CmsModel, \"fields\">;\n plugins: PluginsContainer;\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\n\nexport const createValueKeyToStorageConverter = <T extends CmsEntryValues = CmsEntryValues>(\n params: Params\n): CmsModelConverterCallable<T> => {\n const { plugins, model, fieldRegistry } = params;\n\n const converters = new ConverterCollection({\n plugins,\n fieldRegistry\n });\n\n return <T extends CmsEntryValues = CmsEntryValues>({\n fields,\n values\n }: ConverterCollectionConvertParams<T>) => {\n const result = converters.convertToStorage<T>({\n fields: fields || model.fields,\n values\n });\n return result || ({} as T);\n };\n};\n"],"mappings":"AAEA,SAASA,mBAAmB;AAW5B,OAAO,MAAMC,gCAAgC,GACzCC,MAAc,IACiB;EAC/B,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAc,CAAC,GAAGH,MAAM;EAEhD,MAAMI,UAAU,GAAG,IAAIN,mBAAmB,CAAC;IACvCG,OAAO;IACPE;EACJ,CAAC,CAAC;EAEF,OAAO,CAA4C;IAC/CE,MAAM;IACNC;EACiC,CAAC,KAAK;IACvC,MAAMC,MAAM,GAAGH,UAAU,CAACI,gBAAgB,CAAI;MAC1CH,MAAM,EAAEA,MAAM,IAAIH,KAAK,CAACG,MAAM;MAC9BC;IACJ,CAAC,CAAC;IACF,OAAOC,MAAM,IAAK,CAAC,CAAO;EAC9B,CAAC;AACL,CAAC","ignoreList":[]}
@@ -1,4 +1,5 @@
1
- import type { ApiEndpoint, CmsFieldTypePlugins, CmsModel, CmsModelField } from "../types/index.js";
1
+ import type { ApiEndpoint, CmsModel, CmsModelField } from "../types/index.js";
2
+ import type { CmsModelFieldToGraphQLRegistry } from "../features/graphql/index.js";
2
3
  interface TypeFromFieldParams {
3
4
  typeOfType: "type" | "input";
4
5
  models: CmsModel[];
@@ -6,7 +7,7 @@ interface TypeFromFieldParams {
6
7
  type: ApiEndpoint;
7
8
  typeNamePrefix: string;
8
9
  fields: CmsModelField[];
9
- fieldTypePlugins: CmsFieldTypePlugins;
10
+ fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;
10
11
  }
11
12
  interface TypeFromFieldResponse {
12
13
  fieldType: string;
@@ -8,7 +8,7 @@ export const createTypeFromFields = params => {
8
8
  type,
9
9
  typeNamePrefix,
10
10
  fields,
11
- fieldTypePlugins
11
+ fieldRegistry
12
12
  } = params;
13
13
  const typeSuffix = typeOfType === "input" ? "Input" : "";
14
14
  const mTypeName = model.singularApiName;
@@ -27,12 +27,12 @@ export const createTypeFromFields = params => {
27
27
  type,
28
28
  models,
29
29
  model,
30
- fieldTypePlugins
30
+ fieldRegistry
31
31
  }) : renderInputField({
32
32
  field,
33
33
  models,
34
34
  model,
35
- fieldTypePlugins
35
+ fieldRegistry
36
36
  });
37
37
  if (!result) {
38
38
  continue;
@@ -1 +1 @@
1
- {"version":3,"names":["renderField","renderInputField","createTypeFromFields","params","typeOfType","model","models","type","typeNamePrefix","fields","fieldTypePlugins","typeSuffix","mTypeName","singularApiName","typeFields","nestedTypes","replace","RegExp","field","result","typeDefs","push","length","fieldType","join"],"sources":["createTypeFromFields.ts"],"sourcesContent":["import { renderField } from \"~/utils/renderFields.js\";\nimport { renderInputField } from \"~/utils/renderInputFields.js\";\nimport type { ApiEndpoint, CmsFieldTypePlugins, CmsModel, CmsModelField } from \"~/types/index.js\";\n\ninterface TypeFromFieldParams {\n typeOfType: \"type\" | \"input\";\n models: CmsModel[];\n model: CmsModel;\n type: ApiEndpoint;\n typeNamePrefix: string;\n fields: CmsModelField[];\n fieldTypePlugins: CmsFieldTypePlugins;\n}\n\ninterface TypeFromFieldResponse {\n fieldType: string;\n typeDefs: string;\n}\n\nexport const createTypeFromFields = (params: TypeFromFieldParams): TypeFromFieldResponse | null => {\n const { typeOfType, model, models, type, typeNamePrefix, fields, fieldTypePlugins } = params;\n const typeSuffix = typeOfType === \"input\" ? \"Input\" : \"\";\n const mTypeName = model.singularApiName;\n\n const typeFields: string[] = [];\n const nestedTypes: string[] = [];\n\n // Once the loop below starts, we'll be executing a recursive \"object\" type generation.\n // The main trick here is that nested objects don't know who the parent is, and will generate\n // type names using the \"model\", as if they're at the top level:\n // Every time the types are returned, we need to replace the model name in the generated type name\n // with the actual prefix which includes parent field name type.\n const replace = new RegExp(`${mTypeName}_`, \"g\");\n\n for (const field of fields) {\n const result =\n typeOfType === \"type\"\n ? renderField({ field, type, models, model, fieldTypePlugins })\n : renderInputField({ field, models, model, fieldTypePlugins });\n\n if (!result) {\n continue;\n }\n\n const { fields, typeDefs } = result;\n\n typeFields.push(fields.replace(replace, `${typeNamePrefix}_`));\n if (typeDefs) {\n nestedTypes.push(typeDefs.replace(replace, `${typeNamePrefix}_`));\n }\n }\n\n if (!typeFields.length) {\n typeFields.push(\"_empty: String\");\n }\n\n return {\n fieldType: `${typeNamePrefix}${typeSuffix}`,\n typeDefs: /* GraphQL */ `\n ${nestedTypes.join(\"\\n\")}\n\n ${typeOfType} ${typeNamePrefix}${typeSuffix} {\n ${typeFields.join(\"\\n\")}\n }\\n\n `\n };\n};\n"],"mappings":"AAAA,SAASA,WAAW;AACpB,SAASC,gBAAgB;AAkBzB,OAAO,MAAMC,oBAAoB,GAAIC,MAA2B,IAAmC;EAC/F,MAAM;IAAEC,UAAU;IAAEC,KAAK;IAAEC,MAAM;IAAEC,IAAI;IAAEC,cAAc;IAAEC,MAAM;IAAEC;EAAiB,CAAC,GAAGP,MAAM;EAC5F,MAAMQ,UAAU,GAAGP,UAAU,KAAK,OAAO,GAAG,OAAO,GAAG,EAAE;EACxD,MAAMQ,SAAS,GAAGP,KAAK,CAACQ,eAAe;EAEvC,MAAMC,UAAoB,GAAG,EAAE;EAC/B,MAAMC,WAAqB,GAAG,EAAE;;EAEhC;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAG,IAAIC,MAAM,CAAC,GAAGL,SAAS,GAAG,EAAE,GAAG,CAAC;EAEhD,KAAK,MAAMM,KAAK,IAAIT,MAAM,EAAE;IACxB,MAAMU,MAAM,GACRf,UAAU,KAAK,MAAM,GACfJ,WAAW,CAAC;MAAEkB,KAAK;MAAEX,IAAI;MAAED,MAAM;MAAED,KAAK;MAAEK;IAAiB,CAAC,CAAC,GAC7DT,gBAAgB,CAAC;MAAEiB,KAAK;MAAEZ,MAAM;MAAED,KAAK;MAAEK;IAAiB,CAAC,CAAC;IAEtE,IAAI,CAACS,MAAM,EAAE;MACT;IACJ;IAEA,MAAM;MAAEV,MAAM;MAAEW;IAAS,CAAC,GAAGD,MAAM;IAEnCL,UAAU,CAACO,IAAI,CAACZ,MAAM,CAACO,OAAO,CAACA,OAAO,EAAE,GAAGR,cAAc,GAAG,CAAC,CAAC;IAC9D,IAAIY,QAAQ,EAAE;MACVL,WAAW,CAACM,IAAI,CAACD,QAAQ,CAACJ,OAAO,CAACA,OAAO,EAAE,GAAGR,cAAc,GAAG,CAAC,CAAC;IACrE;EACJ;EAEA,IAAI,CAACM,UAAU,CAACQ,MAAM,EAAE;IACpBR,UAAU,CAACO,IAAI,CAAC,gBAAgB,CAAC;EACrC;EAEA,OAAO;IACHE,SAAS,EAAE,GAAGf,cAAc,GAAGG,UAAU,EAAE;IAC3CS,QAAQ,EAAE,aAAc;AAChC,cAAcL,WAAW,CAACS,IAAI,CAAC,IAAI,CAAC;AACpC;AACA,cAAcpB,UAAU,IAAII,cAAc,GAAGG,UAAU;AACvD,kBAAkBG,UAAU,CAACU,IAAI,CAAC,IAAI,CAAC;AACvC;AACA;EACI,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["renderField","renderInputField","createTypeFromFields","params","typeOfType","model","models","type","typeNamePrefix","fields","fieldRegistry","typeSuffix","mTypeName","singularApiName","typeFields","nestedTypes","replace","RegExp","field","result","typeDefs","push","length","fieldType","join"],"sources":["createTypeFromFields.ts"],"sourcesContent":["import { renderField } from \"~/utils/renderFields.js\";\nimport { renderInputField } from \"~/utils/renderInputFields.js\";\nimport type { ApiEndpoint, CmsModel, CmsModelField } from \"~/types/index.js\";\nimport type { CmsModelFieldToGraphQLRegistry } from \"~/features/graphql/index.js\";\n\ninterface TypeFromFieldParams {\n typeOfType: \"type\" | \"input\";\n models: CmsModel[];\n model: CmsModel;\n type: ApiEndpoint;\n typeNamePrefix: string;\n fields: CmsModelField[];\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\n\ninterface TypeFromFieldResponse {\n fieldType: string;\n typeDefs: string;\n}\n\nexport const createTypeFromFields = (params: TypeFromFieldParams): TypeFromFieldResponse | null => {\n const { typeOfType, model, models, type, typeNamePrefix, fields, fieldRegistry } = params;\n const typeSuffix = typeOfType === \"input\" ? \"Input\" : \"\";\n const mTypeName = model.singularApiName;\n\n const typeFields: string[] = [];\n const nestedTypes: string[] = [];\n\n // Once the loop below starts, we'll be executing a recursive \"object\" type generation.\n // The main trick here is that nested objects don't know who the parent is, and will generate\n // type names using the \"model\", as if they're at the top level:\n // Every time the types are returned, we need to replace the model name in the generated type name\n // with the actual prefix which includes parent field name type.\n const replace = new RegExp(`${mTypeName}_`, \"g\");\n\n for (const field of fields) {\n const result =\n typeOfType === \"type\"\n ? renderField({ field, type, models, model, fieldRegistry })\n : renderInputField({ field, models, model, fieldRegistry });\n\n if (!result) {\n continue;\n }\n\n const { fields, typeDefs } = result;\n\n typeFields.push(fields.replace(replace, `${typeNamePrefix}_`));\n if (typeDefs) {\n nestedTypes.push(typeDefs.replace(replace, `${typeNamePrefix}_`));\n }\n }\n\n if (!typeFields.length) {\n typeFields.push(\"_empty: String\");\n }\n\n return {\n fieldType: `${typeNamePrefix}${typeSuffix}`,\n typeDefs: /* GraphQL */ `\n ${nestedTypes.join(\"\\n\")}\n\n ${typeOfType} ${typeNamePrefix}${typeSuffix} {\n ${typeFields.join(\"\\n\")}\n }\\n\n `\n };\n};\n"],"mappings":"AAAA,SAASA,WAAW;AACpB,SAASC,gBAAgB;AAmBzB,OAAO,MAAMC,oBAAoB,GAAIC,MAA2B,IAAmC;EAC/F,MAAM;IAAEC,UAAU;IAAEC,KAAK;IAAEC,MAAM;IAAEC,IAAI;IAAEC,cAAc;IAAEC,MAAM;IAAEC;EAAc,CAAC,GAAGP,MAAM;EACzF,MAAMQ,UAAU,GAAGP,UAAU,KAAK,OAAO,GAAG,OAAO,GAAG,EAAE;EACxD,MAAMQ,SAAS,GAAGP,KAAK,CAACQ,eAAe;EAEvC,MAAMC,UAAoB,GAAG,EAAE;EAC/B,MAAMC,WAAqB,GAAG,EAAE;;EAEhC;EACA;EACA;EACA;EACA;EACA,MAAMC,OAAO,GAAG,IAAIC,MAAM,CAAC,GAAGL,SAAS,GAAG,EAAE,GAAG,CAAC;EAEhD,KAAK,MAAMM,KAAK,IAAIT,MAAM,EAAE;IACxB,MAAMU,MAAM,GACRf,UAAU,KAAK,MAAM,GACfJ,WAAW,CAAC;MAAEkB,KAAK;MAAEX,IAAI;MAAED,MAAM;MAAED,KAAK;MAAEK;IAAc,CAAC,CAAC,GAC1DT,gBAAgB,CAAC;MAAEiB,KAAK;MAAEZ,MAAM;MAAED,KAAK;MAAEK;IAAc,CAAC,CAAC;IAEnE,IAAI,CAACS,MAAM,EAAE;MACT;IACJ;IAEA,MAAM;MAAEV,MAAM;MAAEW;IAAS,CAAC,GAAGD,MAAM;IAEnCL,UAAU,CAACO,IAAI,CAACZ,MAAM,CAACO,OAAO,CAACA,OAAO,EAAE,GAAGR,cAAc,GAAG,CAAC,CAAC;IAC9D,IAAIY,QAAQ,EAAE;MACVL,WAAW,CAACM,IAAI,CAACD,QAAQ,CAACJ,OAAO,CAACA,OAAO,EAAE,GAAGR,cAAc,GAAG,CAAC,CAAC;IACrE;EACJ;EAEA,IAAI,CAACM,UAAU,CAACQ,MAAM,EAAE;IACpBR,UAAU,CAACO,IAAI,CAAC,gBAAgB,CAAC;EACrC;EAEA,OAAO;IACHE,SAAS,EAAE,GAAGf,cAAc,GAAGG,UAAU,EAAE;IAC3CS,QAAQ,EAAE,aAAc;AAChC,cAAcL,WAAW,CAACS,IAAI,CAAC,IAAI,CAAC;AACpC;AACA,cAAcpB,UAAU,IAAII,cAAc,GAAGG,UAAU;AACvD,kBAAkBG,UAAU,CAACU,IAAI,CAAC,IAAI,CAAC;AACvC;AACA;EACI,CAAC;AACL,CAAC","ignoreList":[]}
@@ -1,29 +1,22 @@
1
- import { StorageTransformPlugin } from "../plugins/StorageTransformPlugin.js";
2
- import type { CmsContext, CmsEntry, CmsEntryValues, CmsModel, CmsModelField } from "../types/index.js";
3
- export interface GetStoragePluginFactory {
4
- (context: Pick<CmsContext, "plugins">): (fieldType: string) => StorageTransformPlugin<any>;
1
+ import type { CmsContext, CmsEntry, CmsModel, CmsModelField } from "../types/index.js";
2
+ import { StorageTransform } from "../features/storage/index.js";
3
+ export interface GetStorageTransformFactory {
4
+ (context: Pick<CmsContext, "container">): (fieldType: string) => StorageTransform.Interface;
5
5
  }
6
- export declare const getStoragePluginFactory: GetStoragePluginFactory;
6
+ export declare const getStorageTransformFactory: GetStorageTransformFactory;
7
7
  /**
8
8
  * A function that is used in crud to transform entry into the storage type.
9
9
  */
10
- export declare const entryToStorageTransform: (context: Pick<CmsContext, "plugins">, model: CmsModel, entry: CmsEntry) => Promise<CmsEntry>;
10
+ export declare const entryToStorageTransform: (context: Pick<CmsContext, "container">, model: CmsModel, entry: CmsEntry) => Promise<CmsEntry>;
11
11
  /**
12
12
  * A function that is used to transform the whole entry from storage into its native form.
13
13
  */
14
- export declare const entryFromStorageTransform: (context: Pick<CmsContext, "plugins">, model: CmsModel, entry: CmsEntry) => Promise<CmsEntry>;
14
+ export declare const entryFromStorageTransform: (context: Pick<CmsContext, "container">, model: CmsModel, entry: CmsEntry) => Promise<CmsEntry>;
15
15
  interface EntryFieldFromStorageTransformParams {
16
- context: Pick<CmsContext, "plugins">;
16
+ context: Pick<CmsContext, "container">;
17
17
  model: CmsModel;
18
18
  field: CmsModelField;
19
19
  value: any;
20
20
  }
21
21
  export declare const entryFieldFromStorageTransform: <T = any>(params: EntryFieldFromStorageTransformParams) => Promise<T>;
22
- export interface ICreateTransformEntryCallable {
23
- context: Pick<CmsContext, "plugins">;
24
- }
25
- export interface ITransformEntryCallable<T extends CmsEntryValues = CmsEntryValues> {
26
- (model: CmsModel, entry: CmsEntry): Promise<CmsEntry<T>>;
27
- }
28
- export declare const createTransformEntryCallable: (params: ICreateTransformEntryCallable) => ITransformEntryCallable;
29
22
  export {};
@@ -1,28 +1,21 @@
1
- import WebinyError from "@webiny/error";
2
- import { StorageTransformPlugin } from "../plugins/StorageTransformPlugin.js";
3
1
  import { getBaseFieldType } from "./getBaseFieldType.js";
4
- export const getStoragePluginFactory = context => {
5
- let defaultStoragePlugin;
6
- const plugins = context.plugins.byType(StorageTransformPlugin.type)
7
- // we reverse plugins because we want to get latest added only
8
- .reverse().reduce((collection, plugin) => {
9
- /**
10
- * Check if it's a default plugin and set it - always override the previous one.
11
- */
12
- if (plugin.fieldType === "*") {
13
- defaultStoragePlugin = plugin;
14
- return collection;
2
+ import { StorageTransformRegistry } from "../features/storage/index.js";
3
+ export const getStorageTransformFactory = context => {
4
+ const registry = context.container.resolve(StorageTransformRegistry);
5
+ const result = {};
6
+ let defaultStorageTransform;
7
+ const storageTransforms = registry.getAll().toReversed();
8
+ for (const storageTransform of storageTransforms) {
9
+ if (storageTransform.fieldType === "*") {
10
+ defaultStorageTransform = storageTransform;
15
11
  }
16
-
17
- /**
18
- * We will just set the plugin for given type.
19
- * The last one will override existing one - so users can override our default ones.
20
- */
21
- collection[plugin.fieldType] = plugin;
22
- return collection;
23
- }, {});
24
- return fieldType => {
25
- return plugins[fieldType] || defaultStoragePlugin;
12
+ result[storageTransform.fieldType] = storageTransform;
13
+ }
14
+ return type => {
15
+ const fieldType = getBaseFieldType({
16
+ type
17
+ });
18
+ return result[fieldType] || defaultStorageTransform;
26
19
  };
27
20
  };
28
21
  const doNotTouchProperty = Symbol("__DO_NOT_TOUCH_AS_WE_USE_IT_TO_SKIP_UNNECESSARY_OPERATIONS");
@@ -38,31 +31,24 @@ const entryStorageTransform = async (context, model, operation, entry) => {
38
31
  if (entry[doNotTouchProperty] === operation) {
39
32
  return entry;
40
33
  }
41
- const getStoragePlugin = getStoragePluginFactory(context);
42
- const transformedValues = {};
43
- for (const field of model.fields) {
44
- /**
45
- * We can safely skip fields that are not present in the entry values.
46
- */
47
- if (entry.values.hasOwnProperty(field.fieldId) === false) {
48
- continue;
49
- }
34
+ const getStorageTransform = getStorageTransformFactory(context);
35
+ const fieldValues = model.fields.filter(field => {
36
+ return entry.values.hasOwnProperty(field.fieldId);
37
+ }).map(async field => {
50
38
  const key = field.fieldId;
51
39
  const value = entry.values[key];
52
40
  const baseType = getBaseFieldType(field);
53
- const plugin = getStoragePlugin(baseType);
54
- // TODO: remove this once plugins are converted into classes
55
- if (typeof plugin[operation] !== "function") {
56
- throw new WebinyError(`Missing "${operation}" function in storage plugin "${plugin.name}" for field type "${baseType}"`);
57
- }
58
- transformedValues[key] = await plugin[operation]({
59
- plugins: context.plugins,
41
+ const storageTransform = getStorageTransform(baseType);
42
+ const transformed = await storageTransform[operation]({
60
43
  model,
61
44
  field,
62
45
  value,
63
- getStoragePlugin
46
+ getStorageTransform
64
47
  });
65
- }
48
+ return [key, transformed];
49
+ });
50
+ const results = await Promise.all(fieldValues);
51
+ const transformedValues = Object.fromEntries(results);
66
52
  const result = {
67
53
  ...entry,
68
54
  values: transformedValues
@@ -101,29 +87,15 @@ export const entryFieldFromStorageTransform = async params => {
101
87
  field,
102
88
  value
103
89
  } = params;
104
- const getStoragePlugin = getStoragePluginFactory(context);
90
+ const getStorageTransform = getStorageTransformFactory(context);
105
91
  const baseType = getBaseFieldType(field);
106
- const plugin = getStoragePlugin(baseType);
107
-
108
- // TODO: remove this once plugins are converted into classes
109
- if (typeof plugin.fromStorage !== "function") {
110
- throw new WebinyError(`Missing "fromStorage" function in storage plugin "${plugin.name}" for field type "${baseType}"`);
111
- }
112
- return plugin.fromStorage({
113
- plugins: context.plugins,
92
+ const storageTransform = getStorageTransform(baseType);
93
+ return storageTransform.fromStorage({
114
94
  model,
115
95
  field,
116
96
  value,
117
- getStoragePlugin
97
+ getStorageTransform
118
98
  });
119
99
  };
120
- export const createTransformEntryCallable = params => {
121
- const {
122
- context
123
- } = params;
124
- return async (model, entry) => {
125
- return entryFromStorageTransform(context, model, entry);
126
- };
127
- };
128
100
 
129
101
  //# sourceMappingURL=entryStorage.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["WebinyError","StorageTransformPlugin","getBaseFieldType","getStoragePluginFactory","context","defaultStoragePlugin","plugins","byType","type","reverse","reduce","collection","plugin","fieldType","doNotTouchProperty","Symbol","entryStorageTransform","model","operation","entry","getStoragePlugin","transformedValues","field","fields","values","hasOwnProperty","fieldId","key","value","baseType","name","result","Object","defineProperty","enumerable","configurable","entryToStorageTransform","entryFromStorageTransform","entryFieldFromStorageTransform","params","fromStorage","createTransformEntryCallable"],"sources":["entryStorage.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"~/plugins/StorageTransformPlugin.js\";\nimport type {\n CmsContext,\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CmsModelField\n} from \"~/types/index.js\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\n\nexport interface GetStoragePluginFactory {\n (context: Pick<CmsContext, \"plugins\">): (fieldType: string) => StorageTransformPlugin<any>;\n}\n\nexport const getStoragePluginFactory: GetStoragePluginFactory = context => {\n let defaultStoragePlugin: StorageTransformPlugin;\n\n const plugins = context.plugins\n .byType<StorageTransformPlugin>(StorageTransformPlugin.type)\n // we reverse plugins because we want to get latest added only\n .reverse()\n .reduce(\n (collection, plugin) => {\n /**\n * Check if it's a default plugin and set it - always override the previous one.\n */\n if (plugin.fieldType === \"*\") {\n defaultStoragePlugin = plugin;\n return collection;\n }\n\n /**\n * We will just set the plugin for given type.\n * The last one will override existing one - so users can override our default ones.\n */\n collection[plugin.fieldType] = plugin;\n\n return collection;\n },\n {} as Record<string, StorageTransformPlugin>\n );\n\n return (fieldType: string) => {\n return plugins[fieldType] || defaultStoragePlugin;\n };\n};\n\nconst doNotTouchProperty = Symbol(\"__DO_NOT_TOUCH_AS_WE_USE_IT_TO_SKIP_UNNECESSARY_OPERATIONS\");\n\n/**\n * This should be used when transforming the whole entry.\n */\nconst entryStorageTransform = async <T extends CmsEntryValues = CmsEntryValues>(\n context: Pick<CmsContext, \"plugins\">,\n model: CmsModel,\n operation: \"toStorage\" | \"fromStorage\",\n entry: CmsEntry<T>\n): Promise<CmsEntry<T>> => {\n /**\n * We use this property to skip unnecessary operations.\n */\n // @ts-expect-error\n if (entry[doNotTouchProperty] === operation) {\n return entry;\n }\n\n const getStoragePlugin = getStoragePluginFactory(context);\n\n const transformedValues: T = {} as T;\n for (const field of model.fields) {\n /**\n * We can safely skip fields that are not present in the entry values.\n */\n if (entry.values.hasOwnProperty(field.fieldId) === false) {\n continue;\n }\n const key = field.fieldId as keyof T;\n const value = entry.values[key];\n\n const baseType = getBaseFieldType(field);\n const plugin = getStoragePlugin(baseType);\n // TODO: remove this once plugins are converted into classes\n if (typeof plugin[operation] !== \"function\") {\n throw new WebinyError(\n `Missing \"${operation}\" function in storage plugin \"${plugin.name}\" for field type \"${baseType}\"`\n );\n }\n\n transformedValues[key] = await plugin[operation]({\n plugins: context.plugins,\n model,\n field,\n value,\n getStoragePlugin\n });\n }\n\n const result = {\n ...entry,\n values: transformedValues\n };\n /**\n * We need to assign the variable so that we can skip unnecessary operations next time.\n */\n Object.defineProperty(result, doNotTouchProperty, {\n enumerable: false,\n value: operation,\n configurable: true\n });\n\n return result;\n};\n\n/**\n * A function that is used in crud to transform entry into the storage type.\n */\nexport const entryToStorageTransform = async (\n context: Pick<CmsContext, \"plugins\">,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"toStorage\", entry);\n};\n\n/**\n * A function that is used to transform the whole entry from storage into its native form.\n */\nexport const entryFromStorageTransform = async (\n context: Pick<CmsContext, \"plugins\">,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"fromStorage\", entry);\n};\n\ninterface EntryFieldFromStorageTransformParams {\n context: Pick<CmsContext, \"plugins\">;\n model: CmsModel;\n field: CmsModelField;\n value: any;\n}\n/*\n * A function that is used to transform a single field from storage\n */\nexport const entryFieldFromStorageTransform = async <T = any>(\n params: EntryFieldFromStorageTransformParams\n): Promise<T> => {\n const { context, model, field, value } = params;\n const getStoragePlugin = getStoragePluginFactory(context);\n\n const baseType = getBaseFieldType(field);\n const plugin = getStoragePlugin(baseType);\n\n // TODO: remove this once plugins are converted into classes\n if (typeof plugin.fromStorage !== \"function\") {\n throw new WebinyError(\n `Missing \"fromStorage\" function in storage plugin \"${plugin.name}\" for field type \"${baseType}\"`\n );\n }\n\n return plugin.fromStorage({\n plugins: context.plugins,\n model,\n field,\n value,\n getStoragePlugin\n });\n};\n\nexport interface ICreateTransformEntryCallable {\n context: Pick<CmsContext, \"plugins\">;\n}\n\nexport interface ITransformEntryCallable<T extends CmsEntryValues = CmsEntryValues> {\n (model: CmsModel, entry: CmsEntry): Promise<CmsEntry<T>>;\n}\n\nexport const createTransformEntryCallable = (\n params: ICreateTransformEntryCallable\n): ITransformEntryCallable => {\n const { context } = params;\n\n return async (model, entry) => {\n return entryFromStorageTransform(context, model, entry);\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getBaseFieldType","StorageTransformRegistry","getStorageTransformFactory","context","registry","container","resolve","result","defaultStorageTransform","storageTransforms","getAll","toReversed","storageTransform","fieldType","type","doNotTouchProperty","Symbol","entryStorageTransform","model","operation","entry","getStorageTransform","fieldValues","fields","filter","field","values","hasOwnProperty","fieldId","map","key","value","baseType","transformed","results","Promise","all","transformedValues","Object","fromEntries","defineProperty","enumerable","configurable","entryToStorageTransform","entryFromStorageTransform","entryFieldFromStorageTransform","params","fromStorage"],"sources":["entryStorage.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CmsModelField\n} from \"~/types/index.js\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType.js\";\nimport { StorageTransform, StorageTransformRegistry } from \"~/features/storage/index.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface GetStorageTransformFactory {\n (context: Pick<CmsContext, \"container\">): (fieldType: string) => StorageTransform.Interface;\n}\n\nexport const getStorageTransformFactory: GetStorageTransformFactory = context => {\n const registry = context.container.resolve(StorageTransformRegistry);\n\n const result: GenericRecord<string, StorageTransform.Interface> = {};\n let defaultStorageTransform: StorageTransform.Interface;\n\n const storageTransforms = registry.getAll().toReversed();\n\n for (const storageTransform of storageTransforms) {\n if (storageTransform.fieldType === \"*\") {\n defaultStorageTransform = storageTransform;\n }\n result[storageTransform.fieldType] = storageTransform;\n }\n\n return (type: string) => {\n const fieldType = getBaseFieldType({\n type\n });\n return result[fieldType] || defaultStorageTransform;\n };\n};\n\nconst doNotTouchProperty = Symbol(\"__DO_NOT_TOUCH_AS_WE_USE_IT_TO_SKIP_UNNECESSARY_OPERATIONS\");\n\n/**\n * This should be used when transforming the whole entry.\n */\nconst entryStorageTransform = async <T extends CmsEntryValues = CmsEntryValues>(\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n operation: \"toStorage\" | \"fromStorage\",\n entry: CmsEntry<T>\n): Promise<CmsEntry<T>> => {\n /**\n * We use this property to skip unnecessary operations.\n */\n // @ts-expect-error\n if (entry[doNotTouchProperty] === operation) {\n return entry;\n }\n\n const getStorageTransform = getStorageTransformFactory(context);\n\n const fieldValues = model.fields\n .filter(field => {\n return entry.values.hasOwnProperty(field.fieldId);\n })\n .map(async field => {\n const key = field.fieldId as keyof T;\n const value = entry.values[key];\n const baseType = getBaseFieldType(field);\n const storageTransform = getStorageTransform(baseType);\n const transformed = await storageTransform[operation]({\n model,\n field,\n value,\n getStorageTransform\n });\n return [key, transformed] as const;\n });\n\n const results = await Promise.all(fieldValues);\n const transformedValues = Object.fromEntries(results) as T;\n\n const result = {\n ...entry,\n values: transformedValues\n };\n /**\n * We need to assign the variable so that we can skip unnecessary operations next time.\n */\n Object.defineProperty(result, doNotTouchProperty, {\n enumerable: false,\n value: operation,\n configurable: true\n });\n\n return result;\n};\n\n/**\n * A function that is used in crud to transform entry into the storage type.\n */\nexport const entryToStorageTransform = async (\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"toStorage\", entry);\n};\n\n/**\n * A function that is used to transform the whole entry from storage into its native form.\n */\nexport const entryFromStorageTransform = async (\n context: Pick<CmsContext, \"container\">,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"fromStorage\", entry);\n};\n\ninterface EntryFieldFromStorageTransformParams {\n context: Pick<CmsContext, \"container\">;\n model: CmsModel;\n field: CmsModelField;\n value: any;\n}\n/*\n * A function that is used to transform a single field from storage\n */\nexport const entryFieldFromStorageTransform = async <T = any>(\n params: EntryFieldFromStorageTransformParams\n): Promise<T> => {\n const { context, model, field, value } = params;\n const getStorageTransform = getStorageTransformFactory(context);\n\n const baseType = getBaseFieldType(field);\n const storageTransform = getStorageTransform(baseType);\n\n return storageTransform.fromStorage({\n model,\n field,\n value,\n getStorageTransform\n });\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,7 @@
1
1
  export const getBaseFieldType = field => {
2
+ if (field.type.includes(":") === false) {
3
+ return field.type;
4
+ }
2
5
  return field.type.split(":")[0];
3
6
  };
4
7
 
@@ -1 +1 @@
1
- {"version":3,"names":["getBaseFieldType","field","type","split"],"sources":["getBaseFieldType.ts"],"sourcesContent":["import type { CmsModelField } from \"~/types/index.js\";\n\nexport const getBaseFieldType = (field: Pick<CmsModelField, \"type\">) => {\n return field.type.split(\":\")[0];\n};\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAgB,GAAIC,KAAkC,IAAK;EACpE,OAAOA,KAAK,CAACC,IAAI,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["getBaseFieldType","field","type","includes","split"],"sources":["getBaseFieldType.ts"],"sourcesContent":["import type { CmsModelField } from \"~/types/index.js\";\n\nexport const getBaseFieldType = (field: Pick<CmsModelField, \"type\">) => {\n if (field.type.includes(\":\") === false) {\n return field.type;\n }\n return field.type.split(\":\")[0];\n};\n"],"mappings":"AAEA,OAAO,MAAMA,gBAAgB,GAAIC,KAAkC,IAAK;EACpE,IAAIA,KAAK,CAACC,IAAI,CAACC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;IACpC,OAAOF,KAAK,CAACC,IAAI;EACrB;EACA,OAAOD,KAAK,CAACC,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC","ignoreList":[]}