@webiny/api-headless-cms 5.34.3-beta.0 → 5.34.3-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/crud/contentModel/beforeCreate.d.ts +2 -3
  2. package/crud/contentModel/beforeCreate.js +4 -4
  3. package/crud/contentModel/beforeCreate.js.map +1 -1
  4. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  5. package/crud/contentModel/beforeUpdate.js +2 -2
  6. package/crud/contentModel/beforeUpdate.js.map +1 -1
  7. package/crud/contentModel/validateModel.d.ts +3 -4
  8. package/crud/contentModel/validateModel.js +6 -3
  9. package/crud/contentModel/validateModel.js.map +1 -1
  10. package/crud/contentModel/validateModelFields.d.ts +3 -4
  11. package/crud/contentModel/validateModelFields.js +74 -6
  12. package/crud/contentModel/validateModelFields.js.map +1 -1
  13. package/crud/contentModel.crud.js +3 -18
  14. package/crud/contentModel.crud.js.map +1 -1
  15. package/graphql/buildSchemaPlugins.d.ts +7 -2
  16. package/graphql/buildSchemaPlugins.js +3 -6
  17. package/graphql/buildSchemaPlugins.js.map +1 -1
  18. package/graphql/createExecutableSchema.d.ts +7 -0
  19. package/graphql/createExecutableSchema.js +33 -0
  20. package/graphql/createExecutableSchema.js.map +1 -0
  21. package/graphql/generateSchema.d.ts +8 -0
  22. package/graphql/generateSchema.js +38 -0
  23. package/graphql/generateSchema.js.map +1 -0
  24. package/graphql/graphQLHandlerFactory.js +68 -71
  25. package/graphql/graphQLHandlerFactory.js.map +1 -1
  26. package/graphql/index.d.ts +1 -3
  27. package/graphql/index.js +2 -41
  28. package/graphql/index.js.map +1 -1
  29. package/graphql/schema/baseContentSchema.d.ts +5 -1
  30. package/graphql/schema/baseContentSchema.js +3 -1
  31. package/graphql/schema/baseContentSchema.js.map +1 -1
  32. package/graphql/schema/baseSchema.d.ts +3 -0
  33. package/graphql/schema/baseSchema.js +58 -0
  34. package/graphql/schema/baseSchema.js.map +1 -0
  35. package/graphql/schema/contentEntries.d.ts +5 -1
  36. package/graphql/schema/contentEntries.js +3 -1
  37. package/graphql/schema/contentEntries.js.map +1 -1
  38. package/graphql/schema/contentModelGroups.d.ts +5 -1
  39. package/graphql/schema/contentModelGroups.js +3 -1
  40. package/graphql/schema/contentModelGroups.js.map +1 -1
  41. package/graphql/schema/contentModels.d.ts +5 -1
  42. package/graphql/schema/contentModels.js +3 -1
  43. package/graphql/schema/contentModels.js.map +1 -1
  44. package/graphql/schema/schemaPlugins.d.ts +7 -2
  45. package/graphql/schema/schemaPlugins.js +45 -43
  46. package/graphql/schema/schemaPlugins.js.map +1 -1
  47. package/index.d.ts +1 -1
  48. package/package.json +23 -23
package/graphql/index.js CHANGED
@@ -9,49 +9,10 @@ var _system = require("./system");
9
9
 
10
10
  var _graphQLHandlerFactory = require("./graphQLHandlerFactory");
11
11
 
12
- const createBaseSchema = () => {
13
- return {
14
- name: "cms.graphql.schema.base",
15
- type: "graphql-schema",
16
- schema: {
17
- typeDefs:
18
- /* GraphQL */
19
- `
20
- type CmsError {
21
- code: String
22
- message: String
23
- data: JSON
24
- stack: String
25
- }
26
-
27
- type CmsCursors {
28
- next: String
29
- previous: String
30
- }
31
-
32
- type CmsListMeta {
33
- cursor: String
34
- hasMoreItems: Boolean
35
- totalCount: Int
36
- }
37
-
38
- type CmsDeleteResponse {
39
- data: Boolean
40
- error: CmsError
41
- }
42
-
43
- type CmsBooleanResponse {
44
- data: Boolean
45
- error: CmsError
46
- }
47
- `,
48
- resolvers: {}
49
- }
50
- };
51
- };
12
+ var _baseSchema = require("./schema/baseSchema");
52
13
 
53
14
  const createGraphQL = params => {
54
- return [createBaseSchema(), (0, _system.createSystemSchemaPlugin)(), (0, _graphQLHandlerFactory.graphQLHandlerFactory)(params)];
15
+ return [...(0, _baseSchema.createBaseSchema)(), (0, _system.createSystemSchemaPlugin)(), (0, _graphQLHandlerFactory.graphQLHandlerFactory)(params)];
55
16
  };
56
17
 
57
18
  exports.createGraphQL = createGraphQL;
