@strapi/plugin-graphql 4.15.5-alpha.6 → 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
package/packup.config.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Config, defineConfig } from '@strapi/pack-up';
|
|
2
|
-
import { transformWithEsbuild } from 'vite';
|
|
3
|
-
|
|
4
|
-
const config: Config = defineConfig({
|
|
5
|
-
bundles: [
|
|
6
|
-
{
|
|
7
|
-
source: './admin/src/index.js',
|
|
8
|
-
import: './dist/admin/index.mjs',
|
|
9
|
-
require: './dist/admin/index.js',
|
|
10
|
-
runtime: 'web',
|
|
11
|
-
},
|
|
12
|
-
],
|
|
13
|
-
dist: './dist',
|
|
14
|
-
/**
|
|
15
|
-
* Because we're exporting a server & client package
|
|
16
|
-
* which have different runtimes we want to ignore
|
|
17
|
-
* what they look like in the package.json
|
|
18
|
-
*/
|
|
19
|
-
exports: {},
|
|
20
|
-
plugins: [
|
|
21
|
-
{
|
|
22
|
-
name: 'treat-js-files-as-jsx',
|
|
23
|
-
async transform(code, id) {
|
|
24
|
-
/**
|
|
25
|
-
* Matches all files in src/ and ee/ that end with .js
|
|
26
|
-
*/
|
|
27
|
-
if (!id.match(/src\/.*\.js$/) && !id.match(/ee\/.*\.js$/)) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// Use the exposed transform from vite, instead of directly
|
|
32
|
-
// transforming with esbuild
|
|
33
|
-
return transformWithEsbuild(code, id, {
|
|
34
|
-
loader: 'tsx',
|
|
35
|
-
jsx: 'automatic',
|
|
36
|
-
});
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
export default config;
|
package/server/bootstrap.js
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { isEmpty, mergeWith, isArray } = require('lodash/fp');
|
|
4
|
-
const { ApolloServer } = require('apollo-server-koa');
|
|
5
|
-
const {
|
|
6
|
-
ApolloServerPluginLandingPageDisabled,
|
|
7
|
-
ApolloServerPluginLandingPageGraphQLPlayground,
|
|
8
|
-
} = require('apollo-server-core');
|
|
9
|
-
const depthLimit = require('graphql-depth-limit');
|
|
10
|
-
const { graphqlUploadKoa } = require('graphql-upload');
|
|
11
|
-
const formatGraphqlError = require('./format-graphql-error');
|
|
12
|
-
|
|
13
|
-
const merge = mergeWith((a, b) => {
|
|
14
|
-
if (isArray(a) && isArray(b)) {
|
|
15
|
-
return a.concat(b);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Register the upload middleware powered by graphql-upload in Strapi
|
|
21
|
-
* @param {object} strapi
|
|
22
|
-
* @param {string} path
|
|
23
|
-
*/
|
|
24
|
-
const useUploadMiddleware = (strapi, path) => {
|
|
25
|
-
const uploadMiddleware = graphqlUploadKoa();
|
|
26
|
-
|
|
27
|
-
strapi.server.app.use((ctx, next) => {
|
|
28
|
-
if (ctx.path === path) {
|
|
29
|
-
return uploadMiddleware(ctx, next);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return next();
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
module.exports = async ({ strapi }) => {
|
|
37
|
-
// Generate the GraphQL schema for the content API
|
|
38
|
-
const schema = strapi.plugin('graphql').service('content-api').buildSchema();
|
|
39
|
-
|
|
40
|
-
if (isEmpty(schema)) {
|
|
41
|
-
strapi.log.warn('The GraphQL schema has not been generated because it is empty');
|
|
42
|
-
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const { config } = strapi.plugin('graphql');
|
|
47
|
-
|
|
48
|
-
const path = config('endpoint');
|
|
49
|
-
|
|
50
|
-
const defaultServerConfig = {
|
|
51
|
-
// Schema
|
|
52
|
-
schema,
|
|
53
|
-
|
|
54
|
-
// Initialize loaders for this request.
|
|
55
|
-
context: ({ ctx }) => ({
|
|
56
|
-
state: ctx.state,
|
|
57
|
-
koaContext: ctx,
|
|
58
|
-
}),
|
|
59
|
-
|
|
60
|
-
// Validation
|
|
61
|
-
validationRules: [depthLimit(config('depthLimit'))],
|
|
62
|
-
|
|
63
|
-
// Errors
|
|
64
|
-
formatError: formatGraphqlError,
|
|
65
|
-
|
|
66
|
-
// Misc
|
|
67
|
-
cors: false,
|
|
68
|
-
uploads: false,
|
|
69
|
-
bodyParserConfig: true,
|
|
70
|
-
|
|
71
|
-
plugins: [
|
|
72
|
-
process.env.NODE_ENV === 'production' && !config('playgroundAlways')
|
|
73
|
-
? ApolloServerPluginLandingPageDisabled()
|
|
74
|
-
: ApolloServerPluginLandingPageGraphQLPlayground(),
|
|
75
|
-
],
|
|
76
|
-
|
|
77
|
-
cache: 'bounded',
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
const serverConfig = merge(defaultServerConfig, config('apolloServer'));
|
|
81
|
-
|
|
82
|
-
// Create a new Apollo server
|
|
83
|
-
const server = new ApolloServer(serverConfig);
|
|
84
|
-
|
|
85
|
-
// Register the upload middleware
|
|
86
|
-
useUploadMiddleware(strapi, path);
|
|
87
|
-
|
|
88
|
-
try {
|
|
89
|
-
// Since Apollo-Server v3, server.start() must be called before using server.applyMiddleware()
|
|
90
|
-
await server.start();
|
|
91
|
-
} catch (e) {
|
|
92
|
-
strapi.log.error('Failed to start the Apollo server', e.message);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Link the Apollo server & the Strapi app
|
|
96
|
-
strapi.server.routes([
|
|
97
|
-
{
|
|
98
|
-
method: 'ALL',
|
|
99
|
-
path,
|
|
100
|
-
handler: [
|
|
101
|
-
(ctx, next) => {
|
|
102
|
-
ctx.state.route = {
|
|
103
|
-
info: {
|
|
104
|
-
// Indicate it's a content API route
|
|
105
|
-
type: 'content-api',
|
|
106
|
-
},
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
// allow graphql playground to load without authentication
|
|
110
|
-
if (ctx.request.method === 'GET') return next();
|
|
111
|
-
|
|
112
|
-
return strapi.auth.authenticate(ctx, next);
|
|
113
|
-
},
|
|
114
|
-
|
|
115
|
-
// Apollo Server
|
|
116
|
-
server.getMiddleware({
|
|
117
|
-
path,
|
|
118
|
-
cors: serverConfig.cors,
|
|
119
|
-
bodyParserConfig: serverConfig.bodyParserConfig,
|
|
120
|
-
}),
|
|
121
|
-
],
|
|
122
|
-
config: {
|
|
123
|
-
auth: false,
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
]);
|
|
127
|
-
|
|
128
|
-
// Register destroy behavior
|
|
129
|
-
// We're doing it here instead of exposing a destroy method to the strapi-server.js
|
|
130
|
-
// file since we need to have access to the ApolloServer instance
|
|
131
|
-
strapi.plugin('graphql').destroy = async () => {
|
|
132
|
-
await server.stop();
|
|
133
|
-
};
|
|
134
|
-
};
|
package/server/config/index.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { toUpper, snakeCase, pick, isEmpty } = require('lodash/fp');
|
|
4
|
-
const { HttpError, ForbiddenError, UnauthorizedError, ApplicationError, ValidationError } =
|
|
5
|
-
require('@strapi/utils').errors;
|
|
6
|
-
const {
|
|
7
|
-
ApolloError,
|
|
8
|
-
UserInputError: ApolloUserInputError,
|
|
9
|
-
ForbiddenError: ApolloForbiddenError,
|
|
10
|
-
} = require('apollo-server-koa');
|
|
11
|
-
const { GraphQLError } = require('graphql');
|
|
12
|
-
|
|
13
|
-
const formatToCode = (name) => `STRAPI_${toUpper(snakeCase(name))}`;
|
|
14
|
-
const formatErrorToExtension = (error) => ({ error: pick(['name', 'message', 'details'])(error) });
|
|
15
|
-
|
|
16
|
-
const formatGraphqlError = (error) => {
|
|
17
|
-
const { originalError } = error;
|
|
18
|
-
|
|
19
|
-
if (isEmpty(originalError)) {
|
|
20
|
-
return error;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if (originalError instanceof ForbiddenError || originalError instanceof UnauthorizedError) {
|
|
24
|
-
return new ApolloForbiddenError(originalError.message, formatErrorToExtension(originalError));
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
if (originalError instanceof ValidationError) {
|
|
28
|
-
return new ApolloUserInputError(originalError.message, formatErrorToExtension(originalError));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (originalError instanceof ApplicationError || originalError instanceof HttpError) {
|
|
32
|
-
const name = formatToCode(originalError.name);
|
|
33
|
-
return new ApolloError(originalError.message, name, formatErrorToExtension(originalError));
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (originalError instanceof ApolloError || originalError instanceof GraphQLError) {
|
|
37
|
-
return error;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Internal server error
|
|
41
|
-
strapi.log.error(originalError);
|
|
42
|
-
return new ApolloError('Internal Server Error', 'INTERNAL_SERVER_ERROR');
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
module.exports = formatGraphqlError;
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { Kind, valueFromASTUntyped } = require('graphql');
|
|
4
|
-
const { omit } = require('lodash/fp');
|
|
5
|
-
const { unionType, scalarType } = require('nexus');
|
|
6
|
-
const { ApplicationError } = require('@strapi/utils').errors;
|
|
7
|
-
|
|
8
|
-
module.exports = ({ strapi }) => {
|
|
9
|
-
const buildTypeDefinition = (name, components) => {
|
|
10
|
-
const { ERROR_TYPE_NAME } = strapi.plugin('graphql').service('constants');
|
|
11
|
-
const isEmpty = components.length === 0;
|
|
12
|
-
|
|
13
|
-
const componentsTypeNames = components.map((componentUID) => {
|
|
14
|
-
const component = strapi.components[componentUID];
|
|
15
|
-
|
|
16
|
-
if (!component) {
|
|
17
|
-
throw new ApplicationError(
|
|
18
|
-
`Trying to create a dynamic zone type with an unknown component: "${componentUID}"`
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return component.globalId;
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
return unionType({
|
|
26
|
-
name,
|
|
27
|
-
|
|
28
|
-
resolveType(obj) {
|
|
29
|
-
if (isEmpty) {
|
|
30
|
-
return ERROR_TYPE_NAME;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return strapi.components[obj.__component].globalId;
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
definition(t) {
|
|
37
|
-
t.members(...componentsTypeNames, ERROR_TYPE_NAME);
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
const buildInputDefinition = (name, components) => {
|
|
43
|
-
const parseData = (value) => {
|
|
44
|
-
const component = Object.values(strapi.components).find(
|
|
45
|
-
(component) => component.globalId === value.__typename
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
if (!component) {
|
|
49
|
-
throw new ApplicationError(
|
|
50
|
-
`Component not found. expected one of: ${components
|
|
51
|
-
.map((uid) => strapi.components[uid].globalId)
|
|
52
|
-
.join(', ')}`
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
__component: component.uid,
|
|
58
|
-
...omit(['__typename'], value),
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
return scalarType({
|
|
63
|
-
name,
|
|
64
|
-
|
|
65
|
-
serialize: (value) => value,
|
|
66
|
-
|
|
67
|
-
parseValue: (value) => parseData(value),
|
|
68
|
-
|
|
69
|
-
parseLiteral(ast, variables) {
|
|
70
|
-
if (ast.kind !== Kind.OBJECT) {
|
|
71
|
-
return undefined;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const value = valueFromASTUntyped(ast, variables);
|
|
75
|
-
return parseData(value);
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
return {
|
|
81
|
-
/**
|
|
82
|
-
* Build a Nexus dynamic zone type from a Strapi dz attribute
|
|
83
|
-
* @param {object} definition - The definition of the dynamic zone
|
|
84
|
-
* @param {string} name - the name of the dynamic zone
|
|
85
|
-
* @param {string} inputName - the name of the dynamic zone's input
|
|
86
|
-
* @return {[NexusUnionTypeDef, NexusScalarTypeDef]}
|
|
87
|
-
*/
|
|
88
|
-
buildDynamicZoneDefinition(definition, name, inputName) {
|
|
89
|
-
const { components } = definition;
|
|
90
|
-
|
|
91
|
-
const typeDefinition = buildTypeDefinition(name, components);
|
|
92
|
-
const inputDefinition = buildInputDefinition(inputName, components);
|
|
93
|
-
|
|
94
|
-
return [typeDefinition, inputDefinition];
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { objectType } = require('nexus');
|
|
4
|
-
const { prop, identity, isEmpty } = require('lodash/fp');
|
|
5
|
-
|
|
6
|
-
module.exports = ({ strapi }) => {
|
|
7
|
-
const { naming } = strapi.plugin('graphql').service('utils');
|
|
8
|
-
|
|
9
|
-
return {
|
|
10
|
-
/**
|
|
11
|
-
* Build a higher level type for a content type which contains the attributes, the ID and the metadata
|
|
12
|
-
* @param {object} contentType The content type which will be used to build its entity type
|
|
13
|
-
* @return {NexusObjectTypeDef}
|
|
14
|
-
*/
|
|
15
|
-
buildEntityDefinition(contentType) {
|
|
16
|
-
const { attributes } = contentType;
|
|
17
|
-
|
|
18
|
-
const name = naming.getEntityName(contentType);
|
|
19
|
-
const typeName = naming.getTypeName(contentType);
|
|
20
|
-
|
|
21
|
-
return objectType({
|
|
22
|
-
name,
|
|
23
|
-
|
|
24
|
-
definition(t) {
|
|
25
|
-
// Keep the ID attribute at the top level
|
|
26
|
-
t.id('id', { resolve: prop('id') });
|
|
27
|
-
|
|
28
|
-
if (!isEmpty(attributes)) {
|
|
29
|
-
// Keep the fetched object into a dedicated `attributes` field
|
|
30
|
-
// TODO: [v4] precise why we keep the ID
|
|
31
|
-
t.field('attributes', {
|
|
32
|
-
type: typeName,
|
|
33
|
-
resolve: identity,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// todo[v4]: add the meta field to the entity when there will be data in it (can't add an empty type for now)
|
|
38
|
-
// t.field('meta', { type: utils.getEntityMetaName(contentType) });
|
|
39
|
-
},
|
|
40
|
-
});
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
};
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { enumType } = require('nexus');
|
|
4
|
-
const { set } = require('lodash/fp');
|
|
5
|
-
const { toRegressedEnumValue } = require('@strapi/utils');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Build a Nexus enum type from a Strapi enum attribute
|
|
9
|
-
* @param {object} definition - The definition of the enum
|
|
10
|
-
* @param {string[]} definition.enum - The params of the enum
|
|
11
|
-
* @param {string} name - The name of the enum
|
|
12
|
-
* @return {NexusEnumTypeDef}
|
|
13
|
-
*/
|
|
14
|
-
const buildEnumTypeDefinition = (definition, name) => {
|
|
15
|
-
return enumType({
|
|
16
|
-
name,
|
|
17
|
-
members: definition.enum.reduce(
|
|
18
|
-
(acc, value) => set(toRegressedEnumValue(value), value, acc),
|
|
19
|
-
{}
|
|
20
|
-
),
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
module.exports = () => ({
|
|
25
|
-
buildEnumTypeDefinition,
|
|
26
|
-
});
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { inputObjectType } = require('nexus');
|
|
4
|
-
|
|
5
|
-
module.exports = ({ strapi }) => {
|
|
6
|
-
const rootLevelOperators = () => {
|
|
7
|
-
const { operators } = strapi.plugin('graphql').service('builders').filters;
|
|
8
|
-
|
|
9
|
-
return [operators.and, operators.or, operators.not];
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
const addScalarAttribute = (builder, attributeName, attribute) => {
|
|
13
|
-
const { naming, mappers } = strapi.plugin('graphql').service('utils');
|
|
14
|
-
|
|
15
|
-
const gqlType = mappers.strapiScalarToGraphQLScalar(attribute.type);
|
|
16
|
-
|
|
17
|
-
builder.field(attributeName, { type: naming.getScalarFilterInputTypeName(gqlType) });
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
const addRelationalAttribute = (builder, attributeName, attribute) => {
|
|
21
|
-
const utils = strapi.plugin('graphql').service('utils');
|
|
22
|
-
const extension = strapi.plugin('graphql').service('extension');
|
|
23
|
-
const { getFiltersInputTypeName } = utils.naming;
|
|
24
|
-
const { isMorphRelation } = utils.attributes;
|
|
25
|
-
|
|
26
|
-
const model = strapi.getModel(attribute.target);
|
|
27
|
-
|
|
28
|
-
// If there is no model corresponding to the attribute configuration
|
|
29
|
-
// or if the attribute is a polymorphic relation, then ignore it
|
|
30
|
-
if (!model || isMorphRelation(attribute)) return;
|
|
31
|
-
|
|
32
|
-
// If the target model is disabled, then ignore it too
|
|
33
|
-
if (extension.shadowCRUD(model.uid).isDisabled()) return;
|
|
34
|
-
|
|
35
|
-
builder.field(attributeName, { type: getFiltersInputTypeName(model) });
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const addComponentAttribute = (builder, attributeName, attribute) => {
|
|
39
|
-
const utils = strapi.plugin('graphql').service('utils');
|
|
40
|
-
const extension = strapi.plugin('graphql').service('extension');
|
|
41
|
-
const { getFiltersInputTypeName } = utils.naming;
|
|
42
|
-
|
|
43
|
-
const component = strapi.getModel(attribute.component);
|
|
44
|
-
|
|
45
|
-
// If there is no component corresponding to the attribute configuration, then ignore it
|
|
46
|
-
if (!component) return;
|
|
47
|
-
|
|
48
|
-
// If the component is disabled, then ignore it too
|
|
49
|
-
if (extension.shadowCRUD(component.uid).isDisabled()) return;
|
|
50
|
-
|
|
51
|
-
builder.field(attributeName, { type: getFiltersInputTypeName(component) });
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
const buildContentTypeFilters = (contentType) => {
|
|
55
|
-
const utils = strapi.plugin('graphql').service('utils');
|
|
56
|
-
const extension = strapi.plugin('graphql').service('extension');
|
|
57
|
-
|
|
58
|
-
const { getFiltersInputTypeName, getScalarFilterInputTypeName } = utils.naming;
|
|
59
|
-
const { isStrapiScalar, isRelation, isComponent } = utils.attributes;
|
|
60
|
-
|
|
61
|
-
const { attributes } = contentType;
|
|
62
|
-
|
|
63
|
-
const filtersTypeName = getFiltersInputTypeName(contentType);
|
|
64
|
-
|
|
65
|
-
return inputObjectType({
|
|
66
|
-
name: filtersTypeName,
|
|
67
|
-
|
|
68
|
-
definition(t) {
|
|
69
|
-
const validAttributes = Object.entries(attributes).filter(([attributeName]) =>
|
|
70
|
-
extension.shadowCRUD(contentType.uid).field(attributeName).hasFiltersEnabeld()
|
|
71
|
-
);
|
|
72
|
-
|
|
73
|
-
const isIDFilterEnabled = extension
|
|
74
|
-
.shadowCRUD(contentType.uid)
|
|
75
|
-
.field('id')
|
|
76
|
-
.hasFiltersEnabeld();
|
|
77
|
-
// Add an ID filter to the collection types
|
|
78
|
-
if (contentType.kind === 'collectionType' && isIDFilterEnabled) {
|
|
79
|
-
t.field('id', { type: getScalarFilterInputTypeName('ID') });
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// Add every defined attribute
|
|
83
|
-
for (const [attributeName, attribute] of validAttributes) {
|
|
84
|
-
// Handle scalars
|
|
85
|
-
if (isStrapiScalar(attribute)) {
|
|
86
|
-
addScalarAttribute(t, attributeName, attribute);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Handle relations
|
|
90
|
-
else if (isRelation(attribute)) {
|
|
91
|
-
addRelationalAttribute(t, attributeName, attribute);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// Handle components
|
|
95
|
-
else if (isComponent(attribute)) {
|
|
96
|
-
addComponentAttribute(t, attributeName, attribute);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Conditional clauses
|
|
101
|
-
for (const operator of rootLevelOperators()) {
|
|
102
|
-
operator.add(t, filtersTypeName);
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
return {
|
|
109
|
-
buildContentTypeFilters,
|
|
110
|
-
};
|
|
111
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { list } = require('nexus');
|
|
4
|
-
|
|
5
|
-
const AND_FIELD_NAME = 'and';
|
|
6
|
-
|
|
7
|
-
module.exports = () => ({
|
|
8
|
-
fieldName: AND_FIELD_NAME,
|
|
9
|
-
|
|
10
|
-
strapiOperator: '$and',
|
|
11
|
-
|
|
12
|
-
add(t, type) {
|
|
13
|
-
t.field(AND_FIELD_NAME, { type: list(type) });
|
|
14
|
-
},
|
|
15
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { list } = require('nexus');
|
|
4
|
-
|
|
5
|
-
const BETWEEN_FIELD_NAME = 'between';
|
|
6
|
-
|
|
7
|
-
module.exports = () => ({
|
|
8
|
-
fieldName: BETWEEN_FIELD_NAME,
|
|
9
|
-
|
|
10
|
-
strapiOperator: '$between',
|
|
11
|
-
|
|
12
|
-
add(t, type) {
|
|
13
|
-
t.field(BETWEEN_FIELD_NAME, { type: list(type) });
|
|
14
|
-
},
|
|
15
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { ValidationError } = require('@strapi/utils').errors;
|
|
4
|
-
|
|
5
|
-
const EQ_FIELD_NAME = 'eq';
|
|
6
|
-
|
|
7
|
-
module.exports = ({ strapi }) => ({
|
|
8
|
-
fieldName: EQ_FIELD_NAME,
|
|
9
|
-
|
|
10
|
-
strapiOperator: '$eq',
|
|
11
|
-
|
|
12
|
-
add(t, type) {
|
|
13
|
-
const { GRAPHQL_SCALARS } = strapi.plugin('graphql').service('constants');
|
|
14
|
-
|
|
15
|
-
if (!GRAPHQL_SCALARS.includes(type)) {
|
|
16
|
-
throw new ValidationError(
|
|
17
|
-
`Can't use "${EQ_FIELD_NAME}" operator. "${type}" is not a valid scalar`
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
t.field(EQ_FIELD_NAME, { type });
|
|
22
|
-
},
|
|
23
|
-
});
|