@webiny/api-record-locking 0.0.0-unstable.6844005670 → 0.0.0-unstable.7be00a75a9

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 (170) hide show
  1. package/domain/LockRecord.js +63 -70
  2. package/domain/LockRecord.js.map +1 -1
  3. package/domain/RecordLockingModel.js +26 -23
  4. package/domain/RecordLockingModel.js.map +1 -1
  5. package/domain/abstractions.js +3 -7
  6. package/domain/abstractions.js.map +1 -1
  7. package/domain/calculateExpiresOn.js +5 -6
  8. package/domain/calculateExpiresOn.js.map +1 -1
  9. package/domain/errors.js +71 -81
  10. package/domain/errors.js.map +1 -1
  11. package/domain/index.js +0 -2
  12. package/domain/types.js +6 -9
  13. package/domain/types.js.map +1 -1
  14. package/features/GetLockRecord/GetLockRecordRepository.js +27 -24
  15. package/features/GetLockRecord/GetLockRecordRepository.js.map +1 -1
  16. package/features/GetLockRecord/GetLockRecordUseCase.js +13 -10
  17. package/features/GetLockRecord/GetLockRecordUseCase.js.map +1 -1
  18. package/features/GetLockRecord/abstractions.js +3 -14
  19. package/features/GetLockRecord/abstractions.js.map +1 -1
  20. package/features/GetLockRecord/feature.d.ts +4 -1
  21. package/features/GetLockRecord/feature.js +7 -6
  22. package/features/GetLockRecord/feature.js.map +1 -1
  23. package/features/GetLockRecord/index.js +0 -2
  24. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +1 -1
  25. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +20 -29
  26. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -1
  27. package/features/GetLockedEntryLockRecord/abstractions.js +2 -10
  28. package/features/GetLockedEntryLockRecord/abstractions.js.map +1 -1
  29. package/features/GetLockedEntryLockRecord/feature.d.ts +4 -1
  30. package/features/GetLockedEntryLockRecord/feature.js +6 -5
  31. package/features/GetLockedEntryLockRecord/feature.js.map +1 -1
  32. package/features/GetLockedEntryLockRecord/index.js +0 -2
  33. package/features/IsEntryLocked/IsEntryLockedUseCase.d.ts +1 -1
  34. package/features/IsEntryLocked/IsEntryLockedUseCase.js +23 -29
  35. package/features/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -1
  36. package/features/IsEntryLocked/abstractions.js +2 -9
  37. package/features/IsEntryLocked/abstractions.js.map +1 -1
  38. package/features/IsEntryLocked/feature.d.ts +4 -1
  39. package/features/IsEntryLocked/feature.js +6 -5
  40. package/features/IsEntryLocked/feature.js.map +1 -1
  41. package/features/IsEntryLocked/index.js +0 -2
  42. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +1 -1
  43. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js +33 -33
  44. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -1
  45. package/features/KickOutCurrentUser/abstractions.js +2 -6
  46. package/features/KickOutCurrentUser/abstractions.js.map +1 -1
  47. package/features/KickOutCurrentUser/feature.d.ts +4 -1
  48. package/features/KickOutCurrentUser/feature.js +6 -5
  49. package/features/KickOutCurrentUser/feature.js.map +1 -1
  50. package/features/KickOutCurrentUser/index.js +0 -2
  51. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js +31 -31
  52. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js.map +1 -1
  53. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js +13 -10
  54. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js.map +1 -1
  55. package/features/ListAllLockRecords/abstractions.js +3 -14
  56. package/features/ListAllLockRecords/abstractions.js.map +1 -1
  57. package/features/ListAllLockRecords/feature.d.ts +4 -1
  58. package/features/ListAllLockRecords/feature.js +7 -6
  59. package/features/ListAllLockRecords/feature.js.map +1 -1
  60. package/features/ListAllLockRecords/index.js +0 -2
  61. package/features/ListLockRecords/ListLockRecordsRepository.js +31 -31
  62. package/features/ListLockRecords/ListLockRecordsRepository.js.map +1 -1
  63. package/features/ListLockRecords/ListLockRecordsUseCase.d.ts +1 -1
  64. package/features/ListLockRecords/ListLockRecordsUseCase.js +27 -24
  65. package/features/ListLockRecords/ListLockRecordsUseCase.js.map +1 -1
  66. package/features/ListLockRecords/abstractions.js +3 -14
  67. package/features/ListLockRecords/abstractions.js.map +1 -1
  68. package/features/ListLockRecords/feature.d.ts +4 -1
  69. package/features/ListLockRecords/feature.js +7 -6
  70. package/features/ListLockRecords/feature.js.map +1 -1
  71. package/features/ListLockRecords/index.js +0 -2
  72. package/features/LockEntry/LockEntryEventsDecorator.d.ts +1 -1
  73. package/features/LockEntry/LockEntryEventsDecorator.js +32 -32
  74. package/features/LockEntry/LockEntryEventsDecorator.js.map +1 -1
  75. package/features/LockEntry/LockEntryRepository.js +33 -30
  76. package/features/LockEntry/LockEntryRepository.js.map +1 -1
  77. package/features/LockEntry/LockEntryUseCase.js +21 -26
  78. package/features/LockEntry/LockEntryUseCase.js.map +1 -1
  79. package/features/LockEntry/abstractions.js +3 -14
  80. package/features/LockEntry/abstractions.js.map +1 -1
  81. package/features/LockEntry/events.d.ts +8 -8
  82. package/features/LockEntry/events.js +26 -34
  83. package/features/LockEntry/events.js.map +1 -1
  84. package/features/LockEntry/feature.d.ts +4 -1
  85. package/features/LockEntry/feature.js +8 -7
  86. package/features/LockEntry/feature.js.map +1 -1
  87. package/features/LockEntry/index.js +0 -2
  88. package/features/RecordLockingFeature.d.ts +4 -1
  89. package/features/RecordLockingFeature.js +19 -21
  90. package/features/RecordLockingFeature.js.map +1 -1
  91. package/features/UnlockEntry/UnlockEntryEventsDecorator.d.ts +1 -1
  92. package/features/UnlockEntry/UnlockEntryEventsDecorator.js +33 -33
  93. package/features/UnlockEntry/UnlockEntryEventsDecorator.js.map +1 -1
  94. package/features/UnlockEntry/UnlockEntryRepository.js +29 -27
  95. package/features/UnlockEntry/UnlockEntryRepository.js.map +1 -1
  96. package/features/UnlockEntry/UnlockEntryUseCase.d.ts +1 -1
  97. package/features/UnlockEntry/UnlockEntryUseCase.js +54 -70
  98. package/features/UnlockEntry/UnlockEntryUseCase.js.map +1 -1
  99. package/features/UnlockEntry/abstractions.js +3 -14
  100. package/features/UnlockEntry/abstractions.js.map +1 -1
  101. package/features/UnlockEntry/events.d.ts +8 -8
  102. package/features/UnlockEntry/events.js +26 -34
  103. package/features/UnlockEntry/events.js.map +1 -1
  104. package/features/UnlockEntry/feature.d.ts +4 -1
  105. package/features/UnlockEntry/feature.js +8 -7
  106. package/features/UnlockEntry/feature.js.map +1 -1
  107. package/features/UnlockEntry/hasFullAccessPermission.d.ts +1 -1
  108. package/features/UnlockEntry/hasFullAccessPermission.js +6 -7
  109. package/features/UnlockEntry/hasFullAccessPermission.js.map +1 -1
  110. package/features/UnlockEntry/index.js +0 -2
  111. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.d.ts +1 -1
  112. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js +32 -32
  113. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js.map +1 -1
  114. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.d.ts +1 -1
  115. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js +32 -31
  116. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js.map +1 -1
  117. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.d.ts +1 -1
  118. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js +63 -80
  119. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js.map +1 -1
  120. package/features/UnlockEntryRequest/abstractions.js +3 -14
  121. package/features/UnlockEntryRequest/abstractions.js.map +1 -1
  122. package/features/UnlockEntryRequest/events.d.ts +8 -8
  123. package/features/UnlockEntryRequest/events.js +26 -34
  124. package/features/UnlockEntryRequest/events.js.map +1 -1
  125. package/features/UnlockEntryRequest/feature.d.ts +4 -1
  126. package/features/UnlockEntryRequest/feature.js +8 -7
  127. package/features/UnlockEntryRequest/feature.js.map +1 -1
  128. package/features/UnlockEntryRequest/index.js +0 -2
  129. package/features/UpdateEntryLock/UpdateEntryLockRepository.d.ts +1 -1
  130. package/features/UpdateEntryLock/UpdateEntryLockRepository.js +46 -49
  131. package/features/UpdateEntryLock/UpdateEntryLockRepository.js.map +1 -1
  132. package/features/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +1 -1
  133. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js +41 -52
  134. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -1
  135. package/features/UpdateEntryLock/abstractions.js +3 -14
  136. package/features/UpdateEntryLock/abstractions.js.map +1 -1
  137. package/features/UpdateEntryLock/feature.d.ts +4 -1
  138. package/features/UpdateEntryLock/feature.js +7 -6
  139. package/features/UpdateEntryLock/feature.js.map +1 -1
  140. package/features/UpdateEntryLock/index.js +0 -2
  141. package/graphql/checkPermissions.js +6 -10
  142. package/graphql/checkPermissions.js.map +1 -1
  143. package/graphql/resolve.js +15 -17
  144. package/graphql/resolve.js.map +1 -1
  145. package/graphql/schema.d.ts +2 -2
  146. package/graphql/schema.js +147 -168
  147. package/graphql/schema.js.map +1 -1
  148. package/index.d.ts +1 -1
  149. package/index.js +46 -48
  150. package/index.js.map +1 -1
  151. package/package.json +27 -22
  152. package/types.js +6 -9
  153. package/types.js.map +1 -1
  154. package/utils/convertWhereCondition.js +20 -32
  155. package/utils/convertWhereCondition.js.map +1 -1
  156. package/utils/getTimeout.js +8 -15
  157. package/utils/getTimeout.js.map +1 -1
  158. package/utils/lockRecordDatabaseId.js +6 -11
  159. package/utils/lockRecordDatabaseId.js.map +1 -1
  160. package/domain/index.js.map +0 -1
  161. package/features/GetLockRecord/index.js.map +0 -1
  162. package/features/GetLockedEntryLockRecord/index.js.map +0 -1
  163. package/features/IsEntryLocked/index.js.map +0 -1
  164. package/features/KickOutCurrentUser/index.js.map +0 -1
  165. package/features/ListAllLockRecords/index.js.map +0 -1
  166. package/features/ListLockRecords/index.js.map +0 -1
  167. package/features/LockEntry/index.js.map +0 -1
  168. package/features/UnlockEntry/index.js.map +0 -1
  169. package/features/UnlockEntryRequest/index.js.map +0 -1
  170. package/features/UpdateEntryLock/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","ListLockRecordsUseCase","ListLockRecordsRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport type { LockRecordPersistenceError } from \"~/domain/errors.js\";\nimport type { CmsEntryListParams, CmsEntryMeta } from \"@webiny/api-headless-cms/types\";\nimport type {\n DateStringInterfaceGenerator,\n IdentityInterfaceGenerator,\n IdInterfaceGenerator\n} from \"@webiny/api\";\n\n// Input/Output types\nexport interface IListLockRecordsWhere\n extends IdInterfaceGenerator<\"id\">,\n IdentityInterfaceGenerator<\"lockedBy\">,\n IdentityInterfaceGenerator<\"createdBy\">,\n DateStringInterfaceGenerator<\"lockedOn\">,\n DateStringInterfaceGenerator<\"updatedOn\">,\n DateStringInterfaceGenerator<\"savedOn\">,\n DateStringInterfaceGenerator<\"expiresOn\"> {}\n\nexport interface ListLockRecordsInput extends Pick<CmsEntryListParams, \"limit\" | \"sort\" | \"after\"> {\n where?: IListLockRecordsWhere;\n}\n\nexport interface ListLockRecordsOutput {\n items: ILockRecord[];\n meta: CmsEntryMeta;\n}\n\n/**\n * ListLockRecords Use Case - Lists active lock records (filters out expired, excludes current user)\n */\nexport interface IListLockRecordsUseCase {\n execute(input?: ListLockRecordsInput): Promise<Result<ListLockRecordsOutput, UseCaseError>>;\n}\n\nexport interface IListLockRecordsUseCaseErrors {\n persistence: LockRecordPersistenceError;\n}\n\ntype UseCaseError = IListLockRecordsUseCaseErrors[keyof IListLockRecordsUseCaseErrors];\n\nexport const ListLockRecordsUseCase =\n createAbstraction<IListLockRecordsUseCase>(\"ListLockRecordsUseCase\");\n\nexport namespace ListLockRecordsUseCase {\n export type Interface = IListLockRecordsUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * ListLockRecordsRepository - Fetches lock records from storage with filtering\n */\nexport interface IListLockRecordsRepository {\n execute(input?: ListLockRecordsInput): Promise<Result<ListLockRecordsOutput, RepositoryError>>;\n}\n\nexport interface IListLockRecordsRepositoryErrors {\n persistence: LockRecordPersistenceError;\n}\n\ntype RepositoryError = IListLockRecordsRepositoryErrors[keyof IListLockRecordsRepositoryErrors];\n\nexport const ListLockRecordsRepository = createAbstraction<IListLockRecordsRepository>(\n \"ListLockRecordsRepository\"\n);\n\nexport namespace ListLockRecordsRepository {\n export type Interface = IListLockRecordsRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;;AAU/D;;AAmBA;AACA;AACA;;AAWA,OAAO,MAAMC,sBAAsB,GAC/BD,iBAAiB,CAA0B,wBAAwB,CAAC;;AAOxE;AACA;AACA;;AAWA,OAAO,MAAME,yBAAyB,GAAGF,iBAAiB,CACtD,2BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/ListLockRecords/abstractions.js","sources":["../../../src/features/ListLockRecords/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport type { LockRecordPersistenceError } from \"~/domain/errors.js\";\nimport type { CmsEntryListParams, CmsEntryMeta } from \"@webiny/api-headless-cms/types\";\nimport type {\n DateStringInterfaceGenerator,\n IdentityInterfaceGenerator,\n IdInterfaceGenerator\n} from \"@webiny/api\";\n\n// Input/Output types\nexport interface IListLockRecordsWhere\n extends\n IdInterfaceGenerator<\"id\">,\n IdentityInterfaceGenerator<\"lockedBy\">,\n IdentityInterfaceGenerator<\"createdBy\">,\n DateStringInterfaceGenerator<\"lockedOn\">,\n DateStringInterfaceGenerator<\"updatedOn\">,\n DateStringInterfaceGenerator<\"savedOn\">,\n DateStringInterfaceGenerator<\"expiresOn\"> {}\n\nexport interface ListLockRecordsInput extends Pick<CmsEntryListParams, \"limit\" | \"sort\" | \"after\"> {\n where?: IListLockRecordsWhere;\n}\n\nexport interface ListLockRecordsOutput {\n items: ILockRecord[];\n meta: CmsEntryMeta;\n}\n\n/**\n * ListLockRecords Use Case - Lists active lock records (filters out expired, excludes current user)\n */\nexport interface IListLockRecordsUseCase {\n execute(input?: ListLockRecordsInput): Promise<Result<ListLockRecordsOutput, UseCaseError>>;\n}\n\nexport interface IListLockRecordsUseCaseErrors {\n persistence: LockRecordPersistenceError;\n}\n\ntype UseCaseError = IListLockRecordsUseCaseErrors[keyof IListLockRecordsUseCaseErrors];\n\nexport const ListLockRecordsUseCase =\n createAbstraction<IListLockRecordsUseCase>(\"ListLockRecordsUseCase\");\n\nexport namespace ListLockRecordsUseCase {\n export type Interface = IListLockRecordsUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * ListLockRecordsRepository - Fetches lock records from storage with filtering\n */\nexport interface IListLockRecordsRepository {\n execute(input?: ListLockRecordsInput): Promise<Result<ListLockRecordsOutput, RepositoryError>>;\n}\n\nexport interface IListLockRecordsRepositoryErrors {\n persistence: LockRecordPersistenceError;\n}\n\ntype RepositoryError = IListLockRecordsRepositoryErrors[keyof IListLockRecordsRepositoryErrors];\n\nexport const ListLockRecordsRepository = createAbstraction<IListLockRecordsRepository>(\n \"ListLockRecordsRepository\"\n);\n\nexport namespace ListLockRecordsRepository {\n export type Interface = IListLockRecordsRepository;\n export type Error = RepositoryError;\n}\n"],"names":["ListLockRecordsUseCase","createAbstraction","ListLockRecordsRepository"],"mappings":";AA2CO,MAAMA,yBACTC,kBAA2C;AAoBxC,MAAMC,4BAA4BD,kBACrC"}
