@strapi/plugin-graphql 5.56.0 → 5.57.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.
Files changed (138) hide show
  1. package/dist/server/bootstrap.js +10 -10
  2. package/dist/server/bootstrap.js.map +1 -1
  3. package/dist/server/bootstrap.mjs +8 -8
  4. package/dist/server/bootstrap.mjs.map +1 -1
  5. package/dist/server/format-graphql-error.js +5 -5
  6. package/dist/server/format-graphql-error.js.map +1 -1
  7. package/dist/server/format-graphql-error.mjs +4 -4
  8. package/dist/server/format-graphql-error.mjs.map +1 -1
  9. package/dist/server/services/builders/dynamic-zones.js +3 -3
  10. package/dist/server/services/builders/dynamic-zones.js.map +1 -1
  11. package/dist/server/services/builders/dynamic-zones.mjs +3 -3
  12. package/dist/server/services/builders/dynamic-zones.mjs.map +1 -1
  13. package/dist/server/services/builders/entity.js +4 -4
  14. package/dist/server/services/builders/entity.js.map +1 -1
  15. package/dist/server/services/builders/entity.mjs +2 -2
  16. package/dist/server/services/builders/entity.mjs.map +1 -1
  17. package/dist/server/services/builders/enums.js +2 -2
  18. package/dist/server/services/builders/enums.js.map +1 -1
  19. package/dist/server/services/builders/enums.mjs +2 -2
  20. package/dist/server/services/builders/enums.mjs.map +1 -1
  21. package/dist/server/services/builders/filters/operators/index.js +3 -3
  22. package/dist/server/services/builders/filters/operators/index.js.map +1 -1
  23. package/dist/server/services/builders/filters/operators/index.mjs +3 -3
  24. package/dist/server/services/builders/filters/operators/index.mjs.map +1 -1
  25. package/dist/server/services/builders/generic-morph.js +1 -2
  26. package/dist/server/services/builders/generic-morph.js.map +1 -1
  27. package/dist/server/services/builders/generic-morph.mjs +1 -2
  28. package/dist/server/services/builders/generic-morph.mjs.map +1 -1
  29. package/dist/server/services/builders/index.js +2 -4
  30. package/dist/server/services/builders/index.js.map +1 -1
  31. package/dist/server/services/builders/index.mjs +2 -4
  32. package/dist/server/services/builders/index.mjs.map +1 -1
  33. package/dist/server/services/builders/relation-response-collection.js +3 -3
  34. package/dist/server/services/builders/relation-response-collection.js.map +1 -1
  35. package/dist/server/services/builders/relation-response-collection.mjs +3 -3
  36. package/dist/server/services/builders/relation-response-collection.mjs.map +1 -1
  37. package/dist/server/services/builders/resolvers/association.js +3 -3
  38. package/dist/server/services/builders/resolvers/association.js.map +1 -1
  39. package/dist/server/services/builders/resolvers/association.mjs +3 -3
  40. package/dist/server/services/builders/resolvers/association.mjs.map +1 -1
  41. package/dist/server/services/builders/resolvers/query.js +3 -3
  42. package/dist/server/services/builders/resolvers/query.js.map +1 -1
  43. package/dist/server/services/builders/resolvers/query.mjs +3 -3
  44. package/dist/server/services/builders/resolvers/query.mjs.map +1 -1
  45. package/dist/server/services/builders/response-collection.js +4 -4
  46. package/dist/server/services/builders/response-collection.js.map +1 -1
  47. package/dist/server/services/builders/response-collection.mjs +3 -3
  48. package/dist/server/services/builders/response-collection.mjs.map +1 -1
  49. package/dist/server/services/builders/response.js +1 -2
  50. package/dist/server/services/builders/response.js.map +1 -1
  51. package/dist/server/services/builders/response.mjs +1 -2
  52. package/dist/server/services/builders/response.mjs.map +1 -1
  53. package/dist/server/services/builders/type.js +4 -4
  54. package/dist/server/services/builders/type.js.map +1 -1
  55. package/dist/server/services/builders/type.mjs +3 -3
  56. package/dist/server/services/builders/type.mjs.map +1 -1
  57. package/dist/server/services/builders/utils.js +6 -6
  58. package/dist/server/services/builders/utils.js.map +1 -1
  59. package/dist/server/services/builders/utils.mjs +6 -6
  60. package/dist/server/services/builders/utils.mjs.map +1 -1
  61. package/dist/server/services/content-api/index.js +1 -2
  62. package/dist/server/services/content-api/index.js.map +1 -1
  63. package/dist/server/services/content-api/index.mjs +1 -2
  64. package/dist/server/services/content-api/index.mjs.map +1 -1
  65. package/dist/server/services/content-api/policy.js +2 -3
  66. package/dist/server/services/content-api/policy.js.map +1 -1
  67. package/dist/server/services/content-api/policy.mjs +2 -3
  68. package/dist/server/services/content-api/policy.mjs.map +1 -1
  69. package/dist/server/services/content-api/wrap-resolvers.js +9 -9
  70. package/dist/server/services/content-api/wrap-resolvers.js.map +1 -1
  71. package/dist/server/services/content-api/wrap-resolvers.mjs +9 -9
  72. package/dist/server/services/content-api/wrap-resolvers.mjs.map +1 -1
  73. package/dist/server/services/extension/extension.js +3 -3
  74. package/dist/server/services/extension/extension.js.map +1 -1
  75. package/dist/server/services/extension/extension.mjs +3 -3
  76. package/dist/server/services/extension/extension.mjs.map +1 -1
  77. package/dist/server/services/internals/helpers/get-enabled-scalars.js +2 -2
  78. package/dist/server/services/internals/helpers/get-enabled-scalars.js.map +1 -1
  79. package/dist/server/services/internals/helpers/get-enabled-scalars.mjs +1 -1
  80. package/dist/server/services/internals/helpers/get-enabled-scalars.mjs.map +1 -1
  81. package/dist/server/services/internals/types/error.js +1 -2
  82. package/dist/server/services/internals/types/error.js.map +1 -1
  83. package/dist/server/services/internals/types/error.mjs +1 -2
  84. package/dist/server/services/internals/types/error.mjs.map +1 -1
  85. package/dist/server/services/type-registry.js +1 -2
  86. package/dist/server/services/type-registry.js.map +1 -1
  87. package/dist/server/services/type-registry.mjs +1 -2
  88. package/dist/server/services/type-registry.mjs.map +1 -1
  89. package/dist/server/services/utils/attributes.js +6 -6
  90. package/dist/server/services/utils/attributes.js.map +1 -1
  91. package/dist/server/services/utils/attributes.mjs +6 -6
  92. package/dist/server/services/utils/attributes.mjs.map +1 -1
  93. package/dist/server/services/utils/mappers/entity-to-response-entity.js +2 -2
  94. package/dist/server/services/utils/mappers/entity-to-response-entity.js.map +1 -1
  95. package/dist/server/services/utils/mappers/entity-to-response-entity.mjs +2 -2
  96. package/dist/server/services/utils/mappers/entity-to-response-entity.mjs.map +1 -1
  97. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js +5 -5
  98. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js.map +1 -1
  99. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs +4 -4
  100. package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs.map +1 -1
  101. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js +3 -3
  102. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js.map +1 -1
  103. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs +3 -3
  104. package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs.map +1 -1
  105. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js +3 -3
  106. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js.map +1 -1
  107. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs +2 -2
  108. package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs.map +1 -1
  109. package/dist/server/services/utils/naming.js +13 -10
  110. package/dist/server/services/utils/naming.js.map +1 -1
  111. package/dist/server/services/utils/naming.mjs +9 -6
  112. package/dist/server/services/utils/naming.mjs.map +1 -1
  113. package/dist/server/src/bootstrap.d.ts.map +1 -1
  114. package/dist/server/src/index.d.ts +128 -13
  115. package/dist/server/src/index.d.ts.map +1 -1
  116. package/dist/server/src/services/builders/filters/operators/index.d.ts +112 -5
  117. package/dist/server/src/services/builders/filters/operators/index.d.ts.map +1 -1
  118. package/dist/server/src/services/builders/generic-morph.d.ts.map +1 -1
  119. package/dist/server/src/services/builders/index.d.ts +116 -7
  120. package/dist/server/src/services/builders/index.d.ts.map +1 -1
  121. package/dist/server/src/services/builders/resolvers/index.d.ts.map +1 -1
  122. package/dist/server/src/services/builders/response.d.ts.map +1 -1
  123. package/dist/server/src/services/builders/utils.d.ts +3 -1
  124. package/dist/server/src/services/builders/utils.d.ts.map +1 -1
  125. package/dist/server/src/services/content-api/index.d.ts.map +1 -1
  126. package/dist/server/src/services/content-api/policy.d.ts.map +1 -1
  127. package/dist/server/src/services/index.d.ts +128 -13
  128. package/dist/server/src/services/index.d.ts.map +1 -1
  129. package/dist/server/src/services/internals/types/error.d.ts.map +1 -1
  130. package/dist/server/src/services/type-registry.d.ts.map +1 -1
  131. package/dist/server/src/services/utils/index.d.ts +12 -6
  132. package/dist/server/src/services/utils/index.d.ts.map +1 -1
  133. package/dist/server/src/services/utils/mappers/entity-to-response-entity.d.ts +14 -7
  134. package/dist/server/src/services/utils/mappers/entity-to-response-entity.d.ts.map +1 -1
  135. package/dist/server/src/services/utils/mappers/graphql-scalar-to-operators.d.ts.map +1 -1
  136. package/dist/server/src/services/utils/mappers/index.d.ts +12 -6
  137. package/dist/server/src/services/utils/mappers/index.d.ts.map +1 -1
  138. package/package.json +13 -13
@@ -1,4 +1,4 @@
1
- import { get, getOr, first, isFunction, isNil } from 'lodash/fp';
1
+ import { property, get } from 'lodash';
2
2
  import { GraphQLObjectType } from 'graphql';
3
3
  import { errors } from '@strapi/utils';
4
4
  import { createPoliciesMiddleware } from './policy.mjs';
