@webiny/api-headless-cms 6.0.0-rc.7 → 6.1.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 (285) hide show
  1. package/crud/contentEntry/entryDataFactories/createEntryData.js +3 -1
  2. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
  3. package/crud/contentEntry.crud.js +0 -11
  4. package/crud/contentEntry.crud.js.map +1 -1
  5. package/crud/contentModel/validation.d.ts +209 -917
  6. package/crud/contentModel/validation.js +52 -29
  7. package/crud/contentModel/validation.js.map +1 -1
  8. package/domain/contentEntry/EntryId.d.ts +1 -0
  9. package/domain/contentEntry/EntryId.js +2 -0
  10. package/domain/contentEntry/EntryId.js.map +1 -1
  11. package/domain/contentEntry/errors.d.ts +2 -2
  12. package/domain/contentEntry/errors.js.map +1 -1
  13. package/domain/contentModel/schemas.d.ts +162 -718
  14. package/domain/contentModel/schemas.js +34 -20
  15. package/domain/contentModel/schemas.js.map +1 -1
  16. package/domain/contentModelGroup/validation.d.ts +34 -82
  17. package/domain/contentModelGroup/validation.js +2 -2
  18. package/domain/contentModelGroup/validation.js.map +1 -1
  19. package/exports/api/cms/entry.d.ts +1 -0
  20. package/exports/api/cms/entry.js +2 -0
  21. package/exports/api/cms/entry.js.map +1 -1
  22. package/exports/api/cms/model.d.ts +5 -2
  23. package/exports/api/cms/model.js +3 -1
  24. package/exports/api/cms/model.js.map +1 -1
  25. package/extensions/entryHooks/OnEntryBeforeCreate.d.ts +2 -6
  26. package/extensions/index.d.ts +2 -6
  27. package/features/contentEntry/ContentEntriesFeature.js +4 -0
  28. package/features/contentEntry/ContentEntriesFeature.js.map +1 -1
  29. package/{utils/contentEntryTraverser → features/contentEntry/ContentEntryTraverser}/ContentEntryTraverser.d.ts +1 -1
  30. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.d.ts +14 -0
  31. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.js +25 -0
  32. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.js.map +1 -0
  33. package/features/contentEntry/ContentEntryTraverser/abstractions.d.ts +12 -0
  34. package/features/contentEntry/ContentEntryTraverser/abstractions.js +7 -0
  35. package/features/contentEntry/ContentEntryTraverser/abstractions.js.map +1 -0
  36. package/features/contentEntry/ContentEntryTraverser/feature.d.ts +1 -0
  37. package/features/contentEntry/ContentEntryTraverser/feature.js +10 -0
  38. package/features/contentEntry/ContentEntryTraverser/feature.js.map +1 -0
  39. package/features/contentEntry/ContentEntryTraverser/index.d.ts +2 -0
  40. package/features/contentEntry/ContentEntryTraverser/index.js +4 -0
  41. package/features/contentEntry/ContentEntryTraverser/index.js.map +1 -0
  42. package/features/contentEntry/CreateEntry/abstractions.d.ts +1 -0
  43. package/features/contentEntry/CreateEntry/abstractions.js +1 -0
  44. package/features/contentEntry/CreateEntry/abstractions.js.map +1 -1
  45. package/features/contentEntry/CreateEntry/events.d.ts +2 -0
  46. package/features/contentEntry/CreateEntry/events.js +4 -0
  47. package/features/contentEntry/CreateEntry/events.js.map +1 -1
  48. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.d.ts +1 -0
  49. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.js +1 -0
  50. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.js.map +1 -1
  51. package/features/contentEntry/CreateEntryRevisionFrom/events.d.ts +2 -0
  52. package/features/contentEntry/CreateEntryRevisionFrom/events.js +4 -0
  53. package/features/contentEntry/CreateEntryRevisionFrom/events.js.map +1 -1
  54. package/features/contentEntry/DeleteEntry/abstractions.d.ts +2 -0
  55. package/features/contentEntry/DeleteEntry/abstractions.js +2 -0
  56. package/features/contentEntry/DeleteEntry/abstractions.js.map +1 -1
  57. package/features/contentEntry/DeleteEntry/events.d.ts +2 -0
  58. package/features/contentEntry/DeleteEntry/events.js +4 -0
  59. package/features/contentEntry/DeleteEntry/events.js.map +1 -1
  60. package/features/contentEntry/DeleteEntryRevision/abstractions.d.ts +1 -0
  61. package/features/contentEntry/DeleteEntryRevision/abstractions.js +1 -0
  62. package/features/contentEntry/DeleteEntryRevision/abstractions.js.map +1 -1
  63. package/features/contentEntry/DeleteEntryRevision/events.d.ts +2 -0
  64. package/features/contentEntry/DeleteEntryRevision/events.js +4 -0
  65. package/features/contentEntry/DeleteEntryRevision/events.js.map +1 -1
  66. package/features/contentEntry/DeleteMultipleEntries/abstractions.d.ts +1 -0
  67. package/features/contentEntry/DeleteMultipleEntries/abstractions.js +1 -0
  68. package/features/contentEntry/DeleteMultipleEntries/abstractions.js.map +1 -1
  69. package/features/contentEntry/DeleteMultipleEntries/events.d.ts +2 -0
  70. package/features/contentEntry/DeleteMultipleEntries/events.js +4 -0
  71. package/features/contentEntry/DeleteMultipleEntries/events.js.map +1 -1
  72. package/features/contentEntry/GetEntriesByIds/abstractions.d.ts +1 -0
  73. package/features/contentEntry/GetEntriesByIds/abstractions.js +1 -0
  74. package/features/contentEntry/GetEntriesByIds/abstractions.js.map +1 -1
  75. package/features/contentEntry/GetEntry/abstractions.d.ts +1 -0
  76. package/features/contentEntry/GetEntry/abstractions.js +1 -0
  77. package/features/contentEntry/GetEntry/abstractions.js.map +1 -1
  78. package/features/contentEntry/GetEntryById/abstractions.d.ts +1 -0
  79. package/features/contentEntry/GetEntryById/abstractions.js +1 -0
  80. package/features/contentEntry/GetEntryById/abstractions.js.map +1 -1
  81. package/features/contentEntry/GetLatestEntriesByIds/abstractions.d.ts +1 -0
  82. package/features/contentEntry/GetLatestEntriesByIds/abstractions.js +1 -0
  83. package/features/contentEntry/GetLatestEntriesByIds/abstractions.js.map +1 -1
  84. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.d.ts +4 -9
  85. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.js +4 -9
  86. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.js.map +1 -1
  87. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.d.ts +2 -3
  88. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.js +2 -3
  89. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.js.map +1 -1
  90. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.d.ts +1 -0
  91. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.js +1 -0
  92. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.js.map +1 -1
  93. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.d.ts +1 -0
  94. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.js +1 -0
  95. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.js.map +1 -1
  96. package/features/contentEntry/GetRevisionById/abstractions.d.ts +1 -0
  97. package/features/contentEntry/GetRevisionById/abstractions.js +1 -0
  98. package/features/contentEntry/GetRevisionById/abstractions.js.map +1 -1
  99. package/features/contentEntry/GetRevisionsByEntryId/abstractions.d.ts +1 -0
  100. package/features/contentEntry/GetRevisionsByEntryId/abstractions.js +1 -0
  101. package/features/contentEntry/GetRevisionsByEntryId/abstractions.js.map +1 -1
  102. package/features/contentEntry/GetSingletonEntry/abstractions.d.ts +1 -0
  103. package/features/contentEntry/GetSingletonEntry/abstractions.js +1 -0
  104. package/features/contentEntry/GetSingletonEntry/abstractions.js.map +1 -1
  105. package/features/contentEntry/ListEntries/ListEntriesRepository.js +6 -1
  106. package/features/contentEntry/ListEntries/ListEntriesRepository.js.map +1 -1
  107. package/features/contentEntry/ListEntries/abstractions.d.ts +4 -0
  108. package/features/contentEntry/ListEntries/abstractions.js +4 -0
  109. package/features/contentEntry/ListEntries/abstractions.js.map +1 -1
  110. package/features/contentEntry/MoveEntry/abstractions.d.ts +1 -0
  111. package/features/contentEntry/MoveEntry/abstractions.js +1 -0
  112. package/features/contentEntry/MoveEntry/abstractions.js.map +1 -1
  113. package/features/contentEntry/MoveEntry/events.d.ts +2 -0
  114. package/features/contentEntry/MoveEntry/events.js +4 -0
  115. package/features/contentEntry/MoveEntry/events.js.map +1 -1
  116. package/features/contentEntry/PublishEntry/abstractions.d.ts +1 -0
  117. package/features/contentEntry/PublishEntry/abstractions.js +1 -0
  118. package/features/contentEntry/PublishEntry/abstractions.js.map +1 -1
  119. package/features/contentEntry/PublishEntry/events.d.ts +2 -0
  120. package/features/contentEntry/PublishEntry/events.js +4 -0
  121. package/features/contentEntry/PublishEntry/events.js.map +1 -1
  122. package/features/contentEntry/RepublishEntry/abstractions.d.ts +1 -0
  123. package/features/contentEntry/RepublishEntry/abstractions.js +1 -0
  124. package/features/contentEntry/RepublishEntry/abstractions.js.map +1 -1
  125. package/features/contentEntry/RepublishEntry/events.d.ts +2 -0
  126. package/features/contentEntry/RepublishEntry/events.js +4 -0
  127. package/features/contentEntry/RepublishEntry/events.js.map +1 -1
  128. package/features/contentEntry/RestoreEntryFromBin/abstractions.d.ts +1 -0
  129. package/features/contentEntry/RestoreEntryFromBin/abstractions.js +1 -0
  130. package/features/contentEntry/RestoreEntryFromBin/abstractions.js.map +1 -1
  131. package/features/contentEntry/RestoreEntryFromBin/events.d.ts +2 -0
  132. package/features/contentEntry/RestoreEntryFromBin/events.js +4 -0
  133. package/features/contentEntry/RestoreEntryFromBin/events.js.map +1 -1
  134. package/features/contentEntry/UnpublishEntry/abstractions.d.ts +1 -0
  135. package/features/contentEntry/UnpublishEntry/abstractions.js +1 -0
  136. package/features/contentEntry/UnpublishEntry/abstractions.js.map +1 -1
  137. package/features/contentEntry/UnpublishEntry/events.d.ts +2 -0
  138. package/features/contentEntry/UnpublishEntry/events.js +4 -0
  139. package/features/contentEntry/UnpublishEntry/events.js.map +1 -1
  140. package/features/contentEntry/UpdateEntry/abstractions.d.ts +1 -0
  141. package/features/contentEntry/UpdateEntry/abstractions.js +1 -0
  142. package/features/contentEntry/UpdateEntry/abstractions.js.map +1 -1
  143. package/features/contentEntry/UpdateEntry/events.d.ts +2 -0
  144. package/features/contentEntry/UpdateEntry/events.js +4 -0
  145. package/features/contentEntry/UpdateEntry/events.js.map +1 -1
  146. package/features/contentEntry/UpdateSingletonEntry/abstractions.d.ts +1 -0
  147. package/features/contentEntry/UpdateSingletonEntry/abstractions.js +1 -0
  148. package/features/contentEntry/UpdateSingletonEntry/abstractions.js.map +1 -1
  149. package/features/contentEntry/ValidateEntry/abstractions.d.ts +1 -0
  150. package/features/contentEntry/ValidateEntry/abstractions.js +1 -0
  151. package/features/contentEntry/ValidateEntry/abstractions.js.map +1 -1
  152. package/features/contentModel/CreateModel/abstractions.d.ts +1 -0
  153. package/features/contentModel/CreateModel/abstractions.js +1 -0
  154. package/features/contentModel/CreateModel/abstractions.js.map +1 -1
  155. package/features/contentModel/CreateModel/events.d.ts +2 -0
  156. package/features/contentModel/CreateModel/events.js +4 -0
  157. package/features/contentModel/CreateModel/events.js.map +1 -1
  158. package/features/contentModel/CreateModelFrom/abstractions.d.ts +1 -0
  159. package/features/contentModel/CreateModelFrom/abstractions.js +1 -0
  160. package/features/contentModel/CreateModelFrom/abstractions.js.map +1 -1
  161. package/features/contentModel/CreateModelFrom/events.d.ts +2 -0
  162. package/features/contentModel/CreateModelFrom/events.js +4 -0
  163. package/features/contentModel/CreateModelFrom/events.js.map +1 -1
  164. package/features/contentModel/DeleteModel/abstractions.d.ts +1 -0
  165. package/features/contentModel/DeleteModel/abstractions.js +1 -0
  166. package/features/contentModel/DeleteModel/abstractions.js.map +1 -1
  167. package/features/contentModel/DeleteModel/events.d.ts +2 -0
  168. package/features/contentModel/DeleteModel/events.js +4 -0
  169. package/features/contentModel/DeleteModel/events.js.map +1 -1
  170. package/features/contentModel/GetModel/abstractions.d.ts +1 -0
  171. package/features/contentModel/GetModel/abstractions.js +1 -0
  172. package/features/contentModel/GetModel/abstractions.js.map +1 -1
  173. package/features/contentModel/ListModels/abstractions.d.ts +1 -0
  174. package/features/contentModel/ListModels/abstractions.js +1 -0
  175. package/features/contentModel/ListModels/abstractions.js.map +1 -1
  176. package/features/contentModel/UpdateModel/abstractions.d.ts +1 -0
  177. package/features/contentModel/UpdateModel/abstractions.js +1 -0
  178. package/features/contentModel/UpdateModel/abstractions.js.map +1 -1
  179. package/features/contentModel/UpdateModel/events.d.ts +2 -0
  180. package/features/contentModel/UpdateModel/events.js +4 -0
  181. package/features/contentModel/UpdateModel/events.js.map +1 -1
  182. package/features/contentModelGroup/CreateGroup/abstractions.d.ts +1 -0
  183. package/features/contentModelGroup/CreateGroup/abstractions.js +1 -0
  184. package/features/contentModelGroup/CreateGroup/abstractions.js.map +1 -1
  185. package/features/contentModelGroup/CreateGroup/events.d.ts +2 -0
  186. package/features/contentModelGroup/CreateGroup/events.js +4 -0
  187. package/features/contentModelGroup/CreateGroup/events.js.map +1 -1
  188. package/features/contentModelGroup/DeleteGroup/abstractions.d.ts +1 -0
  189. package/features/contentModelGroup/DeleteGroup/abstractions.js +1 -0
  190. package/features/contentModelGroup/DeleteGroup/abstractions.js.map +1 -1
  191. package/features/contentModelGroup/DeleteGroup/events.d.ts +2 -0
  192. package/features/contentModelGroup/DeleteGroup/events.js +4 -0
  193. package/features/contentModelGroup/DeleteGroup/events.js.map +1 -1
  194. package/features/contentModelGroup/GetGroup/abstractions.d.ts +1 -0
  195. package/features/contentModelGroup/GetGroup/abstractions.js +1 -0
  196. package/features/contentModelGroup/GetGroup/abstractions.js.map +1 -1
  197. package/features/contentModelGroup/ListGroups/abstractions.d.ts +1 -0
  198. package/features/contentModelGroup/ListGroups/abstractions.js +1 -0
  199. package/features/contentModelGroup/ListGroups/abstractions.js.map +1 -1
  200. package/features/contentModelGroup/UpdateGroup/abstractions.d.ts +1 -0
  201. package/features/contentModelGroup/UpdateGroup/abstractions.js +1 -0
  202. package/features/contentModelGroup/UpdateGroup/abstractions.js.map +1 -1
  203. package/features/contentModelGroup/UpdateGroup/events.d.ts +2 -0
  204. package/features/contentModelGroup/UpdateGroup/events.js +4 -0
  205. package/features/contentModelGroup/UpdateGroup/events.js.map +1 -1
  206. package/features/contentModelGroup/shared/abstractions.d.ts +1 -0
  207. package/features/contentModelGroup/shared/abstractions.js +1 -0
  208. package/features/contentModelGroup/shared/abstractions.js.map +1 -1
  209. package/features/modelBuilder/abstractions.d.ts +8 -4
  210. package/features/modelBuilder/abstractions.js +5 -2
  211. package/features/modelBuilder/abstractions.js.map +1 -1
  212. package/features/modelBuilder/fields/BooleanFieldType.d.ts +6 -4
  213. package/features/modelBuilder/fields/BooleanFieldType.js +2 -2
  214. package/features/modelBuilder/fields/BooleanFieldType.js.map +1 -1
  215. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +6 -14
  216. package/features/modelBuilder/fields/DataFieldBuilder.js +1 -9
  217. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -1
  218. package/features/modelBuilder/fields/DateTimeFieldType.d.ts +3 -3
  219. package/features/modelBuilder/fields/DateTimeFieldType.js +2 -2
  220. package/features/modelBuilder/fields/DateTimeFieldType.js.map +1 -1
  221. package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +2 -2
  222. package/features/modelBuilder/fields/DynamicZoneFieldType.js +2 -2
  223. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  224. package/features/modelBuilder/fields/FieldBuilder.d.ts +2 -2
  225. package/features/modelBuilder/fields/FieldBuilder.js +1 -1
  226. package/features/modelBuilder/fields/FieldBuilder.js.map +1 -1
  227. package/features/modelBuilder/fields/FieldBuilderRegistry.d.ts +3 -3
  228. package/features/modelBuilder/fields/FileFieldType.d.ts +3 -3
  229. package/features/modelBuilder/fields/FileFieldType.js +2 -2
  230. package/features/modelBuilder/fields/FileFieldType.js.map +1 -1
  231. package/features/modelBuilder/fields/JsonFieldType.d.ts +2 -2
  232. package/features/modelBuilder/fields/JsonFieldType.js +2 -2
  233. package/features/modelBuilder/fields/JsonFieldType.js.map +1 -1
  234. package/features/modelBuilder/fields/LongTextFieldType.d.ts +3 -4
  235. package/features/modelBuilder/fields/LongTextFieldType.js +2 -2
  236. package/features/modelBuilder/fields/LongTextFieldType.js.map +1 -1
  237. package/features/modelBuilder/fields/NumberFieldType.d.ts +3 -3
  238. package/features/modelBuilder/fields/NumberFieldType.js +2 -2
  239. package/features/modelBuilder/fields/NumberFieldType.js.map +1 -1
  240. package/features/modelBuilder/fields/ObjectFieldType.d.ts +3 -3
  241. package/features/modelBuilder/fields/ObjectFieldType.js +2 -2
  242. package/features/modelBuilder/fields/ObjectFieldType.js.map +1 -1
  243. package/features/modelBuilder/fields/RefFieldType.d.ts +3 -3
  244. package/features/modelBuilder/fields/RefFieldType.js +2 -2
  245. package/features/modelBuilder/fields/RefFieldType.js.map +1 -1
  246. package/features/modelBuilder/fields/RichTextFieldType.d.ts +2 -2
  247. package/features/modelBuilder/fields/RichTextFieldType.js +2 -2
  248. package/features/modelBuilder/fields/RichTextFieldType.js.map +1 -1
  249. package/features/modelBuilder/fields/SearchableJsonFieldType.d.ts +2 -2
  250. package/features/modelBuilder/fields/SearchableJsonFieldType.js +2 -2
  251. package/features/modelBuilder/fields/SearchableJsonFieldType.js.map +1 -1
  252. package/features/modelBuilder/fields/TextFieldType.d.ts +3 -3
  253. package/features/modelBuilder/fields/TextFieldType.js +2 -2
  254. package/features/modelBuilder/fields/TextFieldType.js.map +1 -1
  255. package/features/modelBuilder/fields/abstractions.d.ts +4 -1
  256. package/features/modelBuilder/fields/abstractions.js +1 -1
  257. package/features/modelBuilder/fields/abstractions.js.map +1 -1
  258. package/features/modelBuilder/fields/{validators.d.ts → fieldTypeValidator.d.ts} +22 -0
  259. package/features/modelBuilder/fields/fieldTypeValidator.js +31 -0
  260. package/features/modelBuilder/fields/fieldTypeValidator.js.map +1 -0
  261. package/features/sortMapper/abstractions.d.ts +1 -0
  262. package/features/sortMapper/abstractions.js +1 -0
  263. package/features/sortMapper/abstractions.js.map +1 -1
  264. package/features/whereMapper/abstractions.d.ts +1 -0
  265. package/features/whereMapper/abstractions.js +1 -0
  266. package/features/whereMapper/abstractions.js.map +1 -1
  267. package/graphql/schema/cms/listEntriesResolver.d.ts +1 -0
  268. package/graphql/schema/cms/listEntriesResolver.js +5 -1
  269. package/graphql/schema/cms/listEntriesResolver.js.map +1 -1
  270. package/graphql/schema/cms/typeDefs/query.js +1 -0
  271. package/graphql/schema/cms/typeDefs/query.js.map +1 -1
  272. package/graphql/schema/createSingularSDL.js +1 -0
  273. package/graphql/schema/createSingularSDL.js.map +1 -1
  274. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js +4 -1
  275. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js.map +1 -1
  276. package/index.d.ts +2 -1
  277. package/index.js +2 -1
  278. package/index.js.map +1 -1
  279. package/package.json +25 -25
  280. package/types/context.d.ts +0 -5
  281. package/types/context.js.map +1 -1
  282. package/features/modelBuilder/fields/validators.js +0 -3
  283. package/features/modelBuilder/fields/validators.js.map +0 -1
  284. /package/{utils/contentEntryTraverser → features/contentEntry/ContentEntryTraverser}/ContentEntryTraverser.js +0 -0
  285. /package/{utils/contentEntryTraverser → features/contentEntry/ContentEntryTraverser}/ContentEntryTraverser.js.map +0 -0
