@strapi/plugin-graphql 0.0.0-experimental.6340da17068c3bed7fb006e7bcc554c71129e282 → 0.0.0-experimental.63624e21eb5b0713345a0cf2f68f1c40eab427bc

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 (217) hide show
  1. package/dist/admin/index.js +1 -1
  2. package/dist/admin/index.js.map +1 -1
  3. package/dist/admin/index.mjs +1 -1
  4. package/dist/admin/index.mjs.map +1 -1
  5. package/dist/admin/package.json.js +1 -2
  6. package/dist/admin/package.json.js.map +1 -1
  7. package/dist/admin/package.json.mjs +1 -2
  8. package/dist/admin/package.json.mjs.map +1 -1
  9. package/dist/admin/src/index.d.ts +2 -1
  10. package/dist/admin/translations/ko.json.js +10 -0
  11. package/dist/admin/translations/ko.json.js.map +1 -0
  12. package/dist/admin/translations/ko.json.mjs +8 -0
  13. package/dist/admin/translations/ko.json.mjs.map +1 -0
  14. package/dist/server/bootstrap.js +35 -10
  15. package/dist/server/bootstrap.js.map +1 -1
  16. package/dist/server/bootstrap.mjs +33 -9
  17. package/dist/server/bootstrap.mjs.map +1 -1
  18. package/dist/server/format-graphql-error.js +34 -8
  19. package/dist/server/format-graphql-error.js.map +1 -1
  20. package/dist/server/format-graphql-error.mjs +34 -8
  21. package/dist/server/format-graphql-error.mjs.map +1 -1
  22. package/dist/server/index.js.map +1 -1
  23. package/dist/server/index.mjs.map +1 -1
  24. package/dist/server/services/builders/dynamic-zones.js +3 -3
  25. package/dist/server/services/builders/dynamic-zones.js.map +1 -1
  26. package/dist/server/services/builders/dynamic-zones.mjs +3 -3
  27. package/dist/server/services/builders/dynamic-zones.mjs.map +1 -1
  28. package/dist/server/services/builders/entity.js +4 -4
  29. package/dist/server/services/builders/entity.js.map +1 -1
  30. package/dist/server/services/builders/entity.mjs +2 -2
  31. package/dist/server/services/builders/entity.mjs.map +1 -1
  32. package/dist/server/services/builders/enums.js +2 -2
  33. package/dist/server/services/builders/enums.js.map +1 -1
  34. package/dist/server/services/builders/enums.mjs +2 -2
  35. package/dist/server/services/builders/enums.mjs.map +1 -1
  36. package/dist/server/services/builders/filters/content-type.js +1 -0
  37. package/dist/server/services/builders/filters/content-type.js.map +1 -1
  38. package/dist/server/services/builders/filters/content-type.mjs +1 -0
  39. package/dist/server/services/builders/filters/content-type.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/index.js +3 -3
  43. package/dist/server/services/builders/filters/operators/index.js.map +1 -1
  44. package/dist/server/services/builders/filters/operators/index.mjs +3 -3
  45. package/dist/server/services/builders/filters/operators/index.mjs.map +1 -1
  46. package/dist/server/services/builders/filters/operators/not.js +1 -0
  47. package/dist/server/services/builders/filters/operators/not.js.map +1 -1
  48. package/dist/server/services/builders/filters/operators/not.mjs +1 -0
  49. package/dist/server/services/builders/filters/operators/not.mjs.map +1 -1
  50. package/dist/server/services/builders/generic-morph.js +1 -2
  51. package/dist/server/services/builders/generic-morph.js.map +1 -1
  52. package/dist/server/services/builders/generic-morph.mjs +1 -2
  53. package/dist/server/services/builders/generic-morph.mjs.map +1 -1
  54. package/dist/server/services/builders/index.js +2 -4
  55. package/dist/server/services/builders/index.js.map +1 -1
  56. package/dist/server/services/builders/index.mjs +2 -4
  57. package/dist/server/services/builders/index.mjs.map +1 -1
  58. package/dist/server/services/builders/input.js +1 -2
  59. package/dist/server/services/builders/input.js.map +1 -1
  60. package/dist/server/services/builders/input.mjs +1 -2
  61. package/dist/server/services/builders/input.mjs.map +1 -1
  62. package/dist/server/services/builders/queries/collection-type.js.map +1 -1
  63. package/dist/server/services/builders/queries/collection-type.mjs.map +1 -1
  64. package/dist/server/services/builders/queries/single-type.js.map +1 -1
  65. package/dist/server/services/builders/queries/single-type.mjs.map +1 -1
  66. package/dist/server/services/builders/relation-response-collection.js +3 -3
  67. package/dist/server/services/builders/relation-response-collection.js.map +1 -1
  68. package/dist/server/services/builders/relation-response-collection.mjs +3 -3
  69. package/dist/server/services/builders/relation-response-collection.mjs.map +1 -1
  70. package/dist/server/services/builders/resolvers/association.js +4 -3
  71. package/dist/server/services/builders/resolvers/association.js.map +1 -1
  72. package/dist/server/services/builders/resolvers/association.mjs +4 -3
  73. package/dist/server/services/builders/resolvers/association.mjs.map +1 -1
  74. package/dist/server/services/builders/resolvers/component.js +1 -0
  75. package/dist/server/services/builders/resolvers/component.js.map +1 -1
  76. package/dist/server/services/builders/resolvers/component.mjs +1 -0
  77. package/dist/server/services/builders/resolvers/component.mjs.map +1 -1
  78. package/dist/server/services/builders/resolvers/query.js +3 -3
  79. package/dist/server/services/builders/resolvers/query.js.map +1 -1
  80. package/dist/server/services/builders/resolvers/query.mjs +3 -3
  81. package/dist/server/services/builders/resolvers/query.mjs.map +1 -1
  82. package/dist/server/services/builders/response-collection.js +4 -4
  83. package/dist/server/services/builders/response-collection.js.map +1 -1
  84. package/dist/server/services/builders/response-collection.mjs +3 -3
  85. package/dist/server/services/builders/response-collection.mjs.map +1 -1
  86. package/dist/server/services/builders/response.js +1 -2
  87. package/dist/server/services/builders/response.js.map +1 -1
  88. package/dist/server/services/builders/response.mjs +1 -2
  89. package/dist/server/services/builders/response.mjs.map +1 -1
  90. package/dist/server/services/builders/type.js +4 -4
  91. package/dist/server/services/builders/type.js.map +1 -1
  92. package/dist/server/services/builders/type.mjs +3 -3
  93. package/dist/server/services/builders/type.mjs.map +1 -1
  94. package/dist/server/services/builders/utils.js +7 -6
  95. package/dist/server/services/builders/utils.js.map +1 -1
  96. package/dist/server/services/builders/utils.mjs +7 -6
  97. package/dist/server/services/builders/utils.mjs.map +1 -1
  98. package/dist/server/services/constants.js +3 -3
  99. package/dist/server/services/constants.js.map +1 -1
  100. package/dist/server/services/constants.mjs +3 -3
  101. package/dist/server/services/constants.mjs.map +1 -1
  102. package/dist/server/services/content-api/index.js +12 -10
  103. package/dist/server/services/content-api/index.js.map +1 -1
  104. package/dist/server/services/content-api/index.mjs +12 -10
  105. package/dist/server/services/content-api/index.mjs.map +1 -1
  106. package/dist/server/services/content-api/policy.js +2 -3
  107. package/dist/server/services/content-api/policy.js.map +1 -1
  108. package/dist/server/services/content-api/policy.mjs +2 -3
  109. package/dist/server/services/content-api/policy.mjs.map +1 -1
  110. package/dist/server/services/content-api/register-functions/internals.js +1 -3
  111. package/dist/server/services/content-api/register-functions/internals.js.map +1 -1
  112. package/dist/server/services/content-api/register-functions/internals.mjs +1 -3
  113. package/dist/server/services/content-api/register-functions/internals.mjs.map +1 -1
  114. package/dist/server/services/content-api/wrap-resolvers.js +13 -13
  115. package/dist/server/services/content-api/wrap-resolvers.js.map +1 -1
  116. package/dist/server/services/content-api/wrap-resolvers.mjs +13 -13
  117. package/dist/server/services/content-api/wrap-resolvers.mjs.map +1 -1
  118. package/dist/server/services/extension/extension.js +3 -3
  119. package/dist/server/services/extension/extension.js.map +1 -1
  120. package/dist/server/services/extension/extension.mjs +3 -3
  121. package/dist/server/services/extension/extension.mjs.map +1 -1
  122. package/dist/server/services/extension/shadow-crud-manager.js +3 -3
  123. package/dist/server/services/extension/shadow-crud-manager.js.map +1 -1
  124. package/dist/server/services/extension/shadow-crud-manager.mjs +3 -3
  125. package/dist/server/services/extension/shadow-crud-manager.mjs.map +1 -1
  126. package/dist/server/services/index.js.map +1 -1
  127. package/dist/server/services/index.mjs +2 -2
  128. package/dist/server/services/index.mjs.map +1 -1
  129. package/dist/server/services/internals/helpers/get-enabled-scalars.js +2 -2
  130. package/dist/server/services/internals/helpers/get-enabled-scalars.js.map +1 -1
  131. package/dist/server/services/internals/helpers/get-enabled-scalars.mjs +1 -1
  132. package/dist/server/services/internals/helpers/get-enabled-scalars.mjs.map +1 -1
  133. package/dist/server/services/internals/types/error.js +1 -2
  134. package/dist/server/services/internals/types/error.js.map +1 -1
  135. package/dist/server/services/internals/types/error.mjs +1 -2
  136. package/dist/server/services/internals/types/error.mjs.map +1 -1
  137. package/dist/server/services/internals/types/filters.js +3 -0
  138. package/dist/server/services/internals/types/filters.js.map +1 -1
  139. package/dist/server/services/internals/types/filters.mjs +3 -0
  140. package/dist/server/services/internals/types/filters.mjs.map +1 -1
  141. package/dist/server/services/type-registry.js +1 -2
  142. package/dist/server/services/type-registry.js.map +1 -1
  143. package/dist/server/services/type-registry.mjs +1 -2
  144. package/dist/server/services/type-registry.mjs.map +1 -1
  145. package/dist/server/services/utils/attributes.js +7 -6
  146. package/dist/server/services/utils/attributes.js.map +1 -1
  147. package/dist/server/services/utils/attributes.mjs +7 -6
  148. package/dist/server/services/utils/attributes.mjs.map +1 -1
  149. package/dist/server/services/utils/mappers/entity-to-response-entity.js +2 -2
  150. package/dist/server/services/utils/mappers/entity-to-response-entity.js.map +1 -1
  151. package/dist/server/services/utils/mappers/entity-to-response-entity.mjs +2 -2
  152. package/dist/server/services/utils/mappers/entity-to-response-entity.mjs.map +1 -1
  153. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js +11 -10
  154. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js.map +1 -1
  155. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs +10 -9
  156. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs.map +1 -1
  157. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js +4 -3
  158. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js.map +1 -1
  159. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs +4 -3
  160. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs.map +1 -1
  161. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js +3 -3
  162. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js.map +1 -1
  163. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs +2 -2
  164. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs.map +1 -1
  165. package/dist/server/services/utils/naming.js +13 -10
  166. package/dist/server/services/utils/naming.js.map +1 -1
  167. package/dist/server/services/utils/naming.mjs +9 -6
  168. package/dist/server/services/utils/naming.mjs.map +1 -1
  169. package/dist/server/src/bootstrap.d.ts +5 -0
  170. package/dist/server/src/bootstrap.d.ts.map +1 -1
  171. package/dist/server/src/format-graphql-error.d.ts.map +1 -1
  172. package/dist/server/src/index.d.ts +170 -54
  173. package/dist/server/src/index.d.ts.map +1 -1
  174. package/dist/server/src/services/builders/dynamic-zones.d.ts +1 -1
  175. package/dist/server/src/services/builders/filters/content-type.d.ts.map +1 -1
  176. package/dist/server/src/services/builders/filters/index.d.ts +1 -1
  177. package/dist/server/src/services/builders/filters/operators/index.d.ts +112 -5
  178. package/dist/server/src/services/builders/filters/operators/index.d.ts.map +1 -1
  179. package/dist/server/src/services/builders/filters/operators/not.d.ts.map +1 -1
  180. package/dist/server/src/services/builders/generic-morph.d.ts.map +1 -1
  181. package/dist/server/src/services/builders/index.d.ts +120 -11
  182. package/dist/server/src/services/builders/index.d.ts.map +1 -1
  183. package/dist/server/src/services/builders/input.d.ts.map +1 -1
  184. package/dist/server/src/services/builders/mutations/index.d.ts +2 -2
  185. package/dist/server/src/services/builders/queries/collection-type.d.ts.map +1 -1
  186. package/dist/server/src/services/builders/queries/index.d.ts +2 -2
  187. package/dist/server/src/services/builders/resolvers/association.d.ts.map +1 -1
  188. package/dist/server/src/services/builders/resolvers/component.d.ts.map +1 -1
  189. package/dist/server/src/services/builders/resolvers/index.d.ts +7 -7
  190. package/dist/server/src/services/builders/resolvers/index.d.ts.map +1 -1
  191. package/dist/server/src/services/builders/resolvers/query.d.ts +3 -3
  192. package/dist/server/src/services/builders/response.d.ts.map +1 -1
  193. package/dist/server/src/services/builders/utils.d.ts +4 -2
  194. package/dist/server/src/services/builders/utils.d.ts.map +1 -1
  195. package/dist/server/src/services/constants.d.ts +4 -67
  196. package/dist/server/src/services/constants.d.ts.map +1 -1
  197. package/dist/server/src/services/content-api/index.d.ts.map +1 -1
  198. package/dist/server/src/services/content-api/policy.d.ts.map +1 -1
  199. package/dist/server/src/services/extension/shadow-crud-manager.d.ts.map +1 -1
  200. package/dist/server/src/services/index.d.ts +170 -54
  201. package/dist/server/src/services/index.d.ts.map +1 -1
  202. package/dist/server/src/services/internals/types/error.d.ts.map +1 -1
  203. package/dist/server/src/services/internals/types/filters.d.ts.map +1 -1
  204. package/dist/server/src/services/type-registry.d.ts.map +1 -1
  205. package/dist/server/src/services/utils/attributes.d.ts.map +1 -1
  206. package/dist/server/src/services/utils/index.d.ts +46 -40
  207. package/dist/server/src/services/utils/index.d.ts.map +1 -1
  208. package/dist/server/src/services/utils/mappers/entity-to-response-entity.d.ts +14 -7
  209. package/dist/server/src/services/utils/mappers/entity-to-response-entity.d.ts.map +1 -1
  210. package/dist/server/src/services/utils/mappers/graphql-filters-to-strapi-query.d.ts.map +1 -1
  211. package/dist/server/src/services/utils/mappers/index.d.ts +19 -13
  212. package/dist/server/src/services/utils/mappers/index.d.ts.map +1 -1
  213. package/dist/server/src/types/index.d.ts +64 -0
  214. package/dist/server/src/types/index.d.ts.map +1 -0
  215. package/dist/server/src/types/services.d.ts +97 -0
  216. package/dist/server/src/types/services.d.ts.map +1 -0
  217. package/package.json +32 -18