@@ -18,10 +18,10 @@ const introspectionQueries = [
18
18
  * @param {object} strapi
19
19
  * @return {function[]}
20
20
  */ const parseMiddlewares = (resolverConfig, strapi)=>{
21
- const resolverMiddlewares = getOr([], 'middlewares', resolverConfig);
21
+ const resolverMiddlewares = get(resolverConfig, 'middlewares', []);
22
22
  // TODO: [v4] to factorize with compose endpoints (routes)
23
23
  return resolverMiddlewares.map((middleware)=>{
24
- if (isFunction(middleware)) {
24
+ if (typeof middleware === 'function') {
25
25
  return middleware;
26
26
  }
27
27
  if (typeof middleware === 'string') {
@@ -59,9 +59,9 @@ const introspectionQueries = [
59
59
  const fields = definition.getFields();
60
60
  const fieldsToProcess = Object.entries(fields).filter(([field])=>isValidFieldName(field));
61
61
  for (const [fieldName, fieldDefinition] of fieldsToProcess){
62
- const defaultResolver = get(fieldName);
62
+ const defaultResolver = property(fieldName);
63
63
  const path = `${type}.${fieldName}`;
64
- const resolverConfig = getOr({}, path, resolversConfig);
64
+ const resolverConfig = get(resolversConfig, path, {});
65
65
  const { resolve: baseResolver = defaultResolver } = fieldDefinition;
66
66
  // Parse & initialize the middlewares
67
67
  const middlewares = parseMiddlewares(resolverConfig, strapi);
@@ -81,14 +81,14 @@ const introspectionQueries = [
81
81
  * @param {object} context
82
82
  * @return {Promise<void>}
83
83
  */ const authorize = async ({ context })=>{
84
- const authConfig = get('auth', resolverConfig);
85
- const authContext = get('state.auth', context);
84
+ const authConfig = resolverConfig?.auth;
85
+ const authContext = get(context, 'state.auth');
86
86
  const isValidType = [
87
87
  'Mutation',
88
88
  'Query',
89
89
  'Subscription'
90
90
  ].includes(type);
91
- const hasConfig = !isNil(authConfig);
91
+ const hasConfig = authConfig != null;
92
92
  const isAuthDisabled = authConfig === false;
93
93
  if ((isValidType || hasConfig) && !isAuthDisabled) {
94
94
  try {
@@ -106,7 +106,7 @@ const introspectionQueries = [
106
106
  context
107
107
  });
108
108
  // Execute middlewares (including the policy middleware which will always be included)
109
- return first(boundMiddlewares)(parent, args, context, info);
109
+ return boundMiddlewares[0](parent, args, context, info);
110
110
  };
111
111
  }
112
112
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wrap-resolvers.mjs","sources":["../../../../server/src/services/content-api/wrap-resolvers.ts"],"sourcesContent":["import { get, getOr, isFunction, first, isNil } from 'lodash/fp';\nimport {\n GraphQLObjectType,\n GraphQLResolveInfo,\n GraphQLSchema,\n GraphQLFieldResolver,\n} from 'graphql';\nimport { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport { createPoliciesMiddleware } from './policy';\n\nconst { ForbiddenError } = errors;\n\nconst introspectionQueries = [\n '__Schema',\n '__Type',\n '__Field',\n '__InputValue',\n '__EnumValue',\n '__Directive',\n];\n\ntype GraphQLMiddleware = (\n resolve: GraphQLFieldResolver<any, any>,\n parents: unknown,\n args: unknown,\n context: unknown,\n info: GraphQLResolveInfo\n) => any;\n\n/**\n * Get & parse middlewares definitions from the resolver's config\n * @param {object} resolverConfig\n * @param {object} strapi\n * @return {function[]}\n */\nconst parseMiddlewares = (resolverConfig: any, strapi: Core.Strapi): GraphQLMiddleware[] => {\n const resolverMiddlewares = getOr([], 'middlewares', resolverConfig);\n\n // TODO: [v4] to factorize with compose endpoints (routes)\n return resolverMiddlewares.map(\n (middleware: string | Core.MiddlewareHandler | { name: string; options: any }) => {\n if (isFunction(middleware)) {\n return middleware;\n }\n\n if (typeof middleware === 'string') {\n return strapi.middleware(middleware);\n }\n\n if (typeof middleware === 'object') {\n const { name, options = {} } = middleware;\n\n return strapi.middleware(name)(options, { strapi });\n }\n\n throw new Error(\n `Invalid middleware type, expected (function,string,object), received ${typeof middleware}`\n );\n }\n );\n};\n\n/**\n * Wrap the schema's resolvers if they've been\n * customized using the GraphQL extension service\n * @param {object} options\n * @param {GraphQLSchema} options.schema\n * @param {object} options.strapi\n * @param {object} options.extension\n * @return {GraphQLSchema}\n */\nconst wrapResolvers = ({\n schema,\n strapi,\n extension = {},\n}: {\n schema: GraphQLSchema;\n strapi: Core.Strapi;\n extension: any;\n}) => {\n // Get all the registered resolvers configuration\n const { resolversConfig = {} } = extension;\n\n // Fields filters\n const isValidFieldName = (field: string) => !field.startsWith('__');\n\n const typeMap = schema.getTypeMap();\n\n Object.entries(typeMap).forEach(([type, definition]) => {\n const isGraphQLObjectType = definition instanceof GraphQLObjectType;\n const isIgnoredType = introspectionQueries.includes(type);\n\n if (!isGraphQLObjectType || isIgnoredType) {\n return;\n }\n\n const fields = definition.getFields();\n const fieldsToProcess = Object.entries(fields).filter(([field]) => isValidFieldName(field));\n\n for (const [fieldName, fieldDefinition] of fieldsToProcess) {\n const defaultResolver = get(fieldName);\n\n const path = `${type}.${fieldName}`;\n const resolverConfig = getOr({}, path, resolversConfig);\n\n const { resolve: baseResolver = defaultResolver } = fieldDefinition;\n\n // Parse & initialize the middlewares\n const middlewares = parseMiddlewares(resolverConfig, strapi);\n\n // Generate the policy middleware\n const policyMiddleware = createPoliciesMiddleware(resolverConfig, { strapi });\n\n // Add the policyMiddleware at the end of the middlewares collection\n middlewares.push(policyMiddleware);\n\n // Bind every middleware to the next one\n const boundMiddlewares = middlewares.map((middleware, index, collection) => {\n return (parents: unknown, args: unknown, context: unknown, info: GraphQLResolveInfo) =>\n middleware(\n // Make sure the last middleware in the list calls the baseResolver\n index >= collection.length - 1 ? baseResolver : boundMiddlewares[index + 1],\n parents,\n args,\n context,\n info\n );\n });\n\n /**\n * GraphQL authorization flow\n * @param {object} context\n * @return {Promise<void>}\n */\n const authorize = async ({ context }: any) => {\n const authConfig = get('auth', resolverConfig);\n const authContext = get('state.auth', context);\n\n const isValidType = ['Mutation', 'Query', 'Subscription'].includes(type);\n const hasConfig = !isNil(authConfig);\n\n const isAuthDisabled = authConfig === false;\n\n if ((isValidType || hasConfig) && !isAuthDisabled) {\n try {\n await strapi.auth.verify(authContext, authConfig);\n } catch {\n throw new ForbiddenError();\n }\n }\n };\n\n /**\n * Base resolver wrapper that handles authorization, middlewares & policies\n * @return {Promise<any>}\n */\n fieldDefinition.resolve = async (parent, args, context, info) => {\n await authorize({ context });\n\n // Execute middlewares (including the policy middleware which will always be included)\n return first(boundMiddlewares)!(parent, args, context, info);\n };\n }\n });\n\n return schema;\n};\n\nexport { wrapResolvers };\n"],"names":["ForbiddenError","errors","introspectionQueries","parseMiddlewares","resolverConfig","strapi","resolverMiddlewares","getOr","map","middleware","isFunction","name","options","Error","wrapResolvers","schema","extension","resolversConfig","isValidFieldName","field","startsWith","typeMap","getTypeMap","Object","entries","forEach","type","definition","isGraphQLObjectType","GraphQLObjectType","isIgnoredType","includes","fields","getFields","fieldsToProcess","filter","fieldName","fieldDefinition","defaultResolver","get","path","resolve","baseResolver","middlewares","policyMiddleware","createPoliciesMiddleware","push","boundMiddlewares","index","collection","parents","args","context","info","length","authorize","authConfig","authContext","isValidType","hasConfig","isNil","isAuthDisabled","auth","verify","parent","first"],"mappings":"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"}
1
+ {"version":3,"file":"wrap-resolvers.mjs","sources":["../../../../server/src/services/content-api/wrap-resolvers.ts"],"sourcesContent":["import { get, property } from 'lodash';\nimport {\n GraphQLObjectType,\n GraphQLResolveInfo,\n GraphQLSchema,\n GraphQLFieldResolver,\n} from 'graphql';\nimport { errors } from '@strapi/utils';\nimport type { Core } from '@strapi/types';\n\nimport { createPoliciesMiddleware } from './policy';\n\nconst { ForbiddenError } = errors;\n\nconst introspectionQueries = [\n '__Schema',\n '__Type',\n '__Field',\n '__InputValue',\n '__EnumValue',\n '__Directive',\n];\n\ntype GraphQLMiddleware = (\n resolve: GraphQLFieldResolver<any, any>,\n parents: unknown,\n args: unknown,\n context: unknown,\n info: GraphQLResolveInfo\n) => any;\n\n/**\n * Get & parse middlewares definitions from the resolver's config\n * @param {object} resolverConfig\n * @param {object} strapi\n * @return {function[]}\n */\nconst parseMiddlewares = (resolverConfig: any, strapi: Core.Strapi): GraphQLMiddleware[] => {\n const resolverMiddlewares = get(resolverConfig, 'middlewares', []);\n\n // TODO: [v4] to factorize with compose endpoints (routes)\n return resolverMiddlewares.map(\n (middleware: string | Core.MiddlewareHandler | { name: string; options: any }) => {\n if (typeof middleware === 'function') {\n return middleware;\n }\n\n if (typeof middleware === 'string') {\n return strapi.middleware(middleware);\n }\n\n if (typeof middleware === 'object') {\n const { name, options = {} } = middleware;\n\n return strapi.middleware(name)(options, { strapi });\n }\n\n throw new Error(\n `Invalid middleware type, expected (function,string,object), received ${typeof middleware}`\n );\n }\n );\n};\n\n/**\n * Wrap the schema's resolvers if they've been\n * customized using the GraphQL extension service\n * @param {object} options\n * @param {GraphQLSchema} options.schema\n * @param {object} options.strapi\n * @param {object} options.extension\n * @return {GraphQLSchema}\n */\nconst wrapResolvers = ({\n schema,\n strapi,\n extension = {},\n}: {\n schema: GraphQLSchema;\n strapi: Core.Strapi;\n extension: any;\n}) => {\n // Get all the registered resolvers configuration\n const { resolversConfig = {} } = extension;\n\n // Fields filters\n const isValidFieldName = (field: string) => !field.startsWith('__');\n\n const typeMap = schema.getTypeMap();\n\n Object.entries(typeMap).forEach(([type, definition]) => {\n const isGraphQLObjectType = definition instanceof GraphQLObjectType;\n const isIgnoredType = introspectionQueries.includes(type);\n\n if (!isGraphQLObjectType || isIgnoredType) {\n return;\n }\n\n const fields = definition.getFields();\n const fieldsToProcess = Object.entries(fields).filter(([field]) => isValidFieldName(field));\n\n for (const [fieldName, fieldDefinition] of fieldsToProcess) {\n const defaultResolver = property(fieldName);\n\n const path = `${type}.${fieldName}`;\n const resolverConfig = get(resolversConfig, path, {});\n\n const { resolve: baseResolver = defaultResolver } = fieldDefinition;\n\n // Parse & initialize the middlewares\n const middlewares = parseMiddlewares(resolverConfig, strapi);\n\n // Generate the policy middleware\n const policyMiddleware = createPoliciesMiddleware(resolverConfig, { strapi });\n\n // Add the policyMiddleware at the end of the middlewares collection\n middlewares.push(policyMiddleware);\n\n // Bind every middleware to the next one\n const boundMiddlewares = middlewares.map((middleware, index, collection) => {\n return (parents: unknown, args: unknown, context: unknown, info: GraphQLResolveInfo) =>\n middleware(\n // Make sure the last middleware in the list calls the baseResolver\n index >= collection.length - 1 ? baseResolver : boundMiddlewares[index + 1],\n parents,\n args,\n context,\n info\n );\n });\n\n /**\n * GraphQL authorization flow\n * @param {object} context\n * @return {Promise<void>}\n */\n const authorize = async ({ context }: any) => {\n const authConfig = resolverConfig?.auth;\n const authContext = get(context, 'state.auth');\n\n const isValidType = ['Mutation', 'Query', 'Subscription'].includes(type);\n const hasConfig = authConfig != null;\n\n const isAuthDisabled = authConfig === false;\n\n if ((isValidType || hasConfig) && !isAuthDisabled) {\n try {\n await strapi.auth.verify(authContext, authConfig);\n } catch {\n throw new ForbiddenError();\n }\n }\n };\n\n /**\n * Base resolver wrapper that handles authorization, middlewares & policies\n * @return {Promise<any>}\n */\n fieldDefinition.resolve = async (parent, args, context, info) => {\n await authorize({ context });\n\n // Execute middlewares (including the policy middleware which will always be included)\n return boundMiddlewares[0]!(parent, args, context, info);\n };\n }\n });\n\n return schema;\n};\n\nexport { wrapResolvers };\n"],"names":["ForbiddenError","errors","introspectionQueries","parseMiddlewares","resolverConfig","strapi","resolverMiddlewares","get","map","middleware","name","options","Error","wrapResolvers","schema","extension","resolversConfig","isValidFieldName","field","startsWith","typeMap","getTypeMap","Object","entries","forEach","type","definition","isGraphQLObjectType","GraphQLObjectType","isIgnoredType","includes","fields","getFields","fieldsToProcess","filter","fieldName","fieldDefinition","defaultResolver","property","path","resolve","baseResolver","middlewares","policyMiddleware","createPoliciesMiddleware","push","boundMiddlewares","index","collection","parents","args","context","info","length","authorize","authConfig","auth","authContext","isValidType","hasConfig","isAuthDisabled","verify","parent"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var nexus = require('nexus');
4
- var fp = require('lodash/fp');
4
+ var lodash = require('lodash');
5
5
  var shadowCrudManager = require('./shadow-crud-manager.js');
6
6
 
7
7
  function _interopNamespace(e) {
@@ -68,12 +68,12 @@ const createExtension = ({ strapi })=>{
68
68
  }
69
69
  // Register resolvers
70
70
  if (typeof resolvers === 'object') {
71
- acc.resolvers = fp.merge(acc.resolvers, resolvers);
71
+ acc.resolvers = lodash.merge({}, acc.resolvers, resolvers);
72
72
  }
73
73
  // Register resolvers configuration
74
74
  if (typeof resolversConfig === 'object') {
75
75
  // TODO: smarter merge for auth, middlewares & policies
76
- acc.resolversConfig = fp.merge(resolversConfig, acc.resolversConfig);
76
+ acc.resolversConfig = lodash.merge({}, resolversConfig, acc.resolversConfig);
77
77
  }
78
78
  return acc;
79
79
  }, getDefaultState());
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sources":["../../../../server/src/services/extension/extension.ts"],"sourcesContent":["import * as nexus from 'nexus';\nimport { merge } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport type * as Nexus from 'nexus';\n\nimport createShadowCRUDManager from './shadow-crud-manager';\n\nexport type Configuration = {\n types?: NexusGen[];\n typeDefs?: string;\n resolvers?: object;\n resolversConfig?: object;\n plugins?: Nexus.PluginConfig[];\n};\n\nexport type ConfigurationFactory = (options: {\n strapi: Core.Strapi;\n nexus: typeof nexus;\n typeRegistry: object;\n}) => Configuration;\n\nexport type Extension = {\n types: NexusGen[];\n typeDefs: string[];\n resolvers: object;\n resolversConfig: object;\n plugins: Nexus.PluginConfig[];\n};\n\nconst getDefaultState = (): Extension => ({\n types: [],\n typeDefs: [],\n resolvers: {},\n resolversConfig: {},\n plugins: [],\n});\n\nconst createExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const configs: Array<Configuration | ConfigurationFactory> = [];\n\n return {\n shadowCRUD: createShadowCRUDManager(),\n\n /**\n * Register a new extension configuration\n */\n use(configuration: Configuration | ConfigurationFactory) {\n configs.push(configuration);\n\n return this;\n },\n\n /**\n * Convert the registered configuration into a single extension object & return it\n */\n generate({ typeRegistry }: { typeRegistry: object }) {\n const resolveConfig = (config: Configuration | ConfigurationFactory): Configuration => {\n return typeof config === 'function' ? config({ strapi, nexus, typeRegistry }) : config;\n };\n\n // Evaluate & merge every registered configuration object, then return the result\n return configs.reduce((acc, configuration) => {\n const { types, typeDefs, resolvers, resolversConfig, plugins } =\n resolveConfig(configuration);\n\n // Register type definitions\n if (typeof typeDefs === 'string') {\n acc.typeDefs.push(typeDefs);\n }\n\n // Register nexus types\n if (Array.isArray(types)) {\n acc.types.push(...types);\n }\n\n // Register nexus plugins\n if (Array.isArray(plugins)) {\n acc.plugins.push(...plugins);\n }\n\n // Register resolvers\n if (typeof resolvers === 'object') {\n acc.resolvers = merge(acc.resolvers, resolvers);\n }\n\n // Register resolvers configuration\n if (typeof resolversConfig === 'object') {\n // TODO: smarter merge for auth, middlewares & policies\n acc.resolversConfig = merge(resolversConfig, acc.resolversConfig);\n }\n\n return acc;\n }, getDefaultState());\n },\n };\n};\n\nexport default createExtension;\n"],"names":["getDefaultState","types","typeDefs","resolvers","resolversConfig","plugins","createExtension","strapi","configs","shadowCRUD","createShadowCRUDManager","use","configuration","push","generate","typeRegistry","resolveConfig","config","nexus","reduce","acc","Array","isArray","merge"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAMA,eAAAA,GAAkB,KAAkB;AACxCC,QAAAA,KAAAA,EAAO,EAAE;AACTC,QAAAA,QAAAA,EAAU,EAAE;AACZC,QAAAA,SAAAA,EAAW,EAAC;AACZC,QAAAA,eAAAA,EAAiB,EAAC;AAClBC,QAAAA,OAAAA,EAAS;KACX,CAAA;AAEA,MAAMC,eAAAA,GAAkB,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAC1D,IAAA,MAAMC,UAAuD,EAAE;IAE/D,OAAO;QACLC,UAAAA,EAAYC,iBAAAA,EAAAA;AAEZ;;AAEC,QACDC,KAAIC,aAAmD,EAAA;AACrDJ,YAAAA,OAAAA,CAAQK,IAAI,CAACD,aAAAA,CAAAA;AAEb,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;QAGAE,QAAAA,CAAAA,CAAS,EAAEC,YAAY,EAA4B,EAAA;AACjD,YAAA,MAAMC,gBAAgB,CAACC,MAAAA,GAAAA;gBACrB,OAAO,OAAOA,MAAAA,KAAW,UAAA,GAAaA,MAAAA,CAAO;AAAEV,oBAAAA,MAAAA;AAAQW,2BAAAA,gBAAAA;AAAOH,oBAAAA;iBAAa,CAAA,GAAKE,MAAAA;AAClF,YAAA,CAAA;;AAGA,YAAA,OAAOT,OAAAA,CAAQW,MAAM,CAAC,CAACC,GAAAA,EAAKR,aAAAA,GAAAA;AAC1B,gBAAA,MAAM,EAAEX,KAAK,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,eAAe,EAAEC,OAAO,EAAE,GAC5DW,aAAAA,CAAcJ,aAAAA,CAAAA;;gBAGhB,IAAI,OAAOV,aAAa,QAAA,EAAU;oBAChCkB,GAAAA,CAAIlB,QAAQ,CAACW,IAAI,CAACX,QAAAA,CAAAA;AACpB,gBAAA;;gBAGA,IAAImB,KAAAA,CAAMC,OAAO,CAACrB,KAAAA,CAAAA,EAAQ;oBACxBmB,GAAAA,CAAInB,KAAK,CAACY,IAAI,CAAA,GAAIZ,KAAAA,CAAAA;AACpB,gBAAA;;gBAGA,IAAIoB,KAAAA,CAAMC,OAAO,CAACjB,OAAAA,CAAAA,EAAU;oBAC1Be,GAAAA,CAAIf,OAAO,CAACQ,IAAI,CAAA,GAAIR,OAAAA,CAAAA;AACtB,gBAAA;;gBAGA,IAAI,OAAOF,cAAc,QAAA,EAAU;AACjCiB,oBAAAA,GAAAA,CAAIjB,SAAS,GAAGoB,QAAAA,CAAMH,GAAAA,CAAIjB,SAAS,EAAEA,SAAAA,CAAAA;AACvC,gBAAA;;gBAGA,IAAI,OAAOC,oBAAoB,QAAA,EAAU;;AAEvCgB,oBAAAA,GAAAA,CAAIhB,eAAe,GAAGmB,QAAAA,CAAMnB,eAAAA,EAAiBgB,IAAIhB,eAAe,CAAA;AAClE,gBAAA;gBAEA,OAAOgB,GAAAA;YACT,CAAA,EAAGpB,eAAAA,EAAAA,CAAAA;AACL,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"extension.js","sources":["../../../../server/src/services/extension/extension.ts"],"sourcesContent":["import * as nexus from 'nexus';\nimport { merge } from 'lodash';\nimport type { Core } from '@strapi/types';\nimport type * as Nexus from 'nexus';\n\nimport createShadowCRUDManager from './shadow-crud-manager';\n\nexport type Configuration = {\n types?: NexusGen[];\n typeDefs?: string;\n resolvers?: object;\n resolversConfig?: object;\n plugins?: Nexus.PluginConfig[];\n};\n\nexport type ConfigurationFactory = (options: {\n strapi: Core.Strapi;\n nexus: typeof nexus;\n typeRegistry: object;\n}) => Configuration;\n\nexport type Extension = {\n types: NexusGen[];\n typeDefs: string[];\n resolvers: object;\n resolversConfig: object;\n plugins: Nexus.PluginConfig[];\n};\n\nconst getDefaultState = (): Extension => ({\n types: [],\n typeDefs: [],\n resolvers: {},\n resolversConfig: {},\n plugins: [],\n});\n\nconst createExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const configs: Array<Configuration | ConfigurationFactory> = [];\n\n return {\n shadowCRUD: createShadowCRUDManager(),\n\n /**\n * Register a new extension configuration\n */\n use(configuration: Configuration | ConfigurationFactory) {\n configs.push(configuration);\n\n return this;\n },\n\n /**\n * Convert the registered configuration into a single extension object & return it\n */\n generate({ typeRegistry }: { typeRegistry: object }) {\n const resolveConfig = (config: Configuration | ConfigurationFactory): Configuration => {\n return typeof config === 'function' ? config({ strapi, nexus, typeRegistry }) : config;\n };\n\n // Evaluate & merge every registered configuration object, then return the result\n return configs.reduce((acc, configuration) => {\n const { types, typeDefs, resolvers, resolversConfig, plugins } =\n resolveConfig(configuration);\n\n // Register type definitions\n if (typeof typeDefs === 'string') {\n acc.typeDefs.push(typeDefs);\n }\n\n // Register nexus types\n if (Array.isArray(types)) {\n acc.types.push(...types);\n }\n\n // Register nexus plugins\n if (Array.isArray(plugins)) {\n acc.plugins.push(...plugins);\n }\n\n // Register resolvers\n if (typeof resolvers === 'object') {\n acc.resolvers = merge({}, acc.resolvers, resolvers);\n }\n\n // Register resolvers configuration\n if (typeof resolversConfig === 'object') {\n // TODO: smarter merge for auth, middlewares & policies\n acc.resolversConfig = merge({}, resolversConfig, acc.resolversConfig);\n }\n\n return acc;\n }, getDefaultState());\n },\n };\n};\n\nexport default createExtension;\n"],"names":["getDefaultState","types","typeDefs","resolvers","resolversConfig","plugins","createExtension","strapi","configs","shadowCRUD","createShadowCRUDManager","use","configuration","push","generate","typeRegistry","resolveConfig","config","nexus","reduce","acc","Array","isArray","merge"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAMA,eAAAA,GAAkB,KAAkB;AACxCC,QAAAA,KAAAA,EAAO,EAAE;AACTC,QAAAA,QAAAA,EAAU,EAAE;AACZC,QAAAA,SAAAA,EAAW,EAAC;AACZC,QAAAA,eAAAA,EAAiB,EAAC;AAClBC,QAAAA,OAAAA,EAAS;KACX,CAAA;AAEA,MAAMC,eAAAA,GAAkB,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAC1D,IAAA,MAAMC,UAAuD,EAAE;IAE/D,OAAO;QACLC,UAAAA,EAAYC,iBAAAA,EAAAA;AAEZ;;AAEC,QACDC,KAAIC,aAAmD,EAAA;AACrDJ,YAAAA,OAAAA,CAAQK,IAAI,CAACD,aAAAA,CAAAA;AAEb,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;QAGAE,QAAAA,CAAAA,CAAS,EAAEC,YAAY,EAA4B,EAAA;AACjD,YAAA,MAAMC,gBAAgB,CAACC,MAAAA,GAAAA;gBACrB,OAAO,OAAOA,MAAAA,KAAW,UAAA,GAAaA,MAAAA,CAAO;AAAEV,oBAAAA,MAAAA;AAAQW,2BAAAA,gBAAAA;AAAOH,oBAAAA;iBAAa,CAAA,GAAKE,MAAAA;AAClF,YAAA,CAAA;;AAGA,YAAA,OAAOT,OAAAA,CAAQW,MAAM,CAAC,CAACC,GAAAA,EAAKR,aAAAA,GAAAA;AAC1B,gBAAA,MAAM,EAAEX,KAAK,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,eAAe,EAAEC,OAAO,EAAE,GAC5DW,aAAAA,CAAcJ,aAAAA,CAAAA;;gBAGhB,IAAI,OAAOV,aAAa,QAAA,EAAU;oBAChCkB,GAAAA,CAAIlB,QAAQ,CAACW,IAAI,CAACX,QAAAA,CAAAA;AACpB,gBAAA;;gBAGA,IAAImB,KAAAA,CAAMC,OAAO,CAACrB,KAAAA,CAAAA,EAAQ;oBACxBmB,GAAAA,CAAInB,KAAK,CAACY,IAAI,CAAA,GAAIZ,KAAAA,CAAAA;AACpB,gBAAA;;gBAGA,IAAIoB,KAAAA,CAAMC,OAAO,CAACjB,OAAAA,CAAAA,EAAU;oBAC1Be,GAAAA,CAAIf,OAAO,CAACQ,IAAI,CAAA,GAAIR,OAAAA,CAAAA;AACtB,gBAAA;;gBAGA,IAAI,OAAOF,cAAc,QAAA,EAAU;AACjCiB,oBAAAA,GAAAA,CAAIjB,SAAS,GAAGoB,YAAAA,CAAM,EAAC,EAAGH,GAAAA,CAAIjB,SAAS,EAAEA,SAAAA,CAAAA;AAC3C,gBAAA;;gBAGA,IAAI,OAAOC,oBAAoB,QAAA,EAAU;;AAEvCgB,oBAAAA,GAAAA,CAAIhB,eAAe,GAAGmB,YAAAA,CAAM,EAAC,EAAGnB,eAAAA,EAAiBgB,IAAIhB,eAAe,CAAA;AACtE,gBAAA;gBAEA,OAAOgB,GAAAA;YACT,CAAA,EAAGpB,eAAAA,EAAAA,CAAAA;AACL,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as nexus from 'nexus';
2
- import { merge } from 'lodash/fp';
2
+ import { merge } from 'lodash';
3
3
  import createShadowCRUDManager from './shadow-crud-manager.mjs';
4
4
 
5
5
  const getDefaultState = ()=>({
@@ -46,12 +46,12 @@ const createExtension = ({ strapi })=>{
46
46
  }
47
47
  // Register resolvers
48
48
  if (typeof resolvers === 'object') {
49
- acc.resolvers = merge(acc.resolvers, resolvers);
49
+ acc.resolvers = merge({}, acc.resolvers, resolvers);
50
50
  }
51
51
  // Register resolvers configuration
52
52
  if (typeof resolversConfig === 'object') {
53
53
  // TODO: smarter merge for auth, middlewares & policies
54
- acc.resolversConfig = merge(resolversConfig, acc.resolversConfig);
54
+ acc.resolversConfig = merge({}, resolversConfig, acc.resolversConfig);
55
55
  }
56
56
  return acc;
57
57
  }, getDefaultState());
@@ -1 +1 @@
1
- {"version":3,"file":"extension.mjs","sources":["../../../../server/src/services/extension/extension.ts"],"sourcesContent":["import * as nexus from 'nexus';\nimport { merge } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport type * as Nexus from 'nexus';\n\nimport createShadowCRUDManager from './shadow-crud-manager';\n\nexport type Configuration = {\n types?: NexusGen[];\n typeDefs?: string;\n resolvers?: object;\n resolversConfig?: object;\n plugins?: Nexus.PluginConfig[];\n};\n\nexport type ConfigurationFactory = (options: {\n strapi: Core.Strapi;\n nexus: typeof nexus;\n typeRegistry: object;\n}) => Configuration;\n\nexport type Extension = {\n types: NexusGen[];\n typeDefs: string[];\n resolvers: object;\n resolversConfig: object;\n plugins: Nexus.PluginConfig[];\n};\n\nconst getDefaultState = (): Extension => ({\n types: [],\n typeDefs: [],\n resolvers: {},\n resolversConfig: {},\n plugins: [],\n});\n\nconst createExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const configs: Array<Configuration | ConfigurationFactory> = [];\n\n return {\n shadowCRUD: createShadowCRUDManager(),\n\n /**\n * Register a new extension configuration\n */\n use(configuration: Configuration | ConfigurationFactory) {\n configs.push(configuration);\n\n return this;\n },\n\n /**\n * Convert the registered configuration into a single extension object & return it\n */\n generate({ typeRegistry }: { typeRegistry: object }) {\n const resolveConfig = (config: Configuration | ConfigurationFactory): Configuration => {\n return typeof config === 'function' ? config({ strapi, nexus, typeRegistry }) : config;\n };\n\n // Evaluate & merge every registered configuration object, then return the result\n return configs.reduce((acc, configuration) => {\n const { types, typeDefs, resolvers, resolversConfig, plugins } =\n resolveConfig(configuration);\n\n // Register type definitions\n if (typeof typeDefs === 'string') {\n acc.typeDefs.push(typeDefs);\n }\n\n // Register nexus types\n if (Array.isArray(types)) {\n acc.types.push(...types);\n }\n\n // Register nexus plugins\n if (Array.isArray(plugins)) {\n acc.plugins.push(...plugins);\n }\n\n // Register resolvers\n if (typeof resolvers === 'object') {\n acc.resolvers = merge(acc.resolvers, resolvers);\n }\n\n // Register resolvers configuration\n if (typeof resolversConfig === 'object') {\n // TODO: smarter merge for auth, middlewares & policies\n acc.resolversConfig = merge(resolversConfig, acc.resolversConfig);\n }\n\n return acc;\n }, getDefaultState());\n },\n };\n};\n\nexport default createExtension;\n"],"names":["getDefaultState","types","typeDefs","resolvers","resolversConfig","plugins","createExtension","strapi","configs","shadowCRUD","createShadowCRUDManager","use","configuration","push","generate","typeRegistry","resolveConfig","config","nexus","reduce","acc","Array","isArray","merge"],"mappings":";;;;AA6BA,MAAMA,eAAAA,GAAkB,KAAkB;AACxCC,QAAAA,KAAAA,EAAO,EAAE;AACTC,QAAAA,QAAAA,EAAU,EAAE;AACZC,QAAAA,SAAAA,EAAW,EAAC;AACZC,QAAAA,eAAAA,EAAiB,EAAC;AAClBC,QAAAA,OAAAA,EAAS;KACX,CAAA;AAEA,MAAMC,eAAAA,GAAkB,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAC1D,IAAA,MAAMC,UAAuD,EAAE;IAE/D,OAAO;QACLC,UAAAA,EAAYC,uBAAAA,EAAAA;AAEZ;;AAEC,QACDC,KAAIC,aAAmD,EAAA;AACrDJ,YAAAA,OAAAA,CAAQK,IAAI,CAACD,aAAAA,CAAAA;AAEb,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;QAGAE,QAAAA,CAAAA,CAAS,EAAEC,YAAY,EAA4B,EAAA;AACjD,YAAA,MAAMC,gBAAgB,CAACC,MAAAA,GAAAA;gBACrB,OAAO,OAAOA,MAAAA,KAAW,UAAA,GAAaA,MAAAA,CAAO;AAAEV,oBAAAA,MAAAA;AAAQW,oBAAAA,KAAAA;AAAOH,oBAAAA;iBAAa,CAAA,GAAKE,MAAAA;AAClF,YAAA,CAAA;;AAGA,YAAA,OAAOT,OAAAA,CAAQW,MAAM,CAAC,CAACC,GAAAA,EAAKR,aAAAA,GAAAA;AAC1B,gBAAA,MAAM,EAAEX,KAAK,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,eAAe,EAAEC,OAAO,EAAE,GAC5DW,aAAAA,CAAcJ,aAAAA,CAAAA;;gBAGhB,IAAI,OAAOV,aAAa,QAAA,EAAU;oBAChCkB,GAAAA,CAAIlB,QAAQ,CAACW,IAAI,CAACX,QAAAA,CAAAA;AACpB,gBAAA;;gBAGA,IAAImB,KAAAA,CAAMC,OAAO,CAACrB,KAAAA,CAAAA,EAAQ;oBACxBmB,GAAAA,CAAInB,KAAK,CAACY,IAAI,CAAA,GAAIZ,KAAAA,CAAAA;AACpB,gBAAA;;gBAGA,IAAIoB,KAAAA,CAAMC,OAAO,CAACjB,OAAAA,CAAAA,EAAU;oBAC1Be,GAAAA,CAAIf,OAAO,CAACQ,IAAI,CAAA,GAAIR,OAAAA,CAAAA;AACtB,gBAAA;;gBAGA,IAAI,OAAOF,cAAc,QAAA,EAAU;AACjCiB,oBAAAA,GAAAA,CAAIjB,SAAS,GAAGoB,KAAAA,CAAMH,GAAAA,CAAIjB,SAAS,EAAEA,SAAAA,CAAAA;AACvC,gBAAA;;gBAGA,IAAI,OAAOC,oBAAoB,QAAA,EAAU;;AAEvCgB,oBAAAA,GAAAA,CAAIhB,eAAe,GAAGmB,KAAAA,CAAMnB,eAAAA,EAAiBgB,IAAIhB,eAAe,CAAA;AAClE,gBAAA;gBAEA,OAAOgB,GAAAA;YACT,CAAA,EAAGpB,eAAAA,EAAAA,CAAAA;AACL,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"extension.mjs","sources":["../../../../server/src/services/extension/extension.ts"],"sourcesContent":["import * as nexus from 'nexus';\nimport { merge } from 'lodash';\nimport type { Core } from '@strapi/types';\nimport type * as Nexus from 'nexus';\n\nimport createShadowCRUDManager from './shadow-crud-manager';\n\nexport type Configuration = {\n types?: NexusGen[];\n typeDefs?: string;\n resolvers?: object;\n resolversConfig?: object;\n plugins?: Nexus.PluginConfig[];\n};\n\nexport type ConfigurationFactory = (options: {\n strapi: Core.Strapi;\n nexus: typeof nexus;\n typeRegistry: object;\n}) => Configuration;\n\nexport type Extension = {\n types: NexusGen[];\n typeDefs: string[];\n resolvers: object;\n resolversConfig: object;\n plugins: Nexus.PluginConfig[];\n};\n\nconst getDefaultState = (): Extension => ({\n types: [],\n typeDefs: [],\n resolvers: {},\n resolversConfig: {},\n plugins: [],\n});\n\nconst createExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const configs: Array<Configuration | ConfigurationFactory> = [];\n\n return {\n shadowCRUD: createShadowCRUDManager(),\n\n /**\n * Register a new extension configuration\n */\n use(configuration: Configuration | ConfigurationFactory) {\n configs.push(configuration);\n\n return this;\n },\n\n /**\n * Convert the registered configuration into a single extension object & return it\n */\n generate({ typeRegistry }: { typeRegistry: object }) {\n const resolveConfig = (config: Configuration | ConfigurationFactory): Configuration => {\n return typeof config === 'function' ? config({ strapi, nexus, typeRegistry }) : config;\n };\n\n // Evaluate & merge every registered configuration object, then return the result\n return configs.reduce((acc, configuration) => {\n const { types, typeDefs, resolvers, resolversConfig, plugins } =\n resolveConfig(configuration);\n\n // Register type definitions\n if (typeof typeDefs === 'string') {\n acc.typeDefs.push(typeDefs);\n }\n\n // Register nexus types\n if (Array.isArray(types)) {\n acc.types.push(...types);\n }\n\n // Register nexus plugins\n if (Array.isArray(plugins)) {\n acc.plugins.push(...plugins);\n }\n\n // Register resolvers\n if (typeof resolvers === 'object') {\n acc.resolvers = merge({}, acc.resolvers, resolvers);\n }\n\n // Register resolvers configuration\n if (typeof resolversConfig === 'object') {\n // TODO: smarter merge for auth, middlewares & policies\n acc.resolversConfig = merge({}, resolversConfig, acc.resolversConfig);\n }\n\n return acc;\n }, getDefaultState());\n },\n };\n};\n\nexport default createExtension;\n"],"names":["getDefaultState","types","typeDefs","resolvers","resolversConfig","plugins","createExtension","strapi","configs","shadowCRUD","createShadowCRUDManager","use","configuration","push","generate","typeRegistry","resolveConfig","config","nexus","reduce","acc","Array","isArray","merge"],"mappings":";;;;AA6BA,MAAMA,eAAAA,GAAkB,KAAkB;AACxCC,QAAAA,KAAAA,EAAO,EAAE;AACTC,QAAAA,QAAAA,EAAU,EAAE;AACZC,QAAAA,SAAAA,EAAW,EAAC;AACZC,QAAAA,eAAAA,EAAiB,EAAC;AAClBC,QAAAA,OAAAA,EAAS;KACX,CAAA;AAEA,MAAMC,eAAAA,GAAkB,CAAC,EAAEC,MAAM,EAA2B,GAAA;AAC1D,IAAA,MAAMC,UAAuD,EAAE;IAE/D,OAAO;QACLC,UAAAA,EAAYC,uBAAAA,EAAAA;AAEZ;;AAEC,QACDC,KAAIC,aAAmD,EAAA;AACrDJ,YAAAA,OAAAA,CAAQK,IAAI,CAACD,aAAAA,CAAAA;AAEb,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;QAGAE,QAAAA,CAAAA,CAAS,EAAEC,YAAY,EAA4B,EAAA;AACjD,YAAA,MAAMC,gBAAgB,CAACC,MAAAA,GAAAA;gBACrB,OAAO,OAAOA,MAAAA,KAAW,UAAA,GAAaA,MAAAA,CAAO;AAAEV,oBAAAA,MAAAA;AAAQW,oBAAAA,KAAAA;AAAOH,oBAAAA;iBAAa,CAAA,GAAKE,MAAAA;AAClF,YAAA,CAAA;;AAGA,YAAA,OAAOT,OAAAA,CAAQW,MAAM,CAAC,CAACC,GAAAA,EAAKR,aAAAA,GAAAA;AAC1B,gBAAA,MAAM,EAAEX,KAAK,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,eAAe,EAAEC,OAAO,EAAE,GAC5DW,aAAAA,CAAcJ,aAAAA,CAAAA;;gBAGhB,IAAI,OAAOV,aAAa,QAAA,EAAU;oBAChCkB,GAAAA,CAAIlB,QAAQ,CAACW,IAAI,CAACX,QAAAA,CAAAA;AACpB,gBAAA;;gBAGA,IAAImB,KAAAA,CAAMC,OAAO,CAACrB,KAAAA,CAAAA,EAAQ;oBACxBmB,GAAAA,CAAInB,KAAK,CAACY,IAAI,CAAA,GAAIZ,KAAAA,CAAAA;AACpB,gBAAA;;gBAGA,IAAIoB,KAAAA,CAAMC,OAAO,CAACjB,OAAAA,CAAAA,EAAU;oBAC1Be,GAAAA,CAAIf,OAAO,CAACQ,IAAI,CAAA,GAAIR,OAAAA,CAAAA;AACtB,gBAAA;;gBAGA,IAAI,OAAOF,cAAc,QAAA,EAAU;AACjCiB,oBAAAA,GAAAA,CAAIjB,SAAS,GAAGoB,KAAAA,CAAM,EAAC,EAAGH,GAAAA,CAAIjB,SAAS,EAAEA,SAAAA,CAAAA;AAC3C,gBAAA;;gBAGA,IAAI,OAAOC,oBAAoB,QAAA,EAAU;;AAEvCgB,oBAAAA,GAAAA,CAAIhB,eAAe,GAAGmB,KAAAA,CAAM,EAAC,EAAGnB,eAAAA,EAAiBgB,IAAIhB,eAAe,CAAA;AACtE,gBAAA;gBAEA,OAAOgB,GAAAA;YACT,CAAA,EAAGpB,eAAAA,EAAAA,CAAAA;AACL,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var lodash = require('lodash');
4
4
 
5
5
  var getEnabledScalars = (({ strapi })=>()=>{
6
6
  const { GRAPHQL_SCALAR_OPERATORS } = strapi.plugin('graphql').service('constants');
7
7
  return Object.entries(GRAPHQL_SCALAR_OPERATORS)// To be valid, a GraphQL scalar must have at least one operator enabled
8
8
  .filter(([, value])=>value.length > 0)// Only keep the key (the scalar name)
9
- .map(fp.first);
9
+ .map(lodash.first);
10
10
  });
11
11
 
12
12
  module.exports = getEnabledScalars;
@@ -1 +1 @@
1
- {"version":3,"file":"get-enabled-scalars.js","sources":["../../../../../server/src/services/internals/helpers/get-enabled-scalars.ts"],"sourcesContent":["import { first } from 'lodash/fp';\nimport type { Context } from '../../types';\nimport type { Constants } from '../../constants';\n\nexport default ({ strapi }: Context) =>\n () => {\n const { GRAPHQL_SCALAR_OPERATORS } = strapi.plugin('graphql').service<Constants>('constants');\n\n return (\n Object.entries(GRAPHQL_SCALAR_OPERATORS)\n // To be valid, a GraphQL scalar must have at least one operator enabled\n .filter(([, value]) => value.length > 0)\n // Only keep the key (the scalar name)\n .map(first)\n );\n };\n"],"names":["strapi","GRAPHQL_SCALAR_OPERATORS","plugin","service","Object","entries","filter","value","length","map","first"],"mappings":";;;;AAIA,wBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GACjC,IAAA;QACE,MAAM,EAAEC,wBAAwB,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAY,WAAA,CAAA;AAEjF,QAAA,OACEC,MAAAA,CAAOC,OAAO,CAACJ,wBAAAA,CACb;SACCK,MAAM,CAAC,CAAC,GAAGC,KAAAA,CAAM,GAAKA,KAAAA,CAAMC,MAAM,GAAG,CAAA,CACtC;AACCC,SAAAA,GAAG,CAACC,QAAAA,CAAAA;AAEX,IAAA,CAAA;;;;"}
1
+ {"version":3,"file":"get-enabled-scalars.js","sources":["../../../../../server/src/services/internals/helpers/get-enabled-scalars.ts"],"sourcesContent":["import { first } from 'lodash';\nimport type { Context } from '../../types';\nimport type { Constants } from '../../constants';\n\nexport default ({ strapi }: Context) =>\n () => {\n const { GRAPHQL_SCALAR_OPERATORS } = strapi.plugin('graphql').service<Constants>('constants');\n\n return (\n Object.entries(GRAPHQL_SCALAR_OPERATORS)\n // To be valid, a GraphQL scalar must have at least one operator enabled\n .filter(([, value]) => value.length > 0)\n // Only keep the key (the scalar name)\n .map(first)\n );\n };\n"],"names":["strapi","GRAPHQL_SCALAR_OPERATORS","plugin","service","Object","entries","filter","value","length","map","first"],"mappings":";;;;AAIA,wBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GACjC,IAAA;QACE,MAAM,EAAEC,wBAAwB,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAY,WAAA,CAAA;AAEjF,QAAA,OACEC,MAAAA,CAAOC,OAAO,CAACJ,wBAAAA,CACb;SACCK,MAAM,CAAC,CAAC,GAAGC,KAAAA,CAAM,GAAKA,KAAAA,CAAMC,MAAM,GAAG,CAAA,CACtC;AACCC,SAAAA,GAAG,CAACC,YAAAA,CAAAA;AAEX,IAAA,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { first } from 'lodash/fp';
1
+ import { first } from 'lodash';
2
2
 
3
3
  var getEnabledScalars = (({ strapi })=>()=>{
4
4
  const { GRAPHQL_SCALAR_OPERATORS } = strapi.plugin('graphql').service('constants');
@@ -1 +1 @@
1
- {"version":3,"file":"get-enabled-scalars.mjs","sources":["../../../../../server/src/services/internals/helpers/get-enabled-scalars.ts"],"sourcesContent":["import { first } from 'lodash/fp';\nimport type { Context } from '../../types';\nimport type { Constants } from '../../constants';\n\nexport default ({ strapi }: Context) =>\n () => {\n const { GRAPHQL_SCALAR_OPERATORS } = strapi.plugin('graphql').service<Constants>('constants');\n\n return (\n Object.entries(GRAPHQL_SCALAR_OPERATORS)\n // To be valid, a GraphQL scalar must have at least one operator enabled\n .filter(([, value]) => value.length > 0)\n // Only keep the key (the scalar name)\n .map(first)\n );\n };\n"],"names":["strapi","GRAPHQL_SCALAR_OPERATORS","plugin","service","Object","entries","filter","value","length","map","first"],"mappings":";;AAIA,wBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GACjC,IAAA;QACE,MAAM,EAAEC,wBAAwB,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAY,WAAA,CAAA;AAEjF,QAAA,OACEC,MAAAA,CAAOC,OAAO,CAACJ,wBAAAA,CACb;SACCK,MAAM,CAAC,CAAC,GAAGC,KAAAA,CAAM,GAAKA,KAAAA,CAAMC,MAAM,GAAG,CAAA,CACtC;AACCC,SAAAA,GAAG,CAACC,KAAAA,CAAAA;AAEX,IAAA,CAAA;;;;"}
1
+ {"version":3,"file":"get-enabled-scalars.mjs","sources":["../../../../../server/src/services/internals/helpers/get-enabled-scalars.ts"],"sourcesContent":["import { first } from 'lodash';\nimport type { Context } from '../../types';\nimport type { Constants } from '../../constants';\n\nexport default ({ strapi }: Context) =>\n () => {\n const { GRAPHQL_SCALAR_OPERATORS } = strapi.plugin('graphql').service<Constants>('constants');\n\n return (\n Object.entries(GRAPHQL_SCALAR_OPERATORS)\n // To be valid, a GraphQL scalar must have at least one operator enabled\n .filter(([, value]) => value.length > 0)\n // Only keep the key (the scalar name)\n .map(first)\n );\n };\n"],"names":["strapi","GRAPHQL_SCALAR_OPERATORS","plugin","service","Object","entries","filter","value","length","map","first"],"mappings":";;AAIA,wBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GACjC,IAAA;QACE,MAAM,EAAEC,wBAAwB,EAAE,GAAGD,OAAOE,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAY,WAAA,CAAA;AAEjF,QAAA,OACEC,MAAAA,CAAOC,OAAO,CAACJ,wBAAAA,CACb;SACCK,MAAM,CAAC,CAAC,GAAGC,KAAAA,CAAM,GAAKA,KAAAA,CAAMC,MAAM,GAAG,CAAA,CACtC;AACCC,SAAAA,GAAG,CAACC,KAAAA,CAAAA;AAEX,IAAA,CAAA;;;;"}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var nexus = require('nexus');
4
- var fp = require('lodash/fp');
5
4
  var utils = require('@strapi/utils');
6
5
 
7
6
  const { ValidationError } = utils.errors;
@@ -15,7 +14,7 @@ const { ValidationError } = utils.errors;
15
14
  definition (t) {
16
15
  t.nonNull.string('code', {
17
16
  resolve (parent) {
18
- const code = fp.get('code', parent);
17
+ const code = parent?.code;
19
18
  const isValidPlaceholderCode = Object.values(ERROR_CODES).includes(code);
20
19
  if (!isValidPlaceholderCode) {
21
20
  throw new ValidationError(`"${code}" is not a valid code value`);
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sources":["../../../../../server/src/services/internals/types/error.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { get } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nimport type { Context } from '../../types';\n\nconst { ValidationError } = errors;\n\n/**\n * Build an Error object type\n * @return {Object<string, NexusObjectTypeDef>}\n */\nexport default ({ strapi }: Context) => {\n const { ERROR_CODES, ERROR_TYPE_NAME } = strapi.plugin('graphql').service('constants');\n\n return objectType({\n name: ERROR_TYPE_NAME,\n\n definition(t) {\n t.nonNull.string('code', {\n resolve(parent) {\n const code = get('code', parent);\n\n const isValidPlaceholderCode = Object.values(ERROR_CODES).includes(code);\n if (!isValidPlaceholderCode) {\n throw new ValidationError(`\"${code}\" is not a valid code value`);\n }\n\n return code;\n },\n });\n\n t.string('message');\n },\n });\n};\n"],"names":["ValidationError","errors","strapi","ERROR_CODES","ERROR_TYPE_NAME","plugin","service","objectType","name","definition","t","nonNull","string","resolve","parent","code","get","isValidPlaceholderCode","Object","values","includes"],"mappings":";;;;;;AAMA,MAAM,EAAEA,eAAe,EAAE,GAAGC,YAAAA;AAE5B;;;AAGC,IACD,YAAe,CAAA,CAAC,EAAEC,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,WAAW,EAAEC,eAAe,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA;AAE1E,IAAA,OAAOC,gBAAAA,CAAW;QAChBC,IAAAA,EAAMJ,eAAAA;AAENK,QAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;AACVA,YAAAA,CAAAA,CAAEC,OAAO,CAACC,MAAM,CAAC,MAAA,EAAQ;AACvBC,gBAAAA,OAAAA,CAAAA,CAAQC,MAAM,EAAA;oBACZ,MAAMC,IAAAA,GAAOC,OAAI,MAAA,EAAQF,MAAAA,CAAAA;AAEzB,oBAAA,MAAMG,yBAAyBC,MAAAA,CAAOC,MAAM,CAAChB,WAAAA,CAAAA,CAAaiB,QAAQ,CAACL,IAAAA,CAAAA;AACnE,oBAAA,IAAI,CAACE,sBAAAA,EAAwB;AAC3B,wBAAA,MAAM,IAAIjB,eAAAA,CAAgB,CAAC,CAAC,EAAEe,IAAAA,CAAK,2BAA2B,CAAC,CAAA;AACjE,oBAAA;oBAEA,OAAOA,IAAAA;AACT,gBAAA;AACF,aAAA,CAAA;AAEAL,YAAAA,CAAAA,CAAEE,MAAM,CAAC,SAAA,CAAA;AACX,QAAA;AACF,KAAA,CAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"error.js","sources":["../../../../../server/src/services/internals/types/error.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { errors } from '@strapi/utils';\n\nimport type { Context } from '../../types';\n\nconst { ValidationError } = errors;\n\n/**\n * Build an Error object type\n * @return {Object<string, NexusObjectTypeDef>}\n */\nexport default ({ strapi }: Context) => {\n const { ERROR_CODES, ERROR_TYPE_NAME } = strapi.plugin('graphql').service('constants');\n\n return objectType({\n name: ERROR_TYPE_NAME,\n\n definition(t) {\n t.nonNull.string('code', {\n resolve(parent) {\n const code = parent?.code;\n\n const isValidPlaceholderCode = Object.values(ERROR_CODES).includes(code);\n if (!isValidPlaceholderCode) {\n throw new ValidationError(`\"${code}\" is not a valid code value`);\n }\n\n return code;\n },\n });\n\n t.string('message');\n },\n });\n};\n"],"names":["ValidationError","errors","strapi","ERROR_CODES","ERROR_TYPE_NAME","plugin","service","objectType","name","definition","t","nonNull","string","resolve","parent","code","isValidPlaceholderCode","Object","values","includes"],"mappings":";;;;;AAKA,MAAM,EAAEA,eAAe,EAAE,GAAGC,YAAAA;AAE5B;;;AAGC,IACD,YAAe,CAAA,CAAC,EAAEC,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,WAAW,EAAEC,eAAe,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA;AAE1E,IAAA,OAAOC,gBAAAA,CAAW;QAChBC,IAAAA,EAAMJ,eAAAA;AAENK,QAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;AACVA,YAAAA,CAAAA,CAAEC,OAAO,CAACC,MAAM,CAAC,MAAA,EAAQ;AACvBC,gBAAAA,OAAAA,CAAAA,CAAQC,MAAM,EAAA;AACZ,oBAAA,MAAMC,OAAOD,MAAAA,EAAQC,IAAAA;AAErB,oBAAA,MAAMC,yBAAyBC,MAAAA,CAAOC,MAAM,CAACf,WAAAA,CAAAA,CAAagB,QAAQ,CAACJ,IAAAA,CAAAA;AACnE,oBAAA,IAAI,CAACC,sBAAAA,EAAwB;AAC3B,wBAAA,MAAM,IAAIhB,eAAAA,CAAgB,CAAC,CAAC,EAAEe,IAAAA,CAAK,2BAA2B,CAAC,CAAA;AACjE,oBAAA;oBAEA,OAAOA,IAAAA;AACT,gBAAA;AACF,aAAA,CAAA;AAEAL,YAAAA,CAAAA,CAAEE,MAAM,CAAC,SAAA,CAAA;AACX,QAAA;AACF,KAAA,CAAA;AACF,CAAA;;;;"}
@@ -1,5 +1,4 @@
1
1
  import { objectType } from 'nexus';
2
- import { get } from 'lodash/fp';
3
2
  import { errors } from '@strapi/utils';
4
3
 
5
4
  const { ValidationError } = errors;
@@ -13,7 +12,7 @@ const { ValidationError } = errors;
13
12
  definition (t) {
14
13
  t.nonNull.string('code', {
15
14
  resolve (parent) {
16
- const code = get('code', parent);
15
+ const code = parent?.code;
17
16
  const isValidPlaceholderCode = Object.values(ERROR_CODES).includes(code);
18
17
  if (!isValidPlaceholderCode) {
19
18
  throw new ValidationError(`"${code}" is not a valid code value`);
@@ -1 +1 @@
1
- {"version":3,"file":"error.mjs","sources":["../../../../../server/src/services/internals/types/error.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { get } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nimport type { Context } from '../../types';\n\nconst { ValidationError } = errors;\n\n/**\n * Build an Error object type\n * @return {Object<string, NexusObjectTypeDef>}\n */\nexport default ({ strapi }: Context) => {\n const { ERROR_CODES, ERROR_TYPE_NAME } = strapi.plugin('graphql').service('constants');\n\n return objectType({\n name: ERROR_TYPE_NAME,\n\n definition(t) {\n t.nonNull.string('code', {\n resolve(parent) {\n const code = get('code', parent);\n\n const isValidPlaceholderCode = Object.values(ERROR_CODES).includes(code);\n if (!isValidPlaceholderCode) {\n throw new ValidationError(`\"${code}\" is not a valid code value`);\n }\n\n return code;\n },\n });\n\n t.string('message');\n },\n });\n};\n"],"names":["ValidationError","errors","strapi","ERROR_CODES","ERROR_TYPE_NAME","plugin","service","objectType","name","definition","t","nonNull","string","resolve","parent","code","get","isValidPlaceholderCode","Object","values","includes"],"mappings":";;;;AAMA,MAAM,EAAEA,eAAe,EAAE,GAAGC,MAAAA;AAE5B;;;AAGC,IACD,YAAe,CAAA,CAAC,EAAEC,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,WAAW,EAAEC,eAAe,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA;AAE1E,IAAA,OAAOC,UAAAA,CAAW;QAChBC,IAAAA,EAAMJ,eAAAA;AAENK,QAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;AACVA,YAAAA,CAAAA,CAAEC,OAAO,CAACC,MAAM,CAAC,MAAA,EAAQ;AACvBC,gBAAAA,OAAAA,CAAAA,CAAQC,MAAM,EAAA;oBACZ,MAAMC,IAAAA,GAAOC,IAAI,MAAA,EAAQF,MAAAA,CAAAA;AAEzB,oBAAA,MAAMG,yBAAyBC,MAAAA,CAAOC,MAAM,CAAChB,WAAAA,CAAAA,CAAaiB,QAAQ,CAACL,IAAAA,CAAAA;AACnE,oBAAA,IAAI,CAACE,sBAAAA,EAAwB;AAC3B,wBAAA,MAAM,IAAIjB,eAAAA,CAAgB,CAAC,CAAC,EAAEe,IAAAA,CAAK,2BAA2B,CAAC,CAAA;AACjE,oBAAA;oBAEA,OAAOA,IAAAA;AACT,gBAAA;AACF,aAAA,CAAA;AAEAL,YAAAA,CAAAA,CAAEE,MAAM,CAAC,SAAA,CAAA;AACX,QAAA;AACF,KAAA,CAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"error.mjs","sources":["../../../../../server/src/services/internals/types/error.ts"],"sourcesContent":["import { objectType } from 'nexus';\nimport { errors } from '@strapi/utils';\n\nimport type { Context } from '../../types';\n\nconst { ValidationError } = errors;\n\n/**\n * Build an Error object type\n * @return {Object<string, NexusObjectTypeDef>}\n */\nexport default ({ strapi }: Context) => {\n const { ERROR_CODES, ERROR_TYPE_NAME } = strapi.plugin('graphql').service('constants');\n\n return objectType({\n name: ERROR_TYPE_NAME,\n\n definition(t) {\n t.nonNull.string('code', {\n resolve(parent) {\n const code = parent?.code;\n\n const isValidPlaceholderCode = Object.values(ERROR_CODES).includes(code);\n if (!isValidPlaceholderCode) {\n throw new ValidationError(`\"${code}\" is not a valid code value`);\n }\n\n return code;\n },\n });\n\n t.string('message');\n },\n });\n};\n"],"names":["ValidationError","errors","strapi","ERROR_CODES","ERROR_TYPE_NAME","plugin","service","objectType","name","definition","t","nonNull","string","resolve","parent","code","isValidPlaceholderCode","Object","values","includes"],"mappings":";;;AAKA,MAAM,EAAEA,eAAe,EAAE,GAAGC,MAAAA;AAE5B;;;AAGC,IACD,YAAe,CAAA,CAAC,EAAEC,MAAM,EAAW,GAAA;IACjC,MAAM,EAAEC,WAAW,EAAEC,eAAe,EAAE,GAAGF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA;AAE1E,IAAA,OAAOC,UAAAA,CAAW;QAChBC,IAAAA,EAAMJ,eAAAA;AAENK,QAAAA,UAAAA,CAAAA,CAAWC,CAAC,EAAA;AACVA,YAAAA,CAAAA,CAAEC,OAAO,CAACC,MAAM,CAAC,MAAA,EAAQ;AACvBC,gBAAAA,OAAAA,CAAAA,CAAQC,MAAM,EAAA;AACZ,oBAAA,MAAMC,OAAOD,MAAAA,EAAQC,IAAAA;AAErB,oBAAA,MAAMC,yBAAyBC,MAAAA,CAAOC,MAAM,CAACf,WAAAA,CAAAA,CAAagB,QAAQ,CAACJ,IAAAA,CAAAA;AACnE,oBAAA,IAAI,CAACC,sBAAAA,EAAwB;AAC3B,wBAAA,MAAM,IAAIhB,eAAAA,CAAgB,CAAC,CAAC,EAAEe,IAAAA,CAAK,2BAA2B,CAAC,CAAA;AACjE,oBAAA;oBAEA,OAAOA,IAAAA;AACT,gBAAA;AACF,aAAA,CAAA;AAEAL,YAAAA,CAAAA,CAAEE,MAAM,CAAC,SAAA,CAAA;AACX,QAAA;AACF,KAAA,CAAA;AACF,CAAA;;;;"}
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
4
3
  var utils = require('@strapi/utils');
5
4
 
6
5
  const { ApplicationError } = utils.errors;
@@ -28,7 +27,7 @@ const { ApplicationError } = utils.errors;
28
27
  * @param {object | function} [config]
29
28
  */ registerMany (definitionsEntries, config = {}) {
30
29
  for (const [name, definition] of definitionsEntries){
31
- this.register(name, definition, fp.isFunction(config) ? config(name, definition) : config);
30
+ this.register(name, definition, typeof config === 'function' ? config(name, definition) : config);
32
31
  }
33
32
  return this;
34
33
  },
@@ -1 +1 @@
1
- {"version":3,"file":"type-registry.js","sources":["../../../server/src/services/type-registry.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nexport type TypeRegistry = {\n register(name: string, definition: any, config?: object): TypeRegistry;\n registerMany(\n definitionsEntries: [string, any][],\n config?: object | ((...args: any[]) => any)\n ): TypeRegistry;\n has(name: string): boolean;\n get(name: string): any;\n toObject(): Record<string, any>;\n types: string[];\n definitions: any[];\n where(predicate: (item: any) => boolean): any[];\n};\n\n/**\n * Create a new type registry\n */\nconst createTypeRegistry = (): TypeRegistry => {\n const registry = new Map();\n\n const typeRegistry: TypeRegistry = {\n /**\n * Register a new type definition\n */\n register(name, definition, config = {}) {\n if (registry.has(name)) {\n throw new ApplicationError(`\"${name}\" has already been registered`);\n }\n\n registry.set(name, { name, definition, config });\n\n return this;\n },\n\n /**\n * Register many types definitions at once\n * @param {[string, NexusAcceptedTypeDef][]} definitionsEntries\n * @param {object | function} [config]\n */\n registerMany(definitionsEntries, config = {}) {\n for (const [name, definition] of definitionsEntries) {\n this.register(name, definition, isFunction(config) ? config(name, definition) : config);\n }\n\n return this;\n },\n\n /**\n * Check if the given type name has already been added to the registry\n * @param {string} name\n * @return {boolean}\n */\n has(name) {\n return registry.has(name);\n },\n\n /**\n * Get the type definition for `name`\n * @param {string} name - The name of the type\n */\n get(name) {\n return registry.get(name);\n },\n\n /**\n * Transform and return the registry as an object\n * @return {Object<string, RegisteredTypeDef>}\n */\n toObject() {\n return Object.fromEntries(registry.entries());\n },\n\n /**\n * Return the name of every registered type\n * @return {string[]}\n */\n get types() {\n return Array.from(registry.keys());\n },\n\n /**\n * Return all the registered definitions as an array\n * @return {RegisteredTypeDef[]}\n */\n get definitions() {\n return Array.from(registry.values());\n },\n\n /**\n * Filter and return the types definitions that matches the given predicate\n * @param {function(RegisteredTypeDef): boolean} predicate\n * @return {RegisteredTypeDef[]}\n */\n where(predicate) {\n return this.definitions.filter(predicate);\n },\n };\n\n return typeRegistry;\n};\n\nexport default () => ({\n new: createTypeRegistry,\n});\n"],"names":["ApplicationError","errors","createTypeRegistry","registry","Map","typeRegistry","register","name","definition","config","has","set","registerMany","definitionsEntries","isFunction","get","toObject","Object","fromEntries","entries","types","Array","from","keys","definitions","values","where","predicate","filter","new"],"mappings":";;;;;AAGA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAgB7B;;AAEC,IACD,MAAMC,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAMC,WAAW,IAAIC,GAAAA,EAAAA;AAErB,IAAA,MAAMC,YAAAA,GAA6B;AACjC;;AAEC,QACDC,UAASC,IAAI,EAAEC,UAAU,EAAEC,MAAAA,GAAS,EAAE,EAAA;YACpC,IAAIN,QAAAA,CAASO,GAAG,CAACH,IAAAA,CAAAA,EAAO;AACtB,gBAAA,MAAM,IAAIP,gBAAAA,CAAiB,CAAC,CAAC,EAAEO,IAAAA,CAAK,6BAA6B,CAAC,CAAA;AACpE,YAAA;YAEAJ,QAAAA,CAASQ,GAAG,CAACJ,IAAAA,EAAM;AAAEA,gBAAAA,IAAAA;AAAMC,gBAAAA,UAAAA;AAAYC,gBAAAA;AAAO,aAAA,CAAA;AAE9C,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;AAIC,QACDG,YAAAA,CAAAA,CAAaC,kBAAkB,EAAEJ,MAAAA,GAAS,EAAE,EAAA;AAC1C,YAAA,KAAK,MAAM,CAACF,IAAAA,EAAMC,UAAAA,CAAW,IAAIK,kBAAAA,CAAoB;gBACnD,IAAI,CAACP,QAAQ,CAACC,IAAAA,EAAMC,YAAYM,aAAAA,CAAWL,MAAAA,CAAAA,GAAUA,MAAAA,CAAOF,IAAAA,EAAMC,UAAAA,CAAAA,GAAcC,MAAAA,CAAAA;AAClF,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;AAIC,QACDC,KAAIH,IAAI,EAAA;YACN,OAAOJ,QAAAA,CAASO,GAAG,CAACH,IAAAA,CAAAA;AACtB,QAAA,CAAA;AAEA;;;AAGC,QACDQ,KAAIR,IAAI,EAAA;YACN,OAAOJ,QAAAA,CAASY,GAAG,CAACR,IAAAA,CAAAA;AACtB,QAAA,CAAA;AAEA;;;QAIAS,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,MAAAA,CAAOC,WAAW,CAACf,QAAAA,CAASgB,OAAO,EAAA,CAAA;AAC5C,QAAA,CAAA;AAEA;;;AAGC,QACD,IAAIC,KAAAA,CAAAA,GAAQ;AACV,YAAA,OAAOC,KAAAA,CAAMC,IAAI,CAACnB,QAAAA,CAASoB,IAAI,EAAA,CAAA;AACjC,QAAA,CAAA;AAEA;;;AAGC,QACD,IAAIC,WAAAA,CAAAA,GAAc;AAChB,YAAA,OAAOH,KAAAA,CAAMC,IAAI,CAACnB,QAAAA,CAASsB,MAAM,EAAA,CAAA;AACnC,QAAA,CAAA;AAEA;;;;AAIC,QACDC,OAAMC,SAAS,EAAA;AACb,YAAA,OAAO,IAAI,CAACH,WAAW,CAACI,MAAM,CAACD,SAAAA,CAAAA;AACjC,QAAA;AACF,KAAA;IAEA,OAAOtB,YAAAA;AACT,CAAA;AAEA,mBAAe,CAAA,KAAO;QACpBwB,GAAAA,EAAK3B;AACP,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"type-registry.js","sources":["../../../server/src/services/type-registry.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nexport type TypeRegistry = {\n register(name: string, definition: any, config?: object): TypeRegistry;\n registerMany(\n definitionsEntries: [string, any][],\n config?: object | ((...args: any[]) => any)\n ): TypeRegistry;\n has(name: string): boolean;\n get(name: string): any;\n toObject(): Record<string, any>;\n types: string[];\n definitions: any[];\n where(predicate: (item: any) => boolean): any[];\n};\n\n/**\n * Create a new type registry\n */\nconst createTypeRegistry = (): TypeRegistry => {\n const registry = new Map();\n\n const typeRegistry: TypeRegistry = {\n /**\n * Register a new type definition\n */\n register(name, definition, config = {}) {\n if (registry.has(name)) {\n throw new ApplicationError(`\"${name}\" has already been registered`);\n }\n\n registry.set(name, { name, definition, config });\n\n return this;\n },\n\n /**\n * Register many types definitions at once\n * @param {[string, NexusAcceptedTypeDef][]} definitionsEntries\n * @param {object | function} [config]\n */\n registerMany(definitionsEntries, config = {}) {\n for (const [name, definition] of definitionsEntries) {\n this.register(\n name,\n definition,\n typeof config === 'function' ? config(name, definition) : config\n );\n }\n\n return this;\n },\n\n /**\n * Check if the given type name has already been added to the registry\n * @param {string} name\n * @return {boolean}\n */\n has(name) {\n return registry.has(name);\n },\n\n /**\n * Get the type definition for `name`\n * @param {string} name - The name of the type\n */\n get(name) {\n return registry.get(name);\n },\n\n /**\n * Transform and return the registry as an object\n * @return {Object<string, RegisteredTypeDef>}\n */\n toObject() {\n return Object.fromEntries(registry.entries());\n },\n\n /**\n * Return the name of every registered type\n * @return {string[]}\n */\n get types() {\n return Array.from(registry.keys());\n },\n\n /**\n * Return all the registered definitions as an array\n * @return {RegisteredTypeDef[]}\n */\n get definitions() {\n return Array.from(registry.values());\n },\n\n /**\n * Filter and return the types definitions that matches the given predicate\n * @param {function(RegisteredTypeDef): boolean} predicate\n * @return {RegisteredTypeDef[]}\n */\n where(predicate) {\n return this.definitions.filter(predicate);\n },\n };\n\n return typeRegistry;\n};\n\nexport default () => ({\n new: createTypeRegistry,\n});\n"],"names":["ApplicationError","errors","createTypeRegistry","registry","Map","typeRegistry","register","name","definition","config","has","set","registerMany","definitionsEntries","get","toObject","Object","fromEntries","entries","types","Array","from","keys","definitions","values","where","predicate","filter","new"],"mappings":";;;;AAEA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAgB7B;;AAEC,IACD,MAAMC,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAMC,WAAW,IAAIC,GAAAA,EAAAA;AAErB,IAAA,MAAMC,YAAAA,GAA6B;AACjC;;AAEC,QACDC,UAASC,IAAI,EAAEC,UAAU,EAAEC,MAAAA,GAAS,EAAE,EAAA;YACpC,IAAIN,QAAAA,CAASO,GAAG,CAACH,IAAAA,CAAAA,EAAO;AACtB,gBAAA,MAAM,IAAIP,gBAAAA,CAAiB,CAAC,CAAC,EAAEO,IAAAA,CAAK,6BAA6B,CAAC,CAAA;AACpE,YAAA;YAEAJ,QAAAA,CAASQ,GAAG,CAACJ,IAAAA,EAAM;AAAEA,gBAAAA,IAAAA;AAAMC,gBAAAA,UAAAA;AAAYC,gBAAAA;AAAO,aAAA,CAAA;AAE9C,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;AAIC,QACDG,YAAAA,CAAAA,CAAaC,kBAAkB,EAAEJ,MAAAA,GAAS,EAAE,EAAA;AAC1C,YAAA,KAAK,MAAM,CAACF,IAAAA,EAAMC,UAAAA,CAAW,IAAIK,kBAAAA,CAAoB;gBACnD,IAAI,CAACP,QAAQ,CACXC,IAAAA,EACAC,UAAAA,EACA,OAAOC,MAAAA,KAAW,UAAA,GAAaA,MAAAA,CAAOF,IAAAA,EAAMC,UAAAA,CAAAA,GAAcC,MAAAA,CAAAA;AAE9D,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;AAIC,QACDC,KAAIH,IAAI,EAAA;YACN,OAAOJ,QAAAA,CAASO,GAAG,CAACH,IAAAA,CAAAA;AACtB,QAAA,CAAA;AAEA;;;AAGC,QACDO,KAAIP,IAAI,EAAA;YACN,OAAOJ,QAAAA,CAASW,GAAG,CAACP,IAAAA,CAAAA;AACtB,QAAA,CAAA;AAEA;;;QAIAQ,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,MAAAA,CAAOC,WAAW,CAACd,QAAAA,CAASe,OAAO,EAAA,CAAA;AAC5C,QAAA,CAAA;AAEA;;;AAGC,QACD,IAAIC,KAAAA,CAAAA,GAAQ;AACV,YAAA,OAAOC,KAAAA,CAAMC,IAAI,CAAClB,QAAAA,CAASmB,IAAI,EAAA,CAAA;AACjC,QAAA,CAAA;AAEA;;;AAGC,QACD,IAAIC,WAAAA,CAAAA,GAAc;AAChB,YAAA,OAAOH,KAAAA,CAAMC,IAAI,CAAClB,QAAAA,CAASqB,MAAM,EAAA,CAAA;AACnC,QAAA,CAAA;AAEA;;;;AAIC,QACDC,OAAMC,SAAS,EAAA;AACb,YAAA,OAAO,IAAI,CAACH,WAAW,CAACI,MAAM,CAACD,SAAAA,CAAAA;AACjC,QAAA;AACF,KAAA;IAEA,OAAOrB,YAAAA;AACT,CAAA;AAEA,mBAAe,CAAA,KAAO;QACpBuB,GAAAA,EAAK1B;AACP,KAAA,CAAC;;;;"}
@@ -1,4 +1,3 @@
1
- import { isFunction } from 'lodash/fp';
2
1
  import { errors } from '@strapi/utils';
3
2
 
4
3
  const { ApplicationError } = errors;
@@ -26,7 +25,7 @@ const { ApplicationError } = errors;
26
25
  * @param {object | function} [config]
27
26
  */ registerMany (definitionsEntries, config = {}) {
28
27
  for (const [name, definition] of definitionsEntries){
29
- this.register(name, definition, isFunction(config) ? config(name, definition) : config);
28
+ this.register(name, definition, typeof config === 'function' ? config(name, definition) : config);
30
29
  }
31
30
  return this;
32
31
  },
@@ -1 +1 @@
1
- {"version":3,"file":"type-registry.mjs","sources":["../../../server/src/services/type-registry.ts"],"sourcesContent":["import { isFunction } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nexport type TypeRegistry = {\n register(name: string, definition: any, config?: object): TypeRegistry;\n registerMany(\n definitionsEntries: [string, any][],\n config?: object | ((...args: any[]) => any)\n ): TypeRegistry;\n has(name: string): boolean;\n get(name: string): any;\n toObject(): Record<string, any>;\n types: string[];\n definitions: any[];\n where(predicate: (item: any) => boolean): any[];\n};\n\n/**\n * Create a new type registry\n */\nconst createTypeRegistry = (): TypeRegistry => {\n const registry = new Map();\n\n const typeRegistry: TypeRegistry = {\n /**\n * Register a new type definition\n */\n register(name, definition, config = {}) {\n if (registry.has(name)) {\n throw new ApplicationError(`\"${name}\" has already been registered`);\n }\n\n registry.set(name, { name, definition, config });\n\n return this;\n },\n\n /**\n * Register many types definitions at once\n * @param {[string, NexusAcceptedTypeDef][]} definitionsEntries\n * @param {object | function} [config]\n */\n registerMany(definitionsEntries, config = {}) {\n for (const [name, definition] of definitionsEntries) {\n this.register(name, definition, isFunction(config) ? config(name, definition) : config);\n }\n\n return this;\n },\n\n /**\n * Check if the given type name has already been added to the registry\n * @param {string} name\n * @return {boolean}\n */\n has(name) {\n return registry.has(name);\n },\n\n /**\n * Get the type definition for `name`\n * @param {string} name - The name of the type\n */\n get(name) {\n return registry.get(name);\n },\n\n /**\n * Transform and return the registry as an object\n * @return {Object<string, RegisteredTypeDef>}\n */\n toObject() {\n return Object.fromEntries(registry.entries());\n },\n\n /**\n * Return the name of every registered type\n * @return {string[]}\n */\n get types() {\n return Array.from(registry.keys());\n },\n\n /**\n * Return all the registered definitions as an array\n * @return {RegisteredTypeDef[]}\n */\n get definitions() {\n return Array.from(registry.values());\n },\n\n /**\n * Filter and return the types definitions that matches the given predicate\n * @param {function(RegisteredTypeDef): boolean} predicate\n * @return {RegisteredTypeDef[]}\n */\n where(predicate) {\n return this.definitions.filter(predicate);\n },\n };\n\n return typeRegistry;\n};\n\nexport default () => ({\n new: createTypeRegistry,\n});\n"],"names":["ApplicationError","errors","createTypeRegistry","registry","Map","typeRegistry","register","name","definition","config","has","set","registerMany","definitionsEntries","isFunction","get","toObject","Object","fromEntries","entries","types","Array","from","keys","definitions","values","where","predicate","filter","new"],"mappings":";;;AAGA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAgB7B;;AAEC,IACD,MAAMC,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAMC,WAAW,IAAIC,GAAAA,EAAAA;AAErB,IAAA,MAAMC,YAAAA,GAA6B;AACjC;;AAEC,QACDC,UAASC,IAAI,EAAEC,UAAU,EAAEC,MAAAA,GAAS,EAAE,EAAA;YACpC,IAAIN,QAAAA,CAASO,GAAG,CAACH,IAAAA,CAAAA,EAAO;AACtB,gBAAA,MAAM,IAAIP,gBAAAA,CAAiB,CAAC,CAAC,EAAEO,IAAAA,CAAK,6BAA6B,CAAC,CAAA;AACpE,YAAA;YAEAJ,QAAAA,CAASQ,GAAG,CAACJ,IAAAA,EAAM;AAAEA,gBAAAA,IAAAA;AAAMC,gBAAAA,UAAAA;AAAYC,gBAAAA;AAAO,aAAA,CAAA;AAE9C,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;AAIC,QACDG,YAAAA,CAAAA,CAAaC,kBAAkB,EAAEJ,MAAAA,GAAS,EAAE,EAAA;AAC1C,YAAA,KAAK,MAAM,CAACF,IAAAA,EAAMC,UAAAA,CAAW,IAAIK,kBAAAA,CAAoB;gBACnD,IAAI,CAACP,QAAQ,CAACC,IAAAA,EAAMC,YAAYM,UAAAA,CAAWL,MAAAA,CAAAA,GAAUA,MAAAA,CAAOF,IAAAA,EAAMC,UAAAA,CAAAA,GAAcC,MAAAA,CAAAA;AAClF,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;AAIC,QACDC,KAAIH,IAAI,EAAA;YACN,OAAOJ,QAAAA,CAASO,GAAG,CAACH,IAAAA,CAAAA;AACtB,QAAA,CAAA;AAEA;;;AAGC,QACDQ,KAAIR,IAAI,EAAA;YACN,OAAOJ,QAAAA,CAASY,GAAG,CAACR,IAAAA,CAAAA;AACtB,QAAA,CAAA;AAEA;;;QAIAS,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,MAAAA,CAAOC,WAAW,CAACf,QAAAA,CAASgB,OAAO,EAAA,CAAA;AAC5C,QAAA,CAAA;AAEA;;;AAGC,QACD,IAAIC,KAAAA,CAAAA,GAAQ;AACV,YAAA,OAAOC,KAAAA,CAAMC,IAAI,CAACnB,QAAAA,CAASoB,IAAI,EAAA,CAAA;AACjC,QAAA,CAAA;AAEA;;;AAGC,QACD,IAAIC,WAAAA,CAAAA,GAAc;AAChB,YAAA,OAAOH,KAAAA,CAAMC,IAAI,CAACnB,QAAAA,CAASsB,MAAM,EAAA,CAAA;AACnC,QAAA,CAAA;AAEA;;;;AAIC,QACDC,OAAMC,SAAS,EAAA;AACb,YAAA,OAAO,IAAI,CAACH,WAAW,CAACI,MAAM,CAACD,SAAAA,CAAAA;AACjC,QAAA;AACF,KAAA;IAEA,OAAOtB,YAAAA;AACT,CAAA;AAEA,mBAAe,CAAA,KAAO;QACpBwB,GAAAA,EAAK3B;AACP,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"type-registry.mjs","sources":["../../../server/src/services/type-registry.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nexport type TypeRegistry = {\n register(name: string, definition: any, config?: object): TypeRegistry;\n registerMany(\n definitionsEntries: [string, any][],\n config?: object | ((...args: any[]) => any)\n ): TypeRegistry;\n has(name: string): boolean;\n get(name: string): any;\n toObject(): Record<string, any>;\n types: string[];\n definitions: any[];\n where(predicate: (item: any) => boolean): any[];\n};\n\n/**\n * Create a new type registry\n */\nconst createTypeRegistry = (): TypeRegistry => {\n const registry = new Map();\n\n const typeRegistry: TypeRegistry = {\n /**\n * Register a new type definition\n */\n register(name, definition, config = {}) {\n if (registry.has(name)) {\n throw new ApplicationError(`\"${name}\" has already been registered`);\n }\n\n registry.set(name, { name, definition, config });\n\n return this;\n },\n\n /**\n * Register many types definitions at once\n * @param {[string, NexusAcceptedTypeDef][]} definitionsEntries\n * @param {object | function} [config]\n */\n registerMany(definitionsEntries, config = {}) {\n for (const [name, definition] of definitionsEntries) {\n this.register(\n name,\n definition,\n typeof config === 'function' ? config(name, definition) : config\n );\n }\n\n return this;\n },\n\n /**\n * Check if the given type name has already been added to the registry\n * @param {string} name\n * @return {boolean}\n */\n has(name) {\n return registry.has(name);\n },\n\n /**\n * Get the type definition for `name`\n * @param {string} name - The name of the type\n */\n get(name) {\n return registry.get(name);\n },\n\n /**\n * Transform and return the registry as an object\n * @return {Object<string, RegisteredTypeDef>}\n */\n toObject() {\n return Object.fromEntries(registry.entries());\n },\n\n /**\n * Return the name of every registered type\n * @return {string[]}\n */\n get types() {\n return Array.from(registry.keys());\n },\n\n /**\n * Return all the registered definitions as an array\n * @return {RegisteredTypeDef[]}\n */\n get definitions() {\n return Array.from(registry.values());\n },\n\n /**\n * Filter and return the types definitions that matches the given predicate\n * @param {function(RegisteredTypeDef): boolean} predicate\n * @return {RegisteredTypeDef[]}\n */\n where(predicate) {\n return this.definitions.filter(predicate);\n },\n };\n\n return typeRegistry;\n};\n\nexport default () => ({\n new: createTypeRegistry,\n});\n"],"names":["ApplicationError","errors","createTypeRegistry","registry","Map","typeRegistry","register","name","definition","config","has","set","registerMany","definitionsEntries","get","toObject","Object","fromEntries","entries","types","Array","from","keys","definitions","values","where","predicate","filter","new"],"mappings":";;AAEA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAgB7B;;AAEC,IACD,MAAMC,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAMC,WAAW,IAAIC,GAAAA,EAAAA;AAErB,IAAA,MAAMC,YAAAA,GAA6B;AACjC;;AAEC,QACDC,UAASC,IAAI,EAAEC,UAAU,EAAEC,MAAAA,GAAS,EAAE,EAAA;YACpC,IAAIN,QAAAA,CAASO,GAAG,CAACH,IAAAA,CAAAA,EAAO;AACtB,gBAAA,MAAM,IAAIP,gBAAAA,CAAiB,CAAC,CAAC,EAAEO,IAAAA,CAAK,6BAA6B,CAAC,CAAA;AACpE,YAAA;YAEAJ,QAAAA,CAASQ,GAAG,CAACJ,IAAAA,EAAM;AAAEA,gBAAAA,IAAAA;AAAMC,gBAAAA,UAAAA;AAAYC,gBAAAA;AAAO,aAAA,CAAA;AAE9C,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;AAIC,QACDG,YAAAA,CAAAA,CAAaC,kBAAkB,EAAEJ,MAAAA,GAAS,EAAE,EAAA;AAC1C,YAAA,KAAK,MAAM,CAACF,IAAAA,EAAMC,UAAAA,CAAW,IAAIK,kBAAAA,CAAoB;gBACnD,IAAI,CAACP,QAAQ,CACXC,IAAAA,EACAC,UAAAA,EACA,OAAOC,MAAAA,KAAW,UAAA,GAAaA,MAAAA,CAAOF,IAAAA,EAAMC,UAAAA,CAAAA,GAAcC,MAAAA,CAAAA;AAE9D,YAAA;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAA;AAEA;;;;AAIC,QACDC,KAAIH,IAAI,EAAA;YACN,OAAOJ,QAAAA,CAASO,GAAG,CAACH,IAAAA,CAAAA;AACtB,QAAA,CAAA;AAEA;;;AAGC,QACDO,KAAIP,IAAI,EAAA;YACN,OAAOJ,QAAAA,CAASW,GAAG,CAACP,IAAAA,CAAAA;AACtB,QAAA,CAAA;AAEA;;;QAIAQ,QAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOC,MAAAA,CAAOC,WAAW,CAACd,QAAAA,CAASe,OAAO,EAAA,CAAA;AAC5C,QAAA,CAAA;AAEA;;;AAGC,QACD,IAAIC,KAAAA,CAAAA,GAAQ;AACV,YAAA,OAAOC,KAAAA,CAAMC,IAAI,CAAClB,QAAAA,CAASmB,IAAI,EAAA,CAAA;AACjC,QAAA,CAAA;AAEA;;;AAGC,QACD,IAAIC,WAAAA,CAAAA,GAAc;AAChB,YAAA,OAAOH,KAAAA,CAAMC,IAAI,CAAClB,QAAAA,CAASqB,MAAM,EAAA,CAAA;AACnC,QAAA,CAAA;AAEA;;;;AAIC,QACDC,OAAMC,SAAS,EAAA;AACb,YAAA,OAAO,IAAI,CAACH,WAAW,CAACI,MAAM,CAACD,SAAAA,CAAAA;AACjC,QAAA;AACF,KAAA;IAEA,OAAOrB,YAAAA;AACT,CAAA;AAEA,mBAAe,CAAA,KAAO;QACpBuB,GAAAA,EAAK1B;AACP,KAAA,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var lodash = require('lodash');
4
4
 
5
5
  var attributes = (({ strapi })=>{
6
6
  /**
@@ -28,27 +28,27 @@ var attributes = (({ strapi })=>{
28
28
  * Check if the given attribute is a media
29
29
  * @param {object} attribute
30
30
  * @return {boolean}
31
- */ const isMedia = fp.propEq('type', 'media');
31
+ */ const isMedia = lodash.matchesProperty('type', 'media');
32
32
  /**
33
33
  * Check if the given attribute is a relation
34
34
  * @param {object} attribute
35
35
  * @return {boolean}
36
- */ const isRelation = fp.propEq('type', 'relation');
36
+ */ const isRelation = lodash.matchesProperty('type', 'relation');
37
37
  /**
38
38
  * Check if the given attribute is an enum
39
39
  * @param {object} attribute
40
40
  * @return {boolean}
41
- */ const isEnumeration = fp.propEq('type', 'enumeration');
41
+ */ const isEnumeration = lodash.matchesProperty('type', 'enumeration');
42
42
  /**
43
43
  * Check if the given attribute is a component
44
44
  * @param {object} attribute
45
45
  * @return {boolean}
46
- */ const isComponent = fp.propEq('type', 'component');
46
+ */ const isComponent = lodash.matchesProperty('type', 'component');
47
47
  /**
48
48
  * Check if the given attribute is a dynamic zone
49
49
  * @param {object} attribute
50
50
  * @return {boolean}
51
- */ const isDynamicZone = fp.propEq('type', 'dynamiczone');
51
+ */ const isDynamicZone = lodash.matchesProperty('type', 'dynamiczone');
52
52
  return {
53
53
  isStrapiScalar,
54
54
  isGraphQLScalar,
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","sources":["../../../../server/src/services/utils/attributes.ts"],"sourcesContent":["import { propEq } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n /**\n * Check if the given attribute is a Strapi scalar\n * @param {object} attribute\n * @return {boolean}\n */\n const isStrapiScalar = (attribute: Schema.Attribute.AnyAttribute) => {\n return strapi.plugin('graphql').service('constants').STRAPI_SCALARS.includes(attribute.type);\n };\n\n /**\n * Check if the given attribute is a GraphQL scalar\n * @param {object} attribute\n * @return {boolean}\n */\n const isGraphQLScalar = (attribute: Schema.Attribute.AnyAttribute) => {\n return strapi.plugin('graphql').service('constants').GRAPHQL_SCALARS.includes(attribute.type);\n };\n\n /**\n * Check if the given attribute is a polymorphic relation\n * @param {object} attribute\n * @return {boolean}\n */\n const isMorphRelation = (attribute: Schema.Attribute.AnyAttribute) => {\n return attribute.type === 'relation' && attribute.relation.includes('morph');\n };\n\n /**\n * Check if the given attribute is a media\n * @param {object} attribute\n * @return {boolean}\n */\n const isMedia = propEq('type', 'media');\n\n /**\n * Check if the given attribute is a relation\n * @param {object} attribute\n * @return {boolean}\n */\n const isRelation = propEq('type', 'relation');\n\n /**\n * Check if the given attribute is an enum\n * @param {object} attribute\n * @return {boolean}\n */\n const isEnumeration = propEq('type', 'enumeration');\n\n /**\n * Check if the given attribute is a component\n * @param {object} attribute\n * @return {boolean}\n */\n const isComponent = propEq('type', 'component');\n\n /**\n * Check if the given attribute is a dynamic zone\n * @param {object} attribute\n * @return {boolean}\n */\n const isDynamicZone = propEq('type', 'dynamiczone');\n\n return {\n isStrapiScalar,\n isGraphQLScalar,\n isMorphRelation,\n isMedia,\n isRelation,\n isEnumeration,\n isComponent,\n isDynamicZone,\n };\n};\n"],"names":["strapi","isStrapiScalar","attribute","plugin","service","STRAPI_SCALARS","includes","type","isGraphQLScalar","GRAPHQL_SCALARS","isMorphRelation","relation","isMedia","propEq","isRelation","isEnumeration","isComponent","isDynamicZone"],"mappings":";;;;AAIA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC;;;;MAKA,MAAMC,iBAAiB,CAACC,SAAAA,GAAAA;AACtB,QAAA,OAAOF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA,CAAaC,cAAc,CAACC,QAAQ,CAACJ,SAAAA,CAAUK,IAAI,CAAA;AAC7F,IAAA,CAAA;AAEA;;;;MAKA,MAAMC,kBAAkB,CAACN,SAAAA,GAAAA;AACvB,QAAA,OAAOF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA,CAAaK,eAAe,CAACH,QAAQ,CAACJ,SAAAA,CAAUK,IAAI,CAAA;AAC9F,IAAA,CAAA;AAEA;;;;MAKA,MAAMG,kBAAkB,CAACR,SAAAA,GAAAA;QACvB,OAAOA,SAAAA,CAAUK,IAAI,KAAK,UAAA,IAAcL,UAAUS,QAAQ,CAACL,QAAQ,CAAC,OAAA,CAAA;AACtE,IAAA,CAAA;AAEA;;;;MAKA,MAAMM,OAAAA,GAAUC,SAAAA,CAAO,MAAA,EAAQ,OAAA,CAAA;AAE/B;;;;MAKA,MAAMC,UAAAA,GAAaD,SAAAA,CAAO,MAAA,EAAQ,UAAA,CAAA;AAElC;;;;MAKA,MAAME,aAAAA,GAAgBF,SAAAA,CAAO,MAAA,EAAQ,aAAA,CAAA;AAErC;;;;MAKA,MAAMG,WAAAA,GAAcH,SAAAA,CAAO,MAAA,EAAQ,WAAA,CAAA;AAEnC;;;;MAKA,MAAMI,aAAAA,GAAgBJ,SAAAA,CAAO,MAAA,EAAQ,aAAA,CAAA;IAErC,OAAO;AACLZ,QAAAA,cAAAA;AACAO,QAAAA,eAAAA;AACAE,QAAAA,eAAAA;AACAE,QAAAA,OAAAA;AACAE,QAAAA,UAAAA;AACAC,QAAAA,aAAAA;AACAC,QAAAA,WAAAA;AACAC,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"attributes.js","sources":["../../../../server/src/services/utils/attributes.ts"],"sourcesContent":["import { matchesProperty } from 'lodash';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n /**\n * Check if the given attribute is a Strapi scalar\n * @param {object} attribute\n * @return {boolean}\n */\n const isStrapiScalar = (attribute: Schema.Attribute.AnyAttribute) => {\n return strapi.plugin('graphql').service('constants').STRAPI_SCALARS.includes(attribute.type);\n };\n\n /**\n * Check if the given attribute is a GraphQL scalar\n * @param {object} attribute\n * @return {boolean}\n */\n const isGraphQLScalar = (attribute: Schema.Attribute.AnyAttribute) => {\n return strapi.plugin('graphql').service('constants').GRAPHQL_SCALARS.includes(attribute.type);\n };\n\n /**\n * Check if the given attribute is a polymorphic relation\n * @param {object} attribute\n * @return {boolean}\n */\n const isMorphRelation = (attribute: Schema.Attribute.AnyAttribute) => {\n return attribute.type === 'relation' && attribute.relation.includes('morph');\n };\n\n /**\n * Check if the given attribute is a media\n * @param {object} attribute\n * @return {boolean}\n */\n const isMedia = matchesProperty('type', 'media');\n\n /**\n * Check if the given attribute is a relation\n * @param {object} attribute\n * @return {boolean}\n */\n const isRelation = matchesProperty('type', 'relation');\n\n /**\n * Check if the given attribute is an enum\n * @param {object} attribute\n * @return {boolean}\n */\n const isEnumeration = matchesProperty('type', 'enumeration');\n\n /**\n * Check if the given attribute is a component\n * @param {object} attribute\n * @return {boolean}\n */\n const isComponent = matchesProperty('type', 'component');\n\n /**\n * Check if the given attribute is a dynamic zone\n * @param {object} attribute\n * @return {boolean}\n */\n const isDynamicZone = matchesProperty('type', 'dynamiczone');\n\n return {\n isStrapiScalar,\n isGraphQLScalar,\n isMorphRelation,\n isMedia,\n isRelation,\n isEnumeration,\n isComponent,\n isDynamicZone,\n };\n};\n"],"names":["strapi","isStrapiScalar","attribute","plugin","service","STRAPI_SCALARS","includes","type","isGraphQLScalar","GRAPHQL_SCALARS","isMorphRelation","relation","isMedia","matchesProperty","isRelation","isEnumeration","isComponent","isDynamicZone"],"mappings":";;;;AAIA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC;;;;MAKA,MAAMC,iBAAiB,CAACC,SAAAA,GAAAA;AACtB,QAAA,OAAOF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA,CAAaC,cAAc,CAACC,QAAQ,CAACJ,SAAAA,CAAUK,IAAI,CAAA;AAC7F,IAAA,CAAA;AAEA;;;;MAKA,MAAMC,kBAAkB,CAACN,SAAAA,GAAAA;AACvB,QAAA,OAAOF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA,CAAaK,eAAe,CAACH,QAAQ,CAACJ,SAAAA,CAAUK,IAAI,CAAA;AAC9F,IAAA,CAAA;AAEA;;;;MAKA,MAAMG,kBAAkB,CAACR,SAAAA,GAAAA;QACvB,OAAOA,SAAAA,CAAUK,IAAI,KAAK,UAAA,IAAcL,UAAUS,QAAQ,CAACL,QAAQ,CAAC,OAAA,CAAA;AACtE,IAAA,CAAA;AAEA;;;;MAKA,MAAMM,OAAAA,GAAUC,sBAAAA,CAAgB,MAAA,EAAQ,OAAA,CAAA;AAExC;;;;MAKA,MAAMC,UAAAA,GAAaD,sBAAAA,CAAgB,MAAA,EAAQ,UAAA,CAAA;AAE3C;;;;MAKA,MAAME,aAAAA,GAAgBF,sBAAAA,CAAgB,MAAA,EAAQ,aAAA,CAAA;AAE9C;;;;MAKA,MAAMG,WAAAA,GAAcH,sBAAAA,CAAgB,MAAA,EAAQ,WAAA,CAAA;AAE5C;;;;MAKA,MAAMI,aAAAA,GAAgBJ,sBAAAA,CAAgB,MAAA,EAAQ,aAAA,CAAA;IAE9C,OAAO;AACLZ,QAAAA,cAAAA;AACAO,QAAAA,eAAAA;AACAE,QAAAA,eAAAA;AACAE,QAAAA,OAAAA;AACAE,QAAAA,UAAAA;AACAC,QAAAA,aAAAA;AACAC,QAAAA,WAAAA;AACAC,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { propEq } from 'lodash/fp';
1
+ import { matchesProperty } from 'lodash';
2
2
 
3
3
  var attributes = (({ strapi })=>{
4
4
  /**
@@ -26,27 +26,27 @@ var attributes = (({ strapi })=>{
26
26
  * Check if the given attribute is a media
27
27
  * @param {object} attribute
28
28
  * @return {boolean}
29
- */ const isMedia = propEq('type', 'media');
29
+ */ const isMedia = matchesProperty('type', 'media');
30
30
  /**
31
31
  * Check if the given attribute is a relation
32
32
  * @param {object} attribute
33
33
  * @return {boolean}
34
- */ const isRelation = propEq('type', 'relation');
34
+ */ const isRelation = matchesProperty('type', 'relation');
35
35
  /**
36
36
  * Check if the given attribute is an enum
37
37
  * @param {object} attribute
38
38
  * @return {boolean}
39
- */ const isEnumeration = propEq('type', 'enumeration');
39
+ */ const isEnumeration = matchesProperty('type', 'enumeration');
40
40
  /**
41
41
  * Check if the given attribute is a component
42
42
  * @param {object} attribute
43
43
  * @return {boolean}
44
- */ const isComponent = propEq('type', 'component');
44
+ */ const isComponent = matchesProperty('type', 'component');
45
45
  /**
46
46
  * Check if the given attribute is a dynamic zone
47
47
  * @param {object} attribute
48
48
  * @return {boolean}
49
- */ const isDynamicZone = propEq('type', 'dynamiczone');
49
+ */ const isDynamicZone = matchesProperty('type', 'dynamiczone');
50
50
  return {
51
51
  isStrapiScalar,
52
52
  isGraphQLScalar,
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.mjs","sources":["../../../../server/src/services/utils/attributes.ts"],"sourcesContent":["import { propEq } from 'lodash/fp';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n /**\n * Check if the given attribute is a Strapi scalar\n * @param {object} attribute\n * @return {boolean}\n */\n const isStrapiScalar = (attribute: Schema.Attribute.AnyAttribute) => {\n return strapi.plugin('graphql').service('constants').STRAPI_SCALARS.includes(attribute.type);\n };\n\n /**\n * Check if the given attribute is a GraphQL scalar\n * @param {object} attribute\n * @return {boolean}\n */\n const isGraphQLScalar = (attribute: Schema.Attribute.AnyAttribute) => {\n return strapi.plugin('graphql').service('constants').GRAPHQL_SCALARS.includes(attribute.type);\n };\n\n /**\n * Check if the given attribute is a polymorphic relation\n * @param {object} attribute\n * @return {boolean}\n */\n const isMorphRelation = (attribute: Schema.Attribute.AnyAttribute) => {\n return attribute.type === 'relation' && attribute.relation.includes('morph');\n };\n\n /**\n * Check if the given attribute is a media\n * @param {object} attribute\n * @return {boolean}\n */\n const isMedia = propEq('type', 'media');\n\n /**\n * Check if the given attribute is a relation\n * @param {object} attribute\n * @return {boolean}\n */\n const isRelation = propEq('type', 'relation');\n\n /**\n * Check if the given attribute is an enum\n * @param {object} attribute\n * @return {boolean}\n */\n const isEnumeration = propEq('type', 'enumeration');\n\n /**\n * Check if the given attribute is a component\n * @param {object} attribute\n * @return {boolean}\n */\n const isComponent = propEq('type', 'component');\n\n /**\n * Check if the given attribute is a dynamic zone\n * @param {object} attribute\n * @return {boolean}\n */\n const isDynamicZone = propEq('type', 'dynamiczone');\n\n return {\n isStrapiScalar,\n isGraphQLScalar,\n isMorphRelation,\n isMedia,\n isRelation,\n isEnumeration,\n isComponent,\n isDynamicZone,\n };\n};\n"],"names":["strapi","isStrapiScalar","attribute","plugin","service","STRAPI_SCALARS","includes","type","isGraphQLScalar","GRAPHQL_SCALARS","isMorphRelation","relation","isMedia","propEq","isRelation","isEnumeration","isComponent","isDynamicZone"],"mappings":";;AAIA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC;;;;MAKA,MAAMC,iBAAiB,CAACC,SAAAA,GAAAA;AACtB,QAAA,OAAOF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA,CAAaC,cAAc,CAACC,QAAQ,CAACJ,SAAAA,CAAUK,IAAI,CAAA;AAC7F,IAAA,CAAA;AAEA;;;;MAKA,MAAMC,kBAAkB,CAACN,SAAAA,GAAAA;AACvB,QAAA,OAAOF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA,CAAaK,eAAe,CAACH,QAAQ,CAACJ,SAAAA,CAAUK,IAAI,CAAA;AAC9F,IAAA,CAAA;AAEA;;;;MAKA,MAAMG,kBAAkB,CAACR,SAAAA,GAAAA;QACvB,OAAOA,SAAAA,CAAUK,IAAI,KAAK,UAAA,IAAcL,UAAUS,QAAQ,CAACL,QAAQ,CAAC,OAAA,CAAA;AACtE,IAAA,CAAA;AAEA;;;;MAKA,MAAMM,OAAAA,GAAUC,MAAAA,CAAO,MAAA,EAAQ,OAAA,CAAA;AAE/B;;;;MAKA,MAAMC,UAAAA,GAAaD,MAAAA,CAAO,MAAA,EAAQ,UAAA,CAAA;AAElC;;;;MAKA,MAAME,aAAAA,GAAgBF,MAAAA,CAAO,MAAA,EAAQ,aAAA,CAAA;AAErC;;;;MAKA,MAAMG,WAAAA,GAAcH,MAAAA,CAAO,MAAA,EAAQ,WAAA,CAAA;AAEnC;;;;MAKA,MAAMI,aAAAA,GAAgBJ,MAAAA,CAAO,MAAA,EAAQ,aAAA,CAAA;IAErC,OAAO;AACLZ,QAAAA,cAAAA;AACAO,QAAAA,eAAAA;AACAE,QAAAA,eAAAA;AACAE,QAAAA,OAAAA;AACAE,QAAAA,UAAAA;AACAC,QAAAA,aAAAA;AACAC,QAAAA,WAAAA;AACAC,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"attributes.mjs","sources":["../../../../server/src/services/utils/attributes.ts"],"sourcesContent":["import { matchesProperty } from 'lodash';\nimport type { Schema } from '@strapi/types';\nimport type { Context } from '../types';\n\nexport default ({ strapi }: Context) => {\n /**\n * Check if the given attribute is a Strapi scalar\n * @param {object} attribute\n * @return {boolean}\n */\n const isStrapiScalar = (attribute: Schema.Attribute.AnyAttribute) => {\n return strapi.plugin('graphql').service('constants').STRAPI_SCALARS.includes(attribute.type);\n };\n\n /**\n * Check if the given attribute is a GraphQL scalar\n * @param {object} attribute\n * @return {boolean}\n */\n const isGraphQLScalar = (attribute: Schema.Attribute.AnyAttribute) => {\n return strapi.plugin('graphql').service('constants').GRAPHQL_SCALARS.includes(attribute.type);\n };\n\n /**\n * Check if the given attribute is a polymorphic relation\n * @param {object} attribute\n * @return {boolean}\n */\n const isMorphRelation = (attribute: Schema.Attribute.AnyAttribute) => {\n return attribute.type === 'relation' && attribute.relation.includes('morph');\n };\n\n /**\n * Check if the given attribute is a media\n * @param {object} attribute\n * @return {boolean}\n */\n const isMedia = matchesProperty('type', 'media');\n\n /**\n * Check if the given attribute is a relation\n * @param {object} attribute\n * @return {boolean}\n */\n const isRelation = matchesProperty('type', 'relation');\n\n /**\n * Check if the given attribute is an enum\n * @param {object} attribute\n * @return {boolean}\n */\n const isEnumeration = matchesProperty('type', 'enumeration');\n\n /**\n * Check if the given attribute is a component\n * @param {object} attribute\n * @return {boolean}\n */\n const isComponent = matchesProperty('type', 'component');\n\n /**\n * Check if the given attribute is a dynamic zone\n * @param {object} attribute\n * @return {boolean}\n */\n const isDynamicZone = matchesProperty('type', 'dynamiczone');\n\n return {\n isStrapiScalar,\n isGraphQLScalar,\n isMorphRelation,\n isMedia,\n isRelation,\n isEnumeration,\n isComponent,\n isDynamicZone,\n };\n};\n"],"names":["strapi","isStrapiScalar","attribute","plugin","service","STRAPI_SCALARS","includes","type","isGraphQLScalar","GRAPHQL_SCALARS","isMorphRelation","relation","isMedia","matchesProperty","isRelation","isEnumeration","isComponent","isDynamicZone"],"mappings":";;AAIA,iBAAe,CAAA,CAAC,EAAEA,MAAM,EAAW,GAAA;AACjC;;;;MAKA,MAAMC,iBAAiB,CAACC,SAAAA,GAAAA;AACtB,QAAA,OAAOF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA,CAAaC,cAAc,CAACC,QAAQ,CAACJ,SAAAA,CAAUK,IAAI,CAAA;AAC7F,IAAA,CAAA;AAEA;;;;MAKA,MAAMC,kBAAkB,CAACN,SAAAA,GAAAA;AACvB,QAAA,OAAOF,MAAAA,CAAOG,MAAM,CAAC,SAAA,CAAA,CAAWC,OAAO,CAAC,WAAA,CAAA,CAAaK,eAAe,CAACH,QAAQ,CAACJ,SAAAA,CAAUK,IAAI,CAAA;AAC9F,IAAA,CAAA;AAEA;;;;MAKA,MAAMG,kBAAkB,CAACR,SAAAA,GAAAA;QACvB,OAAOA,SAAAA,CAAUK,IAAI,KAAK,UAAA,IAAcL,UAAUS,QAAQ,CAACL,QAAQ,CAAC,OAAA,CAAA;AACtE,IAAA,CAAA;AAEA;;;;MAKA,MAAMM,OAAAA,GAAUC,eAAAA,CAAgB,MAAA,EAAQ,OAAA,CAAA;AAExC;;;;MAKA,MAAMC,UAAAA,GAAaD,eAAAA,CAAgB,MAAA,EAAQ,UAAA,CAAA;AAE3C;;;;MAKA,MAAME,aAAAA,GAAgBF,eAAAA,CAAgB,MAAA,EAAQ,aAAA,CAAA;AAE9C;;;;MAKA,MAAMG,WAAAA,GAAcH,eAAAA,CAAgB,MAAA,EAAQ,WAAA,CAAA;AAE5C;;;;MAKA,MAAMI,aAAAA,GAAgBJ,eAAAA,CAAgB,MAAA,EAAQ,aAAA,CAAA;IAE9C,OAAO;AACLZ,QAAAA,cAAAA;AACAO,QAAAA,eAAAA;AACAE,QAAAA,eAAAA;AACAE,QAAAA,OAAAA;AACAE,QAAAA,UAAAA;AACAC,QAAAA,aAAAA;AACAC,QAAAA,WAAAA;AACAC,QAAAA;AACF,KAAA;AACF,CAAA;;;;"}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var lodash = require('lodash');
4
4
 
5
5
  const entityToResponseEntity = (entity)=>({
6
6
  id: entity.id,
7
7
  attributes: entity
8
8
  });
9
- const entitiesToResponseEntities = fp.map(entityToResponseEntity);
9
+ const entitiesToResponseEntities = (entities)=>lodash.map(entities, (entity)=>entityToResponseEntity(entity));
10
10
  var entityToResponseEntity$1 = (()=>({
11
11
  entityToResponseEntity,
12
12
  entitiesToResponseEntities
@@ -1 +1 @@
1
- {"version":3,"file":"entity-to-response-entity.js","sources":["../../../../../server/src/services/utils/mappers/entity-to-response-entity.ts"],"sourcesContent":["import { map } from 'lodash/fp';\nimport type { Data } from '@strapi/types';\n\nconst entityToResponseEntity = (entity: { id: Data.ID; [key: keyof any]: unknown }) => ({\n id: entity.id,\n attributes: entity,\n});\n\nconst entitiesToResponseEntities = map(entityToResponseEntity);\n\nexport default () => ({\n entityToResponseEntity,\n entitiesToResponseEntities,\n});\n"],"names":["entityToResponseEntity","entity","id","attributes","entitiesToResponseEntities","map"],"mappings":";;;;AAGA,MAAMA,sBAAAA,GAAyB,CAACC,MAAAA,IAAwD;AACtFC,QAAAA,EAAAA,EAAID,OAAOC,EAAE;QACbC,UAAAA,EAAYF;KACd,CAAA;AAEA,MAAMG,6BAA6BC,MAAAA,CAAIL,sBAAAA,CAAAA;AAEvC,+BAAe,CAAA,KAAO;AACpBA,QAAAA,sBAAAA;AACAI,QAAAA;AACF,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"entity-to-response-entity.js","sources":["../../../../../server/src/services/utils/mappers/entity-to-response-entity.ts"],"sourcesContent":["import { map } from 'lodash';\nimport type { Data } from '@strapi/types';\n\nconst entityToResponseEntity = (entity: { id: Data.ID; [key: keyof any]: unknown }) => ({\n id: entity.id,\n attributes: entity,\n});\n\nconst entitiesToResponseEntities = (entities: Parameters<typeof entityToResponseEntity>[0][]) =>\n map(entities, (entity) => entityToResponseEntity(entity));\n\nexport default () => ({\n entityToResponseEntity,\n entitiesToResponseEntities,\n});\n"],"names":["entityToResponseEntity","entity","id","attributes","entitiesToResponseEntities","entities","map"],"mappings":";;;;AAGA,MAAMA,sBAAAA,GAAyB,CAACC,MAAAA,IAAwD;AACtFC,QAAAA,EAAAA,EAAID,OAAOC,EAAE;QACbC,UAAAA,EAAYF;KACd,CAAA;AAEA,MAAMG,6BAA6B,CAACC,QAAAA,GAClCC,WAAID,QAAAA,EAAU,CAACJ,SAAWD,sBAAAA,CAAuBC,MAAAA,CAAAA,CAAAA;AAEnD,+BAAe,CAAA,KAAO;AACpBD,QAAAA,sBAAAA;AACAI,QAAAA;AACF,KAAA,CAAC;;;;"}
@@ -1,10 +1,10 @@
1
- import { map } from 'lodash/fp';
1
+ import { map } from 'lodash';
2
2
 
3
3
  const entityToResponseEntity$1 = (entity)=>({
4
4
  id: entity.id,
5
5
  attributes: entity
6
6
  });
7
- const entitiesToResponseEntities = map(entityToResponseEntity$1);
7
+ const entitiesToResponseEntities = (entities)=>map(entities, (entity)=>entityToResponseEntity$1(entity));
8
8
  var entityToResponseEntity = (()=>({
9
9
  entityToResponseEntity: entityToResponseEntity$1,
10
10
  entitiesToResponseEntities
@@ -1 +1 @@
1
- {"version":3,"file":"entity-to-response-entity.mjs","sources":["../../../../../server/src/services/utils/mappers/entity-to-response-entity.ts"],"sourcesContent":["import { map } from 'lodash/fp';\nimport type { Data } from '@strapi/types';\n\nconst entityToResponseEntity = (entity: { id: Data.ID; [key: keyof any]: unknown }) => ({\n id: entity.id,\n attributes: entity,\n});\n\nconst entitiesToResponseEntities = map(entityToResponseEntity);\n\nexport default () => ({\n entityToResponseEntity,\n entitiesToResponseEntities,\n});\n"],"names":["entityToResponseEntity","entity","id","attributes","entitiesToResponseEntities","map"],"mappings":";;AAGA,MAAMA,wBAAAA,GAAyB,CAACC,MAAAA,IAAwD;AACtFC,QAAAA,EAAAA,EAAID,OAAOC,EAAE;QACbC,UAAAA,EAAYF;KACd,CAAA;AAEA,MAAMG,6BAA6BC,GAAAA,CAAIL,wBAAAA,CAAAA;AAEvC,6BAAe,CAAA,KAAO;AACpBA,gCAAAA,wBAAAA;AACAI,QAAAA;AACF,KAAA,CAAC;;;;"}
1
+ {"version":3,"file":"entity-to-response-entity.mjs","sources":["../../../../../server/src/services/utils/mappers/entity-to-response-entity.ts"],"sourcesContent":["import { map } from 'lodash';\nimport type { Data } from '@strapi/types';\n\nconst entityToResponseEntity = (entity: { id: Data.ID; [key: keyof any]: unknown }) => ({\n id: entity.id,\n attributes: entity,\n});\n\nconst entitiesToResponseEntities = (entities: Parameters<typeof entityToResponseEntity>[0][]) =>\n map(entities, (entity) => entityToResponseEntity(entity));\n\nexport default () => ({\n entityToResponseEntity,\n entitiesToResponseEntities,\n});\n"],"names":["entityToResponseEntity","entity","id","attributes","entitiesToResponseEntities","entities","map"],"mappings":";;AAGA,MAAMA,wBAAAA,GAAyB,CAACC,MAAAA,IAAwD;AACtFC,QAAAA,EAAAA,EAAID,OAAOC,EAAE;QACbC,UAAAA,EAAYF;KACd,CAAA;AAEA,MAAMG,6BAA6B,CAACC,QAAAA,GAClCC,IAAID,QAAAA,EAAU,CAACJ,SAAWD,wBAAAA,CAAuBC,MAAAA,CAAAA,CAAAA;AAEnD,6BAAe,CAAA,KAAO;AACpBD,gCAAAA,wBAAAA;AACAI,QAAAA;AACF,KAAA,CAAC;;;;"}