@@ -1 +1 @@
1
- {"version":3,"names":["createBaseSchema","name","type","schema","typeDefs","resolvers","createGraphQL","params","createSystemSchemaPlugin","graphQLHandlerFactory"],"sources":["index.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/types\";\nimport { createSystemSchemaPlugin } from \"./system\";\nimport { graphQLHandlerFactory, GraphQLHandlerFactoryParams } from \"./graphQLHandlerFactory\";\nimport { CmsContext } from \"~/types\";\n\nconst createBaseSchema = (): GraphQLSchemaPlugin<CmsContext> => {\n return {\n name: \"cms.graphql.schema.base\",\n type: \"graphql-schema\",\n schema: {\n typeDefs: /* GraphQL */ `\n type CmsError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type CmsCursors {\n next: String\n previous: String\n }\n\n type CmsListMeta {\n cursor: String\n hasMoreItems: Boolean\n totalCount: Int\n }\n\n type CmsDeleteResponse {\n data: Boolean\n error: CmsError\n }\n\n type CmsBooleanResponse {\n data: Boolean\n error: CmsError\n }\n `,\n resolvers: {}\n }\n };\n};\n\nexport type CreateGraphQLParams = GraphQLHandlerFactoryParams;\nexport const createGraphQL = (params: CreateGraphQLParams) => {\n return [createBaseSchema(), createSystemSchemaPlugin(), graphQLHandlerFactory(params)];\n};\n"],"mappings":";;;;;;;AACA;;AACA;;AAGA,MAAMA,gBAAgB,GAAG,MAAuC;EAC5D,OAAO;IACHC,IAAI,EAAE,yBADH;IAEHC,IAAI,EAAE,gBAFH;IAGHC,MAAM,EAAE;MACJC,QAAQ;MAAE;MAAe;AACrC;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,aA7BgB;MA8BJC,SAAS,EAAE;IA9BP;EAHL,CAAP;AAoCH,CArCD;;AAwCO,MAAMC,aAAa,GAAIC,MAAD,IAAiC;EAC1D,OAAO,CAACP,gBAAgB,EAAjB,EAAqB,IAAAQ,gCAAA,GAArB,EAAiD,IAAAC,4CAAA,EAAsBF,MAAtB,CAAjD,CAAP;AACH,CAFM"}
1
+ {"version":3,"names":["createGraphQL","params","createBaseSchema","createSystemSchemaPlugin","graphQLHandlerFactory"],"sources":["index.ts"],"sourcesContent":["import { createSystemSchemaPlugin } from \"./system\";\nimport { graphQLHandlerFactory, GraphQLHandlerFactoryParams } from \"./graphQLHandlerFactory\";\nimport { createBaseSchema } from \"~/graphql/schema/baseSchema\";\n\nexport type CreateGraphQLParams = GraphQLHandlerFactoryParams;\nexport const createGraphQL = (params: CreateGraphQLParams) => {\n return [...createBaseSchema(), createSystemSchemaPlugin(), graphQLHandlerFactory(params)];\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAGO,MAAMA,aAAa,GAAIC,MAAD,IAAiC;EAC1D,OAAO,CAAC,GAAG,IAAAC,4BAAA,GAAJ,EAAwB,IAAAC,gCAAA,GAAxB,EAAoD,IAAAC,4CAAA,EAAsBH,MAAtB,CAApD,CAAP;AACH,CAFM"}
@@ -1,3 +1,7 @@
1
1
  import { CmsContext } from "../../types";
2
2
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/plugins/GraphQLSchemaPlugin";
3
- export declare const createBaseContentSchema: (context: CmsContext) => GraphQLSchemaPlugin;
3
+ interface Params {
4
+ context: CmsContext;
5
+ }
6
+ export declare const createBaseContentSchema: ({ context }: Params) => GraphQLSchemaPlugin;
7
+ export {};
@@ -13,7 +13,9 @@ var _builtInTypes = require("@webiny/handler-graphql/builtInTypes");
13
13
 
14
14
  var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
15
15
 
16
- const createBaseContentSchema = context => {
16
+ const createBaseContentSchema = ({
17
+ context
18
+ }) => {
17
19
  const scalars = context.plugins.byType("graphql-scalar").map(item => item.scalar);
18
20
  return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
19
21
  typeDefs:
@@ -1 +1 @@
1
- {"version":3,"names":["createBaseContentSchema","context","scalars","plugins","byType","map","item","scalar","GraphQLSchemaPlugin","typeDefs","name","join","resolvers","reduce","acc","s","JSON","JsonScalar","Long","LongScalar","RefInput","RefInputScalar","Number","NumberScalar","Any","AnyScalar","DateTime","DateTimeScalar","DateTimeZ","DateTimeZScalar","Date","DateScalar","Time","TimeScalar","Mutation","_empty"],"sources":["baseContentSchema.ts"],"sourcesContent":["import { GraphQLScalarPlugin } from \"@webiny/handler-graphql/types\";\nimport { CmsContext } from \"~/types\";\nimport {\n RefInputScalar,\n NumberScalar,\n AnyScalar,\n DateTimeScalar,\n DateScalar,\n TimeScalar,\n LongScalar,\n JsonScalar,\n DateTimeZScalar\n} from \"@webiny/handler-graphql/builtInTypes\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { GraphQLScalarType } from \"graphql\";\n\nexport const createBaseContentSchema = (context: CmsContext): GraphQLSchemaPlugin => {\n const scalars = context.plugins\n .byType<GraphQLScalarPlugin>(\"graphql-scalar\")\n .map(item => item.scalar);\n\n return new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n ${scalars.map(scalar => `scalar ${scalar.name}`).join(\" \")}\n scalar JSON\n scalar Long\n scalar RefInput\n scalar Number\n scalar Any\n scalar Date\n scalar DateTime\n scalar DateTimeZ\n scalar Time\n\n type Query\n\n type Mutation {\n _empty: String\n }\n\n type CmsCreatedBy {\n id: String\n displayName: String\n type: String\n }\n\n type CmsOwnedBy {\n id: String\n displayName: String\n type: String\n }\n\n enum CmsEntryStatusType {\n latest\n published\n }\n `,\n resolvers: {\n ...scalars.reduce<Record<string, GraphQLScalarType>>((acc, s) => {\n acc[s.name] = s;\n return acc;\n }, {}),\n JSON: JsonScalar,\n Long: LongScalar,\n RefInput: RefInputScalar,\n Number: NumberScalar,\n Any: AnyScalar,\n DateTime: DateTimeScalar,\n DateTimeZ: DateTimeZScalar,\n Date: DateScalar,\n Time: TimeScalar,\n Mutation: {\n _empty: () => \"_empty\"\n }\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAEA;;AAWA;;AAGO,MAAMA,uBAAuB,GAAIC,OAAD,IAA8C;EACjF,MAAMC,OAAO,GAAGD,OAAO,CAACE,OAAR,CACXC,MADW,CACiB,gBADjB,EAEXC,GAFW,CAEPC,IAAI,IAAIA,IAAI,CAACC,MAFN,CAAhB;EAIA,OAAO,IAAIC,wCAAJ,CAAwB;IAC3BC,QAAQ;IAAE;IAAe;AACjC,cAAcP,OAAO,CAACG,GAAR,CAAYE,MAAM,IAAK,UAASA,MAAM,CAACG,IAAK,EAA5C,EAA+CC,IAA/C,CAAoD,GAApD,CAAyD;AACvE;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,SAnCmC;IAoC3BC,SAAS,8DACFV,OAAO,CAACW,MAAR,CAAkD,CAACC,GAAD,EAAMC,CAAN,KAAY;MAC7DD,GAAG,CAACC,CAAC,CAACL,IAAH,CAAH,GAAcK,CAAd;MACA,OAAOD,GAAP;IACH,CAHE,EAGA,EAHA,CADE;MAKLE,IAAI,EAAEC,wBALD;MAMLC,IAAI,EAAEC,wBAND;MAOLC,QAAQ,EAAEC,4BAPL;MAQLC,MAAM,EAAEC,0BARH;MASLC,GAAG,EAAEC,uBATA;MAULC,QAAQ,EAAEC,4BAVL;MAWLC,SAAS,EAAEC,6BAXN;MAYLC,IAAI,EAAEC,wBAZD;MAaLC,IAAI,EAAEC,wBAbD;MAcLC,QAAQ,EAAE;QACNC,MAAM,EAAE,MAAM;MADR;IAdL;EApCkB,CAAxB,CAAP;AAuDH,CA5DM"}
1
+ {"version":3,"names":["createBaseContentSchema","context","scalars","plugins","byType","map","item","scalar","GraphQLSchemaPlugin","typeDefs","name","join","resolvers","reduce","acc","s","JSON","JsonScalar","Long","LongScalar","RefInput","RefInputScalar","Number","NumberScalar","Any","AnyScalar","DateTime","DateTimeScalar","DateTimeZ","DateTimeZScalar","Date","DateScalar","Time","TimeScalar","Mutation","_empty"],"sources":["baseContentSchema.ts"],"sourcesContent":["import { GraphQLScalarPlugin } from \"@webiny/handler-graphql/types\";\nimport { CmsContext } from \"~/types\";\nimport {\n RefInputScalar,\n NumberScalar,\n AnyScalar,\n DateTimeScalar,\n DateScalar,\n TimeScalar,\n LongScalar,\n JsonScalar,\n DateTimeZScalar\n} from \"@webiny/handler-graphql/builtInTypes\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { GraphQLScalarType } from \"graphql\";\n\ninterface Params {\n context: CmsContext;\n}\nexport const createBaseContentSchema = ({ context }: Params): GraphQLSchemaPlugin => {\n const scalars = context.plugins\n .byType<GraphQLScalarPlugin>(\"graphql-scalar\")\n .map(item => item.scalar);\n\n return new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n ${scalars.map(scalar => `scalar ${scalar.name}`).join(\" \")}\n scalar JSON\n scalar Long\n scalar RefInput\n scalar Number\n scalar Any\n scalar Date\n scalar DateTime\n scalar DateTimeZ\n scalar Time\n\n type Query\n\n type Mutation {\n _empty: String\n }\n\n type CmsCreatedBy {\n id: String\n displayName: String\n type: String\n }\n\n type CmsOwnedBy {\n id: String\n displayName: String\n type: String\n }\n\n enum CmsEntryStatusType {\n latest\n published\n }\n `,\n resolvers: {\n ...scalars.reduce<Record<string, GraphQLScalarType>>((acc, s) => {\n acc[s.name] = s;\n return acc;\n }, {}),\n JSON: JsonScalar,\n Long: LongScalar,\n RefInput: RefInputScalar,\n Number: NumberScalar,\n Any: AnyScalar,\n DateTime: DateTimeScalar,\n DateTimeZ: DateTimeZScalar,\n Date: DateScalar,\n Time: TimeScalar,\n Mutation: {\n _empty: () => \"_empty\"\n }\n }\n });\n};\n"],"mappings":";;;;;;;;;;;AAEA;;AAWA;;AAMO,MAAMA,uBAAuB,GAAG,CAAC;EAAEC;AAAF,CAAD,KAA8C;EACjF,MAAMC,OAAO,GAAGD,OAAO,CAACE,OAAR,CACXC,MADW,CACiB,gBADjB,EAEXC,GAFW,CAEPC,IAAI,IAAIA,IAAI,CAACC,MAFN,CAAhB;EAIA,OAAO,IAAIC,wCAAJ,CAAwB;IAC3BC,QAAQ;IAAE;IAAe;AACjC,cAAcP,OAAO,CAACG,GAAR,CAAYE,MAAM,IAAK,UAASA,MAAM,CAACG,IAAK,EAA5C,EAA+CC,IAA/C,CAAoD,GAApD,CAAyD;AACvE;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,SAnCmC;IAoC3BC,SAAS,8DACFV,OAAO,CAACW,MAAR,CAAkD,CAACC,GAAD,EAAMC,CAAN,KAAY;MAC7DD,GAAG,CAACC,CAAC,CAACL,IAAH,CAAH,GAAcK,CAAd;MACA,OAAOD,GAAP;IACH,CAHE,EAGA,EAHA,CADE;MAKLE,IAAI,EAAEC,wBALD;MAMLC,IAAI,EAAEC,wBAND;MAOLC,QAAQ,EAAEC,4BAPL;MAQLC,MAAM,EAAEC,0BARH;MASLC,GAAG,EAAEC,uBATA;MAULC,QAAQ,EAAEC,4BAVL;MAWLC,SAAS,EAAEC,6BAXN;MAYLC,IAAI,EAAEC,wBAZD;MAaLC,IAAI,EAAEC,wBAbD;MAcLC,QAAQ,EAAE;QACNC,MAAM,EAAE,MAAM;MADR;IAdL;EApCkB,CAAxB,CAAP;AAuDH,CA5DM"}
@@ -0,0 +1,3 @@
1
+ import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
+ import { CmsContext } from "../../types";
3
+ export declare const createBaseSchema: () => GraphQLSchemaPlugin<CmsContext>[];
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createBaseSchema = void 0;
7
+
8
+ var _handlerGraphql = require("@webiny/handler-graphql");
9
+
10
+ const createBaseSchema = () => {
11
+ const cmsPlugin = new _handlerGraphql.GraphQLSchemaPlugin({
12
+ typeDefs:
13
+ /* GraphQL */
14
+ `
15
+ type CmsError {
16
+ code: String
17
+ message: String
18
+ data: JSON
19
+ stack: String
20
+ }
21
+
22
+ type CmsCursors {
23
+ next: String
24
+ previous: String
25
+ }
26
+
27
+ type CmsListMeta {
28
+ cursor: String
29
+ hasMoreItems: Boolean
30
+ totalCount: Int
31
+ }
32
+
33
+ type CmsDeleteResponse {
34
+ data: Boolean
35
+ error: CmsError
36
+ }
37
+
38
+ type CmsBooleanResponse {
39
+ data: Boolean
40
+ error: CmsError
41
+ }
42
+ `,
43
+ resolvers: {}
44
+ });
45
+ cmsPlugin.name = "graphql.cms.schema.base";
46
+ const corePlugin = new _handlerGraphql.GraphQLSchemaPlugin({
47
+ typeDefs: cmsPlugin.schema.typeDefs,
48
+ resolvers: cmsPlugin.schema.resolvers
49
+ });
50
+ corePlugin.name = "graphql.cms.core.schema.base";
51
+ /**
52
+ * Due to splitting of CMS and Core schema plugins, we must have both defined for CMS to work.
53
+ */
54
+
55
+ return [cmsPlugin, corePlugin];
56
+ };
57
+
58
+ exports.createBaseSchema = createBaseSchema;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createBaseSchema","cmsPlugin","GraphQLSchemaPlugin","typeDefs","resolvers","name","corePlugin","schema"],"sources":["baseSchema.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { CmsContext } from \"~/types\";\n\nexport const createBaseSchema = (): GraphQLSchemaPlugin<CmsContext>[] => {\n const cmsPlugin = new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type CmsError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n\n type CmsCursors {\n next: String\n previous: String\n }\n\n type CmsListMeta {\n cursor: String\n hasMoreItems: Boolean\n totalCount: Int\n }\n\n type CmsDeleteResponse {\n data: Boolean\n error: CmsError\n }\n\n type CmsBooleanResponse {\n data: Boolean\n error: CmsError\n }\n `,\n resolvers: {}\n });\n cmsPlugin.name = \"graphql.cms.schema.base\";\n const corePlugin = new GraphQLSchemaPlugin({\n typeDefs: cmsPlugin.schema.typeDefs,\n resolvers: cmsPlugin.schema.resolvers\n });\n corePlugin.name = \"graphql.cms.core.schema.base\";\n /**\n * Due to splitting of CMS and Core schema plugins, we must have both defined for CMS to work.\n */\n return [cmsPlugin, corePlugin];\n};\n"],"mappings":";;;;;;;AAAA;;AAGO,MAAMA,gBAAgB,GAAG,MAAyC;EACrE,MAAMC,SAAS,GAAG,IAAIC,mCAAJ,CAAwB;IACtCC,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,SA7B8C;IA8BtCC,SAAS,EAAE;EA9B2B,CAAxB,CAAlB;EAgCAH,SAAS,CAACI,IAAV,GAAiB,yBAAjB;EACA,MAAMC,UAAU,GAAG,IAAIJ,mCAAJ,CAAwB;IACvCC,QAAQ,EAAEF,SAAS,CAACM,MAAV,CAAiBJ,QADY;IAEvCC,SAAS,EAAEH,SAAS,CAACM,MAAV,CAAiBH;EAFW,CAAxB,CAAnB;EAIAE,UAAU,CAACD,IAAX,GAAkB,8BAAlB;EACA;AACJ;AACA;;EACI,OAAO,CAACJ,SAAD,EAAYK,UAAZ,CAAP;AACH,CA3CM"}
@@ -1,3 +1,7 @@
1
1
  import { CmsContext } from "../../types";
2
2
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/plugins/GraphQLSchemaPlugin";
3
- export declare const createContentEntriesSchema: (context: CmsContext) => GraphQLSchemaPlugin<CmsContext>;
3
+ interface Params {
4
+ context: CmsContext;
5
+ }
6
+ export declare const createContentEntriesSchema: ({ context }: Params) => GraphQLSchemaPlugin<CmsContext>;
7
+ export {};
@@ -157,7 +157,9 @@ const getContentEntry = async params => {
157
157
  });
158
158
  };
