@contember/engine-content-api 2.1.0-beta.2 → 2.2.0-alpha.1

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 (1043) hide show
  1. package/dist/development/src/ExecutionContainer.cjs.map +1 -1
  2. package/dist/development/src/ExecutionContainer.js.map +1 -1
  3. package/dist/development/src/acl/EvaluatedPredicateReplacer.cjs.map +1 -1
  4. package/dist/development/src/acl/EvaluatedPredicateReplacer.js.map +1 -1
  5. package/dist/development/src/acl/PermissionFactory.cjs.map +1 -1
  6. package/dist/development/src/acl/PermissionFactory.js.map +1 -1
  7. package/dist/development/src/acl/PredicateFactory.cjs.map +1 -1
  8. package/dist/development/src/acl/PredicateFactory.js.map +1 -1
  9. package/dist/development/src/acl/PredicatesInjector.cjs.map +1 -1
  10. package/dist/development/src/acl/PredicatesInjector.js.map +1 -1
  11. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.cjs.map +1 -1
  12. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js.map +1 -1
  13. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.cjs.map +1 -1
  14. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
  15. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
  16. package/dist/development/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
  17. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.cjs.map +1 -1
  18. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
  19. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.cjs.map +1 -1
  20. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
  21. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.cjs.map +1 -1
  22. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js.map +1 -1
  23. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.cjs.map +1 -1
  24. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
  25. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.cjs.map +1 -1
  26. package/dist/development/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
  27. package/dist/development/src/input-validation/EntityRulesResolver.cjs.map +1 -1
  28. package/dist/development/src/input-validation/EntityRulesResolver.js.map +1 -1
  29. package/dist/development/src/input-validation/JsonSchemaValidator.cjs +208 -0
  30. package/dist/development/src/input-validation/JsonSchemaValidator.cjs.map +1 -0
  31. package/dist/development/src/input-validation/JsonSchemaValidator.js +208 -0
  32. package/dist/development/src/input-validation/JsonSchemaValidator.js.map +1 -0
  33. package/dist/development/src/input-validation/QueryAstFactory.cjs.map +1 -1
  34. package/dist/development/src/input-validation/QueryAstFactory.js.map +1 -1
  35. package/dist/development/src/input-validation/ValidationContext.cjs.map +1 -1
  36. package/dist/development/src/input-validation/ValidationContext.js.map +1 -1
  37. package/dist/development/src/input-validation/ValidationDataSelector.cjs.map +1 -1
  38. package/dist/development/src/input-validation/ValidationDataSelector.js.map +1 -1
  39. package/dist/development/src/input-validation/ValidationEvaluation.cjs.map +1 -1
  40. package/dist/development/src/input-validation/ValidationEvaluation.js.map +1 -1
  41. package/dist/development/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
  42. package/dist/development/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
  43. package/dist/development/src/input-validation/dependencies/DependencyMerger.cjs.map +1 -1
  44. package/dist/development/src/input-validation/dependencies/DependencyMerger.js.map +1 -1
  45. package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
  46. package/dist/development/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  47. package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs +38 -2
  48. package/dist/development/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
  49. package/dist/development/src/input-validation/preValidation/InputPreValidator.js +38 -2
  50. package/dist/development/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  51. package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
  52. package/dist/development/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  53. package/dist/development/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
  54. package/dist/development/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  55. package/dist/development/src/inputProcessing/ObjectNode.cjs.map +1 -1
  56. package/dist/development/src/inputProcessing/ObjectNode.js.map +1 -1
  57. package/dist/development/src/inputProcessing/UniqueWhereExpander.cjs.map +1 -1
  58. package/dist/development/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
  59. package/dist/development/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
  60. package/dist/development/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  61. package/dist/development/src/introspection/IntrospectionSchemaDefinitionFactory.cjs.map +1 -1
  62. package/dist/development/src/introspection/IntrospectionSchemaDefinitionFactory.js.map +1 -1
  63. package/dist/development/src/introspection/IntrospectionSchemaFactory.cjs.map +1 -1
  64. package/dist/development/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
  65. package/dist/development/src/mapper/ErrorUtils.cjs.map +1 -1
  66. package/dist/development/src/mapper/ErrorUtils.js.map +1 -1
  67. package/dist/development/src/mapper/EventManager.cjs.map +1 -1
  68. package/dist/development/src/mapper/EventManager.js.map +1 -1
  69. package/dist/development/src/mapper/JunctionTableManager.cjs.map +1 -1
  70. package/dist/development/src/mapper/JunctionTableManager.js.map +1 -1
  71. package/dist/development/src/mapper/Mapper.cjs.map +1 -1
  72. package/dist/development/src/mapper/Mapper.js.map +1 -1
  73. package/dist/development/src/mapper/MapperFactory.cjs.map +1 -1
  74. package/dist/development/src/mapper/MapperFactory.js.map +1 -1
  75. package/dist/development/src/mapper/MutationProcessorHelper.cjs.map +1 -1
  76. package/dist/development/src/mapper/MutationProcessorHelper.js.map +1 -1
  77. package/dist/development/src/mapper/Result.cjs.map +1 -1
  78. package/dist/development/src/mapper/Result.js.map +1 -1
  79. package/dist/development/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
  80. package/dist/development/src/mapper/delete/DeleteExecutor.js.map +1 -1
  81. package/dist/development/src/mapper/delete/DeleteState.cjs.map +1 -1
  82. package/dist/development/src/mapper/delete/DeleteState.js.map +1 -1
  83. package/dist/development/src/mapper/insert/InsertBuilder.cjs.map +1 -1
  84. package/dist/development/src/mapper/insert/InsertBuilder.js.map +1 -1
  85. package/dist/development/src/mapper/insert/InsertBuilderFactory.cjs.map +1 -1
  86. package/dist/development/src/mapper/insert/InsertBuilderFactory.js.map +1 -1
  87. package/dist/development/src/mapper/insert/Inserter.cjs.map +1 -1
  88. package/dist/development/src/mapper/insert/Inserter.js.map +1 -1
  89. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  90. package/dist/development/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  91. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -1
  92. package/dist/development/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -1
  93. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -1
  94. package/dist/development/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -1
  95. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -1
  96. package/dist/development/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -1
  97. package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -1
  98. package/dist/development/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -1
  99. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -1
  100. package/dist/development/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -1
  101. package/dist/development/src/mapper/select/ConditionBuilder.cjs +2 -0
  102. package/dist/development/src/mapper/select/ConditionBuilder.cjs.map +1 -1
  103. package/dist/development/src/mapper/select/ConditionBuilder.js +2 -0
  104. package/dist/development/src/mapper/select/ConditionBuilder.js.map +1 -1
  105. package/dist/development/src/mapper/select/JoinBuilder.cjs.map +1 -1
  106. package/dist/development/src/mapper/select/JoinBuilder.js.map +1 -1
  107. package/dist/development/src/mapper/select/JoinVisitor.cjs.map +1 -1
  108. package/dist/development/src/mapper/select/JoinVisitor.js.map +1 -1
  109. package/dist/development/src/mapper/select/OrderByBuilder.cjs.map +1 -1
  110. package/dist/development/src/mapper/select/OrderByBuilder.js.map +1 -1
  111. package/dist/development/src/mapper/select/OrderByHelper.cjs.map +1 -1
  112. package/dist/development/src/mapper/select/OrderByHelper.js.map +1 -1
  113. package/dist/development/src/mapper/select/RelationFetcher.cjs.map +1 -1
  114. package/dist/development/src/mapper/select/RelationFetcher.js.map +1 -1
  115. package/dist/development/src/mapper/select/SelectBuilder.cjs.map +1 -1
  116. package/dist/development/src/mapper/select/SelectBuilder.js.map +1 -1
  117. package/dist/development/src/mapper/select/SelectHydrator.cjs.map +1 -1
  118. package/dist/development/src/mapper/select/SelectHydrator.js.map +1 -1
  119. package/dist/development/src/mapper/select/WhereBuilder.cjs.map +1 -1
  120. package/dist/development/src/mapper/select/WhereBuilder.js.map +1 -1
  121. package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs +9 -1
  122. package/dist/development/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
  123. package/dist/development/src/mapper/select/handlers/FieldsVisitor.js +9 -1
  124. package/dist/development/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  125. package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
  126. package/dist/development/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
  127. package/dist/development/src/mapper/select/handlers/MetaHandler.cjs.map +1 -1
  128. package/dist/development/src/mapper/select/handlers/MetaHandler.js.map +1 -1
  129. package/dist/development/src/mapper/select/optimizer/ConditionOptimizer.cjs.map +1 -1
  130. package/dist/development/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
  131. package/dist/development/src/mapper/select/optimizer/WhereOptimizer.cjs.map +1 -1
  132. package/dist/development/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
  133. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
  134. package/dist/development/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  135. package/dist/development/src/mapper/update/UpdateBuilder.cjs.map +1 -1
  136. package/dist/development/src/mapper/update/UpdateBuilder.js.map +1 -1
  137. package/dist/development/src/mapper/update/UpdateBuilderFactory.cjs.map +1 -1
  138. package/dist/development/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
  139. package/dist/development/src/mapper/update/Updater.cjs.map +1 -1
  140. package/dist/development/src/mapper/update/Updater.js.map +1 -1
  141. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -1
  142. package/dist/development/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -1
  143. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -1
  144. package/dist/development/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -1
  145. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -1
  146. package/dist/development/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -1
  147. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -1
  148. package/dist/development/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -1
  149. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -1
  150. package/dist/development/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -1
  151. package/dist/development/src/resolvers/GraphQlQueryAstFactory.cjs.map +1 -1
  152. package/dist/development/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
  153. package/dist/development/src/resolvers/MutationResolver.cjs.map +1 -1
  154. package/dist/development/src/resolvers/MutationResolver.js.map +1 -1
  155. package/dist/development/src/resolvers/ReadHelpers.cjs.map +1 -1
  156. package/dist/development/src/resolvers/ReadHelpers.js.map +1 -1
  157. package/dist/development/src/resolvers/ReadResolver.cjs.map +1 -1
  158. package/dist/development/src/resolvers/ReadResolver.js.map +1 -1
  159. package/dist/development/src/resolvers/RefreshViewResolver.cjs.map +1 -1
  160. package/dist/development/src/resolvers/RefreshViewResolver.js.map +1 -1
  161. package/dist/development/src/resolvers/ValidationResolver.cjs.map +1 -1
  162. package/dist/development/src/resolvers/ValidationResolver.js.map +1 -1
  163. package/dist/development/src/schema/ColumnTypeResolver.cjs +2 -0
  164. package/dist/development/src/schema/ColumnTypeResolver.cjs.map +1 -1
  165. package/dist/development/src/schema/ColumnTypeResolver.js +2 -0
  166. package/dist/development/src/schema/ColumnTypeResolver.js.map +1 -1
  167. package/dist/development/src/schema/ConditionTypeProvider.cjs +2 -0
  168. package/dist/development/src/schema/ConditionTypeProvider.cjs.map +1 -1
  169. package/dist/development/src/schema/ConditionTypeProvider.js +2 -0
  170. package/dist/development/src/schema/ConditionTypeProvider.js.map +1 -1
  171. package/dist/development/src/schema/CustomTypesProvider.cjs +32 -0
  172. package/dist/development/src/schema/CustomTypesProvider.cjs.map +1 -1
  173. package/dist/development/src/schema/CustomTypesProvider.js +32 -0
  174. package/dist/development/src/schema/CustomTypesProvider.js.map +1 -1
  175. package/dist/development/src/schema/EntityTypeProvider.cjs.map +1 -1
  176. package/dist/development/src/schema/EntityTypeProvider.js.map +1 -1
  177. package/dist/development/src/schema/EnumsProvider.cjs.map +1 -1
  178. package/dist/development/src/schema/EnumsProvider.js.map +1 -1
  179. package/dist/development/src/schema/FieldAccessVisitor.cjs.map +1 -1
  180. package/dist/development/src/schema/FieldAccessVisitor.js.map +1 -1
  181. package/dist/development/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
  182. package/dist/development/src/schema/GraphQlSchemaBuilder.js.map +1 -1
  183. package/dist/development/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
  184. package/dist/development/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
  185. package/dist/development/src/schema/MutationProvider.cjs.map +1 -1
  186. package/dist/development/src/schema/MutationProvider.js.map +1 -1
  187. package/dist/development/src/schema/OperationExtension.cjs.map +1 -1
  188. package/dist/development/src/schema/OperationExtension.js.map +1 -1
  189. package/dist/development/src/schema/OrderByTypeProvider.cjs.map +1 -1
  190. package/dist/development/src/schema/OrderByTypeProvider.js.map +1 -1
  191. package/dist/development/src/schema/PaginatedFieldConfigFactory.cjs.map +1 -1
  192. package/dist/development/src/schema/PaginatedFieldConfigFactory.js.map +1 -1
  193. package/dist/development/src/schema/QueryProvider.cjs.map +1 -1
  194. package/dist/development/src/schema/QueryProvider.js.map +1 -1
  195. package/dist/development/src/schema/RefreshViewMutationProvider.cjs.map +1 -1
  196. package/dist/development/src/schema/RefreshViewMutationProvider.js.map +1 -1
  197. package/dist/development/src/schema/ValidationQueriesProvider.cjs.map +1 -1
  198. package/dist/development/src/schema/ValidationQueriesProvider.js.map +1 -1
  199. package/dist/development/src/schema/WhereTypeProvider.cjs.map +1 -1
  200. package/dist/development/src/schema/WhereTypeProvider.js.map +1 -1
  201. package/dist/development/src/schema/entities/FieldArgsVisitor.cjs.map +1 -1
  202. package/dist/development/src/schema/entities/FieldArgsVisitor.js.map +1 -1
  203. package/dist/development/src/schema/entities/FieldTypeVisitor.cjs.map +1 -1
  204. package/dist/development/src/schema/entities/FieldTypeVisitor.js.map +1 -1
  205. package/dist/development/src/schema/mutations/ConnectOrCreateRelationInputProvider.cjs.map +1 -1
  206. package/dist/development/src/schema/mutations/ConnectOrCreateRelationInputProvider.js.map +1 -1
  207. package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.cjs.map +1 -1
  208. package/dist/development/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  209. package/dist/development/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
  210. package/dist/development/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  211. package/dist/development/src/schema/mutations/CreateEntityRelationInputFieldVisitor.cjs.map +1 -1
  212. package/dist/development/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
  213. package/dist/development/src/schema/mutations/CreateEntityRelationInputProvider.cjs.map +1 -1
  214. package/dist/development/src/schema/mutations/CreateEntityRelationInputProvider.js.map +1 -1
  215. package/dist/development/src/schema/mutations/EntityInputProvider.cjs.map +1 -1
  216. package/dist/development/src/schema/mutations/EntityInputProvider.js.map +1 -1
  217. package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs.map +1 -1
  218. package/dist/development/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  219. package/dist/development/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
  220. package/dist/development/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  221. package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.cjs.map +1 -1
  222. package/dist/development/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  223. package/dist/development/src/schema/mutations/UpdateEntityRelationInputProvider.cjs.map +1 -1
  224. package/dist/development/src/schema/mutations/UpdateEntityRelationInputProvider.js.map +1 -1
  225. package/dist/development/src/schema/utils.cjs.map +1 -1
  226. package/dist/development/src/schema/utils.js.map +1 -1
  227. package/dist/development/src/utils/accessor.cjs.map +1 -1
  228. package/dist/development/src/utils/accessor.js.map +1 -1
  229. package/dist/development/src/utils/paginationUtils.cjs.map +1 -1
  230. package/dist/development/src/utils/paginationUtils.js.map +1 -1
  231. package/dist/development/src/utils/singletonFactory.cjs.map +1 -1
  232. package/dist/development/src/utils/singletonFactory.js.map +1 -1
  233. package/dist/production/src/ExecutionContainer.cjs.map +1 -1
  234. package/dist/production/src/ExecutionContainer.js.map +1 -1
  235. package/dist/production/src/acl/EvaluatedPredicateReplacer.cjs.map +1 -1
  236. package/dist/production/src/acl/EvaluatedPredicateReplacer.js.map +1 -1
  237. package/dist/production/src/acl/PermissionFactory.cjs.map +1 -1
  238. package/dist/production/src/acl/PermissionFactory.js.map +1 -1
  239. package/dist/production/src/acl/PredicateFactory.cjs.map +1 -1
  240. package/dist/production/src/acl/PredicateFactory.js.map +1 -1
  241. package/dist/production/src/acl/PredicatesInjector.cjs.map +1 -1
  242. package/dist/production/src/acl/PredicatesInjector.js.map +1 -1
  243. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.cjs.map +1 -1
  244. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.js.map +1 -1
  245. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.cjs.map +1 -1
  246. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.js.map +1 -1
  247. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.cjs.map +1 -1
  248. package/dist/production/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.js.map +1 -1
  249. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.cjs.map +1 -1
  250. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.js.map +1 -1
  251. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.cjs.map +1 -1
  252. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.js.map +1 -1
  253. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.cjs.map +1 -1
  254. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.js.map +1 -1
  255. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.cjs.map +1 -1
  256. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.js.map +1 -1
  257. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.cjs.map +1 -1
  258. package/dist/production/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.js.map +1 -1
  259. package/dist/production/src/input-validation/EntityRulesResolver.cjs.map +1 -1
  260. package/dist/production/src/input-validation/EntityRulesResolver.js.map +1 -1
  261. package/dist/production/src/input-validation/JsonSchemaValidator.cjs +208 -0
  262. package/dist/production/src/input-validation/JsonSchemaValidator.cjs.map +1 -0
  263. package/dist/production/src/input-validation/JsonSchemaValidator.js +208 -0
  264. package/dist/production/src/input-validation/JsonSchemaValidator.js.map +1 -0
  265. package/dist/production/src/input-validation/QueryAstFactory.cjs.map +1 -1
  266. package/dist/production/src/input-validation/QueryAstFactory.js.map +1 -1
  267. package/dist/production/src/input-validation/ValidationContext.cjs.map +1 -1
  268. package/dist/production/src/input-validation/ValidationContext.js.map +1 -1
  269. package/dist/production/src/input-validation/ValidationDataSelector.cjs.map +1 -1
  270. package/dist/production/src/input-validation/ValidationDataSelector.js.map +1 -1
  271. package/dist/production/src/input-validation/ValidationEvaluation.cjs.map +1 -1
  272. package/dist/production/src/input-validation/ValidationEvaluation.js.map +1 -1
  273. package/dist/production/src/input-validation/dependencies/DependencyCollector.cjs.map +1 -1
  274. package/dist/production/src/input-validation/dependencies/DependencyCollector.js.map +1 -1
  275. package/dist/production/src/input-validation/dependencies/DependencyMerger.cjs.map +1 -1
  276. package/dist/production/src/input-validation/dependencies/DependencyMerger.js.map +1 -1
  277. package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.cjs.map +1 -1
  278. package/dist/production/src/input-validation/preValidation/CreateInputPreValidationProcessor.js.map +1 -1
  279. package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs +38 -2
  280. package/dist/production/src/input-validation/preValidation/InputPreValidator.cjs.map +1 -1
  281. package/dist/production/src/input-validation/preValidation/InputPreValidator.js +38 -2
  282. package/dist/production/src/input-validation/preValidation/InputPreValidator.js.map +1 -1
  283. package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.cjs.map +1 -1
  284. package/dist/production/src/input-validation/preValidation/UpdateInputPreValidationProcessor.js.map +1 -1
  285. package/dist/production/src/inputProcessing/CreateInputVisitor.cjs.map +1 -1
  286. package/dist/production/src/inputProcessing/CreateInputVisitor.js.map +1 -1
  287. package/dist/production/src/inputProcessing/ObjectNode.cjs.map +1 -1
  288. package/dist/production/src/inputProcessing/ObjectNode.js.map +1 -1
  289. package/dist/production/src/inputProcessing/UniqueWhereExpander.cjs.map +1 -1
  290. package/dist/production/src/inputProcessing/UniqueWhereExpander.js.map +1 -1
  291. package/dist/production/src/inputProcessing/UpdateInputVisitor.cjs.map +1 -1
  292. package/dist/production/src/inputProcessing/UpdateInputVisitor.js.map +1 -1
  293. package/dist/production/src/introspection/IntrospectionSchemaDefinitionFactory.cjs.map +1 -1
  294. package/dist/production/src/introspection/IntrospectionSchemaDefinitionFactory.js.map +1 -1
  295. package/dist/production/src/introspection/IntrospectionSchemaFactory.cjs.map +1 -1
  296. package/dist/production/src/introspection/IntrospectionSchemaFactory.js.map +1 -1
  297. package/dist/production/src/mapper/ErrorUtils.cjs.map +1 -1
  298. package/dist/production/src/mapper/ErrorUtils.js.map +1 -1
  299. package/dist/production/src/mapper/EventManager.cjs.map +1 -1
  300. package/dist/production/src/mapper/EventManager.js.map +1 -1
  301. package/dist/production/src/mapper/JunctionTableManager.cjs.map +1 -1
  302. package/dist/production/src/mapper/JunctionTableManager.js.map +1 -1
  303. package/dist/production/src/mapper/Mapper.cjs.map +1 -1
  304. package/dist/production/src/mapper/Mapper.js.map +1 -1
  305. package/dist/production/src/mapper/MapperFactory.cjs.map +1 -1
  306. package/dist/production/src/mapper/MapperFactory.js.map +1 -1
  307. package/dist/production/src/mapper/MutationProcessorHelper.cjs.map +1 -1
  308. package/dist/production/src/mapper/MutationProcessorHelper.js.map +1 -1
  309. package/dist/production/src/mapper/Result.cjs.map +1 -1
  310. package/dist/production/src/mapper/Result.js.map +1 -1
  311. package/dist/production/src/mapper/delete/DeleteExecutor.cjs.map +1 -1
  312. package/dist/production/src/mapper/delete/DeleteExecutor.js.map +1 -1
  313. package/dist/production/src/mapper/delete/DeleteState.cjs.map +1 -1
  314. package/dist/production/src/mapper/delete/DeleteState.js.map +1 -1
  315. package/dist/production/src/mapper/insert/InsertBuilder.cjs.map +1 -1
  316. package/dist/production/src/mapper/insert/InsertBuilder.js.map +1 -1
  317. package/dist/production/src/mapper/insert/InsertBuilderFactory.cjs.map +1 -1
  318. package/dist/production/src/mapper/insert/InsertBuilderFactory.js.map +1 -1
  319. package/dist/production/src/mapper/insert/Inserter.cjs.map +1 -1
  320. package/dist/production/src/mapper/insert/Inserter.js.map +1 -1
  321. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.cjs.map +1 -1
  322. package/dist/production/src/mapper/insert/SqlCreateInputProcessor.js.map +1 -1
  323. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.cjs.map +1 -1
  324. package/dist/production/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.js.map +1 -1
  325. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.cjs.map +1 -1
  326. package/dist/production/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.js.map +1 -1
  327. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.cjs.map +1 -1
  328. package/dist/production/src/mapper/insert/relations/OneHasManyCreateInputProcessor.js.map +1 -1
  329. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.cjs.map +1 -1
  330. package/dist/production/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.js.map +1 -1
  331. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.cjs.map +1 -1
  332. package/dist/production/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.js.map +1 -1
  333. package/dist/production/src/mapper/select/ConditionBuilder.cjs +2 -0
  334. package/dist/production/src/mapper/select/ConditionBuilder.cjs.map +1 -1
  335. package/dist/production/src/mapper/select/ConditionBuilder.js +2 -0
  336. package/dist/production/src/mapper/select/ConditionBuilder.js.map +1 -1
  337. package/dist/production/src/mapper/select/JoinBuilder.cjs.map +1 -1
  338. package/dist/production/src/mapper/select/JoinBuilder.js.map +1 -1
  339. package/dist/production/src/mapper/select/JoinVisitor.cjs.map +1 -1
  340. package/dist/production/src/mapper/select/JoinVisitor.js.map +1 -1
  341. package/dist/production/src/mapper/select/OrderByBuilder.cjs.map +1 -1
  342. package/dist/production/src/mapper/select/OrderByBuilder.js.map +1 -1
  343. package/dist/production/src/mapper/select/OrderByHelper.cjs.map +1 -1
  344. package/dist/production/src/mapper/select/OrderByHelper.js.map +1 -1
  345. package/dist/production/src/mapper/select/RelationFetcher.cjs.map +1 -1
  346. package/dist/production/src/mapper/select/RelationFetcher.js.map +1 -1
  347. package/dist/production/src/mapper/select/SelectBuilder.cjs.map +1 -1
  348. package/dist/production/src/mapper/select/SelectBuilder.js.map +1 -1
  349. package/dist/production/src/mapper/select/SelectHydrator.cjs.map +1 -1
  350. package/dist/production/src/mapper/select/SelectHydrator.js.map +1 -1
  351. package/dist/production/src/mapper/select/WhereBuilder.cjs.map +1 -1
  352. package/dist/production/src/mapper/select/WhereBuilder.js.map +1 -1
  353. package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs +9 -1
  354. package/dist/production/src/mapper/select/handlers/FieldsVisitor.cjs.map +1 -1
  355. package/dist/production/src/mapper/select/handlers/FieldsVisitor.js +9 -1
  356. package/dist/production/src/mapper/select/handlers/FieldsVisitor.js.map +1 -1
  357. package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.cjs.map +1 -1
  358. package/dist/production/src/mapper/select/handlers/FieldsVisitorFactory.js.map +1 -1
  359. package/dist/production/src/mapper/select/handlers/MetaHandler.cjs.map +1 -1
  360. package/dist/production/src/mapper/select/handlers/MetaHandler.js.map +1 -1
  361. package/dist/production/src/mapper/select/optimizer/ConditionOptimizer.cjs.map +1 -1
  362. package/dist/production/src/mapper/select/optimizer/ConditionOptimizer.js.map +1 -1
  363. package/dist/production/src/mapper/select/optimizer/WhereOptimizer.cjs.map +1 -1
  364. package/dist/production/src/mapper/select/optimizer/WhereOptimizer.js.map +1 -1
  365. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.cjs.map +1 -1
  366. package/dist/production/src/mapper/update/SqlUpdateInputProcessor.js.map +1 -1
  367. package/dist/production/src/mapper/update/UpdateBuilder.cjs.map +1 -1
  368. package/dist/production/src/mapper/update/UpdateBuilder.js.map +1 -1
  369. package/dist/production/src/mapper/update/UpdateBuilderFactory.cjs.map +1 -1
  370. package/dist/production/src/mapper/update/UpdateBuilderFactory.js.map +1 -1
  371. package/dist/production/src/mapper/update/Updater.cjs.map +1 -1
  372. package/dist/production/src/mapper/update/Updater.js.map +1 -1
  373. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.cjs.map +1 -1
  374. package/dist/production/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.js.map +1 -1
  375. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.cjs.map +1 -1
  376. package/dist/production/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.js.map +1 -1
  377. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.cjs.map +1 -1
  378. package/dist/production/src/mapper/update/relations/OneHasManyUpdateInputProcessor.js.map +1 -1
  379. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.cjs.map +1 -1
  380. package/dist/production/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.js.map +1 -1
  381. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.cjs.map +1 -1
  382. package/dist/production/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.js.map +1 -1
  383. package/dist/production/src/resolvers/GraphQlQueryAstFactory.cjs.map +1 -1
  384. package/dist/production/src/resolvers/GraphQlQueryAstFactory.js.map +1 -1
  385. package/dist/production/src/resolvers/MutationResolver.cjs.map +1 -1
  386. package/dist/production/src/resolvers/MutationResolver.js.map +1 -1
  387. package/dist/production/src/resolvers/ReadHelpers.cjs.map +1 -1
  388. package/dist/production/src/resolvers/ReadHelpers.js.map +1 -1
  389. package/dist/production/src/resolvers/ReadResolver.cjs.map +1 -1
  390. package/dist/production/src/resolvers/ReadResolver.js.map +1 -1
  391. package/dist/production/src/resolvers/RefreshViewResolver.cjs.map +1 -1
  392. package/dist/production/src/resolvers/RefreshViewResolver.js.map +1 -1
  393. package/dist/production/src/resolvers/ValidationResolver.cjs.map +1 -1
  394. package/dist/production/src/resolvers/ValidationResolver.js.map +1 -1
  395. package/dist/production/src/schema/ColumnTypeResolver.cjs +2 -0
  396. package/dist/production/src/schema/ColumnTypeResolver.cjs.map +1 -1
  397. package/dist/production/src/schema/ColumnTypeResolver.js +2 -0
  398. package/dist/production/src/schema/ColumnTypeResolver.js.map +1 -1
  399. package/dist/production/src/schema/ConditionTypeProvider.cjs +2 -0
  400. package/dist/production/src/schema/ConditionTypeProvider.cjs.map +1 -1
  401. package/dist/production/src/schema/ConditionTypeProvider.js +2 -0
  402. package/dist/production/src/schema/ConditionTypeProvider.js.map +1 -1
  403. package/dist/production/src/schema/CustomTypesProvider.cjs +32 -0
  404. package/dist/production/src/schema/CustomTypesProvider.cjs.map +1 -1
  405. package/dist/production/src/schema/CustomTypesProvider.js +32 -0
  406. package/dist/production/src/schema/CustomTypesProvider.js.map +1 -1
  407. package/dist/production/src/schema/EntityTypeProvider.cjs.map +1 -1
  408. package/dist/production/src/schema/EntityTypeProvider.js.map +1 -1
  409. package/dist/production/src/schema/EnumsProvider.cjs.map +1 -1
  410. package/dist/production/src/schema/EnumsProvider.js.map +1 -1
  411. package/dist/production/src/schema/FieldAccessVisitor.cjs.map +1 -1
  412. package/dist/production/src/schema/FieldAccessVisitor.js.map +1 -1
  413. package/dist/production/src/schema/GraphQlSchemaBuilder.cjs.map +1 -1
  414. package/dist/production/src/schema/GraphQlSchemaBuilder.js.map +1 -1
  415. package/dist/production/src/schema/GraphQlSchemaBuilderFactory.cjs.map +1 -1
  416. package/dist/production/src/schema/GraphQlSchemaBuilderFactory.js.map +1 -1
  417. package/dist/production/src/schema/MutationProvider.cjs.map +1 -1
  418. package/dist/production/src/schema/MutationProvider.js.map +1 -1
  419. package/dist/production/src/schema/OperationExtension.cjs.map +1 -1
  420. package/dist/production/src/schema/OperationExtension.js.map +1 -1
  421. package/dist/production/src/schema/OrderByTypeProvider.cjs.map +1 -1
  422. package/dist/production/src/schema/OrderByTypeProvider.js.map +1 -1
  423. package/dist/production/src/schema/PaginatedFieldConfigFactory.cjs.map +1 -1
  424. package/dist/production/src/schema/PaginatedFieldConfigFactory.js.map +1 -1
  425. package/dist/production/src/schema/QueryProvider.cjs.map +1 -1
  426. package/dist/production/src/schema/QueryProvider.js.map +1 -1
  427. package/dist/production/src/schema/RefreshViewMutationProvider.cjs.map +1 -1
  428. package/dist/production/src/schema/RefreshViewMutationProvider.js.map +1 -1
  429. package/dist/production/src/schema/ValidationQueriesProvider.cjs.map +1 -1
  430. package/dist/production/src/schema/ValidationQueriesProvider.js.map +1 -1
  431. package/dist/production/src/schema/WhereTypeProvider.cjs.map +1 -1
  432. package/dist/production/src/schema/WhereTypeProvider.js.map +1 -1
  433. package/dist/production/src/schema/entities/FieldArgsVisitor.cjs.map +1 -1
  434. package/dist/production/src/schema/entities/FieldArgsVisitor.js.map +1 -1
  435. package/dist/production/src/schema/entities/FieldTypeVisitor.cjs.map +1 -1
  436. package/dist/production/src/schema/entities/FieldTypeVisitor.js.map +1 -1
  437. package/dist/production/src/schema/mutations/ConnectOrCreateRelationInputProvider.cjs.map +1 -1
  438. package/dist/production/src/schema/mutations/ConnectOrCreateRelationInputProvider.js.map +1 -1
  439. package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.cjs.map +1 -1
  440. package/dist/production/src/schema/mutations/CreateEntityInputFieldVisitor.js.map +1 -1
  441. package/dist/production/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
  442. package/dist/production/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  443. package/dist/production/src/schema/mutations/CreateEntityRelationInputFieldVisitor.cjs.map +1 -1
  444. package/dist/production/src/schema/mutations/CreateEntityRelationInputFieldVisitor.js.map +1 -1
  445. package/dist/production/src/schema/mutations/CreateEntityRelationInputProvider.cjs.map +1 -1
  446. package/dist/production/src/schema/mutations/CreateEntityRelationInputProvider.js.map +1 -1
  447. package/dist/production/src/schema/mutations/EntityInputProvider.cjs.map +1 -1
  448. package/dist/production/src/schema/mutations/EntityInputProvider.js.map +1 -1
  449. package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.cjs.map +1 -1
  450. package/dist/production/src/schema/mutations/UpdateEntityInputFieldVisitor.js.map +1 -1
  451. package/dist/production/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.cjs.map +1 -1
  452. package/dist/production/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.js.map +1 -1
  453. package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.cjs.map +1 -1
  454. package/dist/production/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.js.map +1 -1
  455. package/dist/production/src/schema/mutations/UpdateEntityRelationInputProvider.cjs.map +1 -1
  456. package/dist/production/src/schema/mutations/UpdateEntityRelationInputProvider.js.map +1 -1
  457. package/dist/production/src/schema/utils.cjs.map +1 -1
  458. package/dist/production/src/schema/utils.js.map +1 -1
  459. package/dist/production/src/utils/accessor.cjs.map +1 -1
  460. package/dist/production/src/utils/accessor.js.map +1 -1
  461. package/dist/production/src/utils/paginationUtils.cjs.map +1 -1
  462. package/dist/production/src/utils/paginationUtils.js.map +1 -1
  463. package/dist/production/src/utils/singletonFactory.cjs.map +1 -1
  464. package/dist/production/src/utils/singletonFactory.js.map +1 -1
  465. package/dist/tests/cases/integration/graphQlRequests/insert/numericColumn.test.d.ts +2 -0
  466. package/dist/tests/cases/integration/graphQlRequests/insert/numericColumn.test.d.ts.map +1 -0
  467. package/dist/tests/cases/integration/graphQlRequests/query/filter/numericFilter.test.d.ts +2 -0
  468. package/dist/tests/cases/integration/graphQlRequests/query/filter/numericFilter.test.d.ts.map +1 -0
  469. package/dist/tests/cases/integration/graphQlRequests/query/filter/similarQuery.test.d.ts +2 -0
  470. package/dist/tests/cases/integration/graphQlRequests/query/filter/similarQuery.test.d.ts.map +1 -0
  471. package/dist/tests/cases/integration/graphQlRequests/query/formatting/numericFormat.test.d.ts +2 -0
  472. package/dist/tests/cases/integration/graphQlRequests/query/formatting/numericFormat.test.d.ts.map +1 -0
  473. package/dist/tests/cases/integration/graphQlRequests/query/formatting/numericList.test.d.ts +2 -0
  474. package/dist/tests/cases/integration/graphQlRequests/query/formatting/numericList.test.d.ts.map +1 -0
  475. package/dist/tests/cases/integration/graphQlRequests/validation/utils.d.ts +1 -1
  476. package/dist/tests/cases/integration/graphQlRequests/validation/utils.d.ts.map +1 -1
  477. package/dist/tests/cases/unit/decimalType.test.d.ts +2 -0
  478. package/dist/tests/cases/unit/decimalType.test.d.ts.map +1 -0
  479. package/dist/tests/cases/unit/jsonSchemaValidator.test.d.ts +2 -0
  480. package/dist/tests/cases/unit/jsonSchemaValidator.test.d.ts.map +1 -0
  481. package/dist/tests/src/test.d.ts +2 -1
  482. package/dist/tests/src/test.d.ts.map +1 -1
  483. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  484. package/dist/types/ExecutionContainer.d.ts +11 -11
  485. package/dist/types/ExecutionContainer.d.ts.map +1 -1
  486. package/dist/types/acl/PredicateFactory.d.ts +1 -1
  487. package/dist/types/acl/PredicateFactory.d.ts.map +1 -1
  488. package/dist/types/acl/PredicatesInjector.d.ts +1 -1
  489. package/dist/types/acl/PredicatesInjector.d.ts.map +1 -1
  490. package/dist/types/acl/index.d.ts +6 -6
  491. package/dist/types/acl/index.d.ts.map +1 -1
  492. package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.d.ts +2 -2
  493. package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.d.ts.map +1 -1
  494. package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts +3 -3
  495. package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.d.ts.map +1 -1
  496. package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts +3 -3
  497. package/dist/types/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.d.ts.map +1 -1
  498. package/dist/types/extensions/hasManyToHasOneReducer/index.d.ts +3 -3
  499. package/dist/types/extensions/hasManyToHasOneReducer/index.d.ts.map +1 -1
  500. package/dist/types/extensions/index.d.ts +2 -2
  501. package/dist/types/extensions/index.d.ts.map +1 -1
  502. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts +2 -2
  503. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.d.ts.map +1 -1
  504. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.d.ts +2 -2
  505. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.d.ts.map +1 -1
  506. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.d.ts +2 -2
  507. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.d.ts.map +1 -1
  508. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts +2 -2
  509. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.d.ts.map +1 -1
  510. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts +2 -2
  511. package/dist/types/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.d.ts.map +1 -1
  512. package/dist/types/index.d.ts +11 -11
  513. package/dist/types/index.d.ts.map +1 -1
  514. package/dist/types/input-validation/InputValidator.d.ts +1 -1
  515. package/dist/types/input-validation/InputValidator.d.ts.map +1 -1
  516. package/dist/types/input-validation/JsonSchemaValidator.d.ts +25 -0
  517. package/dist/types/input-validation/JsonSchemaValidator.d.ts.map +1 -0
  518. package/dist/types/input-validation/QueryAstFactory.d.ts +2 -2
  519. package/dist/types/input-validation/QueryAstFactory.d.ts.map +1 -1
  520. package/dist/types/input-validation/ValidationDataSelector.d.ts +4 -4
  521. package/dist/types/input-validation/ValidationDataSelector.d.ts.map +1 -1
  522. package/dist/types/input-validation/ValidationEvaluation.d.ts +1 -1
  523. package/dist/types/input-validation/ValidationEvaluation.d.ts.map +1 -1
  524. package/dist/types/input-validation/dependencies/DependencyMerger.d.ts +1 -1
  525. package/dist/types/input-validation/dependencies/DependencyMerger.d.ts.map +1 -1
  526. package/dist/types/input-validation/dependencies/index.d.ts +2 -2
  527. package/dist/types/input-validation/dependencies/index.d.ts.map +1 -1
  528. package/dist/types/input-validation/index.d.ts +12 -11
  529. package/dist/types/input-validation/index.d.ts.map +1 -1
  530. package/dist/types/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts +5 -5
  531. package/dist/types/input-validation/preValidation/CreateInputPreValidationProcessor.d.ts.map +1 -1
  532. package/dist/types/input-validation/preValidation/InputPreValidator.d.ts +11 -6
  533. package/dist/types/input-validation/preValidation/InputPreValidator.d.ts.map +1 -1
  534. package/dist/types/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts +7 -7
  535. package/dist/types/input-validation/preValidation/UpdateInputPreValidationProcessor.d.ts.map +1 -1
  536. package/dist/types/input-validation/preValidation/index.d.ts +3 -3
  537. package/dist/types/input-validation/preValidation/index.d.ts.map +1 -1
  538. package/dist/types/inputProcessing/CreateInputProcessor.d.ts +2 -2
  539. package/dist/types/inputProcessing/CreateInputProcessor.d.ts.map +1 -1
  540. package/dist/types/inputProcessing/CreateInputVisitor.d.ts +2 -2
  541. package/dist/types/inputProcessing/CreateInputVisitor.d.ts.map +1 -1
  542. package/dist/types/inputProcessing/ObjectNode.d.ts +1 -1
  543. package/dist/types/inputProcessing/ObjectNode.d.ts.map +1 -1
  544. package/dist/types/inputProcessing/UniqueWhereExpander.d.ts +2 -2
  545. package/dist/types/inputProcessing/UniqueWhereExpander.d.ts.map +1 -1
  546. package/dist/types/inputProcessing/UpdateInputProcessor.d.ts +2 -2
  547. package/dist/types/inputProcessing/UpdateInputProcessor.d.ts.map +1 -1
  548. package/dist/types/inputProcessing/UpdateInputVisitor.d.ts +2 -2
  549. package/dist/types/inputProcessing/UpdateInputVisitor.d.ts.map +1 -1
  550. package/dist/types/inputProcessing/index.d.ts +7 -7
  551. package/dist/types/inputProcessing/index.d.ts.map +1 -1
  552. package/dist/types/introspection/IntrospectionSchemaDefinitionFactory.d.ts +1 -1
  553. package/dist/types/introspection/IntrospectionSchemaDefinitionFactory.d.ts.map +1 -1
  554. package/dist/types/introspection/IntrospectionSchemaFactory.d.ts +3 -3
  555. package/dist/types/introspection/IntrospectionSchemaFactory.d.ts.map +1 -1
  556. package/dist/types/introspection/index.d.ts +4 -4
  557. package/dist/types/introspection/index.d.ts.map +1 -1
  558. package/dist/types/mapper/ErrorUtils.d.ts +1 -1
  559. package/dist/types/mapper/ErrorUtils.d.ts.map +1 -1
  560. package/dist/types/mapper/EventManager.d.ts +2 -2
  561. package/dist/types/mapper/EventManager.d.ts.map +1 -1
  562. package/dist/types/mapper/JunctionTableManager.d.ts +4 -4
  563. package/dist/types/mapper/JunctionTableManager.d.ts.map +1 -1
  564. package/dist/types/mapper/Mapper.d.ts +12 -12
  565. package/dist/types/mapper/Mapper.d.ts.map +1 -1
  566. package/dist/types/mapper/MapperFactory.d.ts +8 -8
  567. package/dist/types/mapper/MapperFactory.d.ts.map +1 -1
  568. package/dist/types/mapper/MutationProcessorHelper.d.ts +1 -1
  569. package/dist/types/mapper/MutationProcessorHelper.d.ts.map +1 -1
  570. package/dist/types/mapper/Result.d.ts +1 -1
  571. package/dist/types/mapper/Result.d.ts.map +1 -1
  572. package/dist/types/mapper/delete/DeleteExecutor.d.ts +6 -6
  573. package/dist/types/mapper/delete/DeleteExecutor.d.ts.map +1 -1
  574. package/dist/types/mapper/delete/DeleteState.d.ts +2 -2
  575. package/dist/types/mapper/delete/DeleteState.d.ts.map +1 -1
  576. package/dist/types/mapper/delete/index.d.ts +2 -2
  577. package/dist/types/mapper/delete/index.d.ts.map +1 -1
  578. package/dist/types/mapper/index.d.ts +15 -15
  579. package/dist/types/mapper/index.d.ts.map +1 -1
  580. package/dist/types/mapper/insert/InsertBuilder.d.ts +4 -4
  581. package/dist/types/mapper/insert/InsertBuilder.d.ts.map +1 -1
  582. package/dist/types/mapper/insert/InsertBuilderFactory.d.ts +3 -3
  583. package/dist/types/mapper/insert/InsertBuilderFactory.d.ts.map +1 -1
  584. package/dist/types/mapper/insert/Inserter.d.ts +5 -5
  585. package/dist/types/mapper/insert/Inserter.d.ts.map +1 -1
  586. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts +4 -4
  587. package/dist/types/mapper/insert/SqlCreateInputProcessor.d.ts.map +1 -1
  588. package/dist/types/mapper/insert/index.d.ts +4 -4
  589. package/dist/types/mapper/insert/index.d.ts.map +1 -1
  590. package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts +7 -7
  591. package/dist/types/mapper/insert/relations/ManyHasManyCreateInputProcessor.d.ts.map +1 -1
  592. package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts +9 -9
  593. package/dist/types/mapper/insert/relations/ManyHasOneCreateInputProcessor.d.ts.map +1 -1
  594. package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts +8 -8
  595. package/dist/types/mapper/insert/relations/OneHasManyCreateInputProcessor.d.ts.map +1 -1
  596. package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts +7 -7
  597. package/dist/types/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.d.ts.map +1 -1
  598. package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts +7 -7
  599. package/dist/types/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.d.ts.map +1 -1
  600. package/dist/types/mapper/select/ConditionBuilder.d.ts.map +1 -1
  601. package/dist/types/mapper/select/JoinBuilder.d.ts +1 -1
  602. package/dist/types/mapper/select/JoinBuilder.d.ts.map +1 -1
  603. package/dist/types/mapper/select/JoinVisitor.d.ts +1 -1
  604. package/dist/types/mapper/select/JoinVisitor.d.ts.map +1 -1
  605. package/dist/types/mapper/select/OrderByBuilder.d.ts +2 -2
  606. package/dist/types/mapper/select/OrderByBuilder.d.ts.map +1 -1
  607. package/dist/types/mapper/select/OrderByHelper.d.ts +1 -1
  608. package/dist/types/mapper/select/OrderByHelper.d.ts.map +1 -1
  609. package/dist/types/mapper/select/RelationFetcher.d.ts +7 -7
  610. package/dist/types/mapper/select/RelationFetcher.d.ts.map +1 -1
  611. package/dist/types/mapper/select/SelectBuilder.d.ts +10 -10
  612. package/dist/types/mapper/select/SelectBuilder.d.ts.map +1 -1
  613. package/dist/types/mapper/select/SelectBuilderFactory.d.ts +2 -2
  614. package/dist/types/mapper/select/SelectBuilderFactory.d.ts.map +1 -1
  615. package/dist/types/mapper/select/SelectExecutionHandler.d.ts +4 -4
  616. package/dist/types/mapper/select/SelectExecutionHandler.d.ts.map +1 -1
  617. package/dist/types/mapper/select/SelectHydrator.d.ts +1 -1
  618. package/dist/types/mapper/select/SelectHydrator.d.ts.map +1 -1
  619. package/dist/types/mapper/select/WhereBuilder.d.ts +4 -4
  620. package/dist/types/mapper/select/WhereBuilder.d.ts.map +1 -1
  621. package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts +4 -4
  622. package/dist/types/mapper/select/handlers/FieldsVisitor.d.ts.map +1 -1
  623. package/dist/types/mapper/select/handlers/FieldsVisitorFactory.d.ts +5 -5
  624. package/dist/types/mapper/select/handlers/FieldsVisitorFactory.d.ts.map +1 -1
  625. package/dist/types/mapper/select/handlers/MetaHandler.d.ts +3 -3
  626. package/dist/types/mapper/select/handlers/MetaHandler.d.ts.map +1 -1
  627. package/dist/types/mapper/select/handlers/index.d.ts +3 -3
  628. package/dist/types/mapper/select/handlers/index.d.ts.map +1 -1
  629. package/dist/types/mapper/select/index.d.ts +13 -13
  630. package/dist/types/mapper/select/index.d.ts.map +1 -1
  631. package/dist/types/mapper/select/optimizer/WhereOptimizer.d.ts +1 -1
  632. package/dist/types/mapper/select/optimizer/WhereOptimizer.d.ts.map +1 -1
  633. package/dist/types/mapper/types.d.ts +1 -1
  634. package/dist/types/mapper/types.d.ts.map +1 -1
  635. package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts +5 -5
  636. package/dist/types/mapper/update/SqlUpdateInputProcessor.d.ts.map +1 -1
  637. package/dist/types/mapper/update/UpdateBuilder.d.ts +4 -4
  638. package/dist/types/mapper/update/UpdateBuilder.d.ts.map +1 -1
  639. package/dist/types/mapper/update/UpdateBuilderFactory.d.ts +3 -3
  640. package/dist/types/mapper/update/UpdateBuilderFactory.d.ts.map +1 -1
  641. package/dist/types/mapper/update/Updater.d.ts +5 -5
  642. package/dist/types/mapper/update/Updater.d.ts.map +1 -1
  643. package/dist/types/mapper/update/index.d.ts +4 -4
  644. package/dist/types/mapper/update/index.d.ts.map +1 -1
  645. package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts +12 -12
  646. package/dist/types/mapper/update/relations/ManyHasManyUpdateInputProcessor.d.ts.map +1 -1
  647. package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts +12 -12
  648. package/dist/types/mapper/update/relations/ManyHasOneUpdateInputProcessor.d.ts.map +1 -1
  649. package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts +12 -12
  650. package/dist/types/mapper/update/relations/OneHasManyUpdateInputProcessor.d.ts.map +1 -1
  651. package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts +6 -6
  652. package/dist/types/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.d.ts.map +1 -1
  653. package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts +10 -10
  654. package/dist/types/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.d.ts.map +1 -1
  655. package/dist/types/resolvers/GraphQlQueryAstFactory.d.ts +1 -1
  656. package/dist/types/resolvers/GraphQlQueryAstFactory.d.ts.map +1 -1
  657. package/dist/types/resolvers/MutationResolver.d.ts +3 -3
  658. package/dist/types/resolvers/MutationResolver.d.ts.map +1 -1
  659. package/dist/types/resolvers/ReadHelpers.d.ts +2 -2
  660. package/dist/types/resolvers/ReadHelpers.d.ts.map +1 -1
  661. package/dist/types/resolvers/ReadResolver.d.ts +4 -4
  662. package/dist/types/resolvers/ReadResolver.d.ts.map +1 -1
  663. package/dist/types/resolvers/RefreshViewResolver.d.ts +1 -1
  664. package/dist/types/resolvers/RefreshViewResolver.d.ts.map +1 -1
  665. package/dist/types/resolvers/ValidationResolver.d.ts +2 -2
  666. package/dist/types/resolvers/ValidationResolver.d.ts.map +1 -1
  667. package/dist/types/resolvers/index.d.ts +4 -4
  668. package/dist/types/resolvers/index.d.ts.map +1 -1
  669. package/dist/types/schema/ColumnTypeResolver.d.ts +2 -2
  670. package/dist/types/schema/ColumnTypeResolver.d.ts.map +1 -1
  671. package/dist/types/schema/ConditionTypeProvider.d.ts +1 -1
  672. package/dist/types/schema/ConditionTypeProvider.d.ts.map +1 -1
  673. package/dist/types/schema/CustomTypesProvider.d.ts +1 -0
  674. package/dist/types/schema/CustomTypesProvider.d.ts.map +1 -1
  675. package/dist/types/schema/EntityTypeProvider.d.ts +5 -5
  676. package/dist/types/schema/EntityTypeProvider.d.ts.map +1 -1
  677. package/dist/types/schema/FieldAccessVisitor.d.ts +1 -1
  678. package/dist/types/schema/FieldAccessVisitor.d.ts.map +1 -1
  679. package/dist/types/schema/GraphQlSchemaBuilder.d.ts +6 -6
  680. package/dist/types/schema/GraphQlSchemaBuilder.d.ts.map +1 -1
  681. package/dist/types/schema/GraphQlSchemaBuilderFactory.d.ts +30 -30
  682. package/dist/types/schema/GraphQlSchemaBuilderFactory.d.ts.map +1 -1
  683. package/dist/types/schema/MutationProvider.d.ts +6 -6
  684. package/dist/types/schema/MutationProvider.d.ts.map +1 -1
  685. package/dist/types/schema/OrderByTypeProvider.d.ts +1 -1
  686. package/dist/types/schema/OrderByTypeProvider.d.ts.map +1 -1
  687. package/dist/types/schema/PaginatedFieldConfigFactory.d.ts +3 -3
  688. package/dist/types/schema/PaginatedFieldConfigFactory.d.ts.map +1 -1
  689. package/dist/types/schema/QueryProvider.d.ts +6 -6
  690. package/dist/types/schema/QueryProvider.d.ts.map +1 -1
  691. package/dist/types/schema/RefreshViewMutationProvider.d.ts +2 -2
  692. package/dist/types/schema/RefreshViewMutationProvider.d.ts.map +1 -1
  693. package/dist/types/schema/ValidationQueriesProvider.d.ts +4 -4
  694. package/dist/types/schema/ValidationQueriesProvider.d.ts.map +1 -1
  695. package/dist/types/schema/WhereTypeProvider.d.ts +3 -3
  696. package/dist/types/schema/WhereTypeProvider.d.ts.map +1 -1
  697. package/dist/types/schema/entities/FieldArgsVisitor.d.ts +2 -2
  698. package/dist/types/schema/entities/FieldArgsVisitor.d.ts.map +1 -1
  699. package/dist/types/schema/entities/FieldTypeVisitor.d.ts +3 -3
  700. package/dist/types/schema/entities/FieldTypeVisitor.d.ts.map +1 -1
  701. package/dist/types/schema/entities/index.d.ts +2 -2
  702. package/dist/types/schema/entities/index.d.ts.map +1 -1
  703. package/dist/types/schema/index.d.ts +18 -18
  704. package/dist/types/schema/index.d.ts.map +1 -1
  705. package/dist/types/schema/mutations/ConnectOrCreateRelationInputProvider.d.ts +3 -3
  706. package/dist/types/schema/mutations/ConnectOrCreateRelationInputProvider.d.ts.map +1 -1
  707. package/dist/types/schema/mutations/CreateEntityInputFieldVisitor.d.ts +3 -3
  708. package/dist/types/schema/mutations/CreateEntityInputFieldVisitor.d.ts.map +1 -1
  709. package/dist/types/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts +1 -1
  710. package/dist/types/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  711. package/dist/types/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts +5 -5
  712. package/dist/types/schema/mutations/CreateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  713. package/dist/types/schema/mutations/CreateEntityRelationInputProvider.d.ts +1 -1
  714. package/dist/types/schema/mutations/CreateEntityRelationInputProvider.d.ts.map +1 -1
  715. package/dist/types/schema/mutations/EntityInputProvider.d.ts +1 -1
  716. package/dist/types/schema/mutations/EntityInputProvider.d.ts.map +1 -1
  717. package/dist/types/schema/mutations/UpdateEntityInputFieldVisitor.d.ts +4 -4
  718. package/dist/types/schema/mutations/UpdateEntityInputFieldVisitor.d.ts.map +1 -1
  719. package/dist/types/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts +1 -1
  720. package/dist/types/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.d.ts.map +1 -1
  721. package/dist/types/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts +6 -6
  722. package/dist/types/schema/mutations/UpdateEntityRelationInputFieldVisitor.d.ts.map +1 -1
  723. package/dist/types/schema/mutations/UpdateEntityRelationInputProvider.d.ts +1 -1
  724. package/dist/types/schema/mutations/UpdateEntityRelationInputProvider.d.ts.map +1 -1
  725. package/dist/types/schema/mutations/index.d.ts +9 -9
  726. package/dist/types/schema/mutations/index.d.ts.map +1 -1
  727. package/dist/types/tsconfig.tsbuildinfo +1 -1
  728. package/dist/types/types.d.ts +1 -1
  729. package/dist/types/types.d.ts.map +1 -1
  730. package/dist/types/utils/accessor.d.ts +1 -1
  731. package/dist/types/utils/accessor.d.ts.map +1 -1
  732. package/dist/types/utils/index.d.ts +13 -13
  733. package/dist/types/utils/index.d.ts.map +1 -1
  734. package/dist/types/utils/paginationUtils.d.ts +1 -1
  735. package/dist/types/utils/paginationUtils.d.ts.map +1 -1
  736. package/package.json +9 -9
  737. package/src/ExecutionContainer.ts +20 -12
  738. package/src/acl/EvaluatedPredicateReplacer.ts +1 -1
  739. package/src/acl/PermissionFactory.ts +2 -2
  740. package/src/acl/PredicateFactory.ts +2 -2
  741. package/src/acl/PredicatesInjector.ts +1 -1
  742. package/src/acl/index.ts +6 -6
  743. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducer.ts +2 -2
  744. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneReducerExecutionHandler.ts +5 -5
  745. package/src/extensions/hasManyToHasOneReducer/HasManyToHasOneRelationReducerVisitor.ts +4 -4
  746. package/src/extensions/hasManyToHasOneReducer/index.ts +3 -3
  747. package/src/extensions/index.ts +2 -2
  748. package/src/extensions/paginatedHasMany/PaginatedHasManyCountVisitor.ts +2 -2
  749. package/src/extensions/paginatedHasMany/PaginatedHasManyExecutionHandler.ts +5 -5
  750. package/src/extensions/paginatedHasMany/PaginatedHasManyFieldProvider.ts +2 -2
  751. package/src/extensions/paginatedHasMany/PaginatedHasManyFieldProviderVisitor.ts +4 -4
  752. package/src/extensions/paginatedHasMany/PaginatedHasManyNodesVisitor.ts +2 -2
  753. package/src/index.ts +11 -11
  754. package/src/input-validation/EntityRulesResolver.ts +3 -3
  755. package/src/input-validation/InputValidator.ts +1 -1
  756. package/src/input-validation/JsonSchemaValidator.ts +257 -0
  757. package/src/input-validation/QueryAstFactory.ts +2 -2
  758. package/src/input-validation/ValidationContext.ts +1 -1
  759. package/src/input-validation/ValidationDataSelector.ts +3 -3
  760. package/src/input-validation/ValidationEvaluation.ts +1 -1
  761. package/src/input-validation/dependencies/DependencyCollector.ts +1 -1
  762. package/src/input-validation/dependencies/DependencyMerger.ts +2 -2
  763. package/src/input-validation/dependencies/index.ts +2 -2
  764. package/src/input-validation/index.ts +12 -11
  765. package/src/input-validation/preValidation/CreateInputPreValidationProcessor.ts +4 -4
  766. package/src/input-validation/preValidation/InputPreValidator.ts +60 -17
  767. package/src/input-validation/preValidation/UpdateInputPreValidationProcessor.ts +4 -4
  768. package/src/input-validation/preValidation/index.ts +3 -3
  769. package/src/inputProcessing/CreateInputProcessor.ts +2 -2
  770. package/src/inputProcessing/CreateInputVisitor.ts +4 -4
  771. package/src/inputProcessing/ObjectNode.ts +1 -1
  772. package/src/inputProcessing/UniqueWhereExpander.ts +3 -3
  773. package/src/inputProcessing/UpdateInputProcessor.ts +2 -2
  774. package/src/inputProcessing/UpdateInputVisitor.ts +4 -4
  775. package/src/inputProcessing/index.ts +7 -7
  776. package/src/introspection/IntrospectionSchemaDefinitionFactory.ts +3 -3
  777. package/src/introspection/IntrospectionSchemaFactory.ts +4 -4
  778. package/src/introspection/index.ts +4 -4
  779. package/src/mapper/ErrorUtils.ts +2 -2
  780. package/src/mapper/EventManager.ts +2 -2
  781. package/src/mapper/JunctionTableManager.ts +6 -6
  782. package/src/mapper/Mapper.ts +14 -14
  783. package/src/mapper/MapperFactory.ts +8 -8
  784. package/src/mapper/MutationProcessorHelper.ts +1 -1
  785. package/src/mapper/Result.ts +1 -1
  786. package/src/mapper/delete/DeleteExecutor.ts +11 -11
  787. package/src/mapper/delete/DeleteState.ts +3 -3
  788. package/src/mapper/delete/index.ts +2 -2
  789. package/src/mapper/index.ts +15 -15
  790. package/src/mapper/insert/InsertBuilder.ts +5 -5
  791. package/src/mapper/insert/InsertBuilderFactory.ts +3 -3
  792. package/src/mapper/insert/Inserter.ts +8 -8
  793. package/src/mapper/insert/SqlCreateInputProcessor.ts +10 -10
  794. package/src/mapper/insert/index.ts +4 -4
  795. package/src/mapper/insert/relations/ManyHasManyCreateInputProcessor.ts +6 -6
  796. package/src/mapper/insert/relations/ManyHasOneCreateInputProcessor.ts +7 -7
  797. package/src/mapper/insert/relations/OneHasManyCreateInputProcessor.ts +5 -5
  798. package/src/mapper/insert/relations/OneHasOneInverseCreateInputProcessor.ts +6 -6
  799. package/src/mapper/insert/relations/OneHasOneOwningCreateInputProcessor.ts +7 -7
  800. package/src/mapper/select/ConditionBuilder.ts +3 -1
  801. package/src/mapper/select/JoinBuilder.ts +2 -2
  802. package/src/mapper/select/JoinVisitor.ts +1 -1
  803. package/src/mapper/select/OrderByBuilder.ts +3 -3
  804. package/src/mapper/select/OrderByHelper.ts +1 -1
  805. package/src/mapper/select/RelationFetcher.ts +9 -9
  806. package/src/mapper/select/SelectBuilder.ts +11 -11
  807. package/src/mapper/select/SelectBuilderFactory.ts +2 -2
  808. package/src/mapper/select/SelectExecutionHandler.ts +4 -4
  809. package/src/mapper/select/SelectHydrator.ts +2 -2
  810. package/src/mapper/select/WhereBuilder.ts +5 -5
  811. package/src/mapper/select/handlers/FieldsVisitor.ts +22 -7
  812. package/src/mapper/select/handlers/FieldsVisitorFactory.ts +5 -5
  813. package/src/mapper/select/handlers/MetaHandler.ts +5 -5
  814. package/src/mapper/select/handlers/index.ts +3 -3
  815. package/src/mapper/select/index.ts +13 -13
  816. package/src/mapper/select/optimizer/ConditionOptimizer.ts +1 -1
  817. package/src/mapper/select/optimizer/WhereOptimizer.ts +3 -3
  818. package/src/mapper/types.ts +1 -1
  819. package/src/mapper/update/SqlUpdateInputProcessor.ts +11 -11
  820. package/src/mapper/update/UpdateBuilder.ts +6 -6
  821. package/src/mapper/update/UpdateBuilderFactory.ts +3 -3
  822. package/src/mapper/update/Updater.ts +8 -8
  823. package/src/mapper/update/index.ts +4 -4
  824. package/src/mapper/update/relations/ManyHasManyUpdateInputProcessor.ts +6 -6
  825. package/src/mapper/update/relations/ManyHasOneUpdateInputProcessor.ts +7 -7
  826. package/src/mapper/update/relations/OneHasManyUpdateInputProcessor.ts +6 -6
  827. package/src/mapper/update/relations/OneHasOneInverseUpdateInputProcessor.ts +6 -6
  828. package/src/mapper/update/relations/OneHasOneOwningUpdateInputProcessor.ts +7 -7
  829. package/src/resolvers/GraphQlQueryAstFactory.ts +2 -2
  830. package/src/resolvers/MutationResolver.ts +9 -9
  831. package/src/resolvers/ReadHelpers.ts +5 -5
  832. package/src/resolvers/ReadResolver.ts +4 -4
  833. package/src/resolvers/RefreshViewResolver.ts +1 -1
  834. package/src/resolvers/ValidationResolver.ts +3 -3
  835. package/src/resolvers/index.ts +4 -4
  836. package/src/schema/ColumnTypeResolver.ts +6 -4
  837. package/src/schema/ConditionTypeProvider.ts +7 -4
  838. package/src/schema/CustomTypesProvider.ts +37 -0
  839. package/src/schema/EntityTypeProvider.ts +10 -10
  840. package/src/schema/EnumsProvider.ts +1 -1
  841. package/src/schema/FieldAccessVisitor.ts +1 -1
  842. package/src/schema/GraphQlSchemaBuilder.ts +6 -6
  843. package/src/schema/GraphQlSchemaBuilderFactory.ts +30 -30
  844. package/src/schema/MutationProvider.ts +9 -9
  845. package/src/schema/OperationExtension.ts +1 -1
  846. package/src/schema/OrderByTypeProvider.ts +4 -4
  847. package/src/schema/PaginatedFieldConfigFactory.ts +3 -3
  848. package/src/schema/QueryProvider.ts +8 -8
  849. package/src/schema/RefreshViewMutationProvider.ts +2 -2
  850. package/src/schema/ValidationQueriesProvider.ts +5 -5
  851. package/src/schema/WhereTypeProvider.ts +7 -7
  852. package/src/schema/entities/FieldArgsVisitor.ts +2 -2
  853. package/src/schema/entities/FieldTypeVisitor.ts +4 -4
  854. package/src/schema/entities/index.ts +2 -2
  855. package/src/schema/index.ts +18 -18
  856. package/src/schema/mutations/ConnectOrCreateRelationInputProvider.ts +5 -5
  857. package/src/schema/mutations/CreateEntityInputFieldVisitor.ts +3 -3
  858. package/src/schema/mutations/CreateEntityRelationAllowedOperationsVisitor.ts +2 -2
  859. package/src/schema/mutations/CreateEntityRelationInputFieldVisitor.ts +7 -7
  860. package/src/schema/mutations/CreateEntityRelationInputProvider.ts +2 -2
  861. package/src/schema/mutations/EntityInputProvider.ts +4 -4
  862. package/src/schema/mutations/UpdateEntityInputFieldVisitor.ts +3 -3
  863. package/src/schema/mutations/UpdateEntityRelationAllowedOperationsVisitor.ts +1 -1
  864. package/src/schema/mutations/UpdateEntityRelationInputFieldVisitor.ts +8 -8
  865. package/src/schema/mutations/UpdateEntityRelationInputProvider.ts +2 -2
  866. package/src/schema/mutations/index.ts +9 -9
  867. package/src/schema/utils.ts +1 -1
  868. package/src/types.ts +1 -1
  869. package/src/utils/accessor.ts +2 -2
  870. package/src/utils/index.ts +13 -13
  871. package/src/utils/paginationUtils.ts +1 -1
  872. package/src/utils/singletonFactory.ts +1 -1
  873. package/tests/cases/bugs/bug-filter-or.test.ts +3 -3
  874. package/tests/cases/bugs/bug-update-by-nested-unique.test.ts +3 -3
  875. package/tests/cases/bugs/bug102.test.ts +3 -3
  876. package/tests/cases/integration/graphQlRequests/delete/aclDelete.test.ts +3 -3
  877. package/tests/cases/integration/graphQlRequests/delete/additionalDeleteFilter.test.ts +3 -3
  878. package/tests/cases/integration/graphQlRequests/delete/cascadeDelete.test.ts +3 -3
  879. package/tests/cases/integration/graphQlRequests/delete/deleteById.test.ts +3 -3
  880. package/tests/cases/integration/graphQlRequests/delete/orphanRemoval.test.ts +3 -3
  881. package/tests/cases/integration/graphQlRequests/delete/restrictOnDelete.test.ts +3 -3
  882. package/tests/cases/integration/graphQlRequests/delete/setNullOnDelete.test.ts +3 -3
  883. package/tests/cases/integration/graphQlRequests/insert/acl/setField.test.ts +3 -3
  884. package/tests/cases/integration/graphQlRequests/insert/aclInsert.test.ts +3 -3
  885. package/tests/cases/integration/graphQlRequests/insert/basicInsert.test.ts +3 -3
  886. package/tests/cases/integration/graphQlRequests/insert/insertCustomId.test.ts +3 -3
  887. package/tests/cases/integration/graphQlRequests/insert/jsonInsert.test.ts +3 -3
  888. package/tests/cases/integration/graphQlRequests/insert/manyHasManyInverse/create.test.ts +3 -3
  889. package/tests/cases/integration/graphQlRequests/insert/manyHasManyOwning/create.test.ts +3 -3
  890. package/tests/cases/integration/graphQlRequests/insert/manyHasOne/connectOrCreate.test.ts +3 -3
  891. package/tests/cases/integration/graphQlRequests/insert/manyHasOne/create.test.ts +3 -3
  892. package/tests/cases/integration/graphQlRequests/insert/numericColumn.test.ts +110 -0
  893. package/tests/cases/integration/graphQlRequests/insert/oneHasMany/connect.test.ts +3 -3
  894. package/tests/cases/integration/graphQlRequests/insert/oneHasMany/create.test.ts +3 -3
  895. package/tests/cases/integration/graphQlRequests/insert/oneHasOneInverse/create.test.ts +3 -3
  896. package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/create.test.ts +3 -3
  897. package/tests/cases/integration/graphQlRequests/insert/oneHasOneOwning/empty.test.ts +3 -3
  898. package/tests/cases/integration/graphQlRequests/insert/subOperationFail.test.ts +3 -3
  899. package/tests/cases/integration/graphQlRequests/insert/validation/toBeFixed.test.ts +3 -3
  900. package/tests/cases/integration/graphQlRequests/query/acl/differentRowAndFieldPredicate.test.ts +3 -3
  901. package/tests/cases/integration/graphQlRequests/query/acl/fieldRestrictedByLocale.test.ts +3 -3
  902. package/tests/cases/integration/graphQlRequests/query/acl/isNullAcl.test.ts +4 -4
  903. package/tests/cases/integration/graphQlRequests/query/acl/nestedPredicate.test.ts +3 -3
  904. package/tests/cases/integration/graphQlRequests/query/acl/orPredicate.test.ts +3 -3
  905. package/tests/cases/integration/graphQlRequests/query/acl/predicateElimination.test.ts +4 -4
  906. package/tests/cases/integration/graphQlRequests/query/acl/relationAcl.test.ts +4 -4
  907. package/tests/cases/integration/graphQlRequests/query/acl/rowPredicateSubset.test.ts +4 -4
  908. package/tests/cases/integration/graphQlRequests/query/acl/sameRowAndFieldPredicate.test.ts +3 -3
  909. package/tests/cases/integration/graphQlRequests/query/filter/backReferencedFilter.test.ts +3 -3
  910. package/tests/cases/integration/graphQlRequests/query/filter/complexCondition.test.ts +3 -3
  911. package/tests/cases/integration/graphQlRequests/query/filter/composedFilter.test.ts +3 -3
  912. package/tests/cases/integration/graphQlRequests/query/filter/containsQuery.test.ts +3 -3
  913. package/tests/cases/integration/graphQlRequests/query/filter/manyHasManyOwnerRelation.test.ts +3 -3
  914. package/tests/cases/integration/graphQlRequests/query/filter/manyHasOneRelation.test.ts +3 -3
  915. package/tests/cases/integration/graphQlRequests/query/filter/numericFilter.test.ts +92 -0
  916. package/tests/cases/integration/graphQlRequests/query/filter/oneHasManyRelation.test.ts +3 -3
  917. package/tests/cases/integration/graphQlRequests/query/filter/similarQuery.test.ts +72 -0
  918. package/tests/cases/integration/graphQlRequests/query/formatting/dateFormat.test.ts +135 -4
  919. package/tests/cases/integration/graphQlRequests/query/formatting/numericFormat.test.ts +68 -0
  920. package/tests/cases/integration/graphQlRequests/query/formatting/numericList.test.ts +41 -0
  921. package/tests/cases/integration/graphQlRequests/query/graphqlFeatures/alias.test.ts +3 -3
  922. package/tests/cases/integration/graphQlRequests/query/graphqlFeatures/fragments.test.ts +3 -3
  923. package/tests/cases/integration/graphQlRequests/query/misc/aliasedType.test.ts +3 -3
  924. package/tests/cases/integration/graphQlRequests/query/misc/longAliasHash.test.ts +3 -3
  925. package/tests/cases/integration/graphQlRequests/query/misc/reducedHasMany.test.ts +3 -3
  926. package/tests/cases/integration/graphQlRequests/query/misc/transaction.test.ts +3 -3
  927. package/tests/cases/integration/graphQlRequests/query/pagination/hasManyLimit.test.ts +3 -3
  928. package/tests/cases/integration/graphQlRequests/query/pagination/paginate.test.ts +3 -3
  929. package/tests/cases/integration/graphQlRequests/query/pagination/paginateAliased.test.ts +3 -3
  930. package/tests/cases/integration/graphQlRequests/query/pagination/simpleLimit.test.ts +3 -3
  931. package/tests/cases/integration/graphQlRequests/query/relations/advanced.test.ts +3 -3
  932. package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyInverse.test.ts +3 -3
  933. package/tests/cases/integration/graphQlRequests/query/relations/manyHasManyOwning.test.ts +3 -3
  934. package/tests/cases/integration/graphQlRequests/query/relations/manyHasOne.test.ts +3 -3
  935. package/tests/cases/integration/graphQlRequests/query/relations/oneHasMany.test.ts +3 -3
  936. package/tests/cases/integration/graphQlRequests/query/relations/oneHasOneInverse.test.ts +3 -3
  937. package/tests/cases/integration/graphQlRequests/query/relations/oneHasOneOwner.test.ts +3 -3
  938. package/tests/cases/integration/graphQlRequests/query/sorting/byRelations.test.ts +3 -3
  939. package/tests/cases/integration/graphQlRequests/query/sorting/defaultOrdering.test.ts +3 -3
  940. package/tests/cases/integration/graphQlRequests/query/sorting/orderBy.test.ts +3 -3
  941. package/tests/cases/integration/graphQlRequests/query/sorting/randomSort.test.ts +3 -3
  942. package/tests/cases/integration/graphQlRequests/query/sorting/sortNulls.test.ts +2 -2
  943. package/tests/cases/integration/graphQlRequests/query/sorting/sortedHasMany.test.ts +3 -3
  944. package/tests/cases/integration/graphQlRequests/query/unique/basicQueryById.test.ts +3 -3
  945. package/tests/cases/integration/graphQlRequests/query/unique/composedUnique.test.ts +3 -3
  946. package/tests/cases/integration/graphQlRequests/query/unique/oneHasManyUnique.test.ts +3 -3
  947. package/tests/cases/integration/graphQlRequests/query/unique/uniqueWithFilter.test.ts +3 -3
  948. package/tests/cases/integration/graphQlRequests/query/view/view.test.ts +3 -3
  949. package/tests/cases/integration/graphQlRequests/update/acl/aclUpdate.test.ts +3 -3
  950. package/tests/cases/integration/graphQlRequests/update/additionalFilter.test.ts +3 -3
  951. package/tests/cases/integration/graphQlRequests/update/basic/columnUpdate.test.ts +3 -3
  952. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/connect.test.ts +4 -4
  953. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/create.test.ts +4 -4
  954. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/delete.test.ts +4 -4
  955. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/disconnect.test.ts +4 -4
  956. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/update.test.ts +4 -4
  957. package/tests/cases/integration/graphQlRequests/update/manyHasManyInverse/upsert.test.ts +4 -4
  958. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connect.test.ts +4 -4
  959. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/connectOrCreate.test.ts +4 -4
  960. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/create.test.ts +4 -4
  961. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/delete.test.ts +4 -4
  962. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/disconnect.test.ts +4 -4
  963. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/update.test.ts +4 -4
  964. package/tests/cases/integration/graphQlRequests/update/manyHasManyOwning/upsert.test.ts +4 -4
  965. package/tests/cases/integration/graphQlRequests/update/manyHasOne/connect.test.ts +4 -4
  966. package/tests/cases/integration/graphQlRequests/update/manyHasOne/create.test.ts +4 -4
  967. package/tests/cases/integration/graphQlRequests/update/manyHasOne/delete.test.ts +4 -4
  968. package/tests/cases/integration/graphQlRequests/update/manyHasOne/disconnect.test.ts +4 -4
  969. package/tests/cases/integration/graphQlRequests/update/manyHasOne/update.test.ts +4 -4
  970. package/tests/cases/integration/graphQlRequests/update/manyHasOne/upsert.test.ts +4 -4
  971. package/tests/cases/integration/graphQlRequests/update/oneHasMany/combination.test.ts +4 -4
  972. package/tests/cases/integration/graphQlRequests/update/oneHasMany/connect.test.ts +4 -4
  973. package/tests/cases/integration/graphQlRequests/update/oneHasMany/connectOrCreate.test.ts +4 -4
  974. package/tests/cases/integration/graphQlRequests/update/oneHasMany/create.test.ts +4 -4
  975. package/tests/cases/integration/graphQlRequests/update/oneHasMany/delete.test.ts +4 -4
  976. package/tests/cases/integration/graphQlRequests/update/oneHasMany/disconnect.test.ts +4 -4
  977. package/tests/cases/integration/graphQlRequests/update/oneHasMany/update.test.ts +4 -4
  978. package/tests/cases/integration/graphQlRequests/update/oneHasMany/upsert.test.ts +4 -4
  979. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/connect.test.ts +4 -4
  980. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/create.test.ts +4 -4
  981. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/delete.test.ts +4 -4
  982. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/disconnect.test.ts +4 -4
  983. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/update.test.ts +4 -4
  984. package/tests/cases/integration/graphQlRequests/update/oneHasOneInverse/upsert.test.ts +4 -4
  985. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connect.test.ts +4 -4
  986. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/connectOrCreate.test.ts +4 -4
  987. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/create.test.ts +4 -4
  988. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/delete.test.ts +4 -4
  989. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/disconnect.test.ts +4 -4
  990. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/update.test.ts +4 -4
  991. package/tests/cases/integration/graphQlRequests/update/oneHasOneOwning/upsert.test.ts +4 -4
  992. package/tests/cases/integration/graphQlRequests/update/queryPortal.test.ts +3 -3
  993. package/tests/cases/integration/graphQlRequests/update/transaction.test.ts +3 -3
  994. package/tests/cases/integration/graphQlRequests/update/validation/toBeFixed.test.ts +3 -3
  995. package/tests/cases/integration/graphQlRequests/upsert/basicUpsert.test.ts +3 -3
  996. package/tests/cases/integration/graphQlRequests/validation/conditions.test.ts +1 -1
  997. package/tests/cases/integration/graphQlRequests/validation/nestedValidation.test.ts +2 -2
  998. package/tests/cases/integration/graphQlRequests/validation/optionalAssert.test.ts +2 -2
  999. package/tests/cases/integration/graphQlRequests/validation/required.test.ts +2 -2
  1000. package/tests/cases/integration/graphQlRequests/validation/requiredWhen.test.ts +2 -2
  1001. package/tests/cases/integration/graphQlRequests/validation/rules/andRule.test.ts +1 -1
  1002. package/tests/cases/integration/graphQlRequests/validation/rules/lengthRangeRule.test.ts +1 -1
  1003. package/tests/cases/integration/graphQlRequests/validation/rules/maxLengthRule.test.ts +1 -1
  1004. package/tests/cases/integration/graphQlRequests/validation/rules/minLength.test.ts +1 -1
  1005. package/tests/cases/integration/graphQlRequests/validation/rules/notEmptyRule.test.ts +1 -1
  1006. package/tests/cases/integration/graphQlRequests/validation/rules/notRule.test.ts +1 -1
  1007. package/tests/cases/integration/graphQlRequests/validation/rules/orRule.test.ts +1 -1
  1008. package/tests/cases/integration/graphQlRequests/validation/rules/patternRule.test.ts +1 -1
  1009. package/tests/cases/integration/graphQlRequests/validation/rules/rangeRule.test.ts +1 -1
  1010. package/tests/cases/integration/graphQlRequests/validation/utils.ts +2 -2
  1011. package/tests/cases/integration/graphQlSchema/graphQlSchemaBuilder.test.ts +2 -2
  1012. package/tests/cases/integration/graphQlSchema/schema-acl-allowed.gql +2 -0
  1013. package/tests/cases/integration/graphQlSchema/schema-acl-predicate.gql +2 -0
  1014. package/tests/cases/integration/graphQlSchema/schema-acl-predicate2.gql +2 -0
  1015. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-create.gql +2 -0
  1016. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-delete.gql +2 -0
  1017. package/tests/cases/integration/graphQlSchema/schema-acl-restricted-update.gql +2 -0
  1018. package/tests/cases/integration/graphQlSchema/schema-acl.gql +2 -0
  1019. package/tests/cases/integration/graphQlSchema/schema-aliased-type.gql +2 -0
  1020. package/tests/cases/integration/graphQlSchema/schema-basic.gql +2 -0
  1021. package/tests/cases/integration/graphQlSchema/schema-bug-66.gql +2 -0
  1022. package/tests/cases/integration/graphQlSchema/schema-column-types.gql +2 -0
  1023. package/tests/cases/integration/graphQlSchema/schema-custom-primary.gql +2 -0
  1024. package/tests/cases/integration/graphQlSchema/schema-has-many-reduction.gql +2 -0
  1025. package/tests/cases/integration/graphQlSchema/schema-new-builder.gql +2 -0
  1026. package/tests/cases/integration/graphQlSchema/schema-no-root-ops.gql +2 -0
  1027. package/tests/cases/integration/graphQlSchema/schema-read-only.gql +2 -0
  1028. package/tests/cases/integration/graphQlSchema/schema-view-entity.gql +2 -0
  1029. package/tests/cases/unit/aclVariablesFactory.test.ts +2 -2
  1030. package/tests/cases/unit/conditionOptimizer.test.ts +1 -1
  1031. package/tests/cases/unit/decimalType.test.ts +65 -0
  1032. package/tests/cases/unit/inputPreValidator.test.ts +101 -6
  1033. package/tests/cases/unit/inputValidation.test.ts +3 -3
  1034. package/tests/cases/unit/jsonSchemaValidator.test.ts +115 -0
  1035. package/tests/cases/unit/orderbyHelper.test.ts +3 -3
  1036. package/tests/cases/unit/permissionMerger.test.ts +2 -2
  1037. package/tests/cases/unit/predicatesFactory.test.ts +2 -2
  1038. package/tests/cases/unit/predicatesInjector.test.ts +5 -5
  1039. package/tests/cases/unit/uuidType.test.ts +1 -1
  1040. package/tests/cases/unit/variableInjector.test.ts +2 -2
  1041. package/tests/cases/unit/whereBuilder.test.ts +4 -4
  1042. package/tests/cases/unit/whereOptimizer.test.ts +3 -3
  1043. package/tests/src/test.ts +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQlQueryAstFactory.js","sources":["../../../../../packages/engine-content-api/src/resolvers/GraphQlQueryAstFactory.ts"],"sourcesContent":["import { isIt, ResolveInfoUtils } from '../utils'\nimport {\n\tFieldNode as GraphQlFieldNode,\n\tFragmentSpreadNode,\n\tgetArgumentValues,\n\tGraphQLInterfaceType,\n\tGraphQLObjectType,\n\tGraphQLOutputType,\n\tGraphQLResolveInfo,\n\tisInterfaceType,\n\tisListType,\n\tisNonNullType,\n\tisObjectType,\n\tKind,\n\tSelectionSetNode,\n} from 'graphql'\nimport { FieldNode, ObjectNode } from '../inputProcessing'\nimport { isDeepStrictEqual } from 'node:util'\n\ntype NodeFilter = (node: GraphQlFieldNode, path: string[]) => boolean\ntype AnyNode = ObjectNode | FieldNode\n\nexport class GraphQlQueryAstFactory {\n\tpublic create<Args = any>(info: GraphQLResolveInfo, filter?: NodeFilter): ObjectNode<Args> {\n\t\tconst node = ResolveInfoUtils.extractFieldNode(info)\n\t\tconst parentType = info.parentType\n\n\t\treturn this.createFromNode(info, parentType as GraphQLObjectType, node, [], filter || (() => true)) as ObjectNode\n\t}\n\n\tprivate createFromNode(\n\t\tinfo: GraphQLResolveInfo,\n\t\tparentType: GraphQLObjectType | GraphQLInterfaceType,\n\t\tnode: GraphQlFieldNode,\n\t\tpath: string[],\n\t\tfilter: NodeFilter,\n\t): ObjectNode | FieldNode | null {\n\t\tif (!filter(node, path)) {\n\t\t\treturn null\n\t\t}\n\t\tconst name = node.name.value\n\t\tconst alias = node.alias ? node.alias.value : name\n\t\tif (!node.selectionSet) {\n\t\t\treturn new FieldNode(name, alias, {})\n\t\t}\n\t\tconst field = parentType.getFields()[name]\n\t\tconst type = field.type\n\t\tconst resolvedType = GraphQlQueryAstFactory.resolveObjectType(type)\n\n\t\tconst fields: AnyNode[] = this.processSelectionSet(info, resolvedType, node.selectionSet, [...path, alias], filter)\n\n\t\treturn new ObjectNode(\n\t\t\tname,\n\t\t\talias,\n\t\t\tfields,\n\t\t\tgetArgumentValues(field, node, info.variableValues),\n\t\t\tfield.extensions || {},\n\t\t\tpath,\n\t\t)\n\t}\n\n\tprivate processSelectionSet(\n\t\tinfo: GraphQLResolveInfo,\n\t\tparentType: GraphQLObjectType | GraphQLInterfaceType,\n\t\tselectionSet: SelectionSetNode,\n\t\tpath: string[],\n\t\tfilter: NodeFilter,\n\t): AnyNode[] {\n\t\tconst fields: ObjectNode | FieldNode[] = []\n\t\tfor (const subNode of selectionSet.selections) {\n\t\t\tif (isIt<GraphQlFieldNode>(subNode, 'kind', Kind.FIELD)) {\n\t\t\t\tconst field = this.createFromNode(info, parentType, subNode, path, filter)\n\t\t\t\tif (field === null) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfields.push(field)\n\t\t\t} else if (isIt<FragmentSpreadNode>(subNode, 'kind', Kind.FRAGMENT_SPREAD)) {\n\t\t\t\tconst fragmentDefinition = info.fragments[subNode.name.value]\n\t\t\t\tif (!fragmentDefinition) {\n\t\t\t\t\tthrow new Error(`GraphQlQueryAstFactory: Fragment definition ${subNode.name.value} not found`)\n\t\t\t\t}\n\t\t\t\tconst typeName = fragmentDefinition.typeCondition.name.value\n\t\t\t\tconst subField = info.schema.getType(typeName)\n\t\t\t\tif (!isObjectType(subField) && !isInterfaceType(subField)) {\n\t\t\t\t\tthrow new Error('GraphQlQueryAstFactory: subfield is expected to be GraphQLObjectType or GraphQLInterfaceType')\n\t\t\t\t}\n\t\t\t\tconst fragmentSelection = this.processSelectionSet(\n\t\t\t\t\tinfo,\n\t\t\t\t\tsubField,\n\t\t\t\t\tfragmentDefinition.selectionSet,\n\t\t\t\t\tpath,\n\t\t\t\t\tfilter,\n\t\t\t\t)\n\t\t\t\tfields.push(...fragmentSelection)\n\t\t\t} else {\n\t\t\t\tthrow new Error('InlineFragment are not supported yet')\n\t\t\t}\n\t\t}\n\t\treturn GraphQlQueryAstFactory.mergeFieldList(fields)\n\t}\n\n\tpublic static resolveObjectType(type: GraphQLOutputType): GraphQLObjectType {\n\t\tif (isObjectType(type)) {\n\t\t\treturn type\n\t\t}\n\t\tif (isListType(type)) {\n\t\t\treturn GraphQlQueryAstFactory.resolveObjectType(type.ofType)\n\t\t}\n\t\tif (isNonNullType(type)) {\n\t\t\treturn GraphQlQueryAstFactory.resolveObjectType(type.ofType)\n\t\t}\n\t\tthrow new Error(GraphQlQueryAstFactory.getValueType(type))\n\t}\n\n\tprivate static getValueType(val: any): string {\n\t\tif (typeof val === 'object' && val.constructor) {\n\t\t\treturn 'Object of type ' + val.constructor.name + ' is not supported'\n\t\t}\n\t\treturn typeof val + ' is not supported'\n\t}\n\n\tprivate static mergeFieldList(nodes: AnyNode[]): AnyNode[] {\n\t\tconst result: Record<string, AnyNode> = {}\n\t\tfor (const node of nodes) {\n\t\t\tresult[node.alias] = result[node.alias] ? GraphQlQueryAstFactory.mergeFields(result[node.alias], node) : node\n\t\t}\n\t\treturn Object.values(result)\n\t}\n\n\tprivate static mergeFields(left: AnyNode, right: AnyNode): AnyNode {\n\t\tif (left.constructor !== right.constructor) {\n\t\t\tthrow new Error(`GraphQlQueryAstFactory: cannot merge ${left.constructor.name} and ${right.constructor.name}`)\n\t\t}\n\t\tif (left.name !== right.name) {\n\t\t\tthrow new Error(`GraphQlQueryAstFactory: incompatible fields ${left.name} and ${right.name}`)\n\t\t}\n\t\tif (left instanceof ObjectNode && right instanceof ObjectNode) {\n\t\t\tif (!isDeepStrictEqual(left.args, right.args)) {\n\t\t\t\tthrow new Error(`GraphQlQueryAstFactory: incompatible args`)\n\t\t\t}\n\t\t\tconst fields = GraphQlQueryAstFactory.mergeFieldList([...left.fields, ...right.fields])\n\t\t\treturn new ObjectNode(left.name, left.alias, fields, left.args, left.extensions, left.path)\n\t\t}\n\t\treturn left\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphQlQueryAstFactory.js","sources":["../../../../../packages/engine-content-api/src/resolvers/GraphQlQueryAstFactory.ts"],"sourcesContent":["import { isIt, ResolveInfoUtils } from '../utils/index.js'\nimport {\n\tFieldNode as GraphQlFieldNode,\n\tFragmentSpreadNode,\n\tgetArgumentValues,\n\tGraphQLInterfaceType,\n\tGraphQLObjectType,\n\tGraphQLOutputType,\n\tGraphQLResolveInfo,\n\tisInterfaceType,\n\tisListType,\n\tisNonNullType,\n\tisObjectType,\n\tKind,\n\tSelectionSetNode,\n} from 'graphql'\nimport { FieldNode, ObjectNode } from '../inputProcessing/index.js'\nimport { isDeepStrictEqual } from 'node:util'\n\ntype NodeFilter = (node: GraphQlFieldNode, path: string[]) => boolean\ntype AnyNode = ObjectNode | FieldNode\n\nexport class GraphQlQueryAstFactory {\n\tpublic create<Args = any>(info: GraphQLResolveInfo, filter?: NodeFilter): ObjectNode<Args> {\n\t\tconst node = ResolveInfoUtils.extractFieldNode(info)\n\t\tconst parentType = info.parentType\n\n\t\treturn this.createFromNode(info, parentType as GraphQLObjectType, node, [], filter || (() => true)) as ObjectNode\n\t}\n\n\tprivate createFromNode(\n\t\tinfo: GraphQLResolveInfo,\n\t\tparentType: GraphQLObjectType | GraphQLInterfaceType,\n\t\tnode: GraphQlFieldNode,\n\t\tpath: string[],\n\t\tfilter: NodeFilter,\n\t): ObjectNode | FieldNode | null {\n\t\tif (!filter(node, path)) {\n\t\t\treturn null\n\t\t}\n\t\tconst name = node.name.value\n\t\tconst alias = node.alias ? node.alias.value : name\n\t\tif (!node.selectionSet) {\n\t\t\treturn new FieldNode(name, alias, {})\n\t\t}\n\t\tconst field = parentType.getFields()[name]\n\t\tconst type = field.type\n\t\tconst resolvedType = GraphQlQueryAstFactory.resolveObjectType(type)\n\n\t\tconst fields: AnyNode[] = this.processSelectionSet(info, resolvedType, node.selectionSet, [...path, alias], filter)\n\n\t\treturn new ObjectNode(\n\t\t\tname,\n\t\t\talias,\n\t\t\tfields,\n\t\t\tgetArgumentValues(field, node, info.variableValues),\n\t\t\tfield.extensions || {},\n\t\t\tpath,\n\t\t)\n\t}\n\n\tprivate processSelectionSet(\n\t\tinfo: GraphQLResolveInfo,\n\t\tparentType: GraphQLObjectType | GraphQLInterfaceType,\n\t\tselectionSet: SelectionSetNode,\n\t\tpath: string[],\n\t\tfilter: NodeFilter,\n\t): AnyNode[] {\n\t\tconst fields: ObjectNode | FieldNode[] = []\n\t\tfor (const subNode of selectionSet.selections) {\n\t\t\tif (isIt<GraphQlFieldNode>(subNode, 'kind', Kind.FIELD)) {\n\t\t\t\tconst field = this.createFromNode(info, parentType, subNode, path, filter)\n\t\t\t\tif (field === null) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tfields.push(field)\n\t\t\t} else if (isIt<FragmentSpreadNode>(subNode, 'kind', Kind.FRAGMENT_SPREAD)) {\n\t\t\t\tconst fragmentDefinition = info.fragments[subNode.name.value]\n\t\t\t\tif (!fragmentDefinition) {\n\t\t\t\t\tthrow new Error(`GraphQlQueryAstFactory: Fragment definition ${subNode.name.value} not found`)\n\t\t\t\t}\n\t\t\t\tconst typeName = fragmentDefinition.typeCondition.name.value\n\t\t\t\tconst subField = info.schema.getType(typeName)\n\t\t\t\tif (!isObjectType(subField) && !isInterfaceType(subField)) {\n\t\t\t\t\tthrow new Error('GraphQlQueryAstFactory: subfield is expected to be GraphQLObjectType or GraphQLInterfaceType')\n\t\t\t\t}\n\t\t\t\tconst fragmentSelection = this.processSelectionSet(\n\t\t\t\t\tinfo,\n\t\t\t\t\tsubField,\n\t\t\t\t\tfragmentDefinition.selectionSet,\n\t\t\t\t\tpath,\n\t\t\t\t\tfilter,\n\t\t\t\t)\n\t\t\t\tfields.push(...fragmentSelection)\n\t\t\t} else {\n\t\t\t\tthrow new Error('InlineFragment are not supported yet')\n\t\t\t}\n\t\t}\n\t\treturn GraphQlQueryAstFactory.mergeFieldList(fields)\n\t}\n\n\tpublic static resolveObjectType(type: GraphQLOutputType): GraphQLObjectType {\n\t\tif (isObjectType(type)) {\n\t\t\treturn type\n\t\t}\n\t\tif (isListType(type)) {\n\t\t\treturn GraphQlQueryAstFactory.resolveObjectType(type.ofType)\n\t\t}\n\t\tif (isNonNullType(type)) {\n\t\t\treturn GraphQlQueryAstFactory.resolveObjectType(type.ofType)\n\t\t}\n\t\tthrow new Error(GraphQlQueryAstFactory.getValueType(type))\n\t}\n\n\tprivate static getValueType(val: any): string {\n\t\tif (typeof val === 'object' && val.constructor) {\n\t\t\treturn 'Object of type ' + val.constructor.name + ' is not supported'\n\t\t}\n\t\treturn typeof val + ' is not supported'\n\t}\n\n\tprivate static mergeFieldList(nodes: AnyNode[]): AnyNode[] {\n\t\tconst result: Record<string, AnyNode> = {}\n\t\tfor (const node of nodes) {\n\t\t\tresult[node.alias] = result[node.alias] ? GraphQlQueryAstFactory.mergeFields(result[node.alias], node) : node\n\t\t}\n\t\treturn Object.values(result)\n\t}\n\n\tprivate static mergeFields(left: AnyNode, right: AnyNode): AnyNode {\n\t\tif (left.constructor !== right.constructor) {\n\t\t\tthrow new Error(`GraphQlQueryAstFactory: cannot merge ${left.constructor.name} and ${right.constructor.name}`)\n\t\t}\n\t\tif (left.name !== right.name) {\n\t\t\tthrow new Error(`GraphQlQueryAstFactory: incompatible fields ${left.name} and ${right.name}`)\n\t\t}\n\t\tif (left instanceof ObjectNode && right instanceof ObjectNode) {\n\t\t\tif (!isDeepStrictEqual(left.args, right.args)) {\n\t\t\t\tthrow new Error(`GraphQlQueryAstFactory: incompatible args`)\n\t\t\t}\n\t\t\tconst fields = GraphQlQueryAstFactory.mergeFieldList([...left.fields, ...right.fields])\n\t\t\treturn new ObjectNode(left.name, left.alias, fields, left.args, left.extensions, left.path)\n\t\t}\n\t\treturn left\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MutationResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper'\nimport { ValidationResolver } from './ValidationResolver'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ImplementationException } from '../exception'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator } from '../input-validation'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations } from './ReadHelpers'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value))\n\t\t\t\t|| (path.length === 2 && node.name.value === 'node')\n\t\t\t\t|| path.length > 2\n\t\t\t\t|| path.length === 0\n\t\t\t\t|| (path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1\n\t\t\t&& (result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\t\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t}))\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n'\n\t\t\t+ validationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n'\n\t\t\t+ executionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["schema","GraphQlQueryAstFactory","it","logger","ObjectNode","ImplementationException","readOperationMeta","Operation","assertNever","executeReadOperations","validationErrors","ValidationResolver","getInsertPrimary","MutationResultType","retryTransaction","BeforeCommitEvent","AfterCommitEvent","convertError","MutationResultHint","path","ConstraintType","Result","InputErrorKind"],"mappings":"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"}
1
+ {"version":3,"file":"MutationResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper/index.js'\nimport { ValidationResolver } from './ValidationResolver.js'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory.js'\nimport { ImplementationException } from '../exception.js'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema/index.js'\nimport { assertNever } from '../utils/index.js'\nimport { InputPreValidator } from '../input-validation/index.js'\nimport { ObjectNode } from '../inputProcessing/index.js'\nimport { executeReadOperations } from './ReadHelpers.js'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value))\n\t\t\t\t|| (path.length === 2 && node.name.value === 'node')\n\t\t\t\t|| path.length > 2\n\t\t\t\t|| path.length === 0\n\t\t\t\t|| (path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1\n\t\t\t&& (result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\t\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t}))\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n'\n\t\t\t+ validationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n'\n\t\t\t+ executionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["schema","GraphQlQueryAstFactory","it","logger","ObjectNode","ImplementationException","readOperationMeta","Operation","assertNever","executeReadOperations","validationErrors","ValidationResolver","getInsertPrimary","MutationResultType","retryTransaction","BeforeCommitEvent","AfterCommitEvent","convertError","MutationResultHint","path","ConstraintType","Result","InputErrorKind"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MutationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper'\nimport { ValidationResolver } from './ValidationResolver'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ImplementationException } from '../exception'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator } from '../input-validation'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations } from './ReadHelpers'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value))\n\t\t\t\t|| (path.length === 2 && node.name.value === 'node')\n\t\t\t\t|| path.length > 2\n\t\t\t\t|| path.length === 0\n\t\t\t\t|| (path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1\n\t\t\t&& (result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\t\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t}))\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n'\n\t\t\t+ validationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n'\n\t\t\t+ executionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["it","validationErrors","path"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAkCO,MAAM,iBAAiB;AAAA,EAC7B,YACkB,QACA,eACA,gBACA,wBACA,wBAChB;AALgB,SAAA,SAAA;AACA,SAAA,gBAAA;AACA,SAAA,iBAAA;AACA,SAAA,yBAAA;AACA,SAAA,yBAAA;AAAA,EACf;AAAA,EAEH,MAAa,mBAAmB,MAA0B,SAAgE;AACzH,UAAM,WAAW,KAAK,uBAAuB,OAAO,MAAM,CAAC,MAAM,SAAS;AACzE,aACE,KAAK,WAAW,KAAK,CAAC,CAAC,MAAM,cAAc,gBAAgB,QAAQ,EAAE,SAAS,KAAK,KAAK,KAAK,KAC1F,KAAK,WAAW,KAAK,KAAK,KAAK,UAAU,UAC1C,KAAK,SAAS,KACd,KAAK,WAAW,KACf,KAAK,SAAS,KAAK,KAAK,CAAC,MAAM;AAAA,IAErC,CAAC;AACD,UAAM,SAAS,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AAEzE,UAAM,eAAe,CACpB,QACA,UAEA,OAAO,IAAI,CAAA,QAAO;AAAA,MACjB,GAAG;AAAA,MACH,MAAM,CAAC,EAAE,YAAY,sBAAsB,SAAS,GAAG,GAAG,IAAI;AAAA,MAC9D,OAAO,GAAG,SACN,GAAG,MAAM,WAAW,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,QAAQ,IAAI,CAAAA,QAAM,CAAC,EAAE,YAAY,sBAAsB,MAAA,GAAS,GAAGA,GAAE,CAAC,IACzG;AAAA,IAAA,EACF;AAEH,WAAO,KAAK,YAAY,OAAM,WAAU;AACvC,UAAI,SAAS,4BAA4B;AACxC,eAAO,MAAM,iDAAiD;AAC9D,cAAM,OAAO,iBAAiB,uBAAuB,YAAY;AAAA,MAClE;AACA,UAAI,SAAS,wBAAwB;AACpC,eAAO,MAAM,gDAAgD;AAC7D,cAAM,OAAO,iBAAiB,uBAAuB,QAAQ;AAAA,MAC9D;AACA,YAAM,mBAA+D,CAAA;AACrE,YAAM,mBAA6C,CAAA;AACnD,iBAAW,SAAS,SAAS,QAAQ;AACpC,YAAI,MAAM,SAAS,WAAW,MAAM,SAAS,cAAc;AAC1D;AAAA,QACD;AACA,YAAI,EAAE,iBAAiB,aAAa;AACnC,gBAAM,IAAI,wBAAA;AAAA,QACX;AACA,cAAM,cAAc,OAAO,MAAM,IAAI;AACrC,YAAI,CAAC,aAAa;AACjB,gBAAM,IAAI,wBAAA;AAAA,QACX;AACA,cAAM,OAAO,kBAAkB,YAAY,UAAU;AAErD,cAAM,SAAyC,OAAO,MAAM;AAC3D,kBAAQ,KAAK,WAAA;AAAA,YACZ,KAAK,UAAU;AACd,qBAAO,KAAK,eAAe,QAAQ,KAAK,QAAQ,KAAK;AAAA,YACtD,KAAK,UAAU;AACd,qBAAO,KAAK,eAAe,QAAQ,KAAK,QAAQ,KAAK;AAAA,YACtD,KAAK,UAAU;AACd,qBAAO,KAAK,eAAe,QAAQ,KAAK,QAAQ,KAAK;AAAA,YACtD,KAAK,UAAU;AACd,qBAAO;AAAA,YACR,KAAK,UAAU;AAAA,YACf,KAAK,UAAU;AAAA,YACf,KAAK,UAAU;AACd,oBAAM,IAAI,wBAAwB,0BAA0B,OAAO,IAAI,CAAC,EAAE;AAAA,UAAA;AAE5E,iBAAO,YAAY,KAAK,SAAS;AAAA,QAClC,GAAA;AACA,YAAI,WAAW,MAAM;AACpB,2BAAiB,MAAM,KAAK,IAAI;AAAA,YAC/B,IAAI;AAAA,YACJ,YAAY;AAAA,YACZ,QAAQ,CAAA;AAAA,YACR,cAAc,KAAK,0BAA0B,OAAO,MAAM;AAAA,YAC1D,MAAM;AAAA,UAAA;AAEP,2BAAiB,KAAK,GAAG,aAAa,OAAO,QAAQ,MAAM,KAAK,CAAC;AAAA,QAClE,OAAO;AACN,2BAAiB,MAAM,KAAK,IAAI,EAAE,IAAI,OAAO,QAAQ,CAAA,GAAI,YAAY,EAAE,OAAO,MAAM,QAAQ,CAAA,EAAC,GAAK,MAAM,KAAA;AAAA,QACzG;AAAA,MACD;AACA,UAAI,iBAAiB,QAAQ;AAC5B,eAAO;AAAA,UACN,YAAY;AAAA,UACZ,IAAI;AAAA,UACJ,cAAc,KAAK,0BAA0B,gBAAgB;AAAA,UAC7D,QAAQ,CAAA;AAAA,UACR,YAAY;AAAA,YACX,OAAO;AAAA,YACP,QAAQ;AAAA,UAAA;AAAA,UAET,GAAG;AAAA,QAAA;AAAA,MAEL;AAEA,YAAM,YAAiC,CAAA;AACvC,iBAAW,SAAS,SAAS,QAAQ;AACpC,YAAI,MAAM,SAAS,cAAc;AAChC;AAAA,QACD;AACA,YAAI,EAAE,iBAAiB,aAAa;AACnC,gBAAM,IAAI,wBAAA;AAAA,QACX;AACA,cAAM,cAAc,OAAO,MAAM,IAAI;AACrC,YAAI,CAAC,aAAa;AACjB,gBAAM,IAAI,wBAAA;AAAA,QACX;AACA,YAAI,MAAM,SAAS,SAAS;AAC3B,oBAAU,MAAM,KAAK,IAAI,MAAM;AAAA,YAC9B;AAAA,YACA,uBAAuB,kBAAkB,YAAY,IAAI,EAAE,UAAA;AAAA,YAC3D;AAAA,UAAA;AAED;AAAA,QACD;AAEA,cAAM,OAAO,kBAAkB,YAAY,UAAU;AACrD,eAAO,MAAM,uCAAuC,EAAE,OAAO,MAAM,OAAO;AAC1E,cAAM,SAIF,OAAO,MAAM;AAChB,kBAAQ,KAAK,WAAA;AAAA,YACZ,KAAK,UAAU;AACd,qBAAO,KAAK,sBAAsB,QAAQ,KAAK,QAAQ,KAAK;AAAA,YAC7D,KAAK,UAAU;AACd,qBAAO,KAAK,sBAAsB,QAAQ,KAAK,QAAQ,KAAK;AAAA,YAC7D,KAAK,UAAU;AACd,qBAAO,KAAK,sBAAsB,QAAQ,KAAK,QAAQ,KAAK;AAAA,YAC7D,KAAK,UAAU;AACd,qBAAO,KAAK,sBAAsB,QAAQ,KAAK,QAAQ,KAAK;AAAA,YAC7D,KAAK,UAAU;AAAA,YACf,KAAK,UAAU;AAAA,YACf,KAAK,UAAU;AACd,oBAAM,IAAI,wBAAA;AAAA,UAAwB;AAEpC,iBAAO,YAAY,KAAK,SAAS;AAAA,QAClC,GAAA;AAEA,YAAI,CAAC,OAAO,IAAI;AACf,iBAAO,MAAM,6CAA6C,EAAE,QAAQ,OAAO,MAAM,OAAO;AACxF,gBAAMC,oBAAmB,OAAO,aAAa,aAAa,OAAO,WAAW,QAAQ,MAAM,KAAK,IAAI,CAAA;AACnG,gBAAM,kBAAkB,aAAa,OAAO,QAAQ,MAAM,KAAK;AAC/D,iBAAO;AAAA,YACN,IAAI;AAAA,YACJ,QAAQ;AAAA,YACR,YAAY,OAAO,aAChB;AAAA,cACD,OAAO,OAAO,WAAW;AAAA,cACzB,QAAQA;AAAAA,YAAA,IAEP,EAAE,OAAO,MAAM,QAAQ,CAAA,EAAC;AAAA,YAC3B,cAAc;AAAA,cACb,KAAK,0BAA0BA,iBAAgB;AAAA,cAC/C,KAAK,yBAAyB,eAAe;AAAA,YAAA,EAE5C,OAAO,CAAA,OAAM,OAAO,MAAS,EAC7B,KAAK,IAAI;AAAA,YACX,GAAG;AAAA,YACH,CAAC,MAAM,KAAK,GAAG;AAAA,UAAA;AAAA,QAEjB;AACA,kBAAU,MAAM,KAAK,IAAI;AAAA,MAC1B;AAEA,aAAO;AAAA,QACN,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,QAAQ,CAAA;AAAA,QACR,YAAY,EAAE,OAAO,MAAM,QAAQ,CAAA,EAAC;AAAA,QACpC,GAAG;AAAA,MAAA;AAAA,IAEL,CAAC;AAAA,EACF;AAAA,EAEA,MAAa,cACZ,QACA,MAC4C;AAC5C,UAAM,WAAW,KAAK,eAAe,IAAI;AACzC,WAAO,KAAK,YAAY,OAAM,WAAU;AACvC,YAAM,aAAa,MAAM,KAAK,eAAe,QAAQ,QAAQ,QAAQ;AACrE,UAAI,eAAe,MAAM;AACxB,eAAO,EAAE,IAAI,OAAO,YAAY,QAAQ,CAAA,GAAI,cAAc,KAAK,0BAA0B,WAAW,MAAM,EAAA;AAAA,MAC3G;AACA,aAAO,MAAM,KAAK,sBAAsB,QAAQ,QAAQ,QAAQ;AAAA,IACjE,CAAC;AAAA,EACF;AAAA,EAEA,MAAc,eACb,QACA,QACA,UAC0C;AAC1C,UAAM,QAAQ,SAAS;AACvB,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,IAAC,CACP;AACD,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAc,sBACb,QACA,QACA,UAC4C;AAC5C,UAAM,QAAQ,SAAS;AACvB,UAAM,SAAS,MAAM,OAAO,OAAO,QAAQ,MAAM,IAAI,MAAM,MAAM,MAAM,MAAM;AAC7E,UAAM,gBAAgB,KAAK,oBAAoB,MAAM;AACrD,QAAI,eAAe;AAClB,aAAO;AAAA,IACR;AAEA,UAAM,QAAQ,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,MAAM,IAAI,QAAQ;AAC9E,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,YAAY;AAAA,QACX,OAAO;AAAA,QACP,QAAQ,CAAA;AAAA,MAAC;AAAA,MAEV,QAAQ,CAAA;AAAA,MACR,GAAG;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,MAAa,cACZ,QACA,MAC4C;AAC5C,UAAM,WAAW,KAAK,eAAe,IAAI;AACzC,WAAO,KAAK,YAAY,OAAM,WAAU;AACvC,YAAM,aAAa,MAAM,KAAK,eAAe,QAAQ,QAAQ,QAAQ;AACrE,UAAI,eAAe,MAAM;AACxB,eAAO,EAAE,IAAI,OAAO,YAAY,QAAQ,CAAA,GAAI,cAAc,KAAK,0BAA0B,WAAW,MAAM,EAAA;AAAA,MAC3G;AACA,aAAO,MAAM,KAAK,sBAAsB,QAAQ,QAAQ,QAAQ;AAAA,IACjE,CAAC;AAAA,EACF;AAAA,EAEA,MAAc,eACb,QACA,QACA,UAC0C;AAC1C,UAAM,QAAQ,SAAS;AACvB,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,MACN,cAAc;AAAA,IAAA,CACd;AACD,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAc,sBACb,QACA,QACA,UAC4C;AAC5C,UAAM,QAAQ,SAAS;AACvB,UAAM,SAAS,MAAM,OAAO,OAAO,QAAQ,MAAM,IAAI;AACrD,UAAM,gBAAgB,KAAK,oBAAoB,MAAM;AACrD,QAAI,eAAe;AAClB,aAAO;AAAA,IACR;AACA,UAAM,UAAU,iBAAiB,MAAM;AACvC,QAAI,CAAC,SAAS;AACb,YAAM,IAAI,wBAAwB,yEAAyE;AAAA,IAC5G;AAEA,UAAM,QAAQ,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,EAAE,CAAC,OAAO,OAAO,GAAG,QAAA,GAAW,QAAQ;AACnG,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,YAAY;AAAA,QACX,OAAO;AAAA,QACP,QAAQ,CAAA;AAAA,MAAC;AAAA,MAEV,QAAQ,CAAA;AAAA,MACR,GAAG;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,MAAa,cACZ,QACA,MAC4C;AAC5C,UAAM,WAAW,KAAK,eAAe,IAAI;AACzC,WAAO,KAAK,YAAY,OAAM,WAAU;AACvC,YAAM,aAAa,MAAM,KAAK,eAAe,QAAQ,QAAQ,QAAQ;AACrE,UAAI,eAAe,MAAM;AACxB,eAAO;AAAA,UACN,IAAI;AAAA,UACJ;AAAA,UACA,QAAQ,CAAA;AAAA,UACR,cAAc,KAAK,0BAA0B,WAAW,MAAM;AAAA,QAAA;AAAA,MAEhE;AACA,aAAO,MAAM,KAAK,sBAAsB,QAAQ,QAAQ,QAAQ;AAAA,IACjE,CAAC;AAAA,EACF;AAAA,EAEA,MAAc,eACb,QACA,QACA,UAC0C;AAC1C,UAAM,QAAQ,SAAS;AACvB,UAAM,mBAAmB;AAAA,MACxB,GAAI,MAAM,KAAK,eAAe,eAAe;AAAA,QAC5C;AAAA,QACA;AAAA,QACA,MAAM,MAAM;AAAA,QACZ,MAAM,CAAA;AAAA,QACN,cAAc;AAAA,MAAA,CACd;AAAA,MACD,GAAI,MAAM,KAAK,eAAe,eAAe;AAAA,QAC5C;AAAA,QACA;AAAA,QACA,MAAM,MAAM;AAAA,QACZ,OAAO,MAAM;AAAA,QACb,MAAM,CAAA;AAAA,MAAC,CACP;AAAA,IAAA;AAEF,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAc,sBACb,QACA,QACA,UAC4C;AAC5C,UAAM,QAAQ,SAAS;AACvB,UAAM,SAAS,MAAM,OAAO,OAAO,QAAQ,MAAM,IAAI,MAAM,QAAQ,MAAM,QAAQ,MAAM,MAAM;AAC7F,UAAM,gBAAgB,KAAK,oBAAoB,MAAM;AACrD,QAAI,eAAe;AAClB,aAAO;AAAA,IACR;AACA,UAAM,UAAU,iBAAiB,MAAM;AACvC,UAAM,aAAa,UAAU,EAAE,CAAC,OAAO,OAAO,GAAG,QAAA,IAAY,MAAM;AACnE,QAAI,CAAC,YAAY;AAChB,YAAM,IAAI,wBAAwB,yEAAyE;AAAA,IAC5G;AAEA,UAAM,QAAQ,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,YAAY,QAAQ;AAChF,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,YAAY;AAAA,QACX,OAAO;AAAA,QACP,QAAQ,CAAA;AAAA,MAAC;AAAA,MAEV,QAAQ,CAAA;AAAA,MACR,GAAG;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,MAAa,cACZ,QACA,MAC4C;AAC5C,UAAM,WAAW,KAAK,eAAe,IAAI;AACzC,WAAO,KAAK,YAAY,OAAM,WAAU;AACvC,aAAO,MAAM,KAAK,sBAAsB,QAAQ,QAAQ,QAAQ;AAAA,IACjE,CAAC;AAAA,EACF;AAAA,EAEA,MAAc,sBACb,QACA,QACA,UAC4C;AAC5C,UAAM,QAAQ,SAAS;AAEvB,UAAM,QAAQ,MAAM,KAAK,mBAAmB,QAAQ,QAAQ,MAAM,IAAI,QAAQ;AAE9E,UAAM,SAAS,MAAM,OAAO,OAAO,QAAQ,SAAS,KAAK,IAAI,SAAS,KAAK,MAAM;AACjF,QACC,OAAO,UAAU,MACb,OAAO,CAAC,EAAE,WAAW,mBAAmB,MAAM,OAAO,CAAC,EAAE,WAAW,mBAAmB,cACzF;AACD,aAAO,EAAE,IAAI,MAAM,QAAQ,CAAA,GAAI,GAAG,MAAA;AAAA,IACnC,OAAO;AACN,YAAM,SAAS,KAAK,sBAAsB,MAAM;AAChD,aAAO,EAAE,IAAI,OAAO,QAAQ,cAAc,KAAK,yBAAyB,MAAM,EAAA;AAAA,IAC/E;AAAA,EACD;AAAA,EAEQ,eAAe,MAA0B;AAChD,UAAM,WAAW,KAAK,uBAAuB,OAAO,MAAM,CAAC,MAAM,SAAS;AACzE,aAAO,KAAK,WAAW,KAAK,KAAK,KAAK,UAAU;AAAA,IACjD,CAAC;AACD,WAAO;AAAA,EACR;AAAA,EAEA,MAAc,mBACb,QACA,QACA,OACA,UACwC;AACxC,UAAM,YAAY,SAAS,gBAAgB,MAAM;AACjD,QAAI,QAA6B,CAAA;AACjC,eAAW,mBAAmB,WAAW;AACxC,UAAI,EAAE,2BAA2B,aAAa;AAC7C,cAAM,IAAI,MAAM,uCAAuC;AAAA,MACxD;AACA,YAAM,iBAAiB,gBAAgB,SAAS,EAAE,IAAI,OAAO;AAC7D,YAAM,gBAAgB,KAAK,IAAI,MAAM,OAAO,aAAa,QAAQ,gBAAgB,EAAE;AAAA,IACpF;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAc,YACb,IACa;AACb,WAAO,MAAM;AAAA,MACZ,YAAY;AACX,eAAO,MAAM,KAAK,cAAc,YAAY,OAAM,WAAU;AAC3D,iBAAO,MAAM,iDAAiD;AAC9D,gBAAM,SAAS,MAAM,GAAG,MAAM;AAC9B,cAAI,CAAC,OAAO,IAAI;AACf,mBAAO,MAAM,sDAAsD,EAAE,OAAA,CAAQ;AAC7E,kBAAM,OAAO,GAAG,WAAW,SAAA;AAAA,UAC5B,OAAO;AACN,gBAAI;AACH,oBAAM,OAAO,aAAa,KAAK,IAAI,mBAAmB;AACtD,qBAAO,MAAM,8CAA8C;AAC3D,oBAAM,OAAO,GAAG,WAAW,OAAA;AAC3B,oBAAM,OAAO,aAAa,KAAK,IAAI,kBAAkB;AAAA,YACtD,SAAS,GAAG;AACX,kBAAI;AACH,sBAAM,OAAO,GAAG,WAAW,SAAA;AAAA,cAC5B,QAAQ;AAAA,cAAC;AACT,oBAAM,MAAM,aAAa,KAAK,QAAQ,KAAK,wBAAwB,CAAC;AACpE,oBAAM,gBAAgB,KAAK,oBAAoB,CAAC,GAAG,CAAC;AACpD,kBAAI,CAAC,eAAe;AACnB,sBAAM,IAAI,wBAAA;AAAA,cACX;AACA,qBAAO,EAAE,GAAG,QAAQ,GAAG,cAAA;AAAA,YACxB;AAAA,UACD;AACA,iBAAO;AAAA,QACR,CAAC;AAAA,MACF;AAAA,MACA,CAAA,YAAW,OAAO,KAAK,OAAO;AAAA,MAC9B;AAAA,QACC,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,YAAY;AAAA,MAAA;AAAA,IACb;AAAA,EAEF;AAAA,EAEQ,oBAAoB,QAA4B;AACvD,UAAM,SAAS,KAAK,sBAAsB,MAAM;AAChD,QAAI,OAAO,SAAS,GAAG;AACtB,aAAO;AAAA,QACN,IAAI;AAAA,QACJ,YAAY,EAAE,OAAO,MAAM,QAAQ,CAAA,EAAC;AAAA,QACpC;AAAA,QACA,cAAc,KAAK,yBAAyB,MAAM;AAAA,MAAA;AAAA,IAEpD;AACA,WAAO;AAAA,EACR;AAAA,EAEQ,sBAAsB,QAAqD;AAClF,UAAM,SAAS,OAAO;AAAA,MACrB,CAAA,OACC,CAAC,CAAC,mBAAmB,IAAI,mBAAmB,aAAa,mBAAmB,eAAe,EAAE;AAAA,QAC5F,GAAG;AAAA,MAAA;AAAA,IACJ;AAGF,QAAI,cAAc;AAClB,UAAM,iBAAqC,CAAA;AAC3C,eAAW,SAAS,QAAQ;AAC3B,UAAI,MAAM,MAAM,SAAS,mBAAmB,kBAAkB,KAAK,aAAa;AAC/E;AAAA,MACD;AACA,UAAI,MAAM,MAAM,SAAS,mBAAmB,QAAQ,GAAG;AACtD,sBAAc;AAAA,MACf;AACA,qBAAe,KAAK,KAAK;AAAA,IAC1B;AAEA,WAAO,eAAe,IAAI,CAAA,OAAM;AAC/B,YAAM,QAAQ,GAAG,MAAM;AAAA,QAAI,CAAAC,UAC1BA,MAAK,IAAI,CAAAF,SAAO;AAAA,UACf,GAAGA;AAAAA,UACH,YAAY,WAAWA,MAAK,uBAAuB;AAAA,QAAA,EAClD;AAAA,MAAA;AAEH,YAAM,OAAO,MAAM,CAAC,KAAK,CAAA;AACzB,cAAQ,GAAG,QAAA;AAAA,QACV,KAAK,mBAAmB;AACvB,kBAAQ,GAAG,YAAA;AAAA,YACV,KAAK,eAAe;AACnB,qBAAO,EAAE,MAAM,OAAO,MAAM,OAAO,mBAAmB,4BAA4B,SAAS,GAAG,QAAA;AAAA,YAC/F,KAAK,eAAe;AACnB,qBAAO;AAAA,gBACN;AAAA,gBACA;AAAA,gBACA,MAAM,OAAO,mBAAmB;AAAA,gBAChC,SAAS,GAAG;AAAA,cAAA;AAAA,YAEd,KAAK,eAAe;AACnB,qBAAO,EAAE,MAAM,OAAO,MAAM,OAAO,mBAAmB,2BAA2B,SAAS,GAAG,QAAA;AAAA,YAC9F;AACC,qBAAO,YAAY,GAAG,UAAU;AAAA,UAAA;AAAA,QAEnC,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACvB,iBAAO,EAAE,MAAM,OAAO,MAAM,OAAO,mBAAmB,kBAAkB,SAAS,GAAG,QAAA;AAAA,QACrF,KAAK,mBAAmB;AACvB,kBAAQ,GAAG,MAAA;AAAA,YACV,KAAK,eAAe;AACnB,qBAAO,EAAE,MAAM,OAAO,MAAM,OAAO,mBAAmB,qBAAqB,SAAS,GAAG,QAAA;AAAA,YACxF,KAAK,eAAe;AACnB,qBAAO,EAAE,MAAM,OAAO,MAAM,OAAO,mBAAmB,kBAAkB,SAAS,GAAG,QAAA;AAAA,YACrF;AACC,qBAAO,YAAY,GAAG,IAAI;AAAA,UAAA;AAAA,QAG7B,KAAK,mBAAmB;AACvB,iBAAO,EAAE,MAAM,OAAO,MAAM,OAAO,mBAAmB,UAAU,SAAS,GAAG,QAAA;AAAA,QAC7E,KAAK,mBAAmB;AAAA,QACxB,KAAK,mBAAmB;AACvB,gBAAM,IAAI,wBAAwB,iDAAiD;AAAA,QACpF;AACC,iBAAO,YAAc;AAAA,MAAA;AAAA,IAExB,CAAC;AAAA,EACF;AAAA,EAEQ,0BAA0B,kBAAgE;AACjG,QAAI,iBAAiB,WAAW,GAAG;AAClC,aAAO;AAAA,IACR;AACA,WACC,6BACE,iBAAiB,IAAI,CAAA,OAAM,GAAG,KAAK,cAAc,GAAG,IAAI,CAAC,KAAK,GAAG,QAAQ,IAAI,EAAE,EAAE,KAAK,IAAI;AAAA,EAE9F;AAAA,EAEQ,yBAAyB,iBAA8D;AAC9F,QAAI,gBAAgB,WAAW,GAAG;AACjC,aAAO;AAAA,IACR;AACA,WACC,4BACE,gBAAgB,IAAI,CAAA,OAAM,GAAG,KAAK,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,IAAI,KAAK,GAAG,WAAW,EAAE,GAAG;AAAA,EAE1G;AAAA,EAEQ,cAAc,MAAqC;AAC1D,QAAI,KAAK,WAAW,GAAG;AACtB,aAAO;AAAA,IACR;AACA,WAAO,KACL,IAAI,CAAA,OAAM;AACV,UAAI,WAAW,IAAI;AAClB,eAAO,GAAG;AAAA,MACX;AACA,UAAI,WAAW,MAAM,GAAG,OAAO;AAC9B,eAAO,GAAG,GAAG,KAAK,IAAI,GAAG,KAAK;AAAA,MAC/B;AACA,aAAO,GAAG;AAAA,IACX,CAAC,EACA,KAAK,GAAG;AAAA,EACX;AACD;"}
1
+ {"version":3,"file":"MutationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/MutationResolver.ts"],"sourcesContent":["import { Input, Model, Result, Value } from '@contember/schema'\nimport {\n\tAfterCommitEvent,\n\tBeforeCommitEvent,\n\tConstraintType,\n\tconvertError,\n\tgetInsertPrimary,\n\tInputErrorKind,\n\tMapper,\n\tMapperFactory,\n\tMutationResultHint,\n\tMutationResultList,\n\tMutationResultType,\n\ttryMutation,\n} from '../mapper/index.js'\nimport { ValidationResolver } from './ValidationResolver.js'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory.js'\nimport { ImplementationException } from '../exception.js'\nimport { DatabaseMetadata, retryTransaction } from '@contember/database'\nimport { Operation, readOperationMeta } from '../schema/index.js'\nimport { assertNever } from '../utils/index.js'\nimport { InputPreValidator } from '../input-validation/index.js'\nimport { ObjectNode } from '../inputProcessing/index.js'\nimport { executeReadOperations } from './ReadHelpers.js'\nimport { logger } from '@contember/logger'\n\ntype WithoutNode<T extends { node: any }> = Pick<T, Exclude<keyof T, 'node'>>\n\ntype TransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\nexport class MutationResolver {\n\tconstructor(\n\t\tprivate readonly schema: Model.Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t\tprivate readonly graphqlQueryAstFactory: GraphQlQueryAstFactory,\n\t\tprivate readonly schemaDatabaseMetadata: DatabaseMetadata,\n\t) {}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo, options: TransactionOptions): Promise<Result.TransactionResult> {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn (\n\t\t\t\t(path.length === 1 && !['ok', 'validation', 'errorMessage', 'errors'].includes(node.name.value))\n\t\t\t\t|| (path.length === 2 && node.name.value === 'node')\n\t\t\t\t|| path.length > 2\n\t\t\t\t|| path.length === 0\n\t\t\t\t|| (path.length > 1 && path[1] === 'query')\n\t\t\t)\n\t\t})\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\tconst prefixErrors = <T extends { path: Result.PathFragment[]; paths?: Result.PathFragment[][] }>(\n\t\t\terrors: T[],\n\t\t\tfield: string,\n\t\t): T[] =>\n\t\t\terrors.map(it => ({\n\t\t\t\t...it,\n\t\t\t\tpath: [{ __typename: '_FieldPathFragment', field }, ...it.path],\n\t\t\t\tpaths: it.paths\n\t\t\t\t\t? (it.paths.length === 0 ? [[]] : it.paths)?.map(it => [{ __typename: '_FieldPathFragment', field }, ...it])\n\t\t\t\t\t: undefined,\n\t\t\t}))\n\n\t\treturn this.transaction(async mapper => {\n\t\t\tif (options?.deferForeignKeyConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring foreign constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('foreignKey')\n\t\t\t}\n\t\t\tif (options?.deferUniqueConstraints) {\n\t\t\t\tlogger.debug('MutationResolver: deferring unique constraints')\n\t\t\t\tawait mapper.constraintHelper.setConstraintsDeferred('unique')\n\t\t\t}\n\t\t\tconst validationResult: Record<string, Result.MutationFieldResult> = {}\n\t\t\tconst validationErrors: Result.ValidationError[] = []\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === 'query' || field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\n\t\t\t\tconst result: Result.ValidationResult | null = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.validateCreate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.validateUpdate(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.validateUpsert(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException(`Invalid OperationMeta: ${String(meta)}`)\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\t\t\t\tif (result !== null) {\n\t\t\t\t\tvalidationResult[field.alias] = {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\tvalidation: result,\n\t\t\t\t\t\terrors: [],\n\t\t\t\t\t\terrorMessage: this.stringifyValidationErrors(result.errors),\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t}\n\t\t\t\t\tvalidationErrors.push(...prefixErrors(result.errors, field.alias))\n\t\t\t\t} else {\n\t\t\t\t\tvalidationResult[field.alias] = { ok: false, errors: [], validation: { valid: true, errors: [] }, node: null }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (validationErrors.length) {\n\t\t\t\treturn {\n\t\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\t\tok: false,\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validationErrors),\n\t\t\t\t\terrors: [],\n\t\t\t\t\tvalidation: {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t},\n\t\t\t\t\t...validationResult,\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst trxResult: Record<string, any> = {}\n\t\t\tfor (const field of queryAst.fields) {\n\t\t\t\tif (field.name === '__typename') {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif (!(field instanceof ObjectNode)) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tconst fieldConfig = fields[field.name]\n\t\t\t\tif (!fieldConfig) {\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t}\n\t\t\t\tif (field.name === 'query') {\n\t\t\t\t\ttrxResult[field.alias] = await executeReadOperations(\n\t\t\t\t\t\tfield,\n\t\t\t\t\t\tGraphQlQueryAstFactory.resolveObjectType(fieldConfig.type).getFields(),\n\t\t\t\t\t\tmapper,\n\t\t\t\t\t)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\t\t\tlogger.debug('MutationResolver: Resolving a field', { field: field.alias })\n\t\t\t\tconst result: {\n\t\t\t\t\tok: boolean\n\t\t\t\t\tvalidation?: Result.ValidationResult\n\t\t\t\t\terrors: Result.ExecutionError[]\n\t\t\t\t} = await (() => {\n\t\t\t\t\tswitch (meta.operation) {\n\t\t\t\t\t\tcase Operation.create:\n\t\t\t\t\t\t\treturn this.resolveCreateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.update:\n\t\t\t\t\t\t\treturn this.resolveUpdateInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.delete:\n\t\t\t\t\t\t\treturn this.resolveDeleteInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.upsert:\n\t\t\t\t\t\t\treturn this.resolveUpsertInternal(mapper, meta.entity, field)\n\t\t\t\t\t\tcase Operation.get:\n\t\t\t\t\t\tcase Operation.paginate:\n\t\t\t\t\t\tcase Operation.list:\n\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(meta.operation)\n\t\t\t\t})()\n\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\tlogger.debug('MutationResolver: Field evaluation failed', { result, field: field.alias })\n\t\t\t\t\tconst validationErrors = result.validation ? prefixErrors(result.validation.errors, field.alias) : []\n\t\t\t\t\tconst executionErrors = prefixErrors(result.errors, field.alias)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terrors: executionErrors,\n\t\t\t\t\t\tvalidation: result.validation\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tvalid: result.validation.valid,\n\t\t\t\t\t\t\t\terrors: validationErrors,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: { valid: true, errors: [] },\n\t\t\t\t\t\terrorMessage: [\n\t\t\t\t\t\t\tthis.stringifyValidationErrors(validationErrors),\n\t\t\t\t\t\t\tthis.stringifyExecutionErrors(executionErrors),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(it => it !== undefined)\n\t\t\t\t\t\t\t.join('\\n'),\n\t\t\t\t\t\t...validationResult,\n\t\t\t\t\t\t[field.alias]: result,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttrxResult[field.alias] = result\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t__typename: 'MutationTransaction',\n\t\t\t\tok: true,\n\t\t\t\terrors: [],\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\t...trxResult,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic async resolveUpdate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpdate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveUpdateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpdate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpdateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpdateInput>,\n\t): Promise<WithoutNode<Result.UpdateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.update(entity, input.by, input.data, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveCreate(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateCreate(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn { ok: false, validation, errors: [], errorMessage: this.stringifyValidationErrors(validation.errors) }\n\t\t\t}\n\t\t\treturn await this.resolveCreateInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateCreate(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveCreateInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.CreateInput>,\n\t): Promise<WithoutNode<Result.CreateResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.insert(entity, input.data)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tif (!primary) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveCreateInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, { [entity.primary]: primary }, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveUpsert(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\tconst validation = await this.validateUpsert(mapper, entity, queryAst)\n\t\t\tif (validation !== null) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tvalidation,\n\t\t\t\t\terrors: [],\n\t\t\t\t\terrorMessage: this.stringifyValidationErrors(validation.errors),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn await this.resolveUpsertInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async validateUpsert(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<Result.ValidationResult | null> {\n\t\tconst input = queryAst.args\n\t\tconst validationResult = [\n\t\t\t...(await this.inputValidator.validateCreate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.create,\n\t\t\t\tpath: [],\n\t\t\t\toverRelation: null,\n\t\t\t})),\n\t\t\t...(await this.inputValidator.validateUpdate({\n\t\t\t\tmapper,\n\t\t\t\tentity,\n\t\t\t\tdata: input.update,\n\t\t\t\twhere: input.by,\n\t\t\t\tpath: [],\n\t\t\t})),\n\t\t]\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate async resolveUpsertInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.UpsertInput>,\n\t): Promise<WithoutNode<Result.UpsertResult>> {\n\t\tconst input = queryAst.args\n\t\tconst result = await mapper.upsert(entity, input.by, input.update, input.create, input.filter)\n\t\tconst errorResponse = this.createErrorResponse(result)\n\t\tif (errorResponse) {\n\t\t\treturn errorResponse\n\t\t}\n\t\tconst primary = getInsertPrimary(result)\n\t\tconst byResolved = primary ? { [entity.primary]: primary } : input.by\n\t\tif (!byResolved) {\n\t\t\tthrow new ImplementationException('MutationResolver::resolveUpsertInternal does not handle result properly')\n\t\t}\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, byResolved, queryAst)\n\t\treturn {\n\t\t\tok: true,\n\t\t\tvalidation: {\n\t\t\t\tvalid: true,\n\t\t\t\terrors: [],\n\t\t\t},\n\t\t\terrors: [],\n\t\t\t...nodes,\n\t\t}\n\t}\n\n\tpublic async resolveDelete(\n\t\tentity: Model.Entity,\n\t\tinfo: GraphQLResolveInfo,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst queryAst = this.createQueryAst(info)\n\t\treturn this.transaction(async mapper => {\n\t\t\treturn await this.resolveDeleteInternal(mapper, entity, queryAst)\n\t\t})\n\t}\n\n\tprivate async resolveDeleteInternal(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\tqueryAst: ObjectNode<Input.DeleteInput>,\n\t): Promise<WithoutNode<Result.DeleteResult>> {\n\t\tconst input = queryAst.args\n\n\t\tconst nodes = await this.resolveResultNodes(mapper, entity, input.by, queryAst)\n\n\t\tconst result = await mapper.delete(entity, queryAst.args.by, queryAst.args.filter)\n\t\tif (\n\t\t\tresult.length >= 1\n\t\t\t&& (result[0].result === MutationResultType.ok || result[0].result === MutationResultType.nothingToDo)\n\t\t) {\n\t\t\treturn { ok: true, errors: [], ...nodes }\n\t\t} else {\n\t\t\tconst errors = this.convertResultToErrors(result)\n\t\t\treturn { ok: false, errors, errorMessage: this.stringifyExecutionErrors(errors) }\n\t\t}\n\t}\n\n\tprivate createQueryAst(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.graphqlQueryAstFactory.create(info, (node, path) => {\n\t\t\treturn path.length !== 1 || node.name.value === 'node'\n\t\t})\n\t\treturn queryAst\n\t}\n\n\tprivate async resolveResultNodes(\n\t\tmapper: Mapper,\n\t\tentity: Model.Entity,\n\t\twhere: Input.UniqueWhere,\n\t\tqueryAst: ObjectNode,\n\t): Promise<Record<string, Value.Object>> {\n\t\tconst nodeQuery = queryAst.findFieldByName('node')\n\t\tlet nodes: Record<string, any> = {}\n\t\tfor (const singleNodeQuery of nodeQuery) {\n\t\t\tif (!(singleNodeQuery instanceof ObjectNode)) {\n\t\t\t\tthrow new Error('MutationResolver: expected ObjectNode')\n\t\t\t}\n\t\t\tconst objectWithArgs = singleNodeQuery.withArgs({ by: where })\n\t\t\tnodes[singleNodeQuery.alias] = await mapper.selectUnique(entity, objectWithArgs, [])\n\t\t}\n\t\treturn nodes\n\t}\n\n\tprivate async transaction<R extends { ok: boolean }>(\n\t\tcb: (mapper: Mapper) => Promise<R>,\n\t): Promise<R> {\n\t\treturn await retryTransaction(\n\t\t\tasync () => {\n\t\t\t\treturn await this.mapperFactory.transaction(async mapper => {\n\t\t\t\t\tlogger.debug('MutationResolver: Starting mutation transaction')\n\t\t\t\t\tconst result = await cb(mapper)\n\t\t\t\t\tif (!result.ok) {\n\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction failed, rolling back', { result })\n\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new BeforeCommitEvent())\n\t\t\t\t\t\t\tlogger.debug('MutationResolver: Transaction ok, committing')\n\t\t\t\t\t\t\tawait mapper.db.connection.commit()\n\t\t\t\t\t\t\tawait mapper.eventManager.fire(new AfterCommitEvent())\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait mapper.db.connection.rollback()\n\t\t\t\t\t\t\t} catch {}\n\t\t\t\t\t\t\tconst err = convertError(this.schema, this.schemaDatabaseMetadata, e)\n\t\t\t\t\t\t\tconst errorResponse = this.createErrorResponse([err])\n\t\t\t\t\t\t\tif (!errorResponse) {\n\t\t\t\t\t\t\t\tthrow new ImplementationException()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn { ...result, ...errorResponse }\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t},\n\t\t\tmessage => logger.warn(message),\n\t\t\t{\n\t\t\t\tmaxAttempts: 15,\n\t\t\t\tminTimeout: 10,\n\t\t\t\tmaxTimeout: 1000,\n\t\t\t},\n\t\t)\n\t}\n\n\tprivate createErrorResponse(result: MutationResultList) {\n\t\tconst errors = this.convertResultToErrors(result)\n\t\tif (errors.length > 0) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tvalidation: { valid: true, errors: [] },\n\t\t\t\terrors,\n\t\t\t\terrorMessage: this.stringifyExecutionErrors(errors),\n\t\t\t}\n\t\t}\n\t\treturn null\n\t}\n\n\tprivate convertResultToErrors(result: MutationResultList): Result.ExecutionError[] {\n\t\tconst errors = result.filter(\n\t\t\tit =>\n\t\t\t\t![MutationResultType.ok, MutationResultType.nothingToDo, MutationResultType.validationError].includes(\n\t\t\t\t\tit.result,\n\t\t\t\t),\n\t\t)\n\n\t\tlet hasSqlError = false\n\t\tconst filteredErrors: MutationResultList = []\n\t\tfor (const error of errors) {\n\t\t\tif (error.hints.includes(MutationResultHint.subSequentSqlError) && hasSqlError) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (error.hints.includes(MutationResultHint.sqlError)) {\n\t\t\t\thasSqlError = true\n\t\t\t}\n\t\t\tfilteredErrors.push(error)\n\t\t}\n\n\t\treturn filteredErrors.map(it => {\n\t\t\tconst paths = it.paths.map(path =>\n\t\t\t\tpath.map(it => ({\n\t\t\t\t\t...it,\n\t\t\t\t\t__typename: 'field' in it ? '_FieldPathFragment' : '_IndexPathFragment',\n\t\t\t\t}))\n\t\t\t)\n\t\t\tconst path = paths[0] || []\n\t\t\tswitch (it.result) {\n\t\t\t\tcase MutationResultType.constraintViolationError:\n\t\t\t\t\tswitch (it.constraint) {\n\t\t\t\t\t\tcase ConstraintType.notNull:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotNullConstraintViolation, message: it.message }\n\t\t\t\t\t\tcase ConstraintType.foreignKey:\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tpaths,\n\t\t\t\t\t\t\t\ttype: Result.ExecutionErrorType.ForeignKeyConstraintViolation,\n\t\t\t\t\t\t\t\tmessage: it.message,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase ConstraintType.uniqueKey:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.UniqueConstraintViolation, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.constraint)\n\t\t\t\t\t}\n\t\t\t\tcase MutationResultType.noResultError:\n\t\t\t\tcase MutationResultType.notFoundError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NotFoundOrDenied, message: it.message }\n\t\t\t\tcase MutationResultType.inputError:\n\t\t\t\t\tswitch (it.kind) {\n\t\t\t\t\t\tcase InputErrorKind.nonUniqueWhere:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.NonUniqueWhereInput, message: it.message }\n\t\t\t\t\t\tcase InputErrorKind.invalidData:\n\t\t\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.InvalidDataInput, message: it.message }\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn assertNever(it.kind)\n\t\t\t\t\t}\n\n\t\t\t\tcase MutationResultType.sqlError:\n\t\t\t\t\treturn { path, paths, type: Result.ExecutionErrorType.SqlError, message: it.message }\n\t\t\t\tcase MutationResultType.ok:\n\t\t\t\tcase MutationResultType.nothingToDo:\n\t\t\t\t\tthrow new ImplementationException('MutationResolver: unexpected MutationResultType')\n\t\t\t\tdefault:\n\t\t\t\t\treturn assertNever(it)\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate stringifyValidationErrors(validationErrors: Result.ValidationError[]): string | undefined {\n\t\tif (validationErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Validation has failed:\\n'\n\t\t\t+ validationErrors.map(it => `${this.stringifyPath(it.path)}: ${it.message.text}`).join('\\n')\n\t\t)\n\t}\n\n\tprivate stringifyExecutionErrors(executionErrors: Result.ExecutionError[]): string | undefined {\n\t\tif (executionErrors.length === 0) {\n\t\t\treturn undefined\n\t\t}\n\t\treturn (\n\t\t\t'Execution has failed:\\n'\n\t\t\t+ executionErrors.map(it => `${this.stringifyPath(it.paths[0] || [])}: ${it.type} (${it.message || ''})`)\n\t\t)\n\t}\n\n\tprivate stringifyPath(path: Result.PathFragment[]): string {\n\t\tif (path.length === 0) {\n\t\t\treturn 'unknown field'\n\t\t}\n\t\treturn path\n\t\t\t.map(it => {\n\t\t\t\tif ('field' in it) {\n\t\t\t\t\treturn it.field\n\t\t\t\t}\n\t\t\t\tif ('alias' in it && it.alias) {\n\t\t\t\t\treturn `${it.index}(${it.alias})`\n\t\t\t\t}\n\t\t\t\treturn it.index\n\t\t\t})\n\t\t\t.join('.')\n\t}\n}\n"],"names":["it","validationErrors","path"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReadHelpers.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadHelpers.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { Mapper } from '../mapper'\nimport { ObjectNode } from '../inputProcessing'\nimport { assertNever, createPaginationHelper } from '../utils'\nimport { ImplementationException } from '../exception'\nimport { Operation, readOperationMeta } from '../schema'\nimport { GraphQLFieldMap } from 'graphql'\n\nexport const paginate = async (\n\tmapper: Mapper,\n\tentity: Model.Entity,\n\tqueryAst: ObjectNode<Input.PaginationQueryInput>,\n) => {\n\tconst paginationHelper = createPaginationHelper(queryAst)\n\tconst totalCount = paginationHelper.requiresTotalCount\n\t\t? await mapper.count(entity, queryAst.args.filter || {})\n\t\t: undefined\n\tconst nodes = paginationHelper.nodeField ? await mapper.select(entity, paginationHelper.nodeField, []) : undefined\n\n\treturn paginationHelper.createResponse(totalCount, nodes)\n}\n\nexport const executeReadOperations = async (\n\tqueryAst: ObjectNode,\n\tfields: GraphQLFieldMap<any, any>,\n\tmapper: Mapper,\n): Promise<Record<string, any>> => {\n\tconst trxResult: Record<string, any> = {}\n\n\t// todo execute in parallel\n\tfor (const field of queryAst.fields) {\n\t\tif (!(field instanceof ObjectNode)) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\t\tconst fieldConfig = fields[field.name]\n\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\ttrxResult[field.alias] = await (() => {\n\t\t\tswitch (meta.operation) {\n\t\t\t\tcase Operation.get:\n\t\t\t\t\treturn mapper.selectUnique(meta.entity, field, [])\n\t\t\t\tcase Operation.list:\n\t\t\t\t\treturn mapper.select(meta.entity, field, [])\n\t\t\t\tcase Operation.paginate:\n\t\t\t\t\treturn paginate(mapper, meta.entity, field)\n\t\t\t\tcase Operation.create:\n\t\t\t\tcase Operation.update:\n\t\t\t\tcase Operation.delete:\n\t\t\t\tcase Operation.upsert:\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t}\n\t\t\treturn assertNever(meta.operation)\n\t\t})()\n\t}\n\treturn trxResult\n}\n"],"names":["createPaginationHelper","ObjectNode","ImplementationException","readOperationMeta","Operation","assertNever"],"mappings":";;;;;;;;;;;;;;AAQO,MAAM,WAAW,OACvB,QACA,QACA,aACI;AACJ,QAAM,mBAAmBA,gBAAAA,uBAAuB,QAAQ;AACxD,QAAM,aAAa,iBAAiB,qBACjC,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,UAAU,CAAA,CAAE,IACrD;AACH,QAAM,QAAQ,iBAAiB,YAAY,MAAM,OAAO,OAAO,QAAQ,iBAAiB,WAAW,CAAA,CAAE,IAAI;AAEzG,SAAO,iBAAiB,eAAe,YAAY,KAAK;AACzD;AAEO,MAAM,wBAAwB,OACpC,UACA,QACA,WACkC;AAClC,QAAM,YAAiC,CAAA;AAGvC,aAAW,SAAS,SAAS,QAAQ;AACpC,QAAI,EAAE,iBAAiBC,WAAAA,aAAa;AACnC,YAAM,IAAIC,UAAAA,wBAAA;AAAA,IACX;AACA,UAAM,cAAc,OAAO,MAAM,IAAI;AACrC,UAAM,OAAOC,mBAAAA,kBAAkB,YAAY,UAAU;AACrD,cAAU,MAAM,KAAK,IAAI,OAAO,MAAM;AACrC,cAAQ,KAAK,WAAA;AAAA,QACZ,KAAKC,mBAAAA,UAAU;AACd,iBAAO,OAAO,aAAa,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAClD,KAAKA,mBAAAA,UAAU;AACd,iBAAO,OAAO,OAAO,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAC5C,KAAKA,mBAAAA,UAAU;AACd,iBAAO,SAAS,QAAQ,KAAK,QAAQ,KAAK;AAAA,QAC3C,KAAKA,mBAAAA,UAAU;AAAA,QACf,KAAKA,mBAAAA,UAAU;AAAA,QACf,KAAKA,mBAAAA,UAAU;AAAA,QACf,KAAKA,mBAAAA,UAAU;AACd,gBAAM,IAAIF,UAAAA,wBAAA;AAAA,MAAwB;AAEpC,aAAOG,YAAAA,YAAY,KAAK,SAAS;AAAA,IAClC,GAAA;AAAA,EACD;AACA,SAAO;AACR;;;"}
1
+ {"version":3,"file":"ReadHelpers.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadHelpers.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { Mapper } from '../mapper/index.js'\nimport { ObjectNode } from '../inputProcessing/index.js'\nimport { assertNever, createPaginationHelper } from '../utils/index.js'\nimport { ImplementationException } from '../exception.js'\nimport { Operation, readOperationMeta } from '../schema/index.js'\nimport { GraphQLFieldMap } from 'graphql'\n\nexport const paginate = async (\n\tmapper: Mapper,\n\tentity: Model.Entity,\n\tqueryAst: ObjectNode<Input.PaginationQueryInput>,\n) => {\n\tconst paginationHelper = createPaginationHelper(queryAst)\n\tconst totalCount = paginationHelper.requiresTotalCount\n\t\t? await mapper.count(entity, queryAst.args.filter || {})\n\t\t: undefined\n\tconst nodes = paginationHelper.nodeField ? await mapper.select(entity, paginationHelper.nodeField, []) : undefined\n\n\treturn paginationHelper.createResponse(totalCount, nodes)\n}\n\nexport const executeReadOperations = async (\n\tqueryAst: ObjectNode,\n\tfields: GraphQLFieldMap<any, any>,\n\tmapper: Mapper,\n): Promise<Record<string, any>> => {\n\tconst trxResult: Record<string, any> = {}\n\n\t// todo execute in parallel\n\tfor (const field of queryAst.fields) {\n\t\tif (!(field instanceof ObjectNode)) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\t\tconst fieldConfig = fields[field.name]\n\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\ttrxResult[field.alias] = await (() => {\n\t\t\tswitch (meta.operation) {\n\t\t\t\tcase Operation.get:\n\t\t\t\t\treturn mapper.selectUnique(meta.entity, field, [])\n\t\t\t\tcase Operation.list:\n\t\t\t\t\treturn mapper.select(meta.entity, field, [])\n\t\t\t\tcase Operation.paginate:\n\t\t\t\t\treturn paginate(mapper, meta.entity, field)\n\t\t\t\tcase Operation.create:\n\t\t\t\tcase Operation.update:\n\t\t\t\tcase Operation.delete:\n\t\t\t\tcase Operation.upsert:\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t}\n\t\t\treturn assertNever(meta.operation)\n\t\t})()\n\t}\n\treturn trxResult\n}\n"],"names":["createPaginationHelper","ObjectNode","ImplementationException","readOperationMeta","Operation","assertNever"],"mappings":";;;;;;;;;;;;;;AAQO,MAAM,WAAW,OACvB,QACA,QACA,aACI;AACJ,QAAM,mBAAmBA,gBAAAA,uBAAuB,QAAQ;AACxD,QAAM,aAAa,iBAAiB,qBACjC,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,UAAU,CAAA,CAAE,IACrD;AACH,QAAM,QAAQ,iBAAiB,YAAY,MAAM,OAAO,OAAO,QAAQ,iBAAiB,WAAW,CAAA,CAAE,IAAI;AAEzG,SAAO,iBAAiB,eAAe,YAAY,KAAK;AACzD;AAEO,MAAM,wBAAwB,OACpC,UACA,QACA,WACkC;AAClC,QAAM,YAAiC,CAAA;AAGvC,aAAW,SAAS,SAAS,QAAQ;AACpC,QAAI,EAAE,iBAAiBC,WAAAA,aAAa;AACnC,YAAM,IAAIC,UAAAA,wBAAA;AAAA,IACX;AACA,UAAM,cAAc,OAAO,MAAM,IAAI;AACrC,UAAM,OAAOC,mBAAAA,kBAAkB,YAAY,UAAU;AACrD,cAAU,MAAM,KAAK,IAAI,OAAO,MAAM;AACrC,cAAQ,KAAK,WAAA;AAAA,QACZ,KAAKC,mBAAAA,UAAU;AACd,iBAAO,OAAO,aAAa,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAClD,KAAKA,mBAAAA,UAAU;AACd,iBAAO,OAAO,OAAO,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAC5C,KAAKA,mBAAAA,UAAU;AACd,iBAAO,SAAS,QAAQ,KAAK,QAAQ,KAAK;AAAA,QAC3C,KAAKA,mBAAAA,UAAU;AAAA,QACf,KAAKA,mBAAAA,UAAU;AAAA,QACf,KAAKA,mBAAAA,UAAU;AAAA,QACf,KAAKA,mBAAAA,UAAU;AACd,gBAAM,IAAIF,UAAAA,wBAAA;AAAA,MAAwB;AAEpC,aAAOG,YAAAA,YAAY,KAAK,SAAS;AAAA,IAClC,GAAA;AAAA,EACD;AACA,SAAO;AACR;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReadHelpers.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadHelpers.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { Mapper } from '../mapper'\nimport { ObjectNode } from '../inputProcessing'\nimport { assertNever, createPaginationHelper } from '../utils'\nimport { ImplementationException } from '../exception'\nimport { Operation, readOperationMeta } from '../schema'\nimport { GraphQLFieldMap } from 'graphql'\n\nexport const paginate = async (\n\tmapper: Mapper,\n\tentity: Model.Entity,\n\tqueryAst: ObjectNode<Input.PaginationQueryInput>,\n) => {\n\tconst paginationHelper = createPaginationHelper(queryAst)\n\tconst totalCount = paginationHelper.requiresTotalCount\n\t\t? await mapper.count(entity, queryAst.args.filter || {})\n\t\t: undefined\n\tconst nodes = paginationHelper.nodeField ? await mapper.select(entity, paginationHelper.nodeField, []) : undefined\n\n\treturn paginationHelper.createResponse(totalCount, nodes)\n}\n\nexport const executeReadOperations = async (\n\tqueryAst: ObjectNode,\n\tfields: GraphQLFieldMap<any, any>,\n\tmapper: Mapper,\n): Promise<Record<string, any>> => {\n\tconst trxResult: Record<string, any> = {}\n\n\t// todo execute in parallel\n\tfor (const field of queryAst.fields) {\n\t\tif (!(field instanceof ObjectNode)) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\t\tconst fieldConfig = fields[field.name]\n\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\ttrxResult[field.alias] = await (() => {\n\t\t\tswitch (meta.operation) {\n\t\t\t\tcase Operation.get:\n\t\t\t\t\treturn mapper.selectUnique(meta.entity, field, [])\n\t\t\t\tcase Operation.list:\n\t\t\t\t\treturn mapper.select(meta.entity, field, [])\n\t\t\t\tcase Operation.paginate:\n\t\t\t\t\treturn paginate(mapper, meta.entity, field)\n\t\t\t\tcase Operation.create:\n\t\t\t\tcase Operation.update:\n\t\t\t\tcase Operation.delete:\n\t\t\t\tcase Operation.upsert:\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t}\n\t\t\treturn assertNever(meta.operation)\n\t\t})()\n\t}\n\treturn trxResult\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAQO,MAAM,WAAW,OACvB,QACA,QACA,aACI;AACJ,QAAM,mBAAmB,uBAAuB,QAAQ;AACxD,QAAM,aAAa,iBAAiB,qBACjC,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,UAAU,CAAA,CAAE,IACrD;AACH,QAAM,QAAQ,iBAAiB,YAAY,MAAM,OAAO,OAAO,QAAQ,iBAAiB,WAAW,CAAA,CAAE,IAAI;AAEzG,SAAO,iBAAiB,eAAe,YAAY,KAAK;AACzD;AAEO,MAAM,wBAAwB,OACpC,UACA,QACA,WACkC;AAClC,QAAM,YAAiC,CAAA;AAGvC,aAAW,SAAS,SAAS,QAAQ;AACpC,QAAI,EAAE,iBAAiB,aAAa;AACnC,YAAM,IAAI,wBAAA;AAAA,IACX;AACA,UAAM,cAAc,OAAO,MAAM,IAAI;AACrC,UAAM,OAAO,kBAAkB,YAAY,UAAU;AACrD,cAAU,MAAM,KAAK,IAAI,OAAO,MAAM;AACrC,cAAQ,KAAK,WAAA;AAAA,QACZ,KAAK,UAAU;AACd,iBAAO,OAAO,aAAa,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAClD,KAAK,UAAU;AACd,iBAAO,OAAO,OAAO,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAC5C,KAAK,UAAU;AACd,iBAAO,SAAS,QAAQ,KAAK,QAAQ,KAAK;AAAA,QAC3C,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AACd,gBAAM,IAAI,wBAAA;AAAA,MAAwB;AAEpC,aAAO,YAAY,KAAK,SAAS;AAAA,IAClC,GAAA;AAAA,EACD;AACA,SAAO;AACR;"}
1
+ {"version":3,"file":"ReadHelpers.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadHelpers.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { Mapper } from '../mapper/index.js'\nimport { ObjectNode } from '../inputProcessing/index.js'\nimport { assertNever, createPaginationHelper } from '../utils/index.js'\nimport { ImplementationException } from '../exception.js'\nimport { Operation, readOperationMeta } from '../schema/index.js'\nimport { GraphQLFieldMap } from 'graphql'\n\nexport const paginate = async (\n\tmapper: Mapper,\n\tentity: Model.Entity,\n\tqueryAst: ObjectNode<Input.PaginationQueryInput>,\n) => {\n\tconst paginationHelper = createPaginationHelper(queryAst)\n\tconst totalCount = paginationHelper.requiresTotalCount\n\t\t? await mapper.count(entity, queryAst.args.filter || {})\n\t\t: undefined\n\tconst nodes = paginationHelper.nodeField ? await mapper.select(entity, paginationHelper.nodeField, []) : undefined\n\n\treturn paginationHelper.createResponse(totalCount, nodes)\n}\n\nexport const executeReadOperations = async (\n\tqueryAst: ObjectNode,\n\tfields: GraphQLFieldMap<any, any>,\n\tmapper: Mapper,\n): Promise<Record<string, any>> => {\n\tconst trxResult: Record<string, any> = {}\n\n\t// todo execute in parallel\n\tfor (const field of queryAst.fields) {\n\t\tif (!(field instanceof ObjectNode)) {\n\t\t\tthrow new ImplementationException()\n\t\t}\n\t\tconst fieldConfig = fields[field.name]\n\t\tconst meta = readOperationMeta(fieldConfig.extensions)\n\t\ttrxResult[field.alias] = await (() => {\n\t\t\tswitch (meta.operation) {\n\t\t\t\tcase Operation.get:\n\t\t\t\t\treturn mapper.selectUnique(meta.entity, field, [])\n\t\t\t\tcase Operation.list:\n\t\t\t\t\treturn mapper.select(meta.entity, field, [])\n\t\t\t\tcase Operation.paginate:\n\t\t\t\t\treturn paginate(mapper, meta.entity, field)\n\t\t\t\tcase Operation.create:\n\t\t\t\tcase Operation.update:\n\t\t\t\tcase Operation.delete:\n\t\t\t\tcase Operation.upsert:\n\t\t\t\t\tthrow new ImplementationException()\n\t\t\t}\n\t\t\treturn assertNever(meta.operation)\n\t\t})()\n\t}\n\treturn trxResult\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAQO,MAAM,WAAW,OACvB,QACA,QACA,aACI;AACJ,QAAM,mBAAmB,uBAAuB,QAAQ;AACxD,QAAM,aAAa,iBAAiB,qBACjC,MAAM,OAAO,MAAM,QAAQ,SAAS,KAAK,UAAU,CAAA,CAAE,IACrD;AACH,QAAM,QAAQ,iBAAiB,YAAY,MAAM,OAAO,OAAO,QAAQ,iBAAiB,WAAW,CAAA,CAAE,IAAI;AAEzG,SAAO,iBAAiB,eAAe,YAAY,KAAK;AACzD;AAEO,MAAM,wBAAwB,OACpC,UACA,QACA,WACkC;AAClC,QAAM,YAAiC,CAAA;AAGvC,aAAW,SAAS,SAAS,QAAQ;AACpC,QAAI,EAAE,iBAAiB,aAAa;AACnC,YAAM,IAAI,wBAAA;AAAA,IACX;AACA,UAAM,cAAc,OAAO,MAAM,IAAI;AACrC,UAAM,OAAO,kBAAkB,YAAY,UAAU;AACrD,cAAU,MAAM,KAAK,IAAI,OAAO,MAAM;AACrC,cAAQ,KAAK,WAAA;AAAA,QACZ,KAAK,UAAU;AACd,iBAAO,OAAO,aAAa,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAClD,KAAK,UAAU;AACd,iBAAO,OAAO,OAAO,KAAK,QAAQ,OAAO,CAAA,CAAE;AAAA,QAC5C,KAAK,UAAU;AACd,iBAAO,SAAS,QAAQ,KAAK,QAAQ,KAAK;AAAA,QAC3C,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AAAA,QACf,KAAK,UAAU;AACd,gBAAM,IAAI,wBAAA;AAAA,MAAwB;AAEpC,aAAO,YAAY,KAAK,SAAS;AAAA,IAClC,GAAA;AAAA,EACD;AACA,SAAO;AACR;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReadResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadResolver.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations, paginate } from './ReadHelpers'\n\nexport class ReadResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly queryAstFactory: GraphQlQueryAstFactory,\n\t) {}\n\n\tpublic async resolveQuery(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\treturn this.mapperFactory.transaction(async mapper => {\n\t\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t\t})\n\t}\n\n\tpublic async resolveListQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.ListQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().select(entity, queryAst, [])\n\t}\n\n\tpublic async resolveGetQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.UniqueQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().selectUnique(entity, queryAst, [])\n\t}\n\n\tpublic async resolvePaginationQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.PaginationQueryInput> = this.queryAstFactory.create(info)\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn await paginate(mapper, entity, queryAst)\n\t}\n}\n"],"names":["GraphQlQueryAstFactory","executeReadOperations","paginate"],"mappings":";;;;AAOO,MAAM,aAAa;AAAA,EACzB,YACkB,eACA,iBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,kBAAA;AAAA,EACf;AAAA,EAEH,MAAa,aAAa,MAA0B;AACnD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAASA,uBAAAA,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AACzE,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,WAAOC,kCAAsB,UAAU,QAAQ,MAAM;AAAA,EACtD;AAAA,EAEA,MAAa,mBAAmB,MAA0B;AACzD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAASD,uBAAAA,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AAEzE,WAAO,KAAK,cAAc,YAAY,OAAM,WAAU;AACrD,aAAOC,kCAAsB,UAAU,QAAQ,MAAM;AAAA,IACtD,CAAC;AAAA,EACF;AAAA,EAEA,MAAa,iBAAiB,QAAsB,MAA0B;AAC7E,UAAM,WAA6C,KAAK,gBAAgB,OAAO,IAAI;AACnF,WAAO,MAAM,KAAK,cAAc,OAAA,EAAS,OAAO,QAAQ,UAAU,EAAE;AAAA,EACrE;AAAA,EAEA,MAAa,gBAAgB,QAAsB,MAA0B;AAC5E,UAAM,WAA+C,KAAK,gBAAgB,OAAO,IAAI;AACrF,WAAO,MAAM,KAAK,cAAc,OAAA,EAAS,aAAa,QAAQ,UAAU,EAAE;AAAA,EAC3E;AAAA,EAEA,MAAa,uBAAuB,QAAsB,MAA0B;AACnF,UAAM,WAAmD,KAAK,gBAAgB,OAAO,IAAI;AACzF,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,WAAO,MAAMC,YAAAA,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EAC/C;AACD;;"}
1
+ {"version":3,"file":"ReadResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadResolver.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { MapperFactory } from '../mapper/index.js'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory.js'\nimport { ObjectNode } from '../inputProcessing/index.js'\nimport { executeReadOperations, paginate } from './ReadHelpers.js'\n\nexport class ReadResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly queryAstFactory: GraphQlQueryAstFactory,\n\t) {}\n\n\tpublic async resolveQuery(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\treturn this.mapperFactory.transaction(async mapper => {\n\t\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t\t})\n\t}\n\n\tpublic async resolveListQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.ListQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().select(entity, queryAst, [])\n\t}\n\n\tpublic async resolveGetQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.UniqueQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().selectUnique(entity, queryAst, [])\n\t}\n\n\tpublic async resolvePaginationQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.PaginationQueryInput> = this.queryAstFactory.create(info)\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn await paginate(mapper, entity, queryAst)\n\t}\n}\n"],"names":["GraphQlQueryAstFactory","executeReadOperations","paginate"],"mappings":";;;;AAOO,MAAM,aAAa;AAAA,EACzB,YACkB,eACA,iBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,kBAAA;AAAA,EACf;AAAA,EAEH,MAAa,aAAa,MAA0B;AACnD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAASA,uBAAAA,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AACzE,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,WAAOC,kCAAsB,UAAU,QAAQ,MAAM;AAAA,EACtD;AAAA,EAEA,MAAa,mBAAmB,MAA0B;AACzD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAASD,uBAAAA,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AAEzE,WAAO,KAAK,cAAc,YAAY,OAAM,WAAU;AACrD,aAAOC,kCAAsB,UAAU,QAAQ,MAAM;AAAA,IACtD,CAAC;AAAA,EACF;AAAA,EAEA,MAAa,iBAAiB,QAAsB,MAA0B;AAC7E,UAAM,WAA6C,KAAK,gBAAgB,OAAO,IAAI;AACnF,WAAO,MAAM,KAAK,cAAc,OAAA,EAAS,OAAO,QAAQ,UAAU,EAAE;AAAA,EACrE;AAAA,EAEA,MAAa,gBAAgB,QAAsB,MAA0B;AAC5E,UAAM,WAA+C,KAAK,gBAAgB,OAAO,IAAI;AACrF,WAAO,MAAM,KAAK,cAAc,OAAA,EAAS,aAAa,QAAQ,UAAU,EAAE;AAAA,EAC3E;AAAA,EAEA,MAAa,uBAAuB,QAAsB,MAA0B;AACnF,UAAM,WAAmD,KAAK,gBAAgB,OAAO,IAAI;AACzF,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,WAAO,MAAMC,YAAAA,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EAC/C;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReadResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadResolver.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory'\nimport { ObjectNode } from '../inputProcessing'\nimport { executeReadOperations, paginate } from './ReadHelpers'\n\nexport class ReadResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly queryAstFactory: GraphQlQueryAstFactory,\n\t) {}\n\n\tpublic async resolveQuery(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\treturn this.mapperFactory.transaction(async mapper => {\n\t\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t\t})\n\t}\n\n\tpublic async resolveListQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.ListQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().select(entity, queryAst, [])\n\t}\n\n\tpublic async resolveGetQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.UniqueQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().selectUnique(entity, queryAst, [])\n\t}\n\n\tpublic async resolvePaginationQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.PaginationQueryInput> = this.queryAstFactory.create(info)\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn await paginate(mapper, entity, queryAst)\n\t}\n}\n"],"names":[],"mappings":";;AAOO,MAAM,aAAa;AAAA,EACzB,YACkB,eACA,iBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,kBAAA;AAAA,EACf;AAAA,EAEH,MAAa,aAAa,MAA0B;AACnD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAAS,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AACzE,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,WAAO,sBAAsB,UAAU,QAAQ,MAAM;AAAA,EACtD;AAAA,EAEA,MAAa,mBAAmB,MAA0B;AACzD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAAS,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AAEzE,WAAO,KAAK,cAAc,YAAY,OAAM,WAAU;AACrD,aAAO,sBAAsB,UAAU,QAAQ,MAAM;AAAA,IACtD,CAAC;AAAA,EACF;AAAA,EAEA,MAAa,iBAAiB,QAAsB,MAA0B;AAC7E,UAAM,WAA6C,KAAK,gBAAgB,OAAO,IAAI;AACnF,WAAO,MAAM,KAAK,cAAc,OAAA,EAAS,OAAO,QAAQ,UAAU,EAAE;AAAA,EACrE;AAAA,EAEA,MAAa,gBAAgB,QAAsB,MAA0B;AAC5E,UAAM,WAA+C,KAAK,gBAAgB,OAAO,IAAI;AACrF,WAAO,MAAM,KAAK,cAAc,OAAA,EAAS,aAAa,QAAQ,UAAU,EAAE;AAAA,EAC3E;AAAA,EAEA,MAAa,uBAAuB,QAAsB,MAA0B;AACnF,UAAM,WAAmD,KAAK,gBAAgB,OAAO,IAAI;AACzF,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,WAAO,MAAM,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EAC/C;AACD;"}
1
+ {"version":3,"file":"ReadResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ReadResolver.ts"],"sourcesContent":["import { Input, Model } from '@contember/schema'\nimport { MapperFactory } from '../mapper/index.js'\nimport { GraphQLResolveInfo } from 'graphql'\nimport { GraphQlQueryAstFactory } from './GraphQlQueryAstFactory.js'\nimport { ObjectNode } from '../inputProcessing/index.js'\nimport { executeReadOperations, paginate } from './ReadHelpers.js'\n\nexport class ReadResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly queryAstFactory: GraphQlQueryAstFactory,\n\t) {}\n\n\tpublic async resolveQuery(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t}\n\n\tpublic async resolveTransaction(info: GraphQLResolveInfo) {\n\t\tconst queryAst = this.queryAstFactory.create(info)\n\t\tconst fields = GraphQlQueryAstFactory.resolveObjectType(info.returnType).getFields()\n\n\t\treturn this.mapperFactory.transaction(async mapper => {\n\t\t\treturn executeReadOperations(queryAst, fields, mapper)\n\t\t})\n\t}\n\n\tpublic async resolveListQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.ListQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().select(entity, queryAst, [])\n\t}\n\n\tpublic async resolveGetQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.UniqueQueryInput> = this.queryAstFactory.create(info)\n\t\treturn await this.mapperFactory.create().selectUnique(entity, queryAst, [])\n\t}\n\n\tpublic async resolvePaginationQuery(entity: Model.Entity, info: GraphQLResolveInfo) {\n\t\tconst queryAst: ObjectNode<Input.PaginationQueryInput> = this.queryAstFactory.create(info)\n\t\tconst mapper = this.mapperFactory.create()\n\t\treturn await paginate(mapper, entity, queryAst)\n\t}\n}\n"],"names":[],"mappings":";;AAOO,MAAM,aAAa;AAAA,EACzB,YACkB,eACA,iBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,kBAAA;AAAA,EACf;AAAA,EAEH,MAAa,aAAa,MAA0B;AACnD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAAS,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AACzE,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,WAAO,sBAAsB,UAAU,QAAQ,MAAM;AAAA,EACtD;AAAA,EAEA,MAAa,mBAAmB,MAA0B;AACzD,UAAM,WAAW,KAAK,gBAAgB,OAAO,IAAI;AACjD,UAAM,SAAS,uBAAuB,kBAAkB,KAAK,UAAU,EAAE,UAAA;AAEzE,WAAO,KAAK,cAAc,YAAY,OAAM,WAAU;AACrD,aAAO,sBAAsB,UAAU,QAAQ,MAAM;AAAA,IACtD,CAAC;AAAA,EACF;AAAA,EAEA,MAAa,iBAAiB,QAAsB,MAA0B;AAC7E,UAAM,WAA6C,KAAK,gBAAgB,OAAO,IAAI;AACnF,WAAO,MAAM,KAAK,cAAc,OAAA,EAAS,OAAO,QAAQ,UAAU,EAAE;AAAA,EACrE;AAAA,EAEA,MAAa,gBAAgB,QAAsB,MAA0B;AAC5E,UAAM,WAA+C,KAAK,gBAAgB,OAAO,IAAI;AACrF,WAAO,MAAM,KAAK,cAAc,OAAA,EAAS,aAAa,QAAQ,UAAU,EAAE;AAAA,EAC3E;AAAA,EAEA,MAAa,uBAAuB,QAAsB,MAA0B;AACnF,UAAM,WAAmD,KAAK,gBAAgB,OAAO,IAAI;AACzF,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,WAAO,MAAM,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EAC/C;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RefreshViewResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/RefreshViewResolver.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { wrapIdentifier } from '@contember/database'\n\nexport class RefreshViewResolver {\n\tconstructor(\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t) {\n\t}\n\n\tpublic async resolve(entity: string, options?: { concurrently?: boolean }): Promise<{ ok: boolean }> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst entityModel = this.schema.model.entities[entity]\n\t\tif (!entityModel) {\n\t\t\tthrow new Error(`Entity ${entity} not found`)\n\t\t}\n\t\tconst concurrently = options?.concurrently ? ' CONCURRENTLY' : ''\n\t\tawait mapper.db.query(`REFRESH MATERIALIZED VIEW${concurrently} ${wrapIdentifier(mapper.db.schema)}.${wrapIdentifier(entityModel.tableName)}`)\n\n\t\treturn { ok: true }\n\t}\n}\n"],"names":["wrapIdentifier"],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,QACA,eAChB;AAFgB,SAAA,SAAA;AACA,SAAA,gBAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,QAAgB,SAAgE;AACpG,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,cAAc,KAAK,OAAO,MAAM,SAAS,MAAM;AACrD,QAAI,CAAC,aAAa;AACjB,YAAM,IAAI,MAAM,UAAU,MAAM,YAAY;AAAA,IAC7C;AACA,UAAM,eAAe,SAAS,eAAe,kBAAkB;AAC/D,UAAM,OAAO,GAAG,MAAM,4BAA4B,YAAY,IAAIA,SAAAA,eAAe,OAAO,GAAG,MAAM,CAAC,IAAIA,SAAAA,eAAe,YAAY,SAAS,CAAC,EAAE;AAE7I,WAAO,EAAE,IAAI,KAAA;AAAA,EACd;AACD;;"}
1
+ {"version":3,"file":"RefreshViewResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/RefreshViewResolver.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { MapperFactory } from '../mapper/index.js'\nimport { wrapIdentifier } from '@contember/database'\n\nexport class RefreshViewResolver {\n\tconstructor(\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t) {\n\t}\n\n\tpublic async resolve(entity: string, options?: { concurrently?: boolean }): Promise<{ ok: boolean }> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst entityModel = this.schema.model.entities[entity]\n\t\tif (!entityModel) {\n\t\t\tthrow new Error(`Entity ${entity} not found`)\n\t\t}\n\t\tconst concurrently = options?.concurrently ? ' CONCURRENTLY' : ''\n\t\tawait mapper.db.query(`REFRESH MATERIALIZED VIEW${concurrently} ${wrapIdentifier(mapper.db.schema)}.${wrapIdentifier(entityModel.tableName)}`)\n\n\t\treturn { ok: true }\n\t}\n}\n"],"names":["wrapIdentifier"],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,QACA,eAChB;AAFgB,SAAA,SAAA;AACA,SAAA,gBAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,QAAgB,SAAgE;AACpG,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,cAAc,KAAK,OAAO,MAAM,SAAS,MAAM;AACrD,QAAI,CAAC,aAAa;AACjB,YAAM,IAAI,MAAM,UAAU,MAAM,YAAY;AAAA,IAC7C;AACA,UAAM,eAAe,SAAS,eAAe,kBAAkB;AAC/D,UAAM,OAAO,GAAG,MAAM,4BAA4B,YAAY,IAAIA,SAAAA,eAAe,OAAO,GAAG,MAAM,CAAC,IAAIA,SAAAA,eAAe,YAAY,SAAS,CAAC,EAAE;AAE7I,WAAO,EAAE,IAAI,KAAA;AAAA,EACd;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RefreshViewResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/RefreshViewResolver.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { MapperFactory } from '../mapper'\nimport { wrapIdentifier } from '@contember/database'\n\nexport class RefreshViewResolver {\n\tconstructor(\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t) {\n\t}\n\n\tpublic async resolve(entity: string, options?: { concurrently?: boolean }): Promise<{ ok: boolean }> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst entityModel = this.schema.model.entities[entity]\n\t\tif (!entityModel) {\n\t\t\tthrow new Error(`Entity ${entity} not found`)\n\t\t}\n\t\tconst concurrently = options?.concurrently ? ' CONCURRENTLY' : ''\n\t\tawait mapper.db.query(`REFRESH MATERIALIZED VIEW${concurrently} ${wrapIdentifier(mapper.db.schema)}.${wrapIdentifier(entityModel.tableName)}`)\n\n\t\treturn { ok: true }\n\t}\n}\n"],"names":[],"mappings":";AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,QACA,eAChB;AAFgB,SAAA,SAAA;AACA,SAAA,gBAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,QAAgB,SAAgE;AACpG,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,cAAc,KAAK,OAAO,MAAM,SAAS,MAAM;AACrD,QAAI,CAAC,aAAa;AACjB,YAAM,IAAI,MAAM,UAAU,MAAM,YAAY;AAAA,IAC7C;AACA,UAAM,eAAe,SAAS,eAAe,kBAAkB;AAC/D,UAAM,OAAO,GAAG,MAAM,4BAA4B,YAAY,IAAI,eAAe,OAAO,GAAG,MAAM,CAAC,IAAI,eAAe,YAAY,SAAS,CAAC,EAAE;AAE7I,WAAO,EAAE,IAAI,KAAA;AAAA,EACd;AACD;"}
1
+ {"version":3,"file":"RefreshViewResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/RefreshViewResolver.ts"],"sourcesContent":["import { Schema } from '@contember/schema'\nimport { MapperFactory } from '../mapper/index.js'\nimport { wrapIdentifier } from '@contember/database'\n\nexport class RefreshViewResolver {\n\tconstructor(\n\t\tprivate readonly schema: Schema,\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t) {\n\t}\n\n\tpublic async resolve(entity: string, options?: { concurrently?: boolean }): Promise<{ ok: boolean }> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst entityModel = this.schema.model.entities[entity]\n\t\tif (!entityModel) {\n\t\t\tthrow new Error(`Entity ${entity} not found`)\n\t\t}\n\t\tconst concurrently = options?.concurrently ? ' CONCURRENTLY' : ''\n\t\tawait mapper.db.query(`REFRESH MATERIALIZED VIEW${concurrently} ${wrapIdentifier(mapper.db.schema)}.${wrapIdentifier(entityModel.tableName)}`)\n\n\t\treturn { ok: true }\n\t}\n}\n"],"names":[],"mappings":";AAIO,MAAM,oBAAoB;AAAA,EAChC,YACkB,QACA,eAChB;AAFgB,SAAA,SAAA;AACA,SAAA,gBAAA;AAAA,EAElB;AAAA,EAEA,MAAa,QAAQ,QAAgB,SAAgE;AACpG,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,cAAc,KAAK,OAAO,MAAM,SAAS,MAAM;AACrD,QAAI,CAAC,aAAa;AACjB,YAAM,IAAI,MAAM,UAAU,MAAM,YAAY;AAAA,IAC7C;AACA,UAAM,eAAe,SAAS,eAAe,kBAAkB;AAC/D,UAAM,OAAO,GAAG,MAAM,4BAA4B,YAAY,IAAI,eAAe,OAAO,GAAG,MAAM,CAAC,IAAI,eAAe,YAAY,SAAS,CAAC,EAAE;AAE7I,WAAO,EAAE,IAAI,KAAA;AAAA,EACd;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ValidationResolver.ts"],"sourcesContent":["import { Input, Model, Result } from '@contember/schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator, ValidationResult } from '../input-validation'\nimport { MapperFactory } from '../mapper'\n\nexport class ValidationResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t) {}\n\n\tpublic async validateUpdate(entity: Model.Entity, input: Input.UpdateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic async validateCreate(entity: Model.Entity, input: Input.CreateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static createValidationResponse(validationResult: ValidationResult): Result.ValidationResult {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: validationResult.map(it => ({\n\t\t\t\tmessage: it.message,\n\t\t\t\tpath: it.path.map(part => {\n\t\t\t\t\tif ('field' in part) {\n\t\t\t\t\t\treturn { __typename: '_FieldPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\tif ('index' in part) {\n\t\t\t\t\t\treturn { __typename: '_IndexPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(part)\n\t\t\t\t}),\n\t\t\t})),\n\t\t}\n\t}\n}\n"],"names":["assertNever"],"mappings":";;;;AAKO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,eACA,gBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAa,eAAe,QAAsB,OAA4D;AAC7G,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,IAAC,CACP;AAED,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEX;AAAA,EAEA,MAAa,eAAe,QAAsB,OAA4D;AAC7G,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,MACN,cAAc;AAAA,IAAA,CACd;AACD,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEX;AAAA,EAEA,OAAc,yBAAyB,kBAA6D;AACnG,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,iBAAiB,IAAI,CAAA,QAAO;AAAA,QACnC,SAAS,GAAG;AAAA,QACZ,MAAM,GAAG,KAAK,IAAI,CAAA,SAAQ;AACzB,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAA;AAAA,UAC/C;AACA,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAA;AAAA,UAC/C;AACA,iBAAOA,YAAAA,YAAgB;AAAA,QACxB,CAAC;AAAA,MAAA,EACA;AAAA,IAAA;AAAA,EAEJ;AACD;;"}
1
+ {"version":3,"file":"ValidationResolver.cjs","sources":["../../../../../packages/engine-content-api/src/resolvers/ValidationResolver.ts"],"sourcesContent":["import { Input, Model, Result } from '@contember/schema'\nimport { assertNever } from '../utils/index.js'\nimport { InputPreValidator, ValidationResult } from '../input-validation/index.js'\nimport { MapperFactory } from '../mapper/index.js'\n\nexport class ValidationResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t) {}\n\n\tpublic async validateUpdate(entity: Model.Entity, input: Input.UpdateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic async validateCreate(entity: Model.Entity, input: Input.CreateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static createValidationResponse(validationResult: ValidationResult): Result.ValidationResult {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: validationResult.map(it => ({\n\t\t\t\tmessage: it.message,\n\t\t\t\tpath: it.path.map(part => {\n\t\t\t\t\tif ('field' in part) {\n\t\t\t\t\t\treturn { __typename: '_FieldPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\tif ('index' in part) {\n\t\t\t\t\t\treturn { __typename: '_IndexPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(part)\n\t\t\t\t}),\n\t\t\t})),\n\t\t}\n\t}\n}\n"],"names":["assertNever"],"mappings":";;;;AAKO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,eACA,gBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAa,eAAe,QAAsB,OAA4D;AAC7G,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,IAAC,CACP;AAED,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEX;AAAA,EAEA,MAAa,eAAe,QAAsB,OAA4D;AAC7G,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,MACN,cAAc;AAAA,IAAA,CACd;AACD,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEX;AAAA,EAEA,OAAc,yBAAyB,kBAA6D;AACnG,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,iBAAiB,IAAI,CAAA,QAAO;AAAA,QACnC,SAAS,GAAG;AAAA,QACZ,MAAM,GAAG,KAAK,IAAI,CAAA,SAAQ;AACzB,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAA;AAAA,UAC/C;AACA,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAA;AAAA,UAC/C;AACA,iBAAOA,YAAAA,YAAgB;AAAA,QACxB,CAAC;AAAA,MAAA,EACA;AAAA,IAAA;AAAA,EAEJ;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ValidationResolver.ts"],"sourcesContent":["import { Input, Model, Result } from '@contember/schema'\nimport { assertNever } from '../utils'\nimport { InputPreValidator, ValidationResult } from '../input-validation'\nimport { MapperFactory } from '../mapper'\n\nexport class ValidationResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t) {}\n\n\tpublic async validateUpdate(entity: Model.Entity, input: Input.UpdateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic async validateCreate(entity: Model.Entity, input: Input.CreateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static createValidationResponse(validationResult: ValidationResult): Result.ValidationResult {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: validationResult.map(it => ({\n\t\t\t\tmessage: it.message,\n\t\t\t\tpath: it.path.map(part => {\n\t\t\t\t\tif ('field' in part) {\n\t\t\t\t\t\treturn { __typename: '_FieldPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\tif ('index' in part) {\n\t\t\t\t\t\treturn { __typename: '_IndexPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(part)\n\t\t\t\t}),\n\t\t\t})),\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,eACA,gBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAa,eAAe,QAAsB,OAA4D;AAC7G,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,IAAC,CACP;AAED,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEX;AAAA,EAEA,MAAa,eAAe,QAAsB,OAA4D;AAC7G,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,MACN,cAAc;AAAA,IAAA,CACd;AACD,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEX;AAAA,EAEA,OAAc,yBAAyB,kBAA6D;AACnG,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,iBAAiB,IAAI,CAAA,QAAO;AAAA,QACnC,SAAS,GAAG;AAAA,QACZ,MAAM,GAAG,KAAK,IAAI,CAAA,SAAQ;AACzB,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAA;AAAA,UAC/C;AACA,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAA;AAAA,UAC/C;AACA,iBAAO,YAAgB;AAAA,QACxB,CAAC;AAAA,MAAA,EACA;AAAA,IAAA;AAAA,EAEJ;AACD;"}
1
+ {"version":3,"file":"ValidationResolver.js","sources":["../../../../../packages/engine-content-api/src/resolvers/ValidationResolver.ts"],"sourcesContent":["import { Input, Model, Result } from '@contember/schema'\nimport { assertNever } from '../utils/index.js'\nimport { InputPreValidator, ValidationResult } from '../input-validation/index.js'\nimport { MapperFactory } from '../mapper/index.js'\n\nexport class ValidationResolver {\n\tconstructor(\n\t\tprivate readonly mapperFactory: MapperFactory,\n\t\tprivate readonly inputValidator: InputPreValidator,\n\t) {}\n\n\tpublic async validateUpdate(entity: Model.Entity, input: Input.UpdateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateUpdate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\twhere: input.by,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t})\n\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic async validateCreate(entity: Model.Entity, input: Input.CreateInput): Promise<Result.ValidationResult> {\n\t\tconst mapper = this.mapperFactory.create()\n\t\tconst validationResult = await this.inputValidator.validateCreate({\n\t\t\tmapper,\n\t\t\tentity,\n\t\t\tdata: input.data,\n\t\t\tpath: [],\n\t\t\toverRelation: null,\n\t\t})\n\t\tif (validationResult.length > 0) {\n\t\t\treturn ValidationResolver.createValidationResponse(validationResult)\n\t\t}\n\t\treturn {\n\t\t\tvalid: true,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static createValidationResponse(validationResult: ValidationResult): Result.ValidationResult {\n\t\treturn {\n\t\t\tvalid: false,\n\t\t\terrors: validationResult.map(it => ({\n\t\t\t\tmessage: it.message,\n\t\t\t\tpath: it.path.map(part => {\n\t\t\t\t\tif ('field' in part) {\n\t\t\t\t\t\treturn { __typename: '_FieldPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\tif ('index' in part) {\n\t\t\t\t\t\treturn { __typename: '_IndexPathFragment', ...part }\n\t\t\t\t\t}\n\t\t\t\t\treturn assertNever(part)\n\t\t\t\t}),\n\t\t\t})),\n\t\t}\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,mBAAmB;AAAA,EAC/B,YACkB,eACA,gBAChB;AAFgB,SAAA,gBAAA;AACA,SAAA,iBAAA;AAAA,EACf;AAAA,EAEH,MAAa,eAAe,QAAsB,OAA4D;AAC7G,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,IAAC,CACP;AAED,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEX;AAAA,EAEA,MAAa,eAAe,QAAsB,OAA4D;AAC7G,UAAM,SAAS,KAAK,cAAc,OAAA;AAClC,UAAM,mBAAmB,MAAM,KAAK,eAAe,eAAe;AAAA,MACjE;AAAA,MACA;AAAA,MACA,MAAM,MAAM;AAAA,MACZ,MAAM,CAAA;AAAA,MACN,cAAc;AAAA,IAAA,CACd;AACD,QAAI,iBAAiB,SAAS,GAAG;AAChC,aAAO,mBAAmB,yBAAyB,gBAAgB;AAAA,IACpE;AACA,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,CAAA;AAAA,IAAC;AAAA,EAEX;AAAA,EAEA,OAAc,yBAAyB,kBAA6D;AACnG,WAAO;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,iBAAiB,IAAI,CAAA,QAAO;AAAA,QACnC,SAAS,GAAG;AAAA,QACZ,MAAM,GAAG,KAAK,IAAI,CAAA,SAAQ;AACzB,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAA;AAAA,UAC/C;AACA,cAAI,WAAW,MAAM;AACpB,mBAAO,EAAE,YAAY,sBAAsB,GAAG,KAAA;AAAA,UAC/C;AACA,iBAAO,YAAgB;AAAA,QACxB,CAAC;AAAA,MAAA,EACA;AAAA,IAAA;AAAA,EAEJ;AACD;"}
@@ -71,6 +71,8 @@ class ColumnTypeResolver {
71
71
  return this.customTypeProvider.uuidType;
72
72
  case schema.Model.ColumnType.Double:
73
73
  return graphql.GraphQLFloat;
74
+ case schema.Model.ColumnType.Numeric:
75
+ return this.customTypeProvider.decimalType;
74
76
  case schema.Model.ColumnType.Bool:
75
77
  return graphql.GraphQLBoolean;
76
78
  case schema.Model.ColumnType.DateTime:
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnTypeResolver.cjs","sources":["../../../../../packages/engine-content-api/src/schema/ColumnTypeResolver.ts"],"sourcesContent":["import { GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLInt, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLString } from 'graphql'\nimport { Model } from '@contember/schema'\nimport { EnumsProvider } from './EnumsProvider'\nimport { CustomTypesProvider } from './CustomTypesProvider'\nimport { ImplementationException } from '../exception'\nimport { singletonFactory } from '../utils'\n\ntype ScalarType = Exclude<Model.ColumnType, Model.ColumnType.Enum>\n\nexport type ColumnGraphQLType = GraphQLScalarType | GraphQLEnumType | GraphQLList<GraphQLNonNull<GraphQLScalarType | GraphQLEnumType>>\n\nexport class ColumnTypeResolver {\n\tprivate schema: Model.Schema\n\tprivate enumsProvider: EnumsProvider\n\n\tprivate readonly aliasedTypes = singletonFactory<{ scalar: GraphQLScalarType; base: ScalarType }, string, ScalarType>(\n\t\tthis.createAliasedType.bind(this),\n\t)\n\n\tconstructor(\n\t\tschema: Model.Schema,\n\t\tenumsProvider: EnumsProvider,\n\t\tprivate readonly customTypeProvider: CustomTypesProvider,\n\t) {\n\t\tthis.schema = schema\n\t\tthis.enumsProvider = enumsProvider\n\t}\n\n\tprivate createAliasedType(name: string, baseType: ScalarType): { scalar: GraphQLScalarType; base: ScalarType } {\n\t\tconst baseGraphqlType = this.getScalarType(baseType)\n\t\treturn {\n\t\t\tscalar: new GraphQLScalarType({\n\t\t\t\t...baseGraphqlType.toConfig(),\n\t\t\t\tname,\n\t\t\t\tdescription: null,\n\t\t\t}),\n\t\t\tbase: baseType,\n\t\t}\n\t}\n\n\tpublic getType(column: Model.AnyColumn): [type: ColumnGraphQLType, baseType: GraphQLScalarType | GraphQLEnumType] {\n\t\tconst baseType = this.getBaseType(column)\n\t\treturn [\n\t\t\tcolumn.list ? new GraphQLList(new GraphQLNonNull(baseType)) : baseType,\n\t\t\tbaseType,\n\t\t]\n\t}\n\n\tprivate getBaseType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tif (column.typeAlias) {\n\t\t\tif (column.type === Model.ColumnType.Enum) {\n\t\t\t\tthrow new Error('GraphQL type alias cannot be specified for enum type')\n\t\t\t}\n\t\t\tconst { scalar, base } = this.aliasedTypes(column.typeAlias, column.type)\n\t\t\tif (base !== column.type) {\n\t\t\t\tthrow new Error('GraphQL type alias with different base type found')\n\t\t\t}\n\t\t\treturn scalar\n\t\t}\n\t\treturn this.resolveType(column)\n\t}\n\n\tprivate resolveType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tswitch (column.type) {\n\t\t\tcase Model.ColumnType.Enum:\n\t\t\t\tif (this.enumsProvider.hasEnum(column.columnType)) {\n\t\t\t\t\treturn this.enumsProvider.getEnum(column.columnType)\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Undefined enum ${column.columnType}`)\n\t\t\tdefault:\n\t\t\t\treturn this.getScalarType(column.type)\n\t\t}\n\t}\n\n\tprivate getScalarType(type: ScalarType): GraphQLScalarType {\n\t\tswitch (type) {\n\t\t\tcase Model.ColumnType.Int:\n\t\t\t\treturn GraphQLInt\n\t\t\tcase Model.ColumnType.String:\n\t\t\t\treturn GraphQLString\n\t\t\tcase Model.ColumnType.Uuid:\n\t\t\t\treturn this.customTypeProvider.uuidType\n\t\t\tcase Model.ColumnType.Double:\n\t\t\t\treturn GraphQLFloat\n\t\t\tcase Model.ColumnType.Bool:\n\t\t\t\treturn GraphQLBoolean\n\t\t\tcase Model.ColumnType.DateTime:\n\t\t\t\treturn this.customTypeProvider.dateTimeType\n\t\t\tcase Model.ColumnType.Time:\n\t\t\t\treturn this.customTypeProvider.timeType\n\t\t\tcase Model.ColumnType.Date:\n\t\t\t\treturn this.customTypeProvider.dateType\n\t\t\tcase Model.ColumnType.Json:\n\t\t\t\treturn this.customTypeProvider.jsonType\n\t\t\tdefault:\n\t\t\t\t;(({}: never): never => {\n\t\t\t\t\tthrow new ImplementationException('Invalid column type')\n\t\t\t\t})(type)\n\t\t}\n\t}\n}\n"],"names":["schema","singletonFactory","GraphQLScalarType","GraphQLList","GraphQLNonNull","Model","GraphQLInt","GraphQLString","GraphQLFloat","GraphQLBoolean","ImplementationException"],"mappings":";;;;;;;;;;AAWO,MAAM,mBAAmB;AAAA,EAQ/B,YACCA,SACA,eACiB,oBAChB;AADgB,SAAA,qBAAA;AAVlB,kBAAA,MAAQ,QAAA;AACR,kBAAA,MAAQ,eAAA;AAER,kBAAA,MAAiB,gBAAeC,iBAAAA;AAAAA,MAC/B,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAAA,CACjC;AAOC,SAAK,SAASD;AACd,SAAK,gBAAgB;AAAA,EACtB;AAAA,EAEQ,kBAAkB,MAAc,UAAuE;AAC9G,UAAM,kBAAkB,KAAK,cAAc,QAAQ;AACnD,WAAO;AAAA,MACN,QAAQ,IAAIE,QAAAA,kBAAkB;AAAA,QAC7B,GAAG,gBAAgB,SAAA;AAAA,QACnB;AAAA,QACA,aAAa;AAAA,MAAA,CACb;AAAA,MACD,MAAM;AAAA,IAAA;AAAA,EAER;AAAA,EAEO,QAAQ,QAAmG;AACjH,UAAM,WAAW,KAAK,YAAY,MAAM;AACxC,WAAO;AAAA,MACN,OAAO,OAAO,IAAIC,QAAAA,YAAY,IAAIC,QAAAA,eAAe,QAAQ,CAAC,IAAI;AAAA,MAC9D;AAAA,IAAA;AAAA,EAEF;AAAA,EAEQ,YAAY,QAA8D;AACjF,QAAI,OAAO,WAAW;AACrB,UAAI,OAAO,SAASC,aAAM,WAAW,MAAM;AAC1C,cAAM,IAAI,MAAM,sDAAsD;AAAA,MACvE;AACA,YAAM,EAAE,QAAQ,KAAA,IAAS,KAAK,aAAa,OAAO,WAAW,OAAO,IAAI;AACxE,UAAI,SAAS,OAAO,MAAM;AACzB,cAAM,IAAI,MAAM,mDAAmD;AAAA,MACpE;AACA,aAAO;AAAA,IACR;AACA,WAAO,KAAK,YAAY,MAAM;AAAA,EAC/B;AAAA,EAEQ,YAAY,QAA8D;AACjF,YAAQ,OAAO,MAAA;AAAA,MACd,KAAKA,OAAAA,MAAM,WAAW;AACrB,YAAI,KAAK,cAAc,QAAQ,OAAO,UAAU,GAAG;AAClD,iBAAO,KAAK,cAAc,QAAQ,OAAO,UAAU;AAAA,QACpD;AACA,cAAM,IAAI,MAAM,kBAAkB,OAAO,UAAU,EAAE;AAAA,MACtD;AACC,eAAO,KAAK,cAAc,OAAO,IAAI;AAAA,IAAA;AAAA,EAExC;AAAA,EAEQ,cAAc,MAAqC;AAC1D,YAAQ,MAAA;AAAA,MACP,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAOC,QAAAA;AAAAA,MACR,KAAKD,OAAAA,MAAM,WAAW;AACrB,eAAOE,QAAAA;AAAAA,MACR,KAAKF,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAOG,QAAAA;AAAAA,MACR,KAAKH,OAAAA,MAAM,WAAW;AACrB,eAAOI,QAAAA;AAAAA,MACR,KAAKJ,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC;AACE,SAAC,CAAC,CAAA,MAAqB;AACvB,gBAAM,IAAIK,UAAAA,wBAAwB,qBAAqB;AAAA,QACxD,GAAG,IAAI;AAAA,IAAA;AAAA,EAEV;AACD;;"}
1
+ {"version":3,"file":"ColumnTypeResolver.cjs","sources":["../../../../../packages/engine-content-api/src/schema/ColumnTypeResolver.ts"],"sourcesContent":["import { GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLInt, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLString } from 'graphql'\nimport { Model } from '@contember/schema'\nimport { EnumsProvider } from './EnumsProvider.js'\nimport { CustomTypesProvider } from './CustomTypesProvider.js'\nimport { ImplementationException } from '../exception.js'\nimport { singletonFactory } from '../utils/index.js'\n\ntype ScalarType = Exclude<Model.ColumnType, Model.ColumnType.Enum>\n\nexport type ColumnGraphQLType = GraphQLScalarType | GraphQLEnumType | GraphQLList<GraphQLNonNull<GraphQLScalarType | GraphQLEnumType>>\n\nexport class ColumnTypeResolver {\n\tprivate schema: Model.Schema\n\tprivate enumsProvider: EnumsProvider\n\n\tprivate readonly aliasedTypes = singletonFactory<{ scalar: GraphQLScalarType; base: ScalarType }, string, ScalarType>(\n\t\tthis.createAliasedType.bind(this),\n\t)\n\n\tconstructor(\n\t\tschema: Model.Schema,\n\t\tenumsProvider: EnumsProvider,\n\t\tprivate readonly customTypeProvider: CustomTypesProvider,\n\t) {\n\t\tthis.schema = schema\n\t\tthis.enumsProvider = enumsProvider\n\t}\n\n\tprivate createAliasedType(name: string, baseType: ScalarType): { scalar: GraphQLScalarType; base: ScalarType } {\n\t\tconst baseGraphqlType = this.getScalarType(baseType)\n\t\treturn {\n\t\t\tscalar: new GraphQLScalarType({\n\t\t\t\t...baseGraphqlType.toConfig(),\n\t\t\t\tname,\n\t\t\t\tdescription: null,\n\t\t\t}),\n\t\t\tbase: baseType,\n\t\t}\n\t}\n\n\tpublic getType(column: Model.AnyColumn): [type: ColumnGraphQLType, baseType: GraphQLScalarType | GraphQLEnumType] {\n\t\tconst baseType = this.getBaseType(column)\n\t\treturn [\n\t\t\tcolumn.list ? new GraphQLList(new GraphQLNonNull(baseType)) : baseType,\n\t\t\tbaseType,\n\t\t]\n\t}\n\n\tprivate getBaseType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tif (column.typeAlias) {\n\t\t\tif (column.type === Model.ColumnType.Enum) {\n\t\t\t\tthrow new Error('GraphQL type alias cannot be specified for enum type')\n\t\t\t}\n\t\t\tconst { scalar, base } = this.aliasedTypes(column.typeAlias, column.type)\n\t\t\tif (base !== column.type) {\n\t\t\t\tthrow new Error('GraphQL type alias with different base type found')\n\t\t\t}\n\t\t\treturn scalar\n\t\t}\n\t\treturn this.resolveType(column)\n\t}\n\n\tprivate resolveType(column: Model.AnyColumn): GraphQLScalarType | GraphQLEnumType {\n\t\tswitch (column.type) {\n\t\t\tcase Model.ColumnType.Enum:\n\t\t\t\tif (this.enumsProvider.hasEnum(column.columnType)) {\n\t\t\t\t\treturn this.enumsProvider.getEnum(column.columnType)\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Undefined enum ${column.columnType}`)\n\t\t\tdefault:\n\t\t\t\treturn this.getScalarType(column.type)\n\t\t}\n\t}\n\n\tprivate getScalarType(type: ScalarType): GraphQLScalarType {\n\t\tswitch (type) {\n\t\t\tcase Model.ColumnType.Int:\n\t\t\t\treturn GraphQLInt\n\t\t\tcase Model.ColumnType.String:\n\t\t\t\treturn GraphQLString\n\t\t\tcase Model.ColumnType.Uuid:\n\t\t\t\treturn this.customTypeProvider.uuidType\n\t\t\tcase Model.ColumnType.Double:\n\t\t\t\treturn GraphQLFloat\n\t\t\tcase Model.ColumnType.Numeric:\n\t\t\t\treturn this.customTypeProvider.decimalType\n\t\t\tcase Model.ColumnType.Bool:\n\t\t\t\treturn GraphQLBoolean\n\t\t\tcase Model.ColumnType.DateTime:\n\t\t\t\treturn this.customTypeProvider.dateTimeType\n\t\t\tcase Model.ColumnType.Time:\n\t\t\t\treturn this.customTypeProvider.timeType\n\t\t\tcase Model.ColumnType.Date:\n\t\t\t\treturn this.customTypeProvider.dateType\n\t\t\tcase Model.ColumnType.Json:\n\t\t\t\treturn this.customTypeProvider.jsonType\n\t\t\tdefault:\n\t\t\t\t;(({}: never): never => {\n\t\t\t\t\tthrow new ImplementationException('Invalid column type')\n\t\t\t\t})(type)\n\t\t}\n\t}\n}\n"],"names":["schema","singletonFactory","GraphQLScalarType","GraphQLList","GraphQLNonNull","Model","GraphQLInt","GraphQLString","GraphQLFloat","GraphQLBoolean","ImplementationException"],"mappings":";;;;;;;;;;AAWO,MAAM,mBAAmB;AAAA,EAQ/B,YACCA,SACA,eACiB,oBAChB;AADgB,SAAA,qBAAA;AAVlB,kBAAA,MAAQ,QAAA;AACR,kBAAA,MAAQ,eAAA;AAER,kBAAA,MAAiB,gBAAeC,iBAAAA;AAAAA,MAC/B,KAAK,kBAAkB,KAAK,IAAI;AAAA,IAAA,CACjC;AAOC,SAAK,SAASD;AACd,SAAK,gBAAgB;AAAA,EACtB;AAAA,EAEQ,kBAAkB,MAAc,UAAuE;AAC9G,UAAM,kBAAkB,KAAK,cAAc,QAAQ;AACnD,WAAO;AAAA,MACN,QAAQ,IAAIE,QAAAA,kBAAkB;AAAA,QAC7B,GAAG,gBAAgB,SAAA;AAAA,QACnB;AAAA,QACA,aAAa;AAAA,MAAA,CACb;AAAA,MACD,MAAM;AAAA,IAAA;AAAA,EAER;AAAA,EAEO,QAAQ,QAAmG;AACjH,UAAM,WAAW,KAAK,YAAY,MAAM;AACxC,WAAO;AAAA,MACN,OAAO,OAAO,IAAIC,QAAAA,YAAY,IAAIC,QAAAA,eAAe,QAAQ,CAAC,IAAI;AAAA,MAC9D;AAAA,IAAA;AAAA,EAEF;AAAA,EAEQ,YAAY,QAA8D;AACjF,QAAI,OAAO,WAAW;AACrB,UAAI,OAAO,SAASC,aAAM,WAAW,MAAM;AAC1C,cAAM,IAAI,MAAM,sDAAsD;AAAA,MACvE;AACA,YAAM,EAAE,QAAQ,KAAA,IAAS,KAAK,aAAa,OAAO,WAAW,OAAO,IAAI;AACxE,UAAI,SAAS,OAAO,MAAM;AACzB,cAAM,IAAI,MAAM,mDAAmD;AAAA,MACpE;AACA,aAAO;AAAA,IACR;AACA,WAAO,KAAK,YAAY,MAAM;AAAA,EAC/B;AAAA,EAEQ,YAAY,QAA8D;AACjF,YAAQ,OAAO,MAAA;AAAA,MACd,KAAKA,OAAAA,MAAM,WAAW;AACrB,YAAI,KAAK,cAAc,QAAQ,OAAO,UAAU,GAAG;AAClD,iBAAO,KAAK,cAAc,QAAQ,OAAO,UAAU;AAAA,QACpD;AACA,cAAM,IAAI,MAAM,kBAAkB,OAAO,UAAU,EAAE;AAAA,MACtD;AACC,eAAO,KAAK,cAAc,OAAO,IAAI;AAAA,IAAA;AAAA,EAExC;AAAA,EAEQ,cAAc,MAAqC;AAC1D,YAAQ,MAAA;AAAA,MACP,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAOC,QAAAA;AAAAA,MACR,KAAKD,OAAAA,MAAM,WAAW;AACrB,eAAOE,QAAAA;AAAAA,MACR,KAAKF,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAOG,QAAAA;AAAAA,MACR,KAAKH,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAOI,QAAAA;AAAAA,MACR,KAAKJ,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC,KAAKA,OAAAA,MAAM,WAAW;AACrB,eAAO,KAAK,mBAAmB;AAAA,MAChC;AACE,SAAC,CAAC,CAAA,MAAqB;AACvB,gBAAM,IAAIK,UAAAA,wBAAwB,qBAAqB;AAAA,QACxD,GAAG,IAAI;AAAA,IAAA;AAAA,EAEV;AACD;;"}
@@ -69,6 +69,8 @@ class ColumnTypeResolver {
69
69
  return this.customTypeProvider.uuidType;
70
70
  case Model.ColumnType.Double:
71
71
  return GraphQLFloat;
72
+ case Model.ColumnType.Numeric:
73
+ return this.customTypeProvider.decimalType;
72
74
  case Model.ColumnType.Bool:
73
75
  return GraphQLBoolean;
74
76
  case Model.ColumnType.DateTime: