@webiny/api-headless-cms 0.0.0-unstable.aad28a72ae → 0.0.0-unstable.acacc54f0e

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 (448) hide show
  1. package/constants.d.ts +1 -0
  2. package/constants.js +8 -0
  3. package/constants.js.map +1 -0
  4. package/context.d.ts +5 -2
  5. package/context.js +94 -24
  6. package/context.js.map +1 -1
  7. package/crud/contentEntry/afterDelete.js +0 -5
  8. package/crud/contentEntry/afterDelete.js.map +1 -1
  9. package/crud/contentEntry/beforeCreate.js +0 -3
  10. package/crud/contentEntry/beforeCreate.js.map +1 -1
  11. package/crud/contentEntry/beforeUpdate.js +0 -3
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  13. package/crud/contentEntry/entryDataValidation.js +1 -40
  14. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  15. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  16. package/crud/contentEntry/markLockedFields.js +15 -28
  17. package/crud/contentEntry/markLockedFields.js.map +1 -1
  18. package/crud/contentEntry/referenceFieldsMapping.js +39 -66
  19. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  20. package/crud/contentEntry/searchableFields.js +1 -12
  21. package/crud/contentEntry/searchableFields.js.map +1 -1
  22. package/crud/contentEntry.crud.d.ts +12 -5
  23. package/crud/contentEntry.crud.js +1183 -921
  24. package/crud/contentEntry.crud.js.map +1 -1
  25. package/crud/contentModel/afterCreate.js +0 -2
  26. package/crud/contentModel/afterCreate.js.map +1 -1
  27. package/crud/contentModel/afterCreateFrom.js +0 -2
  28. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  29. package/crud/contentModel/afterDelete.js +0 -2
  30. package/crud/contentModel/afterDelete.js.map +1 -1
  31. package/crud/contentModel/afterUpdate.js +0 -2
  32. package/crud/contentModel/afterUpdate.js.map +1 -1
  33. package/crud/contentModel/beforeCreate.d.ts +2 -3
  34. package/crud/contentModel/beforeCreate.js +43 -109
  35. package/crud/contentModel/beforeCreate.js.map +1 -1
  36. package/crud/contentModel/beforeDelete.d.ts +1 -1
  37. package/crud/contentModel/beforeDelete.js +1 -15
  38. package/crud/contentModel/beforeDelete.js.map +1 -1
  39. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  40. package/crud/contentModel/beforeUpdate.js +33 -10
  41. package/crud/contentModel/beforeUpdate.js.map +1 -1
  42. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  43. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  44. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  45. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  46. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  47. package/crud/contentModel/createFieldStorageId.js +0 -3
  48. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  49. package/crud/contentModel/defaultFields.d.ts +5 -0
  50. package/crud/contentModel/defaultFields.js +58 -0
  51. package/crud/contentModel/defaultFields.js.map +1 -0
  52. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  53. package/crud/contentModel/fields/descriptionField.js +42 -0
  54. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  55. package/crud/contentModel/fields/imageField.d.ts +2 -0
  56. package/crud/contentModel/fields/imageField.js +46 -0
  57. package/crud/contentModel/fields/imageField.js.map +1 -0
  58. package/crud/contentModel/fields/titleField.d.ts +2 -0
  59. package/crud/contentModel/fields/titleField.js +58 -0
  60. package/crud/contentModel/fields/titleField.js.map +1 -0
  61. package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
  62. package/crud/contentModel/validate/endingAllowed.js +26 -0
  63. package/crud/contentModel/validate/endingAllowed.js.map +1 -0
  64. package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
  65. package/crud/contentModel/validate/isModelEndingAllowed.js +24 -0
  66. package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
  67. package/crud/contentModel/validate/modelId.d.ts +11 -0
  68. package/crud/contentModel/validate/modelId.js +36 -0
  69. package/crud/contentModel/validate/modelId.js.map +1 -0
  70. package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
  71. package/crud/contentModel/validate/pluralApiName.js +24 -0
  72. package/crud/contentModel/validate/pluralApiName.js.map +1 -0
  73. package/crud/contentModel/validate/singularApiName.d.ts +7 -0
  74. package/crud/contentModel/validate/singularApiName.js +24 -0
  75. package/crud/contentModel/validate/singularApiName.js.map +1 -0
  76. package/crud/contentModel/validateLayout.js +0 -8
  77. package/crud/contentModel/validateLayout.js.map +1 -1
  78. package/crud/contentModel/validateModel.d.ts +4 -4
  79. package/crud/contentModel/validateModel.js +6 -11
  80. package/crud/contentModel/validateModel.js.map +1 -1
  81. package/crud/contentModel/validateModelFields.d.ts +4 -4
  82. package/crud/contentModel/validateModelFields.js +98 -127
  83. package/crud/contentModel/validateModelFields.js.map +1 -1
  84. package/crud/contentModel/validation.d.ts +591 -0
  85. package/crud/contentModel/validation.js +145 -0
  86. package/crud/contentModel/validation.js.map +1 -0
  87. package/crud/contentModel.crud.d.ts +2 -0
  88. package/crud/contentModel.crud.js +373 -397
  89. package/crud/contentModel.crud.js.map +1 -1
  90. package/crud/contentModelGroup/beforeCreate.js +0 -12
  91. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  92. package/crud/contentModelGroup/beforeDelete.js +0 -8
  93. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  94. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  95. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  96. package/crud/contentModelGroup/validation.d.ts +30 -0
  97. package/crud/contentModelGroup/validation.js +34 -0
  98. package/crud/contentModelGroup/validation.js.map +1 -0
  99. package/crud/contentModelGroup.crud.d.ts +2 -0
  100. package/crud/contentModelGroup.crud.js +206 -235
  101. package/crud/contentModelGroup.crud.js.map +1 -1
  102. package/crud/settings.crud.d.ts +3 -1
  103. package/crud/settings.crud.js +7 -28
  104. package/crud/settings.crud.js.map +1 -1
  105. package/crud/system.crud.js +1 -96
  106. package/crud/system.crud.js.map +1 -1
  107. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  108. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  109. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +0 -36
  110. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  111. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +1 -54
  112. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  113. package/fieldConverters/index.js +0 -5
  114. package/fieldConverters/index.js.map +1 -1
  115. package/graphql/buildSchemaPlugins.d.ts +8 -3
  116. package/graphql/buildSchemaPlugins.js +7 -11
  117. package/graphql/buildSchemaPlugins.js.map +1 -1
  118. package/graphql/checkEndpointAccess.d.ts +2 -0
  119. package/graphql/checkEndpointAccess.js +18 -0
  120. package/graphql/checkEndpointAccess.js.map +1 -0
  121. package/graphql/createExecutableSchema.d.ts +6 -0
  122. package/graphql/createExecutableSchema.js +29 -0
  123. package/graphql/createExecutableSchema.js.map +1 -0
  124. package/graphql/createRequestBody.d.ts +2 -0
  125. package/graphql/createRequestBody.js +14 -0
  126. package/graphql/createRequestBody.js.map +1 -0
  127. package/graphql/formatErrorPayload.d.ts +1 -0
  128. package/graphql/formatErrorPayload.js +25 -0
  129. package/graphql/formatErrorPayload.js.map +1 -0
  130. package/graphql/generateSchema.d.ts +8 -0
  131. package/graphql/generateSchema.js +31 -0
  132. package/graphql/generateSchema.js.map +1 -0
  133. package/graphql/getSchema.d.ts +17 -0
  134. package/graphql/getSchema.js +102 -0
  135. package/graphql/getSchema.js.map +1 -0
  136. package/graphql/graphQLHandlerFactory.js +8 -169
  137. package/graphql/graphQLHandlerFactory.js.map +1 -1
  138. package/graphql/handleRequest.d.ts +11 -0
  139. package/graphql/handleRequest.js +81 -0
  140. package/graphql/handleRequest.js.map +1 -0
  141. package/graphql/index.d.ts +1 -3
  142. package/graphql/index.js +2 -46
  143. package/graphql/index.js.map +1 -1
  144. package/graphql/schema/baseContentSchema.d.ts +6 -2
  145. package/graphql/schema/baseContentSchema.js +10 -20
  146. package/graphql/schema/baseContentSchema.js.map +1 -1
  147. package/graphql/schema/baseSchema.d.ts +3 -0
  148. package/graphql/schema/baseSchema.js +84 -0
  149. package/graphql/schema/baseSchema.js.map +1 -0
  150. package/graphql/schema/contentEntries.d.ts +6 -2
  151. package/graphql/schema/contentEntries.js +126 -110
  152. package/graphql/schema/contentEntries.js.map +1 -1
  153. package/graphql/schema/contentModelGroups.d.ts +6 -2
  154. package/graphql/schema/contentModelGroups.js +16 -29
  155. package/graphql/schema/contentModelGroups.js.map +1 -1
  156. package/graphql/schema/contentModels.d.ts +6 -2
  157. package/graphql/schema/contentModels.js +41 -24
  158. package/graphql/schema/contentModels.js.map +1 -1
  159. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  160. package/graphql/schema/createFieldResolvers.js +19 -36
  161. package/graphql/schema/createFieldResolvers.js.map +1 -1
  162. package/graphql/schema/createFieldTypePluginRecords.d.ts +3 -0
  163. package/graphql/schema/createFieldTypePluginRecords.js +13 -0
  164. package/graphql/schema/createFieldTypePluginRecords.js.map +1 -0
  165. package/graphql/schema/createManageResolvers.d.ts +1 -1
  166. package/graphql/schema/createManageResolvers.js +47 -43
  167. package/graphql/schema/createManageResolvers.js.map +1 -1
  168. package/graphql/schema/createManageSDL.d.ts +3 -0
  169. package/graphql/schema/createManageSDL.js +96 -77
  170. package/graphql/schema/createManageSDL.js.map +1 -1
  171. package/graphql/schema/createPreviewResolvers.js +3 -17
  172. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  173. package/graphql/schema/createReadResolvers.js +8 -17
  174. package/graphql/schema/createReadResolvers.js.map +1 -1
  175. package/graphql/schema/createReadSDL.d.ts +3 -0
  176. package/graphql/schema/createReadSDL.js +47 -47
  177. package/graphql/schema/createReadSDL.js.map +1 -1
  178. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  179. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
  180. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  181. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  182. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  183. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  184. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  185. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +2 -1
  186. package/graphql/schema/resolvers/manage/resolveDelete.js +13 -9
  187. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  188. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.d.ts +7 -0
  189. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +20 -0
  190. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -0
  191. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  192. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  193. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  194. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  195. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  196. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  197. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.d.ts +4 -0
  198. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +18 -0
  199. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -0
  200. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  201. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  202. package/graphql/schema/resolvers/manage/resolveMove.d.ts +8 -0
  203. package/graphql/schema/resolvers/manage/resolveMove.js +25 -0
  204. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -0
  205. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  206. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  207. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  208. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  209. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  210. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  211. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  212. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  213. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  214. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  215. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  216. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  217. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  218. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  219. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  220. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  221. package/graphql/schema/schemaPlugins.d.ts +8 -3
  222. package/graphql/schema/schemaPlugins.js +58 -69
  223. package/graphql/schema/schemaPlugins.js.map +1 -1
  224. package/graphql/system.d.ts +2 -5
  225. package/graphql/system.js +56 -98
  226. package/graphql/system.js.map +1 -1
  227. package/graphqlFields/boolean.js +0 -12
  228. package/graphqlFields/boolean.js.map +1 -1
  229. package/graphqlFields/datetime.js +0 -17
  230. package/graphqlFields/datetime.js.map +1 -1
  231. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +1 -1
  232. package/graphqlFields/dynamicZone/dynamicZoneField.js +57 -48
  233. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  234. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +2 -18
  235. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
  236. package/graphqlFields/dynamicZone/index.js +0 -2
  237. package/graphqlFields/dynamicZone/index.js.map +1 -1
  238. package/graphqlFields/file.js +0 -8
  239. package/graphqlFields/file.js.map +1 -1
  240. package/graphqlFields/helpers.js +0 -10
  241. package/graphqlFields/helpers.js.map +1 -1
  242. package/graphqlFields/index.js +0 -12
  243. package/graphqlFields/index.js.map +1 -1
  244. package/graphqlFields/longText.js +0 -10
  245. package/graphqlFields/longText.js.map +1 -1
  246. package/graphqlFields/number.js +1 -12
  247. package/graphqlFields/number.js.map +1 -1
  248. package/graphqlFields/object.js +25 -42
  249. package/graphqlFields/object.js.map +1 -1
  250. package/graphqlFields/ref.js +64 -66
  251. package/graphqlFields/ref.js.map +1 -1
  252. package/graphqlFields/richText.js +0 -9
  253. package/graphqlFields/richText.js.map +1 -1
  254. package/graphqlFields/text.js +2 -11
  255. package/graphqlFields/text.js.map +1 -1
  256. package/index.d.ts +5 -3
  257. package/index.js +26 -28
  258. package/index.js.map +1 -1
  259. package/modelManager/DefaultCmsModelManager.js +0 -16
  260. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  261. package/modelManager/index.js +0 -4
  262. package/modelManager/index.js.map +1 -1
  263. package/package.json +35 -41
  264. package/parameters/context.js +0 -4
  265. package/parameters/context.js.map +1 -1
  266. package/parameters/header.js +3 -14
  267. package/parameters/header.js.map +1 -1
  268. package/parameters/index.js +0 -8
  269. package/parameters/index.js.map +1 -1
  270. package/parameters/manual.js +1 -8
  271. package/parameters/manual.js.map +1 -1
  272. package/parameters/path.js +0 -11
  273. package/parameters/path.js.map +1 -1
  274. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  275. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  276. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  277. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  278. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  279. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  280. package/plugins/CmsGroupPlugin.js +0 -8
  281. package/plugins/CmsGroupPlugin.js.map +1 -1
  282. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  283. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  284. package/plugins/CmsModelPlugin.d.ts +21 -3
  285. package/plugins/CmsModelPlugin.js +30 -40
  286. package/plugins/CmsModelPlugin.js.map +1 -1
  287. package/plugins/CmsParametersPlugin.js +3 -6
  288. package/plugins/CmsParametersPlugin.js.map +1 -1
  289. package/plugins/StorageOperationsCmsModelPlugin.d.ts +23 -0
  290. package/plugins/StorageOperationsCmsModelPlugin.js +42 -0
  291. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -0
  292. package/plugins/StorageTransformPlugin.js +0 -9
  293. package/plugins/StorageTransformPlugin.js.map +1 -1
  294. package/plugins/index.d.ts +3 -0
  295. package/plugins/index.js +33 -10
  296. package/plugins/index.js.map +1 -1
  297. package/storage/default.js +0 -3
  298. package/storage/default.js.map +1 -1
  299. package/storage/object.js +0 -19
  300. package/storage/object.js.map +1 -1
  301. package/types.d.ts +302 -95
  302. package/types.js +41 -77
  303. package/types.js.map +1 -1
  304. package/utils/converters/Converter.js +0 -13
  305. package/utils/converters/Converter.js.map +1 -1
  306. package/utils/converters/ConverterCollection.js +9 -33
  307. package/utils/converters/ConverterCollection.js.map +1 -1
  308. package/utils/converters/valueKeyStorageConverter.d.ts +1 -5
  309. package/utils/converters/valueKeyStorageConverter.js +30 -45
  310. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  311. package/utils/createTypeFromFields.d.ts +1 -0
  312. package/utils/createTypeFromFields.js +12 -21
  313. package/utils/createTypeFromFields.js.map +1 -1
  314. package/utils/createTypeName.d.ts +0 -2
  315. package/utils/createTypeName.js +2 -19
  316. package/utils/createTypeName.js.map +1 -1
  317. package/utils/entryStorage.js +10 -26
  318. package/utils/entryStorage.js.map +1 -1
  319. package/utils/filterAsync.js +0 -5
  320. package/utils/filterAsync.js.map +1 -1
  321. package/utils/getBaseFieldType.d.ts +1 -3
  322. package/utils/getBaseFieldType.js +0 -2
  323. package/utils/getBaseFieldType.js.map +1 -1
  324. package/utils/getEntryDescription.d.ts +2 -0
  325. package/utils/getEntryDescription.js +17 -0
  326. package/utils/getEntryDescription.js.map +1 -0
  327. package/utils/getEntryImage.d.ts +2 -0
  328. package/utils/getEntryImage.js +17 -0
  329. package/utils/getEntryImage.js.map +1 -0
  330. package/utils/getEntryTitle.d.ts +1 -1
  331. package/utils/getEntryTitle.js +0 -9
  332. package/utils/getEntryTitle.js.map +1 -1
  333. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  334. package/utils/getSchemaFromFieldPlugins.js +23 -19
  335. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  336. package/utils/incrementEntryIdVersion.d.ts +5 -0
  337. package/utils/incrementEntryIdVersion.js +29 -0
  338. package/utils/incrementEntryIdVersion.js.map +1 -0
  339. package/utils/permissions/EntriesPermissions.d.ts +4 -0
  340. package/utils/permissions/EntriesPermissions.js +9 -0
  341. package/utils/permissions/EntriesPermissions.js.map +1 -0
  342. package/utils/permissions/ModelGroupsPermissions.d.ts +11 -0
  343. package/utils/permissions/ModelGroupsPermissions.js +48 -0
  344. package/utils/permissions/ModelGroupsPermissions.js.map +1 -0
  345. package/utils/permissions/ModelsPermissions.d.ts +20 -0
  346. package/utils/permissions/ModelsPermissions.js +91 -0
  347. package/utils/permissions/ModelsPermissions.js.map +1 -0
  348. package/utils/permissions/SettingsPermissions.d.ts +4 -0
  349. package/utils/permissions/SettingsPermissions.js +9 -0
  350. package/utils/permissions/SettingsPermissions.js.map +1 -0
  351. package/utils/renderFields.d.ts +4 -2
  352. package/utils/renderFields.js +10 -11
  353. package/utils/renderFields.js.map +1 -1
  354. package/utils/renderGetFilterFields.d.ts +2 -2
  355. package/utils/renderGetFilterFields.js +7 -33
  356. package/utils/renderGetFilterFields.js.map +1 -1
  357. package/utils/renderInputFields.d.ts +4 -2
  358. package/utils/renderInputFields.js +17 -14
  359. package/utils/renderInputFields.js.map +1 -1
  360. package/utils/renderListFilterFields.d.ts +3 -1
  361. package/utils/renderListFilterFields.js +16 -30
  362. package/utils/renderListFilterFields.js.map +1 -1
  363. package/utils/renderSortEnum.d.ts +9 -5
  364. package/utils/renderSortEnum.js +24 -12
  365. package/utils/renderSortEnum.js.map +1 -1
  366. package/utils/toSlug.js +0 -4
  367. package/utils/toSlug.js.map +1 -1
  368. package/validators/dateGte.js +0 -7
  369. package/validators/dateGte.js.map +1 -1
  370. package/validators/dateLte.js +0 -7
  371. package/validators/dateLte.js.map +1 -1
  372. package/validators/dynamicZone.js +0 -4
  373. package/validators/dynamicZone.js.map +1 -1
  374. package/validators/gte.js +0 -8
  375. package/validators/gte.js.map +1 -1
  376. package/validators/in.js +0 -8
  377. package/validators/in.js.map +1 -1
  378. package/validators/index.js +0 -16
  379. package/validators/index.js.map +1 -1
  380. package/validators/lte.js +0 -8
  381. package/validators/lte.js.map +1 -1
  382. package/validators/maxLength.js +0 -8
  383. package/validators/maxLength.js.map +1 -1
  384. package/validators/minLength.js +0 -8
  385. package/validators/minLength.js.map +1 -1
  386. package/validators/pattern.js +0 -9
  387. package/validators/pattern.js.map +1 -1
  388. package/validators/patternPlugins/email.js +0 -2
  389. package/validators/patternPlugins/email.js.map +1 -1
  390. package/validators/patternPlugins/index.js +0 -8
  391. package/validators/patternPlugins/index.js.map +1 -1
  392. package/validators/patternPlugins/lowerCase.js +0 -2
  393. package/validators/patternPlugins/lowerCase.js.map +1 -1
  394. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  395. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  396. package/validators/patternPlugins/upperCase.js +0 -2
  397. package/validators/patternPlugins/upperCase.js.map +1 -1
  398. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  399. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  400. package/validators/patternPlugins/url.js +0 -2
  401. package/validators/patternPlugins/url.js.map +1 -1
  402. package/validators/required.js +0 -5
  403. package/validators/required.js.map +1 -1
  404. package/validators/timeGte.js +0 -8
  405. package/validators/timeGte.js.map +1 -1
  406. package/validators/timeLte.js +0 -8
  407. package/validators/timeLte.js.map +1 -1
  408. package/validators/unique.js +0 -7
  409. package/validators/unique.js.map +1 -1
  410. package/crud/contentModel/createFieldModels.d.ts +0 -2
  411. package/crud/contentModel/createFieldModels.js +0 -26
  412. package/crud/contentModel/createFieldModels.js.map +0 -1
  413. package/crud/contentModel/fieldIdValidation.d.ts +0 -1
  414. package/crud/contentModel/fieldIdValidation.js +0 -25
  415. package/crud/contentModel/fieldIdValidation.js.map +0 -1
  416. package/crud/contentModel/idValidation.d.ts +0 -1
  417. package/crud/contentModel/idValidation.js +0 -22
  418. package/crud/contentModel/idValidation.js.map +0 -1
  419. package/crud/contentModel/models.d.ts +0 -4
  420. package/crud/contentModel/models.js +0 -192
  421. package/crud/contentModel/models.js.map +0 -1
  422. package/crud/contentModel/systemFields.d.ts +0 -1
  423. package/crud/contentModel/systemFields.js +0 -8
  424. package/crud/contentModel/systemFields.js.map +0 -1
  425. package/crud/index.d.ts +0 -6
  426. package/crud/index.js +0 -85
  427. package/crud/index.js.map +0 -1
  428. package/upgrades/5.33.0/index.d.ts +0 -3
  429. package/upgrades/5.33.0/index.js +0 -182
  430. package/upgrades/5.33.0/index.js.map +0 -1
  431. package/upgrades/index.d.ts +0 -1
  432. package/upgrades/index.js +0 -12
  433. package/upgrades/index.js.map +0 -1
  434. package/utils/access.d.ts +0 -8
  435. package/utils/access.js +0 -90
  436. package/utils/access.js.map +0 -1
  437. package/utils/filterModelFields.d.ts +0 -16
  438. package/utils/filterModelFields.js +0 -77
  439. package/utils/filterModelFields.js.map +0 -1
  440. package/utils/ownership.d.ts +0 -8
  441. package/utils/ownership.js +0 -41
  442. package/utils/ownership.js.map +0 -1
  443. package/utils/permissions.d.ts +0 -7
  444. package/utils/permissions.js +0 -106
  445. package/utils/permissions.js.map +0 -1
  446. package/utils/pluralizedTypeName.d.ts +0 -1
  447. package/utils/pluralizedTypeName.js +0 -26
  448. package/utils/pluralizedTypeName.js.map +0 -1