159
159
 
160
- const createContentEntriesSchema = context => {
160
+ const createContentEntriesSchema = ({
161
+ context
162
+ }) => {
161
163
  if (!context.cms.MANAGE) {
162
164
  return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
163
165
  typeDefs: "",
@@ -1 +1 @@
1
- {"version":3,"names":["getFetchMethod","type","context","getContentEntriesMethods","WebinyError","methodName","cms","GetContentEntryMethods","latest","published","exact","getContentEntries","params","args","method","models","listModels","modelsMap","reduce","collection","model","modelId","argsEntries","entries","entriesByModel","ref","includes","id","push","getters","Object","keys","map","length","Response","results","Promise","all","items","concat","item","entryId","name","status","title","getEntryTitle","filter","Boolean","getContentEntry","entry","find","m","NotAuthorizedResponse","data","result","shift","createContentEntriesSchema","MANAGE","GraphQLSchemaPlugin","typeDefs","resolvers","CmsContentEntry","parent","_","getPublishedEntriesByIds","ex","Query","searchContentEntries","modelIds","fields","query","limit","modelManager","getModelManager","where","listLatest","search","undefined","savedOn","then","sort","a","b","Date","parse","slice","getLatestContentEntry","getPublishedContentEntry","getLatestContentEntries","getPublishedContentEntries"],"sources":["contentEntries.ts"],"sourcesContent":["import { Response } from \"@webiny/handler-graphql\";\nimport { CmsEntry, CmsContext, CmsModel, CmsEntryListWhere } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle\";\nimport WebinyError from \"@webiny/error\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n}\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntries method \"${type}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type\n }\n );\n }\n const methodName = getContentEntriesMethods[type] as GetContentEntryMethods;\n if (!context.cms[methodName]) {\n throw new WebinyError(\n `Unknown context.cms method \"${methodName}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type,\n methodName\n }\n );\n }\n\n return context.cms[methodName];\n};\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\nenum GetContentEntryMethods {\n getLatestEntriesByIds = \"getLatestEntriesByIds\",\n getPublishedEntriesByIds = \"getPublishedEntriesByIds\",\n getEntriesByIds = \"getEntriesByIds\"\n}\nconst getContentEntriesMethods = {\n latest: \"getLatestEntriesByIds\",\n published: \"getPublishedEntriesByIds\",\n exact: \"getEntriesByIds\"\n};\nconst getContentEntries = async (params: GetContentEntriesParams): Promise<Response> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return {\n id: item.id,\n entryId: item.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: item.status,\n title: getEntryTitle(model, item)\n };\n })\n );\n }, [] as CmsEntryRecord[])\n .filter(Boolean);\n\n return new Response(entries);\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntry method \"${type}\". Could not fetch content entry.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n args,\n type\n }\n );\n }\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response({\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry)\n });\n};\n\nexport const createContentEntriesSchema = (\n context: CmsContext\n): GraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n return new GraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsModelMeta {\n modelId: String\n name: String\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta\n status: String\n title: String\n published: CmsPublishedContentEntry\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n fields: [String!]\n limit: Int\n ): CmsContentEntriesResponse\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const [entry] = await context.cms.getPublishedEntriesByIds(model, [\n parent.id\n ]);\n if (!entry) {\n return null;\n }\n return {\n id: entry.id,\n entryId: entry.entryId,\n title: getEntryTitle(model, entry)\n };\n } catch (ex) {\n return null;\n }\n }\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, fields, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const modelManager = await context.cms.getModelManager(model.modelId);\n const where: CmsEntryListWhere = {};\n\n const [items] = await modelManager.listLatest({\n limit,\n where,\n search: !!query ? query : undefined,\n fields: fields || []\n });\n\n return items.map((entry: CmsEntry) => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n // We need `savedOn` to sort entries from latest to oldest\n savedOn: entry.savedOn\n };\n });\n });\n\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn))\n .slice(0, limit)\n );\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["getFetchMethod","type","context","getContentEntriesMethods","WebinyError","methodName","cms","GetContentEntryMethods","latest","published","exact","getContentEntries","params","args","method","models","listModels","modelsMap","reduce","collection","model","modelId","argsEntries","entries","entriesByModel","ref","includes","id","push","getters","Object","keys","map","length","Response","results","Promise","all","items","concat","item","entryId","name","status","title","getEntryTitle","filter","Boolean","getContentEntry","entry","find","m","NotAuthorizedResponse","data","result","shift","createContentEntriesSchema","MANAGE","GraphQLSchemaPlugin","typeDefs","resolvers","CmsContentEntry","parent","_","getPublishedEntriesByIds","ex","Query","searchContentEntries","modelIds","fields","query","limit","modelManager","getModelManager","where","listLatest","search","undefined","savedOn","then","sort","a","b","Date","parse","slice","getLatestContentEntry","getPublishedContentEntry","getLatestContentEntries","getPublishedContentEntries"],"sources":["contentEntries.ts"],"sourcesContent":["import { Response } from \"@webiny/handler-graphql\";\nimport { CmsEntry, CmsContext, CmsModel, CmsEntryListWhere } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle\";\nimport WebinyError from \"@webiny/error\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n}\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntries method \"${type}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type\n }\n );\n }\n const methodName = getContentEntriesMethods[type] as GetContentEntryMethods;\n if (!context.cms[methodName]) {\n throw new WebinyError(\n `Unknown context.cms method \"${methodName}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type,\n methodName\n }\n );\n }\n\n return context.cms[methodName];\n};\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\nenum GetContentEntryMethods {\n getLatestEntriesByIds = \"getLatestEntriesByIds\",\n getPublishedEntriesByIds = \"getPublishedEntriesByIds\",\n getEntriesByIds = \"getEntriesByIds\"\n}\nconst getContentEntriesMethods = {\n latest: \"getLatestEntriesByIds\",\n published: \"getPublishedEntriesByIds\",\n exact: \"getEntriesByIds\"\n};\nconst getContentEntries = async (params: GetContentEntriesParams): Promise<Response> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return {\n id: item.id,\n entryId: item.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: item.status,\n title: getEntryTitle(model, item)\n };\n })\n );\n }, [] as CmsEntryRecord[])\n .filter(Boolean);\n\n return new Response(entries);\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntry method \"${type}\". Could not fetch content entry.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n args,\n type\n }\n );\n }\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response({\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry)\n });\n};\n\ninterface Params {\n context: CmsContext;\n}\nexport const createContentEntriesSchema = ({\n context\n}: Params): GraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n return new GraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsModelMeta {\n modelId: String\n name: String\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta\n status: String\n title: String\n published: CmsPublishedContentEntry\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n fields: [String!]\n limit: Int\n ): CmsContentEntriesResponse\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const [entry] = await context.cms.getPublishedEntriesByIds(model, [\n parent.id\n ]);\n if (!entry) {\n return null;\n }\n return {\n id: entry.id,\n entryId: entry.entryId,\n title: getEntryTitle(model, entry)\n };\n } catch (ex) {\n return null;\n }\n }\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, fields, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const modelManager = await context.cms.getModelManager(model.modelId);\n const where: CmsEntryListWhere = {};\n\n const [items] = await modelManager.listLatest({\n limit,\n where,\n search: !!query ? query : undefined,\n fields: fields || []\n });\n\n return items.map((entry: CmsEntry) => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n // We need `savedOn` to sort entries from latest to oldest\n savedOn: entry.savedOn\n };\n });\n });\n\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn))\n .slice(0, limit)\n );\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n};\n"],"mappings":"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"}
@@ -1,3 +1,7 @@
1
1
  import { CmsContext } from "../../types";
2
2
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/plugins/GraphQLSchemaPlugin";
3
- export declare const createGroupsSchema: (context: CmsContext) => GraphQLSchemaPlugin<CmsContext>;
3
+ interface Params {
4
+ context: CmsContext;
5
+ }
6
+ export declare const createGroupsSchema: ({ context }: Params) => GraphQLSchemaPlugin<CmsContext>;
7
+ export {};
@@ -11,7 +11,9 @@ var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchem
11
11
 
12
12
  var _CmsGroupPlugin = require("../../plugins/CmsGroupPlugin");
13
13
 
14
- const createGroupsSchema = context => {
14
+ const createGroupsSchema = ({
15
+ context
16
+ }) => {
15
17
  let manageSchema = "";
16
18
 
17
19
  if (context.cms.MANAGE) {
@@ -1 +1 @@
1
- {"version":3,"names":["createGroupsSchema","context","manageSchema","cms","MANAGE","resolvers","CmsContentModelGroup","contentModels","group","_","security","disableAuthorization","models","listModels","enableAuthorization","filter","model","isPrivate","id","totalContentModels","length","plugin","plugins","byType","CmsGroupPlugin","type","some","item","contentModelGroup","Query","getContentModelGroup","args","getGroup","NotFoundError","Response","e","ErrorResponse","listContentModelGroups","__","groups","listGroups","Mutation","createContentModelGroup","createGroup","data","updateContentModelGroup","updateGroup","deleteContentModelGroup","deleteGroup","GraphQLSchemaPlugin","typeDefs"],"sources":["contentModelGroups.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\n\nimport { CmsContext } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\n\nexport const createGroupsSchema = (context: CmsContext): GraphQLSchemaPlugin<CmsContext> => {\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n manageSchema = /* GraphQL */ `\n input CmsContentModelGroupInput {\n name: String!\n slug: String\n description: String\n icon: String!\n }\n\n type CmsContentModelGroupResponse {\n data: CmsContentModelGroup\n error: CmsError\n }\n\n type CmsContentModelGroupListResponse {\n data: [CmsContentModelGroup]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModelGroup(id: ID): CmsContentModelGroupResponse\n listContentModelGroups: CmsContentModelGroupListResponse\n }\n\n extend type Mutation {\n createContentModelGroup(\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n updateContentModelGroup(\n id: ID!\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n deleteContentModelGroup(id: ID!): CmsDeleteResponse\n }\n `;\n }\n\n let resolvers: Resolvers<CmsContext> = {};\n\n if (context.cms.MANAGE) {\n resolvers = {\n CmsContentModelGroup: {\n contentModels: async (group, _, context) => {\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n return models.filter(model => {\n if (model.isPrivate === true) {\n return false;\n }\n return model.group.id === group.id;\n });\n },\n totalContentModels: async (group, _, context) => {\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n return models.filter(model => {\n if (model.isPrivate === true) {\n return false;\n }\n return model.group === group.id;\n }).length;\n },\n plugin: async (group, _, context: CmsContext): Promise<boolean> => {\n return context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .some(item => item.contentModelGroup.id === group.id);\n }\n },\n Query: {\n getContentModelGroup: async (_, args: any, context) => {\n try {\n const { id } = args;\n const group = await context.cms.getGroup(id);\n if (group?.isPrivate) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModelGroups: async (_, __, context) => {\n try {\n const groups = await context.cms.listGroups();\n return new Response(groups.filter(group => group.isPrivate !== true));\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n Mutation: {\n createContentModelGroup: async (_, args: any, context) => {\n try {\n const model = await context.cms.createGroup(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModelGroup: async (_, args: any, context) => {\n try {\n const group = await context.cms.updateGroup(args.id, args.data);\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModelGroup: async (_, args: any, context) => {\n try {\n await context.cms.deleteGroup(args.id);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n };\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsContentModelGroup {\n id: ID!\n createdOn: DateTime\n savedOn: DateTime\n name: String!\n contentModels: [CmsContentModel!]\n totalContentModels: Int!\n slug: String!\n description: String\n icon: String\n createdBy: CmsCreatedBy\n\n # Returns true if the content model group is registered via a plugin.\n plugin: Boolean!\n }\n ${manageSchema}\n `,\n resolvers\n });\n};\n"],"mappings":";;;;;;;AAAA;;AAGA;;AAEA;;AAEO,MAAMA,kBAAkB,GAAIC,OAAD,IAA0D;EACxF,IAAIC,YAAY,GAAG,EAAnB;;EACA,IAAID,OAAO,CAACE,GAAR,CAAYC,MAAhB,EAAwB;IACpBF,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,SApCQ;EAqCH;;EAED,IAAIG,SAAgC,GAAG,EAAvC;;EAEA,IAAIJ,OAAO,CAACE,GAAR,CAAYC,MAAhB,EAAwB;IACpBC,SAAS,GAAG;MACRC,oBAAoB,EAAE;QAClBC,aAAa,EAAE,OAAOC,KAAP,EAAcC,CAAd,EAAiBR,OAAjB,KAA6B;UACxCA,OAAO,CAACS,QAAR,CAAiBC,oBAAjB;UACA,MAAMC,MAAM,GAAG,MAAMX,OAAO,CAACE,GAAR,CAAYU,UAAZ,EAArB;UACAZ,OAAO,CAACS,QAAR,CAAiBI,mBAAjB;UACA,OAAOF,MAAM,CAACG,MAAP,CAAcC,KAAK,IAAI;YAC1B,IAAIA,KAAK,CAACC,SAAN,KAAoB,IAAxB,EAA8B;cAC1B,OAAO,KAAP;YACH;;YACD,OAAOD,KAAK,CAACR,KAAN,CAAYU,EAAZ,KAAmBV,KAAK,CAACU,EAAhC;UACH,CALM,CAAP;QAMH,CAXiB;QAYlBC,kBAAkB,EAAE,OAAOX,KAAP,EAAcC,CAAd,EAAiBR,OAAjB,KAA6B;UAC7CA,OAAO,CAACS,QAAR,CAAiBC,oBAAjB;UACA,MAAMC,MAAM,GAAG,MAAMX,OAAO,CAACE,GAAR,CAAYU,UAAZ,EAArB;UACAZ,OAAO,CAACS,QAAR,CAAiBI,mBAAjB;UACA,OAAOF,MAAM,CAACG,MAAP,CAAcC,KAAK,IAAI;YAC1B,IAAIA,KAAK,CAACC,SAAN,KAAoB,IAAxB,EAA8B;cAC1B,OAAO,KAAP;YACH;;YACD,OAAOD,KAAK,CAACR,KAAN,KAAgBA,KAAK,CAACU,EAA7B;UACH,CALM,EAKJE,MALH;QAMH,CAtBiB;QAuBlBC,MAAM,EAAE,OAAOb,KAAP,EAAcC,CAAd,EAAiBR,OAAjB,KAA2D;UAC/D,OAAOA,OAAO,CAACqB,OAAR,CACFC,MADE,CACqBC,8BAAA,CAAeC,IADpC,EAEFC,IAFE,CAEGC,IAAI,IAAIA,IAAI,CAACC,iBAAL,CAAuBV,EAAvB,KAA8BV,KAAK,CAACU,EAF/C,CAAP;QAGH;MA3BiB,CADd;MA8BRW,KAAK,EAAE;QACHC,oBAAoB,EAAE,OAAOrB,CAAP,EAAUsB,IAAV,EAAqB9B,OAArB,KAAiC;UACnD,IAAI;YACA,MAAM;cAAEiB;YAAF,IAASa,IAAf;YACA,MAAMvB,KAAK,GAAG,MAAMP,OAAO,CAACE,GAAR,CAAY6B,QAAZ,CAAqBd,EAArB,CAApB;;YACA,IAAIV,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAES,SAAX,EAAsB;cAClB,MAAM,IAAIgB,6BAAJ,CAAmB,cAAaf,EAAG,kBAAnC,CAAN;YACH;;YACD,OAAO,IAAIgB,wBAAJ,CAAa1B,KAAb,CAAP;UACH,CAPD,CAOE,OAAO2B,CAAP,EAAU;YACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;UACH;QACJ,CAZE;QAaHE,sBAAsB,EAAE,OAAO5B,CAAP,EAAU6B,EAAV,EAAcrC,OAAd,KAA0B;UAC9C,IAAI;YACA,MAAMsC,MAAM,GAAG,MAAMtC,OAAO,CAACE,GAAR,CAAYqC,UAAZ,EAArB;YACA,OAAO,IAAIN,wBAAJ,CAAaK,MAAM,CAACxB,MAAP,CAAcP,KAAK,IAAIA,KAAK,CAACS,SAAN,KAAoB,IAA3C,CAAb,CAAP;UACH,CAHD,CAGE,OAAOkB,CAAP,EAAU;YACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;UACH;QACJ;MApBE,CA9BC;MAoDRM,QAAQ,EAAE;QACNC,uBAAuB,EAAE,OAAOjC,CAAP,EAAUsB,IAAV,EAAqB9B,OAArB,KAAiC;UACtD,IAAI;YACA,MAAMe,KAAK,GAAG,MAAMf,OAAO,CAACE,GAAR,CAAYwC,WAAZ,CAAwBZ,IAAI,CAACa,IAA7B,CAApB;YACA,OAAO,IAAIV,wBAAJ,CAAalB,KAAb,CAAP;UACH,CAHD,CAGE,OAAOmB,CAAP,EAAU;YACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;UACH;QACJ,CARK;QASNU,uBAAuB,EAAE,OAAOpC,CAAP,EAAUsB,IAAV,EAAqB9B,OAArB,KAAiC;UACtD,IAAI;YACA,MAAMO,KAAK,GAAG,MAAMP,OAAO,CAACE,GAAR,CAAY2C,WAAZ,CAAwBf,IAAI,CAACb,EAA7B,EAAiCa,IAAI,CAACa,IAAtC,CAApB;YACA,OAAO,IAAIV,wBAAJ,CAAa1B,KAAb,CAAP;UACH,CAHD,CAGE,OAAO2B,CAAP,EAAU;YACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;UACH;QACJ,CAhBK;QAiBNY,uBAAuB,EAAE,OAAOtC,CAAP,EAAUsB,IAAV,EAAqB9B,OAArB,KAAiC;UACtD,IAAI;YACA,MAAMA,OAAO,CAACE,GAAR,CAAY6C,WAAZ,CAAwBjB,IAAI,CAACb,EAA7B,CAAN;YACA,OAAO,IAAIgB,wBAAJ,CAAa,IAAb,CAAP;UACH,CAHD,CAGE,OAAOC,CAAP,EAAU;YACR,OAAO,IAAIC,6BAAJ,CAAkBD,CAAlB,CAAP;UACH;QACJ;MAxBK;IApDF,CAAZ;EA+EH;;EAED,OAAO,IAAIc,wCAAJ,CAAoC;IACvCC,QAAQ;IAAE;IAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAchD,YAAa;AAC3B,SAlB+C;IAmBvCG;EAnBuC,CAApC,CAAP;AAqBH,CAnJM"}
1
+ {"version":3,"names":["createGroupsSchema","context","manageSchema","cms","MANAGE","resolvers","CmsContentModelGroup","contentModels","group","_","security","disableAuthorization","models","listModels","enableAuthorization","filter","model","isPrivate","id","totalContentModels","length","plugin","plugins","byType","CmsGroupPlugin","type","some","item","contentModelGroup","Query","getContentModelGroup","args","getGroup","NotFoundError","Response","e","ErrorResponse","listContentModelGroups","__","groups","listGroups","Mutation","createContentModelGroup","createGroup","data","updateContentModelGroup","updateGroup","deleteContentModelGroup","deleteGroup","GraphQLSchemaPlugin","typeDefs"],"sources":["contentModelGroups.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\n\nimport { CmsContext } from \"~/types\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\n\ninterface Params {\n context: CmsContext;\n}\nexport const createGroupsSchema = ({ context }: Params): GraphQLSchemaPlugin<CmsContext> => {\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n manageSchema = /* GraphQL */ `\n input CmsContentModelGroupInput {\n name: String!\n slug: String\n description: String\n icon: String!\n }\n\n type CmsContentModelGroupResponse {\n data: CmsContentModelGroup\n error: CmsError\n }\n\n type CmsContentModelGroupListResponse {\n data: [CmsContentModelGroup]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModelGroup(id: ID): CmsContentModelGroupResponse\n listContentModelGroups: CmsContentModelGroupListResponse\n }\n\n extend type Mutation {\n createContentModelGroup(\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n updateContentModelGroup(\n id: ID!\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n deleteContentModelGroup(id: ID!): CmsDeleteResponse\n }\n `;\n }\n\n let resolvers: Resolvers<CmsContext> = {};\n\n if (context.cms.MANAGE) {\n resolvers = {\n CmsContentModelGroup: {\n contentModels: async (group, _, context) => {\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n return models.filter(model => {\n if (model.isPrivate === true) {\n return false;\n }\n return model.group.id === group.id;\n });\n },\n totalContentModels: async (group, _, context) => {\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n return models.filter(model => {\n if (model.isPrivate === true) {\n return false;\n }\n return model.group === group.id;\n }).length;\n },\n plugin: async (group, _, context: CmsContext): Promise<boolean> => {\n return context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .some(item => item.contentModelGroup.id === group.id);\n }\n },\n Query: {\n getContentModelGroup: async (_, args: any, context) => {\n try {\n const { id } = args;\n const group = await context.cms.getGroup(id);\n if (group?.isPrivate) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModelGroups: async (_, __, context) => {\n try {\n const groups = await context.cms.listGroups();\n return new Response(groups.filter(group => group.isPrivate !== true));\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n Mutation: {\n createContentModelGroup: async (_, args: any, context) => {\n try {\n const model = await context.cms.createGroup(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModelGroup: async (_, args: any, context) => {\n try {\n const group = await context.cms.updateGroup(args.id, args.data);\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModelGroup: async (_, args: any, context) => {\n try {\n await context.cms.deleteGroup(args.id);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n };\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsContentModelGroup {\n id: ID!\n createdOn: DateTime\n savedOn: DateTime\n name: String!\n contentModels: [CmsContentModel!]\n totalContentModels: Int!\n slug: String!\n description: String\n icon: String\n createdBy: CmsCreatedBy\n\n # Returns true if the content model group is registered via a plugin.\n plugin: Boolean!\n }\n ${manageSchema}\n `,\n resolvers\n });\n};\n"],"mappings":"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"}
@@ -1,3 +1,7 @@
1
1
  import { CmsContext } from "../../types";
2
2
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/plugins/GraphQLSchemaPlugin";
3
- export declare const createModelsSchema: (context: CmsContext) => GraphQLSchemaPlugin<CmsContext>;
3
+ interface Params {
4
+ context: CmsContext;
5
+ }
6
+ export declare const createModelsSchema: ({ context }: Params) => GraphQLSchemaPlugin<CmsContext>;
7
+ export {};
@@ -17,7 +17,9 @@ var _CmsModelPlugin = require("../../plugins/CmsModelPlugin");
17
17
 
18
18
  var _toSlug = require("../../utils/toSlug");
19
19
 
20
- const createModelsSchema = context => {
20
+ const createModelsSchema = ({
21
+ context
22
+ }) => {
21
23
  const resolvers = {
22
24
  Query: {
23
25
  getContentModel: async (_, args, context) => {
@@ -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","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"}
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\ninterface Params {\n context: CmsContext;\n}\nexport const createModelsSchema = ({ context }: Params): 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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AAJ,CAAagD,MAAb,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"}
@@ -1,3 +1,8 @@
1
1
  import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/plugins/GraphQLSchemaPlugin";
2
- import { CmsContext } from "../../types";
3
- export declare const generateSchemaPlugins: (context: CmsContext) => Promise<GraphQLSchemaPlugin<CmsContext>[]>;
2
+ import { CmsContext, CmsModel } from "../../types";
3
+ interface GenerateSchemaPluginsParams {
4
+ context: CmsContext;
5
+ models: CmsModel[];
6
+ }
7
+ export declare const generateSchemaPlugins: (params: GenerateSchemaPluginsParams) => Promise<GraphQLSchemaPlugin<CmsContext>[]>;
8
+ export {};
@@ -19,11 +19,13 @@ var _createPreviewResolvers = require("./createPreviewResolvers");
19
19
 
20
20
  var _getSchemaFromFieldPlugins = require("../../utils/getSchemaFromFieldPlugins");
21
21
 
22
- var _filterModelFields = require("../../utils/filterModelFields");
23
-
24
22
  var _plugins = require("../../plugins");
25
23
 
26
- const generateSchemaPlugins = async context => {
24
+ const generateSchemaPlugins = async params => {
25
+ const {
26
+ context,
27
+ models
28
+ } = params;
27
29
  const {
28
30
  plugins,
29
31
  cms
@@ -46,15 +48,7 @@ const generateSchemaPlugins = async context => {
46
48
  acc[pl.fieldType] = pl;
47
49
  return acc;
48
50
  }, {});
49
- const sorterPlugins = plugins.byType(_plugins.CmsGraphQLSchemaSorterPlugin.type); // Load model data
50
-
51
- context.security.disableAuthorization();
52
- const initialModels = (await cms.listModels()).filter(model => model.isPrivate !== true);
53
- context.security.enableAuthorization();
54
- const models = (0, _filterModelFields.filterModelsDeletedFields)({
55
- models: initialModels,
56
- type
57
- });
51
+ const sorterPlugins = plugins.byType(_plugins.CmsGraphQLSchemaSorterPlugin.type);
58
52
  const schemas = (0, _getSchemaFromFieldPlugins.getSchemaFromFieldPlugins)({
59
53
  models,
60
54
  fieldTypePlugins,
@@ -69,41 +63,49 @@ const generateSchemaPlugins = async context => {
69
63
  models.filter(model => model.fields.length > 0).forEach(model => {
70
64
  switch (type) {
71
65
  case "manage":
72
- newPlugins.push(new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
73
- typeDefs: (0, _createManageSDL.createManageSDL)({
74
- model,
75
- fieldTypePlugins,
76
- sorterPlugins
77
- }),
78
- resolvers: (0, _createManageResolvers.createManageResolvers)({
79
- models,
80
- model,
81
- fieldTypePlugins,
82
- context
83
- })
84
- }));
66
+ {
67
+ const plugin = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
68
+ typeDefs: (0, _createManageSDL.createManageSDL)({
69
+ model,
70
+ fieldTypePlugins,
71
+ sorterPlugins
72
+ }),
73
+ resolvers: (0, _createManageResolvers.createManageResolvers)({
74
+ models,
75
+ model,
76
+ fieldTypePlugins,
77
+ context
78
+ })
79
+ });
80
+ plugin.name = `headless-cms.graphql.schema.manage.${model.modelId}`;
81
+ newPlugins.push(plugin);
82
+ }
85
83
  break;
86
84
 
87
85
  case "preview":
88
86
  case "read":
89
- newPlugins.push(new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
90
- typeDefs: (0, _createReadSDL.createReadSDL)({
91
- model,
92
- fieldTypePlugins,
93
- sorterPlugins
94
- }),
95
- resolvers: cms.READ ? (0, _createReadResolvers.createReadResolvers)({
96
- models,
97
- model,
98
- fieldTypePlugins,
99
- context
100
- }) : (0, _createPreviewResolvers.createPreviewResolvers)({
101
- models,
102
- model,
103
- fieldTypePlugins,
104
- context
105
- })
106
- }));
87
+ {
88
+ const plugin = new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
89
+ typeDefs: (0, _createReadSDL.createReadSDL)({
90
+ model,
91
+ fieldTypePlugins,
92
+ sorterPlugins
93
+ }),
94
+ resolvers: cms.READ ? (0, _createReadResolvers.createReadResolvers)({
95
+ models,
96
+ model,
97
+ fieldTypePlugins,
98
+ context
99
+ }) : (0, _createPreviewResolvers.createPreviewResolvers)({
100
+ models,
101
+ model,
102
+ fieldTypePlugins,
103
+ context
104
+ })
105
+ });
106
+ plugin.name = `headless-cms.graphql.schema.${type}.${model.modelId}`;
107
+ newPlugins.push(plugin);
108
+ }
107
109
  break;
108
110
 
109
111
  default: