@strapi/plugin-graphql 5.37.0 → 5.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/dist/admin/index.js.map +1 -1
  2. package/dist/admin/index.mjs.map +1 -1
  3. package/dist/admin/package.json.js +1 -133
  4. package/dist/admin/package.json.js.map +1 -1
  5. package/dist/admin/package.json.mjs +2 -120
  6. package/dist/admin/package.json.mjs.map +1 -1
  7. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  8. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  9. package/dist/server/bootstrap.js.map +1 -1
  10. package/dist/server/bootstrap.mjs.map +1 -1
  11. package/dist/server/config/default-config.js.map +1 -1
  12. package/dist/server/config/default-config.mjs.map +1 -1
  13. package/dist/server/config/index.js.map +1 -1
  14. package/dist/server/config/index.mjs.map +1 -1
  15. package/dist/server/format-graphql-error.js.map +1 -1
  16. package/dist/server/format-graphql-error.mjs.map +1 -1
  17. package/dist/server/index.js +4 -4
  18. package/dist/server/index.js.map +1 -1
  19. package/dist/server/index.mjs.map +1 -1
  20. package/dist/server/services/builders/dynamic-zones.js.map +1 -1
  21. package/dist/server/services/builders/dynamic-zones.mjs.map +1 -1
  22. package/dist/server/services/builders/entity.js.map +1 -1
  23. package/dist/server/services/builders/entity.mjs.map +1 -1
  24. package/dist/server/services/builders/enums.js.map +1 -1
  25. package/dist/server/services/builders/enums.mjs.map +1 -1
  26. package/dist/server/services/builders/filters/content-type.js.map +1 -1
  27. package/dist/server/services/builders/filters/content-type.mjs.map +1 -1
  28. package/dist/server/services/builders/filters/index.js.map +1 -1
  29. package/dist/server/services/builders/filters/index.mjs.map +1 -1
  30. package/dist/server/services/builders/filters/operators/and.js.map +1 -1
  31. package/dist/server/services/builders/filters/operators/and.mjs.map +1 -1
  32. package/dist/server/services/builders/filters/operators/between.js.map +1 -1
  33. package/dist/server/services/builders/filters/operators/between.mjs.map +1 -1
  34. package/dist/server/services/builders/filters/operators/contains.js.map +1 -1
  35. package/dist/server/services/builders/filters/operators/contains.mjs.map +1 -1
  36. package/dist/server/services/builders/filters/operators/containsi.js.map +1 -1
  37. package/dist/server/services/builders/filters/operators/containsi.mjs.map +1 -1
  38. package/dist/server/services/builders/filters/operators/ends-with.js.map +1 -1
  39. package/dist/server/services/builders/filters/operators/ends-with.mjs.map +1 -1
  40. package/dist/server/services/builders/filters/operators/eq.js.map +1 -1
  41. package/dist/server/services/builders/filters/operators/eq.mjs.map +1 -1
  42. package/dist/server/services/builders/filters/operators/eqi.js.map +1 -1
  43. package/dist/server/services/builders/filters/operators/eqi.mjs.map +1 -1
  44. package/dist/server/services/builders/filters/operators/gt.js.map +1 -1
  45. package/dist/server/services/builders/filters/operators/gt.mjs.map +1 -1
  46. package/dist/server/services/builders/filters/operators/gte.js.map +1 -1
  47. package/dist/server/services/builders/filters/operators/gte.mjs.map +1 -1
  48. package/dist/server/services/builders/filters/operators/in.js.map +1 -1
  49. package/dist/server/services/builders/filters/operators/in.mjs.map +1 -1
  50. package/dist/server/services/builders/filters/operators/index.js.map +1 -1
  51. package/dist/server/services/builders/filters/operators/index.mjs +4 -4
  52. package/dist/server/services/builders/filters/operators/index.mjs.map +1 -1
  53. package/dist/server/services/builders/filters/operators/lt.js.map +1 -1
  54. package/dist/server/services/builders/filters/operators/lt.mjs.map +1 -1
  55. package/dist/server/services/builders/filters/operators/lte.js.map +1 -1
  56. package/dist/server/services/builders/filters/operators/lte.mjs.map +1 -1
  57. package/dist/server/services/builders/filters/operators/ne.js.map +1 -1
  58. package/dist/server/services/builders/filters/operators/ne.mjs.map +1 -1
  59. package/dist/server/services/builders/filters/operators/nei.js.map +1 -1
  60. package/dist/server/services/builders/filters/operators/nei.mjs.map +1 -1
  61. package/dist/server/services/builders/filters/operators/not-contains.js.map +1 -1
  62. package/dist/server/services/builders/filters/operators/not-contains.mjs.map +1 -1
  63. package/dist/server/services/builders/filters/operators/not-containsi.js.map +1 -1
  64. package/dist/server/services/builders/filters/operators/not-containsi.mjs.map +1 -1
  65. package/dist/server/services/builders/filters/operators/not-in.js.map +1 -1
  66. package/dist/server/services/builders/filters/operators/not-in.mjs.map +1 -1
  67. package/dist/server/services/builders/filters/operators/not-null.js.map +1 -1
  68. package/dist/server/services/builders/filters/operators/not-null.mjs.map +1 -1
  69. package/dist/server/services/builders/filters/operators/not.js.map +1 -1
  70. package/dist/server/services/builders/filters/operators/not.mjs.map +1 -1
  71. package/dist/server/services/builders/filters/operators/null.js.map +1 -1
  72. package/dist/server/services/builders/filters/operators/null.mjs.map +1 -1
  73. package/dist/server/services/builders/filters/operators/or.js.map +1 -1
  74. package/dist/server/services/builders/filters/operators/or.mjs.map +1 -1
  75. package/dist/server/services/builders/filters/operators/starts-with.js.map +1 -1
  76. package/dist/server/services/builders/filters/operators/starts-with.mjs.map +1 -1
  77. package/dist/server/services/builders/generic-morph.js.map +1 -1
  78. package/dist/server/services/builders/generic-morph.mjs.map +1 -1
  79. package/dist/server/services/builders/index.js.map +1 -1
  80. package/dist/server/services/builders/index.mjs.map +1 -1
  81. package/dist/server/services/builders/input.js.map +1 -1
  82. package/dist/server/services/builders/input.mjs.map +1 -1
  83. package/dist/server/services/builders/mutations/collection-type.js.map +1 -1
  84. package/dist/server/services/builders/mutations/collection-type.mjs.map +1 -1
  85. package/dist/server/services/builders/mutations/index.js.map +1 -1
  86. package/dist/server/services/builders/mutations/index.mjs.map +1 -1
  87. package/dist/server/services/builders/mutations/single-type.js.map +1 -1
  88. package/dist/server/services/builders/mutations/single-type.mjs.map +1 -1
  89. package/dist/server/services/builders/queries/collection-type.js.map +1 -1
  90. package/dist/server/services/builders/queries/collection-type.mjs.map +1 -1
  91. package/dist/server/services/builders/queries/index.js.map +1 -1
  92. package/dist/server/services/builders/queries/index.mjs.map +1 -1
  93. package/dist/server/services/builders/queries/single-type.js.map +1 -1
  94. package/dist/server/services/builders/queries/single-type.mjs.map +1 -1
  95. package/dist/server/services/builders/relation-response-collection.js.map +1 -1
  96. package/dist/server/services/builders/relation-response-collection.mjs.map +1 -1
  97. package/dist/server/services/builders/resolvers/association.js.map +1 -1
  98. package/dist/server/services/builders/resolvers/association.mjs +1 -1
  99. package/dist/server/services/builders/resolvers/association.mjs.map +1 -1
  100. package/dist/server/services/builders/resolvers/component.js.map +1 -1
  101. package/dist/server/services/builders/resolvers/component.mjs.map +1 -1
  102. package/dist/server/services/builders/resolvers/dynamic-zone.js.map +1 -1
  103. package/dist/server/services/builders/resolvers/dynamic-zone.mjs.map +1 -1
  104. package/dist/server/services/builders/resolvers/index.js.map +1 -1
  105. package/dist/server/services/builders/resolvers/index.mjs.map +1 -1
  106. package/dist/server/services/builders/resolvers/pagination.js.map +1 -1
  107. package/dist/server/services/builders/resolvers/pagination.mjs.map +1 -1
  108. package/dist/server/services/builders/resolvers/query.js.map +1 -1
  109. package/dist/server/services/builders/resolvers/query.mjs.map +1 -1
  110. package/dist/server/services/builders/response-collection.js.map +1 -1
  111. package/dist/server/services/builders/response-collection.mjs.map +1 -1
  112. package/dist/server/services/builders/response.js.map +1 -1
  113. package/dist/server/services/builders/response.mjs.map +1 -1
  114. package/dist/server/services/builders/type.js +1 -3
  115. package/dist/server/services/builders/type.js.map +1 -1
  116. package/dist/server/services/builders/type.mjs +1 -3
  117. package/dist/server/services/builders/type.mjs.map +1 -1
  118. package/dist/server/services/builders/utils.js.map +1 -1
  119. package/dist/server/services/builders/utils.mjs +2 -2
  120. package/dist/server/services/builders/utils.mjs.map +1 -1
  121. package/dist/server/services/constants.js.map +1 -1
  122. package/dist/server/services/constants.mjs.map +1 -1
  123. package/dist/server/services/content-api/index.js.map +1 -1
  124. package/dist/server/services/content-api/index.mjs.map +1 -1
  125. package/dist/server/services/content-api/policy.js.map +1 -1
  126. package/dist/server/services/content-api/policy.mjs +1 -1
  127. package/dist/server/services/content-api/policy.mjs.map +1 -1
  128. package/dist/server/services/content-api/register-functions/collection-type.js.map +1 -1
  129. package/dist/server/services/content-api/register-functions/collection-type.mjs.map +1 -1
  130. package/dist/server/services/content-api/register-functions/component.js.map +1 -1
  131. package/dist/server/services/content-api/register-functions/component.mjs.map +1 -1
  132. package/dist/server/services/content-api/register-functions/dynamic-zones.js.map +1 -1
  133. package/dist/server/services/content-api/register-functions/dynamic-zones.mjs.map +1 -1
  134. package/dist/server/services/content-api/register-functions/enums.js.map +1 -1
  135. package/dist/server/services/content-api/register-functions/enums.mjs.map +1 -1
  136. package/dist/server/services/content-api/register-functions/filters.js.map +1 -1
  137. package/dist/server/services/content-api/register-functions/filters.mjs.map +1 -1
  138. package/dist/server/services/content-api/register-functions/inputs.js.map +1 -1
  139. package/dist/server/services/content-api/register-functions/inputs.mjs.map +1 -1
  140. package/dist/server/services/content-api/register-functions/internals.js.map +1 -1
  141. package/dist/server/services/content-api/register-functions/internals.mjs.map +1 -1
  142. package/dist/server/services/content-api/register-functions/polymorphic.js.map +1 -1
  143. package/dist/server/services/content-api/register-functions/polymorphic.mjs.map +1 -1
  144. package/dist/server/services/content-api/register-functions/scalars.js.map +1 -1
  145. package/dist/server/services/content-api/register-functions/scalars.mjs.map +1 -1
  146. package/dist/server/services/content-api/register-functions/single-type.js.map +1 -1
  147. package/dist/server/services/content-api/register-functions/single-type.mjs.map +1 -1
  148. package/dist/server/services/content-api/wrap-resolvers.js.map +1 -1
  149. package/dist/server/services/content-api/wrap-resolvers.mjs.map +1 -1
  150. package/dist/server/services/extension/extension.js.map +1 -1
  151. package/dist/server/services/extension/extension.mjs.map +1 -1
  152. package/dist/server/services/extension/shadow-crud-manager.js.map +1 -1
  153. package/dist/server/services/extension/shadow-crud-manager.mjs.map +1 -1
  154. package/dist/server/services/format/index.js.map +1 -1
  155. package/dist/server/services/format/index.mjs.map +1 -1
  156. package/dist/server/services/format/return-types.js.map +1 -1
  157. package/dist/server/services/format/return-types.mjs.map +1 -1
  158. package/dist/server/services/index.js +8 -8
  159. package/dist/server/services/index.js.map +1 -1
  160. package/dist/server/services/index.mjs.map +1 -1
  161. package/dist/server/services/internals/args/index.js.map +1 -1
  162. package/dist/server/services/internals/args/index.mjs.map +1 -1
  163. package/dist/server/services/internals/args/pagination.js.map +1 -1
  164. package/dist/server/services/internals/args/pagination.mjs.map +1 -1
  165. package/dist/server/services/internals/args/publication-status.js.map +1 -1
  166. package/dist/server/services/internals/args/publication-status.mjs.map +1 -1
  167. package/dist/server/services/internals/args/sort.js.map +1 -1
  168. package/dist/server/services/internals/args/sort.mjs.map +1 -1
  169. package/dist/server/services/internals/helpers/get-enabled-scalars.js.map +1 -1
  170. package/dist/server/services/internals/helpers/get-enabled-scalars.mjs.map +1 -1
  171. package/dist/server/services/internals/helpers/index.js.map +1 -1
  172. package/dist/server/services/internals/helpers/index.mjs.map +1 -1
  173. package/dist/server/services/internals/index.js +8 -8
  174. package/dist/server/services/internals/index.js.map +1 -1
  175. package/dist/server/services/internals/index.mjs.map +1 -1
  176. package/dist/server/services/internals/scalars/date.js.map +1 -1
  177. package/dist/server/services/internals/scalars/date.mjs.map +1 -1
  178. package/dist/server/services/internals/scalars/index.js.map +1 -1
  179. package/dist/server/services/internals/scalars/index.mjs +1 -1
  180. package/dist/server/services/internals/scalars/index.mjs.map +1 -1
  181. package/dist/server/services/internals/scalars/time.js.map +1 -1
  182. package/dist/server/services/internals/scalars/time.mjs +1 -1
  183. package/dist/server/services/internals/scalars/time.mjs.map +1 -1
  184. package/dist/server/services/internals/types/delete-mutation-response.js.map +1 -1
  185. package/dist/server/services/internals/types/delete-mutation-response.mjs.map +1 -1
  186. package/dist/server/services/internals/types/error.js.map +1 -1
  187. package/dist/server/services/internals/types/error.mjs.map +1 -1
  188. package/dist/server/services/internals/types/filters.js.map +1 -1
  189. package/dist/server/services/internals/types/filters.mjs.map +1 -1
  190. package/dist/server/services/internals/types/index.js.map +1 -1
  191. package/dist/server/services/internals/types/index.mjs.map +1 -1
  192. package/dist/server/services/internals/types/pagination.js.map +1 -1
  193. package/dist/server/services/internals/types/pagination.mjs.map +1 -1
  194. package/dist/server/services/internals/types/publication-status.js.map +1 -1
  195. package/dist/server/services/internals/types/publication-status.mjs.map +1 -1
  196. package/dist/server/services/internals/types/response-collection-meta.js.map +1 -1
  197. package/dist/server/services/internals/types/response-collection-meta.mjs.map +1 -1
  198. package/dist/server/services/type-registry.js.map +1 -1
  199. package/dist/server/services/type-registry.mjs.map +1 -1
  200. package/dist/server/services/utils/attributes.js.map +1 -1
  201. package/dist/server/services/utils/attributes.mjs.map +1 -1
  202. package/dist/server/services/utils/index.js.map +1 -1
  203. package/dist/server/services/utils/index.mjs.map +1 -1
  204. package/dist/server/services/utils/mappers/entity-to-response-entity.js.map +1 -1
  205. package/dist/server/services/utils/mappers/entity-to-response-entity.mjs +5 -5
  206. package/dist/server/services/utils/mappers/entity-to-response-entity.mjs.map +1 -1
  207. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js.map +1 -1
  208. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs.map +1 -1
  209. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js.map +1 -1
  210. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs.map +1 -1
  211. package/dist/server/services/utils/mappers/index.js.map +1 -1
  212. package/dist/server/services/utils/mappers/index.mjs.map +1 -1
  213. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js.map +1 -1
  214. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs.map +1 -1
  215. package/dist/server/services/utils/naming.js.map +1 -1
  216. package/dist/server/services/utils/naming.mjs.map +1 -1
  217. package/dist/server/services/utils/playground.js.map +1 -1
  218. package/dist/server/services/utils/playground.mjs.map +1 -1
  219. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sources":["../../../../../server/src/services/builders/resolvers/query.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../../types';\n\nexport default ({ strapi }: Context) => ({\n buildQueriesResolvers({ contentType }: { contentType: Schema.ContentType }) {\n const { uid } = contentType;\n\n return {\n async findMany(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findMany({ status: 'published', ...sanitizedQuery });\n },\n\n async findFirst(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findFirst({ status: 'published', ...sanitizedQuery });\n },\n\n async findOne(parent: any, args: any, ctx: any) {\n const { documentId } = args;\n\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findOne({\n status: 'published',\n ...omit(['id', 'documentId'], sanitizedQuery),\n documentId,\n });\n },\n };\n },\n});\n"],"names":["strapi","buildQueriesResolvers","contentType","uid","findMany","parent","args","ctx","contentAPI","validate","query","auth","state","sanitizedQuery","sanitize","documents","status","findFirst","findOne","documentId","omit"],"mappings":";;;;AAIA,uBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,IAAM;QACvCC,qBAAsB,CAAA,CAAA,EAAEC,WAAW,EAAuC,EAAA;YACxE,MAAM,EAAEC,GAAG,EAAE,GAAGD,WAAAA;YAEhB,OAAO;AACL,gBAAA,MAAME,QAASC,CAAAA,CAAAA,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC7C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAa,EAAA;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAa,EAAA;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAOe,CAAAA,SAAS,CAAEZ,GAAAA,CAAAA,CAAKC,QAAQ,CAAC;wBAAEY,MAAQ,EAAA,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AAClF,iBAAA;AAEA,gBAAA,MAAMI,SAAUZ,CAAAA,CAAAA,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC9C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAa,EAAA;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAa,EAAA;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAOe,CAAAA,SAAS,CAAEZ,GAAAA,CAAAA,CAAKc,SAAS,CAAC;wBAAED,MAAQ,EAAA,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AACnF,iBAAA;AAEA,gBAAA,MAAMK,OAAQb,CAAAA,CAAAA,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC5C,MAAM,EAAEY,UAAU,EAAE,GAAGb,IAAAA;oBAEvB,MAAMN,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAa,EAAA;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAa,EAAA;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAOe,CAAAA,SAAS,CAAEZ,GAAAA,CAAAA,CAAKe,OAAO,CAAC;wBACpCF,MAAQ,EAAA,WAAA;AACR,wBAAA,GAAGI,OAAK,CAAA;AAAC,4BAAA,IAAA;AAAM,4BAAA;AAAa,yBAAA,EAAEP,cAAe,CAAA;AAC7CM,wBAAAA;AACF,qBAAA,CAAA;AACF;AACF,aAAA;AACF;AACF,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"query.js","sources":["../../../../../server/src/services/builders/resolvers/query.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../../types';\n\nexport default ({ strapi }: Context) => ({\n buildQueriesResolvers({ contentType }: { contentType: Schema.ContentType }) {\n const { uid } = contentType;\n\n return {\n async findMany(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findMany({ status: 'published', ...sanitizedQuery });\n },\n\n async findFirst(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findFirst({ status: 'published', ...sanitizedQuery });\n },\n\n async findOne(parent: any, args: any, ctx: any) {\n const { documentId } = args;\n\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findOne({\n status: 'published',\n ...omit(['id', 'documentId'], sanitizedQuery),\n documentId,\n });\n },\n };\n },\n});\n"],"names":["strapi","buildQueriesResolvers","contentType","uid","findMany","parent","args","ctx","contentAPI","validate","query","auth","state","sanitizedQuery","sanitize","documents","status","findFirst","findOne","documentId","omit"],"mappings":";;;;AAIA,uBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,IAAM;QACvCC,qBAAAA,CAAAA,CAAsB,EAAEC,WAAW,EAAuC,EAAA;YACxE,MAAM,EAAEC,GAAG,EAAE,GAAGD,WAAAA;YAEhB,OAAO;AACL,gBAAA,MAAME,QAAAA,CAAAA,CAASC,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC7C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKC,QAAQ,CAAC;wBAAEY,MAAAA,EAAQ,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AAClF,gBAAA,CAAA;AAEA,gBAAA,MAAMI,SAAAA,CAAAA,CAAUZ,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC9C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKc,SAAS,CAAC;wBAAED,MAAAA,EAAQ,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AACnF,gBAAA,CAAA;AAEA,gBAAA,MAAMK,OAAAA,CAAAA,CAAQb,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC5C,MAAM,EAAEY,UAAU,EAAE,GAAGb,IAAAA;oBAEvB,MAAMN,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKe,OAAO,CAAC;wBACpCF,MAAAA,EAAQ,WAAA;AACR,wBAAA,GAAGI,OAAAA,CAAK;AAAC,4BAAA,IAAA;AAAM,4BAAA;AAAa,yBAAA,EAAEP,cAAAA,CAAe;AAC7CM,wBAAAA;AACF,qBAAA,CAAA;AACF,gBAAA;AACF,aAAA;AACF,QAAA;AACF,KAAA,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.mjs","sources":["../../../../../server/src/services/builders/resolvers/query.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../../types';\n\nexport default ({ strapi }: Context) => ({\n buildQueriesResolvers({ contentType }: { contentType: Schema.ContentType }) {\n const { uid } = contentType;\n\n return {\n async findMany(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findMany({ status: 'published', ...sanitizedQuery });\n },\n\n async findFirst(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findFirst({ status: 'published', ...sanitizedQuery });\n },\n\n async findOne(parent: any, args: any, ctx: any) {\n const { documentId } = args;\n\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findOne({\n status: 'published',\n ...omit(['id', 'documentId'], sanitizedQuery),\n documentId,\n });\n },\n };\n },\n});\n"],"names":["strapi","buildQueriesResolvers","contentType","uid","findMany","parent","args","ctx","contentAPI","validate","query","auth","state","sanitizedQuery","sanitize","documents","status","findFirst","findOne","documentId","omit"],"mappings":";;AAIA,uBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,IAAM;QACvCC,qBAAsB,CAAA,CAAA,EAAEC,WAAW,EAAuC,EAAA;YACxE,MAAM,EAAEC,GAAG,EAAE,GAAGD,WAAAA;YAEhB,OAAO;AACL,gBAAA,MAAME,QAASC,CAAAA,CAAAA,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC7C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAa,EAAA;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAa,EAAA;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAOe,CAAAA,SAAS,CAAEZ,GAAAA,CAAAA,CAAKC,QAAQ,CAAC;wBAAEY,MAAQ,EAAA,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AAClF,iBAAA;AAEA,gBAAA,MAAMI,SAAUZ,CAAAA,CAAAA,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC9C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAa,EAAA;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAa,EAAA;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAOe,CAAAA,SAAS,CAAEZ,GAAAA,CAAAA,CAAKc,SAAS,CAAC;wBAAED,MAAQ,EAAA,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AACnF,iBAAA;AAEA,gBAAA,MAAMK,OAAQb,CAAAA,CAAAA,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC5C,MAAM,EAAEY,UAAU,EAAE,GAAGb,IAAAA;oBAEvB,MAAMN,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAa,EAAA;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAa,EAAA;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAOD,EAAAA;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAOe,CAAAA,SAAS,CAAEZ,GAAAA,CAAAA,CAAKe,OAAO,CAAC;wBACpCF,MAAQ,EAAA,WAAA;AACR,wBAAA,GAAGI,IAAK,CAAA;AAAC,4BAAA,IAAA;AAAM,4BAAA;AAAa,yBAAA,EAAEP,cAAe,CAAA;AAC7CM,wBAAAA;AACF,qBAAA,CAAA;AACF;AACF,aAAA;AACF;AACF,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"query.mjs","sources":["../../../../../server/src/services/builders/resolvers/query.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../../types';\n\nexport default ({ strapi }: Context) => ({\n buildQueriesResolvers({ contentType }: { contentType: Schema.ContentType }) {\n const { uid } = contentType;\n\n return {\n async findMany(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findMany({ status: 'published', ...sanitizedQuery });\n },\n\n async findFirst(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findFirst({ status: 'published', ...sanitizedQuery });\n },\n\n async findOne(parent: any, args: any, ctx: any) {\n const { documentId } = args;\n\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findOne({\n status: 'published',\n ...omit(['id', 'documentId'], sanitizedQuery),\n documentId,\n });\n },\n };\n },\n});\n"],"names":["strapi","buildQueriesResolvers","contentType","uid","findMany","parent","args","ctx","contentAPI","validate","query","auth","state","sanitizedQuery","sanitize","documents","status","findFirst","findOne","documentId","omit"],"mappings":";;AAIA,uBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,IAAM;QACvCC,qBAAAA,CAAAA,CAAsB,EAAEC,WAAW,EAAuC,EAAA;YACxE,MAAM,EAAEC,GAAG,EAAE,GAAGD,WAAAA;YAEhB,OAAO;AACL,gBAAA,MAAME,QAAAA,CAAAA,CAASC,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC7C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKC,QAAQ,CAAC;wBAAEY,MAAAA,EAAQ,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AAClF,gBAAA,CAAA;AAEA,gBAAA,MAAMI,SAAAA,CAAAA,CAAUZ,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC9C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKc,SAAS,CAAC;wBAAED,MAAAA,EAAQ,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AACnF,gBAAA,CAAA;AAEA,gBAAA,MAAMK,OAAAA,CAAAA,CAAQb,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC5C,MAAM,EAAEY,UAAU,EAAE,GAAGb,IAAAA;oBAEvB,MAAMN,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKe,OAAO,CAAC;wBACpCF,MAAAA,EAAQ,WAAA;AACR,wBAAA,GAAGI,IAAAA,CAAK;AAAC,4BAAA,IAAA;AAAM,4BAAA;AAAa,yBAAA,EAAEP,cAAAA,CAAe;AAC7CM,wBAAAA;AACF,qBAAA,CAAA;AACF,gBAAA;AACF,aAAA;AACF,QAAA;AACF,KAAA,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"response-collection.js","sources":["../../../../server/src/services/builders/response-collection.ts"],"sourcesContent":["import { objectType, nonNull } from 'nexus';\nimport { defaultTo, prop, pipe, identity } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { service: getService } = strapi.plugin('graphql');\n\n const { naming } = getService('utils');\n const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = getService('constants');\n\n return {\n /**\n * Build a type definition for a content API collection response for a given content type\n * @param {Schema.ContentType} contentType The content type which will be used to build its content API response definition\n * @return {NexusObjectTypeDef}\n */\n buildResponseCollectionDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseCollectionName(contentType);\n const typeName = naming.getTypeName(contentType);\n const { resolvePagination } = getService('builders').get('content-api');\n\n return objectType({\n name,\n definition(t) {\n // NOTE: add edges & cursor based pagination to support the relay spec in a later version\n\n t.nonNull.list.field('nodes', {\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('pageInfo', {\n type: PAGINATION_TYPE_NAME,\n resolve: resolvePagination,\n });\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.list.field('data', {\n deprecation: 'Use `nodes` field instead',\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('meta', {\n deprecation: 'Use the `pageInfo` field instead',\n type: RESPONSE_COLLECTION_META_TYPE_NAME,\n resolve: identity,\n });\n }\n },\n });\n },\n };\n};\n"],"names":["strapi","service","getService","plugin","naming","RESPONSE_COLLECTION_META_TYPE_NAME","PAGINATION_TYPE_NAME","buildResponseCollectionDefinition","contentType","name","getEntityResponseCollectionName","typeName","getTypeName","resolvePagination","get","objectType","definition","t","nonNull","list","field","type","resolve","pipe","prop","defaultTo","config","deprecation","identity"],"mappings":";;;;;AAKA,yBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC,IAAA,MAAM,EAAEC,OAASC,EAAAA,UAAU,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA;AAE9C,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGF,UAAW,CAAA,OAAA,CAAA;AAC9B,IAAA,MAAM,EAAEG,kCAAkC,EAAEC,oBAAoB,EAAE,GAAGJ,UAAW,CAAA,WAAA,CAAA;IAEhF,OAAO;AACL;;;;AAIC,QACDK,mCAAkCC,WAA+B,EAAA;YAC/D,MAAMC,IAAAA,GAAOL,MAAOM,CAAAA,+BAA+B,CAACF,WAAAA,CAAAA;YACpD,MAAMG,QAAAA,GAAWP,MAAOQ,CAAAA,WAAW,CAACJ,WAAAA,CAAAA;AACpC,YAAA,MAAM,EAAEK,iBAAiB,EAAE,GAAGX,UAAW,CAAA,UAAA,CAAA,CAAYY,GAAG,CAAC,aAAA,CAAA;AAEzD,YAAA,OAAOC,gBAAW,CAAA;AAChBN,gBAAAA,IAAAA;AACAO,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;;AAGVA,oBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,OAAS,EAAA;AAC5BC,wBAAAA,IAAAA,EAAMH,aAAQP,CAAAA,QAAAA,CAAAA;AACdW,wBAAAA,OAAAA,EAASC,OAAKC,CAAAA,OAAAA,CAAK,OAAUC,CAAAA,EAAAA,YAAAA,CAAU,EAAE,CAAA;AAC3C,qBAAA,CAAA;AAEAR,oBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,UAAY,EAAA;wBAC1BC,IAAMf,EAAAA,oBAAAA;wBACNgB,OAAST,EAAAA;AACX,qBAAA,CAAA;AAEA,oBAAA,IAAIb,OAAOG,MAAM,CAAC,WAAWuB,MAAM,CAAC,uBAAuB,KAAQ,CAAA,EAAA;AACjET,wBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,MAAQ,EAAA;4BAC3BO,WAAa,EAAA,2BAAA;AACbN,4BAAAA,IAAAA,EAAMH,aAAQP,CAAAA,QAAAA,CAAAA;AACdW,4BAAAA,OAAAA,EAASC,OAAKC,CAAAA,OAAAA,CAAK,OAAUC,CAAAA,EAAAA,YAAAA,CAAU,EAAE,CAAA;AAC3C,yBAAA,CAAA;AAEAR,wBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,MAAQ,EAAA;4BACtBO,WAAa,EAAA,kCAAA;4BACbN,IAAMhB,EAAAA,kCAAAA;4BACNiB,OAASM,EAAAA;AACX,yBAAA,CAAA;AACF;AACF;AACF,aAAA,CAAA;AACF;AACF,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"response-collection.js","sources":["../../../../server/src/services/builders/response-collection.ts"],"sourcesContent":["import { objectType, nonNull } from 'nexus';\nimport { defaultTo, prop, pipe, identity } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { service: getService } = strapi.plugin('graphql');\n\n const { naming } = getService('utils');\n const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = getService('constants');\n\n return {\n /**\n * Build a type definition for a content API collection response for a given content type\n * @param {Schema.ContentType} contentType The content type which will be used to build its content API response definition\n * @return {NexusObjectTypeDef}\n */\n buildResponseCollectionDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseCollectionName(contentType);\n const typeName = naming.getTypeName(contentType);\n const { resolvePagination } = getService('builders').get('content-api');\n\n return objectType({\n name,\n definition(t) {\n // NOTE: add edges & cursor based pagination to support the relay spec in a later version\n\n t.nonNull.list.field('nodes', {\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('pageInfo', {\n type: PAGINATION_TYPE_NAME,\n resolve: resolvePagination,\n });\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.list.field('data', {\n deprecation: 'Use `nodes` field instead',\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('meta', {\n deprecation: 'Use the `pageInfo` field instead',\n type: RESPONSE_COLLECTION_META_TYPE_NAME,\n resolve: identity,\n });\n }\n },\n });\n },\n };\n};\n"],"names":["strapi","service","getService","plugin","naming","RESPONSE_COLLECTION_META_TYPE_NAME","PAGINATION_TYPE_NAME","buildResponseCollectionDefinition","contentType","name","getEntityResponseCollectionName","typeName","getTypeName","resolvePagination","get","objectType","definition","t","nonNull","list","field","type","resolve","pipe","prop","defaultTo","config","deprecation","identity"],"mappings":";;;;;AAKA,yBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC,IAAA,MAAM,EAAEC,OAAAA,EAASC,UAAU,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA;AAE9C,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGF,UAAAA,CAAW,OAAA,CAAA;AAC9B,IAAA,MAAM,EAAEG,kCAAkC,EAAEC,oBAAoB,EAAE,GAAGJ,UAAAA,CAAW,WAAA,CAAA;IAEhF,OAAO;AACL;;;;AAIC,QACDK,mCAAkCC,WAA+B,EAAA;YAC/D,MAAMC,IAAAA,GAAOL,MAAAA,CAAOM,+BAA+B,CAACF,WAAAA,CAAAA;YACpD,MAAMG,QAAAA,GAAWP,MAAAA,CAAOQ,WAAW,CAACJ,WAAAA,CAAAA;AACpC,YAAA,MAAM,EAAEK,iBAAiB,EAAE,GAAGX,UAAAA,CAAW,UAAA,CAAA,CAAYY,GAAG,CAAC,aAAA,CAAA;AAEzD,YAAA,OAAOC,gBAAAA,CAAW;AAChBN,gBAAAA,IAAAA;AACAO,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;;AAGVA,oBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,OAAA,EAAS;AAC5BC,wBAAAA,IAAAA,EAAMH,aAAAA,CAAQP,QAAAA,CAAAA;AACdW,wBAAAA,OAAAA,EAASC,OAAAA,CAAKC,OAAAA,CAAK,OAAA,CAAA,EAAUC,YAAAA,CAAU,EAAE,CAAA;AAC3C,qBAAA,CAAA;AAEAR,oBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,UAAA,EAAY;wBAC1BC,IAAAA,EAAMf,oBAAAA;wBACNgB,OAAAA,EAAST;AACX,qBAAA,CAAA;AAEA,oBAAA,IAAIb,OAAOG,MAAM,CAAC,WAAWuB,MAAM,CAAC,uBAAuB,KAAA,CAAA,EAAQ;AACjET,wBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,MAAA,EAAQ;4BAC3BO,WAAAA,EAAa,2BAAA;AACbN,4BAAAA,IAAAA,EAAMH,aAAAA,CAAQP,QAAAA,CAAAA;AACdW,4BAAAA,OAAAA,EAASC,OAAAA,CAAKC,OAAAA,CAAK,OAAA,CAAA,EAAUC,YAAAA,CAAU,EAAE,CAAA;AAC3C,yBAAA,CAAA;AAEAR,wBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,MAAA,EAAQ;4BACtBO,WAAAA,EAAa,kCAAA;4BACbN,IAAAA,EAAMhB,kCAAAA;4BACNiB,OAAAA,EAASM;AACX,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"response-collection.mjs","sources":["../../../../server/src/services/builders/response-collection.ts"],"sourcesContent":["import { objectType, nonNull } from 'nexus';\nimport { defaultTo, prop, pipe, identity } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { service: getService } = strapi.plugin('graphql');\n\n const { naming } = getService('utils');\n const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = getService('constants');\n\n return {\n /**\n * Build a type definition for a content API collection response for a given content type\n * @param {Schema.ContentType} contentType The content type which will be used to build its content API response definition\n * @return {NexusObjectTypeDef}\n */\n buildResponseCollectionDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseCollectionName(contentType);\n const typeName = naming.getTypeName(contentType);\n const { resolvePagination } = getService('builders').get('content-api');\n\n return objectType({\n name,\n definition(t) {\n // NOTE: add edges & cursor based pagination to support the relay spec in a later version\n\n t.nonNull.list.field('nodes', {\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('pageInfo', {\n type: PAGINATION_TYPE_NAME,\n resolve: resolvePagination,\n });\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.list.field('data', {\n deprecation: 'Use `nodes` field instead',\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('meta', {\n deprecation: 'Use the `pageInfo` field instead',\n type: RESPONSE_COLLECTION_META_TYPE_NAME,\n resolve: identity,\n });\n }\n },\n });\n },\n };\n};\n"],"names":["strapi","service","getService","plugin","naming","RESPONSE_COLLECTION_META_TYPE_NAME","PAGINATION_TYPE_NAME","buildResponseCollectionDefinition","contentType","name","getEntityResponseCollectionName","typeName","getTypeName","resolvePagination","get","objectType","definition","t","nonNull","list","field","type","resolve","pipe","prop","defaultTo","config","deprecation","identity"],"mappings":";;;AAKA,yBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC,IAAA,MAAM,EAAEC,OAASC,EAAAA,UAAU,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA;AAE9C,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGF,UAAW,CAAA,OAAA,CAAA;AAC9B,IAAA,MAAM,EAAEG,kCAAkC,EAAEC,oBAAoB,EAAE,GAAGJ,UAAW,CAAA,WAAA,CAAA;IAEhF,OAAO;AACL;;;;AAIC,QACDK,mCAAkCC,WAA+B,EAAA;YAC/D,MAAMC,IAAAA,GAAOL,MAAOM,CAAAA,+BAA+B,CAACF,WAAAA,CAAAA;YACpD,MAAMG,QAAAA,GAAWP,MAAOQ,CAAAA,WAAW,CAACJ,WAAAA,CAAAA;AACpC,YAAA,MAAM,EAAEK,iBAAiB,EAAE,GAAGX,UAAW,CAAA,UAAA,CAAA,CAAYY,GAAG,CAAC,aAAA,CAAA;AAEzD,YAAA,OAAOC,UAAW,CAAA;AAChBN,gBAAAA,IAAAA;AACAO,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;;AAGVA,oBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,OAAS,EAAA;AAC5BC,wBAAAA,IAAAA,EAAMH,OAAQP,CAAAA,QAAAA,CAAAA;AACdW,wBAAAA,OAAAA,EAASC,IAAKC,CAAAA,IAAAA,CAAK,OAAUC,CAAAA,EAAAA,SAAAA,CAAU,EAAE,CAAA;AAC3C,qBAAA,CAAA;AAEAR,oBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,UAAY,EAAA;wBAC1BC,IAAMf,EAAAA,oBAAAA;wBACNgB,OAAST,EAAAA;AACX,qBAAA,CAAA;AAEA,oBAAA,IAAIb,OAAOG,MAAM,CAAC,WAAWuB,MAAM,CAAC,uBAAuB,KAAQ,CAAA,EAAA;AACjET,wBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,MAAQ,EAAA;4BAC3BO,WAAa,EAAA,2BAAA;AACbN,4BAAAA,IAAAA,EAAMH,OAAQP,CAAAA,QAAAA,CAAAA;AACdW,4BAAAA,OAAAA,EAASC,IAAKC,CAAAA,IAAAA,CAAK,OAAUC,CAAAA,EAAAA,SAAAA,CAAU,EAAE,CAAA;AAC3C,yBAAA,CAAA;AAEAR,wBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,MAAQ,EAAA;4BACtBO,WAAa,EAAA,kCAAA;4BACbN,IAAMhB,EAAAA,kCAAAA;4BACNiB,OAASM,EAAAA;AACX,yBAAA,CAAA;AACF;AACF;AACF,aAAA,CAAA;AACF;AACF,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"response-collection.mjs","sources":["../../../../server/src/services/builders/response-collection.ts"],"sourcesContent":["import { objectType, nonNull } from 'nexus';\nimport { defaultTo, prop, pipe, identity } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { service: getService } = strapi.plugin('graphql');\n\n const { naming } = getService('utils');\n const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = getService('constants');\n\n return {\n /**\n * Build a type definition for a content API collection response for a given content type\n * @param {Schema.ContentType} contentType The content type which will be used to build its content API response definition\n * @return {NexusObjectTypeDef}\n */\n buildResponseCollectionDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseCollectionName(contentType);\n const typeName = naming.getTypeName(contentType);\n const { resolvePagination } = getService('builders').get('content-api');\n\n return objectType({\n name,\n definition(t) {\n // NOTE: add edges & cursor based pagination to support the relay spec in a later version\n\n t.nonNull.list.field('nodes', {\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('pageInfo', {\n type: PAGINATION_TYPE_NAME,\n resolve: resolvePagination,\n });\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.list.field('data', {\n deprecation: 'Use `nodes` field instead',\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('meta', {\n deprecation: 'Use the `pageInfo` field instead',\n type: RESPONSE_COLLECTION_META_TYPE_NAME,\n resolve: identity,\n });\n }\n },\n });\n },\n };\n};\n"],"names":["strapi","service","getService","plugin","naming","RESPONSE_COLLECTION_META_TYPE_NAME","PAGINATION_TYPE_NAME","buildResponseCollectionDefinition","contentType","name","getEntityResponseCollectionName","typeName","getTypeName","resolvePagination","get","objectType","definition","t","nonNull","list","field","type","resolve","pipe","prop","defaultTo","config","deprecation","identity"],"mappings":";;;AAKA,yBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC,IAAA,MAAM,EAAEC,OAAAA,EAASC,UAAU,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA;AAE9C,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGF,UAAAA,CAAW,OAAA,CAAA;AAC9B,IAAA,MAAM,EAAEG,kCAAkC,EAAEC,oBAAoB,EAAE,GAAGJ,UAAAA,CAAW,WAAA,CAAA;IAEhF,OAAO;AACL;;;;AAIC,QACDK,mCAAkCC,WAA+B,EAAA;YAC/D,MAAMC,IAAAA,GAAOL,MAAAA,CAAOM,+BAA+B,CAACF,WAAAA,CAAAA;YACpD,MAAMG,QAAAA,GAAWP,MAAAA,CAAOQ,WAAW,CAACJ,WAAAA,CAAAA;AACpC,YAAA,MAAM,EAAEK,iBAAiB,EAAE,GAAGX,UAAAA,CAAW,UAAA,CAAA,CAAYY,GAAG,CAAC,aAAA,CAAA;AAEzD,YAAA,OAAOC,UAAAA,CAAW;AAChBN,gBAAAA,IAAAA;AACAO,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;;AAGVA,oBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,OAAA,EAAS;AAC5BC,wBAAAA,IAAAA,EAAMH,OAAAA,CAAQP,QAAAA,CAAAA;AACdW,wBAAAA,OAAAA,EAASC,IAAAA,CAAKC,IAAAA,CAAK,OAAA,CAAA,EAAUC,SAAAA,CAAU,EAAE,CAAA;AAC3C,qBAAA,CAAA;AAEAR,oBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,UAAA,EAAY;wBAC1BC,IAAAA,EAAMf,oBAAAA;wBACNgB,OAAAA,EAAST;AACX,qBAAA,CAAA;AAEA,oBAAA,IAAIb,OAAOG,MAAM,CAAC,WAAWuB,MAAM,CAAC,uBAAuB,KAAA,CAAA,EAAQ;AACjET,wBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,MAAA,EAAQ;4BAC3BO,WAAAA,EAAa,2BAAA;AACbN,4BAAAA,IAAAA,EAAMH,OAAAA,CAAQP,QAAAA,CAAAA;AACdW,4BAAAA,OAAAA,EAASC,IAAAA,CAAKC,IAAAA,CAAK,OAAA,CAAA,EAAUC,SAAAA,CAAU,EAAE,CAAA;AAC3C,yBAAA,CAAA;AAEAR,wBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,MAAA,EAAQ;4BACtBO,WAAAA,EAAa,kCAAA;4BACbN,IAAAA,EAAMhB,kCAAAA;4BACNiB,OAAAA,EAASM;AACX,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sources":["../../../../server/src/services/builders/response.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { prop } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n return {\n /**\n * Build a type definition for a content API response for a given content type\n */\n buildResponseDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseName(contentType);\n const typeName = naming.getTypeName(contentType);\n\n return objectType({\n name,\n\n definition(t) {\n t.field('data', {\n type: typeName,\n\n resolve: prop('value'),\n });\n },\n });\n },\n };\n};\n"],"names":["strapi","naming","plugin","service","buildResponseDefinition","contentType","name","getEntityResponseName","typeName","getTypeName","objectType","definition","t","field","type","resolve","prop"],"mappings":";;;;;AAKA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAWC,CAAAA,CAAAA,OAAO,CAAC,OAAA,CAAA;IAEpD,OAAO;AACL;;AAEC,QACDC,yBAAwBC,WAA+B,EAAA;YACrD,MAAMC,IAAAA,GAAOL,MAAOM,CAAAA,qBAAqB,CAACF,WAAAA,CAAAA;YAC1C,MAAMG,QAAAA,GAAWP,MAAOQ,CAAAA,WAAW,CAACJ,WAAAA,CAAAA;AAEpC,YAAA,OAAOK,gBAAW,CAAA;AAChBJ,gBAAAA,IAAAA;AAEAK,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;oBACVA,CAAEC,CAAAA,KAAK,CAAC,MAAQ,EAAA;wBACdC,IAAMN,EAAAA,QAAAA;AAENO,wBAAAA,OAAAA,EAASC,OAAK,CAAA,OAAA;AAChB,qBAAA,CAAA;AACF;AACF,aAAA,CAAA;AACF;AACF,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"response.js","sources":["../../../../server/src/services/builders/response.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { prop } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n return {\n /**\n * Build a type definition for a content API response for a given content type\n */\n buildResponseDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseName(contentType);\n const typeName = naming.getTypeName(contentType);\n\n return objectType({\n name,\n\n definition(t) {\n t.field('data', {\n type: typeName,\n\n resolve: prop('value'),\n });\n },\n });\n },\n };\n};\n"],"names":["strapi","naming","plugin","service","buildResponseDefinition","contentType","name","getEntityResponseName","typeName","getTypeName","objectType","definition","t","field","type","resolve","prop"],"mappings":";;;;;AAKA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,OAAA,CAAA;IAEpD,OAAO;AACL;;AAEC,QACDC,yBAAwBC,WAA+B,EAAA;YACrD,MAAMC,IAAAA,GAAOL,MAAAA,CAAOM,qBAAqB,CAACF,WAAAA,CAAAA;YAC1C,MAAMG,QAAAA,GAAWP,MAAAA,CAAOQ,WAAW,CAACJ,WAAAA,CAAAA;AAEpC,YAAA,OAAOK,gBAAAA,CAAW;AAChBJ,gBAAAA,IAAAA;AAEAK,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;oBACVA,CAAAA,CAAEC,KAAK,CAAC,MAAA,EAAQ;wBACdC,IAAAA,EAAMN,QAAAA;AAENO,wBAAAA,OAAAA,EAASC,OAAAA,CAAK,OAAA;AAChB,qBAAA,CAAA;AACF,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"response.mjs","sources":["../../../../server/src/services/builders/response.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { prop } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n return {\n /**\n * Build a type definition for a content API response for a given content type\n */\n buildResponseDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseName(contentType);\n const typeName = naming.getTypeName(contentType);\n\n return objectType({\n name,\n\n definition(t) {\n t.field('data', {\n type: typeName,\n\n resolve: prop('value'),\n });\n },\n });\n },\n };\n};\n"],"names":["strapi","naming","plugin","service","buildResponseDefinition","contentType","name","getEntityResponseName","typeName","getTypeName","objectType","definition","t","field","type","resolve","prop"],"mappings":";;;AAKA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAWC,CAAAA,CAAAA,OAAO,CAAC,OAAA,CAAA;IAEpD,OAAO;AACL;;AAEC,QACDC,yBAAwBC,WAA+B,EAAA;YACrD,MAAMC,IAAAA,GAAOL,MAAOM,CAAAA,qBAAqB,CAACF,WAAAA,CAAAA;YAC1C,MAAMG,QAAAA,GAAWP,MAAOQ,CAAAA,WAAW,CAACJ,WAAAA,CAAAA;AAEpC,YAAA,OAAOK,UAAW,CAAA;AAChBJ,gBAAAA,IAAAA;AAEAK,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;oBACVA,CAAEC,CAAAA,KAAK,CAAC,MAAQ,EAAA;wBACdC,IAAMN,EAAAA,QAAAA;AAENO,wBAAAA,OAAAA,EAASC,IAAK,CAAA,OAAA;AAChB,qBAAA,CAAA;AACF;AACF,aAAA,CAAA;AACF;AACF,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"response.mjs","sources":["../../../../server/src/services/builders/response.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { prop } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n return {\n /**\n * Build a type definition for a content API response for a given content type\n */\n buildResponseDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseName(contentType);\n const typeName = naming.getTypeName(contentType);\n\n return objectType({\n name,\n\n definition(t) {\n t.field('data', {\n type: typeName,\n\n resolve: prop('value'),\n });\n },\n });\n },\n };\n};\n"],"names":["strapi","naming","plugin","service","buildResponseDefinition","contentType","name","getEntityResponseName","typeName","getTypeName","objectType","definition","t","field","type","resolve","prop"],"mappings":";;;AAKA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,OAAA,CAAA;IAEpD,OAAO;AACL;;AAEC,QACDC,yBAAwBC,WAA+B,EAAA;YACrD,MAAMC,IAAAA,GAAOL,MAAAA,CAAOM,qBAAqB,CAACF,WAAAA,CAAAA;YAC1C,MAAMG,QAAAA,GAAWP,MAAAA,CAAOQ,WAAW,CAACJ,WAAAA,CAAAA;AAEpC,YAAA,OAAOK,UAAAA,CAAW;AAChBJ,gBAAAA,IAAAA;AAEAK,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;oBACVA,CAAAA,CAAEC,KAAK,CAAC,MAAA,EAAQ;wBACdC,IAAAA,EAAMN,QAAAA;AAENO,wBAAAA,OAAAA,EAASC,IAAAA,CAAK,OAAA;AAChB,qBAAA,CAAA;AACF,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
@@ -317,9 +317,7 @@ var typeBuilder = ((context)=>{
317
317
  builder,
318
318
  attributeName,
319
319
  attribute,
320
- contentType,
321
- context
322
- };
320
+ contentType};
323
321
  // Enums
324
322
  if (isEnumeration(attribute)) {
325
323
  addEnumAttribute(options);
@@ -1 +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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"}
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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"}
@@ -315,9 +315,7 @@ var typeBuilder = ((context)=>{
315
315
  builder,
316
316
  attributeName,
317
317
  attribute,
318
- contentType,
319
- context
320
- };
318
+ contentType};
321
319
  // Enums
322
320
  if (isEnumeration(attribute)) {
323
321
  addEnumAttribute(options);
@@ -1 +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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"}
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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"}
@@ -1 +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 { contentTypes, 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 const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n const params: Record<string, unknown> = {\n documentId: nonNull(idArg()),\n };\n\n if (hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n const params = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params = {};\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\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 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","hasDraftAndPublish","contentTypes","params","documentId","nonNull","idArg","Object","assign","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","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"],"mappings":"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"}
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 { contentTypes, 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 const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n const params: Record<string, unknown> = {\n documentId: nonNull(idArg()),\n };\n\n if (hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n const params = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params = {};\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\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 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","hasDraftAndPublish","contentTypes","params","documentId","nonNull","idArg","Object","assign","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","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"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { entries, mapValues, omit } from 'lodash/fp';
1
+ import { omit, mapValues, entries } from 'lodash/fp';
2
2
  import { nonNull, idArg } from 'nexus';
3
- import { contentTypes, pagination } from '@strapi/utils';
3
+ import { pagination, contentTypes } from '@strapi/utils';
4
4
 
5
5
  const { withDefaultPagination } = pagination;
6
6
  var utils = (({ strapi })=>{
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { entries, mapValues, omit } from 'lodash/fp';\nimport { idArg, nonNull } from 'nexus';\nimport { contentTypes, 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 const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n const params: Record<string, unknown> = {\n documentId: nonNull(idArg()),\n };\n\n if (hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n const params = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params = {};\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\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 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","hasDraftAndPublish","contentTypes","params","documentId","nonNull","idArg","Object","assign","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","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"],"mappings":"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"}
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { entries, mapValues, omit } from 'lodash/fp';\nimport { idArg, nonNull } from 'nexus';\nimport { contentTypes, 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 const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n const params: Record<string, unknown> = {\n documentId: nonNull(idArg()),\n };\n\n if (hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n const params = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params = {};\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\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 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","hasDraftAndPublish","contentTypes","params","documentId","nonNull","idArg","Object","assign","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","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"],"mappings":"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"}