@@ -1 +1,4 @@
1
- export declare const ListLockRecordsFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const ListLockRecordsFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -1,12 +1,13 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { ListLockRecordsUseCase } from "./ListLockRecordsUseCase.js";
3
3
  import { ListLockRecordsRepository } from "./ListLockRecordsRepository.js";
4
- export const ListLockRecordsFeature = createFeature({
5
- name: "ListLockRecords",
6
- register(container) {
7
- container.register(ListLockRecordsUseCase);
8
- container.register(ListLockRecordsRepository).inSingletonScope();
9
- }
4
+ const ListLockRecordsFeature = createFeature({
5
+ name: "ListLockRecords",
6
+ register (container) {
7
+ container.register(ListLockRecordsUseCase);
8
+ container.register(ListLockRecordsRepository).inSingletonScope();
9
+ }
10
10
  });
11
+ export { ListLockRecordsFeature };
11
12
 
12
13
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","ListLockRecordsUseCase","ListLockRecordsRepository","ListLockRecordsFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ListLockRecordsUseCase } from \"./ListLockRecordsUseCase.js\";\nimport { ListLockRecordsRepository } from \"./ListLockRecordsRepository.js\";\n\nexport const ListLockRecordsFeature = createFeature({\n name: \"ListLockRecords\",\n register(container) {\n container.register(ListLockRecordsUseCase);\n container.register(ListLockRecordsRepository).inSingletonScope();\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAElC,OAAO,MAAMC,sBAAsB,GAAGH,aAAa,CAAC;EAChDI,IAAI,EAAE,iBAAiB;EACvBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACJ,sBAAsB,CAAC;IAC1CK,SAAS,CAACD,QAAQ,CAACH,yBAAyB,CAAC,CAACK,gBAAgB,CAAC,CAAC;EACpE;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/ListLockRecords/feature.js","sources":["../../../src/features/ListLockRecords/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ListLockRecordsUseCase } from \"./ListLockRecordsUseCase.js\";\nimport { ListLockRecordsRepository } from \"./ListLockRecordsRepository.js\";\n\nexport const ListLockRecordsFeature = createFeature({\n name: \"ListLockRecords\",\n register(container) {\n container.register(ListLockRecordsUseCase);\n container.register(ListLockRecordsRepository).inSingletonScope();\n }\n});\n"],"names":["ListLockRecordsFeature","createFeature","container","ListLockRecordsUseCase","ListLockRecordsRepository"],"mappings":";;;AAIO,MAAMA,yBAAyBC,cAAc;IAChD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,2BAA2B,gBAAgB;IAClE;AACJ"}
@@ -1,3 +1 @@
1
1
  export * from "./abstractions.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -1,5 +1,5 @@
