@strapi/plugin-graphql 5.47.0 → 5.48.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.
@@ -9,7 +9,7 @@ function _interopNamespaceDefaultOnly (e) { return Object.freeze({ __proto__: nu
9
9
  function __variableDynamicImportRuntime0__(path) {
10
10
  switch (path) {
11
11
  case './translations/cs.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/cs.json.js')); });
12
- case './translations/dk.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/dk.json.js')); });
12
+ case './translations/da.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/da.json.js')); });
13
13
  case './translations/en.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/en.json.js')); });
14
14
  case './translations/es.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/es.json.js')); });
15
15
  case './translations/fr.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/fr.json.js')); });
@@ -5,7 +5,7 @@ import { prefixPluginTranslations } from './utils/prefixPluginTranslations.mjs';
5
5
  function __variableDynamicImportRuntime0__(path) {
6
6
  switch (path) {
7
7
  case './translations/cs.json': return import('./translations/cs.json.mjs');
8
- case './translations/dk.json': return import('./translations/dk.json.mjs');
8
+ case './translations/da.json': return import('./translations/da.json.mjs');
9
9
  case './translations/en.json': return import('./translations/en.json.mjs');
10
10
  case './translations/es.json': return import('./translations/es.json.mjs');
11
11
  case './translations/fr.json': return import('./translations/fr.json.mjs');
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var dk = {
3
+ var da = {
4
4
  "plugin.description.long": "Tilføjer GraphQL endpoint med standard API metoder.",
5
5
  "plugin.description.short": "Tilføjer GraphQL endpoint med standard API metoder.",
6
6
  "plugin.name": "GraphQL"
7
7
  };
8
8
 
9
- module.exports = dk;
10
- //# sourceMappingURL=dk.json.js.map
9
+ module.exports = da;
10
+ //# sourceMappingURL=da.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"da.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,8 +1,8 @@
1
- var dk = {
1
+ var da = {
2
2
  "plugin.description.long": "Tilføjer GraphQL endpoint med standard API metoder.",
3
3
  "plugin.description.short": "Tilføjer GraphQL endpoint med standard API metoder.",
4
4
  "plugin.name": "GraphQL"
5
5
  };
6
6
 
7
- export { dk as default };
8
- //# sourceMappingURL=dk.json.mjs.map
7
+ export { da as default };
8
+ //# sourceMappingURL=da.json.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"da.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../server/src/services/content-api/index.ts"],"sourcesContent":["import { pruneSchema } from '@graphql-tools/utils';\nimport { makeSchema } from 'nexus';\nimport { prop, startsWith } from 'lodash/fp';\nimport type * as Nexus from 'nexus';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { wrapResolvers } from './wrap-resolvers';\nimport {\n registerSingleType,\n registerCollectionType,\n registerComponent,\n registerScalars,\n registerInternals,\n registerPolymorphicContentType,\n registerEnumsDefinition,\n registerInputsDefinition,\n registerFiltersDefinition,\n registerDynamicZonesDefinition,\n} from './register-functions';\nimport { TypeRegistry } from '../type-registry';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { mergeSchemas, addResolversToSchema } = require('@graphql-tools/schema');\n\n const { service: getGraphQLService } = strapi.plugin('graphql');\n const { config } = strapi.plugin('graphql');\n\n const { KINDS, GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const extensionService = getGraphQLService('extension');\n\n // Type Registry\n let registry: any;\n // Builders Instances\n let builders: any;\n // Cached set of built-in query fields (populated at bootstrap)\n let builtInQueryFields: Set<string> = new Set();\n\n const buildSchema = () => {\n const isShadowCRUDEnabled = !!config('shadowCRUD');\n\n // Create a new empty type registry\n registry = getGraphQLService('type-registry').new();\n\n // Reset the builders instances associated to the\n // content-api, and link the new type registry\n builders = getGraphQLService('builders').new('content-api', registry);\n\n registerScalars({ registry, strapi });\n registerInternals({ registry, strapi });\n\n if (isShadowCRUDEnabled) {\n shadowCRUD();\n }\n\n // Build a merged schema from both Nexus types & SDL type definitions\n const schema = buildMergedSchema({ registry });\n\n // Generate the extension configuration for the content API.\n // This extension instance needs to be generated after the Nexus schema's\n // generation, so that configurations created during types definitions\n // can be registered before being used in the wrap resolvers operation\n const extension = extensionService.generate({ typeRegistry: registry });\n\n // Add the extension's resolvers to the final schema\n const schemaWithResolvers = addResolversToSchema({\n schema,\n resolvers: extension.resolvers,\n });\n\n // Create a configuration object for the artifacts generation\n const outputs: Nexus.core.SchemaConfig['outputs'] = {\n schema: config('artifacts.schema', false),\n typegen: config('artifacts.typegen', false),\n };\n\n const currentEnv = strapi.config.get('environment');\n\n const nexusSchema = makeSchema({\n types: [],\n // Build the schema from the merged GraphQL schema.\n // Since we're passing the schema to the mergeSchema property, it'll transform our SDL type definitions\n // into Nexus type definition, thus allowing them to be handled by Nexus plugins & other processing\n mergeSchema: { schema: schemaWithResolvers },\n\n // Apply user-defined plugins\n plugins: extension.plugins,\n\n // Whether to generate artifacts (GraphQL schema, TS types definitions) or not.\n // By default, we generate artifacts only on development environment\n shouldGenerateArtifacts: config('generateArtifacts', currentEnv === 'development'),\n\n // Artifacts generation configuration\n outputs,\n });\n\n // Wrap resolvers if needed (auth, middlewares, policies...) as configured in the extension\n const wrappedNexusSchema = wrapResolvers({ schema: nexusSchema, strapi, extension });\n\n // Prune schema, remove unused types\n // eg: removes registered subscriptions if they're disabled in the config)\n const prunedNexusSchema = pruneSchema(wrappedNexusSchema);\n\n // Populate builtInQueryFields set for use by resolvers to avoid runtime schema builds\n try {\n const queryType = prunedNexusSchema.getQueryType();\n const fields = queryType ? Object.keys(queryType.getFields() || {}) : [];\n builtInQueryFields = new Set(fields);\n } catch (e) {\n // ignore; leave set empty\n }\n\n return prunedNexusSchema;\n };\n\n const getBuiltInQueryFields = () => builtInQueryFields;\n\n const isBuiltInQueryField = (fieldName: string) =>\n builtInQueryFields.has(fieldName) || fieldName.endsWith('_connection');\n\n const buildMergedSchema = ({ registry }: { registry: TypeRegistry }) => {\n // Here we extract types, plugins & typeDefs from a temporary generated\n // extension since there won't be any addition allowed after schemas generation\n const { types, typeDefs = [] } = extensionService.generate({ typeRegistry: registry });\n\n // Nexus schema built with user-defined & shadow CRUD auto generated Nexus types\n const nexusSchema = makeSchema({ types: [registry.definitions, types] });\n\n // Merge type definitions with the Nexus schema\n return mergeSchemas({\n typeDefs,\n // Give access to the shadowCRUD & nexus based types\n // Note: This is necessary so that types defined in SDL can reference types defined with Nexus\n schemas: [nexusSchema],\n });\n };\n\n const shadowCRUD = () => {\n const extensionService = getGraphQLService('extension');\n\n // Get every content type & component defined in Strapi\n const contentTypes = [\n ...Object.values(strapi.components),\n ...Object.values(strapi.contentTypes),\n ];\n\n // Disable Shadow CRUD for admin content types\n contentTypes\n .map(prop('uid'))\n .filter(startsWith('admin::'))\n .forEach((uid) => extensionService.shadowCRUD(uid).disable());\n\n const contentTypesWithShadowCRUD = contentTypes.filter((ct) =>\n extensionService.shadowCRUD(ct.uid).isEnabled()\n );\n\n // Generate and register definitions for every content type\n registerAPITypes(contentTypesWithShadowCRUD);\n\n // Generate and register polymorphic types' definitions\n registerMorphTypes(contentTypesWithShadowCRUD);\n };\n\n /**\n * Register needed GraphQL types for every content type\n * @param {object[]} contentTypes\n */\n const registerAPITypes = (contentTypes: Struct.Schema[]) => {\n for (const contentType of contentTypes) {\n const { modelType } = contentType;\n\n const registerOptions = { registry, strapi, builders };\n\n // Generate various types associated to the content type\n // (enums, dynamic-zones, filters, inputs...)\n registerEnumsDefinition(contentType, registerOptions);\n registerDynamicZonesDefinition(contentType, registerOptions);\n registerFiltersDefinition(contentType, registerOptions);\n registerInputsDefinition(contentType, registerOptions);\n\n // Generate & register component's definition\n if (modelType === 'component') {\n registerComponent(contentType, registerOptions);\n continue;\n }\n\n const { kind } = contentType;\n\n // Generate & register single type's definition\n if (kind === 'singleType') {\n registerSingleType(contentType as Struct.SingleTypeSchema, registerOptions);\n }\n\n // Generate & register collection type's definition\n else if (kind === 'collectionType') {\n registerCollectionType(contentType as Struct.CollectionTypeSchema, registerOptions);\n }\n }\n };\n\n const registerMorphTypes = (contentTypes: Struct.Schema[]) => {\n // Create & register a union type that includes every type or component registered\n const genericMorphType = builders.buildGenericMorphDefinition();\n registry.register(GENERIC_MORPH_TYPENAME, genericMorphType, { kind: KINDS.morph });\n\n for (const contentType of contentTypes) {\n registerPolymorphicContentType(contentType, { registry, strapi });\n }\n };\n\n return { buildSchema, getBuiltInQueryFields, isBuiltInQueryField };\n};\n"],"names":["strapi","mergeSchemas","addResolversToSchema","require","service","getGraphQLService","plugin","config","KINDS","GENERIC_MORPH_TYPENAME","extensionService","registry","builders","builtInQueryFields","Set","buildSchema","isShadowCRUDEnabled","new","registerScalars","registerInternals","shadowCRUD","schema","buildMergedSchema","extension","generate","typeRegistry","schemaWithResolvers","resolvers","outputs","typegen","currentEnv","get","nexusSchema","makeSchema","types","mergeSchema","plugins","shouldGenerateArtifacts","wrappedNexusSchema","wrapResolvers","prunedNexusSchema","pruneSchema","queryType","getQueryType","fields","Object","keys","getFields","e","getBuiltInQueryFields","isBuiltInQueryField","fieldName","has","endsWith","typeDefs","definitions","schemas","contentTypes","values","components","map","prop","filter","startsWith","forEach","uid","disable","contentTypesWithShadowCRUD","ct","isEnabled","registerAPITypes","registerMorphTypes","contentType","modelType","registerOptions","registerEnumsDefinition","registerDynamicZonesDefinition","registerFiltersDefinition","registerInputsDefinition","registerComponent","kind","registerSingleType","registerCollectionType","genericMorphType","buildGenericMorphDefinition","register","morph","registerPolymorphicContentType"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../server/src/services/content-api/index.ts"],"sourcesContent":["import { pruneSchema } from '@graphql-tools/utils';\nimport { makeSchema } from 'nexus';\nimport { prop, startsWith } from 'lodash/fp';\nimport type * as Nexus from 'nexus';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { wrapResolvers } from './wrap-resolvers';\nimport {\n registerSingleType,\n registerCollectionType,\n registerComponent,\n registerScalars,\n registerInternals,\n registerPolymorphicContentType,\n registerEnumsDefinition,\n registerInputsDefinition,\n registerFiltersDefinition,\n registerDynamicZonesDefinition,\n} from './register-functions';\nimport { TypeRegistry } from '../type-registry';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { mergeSchemas, addResolversToSchema } = require('@graphql-tools/schema');\n\n const { service: getGraphQLService } = strapi.plugin('graphql');\n const { config } = strapi.plugin('graphql');\n\n const { KINDS, GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const extensionService = getGraphQLService('extension');\n\n // Type Registry\n let registry: any;\n // Builders Instances\n let builders: any;\n // Cached set of built-in query fields (populated at bootstrap)\n let builtInQueryFields: Set<string> = new Set();\n\n const buildSchema = () => {\n const isShadowCRUDEnabled = !!config('shadowCRUD');\n\n // Create a new empty type registry\n registry = getGraphQLService('type-registry').new();\n\n // Reset the builders instances associated to the\n // content-api, and link the new type registry\n builders = getGraphQLService('builders').new('content-api', registry);\n\n registerScalars({ registry, strapi });\n registerInternals({ registry, strapi });\n\n if (isShadowCRUDEnabled) {\n shadowCRUD();\n }\n\n // Build a merged schema from both Nexus types & SDL type definitions\n const schema = buildMergedSchema({ registry });\n\n // Generate the extension configuration for the content API.\n // This extension instance needs to be generated after the Nexus schema's\n // generation, so that configurations created during types definitions\n // can be registered before being used in the wrap resolvers operation\n const extension = extensionService.generate({ typeRegistry: registry });\n\n // Add the extension's resolvers to the final schema\n const schemaWithResolvers = addResolversToSchema({\n schema,\n resolvers: extension.resolvers,\n });\n\n // Create a configuration object for the artifacts generation\n const outputs: Nexus.core.SchemaConfig['outputs'] = {\n schema: config('artifacts.schema', false),\n typegen: config('artifacts.typegen', false),\n };\n\n const currentEnv = strapi.config.get('environment');\n\n const nexusSchema = makeSchema({\n types: [],\n // Build the schema from the merged GraphQL schema.\n // Since we're passing the schema to the mergeSchema property, it'll transform our SDL type definitions\n // into Nexus type definition, thus allowing them to be handled by Nexus plugins & other processing\n mergeSchema: { schema: schemaWithResolvers },\n\n // Apply user-defined plugins\n plugins: extension.plugins,\n\n // Whether to generate artifacts (GraphQL schema, TS types definitions) or not.\n // By default, we generate artifacts only on development environment\n shouldGenerateArtifacts: config('generateArtifacts', currentEnv === 'development'),\n\n // Artifacts generation configuration\n outputs,\n });\n\n // Wrap resolvers if needed (auth, middlewares, policies...) as configured in the extension\n const wrappedNexusSchema = wrapResolvers({ schema: nexusSchema, strapi, extension });\n\n // Prune schema, remove unused types\n // eg: removes registered subscriptions if they're disabled in the config)\n const prunedNexusSchema = pruneSchema(wrappedNexusSchema);\n\n // Populate builtInQueryFields set for use by resolvers to avoid runtime schema builds\n try {\n const queryType = prunedNexusSchema.getQueryType();\n const fields = queryType ? Object.keys(queryType.getFields() || {}) : [];\n builtInQueryFields = new Set(fields);\n } catch (e) {\n // ignore; leave set empty\n }\n\n return prunedNexusSchema;\n };\n\n const getBuiltInQueryFields = () => builtInQueryFields;\n\n const isBuiltInQueryField = (fieldName: string) =>\n builtInQueryFields.has(fieldName) || fieldName.endsWith('_connection');\n\n const buildMergedSchema = ({ registry }: { registry: TypeRegistry }) => {\n // Here we extract types, plugins & typeDefs from a temporary generated\n // extension since there won't be any addition allowed after schemas generation\n const { types, typeDefs = [] } = extensionService.generate({ typeRegistry: registry });\n\n // Nexus schema built with user-defined & shadow CRUD auto generated Nexus types\n const nexusSchema = makeSchema({ types: [registry.definitions, types] });\n\n // Merge type definitions with the Nexus schema\n return mergeSchemas({\n typeDefs,\n // Give access to the shadowCRUD & nexus based types\n // Note: This is necessary so that types defined in SDL can reference types defined with Nexus\n schemas: [nexusSchema],\n });\n };\n\n const shadowCRUD = () => {\n const extensionService = getGraphQLService('extension');\n\n // Get every content type & component defined in Strapi\n const contentTypes = [\n ...Object.values(strapi.components),\n ...Object.values(strapi.contentTypes),\n ];\n\n // Disable Shadow CRUD for admin content types\n contentTypes\n .map(prop('uid'))\n .filter(startsWith('admin::'))\n .forEach((uid) => extensionService.shadowCRUD(uid).disable());\n\n const contentTypesWithShadowCRUD = contentTypes.filter((ct) =>\n extensionService.shadowCRUD(ct.uid).isEnabled()\n );\n\n // Generate and register definitions for every content type\n registerAPITypes(contentTypesWithShadowCRUD);\n\n // Generate and register polymorphic types' definitions\n registerMorphTypes(contentTypesWithShadowCRUD);\n };\n\n /**\n * Register needed GraphQL types for every content type\n * @param {object[]} contentTypes\n */\n const registerAPITypes = (contentTypes: Struct.Schema[]) => {\n for (const contentType of contentTypes) {\n const { modelType } = contentType;\n\n const registerOptions = { registry, strapi, builders };\n\n // Generate various types associated to the content type\n // (enums, dynamic-zones, filters, inputs...)\n registerEnumsDefinition(contentType, registerOptions);\n registerDynamicZonesDefinition(contentType, registerOptions);\n registerFiltersDefinition(contentType, registerOptions);\n registerInputsDefinition(contentType, registerOptions);\n\n // Generate & register component's definition\n if (modelType === 'component') {\n registerComponent(contentType, registerOptions);\n continue;\n }\n\n const { kind } = contentType;\n\n // Generate & register single type's definition\n if (kind === 'singleType') {\n registerSingleType(contentType, registerOptions);\n }\n\n // Generate & register collection type's definition\n else if (kind === 'collectionType') {\n registerCollectionType(contentType, registerOptions);\n }\n }\n };\n\n const registerMorphTypes = (contentTypes: Struct.Schema[]) => {\n // Create & register a union type that includes every type or component registered\n const genericMorphType = builders.buildGenericMorphDefinition();\n registry.register(GENERIC_MORPH_TYPENAME, genericMorphType, { kind: KINDS.morph });\n\n for (const contentType of contentTypes) {\n registerPolymorphicContentType(contentType, { registry, strapi });\n }\n };\n\n return { buildSchema, getBuiltInQueryFields, isBuiltInQueryField };\n};\n"],"names":["strapi","mergeSchemas","addResolversToSchema","require","service","getGraphQLService","plugin","config","KINDS","GENERIC_MORPH_TYPENAME","extensionService","registry","builders","builtInQueryFields","Set","buildSchema","isShadowCRUDEnabled","new","registerScalars","registerInternals","shadowCRUD","schema","buildMergedSchema","extension","generate","typeRegistry","schemaWithResolvers","resolvers","outputs","typegen","currentEnv","get","nexusSchema","makeSchema","types","mergeSchema","plugins","shouldGenerateArtifacts","wrappedNexusSchema","wrapResolvers","prunedNexusSchema","pruneSchema","queryType","getQueryType","fields","Object","keys","getFields","e","getBuiltInQueryFields","isBuiltInQueryField","fieldName","has","endsWith","typeDefs","definitions","schemas","contentTypes","values","components","map","prop","filter","startsWith","forEach","uid","disable","contentTypesWithShadowCRUD","ct","isEnabled","registerAPITypes","registerMorphTypes","contentType","modelType","registerOptions","registerEnumsDefinition","registerDynamicZonesDefinition","registerFiltersDefinition","registerInputsDefinition","registerComponent","kind","registerSingleType","registerCollectionType","genericMorphType","buildGenericMorphDefinition","register","morph","registerPolymorphicContentType"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../server/src/services/content-api/index.ts"],"sourcesContent":["import { pruneSchema } from '@graphql-tools/utils';\nimport { makeSchema } from 'nexus';\nimport { prop, startsWith } from 'lodash/fp';\nimport type * as Nexus from 'nexus';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { wrapResolvers } from './wrap-resolvers';\nimport {\n registerSingleType,\n registerCollectionType,\n registerComponent,\n registerScalars,\n registerInternals,\n registerPolymorphicContentType,\n registerEnumsDefinition,\n registerInputsDefinition,\n registerFiltersDefinition,\n registerDynamicZonesDefinition,\n} from './register-functions';\nimport { TypeRegistry } from '../type-registry';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { mergeSchemas, addResolversToSchema } = require('@graphql-tools/schema');\n\n const { service: getGraphQLService } = strapi.plugin('graphql');\n const { config } = strapi.plugin('graphql');\n\n const { KINDS, GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const extensionService = getGraphQLService('extension');\n\n // Type Registry\n let registry: any;\n // Builders Instances\n let builders: any;\n // Cached set of built-in query fields (populated at bootstrap)\n let builtInQueryFields: Set<string> = new Set();\n\n const buildSchema = () => {\n const isShadowCRUDEnabled = !!config('shadowCRUD');\n\n // Create a new empty type registry\n registry = getGraphQLService('type-registry').new();\n\n // Reset the builders instances associated to the\n // content-api, and link the new type registry\n builders = getGraphQLService('builders').new('content-api', registry);\n\n registerScalars({ registry, strapi });\n registerInternals({ registry, strapi });\n\n if (isShadowCRUDEnabled) {\n shadowCRUD();\n }\n\n // Build a merged schema from both Nexus types & SDL type definitions\n const schema = buildMergedSchema({ registry });\n\n // Generate the extension configuration for the content API.\n // This extension instance needs to be generated after the Nexus schema's\n // generation, so that configurations created during types definitions\n // can be registered before being used in the wrap resolvers operation\n const extension = extensionService.generate({ typeRegistry: registry });\n\n // Add the extension's resolvers to the final schema\n const schemaWithResolvers = addResolversToSchema({\n schema,\n resolvers: extension.resolvers,\n });\n\n // Create a configuration object for the artifacts generation\n const outputs: Nexus.core.SchemaConfig['outputs'] = {\n schema: config('artifacts.schema', false),\n typegen: config('artifacts.typegen', false),\n };\n\n const currentEnv = strapi.config.get('environment');\n\n const nexusSchema = makeSchema({\n types: [],\n // Build the schema from the merged GraphQL schema.\n // Since we're passing the schema to the mergeSchema property, it'll transform our SDL type definitions\n // into Nexus type definition, thus allowing them to be handled by Nexus plugins & other processing\n mergeSchema: { schema: schemaWithResolvers },\n\n // Apply user-defined plugins\n plugins: extension.plugins,\n\n // Whether to generate artifacts (GraphQL schema, TS types definitions) or not.\n // By default, we generate artifacts only on development environment\n shouldGenerateArtifacts: config('generateArtifacts', currentEnv === 'development'),\n\n // Artifacts generation configuration\n outputs,\n });\n\n // Wrap resolvers if needed (auth, middlewares, policies...) as configured in the extension\n const wrappedNexusSchema = wrapResolvers({ schema: nexusSchema, strapi, extension });\n\n // Prune schema, remove unused types\n // eg: removes registered subscriptions if they're disabled in the config)\n const prunedNexusSchema = pruneSchema(wrappedNexusSchema);\n\n // Populate builtInQueryFields set for use by resolvers to avoid runtime schema builds\n try {\n const queryType = prunedNexusSchema.getQueryType();\n const fields = queryType ? Object.keys(queryType.getFields() || {}) : [];\n builtInQueryFields = new Set(fields);\n } catch (e) {\n // ignore; leave set empty\n }\n\n return prunedNexusSchema;\n };\n\n const getBuiltInQueryFields = () => builtInQueryFields;\n\n const isBuiltInQueryField = (fieldName: string) =>\n builtInQueryFields.has(fieldName) || fieldName.endsWith('_connection');\n\n const buildMergedSchema = ({ registry }: { registry: TypeRegistry }) => {\n // Here we extract types, plugins & typeDefs from a temporary generated\n // extension since there won't be any addition allowed after schemas generation\n const { types, typeDefs = [] } = extensionService.generate({ typeRegistry: registry });\n\n // Nexus schema built with user-defined & shadow CRUD auto generated Nexus types\n const nexusSchema = makeSchema({ types: [registry.definitions, types] });\n\n // Merge type definitions with the Nexus schema\n return mergeSchemas({\n typeDefs,\n // Give access to the shadowCRUD & nexus based types\n // Note: This is necessary so that types defined in SDL can reference types defined with Nexus\n schemas: [nexusSchema],\n });\n };\n\n const shadowCRUD = () => {\n const extensionService = getGraphQLService('extension');\n\n // Get every content type & component defined in Strapi\n const contentTypes = [\n ...Object.values(strapi.components),\n ...Object.values(strapi.contentTypes),\n ];\n\n // Disable Shadow CRUD for admin content types\n contentTypes\n .map(prop('uid'))\n .filter(startsWith('admin::'))\n .forEach((uid) => extensionService.shadowCRUD(uid).disable());\n\n const contentTypesWithShadowCRUD = contentTypes.filter((ct) =>\n extensionService.shadowCRUD(ct.uid).isEnabled()\n );\n\n // Generate and register definitions for every content type\n registerAPITypes(contentTypesWithShadowCRUD);\n\n // Generate and register polymorphic types' definitions\n registerMorphTypes(contentTypesWithShadowCRUD);\n };\n\n /**\n * Register needed GraphQL types for every content type\n * @param {object[]} contentTypes\n */\n const registerAPITypes = (contentTypes: Struct.Schema[]) => {\n for (const contentType of contentTypes) {\n const { modelType } = contentType;\n\n const registerOptions = { registry, strapi, builders };\n\n // Generate various types associated to the content type\n // (enums, dynamic-zones, filters, inputs...)\n registerEnumsDefinition(contentType, registerOptions);\n registerDynamicZonesDefinition(contentType, registerOptions);\n registerFiltersDefinition(contentType, registerOptions);\n registerInputsDefinition(contentType, registerOptions);\n\n // Generate & register component's definition\n if (modelType === 'component') {\n registerComponent(contentType, registerOptions);\n continue;\n }\n\n const { kind } = contentType;\n\n // Generate & register single type's definition\n if (kind === 'singleType') {\n registerSingleType(contentType as Struct.SingleTypeSchema, registerOptions);\n }\n\n // Generate & register collection type's definition\n else if (kind === 'collectionType') {\n registerCollectionType(contentType as Struct.CollectionTypeSchema, registerOptions);\n }\n }\n };\n\n const registerMorphTypes = (contentTypes: Struct.Schema[]) => {\n // Create & register a union type that includes every type or component registered\n const genericMorphType = builders.buildGenericMorphDefinition();\n registry.register(GENERIC_MORPH_TYPENAME, genericMorphType, { kind: KINDS.morph });\n\n for (const contentType of contentTypes) {\n registerPolymorphicContentType(contentType, { registry, strapi });\n }\n };\n\n return { buildSchema, getBuiltInQueryFields, isBuiltInQueryField };\n};\n"],"names":["strapi","mergeSchemas","addResolversToSchema","require","service","getGraphQLService","plugin","config","KINDS","GENERIC_MORPH_TYPENAME","extensionService","registry","builders","builtInQueryFields","Set","buildSchema","isShadowCRUDEnabled","new","registerScalars","registerInternals","shadowCRUD","schema","buildMergedSchema","extension","generate","typeRegistry","schemaWithResolvers","resolvers","outputs","typegen","currentEnv","get","nexusSchema","makeSchema","types","mergeSchema","plugins","shouldGenerateArtifacts","wrappedNexusSchema","wrapResolvers","prunedNexusSchema","pruneSchema","queryType","getQueryType","fields","Object","keys","getFields","e","getBuiltInQueryFields","isBuiltInQueryField","fieldName","has","endsWith","typeDefs","definitions","schemas","contentTypes","values","components","map","prop","filter","startsWith","forEach","uid","disable","contentTypesWithShadowCRUD","ct","isEnabled","registerAPITypes","registerMorphTypes","contentType","modelType","registerOptions","registerEnumsDefinition","registerDynamicZonesDefinition","registerFiltersDefinition","registerInputsDefinition","registerComponent","kind","registerSingleType","registerCollectionType","genericMorphType","buildGenericMorphDefinition","register","morph","registerPolymorphicContentType"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../server/src/services/content-api/index.ts"],"sourcesContent":["import { pruneSchema } from '@graphql-tools/utils';\nimport { makeSchema } from 'nexus';\nimport { prop, startsWith } from 'lodash/fp';\nimport type * as Nexus from 'nexus';\nimport type { Core, Struct } from '@strapi/types';\n\nimport { wrapResolvers } from './wrap-resolvers';\nimport {\n registerSingleType,\n registerCollectionType,\n registerComponent,\n registerScalars,\n registerInternals,\n registerPolymorphicContentType,\n registerEnumsDefinition,\n registerInputsDefinition,\n registerFiltersDefinition,\n registerDynamicZonesDefinition,\n} from './register-functions';\nimport { TypeRegistry } from '../type-registry';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { mergeSchemas, addResolversToSchema } = require('@graphql-tools/schema');\n\n const { service: getGraphQLService } = strapi.plugin('graphql');\n const { config } = strapi.plugin('graphql');\n\n const { KINDS, GENERIC_MORPH_TYPENAME } = getGraphQLService('constants');\n const extensionService = getGraphQLService('extension');\n\n // Type Registry\n let registry: any;\n // Builders Instances\n let builders: any;\n // Cached set of built-in query fields (populated at bootstrap)\n let builtInQueryFields: Set<string> = new Set();\n\n const buildSchema = () => {\n const isShadowCRUDEnabled = !!config('shadowCRUD');\n\n // Create a new empty type registry\n registry = getGraphQLService('type-registry').new();\n\n // Reset the builders instances associated to the\n // content-api, and link the new type registry\n builders = getGraphQLService('builders').new('content-api', registry);\n\n registerScalars({ registry, strapi });\n registerInternals({ registry, strapi });\n\n if (isShadowCRUDEnabled) {\n shadowCRUD();\n }\n\n // Build a merged schema from both Nexus types & SDL type definitions\n const schema = buildMergedSchema({ registry });\n\n // Generate the extension configuration for the content API.\n // This extension instance needs to be generated after the Nexus schema's\n // generation, so that configurations created during types definitions\n // can be registered before being used in the wrap resolvers operation\n const extension = extensionService.generate({ typeRegistry: registry });\n\n // Add the extension's resolvers to the final schema\n const schemaWithResolvers = addResolversToSchema({\n schema,\n resolvers: extension.resolvers,\n });\n\n // Create a configuration object for the artifacts generation\n const outputs: Nexus.core.SchemaConfig['outputs'] = {\n schema: config('artifacts.schema', false),\n typegen: config('artifacts.typegen', false),\n };\n\n const currentEnv = strapi.config.get('environment');\n\n const nexusSchema = makeSchema({\n types: [],\n // Build the schema from the merged GraphQL schema.\n // Since we're passing the schema to the mergeSchema property, it'll transform our SDL type definitions\n // into Nexus type definition, thus allowing them to be handled by Nexus plugins & other processing\n mergeSchema: { schema: schemaWithResolvers },\n\n // Apply user-defined plugins\n plugins: extension.plugins,\n\n // Whether to generate artifacts (GraphQL schema, TS types definitions) or not.\n // By default, we generate artifacts only on development environment\n shouldGenerateArtifacts: config('generateArtifacts', currentEnv === 'development'),\n\n // Artifacts generation configuration\n outputs,\n });\n\n // Wrap resolvers if needed (auth, middlewares, policies...) as configured in the extension\n const wrappedNexusSchema = wrapResolvers({ schema: nexusSchema, strapi, extension });\n\n // Prune schema, remove unused types\n // eg: removes registered subscriptions if they're disabled in the config)\n const prunedNexusSchema = pruneSchema(wrappedNexusSchema);\n\n // Populate builtInQueryFields set for use by resolvers to avoid runtime schema builds\n try {\n const queryType = prunedNexusSchema.getQueryType();\n const fields = queryType ? Object.keys(queryType.getFields() || {}) : [];\n builtInQueryFields = new Set(fields);\n } catch (e) {\n // ignore; leave set empty\n }\n\n return prunedNexusSchema;\n };\n\n const getBuiltInQueryFields = () => builtInQueryFields;\n\n const isBuiltInQueryField = (fieldName: string) =>\n builtInQueryFields.has(fieldName) || fieldName.endsWith('_connection');\n\n const buildMergedSchema = ({ registry }: { registry: TypeRegistry }) => {\n // Here we extract types, plugins & typeDefs from a temporary generated\n // extension since there won't be any addition allowed after schemas generation\n const { types, typeDefs = [] } = extensionService.generate({ typeRegistry: registry });\n\n // Nexus schema built with user-defined & shadow CRUD auto generated Nexus types\n const nexusSchema = makeSchema({ types: [registry.definitions, types] });\n\n // Merge type definitions with the Nexus schema\n return mergeSchemas({\n typeDefs,\n // Give access to the shadowCRUD & nexus based types\n // Note: This is necessary so that types defined in SDL can reference types defined with Nexus\n schemas: [nexusSchema],\n });\n };\n\n const shadowCRUD = () => {\n const extensionService = getGraphQLService('extension');\n\n // Get every content type & component defined in Strapi\n const contentTypes = [\n ...Object.values(strapi.components),\n ...Object.values(strapi.contentTypes),\n ];\n\n // Disable Shadow CRUD for admin content types\n contentTypes\n .map(prop('uid'))\n .filter(startsWith('admin::'))\n .forEach((uid) => extensionService.shadowCRUD(uid).disable());\n\n const contentTypesWithShadowCRUD = contentTypes.filter((ct) =>\n extensionService.shadowCRUD(ct.uid).isEnabled()\n );\n\n // Generate and register definitions for every content type\n registerAPITypes(contentTypesWithShadowCRUD);\n\n // Generate and register polymorphic types' definitions\n registerMorphTypes(contentTypesWithShadowCRUD);\n };\n\n /**\n * Register needed GraphQL types for every content type\n * @param {object[]} contentTypes\n */\n const registerAPITypes = (contentTypes: Struct.Schema[]) => {\n for (const contentType of contentTypes) {\n const { modelType } = contentType;\n\n const registerOptions = { registry, strapi, builders };\n\n // Generate various types associated to the content type\n // (enums, dynamic-zones, filters, inputs...)\n registerEnumsDefinition(contentType, registerOptions);\n registerDynamicZonesDefinition(contentType, registerOptions);\n registerFiltersDefinition(contentType, registerOptions);\n registerInputsDefinition(contentType, registerOptions);\n\n // Generate & register component's definition\n if (modelType === 'component') {\n registerComponent(contentType, registerOptions);\n continue;\n }\n\n const { kind } = contentType;\n\n // Generate & register single type's definition\n if (kind === 'singleType') {\n registerSingleType(contentType, registerOptions);\n }\n\n // Generate & register collection type's definition\n else if (kind === 'collectionType') {\n registerCollectionType(contentType, registerOptions);\n }\n }\n };\n\n const registerMorphTypes = (contentTypes: Struct.Schema[]) => {\n // Create & register a union type that includes every type or component registered\n const genericMorphType = builders.buildGenericMorphDefinition();\n registry.register(GENERIC_MORPH_TYPENAME, genericMorphType, { kind: KINDS.morph });\n\n for (const contentType of contentTypes) {\n registerPolymorphicContentType(contentType, { registry, strapi });\n }\n };\n\n return { buildSchema, getBuiltInQueryFields, isBuiltInQueryField };\n};\n"],"names":["strapi","mergeSchemas","addResolversToSchema","require","service","getGraphQLService","plugin","config","KINDS","GENERIC_MORPH_TYPENAME","extensionService","registry","builders","builtInQueryFields","Set","buildSchema","isShadowCRUDEnabled","new","registerScalars","registerInternals","shadowCRUD","schema","buildMergedSchema","extension","generate","typeRegistry","schemaWithResolvers","resolvers","outputs","typegen","currentEnv","get","nexusSchema","makeSchema","types","mergeSchema","plugins","shouldGenerateArtifacts","wrappedNexusSchema","wrapResolvers","prunedNexusSchema","pruneSchema","queryType","getQueryType","fields","Object","keys","getFields","e","getBuiltInQueryFields","isBuiltInQueryField","fieldName","has","endsWith","typeDefs","definitions","schemas","contentTypes","values","components","map","prop","filter","startsWith","forEach","uid","disable","contentTypesWithShadowCRUD","ct","isEnabled","registerAPITypes","registerMorphTypes","contentType","modelType","registerOptions","registerEnumsDefinition","registerDynamicZonesDefinition","registerFiltersDefinition","registerInputsDefinition","registerComponent","kind","registerSingleType","registerCollectionType","genericMorphType","buildGenericMorphDefinition","register","morph","registerPolymorphicContentType"],"mappings":";;;;;;;;;;;;;;;AAqBA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,GAAA;;AAEjD,IAAA,MAAM,EAAEC,YAAY,EAAEC,oBAAoB,EAAE,GAAGC,OAAAA,CAAQ,uBAAA,CAAA;AAEvD,IAAA,MAAM,EAAEC,OAAAA,EAASC,iBAAiB,EAAE,GAAGL,MAAAA,CAAOM,MAAM,CAAC,SAAA,CAAA;AACrD,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGP,MAAAA,CAAOM,MAAM,CAAC,SAAA,CAAA;AAEjC,IAAA,MAAM,EAAEE,KAAK,EAAEC,sBAAsB,EAAE,GAAGJ,iBAAAA,CAAkB,WAAA,CAAA;AAC5D,IAAA,MAAMK,mBAAmBL,iBAAAA,CAAkB,WAAA,CAAA;;IAG3C,IAAIM,QAAAA;;IAEJ,IAAIC,QAAAA;;AAEJ,IAAA,IAAIC,qBAAkC,IAAIC,GAAAA,EAAAA;AAE1C,IAAA,MAAMC,WAAAA,GAAc,IAAA;QAClB,MAAMC,mBAAAA,GAAsB,CAAC,CAACT,MAAAA,CAAO,YAAA,CAAA;;QAGrCI,QAAAA,GAAWN,iBAAAA,CAAkB,iBAAiBY,GAAG,EAAA;;;AAIjDL,QAAAA,QAAAA,GAAWP,iBAAAA,CAAkB,UAAA,CAAA,CAAYY,GAAG,CAAC,aAAA,EAAeN,QAAAA,CAAAA;QAE5DO,eAAAA,CAAgB;AAAEP,YAAAA,QAAAA;AAAUX,YAAAA;AAAO,SAAA,CAAA;QACnCmB,iBAAAA,CAAkB;AAAER,YAAAA,QAAAA;AAAUX,YAAAA;AAAO,SAAA,CAAA;AAErC,QAAA,IAAIgB,mBAAAA,EAAqB;AACvBI,YAAAA,UAAAA,EAAAA;AACF,QAAA;;AAGA,QAAA,MAAMC,SAASC,iBAAAA,CAAkB;AAAEX,YAAAA;AAAS,SAAA,CAAA;;;;;QAM5C,MAAMY,SAAAA,GAAYb,gBAAAA,CAAiBc,QAAQ,CAAC;YAAEC,YAAAA,EAAcd;AAAS,SAAA,CAAA;;AAGrE,QAAA,MAAMe,sBAAsBxB,oBAAAA,CAAqB;AAC/CmB,YAAAA,MAAAA;AACAM,YAAAA,SAAAA,EAAWJ,UAAUI;AACvB,SAAA,CAAA;;AAGA,QAAA,MAAMC,OAAAA,GAA8C;AAClDP,YAAAA,MAAAA,EAAQd,OAAO,kBAAA,EAAoB,KAAA,CAAA;AACnCsB,YAAAA,OAAAA,EAAStB,OAAO,mBAAA,EAAqB,KAAA;AACvC,SAAA;AAEA,QAAA,MAAMuB,UAAAA,GAAa9B,MAAAA,CAAOO,MAAM,CAACwB,GAAG,CAAC,aAAA,CAAA;AAErC,QAAA,MAAMC,cAAcC,UAAAA,CAAW;AAC7BC,YAAAA,KAAAA,EAAO,EAAE;;;;YAITC,WAAAA,EAAa;gBAAEd,MAAAA,EAAQK;AAAoB,aAAA;;AAG3CU,YAAAA,OAAAA,EAASb,UAAUa,OAAO;;;YAI1BC,uBAAAA,EAAyB9B,MAAAA,CAAO,qBAAqBuB,UAAAA,KAAe,aAAA,CAAA;;AAGpEF,YAAAA;AACF,SAAA,CAAA;;AAGA,QAAA,MAAMU,qBAAqBC,aAAAA,CAAc;YAAElB,MAAAA,EAAQW,WAAAA;AAAahC,YAAAA,MAAAA;AAAQuB,YAAAA;AAAU,SAAA,CAAA;;;AAIlF,QAAA,MAAMiB,oBAAoBC,WAAAA,CAAYH,kBAAAA,CAAAA;;QAGtC,IAAI;YACF,MAAMI,SAAAA,GAAYF,kBAAkBG,YAAY,EAAA;YAChD,MAAMC,MAAAA,GAASF,SAAAA,GAAYG,MAAAA,CAAOC,IAAI,CAACJ,UAAUK,SAAS,EAAA,IAAM,EAAC,CAAA,GAAK,EAAE;AACxElC,YAAAA,kBAAAA,GAAqB,IAAIC,GAAAA,CAAI8B,MAAAA,CAAAA;AAC/B,QAAA,CAAA,CAAE,OAAOI,CAAAA,EAAG;;AAEZ,QAAA;QAEA,OAAOR,iBAAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAMS,wBAAwB,IAAMpC,kBAAAA;IAEpC,MAAMqC,mBAAAA,GAAsB,CAACC,SAAAA,GAC3BtC,kBAAAA,CAAmBuC,GAAG,CAACD,SAAAA,CAAAA,IAAcA,SAAAA,CAAUE,QAAQ,CAAC,aAAA,CAAA;AAE1D,IAAA,MAAM/B,iBAAAA,GAAoB,CAAC,EAAEX,QAAQ,EAA8B,GAAA;;;QAGjE,MAAM,EAAEuB,KAAK,EAAEoB,QAAAA,GAAW,EAAE,EAAE,GAAG5C,gBAAAA,CAAiBc,QAAQ,CAAC;YAAEC,YAAAA,EAAcd;AAAS,SAAA,CAAA;;AAGpF,QAAA,MAAMqB,cAAcC,UAAAA,CAAW;YAAEC,KAAAA,EAAO;AAACvB,gBAAAA,QAAAA,CAAS4C,WAAW;AAAErB,gBAAAA;AAAM;AAAC,SAAA,CAAA;;AAGtE,QAAA,OAAOjC,YAAAA,CAAa;AAClBqD,YAAAA,QAAAA;;;YAGAE,OAAAA,EAAS;AAACxB,gBAAAA;AAAY;AACxB,SAAA,CAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMZ,UAAAA,GAAa,IAAA;AACjB,QAAA,MAAMV,mBAAmBL,iBAAAA,CAAkB,WAAA,CAAA;;AAG3C,QAAA,MAAMoD,YAAAA,GAAe;eAChBZ,MAAAA,CAAOa,MAAM,CAAC1D,MAAAA,CAAO2D,UAAU,CAAA;eAC/Bd,MAAAA,CAAOa,MAAM,CAAC1D,MAAAA,CAAOyD,YAAY;AACrC,SAAA;;AAGDA,QAAAA,YAAAA,CACGG,GAAG,CAACC,IAAAA,CAAK,KAAA,CAAA,CAAA,CACTC,MAAM,CAACC,UAAAA,CAAW,SAAA,CAAA,CAAA,CAClBC,OAAO,CAAC,CAACC,GAAAA,GAAQvD,gBAAAA,CAAiBU,UAAU,CAAC6C,KAAKC,OAAO,EAAA,CAAA;AAE5D,QAAA,MAAMC,0BAAAA,GAA6BV,YAAAA,CAAaK,MAAM,CAAC,CAACM,EAAAA,GACtD1D,gBAAAA,CAAiBU,UAAU,CAACgD,EAAAA,CAAGH,GAAG,CAAA,CAAEI,SAAS,EAAA,CAAA;;QAI/CC,gBAAAA,CAAiBH,0BAAAA,CAAAA;;QAGjBI,kBAAAA,CAAmBJ,0BAAAA,CAAAA;AACrB,IAAA,CAAA;AAEA;;;MAIA,MAAMG,mBAAmB,CAACb,YAAAA,GAAAA;QACxB,KAAK,MAAMe,eAAef,YAAAA,CAAc;YACtC,MAAM,EAAEgB,SAAS,EAAE,GAAGD,WAAAA;AAEtB,YAAA,MAAME,eAAAA,GAAkB;AAAE/D,gBAAAA,QAAAA;AAAUX,gBAAAA,MAAAA;AAAQY,gBAAAA;AAAS,aAAA;;;AAIrD+D,YAAAA,uBAAAA,CAAwBH,WAAAA,EAAaE,eAAAA,CAAAA;AACrCE,YAAAA,8BAAAA,CAA+BJ,WAAAA,EAAaE,eAAAA,CAAAA;AAC5CG,YAAAA,yBAAAA,CAA0BL,WAAAA,EAAaE,eAAAA,CAAAA;AACvCI,YAAAA,wBAAAA,CAAyBN,WAAAA,EAAaE,eAAAA,CAAAA;;AAGtC,YAAA,IAAID,cAAc,WAAA,EAAa;AAC7BM,gBAAAA,iBAAAA,CAAkBP,WAAAA,EAAaE,eAAAA,CAAAA;AAC/B,gBAAA;AACF,YAAA;YAEA,MAAM,EAAEM,IAAI,EAAE,GAAGR,WAAAA;;AAGjB,YAAA,IAAIQ,SAAS,YAAA,EAAc;AACzBC,gBAAAA,kBAAAA,CAAmBT,WAAAA,EAAaE,eAAAA,CAAAA;YAClC,CAAA,MAGK,IAAIM,SAAS,gBAAA,EAAkB;AAClCE,gBAAAA,sBAAAA,CAAuBV,WAAAA,EAAaE,eAAAA,CAAAA;AACtC,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMH,qBAAqB,CAACd,YAAAA,GAAAA;;QAE1B,MAAM0B,gBAAAA,GAAmBvE,SAASwE,2BAA2B,EAAA;QAC7DzE,QAAAA,CAAS0E,QAAQ,CAAC5E,sBAAAA,EAAwB0E,gBAAAA,EAAkB;AAAEH,YAAAA,IAAAA,EAAMxE,MAAM8E;AAAM,SAAA,CAAA;QAEhF,KAAK,MAAMd,eAAef,YAAAA,CAAc;AACtC8B,YAAAA,8BAAAA,CAA+Bf,WAAAA,EAAa;AAAE7D,gBAAAA,QAAAA;AAAUX,gBAAAA;AAAO,aAAA,CAAA;AACjE,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AAAEe,QAAAA,WAAAA;AAAakC,QAAAA,qBAAAA;AAAuBC,QAAAA;AAAoB,KAAA;AACnE,CAAA;;;;"}
@@ -1,4 +1,3 @@
1
- /// <reference types="koa-session" />
2
1
  import { type ApolloServerPlugin } from '@apollo/server';
3
2
  import type { Core } from '@strapi/types';
4
3
  import type { BaseContext } from 'koa';
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":";AACA,OAAO,EAAgB,KAAK,kBAAkB,EAA4B,MAAM,gBAAgB,CAAC;AAUjG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAA8C,MAAM,KAAK,CAAC;AAUnF,KAAK,oBAAoB,GAAG,WAAW,GAAG;IACxC,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrE,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,KAAK,MAAM,KAClB,mBAAmB,oBAAoB,CA8EzC,CAAC;AAEF,wBAAsB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,iBAwKlE"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../../server/src/bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,kBAAkB,EAA4B,MAAM,gBAAgB,CAAC;AAUjG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAA8C,MAAM,KAAK,CAAC;AAUnF,KAAK,oBAAoB,GAAG,WAAW,GAAG;IACxC,mBAAmB,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrE,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,KAAK,MAAM,KAClB,mBAAmB,oBAAoB,CA8EzC,CAAC;AAEF,wBAAsB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,iBAwKlE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/plugin-graphql",
3
- "version": "5.47.0",
3
+ "version": "5.48.0",
4
4
  "description": "Adds GraphQL endpoint with default API methods.",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -65,7 +65,7 @@
65
65
  "@koa/cors": "5.0.0",
66
66
  "@strapi/design-system": "2.2.0",
67
67
  "@strapi/icons": "2.2.0",
68
- "@strapi/utils": "5.47.0",
68
+ "@strapi/utils": "5.48.0",
69
69
  "graphql": "^16.8.1",
70
70
  "graphql-depth-limit": "^1.1.0",
71
71
  "graphql-playground-middleware-koa": "^1.6.21",
@@ -77,19 +77,19 @@
77
77
  "pluralize": "8.0.0"
78
78
  },
79
79
  "devDependencies": {
80
- "@strapi/strapi": "5.47.0",
81
- "@strapi/types": "5.47.0",
80
+ "@strapi/strapi": "5.48.0",
81
+ "@strapi/types": "5.48.0",
82
82
  "@types/graphql-depth-limit": "1.1.5",
83
83
  "@types/koa-bodyparser": "4.3.12",
84
84
  "@types/koa__cors": "5.0.0",
85
85
  "cross-env": "^7.0.3",
86
- "eslint-config-custom": "5.47.0",
86
+ "eslint-config-custom": "5.48.0",
87
87
  "koa": "2.16.4",
88
88
  "react": "18.3.1",
89
89
  "react-dom": "18.3.1",
90
90
  "react-router-dom": "6.30.3",
91
91
  "styled-components": "6.4.1",
92
- "tsconfig": "5.47.0",
92
+ "tsconfig": "5.48.0",
93
93
  "typescript": "5.4.5"
94
94
  },
95
95
  "peerDependencies": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"dk.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dk.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}