@@ -10,6 +10,7 @@ export const createListEntriesResolver = () => {
10
10
  sort,
11
11
  limit,
12
12
  after,
13
+ search,
13
14
  fields,
14
15
  preview = false
15
16
  } = args;
@@ -35,12 +36,14 @@ export const createListEntriesResolver = () => {
35
36
  $sort: [${model.singularApiName}ListSorter!]
36
37
  $limit: Int
37
38
  $after: String
39
+ $search: String
38
40
  ) {
39
41
  list${model.pluralApiName}(
40
42
  where: $where
41
43
  sort: $sort
42
44
  limit: $limit
43
45
  after: $after
46
+ search: $search
44
47
  ) {
45
48
  data {
46
49
  ${fieldsSelection}
@@ -64,7 +67,8 @@ export const createListEntriesResolver = () => {
64
67
  where: transformedWhere,
65
68
  sort: transformedSort,
66
69
  limit,
67
- after
70
+ after,
71
+ search
68
72
  }
69
73
  });
70
74
  const operationName = `list${model.pluralApiName}`;
@@ -1 +1 @@
1
- {"version":3,"names":["getModel","getErrorMessage","buildFieldsSelection","transformSortToArray","transformWhereToNested","createListEntriesResolver","args","context","modelId","where","sort","limit","after","fields","preview","model","apiType","executeSchema","cms","getExecutableSchema","fieldsSelection","transformedSort","transformedWhere","query","pluralApiName","singularApiName","result","variables","operationName","data","meta","cursor","hasMoreItems","totalCount","error","message","code"],"sources":["listEntriesResolver.ts"],"sourcesContent":["import type { CmsContext } from \"~/types/index.js\";\nimport type { ApiEndpoint } from \"~/types/index.js\";\nimport type { ExecutionResult } from \"graphql\";\nimport {\n getModel,\n getErrorMessage,\n buildFieldsSelection,\n transformSortToArray,\n transformWhereToNested\n} from \"./helpers.js\";\n\nexport interface ListEntriesArgs {\n modelId: string;\n where?: Record<string, unknown>;\n sort?: Record<string, unknown> | string[];\n limit?: number;\n after?: string;\n fields: string[];\n preview?: boolean;\n}\n\nexport const createListEntriesResolver = () => {\n return async ({ args, context }: { args: ListEntriesArgs; context: CmsContext }) => {\n const { modelId, where, sort, limit, after, fields, preview = false } = args;\n\n try {\n const model = await getModel(context, modelId);\n\n // Determine which API to use based on the preview flag.\n // preview=true -> preview API, preview=false -> read API\n const apiType: ApiEndpoint = preview ? \"preview\" : \"read\";\n const executeSchema = await context.cms.getExecutableSchema(apiType);\n\n const fieldsSelection = buildFieldsSelection(fields);\n\n // Transform sort to array format expected by the underlying GraphQL schema.\n // Handles both object format {createdOn: \"desc\"} and array format [\"createdOn_DESC\"].\n const transformedSort = transformSortToArray(sort);\n\n // Transform dot-notation where keys (e.g. \"values.name\") into nested objects\n // (e.g. { values: { name: ... } }) so they match the typed ListWhereInput.\n const transformedWhere = transformWhereToNested(where);\n\n const query = /* GraphQL */ `\n query List${model.pluralApiName}(\n $where: ${model.singularApiName}ListWhereInput\n $sort: [${model.singularApiName}ListSorter!]\n $limit: Int\n $after: String\n ) {\n list${model.pluralApiName}(\n where: $where\n sort: $sort\n limit: $limit\n after: $after\n ) {\n data {\n ${fieldsSelection}\n }\n meta {\n cursor\n hasMoreItems\n totalCount\n }\n error {\n message\n code\n data\n }\n }\n }\n `;\n\n const result = (await executeSchema({\n query,\n variables: { where: transformedWhere, sort: transformedSort, limit, after }\n })) as ExecutionResult;\n\n const operationName = `list${model.pluralApiName}`;\n return (\n result.data?.[operationName] || {\n data: [],\n meta: { cursor: null, hasMoreItems: false, totalCount: 0 },\n error: null\n }\n );\n } catch (error) {\n return {\n data: [],\n meta: { cursor: null, hasMoreItems: false, totalCount: 0 },\n error: {\n message: getErrorMessage(error, \"Failed to list entries\"),\n code: \"LIST_ENTRIES_ERROR\"\n }\n };\n }\n };\n};\n"],"mappings":"AAGA,SACIA,QAAQ,EACRC,eAAe,EACfC,oBAAoB,EACpBC,oBAAoB,EACpBC,sBAAsB;AAa1B,OAAO,MAAMC,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,OAAO,OAAO;IAAEC,IAAI;IAAEC;EAAwD,CAAC,KAAK;IAChF,MAAM;MAAEC,OAAO;MAAEC,KAAK;MAAEC,IAAI;MAAEC,KAAK;MAAEC,KAAK;MAAEC,MAAM;MAAEC,OAAO,GAAG;IAAM,CAAC,GAAGR,IAAI;IAE5E,IAAI;MACA,MAAMS,KAAK,GAAG,MAAMf,QAAQ,CAACO,OAAO,EAAEC,OAAO,CAAC;;MAE9C;MACA;MACA,MAAMQ,OAAoB,GAAGF,OAAO,GAAG,SAAS,GAAG,MAAM;MACzD,MAAMG,aAAa,GAAG,MAAMV,OAAO,CAACW,GAAG,CAACC,mBAAmB,CAACH,OAAO,CAAC;MAEpE,MAAMI,eAAe,GAAGlB,oBAAoB,CAACW,MAAM,CAAC;;MAEpD;MACA;MACA,MAAMQ,eAAe,GAAGlB,oBAAoB,CAACO,IAAI,CAAC;;MAElD;MACA;MACA,MAAMY,gBAAgB,GAAGlB,sBAAsB,CAACK,KAAK,CAAC;MAEtD,MAAMc,KAAK,GAAG,aAAc;AACxC,4BAA4BR,KAAK,CAACS,aAAa;AAC/C,8BAA8BT,KAAK,CAACU,eAAe;AACnD,8BAA8BV,KAAK,CAACU,eAAe;AACnD;AACA;AACA;AACA,0BAA0BV,KAAK,CAACS,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8BJ,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;MAED,MAAMM,MAAM,GAAI,MAAMT,aAAa,CAAC;QAChCM,KAAK;QACLI,SAAS,EAAE;UAAElB,KAAK,EAAEa,gBAAgB;UAAEZ,IAAI,EAAEW,eAAe;UAAEV,KAAK;UAAEC;QAAM;MAC9E,CAAC,CAAqB;MAEtB,MAAMgB,aAAa,GAAG,OAAOb,KAAK,CAACS,aAAa,EAAE;MAClD,OACIE,MAAM,CAACG,IAAI,GAAGD,aAAa,CAAC,IAAI;QAC5BC,IAAI,EAAE,EAAE;QACRC,IAAI,EAAE;UAAEC,MAAM,EAAE,IAAI;UAAEC,YAAY,EAAE,KAAK;UAAEC,UAAU,EAAE;QAAE,CAAC;QAC1DC,KAAK,EAAE;MACX,CAAC;IAET,CAAC,CAAC,OAAOA,KAAK,EAAE;MACZ,OAAO;QACHL,IAAI,EAAE,EAAE;QACRC,IAAI,EAAE;UAAEC,MAAM,EAAE,IAAI;UAAEC,YAAY,EAAE,KAAK;UAAEC,UAAU,EAAE;QAAE,CAAC;QAC1DC,KAAK,EAAE;UACHC,OAAO,EAAElC,eAAe,CAACiC,KAAK,EAAE,wBAAwB,CAAC;UACzDE,IAAI,EAAE;QACV;MACJ,CAAC;IACL;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["getModel","getErrorMessage","buildFieldsSelection","transformSortToArray","transformWhereToNested","createListEntriesResolver","args","context","modelId","where","sort","limit","after","search","fields","preview","model","apiType","executeSchema","cms","getExecutableSchema","fieldsSelection","transformedSort","transformedWhere","query","pluralApiName","singularApiName","result","variables","operationName","data","meta","cursor","hasMoreItems","totalCount","error","message","code"],"sources":["listEntriesResolver.ts"],"sourcesContent":["import type { CmsContext } from \"~/types/index.js\";\nimport type { ApiEndpoint } from \"~/types/index.js\";\nimport type { ExecutionResult } from \"graphql\";\nimport {\n getModel,\n getErrorMessage,\n buildFieldsSelection,\n transformSortToArray,\n transformWhereToNested\n} from \"./helpers.js\";\n\nexport interface ListEntriesArgs {\n modelId: string;\n where?: Record<string, unknown>;\n sort?: Record<string, unknown> | string[];\n limit?: number;\n after?: string;\n search?: string;\n fields: string[];\n preview?: boolean;\n}\n\nexport const createListEntriesResolver = () => {\n return async ({ args, context }: { args: ListEntriesArgs; context: CmsContext }) => {\n const { modelId, where, sort, limit, after, search, fields, preview = false } = args;\n\n try {\n const model = await getModel(context, modelId);\n\n // Determine which API to use based on the preview flag.\n // preview=true -> preview API, preview=false -> read API\n const apiType: ApiEndpoint = preview ? \"preview\" : \"read\";\n const executeSchema = await context.cms.getExecutableSchema(apiType);\n\n const fieldsSelection = buildFieldsSelection(fields);\n\n // Transform sort to array format expected by the underlying GraphQL schema.\n // Handles both object format {createdOn: \"desc\"} and array format [\"createdOn_DESC\"].\n const transformedSort = transformSortToArray(sort);\n\n // Transform dot-notation where keys (e.g. \"values.name\") into nested objects\n // (e.g. { values: { name: ... } }) so they match the typed ListWhereInput.\n const transformedWhere = transformWhereToNested(where);\n\n const query = /* GraphQL */ `\n query List${model.pluralApiName}(\n $where: ${model.singularApiName}ListWhereInput\n $sort: [${model.singularApiName}ListSorter!]\n $limit: Int\n $after: String\n $search: String\n ) {\n list${model.pluralApiName}(\n where: $where\n sort: $sort\n limit: $limit\n after: $after\n search: $search\n ) {\n data {\n ${fieldsSelection}\n }\n meta {\n cursor\n hasMoreItems\n totalCount\n }\n error {\n message\n code\n data\n }\n }\n }\n `;\n\n const result = (await executeSchema({\n query,\n variables: { where: transformedWhere, sort: transformedSort, limit, after, search }\n })) as ExecutionResult;\n\n const operationName = `list${model.pluralApiName}`;\n return (\n result.data?.[operationName] || {\n data: [],\n meta: { cursor: null, hasMoreItems: false, totalCount: 0 },\n error: null\n }\n );\n } catch (error) {\n return {\n data: [],\n meta: { cursor: null, hasMoreItems: false, totalCount: 0 },\n error: {\n message: getErrorMessage(error, \"Failed to list entries\"),\n code: \"LIST_ENTRIES_ERROR\"\n }\n };\n }\n };\n};\n"],"mappings":"AAGA,SACIA,QAAQ,EACRC,eAAe,EACfC,oBAAoB,EACpBC,oBAAoB,EACpBC,sBAAsB;AAc1B,OAAO,MAAMC,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,OAAO,OAAO;IAAEC,IAAI;IAAEC;EAAwD,CAAC,KAAK;IAChF,MAAM;MAAEC,OAAO;MAAEC,KAAK;MAAEC,IAAI;MAAEC,KAAK;MAAEC,KAAK;MAAEC,MAAM;MAAEC,MAAM;MAAEC,OAAO,GAAG;IAAM,CAAC,GAAGT,IAAI;IAEpF,IAAI;MACA,MAAMU,KAAK,GAAG,MAAMhB,QAAQ,CAACO,OAAO,EAAEC,OAAO,CAAC;;MAE9C;MACA;MACA,MAAMS,OAAoB,GAAGF,OAAO,GAAG,SAAS,GAAG,MAAM;MACzD,MAAMG,aAAa,GAAG,MAAMX,OAAO,CAACY,GAAG,CAACC,mBAAmB,CAACH,OAAO,CAAC;MAEpE,MAAMI,eAAe,GAAGnB,oBAAoB,CAACY,MAAM,CAAC;;MAEpD;MACA;MACA,MAAMQ,eAAe,GAAGnB,oBAAoB,CAACO,IAAI,CAAC;;MAElD;MACA;MACA,MAAMa,gBAAgB,GAAGnB,sBAAsB,CAACK,KAAK,CAAC;MAEtD,MAAMe,KAAK,GAAG,aAAc;AACxC,4BAA4BR,KAAK,CAACS,aAAa;AAC/C,8BAA8BT,KAAK,CAACU,eAAe;AACnD,8BAA8BV,KAAK,CAACU,eAAe;AACnD;AACA;AACA;AACA;AACA,0BAA0BV,KAAK,CAACS,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8BJ,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;MAED,MAAMM,MAAM,GAAI,MAAMT,aAAa,CAAC;QAChCM,KAAK;QACLI,SAAS,EAAE;UAAEnB,KAAK,EAAEc,gBAAgB;UAAEb,IAAI,EAAEY,eAAe;UAAEX,KAAK;UAAEC,KAAK;UAAEC;QAAO;MACtF,CAAC,CAAqB;MAEtB,MAAMgB,aAAa,GAAG,OAAOb,KAAK,CAACS,aAAa,EAAE;MAClD,OACIE,MAAM,CAACG,IAAI,GAAGD,aAAa,CAAC,IAAI;QAC5BC,IAAI,EAAE,EAAE;QACRC,IAAI,EAAE;UAAEC,MAAM,EAAE,IAAI;UAAEC,YAAY,EAAE,KAAK;UAAEC,UAAU,EAAE;QAAE,CAAC;QAC1DC,KAAK,EAAE;MACX,CAAC;IAET,CAAC,CAAC,OAAOA,KAAK,EAAE;MACZ,OAAO;QACHL,IAAI,EAAE,EAAE;QACRC,IAAI,EAAE;UAAEC,MAAM,EAAE,IAAI;UAAEC,YAAY,EAAE,KAAK;UAAEC,UAAU,EAAE;QAAE,CAAC;QAC1DC,KAAK,EAAE;UACHC,OAAO,EAAEnC,eAAe,CAACkC,KAAK,EAAE,wBAAwB,CAAC;UACzDE,IAAI,EAAE;QACV;MACJ,CAAC;IACL;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -15,6 +15,7 @@ class CmsQueryTypeDefs {
15
15
  sort: JSON
16
16
  limit: Int
17
17
  after: String
18
+ search: String
18
19
  fields: [String!]!
19
20
  preview: Boolean
20
21
  ): CmsListResponse!
