@webiny/api-headless-cms 5.25.0-beta.5 → 5.25.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.
Files changed (35) hide show
  1. package/content/graphQLHandlerFactory.js +3 -1
  2. package/content/graphQLHandlerFactory.js.map +1 -1
  3. package/content/plugins/crud/contentEntry/afterDelete.js +1 -2
  4. package/content/plugins/crud/contentEntry/afterDelete.js.map +1 -1
  5. package/content/plugins/crud/contentEntry.crud.d.ts +2 -0
  6. package/content/plugins/crud/contentEntry.crud.js +71 -72
  7. package/content/plugins/crud/contentEntry.crud.js.map +1 -1
  8. package/content/plugins/crud/contentModel/beforeDelete.js +0 -2
  9. package/content/plugins/crud/contentModel/beforeDelete.js.map +1 -1
  10. package/content/plugins/crud/contentModel.crud.js +21 -12
  11. package/content/plugins/crud/contentModel.crud.js.map +1 -1
  12. package/content/plugins/crud/contentModelGroup.crud.js +38 -45
  13. package/content/plugins/crud/contentModelGroup.crud.js.map +1 -1
  14. package/content/plugins/crud/index.js +5 -3
  15. package/content/plugins/crud/index.js.map +1 -1
  16. package/content/plugins/graphqlFields/longText.js +1 -0
  17. package/content/plugins/graphqlFields/longText.js.map +1 -1
  18. package/content/plugins/graphqlFields/text.js +1 -0
  19. package/content/plugins/graphqlFields/text.js.map +1 -1
  20. package/content/plugins/schema/contentEntries.js +6 -9
  21. package/content/plugins/schema/contentEntries.js.map +1 -1
  22. package/content/plugins/validators/unique.js +0 -1
  23. package/content/plugins/validators/unique.js.map +1 -1
  24. package/package.json +24 -25
  25. package/plugins/context.js +9 -3
  26. package/plugins/context.js.map +1 -1
  27. package/plugins/crud/index.js +7 -4
  28. package/plugins/crud/index.js.map +1 -1
  29. package/plugins/crud/settings.crud.js +0 -1
  30. package/plugins/crud/settings.crud.js.map +1 -1
  31. package/plugins/crud/system.crud.d.ts +2 -0
  32. package/plugins/crud/system.crud.js +5 -4
  33. package/plugins/crud/system.crud.js.map +1 -1
  34. package/types.d.ts +51 -105
  35. package/types.js.map +1 -1
@@ -192,7 +192,9 @@ const graphQLHandlerFactory = (options = {}) => {
192
192
  }
193
193
 
194
194
  };
195
- return [...(debug ? (0, _debugPlugins.default)() : []), handler];
195
+ return [...(debug ? (0, _debugPlugins.default)() : []), handler, {
196
+ type: "wcp-telemetry-tracker"
197
+ }];
196
198
  };
197
199
 
198
200
  exports.graphQLHandlerFactory = graphQLHandlerFactory;
