@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.60a863e033
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.d.ts +5 -2
- package/context.js +55 -25
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.d.ts +2 -2
- package/crud/contentEntry/afterDelete.js +2 -7
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.d.ts +2 -2
- package/crud/contentEntry/beforeCreate.js +2 -5
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.d.ts +2 -2
- package/crud/contentEntry/beforeUpdate.js +2 -5
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +4 -47
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +22 -39
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +15 -73
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +72 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.d.ts +0 -2
- package/crud/contentEntry.crud.js +292 -395
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.d.ts +3 -3
- package/crud/contentModel/afterCreate.js +5 -7
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.d.ts +3 -3
- package/crud/contentModel/afterCreateFrom.js +5 -7
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.d.ts +3 -3
- package/crud/contentModel/afterDelete.js +5 -7
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.d.ts +3 -3
- package/crud/contentModel/afterUpdate.js +5 -7
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +5 -6
- package/crud/contentModel/beforeCreate.js +17 -46
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.d.ts +3 -3
- package/crud/contentModel/beforeDelete.js +6 -16
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +4 -6
- package/crud/contentModel/beforeUpdate.js +7 -12
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/contentModelManagerFactory.js +0 -7
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +4 -3
- 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/systemFields.js.map +1 -1
- package/crud/contentModel/validateLayout.js +0 -8
- package/crud/contentModel/validateLayout.js.map +1 -1
- package/crud/contentModel/validateModel.d.ts +3 -4
- package/crud/contentModel/validateModel.js +7 -12
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.d.ts +3 -4
- package/crud/contentModel/validateModelFields.js +121 -104
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +477 -0
- package/crud/contentModel/validation.js +97 -0
- package/crud/contentModel/validation.js.map +1 -0
- package/crud/contentModel.crud.js +278 -304
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
- package/crud/contentModelGroup/beforeCreate.js +3 -15
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
- package/crud/contentModelGroup/beforeDelete.js +3 -11
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
- package/crud/contentModelGroup/beforeUpdate.js +2 -7
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +30 -0
- package/crud/contentModelGroup/validation.js +34 -0
- package/crud/contentModelGroup/validation.js.map +1 -0
- package/crud/contentModelGroup.crud.js +96 -118
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/settings.crud.js +3 -20
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +61 -84
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -14
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +16 -71
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.d.ts +2 -1
- package/fieldConverters/index.js +2 -5
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.d.ts +8 -3
- package/graphql/buildSchemaPlugins.js +6 -14
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/createExecutableSchema.d.ts +7 -0
- package/graphql/createExecutableSchema.js +29 -0
- package/graphql/createExecutableSchema.js.map +1 -0
- package/graphql/generateSchema.d.ts +8 -0
- package/graphql/generateSchema.js +31 -0
- package/graphql/generateSchema.js.map +1 -0
- package/graphql/graphQLHandlerFactory.js +91 -75
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +1 -3
- package/graphql/index.js +2 -46
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.d.ts +6 -2
- package/graphql/schema/baseContentSchema.js +14 -22
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +3 -0
- package/graphql/schema/baseSchema.js +53 -0
- package/graphql/schema/baseSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +6 -2
- package/graphql/schema/contentEntries.js +40 -66
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.d.ts +6 -2
- package/graphql/schema/contentModelGroups.js +9 -22
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.d.ts +6 -2
- package/graphql/schema/contentModels.js +57 -21
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +24 -37
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +4 -44
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +2 -0
- package/graphql/schema/createManageSDL.js +13 -26
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +3 -17
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +8 -17
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +2 -0
- package/graphql/schema/createReadSDL.js +11 -15
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/commonFieldResolvers.js +0 -2
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +5 -25
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +0 -3
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +3 -15
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +0 -3
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +3 -15
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +0 -3
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/schemaPlugins.d.ts +8 -3
- package/graphql/schema/schemaPlugins.js +63 -65
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +69 -85
- package/graphql/system.js.map +1 -1
- package/graphqlFields/boolean.js +0 -12
- package/graphqlFields/boolean.js.map +1 -1
- package/graphqlFields/datetime.js +0 -17
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +208 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +19 -0
- package/graphqlFields/dynamicZone/index.js.map +1 -0
- package/graphqlFields/file.js +0 -8
- package/graphqlFields/file.js.map +1 -1
- package/graphqlFields/helpers.js +0 -10
- package/graphqlFields/helpers.js.map +1 -1
- package/graphqlFields/index.d.ts +1 -1
- package/graphqlFields/index.js +2 -12
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/longText.js +0 -10
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +4 -12
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +113 -99
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +52 -104
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText.js +0 -9
- package/graphqlFields/richText.js.map +1 -1
- package/graphqlFields/text.js +0 -11
- package/graphqlFields/text.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +3 -26
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +7 -7
- package/modelManager/DefaultCmsModelManager.js +1 -17
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/modelManager/index.js +0 -4
- package/modelManager/index.js.map +1 -1
- package/package.json +31 -32
- package/parameters/context.js +0 -4
- package/parameters/context.js.map +1 -1
- package/parameters/header.js +1 -12
- package/parameters/header.js.map +1 -1
- package/parameters/index.js +0 -8
- package/parameters/index.js.map +1 -1
- package/parameters/manual.js +7 -15
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +1 -12
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
- package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
- package/plugins/CmsGroupPlugin.js +1 -9
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
- package/plugins/CmsModelFieldConverterPlugin.js +1 -6
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +6 -2
- package/plugins/CmsModelPlugin.js +18 -49
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +1 -8
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.d.ts +11 -11
- package/plugins/StorageTransformPlugin.js +1 -10
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +2 -0
- package/plugins/index.js +22 -10
- package/plugins/index.js.map +1 -1
- package/storage/default.js +0 -3
- package/storage/default.js.map +1 -1
- package/storage/object.js +7 -27
- package/storage/object.js.map +1 -1
- package/types.d.ts +504 -179
- package/types.js +62 -71
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +8 -35
- package/upgrades/5.33.0/index.js.map +1 -1
- package/upgrades/index.js +0 -3
- package/upgrades/index.js.map +1 -1
- package/utils/access.js +11 -25
- package/utils/access.js.map +1 -1
- package/utils/converters/Converter.js +1 -14
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.d.ts +7 -0
- package/utils/converters/ConverterCollection.js +36 -32
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +3 -33
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +15 -0
- package/utils/createTypeFromFields.js +64 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.js +3 -10
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +25 -42
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +0 -5
- package/utils/filterAsync.js.map +1 -1
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +10 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/getEntryTitle.js +0 -9
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
- package/utils/getSchemaFromFieldPlugins.js +23 -19
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/ownership.js +0 -8
- package/utils/ownership.js.map +1 -1
- package/utils/permissions.js +7 -26
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +1 -7
- package/utils/pluralizedTypeName.js.map +1 -1
- package/utils/renderFields.js +2 -9
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +6 -14
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +2 -9
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +10 -9
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +7 -4
- package/utils/renderSortEnum.js +21 -11
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +1 -5
- package/utils/toSlug.js.map +1 -1
- package/validators/dateGte.js +0 -7
- package/validators/dateGte.js.map +1 -1
- package/validators/dateLte.js +0 -7
- package/validators/dateLte.js.map +1 -1
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +20 -0
- package/validators/dynamicZone.js.map +1 -0
- package/validators/gte.js +0 -8
- package/validators/gte.js.map +1 -1
- package/validators/in.js +0 -8
- package/validators/in.js.map +1 -1
- package/validators/index.js +2 -16
- package/validators/index.js.map +1 -1
- package/validators/lte.js +0 -8
- package/validators/lte.js.map +1 -1
- package/validators/maxLength.js +0 -8
- package/validators/maxLength.js.map +1 -1
- package/validators/minLength.js +0 -8
- package/validators/minLength.js.map +1 -1
- package/validators/pattern.js +0 -9
- package/validators/pattern.js.map +1 -1
- package/validators/patternPlugins/email.js +0 -2
- package/validators/patternPlugins/email.js.map +1 -1
- package/validators/patternPlugins/index.js +0 -8
- package/validators/patternPlugins/index.js.map +1 -1
- package/validators/patternPlugins/lowerCase.js +0 -2
- package/validators/patternPlugins/lowerCase.js.map +1 -1
- package/validators/patternPlugins/lowerCaseSpace.js +0 -2
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
- package/validators/patternPlugins/upperCase.js +0 -2
- package/validators/patternPlugins/upperCase.js.map +1 -1
- package/validators/patternPlugins/upperCaseSpace.js +0 -2
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
- package/validators/patternPlugins/url.js +0 -2
- package/validators/patternPlugins/url.js.map +1 -1
- package/validators/required.js +0 -5
- package/validators/required.js.map +1 -1
- package/validators/timeGte.js +0 -8
- package/validators/timeGte.js.map +1 -1
- package/validators/timeLte.js +0 -8
- package/validators/timeLte.js.map +1 -1
- package/validators/unique.js +1 -8
- package/validators/unique.js.map +1 -1
- package/crud/index.d.ts +0 -6
- package/crud/index.js +0 -89
- package/crud/index.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
- package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
- package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
- package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
- package/utils/filterModelFields.d.ts +0 -16
- package/utils/filterModelFields.js +0 -81
- package/utils/filterModelFields.js.map +0 -1
package/utils/permissions.js
CHANGED
|
@@ -4,19 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.hasRwd = exports.hasPw = exports.checkPermissions = void 0;
|
|
7
|
-
|
|
8
7
|
var _apiSecurity = require("@webiny/api-security");
|
|
9
|
-
|
|
10
8
|
const hasRwd = (permission, rwd) => {
|
|
11
9
|
if (typeof permission.rwd !== "string") {
|
|
12
10
|
return true;
|
|
13
11
|
}
|
|
14
|
-
|
|
15
12
|
return permission.rwd.includes(rwd);
|
|
16
13
|
};
|
|
17
|
-
|
|
18
14
|
exports.hasRwd = hasRwd;
|
|
19
|
-
|
|
20
15
|
const hasPw = (permission, pw) => {
|
|
21
16
|
const isCustom = Object.keys(permission).length > 1; // "name" key is always present
|
|
22
17
|
|
|
@@ -24,18 +19,13 @@ const hasPw = (permission, pw) => {
|
|
|
24
19
|
// Means it's a "full-access" permission.
|
|
25
20
|
return true;
|
|
26
21
|
}
|
|
27
|
-
|
|
28
22
|
if (typeof permission.pw !== "string") {
|
|
29
23
|
return false;
|
|
30
24
|
}
|
|
31
|
-
|
|
32
25
|
return permission.pw.includes(pw);
|
|
33
26
|
};
|
|
34
|
-
|
|
35
27
|
exports.hasPw = hasPw;
|
|
36
28
|
const PW = {
|
|
37
|
-
r: "request review",
|
|
38
|
-
c: "request change",
|
|
39
29
|
p: "publish",
|
|
40
30
|
u: "unpublish"
|
|
41
31
|
};
|
|
@@ -44,24 +34,23 @@ const RWD = {
|
|
|
44
34
|
w: "write",
|
|
45
35
|
d: "delete"
|
|
46
36
|
};
|
|
47
|
-
|
|
48
37
|
const checkPermissions = async (context, name, check) => {
|
|
49
38
|
// Check if user is allowed to edit content in current language
|
|
50
39
|
const contentPermission = await context.security.getPermission("content.i18n");
|
|
51
|
-
|
|
52
40
|
if (!contentPermission) {
|
|
53
41
|
throw new _apiSecurity.NotAuthorizedError({
|
|
54
42
|
data: {
|
|
55
43
|
reason: "Missing access to content in any locale."
|
|
56
44
|
}
|
|
57
45
|
});
|
|
58
|
-
}
|
|
59
|
-
|
|
46
|
+
}
|
|
60
47
|
|
|
48
|
+
// We need to check this manually as CMS locale comes from the URL and not the default i18n app.
|
|
61
49
|
const code = context.cms.getLocale().code;
|
|
62
|
-
const locales = contentPermission.locales;
|
|
63
|
-
// However, if the the `locales` IS SET - check that it contains the required locale.
|
|
50
|
+
const locales = contentPermission.locales;
|
|
64
51
|
|
|
52
|
+
// IMPORTANT: If we have a `contentPermission`, and `locales` key is NOT SET - it means the user has access to all locales.
|
|
53
|
+
// However, if the the `locales` IS SET - check that it contains the required locale.
|
|
65
54
|
if (Array.isArray(locales) && !locales.includes(code)) {
|
|
66
55
|
throw new _apiSecurity.NotAuthorizedError({
|
|
67
56
|
data: {
|
|
@@ -69,9 +58,7 @@ const checkPermissions = async (context, name, check) => {
|
|
|
69
58
|
}
|
|
70
59
|
});
|
|
71
60
|
}
|
|
72
|
-
|
|
73
61
|
const permission = await context.security.getPermission(name);
|
|
74
|
-
|
|
75
62
|
if (!permission) {
|
|
76
63
|
throw new _apiSecurity.NotAuthorizedError({
|
|
77
64
|
data: {
|
|
@@ -79,23 +66,19 @@ const checkPermissions = async (context, name, check) => {
|
|
|
79
66
|
}
|
|
80
67
|
});
|
|
81
68
|
}
|
|
82
|
-
|
|
83
69
|
if (!check) {
|
|
84
70
|
return permission;
|
|
85
71
|
}
|
|
86
|
-
|
|
87
72
|
if (check.rwd && !hasRwd(permission, check.rwd)) {
|
|
88
73
|
throw new _apiSecurity.NotAuthorizedError({
|
|
89
74
|
data: {
|
|
90
75
|
reason: `Not allowed to perform "${RWD[check.rwd]}" on "${name}".`
|
|
91
76
|
}
|
|
92
77
|
});
|
|
93
|
-
}
|
|
94
|
-
|
|
78
|
+
}
|
|
79
|
+
|
|
95
80
|
// p = publish
|
|
96
81
|
// u = unpublish
|
|
97
|
-
|
|
98
|
-
|
|
99
82
|
if (check.pw && !hasPw(permission, check.pw)) {
|
|
100
83
|
throw new _apiSecurity.NotAuthorizedError({
|
|
101
84
|
data: {
|
|
@@ -103,8 +86,6 @@ const checkPermissions = async (context, name, check) => {
|
|
|
103
86
|
}
|
|
104
87
|
});
|
|
105
88
|
}
|
|
106
|
-
|
|
107
89
|
return permission;
|
|
108
90
|
};
|
|
109
|
-
|
|
110
91
|
exports.checkPermissions = checkPermissions;
|
package/utils/permissions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["hasRwd","permission","rwd","includes","hasPw","pw","isCustom","Object","keys","length","PW","
|
|
1
|
+
{"version":3,"names":["hasRwd","permission","rwd","includes","hasPw","pw","isCustom","Object","keys","length","PW","p","u","RWD","r","w","d","checkPermissions","context","name","check","contentPermission","security","getPermission","NotAuthorizedError","data","reason","code","cms","getLocale","locales","Array","isArray"],"sources":["permissions.ts"],"sourcesContent":["import { BaseCmsSecurityPermission, CmsContext, CmsEntryPermission } from \"~/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\nexport const hasRwd = (permission: BaseCmsSecurityPermission, rwd: string): boolean => {\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n\n return permission.rwd.includes(rwd);\n};\n\nexport const hasPw = (permission: CmsEntryPermission, pw: string): boolean => {\n const isCustom = Object.keys(permission).length > 1; // \"name\" key is always present\n\n if (!isCustom) {\n // Means it's a \"full-access\" permission.\n return true;\n }\n\n if (typeof permission.pw !== \"string\") {\n return false;\n }\n\n return permission.pw.includes(pw);\n};\n\nconst PW: Record<string, string> = {\n p: \"publish\",\n u: \"unpublish\"\n};\n\nconst RWD: Record<string, string> = {\n r: \"read\",\n w: \"write\",\n d: \"delete\"\n};\n\nexport const checkPermissions = async <\n TPermission extends BaseCmsSecurityPermission = BaseCmsSecurityPermission\n>(\n context: CmsContext,\n name: string,\n check?: { rwd?: string; pw?: string }\n): Promise<TPermission> => {\n // Check if user is allowed to edit content in current language\n const contentPermission = await context.security.getPermission(\"content.i18n\");\n\n if (!contentPermission) {\n throw new NotAuthorizedError({\n data: {\n reason: \"Missing access to content in any locale.\"\n }\n });\n }\n\n // We need to check this manually as CMS locale comes from the URL and not the default i18n app.\n const code = context.cms.getLocale().code;\n\n const locales: string[] = contentPermission.locales;\n\n // IMPORTANT: If we have a `contentPermission`, and `locales` key is NOT SET - it means the user has access to all locales.\n // However, if the the `locales` IS SET - check that it contains the required locale.\n if (Array.isArray(locales) && !locales.includes(code)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access content in \"${code}.\"`\n }\n });\n }\n\n const permission = await context.security.getPermission<TPermission>(name);\n\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Missing permission \"${name}\".`\n }\n });\n }\n\n if (!check) {\n return permission;\n }\n\n if (check.rwd && !hasRwd(permission, check.rwd)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to perform \"${RWD[check.rwd]}\" on \"${name}\".`\n }\n });\n }\n\n // p = publish\n // u = unpublish\n if (check.pw && !hasPw(permission, check.pw)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to perform \"${PW[check.pw]}\" on \"${name}\".`\n }\n });\n }\n\n return permission;\n};\n"],"mappings":";;;;;;AACA;AAEO,MAAMA,MAAM,GAAG,CAACC,UAAqC,EAAEC,GAAW,KAAc;EACnF,IAAI,OAAOD,UAAU,CAACC,GAAG,KAAK,QAAQ,EAAE;IACpC,OAAO,IAAI;EACf;EAEA,OAAOD,UAAU,CAACC,GAAG,CAACC,QAAQ,CAACD,GAAG,CAAC;AACvC,CAAC;AAAC;AAEK,MAAME,KAAK,GAAG,CAACH,UAA8B,EAAEI,EAAU,KAAc;EAC1E,MAAMC,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACP,UAAU,CAAC,CAACQ,MAAM,GAAG,CAAC,CAAC,CAAC;;EAErD,IAAI,CAACH,QAAQ,EAAE;IACX;IACA,OAAO,IAAI;EACf;EAEA,IAAI,OAAOL,UAAU,CAACI,EAAE,KAAK,QAAQ,EAAE;IACnC,OAAO,KAAK;EAChB;EAEA,OAAOJ,UAAU,CAACI,EAAE,CAACF,QAAQ,CAACE,EAAE,CAAC;AACrC,CAAC;AAAC;AAEF,MAAMK,EAA0B,GAAG;EAC/BC,CAAC,EAAE,SAAS;EACZC,CAAC,EAAE;AACP,CAAC;AAED,MAAMC,GAA2B,GAAG;EAChCC,CAAC,EAAE,MAAM;EACTC,CAAC,EAAE,OAAO;EACVC,CAAC,EAAE;AACP,CAAC;AAEM,MAAMC,gBAAgB,GAAG,OAG5BC,OAAmB,EACnBC,IAAY,EACZC,KAAqC,KACd;EACvB;EACA,MAAMC,iBAAiB,GAAG,MAAMH,OAAO,CAACI,QAAQ,CAACC,aAAa,CAAC,cAAc,CAAC;EAE9E,IAAI,CAACF,iBAAiB,EAAE;IACpB,MAAM,IAAIG,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFC,MAAM,EAAE;MACZ;IACJ,CAAC,CAAC;EACN;;EAEA;EACA,MAAMC,IAAI,GAAGT,OAAO,CAACU,GAAG,CAACC,SAAS,EAAE,CAACF,IAAI;EAEzC,MAAMG,OAAiB,GAAGT,iBAAiB,CAACS,OAAO;;EAEnD;EACA;EACA,IAAIC,KAAK,CAACC,OAAO,CAACF,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC3B,QAAQ,CAACwB,IAAI,CAAC,EAAE;IACnD,MAAM,IAAIH,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFC,MAAM,EAAG,qCAAoCC,IAAK;MACtD;IACJ,CAAC,CAAC;EACN;EAEA,MAAM1B,UAAU,GAAG,MAAMiB,OAAO,CAACI,QAAQ,CAACC,aAAa,CAAcJ,IAAI,CAAC;EAE1E,IAAI,CAAClB,UAAU,EAAE;IACb,MAAM,IAAIuB,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFC,MAAM,EAAG,uBAAsBP,IAAK;MACxC;IACJ,CAAC,CAAC;EACN;EAEA,IAAI,CAACC,KAAK,EAAE;IACR,OAAOnB,UAAU;EACrB;EAEA,IAAImB,KAAK,CAAClB,GAAG,IAAI,CAACF,MAAM,CAACC,UAAU,EAAEmB,KAAK,CAAClB,GAAG,CAAC,EAAE;IAC7C,MAAM,IAAIsB,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFC,MAAM,EAAG,2BAA0Bb,GAAG,CAACO,KAAK,CAAClB,GAAG,CAAE,SAAQiB,IAAK;MACnE;IACJ,CAAC,CAAC;EACN;;EAEA;EACA;EACA,IAAIC,KAAK,CAACf,EAAE,IAAI,CAACD,KAAK,CAACH,UAAU,EAAEmB,KAAK,CAACf,EAAE,CAAC,EAAE;IAC1C,MAAM,IAAImB,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFC,MAAM,EAAG,2BAA0BhB,EAAE,CAACU,KAAK,CAACf,EAAE,CAAE,SAAQc,IAAK;MACjE;IACJ,CAAC,CAAC;EACN;EAEA,OAAOlB,UAAU;AACrB,CAAC;AAAC"}
|
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.pluralizedTypeName = void 0;
|
|
9
|
-
|
|
10
8
|
var _pluralize = _interopRequireDefault(require("pluralize"));
|
|
11
|
-
|
|
12
9
|
// This will make it so if the content model name is a single capitalized letter
|
|
13
10
|
// Ex. A, pluralizedTypeName will capitalize the name to As, instead of AS
|
|
14
11
|
const pluralizedTypeName = typeName => {
|
|
15
12
|
let pluralizedTypeName;
|
|
16
|
-
|
|
17
13
|
if (typeName.length === 1) {
|
|
18
14
|
pluralizedTypeName = `${typeName}s`;
|
|
19
15
|
} else {
|
|
20
16
|
pluralizedTypeName = (0, _pluralize.default)(typeName);
|
|
21
17
|
}
|
|
22
|
-
|
|
23
18
|
return pluralizedTypeName;
|
|
24
19
|
};
|
|
25
|
-
|
|
26
20
|
exports.pluralizedTypeName = pluralizedTypeName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["pluralizedTypeName","typeName","length","pluralize"],"sources":["pluralizedTypeName.ts"],"sourcesContent":["import pluralize from \"pluralize\";\n\n// This will make it so if the content model name is a single capitalized letter\n// Ex. A, pluralizedTypeName will capitalize the name to As, instead of AS\nexport const pluralizedTypeName = (typeName: string): string => {\n let pluralizedTypeName;\n if (typeName.length === 1) {\n pluralizedTypeName = `${typeName}s`;\n } else {\n pluralizedTypeName = pluralize(typeName);\n }\n return pluralizedTypeName;\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["pluralizedTypeName","typeName","length","pluralize"],"sources":["pluralizedTypeName.ts"],"sourcesContent":["import pluralize from \"pluralize\";\n\n// This will make it so if the content model name is a single capitalized letter\n// Ex. A, pluralizedTypeName will capitalize the name to As, instead of AS\nexport const pluralizedTypeName = (typeName: string): string => {\n let pluralizedTypeName;\n if (typeName.length === 1) {\n pluralizedTypeName = `${typeName}s`;\n } else {\n pluralizedTypeName = pluralize(typeName);\n }\n return pluralizedTypeName;\n};\n"],"mappings":";;;;;;;AAAA;AAEA;AACA;AACO,MAAMA,kBAAkB,GAAIC,QAAgB,IAAa;EAC5D,IAAID,kBAAkB;EACtB,IAAIC,QAAQ,CAACC,MAAM,KAAK,CAAC,EAAE;IACvBF,kBAAkB,GAAI,GAAEC,QAAS,GAAE;EACvC,CAAC,MAAM;IACHD,kBAAkB,GAAG,IAAAG,kBAAS,EAACF,QAAQ,CAAC;EAC5C;EACA,OAAOD,kBAAkB;AAC7B,CAAC;AAAC"}
|
package/utils/renderFields.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.renderFields = exports.renderField = void 0;
|
|
7
|
-
|
|
7
|
+
var _getBaseFieldType = require("./getBaseFieldType");
|
|
8
8
|
const renderFields = ({
|
|
9
9
|
model,
|
|
10
10
|
type,
|
|
@@ -17,28 +17,23 @@ const renderFields = ({
|
|
|
17
17
|
fieldTypePlugins
|
|
18
18
|
})).filter(Boolean);
|
|
19
19
|
};
|
|
20
|
-
|
|
21
20
|
exports.renderFields = renderFields;
|
|
22
|
-
|
|
23
21
|
const renderField = ({
|
|
24
22
|
model,
|
|
25
23
|
type,
|
|
26
24
|
field,
|
|
27
25
|
fieldTypePlugins
|
|
28
26
|
}) => {
|
|
29
|
-
const plugin = fieldTypePlugins[field
|
|
30
|
-
|
|
27
|
+
const plugin = fieldTypePlugins[(0, _getBaseFieldType.getBaseFieldType)(field)];
|
|
31
28
|
if (!plugin) {
|
|
32
29
|
// Let's not render the field if it does not exist in the field plugins.
|
|
33
30
|
return null;
|
|
34
31
|
}
|
|
35
|
-
|
|
36
32
|
const defs = plugin[type].createTypeField({
|
|
37
33
|
model,
|
|
38
34
|
field,
|
|
39
35
|
fieldTypePlugins
|
|
40
36
|
});
|
|
41
|
-
|
|
42
37
|
if (!defs) {
|
|
43
38
|
return null;
|
|
44
39
|
} else if (typeof defs === "string") {
|
|
@@ -46,8 +41,6 @@ const renderField = ({
|
|
|
46
41
|
fields: defs
|
|
47
42
|
};
|
|
48
43
|
}
|
|
49
|
-
|
|
50
44
|
return defs;
|
|
51
45
|
};
|
|
52
|
-
|
|
53
46
|
exports.renderField = renderField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["renderFields","model","type","fieldTypePlugins","fields","map","field","renderField","filter","Boolean","plugin","defs","createTypeField"],"sources":["renderFields.ts"],"sourcesContent":["import {\n ApiEndpoint,\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField,\n CmsModelFieldDefinition,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\n\ninterface RenderFieldsParams {\n model: CmsModel;\n type: ApiEndpoint;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface RenderFields {\n (params: RenderFieldsParams): CmsModelFieldDefinition[];\n}\n\nexport const renderFields: RenderFields = ({\n model,\n type,\n fieldTypePlugins\n}): CmsModelFieldDefinition[] => {\n return model.fields\n .map(field => renderField({ model, type, field, fieldTypePlugins }))\n .filter(Boolean) as CmsModelFieldDefinition[];\n};\n\ninterface RenderFieldParams extends RenderFieldsParams {\n field: CmsModelField;\n}\n\nexport const renderField = ({\n model,\n type,\n field,\n fieldTypePlugins\n}: RenderFieldParams): CmsModelFieldDefinition | null => {\n const plugin: CmsModelFieldToGraphQLPlugin = fieldTypePlugins[field
|
|
1
|
+
{"version":3,"names":["renderFields","model","type","fieldTypePlugins","fields","map","field","renderField","filter","Boolean","plugin","getBaseFieldType","defs","createTypeField"],"sources":["renderFields.ts"],"sourcesContent":["import {\n ApiEndpoint,\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField,\n CmsModelFieldDefinition,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\ninterface RenderFieldsParams {\n model: CmsModel;\n type: ApiEndpoint;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface RenderFields {\n (params: RenderFieldsParams): CmsModelFieldDefinition[];\n}\n\nexport const renderFields: RenderFields = ({\n model,\n type,\n fieldTypePlugins\n}): CmsModelFieldDefinition[] => {\n return model.fields\n .map(field => renderField({ model, type, field, fieldTypePlugins }))\n .filter(Boolean) as CmsModelFieldDefinition[];\n};\n\ninterface RenderFieldParams extends RenderFieldsParams {\n field: CmsModelField;\n}\n\nexport const renderField = ({\n model,\n type,\n field,\n fieldTypePlugins\n}: RenderFieldParams): CmsModelFieldDefinition | null => {\n const plugin: CmsModelFieldToGraphQLPlugin = fieldTypePlugins[getBaseFieldType(field)];\n if (!plugin) {\n // Let's not render the field if it does not exist in the field plugins.\n return null;\n }\n const defs = plugin[type].createTypeField({\n model,\n field,\n fieldTypePlugins\n });\n\n if (!defs) {\n return null;\n } else if (typeof defs === \"string\") {\n return {\n fields: defs\n };\n }\n\n return defs;\n};\n"],"mappings":";;;;;;AAQA;AAWO,MAAMA,YAA0B,GAAG,CAAC;EACvCC,KAAK;EACLC,IAAI;EACJC;AACJ,CAAC,KAAgC;EAC7B,OAAOF,KAAK,CAACG,MAAM,CACdC,GAAG,CAACC,KAAK,IAAIC,WAAW,CAAC;IAAEN,KAAK;IAAEC,IAAI;IAAEI,KAAK;IAAEH;EAAiB,CAAC,CAAC,CAAC,CACnEK,MAAM,CAACC,OAAO,CAAC;AACxB,CAAC;AAAC;AAMK,MAAMF,WAAW,GAAG,CAAC;EACxBN,KAAK;EACLC,IAAI;EACJI,KAAK;EACLH;AACe,CAAC,KAAqC;EACrD,MAAMO,MAAoC,GAAGP,gBAAgB,CAAC,IAAAQ,kCAAgB,EAACL,KAAK,CAAC,CAAC;EACtF,IAAI,CAACI,MAAM,EAAE;IACT;IACA,OAAO,IAAI;EACf;EACA,MAAME,IAAI,GAAGF,MAAM,CAACR,IAAI,CAAC,CAACW,eAAe,CAAC;IACtCZ,KAAK;IACLK,KAAK;IACLH;EACJ,CAAC,CAAC;EAEF,IAAI,CAACS,IAAI,EAAE;IACP,OAAO,IAAI;EACf,CAAC,MAAM,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IACjC,OAAO;MACHR,MAAM,EAAEQ;IACZ,CAAC;EACL;EAEA,OAAOA,IAAI;AACf,CAAC;AAAC"}
|
|
@@ -4,15 +4,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.renderGetFilterFields = void 0;
|
|
7
|
-
|
|
7
|
+
var _getBaseFieldType = require("./getBaseFieldType");
|
|
8
8
|
const getCreateFilters = (plugins, fieldType) => {
|
|
9
9
|
if (!plugins[fieldType] || !plugins[fieldType].read.createGetFilters) {
|
|
10
10
|
return null;
|
|
11
11
|
}
|
|
12
|
-
|
|
13
12
|
return plugins[fieldType].read.createGetFilters;
|
|
14
13
|
};
|
|
15
|
-
|
|
16
14
|
const renderGetFilterFields = ({
|
|
17
15
|
model,
|
|
18
16
|
fieldTypePlugins
|
|
@@ -23,34 +21,28 @@ const renderGetFilterFields = ({
|
|
|
23
21
|
// want to be careful when accessing the field plugin here too. It is still possible to have a content model
|
|
24
22
|
// that contains a field, for which we don't have a plugin registered on the backend. For example, user
|
|
25
23
|
// could've just removed the plugin from the backend.
|
|
26
|
-
|
|
24
|
+
const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
|
|
25
|
+
if (!fieldTypePlugins[baseType]) {
|
|
27
26
|
return false;
|
|
28
27
|
}
|
|
29
|
-
|
|
30
|
-
return fieldTypePlugins[field.type].isSearchable;
|
|
28
|
+
return fieldTypePlugins[baseType].isSearchable;
|
|
31
29
|
}).map(f => f.fieldId);
|
|
32
30
|
const filters = ["id: ID", "entryId: String"];
|
|
33
|
-
|
|
34
31
|
for (const fieldId of fieldIdList) {
|
|
35
32
|
const field = model.fields.find(item => item.fieldId === fieldId);
|
|
36
|
-
|
|
37
33
|
if (!field) {
|
|
38
34
|
continue;
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
const createGetFilters = getCreateFilters(fieldTypePlugins,
|
|
42
|
-
|
|
36
|
+
const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
|
|
37
|
+
const createGetFilters = getCreateFilters(fieldTypePlugins, baseType);
|
|
43
38
|
if (typeof createGetFilters !== "function") {
|
|
44
39
|
continue;
|
|
45
40
|
}
|
|
46
|
-
|
|
47
41
|
filters.push(createGetFilters({
|
|
48
42
|
model,
|
|
49
43
|
field
|
|
50
44
|
}));
|
|
51
45
|
}
|
|
52
|
-
|
|
53
46
|
return filters.filter(Boolean).join("\n");
|
|
54
47
|
};
|
|
55
|
-
|
|
56
48
|
exports.renderGetFilterFields = renderGetFilterFields;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getCreateFilters","plugins","fieldType","read","createGetFilters","renderGetFilterFields","model","fieldTypePlugins","fieldIdList","fields","filter","field","
|
|
1
|
+
{"version":3,"names":["getCreateFilters","plugins","fieldType","read","createGetFilters","renderGetFilterFields","model","fieldTypePlugins","fieldIdList","fields","filter","field","baseType","getBaseFieldType","isSearchable","map","f","fieldId","filters","find","item","push","Boolean","join"],"sources":["renderGetFilterFields.ts"],"sourcesContent":["import { CmsFieldTypePlugins, CmsModel, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\ninterface RenderGetFilterFieldsParams {\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface RenderGetFilterFields {\n (params: RenderGetFilterFieldsParams): string;\n}\n\nconst getCreateFilters = (\n plugins: CmsFieldTypePlugins,\n fieldType: string\n): CmsModelFieldToGraphQLPlugin[\"read\"][\"createGetFilters\"] | null => {\n if (!plugins[fieldType] || !plugins[fieldType].read.createGetFilters) {\n return null;\n }\n return plugins[fieldType].read.createGetFilters;\n};\n\nexport const renderGetFilterFields: RenderGetFilterFields = ({ model, fieldTypePlugins }) => {\n const fieldIdList = model.fields\n .filter(field => {\n // Every time a client updates content model's fields, we check the type of each field. If a field plugin\n // for a particular \"field.type\" doesn't exist on the backend yet, we throw an error. But still, we also\n // want to be careful when accessing the field plugin here too. It is still possible to have a content model\n // that contains a field, for which we don't have a plugin registered on the backend. For example, user\n // could've just removed the plugin from the backend.\n const baseType = getBaseFieldType(field);\n if (!fieldTypePlugins[baseType]) {\n return false;\n }\n return fieldTypePlugins[baseType].isSearchable;\n })\n .map(f => f.fieldId);\n\n const filters: string[] = [\"id: ID\", \"entryId: String\"];\n\n for (const fieldId of fieldIdList) {\n const field = model.fields.find(item => item.fieldId === fieldId);\n if (!field) {\n continue;\n }\n const baseType = getBaseFieldType(field);\n const createGetFilters = getCreateFilters(fieldTypePlugins, baseType);\n if (typeof createGetFilters !== \"function\") {\n continue;\n }\n filters.push(createGetFilters({ model, field }));\n }\n\n return filters.filter(Boolean).join(\"\\n\");\n};\n"],"mappings":";;;;;;AACA;AAUA,MAAMA,gBAAgB,GAAG,CACrBC,OAA4B,EAC5BC,SAAiB,KACiD;EAClE,IAAI,CAACD,OAAO,CAACC,SAAS,CAAC,IAAI,CAACD,OAAO,CAACC,SAAS,CAAC,CAACC,IAAI,CAACC,gBAAgB,EAAE;IAClE,OAAO,IAAI;EACf;EACA,OAAOH,OAAO,CAACC,SAAS,CAAC,CAACC,IAAI,CAACC,gBAAgB;AACnD,CAAC;AAEM,MAAMC,qBAA4C,GAAG,CAAC;EAAEC,KAAK;EAAEC;AAAiB,CAAC,KAAK;EACzF,MAAMC,WAAW,GAAGF,KAAK,CAACG,MAAM,CAC3BC,MAAM,CAACC,KAAK,IAAI;IACb;IACA;IACA;IACA;IACA;IACA,MAAMC,QAAQ,GAAG,IAAAC,kCAAgB,EAACF,KAAK,CAAC;IACxC,IAAI,CAACJ,gBAAgB,CAACK,QAAQ,CAAC,EAAE;MAC7B,OAAO,KAAK;IAChB;IACA,OAAOL,gBAAgB,CAACK,QAAQ,CAAC,CAACE,YAAY;EAClD,CAAC,CAAC,CACDC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,OAAO,CAAC;EAExB,MAAMC,OAAiB,GAAG,CAAC,QAAQ,EAAE,iBAAiB,CAAC;EAEvD,KAAK,MAAMD,OAAO,IAAIT,WAAW,EAAE;IAC/B,MAAMG,KAAK,GAAGL,KAAK,CAACG,MAAM,CAACU,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACH,OAAO,KAAKA,OAAO,CAAC;IACjE,IAAI,CAACN,KAAK,EAAE;MACR;IACJ;IACA,MAAMC,QAAQ,GAAG,IAAAC,kCAAgB,EAACF,KAAK,CAAC;IACxC,MAAMP,gBAAgB,GAAGJ,gBAAgB,CAACO,gBAAgB,EAAEK,QAAQ,CAAC;IACrE,IAAI,OAAOR,gBAAgB,KAAK,UAAU,EAAE;MACxC;IACJ;IACAc,OAAO,CAACG,IAAI,CAACjB,gBAAgB,CAAC;MAAEE,KAAK;MAAEK;IAAM,CAAC,CAAC,CAAC;EACpD;EAEA,OAAOO,OAAO,CAACR,MAAM,CAACY,OAAO,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;AAC7C,CAAC;AAAC"}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.renderInputFields = exports.renderInputField = void 0;
|
|
7
|
-
|
|
7
|
+
var _getBaseFieldType = require("./getBaseFieldType");
|
|
8
8
|
const renderInputFields = ({
|
|
9
9
|
model,
|
|
10
10
|
fieldTypePlugins
|
|
@@ -15,9 +15,7 @@ const renderInputFields = ({
|
|
|
15
15
|
fieldTypePlugins
|
|
16
16
|
})).filter(Boolean);
|
|
17
17
|
};
|
|
18
|
-
|
|
19
18
|
exports.renderInputFields = renderInputFields;
|
|
20
|
-
|
|
21
19
|
const renderInputField = ({
|
|
22
20
|
model,
|
|
23
21
|
field,
|
|
@@ -28,26 +26,21 @@ const renderInputField = ({
|
|
|
28
26
|
// want to be careful when accessing the field plugin here too. It is still possible to have a content model
|
|
29
27
|
// that contains a field, for which we don't have a plugin registered on the backend. For example, user
|
|
30
28
|
// could've just removed the plugin from the backend.
|
|
31
|
-
const plugin = fieldTypePlugins[field
|
|
32
|
-
|
|
29
|
+
const plugin = fieldTypePlugins[(0, _getBaseFieldType.getBaseFieldType)(field)];
|
|
33
30
|
if (!plugin) {
|
|
34
31
|
// Let's not render the field if it does not exist in the field plugins.
|
|
35
32
|
return null;
|
|
36
33
|
}
|
|
37
|
-
|
|
38
34
|
const def = plugin.manage.createInputField({
|
|
39
35
|
model,
|
|
40
36
|
field,
|
|
41
37
|
fieldTypePlugins
|
|
42
38
|
});
|
|
43
|
-
|
|
44
39
|
if (typeof def === "string") {
|
|
45
40
|
return {
|
|
46
41
|
fields: def
|
|
47
42
|
};
|
|
48
43
|
}
|
|
49
|
-
|
|
50
44
|
return def;
|
|
51
45
|
};
|
|
52
|
-
|
|
53
46
|
exports.renderInputField = renderInputField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["renderInputFields","model","fieldTypePlugins","fields","map","field","renderInputField","filter","Boolean","plugin","
|
|
1
|
+
{"version":3,"names":["renderInputFields","model","fieldTypePlugins","fields","map","field","renderInputField","filter","Boolean","plugin","getBaseFieldType","def","manage","createInputField"],"sources":["renderInputFields.ts"],"sourcesContent":["import {\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField,\n CmsModelFieldDefinition,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\ninterface RenderInputFieldsParams {\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface RenderInputFieldParams extends RenderInputFieldsParams {\n field: CmsModelField;\n}\ninterface RenderInputFields {\n (params: RenderInputFieldsParams): CmsModelFieldDefinition[];\n}\n\nexport const renderInputFields: RenderInputFields = ({\n model,\n fieldTypePlugins\n}): CmsModelFieldDefinition[] => {\n return model.fields\n .map(field => renderInputField({ model, field, fieldTypePlugins }))\n .filter(Boolean) as CmsModelFieldDefinition[];\n};\n\nexport const renderInputField = ({\n model,\n field,\n fieldTypePlugins\n}: RenderInputFieldParams): CmsModelFieldDefinition | null => {\n // Every time a client updates content model's fields, we check the type of each field. If a field plugin\n // for a particular \"field.type\" doesn't exist on the backend yet, we throw an error. But still, we also\n // want to be careful when accessing the field plugin here too. It is still possible to have a content model\n // that contains a field, for which we don't have a plugin registered on the backend. For example, user\n // could've just removed the plugin from the backend.\n const plugin: CmsModelFieldToGraphQLPlugin = fieldTypePlugins[getBaseFieldType(field)];\n\n if (!plugin) {\n // Let's not render the field if it does not exist in the field plugins.\n return null;\n }\n\n const def = plugin.manage.createInputField({\n model,\n field,\n fieldTypePlugins\n });\n if (typeof def === \"string\") {\n return {\n fields: def\n };\n }\n\n return def;\n};\n"],"mappings":";;;;;;AAOA;AAaO,MAAMA,iBAAoC,GAAG,CAAC;EACjDC,KAAK;EACLC;AACJ,CAAC,KAAgC;EAC7B,OAAOD,KAAK,CAACE,MAAM,CACdC,GAAG,CAACC,KAAK,IAAIC,gBAAgB,CAAC;IAAEL,KAAK;IAAEI,KAAK;IAAEH;EAAiB,CAAC,CAAC,CAAC,CAClEK,MAAM,CAACC,OAAO,CAAC;AACxB,CAAC;AAAC;AAEK,MAAMF,gBAAgB,GAAG,CAAC;EAC7BL,KAAK;EACLI,KAAK;EACLH;AACoB,CAAC,KAAqC;EAC1D;EACA;EACA;EACA;EACA;EACA,MAAMO,MAAoC,GAAGP,gBAAgB,CAAC,IAAAQ,kCAAgB,EAACL,KAAK,CAAC,CAAC;EAEtF,IAAI,CAACI,MAAM,EAAE;IACT;IACA,OAAO,IAAI;EACf;EAEA,MAAME,GAAG,GAAGF,MAAM,CAACG,MAAM,CAACC,gBAAgB,CAAC;IACvCZ,KAAK;IACLI,KAAK;IACLH;EACJ,CAAC,CAAC;EACF,IAAI,OAAOS,GAAG,KAAK,QAAQ,EAAE;IACzB,OAAO;MACHR,MAAM,EAAEQ;IACZ,CAAC;EACL;EAEA,OAAOA,GAAG;AACd,CAAC;AAAC"}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.renderListFilterFields = void 0;
|
|
7
|
-
|
|
7
|
+
var _getBaseFieldType = require("./getBaseFieldType");
|
|
8
8
|
/**
|
|
9
9
|
* We cast as read type, because input and output of read and manage are same. This way we ease things.
|
|
10
10
|
* Internal stuff so it should be ok.
|
|
@@ -16,10 +16,8 @@ const getCreateListFilters = (plugins, fieldType, type) => {
|
|
|
16
16
|
} else if (!plugins[fieldType][type]) {
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
19
|
return plugins[fieldType][type].createListFilters;
|
|
21
20
|
};
|
|
22
|
-
|
|
23
21
|
const renderListFilterFields = params => {
|
|
24
22
|
const {
|
|
25
23
|
model,
|
|
@@ -27,26 +25,29 @@ const renderListFilterFields = params => {
|
|
|
27
25
|
fieldTypePlugins
|
|
28
26
|
} = params;
|
|
29
27
|
const fields = [["id: ID", "id_not: ID", "id_in: [ID!]", "id_not_in: [ID!]", "entryId: String", "entryId_not: String", "entryId_in: [String!]", "entryId_not_in: [String!]", "createdOn: DateTime", "createdOn_gt: DateTime", "createdOn_gte: DateTime", "createdOn_lt: DateTime", "createdOn_lte: DateTime", "createdOn_between: [DateTime!]", "createdOn_not_between: [DateTime!]", "savedOn: DateTime", "savedOn_gt: DateTime", "savedOn_gte: DateTime", "savedOn_lt: DateTime", "savedOn_lte: DateTime", "savedOn_between: [DateTime!]", "savedOn_not_between: [DateTime!]", "createdBy: String", "createdBy_not: String", "createdBy_in: [String!]", "createdBy_not_in: [String!]", "ownedBy: String", "ownedBy_not: String", "ownedBy_in: [String!]", "ownedBy_not_in: [String!]"].join("\n")];
|
|
30
|
-
|
|
28
|
+
/**
|
|
29
|
+
* We can find different statuses only in the manage API endpoint.
|
|
30
|
+
*/
|
|
31
|
+
if (type === "manage") {
|
|
32
|
+
fields.push(...["status: String", "status_not: String", "status_in: [String!]", "status_not_in: [String!]"]);
|
|
33
|
+
}
|
|
31
34
|
for (const field of model.fields) {
|
|
32
35
|
// Every time a client updates content model's fields, we check the type of each field. If a field plugin
|
|
33
36
|
// for a particular "field.type" doesn't exist on the backend yet, we throw an error. But still, we also
|
|
34
37
|
// want to be careful when accessing the field plugin here too. It is still possible to have a content model
|
|
35
38
|
// that contains a field, for which we don't have a plugin registered on the backend. For example, user
|
|
36
39
|
// could've just removed the plugin from the backend.
|
|
37
|
-
const createListFilters = getCreateListFilters(fieldTypePlugins, field.type, type);
|
|
38
40
|
|
|
41
|
+
const createListFilters = getCreateListFilters(fieldTypePlugins, (0, _getBaseFieldType.getBaseFieldType)(field), type);
|
|
39
42
|
if (typeof createListFilters !== "function") {
|
|
40
43
|
continue;
|
|
41
44
|
}
|
|
42
|
-
|
|
43
45
|
fields.push(createListFilters({
|
|
44
46
|
model,
|
|
45
|
-
field
|
|
47
|
+
field,
|
|
48
|
+
plugins: fieldTypePlugins
|
|
46
49
|
}));
|
|
47
50
|
}
|
|
48
|
-
|
|
49
51
|
return fields.filter(Boolean).join("\n");
|
|
50
52
|
};
|
|
51
|
-
|
|
52
53
|
exports.renderListFilterFields = renderListFilterFields;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getCreateListFilters","plugins","fieldType","type","createListFilters","renderListFilterFields","params","model","fieldTypePlugins","fields","join","field","
|
|
1
|
+
{"version":3,"names":["getCreateListFilters","plugins","fieldType","type","createListFilters","renderListFilterFields","params","model","fieldTypePlugins","fields","join","push","field","getBaseFieldType","filter","Boolean"],"sources":["renderListFilterFields.ts"],"sourcesContent":["import { ApiEndpoint, CmsFieldTypePlugins, CmsModel, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\ninterface RenderListFilterFieldsParams {\n model: CmsModel;\n type: ApiEndpoint;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface RenderListFilterFields {\n (params: RenderListFilterFieldsParams): string;\n}\n\ntype CreateListFiltersType =\n | CmsModelFieldToGraphQLPlugin[\"read\"][\"createListFilters\"]\n | CmsModelFieldToGraphQLPlugin[\"manage\"][\"createListFilters\"];\n/**\n * We cast as read type, because input and output of read and manage are same. This way we ease things.\n * Internal stuff so it should be ok.\n * TODO note that if changing read/manage types, change this as well.\n */\nconst getCreateListFilters = (\n plugins: CmsFieldTypePlugins,\n fieldType: string,\n type: ApiEndpoint\n): CreateListFiltersType | null => {\n if (!plugins[fieldType]) {\n return null;\n } else if (!plugins[fieldType][type]) {\n return null;\n }\n return plugins[fieldType][type].createListFilters;\n};\n\nexport const renderListFilterFields: RenderListFilterFields = (params): string => {\n const { model, type, fieldTypePlugins } = params;\n const fields: string[] = [\n [\n \"id: ID\",\n \"id_not: ID\",\n \"id_in: [ID!]\",\n \"id_not_in: [ID!]\",\n \"entryId: String\",\n \"entryId_not: String\",\n \"entryId_in: [String!]\",\n \"entryId_not_in: [String!]\",\n \"createdOn: DateTime\",\n \"createdOn_gt: DateTime\",\n \"createdOn_gte: DateTime\",\n \"createdOn_lt: DateTime\",\n \"createdOn_lte: DateTime\",\n \"createdOn_between: [DateTime!]\",\n \"createdOn_not_between: [DateTime!]\",\n \"savedOn: DateTime\",\n \"savedOn_gt: DateTime\",\n \"savedOn_gte: DateTime\",\n \"savedOn_lt: DateTime\",\n \"savedOn_lte: DateTime\",\n \"savedOn_between: [DateTime!]\",\n \"savedOn_not_between: [DateTime!]\",\n \"createdBy: String\",\n \"createdBy_not: String\",\n \"createdBy_in: [String!]\",\n \"createdBy_not_in: [String!]\",\n \"ownedBy: String\",\n \"ownedBy_not: String\",\n \"ownedBy_in: [String!]\",\n \"ownedBy_not_in: [String!]\"\n ].join(\"\\n\")\n ];\n /**\n * We can find different statuses only in the manage API endpoint.\n */\n if (type === \"manage\") {\n fields.push(\n ...[\n \"status: String\",\n \"status_not: String\",\n \"status_in: [String!]\",\n \"status_not_in: [String!]\"\n ]\n );\n }\n\n for (const field of model.fields) {\n // Every time a client updates content model's fields, we check the type of each field. If a field plugin\n // for a particular \"field.type\" doesn't exist on the backend yet, we throw an error. But still, we also\n // want to be careful when accessing the field plugin here too. It is still possible to have a content model\n // that contains a field, for which we don't have a plugin registered on the backend. For example, user\n // could've just removed the plugin from the backend.\n\n const createListFilters = getCreateListFilters(\n fieldTypePlugins,\n getBaseFieldType(field),\n type\n );\n if (typeof createListFilters !== \"function\") {\n continue;\n }\n fields.push(createListFilters({ model, field, plugins: fieldTypePlugins }));\n }\n\n return fields.filter(Boolean).join(\"\\n\");\n};\n"],"mappings":";;;;;;AACA;AAcA;AACA;AACA;AACA;AACA;AACA,MAAMA,oBAAoB,GAAG,CACzBC,OAA4B,EAC5BC,SAAiB,EACjBC,IAAiB,KACc;EAC/B,IAAI,CAACF,OAAO,CAACC,SAAS,CAAC,EAAE;IACrB,OAAO,IAAI;EACf,CAAC,MAAM,IAAI,CAACD,OAAO,CAACC,SAAS,CAAC,CAACC,IAAI,CAAC,EAAE;IAClC,OAAO,IAAI;EACf;EACA,OAAOF,OAAO,CAACC,SAAS,CAAC,CAACC,IAAI,CAAC,CAACC,iBAAiB;AACrD,CAAC;AAEM,MAAMC,sBAA8C,GAAIC,MAAM,IAAa;EAC9E,MAAM;IAAEC,KAAK;IAAEJ,IAAI;IAAEK;EAAiB,CAAC,GAAGF,MAAM;EAChD,MAAMG,MAAgB,GAAG,CACrB,CACI,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAChC,oCAAoC,EACpC,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,8BAA8B,EAC9B,kCAAkC,EAClC,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,CAC9B,CAACC,IAAI,CAAC,IAAI,CAAC,CACf;EACD;AACJ;AACA;EACI,IAAIP,IAAI,KAAK,QAAQ,EAAE;IACnBM,MAAM,CAACE,IAAI,CACP,GAAG,CACC,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,CAC7B,CACJ;EACL;EAEA,KAAK,MAAMC,KAAK,IAAIL,KAAK,CAACE,MAAM,EAAE;IAC9B;IACA;IACA;IACA;IACA;;IAEA,MAAML,iBAAiB,GAAGJ,oBAAoB,CAC1CQ,gBAAgB,EAChB,IAAAK,kCAAgB,EAACD,KAAK,CAAC,EACvBT,IAAI,CACP;IACD,IAAI,OAAOC,iBAAiB,KAAK,UAAU,EAAE;MACzC;IACJ;IACAK,MAAM,CAACE,IAAI,CAACP,iBAAiB,CAAC;MAAEG,KAAK;MAAEK,KAAK;MAAEX,OAAO,EAAEO;IAAiB,CAAC,CAAC,CAAC;EAC/E;EAEA,OAAOC,MAAM,CAACK,MAAM,CAACC,OAAO,CAAC,CAACL,IAAI,CAAC,IAAI,CAAC;AAC5C,CAAC;AAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { CmsFieldTypePlugins, CmsModel } from "../types";
|
|
2
|
+
import { CmsGraphQLSchemaSorterPlugin } from "../plugins/CmsGraphQLSchemaSorterPlugin";
|
|
3
|
+
interface RenderSortEnumParams {
|
|
4
|
+
model: CmsModel;
|
|
5
|
+
fieldTypePlugins: CmsFieldTypePlugins;
|
|
6
|
+
sorterPlugins: CmsGraphQLSchemaSorterPlugin[];
|
|
7
|
+
}
|
|
2
8
|
interface RenderSortEnum {
|
|
3
|
-
(params:
|
|
4
|
-
model: CmsModel;
|
|
5
|
-
fieldTypePlugins: CmsFieldTypePlugins;
|
|
6
|
-
}): string;
|
|
9
|
+
(params: RenderSortEnumParams): string;
|
|
7
10
|
}
|
|
8
11
|
export declare const renderSortEnum: RenderSortEnum;
|
|
9
12
|
export {};
|
package/utils/renderSortEnum.js
CHANGED
|
@@ -4,29 +4,39 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.renderSortEnum = void 0;
|
|
7
|
-
|
|
7
|
+
var _getBaseFieldType = require("./getBaseFieldType");
|
|
8
8
|
const renderSortEnum = ({
|
|
9
9
|
model,
|
|
10
|
-
fieldTypePlugins
|
|
10
|
+
fieldTypePlugins,
|
|
11
|
+
sorterPlugins
|
|
11
12
|
}) => {
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
let sorters = [`id_ASC`, `id_DESC`, "savedOn_ASC", "savedOn_DESC", "createdOn_ASC", "createdOn_DESC"];
|
|
14
14
|
for (const field of model.fields) {
|
|
15
|
-
const plugin = fieldTypePlugins[field
|
|
16
|
-
|
|
15
|
+
const plugin = fieldTypePlugins[(0, _getBaseFieldType.getBaseFieldType)(field)];
|
|
17
16
|
if (!plugin) {
|
|
18
17
|
continue;
|
|
18
|
+
} else if (plugin.createSorters) {
|
|
19
|
+
const result = plugin.createSorters({
|
|
20
|
+
model,
|
|
21
|
+
field,
|
|
22
|
+
sorters
|
|
23
|
+
});
|
|
24
|
+
if (result) {
|
|
25
|
+
sorters = result;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
19
28
|
}
|
|
20
|
-
|
|
21
29
|
if (!plugin.isSortable) {
|
|
22
30
|
continue;
|
|
23
31
|
}
|
|
24
|
-
|
|
25
32
|
sorters.push(`${field.fieldId}_ASC`);
|
|
26
33
|
sorters.push(`${field.fieldId}_DESC`);
|
|
27
34
|
}
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
return sorterPlugins.reduce((result, plugin) => {
|
|
36
|
+
return plugin.createSorter({
|
|
37
|
+
model,
|
|
38
|
+
sorters: result
|
|
39
|
+
});
|
|
40
|
+
}, sorters).join("\n");
|
|
30
41
|
};
|
|
31
|
-
|
|
32
42
|
exports.renderSortEnum = renderSortEnum;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["renderSortEnum","model","fieldTypePlugins","sorters","field","fields","plugin","
|
|
1
|
+
{"version":3,"names":["renderSortEnum","model","fieldTypePlugins","sorterPlugins","sorters","field","fields","plugin","getBaseFieldType","createSorters","result","isSortable","push","fieldId","reduce","createSorter","join"],"sources":["renderSortEnum.ts"],"sourcesContent":["import { CmsFieldTypePlugins, CmsModel } from \"~/types\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\nimport { CmsGraphQLSchemaSorterPlugin } from \"~/plugins/CmsGraphQLSchemaSorterPlugin\";\n\ninterface RenderSortEnumParams {\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n sorterPlugins: CmsGraphQLSchemaSorterPlugin[];\n}\ninterface RenderSortEnum {\n (params: RenderSortEnumParams): string;\n}\n\nexport const renderSortEnum: RenderSortEnum = ({\n model,\n fieldTypePlugins,\n sorterPlugins\n}): string => {\n let sorters: string[] = [\n `id_ASC`,\n `id_DESC`,\n \"savedOn_ASC\",\n \"savedOn_DESC\",\n \"createdOn_ASC\",\n \"createdOn_DESC\"\n ];\n\n for (const field of model.fields) {\n const plugin = fieldTypePlugins[getBaseFieldType(field)];\n if (!plugin) {\n continue;\n } else if (plugin.createSorters) {\n const result = plugin.createSorters({\n model,\n field,\n sorters\n });\n if (result) {\n sorters = result;\n continue;\n }\n }\n if (!plugin.isSortable) {\n continue;\n }\n sorters.push(`${field.fieldId}_ASC`);\n sorters.push(`${field.fieldId}_DESC`);\n }\n\n return sorterPlugins\n .reduce((result, plugin) => {\n return plugin.createSorter({\n model,\n sorters: result\n });\n }, sorters)\n .join(\"\\n\");\n};\n"],"mappings":";;;;;;AACA;AAYO,MAAMA,cAA8B,GAAG,CAAC;EAC3CC,KAAK;EACLC,gBAAgB;EAChBC;AACJ,CAAC,KAAa;EACV,IAAIC,OAAiB,GAAG,CACnB,QAAO,EACP,SAAQ,EACT,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,CACnB;EAED,KAAK,MAAMC,KAAK,IAAIJ,KAAK,CAACK,MAAM,EAAE;IAC9B,MAAMC,MAAM,GAAGL,gBAAgB,CAAC,IAAAM,kCAAgB,EAACH,KAAK,CAAC,CAAC;IACxD,IAAI,CAACE,MAAM,EAAE;MACT;IACJ,CAAC,MAAM,IAAIA,MAAM,CAACE,aAAa,EAAE;MAC7B,MAAMC,MAAM,GAAGH,MAAM,CAACE,aAAa,CAAC;QAChCR,KAAK;QACLI,KAAK;QACLD;MACJ,CAAC,CAAC;MACF,IAAIM,MAAM,EAAE;QACRN,OAAO,GAAGM,MAAM;QAChB;MACJ;IACJ;IACA,IAAI,CAACH,MAAM,CAACI,UAAU,EAAE;MACpB;IACJ;IACAP,OAAO,CAACQ,IAAI,CAAE,GAAEP,KAAK,CAACQ,OAAQ,MAAK,CAAC;IACpCT,OAAO,CAACQ,IAAI,CAAE,GAAEP,KAAK,CAACQ,OAAQ,OAAM,CAAC;EACzC;EAEA,OAAOV,aAAa,CACfW,MAAM,CAAC,CAACJ,MAAM,EAAEH,MAAM,KAAK;IACxB,OAAOA,MAAM,CAACQ,YAAY,CAAC;MACvBd,KAAK;MACLG,OAAO,EAAEM;IACb,CAAC,CAAC;EACN,CAAC,EAAEN,OAAO,CAAC,CACVY,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAAC"}
|
package/utils/toSlug.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.toSlug = void 0;
|
|
9
|
-
|
|
10
8
|
var _slugify = _interopRequireDefault(require("slugify"));
|
|
11
|
-
|
|
12
9
|
const toSlug = text => {
|
|
13
10
|
return (0, _slugify.default)(text, {
|
|
14
11
|
replacement: "-",
|
|
@@ -16,5 +13,4 @@ const toSlug = text => {
|
|
|
16
13
|
remove: /[*#\?<>_\{\}\[\]+~.()'"!:;@]/g
|
|
17
14
|
});
|
|
18
15
|
};
|
|
19
|
-
|
|
20
16
|
exports.toSlug = toSlug;
|
package/utils/toSlug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["toSlug","text","slugify","replacement","lower","remove"],"sources":["toSlug.ts"],"sourcesContent":["import slugify from \"slugify\";\n\nexport const toSlug = (text: string): string => {\n return slugify(text, {\n replacement: \"-\",\n lower: true,\n remove: /[*#\\?<>_\\{\\}\\[\\]+~.()'\"!:;@]/g\n });\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["toSlug","text","slugify","replacement","lower","remove"],"sources":["toSlug.ts"],"sourcesContent":["import slugify from \"slugify\";\n\nexport const toSlug = (text: string): string => {\n return slugify(text, {\n replacement: \"-\",\n lower: true,\n remove: /[*#\\?<>_\\{\\}\\[\\]+~.()'\"!:;@]/g\n });\n};\n"],"mappings":";;;;;;;AAAA;AAEO,MAAMA,MAAM,GAAIC,IAAY,IAAa;EAC5C,OAAO,IAAAC,gBAAO,EAACD,IAAI,EAAE;IACjBE,WAAW,EAAE,GAAG;IAChBC,KAAK,EAAE,IAAI;IACXC,MAAM,EAAE;EACZ,CAAC,CAAC;AACN,CAAC;AAAC"}
|