@strapi/plugin-graphql 4.15.5-alpha.6 → 4.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/dist/admin/admin/src/index.d.ts +16 -0
  2. package/dist/admin/admin/src/pluginId.d.ts +1 -0
  3. package/dist/admin/index.js +31 -17
  4. package/dist/admin/index.js.map +1 -1
  5. package/dist/admin/index.mjs +31 -17
  6. package/dist/admin/index.mjs.map +1 -1
  7. package/dist/server/bootstrap.d.ts +5 -0
  8. package/dist/server/bootstrap.d.ts.map +1 -0
  9. package/dist/server/config/default-config.d.ts +9 -0
  10. package/dist/server/config/default-config.d.ts.map +1 -0
  11. package/dist/server/config/index.d.ts +10 -0
  12. package/dist/server/config/index.d.ts.map +1 -0
  13. package/dist/server/format-graphql-error.d.ts +4 -0
  14. package/dist/server/format-graphql-error.d.ts.map +1 -0
  15. package/dist/server/index.d.ts +301 -0
  16. package/dist/server/index.d.ts.map +1 -0
  17. package/dist/server/index.js +2970 -0
  18. package/dist/server/index.js.map +1 -0
  19. package/dist/server/index.mjs +2949 -0
  20. package/dist/server/index.mjs.map +1 -0
  21. package/dist/server/services/builders/dynamic-zones.d.ts +14 -0
  22. package/dist/server/services/builders/dynamic-zones.d.ts.map +1 -0
  23. package/dist/server/services/builders/entity-meta.d.ts +6 -0
  24. package/dist/server/services/builders/entity-meta.d.ts.map +1 -0
  25. package/dist/server/services/builders/entity.d.ts +12 -0
  26. package/dist/server/services/builders/entity.d.ts.map +1 -0
  27. package/dist/server/services/builders/enums.d.ts +8 -0
  28. package/dist/server/services/builders/enums.d.ts.map +1 -0
  29. package/dist/server/services/builders/filters/content-type.d.ts +8 -0
  30. package/dist/server/services/builders/filters/content-type.d.ts.map +1 -0
  31. package/dist/server/services/builders/filters/index.d.ts +6 -0
  32. package/dist/server/services/builders/filters/index.d.ts.map +1 -0
  33. package/dist/server/services/builders/filters/operators/and.d.ts +8 -0
  34. package/dist/server/services/builders/filters/operators/and.d.ts.map +1 -0
  35. package/dist/server/services/builders/filters/operators/between.d.ts +8 -0
  36. package/dist/server/services/builders/filters/operators/between.d.ts.map +1 -0
  37. package/dist/server/services/builders/filters/operators/contains.d.ts +8 -0
  38. package/dist/server/services/builders/filters/operators/contains.d.ts.map +1 -0
  39. package/dist/server/services/builders/filters/operators/containsi.d.ts +8 -0
  40. package/dist/server/services/builders/filters/operators/containsi.d.ts.map +1 -0
  41. package/dist/server/services/builders/filters/operators/ends-with.d.ts +8 -0
  42. package/dist/server/services/builders/filters/operators/ends-with.d.ts.map +1 -0
  43. package/dist/server/services/builders/filters/operators/eq.d.ts +11 -0
  44. package/dist/server/services/builders/filters/operators/eq.d.ts.map +1 -0
  45. package/dist/server/services/builders/filters/operators/eqi.d.ts +8 -0
  46. package/dist/server/services/builders/filters/operators/eqi.d.ts.map +1 -0
  47. package/dist/server/services/builders/filters/operators/gt.d.ts +8 -0
  48. package/dist/server/services/builders/filters/operators/gt.d.ts.map +1 -0
  49. package/dist/server/services/builders/filters/operators/gte.d.ts +8 -0
  50. package/dist/server/services/builders/filters/operators/gte.d.ts.map +1 -0
  51. package/dist/server/services/builders/filters/operators/in.d.ts +8 -0
  52. package/dist/server/services/builders/filters/operators/in.d.ts.map +1 -0
  53. package/dist/server/services/builders/filters/operators/index.d.ts +11 -0
  54. package/dist/server/services/builders/filters/operators/index.d.ts.map +1 -0
  55. package/dist/server/services/builders/filters/operators/lt.d.ts +8 -0
  56. package/dist/server/services/builders/filters/operators/lt.d.ts.map +1 -0
  57. package/dist/server/services/builders/filters/operators/lte.d.ts +8 -0
  58. package/dist/server/services/builders/filters/operators/lte.d.ts.map +1 -0
  59. package/dist/server/services/builders/filters/operators/ne.d.ts +8 -0
  60. package/dist/server/services/builders/filters/operators/ne.d.ts.map +1 -0
  61. package/dist/server/services/builders/filters/operators/nei.d.ts +8 -0
  62. package/dist/server/services/builders/filters/operators/nei.d.ts.map +1 -0
  63. package/dist/server/services/builders/filters/operators/not-contains.d.ts +8 -0
  64. package/dist/server/services/builders/filters/operators/not-contains.d.ts.map +1 -0
  65. package/dist/server/services/builders/filters/operators/not-containsi.d.ts +8 -0
  66. package/dist/server/services/builders/filters/operators/not-containsi.d.ts.map +1 -0
  67. package/dist/server/services/builders/filters/operators/not-in.d.ts +8 -0
  68. package/dist/server/services/builders/filters/operators/not-in.d.ts.map +1 -0
  69. package/dist/server/services/builders/filters/operators/not-null.d.ts +8 -0
  70. package/dist/server/services/builders/filters/operators/not-null.d.ts.map +1 -0
  71. package/dist/server/services/builders/filters/operators/not.d.ts +11 -0
  72. package/dist/server/services/builders/filters/operators/not.d.ts.map +1 -0
  73. package/dist/server/services/builders/filters/operators/null.d.ts +8 -0
  74. package/dist/server/services/builders/filters/operators/null.d.ts.map +1 -0
  75. package/dist/server/services/builders/filters/operators/or.d.ts +8 -0
  76. package/dist/server/services/builders/filters/operators/or.d.ts.map +1 -0
  77. package/dist/server/services/builders/filters/operators/starts-with.d.ts +8 -0
  78. package/dist/server/services/builders/filters/operators/starts-with.d.ts.map +1 -0
  79. package/dist/server/services/builders/generic-morph.d.ts +6 -0
  80. package/dist/server/services/builders/generic-morph.d.ts.map +1 -0
  81. package/dist/server/services/builders/index.d.ts +58 -0
  82. package/dist/server/services/builders/index.d.ts.map +1 -0
  83. package/dist/server/services/builders/input.d.ts +7 -0
  84. package/dist/server/services/builders/input.d.ts.map +1 -0
  85. package/dist/server/services/builders/mutations/collection-type.d.ts +8 -0
  86. package/dist/server/services/builders/mutations/collection-type.d.ts.map +1 -0
  87. package/dist/server/services/builders/mutations/index.d.ts +7 -0
  88. package/dist/server/services/builders/mutations/index.d.ts.map +1 -0
  89. package/dist/server/services/builders/mutations/single-type.d.ts +8 -0
  90. package/dist/server/services/builders/mutations/single-type.d.ts.map +1 -0
  91. package/dist/server/services/builders/queries/collection-type.d.ts +8 -0
  92. package/dist/server/services/builders/queries/collection-type.d.ts.map +1 -0
  93. package/dist/server/services/builders/queries/index.d.ts +7 -0
  94. package/dist/server/services/builders/queries/index.d.ts.map +1 -0
  95. package/dist/server/services/builders/queries/single-type.d.ts +8 -0
  96. package/dist/server/services/builders/queries/single-type.d.ts.map +1 -0
  97. package/dist/server/services/builders/relation-response-collection.d.ts +10 -0
  98. package/dist/server/services/builders/relation-response-collection.d.ts.map +1 -0
  99. package/dist/server/services/builders/resolvers/association.d.ts +10 -0
  100. package/dist/server/services/builders/resolvers/association.d.ts.map +1 -0
  101. package/dist/server/services/builders/resolvers/component.d.ts +10 -0
  102. package/dist/server/services/builders/resolvers/component.d.ts.map +1 -0
  103. package/dist/server/services/builders/resolvers/dynamic-zone.d.ts +10 -0
  104. package/dist/server/services/builders/resolvers/dynamic-zone.d.ts.map +1 -0
  105. package/dist/server/services/builders/resolvers/index.d.ts +30 -0
  106. package/dist/server/services/builders/resolvers/index.d.ts.map +1 -0
  107. package/dist/server/services/builders/resolvers/mutation.d.ts +13 -0
  108. package/dist/server/services/builders/resolvers/mutation.d.ts.map +1 -0
  109. package/dist/server/services/builders/resolvers/query.d.ts +12 -0
  110. package/dist/server/services/builders/resolvers/query.d.ts.map +1 -0
  111. package/dist/server/services/builders/response-collection.d.ts +12 -0
  112. package/dist/server/services/builders/response-collection.d.ts.map +1 -0
  113. package/dist/server/services/builders/response.d.ts +10 -0
  114. package/dist/server/services/builders/response.d.ts.map +1 -0
  115. package/dist/server/services/builders/type.d.ts +19 -0
  116. package/dist/server/services/builders/type.d.ts.map +1 -0
  117. package/dist/server/services/builders/utils.d.ts +52 -0
  118. package/dist/server/services/builders/utils.d.ts.map +1 -0
  119. package/dist/server/services/constants.d.ts +128 -0
  120. package/dist/server/services/constants.d.ts.map +1 -0
  121. package/dist/server/services/content-api/index.d.ts +8 -0
  122. package/dist/server/services/content-api/index.d.ts.map +1 -0
  123. package/dist/server/services/content-api/policy.d.ts +7 -0
  124. package/dist/server/services/content-api/policy.d.ts.map +1 -0
  125. package/dist/server/services/content-api/register-functions/collection-type.d.ts +9 -0
  126. package/dist/server/services/content-api/register-functions/collection-type.d.ts.map +1 -0
  127. package/dist/server/services/content-api/register-functions/component.d.ts +9 -0
  128. package/dist/server/services/content-api/register-functions/component.d.ts.map +1 -0
  129. package/dist/server/services/content-api/register-functions/content-type/dynamic-zones.d.ts +9 -0
  130. package/dist/server/services/content-api/register-functions/content-type/dynamic-zones.d.ts.map +1 -0
  131. package/dist/server/services/content-api/register-functions/content-type/enums.d.ts +9 -0
  132. package/dist/server/services/content-api/register-functions/content-type/enums.d.ts.map +1 -0
  133. package/dist/server/services/content-api/register-functions/content-type/filters.d.ts +9 -0
  134. package/dist/server/services/content-api/register-functions/content-type/filters.d.ts.map +1 -0
  135. package/dist/server/services/content-api/register-functions/content-type/index.d.ts +24 -0
  136. package/dist/server/services/content-api/register-functions/content-type/index.d.ts.map +1 -0
  137. package/dist/server/services/content-api/register-functions/content-type/inputs.d.ts +9 -0
  138. package/dist/server/services/content-api/register-functions/content-type/inputs.d.ts.map +1 -0
  139. package/dist/server/services/content-api/register-functions/index.d.ts +9 -0
  140. package/dist/server/services/content-api/register-functions/index.d.ts.map +1 -0
  141. package/dist/server/services/content-api/register-functions/internals.d.ts +4 -0
  142. package/dist/server/services/content-api/register-functions/internals.d.ts.map +1 -0
  143. package/dist/server/services/content-api/register-functions/polymorphic.d.ts +5 -0
  144. package/dist/server/services/content-api/register-functions/polymorphic.d.ts.map +1 -0
  145. package/dist/server/services/content-api/register-functions/scalars.d.ts +4 -0
  146. package/dist/server/services/content-api/register-functions/scalars.d.ts.map +1 -0
  147. package/dist/server/services/content-api/register-functions/single-type.d.ts +9 -0
  148. package/dist/server/services/content-api/register-functions/single-type.d.ts.map +1 -0
  149. package/dist/server/services/content-api/wrap-resolvers.d.ts +18 -0
  150. package/dist/server/services/content-api/wrap-resolvers.d.ts.map +1 -0
  151. package/dist/server/services/extension/extension.d.ts +63 -0
  152. package/dist/server/services/extension/extension.d.ts.map +1 -0
  153. package/dist/server/services/extension/index.d.ts +3 -0
  154. package/dist/server/services/extension/index.d.ts.map +1 -0
  155. package/dist/server/services/extension/shadow-crud-manager.d.ts +40 -0
  156. package/dist/server/services/extension/shadow-crud-manager.d.ts.map +1 -0
  157. package/dist/server/services/format/index.d.ts +20 -0
  158. package/dist/server/services/format/index.d.ts.map +1 -0
  159. package/dist/server/services/format/return-types.d.ts +22 -0
  160. package/dist/server/services/format/return-types.d.ts.map +1 -0
  161. package/dist/server/services/index.d.ts +287 -0
  162. package/dist/server/services/index.d.ts.map +1 -0
  163. package/dist/server/services/internals/args/index.d.ts +8 -0
  164. package/dist/server/services/internals/args/index.d.ts.map +1 -0
  165. package/dist/server/services/internals/args/pagination.d.ts +3 -0
  166. package/dist/server/services/internals/args/pagination.d.ts.map +1 -0
  167. package/dist/server/services/internals/args/publication-state.d.ts +4 -0
  168. package/dist/server/services/internals/args/publication-state.d.ts.map +1 -0
  169. package/dist/server/services/internals/args/sort.d.ts +3 -0
  170. package/dist/server/services/internals/args/sort.d.ts.map +1 -0
  171. package/dist/server/services/internals/helpers/get-enabled-scalars.d.ts +4 -0
  172. package/dist/server/services/internals/helpers/get-enabled-scalars.d.ts.map +1 -0
  173. package/dist/server/services/internals/helpers/index.d.ts +6 -0
  174. package/dist/server/services/internals/helpers/index.d.ts.map +1 -0
  175. package/dist/server/services/internals/index.d.ts +46 -0
  176. package/dist/server/services/internals/index.d.ts.map +1 -0
  177. package/dist/server/services/internals/scalars/date.d.ts +3 -0
  178. package/dist/server/services/internals/scalars/date.d.ts.map +1 -0
  179. package/dist/server/services/internals/scalars/index.d.ts +10 -0
  180. package/dist/server/services/internals/scalars/index.d.ts.map +1 -0
  181. package/dist/server/services/internals/scalars/time.d.ts +8 -0
  182. package/dist/server/services/internals/scalars/time.d.ts.map +1 -0
  183. package/dist/server/services/internals/types/error.d.ts +8 -0
  184. package/dist/server/services/internals/types/error.d.ts.map +1 -0
  185. package/dist/server/services/internals/types/filters.d.ts +6 -0
  186. package/dist/server/services/internals/types/filters.d.ts.map +1 -0
  187. package/dist/server/services/internals/types/index.d.ts +28 -0
  188. package/dist/server/services/internals/types/index.d.ts.map +1 -0
  189. package/dist/server/services/internals/types/pagination.d.ts +10 -0
  190. package/dist/server/services/internals/types/pagination.d.ts.map +1 -0
  191. package/dist/server/services/internals/types/publication-state.d.ts +10 -0
  192. package/dist/server/services/internals/types/publication-state.d.ts.map +1 -0
  193. package/dist/server/services/internals/types/response-collection-meta.d.ts +11 -0
  194. package/dist/server/services/internals/types/response-collection-meta.d.ts.map +1 -0
  195. package/dist/server/services/type-registry.d.ts +15 -0
  196. package/dist/server/services/type-registry.d.ts.map +1 -0
  197. package/dist/server/services/types.d.ts +7 -0
  198. package/dist/server/services/types.d.ts.map +1 -0
  199. package/dist/server/services/utils/attributes.d.ts +14 -0
  200. package/dist/server/services/utils/attributes.d.ts.map +1 -0
  201. package/dist/server/services/utils/index.d.ts +81 -0
  202. package/dist/server/services/utils/index.d.ts.map +1 -0
  203. package/dist/server/services/utils/mappers/entity-to-response-entity.d.ts +33 -0
  204. package/dist/server/services/utils/mappers/entity-to-response-entity.d.ts.map +1 -0
  205. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.d.ts +13 -0
  206. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.d.ts.map +1 -0
  207. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.d.ts +6 -0
  208. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.d.ts.map +1 -0
  209. package/dist/server/services/utils/mappers/index.d.ts +36 -0
  210. package/dist/server/services/utils/mappers/index.d.ts.map +1 -0
  211. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.d.ts +9 -0
  212. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.d.ts.map +1 -0
  213. package/dist/server/services/utils/naming.d.ts +37 -0
  214. package/dist/server/services/utils/naming.d.ts.map +1 -0
  215. package/package.json +28 -16
  216. package/strapi-server.js +1 -11
  217. package/.eslintignore +0 -1
  218. package/.eslintrc +0 -14
  219. package/admin/src/index.js +0 -38
  220. package/admin/src/pluginId.js +0 -5
  221. package/admin/src/translations/dk.json +0 -5
  222. package/admin/src/translations/en.json +0 -5
  223. package/admin/src/translations/es.json +0 -5
  224. package/admin/src/translations/fr.json +0 -5
  225. package/admin/src/translations/pl.json +0 -5
  226. package/admin/src/translations/ru.json +0 -5
  227. package/admin/src/translations/sv.json +0 -5
  228. package/admin/src/translations/tr.json +0 -5
  229. package/admin/src/translations/zh-Hans.json +0 -5
  230. package/admin/src/translations/zh.json +0 -5
  231. package/packup.config.ts +0 -42
  232. package/server/bootstrap.js +0 -134
  233. package/server/config/default-config.js +0 -13
  234. package/server/config/index.js +0 -7
  235. package/server/format-graphql-error.js +0 -45
  236. package/server/services/builders/dynamic-zones.js +0 -97
  237. package/server/services/builders/entity-meta.js +0 -7
  238. package/server/services/builders/entity.js +0 -43
  239. package/server/services/builders/enums.js +0 -26
  240. package/server/services/builders/filters/content-type.js +0 -111
  241. package/server/services/builders/filters/index.js +0 -7
  242. package/server/services/builders/filters/operators/and.js +0 -15
  243. package/server/services/builders/filters/operators/between.js +0 -15
  244. package/server/services/builders/filters/operators/contains.js +0 -13
  245. package/server/services/builders/filters/operators/containsi.js +0 -13
  246. package/server/services/builders/filters/operators/ends-with.js +0 -13
  247. package/server/services/builders/filters/operators/eq.js +0 -23
  248. package/server/services/builders/filters/operators/eqi.js +0 -13
  249. package/server/services/builders/filters/operators/gt.js +0 -13
  250. package/server/services/builders/filters/operators/gte.js +0 -13
  251. package/server/services/builders/filters/operators/in.js +0 -15
  252. package/server/services/builders/filters/operators/index.js +0 -40
  253. package/server/services/builders/filters/operators/lt.js +0 -13
  254. package/server/services/builders/filters/operators/lte.js +0 -13
  255. package/server/services/builders/filters/operators/ne.js +0 -13
  256. package/server/services/builders/filters/operators/nei.js +0 -13
  257. package/server/services/builders/filters/operators/not-contains.js +0 -13
  258. package/server/services/builders/filters/operators/not-containsi.js +0 -13
  259. package/server/services/builders/filters/operators/not-in.js +0 -15
  260. package/server/services/builders/filters/operators/not-null.js +0 -13
  261. package/server/services/builders/filters/operators/not.js +0 -19
  262. package/server/services/builders/filters/operators/null.js +0 -13
  263. package/server/services/builders/filters/operators/or.js +0 -15
  264. package/server/services/builders/filters/operators/starts-with.js +0 -13
  265. package/server/services/builders/generic-morph.js +0 -41
  266. package/server/services/builders/index.js +0 -92
  267. package/server/services/builders/input.js +0 -121
  268. package/server/services/builders/mutations/collection-type.js +0 -191
  269. package/server/services/builders/mutations/index.js +0 -9
  270. package/server/services/builders/mutations/single-type.js +0 -164
  271. package/server/services/builders/queries/collection-type.js +0 -122
  272. package/server/services/builders/queries/index.js +0 -9
  273. package/server/services/builders/queries/single-type.js +0 -71
  274. package/server/services/builders/relation-response-collection.js +0 -32
  275. package/server/services/builders/resolvers/association.js +0 -92
  276. package/server/services/builders/resolvers/component.js +0 -25
  277. package/server/services/builders/resolvers/dynamic-zone.js +0 -9
  278. package/server/services/builders/resolvers/index.js +0 -18
  279. package/server/services/builders/resolvers/mutation.js +0 -38
  280. package/server/services/builders/resolvers/query.js +0 -34
  281. package/server/services/builders/response-collection.js +0 -40
  282. package/server/services/builders/response.js +0 -32
  283. package/server/services/builders/type.js +0 -363
  284. package/server/services/builders/utils.js +0 -134
  285. package/server/services/constants.js +0 -153
  286. package/server/services/content-api/index.js +0 -188
  287. package/server/services/content-api/policy.js +0 -60
  288. package/server/services/content-api/register-functions/collection-type.js +0 -72
  289. package/server/services/content-api/register-functions/component.js +0 -15
  290. package/server/services/content-api/register-functions/content-type/dynamic-zones.js +0 -36
  291. package/server/services/content-api/register-functions/content-type/enums.js +0 -33
  292. package/server/services/content-api/register-functions/content-type/filters.js +0 -15
  293. package/server/services/content-api/register-functions/content-type/index.js +0 -13
  294. package/server/services/content-api/register-functions/content-type/inputs.js +0 -21
  295. package/server/services/content-api/register-functions/index.js +0 -22
  296. package/server/services/content-api/register-functions/internals.js +0 -13
  297. package/server/services/content-api/register-functions/polymorphic.js +0 -69
  298. package/server/services/content-api/register-functions/scalars.js +0 -14
  299. package/server/services/content-api/register-functions/single-type.js +0 -72
  300. package/server/services/content-api/wrap-resolvers.js +0 -148
  301. package/server/services/extension/extension.js +0 -94
  302. package/server/services/extension/index.js +0 -5
  303. package/server/services/extension/shadow-crud-manager.js +0 -161
  304. package/server/services/format/index.js +0 -7
  305. package/server/services/format/return-types.js +0 -27
  306. package/server/services/index.js +0 -21
  307. package/server/services/internals/args/index.js +0 -11
  308. package/server/services/internals/args/pagination.js +0 -19
  309. package/server/services/internals/args/publication-state.js +0 -12
  310. package/server/services/internals/args/sort.js +0 -10
  311. package/server/services/internals/helpers/get-enabled-scalars.js +0 -17
  312. package/server/services/internals/helpers/index.js +0 -7
  313. package/server/services/internals/index.js +0 -13
  314. package/server/services/internals/scalars/date.js +0 -22
  315. package/server/services/internals/scalars/index.js +0 -17
  316. package/server/services/internals/scalars/time.js +0 -36
  317. package/server/services/internals/types/error.js +0 -34
  318. package/server/services/internals/types/filters.js +0 -39
  319. package/server/services/internals/types/index.js +0 -29
  320. package/server/services/internals/types/pagination.js +0 -24
  321. package/server/services/internals/types/publication-state.js +0 -24
  322. package/server/services/internals/types/response-collection-meta.js +0 -46
  323. package/server/services/type-registry.js +0 -104
  324. package/server/services/utils/attributes.js +0 -78
  325. package/server/services/utils/index.js +0 -11
  326. package/server/services/utils/mappers/entity-to-response-entity.js +0 -12
  327. package/server/services/utils/mappers/graphql-filters-to-strapi-query.js +0 -119
  328. package/server/services/utils/mappers/graphql-scalar-to-operators.js +0 -17
  329. package/server/services/utils/mappers/index.js +0 -13
  330. package/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js +0 -25
  331. package/server/services/utils/naming.js +0 -287