@@ -1 +1 @@
1
- {"version":3,"names":["CoreGraphQLSchemaFactory","CmsQueryTypeDefs","execute","builder","addTypeDefs","CmsQueryTypeDefsImpl","createImplementation","implementation","dependencies"],"sources":["query.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.core.js\";\n\nclass CmsQueryTypeDefs implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): CoreGraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n type CmsQuery {\n getEntry(\n modelId: ID!\n where: JSON!\n fields: [String!]!\n preview: Boolean\n ): CmsEntryResponse!\n listEntries(\n modelId: ID!\n where: JSON\n sort: JSON\n limit: Int\n after: String\n fields: [String!]!\n preview: Boolean\n ): CmsListResponse!\n }\n\n extend type Query {\n cms: CmsQuery!\n }\n `);\n\n return builder;\n }\n}\n\nexport const CmsQueryTypeDefsImpl = CoreGraphQLSchemaFactory.createImplementation({\n implementation: CmsQueryTypeDefs,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,wBAAwB,QAAQ,sDAAsD;AAE/F,MAAMC,gBAAgB,CAA+C;EACjE,MAAMC,OAAOA,CACTC,OAA+C,EAChB;IAC/BA,OAAO,CAACC,WAAW,CAAC,aAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IAEF,OAAOD,OAAO;EAClB;AACJ;AAEA,OAAO,MAAME,oBAAoB,GAAGL,wBAAwB,CAACM,oBAAoB,CAAC;EAC9EC,cAAc,EAAEN,gBAAgB;EAChCO,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["CoreGraphQLSchemaFactory","CmsQueryTypeDefs","execute","builder","addTypeDefs","CmsQueryTypeDefsImpl","createImplementation","implementation","dependencies"],"sources":["query.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.core.js\";\n\nclass CmsQueryTypeDefs implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): CoreGraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n type CmsQuery {\n getEntry(\n modelId: ID!\n where: JSON!\n fields: [String!]!\n preview: Boolean\n ): CmsEntryResponse!\n listEntries(\n modelId: ID!\n where: JSON\n sort: JSON\n limit: Int\n after: String\n search: String\n fields: [String!]!\n preview: Boolean\n ): CmsListResponse!\n }\n\n extend type Query {\n cms: CmsQuery!\n }\n `);\n\n return builder;\n }\n}\n\nexport const CmsQueryTypeDefsImpl = CoreGraphQLSchemaFactory.createImplementation({\n implementation: CmsQueryTypeDefs,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,wBAAwB,QAAQ,sDAAsD;AAE/F,MAAMC,gBAAgB,CAA+C;EACjE,MAAMC,OAAOA,CACTC,OAA+C,EAChB;IAC/BA,OAAO,CAACC,WAAW,CAAC,aAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IAEF,OAAOD,OAAO;EAClB;AACJ;AAEA,OAAO,MAAME,oBAAoB,GAAGL,wBAAwB,CAACM,oBAAoB,CAAC;EAC9EC,cAAc,EAAEN,gBAAgB;EAChCO,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
@@ -50,6 +50,7 @@ export const createSingularSDL = ({
50
50
 
51
51
  ${onByMetaGqlFields}
52
52
  values: ${singularName}Values
53
+ live: CmsEntryLive
53
54
  }
54
55
 
55
56
  ${fields.map(f => f.typeDefs).join("\n")}
@@ -1 +1 @@
1
- {"version":3,"names":["renderInputFields","renderFields","ENTRY_META_FIELDS","isDateTimeEntryMetaField","createSingularSDL","models","model","fieldTypePlugins","type","inputFields","fields","length","singularApiName","singularName","inputGqlFields","map","f","join","onByMetaInputGqlFields","field","fieldType","onByMetaGqlFields","read","description","typeDefs"],"sources":["createSingularSDL.ts"],"sourcesContent":["import type { ApiEndpoint, CmsFieldTypePlugins, CmsModel } from \"~/types/index.js\";\nimport { renderInputFields } from \"~/utils/renderInputFields.js\";\nimport { renderFields } from \"~/utils/renderFields.js\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants.js\";\n\ninterface CreateSingularSDLParams {\n models: CmsModel[];\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n type: ApiEndpoint;\n}\n\ninterface CreateSingularSDL {\n (params: CreateSingularSDLParams): string;\n}\n\nexport const createSingularSDL: CreateSingularSDL = ({\n models,\n model,\n fieldTypePlugins,\n type\n}): string => {\n const inputFields = renderInputFields({\n models,\n model,\n fields: model.fields,\n fieldTypePlugins\n });\n if (inputFields.length === 0) {\n return \"\";\n }\n\n const fields = renderFields({\n models,\n model,\n fields: model.fields,\n type,\n fieldTypePlugins\n });\n\n const { singularApiName: singularName } = model;\n\n const inputGqlFields = inputFields.map(f => f.fields).join(\"\\n\");\n\n const onByMetaInputGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentityInput\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n const onByMetaGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n const read = `\n \"\"\"${model.description || singularName}\"\"\"\n \n type ${singularName}Values {\n ${fields.map(f => f.fields).join(\"\\n\") || \"_empty: String\"}\n }\n \n type ${singularName} {\n id: ID!\n entryId: String!\n \n ${onByMetaGqlFields}\n values: ${singularName}Values\n }\n\n ${fields.map(f => f.typeDefs).join(\"\\n\")}\n \n input ${singularName}ListWhereInput {\n id: String\n }\n\n type ${singularName}Response {\n data: ${singularName}\n error: CmsError\n }\n \n extend type Query {\n get${singularName}: ${singularName}Response\n }\n\n `;\n if (type !== \"manage\") {\n return read;\n }\n return `\n ${read}\n \n ${inputFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input ${singularName}InputValues {\n ${inputGqlFields || \"_empty: String\"}\n }\n \n input ${singularName}Input {\n ${onByMetaInputGqlFields}\n values: ${singularName}InputValues!\n }\n \n extend type Mutation {\n update${singularName}(data: ${singularName}Input!, options: UpdateCmsEntryOptionsInput): ${singularName}Response\n }\n `;\n};\n"],"mappings":"AACA,SAASA,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,iBAAiB,EAAEC,wBAAwB;AAapD,OAAO,MAAMC,iBAAoC,GAAGA,CAAC;EACjDC,MAAM;EACNC,KAAK;EACLC,gBAAgB;EAChBC;AACJ,CAAC,KAAa;EACV,MAAMC,WAAW,GAAGT,iBAAiB,CAAC;IAClCK,MAAM;IACNC,KAAK;IACLI,MAAM,EAAEJ,KAAK,CAACI,MAAM;IACpBH;EACJ,CAAC,CAAC;EACF,IAAIE,WAAW,CAACE,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAO,EAAE;EACb;EAEA,MAAMD,MAAM,GAAGT,YAAY,CAAC;IACxBI,MAAM;IACNC,KAAK;IACLI,MAAM,EAAEJ,KAAK,CAACI,MAAM;IACpBF,IAAI;IACJD;EACJ,CAAC,CAAC;EAEF,MAAM;IAAEK,eAAe,EAAEC;EAAa,CAAC,GAAGP,KAAK;EAE/C,MAAMQ,cAAc,GAAGL,WAAW,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACN,MAAM,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;EAEhE,MAAMC,sBAAsB,GAAGhB,iBAAiB,CAACa,GAAG,CAACI,KAAK,IAAI;IAC1D,MAAMC,SAAS,GAAGjB,wBAAwB,CAACgB,KAAK,CAAC,GAAG,UAAU,GAAG,kBAAkB;IAEnF,OAAO,GAAGA,KAAK,KAAKC,SAAS,EAAE;EACnC,CAAC,CAAC,CAACH,IAAI,CAAC,IAAI,CAAC;EAEb,MAAMI,iBAAiB,GAAGnB,iBAAiB,CAACa,GAAG,CAACI,KAAK,IAAI;IACrD,MAAMC,SAAS,GAAGjB,wBAAwB,CAACgB,KAAK,CAAC,GAAG,UAAU,GAAG,aAAa;IAE9E,OAAO,GAAGA,KAAK,KAAKC,SAAS,EAAE;EACnC,CAAC,CAAC,CAACH,IAAI,CAAC,IAAI,CAAC;;EAEb;EACA,MAAMK,IAAI,GAAG;AACjB,aAAahB,KAAK,CAACiB,WAAW,IAAIV,YAAY;AAC9C;AACA,eAAeA,YAAY;AAC3B,cAAcH,MAAM,CAACK,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACN,MAAM,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB;AACtE;AACA;AACA,eAAeJ,YAAY;AAC3B;AACA;AACA;AACA,cAAcQ,iBAAiB;AAC/B,sBAAsBR,YAAY;AAClC;AACA;AACA,UAAUH,MAAM,CAACK,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACQ,QAAQ,CAAC,CAACP,IAAI,CAAC,IAAI,CAAC;AAChD;AACA,gBAAgBJ,YAAY;AAC5B;AACA;AACA;AACA,eAAeA,YAAY;AAC3B,oBAAoBA,YAAY;AAChC;AACA;AACA;AACA;AACA,iBAAiBA,YAAY,KAAKA,YAAY;AAC9C;AACA;AACA,KAAK;EACD,IAAIL,IAAI,KAAK,QAAQ,EAAE;IACnB,OAAOc,IAAI;EACf;EACA,OAAO;AACX,UAAUA,IAAI;AACd;AACA,UAAUb,WAAW,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACQ,QAAQ,CAAC,CAACP,IAAI,CAAC,IAAI,CAAC;AACrD;AACA,gBAAgBJ,YAAY;AAC5B,cAAcC,cAAc,IAAI,gBAAgB;AAChD;AACA;AACA,gBAAgBD,YAAY;AAC5B,cAAcK,sBAAsB;AACpC,sBAAsBL,YAAY;AAClC;AACA;AACA;AACA,oBAAoBA,YAAY,UAAUA,YAAY,iDAAiDA,YAAY;AACnH;AACA,KAAK;AACL,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["renderInputFields","renderFields","ENTRY_META_FIELDS","isDateTimeEntryMetaField","createSingularSDL","models","model","fieldTypePlugins","type","inputFields","fields","length","singularApiName","singularName","inputGqlFields","map","f","join","onByMetaInputGqlFields","field","fieldType","onByMetaGqlFields","read","description","typeDefs"],"sources":["createSingularSDL.ts"],"sourcesContent":["import type { ApiEndpoint, CmsFieldTypePlugins, CmsModel } from \"~/types/index.js\";\nimport { renderInputFields } from \"~/utils/renderInputFields.js\";\nimport { renderFields } from \"~/utils/renderFields.js\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants.js\";\n\ninterface CreateSingularSDLParams {\n models: CmsModel[];\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n type: ApiEndpoint;\n}\n\ninterface CreateSingularSDL {\n (params: CreateSingularSDLParams): string;\n}\n\nexport const createSingularSDL: CreateSingularSDL = ({\n models,\n model,\n fieldTypePlugins,\n type\n}): string => {\n const inputFields = renderInputFields({\n models,\n model,\n fields: model.fields,\n fieldTypePlugins\n });\n if (inputFields.length === 0) {\n return \"\";\n }\n\n const fields = renderFields({\n models,\n model,\n fields: model.fields,\n type,\n fieldTypePlugins\n });\n\n const { singularApiName: singularName } = model;\n\n const inputGqlFields = inputFields.map(f => f.fields).join(\"\\n\");\n\n const onByMetaInputGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentityInput\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n const onByMetaGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n const read = `\n \"\"\"${model.description || singularName}\"\"\"\n \n type ${singularName}Values {\n ${fields.map(f => f.fields).join(\"\\n\") || \"_empty: String\"}\n }\n \n type ${singularName} {\n id: ID!\n entryId: String!\n \n ${onByMetaGqlFields}\n values: ${singularName}Values\n live: CmsEntryLive\n }\n\n ${fields.map(f => f.typeDefs).join(\"\\n\")}\n \n input ${singularName}ListWhereInput {\n id: String\n }\n\n type ${singularName}Response {\n data: ${singularName}\n error: CmsError\n }\n \n extend type Query {\n get${singularName}: ${singularName}Response\n }\n\n `;\n if (type !== \"manage\") {\n return read;\n }\n return `\n ${read}\n \n ${inputFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input ${singularName}InputValues {\n ${inputGqlFields || \"_empty: String\"}\n }\n \n input ${singularName}Input {\n ${onByMetaInputGqlFields}\n values: ${singularName}InputValues!\n }\n \n extend type Mutation {\n update${singularName}(data: ${singularName}Input!, options: UpdateCmsEntryOptionsInput): ${singularName}Response\n }\n `;\n};\n"],"mappings":"AACA,SAASA,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,iBAAiB,EAAEC,wBAAwB;AAapD,OAAO,MAAMC,iBAAoC,GAAGA,CAAC;EACjDC,MAAM;EACNC,KAAK;EACLC,gBAAgB;EAChBC;AACJ,CAAC,KAAa;EACV,MAAMC,WAAW,GAAGT,iBAAiB,CAAC;IAClCK,MAAM;IACNC,KAAK;IACLI,MAAM,EAAEJ,KAAK,CAACI,MAAM;IACpBH;EACJ,CAAC,CAAC;EACF,IAAIE,WAAW,CAACE,MAAM,KAAK,CAAC,EAAE;IAC1B,OAAO,EAAE;EACb;EAEA,MAAMD,MAAM,GAAGT,YAAY,CAAC;IACxBI,MAAM;IACNC,KAAK;IACLI,MAAM,EAAEJ,KAAK,CAACI,MAAM;IACpBF,IAAI;IACJD;EACJ,CAAC,CAAC;EAEF,MAAM;IAAEK,eAAe,EAAEC;EAAa,CAAC,GAAGP,KAAK;EAE/C,MAAMQ,cAAc,GAAGL,WAAW,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACN,MAAM,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC;EAEhE,MAAMC,sBAAsB,GAAGhB,iBAAiB,CAACa,GAAG,CAACI,KAAK,IAAI;IAC1D,MAAMC,SAAS,GAAGjB,wBAAwB,CAACgB,KAAK,CAAC,GAAG,UAAU,GAAG,kBAAkB;IAEnF,OAAO,GAAGA,KAAK,KAAKC,SAAS,EAAE;EACnC,CAAC,CAAC,CAACH,IAAI,CAAC,IAAI,CAAC;EAEb,MAAMI,iBAAiB,GAAGnB,iBAAiB,CAACa,GAAG,CAACI,KAAK,IAAI;IACrD,MAAMC,SAAS,GAAGjB,wBAAwB,CAACgB,KAAK,CAAC,GAAG,UAAU,GAAG,aAAa;IAE9E,OAAO,GAAGA,KAAK,KAAKC,SAAS,EAAE;EACnC,CAAC,CAAC,CAACH,IAAI,CAAC,IAAI,CAAC;;EAEb;EACA,MAAMK,IAAI,GAAG;AACjB,aAAahB,KAAK,CAACiB,WAAW,IAAIV,YAAY;AAC9C;AACA,eAAeA,YAAY;AAC3B,cAAcH,MAAM,CAACK,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACN,MAAM,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB;AACtE;AACA;AACA,eAAeJ,YAAY;AAC3B;AACA;AACA;AACA,cAAcQ,iBAAiB;AAC/B,sBAAsBR,YAAY;AAClC;AACA;AACA;AACA,UAAUH,MAAM,CAACK,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACQ,QAAQ,CAAC,CAACP,IAAI,CAAC,IAAI,CAAC;AAChD;AACA,gBAAgBJ,YAAY;AAC5B;AACA;AACA;AACA,eAAeA,YAAY;AAC3B,oBAAoBA,YAAY;AAChC;AACA;AACA;AACA;AACA,iBAAiBA,YAAY,KAAKA,YAAY;AAC9C;AACA;AACA,KAAK;EACD,IAAIL,IAAI,KAAK,QAAQ,EAAE;IACnB,OAAOc,IAAI;EACf;EACA,OAAO;AACX,UAAUA,IAAI;AACd;AACA,UAAUb,WAAW,CAACM,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACQ,QAAQ,CAAC,CAACP,IAAI,CAAC,IAAI,CAAC;AACrD;AACA,gBAAgBJ,YAAY;AAC5B,cAAcC,cAAc,IAAI,gBAAgB;AAChD;AACA;AACA,gBAAgBD,YAAY;AAC5B,cAAcK,sBAAsB;AACpC,sBAAsBL,YAAY;AAClC;AACA;AACA;AACA,oBAAoBA,YAAY,UAAUA,YAAY,iDAAiDA,YAAY;AACnH;AACA,KAAK;AACL,CAAC","ignoreList":[]}
@@ -1,4 +1,6 @@
1
1
  import set from "lodash/set.js";
2
+ import { ContentEntryTraverserProvider } from "../../../../features/contentEntry/ContentEntryTraverser/index.js";
3
+
2
4
  /**
3
5
  * This decorates a resolver factory, and normalizes `args.data`.
4
6
  * This is necessary to separate GraphQL related hacks (like lack of support for union input type)
@@ -12,7 +14,8 @@ export const normalizeGraphQlInput = resolverFactory => {
12
14
  if (!input) {
13
15
  return resolver(parent, args, context, info);
14
16
  }
15
- const traverser = await context.cms.getEntryTraverser(params.model.modelId);
17
+ const traverserProvider = context.container.resolve(ContentEntryTraverserProvider);
18
+ const traverser = await traverserProvider.getTraverser(params.model.modelId);
16
19
  const normalizer = new GraphQlInputNormalizer(traverser, params.fieldTypePlugins);
17
20
  const normalizedInput = await normalizer.normalize(params.model, input);
18
21
  return resolver(parent, {
@@ -1 +1 @@
1
- {"version":3,"names":["set","normalizeGraphQlInput","resolverFactory","params","resolver","parent","args","context","info","input","data","traverser","cms","getEntryTraverser","model","modelId","normalizer","GraphQlInputNormalizer","fieldTypePlugins","normalizedInput","normalize","constructor","values","structuredClone","traverse","path","value","field","fieldPlugin","type","manage","normalizeInput","normalizedValue"],"sources":["normalizeGraphQlInput.ts"],"sourcesContent":["import set from \"lodash/set.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport type { CmsEntryResolverFactory, CmsFieldTypePlugins, CmsModel } from \"~/types/index.js\";\nimport type { ContentEntryTraverser } from \"~/utils/contentEntryTraverser/ContentEntryTraverser.js\";\n\n/**\n * This decorates a resolver factory, and normalizes `args.data`.\n * This is necessary to separate GraphQL related hacks (like lack of support for union input type)\n * from our own programmatic API. We want the input into our domain logic to be free of GraphQL hacks.\n */\nexport const normalizeGraphQlInput = (\n resolverFactory: CmsEntryResolverFactory\n): CmsEntryResolverFactory => {\n return params => {\n const resolver = resolverFactory(params);\n\n return async (parent, args, context, info) => {\n const input = args.data;\n\n if (!input) {\n return resolver(parent, args, context, info);\n }\n\n const traverser = await context.cms.getEntryTraverser(params.model.modelId);\n const normalizer = new GraphQlInputNormalizer(traverser, params.fieldTypePlugins);\n const normalizedInput = await normalizer.normalize(params.model, input);\n\n return resolver(parent, { ...args, data: normalizedInput }, context, info);\n };\n };\n};\n\nclass GraphQlInputNormalizer {\n private readonly traverser: ContentEntryTraverser;\n private readonly fieldTypePlugins: CmsFieldTypePlugins;\n\n constructor(traverser: ContentEntryTraverser, fieldTypePlugins: CmsFieldTypePlugins) {\n this.traverser = traverser;\n this.fieldTypePlugins = fieldTypePlugins;\n }\n\n async normalize(model: CmsModel, data: GenericRecord<string>) {\n const values = structuredClone(data.values || {});\n\n await this.traverser.traverse(values, async ({ path, value, field }) => {\n const fieldPlugin = this.fieldTypePlugins[field.type];\n if (fieldPlugin && typeof fieldPlugin.manage.normalizeInput === \"function\") {\n const normalizedValue = await fieldPlugin.manage.normalizeInput({\n model,\n field,\n input: value\n });\n\n set(values, path, normalizedValue);\n }\n });\n\n return { ...data, values };\n }\n}\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,eAAe;AAK/B;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAC9BC,eAAwC,IACd;EAC1B,OAAOC,MAAM,IAAI;IACb,MAAMC,QAAQ,GAAGF,eAAe,CAACC,MAAM,CAAC;IAExC,OAAO,OAAOE,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI,KAAK;MAC1C,MAAMC,KAAK,GAAGH,IAAI,CAACI,IAAI;MAEvB,IAAI,CAACD,KAAK,EAAE;QACR,OAAOL,QAAQ,CAACC,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI,CAAC;MAChD;MAEA,MAAMG,SAAS,GAAG,MAAMJ,OAAO,CAACK,GAAG,CAACC,iBAAiB,CAACV,MAAM,CAACW,KAAK,CAACC,OAAO,CAAC;MAC3E,MAAMC,UAAU,GAAG,IAAIC,sBAAsB,CAACN,SAAS,EAAER,MAAM,CAACe,gBAAgB,CAAC;MACjF,MAAMC,eAAe,GAAG,MAAMH,UAAU,CAACI,SAAS,CAACjB,MAAM,CAACW,KAAK,EAAEL,KAAK,CAAC;MAEvE,OAAOL,QAAQ,CAACC,MAAM,EAAE;QAAE,GAAGC,IAAI;QAAEI,IAAI,EAAES;MAAgB,CAAC,EAAEZ,OAAO,EAAEC,IAAI,CAAC;IAC9E,CAAC;EACL,CAAC;AACL,CAAC;AAED,MAAMS,sBAAsB,CAAC;EAIzBI,WAAWA,CAACV,SAAgC,EAAEO,gBAAqC,EAAE;IACjF,IAAI,CAACP,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACO,gBAAgB,GAAGA,gBAAgB;EAC5C;EAEA,MAAME,SAASA,CAACN,KAAe,EAAEJ,IAA2B,EAAE;IAC1D,MAAMY,MAAM,GAAGC,eAAe,CAACb,IAAI,CAACY,MAAM,IAAI,CAAC,CAAC,CAAC;IAEjD,MAAM,IAAI,CAACX,SAAS,CAACa,QAAQ,CAACF,MAAM,EAAE,OAAO;MAAEG,IAAI;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpE,MAAMC,WAAW,GAAG,IAAI,CAACV,gBAAgB,CAACS,KAAK,CAACE,IAAI,CAAC;MACrD,IAAID,WAAW,IAAI,OAAOA,WAAW,CAACE,MAAM,CAACC,cAAc,KAAK,UAAU,EAAE;QACxE,MAAMC,eAAe,GAAG,MAAMJ,WAAW,CAACE,MAAM,CAACC,cAAc,CAAC;UAC5DjB,KAAK;UACLa,KAAK;UACLlB,KAAK,EAAEiB;QACX,CAAC,CAAC;QAEF1B,GAAG,CAACsB,MAAM,EAAEG,IAAI,EAAEO,eAAe,CAAC;MACtC;IACJ,CAAC,CAAC;IAEF,OAAO;MAAE,GAAGtB,IAAI;MAAEY;IAAO,CAAC;EAC9B;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["set","ContentEntryTraverserProvider","normalizeGraphQlInput","resolverFactory","params","resolver","parent","args","context","info","input","data","traverserProvider","container","resolve","traverser","getTraverser","model","modelId","normalizer","GraphQlInputNormalizer","fieldTypePlugins","normalizedInput","normalize","constructor","values","structuredClone","traverse","path","value","field","fieldPlugin","type","manage","normalizeInput","normalizedValue"],"sources":["normalizeGraphQlInput.ts"],"sourcesContent":["import set from \"lodash/set.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport type { CmsEntryResolverFactory, CmsFieldTypePlugins, CmsModel } from \"~/types/index.js\";\nimport type { IContentEntryTraverser } from \"~/features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js\";\nimport { ContentEntryTraverserProvider } from \"~/features/contentEntry/ContentEntryTraverser/index.js\";\n\n/**\n * This decorates a resolver factory, and normalizes `args.data`.\n * This is necessary to separate GraphQL related hacks (like lack of support for union input type)\n * from our own programmatic API. We want the input into our domain logic to be free of GraphQL hacks.\n */\nexport const normalizeGraphQlInput = (\n resolverFactory: CmsEntryResolverFactory\n): CmsEntryResolverFactory => {\n return params => {\n const resolver = resolverFactory(params);\n\n return async (parent, args, context, info) => {\n const input = args.data;\n\n if (!input) {\n return resolver(parent, args, context, info);\n }\n\n const traverserProvider = context.container.resolve(ContentEntryTraverserProvider);\n const traverser = await traverserProvider.getTraverser(params.model.modelId);\n const normalizer = new GraphQlInputNormalizer(traverser, params.fieldTypePlugins);\n const normalizedInput = await normalizer.normalize(params.model, input);\n\n return resolver(parent, { ...args, data: normalizedInput }, context, info);\n };\n };\n};\n\nclass GraphQlInputNormalizer {\n private readonly traverser: IContentEntryTraverser;\n private readonly fieldTypePlugins: CmsFieldTypePlugins;\n\n constructor(traverser: IContentEntryTraverser, fieldTypePlugins: CmsFieldTypePlugins) {\n this.traverser = traverser;\n this.fieldTypePlugins = fieldTypePlugins;\n }\n\n async normalize(model: CmsModel, data: GenericRecord<string>) {\n const values = structuredClone(data.values || {});\n\n await this.traverser.traverse(values, async ({ path, value, field }) => {\n const fieldPlugin = this.fieldTypePlugins[field.type];\n if (fieldPlugin && typeof fieldPlugin.manage.normalizeInput === \"function\") {\n const normalizedValue = await fieldPlugin.manage.normalizeInput({\n model,\n field,\n input: value\n });\n\n set(values, path, normalizedValue);\n }\n });\n\n return { ...data, values };\n }\n}\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,eAAe;AAI/B,SAASC,6BAA6B;;AAEtC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAC9BC,eAAwC,IACd;EAC1B,OAAOC,MAAM,IAAI;IACb,MAAMC,QAAQ,GAAGF,eAAe,CAACC,MAAM,CAAC;IAExC,OAAO,OAAOE,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI,KAAK;MAC1C,MAAMC,KAAK,GAAGH,IAAI,CAACI,IAAI;MAEvB,IAAI,CAACD,KAAK,EAAE;QACR,OAAOL,QAAQ,CAACC,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,IAAI,CAAC;MAChD;MAEA,MAAMG,iBAAiB,GAAGJ,OAAO,CAACK,SAAS,CAACC,OAAO,CAACb,6BAA6B,CAAC;MAClF,MAAMc,SAAS,GAAG,MAAMH,iBAAiB,CAACI,YAAY,CAACZ,MAAM,CAACa,KAAK,CAACC,OAAO,CAAC;MAC5E,MAAMC,UAAU,GAAG,IAAIC,sBAAsB,CAACL,SAAS,EAAEX,MAAM,CAACiB,gBAAgB,CAAC;MACjF,MAAMC,eAAe,GAAG,MAAMH,UAAU,CAACI,SAAS,CAACnB,MAAM,CAACa,KAAK,EAAEP,KAAK,CAAC;MAEvE,OAAOL,QAAQ,CAACC,MAAM,EAAE;QAAE,GAAGC,IAAI;QAAEI,IAAI,EAAEW;MAAgB,CAAC,EAAEd,OAAO,EAAEC,IAAI,CAAC;IAC9E,CAAC;EACL,CAAC;AACL,CAAC;AAED,MAAMW,sBAAsB,CAAC;EAIzBI,WAAWA,CAACT,SAAiC,EAAEM,gBAAqC,EAAE;IAClF,IAAI,CAACN,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACM,gBAAgB,GAAGA,gBAAgB;EAC5C;EAEA,MAAME,SAASA,CAACN,KAAe,EAAEN,IAA2B,EAAE;IAC1D,MAAMc,MAAM,GAAGC,eAAe,CAACf,IAAI,CAACc,MAAM,IAAI,CAAC,CAAC,CAAC;IAEjD,MAAM,IAAI,CAACV,SAAS,CAACY,QAAQ,CAACF,MAAM,EAAE,OAAO;MAAEG,IAAI;MAAEC,KAAK;MAAEC;IAAM,CAAC,KAAK;MACpE,MAAMC,WAAW,GAAG,IAAI,CAACV,gBAAgB,CAACS,KAAK,CAACE,IAAI,CAAC;MACrD,IAAID,WAAW,IAAI,OAAOA,WAAW,CAACE,MAAM,CAACC,cAAc,KAAK,UAAU,EAAE;QACxE,MAAMC,eAAe,GAAG,MAAMJ,WAAW,CAACE,MAAM,CAACC,cAAc,CAAC;UAC5DjB,KAAK;UACLa,KAAK;UACLpB,KAAK,EAAEmB;QACX,CAAC,CAAC;QAEF7B,GAAG,CAACyB,MAAM,EAAEG,IAAI,EAAEO,eAAe,CAAC;MACtC;IACJ,CAAC,CAAC;IAEF,OAAO;MAAE,GAAGxB,IAAI;MAAEc;IAAO,CAAC;EAC9B;AACJ","ignoreList":[]}
package/index.d.ts CHANGED
@@ -13,7 +13,8 @@ export * from "./graphqlFields/index.js";
13
13
  export * from "./plugins/index.js";
14
14
  export * from "./utils/incrementEntryIdVersion.js";
15
15
  export * from "./graphql/handleRequest.js";
16
- export * from "./utils/contentEntryTraverser/ContentEntryTraverser.js";
16
+ export * from "./features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js";
17
+ export { ContentEntryTraverserProvider } from "./features/contentEntry/ContentEntryTraverser/abstractions.js";
17
18
  export * from "./utils/contentModelAst/index.js";
18
19
  export { CmsWhereMapper } from "./features/whereMapper/abstractions.js";
19
20
  export { CmsSortMapper } from "./features/sortMapper/abstractions.js";
package/index.js CHANGED
@@ -33,7 +33,8 @@ export * from "./graphqlFields/index.js";
33
33
  export * from "./plugins/index.js";
34
34
  export * from "./utils/incrementEntryIdVersion.js";
35
35
  export * from "./graphql/handleRequest.js";
36
- export * from "./utils/contentEntryTraverser/ContentEntryTraverser.js";
36
+ export * from "./features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js";
37
+ export { ContentEntryTraverserProvider } from "./features/contentEntry/ContentEntryTraverser/abstractions.js";
37
38
  export * from "./utils/contentModelAst/index.js";
38
39
  export { CmsWhereMapper } from "./features/whereMapper/abstractions.js";
39
40
  export { CmsSortMapper } from "./features/sortMapper/abstractions.js";
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["createGraphQL","baseCreateGraphQL","createGraphQLFields","createValidators","createContextParameterPlugin","createHeaderParameterPlugin","createPathParameterPlugin","createContextPlugin","entryFieldFromStorageTransform","entryFromStorageTransform","entryToStorageTransform","createFieldConverters","createExportGraphQL","createStorageTransform","createRevisionIdScalarPlugin","createHeadlessCmsGraphQL","params","createHeadlessCmsContext","CmsWhereMapper","CmsSortMapper"],"sources":["index.ts"],"sourcesContent":["import type { CreateGraphQLParams } from \"~/graphql/index.js\";\nimport { createGraphQL as baseCreateGraphQL } from \"~/graphql/index.js\";\nimport { createGraphQLFields } from \"~/graphqlFields/index.js\";\nimport { createValidators } from \"~/validators/index.js\";\nimport {\n createContextParameterPlugin,\n createHeaderParameterPlugin,\n createPathParameterPlugin\n} from \"~/parameters/index.js\";\nimport type { CrudParams } from \"~/context.js\";\nimport { createContextPlugin } from \"~/context.js\";\nimport {\n entryFieldFromStorageTransform,\n entryFromStorageTransform,\n entryToStorageTransform\n} from \"./utils/entryStorage.js\";\nimport { createFieldConverters } from \"~/fieldConverters/index.js\";\nimport { createExportGraphQL } from \"~/export/index.js\";\nimport { createStorageTransform } from \"~/storage/index.js\";\nimport { createRevisionIdScalarPlugin } from \"~/graphql/scalars/RevisionIdScalarPlugin.js\";\nimport type { Plugin } from \"@webiny/plugins/types.js\";\n\nexport * from \"./utils/isHeadlessCmsReady.js\";\nexport * from \"./utils/createModelField.js\";\nexport * from \"./graphql/schema/resolvers/manage/normalizeGraphQlInput.js\";\n\nexport type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;\nexport const createHeadlessCmsGraphQL = (params: CreateHeadlessCmsGraphQLParams = {}): Plugin[] => {\n return [\n ...createRevisionIdScalarPlugin(),\n /**\n * PathParameter plugins are used to determine the type of the cms endpoint\n */\n createPathParameterPlugin(),\n createHeaderParameterPlugin(),\n createContextParameterPlugin(),\n /**\n * At this point we can create, or not create, CMS GraphQL Schema.\n */\n ...baseCreateGraphQL(params),\n createExportGraphQL()\n ];\n};\n\nexport type ContentContextParams = CrudParams;\nexport const createHeadlessCmsContext = (params: ContentContextParams) => {\n return [\n /**\n * Context for all Lambdas - everything is loaded now.\n */\n createContextPlugin(params),\n createGraphQLFields(),\n createFieldConverters(),\n createValidators(),\n ...createStorageTransform()\n ];\n};\nexport * from \"~/graphqlFields/index.js\";\nexport * from \"~/plugins/index.js\";\nexport * from \"~/utils/incrementEntryIdVersion.js\";\nexport * from \"./graphql/handleRequest.js\";\nexport * from \"./utils/contentEntryTraverser/ContentEntryTraverser.js\";\nexport * from \"./utils/contentModelAst/index.js\";\nexport { CmsWhereMapper } from \"~/features/whereMapper/abstractions.js\";\nexport { CmsSortMapper } from \"~/features/sortMapper/abstractions.js\";\nexport { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };\n"],"mappings":"AACA,SAASA,aAAa,IAAIC,iBAAiB;AAC3C,SAASC,mBAAmB;AAC5B,SAASC,gBAAgB;AACzB,SACIC,4BAA4B,EAC5BC,2BAA2B,EAC3BC,yBAAyB;AAG7B,SAASC,mBAAmB;AAC5B,SACIC,8BAA8B,EAC9BC,yBAAyB,EACzBC,uBAAuB;AAE3B,SAASC,qBAAqB;AAC9B,SAASC,mBAAmB;AAC5B,SAASC,sBAAsB;AAC/B,SAASC,4BAA4B;AAGrC;AACA;AACA;AAGA,OAAO,MAAMC,wBAAwB,GAAGA,CAACC,MAAsC,GAAG,CAAC,CAAC,KAAe;EAC/F,OAAO,CACH,GAAGF,4BAA4B,CAAC,CAAC;EACjC;AACR;AACA;EACQR,yBAAyB,CAAC,CAAC,EAC3BD,2BAA2B,CAAC,CAAC,EAC7BD,4BAA4B,CAAC,CAAC;EAC9B;AACR;AACA;EACQ,GAAGH,iBAAiB,CAACe,MAAM,CAAC,EAC5BJ,mBAAmB,CAAC,CAAC,CACxB;AACL,CAAC;AAGD,OAAO,MAAMK,wBAAwB,GAAID,MAA4B,IAAK;EACtE,OAAO;EACH;AACR;AACA;EACQT,mBAAmB,CAACS,MAAM,CAAC,EAC3Bd,mBAAmB,CAAC,CAAC,EACrBS,qBAAqB,CAAC,CAAC,EACvBR,gBAAgB,CAAC,CAAC,EAClB,GAAGU,sBAAsB,CAAC,CAAC,CAC9B;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,SAASK,cAAc;AACvB,SAASC,aAAa;AACtB,SAAST,uBAAuB,EAAEF,8BAA8B,EAAEC,yBAAyB","ignoreList":[]}
1
+ {"version":3,"names":["createGraphQL","baseCreateGraphQL","createGraphQLFields","createValidators","createContextParameterPlugin","createHeaderParameterPlugin","createPathParameterPlugin","createContextPlugin","entryFieldFromStorageTransform","entryFromStorageTransform","entryToStorageTransform","createFieldConverters","createExportGraphQL","createStorageTransform","createRevisionIdScalarPlugin","createHeadlessCmsGraphQL","params","createHeadlessCmsContext","ContentEntryTraverserProvider","CmsWhereMapper","CmsSortMapper"],"sources":["index.ts"],"sourcesContent":["import type { CreateGraphQLParams } from \"~/graphql/index.js\";\nimport { createGraphQL as baseCreateGraphQL } from \"~/graphql/index.js\";\nimport { createGraphQLFields } from \"~/graphqlFields/index.js\";\nimport { createValidators } from \"~/validators/index.js\";\nimport {\n createContextParameterPlugin,\n createHeaderParameterPlugin,\n createPathParameterPlugin\n} from \"~/parameters/index.js\";\nimport type { CrudParams } from \"~/context.js\";\nimport { createContextPlugin } from \"~/context.js\";\nimport {\n entryFieldFromStorageTransform,\n entryFromStorageTransform,\n entryToStorageTransform\n} from \"./utils/entryStorage.js\";\nimport { createFieldConverters } from \"~/fieldConverters/index.js\";\nimport { createExportGraphQL } from \"~/export/index.js\";\nimport { createStorageTransform } from \"~/storage/index.js\";\nimport { createRevisionIdScalarPlugin } from \"~/graphql/scalars/RevisionIdScalarPlugin.js\";\nimport type { Plugin } from \"@webiny/plugins/types.js\";\n\nexport * from \"./utils/isHeadlessCmsReady.js\";\nexport * from \"./utils/createModelField.js\";\nexport * from \"./graphql/schema/resolvers/manage/normalizeGraphQlInput.js\";\n\nexport type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;\nexport const createHeadlessCmsGraphQL = (params: CreateHeadlessCmsGraphQLParams = {}): Plugin[] => {\n return [\n ...createRevisionIdScalarPlugin(),\n /**\n * PathParameter plugins are used to determine the type of the cms endpoint\n */\n createPathParameterPlugin(),\n createHeaderParameterPlugin(),\n createContextParameterPlugin(),\n /**\n * At this point we can create, or not create, CMS GraphQL Schema.\n */\n ...baseCreateGraphQL(params),\n createExportGraphQL()\n ];\n};\n\nexport type ContentContextParams = CrudParams;\nexport const createHeadlessCmsContext = (params: ContentContextParams) => {\n return [\n /**\n * Context for all Lambdas - everything is loaded now.\n */\n createContextPlugin(params),\n createGraphQLFields(),\n createFieldConverters(),\n createValidators(),\n ...createStorageTransform()\n ];\n};\nexport * from \"~/graphqlFields/index.js\";\nexport * from \"~/plugins/index.js\";\nexport * from \"~/utils/incrementEntryIdVersion.js\";\nexport * from \"./graphql/handleRequest.js\";\nexport * from \"./features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js\";\nexport { ContentEntryTraverserProvider } from \"./features/contentEntry/ContentEntryTraverser/abstractions.js\";\nexport * from \"./utils/contentModelAst/index.js\";\nexport { CmsWhereMapper } from \"~/features/whereMapper/abstractions.js\";\nexport { CmsSortMapper } from \"~/features/sortMapper/abstractions.js\";\nexport { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };\n"],"mappings":"AACA,SAASA,aAAa,IAAIC,iBAAiB;AAC3C,SAASC,mBAAmB;AAC5B,SAASC,gBAAgB;AACzB,SACIC,4BAA4B,EAC5BC,2BAA2B,EAC3BC,yBAAyB;AAG7B,SAASC,mBAAmB;AAC5B,SACIC,8BAA8B,EAC9BC,yBAAyB,EACzBC,uBAAuB;AAE3B,SAASC,qBAAqB;AAC9B,SAASC,mBAAmB;AAC5B,SAASC,sBAAsB;AAC/B,SAASC,4BAA4B;AAGrC;AACA;AACA;AAGA,OAAO,MAAMC,wBAAwB,GAAGA,CAACC,MAAsC,GAAG,CAAC,CAAC,KAAe;EAC/F,OAAO,CACH,GAAGF,4BAA4B,CAAC,CAAC;EACjC;AACR;AACA;EACQR,yBAAyB,CAAC,CAAC,EAC3BD,2BAA2B,CAAC,CAAC,EAC7BD,4BAA4B,CAAC,CAAC;EAC9B;AACR;AACA;EACQ,GAAGH,iBAAiB,CAACe,MAAM,CAAC,EAC5BJ,mBAAmB,CAAC,CAAC,CACxB;AACL,CAAC;AAGD,OAAO,MAAMK,wBAAwB,GAAID,MAA4B,IAAK;EACtE,OAAO;EACH;AACR;AACA;EACQT,mBAAmB,CAACS,MAAM,CAAC,EAC3Bd,mBAAmB,CAAC,CAAC,EACrBS,qBAAqB,CAAC,CAAC,EACvBR,gBAAgB,CAAC,CAAC,EAClB,GAAGU,sBAAsB,CAAC,CAAC,CAC9B;AACL,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,SAASK,6BAA6B;AACtC;AACA,SAASC,cAAc;AACvB,SAASC,aAAa;AACtB,SAASV,uBAAuB,EAAEF,8BAA8B,EAAEC,yBAAyB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms",
3
- "version": "6.0.0-rc.7",
3
+ "version": "6.1.0-beta.0",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -22,50 +22,50 @@
22
22
  "@babel/code-frame": "7.29.0",
23
23
  "@graphql-tools/merge": "9.1.7",
24
24
  "@graphql-tools/schema": "10.0.31",
25
- "@webiny/api": "6.0.0-rc.7",
26
- "@webiny/api-core": "6.0.0-rc.7",
25
+ "@webiny/api": "6.1.0-beta.0",
26
+ "@webiny/api-core": "6.1.0-beta.0",
27
27
  "@webiny/di": "0.2.3",
28
- "@webiny/error": "6.0.0-rc.7",
29
- "@webiny/feature": "6.0.0-rc.7",
30
- "@webiny/handler": "6.0.0-rc.7",
31
- "@webiny/handler-aws": "6.0.0-rc.7",
32
- "@webiny/handler-db": "6.0.0-rc.7",
33
- "@webiny/handler-graphql": "6.0.0-rc.7",
34
- "@webiny/plugins": "6.0.0-rc.7",
35
- "@webiny/project": "6.0.0-rc.7",
36
- "@webiny/utils": "6.0.0-rc.7",
37
- "@webiny/validation": "6.0.0-rc.7",
28
+ "@webiny/error": "6.1.0-beta.0",
29
+ "@webiny/feature": "6.1.0-beta.0",
30
+ "@webiny/handler": "6.1.0-beta.0",
31
+ "@webiny/handler-aws": "6.1.0-beta.0",
32
+ "@webiny/handler-db": "6.1.0-beta.0",
33
+ "@webiny/handler-graphql": "6.1.0-beta.0",
34
+ "@webiny/plugins": "6.1.0-beta.0",
35
+ "@webiny/project": "6.1.0-beta.0",
36
+ "@webiny/utils": "6.1.0-beta.0",
37
+ "@webiny/validation": "6.1.0-beta.0",
38
38
  "dot-prop-immutable": "2.1.1",
39
- "graphql": "16.13.1",
39
+ "graphql": "16.13.2",
40
40
  "graphql-tag": "2.12.6",
41
41
  "lodash": "4.17.23",
42
42
  "p-map": "7.0.4",
43
43
  "p-reduce": "3.0.0",
44
44
  "pluralize": "8.0.0",
45
- "slugify": "1.6.6",
46
- "zod": "3.25.76"
45
+ "slugify": "1.6.8",
46
+ "zod": "4.3.6"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/babel__code-frame": "7.27.0",
50
50
  "@types/pluralize": "0.0.33",
51
- "@webiny/aws-sdk": "6.0.0-rc.7",
52
- "@webiny/build-tools": "6.0.0-rc.7",
53
- "@webiny/db-dynamodb": "6.0.0-rc.7",
51
+ "@webiny/aws-sdk": "6.1.0-beta.0",
52
+ "@webiny/build-tools": "6.1.0-beta.0",
53
+ "@webiny/db-dynamodb": "6.1.0-beta.0",
54
54
  "@webiny/handler-db": "0.0.0",
55
- "@webiny/project-utils": "6.0.0-rc.7",
56
- "@webiny/sdk": "6.0.0-rc.7",
57
- "@webiny/wcp": "6.0.0-rc.7",
55
+ "@webiny/project-utils": "6.1.0-beta.0",
56
+ "@webiny/sdk": "6.1.0-beta.0",
57
+ "@webiny/wcp": "6.1.0-beta.0",
58
58
  "apollo-graphql": "0.9.7",
59
- "graphql": "16.13.1",
59
+ "graphql": "16.13.2",
60
60
  "prettier": "3.6.2",
61
61
  "rimraf": "6.1.3",
62
62
  "typescript": "5.9.3",
63
- "vitest": "4.0.18",
63
+ "vitest": "4.1.2",
64
64
  "write-json-file": "7.0.0"
65
65
  },
66
66
  "publishConfig": {
67
67
  "access": "public",
68
68
  "directory": "dist"
69
69
  },
70
- "gitHead": "9c6892640a45679ff521e25cd6587dff57393a2e"
70
+ "gitHead": "a3bd3695c66c79238e380d7360d9731b5fcf9c87"
71
71
  }
@@ -1,4 +1,3 @@
1
- import type { ContentEntryTraverser } from "../utils/contentEntryTraverser/ContentEntryTraverser.js";
2
1
  import type { CmsDeleteEntryOptions, CmsEntry, CmsEntryGetParams, CmsEntryListParams, CmsEntryMeta, CmsEntryUniqueValue, CmsEntryValidateResponse, CmsEntryValues, CreateCmsEntryInput, CreateCmsEntryOptionsInput, CreateFromCmsEntryInput, CreateRevisionCmsEntryOptionsInput, DeleteMultipleEntriesParams, DeleteMultipleEntriesResponse, GetUniqueFieldValuesParams, UpdateCmsEntryInput, UpdateCmsEntryOptionsInput } from "./types.js";
3
2
  import type { CmsModel } from "./model.js";
4
3
  import type { GenericRecord } from "@webiny/api/types.js";
@@ -9,10 +8,6 @@ import type { GenericRecord } from "@webiny/api/types.js";
9
8
  * @category CmsEntry
10
9
  */
11
10
  export interface CmsEntryContext {
12
- /**
13
- * Get content entry traverser.
14
- */
15
- getEntryTraverser: (modelId: string) => Promise<ContentEntryTraverser>;
16
11
  /**
17
12
  * Get a single content entry for a model.
18
13
  */
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["context.ts"],"sourcesContent":["import type { ContentEntryTraverser } from \"~/utils/contentEntryTraverser/ContentEntryTraverser.js\";\nimport type {\n CmsDeleteEntryOptions,\n CmsEntry,\n CmsEntryGetParams,\n CmsEntryListParams,\n CmsEntryMeta,\n CmsEntryUniqueValue,\n CmsEntryValidateResponse,\n CmsEntryValues,\n CreateCmsEntryInput,\n CreateCmsEntryOptionsInput,\n CreateFromCmsEntryInput,\n CreateRevisionCmsEntryOptionsInput,\n DeleteMultipleEntriesParams,\n DeleteMultipleEntriesResponse,\n GetUniqueFieldValuesParams,\n UpdateCmsEntryInput,\n UpdateCmsEntryOptionsInput\n} from \"./types.js\";\nimport type { CmsModel } from \"./model.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\n/**\n * Cms Entry CRUD methods in the context.\n *\n * @category Context\n * @category CmsEntry\n */\nexport interface CmsEntryContext {\n /**\n * Get content entry traverser.\n */\n getEntryTraverser: (modelId: string) => Promise<ContentEntryTraverser>;\n /**\n * Get a single content entry for a model.\n */\n getEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryGetParams\n ) => Promise<CmsEntry<T>>;\n /**\n * Get a list of entries for a model by a given ID (revision).\n */\n getEntriesByIds: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n revisions: string[]\n ) => Promise<CmsEntry<T>[]>;\n /**\n * Get the entry for a model by a given ID.\n */\n getEntryById<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n revision: string\n ): Promise<CmsEntry<T>>;\n /**\n * List entries for a model. Internal method used by get, listLatest and listPublished.\n */\n listEntries: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryListParams\n ) => Promise<[CmsEntry<T>[], CmsEntryMeta]>;\n /**\n * Lists the latest entries. Used for manage API.\n */\n listLatestEntries: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ) => Promise<[CmsEntry<T>[], CmsEntryMeta]>;\n /**\n * List published entries. Used for read API.\n */\n listPublishedEntries: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ) => Promise<[CmsEntry<T>[], CmsEntryMeta]>;\n /**\n * Lists the deleted entries. Used for manage API.\n */\n listDeletedEntries: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ) => Promise<[CmsEntry<T>[], CmsEntryMeta]>;\n /**\n * List published entries by IDs.\n */\n getPublishedEntriesByIds: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n ids: string[]\n ) => Promise<CmsEntry<T>[]>;\n /**\n * List latest entries by IDs.\n */\n getLatestEntriesByIds: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n ids: string[]\n ) => Promise<CmsEntry<T>[]>;\n /**\n * Create a new content entry.\n */\n createEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n input: CreateCmsEntryInput<T>,\n options?: CreateCmsEntryOptionsInput\n ) => Promise<CmsEntry<T>>;\n /**\n * Create a new entry from already existing entry.\n */\n createEntryRevisionFrom: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n input: CreateFromCmsEntryInput<T>,\n options?: CreateRevisionCmsEntryOptionsInput\n ) => Promise<CmsEntry<T>>;\n /**\n * Update existing entry.\n */\n updateEntry: <TInput extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n input: UpdateCmsEntryInput<TInput>,\n meta?: GenericRecord,\n options?: UpdateCmsEntryOptionsInput\n ) => Promise<CmsEntry<TInput>>;\n /**\n * Validate the entry - either new one or existing one.\n */\n validateEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n input: UpdateCmsEntryInput<T>\n ) => Promise<CmsEntryValidateResponse>;\n /**\n * Move entry, and all its revisions, to a new folder.\n */\n moveEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n folderId: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Method that republishes entry with given identifier.\n * @internal\n */\n republishEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Delete only a certain revision of the entry.\n */\n deleteEntryRevision: (model: CmsModel, id: string) => Promise<void>;\n /**\n * Delete entry with all its revisions.\n */\n deleteEntry: (model: CmsModel, id: string, options?: CmsDeleteEntryOptions) => Promise<void>;\n /**\n * Restore entry from trash bin with all its revisions.\n */\n restoreEntryFromBin: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Delete multiple entries\n */\n deleteMultipleEntries: (\n model: CmsModel,\n params: DeleteMultipleEntriesParams\n ) => Promise<DeleteMultipleEntriesResponse>;\n /**\n * Publish entry.\n */\n publishEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Unpublish entry.\n */\n unpublishEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Get all entry revisions.\n */\n getEntryRevisions: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>[]>;\n /**\n * List all unique values for a given field.\n *\n * @internal\n */\n getUniqueFieldValues: (\n model: CmsModel,\n params: GetUniqueFieldValuesParams\n ) => Promise<CmsEntryUniqueValue[]>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["context.ts"],"sourcesContent":["import type {\n CmsDeleteEntryOptions,\n CmsEntry,\n CmsEntryGetParams,\n CmsEntryListParams,\n CmsEntryMeta,\n CmsEntryUniqueValue,\n CmsEntryValidateResponse,\n CmsEntryValues,\n CreateCmsEntryInput,\n CreateCmsEntryOptionsInput,\n CreateFromCmsEntryInput,\n CreateRevisionCmsEntryOptionsInput,\n DeleteMultipleEntriesParams,\n DeleteMultipleEntriesResponse,\n GetUniqueFieldValuesParams,\n UpdateCmsEntryInput,\n UpdateCmsEntryOptionsInput\n} from \"./types.js\";\nimport type { CmsModel } from \"./model.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\n/**\n * Cms Entry CRUD methods in the context.\n *\n * @category Context\n * @category CmsEntry\n */\nexport interface CmsEntryContext {\n /**\n * Get a single content entry for a model.\n */\n getEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryGetParams\n ) => Promise<CmsEntry<T>>;\n /**\n * Get a list of entries for a model by a given ID (revision).\n */\n getEntriesByIds: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n revisions: string[]\n ) => Promise<CmsEntry<T>[]>;\n /**\n * Get the entry for a model by a given ID.\n */\n getEntryById<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n revision: string\n ): Promise<CmsEntry<T>>;\n /**\n * List entries for a model. Internal method used by get, listLatest and listPublished.\n */\n listEntries: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryListParams\n ) => Promise<[CmsEntry<T>[], CmsEntryMeta]>;\n /**\n * Lists the latest entries. Used for manage API.\n */\n listLatestEntries: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ) => Promise<[CmsEntry<T>[], CmsEntryMeta]>;\n /**\n * List published entries. Used for read API.\n */\n listPublishedEntries: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ) => Promise<[CmsEntry<T>[], CmsEntryMeta]>;\n /**\n * Lists the deleted entries. Used for manage API.\n */\n listDeletedEntries: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ) => Promise<[CmsEntry<T>[], CmsEntryMeta]>;\n /**\n * List published entries by IDs.\n */\n getPublishedEntriesByIds: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n ids: string[]\n ) => Promise<CmsEntry<T>[]>;\n /**\n * List latest entries by IDs.\n */\n getLatestEntriesByIds: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n ids: string[]\n ) => Promise<CmsEntry<T>[]>;\n /**\n * Create a new content entry.\n */\n createEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n input: CreateCmsEntryInput<T>,\n options?: CreateCmsEntryOptionsInput\n ) => Promise<CmsEntry<T>>;\n /**\n * Create a new entry from already existing entry.\n */\n createEntryRevisionFrom: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n input: CreateFromCmsEntryInput<T>,\n options?: CreateRevisionCmsEntryOptionsInput\n ) => Promise<CmsEntry<T>>;\n /**\n * Update existing entry.\n */\n updateEntry: <TInput extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n input: UpdateCmsEntryInput<TInput>,\n meta?: GenericRecord,\n options?: UpdateCmsEntryOptionsInput\n ) => Promise<CmsEntry<TInput>>;\n /**\n * Validate the entry - either new one or existing one.\n */\n validateEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n input: UpdateCmsEntryInput<T>\n ) => Promise<CmsEntryValidateResponse>;\n /**\n * Move entry, and all its revisions, to a new folder.\n */\n moveEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n folderId: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Method that republishes entry with given identifier.\n * @internal\n */\n republishEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Delete only a certain revision of the entry.\n */\n deleteEntryRevision: (model: CmsModel, id: string) => Promise<void>;\n /**\n * Delete entry with all its revisions.\n */\n deleteEntry: (model: CmsModel, id: string, options?: CmsDeleteEntryOptions) => Promise<void>;\n /**\n * Restore entry from trash bin with all its revisions.\n */\n restoreEntryFromBin: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Delete multiple entries\n */\n deleteMultipleEntries: (\n model: CmsModel,\n params: DeleteMultipleEntriesParams\n ) => Promise<DeleteMultipleEntriesResponse>;\n /**\n * Publish entry.\n */\n publishEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Unpublish entry.\n */\n unpublishEntry: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>>;\n /**\n * Get all entry revisions.\n */\n getEntryRevisions: <T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ) => Promise<CmsEntry<T>[]>;\n /**\n * List all unique values for a given field.\n *\n * @internal\n */\n getUniqueFieldValues: (\n model: CmsModel,\n params: GetUniqueFieldValuesParams\n ) => Promise<CmsEntryUniqueValue[]>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- export {};
2
-
3
- //# sourceMappingURL=validators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["validators.ts"],"sourcesContent":["/**\n * Validator interface mixins for type-safe field validators.\n * These interfaces provide TypeScript autocomplete and type safety for field validation methods.\n */\n\nexport interface RequiredValidator {\n required(message?: string): this;\n}\n\nexport interface MinLengthValidator {\n minLength(value: number, message?: string): this;\n}\n\nexport interface MaxLengthValidator {\n maxLength(value: number, message?: string): this;\n}\n\n/**\n * Custom regex pattern validator.\n * For common patterns, use the preset validators below (email, url, etc.).\n */\nexport interface PatternValidator {\n pattern(regex: string, flags?: string, message?: string): this;\n}\n\n/**\n * Pattern preset validators.\n * These are convenience methods for common validation patterns.\n */\nexport interface EmailValidator {\n email(message?: string): this;\n}\n\nexport interface UrlValidator {\n url(message?: string): this;\n}\n\nexport interface LowerCaseValidator {\n lowerCase(message?: string): this;\n}\n\nexport interface UpperCaseValidator {\n upperCase(message?: string): this;\n}\n\nexport interface LowerCaseSpaceValidator {\n lowerCaseSpace(message?: string): this;\n}\n\nexport interface UpperCaseSpaceValidator {\n upperCaseSpace(message?: string): this;\n}\n\n/**\n * Number comparison validators\n */\nexport interface GteValidator {\n gte(value: number, message?: string): this;\n}\n\nexport interface LteValidator {\n lte(value: number, message?: string): this;\n}\n\n/**\n * Date/time comparison validators\n */\nexport interface DateGteValidator {\n dateGte(value: string, message?: string): this;\n}\n\nexport interface DateLteValidator {\n dateLte(value: string, message?: string): this;\n}\n\n/**\n * Unique value validator (ensures field value is unique across entries)\n */\nexport interface UniqueValidator {\n unique(message?: string): this;\n}\n\n/**\n * List validators (for list fields).\n * These validate the array itself, not individual items.\n */\nexport interface ListMinLengthValidator {\n listMinLength(value: number, message?: string): this;\n}\n\nexport interface ListMaxLengthValidator {\n listMaxLength(value: number, message?: string): this;\n}\n"],"mappings":"","ignoreList":[]}