@webiny/api-headless-cms 0.0.0-unstable.78f581c1d2 → 0.0.0-unstable.97a151f74d

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 (84) hide show
  1. package/crud/contentEntry/markLockedFields.js +5 -2
  2. package/crud/contentEntry/markLockedFields.js.map +1 -1
  3. package/crud/contentEntry/referenceFieldsMapping.js +9 -5
  4. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  5. package/crud/contentEntry/searchableFields.d.ts +9 -0
  6. package/crud/contentEntry/searchableFields.js +83 -0
  7. package/crud/contentEntry/searchableFields.js.map +1 -0
  8. package/crud/contentEntry.crud.js +5 -32
  9. package/crud/contentEntry.crud.js.map +1 -1
  10. package/crud/contentModel/createFieldStorageId.js +5 -1
  11. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  12. package/crud/contentModel/models.js +12 -0
  13. package/crud/contentModel/models.js.map +1 -1
  14. package/crud/contentModel/validateModelFields.js +14 -6
  15. package/crud/contentModel/validateModelFields.js.map +1 -1
  16. package/crud/contentModel.crud.js +22 -0
  17. package/crud/contentModel.crud.js.map +1 -1
  18. package/graphql/graphQLHandlerFactory.js +52 -14
  19. package/graphql/graphQLHandlerFactory.js.map +1 -1
  20. package/graphql/schema/contentModels.js +18 -1
  21. package/graphql/schema/contentModels.js.map +1 -1
  22. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  23. package/graphql/schema/createFieldResolvers.js +9 -5
  24. package/graphql/schema/createFieldResolvers.js.map +1 -1
  25. package/graphql/schema/createManageSDL.js +5 -4
  26. package/graphql/schema/createManageSDL.js.map +1 -1
  27. package/graphql/schema/createReadSDL.js +5 -3
  28. package/graphql/schema/createReadSDL.js.map +1 -1
  29. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  30. package/graphqlFields/dynamicZone/dynamicZoneField.js +209 -0
  31. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  32. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  33. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
  34. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  35. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  36. package/graphqlFields/dynamicZone/index.js +21 -0
  37. package/graphqlFields/dynamicZone/index.js.map +1 -0
  38. package/graphqlFields/index.d.ts +1 -1
  39. package/graphqlFields/index.js +3 -1
  40. package/graphqlFields/index.js.map +1 -1
  41. package/graphqlFields/number.js +4 -0
  42. package/graphqlFields/number.js.map +1 -1
  43. package/graphqlFields/object.js +109 -72
  44. package/graphqlFields/object.js.map +1 -1
  45. package/graphqlFields/ref.js +29 -47
  46. package/graphqlFields/ref.js.map +1 -1
  47. package/index.d.ts +1 -1
  48. package/index.js +3 -1
  49. package/index.js.map +1 -1
  50. package/package.json +24 -23
  51. package/plugins/StorageTransformPlugin.d.ts +11 -11
  52. package/plugins/StorageTransformPlugin.js.map +1 -1
  53. package/storage/object.js +5 -2
  54. package/storage/object.js.map +1 -1
  55. package/types.d.ts +85 -40
  56. package/types.js +11 -7
  57. package/types.js.map +1 -1
  58. package/utils/converters/ConverterCollection.js +6 -2
  59. package/utils/converters/ConverterCollection.js.map +1 -1
  60. package/utils/createTypeFromFields.d.ts +15 -0
  61. package/utils/createTypeFromFields.js +75 -0
  62. package/utils/createTypeFromFields.js.map +1 -0
  63. package/utils/createTypeName.js +3 -1
  64. package/utils/createTypeName.js.map +1 -1
  65. package/utils/entryStorage.js +8 -4
  66. package/utils/entryStorage.js.map +1 -1
  67. package/utils/getBaseFieldType.d.ts +4 -0
  68. package/utils/getBaseFieldType.js +12 -0
  69. package/utils/getBaseFieldType.js.map +1 -0
  70. package/utils/renderFields.js +3 -1
  71. package/utils/renderFields.js.map +1 -1
  72. package/utils/renderGetFilterFields.js +8 -3
  73. package/utils/renderGetFilterFields.js.map +1 -1
  74. package/utils/renderInputFields.js +3 -1
  75. package/utils/renderInputFields.js.map +1 -1
  76. package/utils/renderListFilterFields.js +5 -2
  77. package/utils/renderListFilterFields.js.map +1 -1
  78. package/utils/renderSortEnum.js +3 -1
  79. package/utils/renderSortEnum.js.map +1 -1
  80. package/validators/dynamicZone.d.ts +2 -0
  81. package/validators/dynamicZone.js +24 -0
  82. package/validators/dynamicZone.js.map +1 -0
  83. package/validators/index.js +3 -1
  84. package/validators/index.js.map +1 -1
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "createDynamicZoneField", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _dynamicZoneField.createDynamicZoneField;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "createDynamicZoneStorageTransform", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _dynamicZoneStorage.createDynamicZoneStorageTransform;
16
+ }
17
+ });
18
+
19
+ var _dynamicZoneField = require("./dynamicZoneField");
20
+
21
+ var _dynamicZoneStorage = require("./dynamicZoneStorage");
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { createDynamicZoneField } from \"./dynamicZoneField\";\nexport { createDynamicZoneStorageTransform } from \"./dynamicZoneStorage\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA"}
@@ -1,2 +1,2 @@
1
1
  import { CmsModelFieldToGraphQLPlugin } from "../types";
2
- export declare const createGraphQLFields: () => CmsModelFieldToGraphQLPlugin[];
2
+ export declare const createGraphQLFields: () => CmsModelFieldToGraphQLPlugin<any>[];
@@ -23,6 +23,8 @@ var _file = require("./file");
23
23
 
24
24
  var _object = require("./object");
25
25
 
26
- const createGraphQLFields = () => [(0, _text.createTextField)(), (0, _ref.createRefField)(), (0, _number.createNumberField)(), (0, _datetime.createDateTimeField)(), (0, _boolean.createBooleanField)(), (0, _longText.createLongTextField)(), (0, _richText.createRichTextField)(), (0, _file.createFileField)(), (0, _object.createObjectField)()];
26
+ var _dynamicZone = require("./dynamicZone");
27
+
28
+ const createGraphQLFields = () => [(0, _text.createTextField)(), (0, _ref.createRefField)(), (0, _number.createNumberField)(), (0, _datetime.createDateTimeField)(), (0, _boolean.createBooleanField)(), (0, _longText.createLongTextField)(), (0, _richText.createRichTextField)(), (0, _file.createFileField)(), (0, _object.createObjectField)(), (0, _dynamicZone.createDynamicZoneField)()];
27
29
 
28
30
  exports.createGraphQLFields = createGraphQLFields;
