@strapi/plugin-graphql 4.15.5 → 4.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/admin/src/index.d.ts +16 -0
- package/dist/admin/admin/src/pluginId.d.ts +1 -0
- package/dist/admin/index.js +31 -17
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +31 -17
- package/dist/admin/index.mjs.map +1 -1
- package/dist/server/bootstrap.d.ts +5 -0
- package/dist/server/bootstrap.d.ts.map +1 -0
- package/dist/server/config/default-config.d.ts +9 -0
- package/dist/server/config/default-config.d.ts.map +1 -0
- package/dist/server/config/index.d.ts +10 -0
- package/dist/server/config/index.d.ts.map +1 -0
- package/dist/server/format-graphql-error.d.ts +4 -0
- package/dist/server/format-graphql-error.d.ts.map +1 -0
- package/dist/server/index.d.ts +301 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +2970 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +2949 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/services/builders/dynamic-zones.d.ts +14 -0
- package/dist/server/services/builders/dynamic-zones.d.ts.map +1 -0
- package/dist/server/services/builders/entity-meta.d.ts +6 -0
- package/dist/server/services/builders/entity-meta.d.ts.map +1 -0
- package/dist/server/services/builders/entity.d.ts +12 -0
- package/dist/server/services/builders/entity.d.ts.map +1 -0
- package/dist/server/services/builders/enums.d.ts +8 -0
- package/dist/server/services/builders/enums.d.ts.map +1 -0
- package/dist/server/services/builders/filters/content-type.d.ts +8 -0
- package/dist/server/services/builders/filters/content-type.d.ts.map +1 -0
- package/dist/server/services/builders/filters/index.d.ts +6 -0
- package/dist/server/services/builders/filters/index.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/and.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/and.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/between.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/between.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/contains.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/contains.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/containsi.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/containsi.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/ends-with.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/ends-with.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/eq.d.ts +11 -0
- package/dist/server/services/builders/filters/operators/eq.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/eqi.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/eqi.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/gt.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/gt.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/gte.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/gte.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/in.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/in.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/index.d.ts +11 -0
- package/dist/server/services/builders/filters/operators/index.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/lt.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/lt.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/lte.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/lte.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/ne.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/ne.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/nei.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/nei.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/not-contains.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/not-contains.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/not-containsi.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/not-containsi.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/not-in.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/not-in.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/not-null.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/not-null.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/not.d.ts +11 -0
- package/dist/server/services/builders/filters/operators/not.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/null.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/null.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/or.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/or.d.ts.map +1 -0
- package/dist/server/services/builders/filters/operators/starts-with.d.ts +8 -0
- package/dist/server/services/builders/filters/operators/starts-with.d.ts.map +1 -0
- package/dist/server/services/builders/generic-morph.d.ts +6 -0
- package/dist/server/services/builders/generic-morph.d.ts.map +1 -0
- package/dist/server/services/builders/index.d.ts +58 -0
- package/dist/server/services/builders/index.d.ts.map +1 -0
- package/dist/server/services/builders/input.d.ts +7 -0
- package/dist/server/services/builders/input.d.ts.map +1 -0
- package/dist/server/services/builders/mutations/collection-type.d.ts +8 -0
- package/dist/server/services/builders/mutations/collection-type.d.ts.map +1 -0
- package/dist/server/services/builders/mutations/index.d.ts +7 -0
- package/dist/server/services/builders/mutations/index.d.ts.map +1 -0
- package/dist/server/services/builders/mutations/single-type.d.ts +8 -0
- package/dist/server/services/builders/mutations/single-type.d.ts.map +1 -0
- package/dist/server/services/builders/queries/collection-type.d.ts +8 -0
- package/dist/server/services/builders/queries/collection-type.d.ts.map +1 -0
- package/dist/server/services/builders/queries/index.d.ts +7 -0
- package/dist/server/services/builders/queries/index.d.ts.map +1 -0
- package/dist/server/services/builders/queries/single-type.d.ts +8 -0
- package/dist/server/services/builders/queries/single-type.d.ts.map +1 -0
- package/dist/server/services/builders/relation-response-collection.d.ts +10 -0
- package/dist/server/services/builders/relation-response-collection.d.ts.map +1 -0
- package/dist/server/services/builders/resolvers/association.d.ts +10 -0
- package/dist/server/services/builders/resolvers/association.d.ts.map +1 -0
- package/dist/server/services/builders/resolvers/component.d.ts +10 -0
- package/dist/server/services/builders/resolvers/component.d.ts.map +1 -0
- package/dist/server/services/builders/resolvers/dynamic-zone.d.ts +10 -0
- package/dist/server/services/builders/resolvers/dynamic-zone.d.ts.map +1 -0
- package/dist/server/services/builders/resolvers/index.d.ts +30 -0
- package/dist/server/services/builders/resolvers/index.d.ts.map +1 -0
- package/dist/server/services/builders/resolvers/mutation.d.ts +13 -0
- package/dist/server/services/builders/resolvers/mutation.d.ts.map +1 -0
- package/dist/server/services/builders/resolvers/query.d.ts +12 -0
- package/dist/server/services/builders/resolvers/query.d.ts.map +1 -0
- package/dist/server/services/builders/response-collection.d.ts +12 -0
- package/dist/server/services/builders/response-collection.d.ts.map +1 -0
- package/dist/server/services/builders/response.d.ts +10 -0
- package/dist/server/services/builders/response.d.ts.map +1 -0
- package/dist/server/services/builders/type.d.ts +19 -0
- package/dist/server/services/builders/type.d.ts.map +1 -0
- package/dist/server/services/builders/utils.d.ts +52 -0
- package/dist/server/services/builders/utils.d.ts.map +1 -0
- package/dist/server/services/constants.d.ts +128 -0
- package/dist/server/services/constants.d.ts.map +1 -0
- package/dist/server/services/content-api/index.d.ts +8 -0
- package/dist/server/services/content-api/index.d.ts.map +1 -0
- package/dist/server/services/content-api/policy.d.ts +7 -0
- package/dist/server/services/content-api/policy.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/collection-type.d.ts +9 -0
- package/dist/server/services/content-api/register-functions/collection-type.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/component.d.ts +9 -0
- package/dist/server/services/content-api/register-functions/component.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/content-type/dynamic-zones.d.ts +9 -0
- package/dist/server/services/content-api/register-functions/content-type/dynamic-zones.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/content-type/enums.d.ts +9 -0
- package/dist/server/services/content-api/register-functions/content-type/enums.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/content-type/filters.d.ts +9 -0
- package/dist/server/services/content-api/register-functions/content-type/filters.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/content-type/index.d.ts +24 -0
- package/dist/server/services/content-api/register-functions/content-type/index.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/content-type/inputs.d.ts +9 -0
- package/dist/server/services/content-api/register-functions/content-type/inputs.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/index.d.ts +9 -0
- package/dist/server/services/content-api/register-functions/index.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/internals.d.ts +4 -0
- package/dist/server/services/content-api/register-functions/internals.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/polymorphic.d.ts +5 -0
- package/dist/server/services/content-api/register-functions/polymorphic.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/scalars.d.ts +4 -0
- package/dist/server/services/content-api/register-functions/scalars.d.ts.map +1 -0
- package/dist/server/services/content-api/register-functions/single-type.d.ts +9 -0
- package/dist/server/services/content-api/register-functions/single-type.d.ts.map +1 -0
- package/dist/server/services/content-api/wrap-resolvers.d.ts +18 -0
- package/dist/server/services/content-api/wrap-resolvers.d.ts.map +1 -0
- package/dist/server/services/extension/extension.d.ts +63 -0
- package/dist/server/services/extension/extension.d.ts.map +1 -0
- package/dist/server/services/extension/index.d.ts +3 -0
- package/dist/server/services/extension/index.d.ts.map +1 -0
- package/dist/server/services/extension/shadow-crud-manager.d.ts +40 -0
- package/dist/server/services/extension/shadow-crud-manager.d.ts.map +1 -0
- package/dist/server/services/format/index.d.ts +20 -0
- package/dist/server/services/format/index.d.ts.map +1 -0
- package/dist/server/services/format/return-types.d.ts +22 -0
- package/dist/server/services/format/return-types.d.ts.map +1 -0
- package/dist/server/services/index.d.ts +287 -0
- package/dist/server/services/index.d.ts.map +1 -0
- package/dist/server/services/internals/args/index.d.ts +8 -0
- package/dist/server/services/internals/args/index.d.ts.map +1 -0
- package/dist/server/services/internals/args/pagination.d.ts +3 -0
- package/dist/server/services/internals/args/pagination.d.ts.map +1 -0
- package/dist/server/services/internals/args/publication-state.d.ts +4 -0
- package/dist/server/services/internals/args/publication-state.d.ts.map +1 -0
- package/dist/server/services/internals/args/sort.d.ts +3 -0
- package/dist/server/services/internals/args/sort.d.ts.map +1 -0
- package/dist/server/services/internals/helpers/get-enabled-scalars.d.ts +4 -0
- package/dist/server/services/internals/helpers/get-enabled-scalars.d.ts.map +1 -0
- package/dist/server/services/internals/helpers/index.d.ts +6 -0
- package/dist/server/services/internals/helpers/index.d.ts.map +1 -0
- package/dist/server/services/internals/index.d.ts +46 -0
- package/dist/server/services/internals/index.d.ts.map +1 -0
- package/dist/server/services/internals/scalars/date.d.ts +3 -0
- package/dist/server/services/internals/scalars/date.d.ts.map +1 -0
- package/dist/server/services/internals/scalars/index.d.ts +10 -0
- package/dist/server/services/internals/scalars/index.d.ts.map +1 -0
- package/dist/server/services/internals/scalars/time.d.ts +8 -0
- package/dist/server/services/internals/scalars/time.d.ts.map +1 -0
- package/dist/server/services/internals/types/error.d.ts +8 -0
- package/dist/server/services/internals/types/error.d.ts.map +1 -0
- package/dist/server/services/internals/types/filters.d.ts +6 -0
- package/dist/server/services/internals/types/filters.d.ts.map +1 -0
- package/dist/server/services/internals/types/index.d.ts +28 -0
- package/dist/server/services/internals/types/index.d.ts.map +1 -0
- package/dist/server/services/internals/types/pagination.d.ts +10 -0
- package/dist/server/services/internals/types/pagination.d.ts.map +1 -0
- package/dist/server/services/internals/types/publication-state.d.ts +10 -0
- package/dist/server/services/internals/types/publication-state.d.ts.map +1 -0
- package/dist/server/services/internals/types/response-collection-meta.d.ts +11 -0
- package/dist/server/services/internals/types/response-collection-meta.d.ts.map +1 -0
- package/dist/server/services/type-registry.d.ts +15 -0
- package/dist/server/services/type-registry.d.ts.map +1 -0
- package/dist/server/services/types.d.ts +7 -0
- package/dist/server/services/types.d.ts.map +1 -0
- package/dist/server/services/utils/attributes.d.ts +14 -0
- package/dist/server/services/utils/attributes.d.ts.map +1 -0
- package/dist/server/services/utils/index.d.ts +81 -0
- package/dist/server/services/utils/index.d.ts.map +1 -0
- package/dist/server/services/utils/mappers/entity-to-response-entity.d.ts +33 -0
- package/dist/server/services/utils/mappers/entity-to-response-entity.d.ts.map +1 -0
- package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.d.ts +13 -0
- package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.d.ts.map +1 -0
- package/dist/server/services/utils/mappers/graphql-scalar-to-operators.d.ts +6 -0
- package/dist/server/services/utils/mappers/graphql-scalar-to-operators.d.ts.map +1 -0
- package/dist/server/services/utils/mappers/index.d.ts +36 -0
- package/dist/server/services/utils/mappers/index.d.ts.map +1 -0
- package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.d.ts +9 -0
- package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.d.ts.map +1 -0
- package/dist/server/services/utils/naming.d.ts +37 -0
- package/dist/server/services/utils/naming.d.ts.map +1 -0
- package/package.json +28 -16
- package/strapi-server.js +1 -11
- package/.eslintignore +0 -1
- package/.eslintrc +0 -14
- package/admin/src/index.js +0 -38
- package/admin/src/pluginId.js +0 -5
- package/admin/src/translations/dk.json +0 -5
- package/admin/src/translations/en.json +0 -5
- package/admin/src/translations/es.json +0 -5
- package/admin/src/translations/fr.json +0 -5
- package/admin/src/translations/pl.json +0 -5
- package/admin/src/translations/ru.json +0 -5
- package/admin/src/translations/sv.json +0 -5
- package/admin/src/translations/tr.json +0 -5
- package/admin/src/translations/zh-Hans.json +0 -5
- package/admin/src/translations/zh.json +0 -5
- package/packup.config.ts +0 -42
- package/server/bootstrap.js +0 -134
- package/server/config/default-config.js +0 -13
- package/server/config/index.js +0 -7
- package/server/format-graphql-error.js +0 -45
- package/server/services/builders/dynamic-zones.js +0 -97
- package/server/services/builders/entity-meta.js +0 -7
- package/server/services/builders/entity.js +0 -43
- package/server/services/builders/enums.js +0 -26
- package/server/services/builders/filters/content-type.js +0 -111
- package/server/services/builders/filters/index.js +0 -7
- package/server/services/builders/filters/operators/and.js +0 -15
- package/server/services/builders/filters/operators/between.js +0 -15
- package/server/services/builders/filters/operators/contains.js +0 -13
- package/server/services/builders/filters/operators/containsi.js +0 -13
- package/server/services/builders/filters/operators/ends-with.js +0 -13
- package/server/services/builders/filters/operators/eq.js +0 -23
- package/server/services/builders/filters/operators/eqi.js +0 -13
- package/server/services/builders/filters/operators/gt.js +0 -13
- package/server/services/builders/filters/operators/gte.js +0 -13
- package/server/services/builders/filters/operators/in.js +0 -15
- package/server/services/builders/filters/operators/index.js +0 -40
- package/server/services/builders/filters/operators/lt.js +0 -13
- package/server/services/builders/filters/operators/lte.js +0 -13
- package/server/services/builders/filters/operators/ne.js +0 -13
- package/server/services/builders/filters/operators/nei.js +0 -13
- package/server/services/builders/filters/operators/not-contains.js +0 -13
- package/server/services/builders/filters/operators/not-containsi.js +0 -13
- package/server/services/builders/filters/operators/not-in.js +0 -15
- package/server/services/builders/filters/operators/not-null.js +0 -13
- package/server/services/builders/filters/operators/not.js +0 -19
- package/server/services/builders/filters/operators/null.js +0 -13
- package/server/services/builders/filters/operators/or.js +0 -15
- package/server/services/builders/filters/operators/starts-with.js +0 -13
- package/server/services/builders/generic-morph.js +0 -41
- package/server/services/builders/index.js +0 -92
- package/server/services/builders/input.js +0 -121
- package/server/services/builders/mutations/collection-type.js +0 -191
- package/server/services/builders/mutations/index.js +0 -9
- package/server/services/builders/mutations/single-type.js +0 -164
- package/server/services/builders/queries/collection-type.js +0 -122
- package/server/services/builders/queries/index.js +0 -9
- package/server/services/builders/queries/single-type.js +0 -71
- package/server/services/builders/relation-response-collection.js +0 -32
- package/server/services/builders/resolvers/association.js +0 -92
- package/server/services/builders/resolvers/component.js +0 -25
- package/server/services/builders/resolvers/dynamic-zone.js +0 -9
- package/server/services/builders/resolvers/index.js +0 -18
- package/server/services/builders/resolvers/mutation.js +0 -38
- package/server/services/builders/resolvers/query.js +0 -34
- package/server/services/builders/response-collection.js +0 -40
- package/server/services/builders/response.js +0 -32
- package/server/services/builders/type.js +0 -363
- package/server/services/builders/utils.js +0 -134
- package/server/services/constants.js +0 -153
- package/server/services/content-api/index.js +0 -188
- package/server/services/content-api/policy.js +0 -60
- package/server/services/content-api/register-functions/collection-type.js +0 -72
- package/server/services/content-api/register-functions/component.js +0 -15
- package/server/services/content-api/register-functions/content-type/dynamic-zones.js +0 -36
- package/server/services/content-api/register-functions/content-type/enums.js +0 -33
- package/server/services/content-api/register-functions/content-type/filters.js +0 -15
- package/server/services/content-api/register-functions/content-type/index.js +0 -13
- package/server/services/content-api/register-functions/content-type/inputs.js +0 -21
- package/server/services/content-api/register-functions/index.js +0 -22
- package/server/services/content-api/register-functions/internals.js +0 -13
- package/server/services/content-api/register-functions/polymorphic.js +0 -69
- package/server/services/content-api/register-functions/scalars.js +0 -14
- package/server/services/content-api/register-functions/single-type.js +0 -72
- package/server/services/content-api/wrap-resolvers.js +0 -148
- package/server/services/extension/extension.js +0 -94
- package/server/services/extension/index.js +0 -5
- package/server/services/extension/shadow-crud-manager.js +0 -161
- package/server/services/format/index.js +0 -7
- package/server/services/format/return-types.js +0 -27
- package/server/services/index.js +0 -21
- package/server/services/internals/args/index.js +0 -11
- package/server/services/internals/args/pagination.js +0 -19
- package/server/services/internals/args/publication-state.js +0 -12
- package/server/services/internals/args/sort.js +0 -10
- package/server/services/internals/helpers/get-enabled-scalars.js +0 -17
- package/server/services/internals/helpers/index.js +0 -7
- package/server/services/internals/index.js +0 -13
- package/server/services/internals/scalars/date.js +0 -22
- package/server/services/internals/scalars/index.js +0 -17
- package/server/services/internals/scalars/time.js +0 -36
- package/server/services/internals/types/error.js +0 -34
- package/server/services/internals/types/filters.js +0 -39
- package/server/services/internals/types/index.js +0 -29
- package/server/services/internals/types/pagination.js +0 -24
- package/server/services/internals/types/publication-state.js +0 -24
- package/server/services/internals/types/response-collection-meta.js +0 -46
- package/server/services/type-registry.js +0 -104
- package/server/services/utils/attributes.js +0 -78
- package/server/services/utils/index.js +0 -11
- package/server/services/utils/mappers/entity-to-response-entity.js +0 -12
- package/server/services/utils/mappers/graphql-filters-to-strapi-query.js +0 -119
- package/server/services/utils/mappers/graphql-scalar-to-operators.js +0 -17
- package/server/services/utils/mappers/index.js +0 -13
- package/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js +0 -25
- package/server/services/utils/naming.js +0 -287
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const args = require('./args');
|
|
4
|
-
const scalars = require('./scalars');
|
|
5
|
-
const types = require('./types');
|
|
6
|
-
const helpers = require('./helpers');
|
|
7
|
-
|
|
8
|
-
module.exports = (context) => ({
|
|
9
|
-
args: args(context),
|
|
10
|
-
scalars: scalars(context),
|
|
11
|
-
buildInternalTypes: types(context),
|
|
12
|
-
helpers: helpers(context),
|
|
13
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { GraphQLDate } = require('graphql-scalars');
|
|
4
|
-
|
|
5
|
-
const parseAndCast =
|
|
6
|
-
(parseFn) =>
|
|
7
|
-
(...args) => {
|
|
8
|
-
const parsedValue = parseFn(...args);
|
|
9
|
-
|
|
10
|
-
if (parsedValue instanceof Date) {
|
|
11
|
-
return parsedValue.toISOString().split('T')[0];
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
return parsedValue;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
// GraphQLDate casts the date string to new Date, we want to keep it as a string so we cast it back to a string
|
|
18
|
-
// see https://github.com/excitement-engineer/graphql-iso-date/issues/106
|
|
19
|
-
GraphQLDate.parseValue = parseAndCast(GraphQLDate.parseValue);
|
|
20
|
-
GraphQLDate.parseLiteral = parseAndCast(GraphQLDate.parseLiteral);
|
|
21
|
-
|
|
22
|
-
module.exports = GraphQLDate;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { GraphQLDateTime, GraphQLLong, GraphQLJSON } = require('graphql-scalars');
|
|
4
|
-
const { GraphQLUpload } = require('graphql-upload');
|
|
5
|
-
const { asNexusMethod } = require('nexus');
|
|
6
|
-
|
|
7
|
-
const TimeScalar = require('./time');
|
|
8
|
-
const GraphQLDate = require('./date');
|
|
9
|
-
|
|
10
|
-
module.exports = () => ({
|
|
11
|
-
JSON: asNexusMethod(GraphQLJSON, 'json'),
|
|
12
|
-
DateTime: asNexusMethod(GraphQLDateTime, 'dateTime'),
|
|
13
|
-
Time: asNexusMethod(TimeScalar, 'time'),
|
|
14
|
-
Date: asNexusMethod(GraphQLDate, 'date'),
|
|
15
|
-
Long: asNexusMethod(GraphQLLong, 'long'),
|
|
16
|
-
Upload: asNexusMethod(GraphQLUpload, 'upload'),
|
|
17
|
-
});
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { GraphQLScalarType } = require('graphql');
|
|
4
|
-
const { Kind } = require('graphql');
|
|
5
|
-
const { parseType } = require('@strapi/utils');
|
|
6
|
-
const { ValidationError } = require('@strapi/utils').errors;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* A GraphQL scalar used to store Time (HH:mm:ss.SSS) values
|
|
10
|
-
* @type {GraphQLScalarType}
|
|
11
|
-
*/
|
|
12
|
-
const TimeScalar = new GraphQLScalarType({
|
|
13
|
-
name: 'Time',
|
|
14
|
-
|
|
15
|
-
description: 'A time string with format HH:mm:ss.SSS',
|
|
16
|
-
|
|
17
|
-
serialize(value) {
|
|
18
|
-
return parseType({ type: 'time', value });
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
parseValue(value) {
|
|
22
|
-
return parseType({ type: 'time', value });
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
parseLiteral(ast) {
|
|
26
|
-
if (ast.kind !== Kind.STRING) {
|
|
27
|
-
throw new ValidationError('Time cannot represent non string type');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const { value } = ast;
|
|
31
|
-
|
|
32
|
-
return parseType({ type: 'time', value });
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
module.exports = TimeScalar;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { objectType } = require('nexus');
|
|
4
|
-
const { get } = require('lodash/fp');
|
|
5
|
-
const { ValidationError } = require('@strapi/utils').errors;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Build an Error object type
|
|
9
|
-
* @return {Object<string, NexusObjectTypeDef>}
|
|
10
|
-
*/
|
|
11
|
-
module.exports = ({ strapi }) => {
|
|
12
|
-
const { ERROR_CODES, ERROR_TYPE_NAME } = strapi.plugin('graphql').service('constants');
|
|
13
|
-
|
|
14
|
-
return objectType({
|
|
15
|
-
name: ERROR_TYPE_NAME,
|
|
16
|
-
|
|
17
|
-
definition(t) {
|
|
18
|
-
t.nonNull.string('code', {
|
|
19
|
-
resolve(parent) {
|
|
20
|
-
const code = get('code', parent);
|
|
21
|
-
|
|
22
|
-
const isValidPlaceholderCode = Object.values(ERROR_CODES).includes(code);
|
|
23
|
-
if (!isValidPlaceholderCode) {
|
|
24
|
-
throw new ValidationError(`"${code}" is not a valid code value`);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return code;
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
t.string('message');
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { inputObjectType } = require('nexus');
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Build a map of filters type for every GraphQL scalars
|
|
7
|
-
* @return {Object<string, NexusInputTypeDef>}
|
|
8
|
-
*/
|
|
9
|
-
const buildScalarFilters = ({ strapi }) => {
|
|
10
|
-
const { naming, mappers } = strapi.plugin('graphql').service('utils');
|
|
11
|
-
const { helpers } = strapi.plugin('graphql').service('internals');
|
|
12
|
-
|
|
13
|
-
return helpers.getEnabledScalars().reduce((acc, type) => {
|
|
14
|
-
const operators = mappers.graphqlScalarToOperators(type);
|
|
15
|
-
const typeName = naming.getScalarFilterInputTypeName(type);
|
|
16
|
-
|
|
17
|
-
if (!operators || operators.length === 0) {
|
|
18
|
-
return acc;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return {
|
|
22
|
-
...acc,
|
|
23
|
-
|
|
24
|
-
[typeName]: inputObjectType({
|
|
25
|
-
name: typeName,
|
|
26
|
-
|
|
27
|
-
definition(t) {
|
|
28
|
-
for (const operator of operators) {
|
|
29
|
-
operator.add(t, type);
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
}),
|
|
33
|
-
};
|
|
34
|
-
}, {});
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
module.exports = (context) => ({
|
|
38
|
-
scalars: buildScalarFilters(context),
|
|
39
|
-
});
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const pagination = require('./pagination');
|
|
4
|
-
const buildResponseCollectionMeta = require('./response-collection-meta');
|
|
5
|
-
const publicationState = require('./publication-state');
|
|
6
|
-
const filters = require('./filters');
|
|
7
|
-
const error = require('./error');
|
|
8
|
-
|
|
9
|
-
module.exports = (context) => () => {
|
|
10
|
-
const { strapi } = context;
|
|
11
|
-
|
|
12
|
-
const { KINDS } = strapi.plugin('graphql').service('constants');
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
[KINDS.internal]: {
|
|
16
|
-
error: error(context),
|
|
17
|
-
pagination: pagination(context),
|
|
18
|
-
responseCollectionMeta: buildResponseCollectionMeta(context),
|
|
19
|
-
},
|
|
20
|
-
|
|
21
|
-
[KINDS.enum]: {
|
|
22
|
-
publicationState: publicationState(context),
|
|
23
|
-
},
|
|
24
|
-
|
|
25
|
-
[KINDS.filtersInput]: {
|
|
26
|
-
...filters(context),
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { objectType } = require('nexus');
|
|
4
|
-
|
|
5
|
-
module.exports = ({ strapi }) => {
|
|
6
|
-
const { PAGINATION_TYPE_NAME } = strapi.plugin('graphql').service('constants');
|
|
7
|
-
|
|
8
|
-
return {
|
|
9
|
-
/**
|
|
10
|
-
* Type definition for a Pagination object
|
|
11
|
-
* @type {NexusObjectTypeDef}
|
|
12
|
-
*/
|
|
13
|
-
Pagination: objectType({
|
|
14
|
-
name: PAGINATION_TYPE_NAME,
|
|
15
|
-
|
|
16
|
-
definition(t) {
|
|
17
|
-
t.nonNull.int('total');
|
|
18
|
-
t.nonNull.int('page');
|
|
19
|
-
t.nonNull.int('pageSize');
|
|
20
|
-
t.nonNull.int('pageCount');
|
|
21
|
-
},
|
|
22
|
-
}),
|
|
23
|
-
};
|
|
24
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { enumType } = require('nexus');
|
|
4
|
-
|
|
5
|
-
module.exports = ({ strapi }) => {
|
|
6
|
-
const { PUBLICATION_STATE_TYPE_NAME } = strapi.plugin('graphql').service('constants');
|
|
7
|
-
|
|
8
|
-
return {
|
|
9
|
-
/**
|
|
10
|
-
* An enum type definition representing a publication state
|
|
11
|
-
* @type {NexusEnumTypeDef}
|
|
12
|
-
*/
|
|
13
|
-
PublicationState: enumType({
|
|
14
|
-
name: PUBLICATION_STATE_TYPE_NAME,
|
|
15
|
-
|
|
16
|
-
members: {
|
|
17
|
-
// Published only
|
|
18
|
-
LIVE: 'live',
|
|
19
|
-
// Published & draft
|
|
20
|
-
PREVIEW: 'preview',
|
|
21
|
-
},
|
|
22
|
-
}),
|
|
23
|
-
};
|
|
24
|
-
};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { objectType } = require('nexus');
|
|
4
|
-
const { sanitize, validate } = require('@strapi/utils');
|
|
5
|
-
|
|
6
|
-
module.exports = ({ strapi }) => {
|
|
7
|
-
const { RESPONSE_COLLECTION_META_TYPE_NAME, PAGINATION_TYPE_NAME } = strapi
|
|
8
|
-
.plugin('graphql')
|
|
9
|
-
.service('constants');
|
|
10
|
-
|
|
11
|
-
return {
|
|
12
|
-
/**
|
|
13
|
-
* A shared type definition used in EntitiesResponseCollection
|
|
14
|
-
* to have information about the collection as a whole
|
|
15
|
-
* @type {NexusObjectTypeDef}
|
|
16
|
-
*/
|
|
17
|
-
ResponseCollectionMeta: objectType({
|
|
18
|
-
name: RESPONSE_COLLECTION_META_TYPE_NAME,
|
|
19
|
-
|
|
20
|
-
definition(t) {
|
|
21
|
-
t.nonNull.field('pagination', {
|
|
22
|
-
type: PAGINATION_TYPE_NAME,
|
|
23
|
-
|
|
24
|
-
async resolve(parent, _childArgs, ctx) {
|
|
25
|
-
const { args, resourceUID } = parent;
|
|
26
|
-
const { start, limit } = args;
|
|
27
|
-
const safeLimit = Math.max(limit, 1);
|
|
28
|
-
const contentType = strapi.getModel(resourceUID);
|
|
29
|
-
await validate.contentAPI.query(args, contentType, {
|
|
30
|
-
auth: ctx?.state?.auth,
|
|
31
|
-
});
|
|
32
|
-
const sanitizedQuery = await sanitize.contentAPI.query(args, contentType, {
|
|
33
|
-
auth: ctx?.state?.auth,
|
|
34
|
-
});
|
|
35
|
-
const total = await strapi.entityService.count(resourceUID, sanitizedQuery);
|
|
36
|
-
const pageSize = limit === -1 ? total - start : safeLimit;
|
|
37
|
-
const pageCount = limit === -1 ? safeLimit : Math.ceil(total / safeLimit);
|
|
38
|
-
const page = limit === -1 ? safeLimit : Math.floor(start / safeLimit) + 1;
|
|
39
|
-
|
|
40
|
-
return { total, page, pageSize, pageCount };
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
},
|
|
44
|
-
}),
|
|
45
|
-
};
|
|
46
|
-
};
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { isFunction } = require('lodash/fp');
|
|
4
|
-
const { ApplicationError } = require('@strapi/utils').errors;
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @typedef RegisteredTypeDef
|
|
8
|
-
*
|
|
9
|
-
* @property {string} name
|
|
10
|
-
* @property {NexusAcceptedTypeDef} definition
|
|
11
|
-
* @property {object} config
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Create a new type registry
|
|
16
|
-
*/
|
|
17
|
-
const createTypeRegistry = () => {
|
|
18
|
-
const registry = new Map();
|
|
19
|
-
|
|
20
|
-
return {
|
|
21
|
-
/**
|
|
22
|
-
* Register a new type definition
|
|
23
|
-
* @param {string} name The name of the type
|
|
24
|
-
* @param {NexusAcceptedTypeDef} definition The Nexus definition for the type
|
|
25
|
-
* @param {object} [config] An optional config object with any metadata inside
|
|
26
|
-
*/
|
|
27
|
-
register(name, definition, config = {}) {
|
|
28
|
-
if (registry.has(name)) {
|
|
29
|
-
throw new ApplicationError(`"${name}" has already been registered`);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
registry.set(name, { name, definition, config });
|
|
33
|
-
|
|
34
|
-
return this;
|
|
35
|
-
},
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Register many types definitions at once
|
|
39
|
-
* @param {[string, NexusAcceptedTypeDef][]} definitionsEntries
|
|
40
|
-
* @param {object | function} [config]
|
|
41
|
-
*/
|
|
42
|
-
registerMany(definitionsEntries, config = {}) {
|
|
43
|
-
for (const [name, definition] of definitionsEntries) {
|
|
44
|
-
this.register(name, definition, isFunction(config) ? config(name, definition) : config);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return this;
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Check if the given type name has already been added to the registry
|
|
52
|
-
* @param {string} name
|
|
53
|
-
* @return {boolean}
|
|
54
|
-
*/
|
|
55
|
-
has(name) {
|
|
56
|
-
return registry.has(name);
|
|
57
|
-
},
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Get the type definition for `name`
|
|
61
|
-
* @param {string} name - The name of the type
|
|
62
|
-
*/
|
|
63
|
-
get(name) {
|
|
64
|
-
return registry.get(name);
|
|
65
|
-
},
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Transform and return the registry as an object
|
|
69
|
-
* @return {Object<string, RegisteredTypeDef>}
|
|
70
|
-
*/
|
|
71
|
-
toObject() {
|
|
72
|
-
return Object.fromEntries(registry.entries());
|
|
73
|
-
},
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Return the name of every registered type
|
|
77
|
-
* @return {string[]}
|
|
78
|
-
*/
|
|
79
|
-
get types() {
|
|
80
|
-
return Array.from(registry.keys());
|
|
81
|
-
},
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Return all the registered definitions as an array
|
|
85
|
-
* @return {RegisteredTypeDef[]}
|
|
86
|
-
*/
|
|
87
|
-
get definitions() {
|
|
88
|
-
return Array.from(registry.values());
|
|
89
|
-
},
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Filter and return the types definitions that matches the given predicate
|
|
93
|
-
* @param {function(RegisteredTypeDef): boolean} predicate
|
|
94
|
-
* @return {RegisteredTypeDef[]}
|
|
95
|
-
*/
|
|
96
|
-
where(predicate) {
|
|
97
|
-
return this.definitions.filter(predicate);
|
|
98
|
-
},
|
|
99
|
-
};
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
module.exports = () => ({
|
|
103
|
-
new: createTypeRegistry,
|
|
104
|
-
});
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { propEq } = require('lodash/fp');
|
|
4
|
-
|
|
5
|
-
module.exports = ({ strapi }) => {
|
|
6
|
-
/**
|
|
7
|
-
* Check if the given attribute is a Strapi scalar
|
|
8
|
-
* @param {object} attribute
|
|
9
|
-
* @return {boolean}
|
|
10
|
-
*/
|
|
11
|
-
const isStrapiScalar = (attribute) => {
|
|
12
|
-
return strapi.plugin('graphql').service('constants').STRAPI_SCALARS.includes(attribute.type);
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Check if the given attribute is a GraphQL scalar
|
|
17
|
-
* @param {object} attribute
|
|
18
|
-
* @return {boolean}
|
|
19
|
-
*/
|
|
20
|
-
const isGraphQLScalar = (attribute) => {
|
|
21
|
-
return strapi.plugin('graphql').service('constants').GRAPHQL_SCALARS.includes(attribute.type);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Check if the given attribute is a polymorphic relation
|
|
26
|
-
* @param {object} attribute
|
|
27
|
-
* @return {boolean}
|
|
28
|
-
*/
|
|
29
|
-
const isMorphRelation = (attribute) => {
|
|
30
|
-
return isRelation(attribute) && attribute.relation.includes('morph');
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Check if the given attribute is a media
|
|
35
|
-
* @param {object} attribute
|
|
36
|
-
* @return {boolean}
|
|
37
|
-
*/
|
|
38
|
-
const isMedia = propEq('type', 'media');
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Check if the given attribute is a relation
|
|
42
|
-
* @param {object} attribute
|
|
43
|
-
* @return {boolean}
|
|
44
|
-
*/
|
|
45
|
-
const isRelation = propEq('type', 'relation');
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Check if the given attribute is an enum
|
|
49
|
-
* @param {object} attribute
|
|
50
|
-
* @return {boolean}
|
|
51
|
-
*/
|
|
52
|
-
const isEnumeration = propEq('type', 'enumeration');
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Check if the given attribute is a component
|
|
56
|
-
* @param {object} attribute
|
|
57
|
-
* @return {boolean}
|
|
58
|
-
*/
|
|
59
|
-
const isComponent = propEq('type', 'component');
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Check if the given attribute is a dynamic zone
|
|
63
|
-
* @param {object} attribute
|
|
64
|
-
* @return {boolean}
|
|
65
|
-
*/
|
|
66
|
-
const isDynamicZone = propEq('type', 'dynamiczone');
|
|
67
|
-
|
|
68
|
-
return {
|
|
69
|
-
isStrapiScalar,
|
|
70
|
-
isGraphQLScalar,
|
|
71
|
-
isMorphRelation,
|
|
72
|
-
isMedia,
|
|
73
|
-
isRelation,
|
|
74
|
-
isEnumeration,
|
|
75
|
-
isComponent,
|
|
76
|
-
isDynamicZone,
|
|
77
|
-
};
|
|
78
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const mappers = require('./mappers');
|
|
4
|
-
const attributes = require('./attributes');
|
|
5
|
-
const naming = require('./naming');
|
|
6
|
-
|
|
7
|
-
module.exports = (context) => ({
|
|
8
|
-
naming: naming(context),
|
|
9
|
-
attributes: attributes(context),
|
|
10
|
-
mappers: mappers(context),
|
|
11
|
-
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { map } = require('lodash/fp');
|
|
4
|
-
|
|
5
|
-
const entityToResponseEntity = (entity) => ({ id: entity.id, attributes: entity });
|
|
6
|
-
|
|
7
|
-
const entitiesToResponseEntities = map(entityToResponseEntity);
|
|
8
|
-
|
|
9
|
-
module.exports = () => ({
|
|
10
|
-
entityToResponseEntity,
|
|
11
|
-
entitiesToResponseEntities,
|
|
12
|
-
});
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { has, propEq, isNil, isDate, isObject } = require('lodash/fp');
|
|
4
|
-
|
|
5
|
-
// todo[v4]: Find a way to get that dynamically
|
|
6
|
-
const virtualScalarAttributes = ['id'];
|
|
7
|
-
|
|
8
|
-
module.exports = ({ strapi }) => {
|
|
9
|
-
const { service: getService } = strapi.plugin('graphql');
|
|
10
|
-
|
|
11
|
-
const recursivelyReplaceScalarOperators = (data) => {
|
|
12
|
-
const { operators } = getService('builders').filters;
|
|
13
|
-
|
|
14
|
-
if (Array.isArray(data)) {
|
|
15
|
-
return data.map(recursivelyReplaceScalarOperators);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// Note: We need to make an exception for date since GraphQL
|
|
19
|
-
// automatically cast date strings to date instances in args
|
|
20
|
-
if (isDate(data) || !isObject(data)) {
|
|
21
|
-
return data;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const result = {};
|
|
25
|
-
|
|
26
|
-
for (const [key, value] of Object.entries(data)) {
|
|
27
|
-
const isOperator = !!operators[key];
|
|
28
|
-
|
|
29
|
-
const newKey = isOperator ? operators[key].strapiOperator : key;
|
|
30
|
-
|
|
31
|
-
result[newKey] = recursivelyReplaceScalarOperators(value);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return result;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
/**
|
|
39
|
-
* Transform one or many GraphQL filters object into a valid Strapi query
|
|
40
|
-
* @param {object | object[]} filters
|
|
41
|
-
* @param {object} contentType
|
|
42
|
-
* @return {object | object[]}
|
|
43
|
-
*/
|
|
44
|
-
graphQLFiltersToStrapiQuery(filters, contentType = {}) {
|
|
45
|
-
const { isStrapiScalar, isMedia, isRelation, isComponent } = getService('utils').attributes;
|
|
46
|
-
const { operators } = getService('builders').filters;
|
|
47
|
-
|
|
48
|
-
const ROOT_LEVEL_OPERATORS = [operators.and, operators.or, operators.not];
|
|
49
|
-
|
|
50
|
-
// Handle unwanted scenario where there is no filters defined
|
|
51
|
-
if (isNil(filters)) {
|
|
52
|
-
return {};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// If filters is a collection, then apply the transformation to every item of the list
|
|
56
|
-
if (Array.isArray(filters)) {
|
|
57
|
-
return filters.map((filtersItem) =>
|
|
58
|
-
this.graphQLFiltersToStrapiQuery(filtersItem, contentType)
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const resultMap = {};
|
|
63
|
-
const { attributes } = contentType;
|
|
64
|
-
|
|
65
|
-
const isAttribute = (attributeName) => {
|
|
66
|
-
return virtualScalarAttributes.includes(attributeName) || has(attributeName, attributes);
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
for (const [key, value] of Object.entries(filters)) {
|
|
70
|
-
// If the key is an attribute, update the value
|
|
71
|
-
if (isAttribute(key)) {
|
|
72
|
-
const attribute = attributes[key];
|
|
73
|
-
|
|
74
|
-
// If it's a scalar attribute
|
|
75
|
-
if (virtualScalarAttributes.includes(key) || isStrapiScalar(attribute)) {
|
|
76
|
-
// Replace (recursively) every GraphQL scalar operator with the associated Strapi operator
|
|
77
|
-
resultMap[key] = recursivelyReplaceScalarOperators(value);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// If it's a deep filter on a relation
|
|
81
|
-
else if (isRelation(attribute) || isMedia(attribute)) {
|
|
82
|
-
// Fetch the model from the relation
|
|
83
|
-
const relModel = strapi.getModel(attribute.target);
|
|
84
|
-
|
|
85
|
-
// Recursively apply the mapping to the value using the fetched model,
|
|
86
|
-
// and update the value within `resultMap`
|
|
87
|
-
resultMap[key] = this.graphQLFiltersToStrapiQuery(value, relModel);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// If it's a deep filter on a component
|
|
91
|
-
else if (isComponent(attribute)) {
|
|
92
|
-
// Fetch the model from the component attribute
|
|
93
|
-
const componentModel = strapi.getModel(attribute.component);
|
|
94
|
-
|
|
95
|
-
// Recursively apply the mapping to the value using the fetched model,
|
|
96
|
-
// and update the value within `resultMap`
|
|
97
|
-
resultMap[key] = this.graphQLFiltersToStrapiQuery(value, componentModel);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Handle the case where the key is not an attribute (operator, ...)
|
|
102
|
-
else {
|
|
103
|
-
const rootLevelOperator = ROOT_LEVEL_OPERATORS.find(propEq('fieldName', key));
|
|
104
|
-
|
|
105
|
-
// If it's a root level operator (AND, NOT, OR, ...)
|
|
106
|
-
if (rootLevelOperator) {
|
|
107
|
-
const { strapiOperator } = rootLevelOperator;
|
|
108
|
-
|
|
109
|
-
// Transform the current value recursively and add it to the resultMap
|
|
110
|
-
// object using the strapiOperator equivalent of the GraphQL key
|
|
111
|
-
resultMap[strapiOperator] = this.graphQLFiltersToStrapiQuery(value, contentType);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return resultMap;
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
};
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { get, map, mapValues } = require('lodash/fp');
|
|
4
|
-
|
|
5
|
-
module.exports = ({ strapi }) => ({
|
|
6
|
-
graphqlScalarToOperators(graphqlScalar) {
|
|
7
|
-
const { GRAPHQL_SCALAR_OPERATORS } = strapi.plugin('graphql').service('constants');
|
|
8
|
-
const { operators } = strapi.plugin('graphql').service('builders').filters;
|
|
9
|
-
|
|
10
|
-
const associations = mapValues(
|
|
11
|
-
map((operatorName) => operators[operatorName]),
|
|
12
|
-
GRAPHQL_SCALAR_OPERATORS
|
|
13
|
-
);
|
|
14
|
-
|
|
15
|
-
return get(graphqlScalar, associations);
|
|
16
|
-
},
|
|
17
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const strapiScalarToGraphQLScalar = require('./strapi-scalar-to-graphql-scalar');
|
|
4
|
-
const graphQLFiltersToStrapiQuery = require('./graphql-filters-to-strapi-query');
|
|
5
|
-
const graphqlScalarToOperators = require('./graphql-scalar-to-operators');
|
|
6
|
-
const entityToResponseEntity = require('./entity-to-response-entity');
|
|
7
|
-
|
|
8
|
-
module.exports = (context) => ({
|
|
9
|
-
...strapiScalarToGraphQLScalar(context),
|
|
10
|
-
...graphQLFiltersToStrapiQuery(context),
|
|
11
|
-
...graphqlScalarToOperators(context),
|
|
12
|
-
...entityToResponseEntity(context),
|
|
13
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { get, difference } = require('lodash/fp');
|
|
4
|
-
const { ApplicationError } = require('@strapi/utils').errors;
|
|
5
|
-
|
|
6
|
-
module.exports = ({ strapi }) => {
|
|
7
|
-
const { STRAPI_SCALARS, SCALARS_ASSOCIATIONS } = strapi.plugin('graphql').service('constants');
|
|
8
|
-
|
|
9
|
-
const missingStrapiScalars = difference(STRAPI_SCALARS, Object.keys(SCALARS_ASSOCIATIONS));
|
|
10
|
-
|
|
11
|
-
if (missingStrapiScalars.length > 0) {
|
|
12
|
-
throw new ApplicationError('Some Strapi scalars are not handled in the GraphQL scalars mapper');
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return {
|
|
16
|
-
/**
|
|
17
|
-
* Used to transform a Strapi scalar type into its GraphQL equivalent
|
|
18
|
-
* @param {string} strapiScalar
|
|
19
|
-
* @return {NexusGenScalars}
|
|
20
|
-
*/
|
|
21
|
-
strapiScalarToGraphQLScalar(strapiScalar) {
|
|
22
|
-
return get(strapiScalar, SCALARS_ASSOCIATIONS);
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
};
|