@strapi/plugin-graphql 0.0.0-experimental.62ce06180fe9a772eaeb3d43d238b26644f39f7c → 0.0.0-experimental.6340da17068c3bed7fb006e7bcc554c71129e282

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 (644) hide show
  1. package/LICENSE +18 -3
  2. package/dist/admin/index.js +58 -167
  3. package/dist/admin/index.js.map +1 -1
  4. package/dist/admin/index.mjs +54 -168
  5. package/dist/admin/index.mjs.map +1 -1
  6. package/dist/admin/package.json.js +13 -0
  7. package/dist/admin/package.json.js.map +1 -0
  8. package/dist/admin/package.json.mjs +8 -0
  9. package/dist/admin/package.json.mjs.map +1 -0
  10. package/dist/admin/pluginId.js +6 -0
  11. package/dist/admin/pluginId.js.map +1 -0
  12. package/dist/admin/pluginId.mjs +4 -0
  13. package/dist/admin/pluginId.mjs.map +1 -0
  14. package/dist/admin/translations/cs.json.js +10 -0
  15. package/dist/admin/translations/cs.json.js.map +1 -0
  16. package/dist/admin/translations/cs.json.mjs +8 -0
  17. package/dist/admin/translations/cs.json.mjs.map +1 -0
  18. package/dist/admin/translations/da.json.js +10 -0
  19. package/dist/admin/translations/da.json.js.map +1 -0
  20. package/dist/admin/translations/da.json.mjs +8 -0
  21. package/dist/admin/translations/da.json.mjs.map +1 -0
  22. package/dist/admin/translations/en.json.js +10 -0
  23. package/dist/admin/translations/en.json.js.map +1 -0
  24. package/dist/admin/translations/en.json.mjs +8 -0
  25. package/dist/admin/translations/en.json.mjs.map +1 -0
  26. package/dist/admin/translations/es.json.js +10 -0
  27. package/dist/admin/translations/es.json.js.map +1 -0
  28. package/dist/admin/translations/es.json.mjs +8 -0
  29. package/dist/admin/translations/es.json.mjs.map +1 -0
  30. package/dist/admin/translations/fr.json.js +10 -0
  31. package/dist/admin/translations/fr.json.js.map +1 -0
  32. package/dist/admin/translations/fr.json.mjs +8 -0
  33. package/dist/admin/translations/fr.json.mjs.map +1 -0
  34. package/dist/admin/translations/pl.json.js +10 -0
  35. package/dist/admin/translations/pl.json.js.map +1 -0
  36. package/dist/admin/translations/pl.json.mjs +8 -0
  37. package/dist/admin/translations/pl.json.mjs.map +1 -0
  38. package/dist/admin/translations/ru.json.js +10 -0
  39. package/dist/admin/translations/ru.json.js.map +1 -0
  40. package/dist/admin/translations/ru.json.mjs +8 -0
  41. package/dist/admin/translations/ru.json.mjs.map +1 -0
  42. package/dist/admin/translations/sk.json.js +10 -0
  43. package/dist/admin/translations/sk.json.js.map +1 -0
  44. package/dist/admin/translations/sk.json.mjs +8 -0
  45. package/dist/admin/translations/sk.json.mjs.map +1 -0
  46. package/dist/admin/translations/sv.json.js +10 -0
  47. package/dist/admin/translations/sv.json.js.map +1 -0
  48. package/dist/admin/translations/sv.json.mjs +8 -0
  49. package/dist/admin/translations/sv.json.mjs.map +1 -0
  50. package/dist/admin/translations/tr.json.js +10 -0
  51. package/dist/admin/translations/tr.json.js.map +1 -0
  52. package/dist/admin/translations/tr.json.mjs +8 -0
  53. package/dist/admin/translations/tr.json.mjs.map +1 -0
  54. package/dist/admin/translations/uk.json.js +10 -0
  55. package/dist/admin/translations/uk.json.js.map +1 -0
  56. package/dist/admin/translations/uk.json.mjs +8 -0
  57. package/dist/admin/translations/uk.json.mjs.map +1 -0
  58. package/dist/admin/translations/zh-Hans.json.js +10 -0
  59. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  60. package/dist/admin/translations/zh-Hans.json.mjs +8 -0
  61. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  62. package/dist/admin/translations/zh.json.js +10 -0
  63. package/dist/admin/translations/zh.json.js.map +1 -0
  64. package/dist/admin/translations/zh.json.mjs +8 -0
  65. package/dist/admin/translations/zh.json.mjs.map +1 -0
  66. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  67. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  68. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  69. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  70. package/dist/server/bootstrap.js +221 -0
  71. package/dist/server/bootstrap.js.map +1 -0
  72. package/dist/server/bootstrap.mjs +212 -0
  73. package/dist/server/bootstrap.mjs.map +1 -0
  74. package/dist/server/config/default-config.js +13 -0
  75. package/dist/server/config/default-config.js.map +1 -0
  76. package/dist/server/config/default-config.mjs +11 -0
  77. package/dist/server/config/default-config.mjs.map +1 -0
  78. package/dist/server/config/index.js +10 -0
  79. package/dist/server/config/index.js.map +1 -0
  80. package/dist/server/config/index.mjs +8 -0
  81. package/dist/server/config/index.mjs.map +1 -0
  82. package/dist/server/format-graphql-error.js +60 -0
  83. package/dist/server/format-graphql-error.js.map +1 -0
  84. package/dist/server/format-graphql-error.mjs +58 -0
  85. package/dist/server/format-graphql-error.mjs.map +1 -0
  86. package/dist/server/index.js +12 -3112
  87. package/dist/server/index.js.map +1 -1
  88. package/dist/server/index.mjs +11 -3092
  89. package/dist/server/index.mjs.map +1 -1
  90. package/dist/server/services/builders/dynamic-zones.js +75 -0
  91. package/dist/server/services/builders/dynamic-zones.js.map +1 -0
  92. package/dist/server/services/builders/dynamic-zones.mjs +73 -0
  93. package/dist/server/services/builders/dynamic-zones.mjs.map +1 -0
  94. package/dist/server/services/builders/entity.js +38 -0
  95. package/dist/server/services/builders/entity.js.map +1 -0
  96. package/dist/server/services/builders/entity.mjs +36 -0
  97. package/dist/server/services/builders/entity.mjs.map +1 -0
  98. package/dist/server/services/builders/enums.js +24 -0
  99. package/dist/server/services/builders/enums.js.map +1 -0
  100. package/dist/server/services/builders/enums.mjs +22 -0
  101. package/dist/server/services/builders/enums.mjs.map +1 -0
  102. package/dist/server/services/builders/filters/content-type.js +94 -0
  103. package/dist/server/services/builders/filters/content-type.js.map +1 -0
  104. package/dist/server/services/builders/filters/content-type.mjs +92 -0
  105. package/dist/server/services/builders/filters/content-type.mjs.map +1 -0
  106. package/dist/server/services/builders/filters/index.js +10 -0
  107. package/dist/server/services/builders/filters/index.js.map +1 -0
  108. package/dist/server/services/builders/filters/index.mjs +8 -0
  109. package/dist/server/services/builders/filters/index.mjs.map +1 -0
  110. package/dist/server/services/builders/filters/operators/and.js +17 -0
  111. package/dist/server/services/builders/filters/operators/and.js.map +1 -0
  112. package/dist/server/services/builders/filters/operators/and.mjs +15 -0
  113. package/dist/server/services/builders/filters/operators/and.mjs.map +1 -0
  114. package/dist/server/services/builders/filters/operators/between.js +17 -0
  115. package/dist/server/services/builders/filters/operators/between.js.map +1 -0
  116. package/dist/server/services/builders/filters/operators/between.mjs +15 -0
  117. package/dist/server/services/builders/filters/operators/between.mjs.map +1 -0
  118. package/dist/server/services/builders/filters/operators/contains.js +15 -0
  119. package/dist/server/services/builders/filters/operators/contains.js.map +1 -0
  120. package/dist/server/services/builders/filters/operators/contains.mjs +13 -0
  121. package/dist/server/services/builders/filters/operators/contains.mjs.map +1 -0
  122. package/dist/server/services/builders/filters/operators/containsi.js +15 -0
  123. package/dist/server/services/builders/filters/operators/containsi.js.map +1 -0
  124. package/dist/server/services/builders/filters/operators/containsi.mjs +13 -0
  125. package/dist/server/services/builders/filters/operators/containsi.mjs.map +1 -0
  126. package/dist/server/services/builders/filters/operators/ends-with.js +15 -0
  127. package/dist/server/services/builders/filters/operators/ends-with.js.map +1 -0
  128. package/dist/server/services/builders/filters/operators/ends-with.mjs +13 -0
  129. package/dist/server/services/builders/filters/operators/ends-with.mjs.map +1 -0
  130. package/dist/server/services/builders/filters/operators/eq.js +22 -0
  131. package/dist/server/services/builders/filters/operators/eq.js.map +1 -0
  132. package/dist/server/services/builders/filters/operators/eq.mjs +20 -0
  133. package/dist/server/services/builders/filters/operators/eq.mjs.map +1 -0
  134. package/dist/server/services/builders/filters/operators/eqi.js +15 -0
  135. package/dist/server/services/builders/filters/operators/eqi.js.map +1 -0
  136. package/dist/server/services/builders/filters/operators/eqi.mjs +13 -0
  137. package/dist/server/services/builders/filters/operators/eqi.mjs.map +1 -0
  138. package/dist/server/services/builders/filters/operators/gt.js +15 -0
  139. package/dist/server/services/builders/filters/operators/gt.js.map +1 -0
  140. package/dist/server/services/builders/filters/operators/gt.mjs +13 -0
  141. package/dist/server/services/builders/filters/operators/gt.mjs.map +1 -0
  142. package/dist/server/services/builders/filters/operators/gte.js +15 -0
  143. package/dist/server/services/builders/filters/operators/gte.js.map +1 -0
  144. package/dist/server/services/builders/filters/operators/gte.mjs +13 -0
  145. package/dist/server/services/builders/filters/operators/gte.mjs.map +1 -0
  146. package/dist/server/services/builders/filters/operators/in.js +17 -0
  147. package/dist/server/services/builders/filters/operators/in.js.map +1 -0
  148. package/dist/server/services/builders/filters/operators/in.mjs +15 -0
  149. package/dist/server/services/builders/filters/operators/in.mjs.map +1 -0
  150. package/dist/server/services/builders/filters/operators/index.js +57 -0
  151. package/dist/server/services/builders/filters/operators/index.js.map +1 -0
  152. package/dist/server/services/builders/filters/operators/index.mjs +55 -0
  153. package/dist/server/services/builders/filters/operators/index.mjs.map +1 -0
  154. package/dist/server/services/builders/filters/operators/lt.js +15 -0
  155. package/dist/server/services/builders/filters/operators/lt.js.map +1 -0
  156. package/dist/server/services/builders/filters/operators/lt.mjs +13 -0
  157. package/dist/server/services/builders/filters/operators/lt.mjs.map +1 -0
  158. package/dist/server/services/builders/filters/operators/lte.js +15 -0
  159. package/dist/server/services/builders/filters/operators/lte.js.map +1 -0
  160. package/dist/server/services/builders/filters/operators/lte.mjs +13 -0
  161. package/dist/server/services/builders/filters/operators/lte.mjs.map +1 -0
  162. package/dist/server/services/builders/filters/operators/ne.js +15 -0
  163. package/dist/server/services/builders/filters/operators/ne.js.map +1 -0
  164. package/dist/server/services/builders/filters/operators/ne.mjs +13 -0
  165. package/dist/server/services/builders/filters/operators/ne.mjs.map +1 -0
  166. package/dist/server/services/builders/filters/operators/nei.js +15 -0
  167. package/dist/server/services/builders/filters/operators/nei.js.map +1 -0
  168. package/dist/server/services/builders/filters/operators/nei.mjs +13 -0
  169. package/dist/server/services/builders/filters/operators/nei.mjs.map +1 -0
  170. package/dist/server/services/builders/filters/operators/not-contains.js +15 -0
  171. package/dist/server/services/builders/filters/operators/not-contains.js.map +1 -0
  172. package/dist/server/services/builders/filters/operators/not-contains.mjs +13 -0
  173. package/dist/server/services/builders/filters/operators/not-contains.mjs.map +1 -0
  174. package/dist/server/services/builders/filters/operators/not-containsi.js +15 -0
  175. package/dist/server/services/builders/filters/operators/not-containsi.js.map +1 -0
  176. package/dist/server/services/builders/filters/operators/not-containsi.mjs +13 -0
  177. package/dist/server/services/builders/filters/operators/not-containsi.mjs.map +1 -0
  178. package/dist/server/services/builders/filters/operators/not-in.js +17 -0
  179. package/dist/server/services/builders/filters/operators/not-in.js.map +1 -0
  180. package/dist/server/services/builders/filters/operators/not-in.mjs +15 -0
  181. package/dist/server/services/builders/filters/operators/not-in.mjs.map +1 -0
  182. package/dist/server/services/builders/filters/operators/not-null.js +13 -0
  183. package/dist/server/services/builders/filters/operators/not-null.js.map +1 -0
  184. package/dist/server/services/builders/filters/operators/not-null.mjs +11 -0
  185. package/dist/server/services/builders/filters/operators/not-null.mjs.map +1 -0
  186. package/dist/server/services/builders/filters/operators/not.js +24 -0
  187. package/dist/server/services/builders/filters/operators/not.js.map +1 -0
  188. package/dist/server/services/builders/filters/operators/not.mjs +22 -0
  189. package/dist/server/services/builders/filters/operators/not.mjs.map +1 -0
  190. package/dist/server/services/builders/filters/operators/null.js +13 -0
  191. package/dist/server/services/builders/filters/operators/null.js.map +1 -0
  192. package/dist/server/services/builders/filters/operators/null.mjs +11 -0
  193. package/dist/server/services/builders/filters/operators/null.mjs.map +1 -0
  194. package/dist/server/services/builders/filters/operators/or.js +17 -0
  195. package/dist/server/services/builders/filters/operators/or.js.map +1 -0
  196. package/dist/server/services/builders/filters/operators/or.mjs +15 -0
  197. package/dist/server/services/builders/filters/operators/or.mjs.map +1 -0
  198. package/dist/server/services/builders/filters/operators/starts-with.js +15 -0
  199. package/dist/server/services/builders/filters/operators/starts-with.js.map +1 -0
  200. package/dist/server/services/builders/filters/operators/starts-with.mjs +13 -0
  201. package/dist/server/services/builders/filters/operators/starts-with.mjs.map +1 -0
  202. package/dist/server/services/builders/generic-morph.js +38 -0
  203. package/dist/server/services/builders/generic-morph.js.map +1 -0
  204. package/dist/server/services/builders/generic-morph.mjs +36 -0
  205. package/dist/server/services/builders/generic-morph.mjs.map +1 -0
  206. package/dist/server/services/builders/index.js +75 -0
  207. package/dist/server/services/builders/index.js.map +1 -0
  208. package/dist/server/services/builders/index.mjs +73 -0
  209. package/dist/server/services/builders/index.mjs.map +1 -0
  210. package/dist/server/services/builders/input.js +89 -0
  211. package/dist/server/services/builders/input.js.map +1 -0
  212. package/dist/server/services/builders/input.mjs +87 -0
  213. package/dist/server/services/builders/input.mjs.map +1 -0
  214. package/dist/server/services/builders/mutations/collection-type.js +155 -0
  215. package/dist/server/services/builders/mutations/collection-type.js.map +1 -0
  216. package/dist/server/services/builders/mutations/collection-type.mjs +153 -0
  217. package/dist/server/services/builders/mutations/collection-type.mjs.map +1 -0
  218. package/dist/server/services/builders/mutations/index.js +12 -0
  219. package/dist/server/services/builders/mutations/index.js.map +1 -0
  220. package/dist/server/services/builders/mutations/index.mjs +10 -0
  221. package/dist/server/services/builders/mutations/index.mjs.map +1 -0
  222. package/dist/server/services/builders/mutations/single-type.js +123 -0
  223. package/dist/server/services/builders/mutations/single-type.js.map +1 -0
  224. package/dist/server/services/builders/mutations/single-type.mjs +121 -0
  225. package/dist/server/services/builders/mutations/single-type.mjs.map +1 -0
  226. package/dist/server/services/builders/queries/collection-type.js +152 -0
  227. package/dist/server/services/builders/queries/collection-type.js.map +1 -0
  228. package/dist/server/services/builders/queries/collection-type.mjs +150 -0
  229. package/dist/server/services/builders/queries/collection-type.mjs.map +1 -0
  230. package/dist/server/services/builders/queries/index.js +12 -0
  231. package/dist/server/services/builders/queries/index.js.map +1 -0
  232. package/dist/server/services/builders/queries/index.mjs +10 -0
  233. package/dist/server/services/builders/queries/index.mjs.map +1 -0
  234. package/dist/server/services/builders/queries/single-type.js +70 -0
  235. package/dist/server/services/builders/queries/single-type.js.map +1 -0
  236. package/dist/server/services/builders/queries/single-type.mjs +68 -0
  237. package/dist/server/services/builders/queries/single-type.mjs.map +1 -0
  238. package/dist/server/services/builders/relation-response-collection.js +35 -0
  239. package/dist/server/services/builders/relation-response-collection.js.map +1 -0
  240. package/dist/server/services/builders/relation-response-collection.mjs +33 -0
  241. package/dist/server/services/builders/relation-response-collection.mjs.map +1 -0
  242. package/dist/server/services/builders/resolvers/association.js +141 -0
  243. package/dist/server/services/builders/resolvers/association.js.map +1 -0
  244. package/dist/server/services/builders/resolvers/association.mjs +139 -0
  245. package/dist/server/services/builders/resolvers/association.mjs.map +1 -0
  246. package/dist/server/services/builders/resolvers/component.js +27 -0
  247. package/dist/server/services/builders/resolvers/component.js.map +1 -0
  248. package/dist/server/services/builders/resolvers/component.mjs +25 -0
  249. package/dist/server/services/builders/resolvers/component.mjs.map +1 -0
  250. package/dist/server/services/builders/resolvers/dynamic-zone.js +12 -0
  251. package/dist/server/services/builders/resolvers/dynamic-zone.js.map +1 -0
  252. package/dist/server/services/builders/resolvers/dynamic-zone.mjs +10 -0
  253. package/dist/server/services/builders/resolvers/dynamic-zone.mjs.map +1 -0
  254. package/dist/server/services/builders/resolvers/index.js +20 -0
  255. package/dist/server/services/builders/resolvers/index.js.map +1 -0
  256. package/dist/server/services/builders/resolvers/index.mjs +18 -0
  257. package/dist/server/services/builders/resolvers/index.mjs.map +1 -0
  258. package/dist/server/services/builders/resolvers/merge-publication-args.js +23 -0
  259. package/dist/server/services/builders/resolvers/merge-publication-args.js.map +1 -0
  260. package/dist/server/services/builders/resolvers/merge-publication-args.mjs +21 -0
  261. package/dist/server/services/builders/resolvers/merge-publication-args.mjs.map +1 -0
  262. package/dist/server/services/builders/resolvers/pagination.js +40 -0
  263. package/dist/server/services/builders/resolvers/pagination.js.map +1 -0
  264. package/dist/server/services/builders/resolvers/pagination.mjs +38 -0
  265. package/dist/server/services/builders/resolvers/pagination.mjs.map +1 -0
  266. package/dist/server/services/builders/resolvers/query.js +62 -0
  267. package/dist/server/services/builders/resolvers/query.js.map +1 -0
  268. package/dist/server/services/builders/resolvers/query.mjs +60 -0
  269. package/dist/server/services/builders/resolvers/query.mjs.map +1 -0
  270. package/dist/server/services/builders/response-collection.js +50 -0
  271. package/dist/server/services/builders/response-collection.js.map +1 -0
  272. package/dist/server/services/builders/response-collection.mjs +48 -0
  273. package/dist/server/services/builders/response-collection.mjs.map +1 -0
  274. package/dist/server/services/builders/response.js +28 -0
  275. package/dist/server/services/builders/response.js.map +1 -0
  276. package/dist/server/services/builders/response.mjs +26 -0
  277. package/dist/server/services/builders/response.mjs.map +1 -0
  278. package/dist/server/services/builders/type.js +345 -0
  279. package/dist/server/services/builders/type.js.map +1 -0
  280. package/dist/server/services/builders/type.mjs +343 -0
  281. package/dist/server/services/builders/type.mjs.map +1 -0
  282. package/dist/server/services/builders/utils.js +132 -0
  283. package/dist/server/services/builders/utils.js.map +1 -0
  284. package/dist/server/services/builders/utils.mjs +130 -0
  285. package/dist/server/services/builders/utils.mjs.map +1 -0
  286. package/dist/server/services/constants.js +141 -0
  287. package/dist/server/services/constants.js.map +1 -0
  288. package/dist/server/services/constants.mjs +139 -0
  289. package/dist/server/services/constants.mjs.map +1 -0
  290. package/dist/server/services/content-api/index.js +198 -0
  291. package/dist/server/services/content-api/index.js.map +1 -0
  292. package/dist/server/services/content-api/index.mjs +196 -0
  293. package/dist/server/services/content-api/index.mjs.map +1 -0
  294. package/dist/server/services/content-api/policy.js +54 -0
  295. package/dist/server/services/content-api/policy.js.map +1 -0
  296. package/dist/server/services/content-api/policy.mjs +52 -0
  297. package/dist/server/services/content-api/policy.mjs.map +1 -0
  298. package/dist/server/services/content-api/register-functions/collection-type.js +41 -0
  299. package/dist/server/services/content-api/register-functions/collection-type.js.map +1 -0
  300. package/dist/server/services/content-api/register-functions/collection-type.mjs +39 -0
  301. package/dist/server/services/content-api/register-functions/collection-type.mjs.map +1 -0
  302. package/dist/server/services/content-api/register-functions/component.js +16 -0
  303. package/dist/server/services/content-api/register-functions/component.js.map +1 -0
  304. package/dist/server/services/content-api/register-functions/component.mjs +14 -0
  305. package/dist/server/services/content-api/register-functions/component.mjs.map +1 -0
  306. package/dist/server/services/content-api/register-functions/dynamic-zones.js +31 -0
  307. package/dist/server/services/content-api/register-functions/dynamic-zones.js.map +1 -0
  308. package/dist/server/services/content-api/register-functions/dynamic-zones.mjs +29 -0
  309. package/dist/server/services/content-api/register-functions/dynamic-zones.mjs.map +1 -0
  310. package/dist/server/services/content-api/register-functions/enums.js +23 -0
  311. package/dist/server/services/content-api/register-functions/enums.js.map +1 -0
  312. package/dist/server/services/content-api/register-functions/enums.mjs +21 -0
  313. package/dist/server/services/content-api/register-functions/enums.mjs.map +1 -0
  314. package/dist/server/services/content-api/register-functions/filters.js +16 -0
  315. package/dist/server/services/content-api/register-functions/filters.js.map +1 -0
  316. package/dist/server/services/content-api/register-functions/filters.mjs +14 -0
  317. package/dist/server/services/content-api/register-functions/filters.mjs.map +1 -0
  318. package/dist/server/services/content-api/register-functions/inputs.js +17 -0
  319. package/dist/server/services/content-api/register-functions/inputs.js.map +1 -0
  320. package/dist/server/services/content-api/register-functions/inputs.mjs +15 -0
  321. package/dist/server/services/content-api/register-functions/inputs.mjs.map +1 -0
  322. package/dist/server/services/content-api/register-functions/internals.js +16 -0
  323. package/dist/server/services/content-api/register-functions/internals.js.map +1 -0
  324. package/dist/server/services/content-api/register-functions/internals.mjs +14 -0
  325. package/dist/server/services/content-api/register-functions/internals.mjs.map +1 -0
  326. package/dist/server/services/content-api/register-functions/polymorphic.js +49 -0
  327. package/dist/server/services/content-api/register-functions/polymorphic.js.map +1 -0
  328. package/dist/server/services/content-api/register-functions/polymorphic.mjs +47 -0
  329. package/dist/server/services/content-api/register-functions/polymorphic.mjs.map +1 -0
  330. package/dist/server/services/content-api/register-functions/scalars.js +15 -0
  331. package/dist/server/services/content-api/register-functions/scalars.js.map +1 -0
  332. package/dist/server/services/content-api/register-functions/scalars.mjs +13 -0
  333. package/dist/server/services/content-api/register-functions/scalars.mjs.map +1 -0
  334. package/dist/server/services/content-api/register-functions/single-type.js +41 -0
  335. package/dist/server/services/content-api/register-functions/single-type.js.map +1 -0
  336. package/dist/server/services/content-api/register-functions/single-type.mjs +39 -0
  337. package/dist/server/services/content-api/register-functions/single-type.mjs.map +1 -0
  338. package/dist/server/services/content-api/wrap-resolvers.js +119 -0
  339. package/dist/server/services/content-api/wrap-resolvers.js.map +1 -0
  340. package/dist/server/services/content-api/wrap-resolvers.mjs +117 -0
  341. package/dist/server/services/content-api/wrap-resolvers.mjs.map +1 -0
  342. package/dist/server/services/extension/extension.js +85 -0
  343. package/dist/server/services/extension/extension.js.map +1 -0
  344. package/dist/server/services/extension/extension.mjs +63 -0
  345. package/dist/server/services/extension/extension.mjs.map +1 -0
  346. package/dist/server/services/extension/index.js +8 -0
  347. package/dist/server/services/extension/index.js.map +1 -0
  348. package/dist/server/services/extension/index.mjs +6 -0
  349. package/dist/server/services/extension/index.mjs.map +1 -0
  350. package/dist/server/services/extension/shadow-crud-manager.js +121 -0
  351. package/dist/server/services/extension/shadow-crud-manager.js.map +1 -0
  352. package/dist/server/services/extension/shadow-crud-manager.mjs +119 -0
  353. package/dist/server/services/extension/shadow-crud-manager.mjs.map +1 -0
  354. package/dist/server/services/format/index.js +10 -0
  355. package/dist/server/services/format/index.js.map +1 -0
  356. package/dist/server/services/format/index.mjs +8 -0
  357. package/dist/server/services/format/index.mjs.map +1 -0
  358. package/dist/server/services/format/return-types.js +27 -0
  359. package/dist/server/services/format/return-types.js.map +1 -0
  360. package/dist/server/services/format/return-types.mjs +25 -0
  361. package/dist/server/services/format/return-types.mjs.map +1 -0
  362. package/dist/server/services/index.js +24 -0
  363. package/dist/server/services/index.js.map +1 -0
  364. package/dist/server/services/index.mjs +22 -0
  365. package/dist/server/services/index.mjs.map +1 -0
  366. package/dist/server/services/internals/args/has-published-version.js +11 -0
  367. package/dist/server/services/internals/args/has-published-version.js.map +1 -0
  368. package/dist/server/services/internals/args/has-published-version.mjs +9 -0
  369. package/dist/server/services/internals/args/has-published-version.mjs.map +1 -0
  370. package/dist/server/services/internals/args/index.js +18 -0
  371. package/dist/server/services/internals/args/index.js.map +1 -0
  372. package/dist/server/services/internals/args/index.mjs +16 -0
  373. package/dist/server/services/internals/args/index.mjs.map +1 -0
  374. package/dist/server/services/internals/args/pagination.js +20 -0
  375. package/dist/server/services/internals/args/pagination.js.map +1 -0
  376. package/dist/server/services/internals/args/pagination.mjs +18 -0
  377. package/dist/server/services/internals/args/pagination.mjs.map +1 -0
  378. package/dist/server/services/internals/args/publication-filter.js +13 -0
  379. package/dist/server/services/internals/args/publication-filter.js.map +1 -0
  380. package/dist/server/services/internals/args/publication-filter.mjs +11 -0
  381. package/dist/server/services/internals/args/publication-filter.mjs.map +1 -0
  382. package/dist/server/services/internals/args/publication-status.js +14 -0
  383. package/dist/server/services/internals/args/publication-status.js.map +1 -0
  384. package/dist/server/services/internals/args/publication-status.mjs +12 -0
  385. package/dist/server/services/internals/args/publication-status.mjs.map +1 -0
  386. package/dist/server/services/internals/args/sort.js +11 -0
  387. package/dist/server/services/internals/args/sort.js.map +1 -0
  388. package/dist/server/services/internals/args/sort.mjs +9 -0
  389. package/dist/server/services/internals/args/sort.mjs.map +1 -0
  390. package/dist/server/services/internals/helpers/get-enabled-scalars.js +13 -0
  391. package/dist/server/services/internals/helpers/get-enabled-scalars.js.map +1 -0
  392. package/dist/server/services/internals/helpers/get-enabled-scalars.mjs +11 -0
  393. package/dist/server/services/internals/helpers/get-enabled-scalars.mjs.map +1 -0
  394. package/dist/server/services/internals/helpers/index.js +10 -0
  395. package/dist/server/services/internals/helpers/index.js.map +1 -0
  396. package/dist/server/services/internals/helpers/index.mjs +8 -0
  397. package/dist/server/services/internals/helpers/index.mjs.map +1 -0
  398. package/dist/server/services/internals/index.js +16 -0
  399. package/dist/server/services/internals/index.js.map +1 -0
  400. package/dist/server/services/internals/index.mjs +14 -0
  401. package/dist/server/services/internals/index.mjs.map +1 -0
  402. package/dist/server/services/internals/scalars/date.js +18 -0
  403. package/dist/server/services/internals/scalars/date.js.map +1 -0
  404. package/dist/server/services/internals/scalars/date.mjs +15 -0
  405. package/dist/server/services/internals/scalars/date.mjs.map +1 -0
  406. package/dist/server/services/internals/scalars/index.js +17 -0
  407. package/dist/server/services/internals/scalars/index.js.map +1 -0
  408. package/dist/server/services/internals/scalars/index.mjs +15 -0
  409. package/dist/server/services/internals/scalars/index.mjs.map +1 -0
  410. package/dist/server/services/internals/scalars/time.js +38 -0
  411. package/dist/server/services/internals/scalars/time.js.map +1 -0
  412. package/dist/server/services/internals/scalars/time.mjs +36 -0
  413. package/dist/server/services/internals/scalars/time.mjs.map +1 -0
  414. package/dist/server/services/internals/types/delete-mutation-response.js +18 -0
  415. package/dist/server/services/internals/types/delete-mutation-response.js.map +1 -0
  416. package/dist/server/services/internals/types/delete-mutation-response.mjs +16 -0
  417. package/dist/server/services/internals/types/delete-mutation-response.mjs.map +1 -0
  418. package/dist/server/services/internals/types/error.js +32 -0
  419. package/dist/server/services/internals/types/error.js.map +1 -0
  420. package/dist/server/services/internals/types/error.mjs +30 -0
  421. package/dist/server/services/internals/types/error.mjs.map +1 -0
  422. package/dist/server/services/internals/types/filters.js +35 -0
  423. package/dist/server/services/internals/types/filters.js.map +1 -0
  424. package/dist/server/services/internals/types/filters.mjs +33 -0
  425. package/dist/server/services/internals/types/filters.mjs.map +1 -0
  426. package/dist/server/services/internals/types/index.js +32 -0
  427. package/dist/server/services/internals/types/index.js.map +1 -0
  428. package/dist/server/services/internals/types/index.mjs +30 -0
  429. package/dist/server/services/internals/types/index.mjs.map +1 -0
  430. package/dist/server/services/internals/types/pagination.js +24 -0
  431. package/dist/server/services/internals/types/pagination.js.map +1 -0
  432. package/dist/server/services/internals/types/pagination.mjs +22 -0
  433. package/dist/server/services/internals/types/pagination.mjs.map +1 -0
  434. package/dist/server/services/internals/types/publication-filter.js +25 -0
  435. package/dist/server/services/internals/types/publication-filter.js.map +1 -0
  436. package/dist/server/services/internals/types/publication-filter.mjs +23 -0
  437. package/dist/server/services/internals/types/publication-filter.mjs.map +1 -0
  438. package/dist/server/services/internals/types/publication-status.js +22 -0
  439. package/dist/server/services/internals/types/publication-status.js.map +1 -0
  440. package/dist/server/services/internals/types/publication-status.mjs +20 -0
  441. package/dist/server/services/internals/types/publication-status.mjs.map +1 -0
  442. package/dist/server/services/internals/types/response-collection-meta.js +27 -0
  443. package/dist/server/services/internals/types/response-collection-meta.js.map +1 -0
  444. package/dist/server/services/internals/types/response-collection-meta.mjs +25 -0
  445. package/dist/server/services/internals/types/response-collection-meta.mjs.map +1 -0
  446. package/dist/server/services/type-registry.js +81 -0
  447. package/dist/server/services/type-registry.js.map +1 -0
  448. package/dist/server/services/type-registry.mjs +79 -0
  449. package/dist/server/services/type-registry.mjs.map +1 -0
  450. package/dist/server/services/utils/attributes.js +65 -0
  451. package/dist/server/services/utils/attributes.js.map +1 -0
  452. package/dist/server/services/utils/attributes.mjs +63 -0
  453. package/dist/server/services/utils/attributes.mjs.map +1 -0
  454. package/dist/server/services/utils/index.js +16 -0
  455. package/dist/server/services/utils/index.js.map +1 -0
  456. package/dist/server/services/utils/index.mjs +14 -0
  457. package/dist/server/services/utils/index.mjs.map +1 -0
  458. package/dist/server/services/utils/mappers/entity-to-response-entity.js +16 -0
  459. package/dist/server/services/utils/mappers/entity-to-response-entity.js.map +1 -0
  460. package/dist/server/services/utils/mappers/entity-to-response-entity.mjs +14 -0
  461. package/dist/server/services/utils/mappers/entity-to-response-entity.mjs.map +1 -0
  462. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js +95 -0
  463. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js.map +1 -0
  464. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs +93 -0
  465. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs.map +1 -0
  466. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js +15 -0
  467. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js.map +1 -0
  468. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs +13 -0
  469. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs.map +1 -0
  470. package/dist/server/services/utils/mappers/index.js +16 -0
  471. package/dist/server/services/utils/mappers/index.js.map +1 -0
  472. package/dist/server/services/utils/mappers/index.mjs +14 -0
  473. package/dist/server/services/utils/mappers/index.mjs.map +1 -0
  474. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js +23 -0
  475. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js.map +1 -0
  476. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs +21 -0
  477. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs.map +1 -0
  478. package/dist/server/services/utils/naming.js +187 -0
  479. package/dist/server/services/utils/naming.js.map +1 -0
  480. package/dist/server/services/utils/naming.mjs +185 -0
  481. package/dist/server/services/utils/naming.mjs.map +1 -0
  482. package/dist/server/services/utils/playground.js +19 -0
  483. package/dist/server/services/utils/playground.js.map +1 -0
  484. package/dist/server/services/utils/playground.mjs +17 -0
  485. package/dist/server/services/utils/playground.mjs.map +1 -0
  486. package/dist/server/src/bootstrap.d.ts +7 -0
  487. package/dist/server/src/bootstrap.d.ts.map +1 -1
  488. package/dist/server/src/index.d.ts +35 -33
  489. package/dist/server/src/index.d.ts.map +1 -1
  490. package/dist/server/src/services/builders/dynamic-zones.d.ts.map +1 -1
  491. package/dist/server/src/services/builders/entity.d.ts.map +1 -1
  492. package/dist/server/src/services/builders/enums.d.ts.map +1 -1
  493. package/dist/server/src/services/builders/filters/content-type.d.ts.map +1 -1
  494. package/dist/server/src/services/builders/filters/index.d.ts.map +1 -1
  495. package/dist/server/src/services/builders/filters/operators/and.d.ts.map +1 -1
  496. package/dist/server/src/services/builders/filters/operators/between.d.ts.map +1 -1
  497. package/dist/server/src/services/builders/filters/operators/contains.d.ts.map +1 -1
  498. package/dist/server/src/services/builders/filters/operators/containsi.d.ts.map +1 -1
  499. package/dist/server/src/services/builders/filters/operators/ends-with.d.ts.map +1 -1
  500. package/dist/server/src/services/builders/filters/operators/eq.d.ts.map +1 -1
  501. package/dist/server/src/services/builders/filters/operators/eqi.d.ts.map +1 -1
  502. package/dist/server/src/services/builders/filters/operators/gt.d.ts.map +1 -1
  503. package/dist/server/src/services/builders/filters/operators/gte.d.ts.map +1 -1
  504. package/dist/server/src/services/builders/filters/operators/in.d.ts.map +1 -1
  505. package/dist/server/src/services/builders/filters/operators/index.d.ts +0 -1
  506. package/dist/server/src/services/builders/filters/operators/index.d.ts.map +1 -1
  507. package/dist/server/src/services/builders/filters/operators/lt.d.ts.map +1 -1
  508. package/dist/server/src/services/builders/filters/operators/lte.d.ts.map +1 -1
  509. package/dist/server/src/services/builders/filters/operators/ne.d.ts.map +1 -1
  510. package/dist/server/src/services/builders/filters/operators/nei.d.ts.map +1 -1
  511. package/dist/server/src/services/builders/filters/operators/not-contains.d.ts.map +1 -1
  512. package/dist/server/src/services/builders/filters/operators/not-containsi.d.ts.map +1 -1
  513. package/dist/server/src/services/builders/filters/operators/not-in.d.ts.map +1 -1
  514. package/dist/server/src/services/builders/filters/operators/not-null.d.ts.map +1 -1
  515. package/dist/server/src/services/builders/filters/operators/not.d.ts.map +1 -1
  516. package/dist/server/src/services/builders/filters/operators/null.d.ts.map +1 -1
  517. package/dist/server/src/services/builders/filters/operators/or.d.ts.map +1 -1
  518. package/dist/server/src/services/builders/filters/operators/starts-with.d.ts.map +1 -1
  519. package/dist/server/src/services/builders/generic-morph.d.ts.map +1 -1
  520. package/dist/server/src/services/builders/index.d.ts +7 -14
  521. package/dist/server/src/services/builders/index.d.ts.map +1 -1
  522. package/dist/server/src/services/builders/input.d.ts.map +1 -1
  523. package/dist/server/src/services/builders/mutations/collection-type.d.ts.map +1 -1
  524. package/dist/server/src/services/builders/mutations/index.d.ts.map +1 -1
  525. package/dist/server/src/services/builders/mutations/single-type.d.ts.map +1 -1
  526. package/dist/server/src/services/builders/queries/collection-type.d.ts.map +1 -1
  527. package/dist/server/src/services/builders/queries/index.d.ts.map +1 -1
  528. package/dist/server/src/services/builders/queries/single-type.d.ts.map +1 -1
  529. package/dist/server/src/services/builders/relation-response-collection.d.ts.map +1 -1
  530. package/dist/server/src/services/builders/resolvers/association.d.ts +1 -1
  531. package/dist/server/src/services/builders/resolvers/association.d.ts.map +1 -1
  532. package/dist/server/src/services/builders/resolvers/component.d.ts.map +1 -1
  533. package/dist/server/src/services/builders/resolvers/dynamic-zone.d.ts.map +1 -1
  534. package/dist/server/src/services/builders/resolvers/index.d.ts +5 -5
  535. package/dist/server/src/services/builders/resolvers/index.d.ts.map +1 -1
  536. package/dist/server/src/services/builders/resolvers/merge-publication-args.d.ts +9 -0
  537. package/dist/server/src/services/builders/resolvers/merge-publication-args.d.ts.map +1 -0
  538. package/dist/server/src/services/builders/resolvers/pagination.d.ts.map +1 -1
  539. package/dist/server/src/services/builders/resolvers/query.d.ts.map +1 -1
  540. package/dist/server/src/services/builders/response-collection.d.ts.map +1 -1
  541. package/dist/server/src/services/builders/response.d.ts.map +1 -1
  542. package/dist/server/src/services/builders/type.d.ts.map +1 -1
  543. package/dist/server/src/services/builders/utils.d.ts +4 -11
  544. package/dist/server/src/services/builders/utils.d.ts.map +1 -1
  545. package/dist/server/src/services/constants.d.ts +1 -0
  546. package/dist/server/src/services/constants.d.ts.map +1 -1
  547. package/dist/server/src/services/content-api/index.d.ts +2 -0
  548. package/dist/server/src/services/content-api/index.d.ts.map +1 -1
  549. package/dist/server/src/services/content-api/policy.d.ts.map +1 -1
  550. package/dist/server/src/services/content-api/register-functions/collection-type.d.ts.map +1 -1
  551. package/dist/server/src/services/content-api/register-functions/component.d.ts.map +1 -1
  552. package/dist/server/src/services/content-api/register-functions/dynamic-zones.d.ts.map +1 -1
  553. package/dist/server/src/services/content-api/register-functions/enums.d.ts.map +1 -1
  554. package/dist/server/src/services/content-api/register-functions/filters.d.ts.map +1 -1
  555. package/dist/server/src/services/content-api/register-functions/inputs.d.ts.map +1 -1
  556. package/dist/server/src/services/content-api/register-functions/internals.d.ts.map +1 -1
  557. package/dist/server/src/services/content-api/register-functions/polymorphic.d.ts.map +1 -1
  558. package/dist/server/src/services/content-api/register-functions/scalars.d.ts.map +1 -1
  559. package/dist/server/src/services/content-api/register-functions/single-type.d.ts.map +1 -1
  560. package/dist/server/src/services/content-api/wrap-resolvers.d.ts.map +1 -1
  561. package/dist/server/src/services/extension/extension.d.ts +10 -10
  562. package/dist/server/src/services/extension/extension.d.ts.map +1 -1
  563. package/dist/server/src/services/extension/shadow-crud-manager.d.ts +9 -9
  564. package/dist/server/src/services/extension/shadow-crud-manager.d.ts.map +1 -1
  565. package/dist/server/src/services/index.d.ts +35 -33
  566. package/dist/server/src/services/index.d.ts.map +1 -1
  567. package/dist/server/src/services/internals/args/has-published-version.d.ts +7 -0
  568. package/dist/server/src/services/internals/args/has-published-version.d.ts.map +1 -0
  569. package/dist/server/src/services/internals/args/index.d.ts +3 -0
  570. package/dist/server/src/services/internals/args/index.d.ts.map +1 -1
  571. package/dist/server/src/services/internals/args/publication-filter.d.ts +4 -0
  572. package/dist/server/src/services/internals/args/publication-filter.d.ts.map +1 -0
  573. package/dist/server/src/services/internals/args/publication-status.d.ts.map +1 -1
  574. package/dist/server/src/services/internals/helpers/get-enabled-scalars.d.ts.map +1 -1
  575. package/dist/server/src/services/internals/helpers/index.d.ts.map +1 -1
  576. package/dist/server/src/services/internals/index.d.ts +7 -0
  577. package/dist/server/src/services/internals/index.d.ts.map +1 -1
  578. package/dist/server/src/services/internals/types/delete-mutation-response.d.ts.map +1 -1
  579. package/dist/server/src/services/internals/types/error.d.ts.map +1 -1
  580. package/dist/server/src/services/internals/types/filters.d.ts.map +1 -1
  581. package/dist/server/src/services/internals/types/index.d.ts +5 -0
  582. package/dist/server/src/services/internals/types/index.d.ts.map +1 -1
  583. package/dist/server/src/services/internals/types/pagination.d.ts.map +1 -1
  584. package/dist/server/src/services/internals/types/publication-filter.d.ts +6 -0
  585. package/dist/server/src/services/internals/types/publication-filter.d.ts.map +1 -0
  586. package/dist/server/src/services/internals/types/publication-status.d.ts.map +1 -1
  587. package/dist/server/src/services/internals/types/response-collection-meta.d.ts.map +1 -1
  588. package/dist/server/src/services/type-registry.d.ts.map +1 -1
  589. package/dist/server/src/services/utils/attributes.d.ts.map +1 -1
  590. package/dist/server/src/services/utils/index.d.ts +8 -9
  591. package/dist/server/src/services/utils/index.d.ts.map +1 -1
  592. package/dist/server/src/services/utils/mappers/entity-to-response-entity.d.ts +1 -3
  593. package/dist/server/src/services/utils/mappers/entity-to-response-entity.d.ts.map +1 -1
  594. package/dist/server/src/services/utils/mappers/graphql-filters-to-strapi-query.d.ts.map +1 -1
  595. package/dist/server/src/services/utils/mappers/graphql-scalar-to-operators.d.ts.map +1 -1
  596. package/dist/server/src/services/utils/mappers/index.d.ts +1 -3
  597. package/dist/server/src/services/utils/mappers/index.d.ts.map +1 -1
  598. package/dist/server/src/services/utils/mappers/strapi-scalar-to-graphql-scalar.d.ts.map +1 -1
  599. package/dist/server/src/services/utils/naming.d.ts +3 -3
  600. package/dist/server/src/services/utils/naming.d.ts.map +1 -1
  601. package/dist/server/src/services/utils/playground.d.ts +1 -0
  602. package/dist/server/src/services/utils/playground.d.ts.map +1 -1
  603. package/package.json +30 -22
  604. package/dist/_chunks/dk-BbJCmDw6.mjs +0 -9
  605. package/dist/_chunks/dk-BbJCmDw6.mjs.map +0 -1
  606. package/dist/_chunks/dk-C9NcSzyg.js +0 -9
  607. package/dist/_chunks/dk-C9NcSzyg.js.map +0 -1
  608. package/dist/_chunks/en-BiKpmhCU.js +0 -9
  609. package/dist/_chunks/en-BiKpmhCU.js.map +0 -1
  610. package/dist/_chunks/en-YIQYYlvv.mjs +0 -9
  611. package/dist/_chunks/en-YIQYYlvv.mjs.map +0 -1
  612. package/dist/_chunks/es-BbsZ5Fh0.mjs +0 -9
  613. package/dist/_chunks/es-BbsZ5Fh0.mjs.map +0 -1
  614. package/dist/_chunks/es-DE22V9D4.js +0 -9
  615. package/dist/_chunks/es-DE22V9D4.js.map +0 -1
  616. package/dist/_chunks/fr-BgqFw7G8.mjs +0 -9
  617. package/dist/_chunks/fr-BgqFw7G8.mjs.map +0 -1
  618. package/dist/_chunks/fr-Ca-HowfR.js +0 -9
  619. package/dist/_chunks/fr-Ca-HowfR.js.map +0 -1
  620. package/dist/_chunks/pl-CbET57Jb.mjs +0 -9
  621. package/dist/_chunks/pl-CbET57Jb.mjs.map +0 -1
  622. package/dist/_chunks/pl-DVnJGR87.js +0 -9
  623. package/dist/_chunks/pl-DVnJGR87.js.map +0 -1
  624. package/dist/_chunks/ru-BFz40YSA.mjs +0 -9
  625. package/dist/_chunks/ru-BFz40YSA.mjs.map +0 -1
  626. package/dist/_chunks/ru-o4zaP02C.js +0 -9
  627. package/dist/_chunks/ru-o4zaP02C.js.map +0 -1
  628. package/dist/_chunks/sv-9qK4y9fb.js +0 -9
  629. package/dist/_chunks/sv-9qK4y9fb.js.map +0 -1
  630. package/dist/_chunks/sv-CNYcKBn2.mjs +0 -9
  631. package/dist/_chunks/sv-CNYcKBn2.mjs.map +0 -1
  632. package/dist/_chunks/tr-H1PrR6RM.mjs +0 -9
  633. package/dist/_chunks/tr-H1PrR6RM.mjs.map +0 -1
  634. package/dist/_chunks/tr-fBBDNMBY.js +0 -9
  635. package/dist/_chunks/tr-fBBDNMBY.js.map +0 -1
  636. package/dist/_chunks/zh-BEh3jejH.mjs +0 -9
  637. package/dist/_chunks/zh-BEh3jejH.mjs.map +0 -1
  638. package/dist/_chunks/zh-CyCKPuL0.js +0 -9
  639. package/dist/_chunks/zh-CyCKPuL0.js.map +0 -1
  640. package/dist/_chunks/zh-Hans-Btuz6Y7W.js +0 -9
  641. package/dist/_chunks/zh-Hans-Btuz6Y7W.js.map +0 -1
  642. package/dist/_chunks/zh-Hans-CRQss50D.mjs +0 -9
  643. package/dist/_chunks/zh-Hans-CRQss50D.mjs.map +0 -1
  644. package/strapi-server.js +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sources":["../../../../server/src/services/builders/type.ts"],"sourcesContent":["import { isArray, isString, isUndefined, constant } from 'lodash/fp';\nimport { nonNull, list, objectType } from 'nexus';\nimport { contentTypes } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\n\nimport type { Context } from '../types';\n\nexport type TypeBuildersOptions = {\n builder: any;\n attributeName: string;\n attribute: any;\n contentType: any;\n context: Context;\n};\n\nexport default (context: Context) => {\n const { strapi } = context;\n const getGraphQLService = strapi.plugin('graphql').service;\n\n const extension = getGraphQLService('extension');\n\n /**\n * Add a scalar attribute to the type definition\n *\n * The attribute is added based on a simple association between a Strapi\n * type and a GraphQL type (the map is defined in `strapiTypeToGraphQLScalar`)\n */\n const addScalarAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, attribute } = options;\n\n const { mappers } = getGraphQLService('utils');\n\n const gqlType = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n builder.field(attributeName, { type: gqlType });\n };\n\n /**\n * Add a component attribute to the type definition\n *\n * The attribute is added by fetching the component's type\n * name and using it as the attribute's type\n */\n const addComponentAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType, attribute } = options;\n\n let localBuilder = builder;\n\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildComponentResolver } = getGraphQLService('builders').get('content-api');\n\n const type = naming.getComponentNameFromAttribute(attribute);\n\n if (attribute.repeatable) {\n localBuilder = localBuilder.list;\n }\n\n const targetComponent = strapi.getModel(attribute.component);\n\n const resolve = buildComponentResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = getContentTypeArgs(targetComponent, {\n multiple: !!attribute.repeatable,\n isNested: true,\n });\n\n localBuilder.field(attributeName, { type, resolve, args });\n };\n\n /**\n * Add a dynamic zone attribute to the type definition\n *\n * The attribute is added by fetching the dynamic zone's\n * type name and using it as the attribute's type\n */\n const addDynamicZoneAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n const { ERROR_CODES } = getGraphQLService('constants');\n const { buildDynamicZoneResolver } = getGraphQLService('builders').get('content-api');\n\n const { components } = contentType.attributes[attributeName];\n\n const isEmpty = components.length === 0;\n const type = naming.getDynamicZoneName(contentType, attributeName);\n\n const resolve = isEmpty\n ? // If the dynamic zone don't have any component, then return an error payload\n constant({\n code: ERROR_CODES.emptyDynamicZone,\n message: `This dynamic zone don't have any component attached to it`,\n })\n : // Else, return a classic dynamic-zone resolver\n buildDynamicZoneResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n });\n\n builder.list.field(attributeName, { type, resolve });\n };\n\n /**\n * Add an enum attribute to the type definition\n *\n * The attribute is added by fetching the enum's type\n * name and using it as the attribute's type\n */\n const addEnumAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n\n const type = naming.getEnumName(contentType, attributeName);\n\n builder.field(attributeName, { type });\n };\n\n /**\n * Add a media attribute to the type definition\n */\n const addMediaAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n const fileUID = 'plugin::upload.file';\n\n if (extension.shadowCRUD(fileUID).isDisabled()) {\n return;\n }\n\n const fileContentType = strapi.contentTypes[fileUID];\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = attribute.multiple\n ? getContentTypeArgs(fileContentType, { isNested: true })\n : undefined;\n\n const typeName = naming.getTypeName(fileContentType);\n\n if (attribute.multiple) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(fileContentType),\n resolve,\n args,\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n /**\n * Add a polymorphic relational attribute to the type definition\n */\n const addPolymorphicRelationalAttribute = (options: TypeBuildersOptions) => {\n const { GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const { naming } = getGraphQLService('utils');\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n\n let { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n const { target } = attribute;\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n if (isToManyRelation) {\n builder = builder.list;\n }\n // todo[v4]: How to handle polymorphic relation w/ entity response collection types?\n // -> Currently return raw polymorphic entities\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n // If there is no specific target specified, then use the GenericMorph type\n if (isUndefined(target)) {\n builder.field(attributeName, {\n type: GENERIC_MORPH_TYPENAME,\n resolve,\n });\n }\n\n // If the target is an array of string, resolve the associated morph type and use it\n else if (isArray(target) && target.every(isString)) {\n const type = naming.getMorphRelationTypeName(contentType, attributeName);\n\n builder.field(attributeName, { type, resolve });\n }\n };\n\n /**\n * Add a regular relational attribute to the type definition\n */\n const addRegularRelationalAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n if (extension.shadowCRUD(attribute.target).isDisabled()) {\n return;\n }\n\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const targetContentType = strapi.getModel(attribute.target);\n\n const typeName = naming.getTypeName(targetContentType);\n\n const args = isToManyRelation\n ? getContentTypeArgs(targetContentType, { isNested: true })\n : undefined;\n\n const resolverScope = `${targetContentType.uid}.find`;\n const resolverPath = `${naming.getTypeName(contentType)}.${attributeName}`;\n\n extension.use({ resolversConfig: { [resolverPath]: { auth: { scope: [resolverScope] } } } });\n\n if (isToManyRelation) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(targetContentType),\n resolve,\n args,\n });\n\n extension.use({\n resolversConfig: { [`${resolverPath}_connection`]: { auth: { scope: [resolverScope] } } },\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n const isNotPrivate = (contentType: Struct.Schema) => (attributeName: string) => {\n return !contentTypes.isPrivateAttribute(contentType, attributeName);\n };\n\n const isNotDisabled = (contentType: Struct.Schema) => (attributeName: string) => {\n return extension.shadowCRUD(contentType.uid).field(attributeName).hasOutputEnabled();\n };\n\n return {\n /**\n * Create a type definition for a given content type\n * @param contentType - The content type used to created the definition\n * @return {NexusObjectTypeDef}\n */\n buildTypeDefinition(contentType: Struct.Schema) {\n const utils = getGraphQLService('utils');\n\n const { getComponentName, getTypeName } = utils.naming;\n const {\n isStrapiScalar,\n isComponent,\n isDynamicZone,\n isEnumeration,\n isMedia,\n isMorphRelation,\n isRelation,\n } = utils.attributes;\n\n const { attributes, modelType } = contentType;\n\n const attributesKey = Object.keys(attributes);\n\n const name = (modelType === 'component' ? getComponentName : getTypeName).call(\n null,\n contentType\n );\n\n return objectType({\n name,\n definition(t) {\n // add back the old id attribute on contentType if v4 compat is enabled\n if (\n modelType !== 'component' &&\n isNotDisabled(contentType)('id') &&\n strapi.plugin('graphql').config('v4CompatibilityMode', false)\n ) {\n t.nonNull.id('id', {\n deprecation: 'Use `documentId` instead',\n });\n }\n\n if (modelType === 'component' && isNotDisabled(contentType)('id')) {\n t.nonNull.id('id');\n }\n\n if (modelType !== 'component' && isNotDisabled(contentType)('documentId')) {\n t.nonNull.id('documentId');\n }\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.field('attributes', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n\n t.nonNull.field('data', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n }\n\n /** Attributes\n *\n * Attributes can be of 7 different kind:\n * - Scalar\n * - Component\n * - Dynamic Zone\n * - Enum\n * - Media\n * - Polymorphic Relations\n * - Regular Relations\n *\n * Here, we iterate over each non-private attribute\n * and add it to the type definition based on its type\n */\n attributesKey\n // Ignore private attributes\n .filter(isNotPrivate(contentType))\n // Ignore disabled fields (from extension service)\n .filter(isNotDisabled(contentType))\n // Add each attribute to the type definition\n .forEach((attributeName) => {\n const attribute = attributes[attributeName];\n\n // We create a copy of the builder (t) to apply custom\n // rules only on the current attribute (eg: nonNull, list, ...)\n let builder: any = t;\n\n if (attribute.required) {\n builder = builder.nonNull;\n }\n\n const options: TypeBuildersOptions = {\n builder,\n attributeName,\n attribute,\n contentType,\n context,\n };\n\n // Enums\n if (isEnumeration(attribute)) {\n addEnumAttribute(options);\n }\n\n // Scalars\n else if (isStrapiScalar(attribute)) {\n addScalarAttribute(options);\n }\n\n // Components\n else if (isComponent(attribute)) {\n addComponentAttribute(options);\n }\n\n // Dynamic Zones\n else if (isDynamicZone(attribute)) {\n addDynamicZoneAttribute(options);\n }\n\n // Media\n else if (isMedia(attribute)) {\n addMediaAttribute(options);\n }\n\n // Polymorphic Relations\n else if (isMorphRelation(attribute)) {\n addPolymorphicRelationalAttribute(options);\n }\n\n // Regular Relations\n else if (isRelation(attribute)) {\n addRegularRelationalAttribute(options);\n }\n });\n },\n });\n },\n };\n};\n"],"names":["context","strapi","getGraphQLService","plugin","service","extension","addScalarAttribute","options","builder","attributeName","attribute","mappers","gqlType","strapiScalarToGraphQLScalar","type","field","addComponentAttribute","contentType","localBuilder","naming","getContentTypeArgs","utils","buildComponentResolver","get","getComponentNameFromAttribute","repeatable","list","targetComponent","getModel","component","resolve","contentTypeUID","uid","args","multiple","isNested","addDynamicZoneAttribute","ERROR_CODES","buildDynamicZoneResolver","components","attributes","isEmpty","length","getDynamicZoneName","constant","code","emptyDynamicZone","message","addEnumAttribute","getEnumName","addMediaAttribute","buildAssociationResolver","fileUID","shadowCRUD","isDisabled","fileContentType","contentTypes","undefined","typeName","getTypeName","getRelationResponseCollectionName","nonNull","res","nodes","value","addPolymorphicRelationalAttribute","GENERIC_MORPH_TYPENAME","target","isToManyRelation","relation","endsWith","isUndefined","isArray","every","isString","getMorphRelationTypeName","addRegularRelationalAttribute","targetContentType","resolverScope","resolverPath","use","resolversConfig","auth","scope","isNotPrivate","isPrivateAttribute","isNotDisabled","hasOutputEnabled","buildTypeDefinition","getComponentName","isStrapiScalar","isComponent","isDynamicZone","isEnumeration","isMedia","isMorphRelation","isRelation","modelType","attributesKey","Object","keys","name","call","objectType","definition","t","config","id","deprecation","parent","filter","forEach","required"],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ import { constant, isUndefined, isArray, isString } from 'lodash/fp';
