@webiny/api-headless-cms 5.41.0-dbt.0 → 5.41.1-beta.0
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/constants.d.ts +1 -0
- package/constants.js +2 -1
- package/constants.js.map +1 -1
- package/crud/contentEntry/afterDelete.js +7 -1
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/useCases/DeleteEntry/TransformEntryMoveToBin.js +0 -8
- package/crud/contentEntry/useCases/DeleteEntry/TransformEntryMoveToBin.js.map +1 -1
- package/crud/contentEntry/useCases/RestoreEntryFromBin/TransformEntryRestoreFromBin.js +0 -8
- package/crud/contentEntry/useCases/RestoreEntryFromBin/TransformEntryRestoreFromBin.js.map +1 -1
- package/crud/contentModel/beforeDelete.js +31 -0
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/validation.d.ts +146 -146
- package/crud/contentModel.crud.js +8 -1
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +1 -1
- package/export/crud/sanitize.d.ts +1 -1
- package/export/crud/sanitize.js +2 -1
- package/export/crud/sanitize.js.map +1 -1
- package/export/types.d.ts +1 -1
- package/export/types.js.map +1 -1
- package/graphql/createExecutableSchema.js +14 -7
- package/graphql/createExecutableSchema.js.map +1 -1
- package/graphql/graphQLHandlerFactory.d.ts +2 -2
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.d.ts +2 -1
- package/graphql/index.js +1 -1
- package/graphql/index.js.map +1 -1
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +1 -1
- package/graphql/schema/createFieldResolvers.js +1 -3
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/createSingularResolvers.d.ts +13 -0
- package/graphql/schema/createSingularResolvers.js +56 -0
- package/graphql/schema/createSingularResolvers.js.map +1 -0
- package/graphql/schema/createSingularSDL.d.ts +12 -0
- package/graphql/schema/createSingularSDL.js +95 -0
- package/graphql/schema/createSingularSDL.js.map +1 -0
- package/graphql/schema/resolvers/singular/resolveGet.d.ts +7 -0
- package/graphql/schema/resolvers/singular/resolveGet.js +21 -0
- package/graphql/schema/resolvers/singular/resolveGet.js.map +1 -0
- package/graphql/schema/resolvers/singular/resolveUpdate.d.ts +8 -0
- package/graphql/schema/resolvers/singular/resolveUpdate.js +21 -0
- package/graphql/schema/resolvers/singular/resolveUpdate.js.map +1 -0
- package/graphql/schema/schemaPlugins.js +23 -0
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/index.d.ts +4 -1
- package/index.js +25 -1
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +4 -4
- package/modelManager/DefaultCmsModelManager.js +13 -13
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/modelManager/SingletonModelManager.d.ts +12 -0
- package/modelManager/SingletonModelManager.js +48 -0
- package/modelManager/SingletonModelManager.js.map +1 -0
- package/modelManager/index.d.ts +1 -0
- package/modelManager/index.js +15 -0
- package/modelManager/index.js.map +1 -1
- package/package.json +23 -22
- package/plugins/CmsModelPlugin.js +1 -1
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/types/modelField.d.ts +2 -1
- package/types/modelField.js.map +1 -1
- package/types/types.d.ts +22 -6
- package/types/types.js.map +1 -1
- package/utils/contentEntryTraverser/ContentEntryTraverser.d.ts +4 -1
- package/utils/contentEntryTraverser/ContentEntryTraverser.js.map +1 -1
- package/utils/contentModelAst/CmsModelToAstConverter.d.ts +1 -1
- package/utils/contentModelAst/CmsModelToAstConverter.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.js +3 -2
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +11 -0
- package/utils/index.js.map +1 -1
- package/utils/modelFieldTraverser/ModelFieldTraverser.d.ts +16 -0
- package/utils/modelFieldTraverser/ModelFieldTraverser.js +41 -0
- package/utils/modelFieldTraverser/ModelFieldTraverser.js.map +1 -0
- package/utils/modelFieldTraverser/index.d.ts +1 -0
- package/utils/modelFieldTraverser/index.js +18 -0
- package/utils/modelFieldTraverser/index.js.map +1 -0
|
@@ -21,6 +21,7 @@ var _ensureTypeTag = require("./contentModel/ensureTypeTag");
|
|
|
21
21
|
var _listModelsFromDatabase = require("./contentModel/listModelsFromDatabase");
|
|
22
22
|
var _filterAsync = require("../utils/filterAsync");
|
|
23
23
|
var _contentModelAst = require("../utils/contentModelAst");
|
|
24
|
+
var _modelManager = require("../modelManager");
|
|
24
25
|
const createModelsCrud = params => {
|
|
25
26
|
const {
|
|
26
27
|
getTenant,
|
|
@@ -164,6 +165,11 @@ const createModelsCrud = params => {
|
|
|
164
165
|
const model = await getModelFromCache(modelId);
|
|
165
166
|
return await updateManager(context, model);
|
|
166
167
|
};
|
|
168
|
+
const getSingletonEntryManager = async input => {
|
|
169
|
+
const model = typeof input === "string" ? await getModel(input) : input;
|
|
170
|
+
const manager = await getEntryManager(model);
|
|
171
|
+
return _modelManager.SingletonModelManager.create(manager);
|
|
172
|
+
};
|
|
167
173
|
|
|
168
174
|
/**
|
|
169
175
|
* Create
|
|
@@ -592,7 +598,8 @@ const createModelsCrud = params => {
|
|
|
592
598
|
});
|
|
593
599
|
},
|
|
594
600
|
getEntryManager,
|
|
595
|
-
getEntryManagers: () => managers
|
|
601
|
+
getEntryManagers: () => managers,
|
|
602
|
+
getSingletonEntryManager
|
|
596
603
|
};
|
|
597
604
|
};
|
|
598
605
|
exports.createModelsCrud = createModelsCrud;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_CmsModelPlugin","_validation","_utils","_defaultFields","_utils2","_ensureTypeTag","_listModelsFromDatabase","_filterAsync","_contentModelAst","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","accessControl","context","listPluginModelsCache","createMemoryCache","listFilteredModelsCache","listDatabaseModelsCache","clearModelsCache","clear","managers","Map","updateManager","model","manager","contentModelManagerFactory","set","modelId","fieldTypePlugins","plugins","byType","getModelToAstConverter","CmsModelToAstConverter","CmsModelFieldToAstConverterFromPlugins","listPluginModels","tenant","locale","modelPlugins","CmsModelPlugin","type","cacheKey","createCacheKey","models","map","contentModel","pluralApiName","singularApiName","savedOn","join","identity","security","isAuthorizationEnabled","id","undefined","getOrSet","filter","plugin","modelTenant","modelLocale","tags","ensureTypeTag","webinyVersion","WEBINY_VERSION","filterAsync","canAccessModel","getModelFromCache","listModels","find","m","NotFoundError","code","benchmark","measure","pluginModels","dbCacheKey","databaseModels","listModelsFromDatabase","filteredCacheKey","get","filteredModels","concat","getModel","withoutAuthorization","ensureCanAccessModel","getEntryManager","target","has","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelBeforeUpdate","assignModelBeforeDelete","createModel","input","rwd","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","defaultFields","data","removeUndefinedValues","assignModelDefaultFields","group","cms","getGroup","titleFieldId","descriptionFieldId","imageFieldId","description","name","createdBy","displayName","createdOn","Date","toISOString","lockedFields","publish","createdModel","create","ex","updateModel","original","createModelUpdateValidation","Object","keys","length","groupId","groupData","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","userInput","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsEntryValues,\n CmsModel,\n CmsModelContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { ensureTypeTag } from \"./contentModel/ensureTypeTag\";\nimport { listModelsFromDatabase } from \"~/crud/contentModel/listModelsFromDatabase\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { AccessControl } from \"./AccessControl/AccessControl\";\nimport {\n CmsModelToAstConverter,\n CmsModelFieldToAstConverterFromPlugins\n} from \"~/utils/contentModelAst\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n accessControl: AccessControl;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, accessControl, context } = params;\n\n const listPluginModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listFilteredModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listDatabaseModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const clearModelsCache = (): void => {\n listDatabaseModelsCache.clear();\n listFilteredModelsCache.clear();\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async <T extends CmsEntryValues = CmsEntryValues>(\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager<T>> => {\n const manager = await contentModelManagerFactory<T>(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const fieldTypePlugins = context.plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n\n const getModelToAstConverter = () => {\n return new CmsModelToAstConverter(\n new CmsModelFieldToAstConverterFromPlugins(fieldTypePlugins)\n );\n };\n\n const listPluginModels = async (tenant: string, locale: string): Promise<CmsModel[]> => {\n const modelPlugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n const cacheKey = createCacheKey({\n tenant,\n locale,\n models: modelPlugins\n .map(({ contentModel: model }) => {\n return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${\n model.savedOn || \"unknown\"\n }`;\n })\n .join(\"/\"),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n return listPluginModelsCache.getOrSet(cacheKey, async () => {\n const models = modelPlugins\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n }) as unknown as CmsModel[];\n\n return filterAsync(models, async model => {\n return accessControl.canAccessModel({ model });\n });\n });\n };\n\n const getModelFromCache = async (modelId: string) => {\n const models = await listModels();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n /**\n * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.\n *\n * We always fetch the plugins and database models separately.\n * Then we combine them and run access filtering on them\n */\n const listModels = async () => {\n return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const tenant = getTenant().id;\n const locale = getLocale().code;\n const pluginModels = await listPluginModels(tenant, locale);\n const dbCacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {\n return await listModelsFromDatabase(params);\n });\n\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const filteredModels = await listFilteredModelsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseModels, async model => {\n return accessControl.canAccessModel({ model });\n });\n }\n );\n\n return filteredModels.concat(pluginModels);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n const model = await context.security.withoutAuthorization(async () => {\n return await getModelFromCache(modelId);\n });\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n await accessControl.ensureCanAccessModel({ model });\n\n return model;\n });\n };\n\n const getEntryManager: CmsModelContext[\"getEntryManager\"] = async <\n T extends CmsEntryValues = CmsEntryValues\n >(\n target: string | Pick<CmsModel, \"modelId\">\n ): Promise<CmsModelManager<T>> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager<T>;\n }\n const model = await getModelFromCache(modelId);\n return await updateManager<T>(context, model);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n context\n });\n\n /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async input => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.cms.getGroup(data.group);\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const updateModel: CmsModelContext[\"updateModel\"] = async (modelId, input) => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n const groupId = data.group;\n if (groupId) {\n const groupData = await context.cms.getGroup(groupId);\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n };\n const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async params => {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n clearModelsCache();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const deleteModel: CmsModelContext[\"deleteModel\"] = async modelId => {\n await accessControl.ensureCanAccessModel({ rwd: \"d\" });\n\n const model = await getModel(modelId);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"d\" });\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n clearModelsCache();\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n };\n const initializeModel: CmsModelContext[\"initializeModel\"] = async (modelId, data) => {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n const model = await getModel(modelId);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n };\n return {\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n getModelToAstConverter,\n listModels,\n async createModel(input) {\n return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\n },\n getEntryManager,\n getEntryManagers: () => managers\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_CmsModelPlugin","_validation","_utils","_defaultFields","_utils2","_ensureTypeTag","_listModelsFromDatabase","_filterAsync","_contentModelAst","_modelManager","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","accessControl","context","listPluginModelsCache","createMemoryCache","listFilteredModelsCache","listDatabaseModelsCache","clearModelsCache","clear","managers","Map","updateManager","model","manager","contentModelManagerFactory","set","modelId","fieldTypePlugins","plugins","byType","getModelToAstConverter","CmsModelToAstConverter","CmsModelFieldToAstConverterFromPlugins","listPluginModels","tenant","locale","modelPlugins","CmsModelPlugin","type","cacheKey","createCacheKey","models","map","contentModel","pluralApiName","singularApiName","savedOn","join","identity","security","isAuthorizationEnabled","id","undefined","getOrSet","filter","plugin","modelTenant","modelLocale","tags","ensureTypeTag","webinyVersion","WEBINY_VERSION","filterAsync","canAccessModel","getModelFromCache","listModels","find","m","NotFoundError","code","benchmark","measure","pluginModels","dbCacheKey","databaseModels","listModelsFromDatabase","filteredCacheKey","get","filteredModels","concat","getModel","withoutAuthorization","ensureCanAccessModel","getEntryManager","target","has","getSingletonEntryManager","input","SingletonModelManager","create","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelBeforeUpdate","assignModelBeforeDelete","createModel","rwd","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","defaultFields","data","removeUndefinedValues","assignModelDefaultFields","group","cms","getGroup","titleFieldId","descriptionFieldId","imageFieldId","description","name","createdBy","displayName","createdOn","Date","toISOString","lockedFields","publish","createdModel","ex","updateModel","original","createModelUpdateValidation","Object","keys","length","groupId","groupData","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","userInput","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsEntryValues,\n CmsModel,\n CmsModelContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { ensureTypeTag } from \"./contentModel/ensureTypeTag\";\nimport { listModelsFromDatabase } from \"~/crud/contentModel/listModelsFromDatabase\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { AccessControl } from \"./AccessControl/AccessControl\";\nimport {\n CmsModelFieldToAstConverterFromPlugins,\n CmsModelToAstConverter\n} from \"~/utils/contentModelAst\";\nimport { SingletonModelManager } from \"~/modelManager\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n accessControl: AccessControl;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, accessControl, context } = params;\n\n const listPluginModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listFilteredModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listDatabaseModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const clearModelsCache = (): void => {\n listDatabaseModelsCache.clear();\n listFilteredModelsCache.clear();\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async <T extends CmsEntryValues = CmsEntryValues>(\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager<T>> => {\n const manager = await contentModelManagerFactory<T>(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const fieldTypePlugins = context.plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n\n const getModelToAstConverter = () => {\n return new CmsModelToAstConverter(\n new CmsModelFieldToAstConverterFromPlugins(fieldTypePlugins)\n );\n };\n\n const listPluginModels = async (tenant: string, locale: string): Promise<CmsModel[]> => {\n const modelPlugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n const cacheKey = createCacheKey({\n tenant,\n locale,\n models: modelPlugins\n .map(({ contentModel: model }) => {\n return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${\n model.savedOn || \"unknown\"\n }`;\n })\n .join(\"/\"),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n return listPluginModelsCache.getOrSet(cacheKey, async () => {\n const models = modelPlugins\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n }) as unknown as CmsModel[];\n\n return filterAsync(models, async model => {\n return accessControl.canAccessModel({ model });\n });\n });\n };\n\n const getModelFromCache = async (modelId: string) => {\n const models = await listModels();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n /**\n * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.\n *\n * We always fetch the plugins and database models separately.\n * Then we combine them and run access filtering on them\n */\n const listModels = async () => {\n return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const tenant = getTenant().id;\n const locale = getLocale().code;\n const pluginModels = await listPluginModels(tenant, locale);\n const dbCacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {\n return await listModelsFromDatabase(params);\n });\n\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const filteredModels = await listFilteredModelsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseModels, async model => {\n return accessControl.canAccessModel({ model });\n });\n }\n );\n\n return filteredModels.concat(pluginModels);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n const model = await context.security.withoutAuthorization(async () => {\n return await getModelFromCache(modelId);\n });\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n await accessControl.ensureCanAccessModel({ model });\n\n return model;\n });\n };\n\n const getEntryManager: CmsModelContext[\"getEntryManager\"] = async <\n T extends CmsEntryValues = CmsEntryValues\n >(\n target: string | Pick<CmsModel, \"modelId\">\n ): Promise<CmsModelManager<T>> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager<T>;\n }\n const model = await getModelFromCache(modelId);\n return await updateManager<T>(context, model);\n };\n\n const getSingletonEntryManager = async <T extends CmsEntryValues = CmsEntryValues>(\n input: CmsModel | string\n ) => {\n const model = typeof input === \"string\" ? await getModel(input) : input;\n\n const manager = await getEntryManager<T>(model);\n\n return SingletonModelManager.create<T>(manager);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n context\n });\n\n /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async input => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.cms.getGroup(data.group);\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const updateModel: CmsModelContext[\"updateModel\"] = async (modelId, input) => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n const groupId = data.group;\n if (groupId) {\n const groupData = await context.cms.getGroup(groupId);\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n };\n const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async params => {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n clearModelsCache();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const deleteModel: CmsModelContext[\"deleteModel\"] = async modelId => {\n await accessControl.ensureCanAccessModel({ rwd: \"d\" });\n\n const model = await getModel(modelId);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"d\" });\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n clearModelsCache();\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n };\n const initializeModel: CmsModelContext[\"initializeModel\"] = async (modelId, data) => {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n const model = await getModel(modelId);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n };\n return {\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n getModelToAstConverter,\n listModels,\n async createModel(input) {\n return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\n },\n getEntryManager,\n getEntryManagers: () => managers,\n getSingletonEntryManager\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,8 +7,8 @@ export declare const createGroupCreateValidation: () => zod.ZodObject<{
|
|
|
7
7
|
icon: zod.ZodString;
|
|
8
8
|
}, "strip", zod.ZodTypeAny, {
|
|
9
9
|
name: string;
|
|
10
|
-
description: string;
|
|
11
10
|
slug: string;
|
|
11
|
+
description: string;
|
|
12
12
|
icon: string;
|
|
13
13
|
id?: string | null | undefined;
|
|
14
14
|
}, {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CmsGroup, CmsModel } from "../../types";
|
|
2
2
|
import { SanitizedCmsGroup, SanitizedCmsModel } from "../types";
|
|
3
3
|
export declare const sanitizeGroup: (group: CmsGroup) => SanitizedCmsGroup;
|
|
4
|
-
export declare const sanitizeModel: (group: Pick<CmsGroup, "id"
|
|
4
|
+
export declare const sanitizeModel: (group: Pick<CmsGroup, "id">, model: CmsModel) => SanitizedCmsModel;
|
package/export/crud/sanitize.js
CHANGED
|
@@ -27,7 +27,8 @@ const sanitizeModel = (group, model) => {
|
|
|
27
27
|
layout: model.layout,
|
|
28
28
|
titleFieldId: model.titleFieldId,
|
|
29
29
|
descriptionFieldId: model.descriptionFieldId,
|
|
30
|
-
imageFieldId: model.imageFieldId
|
|
30
|
+
imageFieldId: model.imageFieldId,
|
|
31
|
+
tags: model.tags || []
|
|
31
32
|
};
|
|
32
33
|
};
|
|
33
34
|
exports.sanitizeModel = sanitizeModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sanitizeGroup","group","id","name","slug","description","icon","exports","sanitizeModel","model","modelId","singularApiName","pluralApiName","fields","layout","titleFieldId","descriptionFieldId","imageFieldId"],"sources":["sanitize.ts"],"sourcesContent":["import { CmsGroup, CmsModel } from \"~/types\";\nimport { SanitizedCmsGroup, SanitizedCmsModel } from \"~/export/types\";\n\nexport const sanitizeGroup = (group: CmsGroup): SanitizedCmsGroup => {\n return {\n id: group.id,\n name: group.name,\n slug: group.slug,\n description: group.description,\n icon: group.icon\n };\n};\n\nexport const sanitizeModel = (
|
|
1
|
+
{"version":3,"names":["sanitizeGroup","group","id","name","slug","description","icon","exports","sanitizeModel","model","modelId","singularApiName","pluralApiName","fields","layout","titleFieldId","descriptionFieldId","imageFieldId","tags"],"sources":["sanitize.ts"],"sourcesContent":["import { CmsGroup, CmsModel } from \"~/types\";\nimport { SanitizedCmsGroup, SanitizedCmsModel } from \"~/export/types\";\n\nexport const sanitizeGroup = (group: CmsGroup): SanitizedCmsGroup => {\n return {\n id: group.id,\n name: group.name,\n slug: group.slug,\n description: group.description,\n icon: group.icon\n };\n};\n\nexport const sanitizeModel = (group: Pick<CmsGroup, \"id\">, model: CmsModel): SanitizedCmsModel => {\n return {\n modelId: model.modelId,\n name: model.name,\n group: group.id,\n icon: model.icon,\n description: model.description,\n singularApiName: model.singularApiName,\n pluralApiName: model.pluralApiName,\n fields: model.fields,\n layout: model.layout,\n titleFieldId: model.titleFieldId,\n descriptionFieldId: model.descriptionFieldId,\n imageFieldId: model.imageFieldId,\n tags: model.tags || []\n };\n};\n"],"mappings":";;;;;;AAGO,MAAMA,aAAa,GAAIC,KAAe,IAAwB;EACjE,OAAO;IACHC,EAAE,EAAED,KAAK,CAACC,EAAE;IACZC,IAAI,EAAEF,KAAK,CAACE,IAAI;IAChBC,IAAI,EAAEH,KAAK,CAACG,IAAI;IAChBC,WAAW,EAAEJ,KAAK,CAACI,WAAW;IAC9BC,IAAI,EAAEL,KAAK,CAACK;EAChB,CAAC;AACL,CAAC;AAACC,OAAA,CAAAP,aAAA,GAAAA,aAAA;AAEK,MAAMQ,aAAa,GAAGA,CAACP,KAA2B,EAAEQ,KAAe,KAAwB;EAC9F,OAAO;IACHC,OAAO,EAAED,KAAK,CAACC,OAAO;IACtBP,IAAI,EAAEM,KAAK,CAACN,IAAI;IAChBF,KAAK,EAAEA,KAAK,CAACC,EAAE;IACfI,IAAI,EAAEG,KAAK,CAACH,IAAI;IAChBD,WAAW,EAAEI,KAAK,CAACJ,WAAW;IAC9BM,eAAe,EAAEF,KAAK,CAACE,eAAe;IACtCC,aAAa,EAAEH,KAAK,CAACG,aAAa;IAClCC,MAAM,EAAEJ,KAAK,CAACI,MAAM;IACpBC,MAAM,EAAEL,KAAK,CAACK,MAAM;IACpBC,YAAY,EAAEN,KAAK,CAACM,YAAY;IAChCC,kBAAkB,EAAEP,KAAK,CAACO,kBAAkB;IAC5CC,YAAY,EAAER,KAAK,CAACQ,YAAY;IAChCC,IAAI,EAAET,KAAK,CAACS,IAAI,IAAI;EACxB,CAAC;AACL,CAAC;AAACX,OAAA,CAAAC,aAAA,GAAAA,aAAA","ignoreList":[]}
|
package/export/types.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export interface HeadlessCmsExportStructureParams {
|
|
|
18
18
|
models?: string[];
|
|
19
19
|
}
|
|
20
20
|
export type SanitizedCmsGroup = Pick<CmsGroup, "id" | "name" | "slug" | "description" | "icon">;
|
|
21
|
-
export interface SanitizedCmsModel extends Pick<CmsModel, "modelId" | "fields" | "titleFieldId" | "descriptionFieldId" | "imageFieldId" | "layout" | "icon" | "singularApiName" | "pluralApiName" | "name" | "description"> {
|
|
21
|
+
export interface SanitizedCmsModel extends Pick<CmsModel, "modelId" | "fields" | "titleFieldId" | "descriptionFieldId" | "imageFieldId" | "layout" | "icon" | "singularApiName" | "pluralApiName" | "name" | "description" | "tags"> {
|
|
22
22
|
group: string;
|
|
23
23
|
}
|
|
24
24
|
export interface HeadlessCmsExportStructureResponse {
|
package/export/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CmsImportAction","exports"],"sources":["types.ts"],"sourcesContent":["import { CmsGroup, CmsModel } from \"~/types\";\n\nexport interface CmsImportError {\n message: string;\n code: string | null;\n data?: Record<string, any> | null;\n stack?: any;\n}\n\nexport enum CmsImportAction {\n CREATE = \"create\",\n UPDATE = \"update\",\n CODE = \"code\",\n NONE = \"none\"\n}\n/**\n * Structure export - groups and models.\n */\n\nexport interface HeadlessCmsExportStructureParams {\n models?: string[];\n}\n\nexport type SanitizedCmsGroup = Pick<CmsGroup, \"id\" | \"name\" | \"slug\" | \"description\" | \"icon\">;\n\nexport interface SanitizedCmsModel\n extends Pick<\n CmsModel,\n | \"modelId\"\n | \"fields\"\n | \"titleFieldId\"\n | \"descriptionFieldId\"\n | \"imageFieldId\"\n | \"layout\"\n | \"icon\"\n | \"singularApiName\"\n | \"pluralApiName\"\n | \"name\"\n | \"description\"\n > {\n group: string;\n}\n\nexport interface HeadlessCmsExportStructureResponse {\n groups: SanitizedCmsGroup[];\n models: SanitizedCmsModel[];\n}\n\nexport interface HeadlessCmsExportStructure {\n (params: HeadlessCmsExportStructureParams): Promise<HeadlessCmsExportStructureResponse>;\n}\n\nexport interface HeadlessCmsImportStructureParamsDataModel\n extends Omit<Partial<CmsModel>, \"group\"> {\n group?: string;\n}\n\nexport interface CmsImportStructureParamsData {\n groups: Partial<CmsGroup>[];\n models: HeadlessCmsImportStructureParamsDataModel[];\n}\n\nexport interface HeadlessCmsImportStructureParams {\n data: CmsImportStructureParamsData;\n}\n\nexport interface HeadlessCmsImportValidateParams {\n data: CmsImportStructureParamsData;\n}\n\nexport interface CmsGroupImportResult {\n action: CmsImportAction;\n group: Partial<Pick<CmsGroup, \"id\" | \"name\">>;\n error?: CmsImportError;\n imported: boolean;\n}\n\nexport interface CmsModelImportResult {\n action: CmsImportAction;\n model: Partial<Pick<CmsModel, \"modelId\" | \"name\">> & {\n group: string;\n };\n related?: string[] | null;\n error?: CmsImportError;\n imported: boolean;\n}\n\nexport interface HeadlessCmsImportStructureResponse {\n groups: CmsGroupImportResult[];\n models: CmsModelImportResult[];\n message?: string | null;\n error?: string;\n}\n\nexport interface HeadlessCmsImportStructure {\n (params: HeadlessCmsImportStructureParams): Promise<HeadlessCmsImportStructureResponse>;\n}\n\nexport interface ValidCmsGroupResult {\n group: CmsGroup;\n action: CmsImportAction;\n target?: string;\n error?: never;\n}\n\nexport interface InvalidCmsGroupResult {\n group: CmsGroup;\n action: CmsImportAction;\n target?: never;\n error: CmsImportError;\n}\n\nexport interface ValidatedCmsModel extends Omit<CmsModel, \"group\"> {\n group: string;\n}\nexport interface ValidCmsModelResult {\n model: ValidatedCmsModel;\n related: string[];\n action: CmsImportAction;\n error?: never;\n}\n\nexport interface InvalidCmsModelResult {\n model: ValidatedCmsModel;\n action: CmsImportAction;\n error: CmsImportError;\n}\n\nexport type ValidatedCmsGroupResult = ValidCmsGroupResult | InvalidCmsGroupResult;\nexport type ValidatedCmsModelResult = ValidCmsModelResult | InvalidCmsModelResult;\n\nexport interface HeadlessCmsImportValidateResponse {\n groups: ValidatedCmsGroupResult[];\n models: ValidatedCmsModelResult[];\n message: string;\n}\n\nexport interface HeadlessCmsImportValidate {\n (params: HeadlessCmsImportValidateParams): Promise<HeadlessCmsImportValidateResponse>;\n}\n\n/**\n * Interface for the main context interface.\n */\nexport interface HeadlessCmsExport {\n structure: HeadlessCmsExportStructure;\n}\n\nexport interface HeadlessCmsImport {\n validate: HeadlessCmsImportValidate;\n structure: HeadlessCmsImportStructure;\n}\n"],"mappings":";;;;;;IASYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B;AACA;AACA;
|
|
1
|
+
{"version":3,"names":["CmsImportAction","exports"],"sources":["types.ts"],"sourcesContent":["import { CmsGroup, CmsModel } from \"~/types\";\n\nexport interface CmsImportError {\n message: string;\n code: string | null;\n data?: Record<string, any> | null;\n stack?: any;\n}\n\nexport enum CmsImportAction {\n CREATE = \"create\",\n UPDATE = \"update\",\n CODE = \"code\",\n NONE = \"none\"\n}\n/**\n * Structure export - groups and models.\n */\n\nexport interface HeadlessCmsExportStructureParams {\n models?: string[];\n}\n\nexport type SanitizedCmsGroup = Pick<CmsGroup, \"id\" | \"name\" | \"slug\" | \"description\" | \"icon\">;\n\nexport interface SanitizedCmsModel\n extends Pick<\n CmsModel,\n | \"modelId\"\n | \"fields\"\n | \"titleFieldId\"\n | \"descriptionFieldId\"\n | \"imageFieldId\"\n | \"layout\"\n | \"icon\"\n | \"singularApiName\"\n | \"pluralApiName\"\n | \"name\"\n | \"description\"\n | \"tags\"\n > {\n group: string;\n}\n\nexport interface HeadlessCmsExportStructureResponse {\n groups: SanitizedCmsGroup[];\n models: SanitizedCmsModel[];\n}\n\nexport interface HeadlessCmsExportStructure {\n (params: HeadlessCmsExportStructureParams): Promise<HeadlessCmsExportStructureResponse>;\n}\n\nexport interface HeadlessCmsImportStructureParamsDataModel\n extends Omit<Partial<CmsModel>, \"group\"> {\n group?: string;\n}\n\nexport interface CmsImportStructureParamsData {\n groups: Partial<CmsGroup>[];\n models: HeadlessCmsImportStructureParamsDataModel[];\n}\n\nexport interface HeadlessCmsImportStructureParams {\n data: CmsImportStructureParamsData;\n}\n\nexport interface HeadlessCmsImportValidateParams {\n data: CmsImportStructureParamsData;\n}\n\nexport interface CmsGroupImportResult {\n action: CmsImportAction;\n group: Partial<Pick<CmsGroup, \"id\" | \"name\">>;\n error?: CmsImportError;\n imported: boolean;\n}\n\nexport interface CmsModelImportResult {\n action: CmsImportAction;\n model: Partial<Pick<CmsModel, \"modelId\" | \"name\">> & {\n group: string;\n };\n related?: string[] | null;\n error?: CmsImportError;\n imported: boolean;\n}\n\nexport interface HeadlessCmsImportStructureResponse {\n groups: CmsGroupImportResult[];\n models: CmsModelImportResult[];\n message?: string | null;\n error?: string;\n}\n\nexport interface HeadlessCmsImportStructure {\n (params: HeadlessCmsImportStructureParams): Promise<HeadlessCmsImportStructureResponse>;\n}\n\nexport interface ValidCmsGroupResult {\n group: CmsGroup;\n action: CmsImportAction;\n target?: string;\n error?: never;\n}\n\nexport interface InvalidCmsGroupResult {\n group: CmsGroup;\n action: CmsImportAction;\n target?: never;\n error: CmsImportError;\n}\n\nexport interface ValidatedCmsModel extends Omit<CmsModel, \"group\"> {\n group: string;\n}\nexport interface ValidCmsModelResult {\n model: ValidatedCmsModel;\n related: string[];\n action: CmsImportAction;\n error?: never;\n}\n\nexport interface InvalidCmsModelResult {\n model: ValidatedCmsModel;\n action: CmsImportAction;\n error: CmsImportError;\n}\n\nexport type ValidatedCmsGroupResult = ValidCmsGroupResult | InvalidCmsGroupResult;\nexport type ValidatedCmsModelResult = ValidCmsModelResult | InvalidCmsModelResult;\n\nexport interface HeadlessCmsImportValidateResponse {\n groups: ValidatedCmsGroupResult[];\n models: ValidatedCmsModelResult[];\n message: string;\n}\n\nexport interface HeadlessCmsImportValidate {\n (params: HeadlessCmsImportValidateParams): Promise<HeadlessCmsImportValidateResponse>;\n}\n\n/**\n * Interface for the main context interface.\n */\nexport interface HeadlessCmsExport {\n structure: HeadlessCmsExportStructure;\n}\n\nexport interface HeadlessCmsImport {\n validate: HeadlessCmsImportValidate;\n structure: HeadlessCmsImportStructure;\n}\n"],"mappings":";;;;;;IASYA,eAAe,GAAAC,OAAA,CAAAD,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAM3B;AACA;AACA;AA6HA;AACA;AACA","ignoreList":[]}
|
|
@@ -5,25 +5,32 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createExecutableSchema = void 0;
|
|
7
7
|
var _schema = require("@graphql-tools/schema");
|
|
8
|
+
var _merge = require("@graphql-tools/merge");
|
|
9
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
10
|
const createExecutableSchema = params => {
|
|
9
11
|
const {
|
|
10
12
|
plugins
|
|
11
13
|
} = params;
|
|
12
|
-
/**
|
|
13
|
-
* Really hard to type this to satisfy the makeExecutableSchema
|
|
14
|
-
*/
|
|
15
|
-
// TODO @ts-refactor
|
|
16
14
|
const typeDefs = [];
|
|
17
15
|
const resolvers = [];
|
|
16
|
+
const resolverDecoration = new _handlerGraphql.ResolverDecoration();
|
|
18
17
|
|
|
19
18
|
// Get schema definitions from plugins
|
|
20
19
|
for (const plugin of plugins) {
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const schema = plugin.schema;
|
|
21
|
+
if (schema.typeDefs) {
|
|
22
|
+
typeDefs.push(schema.typeDefs);
|
|
23
|
+
}
|
|
24
|
+
if (schema.resolvers) {
|
|
25
|
+
resolvers.push(schema.resolvers);
|
|
26
|
+
}
|
|
27
|
+
if (schema.resolverDecorators) {
|
|
28
|
+
resolverDecoration.addDecorators(schema.resolverDecorators);
|
|
29
|
+
}
|
|
23
30
|
}
|
|
24
31
|
return (0, _schema.makeExecutableSchema)({
|
|
25
32
|
typeDefs,
|
|
26
|
-
resolvers
|
|
33
|
+
resolvers: resolverDecoration.decorateResolvers((0, _merge.mergeResolvers)(resolvers))
|
|
27
34
|
});
|
|
28
35
|
};
|
|
29
36
|
exports.createExecutableSchema = createExecutableSchema;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_schema","require","createExecutableSchema","params","plugins","typeDefs","resolvers","plugin","push","
|
|
1
|
+
{"version":3,"names":["_schema","require","_merge","_handlerGraphql","createExecutableSchema","params","plugins","typeDefs","resolvers","resolverDecoration","ResolverDecoration","plugin","schema","push","resolverDecorators","addDecorators","makeExecutableSchema","decorateResolvers","mergeResolvers","exports"],"sources":["createExecutableSchema.ts"],"sourcesContent":["import { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { mergeResolvers } from \"@graphql-tools/merge\";\nimport { ResolverDecoration } from \"@webiny/handler-graphql\";\nimport { Resolvers, TypeDefs } from \"@webiny/handler-graphql/types\";\nimport { ICmsGraphQLSchemaPlugin } from \"~/plugins\";\n\ninterface Params {\n plugins: ICmsGraphQLSchemaPlugin[];\n}\n\nexport const createExecutableSchema = (params: Params) => {\n const { plugins } = params;\n\n const typeDefs: TypeDefs[] = [];\n const resolvers: Resolvers<any>[] = [];\n\n const resolverDecoration = new ResolverDecoration();\n\n // Get schema definitions from plugins\n for (const plugin of plugins) {\n const schema = plugin.schema;\n if (schema.typeDefs) {\n typeDefs.push(schema.typeDefs);\n }\n if (schema.resolvers) {\n resolvers.push(schema.resolvers);\n }\n if (schema.resolverDecorators) {\n resolverDecoration.addDecorators(schema.resolverDecorators);\n }\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers: resolverDecoration.decorateResolvers(mergeResolvers(resolvers))\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAQO,MAAMG,sBAAsB,GAAIC,MAAc,IAAK;EACtD,MAAM;IAAEC;EAAQ,CAAC,GAAGD,MAAM;EAE1B,MAAME,QAAoB,GAAG,EAAE;EAC/B,MAAMC,SAA2B,GAAG,EAAE;EAEtC,MAAMC,kBAAkB,GAAG,IAAIC,kCAAkB,CAAC,CAAC;;EAEnD;EACA,KAAK,MAAMC,MAAM,IAAIL,OAAO,EAAE;IAC1B,MAAMM,MAAM,GAAGD,MAAM,CAACC,MAAM;IAC5B,IAAIA,MAAM,CAACL,QAAQ,EAAE;MACjBA,QAAQ,CAACM,IAAI,CAACD,MAAM,CAACL,QAAQ,CAAC;IAClC;IACA,IAAIK,MAAM,CAACJ,SAAS,EAAE;MAClBA,SAAS,CAACK,IAAI,CAACD,MAAM,CAACJ,SAAS,CAAC;IACpC;IACA,IAAII,MAAM,CAACE,kBAAkB,EAAE;MAC3BL,kBAAkB,CAACM,aAAa,CAACH,MAAM,CAACE,kBAAkB,CAAC;IAC/D;EACJ;EAEA,OAAO,IAAAE,4BAAoB,EAAC;IACxBT,QAAQ;IACRC,SAAS,EAAEC,kBAAkB,CAACQ,iBAAiB,CAAC,IAAAC,qBAAc,EAACV,SAAS,CAAC;EAC7E,CAAC,CAAC;AACN,CAAC;AAACW,OAAA,CAAAf,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Plugin } from "@webiny/plugins/types";
|
|
2
2
|
export interface GraphQLHandlerFactoryParams {
|
|
3
3
|
debug?: boolean;
|
|
4
4
|
}
|
|
5
|
-
export declare const graphQLHandlerFactory: ({ debug }: GraphQLHandlerFactoryParams) =>
|
|
5
|
+
export declare const graphQLHandlerFactory: ({ debug }: GraphQLHandlerFactoryParams) => Plugin[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_debugPlugins","_interopRequireDefault","require","_handler","_handleRequest","cmsRoutes","RoutePlugin","onPost","onOptions","context","request","reply","handleRequest","_","status","send","hijack","name","graphQLHandlerFactory","debug","debugPlugins","type","exports"],"sources":["graphQLHandlerFactory.ts"],"sourcesContent":["import debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport { CmsContext } from \"~/types\";\nimport {
|
|
1
|
+
{"version":3,"names":["_debugPlugins","_interopRequireDefault","require","_handler","_handleRequest","cmsRoutes","RoutePlugin","onPost","onOptions","context","request","reply","handleRequest","_","status","send","hijack","name","graphQLHandlerFactory","debug","debugPlugins","type","exports"],"sources":["graphQLHandlerFactory.ts"],"sourcesContent":["import debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport { CmsContext } from \"~/types\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { RoutePlugin } from \"@webiny/handler\";\nimport { handleRequest } from \"./handleRequest\";\n\nexport interface GraphQLHandlerFactoryParams {\n debug?: boolean;\n}\n\nconst cmsRoutes = new RoutePlugin<CmsContext>(({ onPost, onOptions, context }) => {\n onPost(\"/cms/:type(^manage|preview|read$)/:locale\", async (request, reply) => {\n return handleRequest({ context, request, reply });\n });\n\n onOptions(\"/cms/:type(^manage|preview|read$)/:locale\", async (_, reply) => {\n return reply.status(204).send({}).hijack();\n });\n});\n\ncmsRoutes.name = \"headless-cms.graphql.route.default\";\n\nexport const graphQLHandlerFactory = ({ debug }: GraphQLHandlerFactoryParams): Plugin[] => {\n return [\n ...(debug ? debugPlugins() : []),\n cmsRoutes,\n {\n type: \"wcp-telemetry-tracker\"\n }\n ];\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AAMA,MAAMG,SAAS,GAAG,IAAIC,oBAAW,CAAa,CAAC;EAAEC,MAAM;EAAEC,SAAS;EAAEC;AAAQ,CAAC,KAAK;EAC9EF,MAAM,CAAC,2CAA2C,EAAE,OAAOG,OAAO,EAAEC,KAAK,KAAK;IAC1E,OAAO,IAAAC,4BAAa,EAAC;MAAEH,OAAO;MAAEC,OAAO;MAAEC;IAAM,CAAC,CAAC;EACrD,CAAC,CAAC;EAEFH,SAAS,CAAC,2CAA2C,EAAE,OAAOK,CAAC,EAAEF,KAAK,KAAK;IACvE,OAAOA,KAAK,CAACG,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,CAAC,CAACC,MAAM,CAAC,CAAC;EAC9C,CAAC,CAAC;AACN,CAAC,CAAC;AAEFX,SAAS,CAACY,IAAI,GAAG,oCAAoC;AAE9C,MAAMC,qBAAqB,GAAGA,CAAC;EAAEC;AAAmC,CAAC,KAAe;EACvF,OAAO,CACH,IAAIA,KAAK,GAAG,IAAAC,qBAAY,EAAC,CAAC,GAAG,EAAE,CAAC,EAChCf,SAAS,EACT;IACIgB,IAAI,EAAE;EACV,CAAC,CACJ;AACL,CAAC;AAACC,OAAA,CAAAJ,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
package/graphql/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Plugin } from "@webiny/plugins/types";
|
|
1
2
|
import { GraphQLHandlerFactoryParams } from "./graphQLHandlerFactory";
|
|
2
3
|
export type CreateGraphQLParams = GraphQLHandlerFactoryParams;
|
|
3
|
-
export declare const createGraphQL: (params: CreateGraphQLParams) =>
|
|
4
|
+
export declare const createGraphQL: (params: CreateGraphQLParams) => Plugin[];
|
package/graphql/index.js
CHANGED
|
@@ -8,7 +8,7 @@ var _system = require("./system");
|
|
|
8
8
|
var _graphQLHandlerFactory = require("./graphQLHandlerFactory");
|
|
9
9
|
var _baseSchema = require("./schema/baseSchema");
|
|
10
10
|
const createGraphQL = params => {
|
|
11
|
-
return [(0, _baseSchema.createBaseSchema)(), (0, _system.createSystemSchemaPlugin)(), (0, _graphQLHandlerFactory.graphQLHandlerFactory)(params)];
|
|
11
|
+
return [(0, _baseSchema.createBaseSchema)(), (0, _system.createSystemSchemaPlugin)(), ...(0, _graphQLHandlerFactory.graphQLHandlerFactory)(params)];
|
|
12
12
|
};
|
|
13
13
|
exports.createGraphQL = createGraphQL;
|
|
14
14
|
|
package/graphql/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_system","require","_graphQLHandlerFactory","_baseSchema","createGraphQL","params","createBaseSchema","createSystemSchemaPlugin","graphQLHandlerFactory","exports"],"sources":["index.ts"],"sourcesContent":["import { createSystemSchemaPlugin } from \"./system\";\nimport { graphQLHandlerFactory, GraphQLHandlerFactoryParams } from \"./graphQLHandlerFactory\";\nimport { createBaseSchema } from \"~/graphql/schema/baseSchema\";\n\nexport type CreateGraphQLParams = GraphQLHandlerFactoryParams;\nexport const createGraphQL = (params: CreateGraphQLParams) => {\n return [createBaseSchema(), createSystemSchemaPlugin(), graphQLHandlerFactory(params)];\n};\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"names":["_system","require","_graphQLHandlerFactory","_baseSchema","createGraphQL","params","createBaseSchema","createSystemSchemaPlugin","graphQLHandlerFactory","exports"],"sources":["index.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins/types\";\nimport { createSystemSchemaPlugin } from \"./system\";\nimport { graphQLHandlerFactory, GraphQLHandlerFactoryParams } from \"./graphQLHandlerFactory\";\nimport { createBaseSchema } from \"~/graphql/schema/baseSchema\";\n\nexport type CreateGraphQLParams = GraphQLHandlerFactoryParams;\nexport const createGraphQL = (params: CreateGraphQLParams): Plugin[] => {\n return [createBaseSchema(), createSystemSchemaPlugin(), ...graphQLHandlerFactory(params)];\n};\n"],"mappings":";;;;;;AACA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAGO,MAAMG,aAAa,GAAIC,MAA2B,IAAe;EACpE,OAAO,CAAC,IAAAC,4BAAgB,EAAC,CAAC,EAAE,IAAAC,gCAAwB,EAAC,CAAC,EAAE,GAAG,IAAAC,4CAAqB,EAACH,MAAM,CAAC,CAAC;AAC7F,CAAC;AAACI,OAAA,CAAAL,aAAA,GAAAA,aAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_apiSecurity","_getEntryTitle","_plugins","_getEntryDescription","_getEntryImage","_entryStorage","_constants","createDate","date","Date","createCmsEntryRecord","model","entry","id","entryId","modelId","name","status","title","getEntryTitle","description","getEntryDescription","image","getEntryImage","createdOn","modifiedOn","savedOn","createdBy","savedBy","modifiedBy","firstPublishedOn","lastPublishedOn","firstPublishedBy","lastPublishedBy","revisionCreatedOn","revisionSavedOn","revisionModifiedOn","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","revisionFirstPublishedOn","revisionLastPublishedOn","revisionFirstPublishedBy","revisionLastPublishedBy","wbyAco_location","folderId","location","getFetchMethod","type","context","getContentEntriesMethods","WebinyError","methodName","cms","GetContentEntryMethods","latest","published","exact","getContentEntries","params","args","method","models","listModels","modelsMap","reduce","collection","argsEntries","entries","entriesByModel","ref","includes","push","getters","Object","keys","map","length","Response","results","Promise","all","items","concat","item","filter","Boolean","ex","ErrorResponse","getContentEntry","find","m","NotAuthorizedResponse","data","result","shift","createResolveDescription","parent","_","field","fields","f","fieldId","descriptionFieldId","value","entryFieldFromStorageTransform","createContentEntriesSchema","MANAGE","plugin","createCmsGraphQLSchemaPlugin","typeDefs","resolvers","onByMetaFields","ENTRY_META_FIELDS","fieldType","isDateTimeEntryMetaField","join","CmsContentEntry","getPublishedEntriesByIds","CmsPublishedContentEntry","Query","searchContentEntries","modelIds","query","limit","modelManager","getEntryManager","where","listLatest","search","undefined","then","sort","a","b","getTime","slice","getLatestContentEntry","getPublishedContentEntry","getLatestContentEntries","getPublishedContentEntries","exports"],"sources":["contentEntries.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext, CmsEntry, CmsEntryListWhere, CmsIdentity, CmsModel } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle\";\nimport { createCmsGraphQLSchemaPlugin, ICmsGraphQLSchemaPlugin } from \"~/plugins\";\nimport { getEntryDescription } from \"~/utils/getEntryDescription\";\nimport { getEntryImage } from \"~/utils/getEntryImage\";\nimport { entryFieldFromStorageTransform } from \"~/utils/entryStorage\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\nconst createDate = (date: string | null): Date | null => {\n if (!date) {\n return null;\n }\n\n try {\n return new Date(date);\n } catch {\n return new Date();\n }\n};\n\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n description?: string | null;\n image?: string | null;\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: Date;\n modifiedOn: Date | null;\n savedOn: Date;\n createdBy: CmsIdentity;\n modifiedBy: CmsIdentity | null;\n savedBy: CmsIdentity;\n firstPublishedOn: Date | null;\n lastPublishedOn: Date | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: Date;\n revisionModifiedOn: Date | null;\n revisionSavedOn: Date;\n revisionCreatedBy: CmsIdentity;\n revisionModifiedBy: CmsIdentity | null;\n revisionSavedBy: CmsIdentity;\n revisionFirstPublishedOn: Date | null;\n revisionLastPublishedOn: Date | null;\n revisionFirstPublishedBy: CmsIdentity | null;\n revisionLastPublishedBy: CmsIdentity | null;\n\n wbyAco_location?: {\n folderId?: string | null;\n };\n}\n\nconst createCmsEntryRecord = (model: CmsModel, entry: CmsEntry): CmsEntryRecord => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n description: getEntryDescription(model, entry),\n image: getEntryImage(model, entry),\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: createDate(entry.createdOn)!,\n modifiedOn: createDate(entry.modifiedOn),\n savedOn: createDate(entry.savedOn)!,\n createdBy: entry.createdBy,\n savedBy: entry.savedBy,\n modifiedBy: entry.modifiedBy,\n firstPublishedOn: createDate(entry.firstPublishedOn),\n lastPublishedOn: createDate(entry.lastPublishedOn),\n firstPublishedBy: entry.firstPublishedBy,\n lastPublishedBy: entry.lastPublishedBy,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: createDate(entry.revisionCreatedOn)!,\n revisionSavedOn: createDate(entry.revisionSavedOn)!,\n revisionModifiedOn: createDate(entry.revisionModifiedOn),\n revisionCreatedBy: entry.revisionCreatedBy,\n revisionModifiedBy: entry.revisionModifiedBy,\n revisionSavedBy: entry.revisionSavedBy,\n revisionFirstPublishedOn: createDate(entry.revisionFirstPublishedOn),\n revisionLastPublishedOn: createDate(entry.revisionLastPublishedOn),\n revisionFirstPublishedBy: entry.revisionFirstPublishedBy,\n revisionLastPublishedBy: entry.revisionLastPublishedBy,\n\n wbyAco_location: {\n folderId: entry.location?.folderId || null\n }\n };\n};\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntries method \"${type}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type\n }\n );\n }\n const methodName = getContentEntriesMethods[type] as GetContentEntryMethods;\n if (!context.cms[methodName]) {\n throw new WebinyError(\n `Unknown context.cms method \"${methodName}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type,\n methodName\n }\n );\n }\n\n return context.cms[methodName];\n};\n\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\n\nenum GetContentEntryMethods {\n getLatestEntriesByIds = \"getLatestEntriesByIds\",\n getPublishedEntriesByIds = \"getPublishedEntriesByIds\",\n getEntriesByIds = \"getEntriesByIds\"\n}\n\nconst getContentEntriesMethods = {\n latest: \"getLatestEntriesByIds\",\n published: \"getPublishedEntriesByIds\",\n exact: \"getEntriesByIds\"\n};\nconst getContentEntries = async (\n params: GetContentEntriesParams\n): Promise<Response | ErrorResponse> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n try {\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce<CmsEntryRecord[]>((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return createCmsEntryRecord(model, item);\n })\n );\n }, [])\n .filter(Boolean);\n\n return new Response(entries);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\n\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response<CmsEntryRecord | null> | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntry method \"${type}\". Could not fetch content entry.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n args,\n type\n }\n );\n }\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response(createCmsEntryRecord(model, entry));\n};\n/**\n * As we support description field, we need to transform the value from storage.\n */\nconst createResolveDescription = (): Resolvers<CmsContext> => {\n return async (parent, _, context) => {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const field = model.fields.find(f => f.fieldId === model.descriptionFieldId);\n if (!field) {\n return null;\n }\n const value = parent.description || parent[field.fieldId];\n if (!value) {\n return null;\n }\n return entryFieldFromStorageTransform({\n context,\n model,\n field,\n value\n });\n };\n};\n\ninterface Params {\n context: CmsContext;\n}\n\nexport const createContentEntriesSchema = ({\n context\n}: Params): ICmsGraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n const plugin = createCmsGraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.empty`;\n return plugin;\n }\n\n const onByMetaFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n const plugin = createCmsGraphQLSchemaPlugin({\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n typeDefs: `\n type CmsModelMeta {\n modelId: String!\n name: String!\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n description: String\n image: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta!\n status: String!\n published: CmsPublishedContentEntry\n title: String!\n description: String\n image: String\n \n ${onByMetaFields}\n \n wbyAco_location: WbyAcoLocation\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry!]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n fields: [String!]\n limit: Int\n ): CmsContentEntriesResponse!\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse!\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const [entry] = await context.cms.getPublishedEntriesByIds(model, [\n parent.id\n ]);\n if (!entry) {\n return null;\n }\n return createCmsEntryRecord(model, entry);\n } catch (ex) {\n return null;\n }\n },\n description: createResolveDescription()\n },\n CmsPublishedContentEntry: {\n description: createResolveDescription()\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, fields, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const modelManager = await context.cms.getEntryManager(model.modelId);\n const where: CmsEntryListWhere = {};\n\n const [items] = await modelManager.listLatest({\n limit,\n where,\n search: !!query ? query : undefined,\n fields: fields || []\n });\n\n return items.map((entry: CmsEntry) => {\n return createCmsEntryRecord(model, entry);\n });\n });\n\n try {\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => b.savedOn.getTime() - a.savedOn.getTime())\n .slice(0, limit)\n );\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-entries`;\n\n return plugin;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_apiSecurity","_getEntryTitle","_plugins","_getEntryDescription","_getEntryImage","_entryStorage","_constants","createDate","date","Date","createCmsEntryRecord","model","entry","id","entryId","modelId","name","status","title","getEntryTitle","description","getEntryDescription","image","getEntryImage","createdOn","modifiedOn","savedOn","createdBy","savedBy","modifiedBy","firstPublishedOn","lastPublishedOn","firstPublishedBy","lastPublishedBy","revisionCreatedOn","revisionSavedOn","revisionModifiedOn","revisionCreatedBy","revisionModifiedBy","revisionSavedBy","revisionFirstPublishedOn","revisionLastPublishedOn","revisionFirstPublishedBy","revisionLastPublishedBy","wbyAco_location","folderId","location","getFetchMethod","type","context","getContentEntriesMethods","WebinyError","methodName","cms","GetContentEntryMethods","latest","published","exact","getContentEntries","params","args","method","models","listModels","modelsMap","reduce","collection","argsEntries","entries","entriesByModel","ref","includes","push","getters","Object","keys","map","length","Response","results","Promise","all","items","concat","item","filter","Boolean","ex","ErrorResponse","getContentEntry","find","m","NotAuthorizedResponse","data","result","shift","createResolveDescription","parent","_","field","fields","f","fieldId","descriptionFieldId","value","entryFieldFromStorageTransform","createContentEntriesSchema","MANAGE","plugin","createCmsGraphQLSchemaPlugin","typeDefs","resolvers","onByMetaFields","ENTRY_META_FIELDS","fieldType","isDateTimeEntryMetaField","join","CmsContentEntry","getPublishedEntriesByIds","CmsPublishedContentEntry","Query","searchContentEntries","modelIds","query","limit","modelManager","getEntryManager","where","listLatest","search","undefined","then","sort","a","b","getTime","slice","getLatestContentEntry","getPublishedContentEntry","getLatestContentEntries","getPublishedContentEntries","exports"],"sources":["contentEntries.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext, CmsEntry, CmsEntryListWhere, CmsIdentity, CmsModel } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle\";\nimport { createCmsGraphQLSchemaPlugin, ICmsGraphQLSchemaPlugin } from \"~/plugins\";\nimport { getEntryDescription } from \"~/utils/getEntryDescription\";\nimport { getEntryImage } from \"~/utils/getEntryImage\";\nimport { entryFieldFromStorageTransform } from \"~/utils/entryStorage\";\nimport { GraphQLFieldResolver } from \"@webiny/handler-graphql/types\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\nconst createDate = (date: string | null): Date | null => {\n if (!date) {\n return null;\n }\n\n try {\n return new Date(date);\n } catch {\n return new Date();\n }\n};\n\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n description?: string | null;\n image?: string | null;\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: Date;\n modifiedOn: Date | null;\n savedOn: Date;\n createdBy: CmsIdentity;\n modifiedBy: CmsIdentity | null;\n savedBy: CmsIdentity;\n firstPublishedOn: Date | null;\n lastPublishedOn: Date | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: Date;\n revisionModifiedOn: Date | null;\n revisionSavedOn: Date;\n revisionCreatedBy: CmsIdentity;\n revisionModifiedBy: CmsIdentity | null;\n revisionSavedBy: CmsIdentity;\n revisionFirstPublishedOn: Date | null;\n revisionLastPublishedOn: Date | null;\n revisionFirstPublishedBy: CmsIdentity | null;\n revisionLastPublishedBy: CmsIdentity | null;\n\n wbyAco_location?: {\n folderId?: string | null;\n };\n}\n\nconst createCmsEntryRecord = (model: CmsModel, entry: CmsEntry): CmsEntryRecord => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n description: getEntryDescription(model, entry),\n image: getEntryImage(model, entry),\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: createDate(entry.createdOn)!,\n modifiedOn: createDate(entry.modifiedOn),\n savedOn: createDate(entry.savedOn)!,\n createdBy: entry.createdBy,\n savedBy: entry.savedBy,\n modifiedBy: entry.modifiedBy,\n firstPublishedOn: createDate(entry.firstPublishedOn),\n lastPublishedOn: createDate(entry.lastPublishedOn),\n firstPublishedBy: entry.firstPublishedBy,\n lastPublishedBy: entry.lastPublishedBy,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: createDate(entry.revisionCreatedOn)!,\n revisionSavedOn: createDate(entry.revisionSavedOn)!,\n revisionModifiedOn: createDate(entry.revisionModifiedOn),\n revisionCreatedBy: entry.revisionCreatedBy,\n revisionModifiedBy: entry.revisionModifiedBy,\n revisionSavedBy: entry.revisionSavedBy,\n revisionFirstPublishedOn: createDate(entry.revisionFirstPublishedOn),\n revisionLastPublishedOn: createDate(entry.revisionLastPublishedOn),\n revisionFirstPublishedBy: entry.revisionFirstPublishedBy,\n revisionLastPublishedBy: entry.revisionLastPublishedBy,\n\n wbyAco_location: {\n folderId: entry.location?.folderId || null\n }\n };\n};\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntries method \"${type}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type\n }\n );\n }\n const methodName = getContentEntriesMethods[type] as GetContentEntryMethods;\n if (!context.cms[methodName]) {\n throw new WebinyError(\n `Unknown context.cms method \"${methodName}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type,\n methodName\n }\n );\n }\n\n return context.cms[methodName];\n};\n\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\n\nenum GetContentEntryMethods {\n getLatestEntriesByIds = \"getLatestEntriesByIds\",\n getPublishedEntriesByIds = \"getPublishedEntriesByIds\",\n getEntriesByIds = \"getEntriesByIds\"\n}\n\nconst getContentEntriesMethods = {\n latest: \"getLatestEntriesByIds\",\n published: \"getPublishedEntriesByIds\",\n exact: \"getEntriesByIds\"\n};\nconst getContentEntries = async (\n params: GetContentEntriesParams\n): Promise<Response | ErrorResponse> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n try {\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce<CmsEntryRecord[]>((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return createCmsEntryRecord(model, item);\n })\n );\n }, [])\n .filter(Boolean);\n\n return new Response(entries);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\n\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response<CmsEntryRecord | null> | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntry method \"${type}\". Could not fetch content entry.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n args,\n type\n }\n );\n }\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response(createCmsEntryRecord(model, entry));\n};\n/**\n * As we support description field, we need to transform the value from storage.\n */\nconst createResolveDescription = (): GraphQLFieldResolver<any, any, CmsContext> => {\n return async (parent, _, context) => {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const field = model.fields.find(f => f.fieldId === model.descriptionFieldId);\n if (!field) {\n return null;\n }\n const value = parent.description || parent[field.fieldId];\n if (!value) {\n return null;\n }\n return entryFieldFromStorageTransform({\n context,\n model,\n field,\n value\n });\n };\n};\n\ninterface Params {\n context: CmsContext;\n}\n\nexport const createContentEntriesSchema = ({\n context\n}: Params): ICmsGraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n const plugin = createCmsGraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.empty`;\n return plugin;\n }\n\n const onByMetaFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n const plugin = createCmsGraphQLSchemaPlugin({\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n typeDefs: `\n type CmsModelMeta {\n modelId: String!\n name: String!\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n description: String\n image: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta!\n status: String!\n published: CmsPublishedContentEntry\n title: String!\n description: String\n image: String\n \n ${onByMetaFields}\n \n wbyAco_location: WbyAcoLocation\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry!]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n fields: [String!]\n limit: Int\n ): CmsContentEntriesResponse!\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse!\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const [entry] = await context.cms.getPublishedEntriesByIds(model, [\n parent.id\n ]);\n if (!entry) {\n return null;\n }\n return createCmsEntryRecord(model, entry);\n } catch (ex) {\n return null;\n }\n },\n description: createResolveDescription()\n },\n CmsPublishedContentEntry: {\n description: createResolveDescription()\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, fields, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const modelManager = await context.cms.getEntryManager(model.modelId);\n const where: CmsEntryListWhere = {};\n\n const [items] = await modelManager.listLatest({\n limit,\n where,\n search: !!query ? query : undefined,\n fields: fields || []\n });\n\n return items.map((entry: CmsEntry) => {\n return createCmsEntryRecord(model, entry);\n });\n });\n\n try {\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => b.savedOn.getTime() - a.savedOn.getTime())\n .slice(0, limit)\n );\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-entries`;\n\n return plugin;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ApiEndpoint, CmsFieldTypePlugins, CmsModel, CmsModelField } from "../../types";
|
|
2
1
|
import { Resolvers } from "@webiny/handler-graphql/types";
|
|
2
|
+
import { ApiEndpoint, CmsFieldTypePlugins, CmsModel, CmsModelField } from "../../types";
|
|
3
3
|
interface CreateFieldResolvers {
|
|
4
4
|
graphQLType: string;
|
|
5
5
|
fields: CmsModelField[];
|