@@ -1 +1 @@
1
- {"version":3,"sources":["graphQLHandlerFactory.ts"],"names":["DEFAULT_HEADERS","DEFAULT_CACHE_MAX_AGE","OPTIONS_HEADERS","respond","http","result","response","body","JSON","stringify","statusCode","headers","schemaList","Map","generateCacheKey","args","context","locale","type","lastModelChange","cms","getModelLastChange","code","toISOString","join","generateSchema","plugins","register","typeDefs","resolvers","schemaPlugins","byType","GraphQLSchemaPlugin","pl","push","schema","getSchema","tenantId","tenancy","getCurrentTenant","id","cacheKey","has","set","key","cache","get","checkEndpointAccess","permission","security","getPermission","NotAuthorizedError","data","reason","graphQLHandlerFactory","options","debug","handler","name","handle","next","request","method","toLowerCase","ex","NotAuthorizedResponse","getLocale","parse"],"mappings":"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","sourcesContent":["import { boolean } from \"boolean\";\nimport { GraphQLSchema } from \"graphql\";\nimport { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { CmsContext } from \"~/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { NotAuthorizedError, NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport processRequestBody from \"@webiny/handler-graphql/processRequestBody\";\nimport buildSchemaPlugins from \"./plugins/buildSchemaPlugins\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { getWebinyVersionHeaders } from \"@webiny/utils\";\nimport { HttpObject } from \"@webiny/handler-http/types\";\nimport { HandlerPlugin } from \"@webiny/handler/types\";\nimport { GraphQLRequestBody } from \"@webiny/handler-graphql/types\";\n\nexport interface CreateGraphQLHandlerOptions {\n debug?: boolean;\n}\ninterface SchemaCache {\n key: string;\n schema: GraphQLSchema;\n}\ninterface Args {\n context: CmsContext;\n type: string;\n locale: I18NLocale;\n}\n\nconst DEFAULT_HEADERS: Record<string, string> = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Headers\": \"*\",\n \"Access-Control-Allow-Methods\": \"OPTIONS,POST\",\n \"Content-Type\": \"application/json\",\n ...getWebinyVersionHeaders()\n};\n\nconst DEFAULT_CACHE_MAX_AGE = 30758400; // 1 year\n\nconst OPTIONS_HEADERS: Record<string, string> = {\n \"Access-Control-Max-Age\": `${DEFAULT_CACHE_MAX_AGE}`,\n \"Cache-Control\": `public, max-age=${DEFAULT_CACHE_MAX_AGE}`\n};\n\nconst respond = (http: HttpObject, result: unknown) => {\n return http.response({\n body: JSON.stringify(result),\n statusCode: 200,\n headers: DEFAULT_HEADERS\n });\n};\nconst schemaList = new Map<string, SchemaCache>();\n\nconst generateCacheKey = async (args: Args): Promise<string> => {\n const { context, locale, type } = args;\n const lastModelChange = await context.cms.getModelLastChange();\n return [locale.code, type, lastModelChange.toISOString()].join(\"#\");\n};\n\nconst generateSchema = async (args: Args): Promise<GraphQLSchema> => {\n const { context } = args;\n\n context.plugins.register(await buildSchemaPlugins(context));\n /**\n * Really hard to type this to satisfy the makeExecutableSchema\n */\n // TODO @ts-refactor\n const typeDefs: any = [];\n const resolvers: any = [];\n\n // Get schema definitions from plugins\n const schemaPlugins = context.plugins.byType<GraphQLSchemaPlugin>(GraphQLSchemaPlugin.type);\n for (const pl of schemaPlugins) {\n typeDefs.push(pl.schema.typeDefs);\n resolvers.push(pl.schema.resolvers);\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers\n });\n};\n\n// gets an existing schema or rewrites existing one or creates a completely new one\n// depending on the schemaId created from type and locale parameters\nconst getSchema = async (args: Args): Promise<GraphQLSchema> => {\n const { context, type, locale } = args;\n const tenantId = context.tenancy.getCurrentTenant().id;\n const id = `${tenantId}#${type}#${locale.code}`;\n\n const cacheKey = await generateCacheKey(args);\n if (!schemaList.has(id)) {\n const schema = await generateSchema(args);\n\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n }\n /**\n * Safe to cast because check was done few lines up.\n */\n const cache = schemaList.get(id) as SchemaCache;\n if (cache.key === cacheKey) {\n return cache.schema;\n }\n const schema = await generateSchema(args);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n};\n\nconst checkEndpointAccess = async (context: CmsContext): Promise<void> => {\n const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${context.cms.type}\" endpoint.`\n }\n });\n }\n};\n\nexport const graphQLHandlerFactory = (\n options: CreateGraphQLHandlerOptions = {}\n): PluginCollection => {\n const debug = boolean(options.debug);\n\n const handler: HandlerPlugin = {\n type: \"handler\",\n name: \"handler-graphql-content-model\",\n async handle(context: CmsContext, next) {\n const { http } = context;\n\n if (!http || !http.request) {\n return next();\n }\n\n const method = (http.request.method || \"\").toLowerCase();\n /**\n * In case of OPTIONS method we just return the headers since there is no need to go further.\n */\n if (method.toLowerCase() === \"options\") {\n return http.response({\n statusCode: 204,\n headers: {\n ...DEFAULT_HEADERS,\n ...OPTIONS_HEADERS\n }\n });\n }\n /**\n * We expect, and allow, only POST method to access our GraphQL\n */\n if (method !== \"post\") {\n return next();\n }\n\n try {\n await checkEndpointAccess(context);\n } catch (ex) {\n return respond(http, new NotAuthorizedResponse(ex));\n }\n\n const schema = await getSchema({\n context,\n locale: context.cms.getLocale(),\n type: context.cms.type\n });\n\n const body: GraphQLRequestBody | GraphQLRequestBody[] = JSON.parse(http.request.body);\n\n const result = await processRequestBody(body, schema, context);\n return respond(http, result);\n }\n };\n\n return [...(debug ? debugPlugins() : []), handler];\n};\n"]}
1
+ {"version":3,"sources":["graphQLHandlerFactory.ts"],"names":["DEFAULT_HEADERS","DEFAULT_CACHE_MAX_AGE","OPTIONS_HEADERS","respond","http","result","response","body","JSON","stringify","statusCode","headers","schemaList","Map","generateCacheKey","args","context","locale","type","lastModelChange","cms","getModelLastChange","code","toISOString","join","generateSchema","plugins","register","typeDefs","resolvers","schemaPlugins","byType","GraphQLSchemaPlugin","pl","push","schema","getSchema","tenantId","tenancy","getCurrentTenant","id","cacheKey","has","set","key","cache","get","checkEndpointAccess","permission","security","getPermission","NotAuthorizedError","data","reason","graphQLHandlerFactory","options","debug","handler","name","handle","next","request","method","toLowerCase","ex","NotAuthorizedResponse","getLocale","parse"],"mappings":"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","sourcesContent":["import { boolean } from \"boolean\";\nimport { GraphQLSchema } from \"graphql\";\nimport { makeExecutableSchema } from \"@graphql-tools/schema\";\nimport { CmsContext } from \"~/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { NotAuthorizedError, NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { PluginCollection } from \"@webiny/plugins/types\";\nimport debugPlugins from \"@webiny/handler-graphql/debugPlugins\";\nimport processRequestBody from \"@webiny/handler-graphql/processRequestBody\";\nimport buildSchemaPlugins from \"./plugins/buildSchemaPlugins\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { getWebinyVersionHeaders } from \"@webiny/utils\";\nimport { HttpObject } from \"@webiny/handler-http/types\";\nimport { HandlerPlugin } from \"@webiny/handler/types\";\nimport { GraphQLRequestBody } from \"@webiny/handler-graphql/types\";\n\nexport interface CreateGraphQLHandlerOptions {\n debug?: boolean;\n}\ninterface SchemaCache {\n key: string;\n schema: GraphQLSchema;\n}\ninterface Args {\n context: CmsContext;\n type: string;\n locale: I18NLocale;\n}\n\nconst DEFAULT_HEADERS: Record<string, string> = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Headers\": \"*\",\n \"Access-Control-Allow-Methods\": \"OPTIONS,POST\",\n \"Content-Type\": \"application/json\",\n ...getWebinyVersionHeaders()\n};\n\nconst DEFAULT_CACHE_MAX_AGE = 30758400; // 1 year\n\nconst OPTIONS_HEADERS: Record<string, string> = {\n \"Access-Control-Max-Age\": `${DEFAULT_CACHE_MAX_AGE}`,\n \"Cache-Control\": `public, max-age=${DEFAULT_CACHE_MAX_AGE}`\n};\n\nconst respond = (http: HttpObject, result: unknown) => {\n return http.response({\n body: JSON.stringify(result),\n statusCode: 200,\n headers: DEFAULT_HEADERS\n });\n};\nconst schemaList = new Map<string, SchemaCache>();\n\nconst generateCacheKey = async (args: Args): Promise<string> => {\n const { context, locale, type } = args;\n const lastModelChange = await context.cms.getModelLastChange();\n return [locale.code, type, lastModelChange.toISOString()].join(\"#\");\n};\n\nconst generateSchema = async (args: Args): Promise<GraphQLSchema> => {\n const { context } = args;\n\n context.plugins.register(await buildSchemaPlugins(context));\n /**\n * Really hard to type this to satisfy the makeExecutableSchema\n */\n // TODO @ts-refactor\n const typeDefs: any = [];\n const resolvers: any = [];\n\n // Get schema definitions from plugins\n const schemaPlugins = context.plugins.byType<GraphQLSchemaPlugin>(GraphQLSchemaPlugin.type);\n for (const pl of schemaPlugins) {\n typeDefs.push(pl.schema.typeDefs);\n resolvers.push(pl.schema.resolvers);\n }\n\n return makeExecutableSchema({\n typeDefs,\n resolvers\n });\n};\n\n// gets an existing schema or rewrites existing one or creates a completely new one\n// depending on the schemaId created from type and locale parameters\nconst getSchema = async (args: Args): Promise<GraphQLSchema> => {\n const { context, type, locale } = args;\n const tenantId = context.tenancy.getCurrentTenant().id;\n const id = `${tenantId}#${type}#${locale.code}`;\n\n const cacheKey = await generateCacheKey(args);\n if (!schemaList.has(id)) {\n const schema = await generateSchema(args);\n\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n }\n /**\n * Safe to cast because check was done few lines up.\n */\n const cache = schemaList.get(id) as SchemaCache;\n if (cache.key === cacheKey) {\n return cache.schema;\n }\n const schema = await generateSchema(args);\n schemaList.set(id, {\n key: cacheKey,\n schema\n });\n return schema;\n};\n\nconst checkEndpointAccess = async (context: CmsContext): Promise<void> => {\n const permission = await context.security.getPermission(`cms.endpoint.${context.cms.type}`);\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access \"${context.cms.type}\" endpoint.`\n }\n });\n }\n};\n\nexport const graphQLHandlerFactory = (\n options: CreateGraphQLHandlerOptions = {}\n): PluginCollection => {\n const debug = boolean(options.debug);\n\n const handler: HandlerPlugin = {\n type: \"handler\",\n name: \"handler-graphql-content-model\",\n async handle(context: CmsContext, next) {\n const { http } = context;\n\n if (!http || !http.request) {\n return next();\n }\n\n const method = (http.request.method || \"\").toLowerCase();\n /**\n * In case of OPTIONS method we just return the headers since there is no need to go further.\n */\n if (method.toLowerCase() === \"options\") {\n return http.response({\n statusCode: 204,\n headers: {\n ...DEFAULT_HEADERS,\n ...OPTIONS_HEADERS\n }\n });\n }\n /**\n * We expect, and allow, only POST method to access our GraphQL\n */\n if (method !== \"post\") {\n return next();\n }\n\n try {\n await checkEndpointAccess(context);\n } catch (ex) {\n return respond(http, new NotAuthorizedResponse(ex));\n }\n\n const schema = await getSchema({\n context,\n locale: context.cms.getLocale(),\n type: context.cms.type\n });\n\n const body: GraphQLRequestBody | GraphQLRequestBody[] = JSON.parse(http.request.body);\n\n const result = await processRequestBody(body, schema, context);\n return respond(http, result);\n }\n };\n\n return [...(debug ? debugPlugins() : []), handler, { type: \"wcp-telemetry-tracker\" }];\n};\n"]}
@@ -22,8 +22,7 @@ const assignAfterEntryDelete = params => {
22
22
  } = await context.cms.storageOperations.entries.list(model, {
23
23
  where: {
24
24
  entryId_not: entry.entryId,
25
- latest: true,
26
- tenant: model.tenant
25
+ latest: true
27
26
  },
28
27
  limit: 1
29
28
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["afterDelete.ts"],"names":["assignAfterEntryDelete","params","context","onAfterEntryDelete","subscribe","entry","model","items","cms","storageOperations","entries","list","where","entryId_not","entryId","latest","tenant","limit","length"],"mappings":";;;;;;;AAEA;;AAMO,MAAMA,sBAAsB,GAAIC,MAAD,IAA0C;AAC5E,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAAkCF,MAAxC;AAEAE,EAAAA,kBAAkB,CAACC,SAAnB,CAA6B,MAAMH,MAAN,IAAgB;AACzC,UAAM;AAAEI,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAmBL,MAAzB;AAEA,UAAM;AAAEM,MAAAA;AAAF,QAAY,MAAML,OAAO,CAACM,GAAR,CAAYC,iBAAZ,CAA8BC,OAA9B,CAAsCC,IAAtC,CAA2CL,KAA3C,EAAkD;AACtEM,MAAAA,KAAK,EAAE;AACHC,QAAAA,WAAW,EAAER,KAAK,CAACS,OADhB;AAEHC,QAAAA,MAAM,EAAE,IAFL;AAGHC,QAAAA,MAAM,EAAEV,KAAK,CAACU;AAHX,OAD+D;AAMtEC,MAAAA,KAAK,EAAE;AAN+D,KAAlD,CAAxB;;AAQA,QAAIV,KAAK,CAACW,MAAN,GAAe,CAAnB,EAAsB;AAClB;AACH;;AACD,UAAM,0CAAmB;AACrBhB,MAAAA,OADqB;AAErBI,MAAAA;AAFqB,KAAnB,CAAN;AAIH,GAlBD;AAmBH,CAtBM","sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { AfterEntryDeleteTopicParams, CmsContext } from \"~/types\";\nimport { markUnlockedFields } from \"./markLockedFields\";\n\ninterface AssignAfterEntryDeleteParams {\n context: CmsContext;\n onAfterEntryDelete: Topic<AfterEntryDeleteTopicParams>;\n}\nexport const assignAfterEntryDelete = (params: AssignAfterEntryDeleteParams) => {\n const { context, onAfterEntryDelete } = params;\n\n onAfterEntryDelete.subscribe(async params => {\n const { entry, model } = params;\n\n const { items } = await context.cms.storageOperations.entries.list(model, {\n where: {\n entryId_not: entry.entryId,\n latest: true,\n tenant: model.tenant\n },\n limit: 1\n });\n if (items.length > 0) {\n return;\n }\n await markUnlockedFields({\n context,\n model\n });\n });\n};\n"]}
1
+ {"version":3,"sources":["afterDelete.ts"],"names":["assignAfterEntryDelete","params","context","onAfterEntryDelete","subscribe","entry","model","items","cms","storageOperations","entries","list","where","entryId_not","entryId","latest","limit","length"],"mappings":";;;;;;;AAEA;;AAMO,MAAMA,sBAAsB,GAAIC,MAAD,IAA0C;AAC5E,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAAkCF,MAAxC;AAEAE,EAAAA,kBAAkB,CAACC,SAAnB,CAA6B,MAAMH,MAAN,IAAgB;AACzC,UAAM;AAAEI,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAAmBL,MAAzB;AAEA,UAAM;AAAEM,MAAAA;AAAF,QAAY,MAAML,OAAO,CAACM,GAAR,CAAYC,iBAAZ,CAA8BC,OAA9B,CAAsCC,IAAtC,CAA2CL,KAA3C,EAAkD;AACtEM,MAAAA,KAAK,EAAE;AACHC,QAAAA,WAAW,EAAER,KAAK,CAACS,OADhB;AAEHC,QAAAA,MAAM,EAAE;AAFL,OAD+D;AAKtEC,MAAAA,KAAK,EAAE;AAL+D,KAAlD,CAAxB;;AAOA,QAAIT,KAAK,CAACU,MAAN,GAAe,CAAnB,EAAsB;AAClB;AACH;;AACD,UAAM,0CAAmB;AACrBf,MAAAA,OADqB;AAErBI,MAAAA;AAFqB,KAAnB,CAAN;AAIH,GAjBD;AAkBH,CArBM","sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { AfterEntryDeleteTopicParams, CmsContext } from \"~/types\";\nimport { markUnlockedFields } from \"./markLockedFields\";\n\ninterface AssignAfterEntryDeleteParams {\n context: CmsContext;\n onAfterEntryDelete: Topic<AfterEntryDeleteTopicParams>;\n}\nexport const assignAfterEntryDelete = (params: AssignAfterEntryDeleteParams) => {\n const { context, onAfterEntryDelete } = params;\n\n onAfterEntryDelete.subscribe(async params => {\n const { entry, model } = params;\n\n const { items } = await context.cms.storageOperations.entries.list(model, {\n where: {\n entryId_not: entry.entryId,\n latest: true\n },\n limit: 1\n });\n if (items.length > 0) {\n return;\n }\n await markUnlockedFields({\n context,\n model\n });\n });\n};\n"]}
@@ -1,5 +1,6 @@
1
1
  import { CmsEntryContext, CmsContext, HeadlessCmsStorageOperations } from "../../../types";
