@webiny/api-headless-cms 0.0.0-unstable.611c5af35e → 0.0.0-unstable.615a930a68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context.js +15 -0
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.js +5 -0
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.js +3 -0
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.js +3 -0
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +40 -1
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +25 -2
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +59 -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 +146 -55
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.js +2 -0
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.js +2 -0
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.js +2 -0
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.js +2 -0
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.js +32 -4
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.js +10 -0
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.js +5 -0
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/contentModelManagerFactory.js +7 -0
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
- package/crud/contentModel/createFieldModels.js +6 -0
- package/crud/contentModel/createFieldModels.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +2 -0
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/fieldIdValidation.js +5 -0
- package/crud/contentModel/fieldIdValidation.js.map +1 -1
- package/crud/contentModel/idValidation.js +5 -0
- package/crud/contentModel/idValidation.js.map +1 -1
- package/crud/contentModel/models.js +8 -1
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/systemFields.js.map +1 -1
- package/crud/contentModel/validateLayout.js +8 -0
- package/crud/contentModel/validateLayout.js.map +1 -1
- package/crud/contentModel/validateModel.js +8 -0
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +60 -8
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel.crud.js +96 -11
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.js +12 -0
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.js +8 -0
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.js +5 -0
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup.crud.js +47 -10
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/index.js +16 -0
- package/crud/index.js.map +1 -1
- package/crud/settings.crud.js +12 -0
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +37 -2
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +13 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +53 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.js +4 -0
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.js +9 -5
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +28 -3
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.js +8 -1
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.js +9 -1
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +42 -2
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.js +19 -2
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.js +18 -2
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +21 -3
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +26 -0
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +17 -2
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +10 -0
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +10 -0
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.js +13 -1
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/commonFieldResolvers.js +2 -0
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +3 -0
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +3 -0
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +6 -0
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +16 -0
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +3 -0
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +3 -0
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +3 -0
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +3 -0
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +3 -0
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +3 -0
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +3 -0
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +8 -0
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +3 -0
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +8 -0
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +3 -0
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/schemaPlugins.js +19 -5
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +14 -1
- package/graphql/system.js.map +1 -1
- package/graphqlFields/boolean.js +12 -0
- package/graphqlFields/boolean.js.map +1 -1
- package/graphqlFields/datetime.js +17 -0
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/file.js +8 -0
- package/graphqlFields/file.js.map +1 -1
- package/graphqlFields/helpers.js +10 -0
- package/graphqlFields/helpers.js.map +1 -1
- package/graphqlFields/index.js +11 -0
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/longText.js +10 -0
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +16 -0
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +137 -21
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +51 -17
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText.js +9 -0
- package/graphqlFields/richText.js.map +1 -1
- package/graphqlFields/text.js +11 -0
- package/graphqlFields/text.js.map +1 -1
- package/index.js +19 -0
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.js +16 -0
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/modelManager/index.js +4 -0
- package/modelManager/index.js.map +1 -1
- package/package.json +24 -24
- package/parameters/context.js +4 -0
- package/parameters/context.js.map +1 -1
- package/parameters/header.js +11 -0
- package/parameters/header.js.map +1 -1
- package/parameters/index.js +8 -0
- package/parameters/index.js.map +1 -1
- package/parameters/manual.js +8 -1
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +11 -0
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGroupPlugin.js +8 -0
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js +5 -0
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.js +38 -2
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +7 -0
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.d.ts +1 -1
- package/plugins/StorageTransformPlugin.js +9 -0
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.js +10 -0
- package/plugins/index.js.map +1 -1
- package/storage/default.js +3 -0
- package/storage/default.js.map +1 -1
- package/storage/object.js +18 -0
- package/storage/object.js.map +1 -1
- package/types.d.ts +9 -1
- package/types.js +62 -0
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +26 -3
- package/upgrades/5.33.0/index.js.map +1 -1
- package/upgrades/index.js +3 -0
- package/upgrades/index.js.map +1 -1
- package/utils/access.js +25 -11
- package/utils/access.js.map +1 -1
- package/utils/converters/Converter.js +13 -0
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.js +32 -9
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +26 -0
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeName.js +8 -0
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +26 -10
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +5 -0
- package/utils/filterAsync.js.map +1 -1
- package/utils/filterModelFields.js +9 -3
- package/utils/filterModelFields.js.map +1 -1
- package/utils/getEntryTitle.js +9 -0
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.js +6 -2
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/ownership.js +8 -0
- package/utils/ownership.js.map +1 -1
- package/utils/permissions.js +23 -8
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +6 -0
- package/utils/pluralizedTypeName.js.map +1 -1
- package/utils/renderFields.js +8 -0
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +11 -0
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +8 -0
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +11 -2
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.js +7 -0
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +4 -0
- package/utils/toSlug.js.map +1 -1
- package/validators/dateGte.js +7 -0
- package/validators/dateGte.js.map +1 -1
- package/validators/dateLte.js +7 -0
- package/validators/dateLte.js.map +1 -1
- package/validators/gte.js +8 -0
- package/validators/gte.js.map +1 -1
- package/validators/in.js +8 -0
- package/validators/in.js.map +1 -1
- package/validators/index.js +15 -0
- package/validators/index.js.map +1 -1
- package/validators/lte.js +8 -0
- package/validators/lte.js.map +1 -1
- package/validators/maxLength.js +8 -0
- package/validators/maxLength.js.map +1 -1
- package/validators/minLength.js +8 -0
- package/validators/minLength.js.map +1 -1
- package/validators/pattern.js +9 -0
- package/validators/pattern.js.map +1 -1
- package/validators/patternPlugins/email.js +2 -0
- package/validators/patternPlugins/email.js.map +1 -1
- package/validators/patternPlugins/index.js +8 -0
- package/validators/patternPlugins/index.js.map +1 -1
- package/validators/patternPlugins/lowerCase.js +2 -0
- package/validators/patternPlugins/lowerCase.js.map +1 -1
- package/validators/patternPlugins/lowerCaseSpace.js +2 -0
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
- package/validators/patternPlugins/upperCase.js +2 -0
- package/validators/patternPlugins/upperCase.js.map +1 -1
- package/validators/patternPlugins/upperCaseSpace.js +2 -0
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
- package/validators/patternPlugins/url.js +2 -0
- package/validators/patternPlugins/url.js.map +1 -1
- package/validators/required.js +5 -0
- package/validators/required.js.map +1 -1
- package/validators/timeGte.js +8 -0
- package/validators/timeGte.js.map +1 -1
- package/validators/timeLte.js +8 -0
- package/validators/timeLte.js.map +1 -1
- package/validators/unique.js +7 -0
- package/validators/unique.js.map +1 -1
package/graphqlFields/object.js
CHANGED
|
@@ -1,66 +1,81 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.createObjectField = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
8
12
|
var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
|
|
13
|
+
|
|
9
14
|
var _renderFields = require("../utils/renderFields");
|
|
15
|
+
|
|
10
16
|
var _renderInputFields = require("../utils/renderInputFields");
|
|
17
|
+
|
|
11
18
|
var _createTypeName = require("../utils/createTypeName");
|
|
19
|
+
|
|
12
20
|
var _helpers = require("./helpers");
|
|
21
|
+
|
|
13
22
|
const typeFromField = params => {
|
|
14
|
-
var
|
|
23
|
+
var _parentField$settings;
|
|
24
|
+
|
|
15
25
|
const {
|
|
16
26
|
typeOfType,
|
|
17
27
|
model,
|
|
18
28
|
type,
|
|
19
|
-
field,
|
|
29
|
+
field: parentField,
|
|
20
30
|
fieldTypePlugins
|
|
21
31
|
} = params;
|
|
22
32
|
const typeSuffix = typeOfType === "input" ? "Input" : "";
|
|
23
33
|
const typeName = (0, _createTypeName.createTypeName)(model.modelId);
|
|
24
|
-
const mTypeName = (0, _createTypeName.createManageTypeName)(typeName);
|
|
34
|
+
const mTypeName = (0, _createTypeName.createManageTypeName)(typeName); // `field` is an "object" field
|
|
25
35
|
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
const fieldTypeName = `${mTypeName}_${(0, _upperFirst.default)(field.fieldId)}`;
|
|
36
|
+
const fields = ((_parentField$settings = parentField.settings) === null || _parentField$settings === void 0 ? void 0 : _parentField$settings.fields) || [];
|
|
37
|
+
const fieldTypeName = `${mTypeName}_${(0, _upperFirst.default)(parentField.fieldId)}`;
|
|
29
38
|
const typeFields = [];
|
|
30
|
-
const nestedTypes = [];
|
|
31
|
-
|
|
32
|
-
// Once the loop below starts, we'll be executing a recursive "object" type generation.
|
|
39
|
+
const nestedTypes = []; // Once the loop below starts, we'll be executing a recursive "object" type generation.
|
|
33
40
|
// The main trick here is that nested objects don't know who the parent is, and will generate
|
|
34
41
|
// type names using the "model", as if they're at the top level:
|
|
35
42
|
// Every time the types are returned, we need to replace the model name in the generated type name
|
|
36
43
|
// with the actual prefix which includes parent field name type.
|
|
44
|
+
|
|
37
45
|
const replace = new RegExp(`${mTypeName}_`, "g");
|
|
38
|
-
|
|
46
|
+
|
|
47
|
+
for (const field of fields) {
|
|
39
48
|
const result = typeOfType === "type" ? (0, _renderFields.renderField)({
|
|
40
|
-
field
|
|
49
|
+
field,
|
|
41
50
|
type,
|
|
42
51
|
model,
|
|
43
52
|
fieldTypePlugins
|
|
44
53
|
}) : (0, _renderInputFields.renderInputField)({
|
|
45
|
-
field
|
|
54
|
+
field,
|
|
46
55
|
model,
|
|
47
56
|
fieldTypePlugins
|
|
48
57
|
});
|
|
58
|
+
|
|
49
59
|
if (!result) {
|
|
50
60
|
continue;
|
|
51
61
|
}
|
|
62
|
+
|
|
52
63
|
const {
|
|
53
64
|
fields,
|
|
54
65
|
typeDefs
|
|
55
66
|
} = result;
|
|
56
67
|
typeFields.push(fields.replace(replace, `${fieldTypeName}_`));
|
|
68
|
+
|
|
57
69
|
if (typeDefs) {
|
|
58
70
|
nestedTypes.push(typeDefs.replace(replace, `${fieldTypeName}_`));
|
|
59
71
|
}
|
|
60
72
|
}
|
|
73
|
+
|
|
61
74
|
return {
|
|
62
75
|
fieldType: `${fieldTypeName}${typeSuffix}`,
|
|
63
|
-
typeDefs:
|
|
76
|
+
typeDefs:
|
|
77
|
+
/* GraphQL */
|
|
78
|
+
`
|
|
64
79
|
${nestedTypes.join("\n")}
|
|
65
80
|
|
|
66
81
|
${typeOfType} ${fieldTypeName}${typeSuffix} {
|
|
@@ -69,6 +84,77 @@ const typeFromField = params => {
|
|
|
69
84
|
`
|
|
70
85
|
};
|
|
71
86
|
};
|
|
87
|
+
|
|
88
|
+
const createChildTypeDefs = params => {
|
|
89
|
+
var _field$settings, _field$settings2;
|
|
90
|
+
|
|
91
|
+
const {
|
|
92
|
+
field,
|
|
93
|
+
plugins,
|
|
94
|
+
model,
|
|
95
|
+
endpointType
|
|
96
|
+
} = params;
|
|
97
|
+
const fields = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
|
|
98
|
+
const typeName = createTypeName({
|
|
99
|
+
model,
|
|
100
|
+
field,
|
|
101
|
+
parents: (_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.parents
|
|
102
|
+
});
|
|
103
|
+
const filters = fields.map(child => {
|
|
104
|
+
var _child$settings;
|
|
105
|
+
|
|
106
|
+
const createListFilters = plugins[child.type][endpointType].createListFilters;
|
|
107
|
+
|
|
108
|
+
if (!createListFilters) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const filters = createListFilters({
|
|
113
|
+
model,
|
|
114
|
+
field: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
|
|
115
|
+
settings: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child.settings), {}, {
|
|
116
|
+
parents: (((_child$settings = child.settings) === null || _child$settings === void 0 ? void 0 : _child$settings.parents) || []).concat([field.fieldId])
|
|
117
|
+
})
|
|
118
|
+
}),
|
|
119
|
+
plugins
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
if (!filters) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return filters;
|
|
127
|
+
}).filter(Boolean).join("\n");
|
|
128
|
+
return `input ${typeName}WhereInput {
|
|
129
|
+
${filters}
|
|
130
|
+
}`;
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const createTypeName = params => {
|
|
134
|
+
const {
|
|
135
|
+
model,
|
|
136
|
+
parents = [],
|
|
137
|
+
field
|
|
138
|
+
} = params;
|
|
139
|
+
return [model.modelId].concat(parents).concat([field.fieldId]).filter(Boolean).map(id => {
|
|
140
|
+
return (0, _upperFirst.default)(id);
|
|
141
|
+
}).join("_");
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
const createListFilters = ({
|
|
145
|
+
field,
|
|
146
|
+
model
|
|
147
|
+
}) => {
|
|
148
|
+
var _field$settings3;
|
|
149
|
+
|
|
150
|
+
const typeName = createTypeName({
|
|
151
|
+
model,
|
|
152
|
+
field,
|
|
153
|
+
parents: (_field$settings3 = field.settings) === null || _field$settings3 === void 0 ? void 0 : _field$settings3.parents
|
|
154
|
+
});
|
|
155
|
+
return `${field.fieldId}: ${typeName}WhereInput`;
|
|
156
|
+
};
|
|
157
|
+
|
|
72
158
|
const createObjectField = () => {
|
|
73
159
|
return {
|
|
74
160
|
name: "cms-model-field-to-graphql-object",
|
|
@@ -89,27 +175,38 @@ const createObjectField = () => {
|
|
|
89
175
|
field,
|
|
90
176
|
fieldTypePlugins
|
|
91
177
|
});
|
|
178
|
+
|
|
92
179
|
if (!result) {
|
|
93
180
|
return null;
|
|
94
181
|
}
|
|
182
|
+
|
|
95
183
|
const {
|
|
96
184
|
fieldType,
|
|
97
185
|
typeDefs
|
|
98
186
|
} = result;
|
|
187
|
+
const childTypeDefs = createChildTypeDefs({
|
|
188
|
+
model,
|
|
189
|
+
field,
|
|
190
|
+
plugins: fieldTypePlugins,
|
|
191
|
+
endpointType: "read"
|
|
192
|
+
});
|
|
99
193
|
return {
|
|
100
194
|
fields: `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,
|
|
101
|
-
typeDefs
|
|
195
|
+
typeDefs: `${typeDefs}${childTypeDefs}`
|
|
102
196
|
};
|
|
103
197
|
},
|
|
198
|
+
|
|
104
199
|
createResolver({
|
|
105
200
|
field,
|
|
106
201
|
createFieldResolvers,
|
|
107
202
|
graphQLType
|
|
108
203
|
}) {
|
|
109
|
-
var _field$
|
|
110
|
-
|
|
204
|
+
var _field$settings4;
|
|
205
|
+
|
|
206
|
+
if (!((_field$settings4 = field.settings) !== null && _field$settings4 !== void 0 && _field$settings4.fields) || field.settings.fields.length === 0) {
|
|
111
207
|
return false;
|
|
112
208
|
}
|
|
209
|
+
|
|
113
210
|
const fieldType = `${graphQLType}_${(0, _upperFirst.default)(field.fieldId)}`;
|
|
114
211
|
const typeResolvers = createFieldResolvers({
|
|
115
212
|
graphQLType: fieldType,
|
|
@@ -119,7 +216,9 @@ const createObjectField = () => {
|
|
|
119
216
|
resolver: null,
|
|
120
217
|
typeResolvers: typeResolvers || {}
|
|
121
218
|
};
|
|
122
|
-
}
|
|
219
|
+
},
|
|
220
|
+
|
|
221
|
+
createListFilters
|
|
123
222
|
},
|
|
124
223
|
manage: {
|
|
125
224
|
createTypeField({
|
|
@@ -134,18 +233,27 @@ const createObjectField = () => {
|
|
|
134
233
|
field,
|
|
135
234
|
fieldTypePlugins
|
|
136
235
|
});
|
|
236
|
+
|
|
137
237
|
if (!result) {
|
|
138
238
|
return null;
|
|
139
239
|
}
|
|
240
|
+
|
|
140
241
|
const {
|
|
141
242
|
fieldType,
|
|
142
243
|
typeDefs
|
|
143
244
|
} = result;
|
|
245
|
+
const childTypeDefs = createChildTypeDefs({
|
|
246
|
+
model,
|
|
247
|
+
field,
|
|
248
|
+
plugins: fieldTypePlugins,
|
|
249
|
+
endpointType: "manage"
|
|
250
|
+
});
|
|
144
251
|
return {
|
|
145
252
|
fields: `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,
|
|
146
|
-
typeDefs
|
|
253
|
+
typeDefs: `${typeDefs}${childTypeDefs}`
|
|
147
254
|
};
|
|
148
255
|
},
|
|
256
|
+
|
|
149
257
|
createInputField({
|
|
150
258
|
model,
|
|
151
259
|
field,
|
|
@@ -158,9 +266,11 @@ const createObjectField = () => {
|
|
|
158
266
|
field,
|
|
159
267
|
fieldTypePlugins
|
|
160
268
|
});
|
|
269
|
+
|
|
161
270
|
if (!result) {
|
|
162
271
|
return null;
|
|
163
272
|
}
|
|
273
|
+
|
|
164
274
|
const {
|
|
165
275
|
fieldType,
|
|
166
276
|
typeDefs
|
|
@@ -170,15 +280,18 @@ const createObjectField = () => {
|
|
|
170
280
|
typeDefs
|
|
171
281
|
};
|
|
172
282
|
},
|
|
283
|
+
|
|
173
284
|
createResolver({
|
|
174
285
|
graphQLType,
|
|
175
286
|
field,
|
|
176
287
|
createFieldResolvers
|
|
177
288
|
}) {
|
|
178
|
-
var _field$
|
|
179
|
-
|
|
289
|
+
var _field$settings5;
|
|
290
|
+
|
|
291
|
+
if (!((_field$settings5 = field.settings) !== null && _field$settings5 !== void 0 && _field$settings5.fields) || field.settings.fields.length === 0) {
|
|
180
292
|
return false;
|
|
181
293
|
}
|
|
294
|
+
|
|
182
295
|
const fieldType = `${graphQLType}_${(0, _upperFirst.default)(field.fieldId)}`;
|
|
183
296
|
const typeResolvers = createFieldResolvers({
|
|
184
297
|
graphQLType: fieldType,
|
|
@@ -188,8 +301,11 @@ const createObjectField = () => {
|
|
|
188
301
|
resolver: null,
|
|
189
302
|
typeResolvers: typeResolvers || {}
|
|
190
303
|
};
|
|
191
|
-
}
|
|
304
|
+
},
|
|
305
|
+
|
|
306
|
+
createListFilters
|
|
192
307
|
}
|
|
193
308
|
};
|
|
194
309
|
};
|
|
310
|
+
|
|
195
311
|
exports.createObjectField = createObjectField;
|
|
@@ -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":["typeFromField","params","typeOfType","model","type","field","parentField","fieldTypePlugins","typeSuffix","typeName","createModelTypeName","modelId","mTypeName","createManageTypeName","fields","settings","fieldTypeName","upperFirst","fieldId","typeFields","nestedTypes","replace","RegExp","result","renderField","renderInputField","typeDefs","push","fieldType","join","createChildTypeDefs","plugins","endpointType","createTypeName","parents","filters","map","child","createListFilters","concat","filter","Boolean","id","lodashUpperFirst","createObjectField","name","isSortable","isSearchable","read","createTypeField","childTypeDefs","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 {\n createManageTypeName,\n createTypeName as createModelTypeName\n} from \"~/utils/createTypeName\";\nimport { attachRequiredFieldValue } from \"./helpers\";\nimport lodashUpperFirst from \"lodash/upperFirst\";\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: parentField, fieldTypePlugins } = params;\n const typeSuffix = typeOfType === \"input\" ? \"Input\" : \"\";\n const typeName = createModelTypeName(model.modelId);\n const mTypeName = createManageTypeName(typeName);\n\n // `field` is an \"object\" field\n const fields: CmsModelField[] = parentField.settings?.fields || [];\n\n const fieldTypeName = `${mTypeName}_${upperFirst(parentField.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 field of fields) {\n const result =\n typeOfType === \"type\"\n ? renderField({\n field,\n type,\n model,\n fieldTypePlugins\n })\n : renderInputField({\n field,\n model,\n fieldTypePlugins\n });\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\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 = 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 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 = 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 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 = 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 createListFilters\n }\n };\n};\n"],"mappings":"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"}
|
package/graphqlFields/ref.js
CHANGED
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.createRefField = void 0;
|
|
9
|
+
|
|
8
10
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
9
12
|
var _createTypeName = require("../utils/createTypeName");
|
|
13
|
+
|
|
10
14
|
var _utils = require("@webiny/utils");
|
|
15
|
+
|
|
11
16
|
var _helpers = require("./helpers");
|
|
17
|
+
|
|
12
18
|
const createUnionTypeName = (model, field) => {
|
|
13
19
|
return `${(0, _createTypeName.createReadTypeName)(model.modelId)}${(0, _createTypeName.createReadTypeName)(field.fieldId)}`;
|
|
14
20
|
};
|
|
21
|
+
|
|
15
22
|
const createListFilters = ({
|
|
16
23
|
field
|
|
17
24
|
}) => {
|
|
@@ -19,6 +26,7 @@ const createListFilters = ({
|
|
|
19
26
|
${field.fieldId}: RefFieldWhereInput
|
|
20
27
|
`;
|
|
21
28
|
};
|
|
29
|
+
|
|
22
30
|
const createFilteringTypeDef = () => {
|
|
23
31
|
return `
|
|
24
32
|
input RefFieldWhereInput {
|
|
@@ -33,6 +41,7 @@ const createFilteringTypeDef = () => {
|
|
|
33
41
|
}
|
|
34
42
|
`;
|
|
35
43
|
};
|
|
44
|
+
|
|
36
45
|
const appendTypename = (entries, typename) => {
|
|
37
46
|
return entries.map(item => {
|
|
38
47
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item), {}, {
|
|
@@ -44,13 +53,18 @@ const appendTypename = (entries, typename) => {
|
|
|
44
53
|
* We cast settings.models as object to have modelId because internally we know that it is so.
|
|
45
54
|
* Internal stuff so we are sure that settings.models contains what we require.
|
|
46
55
|
*/
|
|
56
|
+
|
|
57
|
+
|
|
47
58
|
const getFieldModels = field => {
|
|
48
59
|
if (!field.settings || Array.isArray(field.settings.models) === false) {
|
|
49
60
|
return [];
|
|
50
61
|
}
|
|
62
|
+
|
|
51
63
|
return field.settings.models;
|
|
52
64
|
};
|
|
65
|
+
|
|
53
66
|
const modelIdToTypeName = new Map();
|
|
67
|
+
|
|
54
68
|
const createRefField = () => {
|
|
55
69
|
return {
|
|
56
70
|
name: "cms-model-field-to-graphql-ref",
|
|
@@ -64,10 +78,12 @@ const createRefField = () => {
|
|
|
64
78
|
field
|
|
65
79
|
}) {
|
|
66
80
|
var _field$settings;
|
|
81
|
+
|
|
67
82
|
const models = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.models) || [];
|
|
68
83
|
const gqlType = models.length > 1 ? createUnionTypeName(model, field) : (0, _createTypeName.createReadTypeName)(models[0].modelId);
|
|
69
84
|
return field.fieldId + `: ${field.multipleValues ? `[${gqlType}]` : gqlType}`;
|
|
70
85
|
},
|
|
86
|
+
|
|
71
87
|
/**
|
|
72
88
|
* TS is complaining about mixed types for createResolver.
|
|
73
89
|
* TODO @ts-refactor @pavel Maybe we should have a single createResolver method?
|
|
@@ -75,92 +91,103 @@ const createRefField = () => {
|
|
|
75
91
|
// @ts-ignore
|
|
76
92
|
createResolver(params) {
|
|
77
93
|
var _field$settings2;
|
|
94
|
+
|
|
78
95
|
const {
|
|
79
96
|
field
|
|
80
|
-
} = params;
|
|
81
|
-
|
|
97
|
+
} = params; // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.
|
|
98
|
+
|
|
82
99
|
const models = ((_field$settings2 = field.settings) === null || _field$settings2 === void 0 ? void 0 : _field$settings2.models) || [];
|
|
100
|
+
|
|
83
101
|
for (const item of models) {
|
|
84
102
|
modelIdToTypeName.set(item.modelId, (0, _createTypeName.createReadTypeName)(item.modelId));
|
|
85
103
|
}
|
|
104
|
+
|
|
86
105
|
return async (parent, _, context) => {
|
|
87
106
|
const {
|
|
88
107
|
cms
|
|
89
|
-
} = context;
|
|
108
|
+
} = context; // Get field value for this entry
|
|
90
109
|
|
|
91
|
-
// Get field value for this entry
|
|
92
110
|
const initialValue = parent[field.fieldId];
|
|
111
|
+
|
|
93
112
|
if (!initialValue) {
|
|
94
113
|
return null;
|
|
95
114
|
}
|
|
115
|
+
|
|
96
116
|
if (field.multipleValues) {
|
|
97
117
|
/**
|
|
98
118
|
* We cast because value really can be array and single value.
|
|
99
119
|
* At this point, we are 99% sure that it is an array (+ we check for it)
|
|
100
120
|
*/
|
|
101
121
|
const value = initialValue;
|
|
122
|
+
|
|
102
123
|
if (Array.isArray(value) === false || value.length === 0) {
|
|
103
124
|
return [];
|
|
104
125
|
}
|
|
126
|
+
|
|
105
127
|
const entriesByModel = value.reduce((collection, ref) => {
|
|
106
128
|
if (!collection[ref.modelId]) {
|
|
107
129
|
collection[ref.modelId] = [];
|
|
108
130
|
} else if (collection[ref.modelId].includes(ref.entryId) === true) {
|
|
109
131
|
return collection;
|
|
110
132
|
}
|
|
133
|
+
|
|
111
134
|
collection[ref.modelId].push(ref.entryId);
|
|
112
135
|
return collection;
|
|
113
136
|
}, {});
|
|
114
137
|
const getters = Object.keys(entriesByModel).map(async modelId => {
|
|
115
|
-
const idList = entriesByModel[modelId];
|
|
116
|
-
|
|
138
|
+
const idList = entriesByModel[modelId]; // Get model manager, to get access to CRUD methods
|
|
139
|
+
|
|
117
140
|
const model = await cms.getModelManager(modelId);
|
|
118
|
-
let entries;
|
|
119
|
-
|
|
141
|
+
let entries; // `read` API works with `published` data
|
|
142
|
+
|
|
120
143
|
if (cms.READ) {
|
|
121
144
|
entries = await model.getPublishedByIds(idList);
|
|
122
|
-
}
|
|
123
|
-
// `preview` and `manage` with `latest` data
|
|
145
|
+
} // `preview` and `manage` with `latest` data
|
|
124
146
|
else {
|
|
125
147
|
entries = await model.getLatestByIds(idList);
|
|
126
148
|
}
|
|
149
|
+
|
|
127
150
|
return appendTypename(entries, modelIdToTypeName.get(modelId));
|
|
128
151
|
});
|
|
129
152
|
return await Promise.all(getters).then(results => results.reduce((result, item) => result.concat(item), []));
|
|
130
153
|
}
|
|
131
|
-
const value = initialValue;
|
|
132
154
|
|
|
133
|
-
// Get model manager, to get access to CRUD methods
|
|
155
|
+
const value = initialValue; // Get model manager, to get access to CRUD methods
|
|
156
|
+
|
|
134
157
|
const model = await cms.getModelManager(value.modelId);
|
|
135
|
-
let revisions;
|
|
136
|
-
|
|
158
|
+
let revisions; // `read` API works with `published` data
|
|
159
|
+
|
|
137
160
|
if (cms.READ) {
|
|
138
161
|
revisions = await model.getPublishedByIds([value.entryId]);
|
|
139
|
-
}
|
|
140
|
-
// `preview` API works with `latest` data
|
|
162
|
+
} // `preview` API works with `latest` data
|
|
141
163
|
else {
|
|
142
164
|
revisions = await model.getLatestByIds([value.entryId]);
|
|
143
165
|
}
|
|
144
|
-
|
|
145
166
|
/**
|
|
146
167
|
* If there are no revisions we must return null.
|
|
147
168
|
*/
|
|
169
|
+
|
|
170
|
+
|
|
148
171
|
if (!revisions || revisions.length === 0) {
|
|
149
172
|
return null;
|
|
150
173
|
}
|
|
174
|
+
|
|
151
175
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, revisions[0]), {}, {
|
|
152
176
|
__typename: modelIdToTypeName.get(value.modelId)
|
|
153
177
|
});
|
|
154
178
|
};
|
|
155
179
|
},
|
|
180
|
+
|
|
156
181
|
createSchema({
|
|
157
182
|
models
|
|
158
183
|
}) {
|
|
159
184
|
const unionFields = [];
|
|
185
|
+
|
|
160
186
|
for (const model of models) {
|
|
161
187
|
// Generate a dedicated union type for every `ref` field which has more than 1 content model assigned.
|
|
162
188
|
model.fields.filter(field => {
|
|
163
189
|
var _field$settings3;
|
|
190
|
+
|
|
164
191
|
return field.type === "ref" && (((_field$settings3 = field.settings) === null || _field$settings3 === void 0 ? void 0 : _field$settings3.models) || []).length > 1;
|
|
165
192
|
}).forEach(field => unionFields.push({
|
|
166
193
|
model,
|
|
@@ -168,6 +195,7 @@ const createRefField = () => {
|
|
|
168
195
|
typeName: createUnionTypeName(model, field)
|
|
169
196
|
}));
|
|
170
197
|
}
|
|
198
|
+
|
|
171
199
|
const unionFieldsTypeDef = unionFields.map(({
|
|
172
200
|
field,
|
|
173
201
|
typeName
|
|
@@ -184,6 +212,7 @@ const createRefField = () => {
|
|
|
184
212
|
resolvers: {}
|
|
185
213
|
};
|
|
186
214
|
},
|
|
215
|
+
|
|
187
216
|
createListFilters
|
|
188
217
|
},
|
|
189
218
|
manage: {
|
|
@@ -221,21 +250,26 @@ const createRefField = () => {
|
|
|
221
250
|
}
|
|
222
251
|
};
|
|
223
252
|
},
|
|
253
|
+
|
|
224
254
|
createTypeField({
|
|
225
255
|
field
|
|
226
256
|
}) {
|
|
227
257
|
if (field.multipleValues) {
|
|
228
258
|
return `${field.fieldId}: [RefField!]`;
|
|
229
259
|
}
|
|
260
|
+
|
|
230
261
|
return `${field.fieldId}: RefField`;
|
|
231
262
|
},
|
|
263
|
+
|
|
232
264
|
createInputField({
|
|
233
265
|
field
|
|
234
266
|
}) {
|
|
235
267
|
return (0, _helpers.createGraphQLInputField)(field, "RefFieldInput");
|
|
236
268
|
},
|
|
269
|
+
|
|
237
270
|
createListFilters
|
|
238
271
|
}
|
|
239
272
|
};
|
|
240
273
|
};
|
|
274
|
+
|
|
241
275
|
exports.createRefField = createRefField;
|