@strapi/plugin-graphql 5.55.1 → 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.
- package/dist/server/bootstrap.js +10 -10
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs +8 -8
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/format-graphql-error.js +5 -5
- package/dist/server/format-graphql-error.js.map +1 -1
- package/dist/server/format-graphql-error.mjs +4 -4
- package/dist/server/format-graphql-error.mjs.map +1 -1
- package/dist/server/services/builders/dynamic-zones.js +3 -3
- package/dist/server/services/builders/dynamic-zones.js.map +1 -1
- package/dist/server/services/builders/dynamic-zones.mjs +3 -3
- package/dist/server/services/builders/dynamic-zones.mjs.map +1 -1
- package/dist/server/services/builders/entity.js +4 -4
- package/dist/server/services/builders/entity.js.map +1 -1
- package/dist/server/services/builders/entity.mjs +2 -2
- package/dist/server/services/builders/entity.mjs.map +1 -1
- package/dist/server/services/builders/enums.js +2 -2
- package/dist/server/services/builders/enums.js.map +1 -1
- package/dist/server/services/builders/enums.mjs +2 -2
- package/dist/server/services/builders/enums.mjs.map +1 -1
- package/dist/server/services/builders/filters/operators/index.js +3 -3
- package/dist/server/services/builders/filters/operators/index.js.map +1 -1
- package/dist/server/services/builders/filters/operators/index.mjs +3 -3
- package/dist/server/services/builders/filters/operators/index.mjs.map +1 -1
- package/dist/server/services/builders/generic-morph.js +1 -2
- package/dist/server/services/builders/generic-morph.js.map +1 -1
- package/dist/server/services/builders/generic-morph.mjs +1 -2
- package/dist/server/services/builders/generic-morph.mjs.map +1 -1
- package/dist/server/services/builders/index.js +2 -4
- package/dist/server/services/builders/index.js.map +1 -1
- package/dist/server/services/builders/index.mjs +2 -4
- package/dist/server/services/builders/index.mjs.map +1 -1
- package/dist/server/services/builders/relation-response-collection.js +3 -3
- package/dist/server/services/builders/relation-response-collection.js.map +1 -1
- package/dist/server/services/builders/relation-response-collection.mjs +3 -3
- package/dist/server/services/builders/relation-response-collection.mjs.map +1 -1
- package/dist/server/services/builders/resolvers/association.js +3 -3
- package/dist/server/services/builders/resolvers/association.js.map +1 -1
- package/dist/server/services/builders/resolvers/association.mjs +3 -3
- package/dist/server/services/builders/resolvers/association.mjs.map +1 -1
- package/dist/server/services/builders/resolvers/query.js +3 -3
- package/dist/server/services/builders/resolvers/query.js.map +1 -1
- package/dist/server/services/builders/resolvers/query.mjs +3 -3
- package/dist/server/services/builders/resolvers/query.mjs.map +1 -1
- package/dist/server/services/builders/response-collection.js +4 -4
- package/dist/server/services/builders/response-collection.js.map +1 -1
- package/dist/server/services/builders/response-collection.mjs +3 -3
- package/dist/server/services/builders/response-collection.mjs.map +1 -1
- package/dist/server/services/builders/response.js +1 -2
- package/dist/server/services/builders/response.js.map +1 -1
- package/dist/server/services/builders/response.mjs +1 -2
- package/dist/server/services/builders/response.mjs.map +1 -1
- package/dist/server/services/builders/type.js +4 -4
- package/dist/server/services/builders/type.js.map +1 -1
- package/dist/server/services/builders/type.mjs +3 -3
- package/dist/server/services/builders/type.mjs.map +1 -1
- package/dist/server/services/builders/utils.js +6 -6
- package/dist/server/services/builders/utils.js.map +1 -1
- package/dist/server/services/builders/utils.mjs +6 -6
- package/dist/server/services/builders/utils.mjs.map +1 -1
- package/dist/server/services/content-api/index.js +1 -2
- package/dist/server/services/content-api/index.js.map +1 -1
- package/dist/server/services/content-api/index.mjs +1 -2
- package/dist/server/services/content-api/index.mjs.map +1 -1
- package/dist/server/services/content-api/policy.js +2 -3
- package/dist/server/services/content-api/policy.js.map +1 -1
- package/dist/server/services/content-api/policy.mjs +2 -3
- package/dist/server/services/content-api/policy.mjs.map +1 -1
- package/dist/server/services/content-api/wrap-resolvers.js +9 -9
- package/dist/server/services/content-api/wrap-resolvers.js.map +1 -1
- package/dist/server/services/content-api/wrap-resolvers.mjs +9 -9
- package/dist/server/services/content-api/wrap-resolvers.mjs.map +1 -1
- package/dist/server/services/extension/extension.js +3 -3
- package/dist/server/services/extension/extension.js.map +1 -1
- package/dist/server/services/extension/extension.mjs +3 -3
- package/dist/server/services/extension/extension.mjs.map +1 -1
- package/dist/server/services/internals/helpers/get-enabled-scalars.js +2 -2
- package/dist/server/services/internals/helpers/get-enabled-scalars.js.map +1 -1
- package/dist/server/services/internals/helpers/get-enabled-scalars.mjs +1 -1
- package/dist/server/services/internals/helpers/get-enabled-scalars.mjs.map +1 -1
- package/dist/server/services/internals/types/error.js +1 -2
- package/dist/server/services/internals/types/error.js.map +1 -1
- package/dist/server/services/internals/types/error.mjs +1 -2
- package/dist/server/services/internals/types/error.mjs.map +1 -1
- package/dist/server/services/type-registry.js +1 -2
- package/dist/server/services/type-registry.js.map +1 -1
- package/dist/server/services/type-registry.mjs +1 -2
- package/dist/server/services/type-registry.mjs.map +1 -1
- package/dist/server/services/utils/attributes.js +6 -6
- package/dist/server/services/utils/attributes.js.map +1 -1
- package/dist/server/services/utils/attributes.mjs +6 -6
- package/dist/server/services/utils/attributes.mjs.map +1 -1
- package/dist/server/services/utils/mappers/entity-to-response-entity.js +2 -2
- package/dist/server/services/utils/mappers/entity-to-response-entity.js.map +1 -1
- package/dist/server/services/utils/mappers/entity-to-response-entity.mjs +2 -2
- package/dist/server/services/utils/mappers/entity-to-response-entity.mjs.map +1 -1
- package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js +5 -5
- package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.js.map +1 -1
- package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs +4 -4
- package/dist/server/services/utils/mappers/graphql-filters-to-strapi-query.mjs.map +1 -1
- package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js +3 -3
- package/dist/server/services/utils/mappers/graphql-scalar-to-operators.js.map +1 -1
- package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs +3 -3
- package/dist/server/services/utils/mappers/graphql-scalar-to-operators.mjs.map +1 -1
- package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js +3 -3
- package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.js.map +1 -1
- package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs +2 -2
- package/dist/server/services/utils/mappers/strapi-scalar-to-graphql-scalar.mjs.map +1 -1
- package/dist/server/services/utils/naming.js +13 -10
- package/dist/server/services/utils/naming.js.map +1 -1
- package/dist/server/services/utils/naming.mjs +9 -6
- package/dist/server/services/utils/naming.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +128 -13
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/builders/filters/operators/index.d.ts +112 -5
- package/dist/server/src/services/builders/filters/operators/index.d.ts.map +1 -1
- package/dist/server/src/services/builders/generic-morph.d.ts.map +1 -1
- package/dist/server/src/services/builders/index.d.ts +116 -7
- package/dist/server/src/services/builders/index.d.ts.map +1 -1
- package/dist/server/src/services/builders/resolvers/index.d.ts.map +1 -1
- package/dist/server/src/services/builders/response.d.ts.map +1 -1
- package/dist/server/src/services/builders/utils.d.ts +3 -1
- package/dist/server/src/services/builders/utils.d.ts.map +1 -1
- package/dist/server/src/services/content-api/index.d.ts.map +1 -1
- package/dist/server/src/services/content-api/policy.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +128 -13
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/internals/types/error.d.ts.map +1 -1
- package/dist/server/src/services/type-registry.d.ts.map +1 -1
- package/dist/server/src/services/utils/index.d.ts +12 -6
- package/dist/server/src/services/utils/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/mappers/entity-to-response-entity.d.ts +14 -7
- package/dist/server/src/services/utils/mappers/entity-to-response-entity.d.ts.map +1 -1
- package/dist/server/src/services/utils/mappers/graphql-scalar-to-operators.d.ts.map +1 -1
- package/dist/server/src/services/utils/mappers/index.d.ts +12 -6
- package/dist/server/src/services/utils/mappers/index.d.ts.map +1 -1
- package/package.json +16 -16
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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 =
|
|
21
|
+
const resolverMiddlewares = get(resolverConfig, 'middlewares', []);
|
|
22
22
|
// TODO: [v4] to factorize with compose endpoints (routes)
|
|
23
23
|
return resolverMiddlewares.map((middleware)=>{
|
|
24
|
-
if (
|
|
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 =
|
|
62
|
+
const defaultResolver = property(fieldName);
|
|
63
63
|
const path = `${type}.${fieldName}`;
|
|
64
|
-
const resolverConfig =
|
|
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 =
|
|
85
|
-
const authContext = get('state.auth'
|
|
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 =
|
|
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
|
|
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,
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-enabled-scalars.mjs","sources":["../../../../../server/src/services/internals/helpers/get-enabled-scalars.ts"],"sourcesContent":["import { first } from 'lodash
|
|
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 =
|
|
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 {
|
|
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 =
|
|
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 {
|
|
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,
|
|
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 {
|
|
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,
|
|
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 {
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 {
|
|
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 {
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 {
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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;;;;"}
|