@webiny/api-headless-cms 0.0.0-mt-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/content/contextSetup.d.ts +4 -0
  4. package/content/contextSetup.js +65 -0
  5. package/content/graphQLHandlerFactory.d.ts +5 -0
  6. package/content/graphQLHandlerFactory.js +173 -0
  7. package/content/plugins/CmsGroupPlugin.d.ts +11 -0
  8. package/content/plugins/CmsGroupPlugin.js +24 -0
  9. package/content/plugins/CmsModelPlugin.d.ts +11 -0
  10. package/content/plugins/CmsModelPlugin.js +24 -0
  11. package/content/plugins/buildSchemaPlugins.d.ts +7 -0
  12. package/content/plugins/buildSchemaPlugins.js +29 -0
  13. package/content/plugins/crud/contentEntry/afterDelete.d.ts +7 -0
  14. package/content/plugins/crud/contentEntry/afterDelete.js +41 -0
  15. package/content/plugins/crud/contentEntry/beforeCreate.d.ts +7 -0
  16. package/content/plugins/crud/contentEntry/beforeCreate.js +28 -0
  17. package/content/plugins/crud/contentEntry/beforeUpdate.d.ts +7 -0
  18. package/content/plugins/crud/contentEntry/beforeUpdate.js +28 -0
  19. package/content/plugins/crud/contentEntry/entryDataValidation.d.ts +4 -0
  20. package/content/plugins/crud/contentEntry/entryDataValidation.js +188 -0
  21. package/content/plugins/crud/contentEntry/markLockedFields.d.ts +12 -0
  22. package/content/plugins/crud/contentEntry/markLockedFields.js +117 -0
  23. package/content/plugins/crud/contentEntry.crud.d.ts +17 -0
  24. package/content/plugins/crud/contentEntry.crud.js +931 -0
  25. package/content/plugins/crud/contentModel/afterCreate.d.ts +7 -0
  26. package/content/plugins/crud/contentModel/afterCreate.js +18 -0
  27. package/content/plugins/crud/contentModel/afterDelete.d.ts +7 -0
  28. package/content/plugins/crud/contentModel/afterDelete.js +18 -0
  29. package/content/plugins/crud/contentModel/afterUpdate.d.ts +7 -0
  30. package/content/plugins/crud/contentModel/afterUpdate.js +18 -0
  31. package/content/plugins/crud/contentModel/beforeCreate.d.ts +9 -0
  32. package/content/plugins/crud/contentModel/beforeCreate.js +146 -0
  33. package/content/plugins/crud/contentModel/beforeDelete.d.ts +9 -0
  34. package/content/plugins/crud/contentModel/beforeDelete.js +56 -0
  35. package/content/plugins/crud/contentModel/beforeUpdate.d.ts +9 -0
  36. package/content/plugins/crud/contentModel/beforeUpdate.js +128 -0
  37. package/content/plugins/crud/contentModel/contentModelManagerFactory.d.ts +2 -0
  38. package/content/plugins/crud/contentModel/contentModelManagerFactory.js +29 -0
  39. package/content/plugins/crud/contentModel/createFieldModels.d.ts +2 -0
  40. package/content/plugins/crud/contentModel/createFieldModels.js +22 -0
  41. package/content/plugins/crud/contentModel/idValidation.d.ts +2 -0
  42. package/content/plugins/crud/contentModel/idValidation.js +22 -0
  43. package/content/plugins/crud/contentModel/models.d.ts +3 -0
  44. package/content/plugins/crud/contentModel/models.js +141 -0
  45. package/content/plugins/crud/contentModel/validateLayout.d.ts +2 -0
  46. package/content/plugins/crud/contentModel/validateLayout.js +38 -0
  47. package/content/plugins/crud/contentModel.crud.d.ts +12 -0
  48. package/content/plugins/crud/contentModel.crud.js +425 -0
  49. package/content/plugins/crud/contentModelGroup/beforeCreate.d.ts +9 -0
  50. package/content/plugins/crud/contentModelGroup/beforeCreate.js +66 -0
  51. package/content/plugins/crud/contentModelGroup/beforeDelete.d.ts +9 -0
  52. package/content/plugins/crud/contentModelGroup/beforeDelete.js +48 -0
  53. package/content/plugins/crud/contentModelGroup/beforeUpdate.d.ts +8 -0
  54. package/content/plugins/crud/contentModelGroup/beforeUpdate.js +28 -0
  55. package/content/plugins/crud/contentModelGroup.crud.d.ts +12 -0
  56. package/content/plugins/crud/contentModelGroup.crud.js +351 -0
  57. package/content/plugins/crud/index.d.ts +6 -0
  58. package/content/plugins/crud/index.js +100 -0
  59. package/content/plugins/graphqlFields/boolean.d.ts +3 -0
  60. package/content/plugins/graphqlFields/boolean.js +69 -0
  61. package/content/plugins/graphqlFields/datetime.d.ts +3 -0
  62. package/content/plugins/graphqlFields/datetime.js +83 -0
  63. package/content/plugins/graphqlFields/file.d.ts +3 -0
  64. package/content/plugins/graphqlFields/file.js +49 -0
  65. package/content/plugins/graphqlFields/index.d.ts +2 -0
  66. package/content/plugins/graphqlFields/index.js +30 -0
  67. package/content/plugins/graphqlFields/longText.d.ts +3 -0
  68. package/content/plugins/graphqlFields/longText.js +62 -0
  69. package/content/plugins/graphqlFields/number.d.ts +3 -0
  70. package/content/plugins/graphqlFields/number.js +75 -0
  71. package/content/plugins/graphqlFields/object.d.ts +3 -0
  72. package/content/plugins/graphqlFields/object.js +180 -0
  73. package/content/plugins/graphqlFields/ref.d.ts +3 -0
  74. package/content/plugins/graphqlFields/ref.js +205 -0
  75. package/content/plugins/graphqlFields/richText.d.ts +3 -0
  76. package/content/plugins/graphqlFields/richText.js +55 -0
  77. package/content/plugins/graphqlFields/text.d.ts +3 -0
  78. package/content/plugins/graphqlFields/text.js +72 -0
  79. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +8 -0
  80. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +54 -0
  81. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +7 -0
  82. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +35 -0
  83. package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +15 -0
  84. package/content/plugins/modelManager/DefaultCmsModelManager.js +62 -0
  85. package/content/plugins/modelManager/index.d.ts +3 -0
  86. package/content/plugins/modelManager/index.js +20 -0
  87. package/content/plugins/schema/baseSchema.d.ts +4 -0
  88. package/content/plugins/schema/baseSchema.js +98 -0
  89. package/content/plugins/schema/contentEntries.d.ts +4 -0
  90. package/content/plugins/schema/contentEntries.js +166 -0
  91. package/content/plugins/schema/contentModelGroups.d.ts +4 -0
  92. package/content/plugins/schema/contentModelGroups.js +153 -0
  93. package/content/plugins/schema/contentModels.d.ts +4 -0
  94. package/content/plugins/schema/contentModels.js +225 -0
  95. package/content/plugins/schema/createFieldResolvers.d.ts +19 -0
  96. package/content/plugins/schema/createFieldResolvers.js +92 -0
  97. package/content/plugins/schema/createManageResolvers.d.ts +11 -0
  98. package/content/plugins/schema/createManageResolvers.js +135 -0
  99. package/content/plugins/schema/createManageSDL.d.ts +9 -0
  100. package/content/plugins/schema/createManageSDL.js +153 -0
  101. package/content/plugins/schema/createPreviewResolvers.d.ts +10 -0
  102. package/content/plugins/schema/createPreviewResolvers.js +55 -0
  103. package/content/plugins/schema/createReadResolvers.d.ts +10 -0
  104. package/content/plugins/schema/createReadResolvers.js +55 -0
  105. package/content/plugins/schema/createReadSDL.d.ts +9 -0
  106. package/content/plugins/schema/createReadSDL.js +96 -0
  107. package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +6 -0
  108. package/content/plugins/schema/resolvers/commonFieldResolvers.js +14 -0
  109. package/content/plugins/schema/resolvers/manage/resolveCreate.d.ts +6 -0
  110. package/content/plugins/schema/resolvers/manage/resolveCreate.js +23 -0
  111. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.d.ts +7 -0
  112. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js +23 -0
  113. package/content/plugins/schema/resolvers/manage/resolveDelete.d.ts +2 -0
  114. package/content/plugins/schema/resolvers/manage/resolveDelete.js +30 -0
  115. package/content/plugins/schema/resolvers/manage/resolveGet.d.ts +2 -0
  116. package/content/plugins/schema/resolvers/manage/resolveGet.js +21 -0
  117. package/content/plugins/schema/resolvers/manage/resolveGetByIds.d.ts +2 -0
  118. package/content/plugins/schema/resolvers/manage/resolveGetByIds.js +23 -0
  119. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.d.ts +2 -0
  120. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js +23 -0
  121. package/content/plugins/schema/resolvers/manage/resolveList.d.ts +2 -0
  122. package/content/plugins/schema/resolvers/manage/resolveList.js +23 -0
  123. package/content/plugins/schema/resolvers/manage/resolvePublish.d.ts +2 -0
  124. package/content/plugins/schema/resolvers/manage/resolvePublish.js +21 -0
  125. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.d.ts +6 -0
  126. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js +23 -0
  127. package/content/plugins/schema/resolvers/manage/resolveRequestReview.d.ts +6 -0
  128. package/content/plugins/schema/resolvers/manage/resolveRequestReview.js +23 -0
  129. package/content/plugins/schema/resolvers/manage/resolveUnpublish.d.ts +2 -0
  130. package/content/plugins/schema/resolvers/manage/resolveUnpublish.js +21 -0
  131. package/content/plugins/schema/resolvers/manage/resolveUpdate.d.ts +7 -0
  132. package/content/plugins/schema/resolvers/manage/resolveUpdate.js +23 -0
  133. package/content/plugins/schema/resolvers/preview/resolveGet.d.ts +2 -0
  134. package/content/plugins/schema/resolvers/preview/resolveGet.js +38 -0
  135. package/content/plugins/schema/resolvers/preview/resolveList.d.ts +2 -0
  136. package/content/plugins/schema/resolvers/preview/resolveList.js +23 -0
  137. package/content/plugins/schema/resolvers/read/resolveGet.d.ts +2 -0
  138. package/content/plugins/schema/resolvers/read/resolveGet.js +38 -0
  139. package/content/plugins/schema/resolvers/read/resolveList.d.ts +2 -0
  140. package/content/plugins/schema/resolvers/read/resolveList.js +23 -0
  141. package/content/plugins/schema/schemaPlugins.d.ts +3 -0
  142. package/content/plugins/schema/schemaPlugins.js +92 -0
  143. package/content/plugins/storage/StorageTransformPlugin.d.ts +30 -0
  144. package/content/plugins/storage/StorageTransformPlugin.js +36 -0
  145. package/content/plugins/storage/default.d.ts +3 -0
  146. package/content/plugins/storage/default.js +28 -0
  147. package/content/plugins/storage/object.d.ts +3 -0
  148. package/content/plugins/storage/object.js +119 -0
  149. package/content/plugins/utils/createTypeName.d.ts +3 -0
  150. package/content/plugins/utils/createTypeName.js +28 -0
  151. package/content/plugins/utils/entryStorage.d.ts +17 -0
  152. package/content/plugins/utils/entryStorage.js +125 -0
  153. package/content/plugins/utils/getEntryTitle.d.ts +2 -0
  154. package/content/plugins/utils/getEntryTitle.js +42 -0
  155. package/content/plugins/utils/getSchemaFromFieldPlugins.d.ts +11 -0
  156. package/content/plugins/utils/getSchemaFromFieldPlugins.js +30 -0
  157. package/content/plugins/utils/pluralizedTypeName.d.ts +1 -0
  158. package/content/plugins/utils/pluralizedTypeName.js +26 -0
  159. package/content/plugins/utils/renderFields.d.ts +16 -0
  160. package/content/plugins/utils/renderFields.js +51 -0
  161. package/content/plugins/utils/renderGetFilterFields.d.ts +9 -0
  162. package/content/plugins/utils/renderGetFilterFields.js +41 -0
  163. package/content/plugins/utils/renderInputFields.d.ts +14 -0
  164. package/content/plugins/utils/renderInputFields.js +53 -0
  165. package/content/plugins/utils/renderListFilterFields.d.ts +10 -0
  166. package/content/plugins/utils/renderListFilterFields.js +39 -0
  167. package/content/plugins/utils/renderSortEnum.d.ts +9 -0
  168. package/content/plugins/utils/renderSortEnum.js +32 -0
  169. package/content/plugins/validators/dateGte.d.ts +3 -0
  170. package/content/plugins/validators/dateGte.js +37 -0
  171. package/content/plugins/validators/dateLte.d.ts +3 -0
  172. package/content/plugins/validators/dateLte.js +37 -0
  173. package/content/plugins/validators/gte.d.ts +3 -0
  174. package/content/plugins/validators/gte.js +32 -0
  175. package/content/plugins/validators/in.d.ts +3 -0
  176. package/content/plugins/validators/in.js +32 -0
  177. package/content/plugins/validators/index.d.ts +2 -0
  178. package/content/plugins/validators/index.js +36 -0
  179. package/content/plugins/validators/lte.d.ts +3 -0
  180. package/content/plugins/validators/lte.js +32 -0
  181. package/content/plugins/validators/maxLength.d.ts +3 -0
  182. package/content/plugins/validators/maxLength.js +32 -0
  183. package/content/plugins/validators/minLength.d.ts +3 -0
  184. package/content/plugins/validators/minLength.js +32 -0
  185. package/content/plugins/validators/pattern.d.ts +3 -0
  186. package/content/plugins/validators/pattern.js +47 -0
  187. package/content/plugins/validators/patternPlugins/email.d.ts +3 -0
  188. package/content/plugins/validators/patternPlugins/email.js +17 -0
  189. package/content/plugins/validators/patternPlugins/index.d.ts +2 -0
  190. package/content/plugins/validators/patternPlugins/index.js +19 -0
  191. package/content/plugins/validators/patternPlugins/lowerCase.d.ts +3 -0
  192. package/content/plugins/validators/patternPlugins/lowerCase.js +17 -0
  193. package/content/plugins/validators/patternPlugins/upperCase.d.ts +3 -0
  194. package/content/plugins/validators/patternPlugins/upperCase.js +17 -0
  195. package/content/plugins/validators/patternPlugins/url.d.ts +3 -0
  196. package/content/plugins/validators/patternPlugins/url.js +17 -0
  197. package/content/plugins/validators/required.d.ts +3 -0
  198. package/content/plugins/validators/required.js +25 -0
  199. package/content/plugins/validators/timeGte.d.ts +3 -0
  200. package/content/plugins/validators/timeGte.js +32 -0
  201. package/content/plugins/validators/timeLte.d.ts +3 -0
  202. package/content/plugins/validators/timeLte.js +32 -0
  203. package/index.d.ts +12 -0
  204. package/index.js +66 -0
  205. package/migrateCMSPermissions.d.ts +17 -0
  206. package/migrateCMSPermissions.js +193 -0
  207. package/package.json +80 -0
  208. package/plugins/context.d.ts +4 -0
  209. package/plugins/context.js +34 -0
  210. package/plugins/crud/index.d.ts +6 -0
  211. package/plugins/crud/index.js +100 -0
  212. package/plugins/crud/settings.crud.d.ts +10 -0
  213. package/plugins/crud/settings.crud.js +93 -0
  214. package/plugins/crud/system.crud.d.ts +10 -0
  215. package/plugins/crud/system.crud.js +182 -0
  216. package/plugins/graphql/system.d.ts +17 -0
  217. package/plugins/graphql/system.js +72 -0
  218. package/plugins/graphql.d.ts +2 -0
  219. package/plugins/graphql.js +79 -0
  220. package/plugins/upgrades/index.d.ts +2 -0
  221. package/plugins/upgrades/index.js +14 -0
  222. package/plugins/upgrades/v5.5.0/helpers.d.ts +6 -0
  223. package/plugins/upgrades/v5.5.0/helpers.js +10 -0
  224. package/plugins/upgrades/v5.5.0/index.d.ts +4 -0
  225. package/plugins/upgrades/v5.5.0/index.js +129 -0
  226. package/transformers.d.ts +2 -0
  227. package/transformers.js +25 -0
  228. package/types.d.ts +2149 -0
  229. package/types.js +366 -0
  230. package/utils.d.ts +25 -0
  231. package/utils.js +251 -0
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _handlerGraphql = require("@webiny/handler-graphql");
9
+
10
+ var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
11
+
12
+ var _CmsModelPlugin = require("../CmsModelPlugin");
13
+
14
+ const plugin = context => {
15
+ const resolvers = {
16
+ Query: {
17
+ getContentModel: async (_, args, context) => {
18
+ try {
19
+ const model = await context.cms.getModel(args.modelId);
20
+ return new _handlerGraphql.Response(model);
21
+ } catch (e) {
22
+ return new _handlerGraphql.ErrorResponse(e);
23
+ }
24
+ },
25
+ listContentModels: async (_, __, context) => {
26
+ try {
27
+ const model = await context.cms.listModels();
28
+ return new _handlerGraphql.Response(model);
29
+ } catch (e) {
30
+ return new _handlerGraphql.ErrorResponse(e);
31
+ }
32
+ }
33
+ },
34
+ CmsContentModel: {
35
+ plugin: async (model, _, context) => {
36
+ const modelPlugin = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type).find(item => item.contentModel.modelId === model.modelId);
37
+ return Boolean(modelPlugin);
38
+ }
39
+ }
40
+ };
41
+ let manageSchema = "";
42
+
43
+ if (context.cms.MANAGE) {
44
+ resolvers.Mutation = {
45
+ createContentModel: async (_, args, context) => {
46
+ try {
47
+ const model = await context.cms.createModel(args.data);
48
+ return new _handlerGraphql.Response(model);
49
+ } catch (e) {
50
+ return new _handlerGraphql.ErrorResponse(e);
51
+ }
52
+ },
53
+ updateContentModel: async (_, args, context) => {
54
+ const {
55
+ modelId,
56
+ data
57
+ } = args;
58
+
59
+ try {
60
+ const model = await context.cms.updateModel(modelId, data);
61
+ return new _handlerGraphql.Response(model);
62
+ } catch (e) {
63
+ return new _handlerGraphql.ErrorResponse(e);
64
+ }
65
+ },
66
+ deleteContentModel: async (_, args, context) => {
67
+ const {
68
+ modelId
69
+ } = args;
70
+
71
+ try {
72
+ await context.cms.deleteModel(modelId);
73
+ return new _handlerGraphql.Response(true);
74
+ } catch (e) {
75
+ return new _handlerGraphql.ErrorResponse(e);
76
+ }
77
+ }
78
+ };
79
+ manageSchema =
80
+ /* GraphQL */
81
+ `
82
+ input CmsPredefinedValueInput {
83
+ label: String!
84
+ value: String!
85
+ }
86
+
87
+ input CmsPredefinedValuesInput {
88
+ enabled: Boolean
89
+ values: [CmsPredefinedValueInput]
90
+ }
91
+ input CmsFieldRendererInput {
92
+ name: String
93
+ }
94
+
95
+ input CmsFieldValidationInput {
96
+ name: String!
97
+ message: String
98
+ settings: JSON
99
+ }
100
+
101
+ input CmsContentModelFieldInput {
102
+ id: ID!
103
+ label: String!
104
+ helpText: String
105
+ placeholderText: String
106
+ fieldId: String!
107
+ type: String!
108
+ multipleValues: Boolean
109
+ predefinedValues: CmsPredefinedValuesInput
110
+ renderer: CmsFieldRendererInput
111
+ validation: [CmsFieldValidationInput]
112
+ listValidation: [CmsFieldValidationInput]
113
+ settings: JSON
114
+ }
115
+
116
+ input CmsContentModelCreateInput {
117
+ name: String!
118
+ modelId: String
119
+ group: RefInput!
120
+ description: String
121
+ }
122
+
123
+ input CmsContentModelUpdateInput {
124
+ name: String
125
+ group: RefInput
126
+ description: String
127
+ layout: [[ID!]!]!
128
+ fields: [CmsContentModelFieldInput!]!
129
+ titleFieldId: String
130
+ }
131
+
132
+ extend type Mutation {
133
+ createContentModel(data: CmsContentModelCreateInput!): CmsContentModelResponse
134
+
135
+ updateContentModel(
136
+ modelId: ID!
137
+ data: CmsContentModelUpdateInput!
138
+ ): CmsContentModelResponse
139
+
140
+ deleteContentModel(modelId: ID!): CmsDeleteResponse
141
+ }
142
+ `;
143
+ }
144
+
145
+ return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
146
+ typeDefs:
147
+ /* GraphQL */
148
+ `
149
+ type CmsFieldValidation {
150
+ name: String!
151
+ message: String
152
+ settings: JSON
153
+ }
154
+
155
+ type CmsFieldRenderer {
156
+ name: String
157
+ }
158
+
159
+ type CmsPredefinedValue {
160
+ label: String
161
+ value: String
162
+ }
163
+
164
+ type CmsPredefinedValues {
165
+ enabled: Boolean
166
+ values: [CmsPredefinedValue]
167
+ }
168
+
169
+ type CmsContentModelField {
170
+ id: ID!
171
+ fieldId: String!
172
+ label: String!
173
+ helpText: String
174
+ placeholderText: String
175
+ type: String!
176
+ multipleValues: Boolean
177
+ predefinedValues: CmsPredefinedValues
178
+ renderer: CmsFieldRenderer
179
+ validation: [CmsFieldValidation!]
180
+ listValidation: [CmsFieldValidation!]
181
+ settings: JSON
182
+ }
183
+
184
+ type CmsContentModel {
185
+ name: String!
186
+ modelId: String!
187
+ description: String
188
+ group: CmsContentModelGroup!
189
+ createdOn: DateTime
190
+ savedOn: DateTime
191
+ createdBy: CmsCreatedBy
192
+ fields: [CmsContentModelField!]!
193
+ lockedFields: [JSON]
194
+ layout: [[String!]!]!
195
+ titleFieldId: String
196
+
197
+ # Returns true if the content model is registered via a plugin.
198
+ plugin: Boolean!
199
+ }
200
+
201
+ type CmsContentModelResponse {
202
+ data: CmsContentModel
203
+ error: CmsError
204
+ }
205
+
206
+ type CmsContentModelListResponse {
207
+ data: [CmsContentModel]
208
+ meta: CmsListMeta
209
+ error: CmsError
210
+ }
211
+
212
+ extend type Query {
213
+ getContentModel(modelId: ID!, where: JSON, sort: String): CmsContentModelResponse
214
+
215
+ listContentModels: CmsContentModelListResponse
216
+ }
217
+
218
+ ${manageSchema}
219
+ `,
220
+ resolvers
221
+ });
222
+ };
223
+
224
+ var _default = plugin;
225
+ exports.default = _default;
@@ -0,0 +1,19 @@
1
+ import { CmsModelField } from "../../../types";
2
+ import { Resolvers } from "@webiny/handler-graphql/types";
3
+ interface CreateFieldResolvers {
4
+ graphQLType: string;
5
+ fields: CmsModelField[];
6
+ isRoot: boolean;
7
+ extraResolvers?: Resolvers<any>;
8
+ }
9
+ /**
10
+ * We use a factory to avoid passing the parameters for recursive invocations.
11
+ * This way they will always be in the function scope and we can only pass "fields".
12
+ */
13
+ export declare function createFieldResolversFactory({ endpointType, models, model, fieldTypePlugins }: {
14
+ endpointType: any;
15
+ models: any;
16
+ model: any;
17
+ fieldTypePlugins: any;
18
+ }): (params: CreateFieldResolvers) => {};
19
+ export {};
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createFieldResolversFactory = createFieldResolversFactory;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _get = _interopRequireDefault(require("lodash/get"));
13
+
14
+ var _set = _interopRequireDefault(require("lodash/set"));
15
+
16
+ var _entryStorage = require("../utils/entryStorage");
17
+
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
+
22
+ /**
23
+ * We use a factory to avoid passing the parameters for recursive invocations.
24
+ * This way they will always be in the function scope and we can only pass "fields".
25
+ */
26
+ function createFieldResolversFactory({
27
+ endpointType,
28
+ models,
29
+ model,
30
+ fieldTypePlugins
31
+ }) {
32
+ return function createFieldResolvers(params) {
33
+ const {
34
+ graphQLType,
35
+ fields,
36
+ isRoot = false,
37
+ extraResolvers = {}
38
+ } = params;
39
+
40
+ const fieldResolvers = _objectSpread({}, extraResolvers);
41
+
42
+ const typeResolvers = {};
43
+
44
+ for (const field of fields) {
45
+ if (!fieldTypePlugins[field.type]) {
46
+ continue;
47
+ }
48
+
49
+ const createResolver = (0, _get.default)(fieldTypePlugins, `${field.type}.${endpointType}.createResolver`);
50
+ let resolver;
51
+ const fieldResolver = createResolver ? createResolver({
52
+ graphQLType,
53
+ models,
54
+ model,
55
+ field,
56
+ createFieldResolvers
57
+ }) : null;
58
+
59
+ if (typeof fieldResolver === "function") {
60
+ resolver = fieldResolver;
61
+ } else if (fieldResolver !== null) {
62
+ resolver = fieldResolver.resolver;
63
+ Object.assign(typeResolvers, fieldResolver.typeResolvers);
64
+ }
65
+
66
+ const {
67
+ fieldId
68
+ } = field;
69
+
70
+ fieldResolvers[fieldId] = async (parent, args, context, info) => {
71
+ // Get transformed value (eg. data decompression)
72
+ const transformedValue = await (0, _entryStorage.entryFieldFromStorageTransform)({
73
+ context,
74
+ model,
75
+ field,
76
+ value: isRoot ? parent.values[fieldId] : parent[fieldId]
77
+ });
78
+ (0, _set.default)(isRoot ? parent.values : parent, fieldId, transformedValue);
79
+
80
+ if (!resolver) {
81
+ return isRoot ? parent.values[fieldId] : parent[fieldId];
82
+ }
83
+
84
+ return await resolver(isRoot ? parent.values : parent, args, context, info);
85
+ };
86
+ }
87
+
88
+ return _objectSpread({
89
+ [graphQLType]: fieldResolvers
90
+ }, typeResolvers);
91
+ };
92
+ }
@@ -0,0 +1,11 @@
1
+ import { CmsModel, CmsFieldTypePlugins, CmsContext } from "../../../types";
2
+ interface CreateManageResolvers {
3
+ (params: {
4
+ models: CmsModel[];
5
+ model: CmsModel;
6
+ context: CmsContext;
7
+ fieldTypePlugins: CmsFieldTypePlugins;
8
+ }): any;
9
+ }
10
+ export declare const createManageResolvers: CreateManageResolvers;
11
+ export {};
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createManageResolvers = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _commonFieldResolvers = require("./resolvers/commonFieldResolvers");
13
+
14
+ var _resolveGet = require("./resolvers/manage/resolveGet");
15
+
16
+ var _resolveList = require("./resolvers/manage/resolveList");
17
+
18
+ var _resolveGetRevisions = require("./resolvers/manage/resolveGetRevisions");
19
+
20
+ var _resolveGetByIds = require("./resolvers/manage/resolveGetByIds");
21
+
22
+ var _resolveCreate = require("./resolvers/manage/resolveCreate");
23
+
24
+ var _resolveUpdate = require("./resolvers/manage/resolveUpdate");
25
+
26
+ var _resolveRequestReview = require("./resolvers/manage/resolveRequestReview");
27
+
28
+ var _resolveRequestChanges = require("./resolvers/manage/resolveRequestChanges");
29
+
30
+ var _resolveDelete = require("./resolvers/manage/resolveDelete");
31
+
32
+ var _resolvePublish = require("./resolvers/manage/resolvePublish");
33
+
34
+ var _resolveUnpublish = require("./resolvers/manage/resolveUnpublish");
35
+
36
+ var _resolveCreateFrom = require("./resolvers/manage/resolveCreateFrom");
37
+
38
+ var _createFieldResolvers = require("./createFieldResolvers");
39
+
40
+ var _createTypeName = require("../utils/createTypeName");
41
+
42
+ var _pluralizedTypeName = require("../utils/pluralizedTypeName");
43
+
44
+ var _getEntryTitle = require("../utils/getEntryTitle");
45
+
46
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
47
+
48
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
49
+
50
+ const createManageResolvers = ({
51
+ models,
52
+ model,
53
+ fieldTypePlugins
54
+ }) => {
55
+ const typeName = (0, _createTypeName.createTypeName)(model.modelId);
56
+ const mTypeName = (0, _createTypeName.createManageTypeName)(typeName);
57
+ const createFieldResolvers = (0, _createFieldResolvers.createFieldResolversFactory)({
58
+ endpointType: "manage",
59
+ models,
60
+ model,
61
+ fieldTypePlugins
62
+ });
63
+ return _objectSpread(_objectSpread({
64
+ Query: {
65
+ [`get${typeName}`]: (0, _resolveGet.resolveGet)({
66
+ model
67
+ }),
68
+ [`get${typeName}Revisions`]: (0, _resolveGetRevisions.resolveGetRevisions)({
69
+ model
70
+ }),
71
+ [`get${(0, _pluralizedTypeName.pluralizedTypeName)(typeName)}ByIds`]: (0, _resolveGetByIds.resolveGetByIds)({
72
+ model
73
+ }),
74
+ [`list${(0, _pluralizedTypeName.pluralizedTypeName)(typeName)}`]: (0, _resolveList.resolveList)({
75
+ model
76
+ })
77
+ },
78
+ Mutation: {
79
+ [`create${typeName}`]: (0, _resolveCreate.resolveCreate)({
80
+ model
81
+ }),
82
+ [`update${typeName}`]: (0, _resolveUpdate.resolveUpdate)({
83
+ model
84
+ }),
85
+ [`delete${typeName}`]: (0, _resolveDelete.resolveDelete)({
86
+ model
87
+ }),
88
+ [`publish${typeName}`]: (0, _resolvePublish.resolvePublish)({
89
+ model
90
+ }),
91
+ [`unpublish${typeName}`]: (0, _resolveUnpublish.resolveUnpublish)({
92
+ model
93
+ }),
94
+ [`create${typeName}From`]: (0, _resolveCreateFrom.resolveCreateFrom)({
95
+ model
96
+ }),
97
+ [`request${typeName}Review`]: (0, _resolveRequestReview.resolveRequestReview)({
98
+ model
99
+ }),
100
+ [`request${typeName}Changes`]: (0, _resolveRequestChanges.resolveRequestChanges)({
101
+ model
102
+ })
103
+ }
104
+ }, createFieldResolvers({
105
+ graphQLType: mTypeName,
106
+ fields: model.fields,
107
+ isRoot: true,
108
+ // These are extra fields we want to apply to field resolvers of "gqlType"
109
+ extraResolvers: _objectSpread(_objectSpread({}, (0, _commonFieldResolvers.commonFieldResolvers)()), {}, {
110
+ meta(entry) {
111
+ return entry;
112
+ }
113
+
114
+ })
115
+ })), {}, {
116
+ [`${mTypeName}Meta`]: {
117
+ title(entry) {
118
+ return (0, _getEntryTitle.getEntryTitle)(model, entry);
119
+ },
120
+
121
+ status(entry) {
122
+ return entry.status;
123
+ },
124
+
125
+ async revisions(entry, _, context) {
126
+ const entryId = entry.id.split("#")[0];
127
+ const revisions = await context.cms.getEntryRevisions(model, entryId);
128
+ return revisions.sort((a, b) => b.version - a.version);
129
+ }
130
+
131
+ }
132
+ });
133
+ };
134
+
135
+ exports.createManageResolvers = createManageResolvers;
@@ -0,0 +1,9 @@
1
+ import { CmsFieldTypePlugins, CmsModel } from "../../../types";
2
+ interface CreateManageSDL {
3
+ (params: {
4
+ model: CmsModel;
5
+ fieldTypePlugins: CmsFieldTypePlugins;
6
+ }): string;
7
+ }
8
+ export declare const createManageSDL: CreateManageSDL;
9
+ export {};
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createManageSDL = void 0;
7
+
8
+ var _createTypeName = require("../utils/createTypeName");
9
+
10
+ var _renderListFilterFields = require("../utils/renderListFilterFields");
11
+
12
+ var _renderSortEnum = require("../utils/renderSortEnum");
13
+
14
+ var _renderGetFilterFields = require("../utils/renderGetFilterFields");
15
+
16
+ var _renderInputFields = require("../utils/renderInputFields");
17
+
18
+ var _renderFields = require("../utils/renderFields");
19
+
20
+ var _pluralizedTypeName = require("../utils/pluralizedTypeName");
21
+
22
+ const createManageSDL = ({
23
+ model,
24
+ fieldTypePlugins
25
+ }) => {
26
+ const typeName = (0, _createTypeName.createTypeName)(model.modelId);
27
+ const mTypeName = (0, _createTypeName.createManageTypeName)(typeName);
28
+ const listFilterFieldsRender = (0, _renderListFilterFields.renderListFilterFields)({
29
+ model,
30
+ type: "manage",
31
+ fieldTypePlugins
32
+ });
33
+ const sortEnumRender = (0, _renderSortEnum.renderSortEnum)({
34
+ model,
35
+ fieldTypePlugins
36
+ });
37
+ const getFilterFieldsRender = (0, _renderGetFilterFields.renderGetFilterFields)({
38
+ model,
39
+ fieldTypePlugins
40
+ });
41
+ const inputFields = (0, _renderInputFields.renderInputFields)({
42
+ model,
43
+ fieldTypePlugins
44
+ });
45
+ const fields = (0, _renderFields.renderFields)({
46
+ model,
47
+ type: "manage",
48
+ fieldTypePlugins
49
+ });
50
+ return (
51
+ /* GraphQL */
52
+ `
53
+ """${model.description}"""
54
+ ${fields.map(f => f.typeDefs).filter(Boolean).join("\n")}
55
+
56
+ type ${mTypeName} {
57
+ id: ID!
58
+ entryId: String!
59
+ createdOn: DateTime!
60
+ savedOn: DateTime!
61
+ createdBy: CmsCreatedBy!
62
+ ownedBy: CmsOwnedBy!
63
+ meta: ${mTypeName}Meta
64
+ ${fields.map(f => f.fields).join("\n")}
65
+ }
66
+
67
+ type ${mTypeName}Meta {
68
+ modelId: String
69
+ version: Int
70
+ locked: Boolean
71
+ publishedOn: DateTime
72
+ status: String
73
+ """
74
+ CAUTION: this field is resolved by making an extra query to DB.
75
+ RECOMMENDATION: Use it only with "get" queries (avoid in "list")
76
+ """
77
+ revisions: [${mTypeName}]
78
+ title: String
79
+ }
80
+
81
+
82
+ ${inputFields.map(f => f.typeDefs).filter(Boolean).join("\n")}
83
+
84
+ ${inputFields && `input ${mTypeName}Input {
85
+ ${inputFields.map(f => f.fields).join("\n")}
86
+ }`}
87
+
88
+ ${getFilterFieldsRender && `input ${mTypeName}GetWhereInput {
89
+ ${getFilterFieldsRender}
90
+ }`}
91
+
92
+
93
+ ${listFilterFieldsRender && `input ${mTypeName}ListWhereInput {
94
+ ${listFilterFieldsRender}
95
+ }`}
96
+
97
+ type ${mTypeName}Response {
98
+ data: ${mTypeName}
99
+ error: CmsError
100
+ }
101
+
102
+ type ${mTypeName}ArrayResponse {
103
+ data: [${mTypeName}]
104
+ error: CmsError
105
+ }
106
+
107
+ type ${mTypeName}ListResponse {
108
+ data: [${mTypeName}]
109
+ meta: CmsListMeta
110
+ error: CmsError
111
+ }
112
+
113
+ ${sortEnumRender && `enum ${mTypeName}ListSorter {
114
+ ${sortEnumRender}
115
+ }`}
116
+
117
+ extend type Query {
118
+ get${typeName}(revision: ID!): ${mTypeName}Response
119
+
120
+ get${typeName}Revisions(id: ID!): ${mTypeName}ArrayResponse
121
+
122
+ get${(0, _pluralizedTypeName.pluralizedTypeName)(typeName)}ByIds(revisions: [ID!]!): ${mTypeName}ArrayResponse
123
+
124
+ list${(0, _pluralizedTypeName.pluralizedTypeName)(typeName)}(
125
+ where: ${mTypeName}ListWhereInput
126
+ sort: [${mTypeName}ListSorter]
127
+ limit: Int
128
+ after: String
129
+ ): ${mTypeName}ListResponse
130
+ }
131
+
132
+ extend type Mutation{
133
+ create${typeName}(data: ${mTypeName}Input!): ${mTypeName}Response
134
+
135
+ create${typeName}From(revision: ID!, data: ${mTypeName}Input): ${mTypeName}Response
136
+
137
+ update${typeName}(revision: ID!, data: ${mTypeName}Input!): ${mTypeName}Response
138
+
139
+ delete${typeName}(revision: ID!): CmsDeleteResponse
140
+
141
+ publish${typeName}(revision: ID!): ${mTypeName}Response
142
+
143
+ unpublish${typeName}(revision: ID!): ${mTypeName}Response
144
+
145
+ request${typeName}Review(revision: ID!): ${mTypeName}Response
146
+
147
+ request${typeName}Changes(revision: ID!): ${mTypeName}Response
148
+ }
149
+ `
150
+ );
151
+ };
152
+
153
+ exports.createManageSDL = createManageSDL;
@@ -0,0 +1,10 @@
1
+ import { CmsModel, CmsFieldTypePlugins, CmsContext } from "../../../types";
2
+ export interface CreateReadResolvers {
3
+ (params: {
4
+ models: CmsModel[];
5
+ model: CmsModel;
6
+ context: CmsContext;
7
+ fieldTypePlugins: CmsFieldTypePlugins;
8
+ }): any;
9
+ }
10
+ export declare const createPreviewResolvers: CreateReadResolvers;