@webiny/api-headless-cms 0.0.0-unstable.df7a8bb475 → 0.0.0-unstable.e2758ee1cf

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 (204) hide show
  1. package/constants.d.ts +2 -1
  2. package/constants.js +4 -0
  3. package/constants.js.map +1 -1
  4. package/crud/contentEntry/entryDataFactories/createEntryData.js +4 -3
  5. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
  6. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +4 -3
  7. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
  8. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +4 -1
  9. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -1
  10. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +4 -1
  11. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -1
  12. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +2 -1
  13. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -1
  14. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +4 -3
  15. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -1
  16. package/crud/contentEntry/entryDataFactories/system.d.ts +10 -0
  17. package/crud/contentEntry/entryDataFactories/system.js +14 -0
  18. package/crud/contentEntry/entryDataFactories/system.js.map +1 -0
  19. package/crud/contentEntry/searchableFields.js +6 -2
  20. package/crud/contentEntry/searchableFields.js.map +1 -1
  21. package/crud/contentModel/validation.d.ts +9 -9
  22. package/crud/contentModel/validation.js +3 -3
  23. package/crud/contentModel/validation.js.map +1 -1
  24. package/domain/contentModel/errors.d.ts +1 -1
  25. package/domain/contentModel/errors.js.map +1 -1
  26. package/domain/contentModel/schemas.d.ts +126 -8
  27. package/domain/contentModel/schemas.js +12 -13
  28. package/domain/contentModel/schemas.js.map +1 -1
  29. package/export/graphql/index.js +1 -1
  30. package/export/graphql/index.js.map +1 -1
  31. package/exports/api/cms/model.d.ts +1 -0
  32. package/exports/api/cms/model.js.map +1 -1
  33. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.d.ts +2 -2
  34. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +3 -4
  35. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
  36. package/features/contentModel/CreateModel/CreateModelRepository.js +4 -1
  37. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  38. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +12 -3
  39. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  40. package/features/contentModel/UpdateModel/UpdateModelRepository.js +8 -2
  41. package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
  42. package/features/contentModel/UpdateModel/UpdateModelUseCase.js +4 -1
  43. package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
  44. package/features/modelBuilder/feature.js +6 -0
  45. package/features/modelBuilder/feature.js.map +1 -1
  46. package/features/modelBuilder/fields/BaseFieldBuilder.d.ts +36 -0
  47. package/features/modelBuilder/fields/BaseFieldBuilder.js +41 -0
  48. package/features/modelBuilder/fields/BaseFieldBuilder.js.map +1 -0
  49. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +228 -0
  50. package/features/modelBuilder/fields/DataFieldBuilder.js +219 -0
  51. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -0
  52. package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +2 -2
  53. package/features/modelBuilder/fields/DynamicZoneFieldType.js +10 -3
  54. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  55. package/features/modelBuilder/fields/FieldBuilder.d.ts +5 -50
  56. package/features/modelBuilder/fields/FieldBuilder.js +3 -165
  57. package/features/modelBuilder/fields/FieldBuilder.js.map +1 -1
  58. package/features/modelBuilder/fields/FieldBuilderRegistry.js +11 -1
  59. package/features/modelBuilder/fields/FieldBuilderRegistry.js.map +1 -1
  60. package/features/modelBuilder/fields/LayoutFieldBuilder.d.ts +7 -0
  61. package/features/modelBuilder/fields/LayoutFieldBuilder.js +9 -0
  62. package/features/modelBuilder/fields/LayoutFieldBuilder.js.map +1 -0
  63. package/features/modelBuilder/fields/ObjectFieldType.d.ts +4 -3
  64. package/features/modelBuilder/fields/ObjectFieldType.js +19 -4
  65. package/features/modelBuilder/fields/ObjectFieldType.js.map +1 -1
  66. package/features/modelBuilder/fields/UiAlertFieldType.d.ts +19 -0
  67. package/features/modelBuilder/fields/UiAlertFieldType.js +36 -0
  68. package/features/modelBuilder/fields/UiAlertFieldType.js.map +1 -0
  69. package/features/modelBuilder/fields/UiSeparatorFieldType.d.ts +17 -0
  70. package/features/modelBuilder/fields/UiSeparatorFieldType.js +31 -0
  71. package/features/modelBuilder/fields/UiSeparatorFieldType.js.map +1 -0
  72. package/features/modelBuilder/fields/UiTabsFieldType.d.ts +28 -0
  73. package/features/modelBuilder/fields/UiTabsFieldType.js +75 -0
  74. package/features/modelBuilder/fields/UiTabsFieldType.js.map +1 -0
  75. package/features/modelBuilder/fields/abstractions.d.ts +2 -2
  76. package/features/modelBuilder/fields/abstractions.js.map +1 -1
  77. package/features/modelBuilder/index.d.ts +3 -0
  78. package/features/modelBuilder/index.js +3 -0
  79. package/features/modelBuilder/index.js.map +1 -1
  80. package/features/modelBuilder/models/BaseModelBuilder.d.ts +9 -4
  81. package/features/modelBuilder/models/BaseModelBuilder.js +19 -0
  82. package/features/modelBuilder/models/BaseModelBuilder.js.map +1 -1
  83. package/features/modelBuilder/models/PrivateModelBuilder.js +4 -2
  84. package/features/modelBuilder/models/PrivateModelBuilder.js.map +1 -1
  85. package/features/modelBuilder/models/PublicModelBuilder.js +16 -4
  86. package/features/modelBuilder/models/PublicModelBuilder.js.map +1 -1
  87. package/graphql/index.js +2 -1
  88. package/graphql/index.js.map +1 -1
  89. package/graphql/schema/baseSchema.js +17 -15
  90. package/graphql/schema/baseSchema.js.map +1 -1
  91. package/graphql/schema/cms/createEntryResolver.d.ts +10 -0
  92. package/graphql/schema/cms/createEntryResolver.js +56 -0
  93. package/graphql/schema/cms/createEntryResolver.js.map +1 -0
  94. package/graphql/schema/cms/deleteEntryResolver.d.ts +10 -0
  95. package/graphql/schema/cms/deleteEntryResolver.js +56 -0
  96. package/graphql/schema/cms/deleteEntryResolver.js.map +1 -0
  97. package/graphql/schema/cms/getEntryResolver.d.ts +11 -0
  98. package/graphql/schema/cms/getEntryResolver.js +58 -0
  99. package/graphql/schema/cms/getEntryResolver.js.map +1 -0
  100. package/graphql/schema/cms/helpers/buildFieldsSelection.d.ts +23 -0
  101. package/graphql/schema/cms/helpers/buildFieldsSelection.js +79 -0
  102. package/graphql/schema/cms/helpers/buildFieldsSelection.js.map +1 -0
  103. package/graphql/schema/cms/helpers/getErrorMessage.d.ts +4 -0
  104. package/graphql/schema/cms/helpers/getErrorMessage.js +14 -0
  105. package/graphql/schema/cms/helpers/getErrorMessage.js.map +1 -0
  106. package/graphql/schema/cms/helpers/getModel.d.ts +6 -0
  107. package/graphql/schema/cms/helpers/getModel.js +12 -0
  108. package/graphql/schema/cms/helpers/getModel.js.map +1 -0
  109. package/graphql/schema/cms/helpers/index.d.ts +5 -0
  110. package/graphql/schema/cms/helpers/index.js +7 -0
  111. package/graphql/schema/cms/helpers/index.js.map +1 -0
  112. package/graphql/schema/cms/helpers/transformSortToArray.d.ts +18 -0
  113. package/graphql/schema/cms/helpers/transformSortToArray.js +38 -0
  114. package/graphql/schema/cms/helpers/transformSortToArray.js.map +1 -0
  115. package/graphql/schema/cms/helpers/transformWhereToNested.d.ts +17 -0
  116. package/graphql/schema/cms/helpers/transformWhereToNested.js +54 -0
  117. package/graphql/schema/cms/helpers/transformWhereToNested.js.map +1 -0
  118. package/graphql/schema/cms/helpers.d.ts +5 -0
  119. package/graphql/schema/cms/helpers.js +7 -0
  120. package/graphql/schema/cms/helpers.js.map +1 -0
  121. package/graphql/schema/cms/index.d.ts +2 -0
  122. package/graphql/schema/cms/index.js +26 -0
  123. package/graphql/schema/cms/index.js.map +1 -0
  124. package/graphql/schema/cms/listEntriesResolver.d.ts +14 -0
  125. package/graphql/schema/cms/listEntriesResolver.js +97 -0
  126. package/graphql/schema/cms/listEntriesResolver.js.map +1 -0
  127. package/graphql/schema/cms/publishEntryResolver.d.ts +10 -0
  128. package/graphql/schema/cms/publishEntryResolver.js +56 -0
  129. package/graphql/schema/cms/publishEntryResolver.js.map +1 -0
  130. package/graphql/schema/cms/resolvers/createEntry.d.ts +8 -0
  131. package/graphql/schema/cms/resolvers/createEntry.js +17 -0
  132. package/graphql/schema/cms/resolvers/createEntry.js.map +1 -0
  133. package/graphql/schema/cms/resolvers/deleteEntryRevision.d.ts +8 -0
  134. package/graphql/schema/cms/resolvers/deleteEntryRevision.js +17 -0
  135. package/graphql/schema/cms/resolvers/deleteEntryRevision.js.map +1 -0
  136. package/graphql/schema/cms/resolvers/getEntry.d.ts +8 -0
  137. package/graphql/schema/cms/resolvers/getEntry.js +17 -0
  138. package/graphql/schema/cms/resolvers/getEntry.js.map +1 -0
  139. package/graphql/schema/cms/resolvers/index.d.ts +9 -0
  140. package/graphql/schema/cms/resolvers/index.js +11 -0
  141. package/graphql/schema/cms/resolvers/index.js.map +1 -0
  142. package/graphql/schema/cms/resolvers/listEntries.d.ts +8 -0
  143. package/graphql/schema/cms/resolvers/listEntries.js +17 -0
  144. package/graphql/schema/cms/resolvers/listEntries.js.map +1 -0
  145. package/graphql/schema/cms/resolvers/mutationCms.d.ts +8 -0
  146. package/graphql/schema/cms/resolvers/mutationCms.js +24 -0
  147. package/graphql/schema/cms/resolvers/mutationCms.js.map +1 -0
  148. package/graphql/schema/cms/resolvers/publishEntryRevision.d.ts +8 -0
  149. package/graphql/schema/cms/resolvers/publishEntryRevision.js +17 -0
  150. package/graphql/schema/cms/resolvers/publishEntryRevision.js.map +1 -0
  151. package/graphql/schema/cms/resolvers/queryCms.d.ts +8 -0
  152. package/graphql/schema/cms/resolvers/queryCms.js +23 -0
  153. package/graphql/schema/cms/resolvers/queryCms.js.map +1 -0
  154. package/graphql/schema/cms/resolvers/unpublishEntryRevision.d.ts +8 -0
  155. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js +17 -0
  156. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js.map +1 -0
  157. package/graphql/schema/cms/resolvers/updateEntryRevision.d.ts +8 -0
  158. package/graphql/schema/cms/resolvers/updateEntryRevision.js +17 -0
  159. package/graphql/schema/cms/resolvers/updateEntryRevision.js.map +1 -0
  160. package/graphql/schema/cms/typeDefs/index.d.ts +3 -0
  161. package/graphql/schema/cms/typeDefs/index.js +5 -0
  162. package/graphql/schema/cms/typeDefs/index.js.map +1 -0
  163. package/graphql/schema/cms/typeDefs/mutation.d.ts +8 -0
  164. package/graphql/schema/cms/typeDefs/mutation.js +42 -0
  165. package/graphql/schema/cms/typeDefs/mutation.js.map +1 -0
  166. package/graphql/schema/cms/typeDefs/query.d.ts +8 -0
  167. package/graphql/schema/cms/typeDefs/query.js +35 -0
  168. package/graphql/schema/cms/typeDefs/query.js.map +1 -0
  169. package/graphql/schema/cms/typeDefs/responses.d.ts +8 -0
  170. package/graphql/schema/cms/typeDefs/responses.js +35 -0
  171. package/graphql/schema/cms/typeDefs/responses.js.map +1 -0
  172. package/graphql/schema/cms/unpublishEntryResolver.d.ts +10 -0
  173. package/graphql/schema/cms/unpublishEntryResolver.js +56 -0
  174. package/graphql/schema/cms/unpublishEntryResolver.js.map +1 -0
  175. package/graphql/schema/cms/updateEntryResolver.d.ts +11 -0
  176. package/graphql/schema/cms/updateEntryResolver.js +58 -0
  177. package/graphql/schema/cms/updateEntryResolver.js.map +1 -0
  178. package/graphql/schema/contentModels.js +21 -3
  179. package/graphql/schema/contentModels.js.map +1 -1
  180. package/graphql/schema/createManageSDL.js +4 -2
  181. package/graphql/schema/createManageSDL.js.map +1 -1
  182. package/graphqlFields/index.js.map +1 -1
  183. package/package.json +24 -23
  184. package/plugins/CmsModelPlugin.js +19 -4
  185. package/plugins/CmsModelPlugin.js.map +1 -1
  186. package/types/fields/objectField.d.ts +2 -0
  187. package/types/fields/objectField.js.map +1 -1
  188. package/types/model.d.ts +32 -3
  189. package/types/model.js.map +1 -1
  190. package/types/modelField.d.ts +19 -3
  191. package/types/modelField.js.map +1 -1
  192. package/types/types.d.ts +12 -9
  193. package/types/types.js.map +1 -1
  194. package/utils/createModelField.js +4 -2
  195. package/utils/createModelField.js.map +1 -1
  196. package/crud/contentEntry/entryDataFactories/state.d.ts +0 -10
  197. package/crud/contentEntry/entryDataFactories/state.js +0 -16
  198. package/crud/contentEntry/entryDataFactories/state.js.map +0 -1
  199. package/crud/contentModel/validateModel.d.ts +0 -9
  200. package/crud/contentModel/validateModel.js +0 -21
  201. package/crud/contentModel/validateModel.js.map +0 -1
  202. package/crud/contentModel/validateModelFields.d.ts +0 -9
  203. package/crud/contentModel/validateModelFields.js +0 -267
  204. package/crud/contentModel/validateModelFields.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.core.js";
