@webiny/api-headless-cms 6.4.1 → 6.4.2-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.
@@ -1,9 +1,7 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { UpdateRevisionDescriptionUseCase as UseCaseAbstraction } from "./abstractions.js";
3
3
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
4
- import { AccessControl, CmsContext } from "../../../features/shared/abstractions.js";
5
- import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
6
- import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
4
+ import { AccessControl } from "../../../features/shared/abstractions.js";
7
5
  import { GetRevisionByIdUseCase } from "../../../features/contentEntry/GetRevisionById/abstractions.js";
8
6
  import type { CmsEntry, CmsEntryValues, CmsModel } from "../../../types/index.js";
9
7
  import { UpdateEntryRepository } from "../UpdateEntry/index.js";
@@ -11,11 +9,8 @@ declare class UpdateRevisionDescriptionUseCaseImpl implements UseCaseAbstraction
11
9
  private eventPublisher;
12
10
  private repository;
13
11
  private accessControl;
14
- private cmsContext;
15
- private tenantContext;
16
- private identityContext;
17
12
  private getRevisionByIdUseCase;
18
- constructor(eventPublisher: EventPublisher.Interface, repository: UpdateEntryRepository.Interface, accessControl: AccessControl.Interface, cmsContext: CmsContext.Interface, tenantContext: TenantContext.Interface, identityContext: IdentityContext.Interface, getRevisionByIdUseCase: GetRevisionByIdUseCase.Interface);
13
+ constructor(eventPublisher: EventPublisher.Interface, repository: UpdateEntryRepository.Interface, accessControl: AccessControl.Interface, getRevisionByIdUseCase: GetRevisionByIdUseCase.Interface);
19
14
  execute<T extends CmsEntryValues = CmsEntryValues>(model: CmsModel, id: string, revisionDescription: string | undefined): Promise<Result<CmsEntry<T>, UseCaseAbstraction.Error>>;
20
15
  }
21
16
  export declare const UpdateRevisionDescriptionUseCase: import("@webiny/di").Implementation<typeof UpdateRevisionDescriptionUseCaseImpl>;
@@ -2,20 +2,15 @@ import { Result, createImplementation } from "@webiny/feature/api";
2
2
  import { UpdateRevisionDescriptionUseCase } from "./abstractions.js";
3
3
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
4
4
  import { EntryAfterUpdateRevisionDescriptionEvent, EntryBeforeUpdateRevisionDescriptionEvent } from "./events.js";
5
- import { AccessControl, CmsContext } from "../../shared/abstractions.js";
6
- import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
7
- import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
5
+ import { AccessControl } from "../../shared/abstractions.js";
8
6
  import { GetRevisionByIdUseCase } from "../GetRevisionById/abstractions.js";
9
- import { EntryLockedError, EntryNotAuthorizedError } from "../../../domain/contentEntry/errors.js";
7
+ import { EntryNotAuthorizedError } from "../../../domain/contentEntry/errors.js";
10
8
  import { UpdateEntryRepository } from "../UpdateEntry/index.js";