@@ -4,24 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.buildSchemaPlugins = void 0;
7
-
8
7
  var _contentModels = require("./schema/contentModels");
9
-
10
8
  var _contentEntries = require("./schema/contentEntries");
11
-
12
9
  var _contentModelGroups = require("./schema/contentModelGroups");
13
-
14
10
  var _baseContentSchema = require("./schema/baseContentSchema");
15
-
16
11
  var _schemaPlugins = require("./schema/schemaPlugins");
17
-
18
12
  /**
19
13
  * This factory is called whenever we need to generate graphql-schema plugins using the current context.
20
14
  */
21
- const buildSchemaPlugins = async context => {
22
- return [// Base GQL types and scalars
23
- (0, _baseContentSchema.createBaseContentSchema)(context), (0, _contentModels.createModelsSchema)(context), (0, _contentEntries.createContentEntriesSchema)(context), (0, _contentModelGroups.createGroupsSchema)(context), // Dynamic schema
24
- ...(await (0, _schemaPlugins.generateSchemaPlugins)(context))].filter(Boolean);
25
- };
26
15
 
16
+ const buildSchemaPlugins = async params => {
17
+ return [
18
+ // Base GQL types and scalars
19
+ (0, _baseContentSchema.createBaseContentSchema)(params), (0, _contentModels.createModelsSchema)(params), (0, _contentEntries.createContentEntriesSchema)(params), (0, _contentModelGroups.createGroupsSchema)(params),
20
+ // Dynamic schema
21
+ ...(await (0, _schemaPlugins.generateSchemaPlugins)(params))].filter(Boolean);
22
+ };
27
23
  exports.buildSchemaPlugins = buildSchemaPlugins;
