@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.
- package/crud/contentEntry/markLockedFields.js +5 -2
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +9 -5
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +83 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.js +5 -32
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +5 -1
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/models.js +12 -0
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +14 -6
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel.crud.js +22 -0
- package/crud/contentModel.crud.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +52 -14
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/schema/contentModels.js +18 -1
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +9 -5
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +5 -4
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createReadSDL.js +5 -3
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +209 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +21 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/index.d.ts +1 -1
- package/graphqlFields/index.js +3 -1
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/number.js +4 -0
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +109 -72
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +29 -47
- package/graphqlFields/ref.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/package.json +24 -23
- package/plugins/StorageTransformPlugin.d.ts +11 -11
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/storage/object.js +5 -2
- package/storage/object.js.map +1 -1
- package/types.d.ts +85 -40
- package/types.js +11 -7
- package/types.js.map +1 -1
- package/utils/converters/ConverterCollection.js +6 -2
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +15 -0
- package/utils/createTypeFromFields.js +75 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.js +3 -1
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +8 -4
- package/utils/entryStorage.js.map +1 -1
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +12 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/renderFields.js +3 -1
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +8 -3
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +3 -1
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +5 -2
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.js +3 -1
- package/utils/renderSortEnum.js.map +1 -1
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +24 -0
- package/validators/dynamicZone.js.map +1 -0
- package/validators/index.js +3 -1
- 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"}
|
package/graphqlFields/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { CmsModelFieldToGraphQLPlugin } from "../types";
|
|
2
|
-
export declare const createGraphQLFields: () => CmsModelFieldToGraphQLPlugin[];
|
|
2
|
+
export declare const createGraphQLFields: () => CmsModelFieldToGraphQLPlugin<any>[];
|
package/graphqlFields/index.js
CHANGED
|
@@ -23,6 +23,8 @@ var _file = require("./file");
|
|
|
23
23
|
|
|
24
24
|
var _object = require("./object");
|
|
25
25
|
|
|
26
|
-
|
|
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,
|
|
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"}
|
package/graphqlFields/number.js
CHANGED
|
@@ -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,
|
|
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"}
|
package/graphqlFields/object.js
CHANGED
|
@@ -7,80 +7,82 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.createObjectField = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
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
|
|
12
|
+
var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
|
|
17
13
|
|
|
18
14
|
var _helpers = require("./helpers");
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
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
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
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 (!
|
|
58
|
-
|
|
52
|
+
if (!filters) {
|
|
53
|
+
return null;
|
|
59
54
|
}
|
|
60
55
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
return filters;
|
|
57
|
+
}).filter(Boolean).join("\n");
|
|
58
|
+
return `input ${typeName}WhereInput {
|
|
59
|
+
${filters}
|
|
60
|
+
}`;
|
|
61
|
+
};
|
|
66
62
|
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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$
|
|
141
|
+
var _field$settings6;
|
|
127
142
|
|
|
128
|
-
if (!((_field$
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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$
|
|
240
|
+
var _field$settings11;
|
|
205
241
|
|
|
206
|
-
if (!((_field$
|
|
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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"}
|
package/graphqlFields/ref.js
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
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
|
|
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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 => {
|
package/graphqlFields/ref.js.map
CHANGED
|
@@ -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").
|
|
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 };
|