11
9
  class UpdateRevisionDescriptionUseCaseImpl {
12
- constructor(eventPublisher, repository, accessControl, cmsContext, tenantContext, identityContext, getRevisionByIdUseCase){
10
+ constructor(eventPublisher, repository, accessControl, getRevisionByIdUseCase){
13
11
  this.eventPublisher = eventPublisher;
14
12
  this.repository = repository;
15
13
  this.accessControl = accessControl;
16
- this.cmsContext = cmsContext;
17
- this.tenantContext = tenantContext;
18
- this.identityContext = identityContext;
19
14
  this.getRevisionByIdUseCase = getRevisionByIdUseCase;
20
15
  }
21
16
  async execute(model, id, revisionDescription) {
@@ -28,7 +23,6 @@ class UpdateRevisionDescriptionUseCaseImpl {
28
23
  const result = await this.getRevisionByIdUseCase.execute(model, id);
29
24
  if (result.isFail()) return Result.fail(result.error);
30
25
  const originalEntry = result.value;
31
- if (originalEntry.locked) return Result.fail(new EntryLockedError());
32
26
  const entry = {
33
27
  ...originalEntry,
34
28
  revisionDescription
@@ -66,9 +60,6 @@ const UpdateRevisionDescriptionUseCase_UpdateRevisionDescriptionUseCase = create
66
60
  EventPublisher,
67
61
  UpdateEntryRepository,
68
62
  AccessControl,
69
- CmsContext,
70
- TenantContext,
71
- IdentityContext,
72
63
  GetRevisionByIdUseCase
73
64
  ]
74
65
  });
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js","sources":["../../../../src/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.ts"],"sourcesContent":["import { createImplementation, Result } from \"@webiny/feature/api\";\nimport { UpdateRevisionDescriptionUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n EntryAfterUpdateRevisionDescriptionEvent,\n EntryBeforeUpdateRevisionDescriptionEvent\n} from \"./events.js\";\nimport { AccessControl, CmsContext } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetRevisionByIdUseCase } from \"~/features/contentEntry/GetRevisionById/abstractions.js\";\nimport type { CmsEntry, CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport { EntryLockedError, EntryNotAuthorizedError } from \"~/domain/contentEntry/errors.js\";\nimport { UpdateEntryRepository } from \"../UpdateEntry/index.js\";\n\nclass UpdateRevisionDescriptionUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateEntryRepository.Interface,\n private accessControl: AccessControl.Interface,\n private cmsContext: CmsContext.Interface,\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private getRevisionByIdUseCase: GetRevisionByIdUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n revisionDescription: string | undefined\n ): Promise<Result<CmsEntry<T>, UseCaseAbstraction.Error>> {\n // Check initial access control\n const canAccess = await this.accessControl.canAccessEntry({ model, rwd: \"w\" });\n if (!canAccess) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n try {\n const result = await this.getRevisionByIdUseCase.execute<T>(model, id);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n const originalEntry = result.value;\n\n // Check if entry is locked\n if (originalEntry.locked) {\n return Result.fail(new EntryLockedError());\n }\n\n const entry = {\n ...originalEntry,\n revisionDescription\n };\n\n // Apply access control on the updated entry\n const canAccessEntry = await this.accessControl.canAccessEntry({\n model,\n entry,\n rwd: \"w\"\n });\n\n if (!canAccessEntry) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Publish before event\n await this.eventPublisher.publish(\n new EntryBeforeUpdateRevisionDescriptionEvent({\n entry,\n original: originalEntry,\n revisionDescription,\n model\n })\n );\n\n // Persist updated entry\n const updateResult = await this.repository.execute(model, entry);\n if (updateResult.isFail()) {\n return Result.fail(updateResult.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new EntryAfterUpdateRevisionDescriptionEvent({\n entry,\n original: originalEntry,\n revisionDescription,\n model\n })\n );\n\n return Result.ok(entry);\n } catch (error) {\n // Handle errors from createUpdateEntryData or other operations\n return Result.fail(error as UseCaseAbstraction.Error);\n }\n }\n}\n\nexport const UpdateRevisionDescriptionUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateRevisionDescriptionUseCaseImpl,\n dependencies: [\n EventPublisher,\n UpdateEntryRepository,\n AccessControl,\n CmsContext,\n TenantContext,\n IdentityContext,\n GetRevisionByIdUseCase\n ]\n});\n"],"names":["UpdateRevisionDescriptionUseCaseImpl","eventPublisher","repository","accessControl","cmsContext","tenantContext","identityContext","getRevisionByIdUseCase","model","id","revisionDescription","canAccess","Result","EntryNotAuthorizedError","result","originalEntry","EntryLockedError","entry","canAccessEntry","EntryBeforeUpdateRevisionDescriptionEvent","updateResult","EntryAfterUpdateRevisionDescriptionEvent","error","UpdateRevisionDescriptionUseCase","createImplementation","UseCaseAbstraction","EventPublisher","UpdateEntryRepository","AccessControl","CmsContext","TenantContext","IdentityContext","GetRevisionByIdUseCase"],"mappings":";;;;;;;;;;AAeA,MAAMA;IACF,YACYC,cAAwC,EACxCC,UAA2C,EAC3CC,aAAsC,EACtCC,UAAgC,EAChCC,aAAsC,EACtCC,eAA0C,EAC1CC,sBAAwD,CAClE;aAPUN,cAAc,GAAdA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,eAAe,GAAfA;aACAC,sBAAsB,GAAtBA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,EAAU,EACVC,mBAAuC,EACe;QAEtD,MAAMC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAEH;YAAO,KAAK;QAAI;QAC5E,IAAI,CAACG,WACD,OAAOC,OAAO,IAAI,CAACC,wBAAwB,SAAS,CAACL;QAGzD,IAAI;YACA,MAAMM,SAAS,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAIN,OAAOC;YAEnE,IAAIK,OAAO,MAAM,IACb,OAAOF,OAAO,IAAI,CAACE,OAAO,KAAK;YAGnC,MAAMC,gBAAgBD,OAAO,KAAK;YAGlC,IAAIC,cAAc,MAAM,EACpB,OAAOH,OAAO,IAAI,CAAC,IAAII;YAG3B,MAAMC,QAAQ;gBACV,GAAGF,aAAa;gBAChBL;YACJ;YAGA,MAAMQ,iBAAiB,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBAC3DV;gBACAS;gBACA,KAAK;YACT;YAEA,IAAI,CAACC,gBACD,OAAON,OAAO,IAAI,CAACC,wBAAwB,SAAS,CAACL;YAIzD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIW,0CAA0C;gBAC1CF;gBACA,UAAUF;gBACVL;gBACAF;YACJ;YAIJ,MAAMY,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACZ,OAAOS;YAC1D,IAAIG,aAAa,MAAM,IACnB,OAAOR,OAAO,IAAI,CAACQ,aAAa,KAAK;YAIzC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,yCAAyC;gBACzCJ;gBACA,UAAUF;gBACVL;gBACAF;YACJ;YAGJ,OAAOI,OAAO,EAAE,CAACK;QACrB,EAAE,OAAOK,OAAO;YAEZ,OAAOV,OAAO,IAAI,CAACU;QACvB;IACJ;AACJ;AAEO,MAAMC,oEAAmCC,qBAAqB;IACjE,aAAaC;IACb,gBAAgBzB;IAChB,cAAc;QACV0B;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js","sources":["../../../../src/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.ts"],"sourcesContent":["import { createImplementation, Result } from \"@webiny/feature/api\";\nimport { UpdateRevisionDescriptionUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n EntryAfterUpdateRevisionDescriptionEvent,\n EntryBeforeUpdateRevisionDescriptionEvent\n} from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { GetRevisionByIdUseCase } from \"~/features/contentEntry/GetRevisionById/abstractions.js\";\nimport type { CmsEntry, CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport { EntryNotAuthorizedError } from \"~/domain/contentEntry/errors.js\";\nimport { UpdateEntryRepository } from \"../UpdateEntry/index.js\";\n\nclass UpdateRevisionDescriptionUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateEntryRepository.Interface,\n private accessControl: AccessControl.Interface,\n private getRevisionByIdUseCase: GetRevisionByIdUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n revisionDescription: string | undefined\n ): Promise<Result<CmsEntry<T>, UseCaseAbstraction.Error>> {\n // Check initial access control\n const canAccess = await this.accessControl.canAccessEntry({ model, rwd: \"w\" });\n if (!canAccess) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n try {\n const result = await this.getRevisionByIdUseCase.execute<T>(model, id);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n const originalEntry = result.value;\n\n const entry = {\n ...originalEntry,\n revisionDescription\n };\n\n // Apply access control on the updated entry\n const canAccessEntry = await this.accessControl.canAccessEntry({\n model,\n entry,\n rwd: \"w\"\n });\n\n if (!canAccessEntry) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Publish before event\n await this.eventPublisher.publish(\n new EntryBeforeUpdateRevisionDescriptionEvent({\n entry,\n original: originalEntry,\n revisionDescription,\n model\n })\n );\n\n // Persist updated entry\n const updateResult = await this.repository.execute(model, entry);\n if (updateResult.isFail()) {\n return Result.fail(updateResult.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new EntryAfterUpdateRevisionDescriptionEvent({\n entry,\n original: originalEntry,\n revisionDescription,\n model\n })\n );\n\n return Result.ok(entry);\n } catch (error) {\n // Handle errors from createUpdateEntryData or other operations\n return Result.fail(error as UseCaseAbstraction.Error);\n }\n }\n}\n\nexport const UpdateRevisionDescriptionUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateRevisionDescriptionUseCaseImpl,\n dependencies: [EventPublisher, UpdateEntryRepository, AccessControl, GetRevisionByIdUseCase]\n});\n"],"names":["UpdateRevisionDescriptionUseCaseImpl","eventPublisher","repository","accessControl","getRevisionByIdUseCase","model","id","revisionDescription","canAccess","Result","EntryNotAuthorizedError","result","originalEntry","entry","canAccessEntry","EntryBeforeUpdateRevisionDescriptionEvent","updateResult","EntryAfterUpdateRevisionDescriptionEvent","error","UpdateRevisionDescriptionUseCase","createImplementation","UseCaseAbstraction","EventPublisher","UpdateEntryRepository","AccessControl","GetRevisionByIdUseCase"],"mappings":";;;;;;;;AAaA,MAAMA;IACF,YACYC,cAAwC,EACxCC,UAA2C,EAC3CC,aAAsC,EACtCC,sBAAwD,CAClE;aAJUH,cAAc,GAAdA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,sBAAsB,GAAtBA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,EAAU,EACVC,mBAAuC,EACe;QAEtD,MAAMC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAEH;YAAO,KAAK;QAAI;QAC5E,IAAI,CAACG,WACD,OAAOC,OAAO,IAAI,CAACC,wBAAwB,SAAS,CAACL;QAGzD,IAAI;YACA,MAAMM,SAAS,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAIN,OAAOC;YAEnE,IAAIK,OAAO,MAAM,IACb,OAAOF,OAAO,IAAI,CAACE,OAAO,KAAK;YAGnC,MAAMC,gBAAgBD,OAAO,KAAK;YAElC,MAAME,QAAQ;gBACV,GAAGD,aAAa;gBAChBL;YACJ;YAGA,MAAMO,iBAAiB,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBAC3DT;gBACAQ;gBACA,KAAK;YACT;YAEA,IAAI,CAACC,gBACD,OAAOL,OAAO,IAAI,CAACC,wBAAwB,SAAS,CAACL;YAIzD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIU,0CAA0C;gBAC1CF;gBACA,UAAUD;gBACVL;gBACAF;YACJ;YAIJ,MAAMW,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACX,OAAOQ;YAC1D,IAAIG,aAAa,MAAM,IACnB,OAAOP,OAAO,IAAI,CAACO,aAAa,KAAK;YAIzC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,yCAAyC;gBACzCJ;gBACA,UAAUD;gBACVL;gBACAF;YACJ;YAGJ,OAAOI,OAAO,EAAE,CAACI;QACrB,EAAE,OAAOK,OAAO;YAEZ,OAAOT,OAAO,IAAI,CAACS;QACvB;IACJ;AACJ;AAEO,MAAMC,oEAAmCC,qBAAqB;IACjE,aAAaC;IACb,gBAAgBrB;IAChB,cAAc;QAACsB;QAAgBC;QAAuBC;QAAeC;KAAuB;AAChG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms",
3
- "version": "6.4.1",
3
+ "version": "6.4.2-beta.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -25,19 +25,19 @@
25
25
  "@babel/code-frame": "7.29.0",
26
26
  "@graphql-tools/merge": "9.1.9",
27
27
  "@graphql-tools/schema": "10.0.33",
28
- "@webiny/api": "6.4.1",
29
- "@webiny/api-core": "6.4.1",
28
+ "@webiny/api": "6.4.2-beta.0",
29
+ "@webiny/api-core": "6.4.2-beta.0",
30
30
  "@webiny/di": "1.0.1",
31
- "@webiny/error": "6.4.1",
32
- "@webiny/feature": "6.4.1",
33
- "@webiny/handler": "6.4.1",
34
- "@webiny/handler-aws": "6.4.1",
35
- "@webiny/handler-db": "6.4.1",
36
- "@webiny/handler-graphql": "6.4.1",
37
- "@webiny/plugins": "6.4.1",
38
- "@webiny/project": "6.4.1",
39
- "@webiny/utils": "6.4.1",
40
- "@webiny/validation": "6.4.1",
31
+ "@webiny/error": "6.4.2-beta.0",
32
+ "@webiny/feature": "6.4.2-beta.0",
33
+ "@webiny/handler": "6.4.2-beta.0",
34
+ "@webiny/handler-aws": "6.4.2-beta.0",
35
+ "@webiny/handler-db": "6.4.2-beta.0",
36
+ "@webiny/handler-graphql": "6.4.2-beta.0",
37
+ "@webiny/plugins": "6.4.2-beta.0",
38
+ "@webiny/project": "6.4.2-beta.0",
39
+ "@webiny/utils": "6.4.2-beta.0",
40
+ "@webiny/validation": "6.4.2-beta.0",
41
41
  "dot-prop-immutable": "2.1.1",
42
42
  "graphql": "16.14.0",
43
43
  "graphql-tag": "2.12.6",
@@ -51,13 +51,13 @@
51
51
  "devDependencies": {
52
52
  "@types/babel__code-frame": "7.27.0",
53
53
  "@types/pluralize": "0.0.33",
54
- "@webiny/aws-sdk": "6.4.1",
55
- "@webiny/build-tools": "6.4.1",
56
- "@webiny/db-dynamodb": "6.4.1",
57
- "@webiny/handler-db": "6.4.1",
58
- "@webiny/project-utils": "6.4.1",
59
- "@webiny/sdk": "6.4.1",
60
- "@webiny/wcp": "6.4.1",
54
+ "@webiny/aws-sdk": "6.4.2-beta.0",
55
+ "@webiny/build-tools": "6.4.2-beta.0",
56
+ "@webiny/db-dynamodb": "6.4.2-beta.0",
57
+ "@webiny/handler-db": "6.4.2-beta.0",
58
+ "@webiny/project-utils": "6.4.2-beta.0",
59
+ "@webiny/sdk": "6.4.2-beta.0",
60
+ "@webiny/wcp": "6.4.2-beta.0",
61
61
  "apollo-graphql": "0.9.7",
62
62
  "graphql": "16.14.0",
63
63
  "oxfmt": "0.51.0",