@@ -1 +1 @@
1
- {"version":3,"names":["buildSchemaPlugins","context","createBaseContentSchema","createModelsSchema","createContentEntriesSchema","createGroupsSchema","generateSchemaPlugins","filter","Boolean"],"sources":["buildSchemaPlugins.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { CmsContext } from \"~/types\";\nimport { createModelsSchema } from \"./schema/contentModels\";\nimport { createContentEntriesSchema } from \"./schema/contentEntries\";\nimport { createGroupsSchema } from \"./schema/contentModelGroups\";\nimport { createBaseContentSchema } from \"./schema/baseContentSchema\";\nimport { generateSchemaPlugins } from \"./schema/schemaPlugins\";\n\n/**\n * This factory is called whenever we need to generate graphql-schema plugins using the current context.\n */\n\nexport const buildSchemaPlugins = async (\n context: CmsContext\n): Promise<GraphQLSchemaPlugin<CmsContext>[]> => {\n return [\n // Base GQL types and scalars\n createBaseContentSchema(context),\n createModelsSchema(context),\n createContentEntriesSchema(context),\n createGroupsSchema(context),\n // Dynamic schema\n ...(await generateSchemaPlugins(context))\n ].filter(Boolean);\n};\n"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;AACA;AACA;AAEO,MAAMA,kBAAkB,GAAG,MAC9BC,OAD8B,IAEe;EAC7C,OAAO,CACH;EACA,IAAAC,0CAAA,EAAwBD,OAAxB,CAFG,EAGH,IAAAE,iCAAA,EAAmBF,OAAnB,CAHG,EAIH,IAAAG,0CAAA,EAA2BH,OAA3B,CAJG,EAKH,IAAAI,sCAAA,EAAmBJ,OAAnB,CALG,EAMH;EACA,IAAI,MAAM,IAAAK,oCAAA,EAAsBL,OAAtB,CAAV,CAPG,EAQLM,MARK,CAQEC,OARF,CAAP;AASH,CAZM"}
1
+ {"version":3,"names":["_contentModels","require","_contentEntries","_contentModelGroups","_baseContentSchema","_schemaPlugins","buildSchemaPlugins","params","createBaseContentSchema","createModelsSchema","createContentEntriesSchema","createGroupsSchema","generateSchemaPlugins","filter","Boolean","exports"],"sources":["buildSchemaPlugins.ts"],"sourcesContent":["import { CmsContext, CmsModel } from \"~/types\";\nimport { createModelsSchema } from \"./schema/contentModels\";\nimport { createContentEntriesSchema } from \"./schema/contentEntries\";\nimport { createGroupsSchema } from \"./schema/contentModelGroups\";\nimport { createBaseContentSchema } from \"./schema/baseContentSchema\";\nimport { generateSchemaPlugins } from \"./schema/schemaPlugins\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\n\n/**\n * This factory is called whenever we need to generate graphql-schema plugins using the current context.\n */\ninterface BuildSchemaPluginsParams {\n context: CmsContext;\n models: CmsModel[];\n}\nexport const buildSchemaPlugins = async (\n params: BuildSchemaPluginsParams\n): Promise<CmsGraphQLSchemaPlugin[]> => {\n return [\n // Base GQL types and scalars\n createBaseContentSchema(params),\n createModelsSchema(params),\n createContentEntriesSchema(params),\n createGroupsSchema(params),\n // Dynamic schema\n ...(await generateSchemaPlugins(params))\n ].filter(Boolean);\n};\n"],"mappings":";;;;;;AACA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAGA;AACA;AACA;;AAKO,MAAMK,kBAAkB,GAAG,MAC9BC,MAAgC,IACI;EACpC,OAAO;EACH;EACA,IAAAC,0CAAuB,EAACD,MAAM,CAAC,EAC/B,IAAAE,iCAAkB,EAACF,MAAM,CAAC,EAC1B,IAAAG,0CAA0B,EAACH,MAAM,CAAC,EAClC,IAAAI,sCAAkB,EAACJ,MAAM,CAAC;EAC1B;EACA,IAAI,MAAM,IAAAK,oCAAqB,EAACL,MAAM,CAAC,CAAC,CAC3C,CAACM,MAAM,CAACC,OAAO,CAAC;AACrB,CAAC;AAACC,OAAA,CAAAT,kBAAA,GAAAA,kBAAA"}
@@ -0,0 +1,2 @@
1
+ import { CmsContext } from "../types";
2
+ export declare const checkEndpointAccess: (context: CmsContext) => Promise<void>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.checkEndpointAccess = void 0;
7
+ var _apiSecurity = require("@webiny/api-security");
8
+ const checkEndpointAccess = async context => {
9
+ const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);
10
+ if (!permission) {
11
+ throw new _apiSecurity.NotAuthorizedError({
12
+ data: {
13
+ reason: `Not allowed to access "${context.cms.type}" endpoint.`
14
+ }
15
+ });
16
+ }
17
+ };
18
+ exports.checkEndpointAccess = checkEndpointAccess;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_apiSecurity","require","checkEndpointAccess","context","permission","security","getPermission","cms","type","NotAuthorizedError","data","reason","exports"],"sources":["checkEndpointAccess.ts"],"sourcesContent":["import { CmsContext } from \"~/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\nexport const checkEndpointAccess = async (context: CmsContext): Promise<void> => {\n const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${context.cms.type}\" endpoint.`\n }\n });\n }\n};\n"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,mBAAmB,GAAG,MAAOC,OAAmB,IAAoB;EAC7E,MAAMC,UAAU,GAAG,MAAMD,OAAO,CAACE,QAAQ,CAACC,aAAa,CAAE,gBAAeH,OAAO,CAACI,GAAG,CAACC,IAAK,EAAC,CAAC;EAC3F,IAAI,CAACJ,UAAU,EAAE;IACb,MAAM,IAAIK,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFC,MAAM,EAAG,0BAAyBR,OAAO,CAACI,GAAG,CAACC,IAAK;MACvD;IACJ,CAAC,CAAC;EACN;AACJ,CAAC;AAACI,OAAA,CAAAV,mBAAA,GAAAA,mBAAA"}
@@ -0,0 +1,6 @@
1
+ import { CmsGraphQLSchemaPlugin } from "../plugins";
2
+ interface Params {
3
+ plugins: CmsGraphQLSchemaPlugin[];
4
+ }
5
+ export declare const createExecutableSchema: (params: Params) => import("graphql").GraphQLSchema;
6
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createExecutableSchema = void 0;
7
+ var _schema = require("@graphql-tools/schema");
8
+ const createExecutableSchema = params => {
9
+ const {
10
+ plugins
11
+ } = params;
12
+ /**
13
+ * Really hard to type this to satisfy the makeExecutableSchema
14
+ */
15
+ // TODO @ts-refactor
16
+ const typeDefs = [];
17
+ const resolvers = [];
18
+
19
+ // Get schema definitions from plugins
20
+ for (const plugin of plugins) {
21
+ typeDefs.push(plugin.schema.typeDefs);
22
+ resolvers.push(plugin.schema.resolvers);
23
+ }
24
+ return (0, _schema.makeExecutableSchema)({
25
+ typeDefs,
26
+ resolvers
27
+ });
28
+ };
29
+ exports.createExecutableSchema = createExecutableSchema;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_schema","require","createExecutableSchema","params","plugins","typeDefs","resolvers","plugin","push","schema","makeExecutableSchema","exports"],"sources":["createExecutableSchema.ts"],"sourcesContent":["import { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\n\ninterface Params {\n plugins: CmsGraphQLSchemaPlugin[];\n}\n\nexport const createExecutableSchema = (params: Params) => {\n const { plugins } = params;\n /**\n * Really hard to type this to satisfy the makeExecutableSchema\n */\n // TODO @ts-refactor\n const typeDefs: any = [];\n const resolvers: any = [];\n\n // Get schema definitions from plugins\n for (const plugin of plugins) {\n typeDefs.push(plugin.schema.typeDefs);\n resolvers.push(plugin.schema.resolvers);\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAOO,MAAMC,sBAAsB,GAAIC,MAAc,IAAK;EACtD,MAAM;IAAEC;EAAQ,CAAC,GAAGD,MAAM;EAC1B;AACJ;AACA;EACI;EACA,MAAME,QAAa,GAAG,EAAE;EACxB,MAAMC,SAAc,GAAG,EAAE;;EAEzB;EACA,KAAK,MAAMC,MAAM,IAAIH,OAAO,EAAE;IAC1BC,QAAQ,CAACG,IAAI,CAACD,MAAM,CAACE,MAAM,CAACJ,QAAQ,CAAC;IACrCC,SAAS,CAACE,IAAI,CAACD,MAAM,CAACE,MAAM,CAACH,SAAS,CAAC;EAC3C;EAEA,OAAO,IAAAI,4BAAoB,EAAC;IACxBL,QAAQ;IACRC;EACJ,CAAC,CAAC;AACN,CAAC;AAACK,OAAA,CAAAT,sBAAA,GAAAA,sBAAA"}
@@ -0,0 +1,2 @@
1
+ import { GraphQLRequestBody } from "@webiny/handler-graphql/types";
2
+ export declare const createRequestBody: (body: unknown) => GraphQLRequestBody | GraphQLRequestBody[];
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createRequestBody = void 0;
7
+ const createRequestBody = body => {
8
+ /**
9
+ * We are trusting that the body payload is correct.
10
+ * The `processRequestBody` will fail if it is not.
11
+ */
12
+ return typeof body === "string" ? JSON.parse(body) : body;
13
+ };
14
+ exports.createRequestBody = createRequestBody;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createRequestBody","body","JSON","parse","exports"],"sources":["createRequestBody.ts"],"sourcesContent":["import { GraphQLRequestBody } from \"@webiny/handler-graphql/types\";\n\nexport const createRequestBody = (body: unknown): GraphQLRequestBody | GraphQLRequestBody[] => {\n /**\n * We are trusting that the body payload is correct.\n * The `processRequestBody` will fail if it is not.\n */\n return typeof body === \"string\" ? JSON.parse(body) : body;\n};\n"],"mappings":";;;;;;AAEO,MAAMA,iBAAiB,GAAIC,IAAa,IAAgD;EAC3F;AACJ;AACA;AACA;EACI,OAAO,OAAOA,IAAI,KAAK,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACF,IAAI,CAAC,GAAGA,IAAI;AAC7D,CAAC;AAACG,OAAA,CAAAJ,iBAAA,GAAAA,iBAAA"}
@@ -0,0 +1 @@
1
+ export declare const formatErrorPayload: (error: Error) => string;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.formatErrorPayload = void 0;
8
+ var _error = _interopRequireDefault(require("@webiny/error"));
9
+ const formatErrorPayload = error => {
10
+ if (error instanceof _error.default) {
11
+ return JSON.stringify({
12
+ type: "CmsGraphQLWebinyError",
13
+ message: error.message,
14
+ code: error.code,
15
+ data: error.data
16
+ });
17
+ }
18
+ return JSON.stringify({
19
+ type: "Error",
20
+ name: error.name,
21
+ message: error.message,
22
+ stack: error.stack
23
+ });
24
+ };
25
+ exports.formatErrorPayload = formatErrorPayload;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","formatErrorPayload","error","WebinyError","JSON","stringify","type","message","code","data","name","stack","exports"],"sources":["formatErrorPayload.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\n\nexport const formatErrorPayload = (error: Error): string => {\n if (error instanceof WebinyError) {\n return JSON.stringify({\n type: \"CmsGraphQLWebinyError\",\n message: error.message,\n code: error.code,\n data: error.data\n });\n }\n\n return JSON.stringify({\n type: \"Error\",\n name: error.name,\n message: error.message,\n stack: error.stack\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,MAAMC,kBAAkB,GAAIC,KAAY,IAAa;EACxD,IAAIA,KAAK,YAAYC,cAAW,EAAE;IAC9B,OAAOC,IAAI,CAACC,SAAS,CAAC;MAClBC,IAAI,EAAE,uBAAuB;MAC7BC,OAAO,EAAEL,KAAK,CAACK,OAAO;MACtBC,IAAI,EAAEN,KAAK,CAACM,IAAI;MAChBC,IAAI,EAAEP,KAAK,CAACO;IAChB,CAAC,CAAC;EACN;EAEA,OAAOL,IAAI,CAACC,SAAS,CAAC;IAClBC,IAAI,EAAE,OAAO;IACbI,IAAI,EAAER,KAAK,CAACQ,IAAI;IAChBH,OAAO,EAAEL,KAAK,CAACK,OAAO;IACtBI,KAAK,EAAET,KAAK,CAACS;EACjB,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAX,kBAAA,GAAAA,kBAAA"}
@@ -0,0 +1,8 @@
1
+ import { CmsContext, CmsModel } from "../types";
2
+ import { GraphQLSchema } from "graphql/type";
3
+ interface GenerateSchemaParams {
4
+ context: CmsContext;
5
+ models: CmsModel[];
6
+ }
7
+ export declare const generateSchema: (params: GenerateSchemaParams) => Promise<GraphQLSchema>;
8
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.generateSchema = void 0;
7
+ var _buildSchemaPlugins = require("./buildSchemaPlugins");
8
+ var _createExecutableSchema = require("./createExecutableSchema");
9
+ var _plugins = require("../plugins");
10
+ const generateSchema = async params => {
11
+ const {
12
+ context,
13
+ models
14
+ } = params;
15
+ let generatedSchemaPlugins = [];
16
+ try {
17
+ generatedSchemaPlugins = await (0, _buildSchemaPlugins.buildSchemaPlugins)({
18
+ context,
19
+ models
20
+ });
21
+ } catch (ex) {
22
+ console.log(`Error while building schema plugins.`);
23
+ throw ex;
24
+ }
25
+ context.plugins.register(generatedSchemaPlugins);
26
+ const schemaPlugins = context.plugins.byType(_plugins.CmsGraphQLSchemaPlugin.type);
27
+ return (0, _createExecutableSchema.createExecutableSchema)({
28
+ plugins: schemaPlugins
29
+ });
30
+ };
31
+ exports.generateSchema = generateSchema;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_buildSchemaPlugins","require","_createExecutableSchema","_plugins","generateSchema","params","context","models","generatedSchemaPlugins","buildSchemaPlugins","ex","console","log","plugins","register","schemaPlugins","byType","CmsGraphQLSchemaPlugin","type","createExecutableSchema","exports"],"sources":["generateSchema.ts"],"sourcesContent":["import { CmsContext, CmsModel } from \"~/types\";\nimport { buildSchemaPlugins } from \"./buildSchemaPlugins\";\nimport { createExecutableSchema } from \"./createExecutableSchema\";\nimport { GraphQLSchema } from \"graphql/type\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\n\ninterface GenerateSchemaParams {\n context: CmsContext;\n models: CmsModel[];\n}\nexport const generateSchema = async (params: GenerateSchemaParams): Promise<GraphQLSchema> => {\n const { context, models } = params;\n\n let generatedSchemaPlugins: CmsGraphQLSchemaPlugin[] = [];\n try {\n generatedSchemaPlugins = await buildSchemaPlugins({ context, models });\n } catch (ex) {\n console.log(`Error while building schema plugins.`);\n throw ex;\n }\n\n context.plugins.register(generatedSchemaPlugins);\n\n const schemaPlugins = context.plugins.byType<CmsGraphQLSchemaPlugin>(\n CmsGraphQLSchemaPlugin.type\n );\n return createExecutableSchema({\n plugins: schemaPlugins\n });\n};\n"],"mappings":";;;;;;AACA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AAMO,MAAMG,cAAc,GAAG,MAAOC,MAA4B,IAA6B;EAC1F,MAAM;IAAEC,OAAO;IAAEC;EAAO,CAAC,GAAGF,MAAM;EAElC,IAAIG,sBAAgD,GAAG,EAAE;EACzD,IAAI;IACAA,sBAAsB,GAAG,MAAM,IAAAC,sCAAkB,EAAC;MAAEH,OAAO;MAAEC;IAAO,CAAC,CAAC;EAC1E,CAAC,CAAC,OAAOG,EAAE,EAAE;IACTC,OAAO,CAACC,GAAG,CAAE,sCAAqC,CAAC;IACnD,MAAMF,EAAE;EACZ;EAEAJ,OAAO,CAACO,OAAO,CAACC,QAAQ,CAACN,sBAAsB,CAAC;EAEhD,MAAMO,aAAa,GAAGT,OAAO,CAACO,OAAO,CAACG,MAAM,CACxCC,+BAAsB,CAACC,IAC3B,CAAC;EACD,OAAO,IAAAC,8CAAsB,EAAC;IAC1BN,OAAO,EAAEE;EACb,CAAC,CAAC;AACN,CAAC;AAACK,OAAA,CAAAhB,cAAA,GAAAA,cAAA"}
@@ -0,0 +1,17 @@
1
+ import { ApiEndpoint, CmsContext } from "../types";
2
+ import { Tenant } from "@webiny/api-tenancy/types";
3
+ import { I18NLocale } from "@webiny/api-i18n/types";
4
+ import { GraphQLSchema } from "graphql";
5
+ interface GetSchemaParams {
6
+ context: CmsContext;
7
+ type: ApiEndpoint;
8
+ getLastModifiedTime: () => Promise<Date | null>;
9
+ getTenant: () => Tenant;
10
+ getLocale: () => I18NLocale;
11
+ }
12
+ /**
13
+ * Gets an existing schema or rewrites existing one or creates a completely new one
14
+ * depending on the schemaId created from type and locale parameters
15
+ */
16
+ export declare const getSchema: (params: GetSchemaParams) => Promise<GraphQLSchema>;
17
+ export {};
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getSchema = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _codeFrame = _interopRequireDefault(require("code-frame"));
10
+ var _error = _interopRequireDefault(require("@webiny/error"));
11
+ var _generateSchema = require("./generateSchema");
12
+ // @ts-ignore `code-frame` has no types
13
+
14
+ const schemaList = new Map();
15
+
16
+ /**
17
+ * Method generates cache ID based on:
18
+ * - tenant
19
+ * - endpoint type
20
+ * - locale
21
+ */
22
+
23
+ const generateCacheId = params => {
24
+ const {
25
+ getTenant,
26
+ type,
27
+ getLocale
28
+ } = params;
29
+ return [`tenant:${getTenant().id}`, `endpoint:${type}`, `locale:${getLocale().code}`].join("#");
30
+ };
31
+ /**
32
+ * Method generates cache key based on last model change time.
33
+ * Or sets "unknown" - possible when no models in database.
34
+ */
35
+
36
+ const generateCacheKey = async params => {
37
+ const {
38
+ getLastModifiedTime
39
+ } = params;
40
+ const lastModelChange = await getLastModifiedTime();
41
+ if (!lastModelChange) {
42
+ return "unknown";
43
+ }
44
+ return lastModelChange.toISOString();
45
+ };
46
+
47
+ /**
48
+ * Gets an existing schema or rewrites existing one or creates a completely new one
49
+ * depending on the schemaId created from type and locale parameters
50
+ */
51
+ const getSchema = async params => {
52
+ const {
53
+ context
54
+ } = params;
55
+ const cacheId = generateCacheId(params);
56
+ const cacheKey = await generateCacheKey(params);
57
+ const cachedSchema = schemaList.get(cacheId);
58
+ if ((cachedSchema === null || cachedSchema === void 0 ? void 0 : cachedSchema.key) === cacheKey) {
59
+ return cachedSchema.schema;
60
+ }
61
+
62
+ /**
63
+ * We need all the API models.
64
+ * Private models are hidden in the GraphQL, so filter them out.
65
+ */
66
+ const models = await context.security.withoutAuthorization(async () => {
67
+ return (await context.cms.listModels()).filter(model => {
68
+ return model.isPrivate !== true;
69
+ });
70
+ });
71
+ try {
72
+ const schema = await (0, _generateSchema.generateSchema)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
73
+ models
74
+ }));
75
+ schemaList.set(cacheId, {
76
+ key: cacheKey,
77
+ schema
78
+ });
79
+ return schema;
80
+ } catch (err) {
81
+ if (!Array.isArray(err.locations)) {
82
+ throw new _error.default({
83
+ message: err.message,
84
+ code: err.code || "INVALID_GRAPHQL_SCHEMA_LOCATIONS",
85
+ data: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, err.data || {}), {}, {
86
+ endpoint: context.cms.type
87
+ })
88
+ });
89
+ }
90
+ const [location] = err.locations;
91
+ throw new _error.default({
92
+ code: "INVALID_GRAPHQL_SCHEMA",
93
+ message: err.message,
94
+ data: {
95
+ invalidSegment: (0, _codeFrame.default)(err.source.body, location.line, location.column, {
96
+ frameSize: 15
97
+ })
98
+ }
99
+ });
100
+ }
101
+ };
102
+ exports.getSchema = getSchema;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_codeFrame","_interopRequireDefault","require","_error","_generateSchema","schemaList","Map","generateCacheId","params","getTenant","type","getLocale","id","code","join","generateCacheKey","getLastModifiedTime","lastModelChange","toISOString","getSchema","context","cacheId","cacheKey","cachedSchema","get","key","schema","models","security","withoutAuthorization","cms","listModels","filter","model","isPrivate","generateSchema","_objectSpread2","default","set","err","Array","isArray","locations","WebinyError","message","data","endpoint","location","invalidSegment","codeFrame","source","body","line","column","frameSize","exports"],"sources":["getSchema.ts"],"sourcesContent":["// @ts-ignore `code-frame` has no types\nimport codeFrame from \"code-frame\";\nimport WebinyError from \"@webiny/error\";\nimport { generateSchema } from \"./generateSchema\";\nimport { ApiEndpoint, CmsContext } from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { GraphQLSchema } from \"graphql\";\n\ninterface SchemaCache {\n key: string;\n schema: GraphQLSchema;\n}\n\ninterface GetSchemaParams {\n context: CmsContext;\n type: ApiEndpoint;\n getLastModifiedTime: () => Promise<Date | null>;\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n}\n\nconst schemaList = new Map<string, SchemaCache>();\n\n/**\n * Method generates cache ID based on:\n * - tenant\n * - endpoint type\n * - locale\n */\ntype GenerateCacheIdParams = Pick<GetSchemaParams, \"getTenant\" | \"getLocale\" | \"type\">;\nconst generateCacheId = (params: GenerateCacheIdParams): string => {\n const { getTenant, type, getLocale } = params;\n return [`tenant:${getTenant().id}`, `endpoint:${type}`, `locale:${getLocale().code}`].join(\"#\");\n};\n/**\n * Method generates cache key based on last model change time.\n * Or sets \"unknown\" - possible when no models in database.\n */\ntype GenerateCacheKeyParams = Pick<GetSchemaParams, \"getLastModifiedTime\">;\nconst generateCacheKey = async (params: GenerateCacheKeyParams): Promise<string> => {\n const { getLastModifiedTime } = params;\n const lastModelChange = await getLastModifiedTime();\n if (!lastModelChange) {\n return \"unknown\";\n }\n return lastModelChange.toISOString();\n};\n\n/**\n * Gets an existing schema or rewrites existing one or creates a completely new one\n * depending on the schemaId created from type and locale parameters\n */\nexport const getSchema = async (params: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context } = params;\n\n const cacheId = generateCacheId(params);\n\n const cacheKey = await generateCacheKey(params);\n const cachedSchema = schemaList.get(cacheId);\n if (cachedSchema?.key === cacheKey) {\n return cachedSchema.schema;\n }\n\n /**\n * We need all the API models.\n * Private models are hidden in the GraphQL, so filter them out.\n */\n const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter(model => {\n return model.isPrivate !== true;\n });\n });\n try {\n const schema = await generateSchema({\n ...params,\n models\n });\n schemaList.set(cacheId, {\n key: cacheKey,\n schema\n });\n return schema;\n } catch (err) {\n if (!Array.isArray(err.locations)) {\n throw new WebinyError({\n message: err.message,\n code: err.code || \"INVALID_GRAPHQL_SCHEMA_LOCATIONS\",\n data: {\n ...(err.data || {}),\n endpoint: context.cms.type\n }\n });\n }\n const [location] = err.locations;\n\n throw new WebinyError({\n code: \"INVALID_GRAPHQL_SCHEMA\",\n message: err.message,\n data: {\n invalidSegment: codeFrame(err.source.body, location.line, location.column, {\n frameSize: 15\n })\n }\n });\n }\n};\n"],"mappings":"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"}
@@ -1,190 +1,30 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.graphQLHandlerFactory = void 0;
9
-
10
- var _schema = require("@graphql-tools/schema");
11
-
12
- var _apiSecurity = require("@webiny/api-security");
13
-
14
8
  var _debugPlugins = _interopRequireDefault(require("@webiny/handler-graphql/debugPlugins"));
