@webiny/api-workflows 0.0.0-unstable.0d717d18dd → 0.0.0-unstable.33e4fd9647

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 (67) hide show
  1. package/WorkflowsFeature.js +55 -2
  2. package/WorkflowsFeature.js.map +1 -1
  3. package/WorkflowsSchemaFactory.d.ts +1 -0
  4. package/WorkflowsSchemaFactory.js +4 -0
  5. package/WorkflowsSchemaFactory.js.map +1 -1
  6. package/domain/workflow/abstractions.d.ts +13 -3
  7. package/domain/workflow/abstractions.js +2 -2
  8. package/domain/workflow/abstractions.js.map +1 -1
  9. package/domain/workflow/workflowModel.js +2 -1
  10. package/domain/workflow/workflowModel.js.map +1 -1
  11. package/domain/workflowState/abstractions.d.ts +13 -3
  12. package/domain/workflowState/abstractions.js +2 -2
  13. package/domain/workflowState/abstractions.js.map +1 -1
  14. package/domain/workflowState/stateModel.js +2 -1
  15. package/domain/workflowState/stateModel.js.map +1 -1
  16. package/features/WorkflowModelProviders.d.ts +34 -0
  17. package/features/WorkflowModelProviders.js +40 -0
  18. package/features/WorkflowModelProviders.js.map +1 -0
  19. package/features/workflow/CreateWorkflow/CreateWorkflowRepository.d.ts +3 -3
  20. package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js +6 -5
  21. package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js.map +1 -1
  22. package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.d.ts +3 -3
  23. package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js +6 -5
  24. package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js.map +1 -1
  25. package/features/workflow/GetWorkflow/GetWorkflowRepository.d.ts +3 -3
  26. package/features/workflow/GetWorkflow/GetWorkflowRepository.js +6 -5
  27. package/features/workflow/GetWorkflow/GetWorkflowRepository.js.map +1 -1
  28. package/features/workflow/ListWorkflows/ListWorkflowsRepository.d.ts +3 -3
  29. package/features/workflow/ListWorkflows/ListWorkflowsRepository.js +7 -6
  30. package/features/workflow/ListWorkflows/ListWorkflowsRepository.js.map +1 -1
  31. package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.d.ts +3 -3
  32. package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js +6 -5
  33. package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js.map +1 -1
  34. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.d.ts +3 -3
  35. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js +6 -5
  36. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js.map +1 -1
  37. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.js +1 -0
  38. package/features/workflowState/CreateWorkflowState/CreateWorkflowStateUseCase.js.map +1 -1
  39. package/features/workflowState/DeleteTargetWorkflowState/DeleteTargetWorkflowStateUseCase.js +1 -0
  40. package/features/workflowState/DeleteTargetWorkflowState/DeleteTargetWorkflowStateUseCase.js.map +1 -1
  41. package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.d.ts +3 -3
  42. package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js +6 -5
  43. package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js.map +1 -1
  44. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.d.ts +3 -3
  45. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js +6 -5
  46. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js.map +1 -1
  47. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateUseCase.js +1 -0
  48. package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateUseCase.js.map +1 -1
  49. package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.d.ts +3 -3
  50. package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js +6 -5
  51. package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js.map +1 -1
  52. package/features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.js +1 -0
  53. package/features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.js.map +1 -1
  54. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.d.ts +3 -3
  55. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js +7 -6
  56. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js.map +1 -1
  57. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js +1 -0
  58. package/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js.map +1 -1
  59. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.d.ts +3 -3
  60. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js +7 -6
  61. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js.map +1 -1
  62. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.js +1 -0
  63. package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.js.map +1 -1
  64. package/package.json +13 -16
  65. package/WorkflowsInitializer.d.ts +0 -19
  66. package/WorkflowsInitializer.js +0 -97
  67. package/WorkflowsInitializer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js","sources":["../../../../src/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js\";\nimport { WorkflowStateModel, WorkflowStateMapper } from \"~/domain/workflowState/abstractions.js\";\nimport type { IWorkflowStateRecord } from \"~/domain/workflowState/abstractions.js\";\nimport {\n WorkflowStateNotFoundError,\n WorkflowStatePersistenceError\n} from \"~/domain/workflowState/errors.js\";\nimport { GetWorkflowStateRepository as Repository } from \"./abstractions.js\";\n\nclass GetWorkflowStateRepositoryImpl implements Repository.Interface {\n constructor(\n private getEntryById: GetEntryByIdUseCase.Interface,\n private model: WorkflowStateModel.Interface,\n private mapper: WorkflowStateMapper.Interface\n ) {}\n\n async execute(id: string): Repository.Return {\n const entryResult = await this.getEntryById.execute<Omit<IWorkflowStateRecord, \"id\">>(\n this.model,\n id\n );\n\n if (entryResult.isFail()) {\n if (entryResult.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new WorkflowStateNotFoundError({ id }));\n }\n\n return Result.fail(new WorkflowStatePersistenceError(entryResult.error));\n }\n\n const entry = entryResult.value;\n\n const record = this.mapper.fromCmsEntry(entry);\n return Result.ok(record);\n }\n}\n\nexport const GetWorkflowStateRepository = Repository.createImplementation({\n implementation: GetWorkflowStateRepositoryImpl,\n dependencies: [GetEntryByIdUseCase, WorkflowStateModel, WorkflowStateMapper]\n});\n"],"names":["GetWorkflowStateRepositoryImpl","getEntryById","model","mapper","id","entryResult","Result","WorkflowStateNotFoundError","WorkflowStatePersistenceError","entry","record","GetWorkflowStateRepository","Repository","GetEntryByIdUseCase","WorkflowStateModel","WorkflowStateMapper"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,YAA2C,EAC3CC,KAAmC,EACnCC,MAAqC,CAC/C;aAHUF,YAAY,GAAZA;aACAC,KAAK,GAALA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAqB;QACzC,MAAMC,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAC/C,IAAI,CAAC,KAAK,EACVD;QAGJ,IAAIC,YAAY,MAAM,IAAI;YACtB,IAAIA,AAA2B,yBAA3BA,YAAY,KAAK,CAAC,IAAI,EACtB,OAAOC,OAAO,IAAI,CAAC,IAAIC,2BAA2B;gBAAEH;YAAG;YAG3D,OAAOE,OAAO,IAAI,CAAC,IAAIE,8BAA8BH,YAAY,KAAK;QAC1E;QAEA,MAAMI,QAAQJ,YAAY,KAAK;QAE/B,MAAMK,SAAS,IAAI,CAAC,MAAM,CAAC,YAAY,CAACD;QACxC,OAAOH,OAAO,EAAE,CAACI;IACrB;AACJ;AAEO,MAAMC,wDAA6BC,2BAAAA,oBAA+B,CAAC;IACtE,gBAAgBZ;IAChB,cAAc;QAACa;QAAqBC;QAAoBC;KAAoB;AAChF"}
1
+ {"version":3,"file":"features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js","sources":["../../../../src/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js\";\nimport {\n WorkflowStateModelProvider,\n WorkflowStateMapper\n} from \"~/domain/workflowState/abstractions.js\";\nimport type { IWorkflowStateRecord } from \"~/domain/workflowState/abstractions.js\";\nimport {\n WorkflowStateNotFoundError,\n WorkflowStatePersistenceError\n} from \"~/domain/workflowState/errors.js\";\nimport { GetWorkflowStateRepository as Repository } from \"./abstractions.js\";\n\nclass GetWorkflowStateRepositoryImpl implements Repository.Interface {\n constructor(\n private getEntryById: GetEntryByIdUseCase.Interface,\n private modelProvider: WorkflowStateModelProvider.Interface,\n private mapper: WorkflowStateMapper.Interface\n ) {}\n\n async execute(id: string): Repository.Return {\n const model = await this.modelProvider.get();\n const entryResult = await this.getEntryById.execute<Omit<IWorkflowStateRecord, \"id\">>(\n model,\n id\n );\n\n if (entryResult.isFail()) {\n if (entryResult.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new WorkflowStateNotFoundError({ id }));\n }\n\n return Result.fail(new WorkflowStatePersistenceError(entryResult.error));\n }\n\n const entry = entryResult.value;\n\n const record = this.mapper.fromCmsEntry(entry);\n return Result.ok(record);\n }\n}\n\nexport const GetWorkflowStateRepository = Repository.createImplementation({\n implementation: GetWorkflowStateRepositoryImpl,\n dependencies: [GetEntryByIdUseCase, WorkflowStateModelProvider, WorkflowStateMapper]\n});\n"],"names":["GetWorkflowStateRepositoryImpl","getEntryById","modelProvider","mapper","id","model","entryResult","Result","WorkflowStateNotFoundError","WorkflowStatePersistenceError","entry","record","GetWorkflowStateRepository","Repository","GetEntryByIdUseCase","WorkflowStateModelProvider","WorkflowStateMapper"],"mappings":";;;;;AAaA,MAAMA;IACF,YACYC,YAA2C,EAC3CC,aAAmD,EACnDC,MAAqC,CAC/C;aAHUF,YAAY,GAAZA;aACAC,aAAa,GAAbA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAqB;QACzC,MAAMC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG;QAC1C,MAAMC,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAC/CD,OACAD;QAGJ,IAAIE,YAAY,MAAM,IAAI;YACtB,IAAIA,AAA2B,yBAA3BA,YAAY,KAAK,CAAC,IAAI,EACtB,OAAOC,OAAO,IAAI,CAAC,IAAIC,2BAA2B;gBAAEJ;YAAG;YAG3D,OAAOG,OAAO,IAAI,CAAC,IAAIE,8BAA8BH,YAAY,KAAK;QAC1E;QAEA,MAAMI,QAAQJ,YAAY,KAAK;QAE/B,MAAMK,SAAS,IAAI,CAAC,MAAM,CAAC,YAAY,CAACD;QACxC,OAAOH,OAAO,EAAE,CAACI;IACrB;AACJ;AAEO,MAAMC,wDAA6BC,2BAAAA,oBAA+B,CAAC;IACtE,gBAAgBb;IAChB,cAAc;QAACc;QAAqBC;QAA4BC;KAAoB;AACxF"}
@@ -15,6 +15,7 @@ class GetWorkflowStateUseCaseImpl {
15
15
  const record = recordResult.value;
16
16
  const identity = this.identityContext.getIdentity();
17
17
  const teamsResult = await this.getUserTeams.execute(identity.id);
18
+ if (teamsResult.isFail()) return Result.fail(teamsResult.error);
18
19
  const teams = teamsResult.value;
19
20
  const workflowState = new WorkflowState(record, teams, identity);
20
21
  return Result.ok(workflowState);
@@ -1 +1 @@
1
- {"version":3,"file":"features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.js","sources":["../../../../src/features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserTeamsUseCase } from \"~/features/internal/GetUserTeams/index.js\";\nimport { GetWorkflowStateRepository, GetWorkflowStateUseCase as UseCase } from \"./abstractions.js\";\nimport { WorkflowState } from \"~/domain/workflowState/WorkflowState.js\";\n\nclass GetWorkflowStateUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserTeams: GetUserTeamsUseCase.Interface,\n private repository: GetWorkflowStateRepository.Interface\n ) {}\n\n async execute(id: string): UseCase.Return {\n const recordResult = await this.repository.execute(id);\n\n if (recordResult.isFail()) {\n return Result.fail(recordResult.error);\n }\n\n const record = recordResult.value;\n\n const identity = this.identityContext.getIdentity();\n\n const teamsResult = await this.getUserTeams.execute(identity.id);\n const teams = teamsResult.value;\n\n const workflowState = new WorkflowState(record, teams, identity);\n\n return Result.ok(workflowState);\n }\n}\n\nexport const GetWorkflowStateUseCase = UseCase.createImplementation({\n implementation: GetWorkflowStateUseCaseImpl,\n dependencies: [IdentityContext, GetUserTeamsUseCase, GetWorkflowStateRepository]\n});\n"],"names":["GetWorkflowStateUseCaseImpl","identityContext","getUserTeams","repository","id","recordResult","Result","record","identity","teamsResult","teams","workflowState","WorkflowState","GetWorkflowStateUseCase","UseCase","IdentityContext","GetUserTeamsUseCase","GetWorkflowStateRepository"],"mappings":";;;;;AAMA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,YAA2C,EAC3CC,UAAgD,CAC1D;aAHUF,eAAe,GAAfA;aACAC,YAAY,GAAZA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAkB;QACtC,MAAMC,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACD;QAEnD,IAAIC,aAAa,MAAM,IACnB,OAAOC,OAAO,IAAI,CAACD,aAAa,KAAK;QAGzC,MAAME,SAASF,aAAa,KAAK;QAEjC,MAAMG,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QAEjD,MAAMC,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAACD,SAAS,EAAE;QAC/D,MAAME,QAAQD,YAAY,KAAK;QAE/B,MAAME,gBAAgB,IAAIC,cAAcL,QAAQG,OAAOF;QAEvD,OAAOF,OAAO,EAAE,CAACK;IACrB;AACJ;AAEO,MAAME,kDAA0BC,wBAAAA,oBAA4B,CAAC;IAChE,gBAAgBd;IAChB,cAAc;QAACe;QAAiBC;QAAqBC;KAA2B;AACpF"}
1
+ {"version":3,"file":"features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.js","sources":["../../../../src/features/workflowState/GetWorkflowState/GetWorkflowStateUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserTeamsUseCase } from \"~/features/internal/GetUserTeams/index.js\";\nimport { GetWorkflowStateRepository, GetWorkflowStateUseCase as UseCase } from \"./abstractions.js\";\nimport { WorkflowState } from \"~/domain/workflowState/WorkflowState.js\";\n\nclass GetWorkflowStateUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserTeams: GetUserTeamsUseCase.Interface,\n private repository: GetWorkflowStateRepository.Interface\n ) {}\n\n async execute(id: string): UseCase.Return {\n const recordResult = await this.repository.execute(id);\n\n if (recordResult.isFail()) {\n return Result.fail(recordResult.error);\n }\n\n const record = recordResult.value;\n\n const identity = this.identityContext.getIdentity();\n\n const teamsResult = await this.getUserTeams.execute(identity.id);\n if (teamsResult.isFail()) {\n return Result.fail(teamsResult.error);\n }\n const teams = teamsResult.value;\n\n const workflowState = new WorkflowState(record, teams, identity);\n\n return Result.ok(workflowState);\n }\n}\n\nexport const GetWorkflowStateUseCase = UseCase.createImplementation({\n implementation: GetWorkflowStateUseCaseImpl,\n dependencies: [IdentityContext, GetUserTeamsUseCase, GetWorkflowStateRepository]\n});\n"],"names":["GetWorkflowStateUseCaseImpl","identityContext","getUserTeams","repository","id","recordResult","Result","record","identity","teamsResult","teams","workflowState","WorkflowState","GetWorkflowStateUseCase","UseCase","IdentityContext","GetUserTeamsUseCase","GetWorkflowStateRepository"],"mappings":";;;;;AAMA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,YAA2C,EAC3CC,UAAgD,CAC1D;aAHUF,eAAe,GAAfA;aACAC,YAAY,GAAZA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAkB;QACtC,MAAMC,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACD;QAEnD,IAAIC,aAAa,MAAM,IACnB,OAAOC,OAAO,IAAI,CAACD,aAAa,KAAK;QAGzC,MAAME,SAASF,aAAa,KAAK;QAEjC,MAAMG,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QAEjD,MAAMC,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAACD,SAAS,EAAE;QAC/D,IAAIC,YAAY,MAAM,IAClB,OAAOH,OAAO,IAAI,CAACG,YAAY,KAAK;QAExC,MAAMC,QAAQD,YAAY,KAAK;QAE/B,MAAME,gBAAgB,IAAIC,cAAcL,QAAQG,OAAOF;QAEvD,OAAOF,OAAO,EAAE,CAACK;IACrB;AACJ;AAEO,MAAME,kDAA0BC,wBAAAA,oBAA4B,CAAC;IAChE,gBAAgBd;IAChB,cAAc;QAACe;QAAiBC;QAAqBC;KAA2B;AACpF"}
@@ -1,13 +1,13 @@
1
1
  import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
2
- import { WorkflowStateMapper, WorkflowStateModel } from "../../../domain/workflowState/abstractions.js";
2
+ import { WorkflowStateMapper, WorkflowStateModelProvider } from "../../../domain/workflowState/abstractions.js";
3
3
  import { ListWorkflowStatesRepository as Repository } from "./abstractions.js";
4
4
  import { CmsWhereMapper } from "@webiny/api-headless-cms";
5
5
  declare class ListWorkflowStatesRepositoryImpl implements Repository.Interface {
6
6
  private listEntries;
7
- private model;
7
+ private modelProvider;
8
8
  private mapper;
9
9
  private cmsWhereMapper;
10
- constructor(listEntries: ListLatestEntriesUseCase.Interface, model: WorkflowStateModel.Interface, mapper: WorkflowStateMapper.Interface, cmsWhereMapper: CmsWhereMapper.Interface);
10
+ constructor(listEntries: ListLatestEntriesUseCase.Interface, modelProvider: WorkflowStateModelProvider.Interface, mapper: WorkflowStateMapper.Interface, cmsWhereMapper: CmsWhereMapper.Interface);
11
11
  execute(params?: Repository.Params): Repository.Return;
12
12
  }
13
13
  export declare const ListWorkflowStatesRepository: typeof ListWorkflowStatesRepositoryImpl & {
@@ -1,18 +1,19 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
3
- import { WorkflowStateMapper, WorkflowStateModel } from "../../../domain/workflowState/abstractions.js";
3
+ import { WorkflowStateMapper, WorkflowStateModelProvider } from "../../../domain/workflowState/abstractions.js";
4
4
  import { WorkflowStatePersistenceError } from "../../../domain/workflowState/errors.js";
5
5
  import { ListWorkflowStatesRepository } from "./abstractions.js";
6
6
  import { CmsWhereMapper } from "@webiny/api-headless-cms";
7
7
  class ListWorkflowStatesRepositoryImpl {
8
- constructor(listEntries, model, mapper, cmsWhereMapper){
8
+ constructor(listEntries, modelProvider, mapper, cmsWhereMapper){
9
9
  this.listEntries = listEntries;
10
- this.model = model;
10
+ this.modelProvider = modelProvider;
11
11
  this.mapper = mapper;
12
12
  this.cmsWhereMapper = cmsWhereMapper;
13
13
  }
14
14
  async execute(params = {}) {
15
- const listResult = await this.listEntries.execute(this.model, {
15
+ const model = await this.modelProvider.get();
16
+ const listResult = await this.listEntries.execute(model, {
16
17
  limit: 50,
17
18
  sort: [
18
19
  "createdOn_DESC"
@@ -20,7 +21,7 @@ class ListWorkflowStatesRepositoryImpl {
20
21
  ...params,
21
22
  where: this.cmsWhereMapper.map({
22
23
  input: params.where,
23
- fields: this.model.fields
24
+ fields: model.fields
24
25
  })
25
26
  });
26
27
  if (listResult.isFail()) return Result.fail(new WorkflowStatePersistenceError(listResult.error));
@@ -36,7 +37,7 @@ const ListWorkflowStatesRepository_ListWorkflowStatesRepository = ListWorkflowSt
36
37
  implementation: ListWorkflowStatesRepositoryImpl,
37
38
  dependencies: [
38
39
  ListLatestEntriesUseCase,
39
- WorkflowStateModel,
40
+ WorkflowStateModelProvider,
40
41
  WorkflowStateMapper,
41
42
  CmsWhereMapper
42
43
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js","sources":["../../../../src/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport type { IWorkflowStateRecord } from \"~/domain/workflowState/abstractions.js\";\nimport { WorkflowStateMapper, WorkflowStateModel } from \"~/domain/workflowState/abstractions.js\";\nimport { WorkflowStatePersistenceError } from \"~/domain/workflowState/errors.js\";\nimport { ListWorkflowStatesRepository as Repository } from \"./abstractions.js\";\nimport { CmsWhereMapper } from \"@webiny/api-headless-cms\";\n\nclass ListWorkflowStatesRepositoryImpl implements Repository.Interface {\n constructor(\n private listEntries: ListLatestEntriesUseCase.Interface,\n private model: WorkflowStateModel.Interface,\n private mapper: WorkflowStateMapper.Interface,\n private cmsWhereMapper: CmsWhereMapper.Interface\n ) {}\n\n async execute(params: Repository.Params = {}): Repository.Return {\n const listResult = await this.listEntries.execute<Omit<IWorkflowStateRecord, \"id\">>(\n this.model,\n {\n limit: 50,\n sort: [\"createdOn_DESC\"],\n ...params,\n where: this.cmsWhereMapper.map({\n input: params.where,\n fields: this.model.fields\n })\n }\n );\n\n if (listResult.isFail()) {\n return Result.fail(new WorkflowStatePersistenceError(listResult.error));\n }\n\n const { entries, meta } = listResult.value;\n\n const records = entries.map(item => this.mapper.fromCmsEntry(item));\n\n return Result.ok({\n items: records,\n meta\n });\n }\n}\n\nexport const ListWorkflowStatesRepository = Repository.createImplementation({\n implementation: ListWorkflowStatesRepositoryImpl,\n dependencies: [\n ListLatestEntriesUseCase,\n WorkflowStateModel,\n WorkflowStateMapper,\n CmsWhereMapper\n ]\n});\n"],"names":["ListWorkflowStatesRepositoryImpl","listEntries","model","mapper","cmsWhereMapper","params","listResult","Result","WorkflowStatePersistenceError","entries","meta","records","item","ListWorkflowStatesRepository","Repository","ListLatestEntriesUseCase","WorkflowStateModel","WorkflowStateMapper","CmsWhereMapper"],"mappings":";;;;;;AAQA,MAAMA;IACF,YACYC,WAA+C,EAC/CC,KAAmC,EACnCC,MAAqC,EACrCC,cAAwC,CAClD;aAJUH,WAAW,GAAXA;aACAC,KAAK,GAALA;aACAC,MAAM,GAANA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,QAAQC,SAA4B,CAAC,CAAC,EAAqB;QAC7D,MAAMC,aAAa,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAC7C,IAAI,CAAC,KAAK,EACV;YACI,OAAO;YACP,MAAM;gBAAC;aAAiB;YACxB,GAAGD,MAAM;YACT,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAC3B,OAAOA,OAAO,KAAK;gBACnB,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM;YAC7B;QACJ;QAGJ,IAAIC,WAAW,MAAM,IACjB,OAAOC,OAAO,IAAI,CAAC,IAAIC,8BAA8BF,WAAW,KAAK;QAGzE,MAAM,EAAEG,OAAO,EAAEC,IAAI,EAAE,GAAGJ,WAAW,KAAK;QAE1C,MAAMK,UAAUF,QAAQ,GAAG,CAACG,CAAAA,OAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAACA;QAE7D,OAAOL,OAAO,EAAE,CAAC;YACb,OAAOI;YACPD;QACJ;IACJ;AACJ;AAEO,MAAMG,4DAA+BC,6BAAAA,oBAA+B,CAAC;IACxE,gBAAgBd;IAChB,cAAc;QACVe;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js","sources":["../../../../src/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport type { IWorkflowStateRecord } from \"~/domain/workflowState/abstractions.js\";\nimport {\n WorkflowStateMapper,\n WorkflowStateModelProvider\n} from \"~/domain/workflowState/abstractions.js\";\nimport { WorkflowStatePersistenceError } from \"~/domain/workflowState/errors.js\";\nimport { ListWorkflowStatesRepository as Repository } from \"./abstractions.js\";\nimport { CmsWhereMapper } from \"@webiny/api-headless-cms\";\n\nclass ListWorkflowStatesRepositoryImpl implements Repository.Interface {\n constructor(\n private listEntries: ListLatestEntriesUseCase.Interface,\n private modelProvider: WorkflowStateModelProvider.Interface,\n private mapper: WorkflowStateMapper.Interface,\n private cmsWhereMapper: CmsWhereMapper.Interface\n ) {}\n\n async execute(params: Repository.Params = {}): Repository.Return {\n const model = await this.modelProvider.get();\n const listResult = await this.listEntries.execute<Omit<IWorkflowStateRecord, \"id\">>(model, {\n limit: 50,\n sort: [\"createdOn_DESC\"],\n ...params,\n where: this.cmsWhereMapper.map({\n input: params.where,\n fields: model.fields\n })\n });\n\n if (listResult.isFail()) {\n return Result.fail(new WorkflowStatePersistenceError(listResult.error));\n }\n\n const { entries, meta } = listResult.value;\n\n const records = entries.map(item => this.mapper.fromCmsEntry(item));\n\n return Result.ok({\n items: records,\n meta\n });\n }\n}\n\nexport const ListWorkflowStatesRepository = Repository.createImplementation({\n implementation: ListWorkflowStatesRepositoryImpl,\n dependencies: [\n ListLatestEntriesUseCase,\n WorkflowStateModelProvider,\n WorkflowStateMapper,\n CmsWhereMapper\n ]\n});\n"],"names":["ListWorkflowStatesRepositoryImpl","listEntries","modelProvider","mapper","cmsWhereMapper","params","model","listResult","Result","WorkflowStatePersistenceError","entries","meta","records","item","ListWorkflowStatesRepository","Repository","ListLatestEntriesUseCase","WorkflowStateModelProvider","WorkflowStateMapper","CmsWhereMapper"],"mappings":";;;;;;AAWA,MAAMA;IACF,YACYC,WAA+C,EAC/CC,aAAmD,EACnDC,MAAqC,EACrCC,cAAwC,CAClD;aAJUH,WAAW,GAAXA;aACAC,aAAa,GAAbA;aACAC,MAAM,GAANA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,QAAQC,SAA4B,CAAC,CAAC,EAAqB;QAC7D,MAAMC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG;QAC1C,MAAMC,aAAa,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAmCD,OAAO;YACvF,OAAO;YACP,MAAM;gBAAC;aAAiB;YACxB,GAAGD,MAAM;YACT,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAC3B,OAAOA,OAAO,KAAK;gBACnB,QAAQC,MAAM,MAAM;YACxB;QACJ;QAEA,IAAIC,WAAW,MAAM,IACjB,OAAOC,OAAO,IAAI,CAAC,IAAIC,8BAA8BF,WAAW,KAAK;QAGzE,MAAM,EAAEG,OAAO,EAAEC,IAAI,EAAE,GAAGJ,WAAW,KAAK;QAE1C,MAAMK,UAAUF,QAAQ,GAAG,CAACG,CAAAA,OAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAACA;QAE7D,OAAOL,OAAO,EAAE,CAAC;YACb,OAAOI;YACPD;QACJ;IACJ;AACJ;AAEO,MAAMG,4DAA+BC,6BAAAA,oBAA+B,CAAC;IACxE,gBAAgBf;IAChB,cAAc;QACVgB;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -14,6 +14,7 @@ class ListWorkflowStatesUseCaseImpl {
14
14
  async execute(params = {}) {
15
15
  const identity = this.identityContext.getIdentity();
16
16
  const teamsResult = await this.getUserTeams.execute(identity.id);
17
+ if (teamsResult.isFail()) return Result.fail(teamsResult.error);
17
18
  const teams = teamsResult.value;
18
19
  const requestedLimit = params.limit || 50;
19
20
  const accumulated = [];
@@ -1 +1 @@
1
- {"version":3,"file":"features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js","sources":["../../../../src/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserTeamsUseCase } from \"~/features/internal/GetUserTeams/index.js\";\nimport {\n ListWorkflowStatesRepository,\n ListWorkflowStatesUseCase as UseCase\n} from \"./abstractions.js\";\nimport { WorkflowState } from \"~/domain/workflowState/WorkflowState.js\";\nimport { WorkflowStateFilter } from \"./WorkflowStateFilter.js\";\n\nclass ListWorkflowStatesUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserTeams: GetUserTeamsUseCase.Interface,\n private repository: ListWorkflowStatesRepository.Interface,\n private stateFilter: WorkflowStateFilter.Interface\n ) {}\n\n async execute(params: UseCase.Params = {}): UseCase.Return {\n const identity = this.identityContext.getIdentity();\n\n const teamsResult = await this.getUserTeams.execute(identity.id);\n const teams = teamsResult.value;\n\n const requestedLimit = params.limit || 50;\n const accumulated: WorkflowState[] = [];\n let cursor: string | null = params.after || null;\n let totalCount = 0;\n let totalRemoved = 0;\n let hasMoreItems = false;\n\n while (accumulated.length < requestedLimit) {\n const recordsResult = await this.repository.execute({\n ...params,\n limit: requestedLimit,\n after: cursor || undefined\n });\n\n if (recordsResult.isFail()) {\n return Result.fail(recordsResult.error);\n }\n\n const { items: records, meta } = recordsResult.value;\n totalCount = meta.totalCount;\n\n const items = records.map(record => new WorkflowState(record, teams, identity));\n const filtered = await this.stateFilter.filter(items);\n\n totalRemoved += items.length - filtered.length;\n accumulated.push(...filtered);\n\n if (!meta.hasMoreItems) {\n hasMoreItems = accumulated.length > requestedLimit;\n cursor = null;\n break;\n }\n\n cursor = meta.cursor;\n hasMoreItems = true;\n }\n\n const items = accumulated.slice(0, requestedLimit);\n\n return Result.ok({\n items,\n meta: {\n totalCount: Math.max(0, totalCount - totalRemoved),\n hasMoreItems,\n cursor\n }\n });\n }\n}\n\nexport const ListWorkflowStatesUseCase = UseCase.createImplementation({\n implementation: ListWorkflowStatesUseCaseImpl,\n dependencies: [\n IdentityContext,\n GetUserTeamsUseCase,\n ListWorkflowStatesRepository,\n WorkflowStateFilter\n ]\n});\n"],"names":["ListWorkflowStatesUseCaseImpl","identityContext","getUserTeams","repository","stateFilter","params","identity","teamsResult","teams","requestedLimit","accumulated","cursor","totalCount","totalRemoved","hasMoreItems","recordsResult","undefined","Result","records","meta","items","record","WorkflowState","filtered","Math","ListWorkflowStatesUseCase","UseCase","IdentityContext","GetUserTeamsUseCase","ListWorkflowStatesRepository","WorkflowStateFilter"],"mappings":";;;;;;AAUA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,YAA2C,EAC3CC,UAAkD,EAClDC,WAA0C,CACpD;aAJUH,eAAe,GAAfA;aACAC,YAAY,GAAZA;aACAC,UAAU,GAAVA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,QAAQC,SAAyB,CAAC,CAAC,EAAkB;QACvD,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QAEjD,MAAMC,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAACD,SAAS,EAAE;QAC/D,MAAME,QAAQD,YAAY,KAAK;QAE/B,MAAME,iBAAiBJ,OAAO,KAAK,IAAI;QACvC,MAAMK,cAA+B,EAAE;QACvC,IAAIC,SAAwBN,OAAO,KAAK,IAAI;QAC5C,IAAIO,aAAa;QACjB,IAAIC,eAAe;QACnB,IAAIC,eAAe;QAEnB,MAAOJ,YAAY,MAAM,GAAGD,eAAgB;YACxC,MAAMM,gBAAgB,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAChD,GAAGV,MAAM;gBACT,OAAOI;gBACP,OAAOE,UAAUK;YACrB;YAEA,IAAID,cAAc,MAAM,IACpB,OAAOE,OAAO,IAAI,CAACF,cAAc,KAAK;YAG1C,MAAM,EAAE,OAAOG,OAAO,EAAEC,IAAI,EAAE,GAAGJ,cAAc,KAAK;YACpDH,aAAaO,KAAK,UAAU;YAE5B,MAAMC,QAAQF,QAAQ,GAAG,CAACG,CAAAA,SAAU,IAAIC,cAAcD,QAAQb,OAAOF;YACrE,MAAMiB,WAAW,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAACH;YAE/CP,gBAAgBO,MAAM,MAAM,GAAGG,SAAS,MAAM;YAC9Cb,YAAY,IAAI,IAAIa;YAEpB,IAAI,CAACJ,KAAK,YAAY,EAAE;gBACpBL,eAAeJ,YAAY,MAAM,GAAGD;gBACpCE,SAAS;gBACT;YACJ;YAEAA,SAASQ,KAAK,MAAM;YACpBL,eAAe;QACnB;QAEA,MAAMM,QAAQV,YAAY,KAAK,CAAC,GAAGD;QAEnC,OAAOQ,OAAO,EAAE,CAAC;YACbG;YACA,MAAM;gBACF,YAAYI,KAAK,GAAG,CAAC,GAAGZ,aAAaC;gBACrCC;gBACAH;YACJ;QACJ;IACJ;AACJ;AAEO,MAAMc,sDAA4BC,0BAAAA,oBAA4B,CAAC;IAClE,gBAAgB1B;IAChB,cAAc;QACV2B;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.js","sources":["../../../../src/features/workflowState/ListWorkflowStates/ListWorkflowStatesUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserTeamsUseCase } from \"~/features/internal/GetUserTeams/index.js\";\nimport {\n ListWorkflowStatesRepository,\n ListWorkflowStatesUseCase as UseCase\n} from \"./abstractions.js\";\nimport { WorkflowState } from \"~/domain/workflowState/WorkflowState.js\";\nimport { WorkflowStateFilter } from \"./WorkflowStateFilter.js\";\n\nclass ListWorkflowStatesUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserTeams: GetUserTeamsUseCase.Interface,\n private repository: ListWorkflowStatesRepository.Interface,\n private stateFilter: WorkflowStateFilter.Interface\n ) {}\n\n async execute(params: UseCase.Params = {}): UseCase.Return {\n const identity = this.identityContext.getIdentity();\n\n const teamsResult = await this.getUserTeams.execute(identity.id);\n if (teamsResult.isFail()) {\n return Result.fail(teamsResult.error);\n }\n const teams = teamsResult.value;\n\n const requestedLimit = params.limit || 50;\n const accumulated: WorkflowState[] = [];\n let cursor: string | null = params.after || null;\n let totalCount = 0;\n let totalRemoved = 0;\n let hasMoreItems = false;\n\n while (accumulated.length < requestedLimit) {\n const recordsResult = await this.repository.execute({\n ...params,\n limit: requestedLimit,\n after: cursor || undefined\n });\n\n if (recordsResult.isFail()) {\n return Result.fail(recordsResult.error);\n }\n\n const { items: records, meta } = recordsResult.value;\n totalCount = meta.totalCount;\n\n const items = records.map(record => new WorkflowState(record, teams, identity));\n const filtered = await this.stateFilter.filter(items);\n\n totalRemoved += items.length - filtered.length;\n accumulated.push(...filtered);\n\n if (!meta.hasMoreItems) {\n hasMoreItems = accumulated.length > requestedLimit;\n cursor = null;\n break;\n }\n\n cursor = meta.cursor;\n hasMoreItems = true;\n }\n\n const items = accumulated.slice(0, requestedLimit);\n\n return Result.ok({\n items,\n meta: {\n totalCount: Math.max(0, totalCount - totalRemoved),\n hasMoreItems,\n cursor\n }\n });\n }\n}\n\nexport const ListWorkflowStatesUseCase = UseCase.createImplementation({\n implementation: ListWorkflowStatesUseCaseImpl,\n dependencies: [\n IdentityContext,\n GetUserTeamsUseCase,\n ListWorkflowStatesRepository,\n WorkflowStateFilter\n ]\n});\n"],"names":["ListWorkflowStatesUseCaseImpl","identityContext","getUserTeams","repository","stateFilter","params","identity","teamsResult","Result","teams","requestedLimit","accumulated","cursor","totalCount","totalRemoved","hasMoreItems","recordsResult","undefined","records","meta","items","record","WorkflowState","filtered","Math","ListWorkflowStatesUseCase","UseCase","IdentityContext","GetUserTeamsUseCase","ListWorkflowStatesRepository","WorkflowStateFilter"],"mappings":";;;;;;AAUA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,YAA2C,EAC3CC,UAAkD,EAClDC,WAA0C,CACpD;aAJUH,eAAe,GAAfA;aACAC,YAAY,GAAZA;aACAC,UAAU,GAAVA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,QAAQC,SAAyB,CAAC,CAAC,EAAkB;QACvD,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QAEjD,MAAMC,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAACD,SAAS,EAAE;QAC/D,IAAIC,YAAY,MAAM,IAClB,OAAOC,OAAO,IAAI,CAACD,YAAY,KAAK;QAExC,MAAME,QAAQF,YAAY,KAAK;QAE/B,MAAMG,iBAAiBL,OAAO,KAAK,IAAI;QACvC,MAAMM,cAA+B,EAAE;QACvC,IAAIC,SAAwBP,OAAO,KAAK,IAAI;QAC5C,IAAIQ,aAAa;QACjB,IAAIC,eAAe;QACnB,IAAIC,eAAe;QAEnB,MAAOJ,YAAY,MAAM,GAAGD,eAAgB;YACxC,MAAMM,gBAAgB,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAChD,GAAGX,MAAM;gBACT,OAAOK;gBACP,OAAOE,UAAUK;YACrB;YAEA,IAAID,cAAc,MAAM,IACpB,OAAOR,OAAO,IAAI,CAACQ,cAAc,KAAK;YAG1C,MAAM,EAAE,OAAOE,OAAO,EAAEC,IAAI,EAAE,GAAGH,cAAc,KAAK;YACpDH,aAAaM,KAAK,UAAU;YAE5B,MAAMC,QAAQF,QAAQ,GAAG,CAACG,CAAAA,SAAU,IAAIC,cAAcD,QAAQZ,OAAOH;YACrE,MAAMiB,WAAW,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAACH;YAE/CN,gBAAgBM,MAAM,MAAM,GAAGG,SAAS,MAAM;YAC9CZ,YAAY,IAAI,IAAIY;YAEpB,IAAI,CAACJ,KAAK,YAAY,EAAE;gBACpBJ,eAAeJ,YAAY,MAAM,GAAGD;gBACpCE,SAAS;gBACT;YACJ;YAEAA,SAASO,KAAK,MAAM;YACpBJ,eAAe;QACnB;QAEA,MAAMK,QAAQT,YAAY,KAAK,CAAC,GAAGD;QAEnC,OAAOF,OAAO,EAAE,CAAC;YACbY;YACA,MAAM;gBACF,YAAYI,KAAK,GAAG,CAAC,GAAGX,aAAaC;gBACrCC;gBACAH;YACJ;QACJ;IACJ;AACJ;AAEO,MAAMa,sDAA4BC,0BAAAA,oBAA4B,CAAC;IAClE,gBAAgB1B;IAChB,cAAc;QACV2B;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,14 +1,14 @@
1
1
  import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
2
2
  import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
3
- import { WorkflowStateModel, WorkflowStateMapper } from "../../../domain/workflowState/abstractions.js";
3
+ import { WorkflowStateModelProvider, WorkflowStateMapper } from "../../../domain/workflowState/abstractions.js";
4
4
  import { UpdateWorkflowStateRepository as Repository } from "./abstractions.js";
5
5
  import type { IUpdateWorkflowStateInput } from "./abstractions.js";
6
6
  declare class UpdateWorkflowStateRepositoryImpl implements Repository.Interface {
7
7
  private getEntryById;
8
8
  private updateEntry;
9
- private model;
9
+ private modelProvider;
10
10
  private mapper;
11
- constructor(getEntryById: GetEntryByIdUseCase.Interface, updateEntry: UpdateEntryUseCase.Interface, model: WorkflowStateModel.Interface, mapper: WorkflowStateMapper.Interface);
11
+ constructor(getEntryById: GetEntryByIdUseCase.Interface, updateEntry: UpdateEntryUseCase.Interface, modelProvider: WorkflowStateModelProvider.Interface, mapper: WorkflowStateMapper.Interface);
12
12
  execute(id: string, input: IUpdateWorkflowStateInput): Repository.Return;
13
13
  }
14
14
  export declare const UpdateWorkflowStateRepository: typeof UpdateWorkflowStateRepositoryImpl & {
@@ -1,18 +1,19 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js";
3
3
  import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js";
4
- import { WorkflowStateMapper, WorkflowStateModel } from "../../../domain/workflowState/abstractions.js";
4
+ import { WorkflowStateMapper, WorkflowStateModelProvider } from "../../../domain/workflowState/abstractions.js";
5
5
  import { WorkflowStateNotFoundError, WorkflowStatePersistenceError } from "../../../domain/workflowState/errors.js";
6
6
  import { UpdateWorkflowStateRepository } from "./abstractions.js";
7
7
  class UpdateWorkflowStateRepositoryImpl {
8
- constructor(getEntryById, updateEntry, model, mapper){
8
+ constructor(getEntryById, updateEntry, modelProvider, mapper){
9
9
  this.getEntryById = getEntryById;
10
10
  this.updateEntry = updateEntry;
11
- this.model = model;
11
+ this.modelProvider = modelProvider;
12
12
  this.mapper = mapper;
13
13
  }
14
14
  async execute(id, input) {
15
- const getResult = await this.getEntryById.execute(this.model, id);
15
+ const model = await this.modelProvider.get();
16
+ const getResult = await this.getEntryById.execute(model, id);
16
17
  if (getResult.isFail()) {
17
18
  if ("Cms/Entry/NotFound" === getResult.error.code) return Result.fail(new WorkflowStateNotFoundError({
18
19
  id
@@ -25,7 +26,7 @@ class UpdateWorkflowStateRepositoryImpl {
25
26
  ...input
26
27
  });
27
28
  try {
28
- const updateResult = await this.updateEntry.execute(this.model, id, {
29
+ const updateResult = await this.updateEntry.execute(model, id, {
29
30
  values: updatedValues
30
31
  });
31
32
  if (updateResult.isFail()) return Result.fail(new WorkflowStatePersistenceError(updateResult.error));
@@ -41,7 +42,7 @@ const UpdateWorkflowStateRepository_UpdateWorkflowStateRepository = UpdateWorkfl
41
42
  dependencies: [
42
43
  GetEntryByIdUseCase,
43
44
  UpdateEntryUseCase,
44
- WorkflowStateModel,
45
+ WorkflowStateModelProvider,
45
46
  WorkflowStateMapper
46
47
  ]
47
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js","sources":["../../../../src/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js\";\nimport { WorkflowStateModel, WorkflowStateMapper } from \"~/domain/workflowState/abstractions.js\";\nimport type { IWorkflowStateRecord } from \"~/domain/workflowState/abstractions.js\";\nimport {\n WorkflowStateNotFoundError,\n WorkflowStatePersistenceError\n} from \"~/domain/workflowState/errors.js\";\nimport { UpdateWorkflowStateRepository as Repository } from \"./abstractions.js\";\nimport type { IUpdateWorkflowStateInput } from \"./abstractions.js\";\n\nclass UpdateWorkflowStateRepositoryImpl implements Repository.Interface {\n constructor(\n private getEntryById: GetEntryByIdUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface,\n private model: WorkflowStateModel.Interface,\n private mapper: WorkflowStateMapper.Interface\n ) {}\n\n async execute(id: string, input: IUpdateWorkflowStateInput): Repository.Return {\n const getResult = await this.getEntryById.execute<Omit<IWorkflowStateRecord, \"id\">>(\n this.model,\n id\n );\n\n if (getResult.isFail()) {\n if (getResult.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(\n new WorkflowStateNotFoundError({\n id\n })\n );\n }\n return Result.fail(new WorkflowStatePersistenceError(getResult.error));\n }\n\n const originalRecord = this.mapper.fromCmsEntry(getResult.value);\n\n const updatedValues = this.mapper.toCmsEntry({\n ...originalRecord,\n ...input\n });\n\n try {\n const updateResult = await this.updateEntry.execute<Repository.Input>(this.model, id, {\n values: updatedValues\n });\n\n if (updateResult.isFail()) {\n return Result.fail(new WorkflowStatePersistenceError(updateResult.error));\n }\n\n const updatedRecord = this.mapper.fromCmsEntry(updateResult.value);\n return Result.ok(updatedRecord);\n } catch (error) {\n return Result.fail(new WorkflowStatePersistenceError(error as Error));\n }\n }\n}\n\nexport const UpdateWorkflowStateRepository = Repository.createImplementation({\n implementation: UpdateWorkflowStateRepositoryImpl,\n dependencies: [GetEntryByIdUseCase, UpdateEntryUseCase, WorkflowStateModel, WorkflowStateMapper]\n});\n"],"names":["UpdateWorkflowStateRepositoryImpl","getEntryById","updateEntry","model","mapper","id","input","getResult","Result","WorkflowStateNotFoundError","WorkflowStatePersistenceError","originalRecord","updatedValues","updateResult","updatedRecord","error","UpdateWorkflowStateRepository","Repository","GetEntryByIdUseCase","UpdateEntryUseCase","WorkflowStateModel","WorkflowStateMapper"],"mappings":";;;;;;AAYA,MAAMA;IACF,YACYC,YAA2C,EAC3CC,WAAyC,EACzCC,KAAmC,EACnCC,MAAqC,CAC/C;aAJUH,YAAY,GAAZA;aACAC,WAAW,GAAXA;aACAC,KAAK,GAALA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAEC,KAAgC,EAAqB;QAC3E,MAAMC,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAC7C,IAAI,CAAC,KAAK,EACVF;QAGJ,IAAIE,UAAU,MAAM,IAAI;YACpB,IAAIA,AAAyB,yBAAzBA,UAAU,KAAK,CAAC,IAAI,EACpB,OAAOC,OAAO,IAAI,CACd,IAAIC,2BAA2B;gBAC3BJ;YACJ;YAGR,OAAOG,OAAO,IAAI,CAAC,IAAIE,8BAA8BH,UAAU,KAAK;QACxE;QAEA,MAAMI,iBAAiB,IAAI,CAAC,MAAM,CAAC,YAAY,CAACJ,UAAU,KAAK;QAE/D,MAAMK,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YACzC,GAAGD,cAAc;YACjB,GAAGL,KAAK;QACZ;QAEA,IAAI;YACA,MAAMO,eAAe,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAmB,IAAI,CAAC,KAAK,EAAER,IAAI;gBAClF,QAAQO;YACZ;YAEA,IAAIC,aAAa,MAAM,IACnB,OAAOL,OAAO,IAAI,CAAC,IAAIE,8BAA8BG,aAAa,KAAK;YAG3E,MAAMC,gBAAgB,IAAI,CAAC,MAAM,CAAC,YAAY,CAACD,aAAa,KAAK;YACjE,OAAOL,OAAO,EAAE,CAACM;QACrB,EAAE,OAAOC,OAAO;YACZ,OAAOP,OAAO,IAAI,CAAC,IAAIE,8BAA8BK;QACzD;IACJ;AACJ;AAEO,MAAMC,8DAAgCC,8BAAAA,oBAA+B,CAAC;IACzE,gBAAgBjB;IAChB,cAAc;QAACkB;QAAqBC;QAAoBC;QAAoBC;KAAoB;AACpG"}
1
+ {"version":3,"file":"features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js","sources":["../../../../src/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry/index.js\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/index.js\";\nimport {\n WorkflowStateModelProvider,\n WorkflowStateMapper\n} from \"~/domain/workflowState/abstractions.js\";\nimport type { IWorkflowStateRecord } from \"~/domain/workflowState/abstractions.js\";\nimport {\n WorkflowStateNotFoundError,\n WorkflowStatePersistenceError\n} from \"~/domain/workflowState/errors.js\";\nimport { UpdateWorkflowStateRepository as Repository } from \"./abstractions.js\";\nimport type { IUpdateWorkflowStateInput } from \"./abstractions.js\";\n\nclass UpdateWorkflowStateRepositoryImpl implements Repository.Interface {\n constructor(\n private getEntryById: GetEntryByIdUseCase.Interface,\n private updateEntry: UpdateEntryUseCase.Interface,\n private modelProvider: WorkflowStateModelProvider.Interface,\n private mapper: WorkflowStateMapper.Interface\n ) {}\n\n async execute(id: string, input: IUpdateWorkflowStateInput): Repository.Return {\n const model = await this.modelProvider.get();\n const getResult = await this.getEntryById.execute<Omit<IWorkflowStateRecord, \"id\">>(\n model,\n id\n );\n\n if (getResult.isFail()) {\n if (getResult.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(\n new WorkflowStateNotFoundError({\n id\n })\n );\n }\n return Result.fail(new WorkflowStatePersistenceError(getResult.error));\n }\n\n const originalRecord = this.mapper.fromCmsEntry(getResult.value);\n\n const updatedValues = this.mapper.toCmsEntry({\n ...originalRecord,\n ...input\n });\n\n try {\n const updateResult = await this.updateEntry.execute<Repository.Input>(model, id, {\n values: updatedValues\n });\n\n if (updateResult.isFail()) {\n return Result.fail(new WorkflowStatePersistenceError(updateResult.error));\n }\n\n const updatedRecord = this.mapper.fromCmsEntry(updateResult.value);\n return Result.ok(updatedRecord);\n } catch (error) {\n return Result.fail(new WorkflowStatePersistenceError(error as Error));\n }\n }\n}\n\nexport const UpdateWorkflowStateRepository = Repository.createImplementation({\n implementation: UpdateWorkflowStateRepositoryImpl,\n dependencies: [\n GetEntryByIdUseCase,\n UpdateEntryUseCase,\n WorkflowStateModelProvider,\n WorkflowStateMapper\n ]\n});\n"],"names":["UpdateWorkflowStateRepositoryImpl","getEntryById","updateEntry","modelProvider","mapper","id","input","model","getResult","Result","WorkflowStateNotFoundError","WorkflowStatePersistenceError","originalRecord","updatedValues","updateResult","updatedRecord","error","UpdateWorkflowStateRepository","Repository","GetEntryByIdUseCase","UpdateEntryUseCase","WorkflowStateModelProvider","WorkflowStateMapper"],"mappings":";;;;;;AAeA,MAAMA;IACF,YACYC,YAA2C,EAC3CC,WAAyC,EACzCC,aAAmD,EACnDC,MAAqC,CAC/C;aAJUH,YAAY,GAAZA;aACAC,WAAW,GAAXA;aACAC,aAAa,GAAbA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAEC,KAAgC,EAAqB;QAC3E,MAAMC,QAAQ,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG;QAC1C,MAAMC,YAAY,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAC7CD,OACAF;QAGJ,IAAIG,UAAU,MAAM,IAAI;YACpB,IAAIA,AAAyB,yBAAzBA,UAAU,KAAK,CAAC,IAAI,EACpB,OAAOC,OAAO,IAAI,CACd,IAAIC,2BAA2B;gBAC3BL;YACJ;YAGR,OAAOI,OAAO,IAAI,CAAC,IAAIE,8BAA8BH,UAAU,KAAK;QACxE;QAEA,MAAMI,iBAAiB,IAAI,CAAC,MAAM,CAAC,YAAY,CAACJ,UAAU,KAAK;QAE/D,MAAMK,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YACzC,GAAGD,cAAc;YACjB,GAAGN,KAAK;QACZ;QAEA,IAAI;YACA,MAAMQ,eAAe,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAmBP,OAAOF,IAAI;gBAC7E,QAAQQ;YACZ;YAEA,IAAIC,aAAa,MAAM,IACnB,OAAOL,OAAO,IAAI,CAAC,IAAIE,8BAA8BG,aAAa,KAAK;YAG3E,MAAMC,gBAAgB,IAAI,CAAC,MAAM,CAAC,YAAY,CAACD,aAAa,KAAK;YACjE,OAAOL,OAAO,EAAE,CAACM;QACrB,EAAE,OAAOC,OAAO;YACZ,OAAOP,OAAO,IAAI,CAAC,IAAIE,8BAA8BK;QACzD;IACJ;AACJ;AAEO,MAAMC,8DAAgCC,8BAAAA,oBAA+B,CAAC;IACzE,gBAAgBlB;IAChB,cAAc;QACVmB;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -34,6 +34,7 @@ class UpdateWorkflowStateUseCaseImpl {
34
34
  const updatedRecord = updateResult.value;
35
35
  const identity = this.identityContext.getIdentity();
36
36
  const teamsResult = await this.getUserTeams.execute(identity.id);
37
+ if (teamsResult.isFail()) return Result.fail(teamsResult.error);
37
38
  const teams = teamsResult.value;
38
39
  const updatedState = new WorkflowState(updatedRecord, teams, identity);
39
40
  await this.eventPublisher.publish(new WorkflowStateAfterUpdateEvent({
@@ -1 +1 @@
1
- {"version":3,"file":"features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.js","sources":["../../../../src/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserTeamsUseCase } from \"~/features/internal/GetUserTeams/index.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { GetWorkflowUseCase } from \"~/features/workflow/GetWorkflow/index.js\";\nimport { GetWorkflowStateUseCase } from \"../GetWorkflowState/index.js\";\nimport {\n UpdateWorkflowStateRepository,\n UpdateWorkflowStateUseCase as UseCase\n} from \"./abstractions.js\";\nimport { WorkflowStateAfterUpdateEvent } from \"./events.js\";\nimport { WorkflowState } from \"~/domain/workflowState/WorkflowState.js\";\nimport { WorkflowNotFoundError } from \"~/domain/workflow/errors.js\";\n\nclass UpdateWorkflowStateUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserTeams: GetUserTeamsUseCase.Interface,\n private eventPublisher: EventPublisher.Interface,\n private getWorkflow: GetWorkflowUseCase.Interface,\n private getWorkflowState: GetWorkflowStateUseCase.Interface,\n private repository: UpdateWorkflowStateRepository.Interface\n ) {}\n\n async execute(id: string, input: UseCase.Input): UseCase.Return {\n const originalStateResult = await this.getWorkflowState.execute(id);\n if (originalStateResult.isFail()) {\n return Result.fail(originalStateResult.error);\n }\n\n const originalState = originalStateResult.value;\n\n const workflowResult = await this.getWorkflow.execute({\n app: originalState.app,\n id: originalState.workflowId\n });\n\n if (workflowResult.isFail()) {\n return Result.fail(\n new WorkflowNotFoundError({\n id: originalState.workflowId,\n app: originalState.app\n })\n );\n }\n\n const updateResult = await this.repository.execute(id, input);\n if (updateResult.isFail()) {\n return Result.fail(updateResult.error);\n }\n\n const updatedRecord = updateResult.value;\n\n const identity = this.identityContext.getIdentity();\n const teamsResult = await this.getUserTeams.execute(identity.id);\n const teams = teamsResult.value;\n const updatedState = new WorkflowState(updatedRecord, teams, identity);\n\n await this.eventPublisher.publish(\n new WorkflowStateAfterUpdateEvent({\n state: updatedState,\n original: originalState\n })\n );\n\n return Result.ok(updatedState);\n }\n}\n\nexport const UpdateWorkflowStateUseCase = UseCase.createImplementation({\n implementation: UpdateWorkflowStateUseCaseImpl,\n dependencies: [\n IdentityContext,\n GetUserTeamsUseCase,\n EventPublisher,\n GetWorkflowUseCase,\n GetWorkflowStateUseCase,\n UpdateWorkflowStateRepository\n ]\n});\n"],"names":["UpdateWorkflowStateUseCaseImpl","identityContext","getUserTeams","eventPublisher","getWorkflow","getWorkflowState","repository","id","input","originalStateResult","Result","originalState","workflowResult","WorkflowNotFoundError","updateResult","updatedRecord","identity","teamsResult","teams","updatedState","WorkflowState","WorkflowStateAfterUpdateEvent","UpdateWorkflowStateUseCase","UseCase","IdentityContext","GetUserTeamsUseCase","EventPublisher","GetWorkflowUseCase","GetWorkflowStateUseCase","UpdateWorkflowStateRepository"],"mappings":";;;;;;;;;;AAcA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,YAA2C,EAC3CC,cAAwC,EACxCC,WAAyC,EACzCC,gBAAmD,EACnDC,UAAmD,CAC7D;aANUL,eAAe,GAAfA;aACAC,YAAY,GAAZA;aACAC,cAAc,GAAdA;aACAC,WAAW,GAAXA;aACAC,gBAAgB,GAAhBA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAEC,KAAoB,EAAkB;QAC5D,MAAMC,sBAAsB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAACF;QAChE,IAAIE,oBAAoB,MAAM,IAC1B,OAAOC,OAAO,IAAI,CAACD,oBAAoB,KAAK;QAGhD,MAAME,gBAAgBF,oBAAoB,KAAK;QAE/C,MAAMG,iBAAiB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAClD,KAAKD,cAAc,GAAG;YACtB,IAAIA,cAAc,UAAU;QAChC;QAEA,IAAIC,eAAe,MAAM,IACrB,OAAOF,OAAO,IAAI,CACd,IAAIG,sBAAsB;YACtB,IAAIF,cAAc,UAAU;YAC5B,KAAKA,cAAc,GAAG;QAC1B;QAIR,MAAMG,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACP,IAAIC;QACvD,IAAIM,aAAa,MAAM,IACnB,OAAOJ,OAAO,IAAI,CAACI,aAAa,KAAK;QAGzC,MAAMC,gBAAgBD,aAAa,KAAK;QAExC,MAAME,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,MAAMC,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAACD,SAAS,EAAE;QAC/D,MAAME,QAAQD,YAAY,KAAK;QAC/B,MAAME,eAAe,IAAIC,cAAcL,eAAeG,OAAOF;QAE7D,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIK,8BAA8B;YAC9B,OAAOF;YACP,UAAUR;QACd;QAGJ,OAAOD,OAAO,EAAE,CAACS;IACrB;AACJ;AAEO,MAAMG,wDAA6BC,2BAAAA,oBAA4B,CAAC;IACnE,gBAAgBvB;IAChB,cAAc;QACVwB;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.js","sources":["../../../../src/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetUserTeamsUseCase } from \"~/features/internal/GetUserTeams/index.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { GetWorkflowUseCase } from \"~/features/workflow/GetWorkflow/index.js\";\nimport { GetWorkflowStateUseCase } from \"../GetWorkflowState/index.js\";\nimport {\n UpdateWorkflowStateRepository,\n UpdateWorkflowStateUseCase as UseCase\n} from \"./abstractions.js\";\nimport { WorkflowStateAfterUpdateEvent } from \"./events.js\";\nimport { WorkflowState } from \"~/domain/workflowState/WorkflowState.js\";\nimport { WorkflowNotFoundError } from \"~/domain/workflow/errors.js\";\n\nclass UpdateWorkflowStateUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private getUserTeams: GetUserTeamsUseCase.Interface,\n private eventPublisher: EventPublisher.Interface,\n private getWorkflow: GetWorkflowUseCase.Interface,\n private getWorkflowState: GetWorkflowStateUseCase.Interface,\n private repository: UpdateWorkflowStateRepository.Interface\n ) {}\n\n async execute(id: string, input: UseCase.Input): UseCase.Return {\n const originalStateResult = await this.getWorkflowState.execute(id);\n if (originalStateResult.isFail()) {\n return Result.fail(originalStateResult.error);\n }\n\n const originalState = originalStateResult.value;\n\n const workflowResult = await this.getWorkflow.execute({\n app: originalState.app,\n id: originalState.workflowId\n });\n\n if (workflowResult.isFail()) {\n return Result.fail(\n new WorkflowNotFoundError({\n id: originalState.workflowId,\n app: originalState.app\n })\n );\n }\n\n const updateResult = await this.repository.execute(id, input);\n if (updateResult.isFail()) {\n return Result.fail(updateResult.error);\n }\n\n const updatedRecord = updateResult.value;\n\n const identity = this.identityContext.getIdentity();\n const teamsResult = await this.getUserTeams.execute(identity.id);\n if (teamsResult.isFail()) {\n return Result.fail(teamsResult.error);\n }\n const teams = teamsResult.value;\n const updatedState = new WorkflowState(updatedRecord, teams, identity);\n\n await this.eventPublisher.publish(\n new WorkflowStateAfterUpdateEvent({\n state: updatedState,\n original: originalState\n })\n );\n\n return Result.ok(updatedState);\n }\n}\n\nexport const UpdateWorkflowStateUseCase = UseCase.createImplementation({\n implementation: UpdateWorkflowStateUseCaseImpl,\n dependencies: [\n IdentityContext,\n GetUserTeamsUseCase,\n EventPublisher,\n GetWorkflowUseCase,\n GetWorkflowStateUseCase,\n UpdateWorkflowStateRepository\n ]\n});\n"],"names":["UpdateWorkflowStateUseCaseImpl","identityContext","getUserTeams","eventPublisher","getWorkflow","getWorkflowState","repository","id","input","originalStateResult","Result","originalState","workflowResult","WorkflowNotFoundError","updateResult","updatedRecord","identity","teamsResult","teams","updatedState","WorkflowState","WorkflowStateAfterUpdateEvent","UpdateWorkflowStateUseCase","UseCase","IdentityContext","GetUserTeamsUseCase","EventPublisher","GetWorkflowUseCase","GetWorkflowStateUseCase","UpdateWorkflowStateRepository"],"mappings":";;;;;;;;;;AAcA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,YAA2C,EAC3CC,cAAwC,EACxCC,WAAyC,EACzCC,gBAAmD,EACnDC,UAAmD,CAC7D;aANUL,eAAe,GAAfA;aACAC,YAAY,GAAZA;aACAC,cAAc,GAAdA;aACAC,WAAW,GAAXA;aACAC,gBAAgB,GAAhBA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAEC,KAAoB,EAAkB;QAC5D,MAAMC,sBAAsB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAACF;QAChE,IAAIE,oBAAoB,MAAM,IAC1B,OAAOC,OAAO,IAAI,CAACD,oBAAoB,KAAK;QAGhD,MAAME,gBAAgBF,oBAAoB,KAAK;QAE/C,MAAMG,iBAAiB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAClD,KAAKD,cAAc,GAAG;YACtB,IAAIA,cAAc,UAAU;QAChC;QAEA,IAAIC,eAAe,MAAM,IACrB,OAAOF,OAAO,IAAI,CACd,IAAIG,sBAAsB;YACtB,IAAIF,cAAc,UAAU;YAC5B,KAAKA,cAAc,GAAG;QAC1B;QAIR,MAAMG,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACP,IAAIC;QACvD,IAAIM,aAAa,MAAM,IACnB,OAAOJ,OAAO,IAAI,CAACI,aAAa,KAAK;QAGzC,MAAMC,gBAAgBD,aAAa,KAAK;QAExC,MAAME,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,MAAMC,cAAc,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAACD,SAAS,EAAE;QAC/D,IAAIC,YAAY,MAAM,IAClB,OAAOP,OAAO,IAAI,CAACO,YAAY,KAAK;QAExC,MAAMC,QAAQD,YAAY,KAAK;QAC/B,MAAME,eAAe,IAAIC,cAAcL,eAAeG,OAAOF;QAE7D,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIK,8BAA8B;YAC9B,OAAOF;YACP,UAAUR;QACd;QAGJ,OAAOD,OAAO,EAAE,CAACS;IACrB;AACJ;AAEO,MAAMG,wDAA6BC,2BAAAA,oBAA4B,CAAC;IACnE,gBAAgBvB;IAChB,cAAc;QACVwB;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-workflows",
3
- "version": "0.0.0-unstable.0d717d18dd",
3
+ "version": "0.0.0-unstable.33e4fd9647",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -17,27 +17,24 @@
17
17
  },
18
18
  "license": "MIT",
19
19
  "dependencies": {
20
- "@webiny/api": "0.0.0-unstable.0d717d18dd",
21
- "@webiny/api-core": "0.0.0-unstable.0d717d18dd",
22
- "@webiny/api-graphql": "0.0.0-unstable.0d717d18dd",
23
- "@webiny/api-headless-cms": "0.0.0-unstable.0d717d18dd",
24
- "@webiny/api-mailer": "0.0.0-unstable.0d717d18dd",
25
- "@webiny/di": "1.0.2",
26
- "@webiny/event-handler-core": "0.0.0-unstable.0d717d18dd",
27
- "@webiny/feature": "0.0.0-unstable.0d717d18dd",
28
- "@webiny/utils": "0.0.0-unstable.0d717d18dd",
20
+ "@webiny/api": "0.0.0-unstable.33e4fd9647",
21
+ "@webiny/api-core": "0.0.0-unstable.33e4fd9647",
22
+ "@webiny/api-graphql": "0.0.0-unstable.33e4fd9647",
23
+ "@webiny/api-headless-cms": "0.0.0-unstable.33e4fd9647",
24
+ "@webiny/api-mailer": "0.0.0-unstable.33e4fd9647",
25
+ "@webiny/feature": "0.0.0-unstable.33e4fd9647",
26
+ "@webiny/utils": "0.0.0-unstable.33e4fd9647",
29
27
  "graphql": "16.14.2",
30
28
  "zod": "4.4.3"
31
29
  },
32
30
  "devDependencies": {
33
- "@webiny/api-core-testing": "0.0.0-unstable.0d717d18dd",
34
- "@webiny/api-headless-cms-testing": "0.0.0-unstable.0d717d18dd",
35
- "@webiny/build-tools": "0.0.0-unstable.0d717d18dd",
36
- "@webiny/plugins": "0.0.0-unstable.0d717d18dd",
37
- "@webiny/project-utils": "0.0.0-unstable.0d717d18dd",
31
+ "@webiny/api-core-testing": "0.0.0-unstable.33e4fd9647",
32
+ "@webiny/api-headless-cms-testing": "0.0.0-unstable.33e4fd9647",
33
+ "@webiny/build-tools": "0.0.0-unstable.33e4fd9647",
34
+ "@webiny/plugins": "0.0.0-unstable.33e4fd9647",
38
35
  "type-fest": "5.8.0",
39
36
  "typescript": "7.0.2",
40
- "vitest": "4.1.10"
37
+ "vitest": "4.1.11"
41
38
  },
42
39
  "publishConfig": {
43
40
  "access": "public"
@@ -1,19 +0,0 @@
1
- import type { Container } from "@webiny/di";
2
- import type { IRequestContextInitializer } from "@webiny/event-handler-core";
3
- import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
4
- import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
5
- import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
6
- declare class WorkflowsInitializerImpl implements IRequestContextInitializer {
7
- private container;
8
- private tenantCtx;
9
- private identityCtx;
10
- private wcp;
11
- private initialized;
12
- constructor(container: Container, tenantCtx: TenantContext.Interface, identityCtx: IdentityContext.Interface, wcp: WcpContext.Interface);
13
- init(_ctx: Record<string, any>): Promise<void>;
14
- private registerWorkflowFeatures;
15
- }
16
- export declare const WorkflowsInitializer: typeof WorkflowsInitializerImpl & {
17
- __abstraction: import("@webiny/di").Abstraction<IRequestContextInitializer>;
18
- };
19
- export {};
@@ -1,97 +0,0 @@
1
- import { RequestContainer, RequestContextInitializer } from "@webiny/event-handler-core";
2
- import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
3
- import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
4
- import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
5
- import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
6
- import { WORKFLOW_MODEL_ID } from "./domain/workflow/workflowModel.js";
7
- import { WORKFLOW_STATE_MODEL_ID } from "./domain/workflowState/stateModel.js";
8
- import { WorkflowModel } from "./domain/workflow/abstractions.js";
9
- import { WorkflowStateModel } from "./domain/workflowState/abstractions.js";
10
- import { WorkflowMapper } from "./domain/workflow/WorkflowMapper.js";
11
- import { WorkflowStateMapper } from "./domain/workflowState/WorkflowStateMapper.js";
12
- import { GetWorkflowFeature } from "./features/workflow/GetWorkflow/feature.js";
13
- import { ListWorkflowsFeature } from "./features/workflow/ListWorkflows/feature.js";
14
- import { CreateWorkflowFeature } from "./features/workflow/CreateWorkflow/feature.js";
15
- import { DeleteWorkflowFeature } from "./features/workflow/DeleteWorkflow/feature.js";
16
- import { UpdateWorkflowFeature } from "./features/workflow/UpdateWorkflow/feature.js";
17
- import { StoreWorkflowFeature } from "./features/workflow/StoreWorkflow/feature.js";
18
- import { GetWorkflowStateFeature } from "./features/workflowState/GetWorkflowState/feature.js";
19
- import { GetTargetWorkflowStateFeature } from "./features/workflowState/GetTargetWorkflowState/feature.js";
20
- import { ListOwnWorkflowStatesFeature } from "./features/workflowState/ListOwnWorkflowStates/feature.js";
21
- import { ListWorkflowStatesFeature } from "./features/workflowState/ListWorkflowStates/feature.js";
22
- import { ListRequestedWorkflowStatesFeature } from "./features/workflowState/ListRequestedWorkflowStates/feature.js";
23
- import { CreateWorkflowStateFeature } from "./features/workflowState/CreateWorkflowState/feature.js";
24
- import { UpdateWorkflowStateFeature } from "./features/workflowState/UpdateWorkflowState/feature.js";
25
- import { CancelWorkflowStateFeature } from "./features/workflowState/CancelWorkflowState/feature.js";
26
- import { DeleteWorkflowStateFeature } from "./features/workflowState/DeleteWorkflowState/feature.js";
27
- import { DeleteTargetWorkflowStateFeature } from "./features/workflowState/DeleteTargetWorkflowState/feature.js";
28
- import { StartWorkflowStateStepFeature } from "./features/workflowState/StartWorkflowStateStep/feature.js";
29
- import { ApproveWorkflowStateStepFeature } from "./features/workflowState/ApproveWorkflowStateStep/feature.js";
30
- import { RejectWorkflowStateStepFeature } from "./features/workflowState/RejectWorkflowStateStep/feature.js";
31
- import { TakeOverWorkflowStateStepFeature } from "./features/workflowState/TakeOverWorkflowStateStep/feature.js";
32
- import { GetUserTeamsFeature } from "./features/internal/GetUserTeams/feature.js";
33
- import { ListNotificationTypesFeature } from "./features/notifications/ListNotificationTypes/index.js";
34
- import { NotificationTransportFeature } from "./features/notifications/NotificationTransport/index.js";
35
- class WorkflowsInitializerImpl {
36
- constructor(container, tenantCtx, identityCtx, wcp){
37
- this.container = container;
38
- this.tenantCtx = tenantCtx;
39
- this.identityCtx = identityCtx;
40
- this.wcp = wcp;
41
- this.initialized = false;
42
- }
43
- async init(_ctx) {
44
- if (!this.initialized) {
45
- this.initialized = true;
46
- if (this.tenantCtx.getTenant() && this.wcp.canUseWorkflows()) await this.registerWorkflowFeatures();
47
- }
48
- }
49
- async registerWorkflowFeatures() {
50
- const getModel = this.container.resolve(GetModelUseCase);
51
- await this.identityCtx.withoutAuthorization(async ()=>{
52
- const [workflowModel, workflowStateModel] = await Promise.all([
53
- getModel.execute(WORKFLOW_MODEL_ID),
54
- getModel.execute(WORKFLOW_STATE_MODEL_ID)
55
- ]);
56
- this.container.registerInstance(WorkflowModel, workflowModel.value);
57
- this.container.registerInstance(WorkflowStateModel, workflowStateModel.value);
58
- });
59
- this.container.register(WorkflowMapper);
60
- this.container.register(WorkflowStateMapper);
61
- ListNotificationTypesFeature.register(this.container);
62
- NotificationTransportFeature.register(this.container);
63
- GetWorkflowFeature.register(this.container);
64
- ListWorkflowsFeature.register(this.container);
65
- CreateWorkflowFeature.register(this.container);
66
- DeleteWorkflowFeature.register(this.container);
67
- UpdateWorkflowFeature.register(this.container);
68
- StoreWorkflowFeature.register(this.container);
69
- GetUserTeamsFeature.register(this.container);
70
- GetWorkflowStateFeature.register(this.container);
71
- GetTargetWorkflowStateFeature.register(this.container);
72
- ListOwnWorkflowStatesFeature.register(this.container);
73
- ListWorkflowStatesFeature.register(this.container);
74
- ListRequestedWorkflowStatesFeature.register(this.container);
75
- CreateWorkflowStateFeature.register(this.container);
76
- UpdateWorkflowStateFeature.register(this.container);
77
- CancelWorkflowStateFeature.register(this.container);
78
- DeleteWorkflowStateFeature.register(this.container);
79
- DeleteTargetWorkflowStateFeature.register(this.container);
80
- StartWorkflowStateStepFeature.register(this.container);
81
- ApproveWorkflowStateStepFeature.register(this.container);
82
- RejectWorkflowStateStepFeature.register(this.container);
83
- TakeOverWorkflowStateStepFeature.register(this.container);
84
- }
85
- }
86
- const WorkflowsInitializer = RequestContextInitializer.createImplementation({
87
- implementation: WorkflowsInitializerImpl,
88
- dependencies: [
89
- RequestContainer,
90
- TenantContext,
91
- IdentityContext,
92
- WcpContext
93
- ]
94
- });
95
- export { WorkflowsInitializer };
96
-
97
- //# sourceMappingURL=WorkflowsInitializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WorkflowsInitializer.js","sources":["../src/WorkflowsInitializer.ts"],"sourcesContent":["import type { Container } from \"@webiny/di\";\nimport { RequestContextInitializer } from \"@webiny/event-handler-core\";\nimport type { IRequestContextInitializer } from \"@webiny/event-handler-core\";\nimport { RequestContainer } from \"@webiny/event-handler-core\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { WORKFLOW_MODEL_ID } from \"./domain/workflow/workflowModel.js\";\nimport { WORKFLOW_STATE_MODEL_ID } from \"./domain/workflowState/stateModel.js\";\nimport { WorkflowModel } from \"./domain/workflow/abstractions.js\";\nimport { WorkflowStateModel } from \"./domain/workflowState/abstractions.js\";\nimport { WorkflowMapper } from \"~/domain/workflow/WorkflowMapper.js\";\nimport { WorkflowStateMapper } from \"~/domain/workflowState/WorkflowStateMapper.js\";\nimport { GetWorkflowFeature } from \"~/features/workflow/GetWorkflow/feature.js\";\nimport { ListWorkflowsFeature } from \"~/features/workflow/ListWorkflows/feature.js\";\nimport { CreateWorkflowFeature } from \"~/features/workflow/CreateWorkflow/feature.js\";\nimport { DeleteWorkflowFeature } from \"~/features/workflow/DeleteWorkflow/feature.js\";\nimport { UpdateWorkflowFeature } from \"~/features/workflow/UpdateWorkflow/feature.js\";\nimport { StoreWorkflowFeature } from \"~/features/workflow/StoreWorkflow/feature.js\";\nimport { GetWorkflowStateFeature } from \"~/features/workflowState/GetWorkflowState/feature.js\";\nimport { GetTargetWorkflowStateFeature } from \"~/features/workflowState/GetTargetWorkflowState/feature.js\";\nimport { ListOwnWorkflowStatesFeature } from \"~/features/workflowState/ListOwnWorkflowStates/feature.js\";\nimport { ListWorkflowStatesFeature } from \"~/features/workflowState/ListWorkflowStates/feature.js\";\nimport { ListRequestedWorkflowStatesFeature } from \"~/features/workflowState/ListRequestedWorkflowStates/feature.js\";\nimport { CreateWorkflowStateFeature } from \"~/features/workflowState/CreateWorkflowState/feature.js\";\nimport { UpdateWorkflowStateFeature } from \"~/features/workflowState/UpdateWorkflowState/feature.js\";\nimport { CancelWorkflowStateFeature } from \"~/features/workflowState/CancelWorkflowState/feature.js\";\nimport { DeleteWorkflowStateFeature } from \"~/features/workflowState/DeleteWorkflowState/feature.js\";\nimport { DeleteTargetWorkflowStateFeature } from \"~/features/workflowState/DeleteTargetWorkflowState/feature.js\";\nimport { StartWorkflowStateStepFeature } from \"~/features/workflowState/StartWorkflowStateStep/feature.js\";\nimport { ApproveWorkflowStateStepFeature } from \"~/features/workflowState/ApproveWorkflowStateStep/feature.js\";\nimport { RejectWorkflowStateStepFeature } from \"~/features/workflowState/RejectWorkflowStateStep/feature.js\";\nimport { TakeOverWorkflowStateStepFeature } from \"~/features/workflowState/TakeOverWorkflowStateStep/feature.js\";\nimport { GetUserTeamsFeature } from \"~/features/internal/GetUserTeams/feature.js\";\nimport { ListNotificationTypesFeature } from \"~/features/notifications/ListNotificationTypes/index.js\";\nimport { NotificationTransportFeature } from \"./features/notifications/NotificationTransport/index.js\";\n\n// A request initializer — it contributes no schema content (the static schema is registered via\n// WorkflowsSchemaFactory). It runs after context enhancers and before resolvers, making it the\n// right hook for the async CMS model fetch and lazy feature registrations resolvers depend on.\nclass WorkflowsInitializerImpl implements IRequestContextInitializer {\n private initialized = false;\n\n constructor(\n private container: Container,\n private tenantCtx: TenantContext.Interface,\n private identityCtx: IdentityContext.Interface,\n private wcp: WcpContext.Interface\n ) {}\n\n async init(_ctx: Record<string, any>): Promise<void> {\n if (!this.initialized) {\n this.initialized = true;\n\n if (this.tenantCtx.getTenant() && this.wcp.canUseWorkflows()) {\n await this.registerWorkflowFeatures();\n }\n }\n }\n\n private async registerWorkflowFeatures(): Promise<void> {\n // Fetch and register CMS models — resolved lazily here because CmsContext is only\n // registered after HeadlessCmsInitializerImpl.enhance() runs (before this runs).\n const getModel = this.container.resolve(GetModelUseCase);\n await this.identityCtx.withoutAuthorization(async () => {\n const [workflowModel, workflowStateModel] = await Promise.all([\n getModel.execute(WORKFLOW_MODEL_ID),\n getModel.execute(WORKFLOW_STATE_MODEL_ID)\n ]);\n\n this.container.registerInstance(WorkflowModel, workflowModel.value);\n this.container.registerInstance(WorkflowStateModel, workflowStateModel.value);\n });\n\n // Register mappers\n this.container.register(WorkflowMapper);\n this.container.register(WorkflowStateMapper);\n\n // Register notification features\n ListNotificationTypesFeature.register(this.container);\n NotificationTransportFeature.register(this.container);\n\n // Register workflow features\n GetWorkflowFeature.register(this.container);\n ListWorkflowsFeature.register(this.container);\n CreateWorkflowFeature.register(this.container);\n DeleteWorkflowFeature.register(this.container);\n UpdateWorkflowFeature.register(this.container);\n StoreWorkflowFeature.register(this.container);\n\n // Register internal features\n GetUserTeamsFeature.register(this.container);\n\n // Register workflow state features\n GetWorkflowStateFeature.register(this.container);\n GetTargetWorkflowStateFeature.register(this.container);\n ListOwnWorkflowStatesFeature.register(this.container);\n ListWorkflowStatesFeature.register(this.container);\n ListRequestedWorkflowStatesFeature.register(this.container);\n CreateWorkflowStateFeature.register(this.container);\n UpdateWorkflowStateFeature.register(this.container);\n CancelWorkflowStateFeature.register(this.container);\n DeleteWorkflowStateFeature.register(this.container);\n DeleteTargetWorkflowStateFeature.register(this.container);\n StartWorkflowStateStepFeature.register(this.container);\n ApproveWorkflowStateStepFeature.register(this.container);\n RejectWorkflowStateStepFeature.register(this.container);\n TakeOverWorkflowStateStepFeature.register(this.container);\n }\n}\n\nexport const WorkflowsInitializer = RequestContextInitializer.createImplementation({\n implementation: WorkflowsInitializerImpl,\n dependencies: [RequestContainer, TenantContext, IdentityContext, WcpContext]\n});\n"],"names":["WorkflowsInitializerImpl","container","tenantCtx","identityCtx","wcp","_ctx","getModel","GetModelUseCase","workflowModel","workflowStateModel","Promise","WORKFLOW_MODEL_ID","WORKFLOW_STATE_MODEL_ID","WorkflowModel","WorkflowStateModel","WorkflowMapper","WorkflowStateMapper","ListNotificationTypesFeature","NotificationTransportFeature","GetWorkflowFeature","ListWorkflowsFeature","CreateWorkflowFeature","DeleteWorkflowFeature","UpdateWorkflowFeature","StoreWorkflowFeature","GetUserTeamsFeature","GetWorkflowStateFeature","GetTargetWorkflowStateFeature","ListOwnWorkflowStatesFeature","ListWorkflowStatesFeature","ListRequestedWorkflowStatesFeature","CreateWorkflowStateFeature","UpdateWorkflowStateFeature","CancelWorkflowStateFeature","DeleteWorkflowStateFeature","DeleteTargetWorkflowStateFeature","StartWorkflowStateStepFeature","ApproveWorkflowStateStepFeature","RejectWorkflowStateStepFeature","TakeOverWorkflowStateStepFeature","WorkflowsInitializer","RequestContextInitializer","RequestContainer","TenantContext","IdentityContext","WcpContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAMA;IAGF,YACYC,SAAoB,EACpBC,SAAkC,EAClCC,WAAsC,EACtCC,GAAyB,CACnC;aAJUH,SAAS,GAATA;aACAC,SAAS,GAATA;aACAC,WAAW,GAAXA;aACAC,GAAG,GAAHA;aANJ,WAAW,GAAG;IAOnB;IAEH,MAAM,KAAKC,IAAyB,EAAiB;QACjD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG;YAEnB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,IACtD,MAAM,IAAI,CAAC,wBAAwB;QAE3C;IACJ;IAEA,MAAc,2BAA0C;QAGpD,MAAMC,WAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAACC;QACxC,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YACxC,MAAM,CAACC,eAAeC,mBAAmB,GAAG,MAAMC,QAAQ,GAAG,CAAC;gBAC1DJ,SAAS,OAAO,CAACK;gBACjBL,SAAS,OAAO,CAACM;aACpB;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAACC,eAAeL,cAAc,KAAK;YAClE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAACM,oBAAoBL,mBAAmB,KAAK;QAChF;QAGA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAACM;QACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAACC;QAGxBC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACpDC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAGpDC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC1CC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC5CC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC7CC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC7CC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC7CC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAG5CC,oBAAoB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAG3CC,wBAAwB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC/CC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACrDC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACpDC,0BAA0B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACjDC,mCAAmC,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC1DC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAClDC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAClDC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAClDC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAClDC,iCAAiC,QAAQ,CAAC,IAAI,CAAC,SAAS;QACxDC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACrDC,gCAAgC,QAAQ,CAAC,IAAI,CAAC,SAAS;QACvDC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACtDC,iCAAiC,QAAQ,CAAC,IAAI,CAAC,SAAS;IAC5D;AACJ;AAEO,MAAMC,uBAAuBC,0BAA0B,oBAAoB,CAAC;IAC/E,gBAAgBzC;IAChB,cAAc;QAAC0C;QAAkBC;QAAeC;QAAiBC;KAAW;AAChF"}