@webiny/api-record-locking 0.0.0-unstable.e53eceafb5 → 0.0.0-unstable.e6f0dc8ca7

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 (295) hide show
  1. package/README.md +10 -9
  2. package/domain/LockRecord.d.ts +45 -0
  3. package/{utils/convertEntryToLockRecord.js → domain/LockRecord.js} +10 -21
  4. package/domain/LockRecord.js.map +1 -0
  5. package/domain/RecordLockingModel.d.ts +9 -0
  6. package/domain/RecordLockingModel.js +29 -0
  7. package/domain/RecordLockingModel.js.map +1 -0
  8. package/domain/abstractions.d.ts +18 -0
  9. package/domain/abstractions.js +10 -0
  10. package/domain/abstractions.js.map +1 -0
  11. package/domain/calculateExpiresOn.d.ts +1 -0
  12. package/domain/calculateExpiresOn.js +9 -0
  13. package/domain/calculateExpiresOn.js.map +1 -0
  14. package/domain/errors.d.ts +71 -0
  15. package/domain/errors.js +95 -0
  16. package/domain/errors.js.map +1 -0
  17. package/domain/index.d.ts +4 -0
  18. package/domain/index.js +6 -0
  19. package/domain/index.js.map +1 -0
  20. package/domain/types.d.ts +44 -0
  21. package/domain/types.js +12 -0
  22. package/domain/types.js.map +1 -0
  23. package/features/GetLockRecord/GetLockRecordRepository.d.ts +16 -0
  24. package/features/GetLockRecord/GetLockRecordRepository.js +37 -0
  25. package/features/GetLockRecord/GetLockRecordRepository.js.map +1 -0
  26. package/features/GetLockRecord/GetLockRecordUseCase.d.ts +12 -0
  27. package/features/GetLockRecord/GetLockRecordUseCase.js +15 -0
  28. package/features/GetLockRecord/GetLockRecordUseCase.js.map +1 -0
  29. package/features/GetLockRecord/abstractions.d.ts +41 -0
  30. package/features/GetLockRecord/abstractions.js +17 -0
  31. package/features/GetLockRecord/abstractions.js.map +1 -0
  32. package/features/GetLockRecord/feature.d.ts +4 -0
  33. package/features/GetLockRecord/feature.js +12 -0
  34. package/features/GetLockRecord/feature.js.map +1 -0
  35. package/features/GetLockRecord/index.d.ts +2 -0
  36. package/features/GetLockRecord/index.js +4 -0
  37. package/features/GetLockRecord/index.js.map +1 -0
  38. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +15 -0
  39. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +39 -0
  40. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -0
  41. package/features/GetLockedEntryLockRecord/abstractions.d.ts +26 -0
  42. package/features/GetLockedEntryLockRecord/abstractions.js +13 -0
  43. package/features/GetLockedEntryLockRecord/abstractions.js.map +1 -0
  44. package/features/GetLockedEntryLockRecord/feature.d.ts +4 -0
  45. package/features/GetLockedEntryLockRecord/feature.js +10 -0
  46. package/features/GetLockedEntryLockRecord/feature.js.map +1 -0
  47. package/features/GetLockedEntryLockRecord/index.d.ts +2 -0
  48. package/features/GetLockedEntryLockRecord/index.js +4 -0
  49. package/features/GetLockedEntryLockRecord/index.js.map +1 -0
  50. package/features/IsEntryLocked/IsEntryLockedUseCase.d.ts +14 -0
  51. package/features/IsEntryLocked/IsEntryLockedUseCase.js +39 -0
  52. package/features/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -0
  53. package/features/IsEntryLocked/abstractions.d.ts +24 -0
  54. package/features/IsEntryLocked/abstractions.js +12 -0
  55. package/features/IsEntryLocked/abstractions.js.map +1 -0
  56. package/features/IsEntryLocked/feature.d.ts +4 -0
  57. package/features/IsEntryLocked/feature.js +10 -0
  58. package/features/IsEntryLocked/feature.js.map +1 -0
  59. package/features/IsEntryLocked/index.d.ts +1 -0
  60. package/features/IsEntryLocked/index.js +3 -0
  61. package/features/IsEntryLocked/index.js.map +1 -0
  62. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +15 -0
  63. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js +42 -0
  64. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -0
  65. package/features/KickOutCurrentUser/abstractions.d.ts +17 -0
  66. package/features/KickOutCurrentUser/abstractions.js +9 -0
  67. package/features/KickOutCurrentUser/abstractions.js.map +1 -0
  68. package/features/KickOutCurrentUser/feature.d.ts +4 -0
  69. package/features/KickOutCurrentUser/feature.js +10 -0
  70. package/features/KickOutCurrentUser/feature.js.map +1 -0
  71. package/features/KickOutCurrentUser/index.d.ts +1 -0
  72. package/features/KickOutCurrentUser/index.js +3 -0
  73. package/features/KickOutCurrentUser/index.js.map +1 -0
  74. package/features/ListAllLockRecords/ListAllLockRecordsRepository.d.ts +16 -0
  75. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js +43 -0
  76. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js.map +1 -0
  77. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.d.ts +11 -0
  78. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js +15 -0
  79. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js.map +1 -0
  80. package/features/ListAllLockRecords/abstractions.d.ts +40 -0
  81. package/features/ListAllLockRecords/abstractions.js +17 -0
  82. package/features/ListAllLockRecords/abstractions.js.map +1 -0
  83. package/features/ListAllLockRecords/feature.d.ts +4 -0
  84. package/features/ListAllLockRecords/feature.js +12 -0
  85. package/features/ListAllLockRecords/feature.js.map +1 -0
  86. package/features/ListAllLockRecords/index.d.ts +2 -0
  87. package/features/ListAllLockRecords/index.js +4 -0
  88. package/features/ListAllLockRecords/index.js.map +1 -0
  89. package/features/ListLockRecords/ListLockRecordsRepository.d.ts +15 -0
  90. package/features/ListLockRecords/ListLockRecordsRepository.js +43 -0
  91. package/features/ListLockRecords/ListLockRecordsRepository.js.map +1 -0
  92. package/features/ListLockRecords/ListLockRecordsUseCase.d.ts +15 -0
  93. package/features/ListLockRecords/ListLockRecordsUseCase.js +30 -0
  94. package/features/ListLockRecords/ListLockRecordsUseCase.js.map +1 -0
  95. package/features/ListLockRecords/abstractions.d.ts +45 -0
  96. package/features/ListLockRecords/abstractions.js +17 -0
  97. package/features/ListLockRecords/abstractions.js.map +1 -0
  98. package/features/ListLockRecords/feature.d.ts +4 -0
  99. package/features/ListLockRecords/feature.js +12 -0
  100. package/features/ListLockRecords/feature.js.map +1 -0
  101. package/features/ListLockRecords/index.d.ts +1 -0
  102. package/features/ListLockRecords/index.js +3 -0
  103. package/features/ListLockRecords/index.js.map +1 -0
  104. package/features/LockEntry/LockEntryEventsDecorator.d.ts +14 -0
  105. package/features/LockEntry/LockEntryEventsDecorator.js +40 -0
  106. package/features/LockEntry/LockEntryEventsDecorator.js.map +1 -0
  107. package/features/LockEntry/LockEntryRepository.d.ts +16 -0
  108. package/features/LockEntry/LockEntryRepository.js +42 -0
  109. package/features/LockEntry/LockEntryRepository.js.map +1 -0
  110. package/features/LockEntry/LockEntryUseCase.d.ts +14 -0
  111. package/features/LockEntry/LockEntryUseCase.js +36 -0
  112. package/features/LockEntry/LockEntryUseCase.js.map +1 -0
  113. package/features/LockEntry/abstractions.d.ts +41 -0
  114. package/features/LockEntry/abstractions.js +17 -0
  115. package/features/LockEntry/abstractions.js.map +1 -0
  116. package/features/LockEntry/events.d.ts +45 -0
  117. package/features/LockEntry/events.js +40 -0
  118. package/features/LockEntry/events.js.map +1 -0
  119. package/features/LockEntry/feature.d.ts +4 -0
  120. package/features/LockEntry/feature.js +14 -0
  121. package/features/LockEntry/feature.js.map +1 -0
  122. package/features/LockEntry/index.d.ts +1 -0
  123. package/features/LockEntry/index.js +3 -0
  124. package/features/LockEntry/index.js.map +1 -0
  125. package/features/RecordLockingFeature.d.ts +15 -0
  126. package/features/RecordLockingFeature.js +36 -0
  127. package/features/RecordLockingFeature.js.map +1 -0
  128. package/features/UnlockEntry/UnlockEntryEventsDecorator.d.ts +14 -0
  129. package/features/UnlockEntry/UnlockEntryEventsDecorator.js +41 -0
  130. package/features/UnlockEntry/UnlockEntryEventsDecorator.js.map +1 -0
  131. package/features/UnlockEntry/UnlockEntryRepository.d.ts +14 -0
  132. package/features/UnlockEntry/UnlockEntryRepository.js +40 -0
  133. package/features/UnlockEntry/UnlockEntryRepository.js.map +1 -0
  134. package/features/UnlockEntry/UnlockEntryUseCase.d.ts +18 -0
  135. package/features/UnlockEntry/UnlockEntryUseCase.js +81 -0
  136. package/features/UnlockEntry/UnlockEntryUseCase.js.map +1 -0
  137. package/features/UnlockEntry/abstractions.d.ts +44 -0
  138. package/features/UnlockEntry/abstractions.js +17 -0
  139. package/features/UnlockEntry/abstractions.js.map +1 -0
  140. package/features/UnlockEntry/events.d.ts +46 -0
  141. package/features/UnlockEntry/events.js +40 -0
  142. package/features/UnlockEntry/events.js.map +1 -0
  143. package/features/UnlockEntry/feature.d.ts +4 -0
  144. package/features/UnlockEntry/feature.js +14 -0
  145. package/features/UnlockEntry/feature.js.map +1 -0
  146. package/features/UnlockEntry/hasFullAccessPermission.d.ts +2 -0
  147. package/features/UnlockEntry/hasFullAccessPermission.js +10 -0
  148. package/features/UnlockEntry/hasFullAccessPermission.js.map +1 -0
  149. package/features/UnlockEntry/index.d.ts +1 -0
  150. package/features/UnlockEntry/index.js +3 -0
  151. package/features/UnlockEntry/index.js.map +1 -0
  152. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.d.ts +14 -0
  153. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js +40 -0
  154. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js.map +1 -0
  155. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.d.ts +17 -0
  156. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js +43 -0
  157. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js.map +1 -0
  158. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.d.ts +16 -0
  159. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js +92 -0
  160. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js.map +1 -0
  161. package/features/UnlockEntryRequest/abstractions.d.ts +42 -0
  162. package/features/UnlockEntryRequest/abstractions.js +17 -0
  163. package/features/UnlockEntryRequest/abstractions.js.map +1 -0
  164. package/features/UnlockEntryRequest/events.d.ts +45 -0
  165. package/features/UnlockEntryRequest/events.js +40 -0
  166. package/features/UnlockEntryRequest/events.js.map +1 -0
  167. package/features/UnlockEntryRequest/feature.d.ts +4 -0
  168. package/features/UnlockEntryRequest/feature.js +14 -0
  169. package/features/UnlockEntryRequest/feature.js.map +1 -0
  170. package/features/UnlockEntryRequest/index.d.ts +3 -0
  171. package/features/UnlockEntryRequest/index.js +5 -0
  172. package/features/UnlockEntryRequest/index.js.map +1 -0
  173. package/features/UpdateEntryLock/UpdateEntryLockRepository.d.ts +20 -0
  174. package/features/UpdateEntryLock/UpdateEntryLockRepository.js +63 -0
  175. package/features/UpdateEntryLock/UpdateEntryLockRepository.js.map +1 -0
  176. package/features/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +18 -0
  177. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js +62 -0
  178. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -0
  179. package/features/UpdateEntryLock/abstractions.d.ts +42 -0
  180. package/features/UpdateEntryLock/abstractions.js +17 -0
  181. package/features/UpdateEntryLock/abstractions.js.map +1 -0
  182. package/features/UpdateEntryLock/feature.d.ts +4 -0
  183. package/features/UpdateEntryLock/feature.js +12 -0
  184. package/features/UpdateEntryLock/feature.js.map +1 -0
  185. package/features/UpdateEntryLock/index.d.ts +1 -0
  186. package/features/UpdateEntryLock/index.js +3 -0
  187. package/features/UpdateEntryLock/index.js.map +1 -0
  188. package/graphql/checkPermissions.d.ts +5 -0
  189. package/graphql/checkPermissions.js +14 -0
  190. package/graphql/checkPermissions.js.map +1 -0
  191. package/{utils → graphql}/resolve.d.ts +3 -3
  192. package/graphql/resolve.js +22 -0
  193. package/graphql/resolve.js.map +1 -0
  194. package/graphql/schema.d.ts +7 -3
  195. package/graphql/schema.js +101 -66
  196. package/graphql/schema.js.map +1 -1
  197. package/index.d.ts +3 -3
  198. package/index.js +49 -25
  199. package/index.js.map +1 -1
  200. package/package.json +25 -26
  201. package/types.d.ts +3 -132
  202. package/types.js +2 -20
  203. package/types.js.map +1 -1
  204. package/utils/convertWhereCondition.d.ts +1 -1
  205. package/utils/convertWhereCondition.js +11 -14
  206. package/utils/convertWhereCondition.js.map +1 -1
  207. package/utils/getTimeout.js +1 -8
  208. package/utils/getTimeout.js.map +1 -1
  209. package/utils/lockRecordDatabaseId.js +4 -12
  210. package/utils/lockRecordDatabaseId.js.map +1 -1
  211. package/abstractions/IGetLockRecordUseCase.d.ts +0 -8
  212. package/abstractions/IGetLockRecordUseCase.js +0 -7
  213. package/abstractions/IGetLockRecordUseCase.js.map +0 -1
  214. package/abstractions/IGetLockedEntryLockRecordUseCase.d.ts +0 -8
  215. package/abstractions/IGetLockedEntryLockRecordUseCase.js +0 -7
  216. package/abstractions/IGetLockedEntryLockRecordUseCase.js.map +0 -1
  217. package/abstractions/IIsEntryLocked.d.ts +0 -8
  218. package/abstractions/IIsEntryLocked.js +0 -7
  219. package/abstractions/IIsEntryLocked.js.map +0 -1
  220. package/abstractions/IKickOutCurrentUserUseCase.d.ts +0 -5
  221. package/abstractions/IKickOutCurrentUserUseCase.js +0 -7
  222. package/abstractions/IKickOutCurrentUserUseCase.js.map +0 -1
  223. package/abstractions/IListAllLockRecordsUseCase.d.ts +0 -9
  224. package/abstractions/IListAllLockRecordsUseCase.js +0 -7
  225. package/abstractions/IListAllLockRecordsUseCase.js.map +0 -1
  226. package/abstractions/IListLockRecordsUseCase.d.ts +0 -10
  227. package/abstractions/IListLockRecordsUseCase.js +0 -7
  228. package/abstractions/IListLockRecordsUseCase.js.map +0 -1
  229. package/abstractions/ILockEntryUseCase.d.ts +0 -11
  230. package/abstractions/ILockEntryUseCase.js +0 -7
  231. package/abstractions/ILockEntryUseCase.js.map +0 -1
  232. package/abstractions/IUnlockEntryRequestUseCase.d.ts +0 -11
  233. package/abstractions/IUnlockEntryRequestUseCase.js +0 -7
  234. package/abstractions/IUnlockEntryRequestUseCase.js.map +0 -1
  235. package/abstractions/IUnlockEntryUseCase.d.ts +0 -12
  236. package/abstractions/IUnlockEntryUseCase.js +0 -7
  237. package/abstractions/IUnlockEntryUseCase.js.map +0 -1
  238. package/abstractions/IUpdateEntryLockUseCase.d.ts +0 -11
  239. package/abstractions/IUpdateEntryLockUseCase.js +0 -7
  240. package/abstractions/IUpdateEntryLockUseCase.js.map +0 -1
  241. package/crud/crud.d.ts +0 -7
  242. package/crud/crud.js +0 -204
  243. package/crud/crud.js.map +0 -1
  244. package/crud/model.d.ts +0 -2
  245. package/crud/model.js +0 -127
  246. package/crud/model.js.map +0 -1
  247. package/useCases/GetLockRecord/GetLockRecordUseCase.d.ts +0 -16
  248. package/useCases/GetLockRecord/GetLockRecordUseCase.js +0 -39
  249. package/useCases/GetLockRecord/GetLockRecordUseCase.js.map +0 -1
  250. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +0 -16
  251. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +0 -29
  252. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +0 -1
  253. package/useCases/IsEntryLocked/IsEntryLockedUseCase.d.ts +0 -13
  254. package/useCases/IsEntryLocked/IsEntryLockedUseCase.js +0 -31
  255. package/useCases/IsEntryLocked/IsEntryLockedUseCase.js.map +0 -1
  256. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +0 -12
  257. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js +0 -46
  258. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +0 -1
  259. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.d.ts +0 -13
  260. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js +0 -34
  261. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js.map +0 -1
  262. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.d.ts +0 -14
  263. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js +0 -27
  264. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js.map +0 -1
  265. package/useCases/LockEntryUseCase/LockEntryUseCase.d.ts +0 -21
  266. package/useCases/LockEntryUseCase/LockEntryUseCase.js +0 -64
  267. package/useCases/LockEntryUseCase/LockEntryUseCase.js.map +0 -1
  268. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.d.ts +0 -23
  269. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js +0 -90
  270. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js.map +0 -1
  271. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.d.ts +0 -21
  272. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js +0 -82
  273. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js.map +0 -1
  274. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +0 -26
  275. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js +0 -93
  276. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js.map +0 -1
  277. package/useCases/index.d.ts +0 -31
  278. package/useCases/index.js +0 -96
  279. package/useCases/index.js.map +0 -1
  280. package/useCases/types.d.ts +0 -5
  281. package/useCases/types.js +0 -7
  282. package/useCases/types.js.map +0 -1
  283. package/utils/calculateExpiresOn.d.ts +0 -2
  284. package/utils/calculateExpiresOn.js +0 -16
  285. package/utils/calculateExpiresOn.js.map +0 -1
  286. package/utils/checkPermissions.d.ts +0 -7
  287. package/utils/checkPermissions.js +0 -21
  288. package/utils/checkPermissions.js.map +0 -1
  289. package/utils/convertEntryToLockRecord.d.ts +0 -28
  290. package/utils/convertEntryToLockRecord.js.map +0 -1
  291. package/utils/resolve.js +0 -30
  292. package/utils/resolve.js.map +0 -1
  293. package/utils/validateSameIdentity.d.ts +0 -6
  294. package/utils/validateSameIdentity.js +0 -24
  295. package/utils/validateSameIdentity.js.map +0 -1