15
-
16
- var _processRequestBody = _interopRequireDefault(require("@webiny/handler-graphql/processRequestBody"));
17
-
18
- var _buildSchemaPlugins = require("./buildSchemaPlugins");
19
-
20
- var _plugins = require("@webiny/handler-graphql/plugins");
21
-
22
9
  var _handler = require("@webiny/handler");
23
-
24
- var _error = _interopRequireDefault(require("@webiny/error"));
25
-
26
- var _codeFrame = _interopRequireDefault(require("code-frame"));
27
-
28
- // @ts-ignore `code-frame` has no types
29
- const schemaList = new Map();
30
-
31
- const generateCacheKey = async args => {
32
- const {
33
- context,
34
- locale,
35
- type
36
- } = args;
37
- const lastModelChange = await context.cms.getModelLastChange();
38
- return [locale.code, type, lastModelChange.toISOString()].join("#");
39
- };
40
-
41
- const generateSchema = async args => {
42
- const {
43
- context
44
- } = args;
45
- context.plugins.register(await (0, _buildSchemaPlugins.buildSchemaPlugins)(context));
46
- /**
47
- * Really hard to type this to satisfy the makeExecutableSchema
48
- */
49
- // TODO @ts-refactor
50
-
51
- const typeDefs = [];
52
- const resolvers = []; // Get schema definitions from plugins
53
-
54
- const schemaPlugins = context.plugins.byType(_plugins.GraphQLSchemaPlugin.type);
55
-
56
- for (const pl of schemaPlugins) {
57
- typeDefs.push(pl.schema.typeDefs);
58
- resolvers.push(pl.schema.resolvers);
59
- }
60
-
61
- return (0, _schema.makeExecutableSchema)({
62
- typeDefs,
63
- resolvers
64
- });
65
- };
66
- /**
67
- * Gets an existing schema or rewrites existing one or creates a completely new one
68
- * depending on the schemaId created from type and locale parameters
69
- */
70
-
71
-
72
- const getSchema = async params => {
73
- const {
74
- context,
75
- type,
76
- locale
77
- } = params;
78
- const tenantId = context.tenancy.getCurrentTenant().id;
79
- const id = `${tenantId}#${type}#${locale.code}`;
80
- const cacheKey = await generateCacheKey(params);
81
-
82
- if (!schemaList.has(id)) {
83
- try {
84
- const schema = await generateSchema(params);
85
- schemaList.set(id, {
86
- key: cacheKey,
87
- schema
88
- });
89
- return schema;
90
- } catch (err) {
91
- const [location] = err.locations;
92
- throw new _error.default({
93
- code: "INVALID_GRAPHQL_SCHEMA",
94
- message: err.message,
95
- data: {
96
- invalidSegment: (0, _codeFrame.default)(err.source.body, location.line, location.column, {
97
- frameSize: 15
98
- })
99
- }
100
- });
101
- }
102
- }
103
- /**
104
- * Safe to cast because check was done few lines up.
105
- */
106
-
107
-
108
- const cache = schemaList.get(id);
109
-
110
- if (cache.key === cacheKey) {
111
- return cache.schema;
112
- }
113
-
114
- const schema = await generateSchema(params);
115
- schemaList.set(id, {
116
- key: cacheKey,
117
- schema
118
- });
119
- return schema;
120
- };
121
-
122
- const checkEndpointAccess = async context => {
123
- const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);
124
-
125
- if (!permission) {
126
- throw new _apiSecurity.NotAuthorizedError({
127
- data: {
128
- reason: `Not allowed to access "${context.cms.type}" endpoint.`
129
- }
130
- });
131
- }
132
- };
133
-
134
- const formatErrorPayload = error => {
135
- if (error instanceof _error.default) {
136
- return {
137
- message: error.message,
138
- code: error.code,
139
- data: error.data
140
- };
141
- }
142
-
143
- return {
144
- name: error.name,
145
- message: error.message,
146
- stack: error.stack
147
- };
148
- };
149
-
10
+ var _handleRequest = require("./handleRequest");
150
11
  const cmsRoutes = new _handler.RoutePlugin(({
151
12
  onPost,
152
13
  onOptions,
153
14
  context
154
15
  }) => {
155
16
  onPost("/cms/:type(^manage|preview|read$)/:locale", async (request, reply) => {
156
- try {
157
- await checkEndpointAccess(context);
158
- } catch (ex) {
159
- return reply.code(401).send({
160
- data: null,
161
- error: {
162
- message: ex.message || "Not authorized!",
163
- code: ex.code || "SECURITY_NOT_AUTHORIZED",
164
- data: ex.data || null,
165
- stack: null
166
- }
167
- });
168
- }
169
-
170
- try {
171
- const schema = await getSchema({
172
- context,
173
- locale: context.cms.getLocale(),
174
- type: context.cms.type
175
- });
176
- const body = request.body;
177
- const result = await (0, _processRequestBody.default)(body, schema, context);
178
- return reply.code(200).send(result);
179
- } catch (ex) {
180
- return reply.code(500).send(formatErrorPayload(ex));
181
- }
17
+ return (0, _handleRequest.handleRequest)({
18
+ context,
19
+ request,
20
+ reply
21
+ });
182
22
  });
183
23
  onOptions("/cms/:type(^manage|preview|read$)/:locale", async (_, reply) => {
184
- return reply.hijack().send({});
24
+ return reply.status(204).send({}).hijack();
185
25
  });
186
26
  });
