@strapi/plugin-graphql 5.37.1 → 5.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/package.json.js +1 -133
- package/dist/admin/package.json.js.map +1 -1
- package/dist/admin/package.json.mjs +2 -120
- package/dist/admin/package.json.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/config/default-config.js.map +1 -1
- package/dist/server/config/default-config.mjs.map +1 -1
- package/dist/server/config/index.js.map +1 -1
- package/dist/server/config/index.mjs.map +1 -1
- package/dist/server/format-graphql-error.js.map +1 -1
- package/dist/server/format-graphql-error.mjs.map +1 -1
- package/dist/server/index.js +4 -4
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/services/builders/dynamic-zones.js.map +1 -1
- package/dist/server/services/builders/dynamic-zones.mjs.map +1 -1
- package/dist/server/services/builders/entity.js.map +1 -1
- package/dist/server/services/builders/entity.mjs.map +1 -1
- package/dist/server/services/builders/enums.js.map +1 -1
- package/dist/server/services/builders/enums.mjs.map +1 -1
- package/dist/server/services/builders/filters/content-type.js.map +1 -1
- package/dist/server/services/builders/filters/content-type.mjs.map +1 -1
- package/dist/server/services/builders/filters/index.js.map +1 -1
- package/dist/server/services/builders/filters/index.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/and.js.map +1 -1
- package/dist/server/services/builders/filters/operators/and.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/between.js.map +1 -1
- package/dist/server/services/builders/filters/operators/between.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/contains.js.map +1 -1
- package/dist/server/services/builders/filters/operators/contains.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/containsi.js.map +1 -1
- package/dist/server/services/builders/filters/operators/containsi.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/ends-with.js.map +1 -1
- package/dist/server/services/builders/filters/operators/ends-with.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/eq.js.map +1 -1
- package/dist/server/services/builders/filters/operators/eq.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/eqi.js.map +1 -1
- package/dist/server/services/builders/filters/operators/eqi.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/gt.js.map +1 -1
- package/dist/server/services/builders/filters/operators/gt.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/gte.js.map +1 -1
- package/dist/server/services/builders/filters/operators/gte.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/in.js.map +1 -1
- package/dist/server/services/builders/filters/operators/in.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/index.js.map +1 -1
- package/dist/server/services/builders/filters/operators/index.mjs +4 -4
- package/dist/server/services/builders/filters/operators/index.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/lt.js.map +1 -1
- package/dist/server/services/builders/filters/operators/lt.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/lte.js.map +1 -1
- package/dist/server/services/builders/filters/operators/lte.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/ne.js.map +1 -1
- package/dist/server/services/builders/filters/operators/ne.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/nei.js.map +1 -1
- package/dist/server/services/builders/filters/operators/nei.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/not-contains.js.map +1 -1
- package/dist/server/services/builders/filters/operators/not-contains.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/not-containsi.js.map +1 -1
- package/dist/server/services/builders/filters/operators/not-containsi.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/not-in.js.map +1 -1
- package/dist/server/services/builders/filters/operators/not-in.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/not-null.js.map +1 -1
- package/dist/server/services/builders/filters/operators/not-null.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/not.js.map +1 -1
- package/dist/server/services/builders/filters/operators/not.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/null.js.map +1 -1
- package/dist/server/services/builders/filters/operators/null.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/or.js.map +1 -1
- package/dist/server/services/builders/filters/operators/or.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/starts-with.js.map +1 -1
- package/dist/server/services/builders/filters/operators/starts-with.mjs.map +1 -1
- package/dist/server/services/builders/generic-morph.js.map +1 -1
- package/dist/server/services/builders/generic-morph.mjs.map +1 -1
- package/dist/server/services/builders/index.js.map +1 -1
- package/dist/server/services/builders/index.mjs.map +1 -1
- package/dist/server/services/builders/input.js.map +1 -1
- package/dist/server/services/builders/input.mjs.map +1 -1
- package/dist/server/services/builders/mutations/collection-type.js.map +1 -1
- package/dist/server/services/builders/mutations/collection-type.mjs.map +1 -1
- package/dist/server/services/builders/mutations/index.js.map +1 -1
- package/dist/server/services/builders/mutations/index.mjs.map +1 -1
- package/dist/server/services/builders/mutations/single-type.js.map +1 -1
- package/dist/server/services/builders/mutations/single-type.mjs.map +1 -1
- package/dist/server/services/builders/queries/collection-type.js.map +1 -1
- package/dist/server/services/builders/queries/collection-type.mjs.map +1 -1
- package/dist/server/services/builders/queries/index.js.map +1 -1
- package/dist/server/services/builders/queries/index.mjs.map +1 -1
- package/dist/server/services/builders/queries/single-type.js.map +1 -1
- package/dist/server/services/builders/queries/single-type.mjs.map +1 -1
- package/dist/server/services/builders/relation-response-collection.js.map +1 -1
- package/dist/server/services/builders/relation-response-collection.mjs.map +1 -1
- package/dist/server/services/builders/resolvers/association.js.map +1 -1
- package/dist/server/services/builders/resolvers/association.mjs +1 -1
- package/dist/server/services/builders/resolvers/association.mjs.map +1 -1
- package/dist/server/services/builders/resolvers/component.js.map +1 -1
- package/dist/server/services/builders/resolvers/component.mjs.map +1 -1
- package/dist/server/services/builders/resolvers/dynamic-zone.js.map +1 -1
- package/dist/server/services/builders/resolvers/dynamic-zone.mjs.map +1 -1
- package/dist/server/services/builders/resolvers/index.js.map +1 -1
- package/dist/server/services/builders/resolvers/index.mjs.map +1 -1
- package/dist/server/services/builders/resolvers/pagination.js.map +1 -1
- package/dist/server/services/builders/resolvers/pagination.mjs.map +1 -1
- package/dist/server/services/builders/resolvers/query.js.map +1 -1
- package/dist/server/services/builders/resolvers/query.mjs.map +1 -1
- package/dist/server/services/builders/response-collection.js.map +1 -1
- package/dist/server/services/builders/response-collection.mjs.map +1 -1
- package/dist/server/services/builders/response.js.map +1 -1
- package/dist/server/services/builders/response.mjs.map +1 -1
- package/dist/server/services/builders/type.js +1 -3
- package/dist/server/services/builders/type.js.map +1 -1
- package/dist/server/services/builders/type.mjs +1 -3
- package/dist/server/services/builders/type.mjs.map +1 -1
- package/dist/server/services/builders/utils.js.map +1 -1
- package/dist/server/services/builders/utils.mjs +2 -2
- package/dist/server/services/builders/utils.mjs.map +1 -1
- package/dist/server/services/constants.js.map +1 -1
- package/dist/server/services/constants.mjs.map +1 -1
- package/dist/server/services/content-api/index.js.map +1 -1
- package/dist/server/services/content-api/index.mjs.map +1 -1
- package/dist/server/services/content-api/policy.js.map +1 -1
- package/dist/server/services/content-api/policy.mjs +1 -1
- package/dist/server/services/content-api/policy.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/collection-type.js.map +1 -1
- package/dist/server/services/content-api/register-functions/collection-type.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/component.js.map +1 -1
- package/dist/server/services/content-api/register-functions/component.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/dynamic-zones.js.map +1 -1
- package/dist/server/services/content-api/register-functions/dynamic-zones.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/enums.js.map +1 -1
- package/dist/server/services/content-api/register-functions/enums.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/filters.js.map +1 -1
- package/dist/server/services/content-api/register-functions/filters.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/inputs.js.map +1 -1
- package/dist/server/services/content-api/register-functions/inputs.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/internals.js.map +1 -1
- package/dist/server/services/content-api/register-functions/internals.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/polymorphic.js.map +1 -1
- package/dist/server/services/content-api/register-functions/polymorphic.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/scalars.js.map +1 -1
- package/dist/server/services/content-api/register-functions/scalars.mjs.map +1 -1
- package/dist/server/services/content-api/register-functions/single-type.js.map +1 -1
- package/dist/server/services/content-api/register-functions/single-type.mjs.map +1 -1
- package/dist/server/services/content-api/wrap-resolvers.js.map +1 -1
- package/dist/server/services/content-api/wrap-resolvers.mjs.map +1 -1
- package/dist/server/services/extension/extension.js.map +1 -1
- package/dist/server/services/extension/extension.mjs.map +1 -1
- package/dist/server/services/extension/shadow-crud-manager.js.map +1 -1
- package/dist/server/services/extension/shadow-crud-manager.mjs.map +1 -1
- package/dist/server/services/format/index.js.map +1 -1
- package/dist/server/services/format/index.mjs.map +1 -1
- package/dist/server/services/format/return-types.js.map +1 -1
- package/dist/server/services/format/return-types.mjs.map +1 -1
- package/dist/server/services/index.js +8 -8
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/internals/args/index.js.map +1 -1
- package/dist/server/services/internals/args/index.mjs.map +1 -1
- package/dist/server/services/internals/args/pagination.js.map +1 -1
- package/dist/server/services/internals/args/pagination.mjs.map +1 -1
- package/dist/server/services/internals/args/publication-status.js.map +1 -1
- package/dist/server/services/internals/args/publication-status.mjs.map +1 -1
- package/dist/server/services/internals/args/sort.js.map +1 -1
- package/dist/server/services/internals/args/sort.mjs.map +1 -1
- package/dist/server/services/internals/helpers/get-enabled-scalars.js.map +1 -1
- package/dist/server/services/internals/helpers/get-enabled-scalars.mjs.map +1 -1
- package/dist/server/services/internals/helpers/index.js.map +1 -1
- package/dist/server/services/internals/helpers/index.mjs.map +1 -1
- package/dist/server/services/internals/index.js +8 -8
- package/dist/server/services/internals/index.js.map +1 -1
- package/dist/server/services/internals/index.mjs.map +1 -1
- package/dist/server/services/internals/scalars/date.js.map +1 -1
- package/dist/server/services/internals/scalars/date.mjs.map +1 -1
- package/dist/server/services/internals/scalars/index.js.map +1 -1
- package/dist/server/services/internals/scalars/index.mjs +1 -1
- package/dist/server/services/internals/scalars/index.mjs.map +1 -1
- package/dist/server/services/internals/scalars/time.js.map +1 -1
- package/dist/server/services/internals/scalars/time.mjs +1 -1
- package/dist/server/services/internals/scalars/time.mjs.map +1 -1
- package/dist/server/services/internals/types/delete-mutation-response.js.map +1 -1
- package/dist/server/services/internals/types/delete-mutation-response.mjs.map +1 -1
- package/dist/server/services/internals/types/error.js.map +1 -1
- package/dist/server/services/internals/types/error.mjs.map +1 -1
- package/dist/server/services/internals/types/filters.js.map +1 -1
- package/dist/server/services/internals/types/filters.mjs.map +1 -1
- package/dist/server/services/internals/types/index.js.map +1 -1
- package/dist/server/services/internals/types/index.mjs.map +1 -1
- package/dist/server/services/internals/types/pagination.js.map +1 -1
- package/dist/server/services/internals/types/pagination.mjs.map +1 -1
- package/dist/server/services/internals/types/publication-status.js.map +1 -1
- package/dist/server/services/internals/types/publication-status.mjs.map +1 -1
- package/dist/server/services/internals/types/response-collection-meta.js.map +1 -1
- package/dist/server/services/internals/types/response-collection-meta.mjs.map +1 -1
- package/dist/server/services/type-registry.js.map +1 -1
- package/dist/server/services/type-registry.mjs.map +1 -1
- package/dist/server/services/utils/attributes.js.map +1 -1
- package/dist/server/services/utils/attributes.mjs.map +1 -1
- package/dist/server/services/utils/index.js.map +1 -1
- package/dist/server/services/utils/index.mjs.map +1 -1
- package/dist/server/services/utils/mappers/entity-to-response-entity.js.map +1 -1
- package/dist/server/services/utils/mappers/entity-to-response-entity.mjs +5 -5
- package/dist/server/services/utils/mappers/entity-to-response-entity.mjs.map +1 -1
- package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js.map +1 -1
- package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs.map +1 -1
- package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js.map +1 -1
- package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs.map +1 -1
- package/dist/server/services/utils/mappers/index.js.map +1 -1
- package/dist/server/services/utils/mappers/index.mjs.map +1 -1
- package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js.map +1 -1
- package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs.map +1 -1
- package/dist/server/services/utils/naming.js.map +1 -1
- package/dist/server/services/utils/naming.mjs.map +1 -1
- package/dist/server/services/utils/playground.js.map +1 -1
- package/dist/server/services/utils/playground.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sources":["../../../../../server/src/services/builders/resolvers/query.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../../types';\n\nexport default ({ strapi }: Context) => ({\n buildQueriesResolvers({ contentType }: { contentType: Schema.ContentType }) {\n const { uid } = contentType;\n\n return {\n async findMany(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findMany({ status: 'published', ...sanitizedQuery });\n },\n\n async findFirst(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findFirst({ status: 'published', ...sanitizedQuery });\n },\n\n async findOne(parent: any, args: any, ctx: any) {\n const { documentId } = args;\n\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findOne({\n status: 'published',\n ...omit(['id', 'documentId'], sanitizedQuery),\n documentId,\n });\n },\n };\n },\n});\n"],"names":["strapi","buildQueriesResolvers","contentType","uid","findMany","parent","args","ctx","contentAPI","validate","query","auth","state","sanitizedQuery","sanitize","documents","status","findFirst","findOne","documentId","omit"],"mappings":";;;;AAIA,uBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,IAAM;QACvCC,
|
|
1
|
+
{"version":3,"file":"query.js","sources":["../../../../../server/src/services/builders/resolvers/query.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../../types';\n\nexport default ({ strapi }: Context) => ({\n buildQueriesResolvers({ contentType }: { contentType: Schema.ContentType }) {\n const { uid } = contentType;\n\n return {\n async findMany(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findMany({ status: 'published', ...sanitizedQuery });\n },\n\n async findFirst(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findFirst({ status: 'published', ...sanitizedQuery });\n },\n\n async findOne(parent: any, args: any, ctx: any) {\n const { documentId } = args;\n\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findOne({\n status: 'published',\n ...omit(['id', 'documentId'], sanitizedQuery),\n documentId,\n });\n },\n };\n },\n});\n"],"names":["strapi","buildQueriesResolvers","contentType","uid","findMany","parent","args","ctx","contentAPI","validate","query","auth","state","sanitizedQuery","sanitize","documents","status","findFirst","findOne","documentId","omit"],"mappings":";;;;AAIA,uBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,IAAM;QACvCC,qBAAAA,CAAAA,CAAsB,EAAEC,WAAW,EAAuC,EAAA;YACxE,MAAM,EAAEC,GAAG,EAAE,GAAGD,WAAAA;YAEhB,OAAO;AACL,gBAAA,MAAME,QAAAA,CAAAA,CAASC,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC7C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKC,QAAQ,CAAC;wBAAEY,MAAAA,EAAQ,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AAClF,gBAAA,CAAA;AAEA,gBAAA,MAAMI,SAAAA,CAAAA,CAAUZ,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC9C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKc,SAAS,CAAC;wBAAED,MAAAA,EAAQ,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AACnF,gBAAA,CAAA;AAEA,gBAAA,MAAMK,OAAAA,CAAAA,CAAQb,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC5C,MAAM,EAAEY,UAAU,EAAE,GAAGb,IAAAA;oBAEvB,MAAMN,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKe,OAAO,CAAC;wBACpCF,MAAAA,EAAQ,WAAA;AACR,wBAAA,GAAGI,OAAAA,CAAK;AAAC,4BAAA,IAAA;AAAM,4BAAA;AAAa,yBAAA,EAAEP,cAAAA,CAAe;AAC7CM,wBAAAA;AACF,qBAAA,CAAA;AACF,gBAAA;AACF,aAAA;AACF,QAAA;AACF,KAAA,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.mjs","sources":["../../../../../server/src/services/builders/resolvers/query.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../../types';\n\nexport default ({ strapi }: Context) => ({\n buildQueriesResolvers({ contentType }: { contentType: Schema.ContentType }) {\n const { uid } = contentType;\n\n return {\n async findMany(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findMany({ status: 'published', ...sanitizedQuery });\n },\n\n async findFirst(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findFirst({ status: 'published', ...sanitizedQuery });\n },\n\n async findOne(parent: any, args: any, ctx: any) {\n const { documentId } = args;\n\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findOne({\n status: 'published',\n ...omit(['id', 'documentId'], sanitizedQuery),\n documentId,\n });\n },\n };\n },\n});\n"],"names":["strapi","buildQueriesResolvers","contentType","uid","findMany","parent","args","ctx","contentAPI","validate","query","auth","state","sanitizedQuery","sanitize","documents","status","findFirst","findOne","documentId","omit"],"mappings":";;AAIA,uBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,IAAM;QACvCC,
|
|
1
|
+
{"version":3,"file":"query.mjs","sources":["../../../../../server/src/services/builders/resolvers/query.ts"],"sourcesContent":["import { omit } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../../types';\n\nexport default ({ strapi }: Context) => ({\n buildQueriesResolvers({ contentType }: { contentType: Schema.ContentType }) {\n const { uid } = contentType;\n\n return {\n async findMany(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findMany({ status: 'published', ...sanitizedQuery });\n },\n\n async findFirst(parent: any, args: any, ctx: any) {\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findFirst({ status: 'published', ...sanitizedQuery });\n },\n\n async findOne(parent: any, args: any, ctx: any) {\n const { documentId } = args;\n\n await strapi.contentAPI.validate.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n const sanitizedQuery = await strapi.contentAPI.sanitize.query(args, contentType, {\n auth: ctx?.state?.auth,\n });\n\n return strapi.documents!(uid).findOne({\n status: 'published',\n ...omit(['id', 'documentId'], sanitizedQuery),\n documentId,\n });\n },\n };\n },\n});\n"],"names":["strapi","buildQueriesResolvers","contentType","uid","findMany","parent","args","ctx","contentAPI","validate","query","auth","state","sanitizedQuery","sanitize","documents","status","findFirst","findOne","documentId","omit"],"mappings":";;AAIA,uBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,IAAM;QACvCC,qBAAAA,CAAAA,CAAsB,EAAEC,WAAW,EAAuC,EAAA;YACxE,MAAM,EAAEC,GAAG,EAAE,GAAGD,WAAAA;YAEhB,OAAO;AACL,gBAAA,MAAME,QAAAA,CAAAA,CAASC,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC7C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKC,QAAQ,CAAC;wBAAEY,MAAAA,EAAQ,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AAClF,gBAAA,CAAA;AAEA,gBAAA,MAAMI,SAAAA,CAAAA,CAAUZ,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC9C,MAAMP,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKc,SAAS,CAAC;wBAAED,MAAAA,EAAQ,WAAA;AAAa,wBAAA,GAAGH;AAAe,qBAAA,CAAA;AACnF,gBAAA,CAAA;AAEA,gBAAA,MAAMK,OAAAA,CAAAA,CAAQb,MAAW,EAAEC,IAAS,EAAEC,GAAQ,EAAA;oBAC5C,MAAM,EAAEY,UAAU,EAAE,GAAGb,IAAAA;oBAEvB,MAAMN,MAAAA,CAAOQ,UAAU,CAACC,QAAQ,CAACC,KAAK,CAACJ,MAAMJ,WAAAA,EAAa;AACxDS,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;oBAEA,MAAME,cAAAA,GAAiB,MAAMb,MAAAA,CAAOQ,UAAU,CAACM,QAAQ,CAACJ,KAAK,CAACJ,IAAAA,EAAMJ,WAAAA,EAAa;AAC/ES,wBAAAA,IAAAA,EAAMJ,KAAKK,KAAAA,EAAOD;AACpB,qBAAA,CAAA;AAEA,oBAAA,OAAOX,MAAAA,CAAOe,SAAS,CAAEZ,GAAAA,CAAAA,CAAKe,OAAO,CAAC;wBACpCF,MAAAA,EAAQ,WAAA;AACR,wBAAA,GAAGI,IAAAA,CAAK;AAAC,4BAAA,IAAA;AAAM,4BAAA;AAAa,yBAAA,EAAEP,cAAAA,CAAe;AAC7CM,wBAAAA;AACF,qBAAA,CAAA;AACF,gBAAA;AACF,aAAA;AACF,QAAA;AACF,KAAA,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-collection.js","sources":["../../../../server/src/services/builders/response-collection.ts"],"sourcesContent":["import { objectType, nonNull } from 'nexus';\nimport { defaultTo, prop, pipe, identity } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { service: getService } = strapi.plugin('graphql');\n\n const { naming } = getService('utils');\n const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = getService('constants');\n\n return {\n /**\n * Build a type definition for a content API collection response for a given content type\n * @param {Schema.ContentType} contentType The content type which will be used to build its content API response definition\n * @return {NexusObjectTypeDef}\n */\n buildResponseCollectionDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseCollectionName(contentType);\n const typeName = naming.getTypeName(contentType);\n const { resolvePagination } = getService('builders').get('content-api');\n\n return objectType({\n name,\n definition(t) {\n // NOTE: add edges & cursor based pagination to support the relay spec in a later version\n\n t.nonNull.list.field('nodes', {\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('pageInfo', {\n type: PAGINATION_TYPE_NAME,\n resolve: resolvePagination,\n });\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.list.field('data', {\n deprecation: 'Use `nodes` field instead',\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('meta', {\n deprecation: 'Use the `pageInfo` field instead',\n type: RESPONSE_COLLECTION_META_TYPE_NAME,\n resolve: identity,\n });\n }\n },\n });\n },\n };\n};\n"],"names":["strapi","service","getService","plugin","naming","RESPONSE_COLLECTION_META_TYPE_NAME","PAGINATION_TYPE_NAME","buildResponseCollectionDefinition","contentType","name","getEntityResponseCollectionName","typeName","getTypeName","resolvePagination","get","objectType","definition","t","nonNull","list","field","type","resolve","pipe","prop","defaultTo","config","deprecation","identity"],"mappings":";;;;;AAKA,yBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC,IAAA,MAAM,EAAEC,
|
|
1
|
+
{"version":3,"file":"response-collection.js","sources":["../../../../server/src/services/builders/response-collection.ts"],"sourcesContent":["import { objectType, nonNull } from 'nexus';\nimport { defaultTo, prop, pipe, identity } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { service: getService } = strapi.plugin('graphql');\n\n const { naming } = getService('utils');\n const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = getService('constants');\n\n return {\n /**\n * Build a type definition for a content API collection response for a given content type\n * @param {Schema.ContentType} contentType The content type which will be used to build its content API response definition\n * @return {NexusObjectTypeDef}\n */\n buildResponseCollectionDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseCollectionName(contentType);\n const typeName = naming.getTypeName(contentType);\n const { resolvePagination } = getService('builders').get('content-api');\n\n return objectType({\n name,\n definition(t) {\n // NOTE: add edges & cursor based pagination to support the relay spec in a later version\n\n t.nonNull.list.field('nodes', {\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('pageInfo', {\n type: PAGINATION_TYPE_NAME,\n resolve: resolvePagination,\n });\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.list.field('data', {\n deprecation: 'Use `nodes` field instead',\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('meta', {\n deprecation: 'Use the `pageInfo` field instead',\n type: RESPONSE_COLLECTION_META_TYPE_NAME,\n resolve: identity,\n });\n }\n },\n });\n },\n };\n};\n"],"names":["strapi","service","getService","plugin","naming","RESPONSE_COLLECTION_META_TYPE_NAME","PAGINATION_TYPE_NAME","buildResponseCollectionDefinition","contentType","name","getEntityResponseCollectionName","typeName","getTypeName","resolvePagination","get","objectType","definition","t","nonNull","list","field","type","resolve","pipe","prop","defaultTo","config","deprecation","identity"],"mappings":";;;;;AAKA,yBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC,IAAA,MAAM,EAAEC,OAAAA,EAASC,UAAU,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA;AAE9C,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGF,UAAAA,CAAW,OAAA,CAAA;AAC9B,IAAA,MAAM,EAAEG,kCAAkC,EAAEC,oBAAoB,EAAE,GAAGJ,UAAAA,CAAW,WAAA,CAAA;IAEhF,OAAO;AACL;;;;AAIC,QACDK,mCAAkCC,WAA+B,EAAA;YAC/D,MAAMC,IAAAA,GAAOL,MAAAA,CAAOM,+BAA+B,CAACF,WAAAA,CAAAA;YACpD,MAAMG,QAAAA,GAAWP,MAAAA,CAAOQ,WAAW,CAACJ,WAAAA,CAAAA;AACpC,YAAA,MAAM,EAAEK,iBAAiB,EAAE,GAAGX,UAAAA,CAAW,UAAA,CAAA,CAAYY,GAAG,CAAC,aAAA,CAAA;AAEzD,YAAA,OAAOC,gBAAAA,CAAW;AAChBN,gBAAAA,IAAAA;AACAO,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;;AAGVA,oBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,OAAA,EAAS;AAC5BC,wBAAAA,IAAAA,EAAMH,aAAAA,CAAQP,QAAAA,CAAAA;AACdW,wBAAAA,OAAAA,EAASC,OAAAA,CAAKC,OAAAA,CAAK,OAAA,CAAA,EAAUC,YAAAA,CAAU,EAAE,CAAA;AAC3C,qBAAA,CAAA;AAEAR,oBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,UAAA,EAAY;wBAC1BC,IAAAA,EAAMf,oBAAAA;wBACNgB,OAAAA,EAAST;AACX,qBAAA,CAAA;AAEA,oBAAA,IAAIb,OAAOG,MAAM,CAAC,WAAWuB,MAAM,CAAC,uBAAuB,KAAA,CAAA,EAAQ;AACjET,wBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,MAAA,EAAQ;4BAC3BO,WAAAA,EAAa,2BAAA;AACbN,4BAAAA,IAAAA,EAAMH,aAAAA,CAAQP,QAAAA,CAAAA;AACdW,4BAAAA,OAAAA,EAASC,OAAAA,CAAKC,OAAAA,CAAK,OAAA,CAAA,EAAUC,YAAAA,CAAU,EAAE,CAAA;AAC3C,yBAAA,CAAA;AAEAR,wBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,MAAA,EAAQ;4BACtBO,WAAAA,EAAa,kCAAA;4BACbN,IAAAA,EAAMhB,kCAAAA;4BACNiB,OAAAA,EAASM;AACX,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-collection.mjs","sources":["../../../../server/src/services/builders/response-collection.ts"],"sourcesContent":["import { objectType, nonNull } from 'nexus';\nimport { defaultTo, prop, pipe, identity } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { service: getService } = strapi.plugin('graphql');\n\n const { naming } = getService('utils');\n const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = getService('constants');\n\n return {\n /**\n * Build a type definition for a content API collection response for a given content type\n * @param {Schema.ContentType} contentType The content type which will be used to build its content API response definition\n * @return {NexusObjectTypeDef}\n */\n buildResponseCollectionDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseCollectionName(contentType);\n const typeName = naming.getTypeName(contentType);\n const { resolvePagination } = getService('builders').get('content-api');\n\n return objectType({\n name,\n definition(t) {\n // NOTE: add edges & cursor based pagination to support the relay spec in a later version\n\n t.nonNull.list.field('nodes', {\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('pageInfo', {\n type: PAGINATION_TYPE_NAME,\n resolve: resolvePagination,\n });\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.list.field('data', {\n deprecation: 'Use `nodes` field instead',\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('meta', {\n deprecation: 'Use the `pageInfo` field instead',\n type: RESPONSE_COLLECTION_META_TYPE_NAME,\n resolve: identity,\n });\n }\n },\n });\n },\n };\n};\n"],"names":["strapi","service","getService","plugin","naming","RESPONSE_COLLECTION_META_TYPE_NAME","PAGINATION_TYPE_NAME","buildResponseCollectionDefinition","contentType","name","getEntityResponseCollectionName","typeName","getTypeName","resolvePagination","get","objectType","definition","t","nonNull","list","field","type","resolve","pipe","prop","defaultTo","config","deprecation","identity"],"mappings":";;;AAKA,yBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC,IAAA,MAAM,EAAEC,
|
|
1
|
+
{"version":3,"file":"response-collection.mjs","sources":["../../../../server/src/services/builders/response-collection.ts"],"sourcesContent":["import { objectType, nonNull } from 'nexus';\nimport { defaultTo, prop, pipe, identity } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { service: getService } = strapi.plugin('graphql');\n\n const { naming } = getService('utils');\n const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = getService('constants');\n\n return {\n /**\n * Build a type definition for a content API collection response for a given content type\n * @param {Schema.ContentType} contentType The content type which will be used to build its content API response definition\n * @return {NexusObjectTypeDef}\n */\n buildResponseCollectionDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseCollectionName(contentType);\n const typeName = naming.getTypeName(contentType);\n const { resolvePagination } = getService('builders').get('content-api');\n\n return objectType({\n name,\n definition(t) {\n // NOTE: add edges & cursor based pagination to support the relay spec in a later version\n\n t.nonNull.list.field('nodes', {\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('pageInfo', {\n type: PAGINATION_TYPE_NAME,\n resolve: resolvePagination,\n });\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.list.field('data', {\n deprecation: 'Use `nodes` field instead',\n type: nonNull(typeName),\n resolve: pipe(prop('nodes'), defaultTo([])),\n });\n\n t.nonNull.field('meta', {\n deprecation: 'Use the `pageInfo` field instead',\n type: RESPONSE_COLLECTION_META_TYPE_NAME,\n resolve: identity,\n });\n }\n },\n });\n },\n };\n};\n"],"names":["strapi","service","getService","plugin","naming","RESPONSE_COLLECTION_META_TYPE_NAME","PAGINATION_TYPE_NAME","buildResponseCollectionDefinition","contentType","name","getEntityResponseCollectionName","typeName","getTypeName","resolvePagination","get","objectType","definition","t","nonNull","list","field","type","resolve","pipe","prop","defaultTo","config","deprecation","identity"],"mappings":";;;AAKA,yBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC,IAAA,MAAM,EAAEC,OAAAA,EAASC,UAAU,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA;AAE9C,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGF,UAAAA,CAAW,OAAA,CAAA;AAC9B,IAAA,MAAM,EAAEG,kCAAkC,EAAEC,oBAAoB,EAAE,GAAGJ,UAAAA,CAAW,WAAA,CAAA;IAEhF,OAAO;AACL;;;;AAIC,QACDK,mCAAkCC,WAA+B,EAAA;YAC/D,MAAMC,IAAAA,GAAOL,MAAAA,CAAOM,+BAA+B,CAACF,WAAAA,CAAAA;YACpD,MAAMG,QAAAA,GAAWP,MAAAA,CAAOQ,WAAW,CAACJ,WAAAA,CAAAA;AACpC,YAAA,MAAM,EAAEK,iBAAiB,EAAE,GAAGX,UAAAA,CAAW,UAAA,CAAA,CAAYY,GAAG,CAAC,aAAA,CAAA;AAEzD,YAAA,OAAOC,UAAAA,CAAW;AAChBN,gBAAAA,IAAAA;AACAO,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;;AAGVA,oBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,OAAA,EAAS;AAC5BC,wBAAAA,IAAAA,EAAMH,OAAAA,CAAQP,QAAAA,CAAAA;AACdW,wBAAAA,OAAAA,EAASC,IAAAA,CAAKC,IAAAA,CAAK,OAAA,CAAA,EAAUC,SAAAA,CAAU,EAAE,CAAA;AAC3C,qBAAA,CAAA;AAEAR,oBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,UAAA,EAAY;wBAC1BC,IAAAA,EAAMf,oBAAAA;wBACNgB,OAAAA,EAAST;AACX,qBAAA,CAAA;AAEA,oBAAA,IAAIb,OAAOG,MAAM,CAAC,WAAWuB,MAAM,CAAC,uBAAuB,KAAA,CAAA,EAAQ;AACjET,wBAAAA,CAAAA,CAAEC,OAAO,CAACC,IAAI,CAACC,KAAK,CAAC,MAAA,EAAQ;4BAC3BO,WAAAA,EAAa,2BAAA;AACbN,4BAAAA,IAAAA,EAAMH,OAAAA,CAAQP,QAAAA,CAAAA;AACdW,4BAAAA,OAAAA,EAASC,IAAAA,CAAKC,IAAAA,CAAK,OAAA,CAAA,EAAUC,SAAAA,CAAU,EAAE,CAAA;AAC3C,yBAAA,CAAA;AAEAR,wBAAAA,CAAAA,CAAEC,OAAO,CAACE,KAAK,CAAC,MAAA,EAAQ;4BACtBO,WAAAA,EAAa,kCAAA;4BACbN,IAAAA,EAAMhB,kCAAAA;4BACNiB,OAAAA,EAASM;AACX,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sources":["../../../../server/src/services/builders/response.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { prop } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n return {\n /**\n * Build a type definition for a content API response for a given content type\n */\n buildResponseDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseName(contentType);\n const typeName = naming.getTypeName(contentType);\n\n return objectType({\n name,\n\n definition(t) {\n t.field('data', {\n type: typeName,\n\n resolve: prop('value'),\n });\n },\n });\n },\n };\n};\n"],"names":["strapi","naming","plugin","service","buildResponseDefinition","contentType","name","getEntityResponseName","typeName","getTypeName","objectType","definition","t","field","type","resolve","prop"],"mappings":";;;;;AAKA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"response.js","sources":["../../../../server/src/services/builders/response.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { prop } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n return {\n /**\n * Build a type definition for a content API response for a given content type\n */\n buildResponseDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseName(contentType);\n const typeName = naming.getTypeName(contentType);\n\n return objectType({\n name,\n\n definition(t) {\n t.field('data', {\n type: typeName,\n\n resolve: prop('value'),\n });\n },\n });\n },\n };\n};\n"],"names":["strapi","naming","plugin","service","buildResponseDefinition","contentType","name","getEntityResponseName","typeName","getTypeName","objectType","definition","t","field","type","resolve","prop"],"mappings":";;;;;AAKA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,OAAA,CAAA;IAEpD,OAAO;AACL;;AAEC,QACDC,yBAAwBC,WAA+B,EAAA;YACrD,MAAMC,IAAAA,GAAOL,MAAAA,CAAOM,qBAAqB,CAACF,WAAAA,CAAAA;YAC1C,MAAMG,QAAAA,GAAWP,MAAAA,CAAOQ,WAAW,CAACJ,WAAAA,CAAAA;AAEpC,YAAA,OAAOK,gBAAAA,CAAW;AAChBJ,gBAAAA,IAAAA;AAEAK,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;oBACVA,CAAAA,CAAEC,KAAK,CAAC,MAAA,EAAQ;wBACdC,IAAAA,EAAMN,QAAAA;AAENO,wBAAAA,OAAAA,EAASC,OAAAA,CAAK,OAAA;AAChB,qBAAA,CAAA;AACF,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.mjs","sources":["../../../../server/src/services/builders/response.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { prop } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n return {\n /**\n * Build a type definition for a content API response for a given content type\n */\n buildResponseDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseName(contentType);\n const typeName = naming.getTypeName(contentType);\n\n return objectType({\n name,\n\n definition(t) {\n t.field('data', {\n type: typeName,\n\n resolve: prop('value'),\n });\n },\n });\n },\n };\n};\n"],"names":["strapi","naming","plugin","service","buildResponseDefinition","contentType","name","getEntityResponseName","typeName","getTypeName","objectType","definition","t","field","type","resolve","prop"],"mappings":";;;AAKA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"response.mjs","sources":["../../../../server/src/services/builders/response.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { prop } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n const { naming } = strapi.plugin('graphql').service('utils');\n\n return {\n /**\n * Build a type definition for a content API response for a given content type\n */\n buildResponseDefinition(contentType: Schema.ContentType) {\n const name = naming.getEntityResponseName(contentType);\n const typeName = naming.getTypeName(contentType);\n\n return objectType({\n name,\n\n definition(t) {\n t.field('data', {\n type: typeName,\n\n resolve: prop('value'),\n });\n },\n });\n },\n };\n};\n"],"names":["strapi","naming","plugin","service","buildResponseDefinition","contentType","name","getEntityResponseName","typeName","getTypeName","objectType","definition","t","field","type","resolve","prop"],"mappings":";;;AAKA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,OAAA,CAAA;IAEpD,OAAO;AACL;;AAEC,QACDC,yBAAwBC,WAA+B,EAAA;YACrD,MAAMC,IAAAA,GAAOL,MAAAA,CAAOM,qBAAqB,CAACF,WAAAA,CAAAA;YAC1C,MAAMG,QAAAA,GAAWP,MAAAA,CAAOQ,WAAW,CAACJ,WAAAA,CAAAA;AAEpC,YAAA,OAAOK,UAAAA,CAAW;AAChBJ,gBAAAA,IAAAA;AAEAK,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;oBACVA,CAAAA,CAAEC,KAAK,CAAC,MAAA,EAAQ;wBACdC,IAAAA,EAAMN,QAAAA;AAENO,wBAAAA,OAAAA,EAASC,IAAAA,CAAK,OAAA;AAChB,qBAAA,CAAA;AACF,gBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.js","sources":["../../../../server/src/services/builders/type.ts"],"sourcesContent":["import { isArray, isString, isUndefined, constant } from 'lodash/fp';\nimport { nonNull, list, objectType } from 'nexus';\nimport { contentTypes } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\n\nimport type { Context } from '../types';\n\nexport type TypeBuildersOptions = {\n builder: any;\n attributeName: string;\n attribute: any;\n contentType: any;\n context: Context;\n};\n\nexport default (context: Context) => {\n const { strapi } = context;\n const getGraphQLService = strapi.plugin('graphql').service;\n\n const extension = getGraphQLService('extension');\n\n /**\n * Add a scalar attribute to the type definition\n *\n * The attribute is added based on a simple association between a Strapi\n * type and a GraphQL type (the map is defined in `strapiTypeToGraphQLScalar`)\n */\n const addScalarAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, attribute } = options;\n\n const { mappers } = getGraphQLService('utils');\n\n const gqlType = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n builder.field(attributeName, { type: gqlType });\n };\n\n /**\n * Add a component attribute to the type definition\n *\n * The attribute is added by fetching the component's type\n * name and using it as the attribute's type\n */\n const addComponentAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType, attribute } = options;\n\n let localBuilder = builder;\n\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildComponentResolver } = getGraphQLService('builders').get('content-api');\n\n const type = naming.getComponentNameFromAttribute(attribute);\n\n if (attribute.repeatable) {\n localBuilder = localBuilder.list;\n }\n\n const targetComponent = strapi.getModel(attribute.component);\n\n const resolve = buildComponentResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = getContentTypeArgs(targetComponent, {\n multiple: !!attribute.repeatable,\n isNested: true,\n });\n\n localBuilder.field(attributeName, { type, resolve, args });\n };\n\n /**\n * Add a dynamic zone attribute to the type definition\n *\n * The attribute is added by fetching the dynamic zone's\n * type name and using it as the attribute's type\n */\n const addDynamicZoneAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n const { ERROR_CODES } = getGraphQLService('constants');\n const { buildDynamicZoneResolver } = getGraphQLService('builders').get('content-api');\n\n const { components } = contentType.attributes[attributeName];\n\n const isEmpty = components.length === 0;\n const type = naming.getDynamicZoneName(contentType, attributeName);\n\n const resolve = isEmpty\n ? // If the dynamic zone don't have any component, then return an error payload\n constant({\n code: ERROR_CODES.emptyDynamicZone,\n message: `This dynamic zone don't have any component attached to it`,\n })\n : // Else, return a classic dynamic-zone resolver\n buildDynamicZoneResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n });\n\n builder.list.field(attributeName, { type, resolve });\n };\n\n /**\n * Add an enum attribute to the type definition\n *\n * The attribute is added by fetching the enum's type\n * name and using it as the attribute's type\n */\n const addEnumAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n\n const type = naming.getEnumName(contentType, attributeName);\n\n builder.field(attributeName, { type });\n };\n\n /**\n * Add a media attribute to the type definition\n */\n const addMediaAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n const fileUID = 'plugin::upload.file';\n\n if (extension.shadowCRUD(fileUID).isDisabled()) {\n return;\n }\n\n const fileContentType = strapi.contentTypes[fileUID];\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = attribute.multiple\n ? getContentTypeArgs(fileContentType, { isNested: true })\n : undefined;\n\n const typeName = naming.getTypeName(fileContentType);\n\n if (attribute.multiple) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(fileContentType),\n resolve,\n args,\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n /**\n * Add a polymorphic relational attribute to the type definition\n */\n const addPolymorphicRelationalAttribute = (options: TypeBuildersOptions) => {\n const { GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const { naming } = getGraphQLService('utils');\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n\n let { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n const { target } = attribute;\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n if (isToManyRelation) {\n builder = builder.list;\n }\n // todo[v4]: How to handle polymorphic relation w/ entity response collection types?\n // -> Currently return raw polymorphic entities\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n // If there is no specific target specified, then use the GenericMorph type\n if (isUndefined(target)) {\n builder.field(attributeName, {\n type: GENERIC_MORPH_TYPENAME,\n resolve,\n });\n }\n\n // If the target is an array of string, resolve the associated morph type and use it\n else if (isArray(target) && target.every(isString)) {\n const type = naming.getMorphRelationTypeName(contentType, attributeName);\n\n builder.field(attributeName, { type, resolve });\n }\n };\n\n /**\n * Add a regular relational attribute to the type definition\n */\n const addRegularRelationalAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n if (extension.shadowCRUD(attribute.target).isDisabled()) {\n return;\n }\n\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const targetContentType = strapi.getModel(attribute.target);\n\n const typeName = naming.getTypeName(targetContentType);\n\n const args = isToManyRelation\n ? getContentTypeArgs(targetContentType, { isNested: true })\n : undefined;\n\n const resolverScope = `${targetContentType.uid}.find`;\n const resolverPath = `${naming.getTypeName(contentType)}.${attributeName}`;\n\n extension.use({ resolversConfig: { [resolverPath]: { auth: { scope: [resolverScope] } } } });\n\n if (isToManyRelation) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(targetContentType),\n resolve,\n args,\n });\n\n extension.use({\n resolversConfig: { [`${resolverPath}_connection`]: { auth: { scope: [resolverScope] } } },\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n const isNotPrivate = (contentType: Struct.Schema) => (attributeName: string) => {\n return !contentTypes.isPrivateAttribute(contentType, attributeName);\n };\n\n const isNotDisabled = (contentType: Struct.Schema) => (attributeName: string) => {\n return extension.shadowCRUD(contentType.uid).field(attributeName).hasOutputEnabled();\n };\n\n return {\n /**\n * Create a type definition for a given content type\n * @param contentType - The content type used to created the definition\n * @return {NexusObjectTypeDef}\n */\n buildTypeDefinition(contentType: Struct.Schema) {\n const utils = getGraphQLService('utils');\n\n const { getComponentName, getTypeName } = utils.naming;\n const {\n isStrapiScalar,\n isComponent,\n isDynamicZone,\n isEnumeration,\n isMedia,\n isMorphRelation,\n isRelation,\n } = utils.attributes;\n\n const { attributes, modelType } = contentType;\n\n const attributesKey = Object.keys(attributes);\n\n const name = (modelType === 'component' ? getComponentName : getTypeName).call(\n null,\n contentType\n );\n\n return objectType({\n name,\n definition(t) {\n // add back the old id attribute on contentType if v4 compat is enabled\n if (\n modelType !== 'component' &&\n isNotDisabled(contentType)('id') &&\n strapi.plugin('graphql').config('v4CompatibilityMode', false)\n ) {\n t.nonNull.id('id', {\n deprecation: 'Use `documentId` instead',\n });\n }\n\n if (modelType === 'component' && isNotDisabled(contentType)('id')) {\n t.nonNull.id('id');\n }\n\n if (modelType !== 'component' && isNotDisabled(contentType)('documentId')) {\n t.nonNull.id('documentId');\n }\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.field('attributes', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n\n t.nonNull.field('data', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n }\n\n /** Attributes\n *\n * Attributes can be of 7 different kind:\n * - Scalar\n * - Component\n * - Dynamic Zone\n * - Enum\n * - Media\n * - Polymorphic Relations\n * - Regular Relations\n *\n * Here, we iterate over each non-private attribute\n * and add it to the type definition based on its type\n */\n attributesKey\n // Ignore private attributes\n .filter(isNotPrivate(contentType))\n // Ignore disabled fields (from extension service)\n .filter(isNotDisabled(contentType))\n // Add each attribute to the type definition\n .forEach((attributeName) => {\n const attribute = attributes[attributeName];\n\n // We create a copy of the builder (t) to apply custom\n // rules only on the current attribute (eg: nonNull, list, ...)\n let builder: any = t;\n\n if (attribute.required) {\n builder = builder.nonNull;\n }\n\n const options: TypeBuildersOptions = {\n builder,\n attributeName,\n attribute,\n contentType,\n context,\n };\n\n // Enums\n if (isEnumeration(attribute)) {\n addEnumAttribute(options);\n }\n\n // Scalars\n else if (isStrapiScalar(attribute)) {\n addScalarAttribute(options);\n }\n\n // Components\n else if (isComponent(attribute)) {\n addComponentAttribute(options);\n }\n\n // Dynamic Zones\n else if (isDynamicZone(attribute)) {\n addDynamicZoneAttribute(options);\n }\n\n // Media\n else if (isMedia(attribute)) {\n addMediaAttribute(options);\n }\n\n // Polymorphic Relations\n else if (isMorphRelation(attribute)) {\n addPolymorphicRelationalAttribute(options);\n }\n\n // Regular Relations\n else if (isRelation(attribute)) {\n addRegularRelationalAttribute(options);\n }\n });\n },\n });\n },\n };\n};\n"],"names":["context","strapi","getGraphQLService","plugin","service","extension","addScalarAttribute","options","builder","attributeName","attribute","mappers","gqlType","strapiScalarToGraphQLScalar","type","field","addComponentAttribute","contentType","localBuilder","naming","getContentTypeArgs","utils","buildComponentResolver","get","getComponentNameFromAttribute","repeatable","list","targetComponent","getModel","component","resolve","contentTypeUID","uid","args","multiple","isNested","addDynamicZoneAttribute","ERROR_CODES","buildDynamicZoneResolver","components","attributes","isEmpty","length","getDynamicZoneName","constant","code","emptyDynamicZone","message","addEnumAttribute","getEnumName","addMediaAttribute","buildAssociationResolver","fileUID","shadowCRUD","isDisabled","fileContentType","contentTypes","undefined","typeName","getTypeName","getRelationResponseCollectionName","nonNull","res","nodes","value","addPolymorphicRelationalAttribute","GENERIC_MORPH_TYPENAME","target","isToManyRelation","relation","endsWith","isUndefined","isArray","every","isString","getMorphRelationTypeName","addRegularRelationalAttribute","targetContentType","resolverScope","resolverPath","use","resolversConfig","auth","scope","isNotPrivate","isPrivateAttribute","isNotDisabled","hasOutputEnabled","buildTypeDefinition","getComponentName","isStrapiScalar","isComponent","isDynamicZone","isEnumeration","isMedia","isMorphRelation","isRelation","modelType","attributesKey","Object","keys","name","call","objectType","definition","t","config","id","deprecation","parent","filter","forEach","required"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"type.js","sources":["../../../../server/src/services/builders/type.ts"],"sourcesContent":["import { isArray, isString, isUndefined, constant } from 'lodash/fp';\nimport { nonNull, list, objectType } from 'nexus';\nimport { contentTypes } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\n\nimport type { Context } from '../types';\n\nexport type TypeBuildersOptions = {\n builder: any;\n attributeName: string;\n attribute: any;\n contentType: any;\n context: Context;\n};\n\nexport default (context: Context) => {\n const { strapi } = context;\n const getGraphQLService = strapi.plugin('graphql').service;\n\n const extension = getGraphQLService('extension');\n\n /**\n * Add a scalar attribute to the type definition\n *\n * The attribute is added based on a simple association between a Strapi\n * type and a GraphQL type (the map is defined in `strapiTypeToGraphQLScalar`)\n */\n const addScalarAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, attribute } = options;\n\n const { mappers } = getGraphQLService('utils');\n\n const gqlType = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n builder.field(attributeName, { type: gqlType });\n };\n\n /**\n * Add a component attribute to the type definition\n *\n * The attribute is added by fetching the component's type\n * name and using it as the attribute's type\n */\n const addComponentAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType, attribute } = options;\n\n let localBuilder = builder;\n\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildComponentResolver } = getGraphQLService('builders').get('content-api');\n\n const type = naming.getComponentNameFromAttribute(attribute);\n\n if (attribute.repeatable) {\n localBuilder = localBuilder.list;\n }\n\n const targetComponent = strapi.getModel(attribute.component);\n\n const resolve = buildComponentResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = getContentTypeArgs(targetComponent, {\n multiple: !!attribute.repeatable,\n isNested: true,\n });\n\n localBuilder.field(attributeName, { type, resolve, args });\n };\n\n /**\n * Add a dynamic zone attribute to the type definition\n *\n * The attribute is added by fetching the dynamic zone's\n * type name and using it as the attribute's type\n */\n const addDynamicZoneAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n const { ERROR_CODES } = getGraphQLService('constants');\n const { buildDynamicZoneResolver } = getGraphQLService('builders').get('content-api');\n\n const { components } = contentType.attributes[attributeName];\n\n const isEmpty = components.length === 0;\n const type = naming.getDynamicZoneName(contentType, attributeName);\n\n const resolve = isEmpty\n ? // If the dynamic zone don't have any component, then return an error payload\n constant({\n code: ERROR_CODES.emptyDynamicZone,\n message: `This dynamic zone don't have any component attached to it`,\n })\n : // Else, return a classic dynamic-zone resolver\n buildDynamicZoneResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n });\n\n builder.list.field(attributeName, { type, resolve });\n };\n\n /**\n * Add an enum attribute to the type definition\n *\n * The attribute is added by fetching the enum's type\n * name and using it as the attribute's type\n */\n const addEnumAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n\n const type = naming.getEnumName(contentType, attributeName);\n\n builder.field(attributeName, { type });\n };\n\n /**\n * Add a media attribute to the type definition\n */\n const addMediaAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n const fileUID = 'plugin::upload.file';\n\n if (extension.shadowCRUD(fileUID).isDisabled()) {\n return;\n }\n\n const fileContentType = strapi.contentTypes[fileUID];\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = attribute.multiple\n ? getContentTypeArgs(fileContentType, { isNested: true })\n : undefined;\n\n const typeName = naming.getTypeName(fileContentType);\n\n if (attribute.multiple) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(fileContentType),\n resolve,\n args,\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n /**\n * Add a polymorphic relational attribute to the type definition\n */\n const addPolymorphicRelationalAttribute = (options: TypeBuildersOptions) => {\n const { GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const { naming } = getGraphQLService('utils');\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n\n let { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n const { target } = attribute;\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n if (isToManyRelation) {\n builder = builder.list;\n }\n // todo[v4]: How to handle polymorphic relation w/ entity response collection types?\n // -> Currently return raw polymorphic entities\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n // If there is no specific target specified, then use the GenericMorph type\n if (isUndefined(target)) {\n builder.field(attributeName, {\n type: GENERIC_MORPH_TYPENAME,\n resolve,\n });\n }\n\n // If the target is an array of string, resolve the associated morph type and use it\n else if (isArray(target) && target.every(isString)) {\n const type = naming.getMorphRelationTypeName(contentType, attributeName);\n\n builder.field(attributeName, { type, resolve });\n }\n };\n\n /**\n * Add a regular relational attribute to the type definition\n */\n const addRegularRelationalAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n if (extension.shadowCRUD(attribute.target).isDisabled()) {\n return;\n }\n\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const targetContentType = strapi.getModel(attribute.target);\n\n const typeName = naming.getTypeName(targetContentType);\n\n const args = isToManyRelation\n ? getContentTypeArgs(targetContentType, { isNested: true })\n : undefined;\n\n const resolverScope = `${targetContentType.uid}.find`;\n const resolverPath = `${naming.getTypeName(contentType)}.${attributeName}`;\n\n extension.use({ resolversConfig: { [resolverPath]: { auth: { scope: [resolverScope] } } } });\n\n if (isToManyRelation) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(targetContentType),\n resolve,\n args,\n });\n\n extension.use({\n resolversConfig: { [`${resolverPath}_connection`]: { auth: { scope: [resolverScope] } } },\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n const isNotPrivate = (contentType: Struct.Schema) => (attributeName: string) => {\n return !contentTypes.isPrivateAttribute(contentType, attributeName);\n };\n\n const isNotDisabled = (contentType: Struct.Schema) => (attributeName: string) => {\n return extension.shadowCRUD(contentType.uid).field(attributeName).hasOutputEnabled();\n };\n\n return {\n /**\n * Create a type definition for a given content type\n * @param contentType - The content type used to created the definition\n * @return {NexusObjectTypeDef}\n */\n buildTypeDefinition(contentType: Struct.Schema) {\n const utils = getGraphQLService('utils');\n\n const { getComponentName, getTypeName } = utils.naming;\n const {\n isStrapiScalar,\n isComponent,\n isDynamicZone,\n isEnumeration,\n isMedia,\n isMorphRelation,\n isRelation,\n } = utils.attributes;\n\n const { attributes, modelType } = contentType;\n\n const attributesKey = Object.keys(attributes);\n\n const name = (modelType === 'component' ? getComponentName : getTypeName).call(\n null,\n contentType\n );\n\n return objectType({\n name,\n definition(t) {\n // add back the old id attribute on contentType if v4 compat is enabled\n if (\n modelType !== 'component' &&\n isNotDisabled(contentType)('id') &&\n strapi.plugin('graphql').config('v4CompatibilityMode', false)\n ) {\n t.nonNull.id('id', {\n deprecation: 'Use `documentId` instead',\n });\n }\n\n if (modelType === 'component' && isNotDisabled(contentType)('id')) {\n t.nonNull.id('id');\n }\n\n if (modelType !== 'component' && isNotDisabled(contentType)('documentId')) {\n t.nonNull.id('documentId');\n }\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.field('attributes', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n\n t.nonNull.field('data', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n }\n\n /** Attributes\n *\n * Attributes can be of 7 different kind:\n * - Scalar\n * - Component\n * - Dynamic Zone\n * - Enum\n * - Media\n * - Polymorphic Relations\n * - Regular Relations\n *\n * Here, we iterate over each non-private attribute\n * and add it to the type definition based on its type\n */\n attributesKey\n // Ignore private attributes\n .filter(isNotPrivate(contentType))\n // Ignore disabled fields (from extension service)\n .filter(isNotDisabled(contentType))\n // Add each attribute to the type definition\n .forEach((attributeName) => {\n const attribute = attributes[attributeName];\n\n // We create a copy of the builder (t) to apply custom\n // rules only on the current attribute (eg: nonNull, list, ...)\n let builder: any = t;\n\n if (attribute.required) {\n builder = builder.nonNull;\n }\n\n const options: TypeBuildersOptions = {\n builder,\n attributeName,\n attribute,\n contentType,\n context,\n };\n\n // Enums\n if (isEnumeration(attribute)) {\n addEnumAttribute(options);\n }\n\n // Scalars\n else if (isStrapiScalar(attribute)) {\n addScalarAttribute(options);\n }\n\n // Components\n else if (isComponent(attribute)) {\n addComponentAttribute(options);\n }\n\n // Dynamic Zones\n else if (isDynamicZone(attribute)) {\n addDynamicZoneAttribute(options);\n }\n\n // Media\n else if (isMedia(attribute)) {\n addMediaAttribute(options);\n }\n\n // Polymorphic Relations\n else if (isMorphRelation(attribute)) {\n addPolymorphicRelationalAttribute(options);\n }\n\n // Regular Relations\n else if (isRelation(attribute)) {\n addRegularRelationalAttribute(options);\n }\n });\n },\n });\n },\n };\n};\n"],"names":["context","strapi","getGraphQLService","plugin","service","extension","addScalarAttribute","options","builder","attributeName","attribute","mappers","gqlType","strapiScalarToGraphQLScalar","type","field","addComponentAttribute","contentType","localBuilder","naming","getContentTypeArgs","utils","buildComponentResolver","get","getComponentNameFromAttribute","repeatable","list","targetComponent","getModel","component","resolve","contentTypeUID","uid","args","multiple","isNested","addDynamicZoneAttribute","ERROR_CODES","buildDynamicZoneResolver","components","attributes","isEmpty","length","getDynamicZoneName","constant","code","emptyDynamicZone","message","addEnumAttribute","getEnumName","addMediaAttribute","buildAssociationResolver","fileUID","shadowCRUD","isDisabled","fileContentType","contentTypes","undefined","typeName","getTypeName","getRelationResponseCollectionName","nonNull","res","nodes","value","addPolymorphicRelationalAttribute","GENERIC_MORPH_TYPENAME","target","isToManyRelation","relation","endsWith","isUndefined","isArray","every","isString","getMorphRelationTypeName","addRegularRelationalAttribute","targetContentType","resolverScope","resolverPath","use","resolversConfig","auth","scope","isNotPrivate","isPrivateAttribute","isNotDisabled","hasOutputEnabled","buildTypeDefinition","getComponentName","isStrapiScalar","isComponent","isDynamicZone","isEnumeration","isMedia","isMorphRelation","isRelation","modelType","attributesKey","Object","keys","name","call","objectType","definition","t","config","id","deprecation","parent","filter","forEach","required"],"mappings":"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"}
|
|
@@ -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":";;;;AAeA,kBAAe,CAAA,CAACA,OAAAA,GAAAA;IACd,MAAM,EAAEC,MAAM,EAAE,GAAGD,OAAAA;AACnB,IAAA,MAAME,iBAAoBD,GAAAA,MAAAA,CAAOE,MAAM,CAAC,WAAWC,OAAO;AAE1D,IAAA,MAAMC,YAAYH,iBAAkB,CAAA,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,iBAAkB,CAAA,OAAA,CAAA;AAEtC,QAAA,MAAMU,OAAUD,GAAAA,OAAAA,CAAQE,2BAA2B,CAACH,UAAUI,IAAI,CAAA;QAElEN,OAAQO,CAAAA,KAAK,CAACN,aAAe,EAAA;YAAEK,IAAMF,EAAAA;AAAQ,SAAA,CAAA;AAC/C,KAAA;AAEA;;;;;MAMA,MAAMI,wBAAwB,CAACT,OAAAA,GAAAA;QAC7B,MAAM,EAAEC,OAAO,EAAEC,aAAa,EAAEQ,WAAW,EAAEP,SAAS,EAAE,GAAGH,OAAAA;AAE3D,QAAA,IAAIW,YAAeV,GAAAA,OAAAA;AAEnB,QAAA,MAAM,EAAEW,MAAM,EAAE,GAAGjB,iBAAkB,CAAA,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEkB,kBAAkB,EAAE,GAAGlB,iBAAAA,CAAkB,YAAYmB,KAAK;AAClE,QAAA,MAAM,EAAEC,sBAAsB,EAAE,GAAGpB,iBAAkB,CAAA,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;QAErE,MAAMT,IAAAA,GAAOK,MAAOK,CAAAA,6BAA6B,CAACd,SAAAA,CAAAA;QAElD,IAAIA,SAAAA,CAAUe,UAAU,EAAE;AACxBP,YAAAA,YAAAA,GAAeA,aAAaQ,IAAI;AAClC;AAEA,QAAA,MAAMC,eAAkB1B,GAAAA,MAAAA,CAAO2B,QAAQ,CAAClB,UAAUmB,SAAS,CAAA;AAE3D,QAAA,MAAMC,UAAUR,sBAAuB,CAAA;AACrCS,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA,aAAAA;AACAR,YAAAA;AACF,SAAA,CAAA;QAEA,MAAMgC,IAAAA,GAAOb,mBAAmBO,eAAiB,EAAA;YAC/CO,QAAU,EAAA,CAAC,CAACxB,SAAAA,CAAUe,UAAU;YAChCU,QAAU,EAAA;AACZ,SAAA,CAAA;QAEAjB,YAAaH,CAAAA,KAAK,CAACN,aAAe,EAAA;AAAEK,YAAAA,IAAAA;AAAMgB,YAAAA,OAAAA;AAASG,YAAAA;AAAK,SAAA,CAAA;AAC1D,KAAA;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,iBAAkB,CAAA,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEmC,WAAW,EAAE,GAAGnC,iBAAkB,CAAA,WAAA,CAAA;AAC1C,QAAA,MAAM,EAAEoC,wBAAwB,EAAE,GAAGpC,iBAAkB,CAAA,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;AAEvE,QAAA,MAAM,EAAEgB,UAAU,EAAE,GAAGtB,WAAYuB,CAAAA,UAAU,CAAC/B,aAAc,CAAA;QAE5D,MAAMgC,OAAAA,GAAUF,UAAWG,CAAAA,MAAM,KAAK,CAAA;AACtC,QAAA,MAAM5B,IAAOK,GAAAA,MAAAA,CAAOwB,kBAAkB,CAAC1B,WAAaR,EAAAA,aAAAA,CAAAA;QAEpD,MAAMqB,OAAAA,GAAUW,UAEZG,QAAS,CAAA;AACPC,YAAAA,IAAAA,EAAMR,YAAYS,gBAAgB;YAClCC,OAAS,EAAA,CAAC,yDAAyD;AACrE,SAAA,CAAA,GAEAT,wBAAyB,CAAA;AACvBP,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA;AACF,SAAA,CAAA;AAEJD,QAAAA,OAAAA,CAAQkB,IAAI,CAACX,KAAK,CAACN,aAAe,EAAA;AAAEK,YAAAA,IAAAA;AAAMgB,YAAAA;AAAQ,SAAA,CAAA;AACpD,KAAA;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,iBAAkB,CAAA,OAAA,CAAA;AAErC,QAAA,MAAMY,IAAOK,GAAAA,MAAAA,CAAO8B,WAAW,CAAChC,WAAaR,EAAAA,aAAAA,CAAAA;QAE7CD,OAAQO,CAAAA,KAAK,CAACN,aAAe,EAAA;AAAEK,YAAAA;AAAK,SAAA,CAAA;AACtC,KAAA;AAEA;;MAGA,MAAMoC,oBAAoB,CAAC3C,OAAAA,GAAAA;AACzB,QAAA,MAAM,EAAEY,MAAM,EAAE,GAAGjB,iBAAkB,CAAA,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEkB,kBAAkB,EAAE,GAAGlB,iBAAAA,CAAkB,YAAYmB,KAAK;AAClE,QAAA,MAAM,EAAE8B,wBAAwB,EAAE,GAAGjD,iBAAkB,CAAA,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;AACvE,QAAA,MAAMlB,YAAYH,iBAAkB,CAAA,WAAA,CAAA;QAEpC,MAAM,EAAEM,OAAO,EAAE,GAAGD,OAAAA;AACpB,QAAA,MAAM,EAAEE,aAAa,EAAEC,SAAS,EAAEO,WAAW,EAAE,GAAGV,OAAAA;AAClD,QAAA,MAAM6C,OAAU,GAAA,qBAAA;AAEhB,QAAA,IAAI/C,SAAUgD,CAAAA,UAAU,CAACD,OAAAA,CAAAA,CAASE,UAAU,EAAI,EAAA;AAC9C,YAAA;AACF;AAEA,QAAA,MAAMC,eAAkBtD,GAAAA,MAAAA,CAAOuD,YAAY,CAACJ,OAAQ,CAAA;AAEpD,QAAA,MAAMtB,UAAUqB,wBAAyB,CAAA;AACvCpB,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA,aAAAA;AACAR,YAAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAMgC,IAAOvB,GAAAA,SAAAA,CAAUwB,QAAQ,GAC3Bd,mBAAmBmC,eAAiB,EAAA;YAAEpB,QAAU,EAAA;SAChDsB,CAAAA,GAAAA,SAAAA;QAEJ,MAAMC,QAAAA,GAAWvC,MAAOwC,CAAAA,WAAW,CAACJ,eAAAA,CAAAA;QAEpC,IAAI7C,SAAAA,CAAUwB,QAAQ,EAAE;AACtB1B,YAAAA,OAAAA,CAAQO,KAAK,CAAC,CAAA,EAAGN,aAAc,CAAA,WAAW,CAAC,EAAE;gBAC3CK,IAAMK,EAAAA,MAAAA,CAAOyC,iCAAiC,CAACL,eAAAA,CAAAA;AAC/CzB,gBAAAA,OAAAA;AACAG,gBAAAA;AACF,aAAA,CAAA;YAEAzB,OAAQO,CAAAA,KAAK,CAACN,aAAe,EAAA;AAC3BK,gBAAAA,IAAAA,EAAM+C,QAAQnC,IAAKgC,CAAAA,QAAAA,CAAAA,CAAAA;gBACnB,MAAM5B,OAAAA,CAAAA,CAAQ,GAAGG,IAAe,EAAA;oBAC9B,MAAM6B,GAAAA,GAAM,MAAMhC,OAAWG,CAAAA,GAAAA,IAAAA,CAAAA;oBAC7B,OAAO6B,GAAAA,CAAIC,KAAK,IAAI,EAAE;AACxB,iBAAA;AACA9B,gBAAAA;AACF,aAAA,CAAA;SACK,MAAA;YACLzB,OAAQO,CAAAA,KAAK,CAACN,aAAe,EAAA;gBAC3BK,IAAM4C,EAAAA,QAAAA;gBACN,MAAM5B,OAAAA,CAAAA,CAAQ,GAAGG,IAAe,EAAA;oBAC9B,MAAM6B,GAAAA,GAAM,MAAMhC,OAAWG,CAAAA,GAAAA,IAAAA,CAAAA;AAC7B,oBAAA,OAAO6B,IAAIE,KAAK;AAClB,iBAAA;AACA/B,gBAAAA;AACF,aAAA,CAAA;AACF;AACF,KAAA;AAEA;;MAGA,MAAMgC,oCAAoC,CAAC1D,OAAAA,GAAAA;AACzC,QAAA,MAAM,EAAE2D,sBAAsB,EAAE,GAAGhE,iBAAkB,CAAA,WAAA,CAAA;AACrD,QAAA,MAAM,EAAEiB,MAAM,EAAE,GAAGjB,iBAAkB,CAAA,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEiD,wBAAwB,EAAE,GAAGjD,iBAAkB,CAAA,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,gBAAmB1D,GAAAA,SAAAA,CAAU2D,QAAQ,CAACC,QAAQ,CAAC,MAAA,CAAA;AAErD,QAAA,IAAIF,gBAAkB,EAAA;AACpB5D,YAAAA,OAAAA,GAAUA,QAAQkB,IAAI;AACxB;;;AAIA,QAAA,MAAMI,UAAUqB,wBAAyB,CAAA;AACvCpB,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA,aAAAA;AACAR,YAAAA;AACF,SAAA,CAAA;;AAGA,QAAA,IAAIsE,YAAYJ,MAAS,CAAA,EAAA;YACvB3D,OAAQO,CAAAA,KAAK,CAACN,aAAe,EAAA;gBAC3BK,IAAMoD,EAAAA,sBAAAA;AACNpC,gBAAAA;AACF,aAAA,CAAA;AACF,SAAA,MAGK,IAAI0C,OAAQL,CAAAA,MAAAA,CAAAA,IAAWA,MAAOM,CAAAA,KAAK,CAACC,QAAW,CAAA,EAAA;AAClD,YAAA,MAAM5D,IAAOK,GAAAA,MAAAA,CAAOwD,wBAAwB,CAAC1D,WAAaR,EAAAA,aAAAA,CAAAA;YAE1DD,OAAQO,CAAAA,KAAK,CAACN,aAAe,EAAA;AAAEK,gBAAAA,IAAAA;AAAMgB,gBAAAA;AAAQ,aAAA,CAAA;AAC/C;AACF,KAAA;AAEA;;MAGA,MAAM8C,gCAAgC,CAACrE,OAAAA,GAAAA;AACrC,QAAA,MAAM,EAAEY,MAAM,EAAE,GAAGjB,iBAAkB,CAAA,OAAA,CAAA;AACrC,QAAA,MAAM,EAAEkB,kBAAkB,EAAE,GAAGlB,iBAAAA,CAAkB,YAAYmB,KAAK;AAClE,QAAA,MAAM,EAAE8B,wBAAwB,EAAE,GAAGjD,iBAAkB,CAAA,UAAA,CAAA,CAAYqB,GAAG,CAAC,aAAA,CAAA;AACvE,QAAA,MAAMlB,YAAYH,iBAAkB,CAAA,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,EAAI,EAAA;AACvD,YAAA;AACF;AAEA,QAAA,MAAMc,gBAAmB1D,GAAAA,SAAAA,CAAU2D,QAAQ,CAACC,QAAQ,CAAC,MAAA,CAAA;AAErD,QAAA,MAAMxC,UAAUqB,wBAAyB,CAAA;AACvCpB,YAAAA,cAAAA,EAAgBd,YAAYe,GAAG;AAC/BvB,YAAAA,aAAAA;AACAR,YAAAA;AACF,SAAA,CAAA;AAEA,QAAA,MAAM4E,iBAAoB5E,GAAAA,MAAAA,CAAO2B,QAAQ,CAAClB,UAAUyD,MAAM,CAAA;QAE1D,MAAMT,QAAAA,GAAWvC,MAAOwC,CAAAA,WAAW,CAACkB,iBAAAA,CAAAA;QAEpC,MAAM5C,IAAAA,GAAOmC,gBACThD,GAAAA,kBAAAA,CAAmByD,iBAAmB,EAAA;YAAE1C,QAAU,EAAA;SAClDsB,CAAAA,GAAAA,SAAAA;AAEJ,QAAA,MAAMqB,gBAAgB,CAAGD,EAAAA,iBAAAA,CAAkB7C,GAAG,CAAC,KAAK,CAAC;QACrD,MAAM+C,YAAAA,GAAe,GAAG5D,MAAOwC,CAAAA,WAAW,CAAC1C,WAAa,CAAA,CAAA,CAAC,EAAER,aAAe,CAAA,CAAA;AAE1EJ,QAAAA,SAAAA,CAAU2E,GAAG,CAAC;YAAEC,eAAiB,EAAA;AAAE,gBAAA,CAACF,eAAe;oBAAEG,IAAM,EAAA;wBAAEC,KAAO,EAAA;AAACL,4BAAAA;AAAc;AAAC;AAAE;AAAE;AAAE,SAAA,CAAA;AAE1F,QAAA,IAAIV,gBAAkB,EAAA;AACpB5D,YAAAA,OAAAA,CAAQO,KAAK,CAAC,CAAA,EAAGN,aAAc,CAAA,WAAW,CAAC,EAAE;gBAC3CK,IAAMK,EAAAA,MAAAA,CAAOyC,iCAAiC,CAACiB,iBAAAA,CAAAA;AAC/C/C,gBAAAA,OAAAA;AACAG,gBAAAA;AACF,aAAA,CAAA;AAEA5B,YAAAA,SAAAA,CAAU2E,GAAG,CAAC;gBACZC,eAAiB,EAAA;AAAE,oBAAA,CAAC,CAAGF,EAAAA,YAAAA,CAAa,WAAW,CAAC,GAAG;wBAAEG,IAAM,EAAA;4BAAEC,KAAO,EAAA;AAACL,gCAAAA;AAAc;AAAC;AAAE;AAAE;AAC1F,aAAA,CAAA;YAEAtE,OAAQO,CAAAA,KAAK,CAACN,aAAe,EAAA;AAC3BK,gBAAAA,IAAAA,EAAM+C,QAAQnC,IAAKgC,CAAAA,QAAAA,CAAAA,CAAAA;gBACnB,MAAM5B,OAAAA,CAAAA,CAAQ,GAAGG,IAAe,EAAA;oBAC9B,MAAM6B,GAAAA,GAAM,MAAMhC,OAAWG,CAAAA,GAAAA,IAAAA,CAAAA;oBAC7B,OAAO6B,GAAAA,CAAIC,KAAK,IAAI,EAAE;AACxB,iBAAA;AACA9B,gBAAAA;AACF,aAAA,CAAA;SACK,MAAA;YACLzB,OAAQO,CAAAA,KAAK,CAACN,aAAe,EAAA;gBAC3BK,IAAM4C,EAAAA,QAAAA;gBACN,MAAM5B,OAAAA,CAAAA,CAAQ,GAAGG,IAAe,EAAA;oBAC9B,MAAM6B,GAAAA,GAAM,MAAMhC,OAAWG,CAAAA,GAAAA,IAAAA,CAAAA;AAC7B,oBAAA,OAAO6B,IAAIE,KAAK;AAClB,iBAAA;AACA/B,gBAAAA;AACF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,MAAMmD,YAAAA,GAAe,CAACnE,WAAAA,GAA+B,CAACR,aAAAA,GAAAA;AACpD,YAAA,OAAO,CAAC+C,YAAAA,CAAa6B,kBAAkB,CAACpE,WAAaR,EAAAA,aAAAA,CAAAA;AACvD,SAAA;IAEA,MAAM6E,aAAAA,GAAgB,CAACrE,WAAAA,GAA+B,CAACR,aAAAA,GAAAA;YACrD,OAAOJ,SAAAA,CAAUgD,UAAU,CAACpC,WAAAA,CAAYe,GAAG,CAAEjB,CAAAA,KAAK,CAACN,aAAAA,CAAAA,CAAe8E,gBAAgB,EAAA;AACpF,SAAA;IAEA,OAAO;AACL;;;;AAIC,QACDC,qBAAoBvE,WAA0B,EAAA;AAC5C,YAAA,MAAMI,QAAQnB,iBAAkB,CAAA,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,MAAOC,CAAAA,IAAI,CAAC5D,UAAAA,CAAAA;YAElC,MAAM6D,IAAAA,GAAO,CAACJ,SAAc,KAAA,WAAA,GAAcR,mBAAmB9B,WAAU,EAAG2C,IAAI,CAC5E,IACArF,EAAAA,WAAAA,CAAAA;AAGF,YAAA,OAAOsF,UAAW,CAAA;AAChBF,gBAAAA,IAAAA;AACAG,gBAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;;AAEV,oBAAA,IACER,SAAc,KAAA,WAAA,IACdX,aAAcrE,CAAAA,WAAAA,CAAAA,CAAa,IAC3BhB,CAAAA,IAAAA,MAAAA,CAAOE,MAAM,CAAC,SAAWuG,CAAAA,CAAAA,MAAM,CAAC,qBAAA,EAAuB,KACvD,CAAA,EAAA;AACAD,wBAAAA,CAAAA,CAAE5C,OAAO,CAAC8C,EAAE,CAAC,IAAM,EAAA;4BACjBC,WAAa,EAAA;AACf,yBAAA,CAAA;AACF;AAEA,oBAAA,IAAIX,SAAc,KAAA,WAAA,IAAeX,aAAcrE,CAAAA,WAAAA,CAAAA,CAAa,IAAO,CAAA,EAAA;wBACjEwF,CAAE5C,CAAAA,OAAO,CAAC8C,EAAE,CAAC,IAAA,CAAA;AACf;AAEA,oBAAA,IAAIV,SAAc,KAAA,WAAA,IAAeX,aAAcrE,CAAAA,WAAAA,CAAAA,CAAa,YAAe,CAAA,EAAA;wBACzEwF,CAAE5C,CAAAA,OAAO,CAAC8C,EAAE,CAAC,YAAA,CAAA;AACf;AAEA,oBAAA,IAAI1G,OAAOE,MAAM,CAAC,WAAWuG,MAAM,CAAC,uBAAuB,KAAQ,CAAA,EAAA;AACjED,wBAAAA,CAAAA,CAAE5C,OAAO,CAAC9C,KAAK,CAAC,YAAc,EAAA;4BAC5B6F,WAAa,EAAA,+BAAA;4BACb9F,IAAMuF,EAAAA,IAAAA;AACNvE,4BAAAA,OAAAA,EAAS,CAAC+E,MAAWA,GAAAA;AACvB,yBAAA,CAAA;AAEAJ,wBAAAA,CAAAA,CAAE5C,OAAO,CAAC9C,KAAK,CAAC,MAAQ,EAAA;4BACtB6F,WAAa,EAAA,+BAAA;4BACb9F,IAAMuF,EAAAA,IAAAA;AACNvE,4BAAAA,OAAAA,EAAS,CAAC+E,MAAWA,GAAAA;AACvB,yBAAA,CAAA;AACF;AAEA;;;;;;;;;;;;;AAaC,cACDX,aACE;qBACCY,MAAM,CAAC1B,YAAanE,CAAAA,WAAAA,CAAAA,CACrB;qBACC6F,MAAM,CAACxB,aAAcrE,CAAAA,WAAAA,CAAAA,CACtB;AACC8F,qBAAAA,OAAO,CAAC,CAACtG,aAAAA,GAAAA;wBACR,MAAMC,SAAAA,GAAY8B,UAAU,CAAC/B,aAAc,CAAA;;;AAI3C,wBAAA,IAAID,OAAeiG,GAAAA,CAAAA;wBAEnB,IAAI/F,SAAAA,CAAUsG,QAAQ,EAAE;AACtBxG,4BAAAA,OAAAA,GAAUA,QAAQqD,OAAO;AAC3B;AAEA,wBAAA,MAAMtD,OAA+B,GAAA;AACnCC,4BAAAA,OAAAA;AACAC,4BAAAA,aAAAA;AACAC,4BAAAA,SAAAA;AACAO,4BAAAA,WAAAA;AACAjB,4BAAAA;AACF,yBAAA;;AAGA,wBAAA,IAAI6F,cAAcnF,SAAY,CAAA,EAAA;4BAC5BsC,gBAAiBzC,CAAAA,OAAAA,CAAAA;yBAId,MAAA,IAAImF,eAAehF,SAAY,CAAA,EAAA;4BAClCJ,kBAAmBC,CAAAA,OAAAA,CAAAA;yBAIhB,MAAA,IAAIoF,YAAYjF,SAAY,CAAA,EAAA;4BAC/BM,qBAAsBT,CAAAA,OAAAA,CAAAA;yBAInB,MAAA,IAAIqF,cAAclF,SAAY,CAAA,EAAA;4BACjC0B,uBAAwB7B,CAAAA,OAAAA,CAAAA;yBAIrB,MAAA,IAAIuF,QAAQpF,SAAY,CAAA,EAAA;4BAC3BwC,iBAAkB3C,CAAAA,OAAAA,CAAAA;yBAIf,MAAA,IAAIwF,gBAAgBrF,SAAY,CAAA,EAAA;4BACnCuD,iCAAkC1D,CAAAA,OAAAA,CAAAA;yBAI/B,MAAA,IAAIyF,WAAWtF,SAAY,CAAA,EAAA;4BAC9BkE,6BAA8BrE,CAAAA,OAAAA,CAAAA;AAChC;AACF,qBAAA,CAAA;AACJ;AACF,aAAA,CAAA;AACF;AACF,KAAA;AACF,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"type.mjs","sources":["../../../../server/src/services/builders/type.ts"],"sourcesContent":["import { isArray, isString, isUndefined, constant } from 'lodash/fp';\nimport { nonNull, list, objectType } from 'nexus';\nimport { contentTypes } from '@strapi/utils';\nimport type { Struct } from '@strapi/types';\n\nimport type { Context } from '../types';\n\nexport type TypeBuildersOptions = {\n builder: any;\n attributeName: string;\n attribute: any;\n contentType: any;\n context: Context;\n};\n\nexport default (context: Context) => {\n const { strapi } = context;\n const getGraphQLService = strapi.plugin('graphql').service;\n\n const extension = getGraphQLService('extension');\n\n /**\n * Add a scalar attribute to the type definition\n *\n * The attribute is added based on a simple association between a Strapi\n * type and a GraphQL type (the map is defined in `strapiTypeToGraphQLScalar`)\n */\n const addScalarAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, attribute } = options;\n\n const { mappers } = getGraphQLService('utils');\n\n const gqlType = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n builder.field(attributeName, { type: gqlType });\n };\n\n /**\n * Add a component attribute to the type definition\n *\n * The attribute is added by fetching the component's type\n * name and using it as the attribute's type\n */\n const addComponentAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType, attribute } = options;\n\n let localBuilder = builder;\n\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildComponentResolver } = getGraphQLService('builders').get('content-api');\n\n const type = naming.getComponentNameFromAttribute(attribute);\n\n if (attribute.repeatable) {\n localBuilder = localBuilder.list;\n }\n\n const targetComponent = strapi.getModel(attribute.component);\n\n const resolve = buildComponentResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = getContentTypeArgs(targetComponent, {\n multiple: !!attribute.repeatable,\n isNested: true,\n });\n\n localBuilder.field(attributeName, { type, resolve, args });\n };\n\n /**\n * Add a dynamic zone attribute to the type definition\n *\n * The attribute is added by fetching the dynamic zone's\n * type name and using it as the attribute's type\n */\n const addDynamicZoneAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n const { ERROR_CODES } = getGraphQLService('constants');\n const { buildDynamicZoneResolver } = getGraphQLService('builders').get('content-api');\n\n const { components } = contentType.attributes[attributeName];\n\n const isEmpty = components.length === 0;\n const type = naming.getDynamicZoneName(contentType, attributeName);\n\n const resolve = isEmpty\n ? // If the dynamic zone don't have any component, then return an error payload\n constant({\n code: ERROR_CODES.emptyDynamicZone,\n message: `This dynamic zone don't have any component attached to it`,\n })\n : // Else, return a classic dynamic-zone resolver\n buildDynamicZoneResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n });\n\n builder.list.field(attributeName, { type, resolve });\n };\n\n /**\n * Add an enum attribute to the type definition\n *\n * The attribute is added by fetching the enum's type\n * name and using it as the attribute's type\n */\n const addEnumAttribute = (options: TypeBuildersOptions) => {\n const { builder, attributeName, contentType } = options;\n\n const { naming } = getGraphQLService('utils');\n\n const type = naming.getEnumName(contentType, attributeName);\n\n builder.field(attributeName, { type });\n };\n\n /**\n * Add a media attribute to the type definition\n */\n const addMediaAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n const fileUID = 'plugin::upload.file';\n\n if (extension.shadowCRUD(fileUID).isDisabled()) {\n return;\n }\n\n const fileContentType = strapi.contentTypes[fileUID];\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const args = attribute.multiple\n ? getContentTypeArgs(fileContentType, { isNested: true })\n : undefined;\n\n const typeName = naming.getTypeName(fileContentType);\n\n if (attribute.multiple) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(fileContentType),\n resolve,\n args,\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n /**\n * Add a polymorphic relational attribute to the type definition\n */\n const addPolymorphicRelationalAttribute = (options: TypeBuildersOptions) => {\n const { GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const { naming } = getGraphQLService('utils');\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n\n let { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n const { target } = attribute;\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n if (isToManyRelation) {\n builder = builder.list;\n }\n // todo[v4]: How to handle polymorphic relation w/ entity response collection types?\n // -> Currently return raw polymorphic entities\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n // If there is no specific target specified, then use the GenericMorph type\n if (isUndefined(target)) {\n builder.field(attributeName, {\n type: GENERIC_MORPH_TYPENAME,\n resolve,\n });\n }\n\n // If the target is an array of string, resolve the associated morph type and use it\n else if (isArray(target) && target.every(isString)) {\n const type = naming.getMorphRelationTypeName(contentType, attributeName);\n\n builder.field(attributeName, { type, resolve });\n }\n };\n\n /**\n * Add a regular relational attribute to the type definition\n */\n const addRegularRelationalAttribute = (options: TypeBuildersOptions) => {\n const { naming } = getGraphQLService('utils');\n const { getContentTypeArgs } = getGraphQLService('builders').utils;\n const { buildAssociationResolver } = getGraphQLService('builders').get('content-api');\n const extension = getGraphQLService('extension');\n\n const { builder } = options;\n const { attributeName, attribute, contentType } = options;\n\n if (extension.shadowCRUD(attribute.target).isDisabled()) {\n return;\n }\n\n const isToManyRelation = attribute.relation.endsWith('Many');\n\n const resolve = buildAssociationResolver({\n contentTypeUID: contentType.uid,\n attributeName,\n strapi,\n });\n\n const targetContentType = strapi.getModel(attribute.target);\n\n const typeName = naming.getTypeName(targetContentType);\n\n const args = isToManyRelation\n ? getContentTypeArgs(targetContentType, { isNested: true })\n : undefined;\n\n const resolverScope = `${targetContentType.uid}.find`;\n const resolverPath = `${naming.getTypeName(contentType)}.${attributeName}`;\n\n extension.use({ resolversConfig: { [resolverPath]: { auth: { scope: [resolverScope] } } } });\n\n if (isToManyRelation) {\n builder.field(`${attributeName}_connection`, {\n type: naming.getRelationResponseCollectionName(targetContentType),\n resolve,\n args,\n });\n\n extension.use({\n resolversConfig: { [`${resolverPath}_connection`]: { auth: { scope: [resolverScope] } } },\n });\n\n builder.field(attributeName, {\n type: nonNull(list(typeName)),\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.nodes ?? [];\n },\n args,\n });\n } else {\n builder.field(attributeName, {\n type: typeName,\n async resolve(...args: unknown[]) {\n const res = await resolve(...args);\n return res.value;\n },\n args,\n });\n }\n };\n\n const isNotPrivate = (contentType: Struct.Schema) => (attributeName: string) => {\n return !contentTypes.isPrivateAttribute(contentType, attributeName);\n };\n\n const isNotDisabled = (contentType: Struct.Schema) => (attributeName: string) => {\n return extension.shadowCRUD(contentType.uid).field(attributeName).hasOutputEnabled();\n };\n\n return {\n /**\n * Create a type definition for a given content type\n * @param contentType - The content type used to created the definition\n * @return {NexusObjectTypeDef}\n */\n buildTypeDefinition(contentType: Struct.Schema) {\n const utils = getGraphQLService('utils');\n\n const { getComponentName, getTypeName } = utils.naming;\n const {\n isStrapiScalar,\n isComponent,\n isDynamicZone,\n isEnumeration,\n isMedia,\n isMorphRelation,\n isRelation,\n } = utils.attributes;\n\n const { attributes, modelType } = contentType;\n\n const attributesKey = Object.keys(attributes);\n\n const name = (modelType === 'component' ? getComponentName : getTypeName).call(\n null,\n contentType\n );\n\n return objectType({\n name,\n definition(t) {\n // add back the old id attribute on contentType if v4 compat is enabled\n if (\n modelType !== 'component' &&\n isNotDisabled(contentType)('id') &&\n strapi.plugin('graphql').config('v4CompatibilityMode', false)\n ) {\n t.nonNull.id('id', {\n deprecation: 'Use `documentId` instead',\n });\n }\n\n if (modelType === 'component' && isNotDisabled(contentType)('id')) {\n t.nonNull.id('id');\n }\n\n if (modelType !== 'component' && isNotDisabled(contentType)('documentId')) {\n t.nonNull.id('documentId');\n }\n\n if (strapi.plugin('graphql').config('v4CompatibilityMode', false)) {\n t.nonNull.field('attributes', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n\n t.nonNull.field('data', {\n deprecation: 'Use root level fields instead',\n type: name,\n resolve: (parent) => parent,\n });\n }\n\n /** Attributes\n *\n * Attributes can be of 7 different kind:\n * - Scalar\n * - Component\n * - Dynamic Zone\n * - Enum\n * - Media\n * - Polymorphic Relations\n * - Regular Relations\n *\n * Here, we iterate over each non-private attribute\n * and add it to the type definition based on its type\n */\n attributesKey\n // Ignore private attributes\n .filter(isNotPrivate(contentType))\n // Ignore disabled fields (from extension service)\n .filter(isNotDisabled(contentType))\n // Add each attribute to the type definition\n .forEach((attributeName) => {\n const attribute = attributes[attributeName];\n\n // We create a copy of the builder (t) to apply custom\n // rules only on the current attribute (eg: nonNull, list, ...)\n let builder: any = t;\n\n if (attribute.required) {\n builder = builder.nonNull;\n }\n\n const options: TypeBuildersOptions = {\n builder,\n attributeName,\n attribute,\n contentType,\n context,\n };\n\n // Enums\n if (isEnumeration(attribute)) {\n addEnumAttribute(options);\n }\n\n // Scalars\n else if (isStrapiScalar(attribute)) {\n addScalarAttribute(options);\n }\n\n // Components\n else if (isComponent(attribute)) {\n addComponentAttribute(options);\n }\n\n // Dynamic Zones\n else if (isDynamicZone(attribute)) {\n addDynamicZoneAttribute(options);\n }\n\n // Media\n else if (isMedia(attribute)) {\n addMediaAttribute(options);\n }\n\n // Polymorphic Relations\n else if (isMorphRelation(attribute)) {\n addPolymorphicRelationalAttribute(options);\n }\n\n // Regular Relations\n else if (isRelation(attribute)) {\n addRegularRelationalAttribute(options);\n }\n });\n },\n });\n },\n };\n};\n"],"names":["context","strapi","getGraphQLService","plugin","service","extension","addScalarAttribute","options","builder","attributeName","attribute","mappers","gqlType","strapiScalarToGraphQLScalar","type","field","addComponentAttribute","contentType","localBuilder","naming","getContentTypeArgs","utils","buildComponentResolver","get","getComponentNameFromAttribute","repeatable","list","targetComponent","getModel","component","resolve","contentTypeUID","uid","args","multiple","isNested","addDynamicZoneAttribute","ERROR_CODES","buildDynamicZoneResolver","components","attributes","isEmpty","length","getDynamicZoneName","constant","code","emptyDynamicZone","message","addEnumAttribute","getEnumName","addMediaAttribute","buildAssociationResolver","fileUID","shadowCRUD","isDisabled","fileContentType","contentTypes","undefined","typeName","getTypeName","getRelationResponseCollectionName","nonNull","res","nodes","value","addPolymorphicRelationalAttribute","GENERIC_MORPH_TYPENAME","target","isToManyRelation","relation","endsWith","isUndefined","isArray","every","isString","getMorphRelationTypeName","addRegularRelationalAttribute","targetContentType","resolverScope","resolverPath","use","resolversConfig","auth","scope","isNotPrivate","isPrivateAttribute","isNotDisabled","hasOutputEnabled","buildTypeDefinition","getComponentName","isStrapiScalar","isComponent","isDynamicZone","isEnumeration","isMedia","isMorphRelation","isRelation","modelType","attributesKey","Object","keys","name","call","objectType","definition","t","config","id","deprecation","parent","filter","forEach","required"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { entries, mapValues, omit } from 'lodash/fp';\nimport { idArg, nonNull } from 'nexus';\nimport { contentTypes, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n const params: Record<string, unknown> = {\n documentId: nonNull(idArg()),\n };\n\n if (hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n const params = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params = {};\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = entries(attributes).filter(\n ([, attribute]) => isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique\n );\n\n return Object.fromEntries(uniqueAttributes);\n },\n\n /**\n * Map each value from an attribute to a FiltersInput type name\n * @param {object} attributes - The attributes object to transform\n * @return {Object<string, string>}\n */\n scalarAttributesToFiltersMap(attributes: Struct.SchemaAttributes) {\n return mapValues((attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n }, attributes);\n },\n\n /**\n * Apply basic transform to GQL args\n */\n transformArgs(\n args: any,\n {\n contentType,\n usePagination = false,\n }: { contentType: Struct.ContentTypeSchema; usePagination?: boolean }\n ) {\n const { mappers } = getService('utils');\n const { config } = strapi.plugin('graphql');\n const { pagination = {}, filters = {} } = args;\n\n // Init\n const newArgs = omit(['pagination', 'filters'], args);\n\n // Pagination\n if (usePagination) {\n const defaultLimit: number = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","hasDraftAndPublish","contentTypes","params","documentId","nonNull","idArg","Object","assign","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery"],"mappings":";;;;;;AAKA,MAAM,EAAEA,qBAAqB,EAAE,GAAGC,kBAAAA;AAOlC,YAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;AACjD,IAAA,MAAM,EAAEC,
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { entries, mapValues, omit } from 'lodash/fp';\nimport { idArg, nonNull } from 'nexus';\nimport { contentTypes, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n const params: Record<string, unknown> = {\n documentId: nonNull(idArg()),\n };\n\n if (hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n const params = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params = {};\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = entries(attributes).filter(\n ([, attribute]) => isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique\n );\n\n return Object.fromEntries(uniqueAttributes);\n },\n\n /**\n * Map each value from an attribute to a FiltersInput type name\n * @param {object} attributes - The attributes object to transform\n * @return {Object<string, string>}\n */\n scalarAttributesToFiltersMap(attributes: Struct.SchemaAttributes) {\n return mapValues((attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n }, attributes);\n },\n\n /**\n * Apply basic transform to GQL args\n */\n transformArgs(\n args: any,\n {\n contentType,\n usePagination = false,\n }: { contentType: Struct.ContentTypeSchema; usePagination?: boolean }\n ) {\n const { mappers } = getService('utils');\n const { config } = strapi.plugin('graphql');\n const { pagination = {}, filters = {} } = args;\n\n // Init\n const newArgs = omit(['pagination', 'filters'], args);\n\n // Pagination\n if (usePagination) {\n const defaultLimit: number = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","hasDraftAndPublish","contentTypes","params","documentId","nonNull","idArg","Object","assign","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { omit, mapValues, entries } from 'lodash/fp';
|
|
2
2
|
import { nonNull, idArg } from 'nexus';
|
|
3
|
-
import {
|
|
3
|
+
import { pagination, contentTypes } from '@strapi/utils';
|
|
4
4
|
|
|
5
5
|
const { withDefaultPagination } = pagination;
|
|
6
6
|
var utils = (({ strapi })=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { entries, mapValues, omit } from 'lodash/fp';\nimport { idArg, nonNull } from 'nexus';\nimport { contentTypes, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n const params: Record<string, unknown> = {\n documentId: nonNull(idArg()),\n };\n\n if (hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n const params = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params = {};\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = entries(attributes).filter(\n ([, attribute]) => isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique\n );\n\n return Object.fromEntries(uniqueAttributes);\n },\n\n /**\n * Map each value from an attribute to a FiltersInput type name\n * @param {object} attributes - The attributes object to transform\n * @return {Object<string, string>}\n */\n scalarAttributesToFiltersMap(attributes: Struct.SchemaAttributes) {\n return mapValues((attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n }, attributes);\n },\n\n /**\n * Apply basic transform to GQL args\n */\n transformArgs(\n args: any,\n {\n contentType,\n usePagination = false,\n }: { contentType: Struct.ContentTypeSchema; usePagination?: boolean }\n ) {\n const { mappers } = getService('utils');\n const { config } = strapi.plugin('graphql');\n const { pagination = {}, filters = {} } = args;\n\n // Init\n const newArgs = omit(['pagination', 'filters'], args);\n\n // Pagination\n if (usePagination) {\n const defaultLimit: number = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","hasDraftAndPublish","contentTypes","params","documentId","nonNull","idArg","Object","assign","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery"],"mappings":";;;;AAKA,MAAM,EAAEA,qBAAqB,EAAE,GAAGC,UAAAA;AAOlC,YAAe,CAAA,CAAC,EAAEC,MAAM,EAA2B,GAAA;AACjD,IAAA,MAAM,EAAEC,
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../../server/src/services/builders/utils.ts"],"sourcesContent":["import { entries, mapValues, omit } from 'lodash/fp';\nimport { idArg, nonNull } from 'nexus';\nimport { contentTypes, pagination } from '@strapi/utils';\nimport type { Core, Struct } from '@strapi/types';\n\nconst { withDefaultPagination } = pagination;\n\ntype ContentTypeArgsOptions = {\n multiple?: boolean;\n isNested?: boolean;\n};\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getService } = strapi.plugin('graphql');\n\n return {\n getContentTypeArgs(\n contentType: Struct.Schema,\n { multiple = true, isNested = false }: ContentTypeArgsOptions = {}\n ) {\n const { naming } = getService('utils');\n const { args } = getService('internals');\n\n const { modelType } = contentType;\n\n // Components\n if (modelType === 'component') {\n if (!multiple) return {};\n\n return {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n }\n\n const { kind } = contentType;\n\n const hasDraftAndPublish = contentTypes.hasDraftAndPublish(contentType);\n\n // Collection Types\n if (kind === 'collectionType') {\n if (!multiple) {\n const params: Record<string, unknown> = {\n documentId: nonNull(idArg()),\n };\n\n if (hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n const params = {\n filters: naming.getFiltersInputTypeName(contentType),\n pagination: args.PaginationArg,\n sort: args.SortArg,\n };\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n\n // Single Types\n if (kind === 'singleType') {\n const params = {};\n\n if (!isNested && hasDraftAndPublish) {\n Object.assign(params, {\n status: args.PublicationStatusArg,\n hasPublishedVersion: args.HasPublishedVersionArg,\n });\n }\n\n return params;\n }\n },\n\n /**\n * Filter an object entries and keep only those whose value is a unique scalar attribute\n */\n getUniqueScalarAttributes(attributes: Struct.SchemaAttributes) {\n const { isStrapiScalar } = getService('utils').attributes;\n\n const uniqueAttributes = entries(attributes).filter(\n ([, attribute]) => isStrapiScalar(attribute) && 'unique' in attribute && attribute.unique\n );\n\n return Object.fromEntries(uniqueAttributes);\n },\n\n /**\n * Map each value from an attribute to a FiltersInput type name\n * @param {object} attributes - The attributes object to transform\n * @return {Object<string, string>}\n */\n scalarAttributesToFiltersMap(attributes: Struct.SchemaAttributes) {\n return mapValues((attribute) => {\n const { mappers, naming } = getService('utils');\n\n const gqlScalar = mappers.strapiScalarToGraphQLScalar(attribute.type);\n\n return naming.getScalarFilterInputTypeName(gqlScalar);\n }, attributes);\n },\n\n /**\n * Apply basic transform to GQL args\n */\n transformArgs(\n args: any,\n {\n contentType,\n usePagination = false,\n }: { contentType: Struct.ContentTypeSchema; usePagination?: boolean }\n ) {\n const { mappers } = getService('utils');\n const { config } = strapi.plugin('graphql');\n const { pagination = {}, filters = {} } = args;\n\n // Init\n const newArgs = omit(['pagination', 'filters'], args);\n\n // Pagination\n if (usePagination) {\n const defaultLimit: number = config('defaultLimit');\n const maxLimit: number = config('maxLimit');\n\n Object.assign(\n newArgs,\n withDefaultPagination(pagination, {\n maxLimit,\n defaults: {\n offset: { limit: defaultLimit },\n page: { pageSize: defaultLimit },\n },\n })\n );\n }\n\n // Filters\n if (args.filters) {\n Object.assign(newArgs, {\n filters: mappers.graphQLFiltersToStrapiQuery(filters, contentType),\n });\n }\n\n return newArgs;\n },\n };\n};\n"],"names":["withDefaultPagination","pagination","strapi","service","getService","plugin","getContentTypeArgs","contentType","multiple","isNested","naming","args","modelType","filters","getFiltersInputTypeName","PaginationArg","sort","SortArg","kind","hasDraftAndPublish","contentTypes","params","documentId","nonNull","idArg","Object","assign","status","PublicationStatusArg","hasPublishedVersion","HasPublishedVersionArg","getUniqueScalarAttributes","attributes","isStrapiScalar","uniqueAttributes","entries","filter","attribute","unique","fromEntries","scalarAttributesToFiltersMap","mapValues","mappers","gqlScalar","strapiScalarToGraphQLScalar","type","getScalarFilterInputTypeName","transformArgs","usePagination","config","newArgs","omit","defaultLimit","maxLimit","defaults","offset","limit","page","pageSize","graphQLFiltersToStrapiQuery"],"mappings":"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"}
|