@@ -1,191 +0,0 @@
1
- 'use strict';
2
-
3
- const { extendType, nonNull } = require('nexus');
4
- const { sanitize } = require('@strapi/utils');
5
-
6
- module.exports = ({ strapi }) => {
7
- const { service: getService } = strapi.plugin('graphql');
8
-
9
- const { naming } = getService('utils');
10
- const { transformArgs } = getService('builders').utils;
11
- const { toEntityResponse } = getService('format').returnTypes;
12
-
13
- const {
14
- getCreateMutationTypeName,
15
- getUpdateMutationTypeName,
16
- getDeleteMutationTypeName,
17
- getEntityResponseName,
18
- getContentTypeInputName,
19
- } = naming;
20
-
21
- const addCreateMutation = (t, contentType) => {
22
- const { uid } = contentType;
23
-
24
- const createMutationName = getCreateMutationTypeName(contentType);
25
- const responseTypeName = getEntityResponseName(contentType);
26
-
27
- t.field(createMutationName, {
28
- type: responseTypeName,
29
-
30
- args: {
31
- // Create payload
32
- data: nonNull(getContentTypeInputName(contentType)),
33
- },
34
-
35
- async resolve(parent, args, context) {
36
- const { auth } = context.state;
37
- const transformedArgs = transformArgs(args, { contentType });
38
-
39
- // Sanitize input data
40
- const sanitizedInputData = await sanitize.contentAPI.input(
41
- transformedArgs.data,
42
- contentType,
43
- { auth }
44
- );
45
-
46
- Object.assign(transformedArgs, { data: sanitizedInputData });
47
-
48
- const { create } = getService('builders')
49
- .get('content-api')
50
- .buildMutationsResolvers({ contentType });
51
-
52
- const value = await create(parent, transformedArgs);
53
-
54
- return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
55
- },
56
- });
57
- };
58
-
59
- const addUpdateMutation = (t, contentType) => {
60
- const { uid } = contentType;
61
-
62
- const updateMutationName = getUpdateMutationTypeName(contentType);
63
- const responseTypeName = getEntityResponseName(contentType);
64
-
65
- // todo[v4]: Don't allow to filter using every unique attributes for now
66
- // Only authorize filtering using unique scalar fields for updateOne queries
67
- // const uniqueAttributes = getUniqueAttributesFiltersMap(attributes);
68
-
69
- t.field(updateMutationName, {
70
- type: responseTypeName,
71
-
72
- args: {
73
- // Query args
74
- id: nonNull('ID'),
75
- // todo[v4]: Don't allow to filter using every unique attributes for now
76
- // ...uniqueAttributes,
77
-
78
- // Update payload
79
- data: nonNull(getContentTypeInputName(contentType)),
80
- },
81
-
82
- async resolve(parent, args, context) {
83
- const { auth } = context.state;
84
- const transformedArgs = transformArgs(args, { contentType });
85
-
86
- // Sanitize input data
87
- const sanitizedInputData = await sanitize.contentAPI.input(
88
- transformedArgs.data,
89
- contentType,
90
- { auth }
91
- );
92
-
93
- Object.assign(transformedArgs, { data: sanitizedInputData });
94
-
95
- const { update } = getService('builders')
96
- .get('content-api')
97
- .buildMutationsResolvers({ contentType });
98
-
99
- const value = await update(parent, transformedArgs);
100
-
101
- return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
102
- },
103
- });
104
- };
105
-
106
- const addDeleteMutation = (t, contentType) => {
107
- const { uid } = contentType;
108
-
109
- const deleteMutationName = getDeleteMutationTypeName(contentType);
110
- const responseTypeName = getEntityResponseName(contentType);
111
-
112
- // todo[v4]: Don't allow to filter using every unique attributes for now
113
- // Only authorize filtering using unique scalar fields for updateOne queries
114
- // const uniqueAttributes = getUniqueAttributesFiltersMap(attributes);
115
-
116
- t.field(deleteMutationName, {
117
- type: responseTypeName,
118
-
119
- args: {
120
- // Query args
121
- id: nonNull('ID'),
122
- // todo[v4]: Don't allow to filter using every unique attributes for now
123
- // ...uniqueAttributes,
124
- },
125
-
126
- async resolve(parent, args, ctx) {
127
- const transformedArgs = transformArgs(args, { contentType });
128
-
129
- const { delete: deleteResolver } = getService('builders')
130
- .get('content-api')
131
- .buildMutationsResolvers({ contentType });
132
-
133
- const value = await deleteResolver(parent, args, ctx);
134
-
135
- return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
136
- },
137
- });
138
- };
139
-
140
- return {
141
- buildCollectionTypeMutations(contentType) {
142
- const createMutationName = `Mutation.${getCreateMutationTypeName(contentType)}`;
143
- const updateMutationName = `Mutation.${getUpdateMutationTypeName(contentType)}`;
144
- const deleteMutationName = `Mutation.${getDeleteMutationTypeName(contentType)}`;
145
-
146
- const extension = getService('extension');
147
-
148
- const registerAuthConfig = (action, auth) => {
149
- return extension.use({ resolversConfig: { [action]: { auth } } });
150
- };
151
-
152
- const isActionEnabled = (action) => {
153
- return extension.shadowCRUD(contentType.uid).isActionEnabled(action);
154
- };
155
-
156
- const isCreateEnabled = isActionEnabled('create');
157
- const isUpdateEnabled = isActionEnabled('update');
158
- const isDeleteEnabled = isActionEnabled('delete');
159
-
160
- if (isCreateEnabled) {
161
- registerAuthConfig(createMutationName, { scope: [`${contentType.uid}.create`] });
162
- }
163
-
164
- if (isUpdateEnabled) {
165
- registerAuthConfig(updateMutationName, { scope: [`${contentType.uid}.update`] });
166
- }
167
-
168
- if (isDeleteEnabled) {
169
- registerAuthConfig(deleteMutationName, { scope: [`${contentType.uid}.delete`] });
170
- }
171
-
172
- return extendType({
173
- type: 'Mutation',
174
-
175
- definition(t) {
176
- if (isCreateEnabled) {
177
- addCreateMutation(t, contentType);
178
- }
179
-
180
- if (isUpdateEnabled) {
181
- addUpdateMutation(t, contentType);
182
- }
183
-
184
- if (isDeleteEnabled) {
185
- addDeleteMutation(t, contentType);
186
- }
187
- },
188
- });
189
- },
190
- };
191
- };
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- const createCollectionTypeMutationsBuilder = require('./collection-type');
4
- const createSingleTypeMutationsBuilder = require('./single-type');
5
-
6
- module.exports = (context) => ({
7
- ...createCollectionTypeMutationsBuilder(context),
8
- ...createSingleTypeMutationsBuilder(context),
9
- });
@@ -1,164 +0,0 @@
1
- 'use strict';
2
-
3
- const { extendType, nonNull } = require('nexus');
4
- const { omit, isNil } = require('lodash/fp');
5
-
6
- const utils = require('@strapi/utils');
7
-
8
- const { sanitize, validate } = utils;
9
- const { NotFoundError } = utils.errors;
10
-
11
- module.exports = ({ strapi }) => {
12
- const { service: getService } = strapi.plugin('graphql');
13
-
14
- const { naming } = getService('utils');
15
- const { transformArgs } = getService('builders').utils;
16
- const { toEntityResponse } = getService('format').returnTypes;
17
-
18
- const {
19
- getUpdateMutationTypeName,
20
- getEntityResponseName,
21
- getContentTypeInputName,
22
- getDeleteMutationTypeName,
23
- } = naming;
24
-
25
- const addUpdateMutation = (t, contentType) => {
26
- const { uid } = contentType;
27
-
28
- const updateMutationName = getUpdateMutationTypeName(contentType);
29
- const responseTypeName = getEntityResponseName(contentType);
30
-
31
- t.field(updateMutationName, {
32
- type: responseTypeName,
33
-
34
- args: {
35
- // Update payload
36
- data: nonNull(getContentTypeInputName(contentType)),
37
- },
38
-
39
- async resolve(parent, args, context) {
40
- const { auth } = context.state;
41
- const transformedArgs = transformArgs(args, { contentType });
42
-
43
- // Sanitize input data
44
- const sanitizedInputData = await sanitize.contentAPI.input(
45
- transformedArgs.data,
46
- contentType,
47
- { auth }
48
- );
49
-
50
- Object.assign(transformedArgs, { data: sanitizedInputData });
51
-
52
- const { create, update } = getService('builders')
53
- .get('content-api')
54
- .buildMutationsResolvers({ contentType });
55
-
56
- // For single types, the validation and sanitization of args is done here instead of being
57
- // delegated to the query builders since we're calling the entity service directly
58
-
59
- await validate.contentAPI.query(omit(['data', 'files'], transformedArgs), contentType, {
60
- auth,
61
- });
62
-
63
- const sanitizedQuery = await sanitize.contentAPI.query(
64
- omit(['data', 'files'], transformedArgs),
65
- contentType,
66
- {
67
- auth,
68
- }
69
- );
70
-
71
- const entity = await strapi.entityService.findMany(uid, sanitizedQuery);
72
-
73
- // Create or update
74
- const value = isNil(entity)
75
- ? create(parent, transformedArgs)
76
- : update(uid, { id: entity.id, data: transformedArgs.data });
77
-
78
- return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
79
- },
80
- });
81
- };
82
-
83
- const addDeleteMutation = (t, contentType) => {
84
- const { uid } = contentType;
85
-
86
- const deleteMutationName = getDeleteMutationTypeName(contentType);
87
- const responseTypeName = getEntityResponseName(contentType);
88
-
89
- t.field(deleteMutationName, {
90
- type: responseTypeName,
91
-
92
- args: {},
93
-
94
- async resolve(parent, args, ctx) {
95
- const transformedArgs = transformArgs(args, { contentType });
96
-
97
- const { delete: deleteResolver } = getService('builders')
98
- .get('content-api')
99
- .buildMutationsResolvers({ contentType });
100
-
101
- // For single types, the validation and sanitization of args is done here instead of being
102
- // delegated to the query builders since we're calling the entity service directly
103
-
104
- await validate.contentAPI.query(transformedArgs, contentType, { auth: ctx?.state?.auth });
105
-
106
- const sanitizedQuery = await sanitize.contentAPI.query(transformedArgs, contentType, {
107
- auth: ctx?.state?.auth,
108
- });
109
-
110
- const entity = await strapi.entityService.findMany(uid, sanitizedQuery);
111
-
112
- if (!entity) {
113
- throw new NotFoundError('Entity not found');
114
- }
115
-
116
- const value = await deleteResolver(parent, { id: entity.id, params: transformedArgs });
117
-
118
- return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
119
- },
120
- });
121
- };
122
-
123
- return {
124
- buildSingleTypeMutations(contentType) {
125
- const updateMutationName = `Mutation.${getUpdateMutationTypeName(contentType)}`;
126
- const deleteMutationName = `Mutation.${getDeleteMutationTypeName(contentType)}`;
127
-
128
- const extension = getService('extension');
129
-
130
- const registerAuthConfig = (action, auth) => {
131
- return extension.use({ resolversConfig: { [action]: { auth } } });
132
- };
133
-
134
- const isActionEnabled = (action) => {
135
- return extension.shadowCRUD(contentType.uid).isActionEnabled(action);
136
- };
137
-
138
- const isUpdateEnabled = isActionEnabled('update');
139
- const isDeleteEnabled = isActionEnabled('delete');
140
-
141
- if (isUpdateEnabled) {
142
- registerAuthConfig(updateMutationName, { scope: [`${contentType.uid}.update`] });
143
- }
144
-
145
- if (isDeleteEnabled) {
146
- registerAuthConfig(deleteMutationName, { scope: [`${contentType.uid}.delete`] });
147
- }
148
-
149
- return extendType({
150
- type: 'Mutation',
151
-
152
- definition(t) {
153
- if (isUpdateEnabled) {
154
- addUpdateMutation(t, contentType);
155
- }
156
-
157
- if (isDeleteEnabled) {
158
- addDeleteMutation(t, contentType);
159
- }
160
- },
161
- });
162
- },
163
- };
164
- };
@@ -1,122 +0,0 @@
1
- 'use strict';
2
-
3
- const { extendType } = require('nexus');
4
-
5
- module.exports = ({ strapi }) => {
6
- const { service: getService } = strapi.plugin('graphql');
7
-
8
- const { naming } = getService('utils');
9
- const { transformArgs, getContentTypeArgs } = getService('builders').utils;
10
- const { toEntityResponse, toEntityResponseCollection } = getService('format').returnTypes;
11
-
12
- const {
13
- getFindOneQueryName,
14
- getEntityResponseName,
15
- getFindQueryName,
16
- getEntityResponseCollectionName,
17
- } = naming;
18
-
19
- const buildCollectionTypeQueries = (contentType) => {
20
- const findOneQueryName = `Query.${getFindOneQueryName(contentType)}`;
21
- const findQueryName = `Query.${getFindQueryName(contentType)}`;
22
-
23
- const extension = getService('extension');
24
-
25
- const registerAuthConfig = (action, auth) => {
26
- return extension.use({ resolversConfig: { [action]: { auth } } });
27
- };
28
-
29
- const isActionEnabled = (action) => {
30
- return extension.shadowCRUD(contentType.uid).isActionEnabled(action);
31
- };
32
-
33
- const isFindOneEnabled = isActionEnabled('findOne');
34
- const isFindEnabled = isActionEnabled('find');
35
-
36
- if (isFindOneEnabled) {
37
- registerAuthConfig(findOneQueryName, { scope: [`${contentType.uid}.findOne`] });
38
- }
39
-
40
- if (isFindEnabled) {
41
- registerAuthConfig(findQueryName, { scope: [`${contentType.uid}.find`] });
42
- }
43
-
44
- return extendType({
45
- type: 'Query',
46
-
47
- definition(t) {
48
- if (isFindOneEnabled) {
49
- addFindOneQuery(t, contentType);
50
- }
51
-
52
- if (isFindEnabled) {
53
- addFindQuery(t, contentType);
54
- }
55
- },
56
- });
57
- };
58
-
59
- /**
60
- * Register a "find one" query field to the nexus type definition
61
- * @param {OutputDefinitionBlock<Query>} t
62
- * @param contentType
63
- */
64
- const addFindOneQuery = (t, contentType) => {
65
- const { uid } = contentType;
66
-
67
- const findOneQueryName = getFindOneQueryName(contentType);
68
- const responseTypeName = getEntityResponseName(contentType);
69
-
70
- t.field(findOneQueryName, {
71
- type: responseTypeName,
72
-
73
- args: getContentTypeArgs(contentType, { multiple: false }),
74
-
75
- async resolve(parent, args, ctx) {
76
- const transformedArgs = transformArgs(args, { contentType });
77
-
78
- const { findOne } = getService('builders')
79
- .get('content-api')
80
- .buildQueriesResolvers({ contentType });
81
-
82
- // queryResolvers will sanitize params
83
- const value = findOne(parent, transformedArgs, ctx);
84
-
85
- return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
86
- },
87
- });
88
- };
89
-
90
- /**
91
- * Register a "find" query field to the nexus type definition
92
- * @param {OutputDefinitionBlock<Query>} t
93
- * @param contentType
94
- */
95
- const addFindQuery = (t, contentType) => {
96
- const { uid } = contentType;
97
-
98
- const findQueryName = getFindQueryName(contentType);
99
- const responseCollectionTypeName = getEntityResponseCollectionName(contentType);
100
-
101
- t.field(findQueryName, {
102
- type: responseCollectionTypeName,
103
-
104
- args: getContentTypeArgs(contentType),
105
-
106
- async resolve(parent, args, ctx) {
107
- const transformedArgs = transformArgs(args, { contentType, usePagination: true });
108
-
109
- const { find } = getService('builders')
110
- .get('content-api')
111
- .buildQueriesResolvers({ contentType });
112
-
113
- // queryResolvers will sanitize params
114
- const nodes = await find(parent, transformedArgs, ctx);
115
-
116
- return toEntityResponseCollection(nodes, { args: transformedArgs, resourceUID: uid });
117
- },
118
- });
119
- };
120
-
121
- return { buildCollectionTypeQueries };
122
- };
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- const createCollectionTypeQueriesBuilder = require('./collection-type');
4
- const createSingleTypeQueriesBuilder = require('./single-type');
5
-
6
- module.exports = (context) => ({
7
- ...createCollectionTypeQueriesBuilder(context),
8
- ...createSingleTypeQueriesBuilder(context),
9
- });
@@ -1,71 +0,0 @@
1
- 'use strict';
2
-
3
- const { extendType } = require('nexus');
4
-
5
- module.exports = ({ strapi }) => {
6
- const { service: getService } = strapi.plugin('graphql');
7
-
8
- const { naming } = getService('utils');
9
- const { transformArgs, getContentTypeArgs } = getService('builders').utils;
10
- const { toEntityResponse } = getService('format').returnTypes;
11
-
12
- const { getFindOneQueryName, getEntityResponseName } = naming;
13
-
14
- const buildSingleTypeQueries = (contentType) => {
15
- const findQueryName = `Query.${getFindOneQueryName(contentType)}`;
16
-
17
- const extension = getService('extension');
18
-
19
- const registerAuthConfig = (action, auth) => {
20
- return extension.use({ resolversConfig: { [action]: { auth } } });
21
- };
22
-
23
- const isActionEnabled = (action) => {
24
- return extension.shadowCRUD(contentType.uid).isActionEnabled(action);
25
- };
26
-
27
- const isFindEnabled = isActionEnabled('find');
28
-
29
- if (isFindEnabled) {
30
- registerAuthConfig(findQueryName, { scope: [`${contentType.uid}.find`] });
31
- }
32
-
33
- return extendType({
34
- type: 'Query',
35
-
36
- definition(t) {
37
- if (isFindEnabled) {
38
- addFindQuery(t, contentType);
39
- }
40
- },
41
- });
42
- };
43
-
44
- const addFindQuery = (t, contentType) => {
45
- const { uid } = contentType;
46
-
47
- const findQueryName = getFindOneQueryName(contentType);
48
- const responseTypeName = getEntityResponseName(contentType);
49
-
50
- t.field(findQueryName, {
51
- type: responseTypeName,
52
-
53
- args: getContentTypeArgs(contentType),
54
-
55
- async resolve(parent, args, ctx) {
56
- const transformedArgs = transformArgs(args, { contentType });
57
-
58
- const queriesResolvers = getService('builders')
59
- .get('content-api')
60
- .buildQueriesResolvers({ contentType });
61
-
62
- // queryResolvers will sanitize params
63
- const value = queriesResolvers.find(parent, transformedArgs, ctx);
64
-
65
- return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
66
- },
67
- });
68
- };
69
-
70
- return { buildSingleTypeQueries };
71
- };
@@ -1,32 +0,0 @@
1
- 'use strict';
2
-
3
- const { objectType, nonNull } = require('nexus');
4
- const { defaultTo, prop, pipe } = require('lodash/fp');
5
-
6
- module.exports = ({ strapi }) => {
7
- const { naming } = strapi.plugin('graphql').service('utils');
8
-
9
- return {
10
- /**
11
- * Build a type definition for a content API relation's collection response for a given content type
12
- * @param {object} contentType The content type which will be used to build its content API response definition
13
- * @return {NexusObjectTypeDef}
14
- */
15
- buildRelationResponseCollectionDefinition(contentType) {
16
- const name = naming.getRelationResponseCollectionName(contentType);
17
- const entityName = naming.getEntityName(contentType);
18
-
19
- return objectType({
20
- name,
21
-
22
- definition(t) {
23
- t.nonNull.list.field('data', {
24
- type: nonNull(entityName),
25
-
26
- resolve: pipe(prop('nodes'), defaultTo([])),
27
- });
28
- },
29
- });
30
- },
31
- };
32
- };
@@ -1,92 +0,0 @@
1
- 'use strict';
2
-
3
- const { get } = require('lodash/fp');
4
-
5
- const utils = require('@strapi/utils');
6
-
7
- const { sanitize, validate, pipeAsync } = utils;
8
- const { ApplicationError } = utils.errors;
9
-
10
- module.exports = ({ strapi }) => {
11
- const { service: getGraphQLService } = strapi.plugin('graphql');
12
-
13
- const { isMorphRelation, isMedia } = getGraphQLService('utils').attributes;
14
- const { transformArgs } = getGraphQLService('builders').utils;
15
- const { toEntityResponse, toEntityResponseCollection } = getGraphQLService('format').returnTypes;
16
-
17
- return {
18
- buildAssociationResolver({ contentTypeUID, attributeName }) {
19
- const contentType = strapi.getModel(contentTypeUID);
20
- const attribute = contentType.attributes[attributeName];
21
-
22
- if (!attribute) {
23
- throw new ApplicationError(
24
- `Failed to build an association resolver for ${contentTypeUID}::${attributeName}`
25
- );
26
- }
27
-
28
- const isMediaAttribute = isMedia(attribute);
29
- const isMorphAttribute = isMorphRelation(attribute);
30
-
31
- const targetUID = isMediaAttribute ? 'plugin::upload.file' : attribute.target;
32
- const isToMany = isMediaAttribute ? attribute.multiple : attribute.relation.endsWith('Many');
33
-
34
- const targetContentType = strapi.getModel(targetUID);
35
-
36
- return async (parent, args = {}, context = {}) => {
37
- const { auth } = context.state;
38
-
39
- const transformedArgs = transformArgs(args, {
40
- contentType: targetContentType,
41
- usePagination: true,
42
- });
43
-
44
- await validate.contentAPI.query(transformedArgs, targetContentType, {
45
- auth,
46
- });
47
- const sanitizedQuery = await sanitize.contentAPI.query(transformedArgs, targetContentType, {
48
- auth,
49
- });
50
-
51
- const data = await strapi.entityService.load(
52
- contentTypeUID,
53
- parent,
54
- attributeName,
55
- sanitizedQuery
56
- );
57
-
58
- const info = {
59
- args: sanitizedQuery,
60
- resourceUID: targetUID,
61
- };
62
-
63
- // If this a polymorphic association, it sanitizes & returns the raw data
64
- // Note: The value needs to be wrapped in a fake object that represents its parent
65
- // so that the sanitize util can work properly.
66
- if (isMorphAttribute) {
67
- // Helpers used for the data cleanup
68
- const wrapData = (dataToWrap) => ({ [attributeName]: dataToWrap });
69
- const sanitizeData = (dataToSanitize) => {
70
- return sanitize.contentAPI.output(dataToSanitize, contentType, { auth });
71
- };
72
- const unwrapData = get(attributeName);
73
-
74
- // Sanitizer definition
75
- const sanitizeMorphAttribute = pipeAsync(wrapData, sanitizeData, unwrapData);
76
-
77
- return sanitizeMorphAttribute(data);
78
- }
79
-
80
- // If this is a to-many relation, it returns an object that
81
- // matches what the entity-response-collection's resolvers expect
82
- if (isToMany) {
83
- return toEntityResponseCollection(data, info);
84
- }
85
-
86
- // Else, it returns an object that matches
87
- // what the entity-response's resolvers expect
88
- return toEntityResponse(data, info);
89
- };
90
- },
91
- };
92
- };