@webiny/api-headless-cms 5.34.2 → 5.34.3-beta.1

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.
@@ -28,6 +28,14 @@ var _error = _interopRequireDefault(require("@webiny/error"));
28
28
  var _codeFrame = _interopRequireDefault(require("code-frame"));
29
29
 
30
30
  // @ts-ignore `code-frame` has no types
31
+ const createRequestBody = body => {
32
+ /**
33
+ * We are trusting that the body payload is correct.
34
+ * The `processRequestBody` will fail if it is not.
35
+ */
36
+ return typeof body === "string" ? JSON.parse(body) : body;
37
+ };
38
+
31
39
  const schemaList = new Map();
32
40
 
33
41
  const generateCacheKey = async args => {
@@ -80,49 +88,41 @@ const getSchema = async params => {
80
88
  const tenantId = context.tenancy.getCurrentTenant().id;
81
89
  const id = `${tenantId}#${type}#${locale.code}`;
82
90
  const cacheKey = await generateCacheKey(params);
91
+ const cachedSchema = schemaList.get(id);
83
92
 
84
- if (!schemaList.has(id)) {
85
- try {
86
- const schema = await generateSchema(params);
87
- schemaList.set(id, {
88
- key: cacheKey,
89
- schema
90
- });
91
- return schema;
92
- } catch (err) {
93
- if (!Array.isArray(err.locations)) {
94
- throw new _error.default((0, _objectSpread2.default)({}, err));
95
- }
93
+ if ((cachedSchema === null || cachedSchema === void 0 ? void 0 : cachedSchema.key) === cacheKey) {
94
+ return cachedSchema.schema;
95
+ }
96
96
 
97
- const [location] = err.locations;
97
+ try {
98
+ const schema = await generateSchema(params);
99
+ schemaList.set(id, {
100
+ key: cacheKey,
101
+ schema
102
+ });
103
+ return schema;
104
+ } catch (err) {
105
+ if (!Array.isArray(err.locations)) {
98
106
  throw new _error.default({
99
- code: "INVALID_GRAPHQL_SCHEMA",
100
107
  message: err.message,
101
- data: {
102
- invalidSegment: (0, _codeFrame.default)(err.source.body, location.line, location.column, {
103
- frameSize: 15
104
- })
105
- }
108
+ code: err.code || "INVALID_GRAPHQL_SCHEMA_LOCATIONS",
109
+ data: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, err.data || {}), {}, {
110
+ locations: err.locations
111
+ })
106
112
  });
107
113
  }
108
- }
109
- /**
110
- * Safe to cast because check was done few lines up.
111
- */
112
-
113
114
 
114
- const cache = schemaList.get(id);
115
-
116
- if (cache.key === cacheKey) {
117
- return cache.schema;
115
+ const [location] = err.locations;
116
+ throw new _error.default({
117
+ code: "INVALID_GRAPHQL_SCHEMA",
118
+ message: err.message,
119
+ data: {
120
+ invalidSegment: (0, _codeFrame.default)(err.source.body, location.line, location.column, {
121
+ frameSize: 15
122
+ })
123
+ }
124
+ });
118
125
  }
119
-
120
- const schema = await generateSchema(params);
121
- schemaList.set(id, {
122
- key: cacheKey,
123
- schema
124
- });
125
- return schema;
126
126
  };
127
127
 
128
128
  const checkEndpointAccess = async context => {
@@ -139,18 +139,20 @@ const checkEndpointAccess = async context => {
139
139
 
140
140
  const formatErrorPayload = error => {
141
141
  if (error instanceof _error.default) {
142
- return {
142
+ return JSON.stringify({
143
+ type: "CmsGraphQLWebinyError",
143
144
  message: error.message,
144
145
  code: error.code,
145
146
  data: error.data
146
- };
147
+ });
147
148
  }
148
149
 
149
- return {
150
+ return JSON.stringify({
151
+ type: "Error",
150
152
  name: error.name,
151
153
  message: error.message,
152
154
  stack: error.stack
153
- };
155
+ });
154
156
  };
155
157
 
156
158
  const cmsRoutes = new _handler.RoutePlugin(({
@@ -173,23 +175,44 @@ const cmsRoutes = new _handler.RoutePlugin(({
173
175
  });
174
176
  }
175
177
 
178
+ let schema;
179
+
176
180
  try {
177
- const schema = await getSchema({
181
+ schema = await getSchema({
178
182
  context,
179
183
  locale: context.cms.getLocale(),
180
184
  type: context.cms.type
181
185
  });
182
- const body = request.body;
186
+ } catch (ex) {
187
+ console.log(`Error while generating the schema.`);
188
+ console.log(formatErrorPayload(ex));
189
+ throw ex;
190
+ }
191
+
192
+ let body = [];
193
+
194
+ try {
195
+ body = createRequestBody(request.body);
196
+ } catch (ex) {
197
+ console.log(`Error while creating the body request.`);
198
+ console.log(formatErrorPayload(ex));
199
+ throw ex;
200
+ }
201
+
202
+ try {
183
203
  const result = await (0, _processRequestBody.default)(body, schema, context);
184
204
  return reply.code(200).send(result);
185
205
  } catch (ex) {
186
- return reply.code(500).send(formatErrorPayload(ex));
206
+ console.log(`Error while processing the body request.`);
207
+ console.log(formatErrorPayload(ex));
208
+ throw ex;
187
209
  }
188
210
  });
189
211
  onOptions("/cms/:type(^manage|preview|read$)/:locale", async (_, reply) => {
190
- return reply.hijack().send({});
212
+ return reply.status(204).send({}).hijack();
191
213
  });
192
214
  });
215
+ cmsRoutes.name = "headless-cms.graphql.route.default";
193
216
 
194
217
  const graphQLHandlerFactory = ({
195
218
  debug
@@ -1 +1 @@
1
- {"version":3,"names":["schemaList","Map","generateCacheKey","args","context","locale","type","lastModelChange","cms","getModelLastChange","code","toISOString","join","generateSchema","plugins","register","buildSchemaPlugins","typeDefs","resolvers","schemaPlugins","byType","GraphQLSchemaPlugin","pl","push","schema","makeExecutableSchema","getSchema","params","tenantId","tenancy","getCurrentTenant","id","cacheKey","has","set","key","err","Array","isArray","locations","WebinyError","location","message","data","invalidSegment","codeFrame","source","body","line","column","frameSize","cache","get","checkEndpointAccess","permission","security","getPermission","NotAuthorizedError","reason","formatErrorPayload","error","name","stack","cmsRoutes","RoutePlugin","onPost","onOptions","request","reply","ex","send","getLocale","result","processRequestBody","_","hijack","graphQLHandlerFactory","debug","debugPlugins"],"sources":["graphQLHandlerFactory.ts"],"sourcesContent":["import { GraphQLSchema } from \"graphql\";\nimport { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { ApiEndpoint, CmsContext } from \"~/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport processRequestBody from \"@webiny/handler-graphql/processRequestBody\";\nimport { buildSchemaPlugins } from \"./buildSchemaPlugins\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { GraphQLRequestBody } from \"@webiny/handler-graphql/types\";\nimport { RoutePlugin } from \"@webiny/handler\";\nimport WebinyError from \"@webiny/error\";\n// @ts-ignore `code-frame` has no types\nimport codeFrame from \"code-frame\";\n\ninterface SchemaCache {\n key: string;\n schema: GraphQLSchema;\n}\ninterface GetSchemaParams {\n context: CmsContext;\n type: ApiEndpoint;\n locale: I18NLocale;\n}\n\nconst schemaList = new Map<string, SchemaCache>();\n\nconst generateCacheKey = async (args: GetSchemaParams): Promise<string> => {\n const { context, locale, type } = args;\n const lastModelChange = await context.cms.getModelLastChange();\n return [locale.code, type, lastModelChange.toISOString()].join(\"#\");\n};\n\nconst generateSchema = async (args: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context } = args;\n\n context.plugins.register(await buildSchemaPlugins(context));\n /**\n * Really hard to type this to satisfy the makeExecutableSchema\n */\n // TODO @ts-refactor\n const typeDefs: any = [];\n const resolvers: any = [];\n\n // Get schema definitions from plugins\n const schemaPlugins = context.plugins.byType<GraphQLSchemaPlugin>(GraphQLSchemaPlugin.type);\n for (const pl of schemaPlugins) {\n typeDefs.push(pl.schema.typeDefs);\n resolvers.push(pl.schema.resolvers);\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers\n });\n};\n\n/**\n * Gets an existing schema or rewrites existing one or creates a completely new one\n * depending on the schemaId created from type and locale parameters\n */\nconst getSchema = async (params: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context, type, locale } = params;\n const tenantId = context.tenancy.getCurrentTenant().id;\n const id = `${tenantId}#${type}#${locale.code}`;\n\n const cacheKey = await generateCacheKey(params);\n if (!schemaList.has(id)) {\n try {\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n } catch (err) {\n if (!Array.isArray(err.locations)) {\n throw new WebinyError({\n ...err\n });\n }\n const [location] = err.locations;\n\n throw new WebinyError({\n code: \"INVALID_GRAPHQL_SCHEMA\",\n message: err.message,\n data: {\n invalidSegment: codeFrame(err.source.body, location.line, location.column, {\n frameSize: 15\n })\n }\n });\n }\n }\n /**\n * Safe to cast because check was done few lines up.\n */\n const cache = schemaList.get(id) as SchemaCache;\n if (cache.key === cacheKey) {\n return cache.schema;\n }\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n};\n\nconst checkEndpointAccess = async (context: CmsContext): Promise<void> => {\n const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${context.cms.type}\" endpoint.`\n }\n });\n }\n};\n\nconst formatErrorPayload = (error: Error) => {\n if (error instanceof WebinyError) {\n return {\n message: error.message,\n code: error.code,\n data: error.data\n };\n }\n\n return {\n name: error.name,\n message: error.message,\n stack: error.stack\n };\n};\n\nexport interface GraphQLHandlerFactoryParams {\n debug?: boolean;\n}\n\nconst cmsRoutes = new RoutePlugin<CmsContext>(({ onPost, onOptions, context }) => {\n onPost(\"/cms/:type(^manage|preview|read$)/:locale\", async (request, reply) => {\n try {\n await checkEndpointAccess(context);\n } catch (ex) {\n return reply.code(401).send({\n data: null,\n error: {\n message: ex.message || \"Not authorized!\",\n code: ex.code || \"SECURITY_NOT_AUTHORIZED\",\n data: ex.data || null,\n stack: null\n }\n });\n }\n\n try {\n const schema = await getSchema({\n context,\n locale: context.cms.getLocale(),\n type: context.cms.type as ApiEndpoint\n });\n const body: GraphQLRequestBody | GraphQLRequestBody[] = request.body as any;\n const result = await processRequestBody(body, schema, context);\n return reply.code(200).send(result);\n } catch (ex) {\n return reply.code(500).send(formatErrorPayload(ex));\n }\n });\n\n onOptions(\"/cms/:type(^manage|preview|read$)/:locale\", async (_, reply) => {\n return reply.hijack().send({});\n });\n});\n\nexport const graphQLHandlerFactory = ({ debug }: GraphQLHandlerFactoryParams): PluginCollection => {\n return [\n ...(debug ? debugPlugins() : []),\n cmsRoutes,\n {\n type: \"wcp-telemetry-tracker\"\n }\n ];\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createRequestBody","body","JSON","parse","schemaList","Map","generateCacheKey","args","context","locale","type","lastModelChange","cms","getModelLastChange","code","toISOString","join","generateSchema","plugins","register","buildSchemaPlugins","typeDefs","resolvers","schemaPlugins","byType","GraphQLSchemaPlugin","pl","push","schema","makeExecutableSchema","getSchema","params","tenantId","tenancy","getCurrentTenant","id","cacheKey","cachedSchema","get","key","set","err","Array","isArray","locations","WebinyError","message","data","location","invalidSegment","codeFrame","source","line","column","frameSize","checkEndpointAccess","permission","security","getPermission","NotAuthorizedError","reason","formatErrorPayload","error","stringify","name","stack","cmsRoutes","RoutePlugin","onPost","onOptions","request","reply","ex","send","getLocale","console","log","result","processRequestBody","_","status","hijack","graphQLHandlerFactory","debug","debugPlugins"],"sources":["graphQLHandlerFactory.ts"],"sourcesContent":["import { GraphQLSchema } from \"graphql\";\nimport { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { ApiEndpoint, CmsContext } from \"~/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport processRequestBody from \"@webiny/handler-graphql/processRequestBody\";\nimport { buildSchemaPlugins } from \"./buildSchemaPlugins\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { GraphQLRequestBody } from \"@webiny/handler-graphql/types\";\nimport { RoutePlugin } from \"@webiny/handler\";\nimport WebinyError from \"@webiny/error\";\n// @ts-ignore `code-frame` has no types\nimport codeFrame from \"code-frame\";\n\ninterface SchemaCache {\n key: string;\n schema: GraphQLSchema;\n}\ninterface GetSchemaParams {\n context: CmsContext;\n type: ApiEndpoint;\n locale: I18NLocale;\n}\n\nconst createRequestBody = (body: unknown): GraphQLRequestBody | GraphQLRequestBody[] => {\n /**\n * We are trusting that the body payload is correct.\n * The `processRequestBody` will fail if it is not.\n */\n return typeof body === \"string\" ? JSON.parse(body) : body;\n};\n\nconst schemaList = new Map<string, SchemaCache>();\n\nconst generateCacheKey = async (args: GetSchemaParams): Promise<string> => {\n const { context, locale, type } = args;\n const lastModelChange = await context.cms.getModelLastChange();\n return [locale.code, type, lastModelChange.toISOString()].join(\"#\");\n};\n\nconst generateSchema = async (args: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context } = args;\n\n context.plugins.register(await buildSchemaPlugins(context));\n /**\n * Really hard to type this to satisfy the makeExecutableSchema\n */\n // TODO @ts-refactor\n const typeDefs: any = [];\n const resolvers: any = [];\n\n // Get schema definitions from plugins\n const schemaPlugins = context.plugins.byType<GraphQLSchemaPlugin>(GraphQLSchemaPlugin.type);\n for (const pl of schemaPlugins) {\n typeDefs.push(pl.schema.typeDefs);\n resolvers.push(pl.schema.resolvers);\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers\n });\n};\n\n/**\n * Gets an existing schema or rewrites existing one or creates a completely new one\n * depending on the schemaId created from type and locale parameters\n */\nconst getSchema = async (params: GetSchemaParams): Promise<GraphQLSchema> => {\n const { context, type, locale } = params;\n const tenantId = context.tenancy.getCurrentTenant().id;\n const id = `${tenantId}#${type}#${locale.code}`;\n\n const cacheKey = await generateCacheKey(params);\n const cachedSchema = schemaList.get(id);\n if (cachedSchema?.key === cacheKey) {\n return cachedSchema.schema;\n }\n try {\n const schema = await generateSchema(params);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n } catch (err) {\n if (!Array.isArray(err.locations)) {\n throw new WebinyError({\n message: err.message,\n code: err.code || \"INVALID_GRAPHQL_SCHEMA_LOCATIONS\",\n data: {\n ...(err.data || {}),\n locations: err.locations\n }\n });\n }\n const [location] = err.locations;\n\n throw new WebinyError({\n code: \"INVALID_GRAPHQL_SCHEMA\",\n message: err.message,\n data: {\n invalidSegment: codeFrame(err.source.body, location.line, location.column, {\n frameSize: 15\n })\n }\n });\n }\n};\n\nconst checkEndpointAccess = async (context: CmsContext): Promise<void> => {\n const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${context.cms.type}\" endpoint.`\n }\n });\n }\n};\n\nconst formatErrorPayload = (error: Error): string => {\n if (error instanceof WebinyError) {\n return JSON.stringify({\n type: \"CmsGraphQLWebinyError\",\n message: error.message,\n code: error.code,\n data: error.data\n });\n }\n\n return JSON.stringify({\n type: \"Error\",\n name: error.name,\n message: error.message,\n stack: error.stack\n });\n};\n\nexport interface GraphQLHandlerFactoryParams {\n debug?: boolean;\n}\n\nconst cmsRoutes = new RoutePlugin<CmsContext>(({ onPost, onOptions, context }) => {\n onPost(\"/cms/:type(^manage|preview|read$)/:locale\", async (request, reply) => {\n try {\n await checkEndpointAccess(context);\n } catch (ex) {\n return reply.code(401).send({\n data: null,\n error: {\n message: ex.message || \"Not authorized!\",\n code: ex.code || \"SECURITY_NOT_AUTHORIZED\",\n data: ex.data || null,\n stack: null\n }\n });\n }\n\n let schema: GraphQLSchema;\n try {\n schema = await getSchema({\n context,\n locale: context.cms.getLocale(),\n type: context.cms.type as ApiEndpoint\n });\n } catch (ex) {\n console.log(`Error while generating the schema.`);\n console.log(formatErrorPayload(ex));\n throw ex;\n }\n\n let body: GraphQLRequestBody | GraphQLRequestBody[] = [];\n try {\n body = createRequestBody(request.body);\n } catch (ex) {\n console.log(`Error while creating the body request.`);\n console.log(formatErrorPayload(ex));\n throw ex;\n }\n\n try {\n const result = await processRequestBody(body, schema, context);\n return reply.code(200).send(result);\n } catch (ex) {\n console.log(`Error while processing the body request.`);\n console.log(formatErrorPayload(ex));\n throw ex;\n }\n });\n\n onOptions(\"/cms/:type(^manage|preview|read$)/:locale\", async (_, reply) => {\n return reply.status(204).send({}).hijack();\n });\n});\n\ncmsRoutes.name = \"headless-cms.graphql.route.default\";\n\nexport const graphQLHandlerFactory = ({ debug }: GraphQLHandlerFactoryParams): PluginCollection => {\n return [\n ...(debug ? debugPlugins() : []),\n cmsRoutes,\n {\n type: \"wcp-telemetry-tracker\"\n }\n ];\n};\n"],"mappings":"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"}
@@ -2,4 +2,4 @@ import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/types";
2
2
  import { GraphQLHandlerFactoryParams } from "./graphQLHandlerFactory";
3
3
  import { CmsContext } from "../types";
4
4
  export declare type CreateGraphQLParams = GraphQLHandlerFactoryParams;
5
- export declare const createGraphQL: (params: CreateGraphQLParams) => (import("@webiny/plugins/types").PluginCollection | import("@webiny/api").ContextPlugin<CmsContext> | GraphQLSchemaPlugin<CmsContext>)[];
5
+ export declare const createGraphQL: (params: CreateGraphQLParams) => (import("@webiny/api").ContextPlugin<CmsContext> | GraphQLSchemaPlugin<CmsContext> | import("@webiny/plugins/types").PluginCollection)[];
@@ -1,16 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.createModelsSchema = void 0;
7
9
 
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
8
12
  var _handlerGraphql = require("@webiny/handler-graphql");
9
13
 
10
14
  var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
11
15
 
12
16
  var _CmsModelPlugin = require("../../plugins/CmsModelPlugin");
13
17
 
18
+ var _toSlug = require("../../utils/toSlug");
19
+
14
20
  const createModelsSchema = context => {
15
21
  const resolvers = {
16
22
  Query: {
@@ -46,6 +52,16 @@ const createModelsSchema = context => {
46
52
 
47
53
  },
48
54
  CmsContentModel: {
55
+ group: async model => {
56
+ context.security.disableAuthorization();
57
+ const groups = await context.cms.listGroups();
58
+ context.security.enableAuthorization();
59
+ const group = groups.find(group => group.id === model.group.id);
60
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model.group), {}, {
61
+ slug: (0, _toSlug.toSlug)(model.group.name)
62
+ }, group || {});
63
+ },
64
+
49
65
  tags(model) {
50
66
  // Make sure `tags` always contain a `type` tag, to differentiate between models.
51
67
  const hasType = (model.tags || []).find(tag => tag.startsWith("type:"));
@@ -1 +1 @@
1
- {"version":3,"names":["createModelsSchema","context","resolvers","Query","getContentModel","_","args","model","cms","getModel","modelId","isPrivate","NotFoundError","Response","e","ErrorResponse","listContentModels","__","models","listModels","filter","CmsContentModelField","tags","field","Array","isArray","CmsContentModel","hasType","find","tag","startsWith","plugin","plugins","byType","CmsModelPlugin","type","some","item","contentModel","manageSchema","MANAGE","createContentModel","createModel","data","createContentModelFrom","createModelFrom","updateContentModel","updateModel","deleteContentModel","deleteModel","initializeModel","result","GraphQLSchemaPlugin","typeDefs"],"sources":["contentModels.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext, CmsModel } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\n\nexport const createModelsSchema = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n const resolvers: Resolvers<CmsContext> = {\n Query: {\n getContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.getModel(args.modelId);\n if (model?.isPrivate === true) {\n if (!model) {\n throw new NotFoundError(\n `Content model \"${args.modelId}\" was not found!`\n );\n }\n }\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModels: async (_: unknown, __: unknown, context: CmsContext) => {\n try {\n const models = await context.cms.listModels();\n return new Response(models.filter(model => model.isPrivate !== true));\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n CmsContentModelField: {\n tags(field) {\n // Make sure `tags` are always returned as an array.\n return Array.isArray(field.tags) ? field.tags : [];\n }\n },\n CmsContentModel: {\n tags(model: CmsModel) {\n // Make sure `tags` always contain a `type` tag, to differentiate between models.\n const hasType = (model.tags || []).find(tag => tag.startsWith(\"type:\"));\n\n return hasType ? model.tags : [\"type:model\", ...(model.tags || [])];\n },\n plugin: async (model, _, context): Promise<boolean> => {\n return context.plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .some(item => item.contentModel.modelId === model.modelId);\n }\n }\n };\n\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n resolvers[\"Mutation\"] = {\n createContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModel(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n createContentModelFrom: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModelFrom(args.modelId, args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModel: async (_: unknown, args: any, context) => {\n const { modelId, data } = args;\n try {\n const model = await context.cms.updateModel(modelId, data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModel: async (_: unknown, args: any, context) => {\n const { modelId } = args;\n try {\n await context.cms.deleteModel(modelId);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n initializeModel: async (_, args, context) => {\n const { modelId, data } = args;\n\n try {\n const result = await context.cms.initializeModel(modelId, data || {});\n return new Response(result);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n };\n\n manageSchema = /* GraphQL */ `\n input CmsPredefinedValueInput {\n label: String!\n value: String!\n selected: Boolean\n }\n\n input CmsPredefinedValuesInput {\n enabled: Boolean\n values: [CmsPredefinedValueInput]\n }\n input CmsFieldRendererInput {\n name: String\n }\n\n input CmsFieldValidationInput {\n name: String!\n message: String\n settings: JSON\n }\n\n input CmsContentModelFieldInput {\n id: ID!\n label: String!\n helpText: String\n placeholderText: String\n # we never use user input - this is here to the GraphQL does not break when posting from our UI\n # used for debugging purposes\n storageId: String\n fieldId: String!\n type: String!\n tags: [String!]\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValuesInput\n renderer: CmsFieldRendererInput\n validation: [CmsFieldValidationInput]\n listValidation: [CmsFieldValidationInput]\n settings: JSON\n }\n\n input CmsContentModelCreateInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n layout: [[ID!]!]\n fields: [CmsContentModelFieldInput!]\n titleFieldId: String\n tags: [String!]\n }\n\n input CmsContentModelCreateFromInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n locale: String\n }\n\n input CmsContentModelUpdateInput {\n name: String\n group: RefInput\n description: String\n layout: [[ID!]!]!\n fields: [CmsContentModelFieldInput!]!\n titleFieldId: String\n tags: [String!]\n }\n\n type InitializeModelResponse {\n data: Boolean\n error: CmsError\n }\n\n extend type Mutation {\n createContentModel(data: CmsContentModelCreateInput!): CmsContentModelResponse\n\n createContentModelFrom(\n modelId: ID!\n data: CmsContentModelCreateFromInput!\n ): CmsContentModelResponse\n\n updateContentModel(\n modelId: ID!\n data: CmsContentModelUpdateInput!\n ): CmsContentModelResponse\n\n deleteContentModel(modelId: ID!): CmsDeleteResponse\n\n # users can send anything into the data variable\n initializeModel(modelId: ID!, data: JSON): InitializeModelResponse!\n }\n `;\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsFieldValidation {\n name: String!\n message: String\n settings: JSON\n }\n\n type CmsFieldRenderer {\n name: String\n }\n\n type CmsPredefinedValue {\n label: String\n value: String\n selected: Boolean\n }\n\n type CmsPredefinedValues {\n enabled: Boolean\n values: [CmsPredefinedValue]\n }\n\n type CmsContentModelField {\n id: ID!\n # auto-generated value\n # used for debugging purposes\n storageId: String\n fieldId: String!\n label: String!\n helpText: String\n placeholderText: String\n type: String!\n tags: [String!]!\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValues\n renderer: CmsFieldRenderer\n validation: [CmsFieldValidation!]\n listValidation: [CmsFieldValidation!]\n settings: JSON\n }\n\n type CmsContentModel {\n name: String!\n modelId: String!\n description: String\n group: CmsContentModelGroup!\n createdOn: DateTime\n savedOn: DateTime\n createdBy: CmsCreatedBy\n fields: [CmsContentModelField!]!\n lockedFields: [JSON]\n layout: [[String!]!]!\n titleFieldId: String\n tags: [String!]!\n # Returns true if the content model is registered via a plugin.\n plugin: Boolean!\n }\n\n type CmsContentModelResponse {\n data: CmsContentModel\n error: CmsError\n }\n\n type CmsContentModelListResponse {\n data: [CmsContentModel]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModel(modelId: ID!, where: JSON, sort: String): CmsContentModelResponse\n\n listContentModels: CmsContentModelListResponse\n }\n\n ${manageSchema}\n `,\n resolvers\n });\n};\n"],"mappings":"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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SA5FQ;EA6FH;;EAED,OAAO,IAAIa,wCAAJ,CAAoC;IACvCC,QAAQ;IAAE;IAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcd,YAAa;AAC3B,SA7E+C;IA8EvCrC;EA9EuC,CAApC,CAAP;AAgFH,CAhRM"}
1
+ {"version":3,"names":["createModelsSchema","context","resolvers","Query","getContentModel","_","args","model","cms","getModel","modelId","isPrivate","NotFoundError","Response","e","ErrorResponse","listContentModels","__","models","listModels","filter","CmsContentModelField","tags","field","Array","isArray","CmsContentModel","group","security","disableAuthorization","groups","listGroups","enableAuthorization","find","id","slug","toSlug","name","hasType","tag","startsWith","plugin","plugins","byType","CmsModelPlugin","type","some","item","contentModel","manageSchema","MANAGE","createContentModel","createModel","data","createContentModelFrom","createModelFrom","updateContentModel","updateModel","deleteContentModel","deleteModel","initializeModel","result","GraphQLSchemaPlugin","typeDefs"],"sources":["contentModels.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext, CmsModel } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { toSlug } from \"~/utils/toSlug\";\n\nexport const createModelsSchema = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n const resolvers: Resolvers<CmsContext> = {\n Query: {\n getContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.getModel(args.modelId);\n if (model?.isPrivate === true) {\n if (!model) {\n throw new NotFoundError(\n `Content model \"${args.modelId}\" was not found!`\n );\n }\n }\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModels: async (_: unknown, __: unknown, context: CmsContext) => {\n try {\n const models = await context.cms.listModels();\n return new Response(models.filter(model => model.isPrivate !== true));\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n CmsContentModelField: {\n tags(field) {\n // Make sure `tags` are always returned as an array.\n return Array.isArray(field.tags) ? field.tags : [];\n }\n },\n CmsContentModel: {\n group: async (model: CmsModel) => {\n context.security.disableAuthorization();\n const groups = await context.cms.listGroups();\n context.security.enableAuthorization();\n\n const group = groups.find(group => group.id === model.group.id);\n return {\n ...model.group,\n slug: toSlug(model.group.name),\n ...(group || {})\n };\n },\n tags(model: CmsModel) {\n // Make sure `tags` always contain a `type` tag, to differentiate between models.\n const hasType = (model.tags || []).find(tag => tag.startsWith(\"type:\"));\n\n return hasType ? model.tags : [\"type:model\", ...(model.tags || [])];\n },\n plugin: async (model, _, context): Promise<boolean> => {\n return context.plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .some(item => item.contentModel.modelId === model.modelId);\n }\n }\n };\n\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n resolvers[\"Mutation\"] = {\n createContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModel(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n createContentModelFrom: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModelFrom(args.modelId, args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModel: async (_: unknown, args: any, context) => {\n const { modelId, data } = args;\n try {\n const model = await context.cms.updateModel(modelId, data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModel: async (_: unknown, args: any, context) => {\n const { modelId } = args;\n try {\n await context.cms.deleteModel(modelId);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n initializeModel: async (_, args, context) => {\n const { modelId, data } = args;\n\n try {\n const result = await context.cms.initializeModel(modelId, data || {});\n return new Response(result);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n };\n\n manageSchema = /* GraphQL */ `\n input CmsPredefinedValueInput {\n label: String!\n value: String!\n selected: Boolean\n }\n\n input CmsPredefinedValuesInput {\n enabled: Boolean\n values: [CmsPredefinedValueInput]\n }\n input CmsFieldRendererInput {\n name: String\n }\n\n input CmsFieldValidationInput {\n name: String!\n message: String\n settings: JSON\n }\n\n input CmsContentModelFieldInput {\n id: ID!\n label: String!\n helpText: String\n placeholderText: String\n # we never use user input - this is here to the GraphQL does not break when posting from our UI\n # used for debugging purposes\n storageId: String\n fieldId: String!\n type: String!\n tags: [String!]\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValuesInput\n renderer: CmsFieldRendererInput\n validation: [CmsFieldValidationInput]\n listValidation: [CmsFieldValidationInput]\n settings: JSON\n }\n\n input CmsContentModelCreateInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n layout: [[ID!]!]\n fields: [CmsContentModelFieldInput!]\n titleFieldId: String\n tags: [String!]\n }\n\n input CmsContentModelCreateFromInput {\n name: String!\n modelId: String\n group: RefInput!\n description: String\n locale: String\n }\n\n input CmsContentModelUpdateInput {\n name: String\n group: RefInput\n description: String\n layout: [[ID!]!]!\n fields: [CmsContentModelFieldInput!]!\n titleFieldId: String\n tags: [String!]\n }\n\n type InitializeModelResponse {\n data: Boolean\n error: CmsError\n }\n\n extend type Mutation {\n createContentModel(data: CmsContentModelCreateInput!): CmsContentModelResponse\n\n createContentModelFrom(\n modelId: ID!\n data: CmsContentModelCreateFromInput!\n ): CmsContentModelResponse\n\n updateContentModel(\n modelId: ID!\n data: CmsContentModelUpdateInput!\n ): CmsContentModelResponse\n\n deleteContentModel(modelId: ID!): CmsDeleteResponse\n\n # users can send anything into the data variable\n initializeModel(modelId: ID!, data: JSON): InitializeModelResponse!\n }\n `;\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsFieldValidation {\n name: String!\n message: String\n settings: JSON\n }\n\n type CmsFieldRenderer {\n name: String\n }\n\n type CmsPredefinedValue {\n label: String\n value: String\n selected: Boolean\n }\n\n type CmsPredefinedValues {\n enabled: Boolean\n values: [CmsPredefinedValue]\n }\n\n type CmsContentModelField {\n id: ID!\n # auto-generated value\n # used for debugging purposes\n storageId: String\n fieldId: String!\n label: String!\n helpText: String\n placeholderText: String\n type: String!\n tags: [String!]!\n multipleValues: Boolean\n predefinedValues: CmsPredefinedValues\n renderer: CmsFieldRenderer\n validation: [CmsFieldValidation!]\n listValidation: [CmsFieldValidation!]\n settings: JSON\n }\n\n type CmsContentModel {\n name: String!\n modelId: String!\n description: String\n group: CmsContentModelGroup!\n createdOn: DateTime\n savedOn: DateTime\n createdBy: CmsCreatedBy\n fields: [CmsContentModelField!]!\n lockedFields: [JSON]\n layout: [[String!]!]!\n titleFieldId: String\n tags: [String!]!\n # Returns true if the content model is registered via a plugin.\n plugin: Boolean!\n }\n\n type CmsContentModelResponse {\n data: CmsContentModel\n error: CmsError\n }\n\n type CmsContentModelListResponse {\n data: [CmsContentModel]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModel(modelId: ID!, where: JSON, sort: String): CmsContentModelResponse\n\n listContentModels: CmsContentModelListResponse\n }\n\n ${manageSchema}\n `,\n resolvers\n });\n};\n"],"mappings":"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,CAAP;QACH,CAHD,CAGE,OAAO/C,CAAP,EAAU;UACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;QACH;MACJ;IA5CmB,CAAxB;IA+CAmC,YAAY;IAAG;IAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SA5FQ;EA6FH;;EAED,OAAO,IAAIa,wCAAJ,CAAoC;IACvCC,QAAQ;IAAE;IAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcd,YAAa;AAC3B,SA7E+C;IA8EvC/C;EA9EuC,CAApC,CAAP;AAgFH,CA5RM"}
package/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import { CreateGraphQLParams } from "./graphql";
2
2
  import { CrudParams } from "./context";
3
3
  import { entryFieldFromStorageTransform, entryFromStorageTransform, entryToStorageTransform } from "./utils/entryStorage";
4
4
  export declare type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;
5
- export declare const createHeadlessCmsGraphQL: (params?: CreateHeadlessCmsGraphQLParams) => (import("./plugins").CmsParametersPlugin | (import("@webiny/plugins/types").PluginCollection | import("@webiny/api").ContextPlugin<import("./types").CmsContext> | import("@webiny/handler-graphql/types").GraphQLSchemaPlugin<import("./types").CmsContext>)[])[];
5
+ export declare const createHeadlessCmsGraphQL: (params?: CreateHeadlessCmsGraphQLParams) => (import("./plugins").CmsParametersPlugin | (import("@webiny/api").ContextPlugin<import("./types").CmsContext> | import("@webiny/handler-graphql/types").GraphQLSchemaPlugin<import("./types").CmsContext> | import("@webiny/plugins/types").PluginCollection)[])[];
6
6
  export declare type ContentContextParams = CrudParams;
7
7
  export declare const createHeadlessCmsContext: (params: ContentContextParams) => (import("./types").ModelManagerPlugin | import("./plugins").StorageTransformPlugin<any, any, import("./types").CmsModelField> | import("@webiny/api").ContextPlugin<import("./types").CmsContext> | import("@webiny/api-upgrade").UpgradePlugin<import("./types").CmsContext>[] | import("./plugins").StorageTransformPlugin<any, any, import("./types").CmsModelDynamicZoneField> | import("./types").CmsModelFieldToGraphQLPlugin<any>[] | (import("./types").CmsModelFieldValidatorPlugin | import("./types").CmsModelFieldPatternValidatorPlugin[])[] | (import("./fieldConverters/CmsModelObjectFieldConverterPlugin").CmsModelObjectFieldConverterPlugin | import("./fieldConverters/CmsModelDefaultFieldConverterPlugin").CmsModelDefaultFieldConverterPlugin | import("./fieldConverters/CmsModelDynamicZoneFieldConverterPlugin").CmsModelDynamicZoneFieldConverterPlugin)[])[];
8
8
  export * from "./graphqlFields";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms",
3
- "version": "5.34.2",
3
+ "version": "5.34.3-beta.1",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "cms:base"
@@ -21,22 +21,22 @@
21
21
  "@babel/runtime": "7.19.0",
22
22
  "@commodo/fields": "1.1.2-beta.20",
23
23
  "@graphql-tools/schema": "7.1.5",
24
- "@webiny/api": "5.34.2",
25
- "@webiny/api-file-manager": "5.34.2",
26
- "@webiny/api-i18n": "5.34.2",
27
- "@webiny/api-i18n-ddb": "5.34.2",
28
- "@webiny/api-security": "5.34.2",
29
- "@webiny/api-tenancy": "5.34.2",
30
- "@webiny/api-upgrade": "5.34.2",
31
- "@webiny/error": "5.34.2",
32
- "@webiny/handler": "5.34.2",
33
- "@webiny/handler-aws": "5.34.2",
34
- "@webiny/handler-db": "5.34.2",
35
- "@webiny/handler-graphql": "5.34.2",
36
- "@webiny/plugins": "5.34.2",
37
- "@webiny/pubsub": "5.34.2",
38
- "@webiny/utils": "5.34.2",
39
- "@webiny/validation": "5.34.2",
24
+ "@webiny/api": "5.34.3-beta.1",
25
+ "@webiny/api-file-manager": "5.34.3-beta.1",
26
+ "@webiny/api-i18n": "5.34.3-beta.1",
27
+ "@webiny/api-i18n-ddb": "5.34.3-beta.1",
28
+ "@webiny/api-security": "5.34.3-beta.1",
29
+ "@webiny/api-tenancy": "5.34.3-beta.1",
30
+ "@webiny/api-upgrade": "5.34.3-beta.1",
31
+ "@webiny/error": "5.34.3-beta.1",
32
+ "@webiny/handler": "5.34.3-beta.1",
33
+ "@webiny/handler-aws": "5.34.3-beta.1",
34
+ "@webiny/handler-db": "5.34.3-beta.1",
35
+ "@webiny/handler-graphql": "5.34.3-beta.1",
36
+ "@webiny/plugins": "5.34.3-beta.1",
37
+ "@webiny/pubsub": "5.34.3-beta.1",
38
+ "@webiny/utils": "5.34.3-beta.1",
39
+ "@webiny/validation": "5.34.3-beta.1",
40
40
  "code-frame": "5.0.0",
41
41
  "commodo-fields-object": "1.0.6",
42
42
  "dataloader": "2.1.0",
@@ -53,11 +53,11 @@
53
53
  "@babel/cli": "^7.19.3",
54
54
  "@babel/core": "^7.19.3",
55
55
  "@babel/preset-env": "^7.19.4",
56
- "@webiny/api-security-so-ddb": "^5.34.2",
57
- "@webiny/api-tenancy-so-ddb": "^5.34.2",
58
- "@webiny/api-wcp": "^5.34.2",
59
- "@webiny/cli": "^5.34.2",
60
- "@webiny/project-utils": "^5.34.2",
56
+ "@webiny/api-security-so-ddb": "^5.34.3-beta.1",
57
+ "@webiny/api-tenancy-so-ddb": "^5.34.3-beta.1",
58
+ "@webiny/api-wcp": "^5.34.3-beta.1",
59
+ "@webiny/cli": "^5.34.3-beta.1",
60
+ "@webiny/project-utils": "^5.34.3-beta.1",
61
61
  "apollo-graphql": "^0.9.5",
62
62
  "get-yarn-workspaces": "^1.0.2",
63
63
  "graphql": "^15.7.2",
@@ -77,5 +77,5 @@
77
77
  "build": "yarn webiny run build",
78
78
  "watch": "yarn webiny run watch"
79
79
  },
80
- "gitHead": "518ff6226deeeb8fdb12e1bd58f250d0c34d966a"
80
+ "gitHead": "1a098125f7fea27f610599e64cd3a82df3ff566b"
81
81
  }