@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,69 +0,0 @@
1
- 'use strict';
2
-
3
- const { unionType } = require('nexus');
4
-
5
- const registerPolymorphicContentType = (contentType, { registry, strapi }) => {
6
- const { service: getService } = strapi.plugin('graphql');
7
-
8
- const {
9
- naming,
10
- attributes: { isMorphRelation },
11
- } = getService('utils');
12
- const { KINDS } = getService('constants');
13
-
14
- const { attributes = {} } = contentType;
15
-
16
- // Isolate its polymorphic attributes
17
- const morphAttributes = Object.entries(attributes).filter(([, attribute]) =>
18
- isMorphRelation(attribute)
19
- );
20
-
21
- // For each one of those polymorphic attribute
22
- for (const [attributeName, attribute] of morphAttributes) {
23
- const name = naming.getMorphRelationTypeName(contentType, attributeName);
24
- const { target } = attribute;
25
-
26
- // Ignore those whose target is not an array
27
- if (!Array.isArray(target)) {
28
- continue;
29
- }
30
-
31
- // Transform target UIDs into types names
32
- const members = target
33
- // Get content types definitions
34
- .map((uid) => strapi.getModel(uid))
35
- // Resolve types names
36
- .map((contentType) => naming.getTypeName(contentType));
37
-
38
- // Register the new polymorphic union type
39
- registry.register(
40
- name,
41
-
42
- unionType({
43
- name,
44
-
45
- resolveType(obj) {
46
- const contentType = strapi.getModel(obj.__type);
47
-
48
- if (!contentType) {
49
- return null;
50
- }
51
-
52
- if (contentType.modelType === 'component') {
53
- return naming.getComponentName(contentType);
54
- }
55
-
56
- return naming.getTypeName(contentType);
57
- },
58
-
59
- definition(t) {
60
- t.members(...members);
61
- },
62
- }),
63
-
64
- { kind: KINDS.morph, contentType, attributeName }
65
- );
66
- }
67
- };
68
-
69
- module.exports = { registerPolymorphicContentType };
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- const registerScalars = ({ registry, strapi }) => {
4
- const { service: getService } = strapi.plugin('graphql');
5
-
6
- const { scalars } = getService('internals');
7
- const { KINDS } = getService('constants');
8
-
9
- Object.entries(scalars).forEach(([name, definition]) => {
10
- registry.register(name, definition, { kind: KINDS.scalar });
11
- });
12
- };
13
-
14
- module.exports = { registerScalars };
@@ -1,72 +0,0 @@
1
- 'use strict';
2
-
3
- const registerSingleType = (contentType, { registry, strapi, builders }) => {
4
- const { service: getService } = strapi.plugin('graphql');
5
-
6
- const { naming } = getService('utils');
7
- const { KINDS } = getService('constants');
8
-
9
- const extension = getService('extension');
10
-
11
- const types = {
12
- base: naming.getTypeName(contentType),
13
- entity: naming.getEntityName(contentType),
14
- response: naming.getEntityResponseName(contentType),
15
- responseCollection: naming.getEntityResponseCollectionName(contentType),
16
- relationResponseCollection: naming.getRelationResponseCollectionName(contentType),
17
- queries: naming.getEntityQueriesTypeName(contentType),
18
- mutations: naming.getEntityMutationsTypeName(contentType),
19
- };
20
-
21
- const getConfig = (kind) => ({ kind, contentType });
22
-
23
- // Single type's definition
24
- registry.register(types.base, builders.buildTypeDefinition(contentType), getConfig(KINDS.type));
25
-
26
- // Higher level entity definition
27
- registry.register(
28
- types.entity,
29
- builders.buildEntityDefinition(contentType),
30
- getConfig(KINDS.entity)
31
- );
32
-
33
- // Responses definition
34
- registry.register(
35
- types.response,
36
- builders.buildResponseDefinition(contentType),
37
- getConfig(KINDS.entityResponse)
38
- );
39
-
40
- // Response collection definition
41
- registry.register(
42
- types.responseCollection,
43
- builders.buildResponseCollectionDefinition(contentType),
44
- getConfig(KINDS.entityResponseCollection)
45
- );
46
-
47
- registry.register(
48
- types.relationResponseCollection,
49
- builders.buildRelationResponseCollectionDefinition(contentType),
50
- getConfig(KINDS.relationResponseCollection)
51
- );
52
-
53
- if (extension.shadowCRUD(contentType.uid).areQueriesEnabled()) {
54
- // Queries
55
- registry.register(
56
- types.queries,
57
- builders.buildSingleTypeQueries(contentType),
58
- getConfig(KINDS.query)
59
- );
60
- }
61
-
62
- if (extension.shadowCRUD(contentType.uid).areMutationsEnabled()) {
63
- // Mutations
64
- registry.register(
65
- types.mutations,
66
- builders.buildSingleTypeMutations(contentType),
67
- getConfig(KINDS.mutation)
68
- );
69
- }
70
- };
71
-
72
- module.exports = { registerSingleType };
@@ -1,148 +0,0 @@
1
- 'use strict';
2
-
3
- const { get, getOr, isFunction, first, isNil } = require('lodash/fp');
4
-
5
- const { GraphQLObjectType } = require('graphql');
6
- const { ForbiddenError } = require('@strapi/utils').errors;
7
- const { createPoliciesMiddleware } = require('./policy');
8
-
9
- const introspectionQueries = [
10
- '__Schema',
11
- '__Type',
12
- '__Field',
13
- '__InputValue',
14
- '__EnumValue',
15
- '__Directive',
16
- ];
17
-
18
- /**
19
- * Get & parse middlewares definitions from the resolver's config
20
- * @param {object} resolverConfig
21
- * @param {object} strapi
22
- * @return {function[]}
23
- */
24
- const parseMiddlewares = (resolverConfig, strapi) => {
25
- const resolverMiddlewares = getOr([], 'middlewares', resolverConfig);
26
-
27
- // TODO: [v4] to factorize with compose endpoints (routes)
28
- return resolverMiddlewares.map((middleware) => {
29
- if (isFunction(middleware)) {
30
- return middleware;
31
- }
32
-
33
- if (typeof middleware === 'string') {
34
- return strapi.middleware(middleware);
35
- }
36
-
37
- if (typeof middleware === 'object') {
38
- const { name, options = {} } = middleware;
39
-
40
- return strapi.middleware(name)(options);
41
- }
42
-
43
- throw new Error(
44
- `Invalid middleware type, expected (function,string,object), received ${typeof middleware}`
45
- );
46
- });
47
- };
48
-
49
- /**
50
- * Wrap the schema's resolvers if they've been
51
- * customized using the GraphQL extension service
52
- * @param {object} options
53
- * @param {GraphQLSchema} options.schema
54
- * @param {object} options.strapi
55
- * @param {object} options.extension
56
- * @return {GraphQLSchema}
57
- */
58
- const wrapResolvers = ({ schema, strapi, extension = {} }) => {
59
- // Get all the registered resolvers configuration
60
- const { resolversConfig = {} } = extension;
61
-
62
- // Fields filters
63
- const isValidFieldName = ([field]) => !field.startsWith('__');
64
-
65
- const typeMap = schema.getTypeMap();
66
-
67
- Object.entries(typeMap).forEach(([type, definition]) => {
68
- const isGraphQLObjectType = definition instanceof GraphQLObjectType;
69
- const isIgnoredType = introspectionQueries.includes(type);
70
-
71
- if (!isGraphQLObjectType || isIgnoredType) {
72
- return;
73
- }
74
-
75
- const fields = definition.getFields();
76
- const fieldsToProcess = Object.entries(fields).filter(isValidFieldName);
77
-
78
- for (const [fieldName, fieldDefinition] of fieldsToProcess) {
79
- const defaultResolver = get(fieldName);
80
-
81
- const path = `${type}.${fieldName}`;
82
- const resolverConfig = getOr({}, path, resolversConfig);
83
-
84
- const { resolve: baseResolver = defaultResolver } = fieldDefinition;
85
-
86
- // Parse & initialize the middlewares
87
- const middlewares = parseMiddlewares(resolverConfig, strapi);
88
-
89
- // Generate the policy middleware
90
- const policyMiddleware = createPoliciesMiddleware(resolverConfig, { strapi });
91
-
92
- // Add the policyMiddleware at the end of the middlewares collection
93
- middlewares.push(policyMiddleware);
94
-
95
- // Bind every middleware to the next one
96
- const boundMiddlewares = middlewares.map((middleware, index, collection) => {
97
- return (...args) =>
98
- middleware(
99
- // Make sure the last middleware in the list calls the baseResolver
100
- index >= collection.length - 1 ? baseResolver : boundMiddlewares[index + 1],
101
- ...args
102
- );
103
- });
104
-
105
- /**
106
- * GraphQL authorization flow
107
- * @param {object} context
108
- * @return {Promise<void>}
109
- */
110
- const authorize = async ({ context }) => {
111
- const authConfig = get('auth', resolverConfig);
112
- const authContext = get('state.auth', context);
113
-
114
- const isValidType = ['Mutation', 'Query', 'Subscription'].includes(type);
115
- const hasConfig = !isNil(authConfig);
116
-
117
- const isAuthDisabled = authConfig === false;
118
-
119
- if ((isValidType || hasConfig) && !isAuthDisabled) {
120
- try {
121
- await strapi.auth.verify(authContext, authConfig);
122
- } catch (error) {
123
- throw new ForbiddenError();
124
- }
125
- }
126
- };
127
-
128
- /**
129
- * Base resolver wrapper that handles authorization, middlewares & policies
130
- * @param {object} parent
131
- * @param {object} args
132
- * @param {object} context
133
- * @param {object} info
134
- * @return {Promise<any>}
135
- */
136
- fieldDefinition.resolve = async (parent, args, context, info) => {
137
- await authorize({ context });
138
-
139
- // Execute middlewares (including the policy middleware which will always be included)
140
- return first(boundMiddlewares).call(null, parent, args, context, info);
141
- };
142
- }
143
- });
144
-
145
- return schema;
146
- };
147
-
148
- module.exports = { wrapResolvers };
@@ -1,94 +0,0 @@
1
- 'use strict';
2
-
3
- const nexus = require('nexus');
4
- const { merge } = require('lodash/fp');
5
-
6
- const createShadowCRUDManager = require('./shadow-crud-manager');
7
-
8
- /**
9
- * @typedef StrapiGraphQLExtensionConfiguration
10
- * @property {NexusGen[]} types - A collection of Nexus types
11
- * @property {string} typeDefs - Type definitions (SDL format)
12
- * @property {object} resolvers - A resolver map
13
- * @property {object} resolversConfig - An object that bind a configuration to a resolver based on an absolute path (the key)
14
- * @property {NexusPlugin[]} plugins - A collection of Nexus plugins
15
- */
16
-
17
- /**
18
- * @typedef {function({ strapi: object, nexus: object, typeRegistry: object }): StrapiGraphQLExtensionConfiguration} StrapiGraphQLExtensionConfigurationFactory
19
- */
20
-
21
- const getDefaultState = () => ({
22
- types: [],
23
- typeDefs: [],
24
- resolvers: {},
25
- resolversConfig: {},
26
- plugins: [],
27
- });
28
-
29
- const createExtension = ({ strapi } = {}) => {
30
- const configs = [];
31
-
32
- return {
33
- shadowCRUD: createShadowCRUDManager({ strapi }),
34
-
35
- /**
36
- * Register a new extension configuration
37
- * @param {StrapiGraphQLExtensionConfiguration | StrapiGraphQLExtensionConfigurationFactory} configuration
38
- * @return {this}
39
- */
40
- use(configuration) {
41
- configs.push(configuration);
42
-
43
- return this;
44
- },
45
-
46
- /**
47
- * Convert the registered configuration into a single extension object & return it
48
- * @param {object} options
49
- * @param {object} options.typeRegistry
50
- * @return {object}
51
- */
52
- generate({ typeRegistry }) {
53
- const resolveConfig = (config) => {
54
- return typeof config === 'function' ? config({ strapi, nexus, typeRegistry }) : config;
55
- };
56
-
57
- // Evaluate & merge every registered configuration object, then return the result
58
- return configs.reduce((acc, configuration) => {
59
- const { types, typeDefs, resolvers, resolversConfig, plugins } =
60
- resolveConfig(configuration);
61
-
62
- // Register type definitions
63
- if (typeof typeDefs === 'string') {
64
- acc.typeDefs.push(typeDefs);
65
- }
66
-
67
- // Register nexus types
68
- if (Array.isArray(types)) {
69
- acc.types.push(...types);
70
- }
71
-
72
- // Register nexus plugins
73
- if (Array.isArray(plugins)) {
74
- acc.plugins.push(...plugins);
75
- }
76
-
77
- // Register resolvers
78
- if (typeof resolvers === 'object') {
79
- acc.resolvers = merge(acc.resolvers, resolvers);
80
- }
81
-
82
- // Register resolvers configuration
83
- if (typeof resolversConfig === 'object') {
84
- // TODO: smarter merge for auth, middlewares & policies
85
- acc.resolversConfig = merge(resolversConfig, acc.resolversConfig);
86
- }
87
-
88
- return acc;
89
- }, getDefaultState());
90
- },
91
- };
92
- };
93
-
94
- module.exports = createExtension;
@@ -1,5 +0,0 @@
1
- 'use strict';
2
-
3
- const createExtension = require('./extension');
4
-
5
- module.exports = createExtension;
@@ -1,161 +0,0 @@
1
- 'use strict';
2
-
3
- const getDefaultContentTypeConfig = () => ({
4
- enabled: true,
5
-
6
- mutations: true,
7
- queries: true,
8
-
9
- disabledActions: [],
10
- fields: new Map(),
11
- });
12
-
13
- const getDefaultFieldConfig = () => ({
14
- enabled: true,
15
-
16
- input: true,
17
- output: true,
18
-
19
- filters: true,
20
- });
21
-
22
- const ALL_ACTIONS = '*';
23
-
24
- module.exports = () => {
25
- const configs = new Map();
26
-
27
- return (uid) => {
28
- if (!configs.has(uid)) {
29
- configs.set(uid, getDefaultContentTypeConfig());
30
- }
31
-
32
- return {
33
- isEnabled() {
34
- return configs.get(uid).enabled;
35
- },
36
-
37
- isDisabled() {
38
- return !this.isEnabled();
39
- },
40
-
41
- areQueriesEnabled() {
42
- return configs.get(uid).queries;
43
- },
44
-
45
- areQueriesDisabled() {
46
- return !this.areQueriesEnabled();
47
- },
48
-
49
- areMutationsEnabled() {
50
- return configs.get(uid).mutations;
51
- },
52
-
53
- areMutationsDisabled() {
54
- return !this.areMutationsEnabled();
55
- },
56
-
57
- isActionEnabled(action) {
58
- const matchingActions = [action, ALL_ACTIONS];
59
-
60
- return configs
61
- .get(uid)
62
- .disabledActions.every((action) => !matchingActions.includes(action));
63
- },
64
-
65
- isActionDisabled(action) {
66
- return !this.isActionEnabled(action);
67
- },
68
-
69
- disable() {
70
- configs.get(uid).enabled = false;
71
-
72
- return this;
73
- },
74
-
75
- disableQueries() {
76
- configs.get(uid).queries = false;
77
-
78
- return this;
79
- },
80
-
81
- disableMutations() {
82
- configs.get(uid).mutations = false;
83
-
84
- return this;
85
- },
86
-
87
- disableAction(action) {
88
- const config = configs.get(uid);
89
-
90
- if (!config.disabledActions.includes(action)) {
91
- config.disabledActions.push(action);
92
- }
93
-
94
- return this;
95
- },
96
-
97
- disableActions(actions = []) {
98
- actions.forEach((action) => this.disableAction(action));
99
-
100
- return this;
101
- },
102
-
103
- field(fieldName) {
104
- const { fields } = configs.get(uid);
105
-
106
- if (!fields.has(fieldName)) {
107
- fields.set(fieldName, getDefaultFieldConfig());
108
- }
109
-
110
- return {
111
- isEnabled() {
112
- return fields.get(fieldName).enabled;
113
- },
114
-
115
- hasInputEnabled() {
116
- return fields.get(fieldName).input;
117
- },
118
-
119
- hasOutputEnabled() {
120
- return fields.get(fieldName).output;
121
- },
122
-
123
- hasFiltersEnabeld() {
124
- return fields.get(fieldName).filters;
125
- },
126
-
127
- disable() {
128
- fields.set(fieldName, {
129
- enabled: false,
130
-
131
- output: false,
132
- input: false,
133
-
134
- filters: false,
135
- });
136
-
137
- return this;
138
- },
139
-
140
- disableOutput() {
141
- fields.get(fieldName).output = false;
142
-
143
- return this;
144
- },
145
-
146
- disableInput() {
147
- fields.get(fieldName).input = false;
148
-
149
- return this;
150
- },
151
-
152
- disableFilters() {
153
- fields.get(fieldName).filters = false;
154
-
155
- return this;
156
- },
157
- };
158
- },
159
- };
160
- };
161
- };
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- const returnTypes = require('./return-types');
4
-
5
- module.exports = (context) => ({
6
- returnTypes: returnTypes(context),
7
- });
@@ -1,27 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = () => ({
4
- /**
5
- * @param {object} value
6
- * @param {object} info
7
- * @param {object} info.args
8
- * @param {string} info.resourceUID
9
- */
10
- toEntityResponse(value, info = {}) {
11
- const { args = {}, resourceUID } = info;
12
-
13
- return { value, info: { args, resourceUID } };
14
- },
15
-
16
- /**
17
- * @param {object[]} nodes
18
- * @param {object} info
19
- * @param {object} info.args
20
- * @param {string} info.resourceUID
21
- */
22
- toEntityResponseCollection(nodes, info = {}) {
23
- const { args = {}, resourceUID } = info;
24
-
25
- return { nodes, info: { args, resourceUID } };
26
- },
27
- });
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- const contentAPI = require('./content-api');
4
- const typeRegistry = require('./type-registry');
5
- const utils = require('./utils');
6
- const constants = require('./constants');
7
- const internals = require('./internals');
8
- const builders = require('./builders');
9
- const extension = require('./extension');
10
- const format = require('./format');
11
-
12
- module.exports = {
13
- builders,
14
- 'content-api': contentAPI,
15
- constants,
16
- extension,
17
- format,
18
- internals,
19
- 'type-registry': typeRegistry,
20
- utils,
21
- };
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- const SortArg = require('./sort');
4
- const publicationState = require('./publication-state');
5
- const PaginationArg = require('./pagination');
6
-
7
- module.exports = (context) => ({
8
- SortArg,
9
- PaginationArg,
10
- PublicationStateArg: publicationState(context),
11
- });
@@ -1,19 +0,0 @@
1
- 'use strict';
2
-
3
- const { arg, inputObjectType } = require('nexus');
4
-
5
- const PaginationInputType = inputObjectType({
6
- name: 'PaginationArg',
7
-
8
- definition(t) {
9
- t.int('page');
10
- t.int('pageSize');
11
- t.int('start');
12
- t.int('limit');
13
- },
14
- });
15
-
16
- module.exports = arg({
17
- type: PaginationInputType,
18
- default: {},
19
- });
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- const { arg } = require('nexus');
4
-
5
- module.exports = ({ strapi }) => {
6
- const { PUBLICATION_STATE_TYPE_NAME } = strapi.plugin('graphql').service('constants');
7
-
8
- return arg({
9
- type: PUBLICATION_STATE_TYPE_NAME,
10
- default: 'live',
11
- });
12
- };
@@ -1,10 +0,0 @@
1
- 'use strict';
2
-
3
- const { arg, list } = require('nexus');
4
-
5
- const SortArg = arg({
6
- type: list('String'),
7
- default: [],
8
- });
9
-
10
- module.exports = SortArg;
@@ -1,17 +0,0 @@
1
- 'use strict';
2
-
3
- const { first } = require('lodash/fp');
4
-
5
- module.exports =
6
- ({ strapi }) =>
7
- () => {
8
- const { GRAPHQL_SCALAR_OPERATORS } = strapi.plugin('graphql').service('constants');
9
-
10
- return (
11
- Object.entries(GRAPHQL_SCALAR_OPERATORS)
12
- // To be valid, a GraphQL scalar must have at least one operator enabled
13
- .filter(([, value]) => value.length > 0)
14
- // Only keep the key (the scalar name)
15
- .map(first)
16
- );
17
- };