2
+ declare class CmsQueryTypeDefs implements CoreGraphQLSchemaFactory.Interface {
3
+ execute(builder: CoreGraphQLSchemaFactory.SchemaBuilder): CoreGraphQLSchemaFactory.Return;
4
+ }
5
+ export declare const CmsQueryTypeDefsImpl: typeof CmsQueryTypeDefs & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public").IGraphQLSchemaFactory>;
7
+ };
8
+ export {};
@@ -0,0 +1,35 @@
1
+ import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.core.js";
2
+ class CmsQueryTypeDefs {
3
+ async execute(builder) {
4
+ builder.addTypeDefs(/* GraphQL */`
5
+ type CmsQuery {
6
+ getEntry(
7
+ modelId: ID!
8
+ where: JSON!
9
+ fields: [String!]!
10
+ preview: Boolean
11
+ ): CmsEntryResponse!
12
+ listEntries(
13
+ modelId: ID!
14
+ where: JSON
15
+ sort: JSON
16
+ limit: Int
17
+ after: String
18
+ fields: [String!]!
19
+ preview: Boolean
20
+ ): CmsListResponse!
21
+ }
22
+
23
+ extend type Query {
24
+ cms: CmsQuery!
25
+ }
26
+ `);
27
+ return builder;
28
+ }
29
+ }
30
+ export const CmsQueryTypeDefsImpl = CoreGraphQLSchemaFactory.createImplementation({
31
+ implementation: CmsQueryTypeDefs,
32
+ dependencies: []
33
+ });
34
+
35
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CoreGraphQLSchemaFactory","CmsQueryTypeDefs","execute","builder","addTypeDefs","CmsQueryTypeDefsImpl","createImplementation","implementation","dependencies"],"sources":["query.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.core.js\";\n\nclass CmsQueryTypeDefs implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): CoreGraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n type CmsQuery {\n getEntry(\n modelId: ID!\n where: JSON!\n fields: [String!]!\n preview: Boolean\n ): CmsEntryResponse!\n listEntries(\n modelId: ID!\n where: JSON\n sort: JSON\n limit: Int\n after: String\n fields: [String!]!\n preview: Boolean\n ): CmsListResponse!\n }\n\n extend type Query {\n cms: CmsQuery!\n }\n `);\n\n return builder;\n }\n}\n\nexport const CmsQueryTypeDefsImpl = CoreGraphQLSchemaFactory.createImplementation({\n implementation: CmsQueryTypeDefs,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,wBAAwB,QAAQ,sDAAsD;AAE/F,MAAMC,gBAAgB,CAA+C;EACjE,MAAMC,OAAOA,CACTC,OAA+C,EAChB;IAC/BA,OAAO,CAACC,WAAW,CAAC,aAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IAEF,OAAOD,OAAO;EAClB;AACJ;AAEA,OAAO,MAAME,oBAAoB,GAAGL,wBAAwB,CAACM,oBAAoB,CAAC;EAC9EC,cAAc,EAAEN,gBAAgB;EAChCO,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.core.js";
2
+ declare class CmsResponseTypeDefs implements CoreGraphQLSchemaFactory.Interface {
3
+ execute(builder: CoreGraphQLSchemaFactory.SchemaBuilder): CoreGraphQLSchemaFactory.Return;
4
+ }
5
+ export declare const CmsResponseTypeDefsImpl: typeof CmsResponseTypeDefs & {
6
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/handler-graphql/graphql/abstractions.public").IGraphQLSchemaFactory>;
7
+ };
8
+ export {};
@@ -0,0 +1,35 @@
1
+ import { CoreGraphQLSchemaFactory } from "@webiny/handler-graphql/graphql/abstractions.core.js";
2
+ class CmsResponseTypeDefs {
3
+ async execute(builder) {
4
+ builder.addTypeDefs(/* GraphQL */`
5
+ type CmsEntryResponse {
6
+ data: JSON
7
+ error: CmsError
8
+ }
9
+
10
+ type CmsListMeta {
11
+ cursor: String
12
+ hasMoreItems: Boolean
13
+ totalCount: Int
14
+ }
15
+
16
+ type CmsListResponse {
17
+ data: [JSON!]
18
+ meta: CmsListMeta
19
+ error: CmsError
20
+ }
21
+
22
+ type CmsDeleteResponse {
23
+ data: Boolean
24
+ error: CmsError
25
+ }
26
+ `);
27
+ return builder;
28
+ }
29
+ }
30
+ export const CmsResponseTypeDefsImpl = CoreGraphQLSchemaFactory.createImplementation({
31
+ implementation: CmsResponseTypeDefs,
32
+ dependencies: []
33
+ });
34
+
35
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CoreGraphQLSchemaFactory","CmsResponseTypeDefs","execute","builder","addTypeDefs","CmsResponseTypeDefsImpl","createImplementation","implementation","dependencies"],"sources":["responses.ts"],"sourcesContent":["import { CoreGraphQLSchemaFactory } from \"@webiny/handler-graphql/graphql/abstractions.core.js\";\n\nclass CmsResponseTypeDefs implements CoreGraphQLSchemaFactory.Interface {\n async execute(\n builder: CoreGraphQLSchemaFactory.SchemaBuilder\n ): CoreGraphQLSchemaFactory.Return {\n builder.addTypeDefs(/* GraphQL */ `\n type CmsEntryResponse {\n data: JSON\n error: CmsError\n }\n\n type CmsListMeta {\n cursor: String\n hasMoreItems: Boolean\n totalCount: Int\n }\n\n type CmsListResponse {\n data: [JSON!]\n meta: CmsListMeta\n error: CmsError\n }\n\n type CmsDeleteResponse {\n data: Boolean\n error: CmsError\n }\n `);\n\n return builder;\n }\n}\n\nexport const CmsResponseTypeDefsImpl = CoreGraphQLSchemaFactory.createImplementation({\n implementation: CmsResponseTypeDefs,\n dependencies: []\n});\n"],"mappings":"AAAA,SAASA,wBAAwB,QAAQ,sDAAsD;AAE/F,MAAMC,mBAAmB,CAA+C;EACpE,MAAMC,OAAOA,CACTC,OAA+C,EAChB;IAC/BA,OAAO,CAACC,WAAW,CAAC,aAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,CAAC;IAEF,OAAOD,OAAO;EAClB;AACJ;AAEA,OAAO,MAAME,uBAAuB,GAAGL,wBAAwB,CAACM,oBAAoB,CAAC;EACjFC,cAAc,EAAEN,mBAAmB;EACnCO,YAAY,EAAE;AAClB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import type { CmsContext } from "../../../types/index.js";
2
+ export interface UnpublishEntryRevisionArgs {
3
+ modelId: string;
4
+ revisionId: string;
5
+ fields: string[];
6
+ }
7
+ export declare const createUnpublishEntryRevisionResolver: () => ({ args, context }: {
8
+ args: UnpublishEntryRevisionArgs;
9
+ context: CmsContext;
10
+ }) => Promise<{}>;
@@ -0,0 +1,56 @@
1
+ import { getModel, getErrorMessage, buildFieldsSelection } from "./helpers.js";
2
+ export const createUnpublishEntryRevisionResolver = () => {
3
+ return async ({
4
+ args,
5
+ context
6
+ }) => {
7
+ const {
8
+ modelId,
9
+ revisionId,
10
+ fields
11
+ } = args;
12
+ try {
13
+ const model = await getModel(context, modelId);
14
+
15
+ // Use manage API for unpublishing entries.
16
+ const apiType = "manage";
17
+ const executeSchema = await context.cms.getExecutableSchema(apiType);
18
+ const fieldsSelection = buildFieldsSelection(fields);
19
+ const query = /* GraphQL */`
20
+ mutation Unpublish${model.singularApiName}($revisionId: ID!) {
21
+ unpublish${model.singularApiName}(revision: $revisionId) {
22
+ data {
23
+ ${fieldsSelection}
24
+ }
25
+ error {
26
+ message
27
+ code
28
+ data
29
+ }
30
+ }
31
+ }
32
+ `;
33
+ const result = await executeSchema({
34
+ query,
35
+ variables: {
36
+ revisionId
37
+ }
38
+ });
39
+ const operationName = `unpublish${model.singularApiName}`;
40
+ return result.data?.[operationName] || {
41
+ data: null,
42
+ error: null
43
+ };
44
+ } catch (error) {
45
+ return {
46
+ data: null,
47
+ error: {
48
+ message: getErrorMessage(error, "Failed to unpublish entry"),
49
+ code: "UNPUBLISH_ENTRY_ERROR"
50
+ }
51
+ };
52
+ }
53
+ };
54
+ };
55
+
56
+ //# sourceMappingURL=unpublishEntryResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getModel","getErrorMessage","buildFieldsSelection","createUnpublishEntryRevisionResolver","args","context","modelId","revisionId","fields","model","apiType","executeSchema","cms","getExecutableSchema","fieldsSelection","query","singularApiName","result","variables","operationName","data","error","message","code"],"sources":["unpublishEntryResolver.ts"],"sourcesContent":["import type { CmsContext } from \"~/types/index.js\";\nimport type { ApiEndpoint } from \"~/types/index.js\";\nimport type { ExecutionResult } from \"graphql\";\nimport { getModel, getErrorMessage, buildFieldsSelection } from \"./helpers.js\";\n\nexport interface UnpublishEntryRevisionArgs {\n modelId: string;\n revisionId: string;\n fields: string[];\n}\n\nexport const createUnpublishEntryRevisionResolver = () => {\n return async ({ args, context }: { args: UnpublishEntryRevisionArgs; context: CmsContext }) => {\n const { modelId, revisionId, fields } = args;\n\n try {\n const model = await getModel(context, modelId);\n\n // Use manage API for unpublishing entries.\n const apiType: ApiEndpoint = \"manage\";\n const executeSchema = await context.cms.getExecutableSchema(apiType);\n\n const fieldsSelection = buildFieldsSelection(fields);\n\n const query = /* GraphQL */ `\n mutation Unpublish${model.singularApiName}($revisionId: ID!) {\n unpublish${model.singularApiName}(revision: $revisionId) {\n data {\n ${fieldsSelection}\n }\n error {\n message\n code\n data\n }\n }\n }\n `;\n\n const result = (await executeSchema({\n query,\n variables: { revisionId }\n })) as ExecutionResult;\n\n const operationName = `unpublish${model.singularApiName}`;\n return result.data?.[operationName] || { data: null, error: null };\n } catch (error) {\n return {\n data: null,\n error: {\n message: getErrorMessage(error, \"Failed to unpublish entry\"),\n code: \"UNPUBLISH_ENTRY_ERROR\"\n }\n };\n }\n };\n};\n"],"mappings":"AAGA,SAASA,QAAQ,EAAEC,eAAe,EAAEC,oBAAoB;AAQxD,OAAO,MAAMC,oCAAoC,GAAGA,CAAA,KAAM;EACtD,OAAO,OAAO;IAAEC,IAAI;IAAEC;EAAmE,CAAC,KAAK;IAC3F,MAAM;MAAEC,OAAO;MAAEC,UAAU;MAAEC;IAAO,CAAC,GAAGJ,IAAI;IAE5C,IAAI;MACA,MAAMK,KAAK,GAAG,MAAMT,QAAQ,CAACK,OAAO,EAAEC,OAAO,CAAC;;MAE9C;MACA,MAAMI,OAAoB,GAAG,QAAQ;MACrC,MAAMC,aAAa,GAAG,MAAMN,OAAO,CAACO,GAAG,CAACC,mBAAmB,CAACH,OAAO,CAAC;MAEpE,MAAMI,eAAe,GAAGZ,oBAAoB,CAACM,MAAM,CAAC;MAEpD,MAAMO,KAAK,GAAG,aAAc;AACxC,oCAAoCN,KAAK,CAACO,eAAe;AACzD,+BAA+BP,KAAK,CAACO,eAAe;AACpD;AACA,8BAA8BF,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;MAED,MAAMG,MAAM,GAAI,MAAMN,aAAa,CAAC;QAChCI,KAAK;QACLG,SAAS,EAAE;UAAEX;QAAW;MAC5B,CAAC,CAAqB;MAEtB,MAAMY,aAAa,GAAG,YAAYV,KAAK,CAACO,eAAe,EAAE;MACzD,OAAOC,MAAM,CAACG,IAAI,GAAGD,aAAa,CAAC,IAAI;QAAEC,IAAI,EAAE,IAAI;QAAEC,KAAK,EAAE;MAAK,CAAC;IACtE,CAAC,CAAC,OAAOA,KAAK,EAAE;MACZ,OAAO;QACHD,IAAI,EAAE,IAAI;QACVC,KAAK,EAAE;UACHC,OAAO,EAAErB,eAAe,CAACoB,KAAK,EAAE,2BAA2B,CAAC;UAC5DE,IAAI,EAAE;QACV;MACJ,CAAC;IACL;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import type { CmsContext } from "../../../types/index.js";
2
+ export interface UpdateEntryRevisionArgs {
3
+ modelId: string;
4
+ revisionId: string;
5
+ data: Record<string, unknown>;
6
+ fields: string[];
7
+ }
8
+ export declare const createUpdateEntryRevisionResolver: () => ({ args, context }: {
9
+ args: UpdateEntryRevisionArgs;
10
+ context: CmsContext;
11
+ }) => Promise<{}>;
@@ -0,0 +1,58 @@
1
+ import { getModel, getErrorMessage, buildFieldsSelection } from "./helpers.js";
2
+ export const createUpdateEntryRevisionResolver = () => {
3
+ return async ({
4
+ args,
5
+ context
6
+ }) => {
7
+ const {
8
+ modelId,
9
+ revisionId,
10
+ data,
11
+ fields
12
+ } = args;
13
+ try {
14
+ const model = await getModel(context, modelId);
15
+
16
+ // Use manage API for updating entries.
17
+ const apiType = "manage";
18
+ const executeSchema = await context.cms.getExecutableSchema(apiType);
19
+ const fieldsSelection = buildFieldsSelection(fields);
20
+ const query = /* GraphQL */`
21
+ mutation Update${model.singularApiName}($revisionId: ID!, $data: ${model.singularApiName}Input!) {
22
+ update${model.singularApiName}(revision: $revisionId, data: $data) {
23
+ data {
24
+ ${fieldsSelection}
25
+ }
26
+ error {
27
+ message
28
+ code
29
+ data
30
+ }
31
+ }
32
+ }
33
+ `;
34
+ const result = await executeSchema({
35
+ query,
36
+ variables: {
37
+ revisionId,
38
+ data
39
+ }
40
+ });
41
+ const operationName = `update${model.singularApiName}`;
42
+ return result.data?.[operationName] || {
43
+ data: null,
44
+ error: null
45
+ };
46
+ } catch (error) {
47
+ return {
48
+ data: null,
49
+ error: {
50
+ message: getErrorMessage(error, "Failed to update entry"),
51
+ code: "UPDATE_ENTRY_ERROR"
52
+ }
53
+ };
54
+ }
55
+ };
56
+ };
57
+
58
+ //# sourceMappingURL=updateEntryResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getModel","getErrorMessage","buildFieldsSelection","createUpdateEntryRevisionResolver","args","context","modelId","revisionId","data","fields","model","apiType","executeSchema","cms","getExecutableSchema","fieldsSelection","query","singularApiName","result","variables","operationName","error","message","code"],"sources":["updateEntryResolver.ts"],"sourcesContent":["import type { CmsContext } from \"~/types/index.js\";\nimport type { ApiEndpoint } from \"~/types/index.js\";\nimport type { ExecutionResult } from \"graphql\";\nimport { getModel, getErrorMessage, buildFieldsSelection } from \"./helpers.js\";\n\nexport interface UpdateEntryRevisionArgs {\n modelId: string;\n revisionId: string;\n data: Record<string, unknown>;\n fields: string[];\n}\n\nexport const createUpdateEntryRevisionResolver = () => {\n return async ({ args, context }: { args: UpdateEntryRevisionArgs; context: CmsContext }) => {\n const { modelId, revisionId, data, fields } = args;\n\n try {\n const model = await getModel(context, modelId);\n\n // Use manage API for updating entries.\n const apiType: ApiEndpoint = \"manage\";\n const executeSchema = await context.cms.getExecutableSchema(apiType);\n\n const fieldsSelection = buildFieldsSelection(fields);\n\n const query = /* GraphQL */ `\n mutation Update${model.singularApiName}($revisionId: ID!, $data: ${model.singularApiName}Input!) {\n update${model.singularApiName}(revision: $revisionId, data: $data) {\n data {\n ${fieldsSelection}\n }\n error {\n message\n code\n data\n }\n }\n }\n `;\n\n const result = (await executeSchema({\n query,\n variables: { revisionId, data }\n })) as ExecutionResult;\n\n const operationName = `update${model.singularApiName}`;\n return result.data?.[operationName] || { data: null, error: null };\n } catch (error) {\n return {\n data: null,\n error: {\n message: getErrorMessage(error, \"Failed to update entry\"),\n code: \"UPDATE_ENTRY_ERROR\"\n }\n };\n }\n };\n};\n"],"mappings":"AAGA,SAASA,QAAQ,EAAEC,eAAe,EAAEC,oBAAoB;AASxD,OAAO,MAAMC,iCAAiC,GAAGA,CAAA,KAAM;EACnD,OAAO,OAAO;IAAEC,IAAI;IAAEC;EAAgE,CAAC,KAAK;IACxF,MAAM;MAAEC,OAAO;MAAEC,UAAU;MAAEC,IAAI;MAAEC;IAAO,CAAC,GAAGL,IAAI;IAElD,IAAI;MACA,MAAMM,KAAK,GAAG,MAAMV,QAAQ,CAACK,OAAO,EAAEC,OAAO,CAAC;;MAE9C;MACA,MAAMK,OAAoB,GAAG,QAAQ;MACrC,MAAMC,aAAa,GAAG,MAAMP,OAAO,CAACQ,GAAG,CAACC,mBAAmB,CAACH,OAAO,CAAC;MAEpE,MAAMI,eAAe,GAAGb,oBAAoB,CAACO,MAAM,CAAC;MAEpD,MAAMO,KAAK,GAAG,aAAc;AACxC,iCAAiCN,KAAK,CAACO,eAAe,6BAA6BP,KAAK,CAACO,eAAe;AACxG,4BAA4BP,KAAK,CAACO,eAAe;AACjD;AACA,8BAA8BF,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;MAED,MAAMG,MAAM,GAAI,MAAMN,aAAa,CAAC;QAChCI,KAAK;QACLG,SAAS,EAAE;UAAEZ,UAAU;UAAEC;QAAK;MAClC,CAAC,CAAqB;MAEtB,MAAMY,aAAa,GAAG,SAASV,KAAK,CAACO,eAAe,EAAE;MACtD,OAAOC,MAAM,CAACV,IAAI,GAAGY,aAAa,CAAC,IAAI;QAAEZ,IAAI,EAAE,IAAI;QAAEa,KAAK,EAAE;MAAK,CAAC;IACtE,CAAC,CAAC,OAAOA,KAAK,EAAE;MACZ,OAAO;QACHb,IAAI,EAAE,IAAI;QACVa,KAAK,EAAE;UACHC,OAAO,EAAErB,eAAe,CAACoB,KAAK,EAAE,wBAAwB,CAAC;UACzDE,IAAI,EAAE;QACV;MACJ,CAAC;IACL;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
@@ -121,6 +121,14 @@ export const createModelsSchema = ({
121
121
  settings: JSON
122
122
  }
123
123
 
124
+ input CmsFieldRuleInput {
125
+ type: String!
126
+ target: String!
127
+ operator: String!
128
+ value: JSON
129
+ action: String!
130
+ }
131
+
124
132
  input CmsContentModelFieldInput {
125
133
  id: ID!
126
134
  label: String!
@@ -140,6 +148,7 @@ export const createModelsSchema = ({
140
148
  validation: [CmsFieldValidationInput]
141
149
  listValidation: [CmsFieldValidationInput]
142
150
  settings: JSON
151
+ rules: [CmsFieldRuleInput!]
143
152
  }
144
153
 
145
154
  input CmsContentModelCreateInput {
@@ -151,7 +160,7 @@ export const createModelsSchema = ({
151
160
  icon: Icon
152
161
  singleEntry: Boolean
153
162
  description: String
154
- layout: [[ID!]!]
163
+ layout: JSON
155
164
  fields: [CmsContentModelFieldInput!]
156
165
  titleFieldId: String
157
166
  descriptionFieldId: String
@@ -177,7 +186,7 @@ export const createModelsSchema = ({
177
186
  group: String
178
187
  icon: Icon
179
188
  description: String
180
- layout: [[ID!]!]!
189
+ layout: JSON!
181
190
  fields: [CmsContentModelFieldInput!]!
182
191
  titleFieldId: String
183
192
  descriptionFieldId: String
@@ -226,6 +235,14 @@ export const createModelsSchema = ({
226
235
  values: [CmsPredefinedValue]
227
236
  }
228
237
 
238
+ type CmsFieldRule {
239
+ type: String!
240
+ target: String!
241
+ operator: String!
242
+ value: JSON
243
+ action: String!
244
+ }
245
+
229
246
  type CmsContentModelField {
230
247
  id: ID!
231
248
  # auto-generated value
@@ -245,6 +262,7 @@ export const createModelsSchema = ({
245
262
  validation: [CmsFieldValidation!]
246
263
  listValidation: [CmsFieldValidation!]
247
264
  settings: JSON
265
+ rules: [CmsFieldRule!]
248
266
  }
249
267
 
250
268
  type CmsContentModel {
@@ -259,7 +277,7 @@ export const createModelsSchema = ({
259
277
  savedOn: DateTime
260
278
  createdBy: CmsIdentity
261
279
  fields: [CmsContentModelField!]!
262
- layout: [[String!]!]!
280
+ layout: JSON!
263
281
  titleFieldId: String
264
282
  descriptionFieldId: String
265
283
  imageFieldId: String
@@ -1 +1 @@
1
- {"version":3,"names":["ErrorResponse","NotFoundError","Response","createCmsGraphQLSchemaPlugin","createModelsSchema","context","resolvers","Query","getContentModel","_","args","model","cms","getModel","modelId","e","listContentModels","models","listModels","includePrivate","includePlugins","CmsContentModelField","renderer","field","settings","tags","Array","isArray","CmsContentModel","hasType","find","tag","startsWith","plugin","isPlugin","manageSchema","MANAGE","createContentModel","createModel","data","createContentModelFrom","createModelFrom","updateContentModel","updateModel","deleteContentModel","deleteModel","typeDefs","name","type"],"sources":["contentModels.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\nimport type { CmsContext, CmsModel } from \"~/types/index.js\";\nimport type { Resolvers } from \"@webiny/handler-graphql/types.js\";\nimport type { ICmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { createCmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface CreateModelsSchemaParams {\n context: CmsContext;\n}\n\nexport const createModelsSchema = ({\n context\n}: CreateModelsSchemaParams): ICmsGraphQLSchemaPlugin => {\n const resolvers: Resolvers<CmsContext> = {\n Query: {\n getContentModel: async (_: unknown, args: GenericRecord, context) => {\n try {\n const model = await context.cms.getModel(args.modelId);\n\n if (!model) {\n throw new NotFoundError(`Content model \"${args.modelId}\" was not found!`);\n }\n\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModels: async (_: unknown, args: GenericRecord, context: CmsContext) => {\n try {\n const models = await context.cms.listModels({\n includePrivate: false,\n includePlugins: args?.includePlugins === false ? false : true\n });\n return new Response(models);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n CmsContentModelField: {\n renderer: field => {\n // Make sure `settings` is an object.\n if (field.renderer) {\n // We're using `||` here, because we want to use the fallback value for both `undefined` and `null`.\n return { ...field.renderer, settings: field.renderer.settings || {} };\n }\n\n return field.renderer;\n },\n tags(field) {\n // Make sure `tags` are always returned as an array.\n return Array.isArray(field.tags) ? field.tags : [];\n }\n },\n CmsContentModel: {\n tags(model: CmsModel) {\n // Make sure `tags` always contain a `type` tag, to differentiate between models.\n const hasType = (model.tags || []).find(tag => tag.startsWith(\"type:\"));\n\n return hasType ? model.tags : [\"type:model\", ...(model.tags || [])];\n },\n plugin: (model: CmsModel) => {\n return model.isPlugin ?? false;\n }\n }\n };\n\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n resolvers[\"Mutation\"] = {\n createContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModel(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n createContentModelFrom: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModelFrom(args.modelId, args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModel: async (_: unknown, args: any, context) => {\n const { modelId, data } = args;\n try {\n const model = await context.cms.updateModel(modelId, data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModel: async (_: unknown, args: any, context) => {\n const { modelId } = args;\n try {\n await context.cms.deleteModel(modelId);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n };\n\n manageSchema = /* GraphQL */ `\n input CmsPredefinedValueInput {\n label: String!\n value: String!\n selected: Boolean\n }\n\n input CmsPredefinedValuesInput {\n enabled: Boolean\n values: [CmsPredefinedValueInput]\n }\n input CmsFieldRendererInput {\n name: String\n settings: JSON\n }\n\n input CmsFieldValidationInput {\n name: String!\n message: String\n settings: JSON\n }\n\n input CmsContentModelFieldInput {\n id: ID!\n label: String!\n help: String\n description: String\n note: String\n placeholder: String\n # we never use user input - this is here to the GraphQL does not break when posting from our UI\n # used for debugging purposes\n storageId: String\n fieldId: String!\n type: String!\n tags: [String!]\n list: Boolean\n predefinedValues: CmsPredefinedValuesInput\n renderer: CmsFieldRendererInput\n validation: [CmsFieldValidationInput]\n listValidation: [CmsFieldValidationInput]\n settings: JSON\n }\n\n input CmsContentModelCreateInput {\n name: String!\n singularApiName: String!\n pluralApiName: String!\n modelId: String\n group: String!\n icon: Icon\n singleEntry: Boolean\n description: String\n layout: [[ID!]!]\n fields: [CmsContentModelFieldInput!]\n titleFieldId: String\n descriptionFieldId: String\n imageFieldId: String\n tags: [String!]\n defaultFields: Boolean\n }\n\n input CmsContentModelCreateFromInput {\n name: String!\n singularApiName: String!\n pluralApiName: String!\n modelId: String\n group: String!\n icon: Icon\n description: String\n }\n\n input CmsContentModelUpdateInput {\n name: String\n singularApiName: String\n pluralApiName: String\n group: String\n icon: Icon\n description: String\n layout: [[ID!]!]!\n fields: [CmsContentModelFieldInput!]!\n titleFieldId: String\n descriptionFieldId: String\n imageFieldId: String\n tags: [String!]\n }\n\n extend type Mutation {\n createContentModel(data: CmsContentModelCreateInput!): CmsContentModelResponse\n\n createContentModelFrom(\n modelId: ID!\n data: CmsContentModelCreateFromInput!\n ): CmsContentModelResponse\n\n updateContentModel(\n modelId: ID!\n data: CmsContentModelUpdateInput!\n ): CmsContentModelResponse\n\n deleteContentModel(modelId: ID!): CmsDeleteResponse\n }\n `;\n }\n\n const plugin = createCmsGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type CmsFieldValidation {\n name: String!\n message: String\n settings: JSON\n }\n\n type CmsFieldRenderer {\n name: String\n settings: JSON\n }\n\n type CmsPredefinedValue {\n label: String\n value: String\n selected: Boolean\n }\n\n type CmsPredefinedValues {\n enabled: Boolean\n values: [CmsPredefinedValue]\n }\n\n type CmsContentModelField {\n id: ID!\n # auto-generated value\n # used for debugging purposes\n storageId: String\n fieldId: String!\n label: String!\n help: String\n description: String\n note: String\n placeholder: String\n type: String!\n tags: [String!]!\n list: Boolean\n predefinedValues: CmsPredefinedValues\n renderer: CmsFieldRenderer\n validation: [CmsFieldValidation!]\n listValidation: [CmsFieldValidation!]\n settings: JSON\n }\n\n type CmsContentModel {\n name: String!\n singularApiName: String!\n pluralApiName: String!\n modelId: String!\n description: String\n group: String!\n icon: Icon\n createdOn: DateTime\n savedOn: DateTime\n createdBy: CmsIdentity\n fields: [CmsContentModelField!]!\n layout: [[String!]!]!\n titleFieldId: String\n descriptionFieldId: String\n imageFieldId: String\n tags: [String!]!\n tenant: String!\n # Returns true if the content model is registered via a plugin.\n plugin: Boolean!\n }\n\n type CmsContentModelResponse {\n data: CmsContentModel\n error: CmsError\n }\n\n type CmsContentModelListResponse {\n data: [CmsContentModel]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModel(modelId: ID!, where: JSON, sort: String): CmsContentModelResponse\n\n listContentModels(includePlugins: Boolean = true): CmsContentModelListResponse\n }\n\n ${manageSchema}\n `,\n resolvers\n });\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-models`;\n return plugin;\n};\n"],"mappings":"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MAAM;UAAES,OAAO;UAAEyB;QAAK,CAAC,GAAG7B,IAAI;QAC9B,IAAI;UACA,MAAMC,KAAK,GAAG,MAAMN,OAAO,CAACO,GAAG,CAAC+B,WAAW,CAAC7B,OAAO,EAAEyB,IAAI,CAAC;UAC1D,OAAO,IAAIrC,QAAQ,CAACS,KAAK,CAAC;QAC9B,CAAC,CAAC,OAAOI,CAAC,EAAE;UACR,OAAO,IAAIf,aAAa,CAACe,CAAC,CAAC;QAC/B;MACJ,CAAC;MACD6B,kBAAkB,EAAE,MAAAA,CAAOnC,CAAU,EAAEC,IAAS,EAAEL,OAAO,KAAK;QAC1D,MAAM;UAAES;QAAQ,CAAC,GAAGJ,IAAI;QACxB,IAAI;UACA,MAAML,OAAO,CAACO,GAAG,CAACiC,WAAW,CAAC/B,OAAO,CAAC;UACtC,OAAO,IAAIZ,QAAQ,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,OAAOa,CAAC,EAAE;UACR,OAAO,IAAIf,aAAa,CAACe,CAAC,CAAC;QAC/B;MACJ;IACJ,CAAC;IAEDoB,YAAY,GAAG,aAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;EACL;EAEA,MAAMF,MAAM,GAAG9B,4BAA4B,CAAC;IACxC2C,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcX,YAAY;AAC1B,SAAS;IACD7B;EACJ,CAAC,CAAC;EACF2B,MAAM,CAACc,IAAI,GAAG,+BAA+B1C,OAAO,CAACO,GAAG,CAACoC,IAAI,iBAAiB;EAC9E,OAAOf,MAAM;AACjB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["ErrorResponse","NotFoundError","Response","createCmsGraphQLSchemaPlugin","createModelsSchema","context","resolvers","Query","getContentModel","_","args","model","cms","getModel","modelId","e","listContentModels","models","listModels","includePrivate","includePlugins","CmsContentModelField","renderer","field","settings","tags","Array","isArray","CmsContentModel","hasType","find","tag","startsWith","plugin","isPlugin","manageSchema","MANAGE","createContentModel","createModel","data","createContentModelFrom","createModelFrom","updateContentModel","updateModel","deleteContentModel","deleteModel","typeDefs","name","type"],"sources":["contentModels.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\nimport type { CmsContext, CmsModel } from \"~/types/index.js\";\nimport type { Resolvers } from \"@webiny/handler-graphql/types.js\";\nimport type { ICmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { createCmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\n\nexport interface CreateModelsSchemaParams {\n context: CmsContext;\n}\n\nexport const createModelsSchema = ({\n context\n}: CreateModelsSchemaParams): ICmsGraphQLSchemaPlugin => {\n const resolvers: Resolvers<CmsContext> = {\n Query: {\n getContentModel: async (_: unknown, args: GenericRecord, context) => {\n try {\n const model = await context.cms.getModel(args.modelId);\n\n if (!model) {\n throw new NotFoundError(`Content model \"${args.modelId}\" was not found!`);\n }\n\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModels: async (_: unknown, args: GenericRecord, context: CmsContext) => {\n try {\n const models = await context.cms.listModels({\n includePrivate: false,\n includePlugins: args?.includePlugins === false ? false : true\n });\n return new Response(models);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n CmsContentModelField: {\n renderer: field => {\n // Make sure `settings` is an object.\n if (field.renderer) {\n // We're using `||` here, because we want to use the fallback value for both `undefined` and `null`.\n return { ...field.renderer, settings: field.renderer.settings || {} };\n }\n\n return field.renderer;\n },\n tags(field) {\n // Make sure `tags` are always returned as an array.\n return Array.isArray(field.tags) ? field.tags : [];\n }\n },\n CmsContentModel: {\n tags(model: CmsModel) {\n // Make sure `tags` always contain a `type` tag, to differentiate between models.\n const hasType = (model.tags || []).find(tag => tag.startsWith(\"type:\"));\n\n return hasType ? model.tags : [\"type:model\", ...(model.tags || [])];\n },\n plugin: (model: CmsModel) => {\n return model.isPlugin ?? false;\n }\n }\n };\n\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n resolvers[\"Mutation\"] = {\n createContentModel: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModel(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n createContentModelFrom: async (_: unknown, args: any, context) => {\n try {\n const model = await context.cms.createModelFrom(args.modelId, args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModel: async (_: unknown, args: any, context) => {\n const { modelId, data } = args;\n try {\n const model = await context.cms.updateModel(modelId, data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModel: async (_: unknown, args: any, context) => {\n const { modelId } = args;\n try {\n await context.cms.deleteModel(modelId);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n };\n\n manageSchema = /* GraphQL */ `\n input CmsPredefinedValueInput {\n label: String!\n value: String!\n selected: Boolean\n }\n\n input CmsPredefinedValuesInput {\n enabled: Boolean\n values: [CmsPredefinedValueInput]\n }\n input CmsFieldRendererInput {\n name: String\n settings: JSON\n }\n\n input CmsFieldValidationInput {\n name: String!\n message: String\n settings: JSON\n }\n\n input CmsFieldRuleInput {\n type: String!\n target: String!\n operator: String!\n value: JSON\n action: String!\n }\n\n input CmsContentModelFieldInput {\n id: ID!\n label: String!\n help: String\n description: String\n note: String\n placeholder: String\n # we never use user input - this is here to the GraphQL does not break when posting from our UI\n # used for debugging purposes\n storageId: String\n fieldId: String!\n type: String!\n tags: [String!]\n list: Boolean\n predefinedValues: CmsPredefinedValuesInput\n renderer: CmsFieldRendererInput\n validation: [CmsFieldValidationInput]\n listValidation: [CmsFieldValidationInput]\n settings: JSON\n rules: [CmsFieldRuleInput!]\n }\n\n input CmsContentModelCreateInput {\n name: String!\n singularApiName: String!\n pluralApiName: String!\n modelId: String\n group: String!\n icon: Icon\n singleEntry: Boolean\n description: String\n layout: JSON\n fields: [CmsContentModelFieldInput!]\n titleFieldId: String\n descriptionFieldId: String\n imageFieldId: String\n tags: [String!]\n defaultFields: Boolean\n }\n\n input CmsContentModelCreateFromInput {\n name: String!\n singularApiName: String!\n pluralApiName: String!\n modelId: String\n group: String!\n icon: Icon\n description: String\n }\n\n input CmsContentModelUpdateInput {\n name: String\n singularApiName: String\n pluralApiName: String\n group: String\n icon: Icon\n description: String\n layout: JSON!\n fields: [CmsContentModelFieldInput!]!\n titleFieldId: String\n descriptionFieldId: String\n imageFieldId: String\n tags: [String!]\n }\n\n extend type Mutation {\n createContentModel(data: CmsContentModelCreateInput!): CmsContentModelResponse\n\n createContentModelFrom(\n modelId: ID!\n data: CmsContentModelCreateFromInput!\n ): CmsContentModelResponse\n\n updateContentModel(\n modelId: ID!\n data: CmsContentModelUpdateInput!\n ): CmsContentModelResponse\n\n deleteContentModel(modelId: ID!): CmsDeleteResponse\n }\n `;\n }\n\n const plugin = createCmsGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type CmsFieldValidation {\n name: String!\n message: String\n settings: JSON\n }\n\n type CmsFieldRenderer {\n name: String\n settings: JSON\n }\n\n type CmsPredefinedValue {\n label: String\n value: String\n selected: Boolean\n }\n\n type CmsPredefinedValues {\n enabled: Boolean\n values: [CmsPredefinedValue]\n }\n\n type CmsFieldRule {\n type: String!\n target: String!\n operator: String!\n value: JSON\n action: String!\n }\n\n type CmsContentModelField {\n id: ID!\n # auto-generated value\n # used for debugging purposes\n storageId: String\n fieldId: String!\n label: String!\n help: String\n description: String\n note: String\n placeholder: String\n type: String!\n tags: [String!]!\n list: Boolean\n predefinedValues: CmsPredefinedValues\n renderer: CmsFieldRenderer\n validation: [CmsFieldValidation!]\n listValidation: [CmsFieldValidation!]\n settings: JSON\n rules: [CmsFieldRule!]\n }\n\n type CmsContentModel {\n name: String!\n singularApiName: String!\n pluralApiName: String!\n modelId: String!\n description: String\n group: String!\n icon: Icon\n createdOn: DateTime\n savedOn: DateTime\n createdBy: CmsIdentity\n fields: [CmsContentModelField!]!\n layout: JSON!\n titleFieldId: String\n descriptionFieldId: String\n imageFieldId: String\n tags: [String!]!\n tenant: String!\n # Returns true if the content model is registered via a plugin.\n plugin: Boolean!\n }\n\n type CmsContentModelResponse {\n data: CmsContentModel\n error: CmsError\n }\n\n type CmsContentModelListResponse {\n data: [CmsContentModel]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModel(modelId: ID!, where: JSON, sort: String): CmsContentModelResponse\n\n listContentModels(includePlugins: Boolean = true): CmsContentModelListResponse\n }\n\n ${manageSchema}\n `,\n resolvers\n });\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-models`;\n return plugin;\n};\n"],"mappings":"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MAAM;UAAES,OAAO;UAAEyB;QAAK,CAAC,GAAG7B,IAAI;QAC9B,IAAI;UACA,MAAMC,KAAK,GAAG,MAAMN,OAAO,CAACO,GAAG,CAAC+B,WAAW,CAAC7B,OAAO,EAAEyB,IAAI,CAAC;UAC1D,OAAO,IAAIrC,QAAQ,CAACS,KAAK,CAAC;QAC9B,CAAC,CAAC,OAAOI,CAAC,EAAE;UACR,OAAO,IAAIf,aAAa,CAACe,CAAC,CAAC;QAC/B;MACJ,CAAC;MACD6B,kBAAkB,EAAE,MAAAA,CAAOnC,CAAU,EAAEC,IAAS,EAAEL,OAAO,KAAK;QAC1D,MAAM;UAAES;QAAQ,CAAC,GAAGJ,IAAI;QACxB,IAAI;UACA,MAAML,OAAO,CAACO,GAAG,CAACiC,WAAW,CAAC/B,OAAO,CAAC;UACtC,OAAO,IAAIZ,QAAQ,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,OAAOa,CAAC,EAAE;UACR,OAAO,IAAIf,aAAa,CAACe,CAAC,CAAC;QAC/B;MACJ;IACJ,CAAC;IAEDoB,YAAY,GAAG,aAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;EACL;EAEA,MAAMF,MAAM,GAAG9B,4BAA4B,CAAC;IACxC2C,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcX,YAAY;AAC1B,SAAS;IACD7B;EACJ,CAAC,CAAC;EACF2B,MAAM,CAACc,IAAI,GAAG,+BAA+B1C,OAAO,CAACO,GAAG,CAACoC,IAAI,iBAAiB;EAC9E,OAAOf,MAAM;AACjB,CAAC","ignoreList":[]}
@@ -68,6 +68,7 @@ export const createManageSDL = ({
68
68
  ${onByMetaGqlFields}
69
69
  meta: ${singularName}Meta
70
70
  wbyAco_location: WbyAcoLocation
71
+ live: CmsEntryLive
71
72
 
72
73
  values: ${singularName}Values
73
74
  }
@@ -78,7 +79,7 @@ export const createManageSDL = ({
78
79
  locked: Boolean
79
80
 
80
81
  status: String
81
- state: CmsEntryState
82
+ system: CmsEntrySystem
82
83
  """
83
84
  CAUTION: this field is resolved by making an extra query to DB.
84
85
  RECOMMENDATION: Use it only with "get" queries (avoid in "list")
@@ -130,8 +131,9 @@ export const createManageSDL = ({
130
131
  input ${singularName}ListWhereInput {
131
132
  ${listFilterFieldsRender.baseFiltersAsString()}
132
133
 
133
- state: ListWhereInputCmsEntryState
134
+ system: ListWhereInputCmsEntrySystem
134
135
  wbyAco_location: WbyAcoLocationWhereInput
136
+ live: CmsEntryLiveWhereInput
135
137
 
136
138
  values: ${singularName}ListWhereInputValues
137
139
  AND: [${singularName}ListWhereInput!]
@@ -1 +1 @@
1
- {"version":3,"names":["renderListFilterFields","renderSortEnum","renderGetFilterFields","renderInputFields","renderFields","ENTRY_META_FIELDS","isDateTimeEntryMetaField","createManageSDL","models","model","fieldTypePlugins","sorterPlugins","inputFields","fields","listFilterFieldsRender","type","sortEnumRender","getFilterFieldsRender","singularApiName","singularName","pluralApiName","pluralName","inputGqlFields","map","f","join","onByMetaInputGqlFields","field","fieldType","onByMetaGqlFields","description","typeDefs","fieldFiltersAsString","baseFiltersAsString"],"sources":["createManageSDL.ts"],"sourcesContent":["import type { CmsFieldTypePlugins, CmsModel } from \"~/types/index.js\";\nimport { renderListFilterFields } from \"~/utils/renderListFilterFields.js\";\nimport { renderSortEnum } from \"~/utils/renderSortEnum.js\";\nimport { renderGetFilterFields } from \"~/utils/renderGetFilterFields.js\";\nimport { renderInputFields } from \"~/utils/renderInputFields.js\";\nimport { renderFields } from \"~/utils/renderFields.js\";\nimport type { CmsGraphQLSchemaSorterPlugin } from \"~/plugins/index.js\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants.js\";\n\ninterface CreateManageSDLParams {\n models: CmsModel[];\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n sorterPlugins: CmsGraphQLSchemaSorterPlugin[];\n}\n\ninterface CreateManageSDL {\n (params: CreateManageSDLParams): string;\n}\n\nexport const createManageSDL: CreateManageSDL = ({\n models,\n model,\n fieldTypePlugins,\n sorterPlugins\n}): string => {\n const inputFields = renderInputFields({\n models,\n model,\n fields: model.fields,\n fieldTypePlugins\n });\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins\n });\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields,\n fieldTypePlugins,\n sorterPlugins\n });\n const getFilterFieldsRender = renderGetFilterFields({\n fields: model.fields,\n fieldTypePlugins\n });\n\n const fields = renderFields({\n models,\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins\n });\n\n const { singularApiName: singularName, pluralApiName: pluralName } = model;\n\n const inputGqlFields = inputFields.map(f => f.fields).join(\"\\n\");\n\n const onByMetaInputGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentityInput\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n const onByMetaGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n return `\n \"\"\"${model.description || singularName}\"\"\"\n \n type ${singularName}Values {\n ${fields.map(f => f.fields).join(\"\\n\") || \"_empty: String\"}\n }\n \n type ${singularName} {\n id: ID!\n entryId: String!\n \n ${onByMetaGqlFields}\n meta: ${singularName}Meta\n wbyAco_location: WbyAcoLocation\n \n values: ${singularName}Values\n }\n\n type ${singularName}Meta {\n modelId: String\n version: Int\n locked: Boolean\n \n status: String\n state: CmsEntryState\n \"\"\"\n CAUTION: this field is resolved by making an extra query to DB.\n RECOMMENDATION: Use it only with \"get\" queries (avoid in \"list\")\n \"\"\"\n revisions: [${singularName}!]\n title: String\n description: String\n image: String\n \"\"\"\n Custom meta data stored in the root of the entry object.\n \"\"\"\n data: JSON\n }\n\n ${fields.map(f => f.typeDefs).join(\"\\n\")}\n\n ${inputFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input ${singularName}InputValues {\n ${inputGqlFields || \"_empty: String\"}\n }\n \n input ${singularName}Input {\n id: ID\n \n # Set status of the entry.\n status: String\n \n ${onByMetaInputGqlFields}\n \n wbyAco_location: WbyAcoLocationInput\n \n values: ${singularName}InputValues\n }\n \n input ${singularName}GetWhereInputValues {\n ${getFilterFieldsRender.fieldFiltersAsString() || \"_empty: String\"}\n }\n \n input ${singularName}GetWhereInput {\n ${getFilterFieldsRender.baseFiltersAsString()}\n values: ${singularName}GetWhereInputValues\n }\n \n input ${singularName}ListWhereInputValues {\n ${listFilterFieldsRender.fieldFiltersAsString() || \"_empty: String\"}\n }\n\n input ${singularName}ListWhereInput {\n ${listFilterFieldsRender.baseFiltersAsString()}\n\n state: ListWhereInputCmsEntryState\n wbyAco_location: WbyAcoLocationWhereInput\n \n values: ${singularName}ListWhereInputValues\n AND: [${singularName}ListWhereInput!]\n OR: [${singularName}ListWhereInput!]\n }\n\n type ${singularName}Response {\n data: ${singularName}\n error: CmsError\n }\n \n type ${singularName}MoveResponse {\n data: Boolean\n error: CmsError\n }\n\n type ${singularName}ArrayResponse {\n data: [${singularName}]\n error: CmsError\n }\n\n type ${singularName}ListResponse {\n data: [${singularName}]\n meta: CmsListMeta\n error: CmsError\n }\n\n\n enum ${singularName}ListSorter {\n ${sortEnumRender}\n }\n\n extend type Query {\n get${singularName}(revision: ID, entryId: ID, status: CmsEntryStatusType): ${singularName}Response\n \n get${singularName}Revisions(id: ID!): ${singularName}ArrayResponse\n \n get${pluralName}ByIds(revisions: [ID!]!): ${singularName}ArrayResponse\n \n list${pluralName} (\n where: ${singularName}ListWhereInput\n sort: [${singularName}ListSorter]\n limit: Int\n after: String\n search: String\n ): ${singularName}ListResponse\n \n listDeleted${pluralName} (\n where: ${singularName}ListWhereInput\n sort: [${singularName}ListSorter]\n limit: Int\n after: String\n search: String\n ): ${singularName}ListResponse\n }\n\n extend type Mutation {\n create${singularName}(data: ${singularName}Input!, options: CreateCmsEntryOptionsInput): ${singularName}Response\n\n create${singularName}From(revision: ID!, data: ${singularName}Input, options: CreateRevisionCmsEntryOptionsInput): ${singularName}Response\n \n update${singularName}(revision: ID!, data: ${singularName}Input!, options: UpdateCmsEntryOptionsInput): ${singularName}Response\n\n validate${singularName}(revision: ID, data: ${singularName}Input!): CmsEntryValidationResponse!\n \n move${singularName}(revision: ID!, folderId: ID!): ${singularName}MoveResponse\n\n delete${singularName}(revision: ID!, options: CmsDeleteEntryOptions): CmsDeleteResponse\n \n restore${singularName}FromBin(revision: ID!): ${singularName}Response\n\n deleteMultiple${pluralName}(entries: [ID!]!): CmsDeleteMultipleResponse!\n \n publish${singularName}(revision: ID!): ${singularName}Response\n \n republish${singularName}(revision: ID!): ${singularName}Response\n \n unpublish${singularName}(revision: ID!): ${singularName}Response\n }\n `;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["renderListFilterFields","renderSortEnum","renderGetFilterFields","renderInputFields","renderFields","ENTRY_META_FIELDS","isDateTimeEntryMetaField","createManageSDL","models","model","fieldTypePlugins","sorterPlugins","inputFields","fields","listFilterFieldsRender","type","sortEnumRender","getFilterFieldsRender","singularApiName","singularName","pluralApiName","pluralName","inputGqlFields","map","f","join","onByMetaInputGqlFields","field","fieldType","onByMetaGqlFields","description","typeDefs","fieldFiltersAsString","baseFiltersAsString"],"sources":["createManageSDL.ts"],"sourcesContent":["import type { CmsFieldTypePlugins, CmsModel } from \"~/types/index.js\";\nimport { renderListFilterFields } from \"~/utils/renderListFilterFields.js\";\nimport { renderSortEnum } from \"~/utils/renderSortEnum.js\";\nimport { renderGetFilterFields } from \"~/utils/renderGetFilterFields.js\";\nimport { renderInputFields } from \"~/utils/renderInputFields.js\";\nimport { renderFields } from \"~/utils/renderFields.js\";\nimport type { CmsGraphQLSchemaSorterPlugin } from \"~/plugins/index.js\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants.js\";\n\ninterface CreateManageSDLParams {\n models: CmsModel[];\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n sorterPlugins: CmsGraphQLSchemaSorterPlugin[];\n}\n\ninterface CreateManageSDL {\n (params: CreateManageSDLParams): string;\n}\n\nexport const createManageSDL: CreateManageSDL = ({\n models,\n model,\n fieldTypePlugins,\n sorterPlugins\n}): string => {\n const inputFields = renderInputFields({\n models,\n model,\n fields: model.fields,\n fieldTypePlugins\n });\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins\n });\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields,\n fieldTypePlugins,\n sorterPlugins\n });\n const getFilterFieldsRender = renderGetFilterFields({\n fields: model.fields,\n fieldTypePlugins\n });\n\n const fields = renderFields({\n models,\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins\n });\n\n const { singularApiName: singularName, pluralApiName: pluralName } = model;\n\n const inputGqlFields = inputFields.map(f => f.fields).join(\"\\n\");\n\n const onByMetaInputGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentityInput\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n const onByMetaGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n return `\n \"\"\"${model.description || singularName}\"\"\"\n \n type ${singularName}Values {\n ${fields.map(f => f.fields).join(\"\\n\") || \"_empty: String\"}\n }\n \n type ${singularName} {\n id: ID!\n entryId: String!\n \n ${onByMetaGqlFields}\n meta: ${singularName}Meta\n wbyAco_location: WbyAcoLocation\n live: CmsEntryLive\n \n values: ${singularName}Values\n }\n\n type ${singularName}Meta {\n modelId: String\n version: Int\n locked: Boolean\n \n status: String\n system: CmsEntrySystem\n \"\"\"\n CAUTION: this field is resolved by making an extra query to DB.\n RECOMMENDATION: Use it only with \"get\" queries (avoid in \"list\")\n \"\"\"\n revisions: [${singularName}!]\n title: String\n description: String\n image: String\n \"\"\"\n Custom meta data stored in the root of the entry object.\n \"\"\"\n data: JSON\n }\n\n ${fields.map(f => f.typeDefs).join(\"\\n\")}\n\n ${inputFields.map(f => f.typeDefs).join(\"\\n\")}\n \n input ${singularName}InputValues {\n ${inputGqlFields || \"_empty: String\"}\n }\n \n input ${singularName}Input {\n id: ID\n \n # Set status of the entry.\n status: String\n \n ${onByMetaInputGqlFields}\n \n wbyAco_location: WbyAcoLocationInput\n \n values: ${singularName}InputValues\n }\n \n input ${singularName}GetWhereInputValues {\n ${getFilterFieldsRender.fieldFiltersAsString() || \"_empty: String\"}\n }\n \n input ${singularName}GetWhereInput {\n ${getFilterFieldsRender.baseFiltersAsString()}\n values: ${singularName}GetWhereInputValues\n }\n \n input ${singularName}ListWhereInputValues {\n ${listFilterFieldsRender.fieldFiltersAsString() || \"_empty: String\"}\n }\n\n input ${singularName}ListWhereInput {\n ${listFilterFieldsRender.baseFiltersAsString()}\n\n system: ListWhereInputCmsEntrySystem\n wbyAco_location: WbyAcoLocationWhereInput\n live: CmsEntryLiveWhereInput\n \n values: ${singularName}ListWhereInputValues\n AND: [${singularName}ListWhereInput!]\n OR: [${singularName}ListWhereInput!]\n }\n\n type ${singularName}Response {\n data: ${singularName}\n error: CmsError\n }\n \n type ${singularName}MoveResponse {\n data: Boolean\n error: CmsError\n }\n\n type ${singularName}ArrayResponse {\n data: [${singularName}]\n error: CmsError\n }\n\n type ${singularName}ListResponse {\n data: [${singularName}]\n meta: CmsListMeta\n error: CmsError\n }\n\n\n enum ${singularName}ListSorter {\n ${sortEnumRender}\n }\n\n extend type Query {\n get${singularName}(revision: ID, entryId: ID, status: CmsEntryStatusType): ${singularName}Response\n \n get${singularName}Revisions(id: ID!): ${singularName}ArrayResponse\n \n get${pluralName}ByIds(revisions: [ID!]!): ${singularName}ArrayResponse\n \n list${pluralName} (\n where: ${singularName}ListWhereInput\n sort: [${singularName}ListSorter]\n limit: Int\n after: String\n search: String\n ): ${singularName}ListResponse\n \n listDeleted${pluralName} (\n where: ${singularName}ListWhereInput\n sort: [${singularName}ListSorter]\n limit: Int\n after: String\n search: String\n ): ${singularName}ListResponse\n }\n\n extend type Mutation {\n create${singularName}(data: ${singularName}Input!, options: CreateCmsEntryOptionsInput): ${singularName}Response\n\n create${singularName}From(revision: ID!, data: ${singularName}Input, options: CreateRevisionCmsEntryOptionsInput): ${singularName}Response\n \n update${singularName}(revision: ID!, data: ${singularName}Input!, options: UpdateCmsEntryOptionsInput): ${singularName}Response\n\n validate${singularName}(revision: ID, data: ${singularName}Input!): CmsEntryValidationResponse!\n \n move${singularName}(revision: ID!, folderId: ID!): ${singularName}MoveResponse\n\n delete${singularName}(revision: ID!, options: CmsDeleteEntryOptions): CmsDeleteResponse\n \n restore${singularName}FromBin(revision: ID!): ${singularName}Response\n\n deleteMultiple${pluralName}(entries: [ID!]!): CmsDeleteMultipleResponse!\n \n publish${singularName}(revision: ID!): ${singularName}Response\n \n republish${singularName}(revision: ID!): ${singularName}Response\n \n unpublish${singularName}(revision: ID!): ${singularName}Response\n }\n `;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["createTextField","createLongTextField","createRefField","createNumberField","createBooleanField","createDateTimeField","createRichTextField","createFileField","createObjectField","createDynamicZoneField","createJsonField","createSearchableJsonField","createGraphQLFields"],"sources":["index.ts"],"sourcesContent":["import { createTextField } from \"./text.js\";\nimport { createLongTextField } from \"./longText.js\";\nimport { createRefField } from \"./ref.js\";\nimport { createNumberField } from \"./number.js\";\nimport { createBooleanField } from \"./boolean.js\";\nimport { createDateTimeField } from \"./datetime.js\";\nimport { createRichTextField } from \"./richText.js\";\nimport { createFileField } from \"./file.js\";\nimport { createObjectField } from \"./object.js\";\nimport { createDynamicZoneField } from \"~/graphqlFields/dynamicZone/index.js\";\nimport type { CmsModelFieldToGraphQLPlugin } from \"~/types/index.js\";\nimport { createJsonField } from \"~/graphqlFields/json.js\";\nimport { createSearchableJsonField } from \"~/graphqlFields/searchableJson.js\";\n\nexport const createGraphQLFields = (): CmsModelFieldToGraphQLPlugin<any>[] => [\n createTextField(),\n createRefField(),\n createNumberField(),\n createDateTimeField(),\n createBooleanField(),\n createLongTextField(),\n createRichTextField(),\n createJsonField(),\n createSearchableJsonField(),\n createFileField(),\n createObjectField(),\n createDynamicZoneField()\n];\n"],"mappings":"AAAA,SAASA,eAAe;AACxB,SAASC,mBAAmB;AAC5B,SAASC,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;AAC3B,SAASC,mBAAmB;AAC5B,SAASC,mBAAmB;AAC5B,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAE/B,SAASC,eAAe;AACxB,SAASC,yBAAyB;AAElC,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAA2C,CAC1EZ,eAAe,CAAC,CAAC,EACjBE,cAAc,CAAC,CAAC,EAChBC,iBAAiB,CAAC,CAAC,EACnBE,mBAAmB,CAAC,CAAC,EACrBD,kBAAkB,CAAC,CAAC,EACpBH,mBAAmB,CAAC,CAAC,EACrBK,mBAAmB,CAAC,CAAC,EACrBI,eAAe,CAAC,CAAC,EACjBC,yBAAyB,CAAC,CAAC,EAC3BJ,eAAe,CAAC,CAAC,EACjBC,iBAAiB,CAAC,CAAC,EACnBC,sBAAsB,CAAC,CAAC,CAC3B","ignoreList":[]}
1
+ {"version":3,"names":["createTextField","createLongTextField","createRefField","createNumberField","createBooleanField","createDateTimeField","createRichTextField","createFileField","createObjectField","createDynamicZoneField","createJsonField","createSearchableJsonField","createGraphQLFields"],"sources":["index.ts"],"sourcesContent":["import { createTextField } from \"./text.js\";\nimport { createLongTextField } from \"./longText.js\";\nimport { createRefField } from \"./ref.js\";\nimport { createNumberField } from \"./number.js\";\nimport { createBooleanField } from \"./boolean.js\";\nimport { createDateTimeField } from \"./datetime.js\";\nimport { createRichTextField } from \"./richText.js\";\nimport { createFileField } from \"./file.js\";\nimport { createObjectField } from \"./object.js\";\nimport { createDynamicZoneField } from \"./dynamicZone/index.js\";\nimport type { CmsModelFieldToGraphQLPlugin } from \"~/types/index.js\";\nimport { createJsonField } from \"./json.js\";\nimport { createSearchableJsonField } from \"./searchableJson.js\";\n\nexport const createGraphQLFields = (): CmsModelFieldToGraphQLPlugin<any>[] => [\n createTextField(),\n createRefField(),\n createNumberField(),\n createDateTimeField(),\n createBooleanField(),\n createLongTextField(),\n createRichTextField(),\n createJsonField(),\n createSearchableJsonField(),\n createFileField(),\n createObjectField(),\n createDynamicZoneField()\n];\n"],"mappings":"AAAA,SAASA,eAAe;AACxB,SAASC,mBAAmB;AAC5B,SAASC,cAAc;AACvB,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;AAC3B,SAASC,mBAAmB;AAC5B,SAASC,mBAAmB;AAC5B,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAE/B,SAASC,eAAe;AACxB,SAASC,yBAAyB;AAElC,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAA2C,CAC1EZ,eAAe,CAAC,CAAC,EACjBE,cAAc,CAAC,CAAC,EAChBC,iBAAiB,CAAC,CAAC,EACnBE,mBAAmB,CAAC,CAAC,EACrBD,kBAAkB,CAAC,CAAC,EACpBH,mBAAmB,CAAC,CAAC,EACrBK,mBAAmB,CAAC,CAAC,EACrBI,eAAe,CAAC,CAAC,EACjBC,yBAAyB,CAAC,CAAC,EAC3BJ,eAAe,CAAC,CAAC,EACjBC,iBAAiB,CAAC,CAAC,EACnBC,sBAAsB,CAAC,CAAC,CAC3B","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms",
3
- "version": "0.0.0-unstable.df7a8bb475",
3
+ "version": "0.0.0-unstable.e2758ee1cf",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -22,21 +22,21 @@
22
22
  "@babel/code-frame": "7.29.0",
23
23
  "@graphql-tools/merge": "9.1.7",
24
24
  "@graphql-tools/schema": "10.0.31",
25
- "@webiny/api": "0.0.0-unstable.df7a8bb475",
26
- "@webiny/api-core": "0.0.0-unstable.df7a8bb475",
25
+ "@webiny/api": "0.0.0-unstable.e2758ee1cf",
26
+ "@webiny/api-core": "0.0.0-unstable.e2758ee1cf",
27
27
  "@webiny/di": "0.2.3",
28
- "@webiny/error": "0.0.0-unstable.df7a8bb475",
29
- "@webiny/feature": "0.0.0-unstable.df7a8bb475",
30
- "@webiny/handler": "0.0.0-unstable.df7a8bb475",
31
- "@webiny/handler-aws": "0.0.0-unstable.df7a8bb475",
32
- "@webiny/handler-db": "0.0.0-unstable.df7a8bb475",
33
- "@webiny/handler-graphql": "0.0.0-unstable.df7a8bb475",
34
- "@webiny/plugins": "0.0.0-unstable.df7a8bb475",
35
- "@webiny/project": "0.0.0-unstable.df7a8bb475",
36
- "@webiny/utils": "0.0.0-unstable.df7a8bb475",
37
- "@webiny/validation": "0.0.0-unstable.df7a8bb475",
28
+ "@webiny/error": "0.0.0-unstable.e2758ee1cf",
29
+ "@webiny/feature": "0.0.0-unstable.e2758ee1cf",
30
+ "@webiny/handler": "0.0.0-unstable.e2758ee1cf",
31
+ "@webiny/handler-aws": "0.0.0-unstable.e2758ee1cf",
32
+ "@webiny/handler-db": "0.0.0-unstable.e2758ee1cf",
33
+ "@webiny/handler-graphql": "0.0.0-unstable.e2758ee1cf",
34
+ "@webiny/plugins": "0.0.0-unstable.e2758ee1cf",
35
+ "@webiny/project": "0.0.0-unstable.e2758ee1cf",
36
+ "@webiny/utils": "0.0.0-unstable.e2758ee1cf",
37
+ "@webiny/validation": "0.0.0-unstable.e2758ee1cf",
38
38
  "dot-prop-immutable": "2.1.1",
39
- "graphql": "16.12.0",
39
+ "graphql": "16.13.0",
40
40
  "graphql-tag": "2.12.6",
41
41
  "lodash": "4.17.23",
42
42
  "p-map": "7.0.4",
@@ -48,23 +48,24 @@
48
48
  "devDependencies": {
49
49
  "@types/babel__code-frame": "7.27.0",
50
50
  "@types/pluralize": "0.0.33",
51
- "@webiny/aws-sdk": "0.0.0-unstable.df7a8bb475",
52
- "@webiny/build-tools": "0.0.0-unstable.df7a8bb475",
53
- "@webiny/db-dynamodb": "0.0.0-unstable.df7a8bb475",
51
+ "@webiny/aws-sdk": "0.0.0-unstable.e2758ee1cf",
52
+ "@webiny/build-tools": "0.0.0-unstable.e2758ee1cf",
53
+ "@webiny/db-dynamodb": "0.0.0-unstable.e2758ee1cf",
54
54
  "@webiny/handler-db": "0.0.0",
55
- "@webiny/project-utils": "0.0.0-unstable.df7a8bb475",
56
- "@webiny/wcp": "0.0.0-unstable.df7a8bb475",
55
+ "@webiny/project-utils": "0.0.0-unstable.e2758ee1cf",
56
+ "@webiny/sdk": "0.0.0-unstable.e2758ee1cf",
57
+ "@webiny/wcp": "0.0.0-unstable.e2758ee1cf",
57
58
  "apollo-graphql": "0.9.7",
58
- "graphql": "16.12.0",
59
+ "graphql": "16.13.0",
59
60
  "prettier": "3.6.2",
60
61
  "rimraf": "6.1.3",
61
62
  "typescript": "5.9.3",
62
- "vitest": "3.2.4",
63
- "write-json-file": "4.3.0"
63
+ "vitest": "4.0.18",
64
+ "write-json-file": "7.0.0"
64
65
  },
65
66
  "publishConfig": {
66
67
  "access": "public",
67
68
  "directory": "dist"
68
69
  },
69
- "gitHead": "df7a8bb4755a1da047f0af8c56bdb649cc81bf7d"
70
+ "gitHead": "e2758ee1cfa3b9a7152e9bb995a90ccabd33266f"
70
71
  }
@@ -168,12 +168,27 @@ export class CmsModelPlugin extends Plugin {
168
168
  if (this.options.validateLayout === false) {
169
169
  return;
170
170
  }
171
- for (const field of model.fields) {
171
+ const countFieldInLayout = (fieldId, layout) => {
172
172
  let total = 0;
173
- for (const row of model.layout) {
174
- const count = row.filter(cell => cell === field.id).length;
175
- total = total + count;
173
+ for (const row of layout) {
174
+ for (const cell of row) {
175
+ if (typeof cell === "string") {
176
+ if (cell === fieldId) {
177
+ total++;
178
+ }
179
+ } else if (cell && typeof cell === "object" && Array.isArray(cell.tabs)) {
180
+ for (const tab of cell.tabs) {
181
+ if (Array.isArray(tab.layout)) {
182
+ total += countFieldInLayout(fieldId, tab.layout);
183
+ }
184
+ }
185
+ }
186
+ }
176
187
  }
188
+ return total;
189
+ };
190
+ for (const field of model.fields) {
191
+ const total = countFieldInLayout(field.id, model.layout);
177
192
  if (total === 1) {
178
193
  continue;
179
194
  } else if (total > 1) {