@webiny/api-headless-cms 0.0.0-unstable.6e5425ee89 → 0.0.0-unstable.7f63ea0744
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context.d.ts +5 -2
- package/context.js +53 -4
- package/context.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +4 -2
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +7 -5
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +72 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.js +99 -42
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +2 -3
- package/crud/contentModel/beforeCreate.js +4 -5
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +2 -4
- package/crud/contentModel/beforeUpdate.js +2 -2
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +4 -1
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/validateModel.d.ts +3 -4
- package/crud/contentModel/validateModel.js +6 -3
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.d.ts +3 -4
- package/crud/contentModel/validateModelFields.js +100 -38
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +477 -0
- package/crud/contentModel/validation.js +97 -0
- package/crud/contentModel/validation.js.map +1 -0
- package/crud/contentModel.crud.js +212 -177
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +30 -0
- package/crud/contentModelGroup/validation.js +34 -0
- package/crud/contentModelGroup/validation.js.map +1 -0
- package/crud/contentModelGroup.crud.js +47 -52
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/index.d.ts +2 -1
- package/fieldConverters/index.js +2 -1
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.d.ts +8 -3
- package/graphql/buildSchemaPlugins.js +3 -7
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/createExecutableSchema.d.ts +7 -0
- package/graphql/createExecutableSchema.js +29 -0
- package/graphql/createExecutableSchema.js.map +1 -0
- package/graphql/generateSchema.d.ts +8 -0
- package/graphql/generateSchema.js +31 -0
- package/graphql/generateSchema.js.map +1 -0
- package/graphql/graphQLHandlerFactory.js +91 -50
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +1 -3
- package/graphql/index.js +2 -39
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.d.ts +6 -2
- package/graphql/schema/baseContentSchema.js +6 -4
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +3 -0
- package/graphql/schema/baseSchema.js +53 -0
- package/graphql/schema/baseSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +6 -2
- package/graphql/schema/contentEntries.js +37 -23
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.d.ts +6 -2
- package/graphql/schema/contentModelGroups.js +7 -3
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.d.ts +6 -2
- package/graphql/schema/contentModels.js +40 -7
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +17 -6
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +2 -0
- package/graphql/schema/createManageSDL.js +10 -6
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +5 -0
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +2 -0
- package/graphql/schema/createReadSDL.js +11 -5
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/schemaPlugins.d.ts +8 -3
- package/graphql/schema/schemaPlugins.js +58 -46
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +69 -72
- package/graphql/system.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +208 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +19 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/index.d.ts +1 -1
- package/graphqlFields/index.js +2 -1
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/number.js +4 -0
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +112 -68
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +31 -45
- package/graphqlFields/ref.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +3 -7
- package/index.js.map +1 -1
- package/package.json +28 -28
- package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
- package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
- package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.d.ts +11 -11
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +22 -0
- package/plugins/index.js.map +1 -1
- package/storage/object.js +4 -2
- package/storage/object.js.map +1 -1
- package/types.d.ts +241 -57
- package/types.js +62 -7
- package/types.js.map +1 -1
- package/utils/converters/ConverterCollection.js +5 -2
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +15 -0
- package/utils/createTypeFromFields.js +64 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.js +2 -1
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +14 -11
- package/utils/entryStorage.js.map +1 -1
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +10 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
- package/utils/getSchemaFromFieldPlugins.js +22 -14
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/renderFields.js +2 -1
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +6 -3
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +2 -1
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +4 -2
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +7 -4
- package/utils/renderSortEnum.js +21 -4
- package/utils/renderSortEnum.js.map +1 -1
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +20 -0
- package/validators/dynamicZone.js.map +1 -0
- package/validators/index.js +2 -1
- package/validators/index.js.map +1 -1
- package/crud/contentModel/createFieldModels.d.ts +0 -2
- package/crud/contentModel/createFieldModels.js +0 -20
- package/crud/contentModel/createFieldModels.js.map +0 -1
- package/crud/contentModel/fieldIdValidation.d.ts +0 -1
- package/crud/contentModel/fieldIdValidation.js +0 -20
- package/crud/contentModel/fieldIdValidation.js.map +0 -1
- package/crud/contentModel/idValidation.d.ts +0 -1
- package/crud/contentModel/idValidation.js +0 -17
- package/crud/contentModel/idValidation.js.map +0 -1
- package/crud/contentModel/models.d.ts +0 -4
- package/crud/contentModel/models.js +0 -173
- package/crud/contentModel/models.js.map +0 -1
- package/crud/index.d.ts +0 -6
- package/crud/index.js +0 -69
- package/crud/index.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
- package/utils/filterModelFields.d.ts +0 -16
- package/utils/filterModelFields.js +0 -71
- package/utils/filterModelFields.js.map +0 -1
package/graphql/index.js
CHANGED
|
@@ -6,45 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.createGraphQL = void 0;
|
|
7
7
|
var _system = require("./system");
|
|
8
8
|
var _graphQLHandlerFactory = require("./graphQLHandlerFactory");
|
|
9
|
-
|
|
10
|
-
return {
|
|
11
|
-
name: "cms.graphql.schema.base",
|
|
12
|
-
type: "graphql-schema",
|
|
13
|
-
schema: {
|
|
14
|
-
typeDefs: /* GraphQL */`
|
|
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
|
-
};
|
|
46
|
-
};
|
|
9
|
+
var _baseSchema = require("./schema/baseSchema");
|
|
47
10
|
const createGraphQL = params => {
|
|
48
|
-
return [createBaseSchema(), (0, _system.createSystemSchemaPlugin)(), (0, _graphQLHandlerFactory.graphQLHandlerFactory)(params)];
|
|
11
|
+
return [...(0, _baseSchema.createBaseSchema)(), (0, _system.createSystemSchemaPlugin)(), (0, _graphQLHandlerFactory.graphQLHandlerFactory)(params)];
|
|
49
12
|
};
|
|
50
13
|
exports.createGraphQL = createGraphQL;
|
package/graphql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
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,MAA2B,IAAK;EAC1D,OAAO,CAAC,GAAG,IAAAC,4BAAgB,GAAE,EAAE,IAAAC,gCAAwB,GAAE,EAAE,IAAAC,4CAAqB,EAACH,MAAM,CAAC,CAAC;AAC7F,CAAC;AAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { CmsContext } from "../../types";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { CmsGraphQLSchemaPlugin } from "../../plugins";
|
|
3
|
+
interface Params {
|
|
4
|
+
context: CmsContext;
|
|
5
|
+
}
|
|
6
|
+
export declare const createBaseContentSchema: ({ context }: Params) => CmsGraphQLSchemaPlugin;
|
|
7
|
+
export {};
|
|
@@ -7,10 +7,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.createBaseContentSchema = void 0;
|
|
8
8
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
9
|
var _builtInTypes = require("@webiny/handler-graphql/builtInTypes");
|
|
10
|
-
var
|
|
11
|
-
const createBaseContentSchema =
|
|
10
|
+
var _plugins = require("../../plugins");
|
|
11
|
+
const createBaseContentSchema = ({
|
|
12
|
+
context
|
|
13
|
+
}) => {
|
|
12
14
|
const scalars = context.plugins.byType("graphql-scalar").map(item => item.scalar);
|
|
13
|
-
return new
|
|
15
|
+
return new _plugins.CmsGraphQLSchemaPlugin({
|
|
14
16
|
typeDefs: /* GraphQL */`
|
|
15
17
|
${scalars.map(scalar => `scalar ${scalar.name}`).join(" ")}
|
|
16
18
|
scalar JSON
|
|
@@ -52,7 +54,7 @@ const createBaseContentSchema = context => {
|
|
|
52
54
|
}, {})), {}, {
|
|
53
55
|
JSON: _builtInTypes.JsonScalar,
|
|
54
56
|
Long: _builtInTypes.LongScalar,
|
|
55
|
-
RefInput: _builtInTypes.
|
|
57
|
+
RefInput: _builtInTypes.RefInputScalar,
|
|
56
58
|
Number: _builtInTypes.NumberScalar,
|
|
57
59
|
Any: _builtInTypes.AnyScalar,
|
|
58
60
|
DateTime: _builtInTypes.DateTimeScalar,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createBaseContentSchema","context","scalars","plugins","byType","map","item","scalar","
|
|
1
|
+
{"version":3,"names":["createBaseContentSchema","context","scalars","plugins","byType","map","item","scalar","CmsGraphQLSchemaPlugin","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 { GraphQLScalarType } from \"graphql\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\n\ninterface Params {\n context: CmsContext;\n}\nexport const createBaseContentSchema = ({ context }: Params): CmsGraphQLSchemaPlugin => {\n const scalars = context.plugins\n .byType<GraphQLScalarPlugin>(\"graphql-scalar\")\n .map(item => item.scalar);\n\n return new CmsGraphQLSchemaPlugin({\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;AAYA;AAKO,MAAMA,uBAAuB,GAAG,CAAC;EAAEC;AAAgB,CAAC,KAA6B;EACpF,MAAMC,OAAO,GAAGD,OAAO,CAACE,OAAO,CAC1BC,MAAM,CAAsB,gBAAgB,CAAC,CAC7CC,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,MAAM,CAAC;EAE7B,OAAO,IAAIC,+BAAsB,CAAC;IAC9BC,QAAQ,EAAE,aAAe;AACjC,cAAcP,OAAO,CAACG,GAAG,CAACE,MAAM,IAAK,UAASA,MAAM,CAACG,IAAK,EAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAE;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,SAAS;IACDC,SAAS,8DACFV,OAAO,CAACW,MAAM,CAAoC,CAACC,GAAG,EAAEC,CAAC,KAAK;MAC7DD,GAAG,CAACC,CAAC,CAACL,IAAI,CAAC,GAAGK,CAAC;MACf,OAAOD,GAAG;IACd,CAAC,EAAE,CAAC,CAAC,CAAC;MACNE,IAAI,EAAEC,wBAAU;MAChBC,IAAI,EAAEC,wBAAU;MAChBC,QAAQ,EAAEC,4BAAc;MACxBC,MAAM,EAAEC,0BAAY;MACpBC,GAAG,EAAEC,uBAAS;MACdC,QAAQ,EAAEC,4BAAc;MACxBC,SAAS,EAAEC,6BAAe;MAC1BC,IAAI,EAAEC,wBAAU;MAChBC,IAAI,EAAEC,wBAAU;MAChBC,QAAQ,EAAE;QACNC,MAAM,EAAE,MAAM;MAClB;IAAC;EAET,CAAC,CAAC;AACN,CAAC;AAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createBaseSchema = void 0;
|
|
7
|
+
var _plugins = require("../../plugins");
|
|
8
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
9
|
+
const createBaseSchema = () => {
|
|
10
|
+
const cmsPlugin = new _plugins.CmsGraphQLSchemaPlugin({
|
|
11
|
+
typeDefs: /* GraphQL */`
|
|
12
|
+
type CmsError {
|
|
13
|
+
code: String
|
|
14
|
+
message: String
|
|
15
|
+
data: JSON
|
|
16
|
+
stack: String
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type CmsCursors {
|
|
20
|
+
next: String
|
|
21
|
+
previous: String
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
type CmsListMeta {
|
|
25
|
+
cursor: String
|
|
26
|
+
hasMoreItems: Boolean
|
|
27
|
+
totalCount: Int
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
type CmsDeleteResponse {
|
|
31
|
+
data: Boolean
|
|
32
|
+
error: CmsError
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type CmsBooleanResponse {
|
|
36
|
+
data: Boolean
|
|
37
|
+
error: CmsError
|
|
38
|
+
}
|
|
39
|
+
`,
|
|
40
|
+
resolvers: {}
|
|
41
|
+
});
|
|
42
|
+
cmsPlugin.name = "headless-cms.graphql.schema.base";
|
|
43
|
+
const corePlugin = new _handlerGraphql.GraphQLSchemaPlugin({
|
|
44
|
+
typeDefs: cmsPlugin.schema.typeDefs,
|
|
45
|
+
resolvers: cmsPlugin.schema.resolvers
|
|
46
|
+
});
|
|
47
|
+
corePlugin.name = "headless-cms.graphql.core.schema.base";
|
|
48
|
+
/**
|
|
49
|
+
* Due to splitting of CMS and Core schema plugins, we must have both defined for CMS to work.
|
|
50
|
+
*/
|
|
51
|
+
return [cmsPlugin, corePlugin];
|
|
52
|
+
};
|
|
53
|
+
exports.createBaseSchema = createBaseSchema;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createBaseSchema","cmsPlugin","CmsGraphQLSchemaPlugin","typeDefs","resolvers","name","corePlugin","GraphQLSchemaPlugin","schema"],"sources":["baseSchema.ts"],"sourcesContent":["import { CmsContext } from \"~/types\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\n\nexport const createBaseSchema = (): GraphQLSchemaPlugin<CmsContext>[] => {\n const cmsPlugin = new CmsGraphQLSchemaPlugin({\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 = \"headless-cms.graphql.schema.base\";\n const corePlugin = new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: cmsPlugin.schema.typeDefs,\n resolvers: cmsPlugin.schema.resolvers\n });\n corePlugin.name = \"headless-cms.graphql.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":";;;;;;AACA;AACA;AAEO,MAAMA,gBAAgB,GAAG,MAAyC;EACrE,MAAMC,SAAS,GAAG,IAAIC,+BAAsB,CAAC;IACzCC,QAAQ,EAAE,aAAe;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,SAAS;IACDC,SAAS,EAAE,CAAC;EAChB,CAAC,CAAC;EACFH,SAAS,CAACI,IAAI,GAAG,kCAAkC;EACnD,MAAMC,UAAU,GAAG,IAAIC,mCAAmB,CAAa;IACnDJ,QAAQ,EAAEF,SAAS,CAACO,MAAM,CAACL,QAAQ;IACnCC,SAAS,EAAEH,SAAS,CAACO,MAAM,CAACJ;EAChC,CAAC,CAAC;EACFE,UAAU,CAACD,IAAI,GAAG,uCAAuC;EACzD;AACJ;AACA;EACI,OAAO,CAACJ,SAAS,EAAEK,UAAU,CAAC;AAClC,CAAC;AAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { CmsContext } from "../../types";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { CmsGraphQLSchemaPlugin } from "../../plugins";
|
|
3
|
+
interface Params {
|
|
4
|
+
context: CmsContext;
|
|
5
|
+
}
|
|
6
|
+
export declare const createContentEntriesSchema: ({ context }: Params) => CmsGraphQLSchemaPlugin<CmsContext>;
|
|
7
|
+
export {};
|
|
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.createContentEntriesSchema = void 0;
|
|
8
8
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
9
9
|
var _apiSecurity = require("@webiny/api-security");
|
|
10
|
-
var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
|
|
11
10
|
var _getEntryTitle = require("../../utils/getEntryTitle");
|
|
11
|
+
var _plugins = require("../../plugins");
|
|
12
12
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
13
|
const getFetchMethod = (type, context) => {
|
|
14
14
|
if (!getContentEntriesMethods[type]) {
|
|
@@ -67,23 +67,27 @@ const getContentEntries = async params => {
|
|
|
67
67
|
if (getters.length === 0) {
|
|
68
68
|
return new _handlerGraphql.Response([]);
|
|
69
69
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
70
|
+
try {
|
|
71
|
+
const results = await Promise.all(getters);
|
|
72
|
+
const entries = results.reduce((collection, items) => {
|
|
73
|
+
return collection.concat(items.map(item => {
|
|
74
|
+
const model = modelsMap[item.modelId];
|
|
75
|
+
return {
|
|
76
|
+
id: item.id,
|
|
77
|
+
entryId: item.entryId,
|
|
78
|
+
model: {
|
|
79
|
+
modelId: model.modelId,
|
|
80
|
+
name: model.name
|
|
81
|
+
},
|
|
82
|
+
status: item.status,
|
|
83
|
+
title: (0, _getEntryTitle.getEntryTitle)(model, item)
|
|
84
|
+
};
|
|
85
|
+
}));
|
|
86
|
+
}, []).filter(Boolean);
|
|
87
|
+
return new _handlerGraphql.Response(entries);
|
|
88
|
+
} catch (ex) {
|
|
89
|
+
return new _handlerGraphql.ErrorResponse(ex);
|
|
90
|
+
}
|
|
87
91
|
};
|
|
88
92
|
|
|
89
93
|
/**
|
|
@@ -132,14 +136,18 @@ const getContentEntry = async params => {
|
|
|
132
136
|
title: (0, _getEntryTitle.getEntryTitle)(model, entry)
|
|
133
137
|
});
|
|
134
138
|
};
|
|
135
|
-
const createContentEntriesSchema =
|
|
139
|
+
const createContentEntriesSchema = ({
|
|
140
|
+
context
|
|
141
|
+
}) => {
|
|
136
142
|
if (!context.cms.MANAGE) {
|
|
137
|
-
|
|
143
|
+
const plugin = new _plugins.CmsGraphQLSchemaPlugin({
|
|
138
144
|
typeDefs: "",
|
|
139
145
|
resolvers: {}
|
|
140
146
|
});
|
|
147
|
+
plugin.name = `headless-cms.graphql.schema.${context.cms.type}.empty`;
|
|
148
|
+
return plugin;
|
|
141
149
|
}
|
|
142
|
-
|
|
150
|
+
const plugin = new _plugins.CmsGraphQLSchemaPlugin({
|
|
143
151
|
typeDefs: /* GraphQL */`
|
|
144
152
|
type CmsModelMeta {
|
|
145
153
|
modelId: String
|
|
@@ -259,8 +267,12 @@ const createContentEntriesSchema = context => {
|
|
|
259
267
|
};
|
|
260
268
|
});
|
|
261
269
|
});
|
|
262
|
-
|
|
263
|
-
|
|
270
|
+
try {
|
|
271
|
+
const entries = await Promise.all(getters).then(results => results.reduce((result, item) => result.concat(item), []));
|
|
272
|
+
return new _handlerGraphql.Response(entries.sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn)).slice(0, limit));
|
|
273
|
+
} catch (ex) {
|
|
274
|
+
return new _handlerGraphql.ErrorResponse(ex);
|
|
275
|
+
}
|
|
264
276
|
},
|
|
265
277
|
async getContentEntry(_, args, context) {
|
|
266
278
|
return getContentEntry({
|
|
@@ -307,5 +319,7 @@ const createContentEntriesSchema = context => {
|
|
|
307
319
|
}
|
|
308
320
|
}
|
|
309
321
|
});
|
|
322
|
+
plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-entries`;
|
|
323
|
+
return plugin;
|
|
310
324
|
};
|
|
311
325
|
exports.createContentEntriesSchema = createContentEntriesSchema;
|
|
@@ -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":";;;;;;;AAAA;AAEA;AACA;AACA;AACA;AAuBA,MAAMA,cAAc,GAAG,CAACC,IAAyB,EAAEC,OAAmB,KAAkB;EACpF,IAAI,CAACC,wBAAwB,CAACF,IAAI,CAAC,EAAE;IACjC,MAAM,IAAIG,cAAW,CAChB,qCAAoCH,IAAK,qCAAoC,EAC9E,sBAAsB,EACtB;MACIA;IACJ,CAAC,CACJ;EACL;EACA,MAAMI,UAAU,GAAGF,wBAAwB,CAACF,IAAI,CAA2B;EAC3E,IAAI,CAACC,OAAO,CAACI,GAAG,CAACD,UAAU,CAAC,EAAE;IAC1B,MAAM,IAAID,cAAW,CAChB,+BAA8BC,UAAW,qCAAoC,EAC9E,sBAAsB,EACtB;MACIJ,IAAI;MACJI;IACJ,CAAC,CACJ;EACL;EAEA,OAAOH,OAAO,CAACI,GAAG,CAACD,UAAU,CAAC;AAClC,CAAC;AACD;AACA;AACA;AAFA,IAUKE,sBAAsB;AAAA,WAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;AAAA,GAAtBA,sBAAsB,KAAtBA,sBAAsB;AAK3B,MAAMJ,wBAAwB,GAAG;EAC7BK,MAAM,EAAE,uBAAuB;EAC/BC,SAAS,EAAE,0BAA0B;EACrCC,KAAK,EAAE;AACX,CAAC;AACD,MAAMC,iBAAiB,GAAG,MAAOC,MAA+B,IAAwB;EACpF,MAAM;IAAEC,IAAI;IAAEX,OAAO;IAAED;EAAK,CAAC,GAAGW,MAAM;EAEtC,MAAME,MAAM,GAAGd,cAAc,CAACC,IAAI,EAAEC,OAAO,CAAC;EAE5C,MAAMa,MAAM,GAAG,MAAMb,OAAO,CAACI,GAAG,CAACU,UAAU,EAAE;EAE7C,MAAMC,SAAS,GAAGF,MAAM,CAACG,MAAM,CAAC,CAACC,UAAU,EAAEC,KAAK,KAAK;IACnDD,UAAU,CAACC,KAAK,CAACC,OAAO,CAAC,GAAGD,KAAK;IACjC,OAAOD,UAAU;EACrB,CAAC,EAAE,CAAC,CAAC,CAA6B;EAElC,MAAMG,WAAW,GAAGT,IAAI,CAACU,OAA6C;EAEtE,MAAMC,cAAc,GAAGF,WAAW,CAACJ,MAAM,CAAC,CAACC,UAAU,EAAEM,GAAG,KAAK;IAC3D,IAAI,CAACN,UAAU,CAACM,GAAG,CAACJ,OAAO,CAAC,EAAE;MAC1BF,UAAU,CAACM,GAAG,CAACJ,OAAO,CAAC,GAAG,EAAE;IAChC,CAAC,MAAM,IAAIF,UAAU,CAACM,GAAG,CAACJ,OAAO,CAAC,CAACK,QAAQ,CAACD,GAAG,CAACE,EAAE,CAAC,EAAE;MACjD,OAAOR,UAAU;IACrB;IACAA,UAAU,CAACM,GAAG,CAACJ,OAAO,CAAC,CAACO,IAAI,CAACH,GAAG,CAACE,EAAE,CAAC;IACpC,OAAOR,UAAU;EACrB,CAAC,EAAE,CAAC,CAAC,CAAmB;EAExB,MAAMU,OAA8B,GAAGC,MAAM,CAACC,IAAI,CAACP,cAAc,CAAC,CAACQ,GAAG,CAAC,MAAMX,OAAO,IAAI;IACpF,OAAOP,MAAM,CAACG,SAAS,CAACI,OAAO,CAAC,EAAEG,cAAc,CAACH,OAAO,CAAC,CAAC;EAC9D,CAAC,CAAC;EAEF,IAAIQ,OAAO,CAACI,MAAM,KAAK,CAAC,EAAE;IACtB,OAAO,IAAIC,wBAAQ,CAAC,EAAE,CAAC;EAC3B;EAEA,MAAMC,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAACR,OAAO,CAAC;EAE1C,MAAMN,OAAO,GAAGY,OAAO,CAClBjB,MAAM,CAAC,CAACC,UAAU,EAAEmB,KAAK,KAAK;IAC3B,OAAOnB,UAAU,CAACoB,MAAM,CACpBD,KAAK,CAACN,GAAG,CAACQ,IAAI,IAAI;MACd,MAAMpB,KAAK,GAAGH,SAAS,CAACuB,IAAI,CAACnB,OAAO,CAAC;MAErC,OAAO;QACHM,EAAE,EAAEa,IAAI,CAACb,EAAE;QACXc,OAAO,EAAED,IAAI,CAACC,OAAO;QACrBrB,KAAK,EAAE;UACHC,OAAO,EAAED,KAAK,CAACC,OAAO;UACtBqB,IAAI,EAAEtB,KAAK,CAACsB;QAChB,CAAC;QACDC,MAAM,EAAEH,IAAI,CAACG,MAAM;QACnBC,KAAK,EAAE,IAAAC,4BAAa,EAACzB,KAAK,EAAEoB,IAAI;MACpC,CAAC;IACL,CAAC,CAAC,CACL;EACL,CAAC,EAAE,EAAE,CAAqB,CACzBM,MAAM,CAACC,OAAO,CAAC;EAEpB,OAAO,IAAIb,wBAAQ,CAACX,OAAO,CAAC;AAChC,CAAC;;AAED;AACA;AACA;;AAQA,MAAMyB,eAAe,GAAG,MACpBpC,MAA6B,IACe;EAC5C,MAAM;IAAEC,IAAI;IAAEX,OAAO;IAAED;EAAK,CAAC,GAAGW,MAAM;EACtC,IAAI,CAACT,wBAAwB,CAACF,IAAI,CAAC,EAAE;IACjC,MAAM,IAAIG,cAAW,CAChB,mCAAkCH,IAAK,mCAAkC,EAC1E,sBAAsB,EACtB;MACIY,IAAI;MACJZ;IACJ,CAAC,CACJ;EACL;EAEA,MAAMa,MAAM,GAAGd,cAAc,CAACC,IAAI,EAAEC,OAAO,CAAC;EAE5C,MAAM;IAAEmB,OAAO;IAAEM;EAAG,CAAC,GAAGd,IAAI,CAACoC,KAAK;EAClC,MAAMlC,MAAM,GAAG,MAAMb,OAAO,CAACI,GAAG,CAACU,UAAU,EAAE;EAC7C,MAAMI,KAAK,GAAGL,MAAM,CAACmC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAAC9B,OAAO,KAAKA,OAAO,CAAC;EAErD,IAAI,CAACD,KAAK,EAAE;IACR,OAAO,IAAIgC,kCAAqB,CAAC;MAC7BC,IAAI,EAAE;QACFhC;MACJ;IACJ,CAAC,CAAC;EACN;EAEA,MAAMiC,MAAM,GAAG,MAAMxC,MAAM,CAACM,KAAK,EAAE,CAACO,EAAE,CAAC,CAAC;EAExC,MAAMsB,KAAK,GAAGK,MAAM,CAACC,KAAK,EAAE;EAC5B,IAAI,CAACN,KAAK,EAAE;IACR,OAAO,IAAIf,wBAAQ,CAAC,IAAI,CAAC;EAC7B;EAEA,OAAO,IAAIA,wBAAQ,CAAC;IAChBP,EAAE,EAAEsB,KAAK,CAACtB,EAAE;IACZc,OAAO,EAAEQ,KAAK,CAACR,OAAO;IACtBrB,KAAK,EAAE;MACHC,OAAO,EAAED,KAAK,CAACC,OAAO;MACtBqB,IAAI,EAAEtB,KAAK,CAACsB;IAChB,CAAC;IACDC,MAAM,EAAEM,KAAK,CAACN,MAAM;IACpBC,KAAK,EAAE,IAAAC,4BAAa,EAACzB,KAAK,EAAE6B,KAAK;EACrC,CAAC,CAAC;AACN,CAAC;AAEM,MAAMO,0BAA0B,GACnCtD,OAAmB,IACe;EAClC,IAAI,CAACA,OAAO,CAACI,GAAG,CAACmD,MAAM,EAAE;IACrB,OAAO,IAAIC,wCAAmB,CAAC;MAC3BC,QAAQ,EAAE,EAAE;MACZC,SAAS,EAAE,CAAC;IAChB,CAAC,CAAC;EACN;EAEA,OAAO,IAAIF,wCAAmB,CAAa;IACvCC,QAAQ,EAAE,aAAe;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,SAAS;IACDC,SAAS,EAAE;MACPC,eAAe,EAAE;QACbpD,SAAS,EAAE,OAAOqD,MAAM,EAAEC,CAAC,EAAE7D,OAAO,KAAK;UACrC,IAAI;YACA,MAAMa,MAAM,GAAG,MAAMb,OAAO,CAACI,GAAG,CAACU,UAAU,EAAE;YAC7C,MAAMI,KAAK,GAAGL,MAAM,CAACmC,IAAI,CAAC,CAAC;cAAE7B;YAAQ,CAAC,KAAK;cACvC,OAAOyC,MAAM,CAAC1C,KAAK,CAACC,OAAO,KAAKA,OAAO;YAC3C,CAAC,CAAC;YACF,IAAI,CAACD,KAAK,EAAE;cACR,OAAO,IAAI;YACf;YACA,MAAM,CAAC6B,KAAK,CAAC,GAAG,MAAM/C,OAAO,CAACI,GAAG,CAAC0D,wBAAwB,CAAC5C,KAAK,EAAE,CAC9D0C,MAAM,CAACnC,EAAE,CACZ,CAAC;YACF,IAAI,CAACsB,KAAK,EAAE;cACR,OAAO,IAAI;YACf;YACA,OAAO;cACHtB,EAAE,EAAEsB,KAAK,CAACtB,EAAE;cACZc,OAAO,EAAEQ,KAAK,CAACR,OAAO;cACtBG,KAAK,EAAE,IAAAC,4BAAa,EAACzB,KAAK,EAAE6B,KAAK;YACrC,CAAC;UACL,CAAC,CAAC,OAAOgB,EAAE,EAAE;YACT,OAAO,IAAI;UACf;QACJ;MACJ,CAAC;MACDC,KAAK,EAAE;QACH,MAAMC,oBAAoB,CAACJ,CAAC,EAAElD,IAAS,EAAEX,OAAO,EAAE;UAC9C,MAAM;YAAEkE,QAAQ;YAAEC,MAAM;YAAEC,KAAK;YAAEC,KAAK,GAAG;UAAG,CAAC,GAAG1D,IAAI;UACpD,MAAME,MAAM,GAAG,MAAMb,OAAO,CAACI,GAAG,CAACU,UAAU,EAAE;UAE7C,MAAMa,OAAO,GAAGd,MAAM,CACjB+B,MAAM,CAAC1B,KAAK,IAAIgD,QAAQ,CAAC1C,QAAQ,CAACN,KAAK,CAACC,OAAO,CAAC,CAAC,CACjDW,GAAG,CAAC,MAAMZ,KAAK,IAAI;YAChB,MAAMoD,YAAY,GAAG,MAAMtE,OAAO,CAACI,GAAG,CAACmE,eAAe,CAACrD,KAAK,CAACC,OAAO,CAAC;YACrE,MAAMqD,KAAwB,GAAG,CAAC,CAAC;YAEnC,MAAM,CAACpC,KAAK,CAAC,GAAG,MAAMkC,YAAY,CAACG,UAAU,CAAC;cAC1CJ,KAAK;cACLG,KAAK;cACLE,MAAM,EAAE,CAAC,CAACN,KAAK,GAAGA,KAAK,GAAGO,SAAS;cACnCR,MAAM,EAAEA,MAAM,IAAI;YACtB,CAAC,CAAC;YAEF,OAAO/B,KAAK,CAACN,GAAG,CAAEiB,KAAe,IAAK;cAClC,OAAO;gBACHtB,EAAE,EAAEsB,KAAK,CAACtB,EAAE;gBACZc,OAAO,EAAEQ,KAAK,CAACR,OAAO;gBACtBrB,KAAK,EAAE;kBACHC,OAAO,EAAED,KAAK,CAACC,OAAO;kBACtBqB,IAAI,EAAEtB,KAAK,CAACsB;gBAChB,CAAC;gBACDC,MAAM,EAAEM,KAAK,CAACN,MAAM;gBACpBC,KAAK,EAAE,IAAAC,4BAAa,EAACzB,KAAK,EAAE6B,KAAK,CAAC;gBAClC;gBACA6B,OAAO,EAAE7B,KAAK,CAAC6B;cACnB,CAAC;YACL,CAAC,CAAC;UACN,CAAC,CAAC;UAEN,MAAMvD,OAAO,GAAG,MAAMa,OAAO,CAACC,GAAG,CAACR,OAAO,CAAC,CAACkD,IAAI,CAAC5C,OAAO,IACnDA,OAAO,CAACjB,MAAM,CAAC,CAACoC,MAAM,EAAEd,IAAI,KAAKc,MAAM,CAACf,MAAM,CAACC,IAAI,CAAC,EAAE,EAAE,CAAC,CAC5D;UAED,OAAO,IAAIN,wBAAQ,CACfX,OAAO,CACFyD,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKC,IAAI,CAACC,KAAK,CAACF,CAAC,CAACJ,OAAO,CAAC,GAAGK,IAAI,CAACC,KAAK,CAACH,CAAC,CAACH,OAAO,CAAC,CAAC,CAC7DO,KAAK,CAAC,CAAC,EAAEd,KAAK,CAAC,CACvB;QACL,CAAC;QACD,MAAMvB,eAAe,CAACe,CAAC,EAAElD,IAAS,EAAEX,OAAO,EAAE;UACzC,OAAO8C,eAAe,CAAC;YACnBnC,IAAI;YACJX,OAAO;YACPD,IAAI,EAAE;UACV,CAAC,CAAC;QACN,CAAC;QACD,MAAMqF,qBAAqB,CAACvB,CAAC,EAAElD,IAAS,EAAEX,OAAO,EAAE;UAC/C,OAAO8C,eAAe,CAAC;YACnBnC,IAAI;YACJX,OAAO;YACPD,IAAI,EAAE;UACV,CAAC,CAAC;QACN,CAAC;QACD,MAAMsF,wBAAwB,CAACxB,CAAC,EAAElD,IAAS,EAAEX,OAAO,EAAE;UAClD,OAAO8C,eAAe,CAAC;YACnBnC,IAAI;YACJX,OAAO;YACPD,IAAI,EAAE;UACV,CAAC,CAAC;QACN,CAAC;QACD,MAAMU,iBAAiB,CAACoD,CAAC,EAAElD,IAAS,EAAEX,OAAO,EAAE;UAC3C,OAAOS,iBAAiB,CAAC;YACrBE,IAAI;YACJX,OAAO;YACPD,IAAI,EAAE;UACV,CAAC,CAAC;QACN,CAAC;QACD,MAAMuF,uBAAuB,CAACzB,CAAC,EAAElD,IAAS,EAAEX,OAAO,EAAE;UACjD,OAAOS,iBAAiB,CAAC;YACrBE,IAAI;YACJX,OAAO;YACPD,IAAI,EAAE;UACV,CAAC,CAAC;QACN,CAAC;QACD,MAAMwF,0BAA0B,CAAC1B,CAAC,EAAElD,IAAS,EAAEX,OAAO,EAAE;UACpD,OAAOS,iBAAiB,CAAC;YACrBE,IAAI;YACJX,OAAO;YACPD,IAAI,EAAE;UACV,CAAC,CAAC;QACN;MACJ;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
|
|
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","ex","ErrorResponse","getContentEntry","entry","find","m","NotAuthorizedResponse","data","result","shift","createContentEntriesSchema","MANAGE","plugin","CmsGraphQLSchemaPlugin","typeDefs","resolvers","CmsContentEntry","parent","_","getPublishedEntriesByIds","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 { ErrorResponse, Response } from \"@webiny/handler-graphql\";\nimport { CmsEntry, CmsContext, CmsModel, CmsEntryListWhere } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\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 (\n params: GetContentEntriesParams\n): Promise<Response | ErrorResponse> => {\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 try {\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 } catch (ex) {\n return new ErrorResponse(ex);\n }\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): CmsGraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n const plugin = new CmsGraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.empty`;\n return plugin;\n }\n\n const plugin = new CmsGraphQLSchemaPlugin({\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 try {\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 } catch (ex) {\n return new ErrorResponse(ex);\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 plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-entries`;\n\n return plugin;\n};\n"],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { CmsContext } from "../../types";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { CmsGraphQLSchemaPlugin } from "../../plugins";
|
|
3
|
+
interface Params {
|
|
4
|
+
context: CmsContext;
|
|
5
|
+
}
|
|
6
|
+
export declare const createGroupsSchema: ({ context }: Params) => CmsGraphQLSchemaPlugin;
|
|
7
|
+
export {};
|
|
@@ -5,9 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createGroupsSchema = void 0;
|
|
7
7
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
|
-
var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
|
|
9
8
|
var _CmsGroupPlugin = require("../../plugins/CmsGroupPlugin");
|
|
10
|
-
|
|
9
|
+
var _plugins = require("../../plugins");
|
|
10
|
+
const createGroupsSchema = ({
|
|
11
|
+
context
|
|
12
|
+
}) => {
|
|
11
13
|
let manageSchema = "";
|
|
12
14
|
if (context.cms.MANAGE) {
|
|
13
15
|
manageSchema = /* GraphQL */`
|
|
@@ -130,7 +132,7 @@ const createGroupsSchema = context => {
|
|
|
130
132
|
}
|
|
131
133
|
};
|
|
132
134
|
}
|
|
133
|
-
|
|
135
|
+
const plugin = new _plugins.CmsGraphQLSchemaPlugin({
|
|
134
136
|
typeDefs: /* GraphQL */`
|
|
135
137
|
type CmsContentModelGroup {
|
|
136
138
|
id: ID!
|
|
@@ -151,5 +153,7 @@ const createGroupsSchema = context => {
|
|
|
151
153
|
`,
|
|
152
154
|
resolvers
|
|
153
155
|
});
|
|
156
|
+
plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-model-groups`;
|
|
157
|
+
return plugin;
|
|
154
158
|
};
|
|
155
159
|
exports.createGroupsSchema = createGroupsSchema;
|
|
@@ -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":"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"}
|
|
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","CmsGraphQLSchemaPlugin","typeDefs","name"],"sources":["contentModelGroups.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext } from \"~/types\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\n\ninterface Params {\n context: CmsContext;\n}\nexport const createGroupsSchema = ({ context }: Params): CmsGraphQLSchemaPlugin => {\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 const plugin = new CmsGraphQLSchemaPlugin({\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 plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-model-groups`;\n\n return plugin;\n};\n"],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { CmsContext } from "../../types";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { CmsGraphQLSchemaPlugin } from "../../plugins";
|
|
3
|
+
interface Params {
|
|
4
|
+
context: CmsContext;
|
|
5
|
+
}
|
|
6
|
+
export declare const createModelsSchema: ({ context }: Params) => CmsGraphQLSchemaPlugin;
|
|
7
|
+
export {};
|