2
+ import { objectType, nonNull, list } from 'nexus';
3
+ import { contentTypes } from '@strapi/utils';
4
+
5
+ var typeBuilder = ((context)=>{
6
+ const { strapi } = context;
7
+ const getGraphQLService = strapi.plugin('graphql').service;
8
+ const extension = getGraphQLService('extension');
9
+ /**
10
+ * Add a scalar attribute to the type definition
11
+ *
12
+ * The attribute is added based on a simple association between a Strapi
13
+ * type and a GraphQL type (the map is defined in `strapiTypeToGraphQLScalar`)
14
+ */ const addScalarAttribute = (options)=>{
15
+ const { builder, attributeName, attribute } = options;
16
+ const { mappers } = getGraphQLService('utils');
17
+ const gqlType = mappers.strapiScalarToGraphQLScalar(attribute.type);
18
+ builder.field(attributeName, {
19
+ type: gqlType
20
+ });
21
+ };
22
+ /**
23
+ * Add a component attribute to the type definition
24
+ *
25
+ * The attribute is added by fetching the component's type
26
+ * name and using it as the attribute's type
27
+ */ const addComponentAttribute = (options)=>{
28
+ const { builder, attributeName, contentType, attribute } = options;
29
+ let localBuilder = builder;
30
+ const { naming } = getGraphQLService('utils');
31
+ const { getContentTypeArgs } = getGraphQLService('builders').utils;
32
+ const { buildComponentResolver } = getGraphQLService('builders').get('content-api');
33
+ const type = naming.getComponentNameFromAttribute(attribute);
34
+ if (attribute.repeatable) {
35
+ localBuilder = localBuilder.list;
36
+ }
37
+ const targetComponent = strapi.getModel(attribute.component);
38
+ const resolve = buildComponentResolver({
39
+ contentTypeUID: contentType.uid,
40
+ attributeName,
41
+ strapi
42
+ });
43
+ const args = getContentTypeArgs(targetComponent, {
44
+ multiple: !!attribute.repeatable,
45
+ isNested: true
46
+ });
47
+ localBuilder.field(attributeName, {
48
+ type,
49
+ resolve,
50
+ args
51
+ });
52
+ };
53
+ /**
54
+ * Add a dynamic zone attribute to the type definition
55
+ *
56
+ * The attribute is added by fetching the dynamic zone's
57
+ * type name and using it as the attribute's type
58
+ */ const addDynamicZoneAttribute = (options)=>{
59
+ const { builder, attributeName, contentType } = options;
60
+ const { naming } = getGraphQLService('utils');
61
+ const { ERROR_CODES } = getGraphQLService('constants');
62
+ const { buildDynamicZoneResolver } = getGraphQLService('builders').get('content-api');
63
+ const { components } = contentType.attributes[attributeName];
64
+ const isEmpty = components.length === 0;
65
+ const type = naming.getDynamicZoneName(contentType, attributeName);
66
+ const resolve = isEmpty ? constant({
67
+ code: ERROR_CODES.emptyDynamicZone,
68
+ message: `This dynamic zone don't have any component attached to it`
69
+ }) : buildDynamicZoneResolver({
70
+ contentTypeUID: contentType.uid,
71
+ attributeName
72
+ });
73
+ builder.list.field(attributeName, {
74
+ type,
75
+ resolve
76
+ });
77
+ };
78
+ /**
79
+ * Add an enum attribute to the type definition
80
+ *
81
+ * The attribute is added by fetching the enum's type
82
+ * name and using it as the attribute's type
83
+ */ const addEnumAttribute = (options)=>{
84
+ const { builder, attributeName, contentType } = options;
85
+ const { naming } = getGraphQLService('utils');
86
+ const type = naming.getEnumName(contentType, attributeName);
87
+ builder.field(attributeName, {
88
+ type
89
+ });
90
+ };
91
+ /**
92
+ * Add a media attribute to the type definition
93
+ */ const addMediaAttribute = (options)=>{
94
+ const { naming } = getGraphQLService('utils');
95
+ const { getContentTypeArgs } = getGraphQLService('builders').utils;
96
+ const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');
97
+ const extension = getGraphQLService('extension');
98
+ const { builder } = options;
99
+ const { attributeName, attribute, contentType } = options;
100
+ const fileUID = 'plugin::upload.file';
101
+ if (extension.shadowCRUD(fileUID).isDisabled()) {
102
+ return;
103
+ }
104
+ const fileContentType = strapi.contentTypes[fileUID];
105
+ const resolve = buildAssociationResolver({
106
+ contentTypeUID: contentType.uid,
107
+ attributeName,
108
+ strapi
109
+ });
110
+ const args = attribute.multiple ? getContentTypeArgs(fileContentType, {
111
+ isNested: true
112
+ }) : undefined;
113
+ const typeName = naming.getTypeName(fileContentType);
114
+ if (attribute.multiple) {
115
+ builder.field(`${attributeName}_connection`, {
116
+ type: naming.getRelationResponseCollectionName(fileContentType),
117
+ resolve,
118
+ args
119
+ });
120
+ builder.field(attributeName, {
121
+ type: nonNull(list(typeName)),
122
+ async resolve (...args) {
123
+ const res = await resolve(...args);
124
+ return res.nodes ?? [];
125
+ },
126
+ args
127
+ });
128
+ } else {
129
+ builder.field(attributeName, {
130
+ type: typeName,
131
+ async resolve (...args) {
132
+ const res = await resolve(...args);
133
+ return res.value;
134
+ },
135
+ args
136
+ });
137
+ }
138
+ };
139
+ /**
140
+ * Add a polymorphic relational attribute to the type definition
141
+ */ const addPolymorphicRelationalAttribute = (options)=>{
142
+ const { GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');
143
+ const { naming } = getGraphQLService('utils');
144
+ const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');
145
+ let { builder } = options;
146
+ const { attributeName, attribute, contentType } = options;
147
+ const { target } = attribute;
148
+ const isToManyRelation = attribute.relation.endsWith('Many');
149
+ if (isToManyRelation) {
150
+ builder = builder.list;
151
+ }
152
+ // todo[v4]: How to handle polymorphic relation w/ entity response collection types?
153
+ // -> Currently return raw polymorphic entities
154
+ const resolve = buildAssociationResolver({
155
+ contentTypeUID: contentType.uid,
156
+ attributeName,
157
+ strapi
158
+ });
159
+ // If there is no specific target specified, then use the GenericMorph type
160
+ if (isUndefined(target)) {
161
+ builder.field(attributeName, {
162
+ type: GENERIC_MORPH_TYPENAME,
163
+ resolve
164
+ });
165
+ } else if (isArray(target) && target.every(isString)) {
166
+ const type = naming.getMorphRelationTypeName(contentType, attributeName);
167
+ builder.field(attributeName, {
168
+ type,
169
+ resolve
170
+ });
171
+ }
172
+ };
173
+ /**
174
+ * Add a regular relational attribute to the type definition
175
+ */ const addRegularRelationalAttribute = (options)=>{
176
+ const { naming } = getGraphQLService('utils');
177
+ const { getContentTypeArgs } = getGraphQLService('builders').utils;
178
+ const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');
179
+ const extension = getGraphQLService('extension');
180
+ const { builder } = options;
181
+ const { attributeName, attribute, contentType } = options;
182
+ if (extension.shadowCRUD(attribute.target).isDisabled()) {
183
+ return;
184
+ }
185
+ const isToManyRelation = attribute.relation.endsWith('Many');
186
+ const resolve = buildAssociationResolver({
187
+ contentTypeUID: contentType.uid,
188
+ attributeName,
189
+ strapi
190
+ });
191
+ const targetContentType = strapi.getModel(attribute.target);
192
+ const typeName = naming.getTypeName(targetContentType);
193
+ const args = isToManyRelation ? getContentTypeArgs(targetContentType, {
194
+ isNested: true
195
+ }) : undefined;
196
+ const resolverScope = `${targetContentType.uid}.find`;
197
+ const resolverPath = `${naming.getTypeName(contentType)}.${attributeName}`;
198
+ extension.use({
199
+ resolversConfig: {
200
+ [resolverPath]: {
201
+ auth: {
202
+ scope: [
203
+ resolverScope
204
+ ]
205
+ }
206
+ }
207
+ }
208
+ });
209
+ if (isToManyRelation) {
210
+ builder.field(`${attributeName}_connection`, {
211
+ type: naming.getRelationResponseCollectionName(targetContentType),
212
+ resolve,
213
+ args
214
+ });
215
+ extension.use({
216
+ resolversConfig: {
217
+ [`${resolverPath}_connection`]: {
218
+ auth: {
219
+ scope: [
220
+ resolverScope
221
+ ]
222
+ }
223
+ }
224
+ }
225
+ });
226
+ builder.field(attributeName, {
227
+ type: nonNull(list(typeName)),
228
+ async resolve (...args) {
229
+ const res = await resolve(...args);
230
+ return res.nodes ?? [];
231
+ },
232
+ args
233
+ });
234
+ } else {
235
+ builder.field(attributeName, {
236
+ type: typeName,
237
+ async resolve (...args) {
238
+ const res = await resolve(...args);
239
+ return res.value;
240
+ },
241
+ args
242
+ });
243
+ }
244
+ };
245
+ const isNotPrivate = (contentType)=>(attributeName)=>{
246
+ return !contentTypes.isPrivateAttribute(contentType, attributeName);
247
+ };
248
+ const isNotDisabled = (contentType)=>(attributeName)=>{
249
+ return extension.shadowCRUD(contentType.uid).field(attributeName).hasOutputEnabled();
250
+ };
251
+ return {
252
+ /**
253
+ * Create a type definition for a given content type
254
+ * @param contentType - The content type used to created the definition
255
+ * @return {NexusObjectTypeDef}
256
+ */ buildTypeDefinition (contentType) {
257
+ const utils = getGraphQLService('utils');
258
+ const { getComponentName, getTypeName } = utils.naming;
259
+ const { isStrapiScalar, isComponent, isDynamicZone, isEnumeration, isMedia, isMorphRelation, isRelation } = utils.attributes;
260
+ const { attributes, modelType } = contentType;
261
+ const attributesKey = Object.keys(attributes);
262
+ const name = (modelType === 'component' ? getComponentName : getTypeName).call(null, contentType);
263
+ return objectType({
264
+ name,
265
+ definition (t) {
266
+ // add back the old id attribute on contentType if v4 compat is enabled
267
+ if (modelType !== 'component' && isNotDisabled(contentType)('id') && strapi.plugin('graphql').config('v4CompatibilityMode', false)) {
268
+ t.nonNull.id('id', {
269
+ deprecation: 'Use `documentId` instead'
270
+ });
271
+ }
272
+ if (modelType === 'component' && isNotDisabled(contentType)('id')) {
273
+ t.nonNull.id('id');
274
+ }
275
+ if (modelType !== 'component' && isNotDisabled(contentType)('documentId')) {
276
+ t.nonNull.id('documentId');
277
+ }
278
+ if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {
279
+ t.nonNull.field('attributes', {
280
+ deprecation: 'Use root level fields instead',
281
+ type: name,
282
+ resolve: (parent)=>parent
283
+ });
284
+ t.nonNull.field('data', {
285
+ deprecation: 'Use root level fields instead',
286
+ type: name,
287
+ resolve: (parent)=>parent
288
+ });
289
+ }
290
+ /** Attributes
291
+ *
292
+ * Attributes can be of 7 different kind:
293
+ * - Scalar
294
+ * - Component
295
+ * - Dynamic Zone
296
+ * - Enum
297
+ * - Media
298
+ * - Polymorphic Relations
299
+ * - Regular Relations
300
+ *
301
+ * Here, we iterate over each non-private attribute
302
+ * and add it to the type definition based on its type
303
+ */ attributesKey// Ignore private attributes
304
+ .filter(isNotPrivate(contentType))// Ignore disabled fields (from extension service)
305
+ .filter(isNotDisabled(contentType))// Add each attribute to the type definition
306
+ .forEach((attributeName)=>{
307
+ const attribute = attributes[attributeName];
308
+ // We create a copy of the builder (t) to apply custom
309
+ // rules only on the current attribute (eg: nonNull, list, ...)
310
+ let builder = t;
311
+ if (attribute.required) {
312
+ builder = builder.nonNull;
313
+ }
314
+ const options = {
315
+ builder,
316
+ attributeName,
317
+ attribute,
318
+ contentType};
319
+ // Enums
320
+ if (isEnumeration(attribute)) {
321
+ addEnumAttribute(options);
322
+ } else if (isStrapiScalar(attribute)) {
323
+ addScalarAttribute(options);
324
+ } else if (isComponent(attribute)) {
325
+ addComponentAttribute(options);
326
+ } else if (isDynamicZone(attribute)) {
327
+ addDynamicZoneAttribute(options);
328
+ } else if (isMedia(attribute)) {
329
+ addMediaAttribute(options);
330
+ } else if (isMorphRelation(attribute)) {
331
+ addPolymorphicRelationalAttribute(options);
332
+ } else if (isRelation(attribute)) {
333
+ addRegularRelationalAttribute(options);
334
+ }
335
+ });
336
+ }
337
+ });
338
+ }
339
+ };
340
+ });
341
+
342
+ export { typeBuilder as default };
343
+ //# sourceMappingURL=type.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.mjs","sources":["../../../../server/src/services/builders/type.ts"],"sourcesContent":["import { isArray, isString, isUndefined, constant } from 'lodash/fp';\nimport { nonNull, list, objectType } from 'nexus';\nimport { contentTypes } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\n\nimport type { Context } from '../types';\n\nexport type TypeBuildersOptions = {\n builder: any;\n attributeName: string;\n attribute: any;\n contentType: any;\n context: Context;\n};\n\nexport default (context: Context) => {\n const { strapi } = context;\n const getGraphQLService = strapi.plugin('graphql').service;\n\n const extension = getGraphQLService('extension');\n\n /**\n * Add a scalar attribute to the type definition\n *\n * The attribute is added based on a simple association between a Strapi\n * type and a GraphQL type (the map is defined in `strapiTypeToGraphQLScalar`)\n */\n const addScalarAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, attribute } = options;\n\n const { mappers } = getGraphQLService('utils');\n\n const gqlType = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n builder.field(attributeName, { type: gqlType });\n };\n\n /**\n * Add a component attribute to the type definition\n *\n * The attribute is added by fetching the component's type\n * name and using it as the attribute's type\n */\n const addComponentAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType, attribute } = options;\n\n let localBuilder = builder;\n\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildComponentResolver } = getGraphQLService('builders').get('content-api');\n\n const type = naming.getComponentNameFromAttribute(attribute);\n\n if (attribute.repeatable) {\n localBuilder = localBuilder.list;\n }\n\n const targetComponent = strapi.getModel(attribute.component);\n\n const resolve = buildComponentResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = getContentTypeArgs(targetComponent, {\n multiple: !!attribute.repeatable,\n isNested: true,\n });\n\n localBuilder.field(attributeName, { type, resolve, args });\n };\n\n /**\n * Add a dynamic zone attribute to the type definition\n *\n * The attribute is added by fetching the dynamic zone's\n * type name and using it as the attribute's type\n */\n const addDynamicZoneAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n const { ERROR_CODES } = getGraphQLService('constants');\n const { buildDynamicZoneResolver } = getGraphQLService('builders').get('content-api');\n\n const { components } = contentType.attributes[attributeName];\n\n const isEmpty = components.length === 0;\n const type = naming.getDynamicZoneName(contentType, attributeName);\n\n const resolve = isEmpty\n ? // If the dynamic zone don't have any component, then return an error payload\n constant({\n code: ERROR_CODES.emptyDynamicZone,\n message: `This dynamic zone don't have any component attached to it`,\n })\n : // Else, return a classic dynamic-zone resolver\n buildDynamicZoneResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n });\n\n builder.list.field(attributeName, { type, resolve });\n };\n\n /**\n * Add an enum attribute to the type definition\n *\n * The attribute is added by fetching the enum's type\n * name and using it as the attribute's type\n */\n const addEnumAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n\n const type = naming.getEnumName(contentType, attributeName);\n\n builder.field(attributeName, { type });\n };\n\n /**\n * Add a media attribute to the type definition\n */\n const addMediaAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n const fileUID = 'plugin::upload.file';\n\n if (extension.shadowCRUD(fileUID).isDisabled()) {\n return;\n }\n\n const fileContentType = strapi.contentTypes[fileUID];\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = attribute.multiple\n ? getContentTypeArgs(fileContentType, { isNested: true })\n : undefined;\n\n const typeName = naming.getTypeName(fileContentType);\n\n if (attribute.multiple) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(fileContentType),\n resolve,\n args,\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n /**\n * Add a polymorphic relational attribute to the type definition\n */\n const addPolymorphicRelationalAttribute = (options: TypeBuildersOptions) => {\n const { GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const { naming } = getGraphQLService('utils');\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n\n let { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n const { target } = attribute;\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n if (isToManyRelation) {\n builder = builder.list;\n }\n // todo[v4]: How to handle polymorphic relation w/ entity response collection types?\n // -> Currently return raw polymorphic entities\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n // If there is no specific target specified, then use the GenericMorph type\n if (isUndefined(target)) {\n builder.field(attributeName, {\n type: GENERIC_MORPH_TYPENAME,\n resolve,\n });\n }\n\n // If the target is an array of string, resolve the associated morph type and use it\n else if (isArray(target) && target.every(isString)) {\n const type = naming.getMorphRelationTypeName(contentType, attributeName);\n\n builder.field(attributeName, { type, resolve });\n }\n };\n\n /**\n * Add a regular relational attribute to the type definition\n */\n const addRegularRelationalAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n if (extension.shadowCRUD(attribute.target).isDisabled()) {\n return;\n }\n\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const targetContentType = strapi.getModel(attribute.target);\n\n const typeName = naming.getTypeName(targetContentType);\n\n const args = isToManyRelation\n ? getContentTypeArgs(targetContentType, { isNested: true })\n : undefined;\n\n const resolverScope = `${targetContentType.uid}.find`;\n const resolverPath = `${naming.getTypeName(contentType)}.${attributeName}`;\n\n extension.use({ resolversConfig: { [resolverPath]: { auth: { scope: [resolverScope] } } } });\n\n if (isToManyRelation) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(targetContentType),\n resolve,\n args,\n });\n\n extension.use({\n resolversConfig: { [`${resolverPath}_connection`]: { auth: { scope: [resolverScope] } } },\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n const isNotPrivate = (contentType: Struct.Schema) => (attributeName: string) => {\n return !contentTypes.isPrivateAttribute(contentType, attributeName);\n };\n\n const isNotDisabled = (contentType: Struct.Schema) => (attributeName: string) => {\n return extension.shadowCRUD(contentType.uid).field(attributeName).hasOutputEnabled();\n };\n\n return {\n /**\n * Create a type definition for a given content type\n * @param contentType - The content type used to created the definition\n * @return {NexusObjectTypeDef}\n */\n buildTypeDefinition(contentType: Struct.Schema) {\n const utils = getGraphQLService('utils');\n\n const { getComponentName, getTypeName } = utils.naming;\n const {\n isStrapiScalar,\n isComponent,\n isDynamicZone,\n isEnumeration,\n isMedia,\n isMorphRelation,\n isRelation,\n } = utils.attributes;\n\n const { attributes, modelType } = contentType;\n\n const attributesKey = Object.keys(attributes);\n\n const name = (modelType === 'component' ? getComponentName : getTypeName).call(\n null,\n contentType\n );\n\n return objectType({\n name,\n definition(t) {\n // add back the old id attribute on contentType if v4 compat is enabled\n if (\n modelType !== 'component' &&\n isNotDisabled(contentType)('id') &&\n strapi.plugin('graphql').config('v4CompatibilityMode', false)\n ) {\n t.nonNull.id('id', {\n deprecation: 'Use `documentId` instead',\n });\n }\n\n if (modelType === 'component' && isNotDisabled(contentType)('id')) {\n t.nonNull.id('id');\n }\n\n if (modelType !== 'component' && isNotDisabled(contentType)('documentId')) {\n t.nonNull.id('documentId');\n }\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.field('attributes', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n\n t.nonNull.field('data', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n }\n\n /** Attributes\n *\n * Attributes can be of 7 different kind:\n * - Scalar\n * - Component\n * - Dynamic Zone\n * - Enum\n * - Media\n * - Polymorphic Relations\n * - Regular Relations\n *\n * Here, we iterate over each non-private attribute\n * and add it to the type definition based on its type\n */\n attributesKey\n // Ignore private attributes\n .filter(isNotPrivate(contentType))\n // Ignore disabled fields (from extension service)\n .filter(isNotDisabled(contentType))\n // Add each attribute to the type definition\n .forEach((attributeName) => {\n const attribute = attributes[attributeName];\n\n // We create a copy of the builder (t) to apply custom\n // rules only on the current attribute (eg: nonNull, list, ...)\n let builder: any = t;\n\n if (attribute.required) {\n builder = builder.nonNull;\n }\n\n const options: TypeBuildersOptions = {\n builder,\n attributeName,\n attribute,\n contentType,\n context,\n };\n\n // Enums\n if (isEnumeration(attribute)) {\n addEnumAttribute(options);\n }\n\n // Scalars\n else if (isStrapiScalar(attribute)) {\n addScalarAttribute(options);\n }\n\n // Components\n else if (isComponent(attribute)) {\n addComponentAttribute(options);\n }\n\n // Dynamic Zones\n else if (isDynamicZone(attribute)) {\n addDynamicZoneAttribute(options);\n }\n\n // Media\n else if (isMedia(attribute)) {\n addMediaAttribute(options);\n }\n\n // Polymorphic Relations\n else if (isMorphRelation(attribute)) {\n addPolymorphicRelationalAttribute(options);\n }\n\n // Regular Relations\n else if (isRelation(attribute)) {\n addRegularRelationalAttribute(options);\n }\n });\n },\n });\n },\n };\n};\n"],"names":["context","strapi","getGraphQLService","plugin","service","extension","addScalarAttribute","options","builder","attributeName","attribute","mappers","gqlType","strapiScalarToGraphQLScalar","type","field","addComponentAttribute","contentType","localBuilder","naming","getContentTypeArgs","utils","buildComponentResolver","get","getComponentNameFromAttribute","repeatable","list","targetComponent","getModel","component","resolve","contentTypeUID","uid","args","multiple","isNested","addDynamicZoneAttribute","ERROR_CODES","buildDynamicZoneResolver","components","attributes","isEmpty","length","getDynamicZoneName","constant","code","emptyDynamicZone","message","addEnumAttribute","getEnumName","addMediaAttribute","buildAssociationResolver","fileUID","shadowCRUD","isDisabled","fileContentType","contentTypes","undefined","typeName","getTypeName","getRelationResponseCollectionName","nonNull","res","nodes","value","addPolymorphicRelationalAttribute","GENERIC_MORPH_TYPENAME","target","isToManyRelation","relation","endsWith","isUndefined","isArray","every","isString","getMorphRelationTypeName","addRegularRelationalAttribute","targetContentType","resolverScope","resolverPath","use","resolversConfig","auth","scope","isNotPrivate","isPrivateAttribute","isNotDisabled","hasOutputEnabled","buildTypeDefinition","getComponentName","isStrapiScalar","isComponent","isDynamicZone","isEnumeration","isMedia","isMorphRelation","isRelation","modelType","attributesKey","Object","keys","name","call","objectType","definition","t","config","id","deprecation","parent","filter","forEach","required"],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var nexus = require('nexus');
5
+ var utils$1 = require('@strapi/utils');
6
+
7
+ const { withDefaultPagination } = utils$1.pagination;
8
+ var utils = (({ strapi })=>{
9
+ const { service: getService } = strapi.plugin('graphql');
10
+ return {
11
+ getContentTypeArgs (contentType, { multiple = true, isNested = false } = {}) {
12
+ const { naming } = getService('utils');
13
+ const { args } = getService('internals');
14
+ const { modelType } = contentType;
15
+ // Components
16
+ if (modelType === 'component') {
17
+ if (!multiple) return {};
18
+ return {
19
+ filters: naming.getFiltersInputTypeName(contentType),
20
+ pagination: args.PaginationArg,
21
+ sort: args.SortArg
22
+ };
23
+ }
24
+ const { kind } = contentType;
25
+ // On non–D&P roots (e.g. User) these args do not version the parent document, but they
26
+ // are required: association resolvers inherit them into nested D&P relations (see
27
+ // builders/resolvers/association.ts + rootQueryArgsByPath). Omitting them broke
28
+ // draft/published control for populated relations (e.g. github.com/strapi/strapi/issues/25746).
29
+ //
30
+ // Future direction: add `status` / `hasPublishedVersion` / `publicationFilter` to GraphQL args on nested
31
+ // to-many (and to-one) relation fields when the *target* content type has D&P, instead
32
+ // of relying on root-level “context” that is easy to misread (args on User affecting
33
+ // Articles). That would allow different publication settings per relation branch, match
34
+ // how developers think about the graph, and let non-DP roots drop these args if desired.
35
+ // Would require extending getContentTypeArgs(..., { isNested: true }) for D&P targets
36
+ // and teaching association.ts to honor args.publicationFilter on nested fields, not
37
+ // only root inheritance.
38
+ const publicationArgs = {
39
+ status: args.PublicationStatusArg,
40
+ // Deprecated: prefer `publicationFilter` (enum cohorts).
41
+ hasPublishedVersion: args.HasPublishedVersionArg,
42
+ publicationFilter: args.PublicationFilterArg
43
+ };
44
+ // Collection Types
45
+ if (kind === 'collectionType') {
46
+ if (!multiple) {
47
+ return {
48
+ documentId: nexus.nonNull(nexus.idArg()),
49
+ ...publicationArgs
50
+ };
51
+ }
52
+ const params = {
53
+ filters: naming.getFiltersInputTypeName(contentType),
54
+ pagination: args.PaginationArg,
55
+ sort: args.SortArg
56
+ };
57
+ if (!isNested) {
58
+ Object.assign(params, publicationArgs);
59
+ }
60
+ return params;
61
+ }
62
+ // Single Types
63
+ if (kind === 'singleType') {
64
+ const params = {};
65
+ if (!isNested) {
66
+ Object.assign(params, publicationArgs);
67
+ }
68
+ return params;
69
+ }
70
+ },
71
+ /**
72
+ * Filter an object entries and keep only those whose value is a unique scalar attribute
73
+ */ getUniqueScalarAttributes (attributes) {
74
+ const { isStrapiScalar } = getService('utils').attributes;
75
+ const uniqueAttributes = fp.entries(attributes).filter(([, attribute])=>isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique);
76
+ return Object.fromEntries(uniqueAttributes);
77
+ },
78
+ /**
79
+ * Map each value from an attribute to a FiltersInput type name
80
+ * @param {object} attributes - The attributes object to transform
81
+ * @return {Object<string, string>}
82
+ */ scalarAttributesToFiltersMap (attributes) {
83
+ return fp.mapValues((attribute)=>{
84
+ const { mappers, naming } = getService('utils');
85
+ const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);
86
+ return naming.getScalarFilterInputTypeName(gqlScalar);
87
+ }, attributes);
88
+ },
89
+ /**
90
+ * Apply basic transform to GQL args
91
+ */ transformArgs (args, { contentType, usePagination = false }) {
92
+ const { mappers } = getService('utils');
93
+ const { config } = strapi.plugin('graphql');
94
+ const { pagination = {}, filters = {} } = args;
95
+ // Init
96
+ const newArgs = fp.omit([
97
+ 'pagination',
98
+ 'filters'
99
+ ], args);
100
+ // Pagination
101
+ if (usePagination) {
102
+ const defaultLimit = config('defaultLimit');
103
+ const maxLimit = config('maxLimit');
104
+ Object.assign(newArgs, withDefaultPagination(pagination, {
105
+ maxLimit,
106
+ defaults: {
107
+ offset: {
108
+ limit: defaultLimit
109
+ },
110
+ page: {
111
+ pageSize: defaultLimit
112
+ }
113
+ }
114
+ }));
115
+ }
116
+ // Filters
117
+ if (args.filters) {
118
+ Object.assign(newArgs, {
119
+ filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType)
120
+ });
121
+ }
122
+ // GraphQL SortArg defaults to `[]`; omit meaningless sort so join-table UI order is preserved.
123
+ if (!utils$1.hasSort(newArgs.sort)) {
124
+ delete newArgs.sort;
125
+ }
126
+ return newArgs;
127
+ }
128
+ };
129
+ });
130
+
131
+ module.exports = utils;
132
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { entries, mapValues, omit } from 'lodash/fp';\nimport { idArg, nonNull } from 'nexus';\nimport { hasSort, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n // On non–D&P roots (e.g. User) these args do not version the parent document, but they\n // are required: association resolvers inherit them into nested D&P relations (see\n // builders/resolvers/association.ts + rootQueryArgsByPath). Omitting them broke\n // draft/published control for populated relations (e.g. github.com/strapi/strapi/issues/25746).\n //\n // Future direction: add `status` / `hasPublishedVersion` / `publicationFilter` to GraphQL args on nested\n // to-many (and to-one) relation fields when the *target* content type has D&P, instead\n // of relying on root-level “context” that is easy to misread (args on User affecting\n // Articles). That would allow different publication settings per relation branch, match\n // how developers think about the graph, and let non-DP roots drop these args if desired.\n // Would require extending getContentTypeArgs(..., { isNested: true }) for D&P targets\n // and teaching association.ts to honor args.publicationFilter on nested fields, not\n // only root inheritance.\n const publicationArgs = {\n status: args.PublicationStatusArg,\n // Deprecated: prefer `publicationFilter` (enum cohorts).\n hasPublishedVersion: args.HasPublishedVersionArg,\n publicationFilter: args.PublicationFilterArg,\n };\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n return {\n documentId: nonNull(idArg()),\n ...publicationArgs,\n };\n }\n\n const params: Record<string, unknown> = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params: Record<string, unknown> = {};\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = entries(attributes).filter(\n ([, attribute]) => isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique\n );\n\n return Object.fromEntries(uniqueAttributes);\n },\n\n /**\n * Map each value from an attribute to a FiltersInput type name\n * @param {object} attributes - The attributes object to transform\n * @return {Object<string, string>}\n */\n scalarAttributesToFiltersMap(attributes: Struct.SchemaAttributes) {\n return mapValues((attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n }, attributes);\n },\n\n /**\n * Apply basic transform to GQL args\n */\n transformArgs(\n args: any,\n {\n contentType,\n usePagination = false,\n }: { contentType: Struct.ContentTypeSchema; usePagination?: boolean }\n ) {\n const { mappers } = getService('utils');\n const { config } = strapi.plugin('graphql');\n const { pagination = {}, filters = {} } = args;\n\n // Init\n const newArgs = omit(['pagination', 'filters'], args);\n\n // Pagination\n if (usePagination) {\n const defaultLimit: number = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n // GraphQL SortArg defaults to `[]`; omit meaningless sort so join-table UI order is preserved.\n if (!hasSort(newArgs.sort)) {\n delete newArgs.sort;\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","publicationArgs","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","publicationFilter","PublicationFilterArg","documentId","nonNull","idArg","params","Object","assign","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery","hasSort"],"mappings":"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"}