2
2
  import { SecurityIdentity } from "@webiny/api-security/types";
3
+ import { Tenant } from "@webiny/api-tenancy/types";
3
4
  export declare const STATUS_DRAFT = "draft";
4
5
  export declare const STATUS_PUBLISHED = "published";
5
6
  export declare const STATUS_UNPUBLISHED = "unpublished";
@@ -9,5 +10,6 @@ export interface CreateContentEntryCrudParams {
9
10
  storageOperations: HeadlessCmsStorageOperations;
10
11
  context: CmsContext;
11
12
  getIdentity: () => SecurityIdentity;
13
+ getTenant: () => Tenant;
12
14
  }
13
15
  export declare const createContentEntryCrud: (params: CreateContentEntryCrudParams) => CmsEntryContext;
@@ -176,11 +176,37 @@ const increaseEntryIdVersion = id => {
176
176
  };
177
177
  };
178
178
 
179
+ const getSearchableFields = params => {
180
+ const {
181
+ plugins,
182
+ model,
183
+ fields
184
+ } = params;
185
+ const fieldPluginMap = plugins.byType("cms-model-field-to-graphql").reduce((collection, field) => {
186
+ collection[field.fieldType] = field;
187
+ return collection;
188
+ }, {});
189
+ return model.fields.filter(field => {
190
+ const plugin = fieldPluginMap[field.type];
191
+
192
+ if (!plugin) {
193
+ return false;
194
+ } else if (!plugin.fullTextSearch) {
195
+ return false;
196
+ } else if (!fields || fields.length === 0) {
197
+ return true;
198
+ }
199
+
200
+ return fields.includes(field.fieldId);
201
+ }).map(field => field.fieldId);
202
+ };
203
+
179
204
  const createContentEntryCrud = params => {
180
205
  const {
181
206
  storageOperations,
182
207
  context,
183
- getIdentity
208
+ getIdentity,
209
+ getTenant
184
210
  } = params;
185
211
  const onBeforeEntryCreate = (0, _pubsub.createTopic)();
186
212
  const onAfterEntryCreate = (0, _pubsub.createTopic)();
@@ -230,8 +256,7 @@ const createContentEntryCrud = params => {
230
256
  const deleteEntry = async params => {
231
257
  const {
232
258
  model,
233
- entry,
234
- storageEntry
259
+ entry
235
260
  } = params;
236
261
 
237
262
  try {
@@ -240,8 +265,7 @@ const createContentEntryCrud = params => {
240
265
  model
241
266
  });
242
267
  await storageOperations.entries.delete(model, {
243
- entry,
244
- storageEntry
268
+ entry
245
269
  });
246
270
  await onAfterEntryDelete.publish({
247
271
  entry,
@@ -301,14 +325,13 @@ const createContentEntryCrud = params => {
301
325
  */
302
326
  getEntryById: async (model, id) => {
303
327
  const where = {
304
- id,
305
- tenant: model.tenant
328
+ id
306
329
  };
307
330
  await onBeforeEntryGet.publish({
308
331
  where,
309
332
  model
310
333
  });
311
- const [entry] = await getEntriesByIds(model, [where.id]);
334
+ const [entry] = await getEntriesByIds(model, [id]);
312
335
 
313
336
  if (!entry) {
314
337
  throw new _handlerGraphql.NotFoundError(`Entry by ID "${id}" not found.`);
@@ -391,13 +414,30 @@ const createContentEntryCrud = params => {
391
414
  });
392
415
  await utils.checkModelAccess(context, model);
393
416
  const {
394
- where
417
+ where: initialWhere
395
418
  } = params;
419
+ /**
420
+ * We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
421
+ */
422
+
423
+ const where = _objectSpread({}, initialWhere);
424
+ /**
425
+ * Possibly only get records which are owned by current user.
426
+ * Or if searching for the owner set that value - in the case that user can see other entries than their own.
427
+ */
428
+
429
+
430
+ const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
431
+
432
+ if (ownedBy !== undefined) {
433
+ where.ownedBy = ownedBy;
434
+ }
396
435
  /**
397
436
  * Where must contain either latest or published keys.
398
437
  * We cannot list entries without one of those
399
438
  */
400
439
 
440
+
401
441
  if (where.latest && where.published) {
402
442
  throw new _error.default("Cannot list entries that are both published and latest.", "LIST_ENTRIES_ERROR", {
403
443
  where
@@ -407,34 +447,24 @@ const createContentEntryCrud = params => {
407
447
  where
408
448
  });
409
449
  }
410
- /**
411
- * Possibly only get records which are owned by current user.
412
- * Or if searching for the owner set that value - in the case that user can see other entries than their own.
413
- */
414
-
415
-
416
- const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
417
-
418
- const listWhere = _objectSpread(_objectSpread({}, where), {}, {
419
- tenant: model.tenant,
420
- locale: model.locale
421
- });
422
-
423
- if (ownedBy !== undefined) {
424
- listWhere.ownedBy = ownedBy;
425
- }
426
450
 
427
451
  await onBeforeEntryList.publish({
428
- where: listWhere,
452
+ where,
429
453
  model
430
454
  });
455
+ const fields = getSearchableFields({
456
+ model,
457
+ plugins: context.plugins,
458
+ fields: params.fields || []
459
+ });
431
460
  const {
432
461
  hasMoreItems,
433
462
  totalCount,
434
463
  cursor,
435
464
  items
436
465
  } = await storageOperations.entries.list(model, _objectSpread(_objectSpread({}, params), {}, {
437
- where: listWhere
466
+ where,
467
+ fields
438
468
  }));
439
469
  const meta = {
440
470
  hasMoreItems,
@@ -450,11 +480,6 @@ const createContentEntryCrud = params => {
450
480
  },
451
481
  listLatestEntries: async function (model, params) {
452
482
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
453
-
454
- if (!where.tenant) {
455
- where.tenant = model.tenant;
456
- }
457
-
458
483
  return context.cms.listEntries(model, _objectSpread(_objectSpread({
459
484
  sort: ["createdOn_DESC"]
460
485
  }, params || {}), {}, {
@@ -465,11 +490,6 @@ const createContentEntryCrud = params => {
465
490
  },
466
491
  listPublishedEntries: async function (model, params) {
467
492
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
468
-
469
- if (!where.tenant) {
470
- where.tenant = model.tenant;
471
- }
472
-
473
493
  return context.cms.listEntries(model, _objectSpread(_objectSpread({
474
494
  sort: ["createdOn_DESC"]
475
495
  }, params || {}), {}, {
@@ -513,7 +533,7 @@ const createContentEntryCrud = params => {
513
533
  } = createEntryId(1);
514
534
  const entry = {
515
535
  webinyVersion: context.WEBINY_VERSION,
516
- tenant: context.tenancy.getCurrentTenant().id,
536
+ tenant: getTenant().id,
517
537
  entryId,
518
538
  id,
519
539
  modelId: model.modelId,
@@ -537,7 +557,6 @@ const createContentEntryCrud = params => {
537
557
  });
538
558
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
539
559
  const result = await storageOperations.entries.create(model, {
540
- input,
541
560
  entry,
542
561
  storageEntry
543
562
  });
@@ -643,8 +662,6 @@ const createContentEntryCrud = params => {
643
662
  const result = await storageOperations.entries.createRevisionFrom(model, {
644
663
  entry,
645
664
  storageEntry,
646
- originalEntry,
647
- originalStorageEntry,
648
665
  latestEntry,
649
666
  latestStorageEntry
650
667
  });
@@ -729,11 +746,8 @@ const createContentEntryCrud = params => {
729
746
  });
730
747
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
731
748
  const result = await storageOperations.entries.update(model, {
732
- originalEntry,
733
- originalStorageEntry,
734
749
  entry,
735
- storageEntry,
736
- input
750
+ storageEntry
737
751
  });
738
752
  await onAfterEntryUpdate.publish({
739
753
  entry,
@@ -802,11 +816,8 @@ const createContentEntryCrud = params => {
802
816
 
803
817
  try {
804
818
  await storageOperations.entries.update(model, {
805
- originalEntry,
806
- originalStorageEntry,
807
819
  entry,
808
- storageEntry,
809
- input: {}
820
+ storageEntry
810
821
  });
811
822
  } catch (ex) {
812
823
  throw new _error.default("Could not update existing entry with new data while re-publishing.", "REPUBLISH_UPDATE_ERROR", {
@@ -820,8 +831,6 @@ const createContentEntryCrud = params => {
820
831
 
821
832
  try {
822
833
  return await storageOperations.entries.publish(model, {
823
- originalEntry,
824
- originalStorageEntry,
825
834
  entry,
826
835
  storageEntry
827
836
  });
@@ -866,8 +875,7 @@ const createContentEntryCrud = params => {
866
875
  if (entryToDelete.id === latestEntryRevisionId && !previousStorageEntry) {
867
876
  return await deleteEntry({
868
877
  model,
869
- entry: entryToDelete,
870
- storageEntry: storageEntryToDelete
878
+ entry: entryToDelete
871
879
  });
872
880
  }
873
881
  /**
@@ -889,10 +897,10 @@ const createContentEntryCrud = params => {
889
897
  model
890
898
  });
891
899
  await storageOperations.entries.deleteRevision(model, {
892
- entryToDelete,
893
- storageEntryToDelete,
894
- entryToSetAsLatest,
895
- storageEntryToSetAsLatest
900
+ entry: entryToDelete,
901
+ storageEntry: storageEntryToDelete,
902
+ latestEntry: entryToSetAsLatest,
903
+ latestStorageEntry: storageEntryToSetAsLatest
896
904
  });
897
905
  await onAfterEntryDeleteRevision.publish({
898
906
  entry: entryToDelete,
@@ -901,10 +909,10 @@ const createContentEntryCrud = params => {
901
909
  } catch (ex) {
902
910
  throw new _error.default(ex.message, ex.code || "DELETE_REVISION_ERROR", {
903
911
  error: ex,
904
- entryToDelete,
905
- storageEntryToDelete,
906
- entryToSetAsLatest,
907
- storageEntryToSetAsLatest
912
+ entry: entryToDelete,
913
+ storageEntry: storageEntryToDelete,
914
+ latestEntry: entryToSetAsLatest,
915
+ latestStorageEntry: storageEntryToSetAsLatest
908
916
  });
909
917
  }
910
918
  },
@@ -925,8 +933,7 @@ const createContentEntryCrud = params => {
925
933
  const entry = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntry);
926
934
  return await deleteEntry({
927
935
  model,
928
- entry,
929
- storageEntry
936
+ entry
930
937
  });
931
938
  },
932
939
  publishEntry: async (model, id) => {
@@ -963,9 +970,7 @@ const createContentEntryCrud = params => {
963
970
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
964
971
  const result = await storageOperations.entries.publish(model, {
965
972
  entry,
966
- storageEntry,
967
- originalEntry,
968
- originalStorageEntry
973
+ storageEntry
969
974
  });
970
975
  await onAfterEntryPublish.publish({
971
976
  entry,
@@ -1022,8 +1027,6 @@ const createContentEntryCrud = params => {
1022
1027
  });
1023
1028
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
1024
1029
  const result = await storageOperations.entries.requestChanges(model, {
1025
- originalEntry,
1026
- originalStorageEntry,
1027
1030
  entry,
1028
1031
  storageEntry
1029
1032
  });
@@ -1084,8 +1087,6 @@ const createContentEntryCrud = params => {
1084
1087
  });
1085
1088
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
1086
1089
  const result = await storageOperations.entries.requestReview(model, {
1087
- originalEntry,
1088
- originalStorageEntry,
1089
1090
  entry,
1090
1091
  storageEntry
1091
1092
  });
@@ -1139,8 +1140,6 @@ const createContentEntryCrud = params => {
1139
1140
  });
1140
1141
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
1141
1142
  const result = await storageOperations.entries.unpublish(model, {
1142
- originalEntry,
1143
- originalStorageEntry,
1144
1143
  entry,
1145
1144
  storageEntry
1146
1145
  });