187
-
27
+ cmsRoutes.name = "headless-cms.graphql.route.default";
188
28
  const graphQLHandlerFactory = ({
189
29
  debug
190
30
  }) => {
@@ -192,5 +32,4 @@ const graphQLHandlerFactory = ({
192
32
  type: "wcp-telemetry-tracker"
193
33
  }];
194
34
  };
195
-
196
35
  exports.graphQLHandlerFactory = graphQLHandlerFactory;
@@ -1 +1 @@
1
- {"version":3,"names":["schemaList","Map","generateCacheKey","args","context","locale","type","lastModelChange","cms","getModelLastChange","code","toISOString","join","generateSchema","plugins","register","buildSchemaPlugins","typeDefs","resolvers","schemaPlugins","byType","GraphQLSchemaPlugin","pl","push","schema","makeExecutableSchema","getSchema","params","tenantId","tenancy","getCurrentTenant","id","cacheKey","has","set","key","err","location","locations","WebinyError","message","data","invalidSegment","codeFrame","source","body","line","column","frameSize","cache","get","checkEndpointAccess","permission","security","getPermission","NotAuthorizedError","reason","formatErrorPayload","error","name","stack","cmsRoutes","RoutePlugin","onPost","onOptions","request","reply","ex","send","getLocale","result","processRequestBody","_","hijack","graphQLHandlerFactory","debug","debugPlugins"],"sources":["graphQLHandlerFactory.ts"],"sourcesContent":["import { GraphQLSchema } from \"graphql\";\nimport { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { ApiEndpoint, CmsContext } from \"~/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport processRequestBody from \"@webiny/handler-graphql/processRequestBody\";\nimport { buildSchemaPlugins } from \"./buildSchemaPlugins\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { GraphQLRequestBody } from \"@webiny/handler-graphql/types\";\nimport { RoutePlugin } from \"@webiny/handler\";\nimport WebinyError from \"@webiny/error\";\n// @ts-ignore `code-frame` has no types\nimport codeFrame from \"code-frame\";\n\ninterface SchemaCache {\n key: string;\n schema: GraphQLSchema;\n}\ninterface GetSchemaParams {\n context: CmsContext;\n type: ApiEndpoint;\n locale: I18NLocale;\n}\n\nconst schemaList = new Map<string, SchemaCache>();\n\nconst generateCacheKey = async (args: GetSchemaParams): Promise<string> => {\n const { context, locale, type } = args;\n const lastModelChange = await context.cms.getModelLastChange();\n return [locale.code, type, lastModelChange.toISOString()].join(\"#\");\n};\n\nconst generateSchema = async (args: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context } = args;\n\n context.plugins.register(await buildSchemaPlugins(context));\n /**\n * Really hard to type this to satisfy the makeExecutableSchema\n */\n // TODO @ts-refactor\n const typeDefs: any = [];\n const resolvers: any = [];\n\n // Get schema definitions from plugins\n const schemaPlugins = context.plugins.byType<GraphQLSchemaPlugin>(GraphQLSchemaPlugin.type);\n for (const pl of schemaPlugins) {\n typeDefs.push(pl.schema.typeDefs);\n resolvers.push(pl.schema.resolvers);\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers\n });\n};\n\n/**\n * Gets an existing schema or rewrites existing one or creates a completely new one\n * depending on the schemaId created from type and locale parameters\n */\nconst getSchema = async (params: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context, type, locale } = params;\n const tenantId = context.tenancy.getCurrentTenant().id;\n const id = `${tenantId}#${type}#${locale.code}`;\n\n const cacheKey = await generateCacheKey(params);\n if (!schemaList.has(id)) {\n try {\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n } catch (err) {\n const [location] = err.locations;\n\n throw new WebinyError({\n code: \"INVALID_GRAPHQL_SCHEMA\",\n message: err.message,\n data: {\n invalidSegment: codeFrame(err.source.body, location.line, location.column, {\n frameSize: 15\n })\n }\n });\n }\n }\n /**\n * Safe to cast because check was done few lines up.\n */\n const cache = schemaList.get(id) as SchemaCache;\n if (cache.key === cacheKey) {\n return cache.schema;\n }\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n};\n\nconst checkEndpointAccess = async (context: CmsContext): Promise<void> => {\n const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${context.cms.type}\" endpoint.`\n }\n });\n }\n};\n\nconst formatErrorPayload = (error: Error) => {\n if (error instanceof WebinyError) {\n return {\n message: error.message,\n code: error.code,\n data: error.data\n };\n }\n\n return {\n name: error.name,\n message: error.message,\n stack: error.stack\n };\n};\n\nexport interface GraphQLHandlerFactoryParams {\n debug?: boolean;\n}\n\nconst cmsRoutes = new RoutePlugin<CmsContext>(({ onPost, onOptions, context }) => {\n onPost(\"/cms/:type(^manage|preview|read$)/:locale\", async (request, reply) => {\n try {\n await checkEndpointAccess(context);\n } catch (ex) {\n return reply.code(401).send({\n data: null,\n error: {\n message: ex.message || \"Not authorized!\",\n code: ex.code || \"SECURITY_NOT_AUTHORIZED\",\n data: ex.data || null,\n stack: null\n }\n });\n }\n\n try {\n const schema = await getSchema({\n context,\n locale: context.cms.getLocale(),\n type: context.cms.type as ApiEndpoint\n });\n const body: GraphQLRequestBody | GraphQLRequestBody[] = request.body as any;\n const result = await processRequestBody(body, schema, context);\n return reply.code(200).send(result);\n } catch (ex) {\n return reply.code(500).send(formatErrorPayload(ex));\n }\n });\n\n onOptions(\"/cms/:type(^manage|preview|read$)/:locale\", async (_, reply) => {\n return reply.hijack().send({});\n });\n});\n\nexport const graphQLHandlerFactory = ({ debug }: GraphQLHandlerFactoryParams): PluginCollection => {\n return [\n ...(debug ? debugPlugins() : []),\n cmsRoutes,\n {\n type: \"wcp-telemetry-tracker\"\n }\n ];\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_debugPlugins","_interopRequireDefault","require","_handler","_handleRequest","cmsRoutes","RoutePlugin","onPost","onOptions","context","request","reply","handleRequest","_","status","send","hijack","name","graphQLHandlerFactory","debug","debugPlugins","type","exports"],"sources":["graphQLHandlerFactory.ts"],"sourcesContent":["import debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport { CmsContext } from \"~/types\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport { RoutePlugin } from \"@webiny/handler\";\nimport { handleRequest } from \"./handleRequest\";\n\nexport interface GraphQLHandlerFactoryParams {\n debug?: boolean;\n}\n\nconst cmsRoutes = new RoutePlugin<CmsContext>(({ onPost, onOptions, context }) => {\n onPost(\"/cms/:type(^manage|preview|read$)/:locale\", async (request, reply) => {\n return handleRequest({ context, request, reply });\n });\n\n onOptions(\"/cms/:type(^manage|preview|read$)/:locale\", async (_, reply) => {\n return reply.status(204).send({}).hijack();\n });\n});\n\ncmsRoutes.name = \"headless-cms.graphql.route.default\";\n\nexport const graphQLHandlerFactory = ({ debug }: GraphQLHandlerFactoryParams): PluginCollection => {\n return [\n ...(debug ? debugPlugins() : []),\n cmsRoutes,\n {\n type: \"wcp-telemetry-tracker\"\n }\n ];\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAMA,MAAMG,SAAS,GAAG,IAAIC,oBAAW,CAAa,CAAC;EAAEC,MAAM;EAAEC,SAAS;EAAEC;AAAQ,CAAC,KAAK;EAC9EF,MAAM,CAAC,2CAA2C,EAAE,OAAOG,OAAO,EAAEC,KAAK,KAAK;IAC1E,OAAO,IAAAC,4BAAa,EAAC;MAAEH,OAAO;MAAEC,OAAO;MAAEC;IAAM,CAAC,CAAC;EACrD,CAAC,CAAC;EAEFH,SAAS,CAAC,2CAA2C,EAAE,OAAOK,CAAC,EAAEF,KAAK,KAAK;IACvE,OAAOA,KAAK,CAACG,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAAC;EAC9C,CAAC,CAAC;AACN,CAAC,CAAC;AAEFX,SAAS,CAACY,IAAI,GAAG,oCAAoC;AAE9C,MAAMC,qBAAqB,GAAGA,CAAC;EAAEC;AAAmC,CAAC,KAAuB;EAC/F,OAAO,CACH,IAAIA,KAAK,GAAG,IAAAC,qBAAY,EAAC,CAAC,GAAG,EAAE,CAAC,EAChCf,SAAS,EACT;IACIgB,IAAI,EAAE;EACV,CAAC,CACJ;AACL,CAAC;AAACC,OAAA,CAAAJ,qBAAA,GAAAA,qBAAA"}
@@ -0,0 +1,11 @@
1
+ import { CmsContext } from "../types";
2
+ import { Reply, Request } from "@webiny/handler/types";
3
+ export interface HandleRequestParams {
4
+ context: CmsContext;
5
+ request: Request;
6
+ reply: Reply;
7
+ }
8
+ export interface HandleRequest {
9
+ (params: HandleRequestParams): Promise<Reply>;
10
+ }
11
+ export declare const handleRequest: HandleRequest;