@@ -1 +1 @@
1
- {"version":3,"names":["createGraphQLFields","createTextField","createRefField","createNumberField","createDateTimeField","createBooleanField","createLongTextField","createRichTextField","createFileField","createObjectField"],"sources":["index.ts"],"sourcesContent":["import { createTextField } from \"./text\";\nimport { createLongTextField } from \"./longText\";\nimport { createRefField } from \"./ref\";\nimport { createNumberField } from \"./number\";\nimport { createBooleanField } from \"./boolean\";\nimport { createDateTimeField } from \"./datetime\";\nimport { createRichTextField } from \"./richText\";\nimport { createFileField } from \"./file\";\nimport { createObjectField } from \"./object\";\nimport { CmsModelFieldToGraphQLPlugin } from \"~/types\";\n\nexport const createGraphQLFields = (): CmsModelFieldToGraphQLPlugin[] => [\n createTextField(),\n createRefField(),\n createNumberField(),\n createDateTimeField(),\n createBooleanField(),\n createLongTextField(),\n createRichTextField(),\n createFileField(),\n createObjectField()\n];\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGO,MAAMA,mBAAmB,GAAG,MAAsC,CACrE,IAAAC,qBAAA,GADqE,EAErE,IAAAC,mBAAA,GAFqE,EAGrE,IAAAC,yBAAA,GAHqE,EAIrE,IAAAC,6BAAA,GAJqE,EAKrE,IAAAC,2BAAA,GALqE,EAMrE,IAAAC,6BAAA,GANqE,EAOrE,IAAAC,6BAAA,GAPqE,EAQrE,IAAAC,qBAAA,GARqE,EASrE,IAAAC,yBAAA,GATqE,CAAlE"}
1
+ {"version":3,"names":["createGraphQLFields","createTextField","createRefField","createNumberField","createDateTimeField","createBooleanField","createLongTextField","createRichTextField","createFileField","createObjectField","createDynamicZoneField"],"sources":["index.ts"],"sourcesContent":["import { createTextField } from \"./text\";\nimport { createLongTextField } from \"./longText\";\nimport { createRefField } from \"./ref\";\nimport { createNumberField } from \"./number\";\nimport { createBooleanField } from \"./boolean\";\nimport { createDateTimeField } from \"./datetime\";\nimport { createRichTextField } from \"./richText\";\nimport { createFileField } from \"./file\";\nimport { createObjectField } from \"./object\";\nimport { createDynamicZoneField } from \"~/graphqlFields/dynamicZone\";\nimport { CmsModelFieldToGraphQLPlugin } from \"~/types\";\n\nexport const createGraphQLFields = (): CmsModelFieldToGraphQLPlugin<any>[] => [\n createTextField(),\n createRefField(),\n createNumberField(),\n createDateTimeField(),\n createBooleanField(),\n createLongTextField(),\n createRichTextField(),\n createFileField(),\n createObjectField(),\n createDynamicZoneField()\n];\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGO,MAAMA,mBAAmB,GAAG,MAA2C,CAC1E,IAAAC,qBAAA,GAD0E,EAE1E,IAAAC,mBAAA,GAF0E,EAG1E,IAAAC,yBAAA,GAH0E,EAI1E,IAAAC,6BAAA,GAJ0E,EAK1E,IAAAC,2BAAA,GAL0E,EAM1E,IAAAC,6BAAA,GAN0E,EAO1E,IAAAC,6BAAA,GAP0E,EAQ1E,IAAAC,qBAAA,GAR0E,EAS1E,IAAAC,yBAAA,GAT0E,EAU1E,IAAAC,mCAAA,GAV0E,CAAvE"}
@@ -19,6 +19,10 @@ const createListFilters = ({
19
19
  ${field.fieldId}_lte: Number
20
20
  ${field.fieldId}_gt: Number
21
21
  ${field.fieldId}_gte: Number
22
+ # there must be two numbers sent in the array
23
+ ${field.fieldId}_between: [Number!]
24
+ # there must be two numbers sent in the array
25
+ ${field.fieldId}_not_between: [Number!]
22
26
  `;
23
27
  };
24
28
 
@@ -1 +1 @@
1
- {"version":3,"names":["createListFilters","field","fieldId","createNumberField","name","type","fieldType","isSortable","isSearchable","read","createGetFilters","createTypeField","multipleValues","manage","createInputField","createGraphQLInputField"],"sources":["number.ts"],"sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFiltersParams) => {\n return `\n ${field.fieldId}: Number\n ${field.fieldId}_not: Number\n ${field.fieldId}_in: [Number]\n ${field.fieldId}_not_in: [Number]\n ${field.fieldId}_lt: Number\n ${field.fieldId}_lte: Number\n ${field.fieldId}_gt: Number\n ${field.fieldId}_gte: Number\n `;\n};\n\nexport const createNumberField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-number\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"number\",\n isSortable: true,\n isSearchable: true,\n read: {\n createGetFilters({ field }) {\n return `${field.fieldId}: Number`;\n },\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [Number]`;\n }\n\n return `${field.fieldId}: Number`;\n }\n },\n manage: {\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return field.fieldId + \": [Number]\";\n }\n\n return field.fieldId + \": Number\";\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"Number\");\n }\n }\n };\n};\n"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,iBAAiB,GAAG,CAAC;EAAEC;AAAF,CAAD,KAAwC;EAC9D,OAAQ;AACZ,UAAUA,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,KATI;AAUH,CAXD;;AAaO,MAAMC,iBAAiB,GAAG,MAAoC;EACjE,OAAO;IACHC,IAAI,EAAE,mCADH;IAEHC,IAAI,EAAE,4BAFH;IAGHC,SAAS,EAAE,QAHR;IAIHC,UAAU,EAAE,IAJT;IAKHC,YAAY,EAAE,IALX;IAMHC,IAAI,EAAE;MACFC,gBAAgB,CAAC;QAAET;MAAF,CAAD,EAAY;QACxB,OAAQ,GAAEA,KAAK,CAACC,OAAQ,UAAxB;MACH,CAHC;;MAIFF,iBAJE;;MAKFW,eAAe,CAAC;QAAEV;MAAF,CAAD,EAAY;QACvB,IAAIA,KAAK,CAACW,cAAV,EAA0B;UACtB,OAAQ,GAAEX,KAAK,CAACC,OAAQ,YAAxB;QACH;;QAED,OAAQ,GAAED,KAAK,CAACC,OAAQ,UAAxB;MACH;;IAXC,CANH;IAmBHW,MAAM,EAAE;MACJb,iBADI;;MAEJW,eAAe,CAAC;QAAEV;MAAF,CAAD,EAAY;QACvB,IAAIA,KAAK,CAACW,cAAV,EAA0B;UACtB,OAAOX,KAAK,CAACC,OAAN,GAAgB,YAAvB;QACH;;QAED,OAAOD,KAAK,CAACC,OAAN,GAAgB,UAAvB;MACH,CARG;;MASJY,gBAAgB,CAAC;QAAEb;MAAF,CAAD,EAAY;QACxB,OAAO,IAAAc,gCAAA,EAAwBd,KAAxB,EAA+B,QAA/B,CAAP;MACH;;IAXG;EAnBL,CAAP;AAiCH,CAlCM"}
1
+ {"version":3,"names":["createListFilters","field","fieldId","createNumberField","name","type","fieldType","isSortable","isSearchable","read","createGetFilters","createTypeField","multipleValues","manage","createInputField","createGraphQLInputField"],"sources":["number.ts"],"sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFiltersParams) => {\n return `\n ${field.fieldId}: Number\n ${field.fieldId}_not: Number\n ${field.fieldId}_in: [Number]\n ${field.fieldId}_not_in: [Number]\n ${field.fieldId}_lt: Number\n ${field.fieldId}_lte: Number\n ${field.fieldId}_gt: Number\n ${field.fieldId}_gte: Number\n # there must be two numbers sent in the array\n ${field.fieldId}_between: [Number!]\n # there must be two numbers sent in the array\n ${field.fieldId}_not_between: [Number!]\n `;\n};\n\nexport const createNumberField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-number\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"number\",\n isSortable: true,\n isSearchable: true,\n read: {\n createGetFilters({ field }) {\n return `${field.fieldId}: Number`;\n },\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [Number]`;\n }\n\n return `${field.fieldId}: Number`;\n }\n },\n manage: {\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return field.fieldId + \": [Number]\";\n }\n\n return field.fieldId + \": Number\";\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"Number\");\n }\n }\n };\n};\n"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,iBAAiB,GAAG,CAAC;EAAEC;AAAF,CAAD,KAAwC;EAC9D,OAAQ;AACZ,UAAUA,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB;AACA,UAAUD,KAAK,CAACC,OAAQ;AACxB;AACA,UAAUD,KAAK,CAACC,OAAQ;AACxB,KAbI;AAcH,CAfD;;AAiBO,MAAMC,iBAAiB,GAAG,MAAoC;EACjE,OAAO;IACHC,IAAI,EAAE,mCADH;IAEHC,IAAI,EAAE,4BAFH;IAGHC,SAAS,EAAE,QAHR;IAIHC,UAAU,EAAE,IAJT;IAKHC,YAAY,EAAE,IALX;IAMHC,IAAI,EAAE;MACFC,gBAAgB,CAAC;QAAET;MAAF,CAAD,EAAY;QACxB,OAAQ,GAAEA,KAAK,CAACC,OAAQ,UAAxB;MACH,CAHC;;MAIFF,iBAJE;;MAKFW,eAAe,CAAC;QAAEV;MAAF,CAAD,EAAY;QACvB,IAAIA,KAAK,CAACW,cAAV,EAA0B;UACtB,OAAQ,GAAEX,KAAK,CAACC,OAAQ,YAAxB;QACH;;QAED,OAAQ,GAAED,KAAK,CAACC,OAAQ,UAAxB;MACH;;IAXC,CANH;IAmBHW,MAAM,EAAE;MACJb,iBADI;;MAEJW,eAAe,CAAC;QAAEV;MAAF,CAAD,EAAY;QACvB,IAAIA,KAAK,CAACW,cAAV,EAA0B;UACtB,OAAOX,KAAK,CAACC,OAAN,GAAgB,YAAvB;QACH;;QAED,OAAOD,KAAK,CAACC,OAAN,GAAgB,UAAvB;MACH,CARG;;MASJY,gBAAgB,CAAC;QAAEb;MAAF,CAAD,EAAY;QACxB,OAAO,IAAAc,gCAAA,EAAwBd,KAAxB,EAA+B,QAA/B,CAAP;MACH;;IAXG;EAnBL,CAAP;AAiCH,CAlCM"}
@@ -7,80 +7,82 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.createObjectField = void 0;
9
9
 
10
- var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
11
-
12
- var _renderFields = require("../utils/renderFields");
13
-
14
- var _renderInputFields = require("../utils/renderInputFields");
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
11
 
16
- var _createTypeName = require("../utils/createTypeName");
12
+ var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
17
13
 
18
14
  var _helpers = require("./helpers");
19
15
 
20
- const typeFromField = params => {
21
- var _field$settings;
16
+ var _createTypeFromFields = require("../utils/createTypeFromFields");
17
+
18
+ const createChildTypeDefs = params => {
19
+ var _field$settings, _field$settings2;
22
20
 
23
21
  const {
24
- typeOfType,
25
- model,
26
- type,
27
22
  field,
28
- fieldTypePlugins
23
+ plugins,
24
+ model,
25
+ endpointType
29
26
  } = params;
30
- const typeSuffix = typeOfType === "input" ? "Input" : "";
31
- const typeName = (0, _createTypeName.createTypeName)(model.modelId);
32
- const mTypeName = (0, _createTypeName.createManageTypeName)(typeName); // `field` is an "object" field
33
-
34
27
  const fields = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
35
- const fieldTypeName = `${mTypeName}_${(0, _upperFirst.default)(field.fieldId)}`;
36
- const typeFields = [];
37
- const nestedTypes = []; // Once the loop below starts, we'll be executing a recursive "object" type generation.
38
- // The main trick here is that nested objects don't know who the parent is, and will generate
39
- // type names using the "model", as if they're at the top level:
40
- // Every time the types are returned, we need to replace the model name in the generated type name
41
- // with the actual prefix which includes parent field name type.
42
-
43
- const replace = new RegExp(`${mTypeName}_`, "g");
44
-
45
- for (const f of fields) {
46
- const result = typeOfType === "type" ? (0, _renderFields.renderField)({
47
- field: f,
48
- type,
49
- model,
50
- fieldTypePlugins
51
- }) : (0, _renderInputFields.renderInputField)({
52
- field: f,
28
+ const typeName = createTypeName({
29
+ model,
30
+ field,
31
+ parents: (_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.parents
32
+ });
33
+ const filters = fields.map(child => {
34
+ var _child$settings;
35
+
36
+ const createListFilters = plugins[child.type][endpointType].createListFilters;
37
+
38
+ if (!createListFilters) {
39
+ return null;
40
+ }
41
+
42
+ const filters = createListFilters({
53
43
  model,
54
- fieldTypePlugins
44
+ field: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
45
+ settings: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child.settings), {}, {
46
+ parents: (((_child$settings = child.settings) === null || _child$settings === void 0 ? void 0 : _child$settings.parents) || []).concat([field.fieldId])
47
+ })
48
+ }),
49
+ plugins
55
50
  });
56
51
 
57
- if (!result) {
58
- continue;
52
+ if (!filters) {
53
+ return null;
59
54
  }
60
55
 
61
- const {
62
- fields,
63
- typeDefs
64
- } = result;
65
- typeFields.push(fields.replace(replace, `${fieldTypeName}_`));
56
+ return filters;
57
+ }).filter(Boolean).join("\n");
58
+ return `input ${typeName}WhereInput {
59
+ ${filters}
60
+ }`;
61
+ };
66
62
 
67
- if (typeDefs) {
68
- nestedTypes.push(typeDefs.replace(replace, `${fieldTypeName}_`));
69
- }
70
- }
63
+ const createTypeName = params => {
64
+ const {
65
+ model,
66
+ parents = [],
67
+ field
68
+ } = params;
69
+ return [model.modelId].concat(parents).concat([field.fieldId]).filter(Boolean).map(id => {
70
+ return (0, _upperFirst.default)(id);
71
+ }).join("_");
72
+ };
71
73
 
72
- return {
73
- fieldType: `${fieldTypeName}${typeSuffix}`,
74
- typeDefs:
75
- /* GraphQL */
76
- `
77
- ${nestedTypes.join("\n")}
78
-
79
- ${typeOfType} ${fieldTypeName}${typeSuffix} {
80
- ${typeFields.join("\n")}
81
- }
82
- `
83
- };
74
+ const createListFilters = ({
75
+ field,
76
+ model
77
+ }) => {
78
+ var _field$settings3;
79
+
80
+ const typeName = createTypeName({
81
+ model,
82
+ field,
83
+ parents: (_field$settings3 = field.settings) === null || _field$settings3 === void 0 ? void 0 : _field$settings3.parents
84
+ });
85
+ return `${field.fieldId}: ${typeName}WhereInput`;
84
86
  };
85
87
 
86
88
  const createObjectField = () => {
@@ -96,11 +98,18 @@ const createObjectField = () => {
96
98
  model,
97
99
  fieldTypePlugins
98
100
  }) {
99
- const result = typeFromField({
101
+ var _field$settings4, _field$settings5;
102
+
103
+ const result = (0, _createTypeFromFields.createTypeFromFields)({
100
104
  typeOfType: "type",
101
105
  model,
102
106
  type: "read",
103
- field,
107
+ typeNamePrefix: createTypeName({
108
+ model,
109
+ field,
110
+ parents: (_field$settings4 = field.settings) === null || _field$settings4 === void 0 ? void 0 : _field$settings4.parents
111
+ }),
112
+ fields: ((_field$settings5 = field.settings) === null || _field$settings5 === void 0 ? void 0 : _field$settings5.fields) || [],
104
113
  fieldTypePlugins
105
114
  });
106
115
 
@@ -112,9 +121,15 @@ const createObjectField = () => {
112
121
  fieldType,
113
122
  typeDefs
114
123
  } = result;
124
+ const childTypeDefs = createChildTypeDefs({
125
+ model,
126
+ field,
127
+ plugins: fieldTypePlugins,
128
+ endpointType: "read"
129
+ });
115
130
  return {
116
131
  fields: `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,
117
- typeDefs
132
+ typeDefs: `${typeDefs}${childTypeDefs}`
118
133
  };
119
134
  },
120
135
 
@@ -123,9 +138,9 @@ const createObjectField = () => {
123
138
  createFieldResolvers,
124
139
  graphQLType
125
140
  }) {
126
- var _field$settings2;
141
+ var _field$settings6;
127
142
 
128
- if (!((_field$settings2 = field.settings) !== null && _field$settings2 !== void 0 && _field$settings2.fields) || field.settings.fields.length === 0) {
143
+ if (!((_field$settings6 = field.settings) !== null && _field$settings6 !== void 0 && _field$settings6.fields) || field.settings.fields.length === 0) {
129
144
  return false;
130
145
  }
131
146
 
@@ -138,8 +153,9 @@ const createObjectField = () => {
138
153
  resolver: null,
139
154
  typeResolvers: typeResolvers || {}
140
155
  };
141
- }
156
+ },
142
157
 
158
+ createListFilters
143
159
  },
144
160
  manage: {
145
161
  createTypeField({
@@ -147,11 +163,18 @@ const createObjectField = () => {
147
163
  field,
148
164
  fieldTypePlugins
149
165
  }) {
150
- const result = typeFromField({
166
+ var _field$settings7, _field$settings8;
167
+
168
+ const result = (0, _createTypeFromFields.createTypeFromFields)({
151
169
  typeOfType: "type",
152
170
  model,
153
171
  type: "manage",
154
- field,
172
+ typeNamePrefix: createTypeName({
173
+ model,
174
+ field,
175
+ parents: (_field$settings7 = field.settings) === null || _field$settings7 === void 0 ? void 0 : _field$settings7.parents
176
+ }),
177
+ fields: ((_field$settings8 = field.settings) === null || _field$settings8 === void 0 ? void 0 : _field$settings8.fields) || [],
155
178
  fieldTypePlugins
156
179
  });
157
180
 
@@ -163,9 +186,15 @@ const createObjectField = () => {
163
186
  fieldType,
164
187
  typeDefs
165
188
  } = result;
189
+ const childTypeDefs = createChildTypeDefs({
190
+ model,
191
+ field,
192
+ plugins: fieldTypePlugins,
193
+ endpointType: "manage"
194
+ });
166
195
  return {
167
196
  fields: `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,
168
- typeDefs
197
+ typeDefs: `${typeDefs}${childTypeDefs}`
169
198
  };
170
199
  },
171
200
 
@@ -174,11 +203,18 @@ const createObjectField = () => {
174
203
  field,
175
204
  fieldTypePlugins
176
205
  }) {
177
- const result = typeFromField({
206
+ var _field$settings9, _field$settings10;
207
+
208
+ const result = (0, _createTypeFromFields.createTypeFromFields)({
178
209
  typeOfType: "input",
179
210
  model,
180
211
  type: "manage",
181
- field,
212
+ typeNamePrefix: createTypeName({
213
+ model,
214
+ field,
215
+ parents: (_field$settings9 = field.settings) === null || _field$settings9 === void 0 ? void 0 : _field$settings9.parents
216
+ }),
217
+ fields: ((_field$settings10 = field.settings) === null || _field$settings10 === void 0 ? void 0 : _field$settings10.fields) || [],
182
218
  fieldTypePlugins
183
219
  });
184
220
 
@@ -201,9 +237,9 @@ const createObjectField = () => {
201
237
  field,
202
238
  createFieldResolvers
203
239
  }) {
204
- var _field$settings3;
240
+ var _field$settings11;
205
241
 
206
- if (!((_field$settings3 = field.settings) !== null && _field$settings3 !== void 0 && _field$settings3.fields) || field.settings.fields.length === 0) {
242
+ if (!((_field$settings11 = field.settings) !== null && _field$settings11 !== void 0 && _field$settings11.fields) || field.settings.fields.length === 0) {
207
243
  return false;
208
244
  }
209
245
 
@@ -216,8 +252,9 @@ const createObjectField = () => {
216
252
  resolver: null,
217
253
  typeResolvers: typeResolvers || {}
218
254
  };
219
- }
255
+ },
220
256
 
257
+ createListFilters
221
258
  }
222
259
  };
223
260
  };
@@ -1 +1 @@
1
- {"version":3,"names":["typeFromField","params","typeOfType","model","type","field","fieldTypePlugins","typeSuffix","typeName","createTypeName","modelId","mTypeName","createManageTypeName","fields","settings","fieldTypeName","upperFirst","fieldId","typeFields","nestedTypes","replace","RegExp","f","result","renderField","renderInputField","typeDefs","push","fieldType","join","createObjectField","name","isSortable","isSearchable","read","createTypeField","multipleValues","createResolver","createFieldResolvers","graphQLType","length","typeResolvers","resolver","manage","createInputField","attachRequiredFieldValue"],"sources":["object.ts"],"sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport {\n ApiEndpoint,\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { renderField } from \"~/utils/renderFields\";\nimport { renderInputField } from \"~/utils/renderInputFields\";\nimport { createManageTypeName, createTypeName } from \"~/utils/createTypeName\";\nimport { attachRequiredFieldValue } from \"./helpers\";\n\ninterface TypeFromFieldParams {\n typeOfType: string;\n model: CmsModel;\n type: ApiEndpoint;\n field: CmsModelField;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface TypeFromFieldResponse {\n fieldType: string;\n typeDefs: string;\n}\nconst typeFromField = (params: TypeFromFieldParams): TypeFromFieldResponse | null => {\n const { typeOfType, model, type, field, fieldTypePlugins } = params;\n const typeSuffix = typeOfType === \"input\" ? \"Input\" : \"\";\n const typeName = createTypeName(model.modelId);\n const mTypeName = createManageTypeName(typeName);\n\n // `field` is an \"object\" field\n const fields: CmsModelField[] = field.settings?.fields || [];\n\n const fieldTypeName = `${mTypeName}_${upperFirst(field.fieldId)}`;\n\n const typeFields = [];\n const nestedTypes = [];\n\n // Once the loop below starts, we'll be executing a recursive \"object\" type generation.\n // The main trick here is that nested objects don't know who the parent is, and will generate\n // type names using the \"model\", as if they're at the top level:\n // Every time the types are returned, we need to replace the model name in the generated type name\n // with the actual prefix which includes parent field name type.\n const replace = new RegExp(`${mTypeName}_`, \"g\");\n\n for (const f of fields) {\n const result =\n typeOfType === \"type\"\n ? renderField({ field: f, type, model, fieldTypePlugins })\n : renderInputField({ field: f, model, fieldTypePlugins });\n\n if (!result) {\n continue;\n }\n\n const { fields, typeDefs } = result;\n\n typeFields.push(fields.replace(replace, `${fieldTypeName}_`));\n if (typeDefs) {\n nestedTypes.push(typeDefs.replace(replace, `${fieldTypeName}_`));\n }\n }\n\n return {\n fieldType: `${fieldTypeName}${typeSuffix}`,\n typeDefs: /* GraphQL */ `\n ${nestedTypes.join(\"\\n\")}\n \n ${typeOfType} ${fieldTypeName}${typeSuffix} {\n ${typeFields.join(\"\\n\")}\n }\n `\n };\n};\n\nexport const createObjectField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-object\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"object\",\n isSortable: false,\n isSearchable: false,\n read: {\n createTypeField({ field, model, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"type\",\n model,\n type: \"read\",\n field,\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: `${field.fieldId}: ${\n field.multipleValues ? `[${fieldType}!]` : fieldType\n }`,\n typeDefs\n };\n },\n createResolver({ field, createFieldResolvers, graphQLType }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n }\n },\n manage: {\n createTypeField({ model, field, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"type\",\n model,\n type: \"manage\",\n field,\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: `${field.fieldId}: ${\n field.multipleValues ? `[${fieldType}!]` : fieldType\n }`,\n typeDefs\n };\n },\n createInputField({ model, field, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"input\",\n model,\n type: \"manage\",\n field,\n fieldTypePlugins\n });\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: attachRequiredFieldValue(\n `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,\n field\n ),\n typeDefs\n };\n },\n createResolver({ graphQLType, field, createFieldResolvers }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n }\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createChildTypeDefs","params","field","plugins","model","endpointType","fields","settings","typeName","createTypeName","parents","filters","map","child","createListFilters","type","concat","fieldId","filter","Boolean","join","modelId","id","lodashUpperFirst","createObjectField","name","fieldType","isSortable","isSearchable","read","createTypeField","fieldTypePlugins","result","createTypeFromFields","typeOfType","typeNamePrefix","typeDefs","childTypeDefs","multipleValues","createResolver","createFieldResolvers","graphQLType","length","upperFirst","typeResolvers","resolver","manage","createInputField","attachRequiredFieldValue"],"sources":["object.ts"],"sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport {\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { attachRequiredFieldValue } from \"./helpers\";\nimport lodashUpperFirst from \"lodash/upperFirst\";\nimport { createTypeFromFields } from \"~/utils/createTypeFromFields\";\n\ninterface AttachTypeDefinitionsParams {\n model: CmsModel;\n field: CmsModelField;\n plugins: CmsFieldTypePlugins;\n endpointType: \"manage\" | \"read\";\n}\nconst createChildTypeDefs = (params: AttachTypeDefinitionsParams): string => {\n const { field, plugins, model, endpointType } = params;\n const fields = field.settings?.fields || [];\n\n const typeName = createTypeName({\n model,\n field,\n parents: field.settings?.parents\n });\n\n const filters = fields\n .map(child => {\n const createListFilters = plugins[child.type][endpointType].createListFilters;\n if (!createListFilters) {\n return null;\n }\n\n const filters = createListFilters({\n model,\n field: {\n ...child,\n settings: {\n ...child.settings,\n parents: (child.settings?.parents || []).concat([field.fieldId])\n }\n },\n plugins\n });\n if (!filters) {\n return null;\n }\n return filters;\n })\n .filter(Boolean)\n .join(\"\\n\");\n return `input ${typeName}WhereInput {\n ${filters}\n }`;\n};\n\ninterface CreateTypeNameParams {\n model: CmsModel;\n parents?: string[];\n field: CmsModelField;\n}\nconst createTypeName = (params: CreateTypeNameParams): string => {\n const { model, parents = [], field } = params;\n return [model.modelId]\n .concat(parents)\n .concat([field.fieldId])\n .filter(Boolean)\n .map(id => {\n return lodashUpperFirst(id);\n })\n .join(\"_\");\n};\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n model: CmsModel;\n}\nconst createListFilters = ({ field, model }: CreateListFiltersParams) => {\n const typeName = createTypeName({\n model,\n field,\n parents: field.settings?.parents\n });\n\n return `${field.fieldId}: ${typeName}WhereInput`;\n};\n\nexport const createObjectField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-object\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"object\",\n isSortable: false,\n isSearchable: false,\n read: {\n createTypeField({ field, model, fieldTypePlugins }) {\n const result = createTypeFromFields({\n typeOfType: \"type\",\n model,\n type: \"read\",\n typeNamePrefix: createTypeName({\n model,\n field,\n parents: field.settings?.parents\n }),\n fields: field.settings?.fields || [],\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n const childTypeDefs = createChildTypeDefs({\n model,\n field,\n plugins: fieldTypePlugins,\n endpointType: \"read\"\n });\n\n return {\n fields: `${field.fieldId}: ${\n field.multipleValues ? `[${fieldType}!]` : fieldType\n }`,\n typeDefs: `${typeDefs}${childTypeDefs}`\n };\n },\n createResolver({ field, createFieldResolvers, graphQLType }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n },\n createListFilters\n },\n manage: {\n createTypeField({ model, field, fieldTypePlugins }) {\n const result = createTypeFromFields({\n typeOfType: \"type\",\n model,\n type: \"manage\",\n typeNamePrefix: createTypeName({\n model,\n field,\n parents: field.settings?.parents\n }),\n fields: field.settings?.fields || [],\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n const childTypeDefs = createChildTypeDefs({\n model,\n field,\n plugins: fieldTypePlugins,\n endpointType: \"manage\"\n });\n\n return {\n fields: `${field.fieldId}: ${\n field.multipleValues ? `[${fieldType}!]` : fieldType\n }`,\n typeDefs: `${typeDefs}${childTypeDefs}`\n };\n },\n createInputField({ model, field, fieldTypePlugins }) {\n const result = createTypeFromFields({\n typeOfType: \"input\",\n model,\n type: \"manage\",\n typeNamePrefix: createTypeName({\n model,\n field,\n parents: field.settings?.parents\n }),\n fields: field.settings?.fields || [],\n fieldTypePlugins\n });\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: attachRequiredFieldValue(\n `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,\n field\n ),\n typeDefs\n };\n },\n createResolver({ graphQLType, field, createFieldResolvers }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n },\n createListFilters\n }\n };\n};\n"],"mappings":"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"}
@@ -16,7 +16,7 @@ var _utils = require("@webiny/utils");
16
16
  var _helpers = require("./helpers");
17
17
 
18
18
  const createUnionTypeName = (model, field) => {
19
- return `${(0, _createTypeName.createReadTypeName)(model.modelId)}${(0, _createTypeName.createReadTypeName)(field.fieldId)}`;
19
+ return `${(0, _createTypeName.createReadTypeName)(model.modelId)}_${(0, _createTypeName.createReadTypeName)(field.fieldId)}`;
20
20
  };
21
21
 
22
22
  const createListFilters = ({
@@ -81,7 +81,13 @@ const createRefField = () => {
81
81
 
82
82
  const models = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.models) || [];
83
83
  const gqlType = models.length > 1 ? createUnionTypeName(model, field) : (0, _createTypeName.createReadTypeName)(models[0].modelId);
84
- return field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`;
84
+ const typeDefs = models.length > 1 ? `union ${gqlType} = ${getFieldModels(field).map(({
85
+ modelId
86
+ }) => (0, _createTypeName.createReadTypeName)(modelId)).join(" | ")}` : "";
87
+ return {
88
+ fields: field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`,
89
+ typeDefs
90
+ };
85
91
  },
86
92
 
87
93
  /**
@@ -178,37 +184,9 @@ const createRefField = () => {
178
184
  };
179
185
  },
180
186
 
181
- createSchema({
182
- models
183
- }) {
184
- const unionFields = [];
185
-
186
- for (const model of models) {
187
- // Generate a dedicated union type for every `ref` field which has more than 1 content model assigned.
188
- model.fields.filter(field => {
189
- var _field$settings3;
190
-
191
- return field.type === "ref" && (((_field$settings3 = field.settings) === null || _field$settings3 === void 0 ? void 0 : _field$settings3.models) || []).length > 1;
192
- }).forEach(field => unionFields.push({
193
- model,
194
- field,
195
- typeName: createUnionTypeName(model, field)
196
- }));
197
- }
198
-
199
- const unionFieldsTypeDef = unionFields.map(({
200
- field,
201
- typeName
202
- }) => `union ${typeName} = ${getFieldModels(field).map(({
203
- modelId
204
- }) => (0, _createTypeName.createReadTypeName)(modelId)).join(" | ")}`).join("\n");
205
- const filteringTypeDef = `
206
- ${createFilteringTypeDef()}
207
-
208
- ${unionFieldsTypeDef}
209
- `;
187
+ createSchema() {
210
188
  return {
211
- typeDefs: filteringTypeDef,
189
+ typeDefs: createFilteringTypeDef(),
212
190
  resolvers: {}
213
191
  };
214
192
  },
@@ -218,23 +196,27 @@ const createRefField = () => {
218
196
  manage: {
219
197
  createSchema() {
220
198
  /**
221
- * entryId in RefFieldInput is deprecated but cannot mark it as GraphQL does not allow marking input fields as deprecated
199
+ * `entryId` in `RefFieldInput` is deprecated, but we cannot mark it as such in GraphQL.
200
+ * `entryId` is extracted at runtime from the `id` which contains both the `entryId` and revision number.
201
+ * See: `packages/api-headless-cms/src/crud/contentEntry/referenceFieldsMapping.ts`
222
202
  */
223
203
  return {
224
- typeDefs: `
225
- type RefField {
226
- modelId: String!
227
- entryId: ID!
228
- id: ID!
229
- }
230
-
231
- input RefFieldInput {
232
- modelId: String!
233
- id: ID!
234
- }
235
-
236
- ${createFilteringTypeDef()}
237
- `,
204
+ typeDefs:
205
+ /* GraphQL */
206
+ `
207
+ type RefField {
208
+ modelId: String!
209
+ entryId: ID!
210
+ id: ID!
211
+ }
212
+
213
+ input RefFieldInput {
214
+ modelId: String!
215
+ id: ID!
216
+ }
217
+
218
+ ${createFilteringTypeDef()}
219
+ `,
238
220
  resolvers: {
239
221
  RefField: {
240
222
  entryId: parent => {
@@ -1 +1 @@
1
- {"version":3,"names":["createUnionTypeName","model","field","createReadTypeName","modelId","fieldId","createListFilters","createFilteringTypeDef","appendTypename","entries","typename","map","item","__typename","getFieldModels","settings","Array","isArray","models","modelIdToTypeName","Map","createRefField","name","type","fieldType","isSortable","isSearchable","read","createTypeField","gqlType","length","multipleValues","createResolver","params","set","parent","_","context","cms","initialValue","value","entriesByModel","reduce","collection","ref","includes","entryId","push","getters","Object","keys","idList","getModelManager","READ","getPublishedByIds","getLatestByIds","get","Promise","all","then","results","result","concat","revisions","createSchema","unionFields","fields","filter","forEach","typeName","unionFieldsTypeDef","join","filteringTypeDef","typeDefs","resolvers","manage","RefField","id","parseIdentifier","createInputField","createGraphQLInputField"],"sources":["ref.ts"],"sourcesContent":["import {\n CmsEntry,\n CmsContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModel,\n CmsModelField\n} from \"~/types\";\nimport { createReadTypeName } from \"~/utils/createTypeName\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface RefFieldValue {\n id?: string;\n entryId: string;\n modelId: string;\n}\n\ninterface UnionField {\n model: CmsModel;\n field: CmsModelField;\n typeName: string;\n}\n\nconst createUnionTypeName = (model: CmsModel, field: CmsModelField) => {\n return `${createReadTypeName(model.modelId)}${createReadTypeName(field.fieldId)}`;\n};\n\ninterface CreateListFilterParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFilterParams) => {\n return `\n ${field.fieldId}: RefFieldWhereInput\n `;\n};\n\nconst createFilteringTypeDef = () => {\n return `\n input RefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n `;\n};\n\nconst appendTypename = (entries: CmsEntry[], typename: string): CmsEntry[] => {\n return entries.map(item => {\n return {\n ...item,\n __typename: typename\n };\n });\n};\n/**\n * We cast settings.models as object to have modelId because internally we know that it is so.\n * Internal stuff so we are sure that settings.models contains what we require.\n */\nconst getFieldModels = (field: CmsModelField): Pick<CmsModel, \"modelId\">[] => {\n if (!field.settings || Array.isArray(field.settings.models) === false) {\n return [];\n }\n return field.settings.models as Pick<CmsModel, \"modelId\">[];\n};\n\nconst modelIdToTypeName = new Map();\n\nexport const createRefField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-ref\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"ref\",\n isSortable: false,\n isSearchable: true,\n read: {\n createTypeField({ model, field }) {\n const models = field.settings?.models || [];\n const gqlType =\n models.length > 1\n ? createUnionTypeName(model, field)\n : createReadTypeName(models[0].modelId);\n\n return field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`;\n },\n /**\n * TS is complaining about mixed types for createResolver.\n * TODO @ts-refactor @pavel Maybe we should have a single createResolver method?\n */\n // @ts-ignore\n createResolver(params) {\n const { field } = params;\n // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.\n const models = field.settings?.models || [];\n for (const item of models) {\n modelIdToTypeName.set(item.modelId, createReadTypeName(item.modelId));\n }\n\n return async (parent, _, context: CmsContext) => {\n const { cms } = context;\n\n // Get field value for this entry\n const initialValue = parent[field.fieldId] as RefFieldValue | RefFieldValue[];\n\n if (!initialValue) {\n return null;\n }\n\n if (field.multipleValues) {\n /**\n * We cast because value really can be array and single value.\n * At this point, we are 99% sure that it is an array (+ we check for it)\n */\n const value = initialValue as RefFieldValue[];\n if (Array.isArray(value) === false || value.length === 0) {\n return [];\n }\n\n const entriesByModel = value.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.entryId) === true) {\n return collection;\n }\n\n collection[ref.modelId].push(ref.entryId);\n\n return collection;\n }, {} as Record<string, string[]>);\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(modelId);\n\n let entries: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n entries = await model.getPublishedByIds(idList);\n }\n // `preview` and `manage` with `latest` data\n else {\n entries = await model.getLatestByIds(idList);\n }\n\n return appendTypename(entries, modelIdToTypeName.get(modelId));\n });\n\n return await Promise.all(getters).then((results: any[]) =>\n results.reduce((result, item) => result.concat(item), [])\n );\n }\n\n const value = initialValue as RefFieldValue;\n\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(value.modelId);\n\n let revisions: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n revisions = await model.getPublishedByIds([value.entryId]);\n }\n // `preview` API works with `latest` data\n else {\n revisions = await model.getLatestByIds([value.entryId]);\n }\n\n /**\n * If there are no revisions we must return null.\n */\n if (!revisions || revisions.length === 0) {\n return null;\n }\n return {\n ...revisions[0],\n __typename: modelIdToTypeName.get(value.modelId)\n };\n };\n },\n createSchema({ models }) {\n const unionFields: UnionField[] = [];\n for (const model of models) {\n // Generate a dedicated union type for every `ref` field which has more than 1 content model assigned.\n model.fields\n .filter(\n field =>\n field.type === \"ref\" && (field.settings?.models || []).length > 1\n )\n .forEach(field =>\n unionFields.push({\n model,\n field,\n typeName: createUnionTypeName(model, field)\n })\n );\n }\n const unionFieldsTypeDef = unionFields\n .map(\n ({ field, typeName }) =>\n `union ${typeName} = ${getFieldModels(field)\n .map(({ modelId }) => createReadTypeName(modelId))\n .join(\" | \")}`\n )\n .join(\"\\n\");\n\n const filteringTypeDef = `\n ${createFilteringTypeDef()}\n \n ${unionFieldsTypeDef}\n `;\n\n return {\n typeDefs: filteringTypeDef,\n resolvers: {}\n };\n },\n createListFilters\n },\n manage: {\n createSchema() {\n /**\n * entryId in RefFieldInput is deprecated but cannot mark it as GraphQL does not allow marking input fields as deprecated\n */\n return {\n typeDefs: `\n type RefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n \n input RefFieldInput {\n modelId: String!\n id: ID!\n }\n \n ${createFilteringTypeDef()}\n `,\n resolvers: {\n RefField: {\n entryId: (parent: RefFieldValue) => {\n const { id } = parseIdentifier(parent.entryId || parent.id);\n return id;\n },\n id: (parent: RefFieldValue) => {\n return parent.id || parent.entryId;\n }\n }\n }\n };\n },\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"RefFieldInput\");\n },\n createListFilters\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createUnionTypeName","model","field","createReadTypeName","modelId","fieldId","createListFilters","createFilteringTypeDef","appendTypename","entries","typename","map","item","__typename","getFieldModels","settings","Array","isArray","models","modelIdToTypeName","Map","createRefField","name","type","fieldType","isSortable","isSearchable","read","createTypeField","gqlType","length","typeDefs","join","fields","multipleValues","createResolver","params","set","parent","_","context","cms","initialValue","value","entriesByModel","reduce","collection","ref","includes","entryId","push","getters","Object","keys","idList","getModelManager","READ","getPublishedByIds","getLatestByIds","get","Promise","all","then","results","result","concat","revisions","createSchema","resolvers","manage","RefField","id","parseIdentifier","createInputField","createGraphQLInputField"],"sources":["ref.ts"],"sourcesContent":["import {\n CmsEntry,\n CmsContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModel,\n CmsModelField\n} from \"~/types\";\nimport { createReadTypeName } from \"~/utils/createTypeName\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface RefFieldValue {\n /**\n * `id` is optional for backwards compatibility with records created before this property was introduced.\n */\n id?: string;\n entryId: string;\n modelId: string;\n}\n\nconst createUnionTypeName = (model: CmsModel, field: CmsModelField) => {\n return `${createReadTypeName(model.modelId)}_${createReadTypeName(field.fieldId)}`;\n};\n\ninterface CreateListFilterParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFilterParams) => {\n return `\n ${field.fieldId}: RefFieldWhereInput\n `;\n};\n\nconst createFilteringTypeDef = () => {\n return `\n input RefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n `;\n};\n\nconst appendTypename = (entries: CmsEntry[], typename: string): CmsEntry[] => {\n return entries.map(item => {\n return {\n ...item,\n __typename: typename\n };\n });\n};\n/**\n * We cast settings.models as object to have modelId because internally we know that it is so.\n * Internal stuff so we are sure that settings.models contains what we require.\n */\nconst getFieldModels = (field: CmsModelField): Pick<CmsModel, \"modelId\">[] => {\n if (!field.settings || Array.isArray(field.settings.models) === false) {\n return [];\n }\n return field.settings.models as Pick<CmsModel, \"modelId\">[];\n};\n\nconst modelIdToTypeName = new Map();\n\nexport const createRefField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-ref\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"ref\",\n isSortable: false,\n isSearchable: true,\n read: {\n createTypeField({ model, field }) {\n const models = field.settings?.models || [];\n const gqlType =\n models.length > 1\n ? createUnionTypeName(model, field)\n : createReadTypeName(models[0].modelId);\n\n const typeDefs =\n models.length > 1\n ? `union ${gqlType} = ${getFieldModels(field)\n .map(({ modelId }) => createReadTypeName(modelId))\n .join(\" | \")}`\n : \"\";\n\n return {\n fields: field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`,\n typeDefs\n };\n },\n /**\n * TS is complaining about mixed types for createResolver.\n * TODO @ts-refactor @pavel Maybe we should have a single createResolver method?\n */\n // @ts-ignore\n createResolver(params) {\n const { field } = params;\n // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.\n const models = field.settings?.models || [];\n for (const item of models) {\n modelIdToTypeName.set(item.modelId, createReadTypeName(item.modelId));\n }\n\n return async (parent, _, context: CmsContext) => {\n const { cms } = context;\n\n // Get field value for this entry\n const initialValue = parent[field.fieldId] as RefFieldValue | RefFieldValue[];\n\n if (!initialValue) {\n return null;\n }\n\n if (field.multipleValues) {\n /**\n * We cast because value really can be array and single value.\n * At this point, we are 99% sure that it is an array (+ we check for it)\n */\n const value = initialValue as RefFieldValue[];\n if (Array.isArray(value) === false || value.length === 0) {\n return [];\n }\n\n const entriesByModel = value.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.entryId) === true) {\n return collection;\n }\n\n collection[ref.modelId].push(ref.entryId);\n\n return collection;\n }, {} as Record<string, string[]>);\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(modelId);\n\n let entries: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n entries = await model.getPublishedByIds(idList);\n }\n // `preview` and `manage` with `latest` data\n else {\n entries = await model.getLatestByIds(idList);\n }\n\n return appendTypename(entries, modelIdToTypeName.get(modelId));\n });\n\n return await Promise.all(getters).then((results: any[]) =>\n results.reduce((result, item) => result.concat(item), [])\n );\n }\n\n const value = initialValue as RefFieldValue;\n\n // Get model manager, to get access to CRUD methods\n const model = await cms.getModelManager(value.modelId);\n\n let revisions: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n revisions = await model.getPublishedByIds([value.entryId]);\n }\n // `preview` API works with `latest` data\n else {\n revisions = await model.getLatestByIds([value.entryId]);\n }\n\n /**\n * If there are no revisions we must return null.\n */\n if (!revisions || revisions.length === 0) {\n return null;\n }\n return {\n ...revisions[0],\n __typename: modelIdToTypeName.get(value.modelId)\n };\n };\n },\n createSchema() {\n return {\n typeDefs: createFilteringTypeDef(),\n resolvers: {}\n };\n },\n createListFilters\n },\n manage: {\n createSchema() {\n /**\n * `entryId` in `RefFieldInput` is deprecated, but we cannot mark it as such in GraphQL.\n * `entryId` is extracted at runtime from the `id` which contains both the `entryId` and revision number.\n * See: `packages/api-headless-cms/src/crud/contentEntry/referenceFieldsMapping.ts`\n */\n return {\n typeDefs: /* GraphQL */ `\n type RefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n\n input RefFieldInput {\n modelId: String!\n id: ID!\n }\n\n ${createFilteringTypeDef()}\n `,\n resolvers: {\n RefField: {\n entryId: (parent: RefFieldValue) => {\n const { id } = parseIdentifier(parent.entryId || parent.id);\n return id;\n },\n id: (parent: RefFieldValue) => {\n return parent.id || parent.entryId;\n }\n }\n }\n };\n },\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"RefFieldInput\");\n },\n createListFilters\n }\n };\n};\n"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -4,7 +4,7 @@ import { entryFieldFromStorageTransform, entryFromStorageTransform, entryToStora
4
4
  export declare type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;
5
5
  export declare const createHeadlessCmsGraphQL: (params?: CreateHeadlessCmsGraphQLParams) => (import("./plugins").CmsParametersPlugin | (import("@webiny/api").ContextPlugin<import("./types").CmsContext> | import("@webiny/handler-graphql/types").GraphQLSchemaPlugin<import("./types").CmsContext> | import("@webiny/plugins/types").PluginCollection)[])[];
6
6
  export declare type ContentContextParams = CrudParams;
7
- export declare const createHeadlessCmsContext: (params: ContentContextParams) => (import("./types").CmsModelFieldToGraphQLPlugin[] | import("./types").ModelManagerPlugin | import("@webiny/api").ContextPlugin<import("./types").CmsContext> | import("./plugins").StorageTransformPlugin<any, any> | import("@webiny/api-upgrade").UpgradePlugin<import("./types").CmsContext>[] | (import("./types").CmsModelFieldValidatorPlugin | import("./types").CmsModelFieldPatternValidatorPlugin[])[] | (import("./fieldConverters/CmsModelObjectFieldConverterPlugin").CmsModelObjectFieldConverterPlugin | import("./fieldConverters/CmsModelDefaultFieldConverterPlugin").CmsModelDefaultFieldConverterPlugin)[])[];
7
+ export declare const createHeadlessCmsContext: (params: ContentContextParams) => (import("./types").ModelManagerPlugin | import("@webiny/api").ContextPlugin<import("./types").CmsContext> | import("./plugins").StorageTransformPlugin<any, any, import("./types").CmsModelField> | import("@webiny/api-upgrade").UpgradePlugin<import("./types").CmsContext>[] | import("./plugins").StorageTransformPlugin<any, any, import("./types").CmsModelDynamicZoneField> | import("./types").CmsModelFieldToGraphQLPlugin<any>[] | (import("./types").CmsModelFieldValidatorPlugin | import("./types").CmsModelFieldPatternValidatorPlugin[])[] | (import("./fieldConverters/CmsModelObjectFieldConverterPlugin").CmsModelObjectFieldConverterPlugin | import("./fieldConverters/CmsModelDefaultFieldConverterPlugin").CmsModelDefaultFieldConverterPlugin)[])[];
8
8
  export * from "./graphqlFields";
9
9
  export * from "./plugins";
10
10
  export { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };