@webiny/api-record-locking 6.3.0 → 6.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) 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.js +7 -6
  21. package/features/GetLockRecord/feature.js.map +1 -1
  22. package/features/GetLockRecord/index.js +0 -2
  23. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +19 -28
  24. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -1
  25. package/features/GetLockedEntryLockRecord/abstractions.js +2 -10
  26. package/features/GetLockedEntryLockRecord/abstractions.js.map +1 -1
  27. package/features/GetLockedEntryLockRecord/feature.js +6 -5
  28. package/features/GetLockedEntryLockRecord/feature.js.map +1 -1
  29. package/features/GetLockedEntryLockRecord/index.js +0 -2
  30. package/features/IsEntryLocked/IsEntryLockedUseCase.js +22 -28
  31. package/features/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -1
  32. package/features/IsEntryLocked/abstractions.js +2 -9
  33. package/features/IsEntryLocked/abstractions.js.map +1 -1
  34. package/features/IsEntryLocked/feature.js +6 -5
  35. package/features/IsEntryLocked/feature.js.map +1 -1
  36. package/features/IsEntryLocked/index.js +0 -2
  37. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js +32 -32
  38. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -1
  39. package/features/KickOutCurrentUser/abstractions.js +2 -6
  40. package/features/KickOutCurrentUser/abstractions.js.map +1 -1
  41. package/features/KickOutCurrentUser/feature.js +6 -5
  42. package/features/KickOutCurrentUser/feature.js.map +1 -1
  43. package/features/KickOutCurrentUser/index.js +0 -2
  44. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js +31 -31
  45. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js.map +1 -1
  46. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js +13 -10
  47. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js.map +1 -1
  48. package/features/ListAllLockRecords/abstractions.js +3 -14
  49. package/features/ListAllLockRecords/abstractions.js.map +1 -1
  50. package/features/ListAllLockRecords/feature.js +7 -6
  51. package/features/ListAllLockRecords/feature.js.map +1 -1
  52. package/features/ListAllLockRecords/index.js +0 -2
  53. package/features/ListLockRecords/ListLockRecordsRepository.js +31 -31
  54. package/features/ListLockRecords/ListLockRecordsRepository.js.map +1 -1
  55. package/features/ListLockRecords/ListLockRecordsUseCase.js +26 -23
  56. package/features/ListLockRecords/ListLockRecordsUseCase.js.map +1 -1
  57. package/features/ListLockRecords/abstractions.js +3 -14
  58. package/features/ListLockRecords/abstractions.js.map +1 -1
  59. package/features/ListLockRecords/feature.js +7 -6
  60. package/features/ListLockRecords/feature.js.map +1 -1
  61. package/features/ListLockRecords/index.js +0 -2
  62. package/features/LockEntry/LockEntryEventsDecorator.js +31 -31
  63. package/features/LockEntry/LockEntryEventsDecorator.js.map +1 -1
  64. package/features/LockEntry/LockEntryRepository.js +33 -30
  65. package/features/LockEntry/LockEntryRepository.js.map +1 -1
  66. package/features/LockEntry/LockEntryUseCase.js +21 -26
  67. package/features/LockEntry/LockEntryUseCase.js.map +1 -1
  68. package/features/LockEntry/abstractions.js +3 -14
  69. package/features/LockEntry/abstractions.js.map +1 -1
  70. package/features/LockEntry/events.js +25 -33
  71. package/features/LockEntry/events.js.map +1 -1
  72. package/features/LockEntry/feature.js +8 -7
  73. package/features/LockEntry/feature.js.map +1 -1
  74. package/features/LockEntry/index.js +0 -2
  75. package/features/RecordLockingFeature.js +19 -21
  76. package/features/RecordLockingFeature.js.map +1 -1
  77. package/features/UnlockEntry/UnlockEntryEventsDecorator.js +32 -32
  78. package/features/UnlockEntry/UnlockEntryEventsDecorator.js.map +1 -1
  79. package/features/UnlockEntry/UnlockEntryRepository.js +29 -27
  80. package/features/UnlockEntry/UnlockEntryRepository.js.map +1 -1
  81. package/features/UnlockEntry/UnlockEntryUseCase.js +53 -69
  82. package/features/UnlockEntry/UnlockEntryUseCase.js.map +1 -1
  83. package/features/UnlockEntry/abstractions.js +3 -14
  84. package/features/UnlockEntry/abstractions.js.map +1 -1
  85. package/features/UnlockEntry/events.js +25 -33
  86. package/features/UnlockEntry/events.js.map +1 -1
  87. package/features/UnlockEntry/feature.js +8 -7
  88. package/features/UnlockEntry/feature.js.map +1 -1
  89. package/features/UnlockEntry/hasFullAccessPermission.js +6 -7
  90. package/features/UnlockEntry/hasFullAccessPermission.js.map +1 -1
  91. package/features/UnlockEntry/index.js +0 -2
  92. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js +31 -31
  93. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js.map +1 -1
  94. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js +31 -30
  95. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js.map +1 -1
  96. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js +62 -79
  97. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js.map +1 -1
  98. package/features/UnlockEntryRequest/abstractions.js +3 -14
  99. package/features/UnlockEntryRequest/abstractions.js.map +1 -1
  100. package/features/UnlockEntryRequest/events.js +25 -33
  101. package/features/UnlockEntryRequest/events.js.map +1 -1
  102. package/features/UnlockEntryRequest/feature.js +8 -7
  103. package/features/UnlockEntryRequest/feature.js.map +1 -1
  104. package/features/UnlockEntryRequest/index.js +0 -2
  105. package/features/UpdateEntryLock/UpdateEntryLockRepository.js +45 -48
  106. package/features/UpdateEntryLock/UpdateEntryLockRepository.js.map +1 -1
  107. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js +40 -51
  108. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -1
  109. package/features/UpdateEntryLock/abstractions.js +3 -14
  110. package/features/UpdateEntryLock/abstractions.js.map +1 -1
  111. package/features/UpdateEntryLock/feature.js +7 -6
  112. package/features/UpdateEntryLock/feature.js.map +1 -1
  113. package/features/UpdateEntryLock/index.js +0 -2
  114. package/graphql/checkPermissions.js +5 -9
  115. package/graphql/checkPermissions.js.map +1 -1
  116. package/graphql/resolve.js +15 -17
  117. package/graphql/resolve.js.map +1 -1
  118. package/graphql/schema.js +147 -165
  119. package/graphql/schema.js.map +1 -1
  120. package/index.js +40 -49
  121. package/index.js.map +1 -1
  122. package/package.json +17 -17
  123. package/types.js +6 -9
  124. package/types.js.map +1 -1
  125. package/utils/convertWhereCondition.js +20 -32
  126. package/utils/convertWhereCondition.js.map +1 -1
  127. package/utils/getTimeout.js +8 -15
  128. package/utils/getTimeout.js.map +1 -1
  129. package/utils/lockRecordDatabaseId.js +6 -11
  130. package/utils/lockRecordDatabaseId.js.map +1 -1
  131. package/domain/index.js.map +0 -1
  132. package/features/GetLockRecord/index.js.map +0 -1
  133. package/features/GetLockedEntryLockRecord/index.js.map +0 -1
  134. package/features/IsEntryLocked/index.js.map +0 -1
  135. package/features/KickOutCurrentUser/index.js.map +0 -1
  136. package/features/ListAllLockRecords/index.js.map +0 -1
  137. package/features/ListLockRecords/index.js.map +0 -1
  138. package/features/LockEntry/index.js.map +0 -1
  139. package/features/UnlockEntry/index.js.map +0 -1
  140. package/features/UnlockEntryRequest/index.js.map +0 -1
  141. package/features/UpdateEntryLock/index.js.map +0 -1
@@ -1,37 +1,40 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
3
3
  import { createIdentifier } from "@webiny/utils";
4
- import { GetLockRecordRepository as RepositoryAbstraction } from "./abstractions.js";
4
+ import { GetLockRecordRepository } from "./abstractions.js";
5
5
  import { RecordLockingConfig, RecordLockingModel } from "../../domain/abstractions.js";
6
6
  import { LockRecord } from "../../domain/LockRecord.js";
7
7
  import { LockRecordNotFoundError, LockRecordPersistenceError } from "../../domain/errors.js";
8
8
  import { createLockRecordDatabaseId } from "../../utils/lockRecordDatabaseId.js";
9
9
  class GetLockRecordRepositoryImpl {
10
- constructor(model, config, getEntryById) {
11
- this.model = model;
12
- this.config = config;
13
- this.getEntryById = getEntryById;
14
- }
15
- async get(id) {
16
- const recordId = createLockRecordDatabaseId(id);
17
- const entryId = createIdentifier({
18
- id: recordId,
19
- version: 1
20
- });
21
- const result = await this.getEntryById.execute(this.model, entryId);
22
- if (result.isFail()) {
23
- if (result.error.code === "Cms/Entry/NotFound") {
24
- return Result.fail(new LockRecordNotFoundError());
25
- }
26
- return Result.fail(new LockRecordPersistenceError(result.error));
10
+ constructor(model, config, getEntryById){
11
+ this.model = model;
12
+ this.config = config;
13
+ this.getEntryById = getEntryById;
14
+ }
15
+ async get(id) {
16
+ const recordId = createLockRecordDatabaseId(id);
17
+ const entryId = createIdentifier({
18
+ id: recordId,
19
+ version: 1
20
+ });
21
+ const result = await this.getEntryById.execute(this.model, entryId);
22
+ if (result.isFail()) {
23
+ if ("Cms/Entry/NotFound" === result.error.code) return Result.fail(new LockRecordNotFoundError());
24
+ return Result.fail(new LockRecordPersistenceError(result.error));
25
+ }
26
+ const entry = result.value;
27
+ return Result.ok(new LockRecord(entry, this.config.timeout));
27
28
  }
28
- const entry = result.value;
29
- return Result.ok(new LockRecord(entry, this.config.timeout));
30
- }
31
29
  }
32
- export const GetLockRecordRepository = RepositoryAbstraction.createImplementation({
33
- implementation: GetLockRecordRepositoryImpl,
34
- dependencies: [RecordLockingModel, RecordLockingConfig, GetEntryByIdUseCase]
30
+ const GetLockRecordRepository_GetLockRecordRepository = GetLockRecordRepository.createImplementation({
31
+ implementation: GetLockRecordRepositoryImpl,
32
+ dependencies: [
33
+ RecordLockingModel,
34
+ RecordLockingConfig,
35
+ GetEntryByIdUseCase
36
+ ]
35
37
  });
38
+ export { GetLockRecordRepository_GetLockRecordRepository as GetLockRecordRepository };
36
39
 
37
40
  //# sourceMappingURL=GetLockRecordRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","GetEntryByIdUseCase","createIdentifier","GetLockRecordRepository","RepositoryAbstraction","RecordLockingConfig","RecordLockingModel","LockRecord","LockRecordNotFoundError","LockRecordPersistenceError","createLockRecordDatabaseId","GetLockRecordRepositoryImpl","constructor","model","config","getEntryById","get","id","recordId","entryId","version","result","execute","isFail","error","code","fail","entry","value","ok","timeout","createImplementation","implementation","dependencies"],"sources":["GetLockRecordRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { GetLockRecordRepository 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 { LockRecordNotFoundError, LockRecordPersistenceError } from \"~/domain/errors.js\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId.js\";\n\nclass GetLockRecordRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private model: RecordLockingModel.Interface,\n private config: RecordLockingConfig.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface\n ) {}\n\n async get(id: string): Promise<Result<ILockRecord, RepositoryAbstraction.Error>> {\n const recordId = createLockRecordDatabaseId(id);\n const entryId = createIdentifier({\n id: recordId,\n version: 1\n });\n\n const result = await this.getEntryById.execute<LockRecordValues>(this.model, entryId);\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new LockRecordNotFoundError());\n }\n\n return Result.fail(new LockRecordPersistenceError(result.error));\n }\n\n const entry = result.value;\n\n return Result.ok(new LockRecord(entry, this.config.timeout));\n }\n}\n\nexport const GetLockRecordRepository = RepositoryAbstraction.createImplementation({\n implementation: GetLockRecordRepositoryImpl,\n dependencies: [RecordLockingModel, RecordLockingConfig, GetEntryByIdUseCase]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,mBAAmB,QAAQ,6DAA6D;AACjG,SAASC,gBAAgB,QAAQ,eAAe;AAChD,SAASC,uBAAuB,IAAIC,qBAAqB;AACzD,SAASC,mBAAmB,EAAEC,kBAAkB;AAEhD,SAASC,UAAU;AAEnB,SAASC,uBAAuB,EAAEC,0BAA0B;AAC5D,SAASC,0BAA0B;AAEnC,MAAMC,2BAA2B,CAA4C;EACzEC,WAAWA,CACCC,KAAmC,EACnCC,MAAqC,EACrCC,YAA2C,EACrD;IAAA,KAHUF,KAAmC,GAAnCA,KAAmC;IAAA,KACnCC,MAAqC,GAArCA,MAAqC;IAAA,KACrCC,YAA2C,GAA3CA,YAA2C;EACpD;EAEH,MAAMC,GAAGA,CAACC,EAAU,EAA6D;IAC7E,MAAMC,QAAQ,GAAGR,0BAA0B,CAACO,EAAE,CAAC;IAC/C,MAAME,OAAO,GAAGjB,gBAAgB,CAAC;MAC7Be,EAAE,EAAEC,QAAQ;MACZE,OAAO,EAAE;IACb,CAAC,CAAC;IAEF,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACN,YAAY,CAACO,OAAO,CAAmB,IAAI,CAACT,KAAK,EAAEM,OAAO,CAAC;IAErF,IAAIE,MAAM,CAACE,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIF,MAAM,CAACG,KAAK,CAACC,IAAI,KAAK,oBAAoB,EAAE;QAC5C,OAAOzB,MAAM,CAAC0B,IAAI,CAAC,IAAIlB,uBAAuB,CAAC,CAAC,CAAC;MACrD;MAEA,OAAOR,MAAM,CAAC0B,IAAI,CAAC,IAAIjB,0BAA0B,CAACY,MAAM,CAACG,KAAK,CAAC,CAAC;IACpE;IAEA,MAAMG,KAAK,GAAGN,MAAM,CAACO,KAAK;IAE1B,OAAO5B,MAAM,CAAC6B,EAAE,CAAC,IAAItB,UAAU,CAACoB,KAAK,EAAE,IAAI,CAACb,MAAM,CAACgB,OAAO,CAAC,CAAC;EAChE;AACJ;AAEA,OAAO,MAAM3B,uBAAuB,GAAGC,qBAAqB,CAAC2B,oBAAoB,CAAC;EAC9EC,cAAc,EAAErB,2BAA2B;EAC3CsB,YAAY,EAAE,CAAC3B,kBAAkB,EAAED,mBAAmB,EAAEJ,mBAAmB;AAC/E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/GetLockRecord/GetLockRecordRepository.js","sources":["../../../src/features/GetLockRecord/GetLockRecordRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport { GetLockRecordRepository 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 { LockRecordNotFoundError, LockRecordPersistenceError } from \"~/domain/errors.js\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId.js\";\n\nclass GetLockRecordRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private model: RecordLockingModel.Interface,\n private config: RecordLockingConfig.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface\n ) {}\n\n async get(id: string): Promise<Result<ILockRecord, RepositoryAbstraction.Error>> {\n const recordId = createLockRecordDatabaseId(id);\n const entryId = createIdentifier({\n id: recordId,\n version: 1\n });\n\n const result = await this.getEntryById.execute<LockRecordValues>(this.model, entryId);\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotFound\") {\n return Result.fail(new LockRecordNotFoundError());\n }\n\n return Result.fail(new LockRecordPersistenceError(result.error));\n }\n\n const entry = result.value;\n\n return Result.ok(new LockRecord(entry, this.config.timeout));\n }\n}\n\nexport const GetLockRecordRepository = RepositoryAbstraction.createImplementation({\n implementation: GetLockRecordRepositoryImpl,\n dependencies: [RecordLockingModel, RecordLockingConfig, GetEntryByIdUseCase]\n});\n"],"names":["GetLockRecordRepositoryImpl","model","config","getEntryById","id","recordId","createLockRecordDatabaseId","entryId","createIdentifier","result","Result","LockRecordNotFoundError","LockRecordPersistenceError","entry","LockRecord","GetLockRecordRepository","RepositoryAbstraction","RecordLockingModel","RecordLockingConfig","GetEntryByIdUseCase"],"mappings":";;;;;;;;AAWA,MAAMA;IACF,YACYC,KAAmC,EACnCC,MAAqC,EACrCC,YAA2C,CACrD;aAHUF,KAAK,GAALA;aACAC,MAAM,GAANA;aACAC,YAAY,GAAZA;IACT;IAEH,MAAM,IAAIC,EAAU,EAA6D;QAC7E,MAAMC,WAAWC,2BAA2BF;QAC5C,MAAMG,UAAUC,iBAAiB;YAC7B,IAAIH;YACJ,SAAS;QACb;QAEA,MAAMI,SAAS,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAmB,IAAI,CAAC,KAAK,EAAEF;QAE7E,IAAIE,OAAO,MAAM,IAAI;YACjB,IAAIA,AAAsB,yBAAtBA,OAAO,KAAK,CAAC,IAAI,EACjB,OAAOC,OAAO,IAAI,CAAC,IAAIC;YAG3B,OAAOD,OAAO,IAAI,CAAC,IAAIE,2BAA2BH,OAAO,KAAK;QAClE;QAEA,MAAMI,QAAQJ,OAAO,KAAK;QAE1B,OAAOC,OAAO,EAAE,CAAC,IAAII,WAAWD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO;IAC9D;AACJ;AAEO,MAAME,kDAA0BC,wBAAAA,oBAA0C,CAAC;IAC9E,gBAAgBhB;IAChB,cAAc;QAACiB;QAAoBC;QAAqBC;KAAoB;AAChF"}
@@ -1,15 +1,18 @@
1
- import { GetLockRecordUseCase as UseCaseAbstraction, GetLockRecordRepository } from "./abstractions.js";
1
+ import { GetLockRecordRepository, GetLockRecordUseCase } from "./abstractions.js";
2
2
  class GetLockRecordUseCaseImpl {
3
- constructor(repository) {
4
- this.repository = repository;
5
- }
6
- async execute(input) {
7
- return await this.repository.get(input.id);
8
- }
3
+ constructor(repository){
4
+ this.repository = repository;
5
+ }
6
+ async execute(input) {
7
+ return await this.repository.get(input.id);
8
+ }
9
9
  }
10
- export const GetLockRecordUseCase = UseCaseAbstraction.createImplementation({
11
- implementation: GetLockRecordUseCaseImpl,
12
- dependencies: [GetLockRecordRepository]
10
+ const GetLockRecordUseCase_GetLockRecordUseCase = GetLockRecordUseCase.createImplementation({
11
+ implementation: GetLockRecordUseCaseImpl,
12
+ dependencies: [
13
+ GetLockRecordRepository
14
+ ]
13
15
  });
16
+ export { GetLockRecordUseCase_GetLockRecordUseCase as GetLockRecordUseCase };
14
17
 
15
18
  //# sourceMappingURL=GetLockRecordUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["GetLockRecordUseCase","UseCaseAbstraction","GetLockRecordRepository","GetLockRecordUseCaseImpl","constructor","repository","execute","input","get","id","createImplementation","implementation","dependencies"],"sources":["GetLockRecordUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n GetLockRecordUseCase as UseCaseAbstraction,\n GetLockRecordRepository,\n GetLockRecordInput\n} from \"./abstractions.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\n\nclass GetLockRecordUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: GetLockRecordRepository.Interface) {}\n\n async execute(\n input: GetLockRecordInput\n ): Promise<Result<ILockRecord, UseCaseAbstraction.Error>> {\n return await this.repository.get(input.id);\n }\n}\n\nexport const GetLockRecordUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetLockRecordUseCaseImpl,\n dependencies: [GetLockRecordRepository]\n});\n"],"mappings":"AACA,SACIA,oBAAoB,IAAIC,kBAAkB,EAC1CC,uBAAuB;AAK3B,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CAASC,UAA6C,EAAE;IAAA,KAA/CA,UAA6C,GAA7CA,UAA6C;EAAG;EAEpE,MAAMC,OAAOA,CACTC,KAAyB,EAC6B;IACtD,OAAO,MAAM,IAAI,CAACF,UAAU,CAACG,GAAG,CAACD,KAAK,CAACE,EAAE,CAAC;EAC9C;AACJ;AAEA,OAAO,MAAMT,oBAAoB,GAAGC,kBAAkB,CAACS,oBAAoB,CAAC;EACxEC,cAAc,EAAER,wBAAwB;EACxCS,YAAY,EAAE,CAACV,uBAAuB;AAC1C,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/GetLockRecord/GetLockRecordUseCase.js","sources":["../../../src/features/GetLockRecord/GetLockRecordUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n GetLockRecordUseCase as UseCaseAbstraction,\n GetLockRecordRepository,\n GetLockRecordInput\n} from \"./abstractions.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\n\nclass GetLockRecordUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: GetLockRecordRepository.Interface) {}\n\n async execute(\n input: GetLockRecordInput\n ): Promise<Result<ILockRecord, UseCaseAbstraction.Error>> {\n return await this.repository.get(input.id);\n }\n}\n\nexport const GetLockRecordUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetLockRecordUseCaseImpl,\n dependencies: [GetLockRecordRepository]\n});\n"],"names":["GetLockRecordUseCaseImpl","repository","input","GetLockRecordUseCase","UseCaseAbstraction","GetLockRecordRepository"],"mappings":";AAQA,MAAMA;IACF,YAAoBC,UAA6C,CAAE;aAA/CA,UAAU,GAAVA;IAAgD;IAEpE,MAAM,QACFC,KAAyB,EAC6B;QACtD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA,MAAM,EAAE;IAC7C;AACJ;AAEO,MAAMC,4CAAuBC,qBAAAA,oBAAuC,CAAC;IACxE,gBAAgBJ;IAChB,cAAc;QAACK;KAAwB;AAC3C"}
@@ -1,17 +1,6 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- // Input types
4
-
5
- /**
6
- * GetLockRecord Use Case - Retrieves a lock record for a given entry
7
- */
8
-
9
- export const GetLockRecordUseCase = createAbstraction("GetLockRecordUseCase");
10
-
11
- /**
12
- * GetLockRecordRepository - Fetches lock record from storage
13
- */
14
-
15
- export const GetLockRecordRepository = createAbstraction("GetLockRecordRepository");
2
+ const GetLockRecordUseCase = createAbstraction("GetLockRecordUseCase");
3
+ const GetLockRecordRepository = createAbstraction("GetLockRecordRepository");
4
+ export { GetLockRecordRepository, GetLockRecordUseCase };
16
5
 
17
6
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetLockRecordUseCase","GetLockRecordRepository"],"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 { LockRecordNotFoundError, type LockRecordPersistenceError } from \"~/domain/errors.js\";\n\n// Input types\nexport interface GetLockRecordInput {\n id: string;\n type: LockRecordEntryType;\n}\n\n/**\n * GetLockRecord Use Case - Retrieves a lock record for a given entry\n */\nexport interface IGetLockRecordUseCase {\n execute(input: GetLockRecordInput): Promise<Result<ILockRecord, UseCaseError>>;\n}\n\nexport interface IGetLockRecordUseCaseErrors {\n notFound: LockRecordNotFoundError;\n persistence: LockRecordPersistenceError;\n}\n\ntype UseCaseError = IGetLockRecordUseCaseErrors[keyof IGetLockRecordUseCaseErrors];\n\nexport const GetLockRecordUseCase =\n createAbstraction<IGetLockRecordUseCase>(\"GetLockRecordUseCase\");\n\nexport namespace GetLockRecordUseCase {\n export type Interface = IGetLockRecordUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * GetLockRecordRepository - Fetches lock record from storage\n */\nexport interface IGetLockRecordRepository {\n get(id: string): Promise<Result<ILockRecord, RepositoryError>>;\n}\n\nexport interface IGetLockRecordRepositoryErrors {\n notFound: LockRecordNotFoundError;\n persistence: LockRecordPersistenceError;\n}\n\ntype RepositoryError = IGetLockRecordRepositoryErrors[keyof IGetLockRecordRepositoryErrors];\n\nexport const GetLockRecordRepository =\n createAbstraction<IGetLockRecordRepository>(\"GetLockRecordRepository\");\n\nexport namespace GetLockRecordRepository {\n export type Interface = IGetLockRecordRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAMvD;;AAMA;AACA;AACA;;AAYA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAOpE;AACA;AACA;;AAYA,OAAO,MAAME,uBAAuB,GAChCF,iBAAiB,CAA2B,yBAAyB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/GetLockRecord/abstractions.js","sources":["../../../src/features/GetLockRecord/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 { LockRecordNotFoundError, type LockRecordPersistenceError } from \"~/domain/errors.js\";\n\n// Input types\nexport interface GetLockRecordInput {\n id: string;\n type: LockRecordEntryType;\n}\n\n/**\n * GetLockRecord Use Case - Retrieves a lock record for a given entry\n */\nexport interface IGetLockRecordUseCase {\n execute(input: GetLockRecordInput): Promise<Result<ILockRecord, UseCaseError>>;\n}\n\nexport interface IGetLockRecordUseCaseErrors {\n notFound: LockRecordNotFoundError;\n persistence: LockRecordPersistenceError;\n}\n\ntype UseCaseError = IGetLockRecordUseCaseErrors[keyof IGetLockRecordUseCaseErrors];\n\nexport const GetLockRecordUseCase =\n createAbstraction<IGetLockRecordUseCase>(\"GetLockRecordUseCase\");\n\nexport namespace GetLockRecordUseCase {\n export type Interface = IGetLockRecordUseCase;\n export type Error = UseCaseError;\n}\n\n/**\n * GetLockRecordRepository - Fetches lock record from storage\n */\nexport interface IGetLockRecordRepository {\n get(id: string): Promise<Result<ILockRecord, RepositoryError>>;\n}\n\nexport interface IGetLockRecordRepositoryErrors {\n notFound: LockRecordNotFoundError;\n persistence: LockRecordPersistenceError;\n}\n\ntype RepositoryError = IGetLockRecordRepositoryErrors[keyof IGetLockRecordRepositoryErrors];\n\nexport const GetLockRecordRepository =\n createAbstraction<IGetLockRecordRepository>(\"GetLockRecordRepository\");\n\nexport namespace GetLockRecordRepository {\n export type Interface = IGetLockRecordRepository;\n export type Error = RepositoryError;\n}\n"],"names":["GetLockRecordUseCase","createAbstraction","GetLockRecordRepository"],"mappings":";AA0BO,MAAMA,uBACTC,kBAAyC;AAqBtC,MAAMC,0BACTD,kBAA4C"}
@@ -1,12 +1,13 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { GetLockRecordUseCase } from "./GetLockRecordUseCase.js";
3
3
  import { GetLockRecordRepository } from "./GetLockRecordRepository.js";
4
- export const GetLockRecordFeature = createFeature({
5
- name: "GetLockRecord",
6
- register(container) {
7
- container.register(GetLockRecordUseCase);
8
- container.register(GetLockRecordRepository).inSingletonScope();
9
- }
4
+ const GetLockRecordFeature = createFeature({
5
+ name: "GetLockRecord",
6
+ register (container) {
7
+ container.register(GetLockRecordUseCase);
8
+ container.register(GetLockRecordRepository).inSingletonScope();
9
+ }
10
10
  });
11
+ export { GetLockRecordFeature };
11
12
 
12
13
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","GetLockRecordUseCase","GetLockRecordRepository","GetLockRecordFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetLockRecordUseCase } from \"./GetLockRecordUseCase.js\";\nimport { GetLockRecordRepository } from \"./GetLockRecordRepository.js\";\n\nexport const GetLockRecordFeature = createFeature({\n name: \"GetLockRecord\",\n register(container) {\n container.register(GetLockRecordUseCase);\n container.register(GetLockRecordRepository).inSingletonScope();\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAEhC,OAAO,MAAMC,oBAAoB,GAAGH,aAAa,CAAC;EAC9CI,IAAI,EAAE,eAAe;EACrBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACJ,oBAAoB,CAAC;IACxCK,SAAS,CAACD,QAAQ,CAACH,uBAAuB,CAAC,CAACK,gBAAgB,CAAC,CAAC;EAClE;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/GetLockRecord/feature.js","sources":["../../../src/features/GetLockRecord/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetLockRecordUseCase } from \"./GetLockRecordUseCase.js\";\nimport { GetLockRecordRepository } from \"./GetLockRecordRepository.js\";\n\nexport const GetLockRecordFeature = createFeature({\n name: \"GetLockRecord\",\n register(container) {\n container.register(GetLockRecordUseCase);\n container.register(GetLockRecordRepository).inSingletonScope();\n }\n});\n"],"names":["GetLockRecordFeature","createFeature","container","GetLockRecordUseCase","GetLockRecordRepository"],"mappings":";;;AAIO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE,yBAAyB,gBAAgB;IAChE;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export * from "./abstractions.js";
2
2
  export { GetLockRecordFeature } from "./feature.js";
3
-
4
- //# sourceMappingURL=index.js.map
@@ -1,39 +1,30 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { GetLockedEntryLockRecordUseCase as UseCaseAbstraction } from "./abstractions.js";
2
+ import { GetLockedEntryLockRecordUseCase } from "./abstractions.js";
3
3
  import { GetLockRecordUseCase } from "../GetLockRecord/abstractions.js";
4
4
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
5
5
  import { LockRecordNotFoundError } from "../../domain/errors.js";
6
6
  class GetLockedEntryLockRecordUseCaseImpl {
7
- constructor(getLockRecord, identityContext) {
8
- this.getLockRecord = getLockRecord;
9
- this.identityContext = identityContext;
10
- }
11
- async execute(input) {
12
- // Get the lock record
13
- const result = await this.getLockRecord.execute(input);
14
-
15
- // If not found or error, return not found error
16
- if (result.isFail()) {
17
- return Result.fail(new LockRecordNotFoundError());
7
+ constructor(getLockRecord, identityContext){
8
+ this.getLockRecord = getLockRecord;
9
+ this.identityContext = identityContext;
18
10
  }
19
- const record = result.value;
20
- const identity = this.identityContext.getIdentity();
21
-
22
- // Record is treated as "not found":
23
- // - If locked by current user
24
- // - If expired
25
- const lockedByCurrentUser = record.lockedBy.id === identity.id;
26
- if (record.isExpired() || lockedByCurrentUser) {
27
- return Result.fail(new LockRecordNotFoundError());
11
+ async execute(input) {
12
+ const result = await this.getLockRecord.execute(input);
13
+ if (result.isFail()) return Result.fail(new LockRecordNotFoundError());
14
+ const record = result.value;
15
+ const identity = this.identityContext.getIdentity();
16
+ const lockedByCurrentUser = record.lockedBy.id === identity.id;
17
+ if (record.isExpired() || lockedByCurrentUser) return Result.fail(new LockRecordNotFoundError());
18
+ return Result.ok(record);
28
19
  }
29
-
30
- // Locked by another user, return the record
31
- return Result.ok(record);
32
- }
33
20
  }
34
- export const GetLockedEntryLockRecordUseCase = UseCaseAbstraction.createImplementation({
35
- implementation: GetLockedEntryLockRecordUseCaseImpl,
36
- dependencies: [GetLockRecordUseCase, IdentityContext]
21
+ const GetLockedEntryLockRecordUseCase_GetLockedEntryLockRecordUseCase = GetLockedEntryLockRecordUseCase.createImplementation({
22
+ implementation: GetLockedEntryLockRecordUseCaseImpl,
23
+ dependencies: [
24
+ GetLockRecordUseCase,
25
+ IdentityContext
26
+ ]
37
27
  });
28
+ export { GetLockedEntryLockRecordUseCase_GetLockedEntryLockRecordUseCase as GetLockedEntryLockRecordUseCase };
38
29
 
39
30
  //# sourceMappingURL=GetLockedEntryLockRecordUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","GetLockedEntryLockRecordUseCase","UseCaseAbstraction","GetLockRecordUseCase","IdentityContext","LockRecordNotFoundError","GetLockedEntryLockRecordUseCaseImpl","constructor","getLockRecord","identityContext","execute","input","result","isFail","fail","record","value","identity","getIdentity","lockedByCurrentUser","lockedBy","id","isExpired","ok","createImplementation","implementation","dependencies"],"sources":["GetLockedEntryLockRecordUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n GetLockedEntryLockRecordUseCase as UseCaseAbstraction,\n GetLockedEntryLockRecordInput\n} from \"./abstractions.js\";\nimport { GetLockRecordUseCase } from \"../GetLockRecord/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport { LockRecordNotFoundError } from \"~/domain/errors.js\";\n\nclass GetLockedEntryLockRecordUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private getLockRecord: GetLockRecordUseCase.Interface,\n private identityContext: IdentityContext.Interface\n ) {}\n\n async execute(\n input: GetLockedEntryLockRecordInput\n ): Promise<Result<ILockRecord, UseCaseAbstraction.Error>> {\n // Get the lock record\n const result = await this.getLockRecord.execute(input);\n\n // If not found or error, return not found error\n if (result.isFail()) {\n return Result.fail(new LockRecordNotFoundError());\n }\n\n const record = result.value;\n const identity = this.identityContext.getIdentity();\n\n // Record is treated as \"not found\":\n // - If locked by current user\n // - If expired\n const lockedByCurrentUser = record.lockedBy.id === identity.id;\n\n if (record.isExpired() || lockedByCurrentUser) {\n return Result.fail(new LockRecordNotFoundError());\n }\n\n // Locked by another user, return the record\n return Result.ok(record);\n }\n}\n\nexport const GetLockedEntryLockRecordUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetLockedEntryLockRecordUseCaseImpl,\n dependencies: [GetLockRecordUseCase, IdentityContext]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SACIC,+BAA+B,IAAIC,kBAAkB;AAGzD,SAASC,oBAAoB;AAC7B,SAASC,eAAe,QAAQ,6DAA6D;AAE7F,SAASC,uBAAuB;AAEhC,MAAMC,mCAAmC,CAAyC;EAC9EC,WAAWA,CACCC,aAA6C,EAC7CC,eAA0C,EACpD;IAAA,KAFUD,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,eAA0C,GAA1CA,eAA0C;EACnD;EAEH,MAAMC,OAAOA,CACTC,KAAoC,EACkB;IACtD;IACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,aAAa,CAACE,OAAO,CAACC,KAAK,CAAC;;IAEtD;IACA,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOb,MAAM,CAACc,IAAI,CAAC,IAAIT,uBAAuB,CAAC,CAAC,CAAC;IACrD;IAEA,MAAMU,MAAM,GAAGH,MAAM,CAACI,KAAK;IAC3B,MAAMC,QAAQ,GAAG,IAAI,CAACR,eAAe,CAACS,WAAW,CAAC,CAAC;;IAEnD;IACA;IACA;IACA,MAAMC,mBAAmB,GAAGJ,MAAM,CAACK,QAAQ,CAACC,EAAE,KAAKJ,QAAQ,CAACI,EAAE;IAE9D,IAAIN,MAAM,CAACO,SAAS,CAAC,CAAC,IAAIH,mBAAmB,EAAE;MAC3C,OAAOnB,MAAM,CAACc,IAAI,CAAC,IAAIT,uBAAuB,CAAC,CAAC,CAAC;IACrD;;IAEA;IACA,OAAOL,MAAM,CAACuB,EAAE,CAACR,MAAM,CAAC;EAC5B;AACJ;AAEA,OAAO,MAAMd,+BAA+B,GAAGC,kBAAkB,CAACsB,oBAAoB,CAAC;EACnFC,cAAc,EAAEnB,mCAAmC;EACnDoB,YAAY,EAAE,CAACvB,oBAAoB,EAAEC,eAAe;AACxD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js","sources":["../../../src/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n GetLockedEntryLockRecordUseCase as UseCaseAbstraction,\n GetLockedEntryLockRecordInput\n} from \"./abstractions.js\";\nimport { GetLockRecordUseCase } from \"../GetLockRecord/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport type { ILockRecord } from \"~/domain/LockRecord.js\";\nimport { LockRecordNotFoundError } from \"~/domain/errors.js\";\n\nclass GetLockedEntryLockRecordUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private getLockRecord: GetLockRecordUseCase.Interface,\n private identityContext: IdentityContext.Interface\n ) {}\n\n async execute(\n input: GetLockedEntryLockRecordInput\n ): Promise<Result<ILockRecord, UseCaseAbstraction.Error>> {\n // Get the lock record\n const result = await this.getLockRecord.execute(input);\n\n // If not found or error, return not found error\n if (result.isFail()) {\n return Result.fail(new LockRecordNotFoundError());\n }\n\n const record = result.value;\n const identity = this.identityContext.getIdentity();\n\n // Record is treated as \"not found\":\n // - If locked by current user\n // - If expired\n const lockedByCurrentUser = record.lockedBy.id === identity.id;\n\n if (record.isExpired() || lockedByCurrentUser) {\n return Result.fail(new LockRecordNotFoundError());\n }\n\n // Locked by another user, return the record\n return Result.ok(record);\n }\n}\n\nexport const GetLockedEntryLockRecordUseCase = UseCaseAbstraction.createImplementation({\n implementation: GetLockedEntryLockRecordUseCaseImpl,\n dependencies: [GetLockRecordUseCase, IdentityContext]\n});\n"],"names":["GetLockedEntryLockRecordUseCaseImpl","getLockRecord","identityContext","input","result","Result","LockRecordNotFoundError","record","identity","lockedByCurrentUser","GetLockedEntryLockRecordUseCase","UseCaseAbstraction","GetLockRecordUseCase","IdentityContext"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,aAA6C,EAC7CC,eAA0C,CACpD;aAFUD,aAAa,GAAbA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAM,QACFC,KAAoC,EACkB;QAEtD,MAAMC,SAAS,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAACD;QAGhD,IAAIC,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAMC,SAASH,OAAO,KAAK;QAC3B,MAAMI,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QAKjD,MAAMC,sBAAsBF,OAAO,QAAQ,CAAC,EAAE,KAAKC,SAAS,EAAE;QAE9D,IAAID,OAAO,SAAS,MAAME,qBACtB,OAAOJ,OAAO,IAAI,CAAC,IAAIC;QAI3B,OAAOD,OAAO,EAAE,CAACE;IACrB;AACJ;AAEO,MAAMG,kEAAkCC,gCAAAA,oBAAuC,CAAC;IACnF,gBAAgBX;IAChB,cAAc;QAACY;QAAsBC;KAAgB;AACzD"}
@@ -1,13 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- // Input type
4
-
5
- /**
6
- * GetLockedEntryLockRecord Use Case
7
- * Returns lock record ONLY if entry is locked by someone OTHER than current user
8
- * Returns error if: not found, expired, or locked by current user
9
- */
10
-
11
- export const GetLockedEntryLockRecordUseCase = createAbstraction("GetLockedEntryLockRecordUseCase");
2
+ const GetLockedEntryLockRecordUseCase = createAbstraction("GetLockedEntryLockRecordUseCase");
3
+ export { GetLockedEntryLockRecordUseCase };
12
4
 
13
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetLockedEntryLockRecordUseCase"],"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 { LockRecordNotFoundError } from \"~/domain/errors.js\";\n\n// Input type\nexport interface GetLockedEntryLockRecordInput {\n id: string;\n type: LockRecordEntryType;\n}\n\n/**\n * GetLockedEntryLockRecord Use Case\n * Returns lock record ONLY if entry is locked by someone OTHER than current user\n * Returns error if: not found, expired, or locked by current user\n */\nexport interface IGetLockedEntryLockRecordUseCase {\n execute(input: GetLockedEntryLockRecordInput): Promise<Result<ILockRecord, UseCaseError>>;\n}\n\nexport interface IGetLockedEntryLockRecordUseCaseErrors {\n notFound: LockRecordNotFoundError;\n}\n\ntype UseCaseError =\n IGetLockedEntryLockRecordUseCaseErrors[keyof IGetLockedEntryLockRecordUseCaseErrors];\n\nexport const GetLockedEntryLockRecordUseCase = createAbstraction<IGetLockedEntryLockRecordUseCase>(\n \"GetLockedEntryLockRecordUseCase\"\n);\n\nexport namespace GetLockedEntryLockRecordUseCase {\n export type Interface = IGetLockedEntryLockRecordUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAMvD;;AAMA;AACA;AACA;AACA;AACA;;AAYA,OAAO,MAAMC,+BAA+B,GAAGD,iBAAiB,CAC5D,iCACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/GetLockedEntryLockRecord/abstractions.js","sources":["../../../src/features/GetLockedEntryLockRecord/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 { LockRecordNotFoundError } from \"~/domain/errors.js\";\n\n// Input type\nexport interface GetLockedEntryLockRecordInput {\n id: string;\n type: LockRecordEntryType;\n}\n\n/**\n * GetLockedEntryLockRecord Use Case\n * Returns lock record ONLY if entry is locked by someone OTHER than current user\n * Returns error if: not found, expired, or locked by current user\n */\nexport interface IGetLockedEntryLockRecordUseCase {\n execute(input: GetLockedEntryLockRecordInput): Promise<Result<ILockRecord, UseCaseError>>;\n}\n\nexport interface IGetLockedEntryLockRecordUseCaseErrors {\n notFound: LockRecordNotFoundError;\n}\n\ntype UseCaseError =\n IGetLockedEntryLockRecordUseCaseErrors[keyof IGetLockedEntryLockRecordUseCaseErrors];\n\nexport const GetLockedEntryLockRecordUseCase = createAbstraction<IGetLockedEntryLockRecordUseCase>(\n \"GetLockedEntryLockRecordUseCase\"\n);\n\nexport namespace GetLockedEntryLockRecordUseCase {\n export type Interface = IGetLockedEntryLockRecordUseCase;\n export type Error = UseCaseError;\n}\n"],"names":["GetLockedEntryLockRecordUseCase","createAbstraction"],"mappings":";AA4BO,MAAMA,kCAAkCC,kBAC3C"}
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { GetLockedEntryLockRecordUseCase } from "./GetLockedEntryLockRecordUseCase.js";
3
- export const GetLockedEntryLockRecordFeature = createFeature({
4
- name: "GetLockedEntryLockRecord",
5
- register(container) {
6
- container.register(GetLockedEntryLockRecordUseCase);
7
- }
3
+ const GetLockedEntryLockRecordFeature = createFeature({
4
+ name: "GetLockedEntryLockRecord",
5
+ register (container) {
6
+ container.register(GetLockedEntryLockRecordUseCase);
7
+ }
8
8
  });
9
+ export { GetLockedEntryLockRecordFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","GetLockedEntryLockRecordUseCase","GetLockedEntryLockRecordFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetLockedEntryLockRecordUseCase } from \"./GetLockedEntryLockRecordUseCase.js\";\n\nexport const GetLockedEntryLockRecordFeature = createFeature({\n name: \"GetLockedEntryLockRecord\",\n register(container) {\n container.register(GetLockedEntryLockRecordUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,+BAA+B;AAExC,OAAO,MAAMC,+BAA+B,GAAGF,aAAa,CAAC;EACzDG,IAAI,EAAE,0BAA0B;EAChCC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,+BAA+B,CAAC;EACvD;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/GetLockedEntryLockRecord/feature.js","sources":["../../../src/features/GetLockedEntryLockRecord/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GetLockedEntryLockRecordUseCase } from \"./GetLockedEntryLockRecordUseCase.js\";\n\nexport const GetLockedEntryLockRecordFeature = createFeature({\n name: \"GetLockedEntryLockRecord\",\n register(container) {\n container.register(GetLockedEntryLockRecordUseCase);\n }\n});\n"],"names":["GetLockedEntryLockRecordFeature","createFeature","container","GetLockedEntryLockRecordUseCase"],"mappings":";;AAGO,MAAMA,kCAAkCC,cAAc;IACzD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -1,4 +1,2 @@
1
1
  export * from "./abstractions.js";
2
2
  export * from "./feature.js";
3
-
4
- //# sourceMappingURL=index.js.map
@@ -1,39 +1,33 @@
1
1
  import { Result } from "@webiny/feature/api";
2
- import { IsEntryLockedUseCase as UseCaseAbstraction } from "./abstractions.js";
2
+ import { IsEntryLockedUseCase } from "./abstractions.js";
3
3
  import { GetLockRecordUseCase } from "../GetLockRecord/abstractions.js";
4
4
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
5
5
  import { LockRecordNotFoundError } from "../../domain/errors.js";
6
6
  class IsEntryLockedUseCaseImpl {
7
- constructor(getLockRecord, identityContext) {
8
- this.getLockRecord = getLockRecord;
9
- this.identityContext = identityContext;
10
- }
11
- async execute(input) {
12
- const result = await this.getLockRecord.execute(input);
13
- if (result.isFail()) {
14
- // If not found, entry is not locked
15
- if (result.error instanceof LockRecordNotFoundError) {
16
- return Result.ok(false);
17
- }
18
- // Propagate other errors
19
- return Result.fail(result.error);
7
+ constructor(getLockRecord, identityContext){
8
+ this.getLockRecord = getLockRecord;
9
+ this.identityContext = identityContext;
20
10
  }
21
- const record = result.value;
22
-
23
- // If expired, entry is not locked
24
- if (record.isExpired()) {
25
- return Result.ok(false);
11
+ async execute(input) {
12
+ const result = await this.getLockRecord.execute(input);
13
+ if (result.isFail()) {
14
+ if (result.error instanceof LockRecordNotFoundError) return Result.ok(false);
15
+ return Result.fail(result.error);
16
+ }
17
+ const record = result.value;
18
+ if (record.isExpired()) return Result.ok(false);
19
+ const identity = this.identityContext.getIdentity();
20
+ const isLockedByOther = record.lockedBy.id !== identity.id;
21
+ return Result.ok(isLockedByOther);
26
22
  }
27
-
28
- // Check if locked by someone else
29
- const identity = this.identityContext.getIdentity();
30
- const isLockedByOther = record.lockedBy.id !== identity.id;
31
- return Result.ok(isLockedByOther);
32
- }
33
23
  }
34
- export const IsEntryLockedUseCase = UseCaseAbstraction.createImplementation({
35
- implementation: IsEntryLockedUseCaseImpl,
36
- dependencies: [GetLockRecordUseCase, IdentityContext]
24
+ const IsEntryLockedUseCase_IsEntryLockedUseCase = IsEntryLockedUseCase.createImplementation({
25
+ implementation: IsEntryLockedUseCaseImpl,
26
+ dependencies: [
27
+ GetLockRecordUseCase,
28
+ IdentityContext
29
+ ]
37
30
  });
31
+ export { IsEntryLockedUseCase_IsEntryLockedUseCase as IsEntryLockedUseCase };
38
32
 
39
33
  //# sourceMappingURL=IsEntryLockedUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","IsEntryLockedUseCase","UseCaseAbstraction","GetLockRecordUseCase","IdentityContext","LockRecordNotFoundError","IsEntryLockedUseCaseImpl","constructor","getLockRecord","identityContext","execute","input","result","isFail","error","ok","fail","record","value","isExpired","identity","getIdentity","isLockedByOther","lockedBy","id","createImplementation","implementation","dependencies"],"sources":["IsEntryLockedUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IsEntryLockedUseCase as UseCaseAbstraction, IsEntryLockedInput } from \"./abstractions.js\";\nimport { GetLockRecordUseCase } from \"../GetLockRecord/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { LockRecordNotFoundError } from \"~/domain/errors.js\";\n\nclass IsEntryLockedUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private getLockRecord: GetLockRecordUseCase.Interface,\n private identityContext: IdentityContext.Interface\n ) {}\n\n async execute(input: IsEntryLockedInput): Promise<Result<boolean, UseCaseAbstraction.Error>> {\n const result = await this.getLockRecord.execute(input);\n\n if (result.isFail()) {\n // If not found, entry is not locked\n if (result.error instanceof LockRecordNotFoundError) {\n return Result.ok(false);\n }\n // Propagate other errors\n return Result.fail(result.error);\n }\n\n const record = result.value;\n\n // If expired, entry is not locked\n if (record.isExpired()) {\n return Result.ok(false);\n }\n\n // Check if locked by someone else\n const identity = this.identityContext.getIdentity();\n const isLockedByOther = record.lockedBy.id !== identity.id;\n\n return Result.ok(isLockedByOther);\n }\n}\n\nexport const IsEntryLockedUseCase = UseCaseAbstraction.createImplementation({\n implementation: IsEntryLockedUseCaseImpl,\n dependencies: [GetLockRecordUseCase, IdentityContext]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,oBAAoB,IAAIC,kBAAkB;AACnD,SAASC,oBAAoB;AAC7B,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,uBAAuB;AAEhC,MAAMC,wBAAwB,CAAyC;EACnEC,WAAWA,CACCC,aAA6C,EAC7CC,eAA0C,EACpD;IAAA,KAFUD,aAA6C,GAA7CA,aAA6C;IAAA,KAC7CC,eAA0C,GAA1CA,eAA0C;EACnD;EAEH,MAAMC,OAAOA,CAACC,KAAyB,EAAsD;IACzF,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,aAAa,CAACE,OAAO,CAACC,KAAK,CAAC;IAEtD,IAAIC,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACjB;MACA,IAAID,MAAM,CAACE,KAAK,YAAYT,uBAAuB,EAAE;QACjD,OAAOL,MAAM,CAACe,EAAE,CAAC,KAAK,CAAC;MAC3B;MACA;MACA,OAAOf,MAAM,CAACgB,IAAI,CAACJ,MAAM,CAACE,KAAK,CAAC;IACpC;IAEA,MAAMG,MAAM,GAAGL,MAAM,CAACM,KAAK;;IAE3B;IACA,IAAID,MAAM,CAACE,SAAS,CAAC,CAAC,EAAE;MACpB,OAAOnB,MAAM,CAACe,EAAE,CAAC,KAAK,CAAC;IAC3B;;IAEA;IACA,MAAMK,QAAQ,GAAG,IAAI,CAACX,eAAe,CAACY,WAAW,CAAC,CAAC;IACnD,MAAMC,eAAe,GAAGL,MAAM,CAACM,QAAQ,CAACC,EAAE,KAAKJ,QAAQ,CAACI,EAAE;IAE1D,OAAOxB,MAAM,CAACe,EAAE,CAACO,eAAe,CAAC;EACrC;AACJ;AAEA,OAAO,MAAMrB,oBAAoB,GAAGC,kBAAkB,CAACuB,oBAAoB,CAAC;EACxEC,cAAc,EAAEpB,wBAAwB;EACxCqB,YAAY,EAAE,CAACxB,oBAAoB,EAAEC,eAAe;AACxD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/IsEntryLocked/IsEntryLockedUseCase.js","sources":["../../../src/features/IsEntryLocked/IsEntryLockedUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IsEntryLockedUseCase as UseCaseAbstraction, IsEntryLockedInput } from \"./abstractions.js\";\nimport { GetLockRecordUseCase } from \"../GetLockRecord/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { LockRecordNotFoundError } from \"~/domain/errors.js\";\n\nclass IsEntryLockedUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private getLockRecord: GetLockRecordUseCase.Interface,\n private identityContext: IdentityContext.Interface\n ) {}\n\n async execute(input: IsEntryLockedInput): Promise<Result<boolean, UseCaseAbstraction.Error>> {\n const result = await this.getLockRecord.execute(input);\n\n if (result.isFail()) {\n // If not found, entry is not locked\n if (result.error instanceof LockRecordNotFoundError) {\n return Result.ok(false);\n }\n // Propagate other errors\n return Result.fail(result.error);\n }\n\n const record = result.value;\n\n // If expired, entry is not locked\n if (record.isExpired()) {\n return Result.ok(false);\n }\n\n // Check if locked by someone else\n const identity = this.identityContext.getIdentity();\n const isLockedByOther = record.lockedBy.id !== identity.id;\n\n return Result.ok(isLockedByOther);\n }\n}\n\nexport const IsEntryLockedUseCase = UseCaseAbstraction.createImplementation({\n implementation: IsEntryLockedUseCaseImpl,\n dependencies: [GetLockRecordUseCase, IdentityContext]\n});\n"],"names":["IsEntryLockedUseCaseImpl","getLockRecord","identityContext","input","result","LockRecordNotFoundError","Result","record","identity","isLockedByOther","IsEntryLockedUseCase","UseCaseAbstraction","GetLockRecordUseCase","IdentityContext"],"mappings":";;;;;AAMA,MAAMA;IACF,YACYC,aAA6C,EAC7CC,eAA0C,CACpD;aAFUD,aAAa,GAAbA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAM,QAAQC,KAAyB,EAAsD;QACzF,MAAMC,SAAS,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAACD;QAEhD,IAAIC,OAAO,MAAM,IAAI;YAEjB,IAAIA,OAAO,KAAK,YAAYC,yBACxB,OAAOC,OAAO,EAAE,CAAC;YAGrB,OAAOA,OAAO,IAAI,CAACF,OAAO,KAAK;QACnC;QAEA,MAAMG,SAASH,OAAO,KAAK;QAG3B,IAAIG,OAAO,SAAS,IAChB,OAAOD,OAAO,EAAE,CAAC;QAIrB,MAAME,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,MAAMC,kBAAkBF,OAAO,QAAQ,CAAC,EAAE,KAAKC,SAAS,EAAE;QAE1D,OAAOF,OAAO,EAAE,CAACG;IACrB;AACJ;AAEO,MAAMC,4CAAuBC,qBAAAA,oBAAuC,CAAC;IACxE,gBAAgBX;IAChB,cAAc;QAACY;QAAsBC;KAAgB;AACzD"}
@@ -1,12 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- // Input types
4
-
5
- /**
6
- * IsEntryLocked Use Case - Checks if an entry is locked by another user
7
- * Returns true if locked by someone else, false if not locked or locked by current user
8
- */
9
-
10
- export const IsEntryLockedUseCase = createAbstraction("IsEntryLockedUseCase");
2
+ const IsEntryLockedUseCase = createAbstraction("IsEntryLockedUseCase");
3
+ export { IsEntryLockedUseCase };
11
4
 
12
5
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","IsEntryLockedUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { LockRecordEntryType } from \"~/domain/types.js\";\nimport type { LockRecordPersistenceError } from \"~/domain/errors.js\";\n\n// Input types\nexport interface IsEntryLockedInput {\n id: string;\n type: LockRecordEntryType;\n}\n\n/**\n * IsEntryLocked Use Case - Checks if an entry is locked by another user\n * Returns true if locked by someone else, false if not locked or locked by current user\n */\nexport interface IIsEntryLockedUseCase {\n execute(input: IsEntryLockedInput): Promise<Result<boolean, UseCaseError>>;\n}\n\nexport interface IIsEntryLockedUseCaseErrors {\n persistence: LockRecordPersistenceError;\n}\n\ntype UseCaseError = IIsEntryLockedUseCaseErrors[keyof IIsEntryLockedUseCaseErrors];\n\nexport const IsEntryLockedUseCase =\n createAbstraction<IIsEntryLockedUseCase>(\"IsEntryLockedUseCase\");\n\nexport namespace IsEntryLockedUseCase {\n export type Interface = IIsEntryLockedUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AAKvD;;AAMA;AACA;AACA;AACA;;AAWA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/IsEntryLocked/abstractions.js","sources":["../../../src/features/IsEntryLocked/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { LockRecordEntryType } from \"~/domain/types.js\";\nimport type { LockRecordPersistenceError } from \"~/domain/errors.js\";\n\n// Input types\nexport interface IsEntryLockedInput {\n id: string;\n type: LockRecordEntryType;\n}\n\n/**\n * IsEntryLocked Use Case - Checks if an entry is locked by another user\n * Returns true if locked by someone else, false if not locked or locked by current user\n */\nexport interface IIsEntryLockedUseCase {\n execute(input: IsEntryLockedInput): Promise<Result<boolean, UseCaseError>>;\n}\n\nexport interface IIsEntryLockedUseCaseErrors {\n persistence: LockRecordPersistenceError;\n}\n\ntype UseCaseError = IIsEntryLockedUseCaseErrors[keyof IIsEntryLockedUseCaseErrors];\n\nexport const IsEntryLockedUseCase =\n createAbstraction<IIsEntryLockedUseCase>(\"IsEntryLockedUseCase\");\n\nexport namespace IsEntryLockedUseCase {\n export type Interface = IIsEntryLockedUseCase;\n export type Error = UseCaseError;\n}\n"],"names":["IsEntryLockedUseCase","createAbstraction"],"mappings":";AAyBO,MAAMA,uBACTC,kBAAyC"}
@@ -1,10 +1,11 @@
1
1
  import { createFeature } from "@webiny/feature/api";
2
2
  import { IsEntryLockedUseCase } from "./IsEntryLockedUseCase.js";
3
- export const IsEntryLockedFeature = createFeature({
4
- name: "IsEntryLocked",
5
- register(container) {
6
- container.register(IsEntryLockedUseCase);
7
- }
3
+ const IsEntryLockedFeature = createFeature({
4
+ name: "IsEntryLocked",
5
+ register (container) {
6
+ container.register(IsEntryLockedUseCase);
7
+ }
8
8
  });
9
+ export { IsEntryLockedFeature };
9
10
 
10
11
  //# sourceMappingURL=feature.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFeature","IsEntryLockedUseCase","IsEntryLockedFeature","name","register","container"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { IsEntryLockedUseCase } from \"./IsEntryLockedUseCase.js\";\n\nexport const IsEntryLockedFeature = createFeature({\n name: \"IsEntryLocked\",\n register(container) {\n container.register(IsEntryLockedUseCase);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,oBAAoB;AAE7B,OAAO,MAAMC,oBAAoB,GAAGF,aAAa,CAAC;EAC9CG,IAAI,EAAE,eAAe;EACrBC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,oBAAoB,CAAC;EAC5C;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/IsEntryLocked/feature.js","sources":["../../../src/features/IsEntryLocked/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { IsEntryLockedUseCase } from \"./IsEntryLockedUseCase.js\";\n\nexport const IsEntryLockedFeature = createFeature({\n name: \"IsEntryLocked\",\n register(container) {\n container.register(IsEntryLockedUseCase);\n }\n});\n"],"names":["IsEntryLockedFeature","createFeature","container","IsEntryLockedUseCase"],"mappings":";;AAGO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -1,3 +1 @@
1
1
  export * from "./abstractions.js";
2
-
3
- //# sourceMappingURL=index.js.map
@@ -2,41 +2,41 @@ import { Result } from "@webiny/feature/api";
2
2
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
3
3
  import { WebsocketService } from "@webiny/api-websockets/features/WebsocketService/index.js";
4
4
  import { parseIdentifier } from "@webiny/utils";
5
- import { KickOutCurrentUserUseCase as UseCaseAbstraction } from "./abstractions.js";
5
+ import { KickOutCurrentUserUseCase } from "./abstractions.js";
6
6
  class KickOutCurrentUserUseCaseImpl {
7
- constructor(identityContext, websocketService) {
8
- this.identityContext = identityContext;
9
- this.websocketService = websocketService;
10
- }
11
- async execute(record) {
12
- if (!this.websocketService) {
13
- return Result.ok();
7
+ constructor(identityContext, websocketService){
8
+ this.identityContext = identityContext;
9
+ this.websocketService = websocketService;
10
+ }
11
+ async execute(record) {
12
+ if (!this.websocketService) return Result.ok();
13
+ const { lockedBy, id } = record;
14
+ const { id: entryId } = parseIdentifier(id);
15
+ const identity = this.identityContext.getIdentity();
16
+ await this.websocketService.send({
17
+ id: lockedBy.id
18
+ }, {
19
+ action: `recordLocking.entry.kickOut.${entryId}`,
20
+ data: {
21
+ record: record.toObject(),
22
+ user: identity
23
+ }
24
+ });
25
+ return Result.ok();
14
26
  }
15
- const {
16
- lockedBy,
17
- id
18
- } = record;
19
- const {
20
- id: entryId
21
- } = parseIdentifier(id);
22
- const identity = this.identityContext.getIdentity();
23
- await this.websocketService.send({
24
- id: lockedBy.id
25
- }, {
26
- action: `recordLocking.entry.kickOut.${entryId}`,
27
- data: {
28
- record: record.toObject(),
29
- user: identity
30
- }
31
- });
32
- return Result.ok();
33
- }
34
27
  }
35
- export const KickOutCurrentUserUseCase = UseCaseAbstraction.createImplementation({
36
- implementation: KickOutCurrentUserUseCaseImpl,
37
- dependencies: [IdentityContext, [WebsocketService, {
38
- optional: true
39
- }]]
28
+ const KickOutCurrentUserUseCase_KickOutCurrentUserUseCase = KickOutCurrentUserUseCase.createImplementation({
29
+ implementation: KickOutCurrentUserUseCaseImpl,
30
+ dependencies: [
31
+ IdentityContext,
32
+ [
33
+ WebsocketService,
34
+ {
35
+ optional: true
36
+ }
37
+ ]
38
+ ]
40
39
  });
40
+ export { KickOutCurrentUserUseCase_KickOutCurrentUserUseCase as KickOutCurrentUserUseCase };
41
41
 
42
42
  //# sourceMappingURL=KickOutCurrentUserUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Result","IdentityContext","WebsocketService","parseIdentifier","KickOutCurrentUserUseCase","UseCaseAbstraction","KickOutCurrentUserUseCaseImpl","constructor","identityContext","websocketService","execute","record","ok","lockedBy","id","entryId","identity","getIdentity","send","action","data","toObject","user","createImplementation","implementation","dependencies","optional"],"sources":["KickOutCurrentUserUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { WebsocketService } from \"@webiny/api-websockets/features/WebsocketService/index.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { KickOutCurrentUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { ILockRecord } from \"~/domain/index.js\";\n\nclass KickOutCurrentUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private websocketService?: WebsocketService.Interface\n ) {}\n\n async execute(record: ILockRecord): Promise<Result<void, UseCaseAbstraction.Error>> {\n if (!this.websocketService) {\n return Result.ok();\n }\n\n const { lockedBy, id } = record;\n\n const { id: entryId } = parseIdentifier(id);\n const identity = this.identityContext.getIdentity();\n\n await this.websocketService.send(\n { id: lockedBy.id },\n {\n action: `recordLocking.entry.kickOut.${entryId}`,\n data: {\n record: record.toObject(),\n user: identity\n }\n }\n );\n\n return Result.ok();\n }\n}\n\nexport const KickOutCurrentUserUseCase = UseCaseAbstraction.createImplementation({\n implementation: KickOutCurrentUserUseCaseImpl,\n dependencies: [IdentityContext, [WebsocketService, { optional: true }]]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,gBAAgB,QAAQ,2DAA2D;AAC5F,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,yBAAyB,IAAIC,kBAAkB;AAGxD,MAAMC,6BAA6B,CAAyC;EACxEC,WAAWA,CACCC,eAA0C,EAC1CC,gBAA6C,EACvD;IAAA,KAFUD,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,gBAA6C,GAA7CA,gBAA6C;EACtD;EAEH,MAAMC,OAAOA,CAACC,MAAmB,EAAmD;IAChF,IAAI,CAAC,IAAI,CAACF,gBAAgB,EAAE;MACxB,OAAOT,MAAM,CAACY,EAAE,CAAC,CAAC;IACtB;IAEA,MAAM;MAAEC,QAAQ;MAAEC;IAAG,CAAC,GAAGH,MAAM;IAE/B,MAAM;MAAEG,EAAE,EAAEC;IAAQ,CAAC,GAAGZ,eAAe,CAACW,EAAE,CAAC;IAC3C,MAAME,QAAQ,GAAG,IAAI,CAACR,eAAe,CAACS,WAAW,CAAC,CAAC;IAEnD,MAAM,IAAI,CAACR,gBAAgB,CAACS,IAAI,CAC5B;MAAEJ,EAAE,EAAED,QAAQ,CAACC;IAAG,CAAC,EACnB;MACIK,MAAM,EAAE,+BAA+BJ,OAAO,EAAE;MAChDK,IAAI,EAAE;QACFT,MAAM,EAAEA,MAAM,CAACU,QAAQ,CAAC,CAAC;QACzBC,IAAI,EAAEN;MACV;IACJ,CACJ,CAAC;IAED,OAAOhB,MAAM,CAACY,EAAE,CAAC,CAAC;EACtB;AACJ;AAEA,OAAO,MAAMR,yBAAyB,GAAGC,kBAAkB,CAACkB,oBAAoB,CAAC;EAC7EC,cAAc,EAAElB,6BAA6B;EAC7CmB,YAAY,EAAE,CAACxB,eAAe,EAAE,CAACC,gBAAgB,EAAE;IAAEwB,QAAQ,EAAE;EAAK,CAAC,CAAC;AAC1E,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"features/KickOutCurrentUser/KickOutCurrentUserUseCase.js","sources":["../../../src/features/KickOutCurrentUser/KickOutCurrentUserUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { WebsocketService } from \"@webiny/api-websockets/features/WebsocketService/index.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { KickOutCurrentUserUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport type { ILockRecord } from \"~/domain/index.js\";\n\nclass KickOutCurrentUserUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private websocketService?: WebsocketService.Interface\n ) {}\n\n async execute(record: ILockRecord): Promise<Result<void, UseCaseAbstraction.Error>> {\n if (!this.websocketService) {\n return Result.ok();\n }\n\n const { lockedBy, id } = record;\n\n const { id: entryId } = parseIdentifier(id);\n const identity = this.identityContext.getIdentity();\n\n await this.websocketService.send(\n { id: lockedBy.id },\n {\n action: `recordLocking.entry.kickOut.${entryId}`,\n data: {\n record: record.toObject(),\n user: identity\n }\n }\n );\n\n return Result.ok();\n }\n}\n\nexport const KickOutCurrentUserUseCase = UseCaseAbstraction.createImplementation({\n implementation: KickOutCurrentUserUseCaseImpl,\n dependencies: [IdentityContext, [WebsocketService, { optional: true }]]\n});\n"],"names":["KickOutCurrentUserUseCaseImpl","identityContext","websocketService","record","Result","lockedBy","id","entryId","parseIdentifier","identity","KickOutCurrentUserUseCase","UseCaseAbstraction","IdentityContext","WebsocketService"],"mappings":";;;;;AAOA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,gBAA6C,CACvD;aAFUD,eAAe,GAAfA;aACAC,gBAAgB,GAAhBA;IACT;IAEH,MAAM,QAAQC,MAAmB,EAAmD;QAChF,IAAI,CAAC,IAAI,CAAC,gBAAgB,EACtB,OAAOC,OAAO,EAAE;QAGpB,MAAM,EAAEC,QAAQ,EAAEC,EAAE,EAAE,GAAGH;QAEzB,MAAM,EAAE,IAAII,OAAO,EAAE,GAAGC,gBAAgBF;QACxC,MAAMG,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QAEjD,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC5B;YAAE,IAAIJ,SAAS,EAAE;QAAC,GAClB;YACI,QAAQ,CAAC,4BAA4B,EAAEE,SAAS;YAChD,MAAM;gBACF,QAAQJ,OAAO,QAAQ;gBACvB,MAAMM;YACV;QACJ;QAGJ,OAAOL,OAAO,EAAE;IACpB;AACJ;AAEO,MAAMM,sDAA4BC,0BAAAA,oBAAuC,CAAC;IAC7E,gBAAgBX;IAChB,cAAc;QAACY;QAAiB;YAACC;YAAkB;gBAAE,UAAU;YAAK;SAAE;KAAC;AAC3E"}
@@ -1,9 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
-
3
- /**
4
- * KickOutCurrentUser Use Case - Sends websocket message to notify locked-out user
5
- */
6
-
7
- export const KickOutCurrentUserUseCase = createAbstraction("KickOutCurrentUserUseCase");
2
+ const KickOutCurrentUserUseCase = createAbstraction("KickOutCurrentUserUseCase");
3
+ export { KickOutCurrentUserUseCase };
8
4
 
9
5
  //# sourceMappingURL=abstractions.js.map