1
1
  import { type LockEntryInput, LockEntryUseCase as UseCaseAbstraction, LockEntryUseCase } from "./abstractions.js";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { ILockRecord } from "../../domain/index.js";
4
4
  import { Result } from "@webiny/feature/api/index.js";
5
5
  declare class LockEntryErrorDecoratorImpl implements LockEntryUseCase.Interface {
@@ -1,40 +1,40 @@
1
1
  import { LockEntryUseCase } from "./abstractions.js";
2
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
2
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import { EntryAfterLockEvent, EntryBeforeLockEvent, EntryLockErrorEvent } from "./events.js";
4
4
  class LockEntryErrorDecoratorImpl {
5
- constructor(eventPublisher, decoratee) {
6
- this.eventPublisher = eventPublisher;
7
- this.decoratee = decoratee;
8
- }
9
- async execute(input) {
10
- // Publish before event
11
- await this.eventPublisher.publish(new EntryBeforeLockEvent({
12
- id: input.id,
13
- type: input.type
14
- }));
15
- const result = await this.decoratee.execute(input);
16
- if (result.isFail()) {
17
- const error = result.error;
18
- await this.eventPublisher.publish(new EntryLockErrorEvent({
19
- id: input.id,
20
- type: input.type,
21
- error
22
- }));
23
- return result;
5
+ constructor(eventPublisher, decoratee){
6
+ this.eventPublisher = eventPublisher;
7
+ this.decoratee = decoratee;
8
+ }
9
+ async execute(input) {
10
+ await this.eventPublisher.publish(new EntryBeforeLockEvent({
11
+ id: input.id,
12
+ type: input.type
13
+ }));
14
+ const result = await this.decoratee.execute(input);
15
+ if (result.isFail()) {
16
+ const error = result.error;
17
+ await this.eventPublisher.publish(new EntryLockErrorEvent({
18
+ id: input.id,
19
+ type: input.type,
20
+ error
21
+ }));
22
+ return result;
23
+ }
24
+ await this.eventPublisher.publish(new EntryAfterLockEvent({
25
+ id: input.id,
26
+ type: input.type,
27
+ record: result.value
28
+ }));
29
+ return result;
24
30
  }
25
-
26
- // Publish after event
27
- await this.eventPublisher.publish(new EntryAfterLockEvent({
28
- id: input.id,
29
- type: input.type,
30
- record: result.value
31
- }));
32
- return result;
33
- }
34
31
  }
35
- export const LockEntryEventsDecorator = LockEntryUseCase.createDecorator({
36
- decorator: LockEntryErrorDecoratorImpl,
37
- dependencies: [EventPublisher]
32
+ const LockEntryEventsDecorator = LockEntryUseCase.createDecorator({
33
+ decorator: LockEntryErrorDecoratorImpl,
34
+ dependencies: [
35
+ EventPublisher
36
+ ]
38
37
  });
38
+ export { LockEntryEventsDecorator };
39
39
 
40
40
  //# sourceMappingURL=LockEntryEventsDecorator.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LockEntryUseCase","EventPublisher","EntryAfterLockEvent","EntryBeforeLockEvent","EntryLockErrorEvent","LockEntryErrorDecoratorImpl","constructor","eventPublisher","decoratee","execute","input","publish","id","type","result","isFail","error","record","value","LockEntryEventsDecorator","createDecorator","decorator","dependencies"],"sources":["LockEntryEventsDecorator.ts"],"sourcesContent":["import {\n type LockEntryInput,\n LockEntryUseCase as UseCaseAbstraction,\n LockEntryUseCase\n} from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/EventPublisher\";\nimport type { ILockRecord } from \"~/domain/index.js\";\nimport { Result } from \"@webiny/feature/api/index.js\";\nimport { EntryAfterLockEvent, EntryBeforeLockEvent, EntryLockErrorEvent } from \"./events.js\";\n\nclass LockEntryErrorDecoratorImpl implements LockEntryUseCase.Interface {\n constructor(\n private readonly eventPublisher: EventPublisher.Interface,\n private readonly decoratee: LockEntryUseCase.Interface\n ) {}\n async execute(input: LockEntryInput): Promise<Result<ILockRecord, UseCaseAbstraction.Error>> {\n // Publish before event\n await this.eventPublisher.publish(\n new EntryBeforeLockEvent({\n id: input.id,\n type: input.type\n })\n );\n\n const result = await this.decoratee.execute(input);\n\n if (result.isFail()) {\n const error = result.error;\n\n await this.eventPublisher.publish(\n new EntryLockErrorEvent({\n id: input.id,\n type: input.type,\n error\n })\n );\n\n return result;\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new EntryAfterLockEvent({\n id: input.id,\n type: input.type,\n record: result.value\n })\n );\n\n return result;\n }\n}\n\nexport const LockEntryEventsDecorator = LockEntryUseCase.createDecorator({\n decorator: LockEntryErrorDecoratorImpl,\n dependencies: [EventPublisher]\n});\n"],"mappings":"AAAA,SAGIA,gBAAgB;AAEpB,SAASC,cAAc,QAAQ,0CAA0C;AAGzE,SAASC,mBAAmB,EAAEC,oBAAoB,EAAEC,mBAAmB;AAEvE,MAAMC,2BAA2B,CAAuC;EACpEC,WAAWA,CACUC,cAAwC,EACxCC,SAAqC,EACxD;IAAA,KAFmBD,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,SAAqC,GAArCA,SAAqC;EACvD;EACH,MAAMC,OAAOA,CAACC,KAAqB,EAA0D;IACzF;IACA,MAAM,IAAI,CAACH,cAAc,CAACI,OAAO,CAC7B,IAAIR,oBAAoB,CAAC;MACrBS,EAAE,EAAEF,KAAK,CAACE,EAAE;MACZC,IAAI,EAAEH,KAAK,CAACG;IAChB,CAAC,CACL,CAAC;IAED,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACN,SAAS,CAACC,OAAO,CAACC,KAAK,CAAC;IAElD,IAAII,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,MAAMC,KAAK,GAAGF,MAAM,CAACE,KAAK;MAE1B,MAAM,IAAI,CAACT,cAAc,CAACI,OAAO,CAC7B,IAAIP,mBAAmB,CAAC;QACpBQ,EAAE,EAAEF,KAAK,CAACE,EAAE;QACZC,IAAI,EAAEH,KAAK,CAACG,IAAI;QAChBG;MACJ,CAAC,CACL,CAAC;MAED,OAAOF,MAAM;IACjB;;IAEA;IACA,MAAM,IAAI,CAACP,cAAc,CAACI,OAAO,CAC7B,IAAIT,mBAAmB,CAAC;MACpBU,EAAE,EAAEF,KAAK,CAACE,EAAE;MACZC,IAAI,EAAEH,KAAK,CAACG,IAAI;MAChBI,MAAM,EAAEH,MAAM,CAACI;IACnB,CAAC,CACL,CAAC;IAED,OAAOJ,MAAM;EACjB;AACJ;AAEA,OAAO,MAAMK,wBAAwB,GAAGnB,gBAAgB,CAACoB,eAAe,CAAC;EACrEC,SAAS,EAAEhB,2BAA2B;EACtCiB,YAAY,EAAE,CAACrB,cAAc;AACjC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/LockEntry/LockEntryEventsDecorator.js","sources":["../../../src/features/LockEntry/LockEntryEventsDecorator.ts"],"sourcesContent":["import {\n type LockEntryInput,\n LockEntryUseCase as UseCaseAbstraction,\n LockEntryUseCase\n} from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { ILockRecord } from \"~/domain/index.js\";\nimport { Result } from \"@webiny/feature/api/index.js\";\nimport { EntryAfterLockEvent, EntryBeforeLockEvent, EntryLockErrorEvent } from \"./events.js\";\n\nclass LockEntryErrorDecoratorImpl implements LockEntryUseCase.Interface {\n constructor(\n private readonly eventPublisher: EventPublisher.Interface,\n private readonly decoratee: LockEntryUseCase.Interface\n ) {}\n async execute(input: LockEntryInput): Promise<Result<ILockRecord, UseCaseAbstraction.Error>> {\n // Publish before event\n await this.eventPublisher.publish(\n new EntryBeforeLockEvent({\n id: input.id,\n type: input.type\n })\n );\n\n const result = await this.decoratee.execute(input);\n\n if (result.isFail()) {\n const error = result.error;\n\n await this.eventPublisher.publish(\n new EntryLockErrorEvent({\n id: input.id,\n type: input.type,\n error\n })\n );\n\n return result;\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new EntryAfterLockEvent({\n id: input.id,\n type: input.type,\n record: result.value\n })\n );\n\n return result;\n }\n}\n\nexport const LockEntryEventsDecorator = LockEntryUseCase.createDecorator({\n decorator: LockEntryErrorDecoratorImpl,\n dependencies: [EventPublisher]\n});\n"],"names":["LockEntryErrorDecoratorImpl","eventPublisher","decoratee","input","EntryBeforeLockEvent","result","error","EntryLockErrorEvent","EntryAfterLockEvent","LockEntryEventsDecorator","LockEntryUseCase","EventPublisher"],"mappings":";;;AAUA,MAAMA;IACF,YACqBC,cAAwC,EACxCC,SAAqC,CACxD;aAFmBD,cAAc,GAAdA;aACAC,SAAS,GAATA;IAClB;IACH,MAAM,QAAQC,KAAqB,EAA0D;QAEzF,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,qBAAqB;YACrB,IAAID,MAAM,EAAE;YACZ,MAAMA,MAAM,IAAI;QACpB;QAGJ,MAAME,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACF;QAE5C,IAAIE,OAAO,MAAM,IAAI;YACjB,MAAMC,QAAQD,OAAO,KAAK;YAE1B,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIE,oBAAoB;gBACpB,IAAIJ,MAAM,EAAE;gBACZ,MAAMA,MAAM,IAAI;gBAChBG;YACJ;YAGJ,OAAOD;QACX;QAGA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIG,oBAAoB;YACpB,IAAIL,MAAM,EAAE;YACZ,MAAMA,MAAM,IAAI;YAChB,QAAQE,OAAO,KAAK;QACxB;QAGJ,OAAOA;IACX;AACJ;AAEO,MAAMI,2BAA2BC,iBAAiB,eAAe,CAAC;IACrE,WAAWV;IACX,cAAc;QAACW;KAAe;AAClC"}
@@ -1,42 +1,45 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
3
- import { LockEntryRepository as RepositoryAbstraction } from "./abstractions.js";
3
+ import { LockEntryRepository } from "./abstractions.js";
4
4
  import { RecordLockingConfig, RecordLockingModel } from "../../domain/abstractions.js";
5
5
  import { LockRecord } from "../../domain/LockRecord.js";
6
6
  import { LockRecordPersistenceError } from "../../domain/errors.js";
7
7
  import { createLockRecordDatabaseId } from "../../utils/lockRecordDatabaseId.js";
8
8
  class LockEntryRepositoryImpl {
9
- constructor(model, config, createEntry) {
10
- this.model = model;
11
- this.config = config;
12
- this.createEntry = createEntry;
13
- }
14
- async create(input) {
15
- try {
16
- const id = createLockRecordDatabaseId(input.id);
17
- const values = {
18
- targetId: input.id,
19
- type: input.type,
20
- actions: []
21
- };
22
- const result = await this.createEntry.execute(this.model, {
23
- id,
24
- values
25
- });
26
- if (result.isFail()) {
27
- return Result.fail(new LockRecordPersistenceError(result.error));
28
- }
29
- const entry = result.value;
30
- const lockRecord = new LockRecord(entry, this.config.timeout);
31
- return Result.ok(lockRecord);
32
- } catch (error) {
33
- return Result.fail(new LockRecordPersistenceError(error));
9
+ constructor(model, config, createEntry){
10
+ this.model = model;
11
+ this.config = config;
12
+ this.createEntry = createEntry;
13
+ }
14
+ async create(input) {
15
+ try {
16
+ const id = createLockRecordDatabaseId(input.id);
17
+ const values = {
18
+ targetId: input.id,
19
+ type: input.type,
20
+ actions: []
21
+ };
22
+ const result = await this.createEntry.execute(this.model, {
23
+ id,
24
+ values
25
+ });
26
+ if (result.isFail()) return Result.fail(new LockRecordPersistenceError(result.error));
27
+ const entry = result.value;
28
+ const lockRecord = new LockRecord(entry, this.config.timeout);
29
+ return Result.ok(lockRecord);
30
+ } catch (error) {
31
+ return Result.fail(new LockRecordPersistenceError(error));
32
+ }
34
33
  }
35
- }
36
34
  }
37
- export const LockEntryRepository = RepositoryAbstraction.createImplementation({
38
- implementation: LockEntryRepositoryImpl,
39
- dependencies: [RecordLockingModel, RecordLockingConfig, CreateEntryUseCase]
35
+ const LockEntryRepository_LockEntryRepository = LockEntryRepository.createImplementation({
36
+ implementation: LockEntryRepositoryImpl,
37
+ dependencies: [
38
+ RecordLockingModel,
39
+ RecordLockingConfig,
40
+ CreateEntryUseCase
41
+ ]
40
42
  });
43
+ export { LockEntryRepository_LockEntryRepository as LockEntryRepository };
41
44
 
42
45
  //# sourceMappingURL=LockEntryRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","CreateEntryUseCase","LockEntryRepository","RepositoryAbstraction","RecordLockingConfig","RecordLockingModel","LockRecord","LockRecordPersistenceError","createLockRecordDatabaseId","LockEntryRepositoryImpl","constructor","model","config","createEntry","create","input","id","values","targetId","type","actions","result","execute","isFail","fail","error","entry","value","lockRecord","timeout","ok","createImplementation","implementation","dependencies"],"sources":["LockEntryRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport type { CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport { LockEntryInput, LockEntryRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { RecordLockingConfig, RecordLockingModel } from \"~/domain/abstractions.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport { LockRecord } from \"~/domain/LockRecord.js\";\nimport type { LockRecordValues } from \"~/domain/types.js\";\nimport { LockRecordPersistenceError } from \"~/domain/errors.js\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId.js\";\n\nclass LockEntryRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private model: RecordLockingModel.Interface,\n private config: RecordLockingConfig.Interface,\n private createEntry: CreateEntryUseCase.Interface\n ) {}\n\n async create(input: LockEntryInput): Promise<Result<ILockRecord, RepositoryAbstraction.Error>> {\n try {\n const id = createLockRecordDatabaseId(input.id);\n\n const values: LockRecordValues = {\n targetId: input.id,\n type: input.type,\n actions: []\n };\n\n const result = await this.createEntry.execute(this.model, {\n id,\n values\n });\n\n if (result.isFail()) {\n return Result.fail(new LockRecordPersistenceError(result.error));\n }\n\n const entry = result.value as CmsEntry<LockRecordValues>;\n const lockRecord = new LockRecord(entry, this.config.timeout);\n\n return Result.ok(lockRecord);\n } catch (error) {\n return Result.fail(new LockRecordPersistenceError(error as Error));\n }\n }\n}\n\nexport const LockEntryRepository = RepositoryAbstraction.createImplementation({\n implementation: LockEntryRepositoryImpl,\n dependencies: [RecordLockingModel, RecordLockingConfig, CreateEntryUseCase]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,kBAAkB,QAAQ,4DAA4D;AAE/F,SAAyBC,mBAAmB,IAAIC,qBAAqB;AACrE,SAASC,mBAAmB,EAAEC,kBAAkB;AAEhD,SAASC,UAAU;AAEnB,SAASC,0BAA0B;AACnC,SAASC,0BAA0B;AAEnC,MAAMC,uBAAuB,CAA4C;EACrEC,WAAWA,CACCC,KAAmC,EACnCC,MAAqC,EACrCC,WAAyC,EACnD;IAAA,KAHUF,KAAmC,GAAnCA,KAAmC;IAAA,KACnCC,MAAqC,GAArCA,MAAqC;IAAA,KACrCC,WAAyC,GAAzCA,WAAyC;EAClD;EAEH,MAAMC,MAAMA,CAACC,KAAqB,EAA6D;IAC3F,IAAI;MACA,MAAMC,EAAE,GAAGR,0BAA0B,CAACO,KAAK,CAACC,EAAE,CAAC;MAE/C,MAAMC,MAAwB,GAAG;QAC7BC,QAAQ,EAAEH,KAAK,CAACC,EAAE;QAClBG,IAAI,EAAEJ,KAAK,CAACI,IAAI;QAChBC,OAAO,EAAE;MACb,CAAC;MAED,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACR,WAAW,CAACS,OAAO,CAAC,IAAI,CAACX,KAAK,EAAE;QACtDK,EAAE;QACFC;MACJ,CAAC,CAAC;MAEF,IAAII,MAAM,CAACE,MAAM,CAAC,CAAC,EAAE;QACjB,OAAOvB,MAAM,CAACwB,IAAI,CAAC,IAAIjB,0BAA0B,CAACc,MAAM,CAACI,KAAK,CAAC,CAAC;MACpE;MAEA,MAAMC,KAAK,GAAGL,MAAM,CAACM,KAAmC;MACxD,MAAMC,UAAU,GAAG,IAAItB,UAAU,CAACoB,KAAK,EAAE,IAAI,CAACd,MAAM,CAACiB,OAAO,CAAC;MAE7D,OAAO7B,MAAM,CAAC8B,EAAE,CAACF,UAAU,CAAC;IAChC,CAAC,CAAC,OAAOH,KAAK,EAAE;MACZ,OAAOzB,MAAM,CAACwB,IAAI,CAAC,IAAIjB,0BAA0B,CAACkB,KAAc,CAAC,CAAC;IACtE;EACJ;AACJ;AAEA,OAAO,MAAMvB,mBAAmB,GAAGC,qBAAqB,CAAC4B,oBAAoB,CAAC;EAC1EC,cAAc,EAAEvB,uBAAuB;EACvCwB,YAAY,EAAE,CAAC5B,kBAAkB,EAAED,mBAAmB,EAAEH,kBAAkB;AAC9E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/LockEntry/LockEntryRepository.js","sources":["../../../src/features/LockEntry/LockEntryRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport type { CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport { LockEntryInput, LockEntryRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { RecordLockingConfig, RecordLockingModel } from \"~/domain/abstractions.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport { LockRecord } from \"~/domain/LockRecord.js\";\nimport type { LockRecordValues } from \"~/domain/types.js\";\nimport { LockRecordPersistenceError } from \"~/domain/errors.js\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId.js\";\n\nclass LockEntryRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private model: RecordLockingModel.Interface,\n private config: RecordLockingConfig.Interface,\n private createEntry: CreateEntryUseCase.Interface\n ) {}\n\n async create(input: LockEntryInput): Promise<Result<ILockRecord, RepositoryAbstraction.Error>> {\n try {\n const id = createLockRecordDatabaseId(input.id);\n\n const values: LockRecordValues = {\n targetId: input.id,\n type: input.type,\n actions: []\n };\n\n const result = await this.createEntry.execute(this.model, {\n id,\n values\n });\n\n if (result.isFail()) {\n return Result.fail(new LockRecordPersistenceError(result.error));\n }\n\n const entry = result.value as CmsEntry<LockRecordValues>;\n const lockRecord = new LockRecord(entry, this.config.timeout);\n\n return Result.ok(lockRecord);\n } catch (error) {\n return Result.fail(new LockRecordPersistenceError(error as Error));\n }\n }\n}\n\nexport const LockEntryRepository = RepositoryAbstraction.createImplementation({\n implementation: LockEntryRepositoryImpl,\n dependencies: [RecordLockingModel, RecordLockingConfig, CreateEntryUseCase]\n});\n"],"names":["LockEntryRepositoryImpl","model","config","createEntry","input","id","createLockRecordDatabaseId","values","result","Result","LockRecordPersistenceError","entry","lockRecord","LockRecord","error","LockEntryRepository","RepositoryAbstraction","RecordLockingModel","RecordLockingConfig","CreateEntryUseCase"],"mappings":";;;;;;;AAWA,MAAMA;IACF,YACYC,KAAmC,EACnCC,MAAqC,EACrCC,WAAyC,CACnD;aAHUF,KAAK,GAALA;aACAC,MAAM,GAANA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,OAAOC,KAAqB,EAA6D;QAC3F,IAAI;YACA,MAAMC,KAAKC,2BAA2BF,MAAM,EAAE;YAE9C,MAAMG,SAA2B;gBAC7B,UAAUH,MAAM,EAAE;gBAClB,MAAMA,MAAM,IAAI;gBAChB,SAAS,EAAE;YACf;YAEA,MAAMI,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtDH;gBACAE;YACJ;YAEA,IAAIC,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAAC,IAAIC,2BAA2BF,OAAO,KAAK;YAGlE,MAAMG,QAAQH,OAAO,KAAK;YAC1B,MAAMI,aAAa,IAAIC,WAAWF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO;YAE5D,OAAOF,OAAO,EAAE,CAACG;QACrB,EAAE,OAAOE,OAAO;YACZ,OAAOL,OAAO,IAAI,CAAC,IAAIC,2BAA2BI;QACtD;IACJ;AACJ;AAEO,MAAMC,0CAAsBC,oBAAAA,oBAA0C,CAAC;IAC1E,gBAAgBhB;IAChB,cAAc;QAACiB;QAAoBC;QAAqBC;KAAmB;AAC/E"}
@@ -1,36 +1,31 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { LockEntryUseCase as UseCaseAbstraction, LockEntryRepository } from "./abstractions.js";
2
+ import { LockEntryRepository, LockEntryUseCase } from "./abstractions.js";
3
3
  import { IsEntryLockedUseCase } from "../IsEntryLocked/abstractions.js";
4
4
  import { EntryAlreadyLockedError, LockEntryError } from "../../domain/errors.js";
5
5
  class LockEntryUseCaseImpl {
6
- constructor(isEntryLocked, repository) {
7
- this.isEntryLocked = isEntryLocked;
8
- this.repository = repository;
9
- }
10
- async execute(input) {
11
- // Check if entry is already locked
12
- const lockedResult = await this.isEntryLocked.execute(input);
13
- if (lockedResult.isFail()) {
14
- return Result.fail(lockedResult.error);
6
+ constructor(isEntryLocked, repository){
7
+ this.isEntryLocked = isEntryLocked;
8
+ this.repository = repository;
15
9
  }
16
- if (lockedResult.value) {
17
- return Result.fail(new EntryAlreadyLockedError({
18
- id: input.id,
19
- type: input.type
20
- }));
10
+ async execute(input) {
11
+ const lockedResult = await this.isEntryLocked.execute(input);
12
+ if (lockedResult.isFail()) return Result.fail(lockedResult.error);
13
+ if (lockedResult.value) return Result.fail(new EntryAlreadyLockedError({
14
+ id: input.id,
15
+ type: input.type
16
+ }));
17
+ const result = await this.repository.create(input);
18
+ if (result.isFail()) return Result.fail(new LockEntryError(result.error));
19
+ return Result.ok(result.value);
21
20
  }
22
-
23
- // Create the lock
24
- const result = await this.repository.create(input);
25
- if (result.isFail()) {
26
- return Result.fail(new LockEntryError(result.error));
27
- }
28
- return Result.ok(result.value);
29
- }
30
21
  }
31
- export const LockEntryUseCase = UseCaseAbstraction.createImplementation({
32
- implementation: LockEntryUseCaseImpl,
33
- dependencies: [IsEntryLockedUseCase, LockEntryRepository]
22
+ const LockEntryUseCase_LockEntryUseCase = LockEntryUseCase.createImplementation({
23
+ implementation: LockEntryUseCaseImpl,
24
+ dependencies: [
25
+ IsEntryLockedUseCase,
26
+ LockEntryRepository
27
+ ]
34
28
  });
29
+ export { LockEntryUseCase_LockEntryUseCase as LockEntryUseCase };
35
30
 
36
31
  //# sourceMappingURL=LockEntryUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","LockEntryUseCase","UseCaseAbstraction","LockEntryRepository","IsEntryLockedUseCase","EntryAlreadyLockedError","LockEntryError","LockEntryUseCaseImpl","constructor","isEntryLocked","repository","execute","input","lockedResult","isFail","fail","error","value","id","type","result","create","ok","createImplementation","implementation","dependencies"],"sources":["LockEntryUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n LockEntryUseCase as UseCaseAbstraction,\n LockEntryRepository,\n LockEntryInput\n} from \"./abstractions.js\";\nimport { IsEntryLockedUseCase } from \"../IsEntryLocked/abstractions.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport { EntryAlreadyLockedError, LockEntryError } from \"~/domain/errors.js\";\n\nclass LockEntryUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private isEntryLocked: IsEntryLockedUseCase.Interface,\n private repository: LockEntryRepository.Interface\n ) {}\n\n async execute(input: LockEntryInput): Promise<Result<ILockRecord, UseCaseAbstraction.Error>> {\n // Check if entry is already locked\n const lockedResult = await this.isEntryLocked.execute(input);\n\n if (lockedResult.isFail()) {\n return Result.fail(lockedResult.error);\n }\n\n if (lockedResult.value) {\n return Result.fail(new EntryAlreadyLockedError({ id: input.id, type: input.type }));\n }\n\n // Create the lock\n const result = await this.repository.create(input);\n\n if (result.isFail()) {\n return Result.fail(new LockEntryError(result.error));\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport const LockEntryUseCase = UseCaseAbstraction.createImplementation({\n implementation: LockEntryUseCaseImpl,\n dependencies: [IsEntryLockedUseCase, LockEntryRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,gBAAgB,IAAIC,kBAAkB,EACtCC,mBAAmB;AAGvB,SAASC,oBAAoB;AAE7B,SAASC,uBAAuB,EAAEC,cAAc;AAEhD,MAAMC,oBAAoB,CAAyC;EAC/DC,WAAWA,CACCC,aAA6C,EAC7CC,UAAyC,EACnD;IAAA,KAFUD,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,UAAyC,GAAzCA,UAAyC;EAClD;EAEH,MAAMC,OAAOA,CAACC,KAAqB,EAA0D;IACzF;IACA,MAAMC,YAAY,GAAG,MAAM,IAAI,CAACJ,aAAa,CAACE,OAAO,CAACC,KAAK,CAAC;IAE5D,IAAIC,YAAY,CAACC,MAAM,CAAC,CAAC,EAAE;MACvB,OAAOd,MAAM,CAACe,IAAI,CAACF,YAAY,CAACG,KAAK,CAAC;IAC1C;IAEA,IAAIH,YAAY,CAACI,KAAK,EAAE;MACpB,OAAOjB,MAAM,CAACe,IAAI,CAAC,IAAIV,uBAAuB,CAAC;QAAEa,EAAE,EAAEN,KAAK,CAACM,EAAE;QAAEC,IAAI,EAAEP,KAAK,CAACO;MAAK,CAAC,CAAC,CAAC;IACvF;;IAEA;IACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACV,UAAU,CAACW,MAAM,CAACT,KAAK,CAAC;IAElD,IAAIQ,MAAM,CAACN,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOd,MAAM,CAACe,IAAI,CAAC,IAAIT,cAAc,CAACc,MAAM,CAACJ,KAAK,CAAC,CAAC;IACxD;IAEA,OAAOhB,MAAM,CAACsB,EAAE,CAACF,MAAM,CAACH,KAAK,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMhB,gBAAgB,GAAGC,kBAAkB,CAACqB,oBAAoB,CAAC;EACpEC,cAAc,EAAEjB,oBAAoB;EACpCkB,YAAY,EAAE,CAACrB,oBAAoB,EAAED,mBAAmB;AAC5D,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/LockEntry/LockEntryUseCase.js","sources":["../../../src/features/LockEntry/LockEntryUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n LockEntryUseCase as UseCaseAbstraction,\n LockEntryRepository,\n LockEntryInput\n} from \"./abstractions.js\";\nimport { IsEntryLockedUseCase } from \"../IsEntryLocked/abstractions.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport { EntryAlreadyLockedError, LockEntryError } from \"~/domain/errors.js\";\n\nclass LockEntryUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private isEntryLocked: IsEntryLockedUseCase.Interface,\n private repository: LockEntryRepository.Interface\n ) {}\n\n async execute(input: LockEntryInput): Promise<Result<ILockRecord, UseCaseAbstraction.Error>> {\n // Check if entry is already locked\n const lockedResult = await this.isEntryLocked.execute(input);\n\n if (lockedResult.isFail()) {\n return Result.fail(lockedResult.error);\n }\n\n if (lockedResult.value) {\n return Result.fail(new EntryAlreadyLockedError({ id: input.id, type: input.type }));\n }\n\n // Create the lock\n const result = await this.repository.create(input);\n\n if (result.isFail()) {\n return Result.fail(new LockEntryError(result.error));\n }\n\n return Result.ok(result.value);\n }\n}\n\nexport const LockEntryUseCase = UseCaseAbstraction.createImplementation({\n implementation: LockEntryUseCaseImpl,\n dependencies: [IsEntryLockedUseCase, LockEntryRepository]\n});\n"],"names":["LockEntryUseCaseImpl","isEntryLocked","repository","input","lockedResult","Result","EntryAlreadyLockedError","result","LockEntryError","LockEntryUseCase","UseCaseAbstraction","IsEntryLockedUseCase","LockEntryRepository"],"mappings":";;;;AAUA,MAAMA;IACF,YACYC,aAA6C,EAC7CC,UAAyC,CACnD;aAFUD,aAAa,GAAbA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,KAAqB,EAA0D;QAEzF,MAAMC,eAAe,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAACD;QAEtD,IAAIC,aAAa,MAAM,IACnB,OAAOC,OAAO,IAAI,CAACD,aAAa,KAAK;QAGzC,IAAIA,aAAa,KAAK,EAClB,OAAOC,OAAO,IAAI,CAAC,IAAIC,wBAAwB;YAAE,IAAIH,MAAM,EAAE;YAAE,MAAMA,MAAM,IAAI;QAAC;QAIpF,MAAMI,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAACJ;QAE5C,IAAII,OAAO,MAAM,IACb,OAAOF,OAAO,IAAI,CAAC,IAAIG,eAAeD,OAAO,KAAK;QAGtD,OAAOF,OAAO,EAAE,CAACE,OAAO,KAAK;IACjC;AACJ;AAEO,MAAME,oCAAmBC,iBAAAA,oBAAuC,CAAC;IACpE,gBAAgBV;IAChB,cAAc;QAACW;QAAsBC;KAAoB;AAC7D"}
@@ -1,17 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- // Input types
4
-
5
- /**
6
- * LockEntry Use Case - Creates a lock on an entry
7
- */
8
-
9
- export const LockEntryUseCase = createAbstraction("LockEntryUseCase");
10
-
11
- /**
12
- * LockEntryRepository - Creates lock record in storage
13
- */
14
-
15
- export const LockEntryRepository = createAbstraction("LockEntryRepository");
2
+ const LockEntryUseCase = createAbstraction("LockEntryUseCase");
3
+ const LockEntryRepository = createAbstraction("LockEntryRepository");
4
+ export { LockEntryRepository, LockEntryUseCase };
16
5
 
17
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","LockEntryUseCase","LockEntryRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport type { LockRecordEntryType } from \"~/domain/types.js\";\nimport type {\n EntryAlreadyLockedError,\n LockEntryError,\n LockRecordPersistenceError\n} from \"~/domain/errors.js\";\n\n// Input types\nexport interface LockEntryInput {\n id: string;\n type: LockRecordEntryType;\n}\n\n/**\n * LockEntry Use Case - Creates a lock on an entry\n */\nexport interface ILockEntryUseCase {\n execute(input: LockEntryInput): Promise<Result<ILockRecord, UseCaseError>>;\n}\n\nexport interface ILockEntryUseCaseErrors {\n alreadyLocked: EntryAlreadyLockedError;\n persistence: LockRecordPersistenceError;\n lockError: LockEntryError;\n}\n\ntype UseCaseError = ILockEntryUseCaseErrors[keyof ILockEntryUseCaseErrors];\n\nexport const LockEntryUseCase = createAbstraction<ILockEntryUseCase>(\"LockEntryUseCase\");\n\nexport namespace LockEntryUseCase {\n export type Interface = ILockEntryUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * LockEntryRepository - Creates lock record in storage\n */\nexport interface ILockEntryRepository {\n create(input: LockEntryInput): Promise<Result<ILockRecord, RepositoryError>>;\n}\n\nexport interface ILockEntryRepositoryErrors {\n persistence: LockRecordPersistenceError;\n}\n\ntype RepositoryError = ILockEntryRepositoryErrors[keyof ILockEntryRepositoryErrors];\n\nexport const LockEntryRepository = createAbstraction<ILockEntryRepository>(\"LockEntryRepository\");\n\nexport namespace LockEntryRepository {\n export type Interface = ILockEntryRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAUvD;;AAMA;AACA;AACA;;AAaA,OAAO,MAAMC,gBAAgB,GAAGD,iBAAiB,CAAoB,kBAAkB,CAAC;;AAOxF;AACA;AACA;;AAWA,OAAO,MAAME,mBAAmB,GAAGF,iBAAiB,CAAuB,qBAAqB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/LockEntry/abstractions.js","sources":["../../../src/features/LockEntry/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport type { LockRecordEntryType } from \"~/domain/types.js\";\nimport type {\n EntryAlreadyLockedError,\n LockEntryError,\n LockRecordPersistenceError\n} from \"~/domain/errors.js\";\n\n// Input types\nexport interface LockEntryInput {\n id: string;\n type: LockRecordEntryType;\n}\n\n/**\n * LockEntry Use Case - Creates a lock on an entry\n */\nexport interface ILockEntryUseCase {\n execute(input: LockEntryInput): Promise<Result<ILockRecord, UseCaseError>>;\n}\n\nexport interface ILockEntryUseCaseErrors {\n alreadyLocked: EntryAlreadyLockedError;\n persistence: LockRecordPersistenceError;\n lockError: LockEntryError;\n}\n\ntype UseCaseError = ILockEntryUseCaseErrors[keyof ILockEntryUseCaseErrors];\n\nexport const LockEntryUseCase = createAbstraction<ILockEntryUseCase>(\"LockEntryUseCase\");\n\nexport namespace LockEntryUseCase {\n export type Interface = ILockEntryUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * LockEntryRepository - Creates lock record in storage\n */\nexport interface ILockEntryRepository {\n create(input: LockEntryInput): Promise<Result<ILockRecord, RepositoryError>>;\n}\n\nexport interface ILockEntryRepositoryErrors {\n persistence: LockRecordPersistenceError;\n}\n\ntype RepositoryError = ILockEntryRepositoryErrors[keyof ILockEntryRepositoryErrors];\n\nexport const LockEntryRepository = createAbstraction<ILockEntryRepository>(\"LockEntryRepository\");\n\nexport namespace LockEntryRepository {\n export type Interface = ILockEntryRepository;\n export type Error = RepositoryError;\n}\n"],"names":["LockEntryUseCase","createAbstraction","LockEntryRepository"],"mappings":";AA+BO,MAAMA,mBAAmBC,kBAAqC;AAoB9D,MAAMC,sBAAsBD,kBAAwC"}
@@ -1,5 +1,5 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
- import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
+ import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { ILockRecord } from "../../domain/LockRecord.js";
4
4
  import type { LockRecordEntryType } from "../../domain/types.js";
5
5
  export interface EntryBeforeLockPayload {
@@ -10,8 +10,8 @@ export declare class EntryBeforeLockEvent extends DomainEvent<EntryBeforeLockPay
10
10
  eventType: "RecordLocking/Entry/BeforeLock";
11
11
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<EntryBeforeLockEvent>>;
12
12
  }
13
- export declare const EntryBeforeLockHandler: import("@webiny/di").Abstraction<IEventHandler<EntryBeforeLockEvent>>;
14
- export declare namespace EntryBeforeLockHandler {
13
+ export declare const EntryBeforeLockEventHandler: import("@webiny/di").Abstraction<IEventHandler<EntryBeforeLockEvent>>;
14
+ export declare namespace EntryBeforeLockEventHandler {
15
15
  type Interface = IEventHandler<EntryBeforeLockEvent>;
16
16
  type Event = EntryBeforeLockEvent;
17
17
  }
@@ -24,8 +24,8 @@ export declare class EntryAfterLockEvent extends DomainEvent<EntryAfterLockPaylo
24
24
  eventType: "RecordLocking/Entry/AfterLock";
25
25
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<EntryAfterLockEvent>>;
26
26
  }
27
- export declare const EntryAfterLockHandler: import("@webiny/di").Abstraction<IEventHandler<EntryAfterLockEvent>>;
28
- export declare namespace EntryAfterLockHandler {
27
+ export declare const EntryAfterLockEventHandler: import("@webiny/di").Abstraction<IEventHandler<EntryAfterLockEvent>>;
28
+ export declare namespace EntryAfterLockEventHandler {
29
29
  type Interface = IEventHandler<EntryAfterLockEvent>;
30
30
  type Event = EntryAfterLockEvent;
31
31
  }
@@ -38,8 +38,8 @@ export declare class EntryLockErrorEvent extends DomainEvent<EntryLockErrorPaylo
38
38
  eventType: "RecordLocking/Entry/LockError";
39
39
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<EntryLockErrorEvent>>;
40
40
  }
41
- export declare const EntryLockErrorHandler: import("@webiny/di").Abstraction<IEventHandler<EntryLockErrorEvent>>;
42
- export declare namespace EntryLockErrorHandler {
41
+ export declare const EntryLockErrorEventHandler: import("@webiny/di").Abstraction<IEventHandler<EntryLockErrorEvent>>;
42
+ export declare namespace EntryLockErrorEventHandler {
43
43
  type Interface = IEventHandler<EntryLockErrorEvent>;
44
44
  type Event = EntryLockErrorEvent;
45
45
  }
@@ -1,40 +1,32 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
3
-
4
- // ============================================================================
5
- // EntryBeforeLock Event
6
- // ============================================================================
7
-
8
- export class EntryBeforeLockEvent extends DomainEvent {
9
- eventType = "RecordLocking/Entry/BeforeLock";
10
- getHandlerAbstraction() {
11
- return EntryBeforeLockHandler;
12
- }
2
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
+ class EntryBeforeLockEvent extends DomainEvent {
4
+ getHandlerAbstraction() {
5
+ return EntryBeforeLockEventHandler;
6
+ }
7
+ constructor(...args){
8
+ super(...args), this.eventType = "RecordLocking/Entry/BeforeLock";
9
+ }
13
10
  }
14
- export const EntryBeforeLockHandler = createAbstraction("EntryBeforeLockHandler");
15
-
16
- // ============================================================================
17
- // EntryAfterLock Event
18
- // ============================================================================
19
-
20
- export class EntryAfterLockEvent extends DomainEvent {
21
- eventType = "RecordLocking/Entry/AfterLock";
22
- getHandlerAbstraction() {
23
- return EntryAfterLockHandler;
24
- }
11
+ const EntryBeforeLockEventHandler = createAbstraction("EntryBeforeLockEventHandler");
12
+ class EntryAfterLockEvent extends DomainEvent {
13
+ getHandlerAbstraction() {
14
+ return EntryAfterLockEventHandler;
15
+ }
16
+ constructor(...args){
17
+ super(...args), this.eventType = "RecordLocking/Entry/AfterLock";
18
+ }
25
19
  }
26
- export const EntryAfterLockHandler = createAbstraction("EntryAfterLockHandler");
27
-
28
- // ============================================================================
29
- // EntryLockError Event
30
- // ============================================================================
31
-
32
- export class EntryLockErrorEvent extends DomainEvent {
33
- eventType = "RecordLocking/Entry/LockError";
34
- getHandlerAbstraction() {
35
- return EntryLockErrorHandler;
36
- }
20
+ const EntryAfterLockEventHandler = createAbstraction("EntryAfterLockEventHandler");
21
+ class EntryLockErrorEvent extends DomainEvent {
22
+ getHandlerAbstraction() {
23
+ return EntryLockErrorEventHandler;
24
+ }
25
+ constructor(...args){
26
+ super(...args), this.eventType = "RecordLocking/Entry/LockError";
27
+ }
37
28
  }
38
- export const EntryLockErrorHandler = createAbstraction("EntryLockErrorHandler");
29
+ const EntryLockErrorEventHandler = createAbstraction("EntryLockErrorEventHandler");
30
+ export { EntryAfterLockEvent, EntryAfterLockEventHandler, EntryBeforeLockEvent, EntryBeforeLockEventHandler, EntryLockErrorEvent, EntryLockErrorEventHandler };
39
31
 
40
32
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeLockEvent","eventType","getHandlerAbstraction","EntryBeforeLockHandler","EntryAfterLockEvent","EntryAfterLockHandler","EntryLockErrorEvent","EntryLockErrorHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport type { LockRecordEntryType } from \"~/domain/types.js\";\n\n// ============================================================================\n// EntryBeforeLock Event\n// ============================================================================\n\nexport interface EntryBeforeLockPayload {\n id: string;\n type: LockRecordEntryType;\n}\n\nexport class EntryBeforeLockEvent extends DomainEvent<EntryBeforeLockPayload> {\n eventType = \"RecordLocking/Entry/BeforeLock\" as const;\n\n getHandlerAbstraction() {\n return EntryBeforeLockHandler;\n }\n}\n\nexport const EntryBeforeLockHandler =\n createAbstraction<IEventHandler<EntryBeforeLockEvent>>(\"EntryBeforeLockHandler\");\n\nexport namespace EntryBeforeLockHandler {\n export type Interface = IEventHandler<EntryBeforeLockEvent>;\n export type Event = EntryBeforeLockEvent;\n}\n\n// ============================================================================\n// EntryAfterLock Event\n// ============================================================================\n\nexport interface EntryAfterLockPayload {\n id: string;\n type: LockRecordEntryType;\n record: ILockRecord;\n}\n\nexport class EntryAfterLockEvent extends DomainEvent<EntryAfterLockPayload> {\n eventType = \"RecordLocking/Entry/AfterLock\" as const;\n\n getHandlerAbstraction() {\n return EntryAfterLockHandler;\n }\n}\n\nexport const EntryAfterLockHandler =\n createAbstraction<IEventHandler<EntryAfterLockEvent>>(\"EntryAfterLockHandler\");\n\nexport namespace EntryAfterLockHandler {\n export type Interface = IEventHandler<EntryAfterLockEvent>;\n export type Event = EntryAfterLockEvent;\n}\n\n// ============================================================================\n// EntryLockError Event\n// ============================================================================\n\nexport interface EntryLockErrorPayload {\n id: string;\n type: LockRecordEntryType;\n error: Error;\n}\n\nexport class EntryLockErrorEvent extends DomainEvent<EntryLockErrorPayload> {\n eventType = \"RecordLocking/Entry/LockError\" as const;\n\n getHandlerAbstraction() {\n return EntryLockErrorHandler;\n }\n}\n\nexport const EntryLockErrorHandler =\n createAbstraction<IEventHandler<EntryLockErrorEvent>>(\"EntryLockErrorHandler\");\n\nexport namespace EntryLockErrorHandler {\n export type Interface = IEventHandler<EntryLockErrorEvent>;\n export type Event = EntryLockErrorEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,0CAA0C;;AAKtE;AACA;AACA;;AAOA,OAAO,MAAMC,oBAAoB,SAASD,WAAW,CAAyB;EAC1EE,SAAS,GAAG,gCAAgC;EAE5CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,sBAAsB;EACjC;AACJ;AAEA,OAAO,MAAMA,sBAAsB,GAC/BL,iBAAiB,CAAsC,wBAAwB,CAAC;;AAOpF;AACA;AACA;;AAQA,OAAO,MAAMM,mBAAmB,SAASL,WAAW,CAAwB;EACxEE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,qBAAqB;EAChC;AACJ;AAEA,OAAO,MAAMA,qBAAqB,GAC9BP,iBAAiB,CAAqC,uBAAuB,CAAC;;AAOlF;AACA;AACA;;AAQA,OAAO,MAAMQ,mBAAmB,SAASP,WAAW,CAAwB;EACxEE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,qBAAqB;EAChC;AACJ;AAEA,OAAO,MAAMA,qBAAqB,GAC9BT,iBAAiB,CAAqC,uBAAuB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/LockEntry/events.js","sources":["../../../src/features/LockEntry/events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport type { LockRecordEntryType } from \"~/domain/types.js\";\n\n// ============================================================================\n// EntryBeforeLock Event\n// ============================================================================\n\nexport interface EntryBeforeLockPayload {\n id: string;\n type: LockRecordEntryType;\n}\n\nexport class EntryBeforeLockEvent extends DomainEvent<EntryBeforeLockPayload> {\n eventType = \"RecordLocking/Entry/BeforeLock\" as const;\n\n getHandlerAbstraction() {\n return EntryBeforeLockEventHandler;\n }\n}\n\nexport const EntryBeforeLockEventHandler = createAbstraction<IEventHandler<EntryBeforeLockEvent>>(\n \"EntryBeforeLockEventHandler\"\n);\n\nexport namespace EntryBeforeLockEventHandler {\n export type Interface = IEventHandler<EntryBeforeLockEvent>;\n export type Event = EntryBeforeLockEvent;\n}\n\n// ============================================================================\n// EntryAfterLock Event\n// ============================================================================\n\nexport interface EntryAfterLockPayload {\n id: string;\n type: LockRecordEntryType;\n record: ILockRecord;\n}\n\nexport class EntryAfterLockEvent extends DomainEvent<EntryAfterLockPayload> {\n eventType = \"RecordLocking/Entry/AfterLock\" as const;\n\n getHandlerAbstraction() {\n return EntryAfterLockEventHandler;\n }\n}\n\nexport const EntryAfterLockEventHandler = createAbstraction<IEventHandler<EntryAfterLockEvent>>(\n \"EntryAfterLockEventHandler\"\n);\n\nexport namespace EntryAfterLockEventHandler {\n export type Interface = IEventHandler<EntryAfterLockEvent>;\n export type Event = EntryAfterLockEvent;\n}\n\n// ============================================================================\n// EntryLockError Event\n// ============================================================================\n\nexport interface EntryLockErrorPayload {\n id: string;\n type: LockRecordEntryType;\n error: Error;\n}\n\nexport class EntryLockErrorEvent extends DomainEvent<EntryLockErrorPayload> {\n eventType = \"RecordLocking/Entry/LockError\" as const;\n\n getHandlerAbstraction() {\n return EntryLockErrorEventHandler;\n }\n}\n\nexport const EntryLockErrorEventHandler = createAbstraction<IEventHandler<EntryLockErrorEvent>>(\n \"EntryLockErrorEventHandler\"\n);\n\nexport namespace EntryLockErrorEventHandler {\n export type Interface = IEventHandler<EntryLockErrorEvent>;\n export type Event = EntryLockErrorEvent;\n}\n"],"names":["EntryBeforeLockEvent","DomainEvent","EntryBeforeLockEventHandler","createAbstraction","EntryAfterLockEvent","EntryAfterLockEventHandler","EntryLockErrorEvent","EntryLockErrorEventHandler"],"mappings":";;AAeO,MAAMA,6BAA6BC;IAGtC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,8BAA8BC,kBACvC;AAkBG,MAAMC,4BAA4BH;IAGrC,wBAAwB;QACpB,OAAOI;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,6BAA6BF,kBACtC;AAkBG,MAAMG,4BAA4BL;IAGrC,wBAAwB;QACpB,OAAOM;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAEO,MAAMA,6BAA6BJ,kBACtC"}
@@ -1 +1,4 @@
1
- export declare const LockEntryFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
1
+ export declare const LockEntryFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -2,13 +2,14 @@ import { createFeature } from "@webiny/feature/api";
2
2
  import { LockEntryUseCase } from "./LockEntryUseCase.js";
3
3
  import { LockEntryRepository } from "./LockEntryRepository.js";
4
4
  import { LockEntryEventsDecorator } from "./LockEntryEventsDecorator.js";
5
- export const LockEntryFeature = createFeature({
6
- name: "LockEntry",
7
- register(container) {
8
- container.register(LockEntryUseCase);
9
- container.register(LockEntryRepository).inSingletonScope();
10
- container.registerDecorator(LockEntryEventsDecorator);
11
- }
5
+ const LockEntryFeature = createFeature({
6
+ name: "LockEntry",
7
+ register (container) {
8
+ container.register(LockEntryUseCase);
9
+ container.register(LockEntryRepository).inSingletonScope();
10
+ container.registerDecorator(LockEntryEventsDecorator);
11
+ }
12
12
  });
13
+ export { LockEntryFeature };
13
14
 
14
15
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","LockEntryUseCase","LockEntryRepository","LockEntryEventsDecorator","LockEntryFeature","name","register","container","inSingletonScope","registerDecorator"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { LockEntryUseCase } from \"./LockEntryUseCase.js\";\nimport { LockEntryRepository } from \"./LockEntryRepository.js\";\nimport { LockEntryEventsDecorator } from \"./LockEntryEventsDecorator.js\";\n\nexport const LockEntryFeature = createFeature({\n name: \"LockEntry\",\n register(container) {\n container.register(LockEntryUseCase);\n container.register(LockEntryRepository).inSingletonScope();\n container.registerDecorator(LockEntryEventsDecorator);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,gBAAgB;AACzB,SAASC,mBAAmB;AAC5B,SAASC,wBAAwB;AAEjC,OAAO,MAAMC,gBAAgB,GAAGJ,aAAa,CAAC;EAC1CK,IAAI,EAAE,WAAW;EACjBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACL,gBAAgB,CAAC;IACpCM,SAAS,CAACD,QAAQ,CAACJ,mBAAmB,CAAC,CAACM,gBAAgB,CAAC,CAAC;IAC1DD,SAAS,CAACE,iBAAiB,CAACN,wBAAwB,CAAC;EACzD;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/LockEntry/feature.js","sources":["../../../src/features/LockEntry/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { LockEntryUseCase } from \"./LockEntryUseCase.js\";\nimport { LockEntryRepository } from \"./LockEntryRepository.js\";\nimport { LockEntryEventsDecorator } from \"./LockEntryEventsDecorator.js\";\n\nexport const LockEntryFeature = createFeature({\n name: \"LockEntry\",\n register(container) {\n container.register(LockEntryUseCase);\n container.register(LockEntryRepository).inSingletonScope();\n container.registerDecorator(LockEntryEventsDecorator);\n }\n});\n"],"names":["LockEntryFeature","createFeature","container","LockEntryUseCase","LockEntryRepository","LockEntryEventsDecorator"],"mappings":";;;;AAKO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,qBAAqB,gBAAgB;QACxDF,UAAU,iBAAiB,CAACG;IAChC;AACJ"}
@@ -1,3 +1 @@
1
1
  export * from "./abstractions.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -9,4 +9,7 @@ export interface RecordLockingParams {
9
9
  */
10
10
  model: CmsModel;
11
11
  }
12
- export declare const RecordLockingFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<RecordLockingParams>;
12
+ export declare const RecordLockingFeature: {
13
+ name: string;
14
+ register(container: import("@webiny/di").Container, context: RecordLockingParams): void;
15
+ };