package/crud/crud.js DELETED
@@ -1,204 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createRecordLockingCrud = void 0;
7
- var _error = require("@webiny/error");
8
- var _model = require("./model");
9
- var _useCases = require("../useCases");
10
- var _pubsub = require("@webiny/pubsub");
11
- var _getTimeout = require("../utils/getTimeout");
12
- const createRecordLockingCrud = async params => {
13
- const {
14
- context
15
- } = params;
16
- const getTimeout = () => {
17
- return (0, _getTimeout.getTimeout)(params.timeout);
18
- };
19
- const getModel = async () => {
20
- const model = await context.cms.getModel(_model.RECORD_LOCKING_MODEL_ID);
21
- if (model) {
22
- return model;
23
- }
24
- throw new _error.WebinyError("Record Locking model not found.", "MODEL_NOT_FOUND", {
25
- modelId: _model.RECORD_LOCKING_MODEL_ID
26
- });
27
- };
28
- const getManager = async () => {
29
- return await context.cms.getEntryManager(_model.RECORD_LOCKING_MODEL_ID);
30
- };
31
- const getSecurity = () => {
32
- return context.security;
33
- };
34
- const getIdentity = () => {
35
- const identity = context.security.getIdentity();
36
- if (!identity) {
37
- throw new _error.WebinyError("Identity missing.");
38
- }
39
- return {
40
- id: identity.id,
41
- displayName: identity.displayName,
42
- type: identity.type
43
- };
44
- };
45
- const hasRecordLockingAccess = async () => {
46
- const hasFulLAccess = await context.security.hasFullAccess();
47
- if (hasFulLAccess) {
48
- return true;
49
- }
50
- const permission = await context.security.getPermission("recordLocking");
51
- return permission?.canForceUnlock === "yes";
52
- };
53
- const onEntryBeforeLock = (0, _pubsub.createTopic)("cms.recordLocking.onEntryBeforeLock");
54
- const onEntryAfterLock = (0, _pubsub.createTopic)("cms.recordLocking.onEntryAfterLock");
55
- const onEntryLockError = (0, _pubsub.createTopic)("cms.recordLocking.onEntryLockError");
56
- const onEntryBeforeUnlock = (0, _pubsub.createTopic)("cms.recordLocking.onEntryBeforeUnlock");
57
- const onEntryAfterUnlock = (0, _pubsub.createTopic)("cms.recordLocking.onEntryAfterUnlock");
58
- const onEntryUnlockError = (0, _pubsub.createTopic)("cms.recordLocking.onEntryUnlockError");
59
- const onEntryBeforeUnlockRequest = (0, _pubsub.createTopic)("cms.recordLocking.onEntryBeforeUnlockRequest");
60
- const onEntryAfterUnlockRequest = (0, _pubsub.createTopic)("cms.recordLocking.onEntryAfterUnlockRequest");
61
- const onEntryUnlockRequestError = (0, _pubsub.createTopic)("cms.recordLocking.onEntryUnlockRequestError");
62
- const getWebsockets = () => {
63
- return context.websockets;
64
- };
65
- const {
66
- listLockRecordsUseCase,
67
- listAllLockRecordsUseCase,
68
- getLockRecordUseCase,
69
- isEntryLockedUseCase,
70
- getLockedEntryLockRecordUseCase,
71
- lockEntryUseCase,
72
- updateEntryLockUseCase,
73
- unlockEntryUseCase,
74
- unlockEntryRequestUseCase
75
- } = (0, _useCases.createUseCases)({
76
- getIdentity,
77
- getManager,
78
- getSecurity,
79
- hasRecordLockingAccess,
80
- getWebsockets,
81
- getTimeout
82
- });
83
- const listAllLockRecords = async params => {
84
- return context.benchmark.measure("recordLocking.listAllLockRecords", async () => {
85
- return listAllLockRecordsUseCase.execute(params);
86
- });
87
- };
88
- const listLockRecords = async params => {
89
- return context.benchmark.measure("recordLocking.listLockRecords", async () => {
90
- return listLockRecordsUseCase.execute(params);
91
- });
92
- };
93
- const getLockRecord = async params => {
94
- return context.benchmark.measure("recordLocking.getLockRecord", async () => {
95
- return getLockRecordUseCase.execute(params);
96
- });
97
- };
98
- const isEntryLocked = async params => {
99
- return context.benchmark.measure("recordLocking.isEntryLocked", async () => {
100
- return isEntryLockedUseCase.execute(params);
101
- });
102
- };
103
- const getLockedEntryLockRecord = async params => {
104
- return context.benchmark.measure("recordLocking.getLockedEntryLockRecord", async () => {
105
- return getLockedEntryLockRecordUseCase.execute(params);
106
- });
107
- };
108
- const lockEntry = async params => {
109
- return context.benchmark.measure("recordLocking.lockEntry", async () => {
110
- try {
111
- await onEntryBeforeLock.publish(params);
112
- const record = await lockEntryUseCase.execute(params);
113
- await onEntryAfterLock.publish({
114
- ...params,
115
- record
116
- });
117
- return record;
118
- } catch (ex) {
119
- await onEntryLockError.publish({
120
- ...params,
121
- error: ex
122
- });
123
- throw ex;
124
- }
125
- });
126
- };
127
- const updateEntryLock = async params => {
128
- return context.benchmark.measure("recordLocking.updateEntryLock", async () => {
129
- return updateEntryLockUseCase.execute(params);
130
- });
131
- };
132
- const unlockEntry = async params => {
133
- return context.benchmark.measure("recordLocking.unlockEntry", async () => {
134
- try {
135
- await onEntryBeforeUnlock.publish({
136
- ...params,
137
- getIdentity
138
- });
139
- const record = await unlockEntryUseCase.execute(params);
140
- await onEntryAfterUnlock.publish({
141
- ...params,
142
- record
143
- });
144
- return record;
145
- } catch (ex) {
146
- await onEntryUnlockError.publish({
147
- ...params,
148
- error: ex
149
- });
150
- throw ex;
151
- }
152
- });
153
- };
154
- const unlockEntryRequest = async params => {
155
- return context.benchmark.measure("recordLocking.unlockEntryRequest", async () => {
156
- try {
157
- await onEntryBeforeUnlockRequest.publish(params);
158
- const record = await unlockEntryRequestUseCase.execute(params);
159
- await onEntryAfterUnlockRequest.publish({
160
- ...params,
161
- record
162
- });
163
- return record;
164
- } catch (ex) {
165
- await onEntryUnlockRequestError.publish({
166
- ...params,
167
- error: ex
168
- });
169
- throw ex;
170
- }
171
- });
172
- };
173
- return {
174
- /**
175
- * Lifecycle events
176
- */
177
- onEntryBeforeLock,
178
- onEntryAfterLock,
179
- onEntryLockError,
180
- onEntryBeforeUnlock,
181
- onEntryAfterUnlock,
182
- onEntryUnlockError,
183
- onEntryBeforeUnlockRequest,
184
- onEntryAfterUnlockRequest,
185
- onEntryUnlockRequestError,
186
- /**
187
- * Methods
188
- */
189
- getModel,
190
- listLockRecords,
191
- listAllLockRecords,
192
- getLockRecord,
193
- isEntryLocked,
194
- getLockedEntryLockRecord,
195
- lockEntry,
196
- updateEntryLock,
197
- unlockEntry,
198
- unlockEntryRequest,
199
- getTimeout
200
- };
201
- };
202
- exports.createRecordLockingCrud = createRecordLockingCrud;
203
-
204
- //# sourceMappingURL=crud.js.map
package/crud/crud.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"names":["_error","require","_model","_useCases","_pubsub","_getTimeout","createRecordLockingCrud","params","context","getTimeout","baseGetTimeout","timeout","getModel","model","cms","RECORD_LOCKING_MODEL_ID","WebinyError","modelId","getManager","getEntryManager","getSecurity","security","getIdentity","identity","id","displayName","type","hasRecordLockingAccess","hasFulLAccess","hasFullAccess","permission","getPermission","canForceUnlock","onEntryBeforeLock","createTopic","onEntryAfterLock","onEntryLockError","onEntryBeforeUnlock","onEntryAfterUnlock","onEntryUnlockError","onEntryBeforeUnlockRequest","onEntryAfterUnlockRequest","onEntryUnlockRequestError","getWebsockets","websockets","listLockRecordsUseCase","listAllLockRecordsUseCase","getLockRecordUseCase","isEntryLockedUseCase","getLockedEntryLockRecordUseCase","lockEntryUseCase","updateEntryLockUseCase","unlockEntryUseCase","unlockEntryRequestUseCase","createUseCases","listAllLockRecords","benchmark","measure","execute","listLockRecords","getLockRecord","isEntryLocked","getLockedEntryLockRecord","lockEntry","publish","record","ex","error","updateEntryLock","unlockEntry","unlockEntryRequest","exports"],"sources":["crud.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport type {\n Context,\n IGetIdentity,\n IGetWebsocketsContextCallable,\n IHasRecordLockingAccessCallable,\n IRecordLocking,\n IRecordLockingLockRecordValues,\n IRecordLockingModelManager,\n OnEntryAfterLockTopicParams,\n OnEntryAfterUnlockRequestTopicParams,\n OnEntryAfterUnlockTopicParams,\n OnEntryBeforeLockTopicParams,\n OnEntryBeforeUnlockRequestTopicParams,\n OnEntryBeforeUnlockTopicParams,\n OnEntryLockErrorTopicParams,\n OnEntryUnlockErrorTopicParams,\n OnEntryUnlockRequestErrorTopicParams,\n RecordLockingSecurityPermission\n} from \"~/types\";\nimport { RECORD_LOCKING_MODEL_ID } from \"./model\";\nimport type { IGetLockRecordUseCaseExecute } from \"~/abstractions/IGetLockRecordUseCase\";\nimport type { IIsEntryLockedUseCaseExecute } from \"~/abstractions/IIsEntryLocked\";\nimport type { ILockEntryUseCaseExecute } from \"~/abstractions/ILockEntryUseCase\";\nimport type { IUnlockEntryUseCaseExecute } from \"~/abstractions/IUnlockEntryUseCase\";\nimport { createUseCases } from \"~/useCases\";\nimport type { IUnlockEntryRequestUseCaseExecute } from \"~/abstractions/IUnlockEntryRequestUseCase\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport type { IListAllLockRecordsUseCaseExecute } from \"~/abstractions/IListAllLockRecordsUseCase\";\nimport type { IListLockRecordsUseCaseExecute } from \"~/abstractions/IListLockRecordsUseCase\";\nimport type { IUpdateEntryLockUseCaseExecute } from \"~/abstractions/IUpdateEntryLockUseCase\";\nimport type { IGetLockedEntryLockRecordUseCaseExecute } from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\nimport { getTimeout as baseGetTimeout } from \"~/utils/getTimeout\";\n\ninterface Params {\n context: Pick<Context, \"plugins\" | \"cms\" | \"benchmark\" | \"security\" | \"websockets\">;\n timeout?: number;\n}\n\nexport const createRecordLockingCrud = async (params: Params): Promise<IRecordLocking> => {\n const { context } = params;\n const getTimeout = (): number => {\n return baseGetTimeout(params.timeout);\n };\n const getModel = async () => {\n const model = await context.cms.getModel(RECORD_LOCKING_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(\"Record Locking model not found.\", \"MODEL_NOT_FOUND\", {\n modelId: RECORD_LOCKING_MODEL_ID\n });\n };\n\n const getManager = async (): Promise<IRecordLockingModelManager> => {\n return await context.cms.getEntryManager<IRecordLockingLockRecordValues>(\n RECORD_LOCKING_MODEL_ID\n );\n };\n\n const getSecurity = () => {\n return context.security;\n };\n\n const getIdentity: IGetIdentity = () => {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new WebinyError(\"Identity missing.\");\n }\n return {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n };\n\n const hasRecordLockingAccess: IHasRecordLockingAccessCallable = async () => {\n const hasFulLAccess = await context.security.hasFullAccess();\n if (hasFulLAccess) {\n return true;\n }\n const permission = await context.security.getPermission<RecordLockingSecurityPermission>(\n \"recordLocking\"\n );\n return permission?.canForceUnlock === \"yes\";\n };\n\n const onEntryBeforeLock = createTopic<OnEntryBeforeLockTopicParams>(\n \"cms.recordLocking.onEntryBeforeLock\"\n );\n const onEntryAfterLock = createTopic<OnEntryAfterLockTopicParams>(\n \"cms.recordLocking.onEntryAfterLock\"\n );\n const onEntryLockError = createTopic<OnEntryLockErrorTopicParams>(\n \"cms.recordLocking.onEntryLockError\"\n );\n\n const onEntryBeforeUnlock = createTopic<OnEntryBeforeUnlockTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlock\"\n );\n const onEntryAfterUnlock = createTopic<OnEntryAfterUnlockTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlock\"\n );\n const onEntryUnlockError = createTopic<OnEntryUnlockErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockError\"\n );\n\n const onEntryBeforeUnlockRequest = createTopic<OnEntryBeforeUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlockRequest\"\n );\n const onEntryAfterUnlockRequest = createTopic<OnEntryAfterUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlockRequest\"\n );\n const onEntryUnlockRequestError = createTopic<OnEntryUnlockRequestErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockRequestError\"\n );\n\n const getWebsockets: IGetWebsocketsContextCallable = () => {\n return context.websockets;\n };\n\n const {\n listLockRecordsUseCase,\n listAllLockRecordsUseCase,\n getLockRecordUseCase,\n isEntryLockedUseCase,\n getLockedEntryLockRecordUseCase,\n lockEntryUseCase,\n updateEntryLockUseCase,\n unlockEntryUseCase,\n unlockEntryRequestUseCase\n } = createUseCases({\n getIdentity,\n getManager,\n getSecurity,\n hasRecordLockingAccess,\n getWebsockets,\n getTimeout\n });\n\n const listAllLockRecords: IListAllLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listAllLockRecords\", async () => {\n return listAllLockRecordsUseCase.execute(params);\n });\n };\n\n const listLockRecords: IListLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listLockRecords\", async () => {\n return listLockRecordsUseCase.execute(params);\n });\n };\n\n const getLockRecord: IGetLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockRecord\", async () => {\n return getLockRecordUseCase.execute(params);\n });\n };\n\n const isEntryLocked: IIsEntryLockedUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.isEntryLocked\", async () => {\n return isEntryLockedUseCase.execute(params);\n });\n };\n\n const getLockedEntryLockRecord: IGetLockedEntryLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockedEntryLockRecord\", async () => {\n return getLockedEntryLockRecordUseCase.execute(params);\n });\n };\n\n const lockEntry: ILockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.lockEntry\", async () => {\n try {\n await onEntryBeforeLock.publish(params);\n const record = await lockEntryUseCase.execute(params);\n await onEntryAfterLock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryLockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const updateEntryLock: IUpdateEntryLockUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.updateEntryLock\", async () => {\n return updateEntryLockUseCase.execute(params);\n });\n };\n\n const unlockEntry: IUnlockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntry\", async () => {\n try {\n await onEntryBeforeUnlock.publish({\n ...params,\n getIdentity\n });\n const record = await unlockEntryUseCase.execute(params);\n await onEntryAfterUnlock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const unlockEntryRequest: IUnlockEntryRequestUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntryRequest\", async () => {\n try {\n await onEntryBeforeUnlockRequest.publish(params);\n const record = await unlockEntryRequestUseCase.execute(params);\n await onEntryAfterUnlockRequest.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockRequestError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n return {\n /**\n * Lifecycle events\n */\n onEntryBeforeLock,\n onEntryAfterLock,\n onEntryLockError,\n onEntryBeforeUnlock,\n onEntryAfterUnlock,\n onEntryUnlockError,\n onEntryBeforeUnlockRequest,\n onEntryAfterUnlockRequest,\n onEntryUnlockRequestError,\n /**\n * Methods\n */\n getModel,\n listLockRecords,\n listAllLockRecords,\n getLockRecord,\n isEntryLocked,\n getLockedEntryLockRecord,\n lockEntry,\n updateEntryLock,\n unlockEntry,\n unlockEntryRequest,\n getTimeout\n };\n};\n"],"mappings":"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","ignoreList":[]}
package/crud/model.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare const RECORD_LOCKING_MODEL_ID = "wby_recordLocking";
2
- export declare const createLockingModel: () => import("@webiny/api-headless-cms").CmsModelPlugin;
package/crud/model.js DELETED
@@ -1,127 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createLockingModel = exports.RECORD_LOCKING_MODEL_ID = void 0;
7
- var _apiHeadlessCms = require("@webiny/api-headless-cms");
8
- const RECORD_LOCKING_MODEL_ID = exports.RECORD_LOCKING_MODEL_ID = "wby_recordLocking";
9
- const createLockingModel = () => {
10
- return (0, _apiHeadlessCms.createCmsModel)((0, _apiHeadlessCms.createPrivateModel)({
11
- modelId: RECORD_LOCKING_MODEL_ID,
12
- name: "Record Lock Tracking",
13
- fields: [{
14
- id: "targetId",
15
- type: "text",
16
- fieldId: "targetId",
17
- storageId: "text@targetId",
18
- label: "Target ID",
19
- validation: [{
20
- name: "required",
21
- message: "Target ID is required."
22
- }]
23
- },
24
- /**
25
- * Since we need a generic way to track records, we will use type to determine if it's a cms record or a page or a form, etc...
26
- * Update IHeadlessCmsLockRecordValues in types.ts file with additional fields as required.
27
- *
28
- * @see IHeadlessCmsLockRecordValues
29
- */
30
- {
31
- id: "type",
32
- type: "text",
33
- fieldId: "type",
34
- storageId: "text@type",
35
- label: "Record Type",
36
- validation: [{
37
- name: "required",
38
- message: "Record type is required."
39
- }]
40
- }, {
41
- id: "actions",
42
- type: "object",
43
- fieldId: "actions",
44
- storageId: "object@actions",
45
- label: "Actions",
46
- multipleValues: true,
47
- settings: {
48
- fields: [{
49
- id: "type",
50
- type: "text",
51
- fieldId: "type",
52
- storageId: "text@type",
53
- label: "Action Type",
54
- validation: [{
55
- name: "required",
56
- message: "Action type is required."
57
- }]
58
- }, {
59
- id: "message",
60
- type: "text",
61
- fieldId: "message",
62
- storageId: "text@message",
63
- label: "Message"
64
- }, {
65
- id: "createdBy",
66
- type: "object",
67
- fieldId: "createdBy",
68
- storageId: "object@createdBy",
69
- label: "Created By",
70
- validation: [{
71
- name: "required",
72
- message: "Created by is required."
73
- }],
74
- settings: {
75
- fields: [{
76
- id: "id",
77
- type: "text",
78
- fieldId: "id",
79
- storageId: "text@id",
80
- label: "ID",
81
- validation: [{
82
- name: "required",
83
- message: "ID is required."
84
- }]
85
- }, {
86
- id: "displayName",
87
- type: "text",
88
- fieldId: "displayName",
89
- storageId: "text@displayName",
90
- label: "Display Name",
91
- validation: [{
92
- name: "required",
93
- message: "Display name is required."
94
- }]
95
- }, {
96
- id: "type",
97
- type: "text",
98
- fieldId: "type",
99
- storageId: "text@type",
100
- label: "Type",
101
- validation: [{
102
- name: "required",
103
- message: "Type is required."
104
- }]
105
- }]
106
- }
107
- }, {
108
- id: "createdOn",
109
- type: "datetime",
110
- fieldId: "createdOn",
111
- storageId: "datetime@createdOn",
112
- settings: {
113
- type: "dateTimeWithoutTimezone"
114
- },
115
- label: "Created On",
116
- validation: [{
117
- name: "required",
118
- message: "Created on is required."
119
- }]
120
- }]
121
- }
122
- }]
123
- }));
124
- };
125
- exports.createLockingModel = createLockingModel;
126
-
127
- //# sourceMappingURL=model.js.map
package/crud/model.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"names":["_apiHeadlessCms","require","RECORD_LOCKING_MODEL_ID","exports","createLockingModel","createCmsModel","createPrivateModel","modelId","name","fields","id","type","fieldId","storageId","label","validation","message","multipleValues","settings"],"sources":["model.ts"],"sourcesContent":["import { createCmsModel, createPrivateModel } from \"@webiny/api-headless-cms\";\n\nexport const RECORD_LOCKING_MODEL_ID = \"wby_recordLocking\";\n\nexport const createLockingModel = () => {\n return createCmsModel(\n createPrivateModel({\n modelId: RECORD_LOCKING_MODEL_ID,\n name: \"Record Lock Tracking\",\n fields: [\n {\n id: \"targetId\",\n type: \"text\",\n fieldId: \"targetId\",\n storageId: \"text@targetId\",\n label: \"Target ID\",\n validation: [\n {\n name: \"required\",\n message: \"Target ID is required.\"\n }\n ]\n },\n /**\n * Since we need a generic way to track records, we will use type to determine if it's a cms record or a page or a form, etc...\n * Update IHeadlessCmsLockRecordValues in types.ts file with additional fields as required.\n *\n * @see IHeadlessCmsLockRecordValues\n */\n {\n id: \"type\",\n type: \"text\",\n fieldId: \"type\",\n storageId: \"text@type\",\n label: \"Record Type\",\n validation: [\n {\n name: \"required\",\n message: \"Record type is required.\"\n }\n ]\n },\n {\n id: \"actions\",\n type: \"object\",\n fieldId: \"actions\",\n storageId: \"object@actions\",\n label: \"Actions\",\n multipleValues: true,\n settings: {\n fields: [\n {\n id: \"type\",\n type: \"text\",\n fieldId: \"type\",\n storageId: \"text@type\",\n label: \"Action Type\",\n validation: [\n {\n name: \"required\",\n message: \"Action type is required.\"\n }\n ]\n },\n {\n id: \"message\",\n type: \"text\",\n fieldId: \"message\",\n storageId: \"text@message\",\n label: \"Message\"\n },\n {\n id: \"createdBy\",\n type: \"object\",\n fieldId: \"createdBy\",\n storageId: \"object@createdBy\",\n label: \"Created By\",\n validation: [\n {\n name: \"required\",\n message: \"Created by is required.\"\n }\n ],\n settings: {\n fields: [\n {\n id: \"id\",\n type: \"text\",\n fieldId: \"id\",\n storageId: \"text@id\",\n label: \"ID\",\n validation: [\n {\n name: \"required\",\n message: \"ID is required.\"\n }\n ]\n },\n {\n id: \"displayName\",\n type: \"text\",\n fieldId: \"displayName\",\n storageId: \"text@displayName\",\n label: \"Display Name\",\n validation: [\n {\n name: \"required\",\n message: \"Display name is required.\"\n }\n ]\n },\n {\n id: \"type\",\n type: \"text\",\n fieldId: \"type\",\n storageId: \"text@type\",\n label: \"Type\",\n validation: [\n {\n name: \"required\",\n message: \"Type is required.\"\n }\n ]\n }\n ]\n }\n },\n {\n id: \"createdOn\",\n type: \"datetime\",\n fieldId: \"createdOn\",\n storageId: \"datetime@createdOn\",\n settings: {\n type: \"dateTimeWithoutTimezone\"\n },\n label: \"Created On\",\n validation: [\n {\n name: \"required\",\n message: \"Created on is required.\"\n }\n ]\n }\n ]\n }\n }\n ]\n })\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,16 +0,0 @@
1
- import type { IGetLockRecordUseCase, IGetLockRecordUseCaseExecuteParams } from "../../abstractions/IGetLockRecordUseCase";
2
- import type { IRecordLockingLockRecord, IRecordLockingModelManager } from "../../types";
3
- import type { ConvertEntryToLockRecordCb } from "../types";
4
- import type { Security } from "@webiny/api-security/types";
5
- export interface IGetLockRecordUseCaseParams {
6
- getManager(): Promise<IRecordLockingModelManager>;
7
- getSecurity(): Pick<Security, "withoutAuthorization">;
8
- convert: ConvertEntryToLockRecordCb;
9
- }
10
- export declare class GetLockRecordUseCase implements IGetLockRecordUseCase {
11
- private readonly getManager;
12
- private readonly getSecurity;
13
- private readonly convert;
14
- constructor(params: IGetLockRecordUseCaseParams);
15
- execute(input: IGetLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;
16
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.GetLockRecordUseCase = void 0;
7
- var _handlerGraphql = require("@webiny/handler-graphql");
8
- var _lockRecordDatabaseId = require("../../utils/lockRecordDatabaseId");
9
- var _utils = require("@webiny/utils");
10
- class GetLockRecordUseCase {
11
- constructor(params) {
12
- this.getManager = params.getManager;
13
- this.getSecurity = params.getSecurity;
14
- this.convert = params.convert;
15
- }
16
- async execute(input) {
17
- const recordId = (0, _lockRecordDatabaseId.createLockRecordDatabaseId)(input.id);
18
- const id = (0, _utils.createIdentifier)({
19
- id: recordId,
20
- version: 1
21
- });
22
- const security = this.getSecurity();
23
- try {
24
- const manager = await this.getManager();
25
- return await security.withoutAuthorization(async () => {
26
- const result = await manager.get(id);
27
- return this.convert(result);
28
- });
29
- } catch (ex) {
30
- if (ex instanceof _handlerGraphql.NotFoundError) {
31
- return null;
32
- }
33
- throw ex;
34
- }
35
- }
36
- }
37
- exports.GetLockRecordUseCase = GetLockRecordUseCase;
38
-
39
- //# sourceMappingURL=GetLockRecordUseCase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_handlerGraphql","require","_lockRecordDatabaseId","_utils","GetLockRecordUseCase","constructor","params","getManager","getSecurity","convert","execute","input","recordId","createLockRecordDatabaseId","id","createIdentifier","version","security","manager","withoutAuthorization","result","get","ex","NotFoundError","exports"],"sources":["GetLockRecordUseCase.ts"],"sourcesContent":["import type {\n IGetLockRecordUseCase,\n IGetLockRecordUseCaseExecuteParams\n} from \"~/abstractions/IGetLockRecordUseCase\";\nimport type { IRecordLockingLockRecord, IRecordLockingModelManager } from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport type { ConvertEntryToLockRecordCb } from \"~/useCases/types\";\nimport type { Security } from \"@webiny/api-security/types\";\n\nexport interface IGetLockRecordUseCaseParams {\n getManager(): Promise<IRecordLockingModelManager>;\n getSecurity(): Pick<Security, \"withoutAuthorization\">;\n convert: ConvertEntryToLockRecordCb;\n}\n\nexport class GetLockRecordUseCase implements IGetLockRecordUseCase {\n private readonly getManager: IGetLockRecordUseCaseParams[\"getManager\"];\n private readonly getSecurity: IGetLockRecordUseCaseParams[\"getSecurity\"];\n private readonly convert: ConvertEntryToLockRecordCb;\n\n public constructor(params: IGetLockRecordUseCaseParams) {\n this.getManager = params.getManager;\n this.getSecurity = params.getSecurity;\n this.convert = params.convert;\n }\n\n public async execute(\n input: IGetLockRecordUseCaseExecuteParams\n ): Promise<IRecordLockingLockRecord | null> {\n const recordId = createLockRecordDatabaseId(input.id);\n const id = createIdentifier({\n id: recordId,\n version: 1\n });\n const security = this.getSecurity();\n try {\n const manager = await this.getManager();\n return await security.withoutAuthorization(async () => {\n const result = await manager.get(id);\n return this.convert(result);\n });\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAUO,MAAMG,oBAAoB,CAAkC;EAKxDC,WAAWA,CAACC,MAAmC,EAAE;IACpD,IAAI,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU;IACnC,IAAI,CAACC,WAAW,GAAGF,MAAM,CAACE,WAAW;IACrC,IAAI,CAACC,OAAO,GAAGH,MAAM,CAACG,OAAO;EACjC;EAEA,MAAaC,OAAOA,CAChBC,KAAyC,EACD;IACxC,MAAMC,QAAQ,GAAG,IAAAC,gDAA0B,EAACF,KAAK,CAACG,EAAE,CAAC;IACrD,MAAMA,EAAE,GAAG,IAAAC,uBAAgB,EAAC;MACxBD,EAAE,EAAEF,QAAQ;MACZI,OAAO,EAAE;IACb,CAAC,CAAC;IACF,MAAMC,QAAQ,GAAG,IAAI,CAACT,WAAW,CAAC,CAAC;IACnC,IAAI;MACA,MAAMU,OAAO,GAAG,MAAM,IAAI,CAACX,UAAU,CAAC,CAAC;MACvC,OAAO,MAAMU,QAAQ,CAACE,oBAAoB,CAAC,YAAY;QACnD,MAAMC,MAAM,GAAG,MAAMF,OAAO,CAACG,GAAG,CAACP,EAAE,CAAC;QACpC,OAAO,IAAI,CAACL,OAAO,CAACW,MAAM,CAAC;MAC/B,CAAC,CAAC;IACN,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,EAAE;QAC7B,OAAO,IAAI;MACf;MACA,MAAMD,EAAE;IACZ;EACJ;AACJ;AAACE,OAAA,CAAApB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1,16 +0,0 @@
1
- import type { IGetLockRecordUseCase } from "../../abstractions/IGetLockRecordUseCase";
2
- import type { IGetIdentity, IRecordLockingLockRecord } from "../../types";
3
- import type { IGetLockedEntryLockRecordUseCase, IGetLockedEntryLockRecordUseCaseExecuteParams } from "../../abstractions/IGetLockedEntryLockRecordUseCase";
4
- export interface IGetLockedEntryLockRecordUseCaseParams {
5
- getLockRecordUseCase: IGetLockRecordUseCase;
6
- getIdentity: IGetIdentity;
7
- }
8
- /**
9
- * This use case is used to get a lock record for an entry - and the entry is still locked by someone other than the current user.
10
- */
11
- export declare class GetLockedEntryLockRecordUseCase implements IGetLockedEntryLockRecordUseCase {
12
- private readonly getLockRecordUseCase;
13
- private readonly getIdentity;
14
- constructor(params: IGetLockedEntryLockRecordUseCaseParams);
15
- execute(params: IGetLockedEntryLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;
16
- }
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.GetLockedEntryLockRecordUseCase = void 0;
7
- /**
8
- * This use case is used to get a lock record for an entry - and the entry is still locked by someone other than the current user.
9
- */
10
- class GetLockedEntryLockRecordUseCase {
11
- constructor(params) {
12
- this.getLockRecordUseCase = params.getLockRecordUseCase;
13
- this.getIdentity = params.getIdentity;
14
- }
15
- async execute(params) {
16
- const result = await this.getLockRecordUseCase.execute(params);
17
- if (!result?.lockedBy?.id || result.isExpired()) {
18
- return null;
19
- }
20
- const identity = this.getIdentity();
21
- if (identity.id === result.lockedBy.id) {
22
- return null;
23
- }
24
- return result;
25
- }
26
- }
27
- exports.GetLockedEntryLockRecordUseCase = GetLockedEntryLockRecordUseCase;
28
-
29
- //# sourceMappingURL=GetLockedEntryLockRecordUseCase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["GetLockedEntryLockRecordUseCase","constructor","params","getLockRecordUseCase","getIdentity","execute","result","lockedBy","id","isExpired","identity","exports"],"sources":["GetLockedEntryLockRecordUseCase.ts"],"sourcesContent":["import type { IGetLockRecordUseCase } from \"~/abstractions/IGetLockRecordUseCase\";\nimport type { IGetIdentity, IRecordLockingLockRecord } from \"~/types\";\nimport type {\n IGetLockedEntryLockRecordUseCase,\n IGetLockedEntryLockRecordUseCaseExecuteParams\n} from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\n\nexport interface IGetLockedEntryLockRecordUseCaseParams {\n getLockRecordUseCase: IGetLockRecordUseCase;\n getIdentity: IGetIdentity;\n}\n\n/**\n * This use case is used to get a lock record for an entry - and the entry is still locked by someone other than the current user.\n */\nexport class GetLockedEntryLockRecordUseCase implements IGetLockedEntryLockRecordUseCase {\n private readonly getLockRecordUseCase: IGetLockRecordUseCase;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IGetLockedEntryLockRecordUseCaseParams) {\n this.getLockRecordUseCase = params.getLockRecordUseCase;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(\n params: IGetLockedEntryLockRecordUseCaseExecuteParams\n ): Promise<IRecordLockingLockRecord | null> {\n const result = await this.getLockRecordUseCase.execute(params);\n if (!result?.lockedBy?.id || result.isExpired()) {\n return null;\n }\n const identity = this.getIdentity();\n if (identity.id === result.lockedBy.id) {\n return null;\n }\n return result;\n }\n}\n"],"mappings":";;;;;;AAYA;AACA;AACA;AACO,MAAMA,+BAA+B,CAA6C;EAI9EC,WAAWA,CAACC,MAA8C,EAAE;IAC/D,IAAI,CAACC,oBAAoB,GAAGD,MAAM,CAACC,oBAAoB;IACvD,IAAI,CAACC,WAAW,GAAGF,MAAM,CAACE,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAChBH,MAAqD,EACb;IACxC,MAAMI,MAAM,GAAG,MAAM,IAAI,CAACH,oBAAoB,CAACE,OAAO,CAACH,MAAM,CAAC;IAC9D,IAAI,CAACI,MAAM,EAAEC,QAAQ,EAAEC,EAAE,IAAIF,MAAM,CAACG,SAAS,CAAC,CAAC,EAAE;MAC7C,OAAO,IAAI;IACf;IACA,MAAMC,QAAQ,GAAG,IAAI,CAACN,WAAW,CAAC,CAAC;IACnC,IAAIM,QAAQ,CAACF,EAAE,KAAKF,MAAM,CAACC,QAAQ,CAACC,EAAE,EAAE;MACpC,OAAO,IAAI;IACf;IACA,OAAOF,MAAM;EACjB;AACJ;AAACK,OAAA,CAAAX,+BAAA,GAAAA,+BAAA","ignoreList":[]}
@@ -1,13 +0,0 @@
1
- import type { IIsEntryLockedUseCase, IIsEntryLockedUseCaseExecuteParams } from "../../abstractions/IIsEntryLocked";
2
- import type { IGetLockRecordUseCase } from "../../abstractions/IGetLockRecordUseCase";
3
- import type { IGetIdentity } from "../../types";
4
- export interface IIsEntryLockedParams {
5
- getLockRecordUseCase: IGetLockRecordUseCase;
6
- getIdentity: IGetIdentity;
7
- }
8
- export declare class IsEntryLockedUseCase implements IIsEntryLockedUseCase {
9
- private readonly getLockRecordUseCase;
10
- private readonly getIdentity;
11
- constructor(params: IIsEntryLockedParams);
12
- execute(params: IIsEntryLockedUseCaseExecuteParams): Promise<boolean>;
13
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.IsEntryLockedUseCase = void 0;
7
- var _handlerGraphql = require("@webiny/handler-graphql");
8
- class IsEntryLockedUseCase {
9
- constructor(params) {
10
- this.getLockRecordUseCase = params.getLockRecordUseCase;
11
- this.getIdentity = params.getIdentity;
12
- }
13
- async execute(params) {
14
- try {
15
- const result = await this.getLockRecordUseCase.execute(params);
16
- if (!result || result.isExpired()) {
17
- return false;
18
- }
19
- const identity = this.getIdentity();
20
- return result.lockedBy.id !== identity.id;
21
- } catch (ex) {
22
- if (ex instanceof _handlerGraphql.NotFoundError === false) {
23
- throw ex;
24
- }
25
- return false;
26
- }
27
- }
28
- }
29
- exports.IsEntryLockedUseCase = IsEntryLockedUseCase;
30
-
31
- //# sourceMappingURL=IsEntryLockedUseCase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_handlerGraphql","require","IsEntryLockedUseCase","constructor","params","getLockRecordUseCase","getIdentity","execute","result","isExpired","identity","lockedBy","id","ex","NotFoundError","exports"],"sources":["IsEntryLockedUseCase.ts"],"sourcesContent":["import type {\n IIsEntryLockedUseCase,\n IIsEntryLockedUseCaseExecuteParams\n} from \"~/abstractions/IIsEntryLocked\";\nimport type { IGetLockRecordUseCase } from \"~/abstractions/IGetLockRecordUseCase\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport type { IGetIdentity } from \"~/types\";\n\nexport interface IIsEntryLockedParams {\n getLockRecordUseCase: IGetLockRecordUseCase;\n getIdentity: IGetIdentity;\n}\n\nexport class IsEntryLockedUseCase implements IIsEntryLockedUseCase {\n private readonly getLockRecordUseCase: IGetLockRecordUseCase;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IIsEntryLockedParams) {\n this.getLockRecordUseCase = params.getLockRecordUseCase;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(params: IIsEntryLockedUseCaseExecuteParams): Promise<boolean> {\n try {\n const result = await this.getLockRecordUseCase.execute(params);\n if (!result || result.isExpired()) {\n return false;\n }\n const identity = this.getIdentity();\n\n return result.lockedBy.id !== identity.id;\n } catch (ex) {\n if (ex instanceof NotFoundError === false) {\n throw ex;\n }\n return false;\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,eAAA,GAAAC,OAAA;AAQO,MAAMC,oBAAoB,CAAkC;EAIxDC,WAAWA,CAACC,MAA4B,EAAE;IAC7C,IAAI,CAACC,oBAAoB,GAAGD,MAAM,CAACC,oBAAoB;IACvD,IAAI,CAACC,WAAW,GAAGF,MAAM,CAACE,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAACH,MAA0C,EAAoB;IAC/E,IAAI;MACA,MAAMI,MAAM,GAAG,MAAM,IAAI,CAACH,oBAAoB,CAACE,OAAO,CAACH,MAAM,CAAC;MAC9D,IAAI,CAACI,MAAM,IAAIA,MAAM,CAACC,SAAS,CAAC,CAAC,EAAE;QAC/B,OAAO,KAAK;MAChB;MACA,MAAMC,QAAQ,GAAG,IAAI,CAACJ,WAAW,CAAC,CAAC;MAEnC,OAAOE,MAAM,CAACG,QAAQ,CAACC,EAAE,KAAKF,QAAQ,CAACE,EAAE;IAC7C,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,KAAK,KAAK,EAAE;QACvC,MAAMD,EAAE;MACZ;MACA,OAAO,KAAK;IAChB;EACJ;AACJ;AAACE,OAAA,CAAAb,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1,12 +0,0 @@
1
- import type { IKickOutCurrentUserUseCase, IKickOutCurrentUserUseCaseExecuteParams } from "../../abstractions/IKickOutCurrentUserUseCase";
2
- import type { IGetIdentity, IGetWebsocketsContextCallable } from "../../types";
3
- export interface IKickOutCurrentUserUseCaseParams {
4
- getWebsockets: IGetWebsocketsContextCallable;
5
- getIdentity: IGetIdentity;
6
- }
7
- export declare class KickOutCurrentUserUseCase implements IKickOutCurrentUserUseCase {
8
- private readonly getWebsockets;
9
- private readonly getIdentity;
10
- constructor(params: IKickOutCurrentUserUseCaseParams);
11
- execute(record: IKickOutCurrentUserUseCaseExecuteParams): Promise<void>;
12
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.KickOutCurrentUserUseCase = void 0;
7
- var _utils = require("@webiny/utils");
8
- class KickOutCurrentUserUseCase {
9
- constructor(params) {
10
- this.getWebsockets = params.getWebsockets;
11
- this.getIdentity = params.getIdentity;
12
- }
13
- async execute(record) {
14
- const {
15
- lockedBy,
16
- id
17
- } = record;
18
- const websockets = this.getWebsockets();
19
- const {
20
- id: entryId
21
- } = (0, _utils.parseIdentifier)(id);
22
- const identity = this.getIdentity();
23
-
24
- /**
25
- * We do not want any errors to leak out of this method.
26
- * Just log the error, if any.
27
- */
28
- try {
29
- await websockets.send({
30
- id: lockedBy.id
31
- }, {
32
- action: `recordLocking.entry.kickOut.${entryId}`,
33
- data: {
34
- record: record.toObject(),
35
- user: identity
36
- }
37
- });
38
- } catch (ex) {
39
- console.error(`Could not send the kickOut message to a user with identity id: ${lockedBy.id}. More info in next log line.`);
40
- console.info(ex);
41
- }
42
- }
43
- }
44
- exports.KickOutCurrentUserUseCase = KickOutCurrentUserUseCase;
45
-
46
- //# sourceMappingURL=KickOutCurrentUserUseCase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_utils","require","KickOutCurrentUserUseCase","constructor","params","getWebsockets","getIdentity","execute","record","lockedBy","id","websockets","entryId","parseIdentifier","identity","send","action","data","toObject","user","ex","console","error","info","exports"],"sources":["KickOutCurrentUserUseCase.ts"],"sourcesContent":["import type {\n IKickOutCurrentUserUseCase,\n IKickOutCurrentUserUseCaseExecuteParams\n} from \"~/abstractions/IKickOutCurrentUserUseCase\";\nimport type { IGetIdentity, IGetWebsocketsContextCallable } from \"~/types\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nexport interface IKickOutCurrentUserUseCaseParams {\n getWebsockets: IGetWebsocketsContextCallable;\n getIdentity: IGetIdentity;\n}\n\nexport class KickOutCurrentUserUseCase implements IKickOutCurrentUserUseCase {\n private readonly getWebsockets: IGetWebsocketsContextCallable;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IKickOutCurrentUserUseCaseParams) {\n this.getWebsockets = params.getWebsockets;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(record: IKickOutCurrentUserUseCaseExecuteParams): Promise<void> {\n const { lockedBy, id } = record;\n\n const websockets = this.getWebsockets();\n\n const { id: entryId } = parseIdentifier(id);\n\n const identity = this.getIdentity();\n\n /**\n * We do not want any errors to leak out of this method.\n * Just log the error, if any.\n */\n try {\n await websockets.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 } catch (ex) {\n console.error(\n `Could not send the kickOut message to a user with identity id: ${lockedBy.id}. More info in next log line.`\n );\n console.info(ex);\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAOO,MAAMC,yBAAyB,CAAuC;EAIlEC,WAAWA,CAACC,MAAwC,EAAE;IACzD,IAAI,CAACC,aAAa,GAAGD,MAAM,CAACC,aAAa;IACzC,IAAI,CAACC,WAAW,GAAGF,MAAM,CAACE,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAACC,MAA+C,EAAiB;IACjF,MAAM;MAAEC,QAAQ;MAAEC;IAAG,CAAC,GAAGF,MAAM;IAE/B,MAAMG,UAAU,GAAG,IAAI,CAACN,aAAa,CAAC,CAAC;IAEvC,MAAM;MAAEK,EAAE,EAAEE;IAAQ,CAAC,GAAG,IAAAC,sBAAe,EAACH,EAAE,CAAC;IAE3C,MAAMI,QAAQ,GAAG,IAAI,CAACR,WAAW,CAAC,CAAC;;IAEnC;AACR;AACA;AACA;IACQ,IAAI;MACA,MAAMK,UAAU,CAACI,IAAI,CACjB;QAAEL,EAAE,EAAED,QAAQ,CAACC;MAAG,CAAC,EACnB;QACIM,MAAM,EAAE,+BAA+BJ,OAAO,EAAE;QAChDK,IAAI,EAAE;UACFT,MAAM,EAAEA,MAAM,CAACU,QAAQ,CAAC,CAAC;UACzBC,IAAI,EAAEL;QACV;MACJ,CACJ,CAAC;IACL,CAAC,CAAC,OAAOM,EAAE,EAAE;MACTC,OAAO,CAACC,KAAK,CACT,kEAAkEb,QAAQ,CAACC,EAAE,+BACjF,CAAC;MACDW,OAAO,CAACE,IAAI,CAACH,EAAE,CAAC;IACpB;EACJ;AACJ;AAACI,OAAA,CAAAtB,yBAAA,GAAAA,yBAAA","ignoreList":[]}