@@ -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 { constant, isString } from 'lodash';\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 (target === undefined) {\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 (Array.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","Array","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,4 +1,4 @@
1
- import { constant, isUndefined, isArray, isString } from 'lodash/fp';
1
+ import { constant, isString } from 'lodash';
2
2
  import { objectType, nonNull, list } from 'nexus';
3
3
  import { contentTypes } from '@strapi/utils';
4
4
 
@@ -157,12 +157,12 @@ var typeBuilder = ((context)=>{
157
157
  strapi
158
158
  });
159
159
  // If there is no specific target specified, then use the GenericMorph type
160
- if (isUndefined(target)) {
160
+ if (target === undefined) {
161
161
  builder.field(attributeName, {
162
162
  type: GENERIC_MORPH_TYPENAME,
163
163
  resolve
164
164
  });
165
- } else if (isArray(target) && target.every(isString)) {
165
+ } else if (Array.isArray(target) && target.every(isString)) {
166
166
  const type = naming.getMorphRelationTypeName(contentType, attributeName);
167
167
  builder.field(attributeName, {
168
168
  type,
@@ -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 { constant, isString } from 'lodash';\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 (target === undefined) {\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 (Array.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","Array","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":";;;;AAeA,kBAAe,CAAA,CAACA,OAAAA,GAAAA;IACd,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAAA;AACnB,IAAA,MAAME,iBAAAA,GAAoBD,MAAAA,CAAOE,MAAM,CAAC,WAAWC,OAAO;AAE1D,IAAA,MAAMC,YAAYH,iBAAAA,CAAkB,WAAA,CAAA;AAEpC;;;;;MAMA,MAAMI,qBAAqB,CAACC,OAAAA,GAAAA;AAC1B,QAAA,MAAM,EAAEC,OAAO,EAAEC,aAAa,EAAEC,SAAS,EAAE,GAAGH,OAAAA;AAE9C,QAAA,MAAM,EAAEI,OAAO,EAAE,GAAGT,iBAAAA,CAAkB,OAAA,CAAA;AAEtC,QAAA,MAAMU,OAAAA,GAAUD,OAAAA,CAAQE,2BAA2B,CAACH,UAAUI,IAAI,CAAA;QAElEN,OAAAA,CAAQO,KAAK,CAACN,aAAAA,EAAe;YAAEK,IAAAA,EAAMF;AAAQ,SAAA,CAAA;AAC/C,IAAA,CAAA;AAEA;;;;;MAMA,MAAMI,wBAAwB,CAACT,OAAAA,GAAAA;QAC7B,MAAM,EAAEC,OAAO,EAAEC,aAAa,EAAEQ,WAAW,EAAEP,SAAS,EAAE,GAAGH,OAAAA;AAE3D,QAAA,IAAIW,YAAAA,GAAeV,OAAAA;AAEnB,QAAA,MAAM,EAAEW,MAAM,EAAE,GAAGjB,iBAAAA,CAAkB,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEkB,kBAAkB,EAAE,GAAGlB,iBAAAA,CAAkB,YAAYmB,KAAK;AAClE,QAAA,MAAM,EAAEC,sBAAsB,EAAE,GAAGpB,iBAAAA,CAAkB,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;QAErE,MAAMT,IAAAA,GAAOK,MAAAA,CAAOK,6BAA6B,CAACd,SAAAA,CAAAA;QAElD,IAAIA,SAAAA,CAAUe,UAAU,EAAE;AACxBP,YAAAA,YAAAA,GAAeA,aAAaQ,IAAI;AAClC,QAAA;AAEA,QAAA,MAAMC,eAAAA,GAAkB1B,MAAAA,CAAO2B,QAAQ,CAAClB,UAAUmB,SAAS,CAAA;AAE3D,QAAA,MAAMC,UAAUR,sBAAAA,CAAuB;AACrCS,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA,aAAAA;AACAR,YAAAA;AACF,SAAA,CAAA;QAEA,MAAMgC,IAAAA,GAAOb,mBAAmBO,eAAAA,EAAiB;YAC/CO,QAAAA,EAAU,CAAC,CAACxB,SAAAA,CAAUe,UAAU;YAChCU,QAAAA,EAAU;AACZ,SAAA,CAAA;QAEAjB,YAAAA,CAAaH,KAAK,CAACN,aAAAA,EAAe;AAAEK,YAAAA,IAAAA;AAAMgB,YAAAA,OAAAA;AAASG,YAAAA;AAAK,SAAA,CAAA;AAC1D,IAAA,CAAA;AAEA;;;;;MAMA,MAAMG,0BAA0B,CAAC7B,OAAAA,GAAAA;AAC/B,QAAA,MAAM,EAAEC,OAAO,EAAEC,aAAa,EAAEQ,WAAW,EAAE,GAAGV,OAAAA;AAEhD,QAAA,MAAM,EAAEY,MAAM,EAAE,GAAGjB,iBAAAA,CAAkB,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEmC,WAAW,EAAE,GAAGnC,iBAAAA,CAAkB,WAAA,CAAA;AAC1C,QAAA,MAAM,EAAEoC,wBAAwB,EAAE,GAAGpC,iBAAAA,CAAkB,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;AAEvE,QAAA,MAAM,EAAEgB,UAAU,EAAE,GAAGtB,WAAAA,CAAYuB,UAAU,CAAC/B,aAAAA,CAAc;QAE5D,MAAMgC,OAAAA,GAAUF,UAAAA,CAAWG,MAAM,KAAK,CAAA;AACtC,QAAA,MAAM5B,IAAAA,GAAOK,MAAAA,CAAOwB,kBAAkB,CAAC1B,WAAAA,EAAaR,aAAAA,CAAAA;QAEpD,MAAMqB,OAAAA,GAAUW,UAEZG,QAAAA,CAAS;AACPC,YAAAA,IAAAA,EAAMR,YAAYS,gBAAgB;YAClCC,OAAAA,EAAS,CAAC,yDAAyD;AACrE,SAAA,CAAA,GAEAT,wBAAAA,CAAyB;AACvBP,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA;AACF,SAAA,CAAA;AAEJD,QAAAA,OAAAA,CAAQkB,IAAI,CAACX,KAAK,CAACN,aAAAA,EAAe;AAAEK,YAAAA,IAAAA;AAAMgB,YAAAA;AAAQ,SAAA,CAAA;AACpD,IAAA,CAAA;AAEA;;;;;MAMA,MAAMkB,mBAAmB,CAACzC,OAAAA,GAAAA;AACxB,QAAA,MAAM,EAAEC,OAAO,EAAEC,aAAa,EAAEQ,WAAW,EAAE,GAAGV,OAAAA;AAEhD,QAAA,MAAM,EAAEY,MAAM,EAAE,GAAGjB,iBAAAA,CAAkB,OAAA,CAAA;AAErC,QAAA,MAAMY,IAAAA,GAAOK,MAAAA,CAAO8B,WAAW,CAAChC,WAAAA,EAAaR,aAAAA,CAAAA;QAE7CD,OAAAA,CAAQO,KAAK,CAACN,aAAAA,EAAe;AAAEK,YAAAA;AAAK,SAAA,CAAA;AACtC,IAAA,CAAA;AAEA;;MAGA,MAAMoC,oBAAoB,CAAC3C,OAAAA,GAAAA;AACzB,QAAA,MAAM,EAAEY,MAAM,EAAE,GAAGjB,iBAAAA,CAAkB,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEkB,kBAAkB,EAAE,GAAGlB,iBAAAA,CAAkB,YAAYmB,KAAK;AAClE,QAAA,MAAM,EAAE8B,wBAAwB,EAAE,GAAGjD,iBAAAA,CAAkB,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;AACvE,QAAA,MAAMlB,YAAYH,iBAAAA,CAAkB,WAAA,CAAA;QAEpC,MAAM,EAAEM,OAAO,EAAE,GAAGD,OAAAA;AACpB,QAAA,MAAM,EAAEE,aAAa,EAAEC,SAAS,EAAEO,WAAW,EAAE,GAAGV,OAAAA;AAClD,QAAA,MAAM6C,OAAAA,GAAU,qBAAA;AAEhB,QAAA,IAAI/C,SAAAA,CAAUgD,UAAU,CAACD,OAAAA,CAAAA,CAASE,UAAU,EAAA,EAAI;AAC9C,YAAA;AACF,QAAA;AAEA,QAAA,MAAMC,eAAAA,GAAkBtD,MAAAA,CAAOuD,YAAY,CAACJ,OAAAA,CAAQ;AAEpD,QAAA,MAAMtB,UAAUqB,wBAAAA,CAAyB;AACvCpB,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA,aAAAA;AACAR,YAAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAMgC,IAAAA,GAAOvB,SAAAA,CAAUwB,QAAQ,GAC3Bd,mBAAmBmC,eAAAA,EAAiB;YAAEpB,QAAAA,EAAU;SAAK,CAAA,GACrDsB,SAAAA;QAEJ,MAAMC,QAAAA,GAAWvC,MAAAA,CAAOwC,WAAW,CAACJ,eAAAA,CAAAA;QAEpC,IAAI7C,SAAAA,CAAUwB,QAAQ,EAAE;AACtB1B,YAAAA,OAAAA,CAAQO,KAAK,CAAC,CAAA,EAAGN,aAAAA,CAAc,WAAW,CAAC,EAAE;gBAC3CK,IAAAA,EAAMK,MAAAA,CAAOyC,iCAAiC,CAACL,eAAAA,CAAAA;AAC/CzB,gBAAAA,OAAAA;AACAG,gBAAAA;AACF,aAAA,CAAA;YAEAzB,OAAAA,CAAQO,KAAK,CAACN,aAAAA,EAAe;AAC3BK,gBAAAA,IAAAA,EAAM+C,QAAQnC,IAAAA,CAAKgC,QAAAA,CAAAA,CAAAA;gBACnB,MAAM5B,OAAAA,CAAAA,CAAQ,GAAGG,IAAe,EAAA;oBAC9B,MAAM6B,GAAAA,GAAM,MAAMhC,OAAAA,CAAAA,GAAWG,IAAAA,CAAAA;oBAC7B,OAAO6B,GAAAA,CAAIC,KAAK,IAAI,EAAE;AACxB,gBAAA,CAAA;AACA9B,gBAAAA;AACF,aAAA,CAAA;QACF,CAAA,MAAO;YACLzB,OAAAA,CAAQO,KAAK,CAACN,aAAAA,EAAe;gBAC3BK,IAAAA,EAAM4C,QAAAA;gBACN,MAAM5B,OAAAA,CAAAA,CAAQ,GAAGG,IAAe,EAAA;oBAC9B,MAAM6B,GAAAA,GAAM,MAAMhC,OAAAA,CAAAA,GAAWG,IAAAA,CAAAA;AAC7B,oBAAA,OAAO6B,IAAIE,KAAK;AAClB,gBAAA,CAAA;AACA/B,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA;;MAGA,MAAMgC,oCAAoC,CAAC1D,OAAAA,GAAAA;AACzC,QAAA,MAAM,EAAE2D,sBAAsB,EAAE,GAAGhE,iBAAAA,CAAkB,WAAA,CAAA;AACrD,QAAA,MAAM,EAAEiB,MAAM,EAAE,GAAGjB,iBAAAA,CAAkB,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEiD,wBAAwB,EAAE,GAAGjD,iBAAAA,CAAkB,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;QAEvE,IAAI,EAAEf,OAAO,EAAE,GAAGD,OAAAA;AAClB,QAAA,MAAM,EAAEE,aAAa,EAAEC,SAAS,EAAEO,WAAW,EAAE,GAAGV,OAAAA;QAElD,MAAM,EAAE4D,MAAM,EAAE,GAAGzD,SAAAA;AACnB,QAAA,MAAM0D,gBAAAA,GAAmB1D,SAAAA,CAAU2D,QAAQ,CAACC,QAAQ,CAAC,MAAA,CAAA;AAErD,QAAA,IAAIF,gBAAAA,EAAkB;AACpB5D,YAAAA,OAAAA,GAAUA,QAAQkB,IAAI;AACxB,QAAA;;;AAIA,QAAA,MAAMI,UAAUqB,wBAAAA,CAAyB;AACvCpB,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA,aAAAA;AACAR,YAAAA;AACF,SAAA,CAAA;;AAGA,QAAA,IAAIkE,WAAWV,SAAAA,EAAW;YACxBjD,OAAAA,CAAQO,KAAK,CAACN,aAAAA,EAAe;gBAC3BK,IAAAA,EAAMoD,sBAAAA;AACNpC,gBAAAA;AACF,aAAA,CAAA;QACF,CAAA,MAGK,IAAIyC,MAAMC,OAAO,CAACL,WAAWA,MAAAA,CAAOM,KAAK,CAACC,QAAAA,CAAAA,EAAW;AACxD,YAAA,MAAM5D,IAAAA,GAAOK,MAAAA,CAAOwD,wBAAwB,CAAC1D,WAAAA,EAAaR,aAAAA,CAAAA;YAE1DD,OAAAA,CAAQO,KAAK,CAACN,aAAAA,EAAe;AAAEK,gBAAAA,IAAAA;AAAMgB,gBAAAA;AAAQ,aAAA,CAAA;AAC/C,QAAA;AACF,IAAA,CAAA;AAEA;;MAGA,MAAM8C,gCAAgC,CAACrE,OAAAA,GAAAA;AACrC,QAAA,MAAM,EAAEY,MAAM,EAAE,GAAGjB,iBAAAA,CAAkB,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEkB,kBAAkB,EAAE,GAAGlB,iBAAAA,CAAkB,YAAYmB,KAAK;AAClE,QAAA,MAAM,EAAE8B,wBAAwB,EAAE,GAAGjD,iBAAAA,CAAkB,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;AACvE,QAAA,MAAMlB,YAAYH,iBAAAA,CAAkB,WAAA,CAAA;QAEpC,MAAM,EAAEM,OAAO,EAAE,GAAGD,OAAAA;AACpB,QAAA,MAAM,EAAEE,aAAa,EAAEC,SAAS,EAAEO,WAAW,EAAE,GAAGV,OAAAA;AAElD,QAAA,IAAIF,UAAUgD,UAAU,CAAC3C,UAAUyD,MAAM,CAAA,CAAEb,UAAU,EAAA,EAAI;AACvD,YAAA;AACF,QAAA;AAEA,QAAA,MAAMc,gBAAAA,GAAmB1D,SAAAA,CAAU2D,QAAQ,CAACC,QAAQ,CAAC,MAAA,CAAA;AAErD,QAAA,MAAMxC,UAAUqB,wBAAAA,CAAyB;AACvCpB,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA,aAAAA;AACAR,YAAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAM4E,iBAAAA,GAAoB5E,MAAAA,CAAO2B,QAAQ,CAAClB,UAAUyD,MAAM,CAAA;QAE1D,MAAMT,QAAAA,GAAWvC,MAAAA,CAAOwC,WAAW,CAACkB,iBAAAA,CAAAA;QAEpC,MAAM5C,IAAAA,GAAOmC,gBAAAA,GACThD,kBAAAA,CAAmByD,iBAAAA,EAAmB;YAAE1C,QAAAA,EAAU;SAAK,CAAA,GACvDsB,SAAAA;AAEJ,QAAA,MAAMqB,gBAAgB,CAAA,EAAGD,iBAAAA,CAAkB7C,GAAG,CAAC,KAAK,CAAC;QACrD,MAAM+C,YAAAA,GAAe,GAAG5D,MAAAA,CAAOwC,WAAW,CAAC1C,WAAAA,CAAAA,CAAa,CAAC,EAAER,aAAAA,CAAAA,CAAe;AAE1EJ,QAAAA,SAAAA,CAAU2E,GAAG,CAAC;YAAEC,eAAAA,EAAiB;AAAE,gBAAA,CAACF,eAAe;oBAAEG,IAAAA,EAAM;wBAAEC,KAAAA,EAAO;AAACL,4BAAAA;AAAc;AAAC;AAAE;AAAE;AAAE,SAAA,CAAA;AAE1F,QAAA,IAAIV,gBAAAA,EAAkB;AACpB5D,YAAAA,OAAAA,CAAQO,KAAK,CAAC,CAAA,EAAGN,aAAAA,CAAc,WAAW,CAAC,EAAE;gBAC3CK,IAAAA,EAAMK,MAAAA,CAAOyC,iCAAiC,CAACiB,iBAAAA,CAAAA;AAC/C/C,gBAAAA,OAAAA;AACAG,gBAAAA;AACF,aAAA,CAAA;AAEA5B,YAAAA,SAAAA,CAAU2E,GAAG,CAAC;gBACZC,eAAAA,EAAiB;AAAE,oBAAA,CAAC,CAAA,EAAGF,YAAAA,CAAa,WAAW,CAAC,GAAG;wBAAEG,IAAAA,EAAM;4BAAEC,KAAAA,EAAO;AAACL,gCAAAA;AAAc;AAAC;AAAE;AAAE;AAC1F,aAAA,CAAA;YAEAtE,OAAAA,CAAQO,KAAK,CAACN,aAAAA,EAAe;AAC3BK,gBAAAA,IAAAA,EAAM+C,QAAQnC,IAAAA,CAAKgC,QAAAA,CAAAA,CAAAA;gBACnB,MAAM5B,OAAAA,CAAAA,CAAQ,GAAGG,IAAe,EAAA;oBAC9B,MAAM6B,GAAAA,GAAM,MAAMhC,OAAAA,CAAAA,GAAWG,IAAAA,CAAAA;oBAC7B,OAAO6B,GAAAA,CAAIC,KAAK,IAAI,EAAE;AACxB,gBAAA,CAAA;AACA9B,gBAAAA;AACF,aAAA,CAAA;QACF,CAAA,MAAO;YACLzB,OAAAA,CAAQO,KAAK,CAACN,aAAAA,EAAe;gBAC3BK,IAAAA,EAAM4C,QAAAA;gBACN,MAAM5B,OAAAA,CAAAA,CAAQ,GAAGG,IAAe,EAAA;oBAC9B,MAAM6B,GAAAA,GAAM,MAAMhC,OAAAA,CAAAA,GAAWG,IAAAA,CAAAA;AAC7B,oBAAA,OAAO6B,IAAIE,KAAK;AAClB,gBAAA,CAAA;AACA/B,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,MAAMmD,YAAAA,GAAe,CAACnE,WAAAA,GAA+B,CAACR,aAAAA,GAAAA;AACpD,YAAA,OAAO,CAAC+C,YAAAA,CAAa6B,kBAAkB,CAACpE,WAAAA,EAAaR,aAAAA,CAAAA;AACvD,QAAA,CAAA;IAEA,MAAM6E,aAAAA,GAAgB,CAACrE,WAAAA,GAA+B,CAACR,aAAAA,GAAAA;YACrD,OAAOJ,SAAAA,CAAUgD,UAAU,CAACpC,WAAAA,CAAYe,GAAG,CAAA,CAAEjB,KAAK,CAACN,aAAAA,CAAAA,CAAe8E,gBAAgB,EAAA;AACpF,QAAA,CAAA;IAEA,OAAO;AACL;;;;AAIC,QACDC,qBAAoBvE,WAA0B,EAAA;AAC5C,YAAA,MAAMI,QAAQnB,iBAAAA,CAAkB,OAAA,CAAA;AAEhC,YAAA,MAAM,EAAEuF,gBAAgB,EAAE9B,WAAW,EAAE,GAAGtC,MAAMF,MAAM;AACtD,YAAA,MAAM,EACJuE,cAAc,EACdC,WAAW,EACXC,aAAa,EACbC,aAAa,EACbC,OAAO,EACPC,eAAe,EACfC,UAAU,EACX,GAAG3E,MAAMmB,UAAU;AAEpB,YAAA,MAAM,EAAEA,UAAU,EAAEyD,SAAS,EAAE,GAAGhF,WAAAA;YAElC,MAAMiF,aAAAA,GAAgBC,MAAAA,CAAOC,IAAI,CAAC5D,UAAAA,CAAAA;YAElC,MAAM6D,IAAAA,GAAO,CAACJ,SAAAA,KAAc,WAAA,GAAcR,mBAAmB9B,WAAU,EAAG2C,IAAI,CAC5E,IAAA,EACArF,WAAAA,CAAAA;AAGF,YAAA,OAAOsF,UAAAA,CAAW;AAChBF,gBAAAA,IAAAA;AACAG,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;;AAEV,oBAAA,IACER,SAAAA,KAAc,WAAA,IACdX,aAAAA,CAAcrE,WAAAA,CAAAA,CAAa,IAAA,CAAA,IAC3BhB,MAAAA,CAAOE,MAAM,CAAC,SAAA,CAAA,CAAWuG,MAAM,CAAC,qBAAA,EAAuB,KAAA,CAAA,EACvD;AACAD,wBAAAA,CAAAA,CAAE5C,OAAO,CAAC8C,EAAE,CAAC,IAAA,EAAM;4BACjBC,WAAAA,EAAa;AACf,yBAAA,CAAA;AACF,oBAAA;AAEA,oBAAA,IAAIX,SAAAA,KAAc,WAAA,IAAeX,aAAAA,CAAcrE,WAAAA,CAAAA,CAAa,IAAA,CAAA,EAAO;wBACjEwF,CAAAA,CAAE5C,OAAO,CAAC8C,EAAE,CAAC,IAAA,CAAA;AACf,oBAAA;AAEA,oBAAA,IAAIV,SAAAA,KAAc,WAAA,IAAeX,aAAAA,CAAcrE,WAAAA,CAAAA,CAAa,YAAA,CAAA,EAAe;wBACzEwF,CAAAA,CAAE5C,OAAO,CAAC8C,EAAE,CAAC,YAAA,CAAA;AACf,oBAAA;AAEA,oBAAA,IAAI1G,OAAOE,MAAM,CAAC,WAAWuG,MAAM,CAAC,uBAAuB,KAAA,CAAA,EAAQ;AACjED,wBAAAA,CAAAA,CAAE5C,OAAO,CAAC9C,KAAK,CAAC,YAAA,EAAc;4BAC5B6F,WAAAA,EAAa,+BAAA;4BACb9F,IAAAA,EAAMuF,IAAAA;AACNvE,4BAAAA,OAAAA,EAAS,CAAC+E,MAAAA,GAAWA;AACvB,yBAAA,CAAA;AAEAJ,wBAAAA,CAAAA,CAAE5C,OAAO,CAAC9C,KAAK,CAAC,MAAA,EAAQ;4BACtB6F,WAAAA,EAAa,+BAAA;4BACb9F,IAAAA,EAAMuF,IAAAA;AACNvE,4BAAAA,OAAAA,EAAS,CAAC+E,MAAAA,GAAWA;AACvB,yBAAA,CAAA;AACF,oBAAA;AAEA;;;;;;;;;;;;;AAaC,cACDX,aACE;qBACCY,MAAM,CAAC1B,YAAAA,CAAanE,WAAAA,CAAAA,CACrB;qBACC6F,MAAM,CAACxB,aAAAA,CAAcrE,WAAAA,CAAAA,CACtB;AACC8F,qBAAAA,OAAO,CAAC,CAACtG,aAAAA,GAAAA;wBACR,MAAMC,SAAAA,GAAY8B,UAAU,CAAC/B,aAAAA,CAAc;;;AAI3C,wBAAA,IAAID,OAAAA,GAAeiG,CAAAA;wBAEnB,IAAI/F,SAAAA,CAAUsG,QAAQ,EAAE;AACtBxG,4BAAAA,OAAAA,GAAUA,QAAQqD,OAAO;AAC3B,wBAAA;AAEA,wBAAA,MAAMtD,OAAAA,GAA+B;AACnCC,4BAAAA,OAAAA;AACAC,4BAAAA,aAAAA;AACAC,4BAAAA,SAAAA;AACAO,4BAAAA,WAEF,CAAA;;AAGA,wBAAA,IAAI4E,cAAcnF,SAAAA,CAAAA,EAAY;4BAC5BsC,gBAAAA,CAAiBzC,OAAAA,CAAAA;wBACnB,CAAA,MAGK,IAAImF,eAAehF,SAAAA,CAAAA,EAAY;4BAClCJ,kBAAAA,CAAmBC,OAAAA,CAAAA;wBACrB,CAAA,MAGK,IAAIoF,YAAYjF,SAAAA,CAAAA,EAAY;4BAC/BM,qBAAAA,CAAsBT,OAAAA,CAAAA;wBACxB,CAAA,MAGK,IAAIqF,cAAclF,SAAAA,CAAAA,EAAY;4BACjC0B,uBAAAA,CAAwB7B,OAAAA,CAAAA;wBAC1B,CAAA,MAGK,IAAIuF,QAAQpF,SAAAA,CAAAA,EAAY;4BAC3BwC,iBAAAA,CAAkB3C,OAAAA,CAAAA;wBACpB,CAAA,MAGK,IAAIwF,gBAAgBrF,SAAAA,CAAAA,EAAY;4BACnCuD,iCAAAA,CAAkC1D,OAAAA,CAAAA;wBACpC,CAAA,MAGK,IAAIyF,WAAWtF,SAAAA,CAAAA,EAAY;4BAC9BkE,6BAAAA,CAA8BrE,OAAAA,CAAAA;AAChC,wBAAA;AACF,oBAAA,CAAA,CAAA;AACJ,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var lodash = require('lodash');
4
4
  var nexus = require('nexus');
5
5
  var utils$1 = require('@strapi/utils');
6
6
 
@@ -72,7 +72,7 @@ var utils = (({ strapi })=>{
72
72
  * Filter an object entries and keep only those whose value is a unique scalar attribute
73
73
  */ getUniqueScalarAttributes (attributes) {
74
74
  const { isStrapiScalar } = getService('utils').attributes;
75
- const uniqueAttributes = fp.entries(attributes).filter(([, attribute])=>isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique);
75
+ const uniqueAttributes = Object.entries(attributes ?? {}).filter(([, attribute])=>isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique);
76
76
  return Object.fromEntries(uniqueAttributes);
77
77
  },
78
78
  /**
@@ -80,11 +80,11 @@ var utils = (({ strapi })=>{
80
80
  * @param {object} attributes - The attributes object to transform
81
81
  * @return {Object<string, string>}
82
82
  */ scalarAttributesToFiltersMap (attributes) {
83
- return fp.mapValues((attribute)=>{
83
+ return lodash.mapValues(attributes, (attribute)=>{
84
84
  const { mappers, naming } = getService('utils');
85
85
  const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);
86
86
  return naming.getScalarFilterInputTypeName(gqlScalar);
87
- }, attributes);
87
+ });
88
88
  },
89
89
  /**
90
90
  * Apply basic transform to GQL args
@@ -93,12 +93,13 @@ var utils = (({ strapi })=>{
93
93
  const { config } = strapi.plugin('graphql');
94
94
  const { pagination = {}, filters = {} } = args;
95
95
  // Init
96
- const newArgs = fp.omit([
96
+ const newArgs = lodash.omit(args, [
97
97
  'pagination',
98
98
  'filters'
99
- ], args);
99
+ ]);
100
100
  // Pagination
101
101
  if (usePagination) {
102
+ // Unset unless the application configures it.
102
103
  const defaultLimit = config('defaultLimit');
103
104
  const maxLimit = config('maxLimit');
104
105
  Object.assign(newArgs, withDefaultPagination(pagination, {
@@ -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 { hasSort, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n // On non–D&P roots (e.g. User) these args do not version the parent document, but they\n // are required: association resolvers inherit them into nested D&P relations (see\n // builders/resolvers/association.ts + rootQueryArgsByPath). Omitting them broke\n // draft/published control for populated relations (e.g. github.com/strapi/strapi/issues/25746).\n //\n // Future direction: add `status` / `hasPublishedVersion` / `publicationFilter` to GraphQL args on nested\n // to-many (and to-one) relation fields when the *target* content type has D&P, instead\n // of relying on root-level “context” that is easy to misread (args on User affecting\n // Articles). That would allow different publication settings per relation branch, match\n // how developers think about the graph, and let non-DP roots drop these args if desired.\n // Would require extending getContentTypeArgs(..., { isNested: true }) for D&P targets\n // and teaching association.ts to honor args.publicationFilter on nested fields, not\n // only root inheritance.\n const publicationArgs = {\n status: args.PublicationStatusArg,\n // Deprecated: prefer `publicationFilter` (enum cohorts).\n hasPublishedVersion: args.HasPublishedVersionArg,\n publicationFilter: args.PublicationFilterArg,\n };\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n return {\n documentId: nonNull(idArg()),\n ...publicationArgs,\n };\n }\n\n const params: Record<string, unknown> = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params: Record<string, unknown> = {};\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = entries(attributes).filter(\n ([, attribute]) => isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique\n );\n\n return Object.fromEntries(uniqueAttributes);\n },\n\n /**\n * Map each value from an attribute to a FiltersInput type name\n * @param {object} attributes - The attributes object to transform\n * @return {Object<string, string>}\n */\n scalarAttributesToFiltersMap(attributes: Struct.SchemaAttributes) {\n return mapValues((attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n }, attributes);\n },\n\n /**\n * Apply basic transform to GQL args\n */\n transformArgs(\n args: any,\n {\n contentType,\n usePagination = false,\n }: { contentType: Struct.ContentTypeSchema; usePagination?: boolean }\n ) {\n const { mappers } = getService('utils');\n const { config } = strapi.plugin('graphql');\n const { pagination = {}, filters = {} } = args;\n\n // Init\n const newArgs = omit(['pagination', 'filters'], args);\n\n // Pagination\n if (usePagination) {\n const defaultLimit: number = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n // GraphQL SortArg defaults to `[]`; omit meaningless sort so join-table UI order is preserved.\n if (!hasSort(newArgs.sort)) {\n delete newArgs.sort;\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","publicationArgs","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","publicationFilter","PublicationFilterArg","documentId","nonNull","idArg","params","Object","assign","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery","hasSort"],"mappings":";;;;;;AAKA,MAAM,EAAEA,qBAAqB,EAAE,GAAGC,kBAAAA;AAOlC,YAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;AACjD,IAAA,MAAM,EAAEC,OAAAA,EAASC,UAAU,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA;IAE9C,OAAO;QACLC,kBAAAA,CAAAA,CACEC,WAA0B,EAC1B,EAAEC,QAAAA,GAAW,IAAI,EAAEC,QAAAA,GAAW,KAAK,EAA0B,GAAG,EAAE,EAAA;AAElE,YAAA,MAAM,EAAEC,MAAM,EAAE,GAAGN,UAAAA,CAAW,OAAA,CAAA;AAC9B,YAAA,MAAM,EAAEO,IAAI,EAAE,GAAGP,UAAAA,CAAW,WAAA,CAAA;YAE5B,MAAM,EAAEQ,SAAS,EAAE,GAAGL,WAAAA;;AAGtB,YAAA,IAAIK,cAAc,WAAA,EAAa;gBAC7B,IAAI,CAACJ,QAAAA,EAAU,OAAO,EAAC;gBAEvB,OAAO;oBACLK,OAAAA,EAASH,MAAAA,CAAOI,uBAAuB,CAACP,WAAAA,CAAAA;AACxCN,oBAAAA,UAAAA,EAAYU,KAAKI,aAAa;AAC9BC,oBAAAA,IAAAA,EAAML,KAAKM;AACb,iBAAA;AACF,YAAA;YAEA,MAAM,EAAEC,IAAI,EAAE,GAAGX,WAAAA;;;;;;;;;;;;;;AAejB,YAAA,MAAMY,eAAAA,GAAkB;AACtBC,gBAAAA,MAAAA,EAAQT,KAAKU,oBAAoB;;AAEjCC,gBAAAA,mBAAAA,EAAqBX,KAAKY,sBAAsB;AAChDC,gBAAAA,iBAAAA,EAAmBb,KAAKc;AAC1B,aAAA;;AAGA,YAAA,IAAIP,SAAS,gBAAA,EAAkB;AAC7B,gBAAA,IAAI,CAACV,QAAAA,EAAU;oBACb,OAAO;AACLkB,wBAAAA,UAAAA,EAAYC,aAAAA,CAAQC,WAAAA,EAAAA,CAAAA;AACpB,wBAAA,GAAGT;AACL,qBAAA;AACF,gBAAA;AAEA,gBAAA,MAAMU,MAAAA,GAAkC;oBACtChB,OAAAA,EAASH,MAAAA,CAAOI,uBAAuB,CAACP,WAAAA,CAAAA;AACxCN,oBAAAA,UAAAA,EAAYU,KAAKI,aAAa;AAC9BC,oBAAAA,IAAAA,EAAML,KAAKM;AACb,iBAAA;AAEA,gBAAA,IAAI,CAACR,QAAAA,EAAU;oBACbqB,MAAAA,CAAOC,MAAM,CAACF,MAAAA,EAAQV,eAAAA,CAAAA;AACxB,gBAAA;gBAEA,OAAOU,MAAAA;AACT,YAAA;;AAGA,YAAA,IAAIX,SAAS,YAAA,EAAc;AACzB,gBAAA,MAAMW,SAAkC,EAAC;AAEzC,gBAAA,IAAI,CAACpB,QAAAA,EAAU;oBACbqB,MAAAA,CAAOC,MAAM,CAACF,MAAAA,EAAQV,eAAAA,CAAAA;AACxB,gBAAA;gBAEA,OAAOU,MAAAA;AACT,YAAA;AACF,QAAA,CAAA;AAEA;;AAEC,QACDG,2BAA0BC,UAAmC,EAAA;AAC3D,YAAA,MAAM,EAAEC,cAAc,EAAE,GAAG9B,UAAAA,CAAW,SAAS6B,UAAU;AAEzD,YAAA,MAAME,gBAAAA,GAAmBC,UAAAA,CAAQH,UAAAA,CAAAA,CAAYI,MAAM,CACjD,CAAC,GAAGC,SAAAA,CAAU,GAAKJ,cAAAA,CAAeI,SAAAA,CAAAA,IAAc,QAAA,IAAYA,SAAAA,IAAaA,UAAUC,MAAM,CAAA;YAG3F,OAAOT,MAAAA,CAAOU,WAAW,CAACL,gBAAAA,CAAAA;AAC5B,QAAA,CAAA;AAEA;;;;AAIC,QACDM,8BAA6BR,UAAmC,EAAA;AAC9D,YAAA,OAAOS,aAAU,CAACJ,SAAAA,GAAAA;AAChB,gBAAA,MAAM,EAAEK,OAAO,EAAEjC,MAAM,EAAE,GAAGN,UAAAA,CAAW,OAAA,CAAA;AAEvC,gBAAA,MAAMwC,SAAAA,GAAYD,OAAAA,CAAQE,2BAA2B,CAACP,UAAUQ,IAAI,CAAA;gBAEpE,OAAOpC,MAAAA,CAAOqC,4BAA4B,CAACH,SAAAA,CAAAA;YAC7C,CAAA,EAAGX,UAAAA,CAAAA;AACL,QAAA,CAAA;AAEA;;QAGAe,aAAAA,CAAAA,CACErC,IAAS,EACT,EACEJ,WAAW,EACX0C,aAAAA,GAAgB,KAAK,EAC8C,EAAA;AAErE,YAAA,MAAM,EAAEN,OAAO,EAAE,GAAGvC,UAAAA,CAAW,OAAA,CAAA;AAC/B,YAAA,MAAM,EAAE8C,MAAM,EAAE,GAAGhD,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA;YACjC,MAAM,EAAEJ,aAAa,EAAE,EAAEY,OAAAA,GAAU,EAAE,EAAE,GAAGF,IAAAA;;AAG1C,YAAA,MAAMwC,UAAUC,OAAAA,CAAK;AAAC,gBAAA,YAAA;AAAc,gBAAA;aAAU,EAAEzC,IAAAA,CAAAA;;AAGhD,YAAA,IAAIsC,aAAAA,EAAe;AACjB,gBAAA,MAAMI,eAAuBH,MAAAA,CAAO,cAAA,CAAA;AACpC,gBAAA,MAAMI,WAAmBJ,MAAAA,CAAO,UAAA,CAAA;AAEhCpB,gBAAAA,MAAAA,CAAOC,MAAM,CACXoB,OAAAA,EACAnD,qBAAAA,CAAsBC,UAAAA,EAAY;AAChCqD,oBAAAA,QAAAA;oBACAC,QAAAA,EAAU;wBACRC,MAAAA,EAAQ;4BAAEC,KAAAA,EAAOJ;AAAa,yBAAA;wBAC9BK,IAAAA,EAAM;4BAAEC,QAAAA,EAAUN;AAAa;AACjC;AACF,iBAAA,CAAA,CAAA;AAEJ,YAAA;;YAGA,IAAI1C,IAAAA,CAAKE,OAAO,EAAE;gBAChBiB,MAAAA,CAAOC,MAAM,CAACoB,OAAAA,EAAS;oBACrBtC,OAAAA,EAAS8B,OAAAA,CAAQiB,2BAA2B,CAAC/C,OAAAA,EAASN,WAAAA;AACxD,iBAAA,CAAA;AACF,YAAA;;AAGA,YAAA,IAAI,CAACsD,eAAAA,CAAQV,OAAAA,CAAQnC,IAAI,CAAA,EAAG;AAC1B,gBAAA,OAAOmC,QAAQnC,IAAI;AACrB,YAAA;YAEA,OAAOmC,OAAAA;AACT,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { mapValues, omit } from 'lodash';\nimport { idArg, nonNull } from 'nexus';\nimport { hasSort, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n // On non–D&P roots (e.g. User) these args do not version the parent document, but they\n // are required: association resolvers inherit them into nested D&P relations (see\n // builders/resolvers/association.ts + rootQueryArgsByPath). Omitting them broke\n // draft/published control for populated relations (e.g. github.com/strapi/strapi/issues/25746).\n //\n // Future direction: add `status` / `hasPublishedVersion` / `publicationFilter` to GraphQL args on nested\n // to-many (and to-one) relation fields when the *target* content type has D&P, instead\n // of relying on root-level “context” that is easy to misread (args on User affecting\n // Articles). That would allow different publication settings per relation branch, match\n // how developers think about the graph, and let non-DP roots drop these args if desired.\n // Would require extending getContentTypeArgs(..., { isNested: true }) for D&P targets\n // and teaching association.ts to honor args.publicationFilter on nested fields, not\n // only root inheritance.\n const publicationArgs = {\n status: args.PublicationStatusArg,\n // Deprecated: prefer `publicationFilter` (enum cohorts).\n hasPublishedVersion: args.HasPublishedVersionArg,\n publicationFilter: args.PublicationFilterArg,\n };\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n return {\n documentId: nonNull(idArg()),\n ...publicationArgs,\n };\n }\n\n const params: Record<string, unknown> = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params: Record<string, unknown> = {};\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = Object.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(attributes, (attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n });\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(args, ['pagination', 'filters']);\n\n // Pagination\n if (usePagination) {\n // Unset unless the application configures it.\n const defaultLimit: number | undefined = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n // GraphQL SortArg defaults to `[]`; omit meaningless sort so join-table UI order is preserved.\n if (!hasSort(newArgs.sort)) {\n delete newArgs.sort;\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","publicationArgs","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","publicationFilter","PublicationFilterArg","documentId","nonNull","idArg","params","Object","assign","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery","hasSort"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { omit, mapValues, entries } from 'lodash/fp';
1
+ import { omit, mapValues } from 'lodash';
2
2
  import { nonNull, idArg } from 'nexus';
3
3
  import { pagination, hasSort } from '@strapi/utils';
4
4
 
@@ -70,7 +70,7 @@ var utils = (({ strapi })=>{
70
70
  * Filter an object entries and keep only those whose value is a unique scalar attribute
71
71
  */ getUniqueScalarAttributes (attributes) {
72
72
  const { isStrapiScalar } = getService('utils').attributes;
73
- const uniqueAttributes = entries(attributes).filter(([, attribute])=>isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique);
73
+ const uniqueAttributes = Object.entries(attributes ?? {}).filter(([, attribute])=>isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique);
74
74
  return Object.fromEntries(uniqueAttributes);
75
75
  },
76
76
  /**
@@ -78,11 +78,11 @@ var utils = (({ strapi })=>{
78
78
  * @param {object} attributes - The attributes object to transform
79
79
  * @return {Object<string, string>}
80
80
  */ scalarAttributesToFiltersMap (attributes) {
81
- return mapValues((attribute)=>{
81
+ return mapValues(attributes, (attribute)=>{
82
82
  const { mappers, naming } = getService('utils');
83
83
  const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);
84
84
  return naming.getScalarFilterInputTypeName(gqlScalar);
85
- }, attributes);
85
+ });
86
86
  },
87
87
  /**
88
88
  * Apply basic transform to GQL args
@@ -91,12 +91,13 @@ var utils = (({ strapi })=>{
91
91
  const { config } = strapi.plugin('graphql');
92
92
  const { pagination = {}, filters = {} } = args;
93
93
  // Init
94
- const newArgs = omit([
94
+ const newArgs = omit(args, [
95
95
  'pagination',
96
96
  'filters'
97
- ], args);
97
+ ]);
98
98
  // Pagination
99
99
  if (usePagination) {
100
+ // Unset unless the application configures it.
100
101
  const defaultLimit = config('defaultLimit');
101
102
  const maxLimit = config('maxLimit');
102
103
  Object.assign(newArgs, withDefaultPagination(pagination, {
@@ -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 { hasSort, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n // On non–D&P roots (e.g. User) these args do not version the parent document, but they\n // are required: association resolvers inherit them into nested D&P relations (see\n // builders/resolvers/association.ts + rootQueryArgsByPath). Omitting them broke\n // draft/published control for populated relations (e.g. github.com/strapi/strapi/issues/25746).\n //\n // Future direction: add `status` / `hasPublishedVersion` / `publicationFilter` to GraphQL args on nested\n // to-many (and to-one) relation fields when the *target* content type has D&P, instead\n // of relying on root-level “context” that is easy to misread (args on User affecting\n // Articles). That would allow different publication settings per relation branch, match\n // how developers think about the graph, and let non-DP roots drop these args if desired.\n // Would require extending getContentTypeArgs(..., { isNested: true }) for D&P targets\n // and teaching association.ts to honor args.publicationFilter on nested fields, not\n // only root inheritance.\n const publicationArgs = {\n status: args.PublicationStatusArg,\n // Deprecated: prefer `publicationFilter` (enum cohorts).\n hasPublishedVersion: args.HasPublishedVersionArg,\n publicationFilter: args.PublicationFilterArg,\n };\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n return {\n documentId: nonNull(idArg()),\n ...publicationArgs,\n };\n }\n\n const params: Record<string, unknown> = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params: Record<string, unknown> = {};\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = entries(attributes).filter(\n ([, attribute]) => isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique\n );\n\n return Object.fromEntries(uniqueAttributes);\n },\n\n /**\n * Map each value from an attribute to a FiltersInput type name\n * @param {object} attributes - The attributes object to transform\n * @return {Object<string, string>}\n */\n scalarAttributesToFiltersMap(attributes: Struct.SchemaAttributes) {\n return mapValues((attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n }, attributes);\n },\n\n /**\n * Apply basic transform to GQL args\n */\n transformArgs(\n args: any,\n {\n contentType,\n usePagination = false,\n }: { contentType: Struct.ContentTypeSchema; usePagination?: boolean }\n ) {\n const { mappers } = getService('utils');\n const { config } = strapi.plugin('graphql');\n const { pagination = {}, filters = {} } = args;\n\n // Init\n const newArgs = omit(['pagination', 'filters'], args);\n\n // Pagination\n if (usePagination) {\n const defaultLimit: number = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n // GraphQL SortArg defaults to `[]`; omit meaningless sort so join-table UI order is preserved.\n if (!hasSort(newArgs.sort)) {\n delete newArgs.sort;\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","publicationArgs","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","publicationFilter","PublicationFilterArg","documentId","nonNull","idArg","params","Object","assign","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery","hasSort"],"mappings":"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"}
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { mapValues, omit } from 'lodash';\nimport { idArg, nonNull } from 'nexus';\nimport { hasSort, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n // On non–D&P roots (e.g. User) these args do not version the parent document, but they\n // are required: association resolvers inherit them into nested D&P relations (see\n // builders/resolvers/association.ts + rootQueryArgsByPath). Omitting them broke\n // draft/published control for populated relations (e.g. github.com/strapi/strapi/issues/25746).\n //\n // Future direction: add `status` / `hasPublishedVersion` / `publicationFilter` to GraphQL args on nested\n // to-many (and to-one) relation fields when the *target* content type has D&P, instead\n // of relying on root-level “context” that is easy to misread (args on User affecting\n // Articles). That would allow different publication settings per relation branch, match\n // how developers think about the graph, and let non-DP roots drop these args if desired.\n // Would require extending getContentTypeArgs(..., { isNested: true }) for D&P targets\n // and teaching association.ts to honor args.publicationFilter on nested fields, not\n // only root inheritance.\n const publicationArgs = {\n status: args.PublicationStatusArg,\n // Deprecated: prefer `publicationFilter` (enum cohorts).\n hasPublishedVersion: args.HasPublishedVersionArg,\n publicationFilter: args.PublicationFilterArg,\n };\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n return {\n documentId: nonNull(idArg()),\n ...publicationArgs,\n };\n }\n\n const params: Record<string, unknown> = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params: Record<string, unknown> = {};\n\n if (!isNested) {\n Object.assign(params, publicationArgs);\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = Object.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(attributes, (attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n });\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(args, ['pagination', 'filters']);\n\n // Pagination\n if (usePagination) {\n // Unset unless the application configures it.\n const defaultLimit: number | undefined = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n // GraphQL SortArg defaults to `[]`; omit meaningless sort so join-table UI order is preserved.\n if (!hasSort(newArgs.sort)) {\n delete newArgs.sort;\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","publicationArgs","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","publicationFilter","PublicationFilterArg","documentId","nonNull","idArg","params","Object","assign","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery","hasSort"],"mappings":"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"}
@@ -121,7 +121,7 @@ const GRAPHQL_SCALAR_OPERATORS = {
121
121
  const ERROR_CODES = {
122
122
  emptyDynamicZone: 'dynamiczone.empty'
123
123
  };
124
- var constants = (()=>({
124
+ const createConstants = ()=>({
125
125
  PAGINATION_TYPE_NAME,
126
126
  RESPONSE_COLLECTION_META_TYPE_NAME,
127
127
  DELETE_MUTATION_RESPONSE_TYPE_NAME,
@@ -135,7 +135,7 @@ var constants = (()=>({
135
135
  SCALARS_ASSOCIATIONS,
136
136
  ERROR_CODES,
137
137
  ERROR_TYPE_NAME
138
- }));
138
+ });
139
139
 
140
- module.exports = constants;
140
+ module.exports = createConstants;
141
141
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../server/src/services/constants.ts"],"sourcesContent":["const PAGINATION_TYPE_NAME = 'Pagination';\nconst DELETE_MUTATION_RESPONSE_TYPE_NAME = 'DeleteMutationResponse';\nconst PUBLICATION_STATUS_TYPE_NAME = 'PublicationStatus';\nconst PUBLICATION_FILTER_TYPE_NAME = 'PublicationFilter';\nconst ERROR_TYPE_NAME = 'Error';\n\nconst RESPONSE_COLLECTION_META_TYPE_NAME = 'ResponseCollectionMeta';\n\nconst GRAPHQL_SCALARS = [\n 'ID',\n 'Boolean',\n 'Int',\n 'String',\n 'Long',\n 'Float',\n 'JSON',\n 'Date',\n 'Time',\n 'DateTime',\n] as const;\n\nconst STRAPI_SCALARS = [\n 'boolean',\n 'integer',\n 'string',\n 'richtext',\n 'blocks',\n 'enumeration',\n 'biginteger',\n 'float',\n 'decimal',\n 'json',\n 'date',\n 'time',\n 'datetime',\n 'timestamp',\n 'uid',\n 'email',\n 'password',\n 'text',\n] as const;\n\nconst SCALARS_ASSOCIATIONS = {\n uid: 'String',\n email: 'String',\n password: 'String',\n text: 'String',\n boolean: 'Boolean',\n integer: 'Int',\n string: 'String',\n enumeration: 'String',\n richtext: 'String',\n blocks: 'JSON',\n biginteger: 'Long',\n float: 'Float',\n decimal: 'Float',\n json: 'JSON',\n date: 'Date',\n time: 'Time',\n datetime: 'DateTime',\n timestamp: 'DateTime',\n} as const;\n\nconst GENERIC_MORPH_TYPENAME = 'GenericMorph';\n\nconst KINDS = {\n type: 'type',\n component: 'component',\n dynamicZone: 'dynamic-zone',\n enum: 'enum',\n entity: 'entity',\n entityResponse: 'entity-response',\n entityResponseCollection: 'entity-response-collection',\n relationResponseCollection: 'relation-response-collection',\n query: 'query',\n mutation: 'mutation',\n input: 'input',\n filtersInput: 'filters-input',\n scalar: 'scalar',\n morph: 'polymorphic',\n internal: 'internal',\n} as const;\n\nconst allOperators = [\n 'and',\n 'or',\n 'not',\n\n 'eq',\n 'eqi',\n 'ne',\n 'nei',\n\n 'startsWith',\n 'endsWith',\n\n 'contains',\n 'notContains',\n\n 'containsi',\n 'notContainsi',\n\n 'gt',\n 'gte',\n\n 'lt',\n 'lte',\n\n 'null',\n 'notNull',\n\n 'in',\n 'notIn',\n\n 'between',\n] as const;\n\nconst GRAPHQL_SCALAR_OPERATORS = {\n // ID\n ID: allOperators,\n // Booleans\n Boolean: allOperators,\n // Strings\n String: allOperators,\n // Numbers\n Int: allOperators,\n Long: allOperators,\n Float: allOperators,\n // Dates\n Date: allOperators,\n Time: allOperators,\n DateTime: allOperators,\n // Others\n JSON: allOperators,\n} as const;\n\nconst ERROR_CODES = {\n emptyDynamicZone: 'dynamiczone.empty',\n} as const;\n\nexport type Constants = {\n PAGINATION_TYPE_NAME: string;\n RESPONSE_COLLECTION_META_TYPE_NAME: string;\n PUBLICATION_STATE_TYPE_NAME: string;\n GRAPHQL_SCALARS: string[];\n STRAPI_SCALARS: string[];\n GENERIC_MORPH_TYPENAME: string;\n KINDS: typeof KINDS;\n GRAPHQL_SCALAR_OPERATORS: typeof GRAPHQL_SCALAR_OPERATORS;\n SCALARS_ASSOCIATIONS: typeof SCALARS_ASSOCIATIONS;\n ERROR_CODES: typeof ERROR_CODES;\n ERROR_TYPE_NAME: string;\n};\n\nexport default () => ({\n PAGINATION_TYPE_NAME,\n RESPONSE_COLLECTION_META_TYPE_NAME,\n DELETE_MUTATION_RESPONSE_TYPE_NAME,\n PUBLICATION_STATUS_TYPE_NAME,\n PUBLICATION_FILTER_TYPE_NAME,\n GRAPHQL_SCALARS,\n STRAPI_SCALARS,\n GENERIC_MORPH_TYPENAME,\n KINDS,\n GRAPHQL_SCALAR_OPERATORS,\n SCALARS_ASSOCIATIONS,\n ERROR_CODES,\n ERROR_TYPE_NAME,\n});\n"],"names":["PAGINATION_TYPE_NAME","DELETE_MUTATION_RESPONSE_TYPE_NAME","PUBLICATION_STATUS_TYPE_NAME","PUBLICATION_FILTER_TYPE_NAME","ERROR_TYPE_NAME","RESPONSE_COLLECTION_META_TYPE_NAME","GRAPHQL_SCALARS","STRAPI_SCALARS","SCALARS_ASSOCIATIONS","uid","email","password","text","boolean","integer","string","enumeration","richtext","blocks","biginteger","float","decimal","json","date","time","datetime","timestamp","GENERIC_MORPH_TYPENAME","KINDS","type","component","dynamicZone","enum","entity","entityResponse","entityResponseCollection","relationResponseCollection","query","mutation","input","filtersInput","scalar","morph","internal","allOperators","GRAPHQL_SCALAR_OPERATORS","ID","Boolean","String","Int","Long","Float","Date","Time","DateTime","JSON","ERROR_CODES","emptyDynamicZone"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["../../../server/src/services/constants.ts"],"sourcesContent":["const PAGINATION_TYPE_NAME = 'Pagination';\nconst DELETE_MUTATION_RESPONSE_TYPE_NAME = 'DeleteMutationResponse';\nconst PUBLICATION_STATUS_TYPE_NAME = 'PublicationStatus';\nconst PUBLICATION_FILTER_TYPE_NAME = 'PublicationFilter';\nconst ERROR_TYPE_NAME = 'Error';\n\nconst RESPONSE_COLLECTION_META_TYPE_NAME = 'ResponseCollectionMeta';\n\nconst GRAPHQL_SCALARS = [\n 'ID',\n 'Boolean',\n 'Int',\n 'String',\n 'Long',\n 'Float',\n 'JSON',\n 'Date',\n 'Time',\n 'DateTime',\n] as const;\n\nconst STRAPI_SCALARS = [\n 'boolean',\n 'integer',\n 'string',\n 'richtext',\n 'blocks',\n 'enumeration',\n 'biginteger',\n 'float',\n 'decimal',\n 'json',\n 'date',\n 'time',\n 'datetime',\n 'timestamp',\n 'uid',\n 'email',\n 'password',\n 'text',\n] as const;\n\nconst SCALARS_ASSOCIATIONS = {\n uid: 'String',\n email: 'String',\n password: 'String',\n text: 'String',\n boolean: 'Boolean',\n integer: 'Int',\n string: 'String',\n enumeration: 'String',\n richtext: 'String',\n blocks: 'JSON',\n biginteger: 'Long',\n float: 'Float',\n decimal: 'Float',\n json: 'JSON',\n date: 'Date',\n time: 'Time',\n datetime: 'DateTime',\n timestamp: 'DateTime',\n} as const;\n\nconst GENERIC_MORPH_TYPENAME = 'GenericMorph';\n\nconst KINDS = {\n type: 'type',\n component: 'component',\n dynamicZone: 'dynamic-zone',\n enum: 'enum',\n entity: 'entity',\n entityResponse: 'entity-response',\n entityResponseCollection: 'entity-response-collection',\n relationResponseCollection: 'relation-response-collection',\n query: 'query',\n mutation: 'mutation',\n input: 'input',\n filtersInput: 'filters-input',\n scalar: 'scalar',\n morph: 'polymorphic',\n internal: 'internal',\n} as const;\n\nconst allOperators = [\n 'and',\n 'or',\n 'not',\n\n 'eq',\n 'eqi',\n 'ne',\n 'nei',\n\n 'startsWith',\n 'endsWith',\n\n 'contains',\n 'notContains',\n\n 'containsi',\n 'notContainsi',\n\n 'gt',\n 'gte',\n\n 'lt',\n 'lte',\n\n 'null',\n 'notNull',\n\n 'in',\n 'notIn',\n\n 'between',\n] as const;\n\nconst GRAPHQL_SCALAR_OPERATORS = {\n // ID\n ID: allOperators,\n // Booleans\n Boolean: allOperators,\n // Strings\n String: allOperators,\n // Numbers\n Int: allOperators,\n Long: allOperators,\n Float: allOperators,\n // Dates\n Date: allOperators,\n Time: allOperators,\n DateTime: allOperators,\n // Others\n JSON: allOperators,\n} as const;\n\nconst ERROR_CODES = {\n emptyDynamicZone: 'dynamiczone.empty',\n} as const;\n\nconst createConstants = () => ({\n PAGINATION_TYPE_NAME,\n RESPONSE_COLLECTION_META_TYPE_NAME,\n DELETE_MUTATION_RESPONSE_TYPE_NAME,\n PUBLICATION_STATUS_TYPE_NAME,\n PUBLICATION_FILTER_TYPE_NAME,\n GRAPHQL_SCALARS,\n STRAPI_SCALARS,\n GENERIC_MORPH_TYPENAME,\n KINDS,\n GRAPHQL_SCALAR_OPERATORS,\n SCALARS_ASSOCIATIONS,\n ERROR_CODES,\n ERROR_TYPE_NAME,\n});\n\n/** The constants service, as runtime builds it. */\nexport type Constants = ReturnType<typeof createConstants>;\n\nexport default createConstants;\n"],"names":["PAGINATION_TYPE_NAME","DELETE_MUTATION_RESPONSE_TYPE_NAME","PUBLICATION_STATUS_TYPE_NAME","PUBLICATION_FILTER_TYPE_NAME","ERROR_TYPE_NAME","RESPONSE_COLLECTION_META_TYPE_NAME","GRAPHQL_SCALARS","STRAPI_SCALARS","SCALARS_ASSOCIATIONS","uid","email","password","text","boolean","integer","string","enumeration","richtext","blocks","biginteger","float","decimal","json","date","time","datetime","timestamp","GENERIC_MORPH_TYPENAME","KINDS","type","component","dynamicZone","enum","entity","entityResponse","entityResponseCollection","relationResponseCollection","query","mutation","input","filtersInput","scalar","morph","internal","allOperators","GRAPHQL_SCALAR_OPERATORS","ID","Boolean","String","Int","Long","Float","Date","Time","DateTime","JSON","ERROR_CODES","emptyDynamicZone","createConstants"],"mappings":"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"}
@@ -119,7 +119,7 @@ const GRAPHQL_SCALAR_OPERATORS = {
119
119
  const ERROR_CODES = {
120
120
  emptyDynamicZone: 'dynamiczone.empty'
121
121
  };
122
- var constants = (()=>({
122
+ const createConstants = ()=>({
123
123
  PAGINATION_TYPE_NAME,
124
124
  RESPONSE_COLLECTION_META_TYPE_NAME,
125
125
  DELETE_MUTATION_RESPONSE_TYPE_NAME,
@@ -133,7 +133,7 @@ var constants = (()=>({
133
133
  SCALARS_ASSOCIATIONS,
134
134
  ERROR_CODES,
135
135
  ERROR_TYPE_NAME
136
- }));
136
+ });
137
137
 
138
- export { constants as default };
138
+ export { createConstants as default };
139
139
  //# sourceMappingURL=constants.mjs.map