@webiny/api-record-locking 0.0.0-unstable.a4637c5ce6 → 0.0.0-unstable.a4f3e4ea8b

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 (285) hide show
  1. package/README.md +10 -9
  2. package/domain/LockRecord.d.ts +45 -0
  3. package/domain/LockRecord.js +73 -0
  4. package/domain/LockRecord.js.map +1 -0
  5. package/domain/RecordLockingModel.d.ts +9 -0
  6. package/domain/RecordLockingModel.js +32 -0
  7. package/domain/RecordLockingModel.js.map +1 -0
  8. package/domain/abstractions.d.ts +18 -0
  9. package/domain/abstractions.js +6 -0
  10. package/domain/abstractions.js.map +1 -0
  11. package/domain/calculateExpiresOn.d.ts +1 -0
  12. package/domain/calculateExpiresOn.js +8 -0
  13. package/domain/calculateExpiresOn.js.map +1 -0
  14. package/domain/errors.d.ts +71 -0
  15. package/domain/errors.js +85 -0
  16. package/domain/errors.js.map +1 -0
  17. package/domain/index.d.ts +4 -0
  18. package/domain/index.js +4 -0
  19. package/domain/types.d.ts +44 -0
  20. package/domain/types.js +9 -0
  21. package/domain/types.js.map +1 -0
  22. package/features/GetLockRecord/GetLockRecordRepository.d.ts +16 -0
  23. package/features/GetLockRecord/GetLockRecordRepository.js +40 -0
  24. package/features/GetLockRecord/GetLockRecordRepository.js.map +1 -0
  25. package/features/GetLockRecord/GetLockRecordUseCase.d.ts +12 -0
  26. package/features/GetLockRecord/GetLockRecordUseCase.js +18 -0
  27. package/features/GetLockRecord/GetLockRecordUseCase.js.map +1 -0
  28. package/features/GetLockRecord/abstractions.d.ts +41 -0
  29. package/features/GetLockRecord/abstractions.js +6 -0
  30. package/features/GetLockRecord/abstractions.js.map +1 -0
  31. package/features/GetLockRecord/feature.d.ts +4 -0
  32. package/features/GetLockRecord/feature.js +13 -0
  33. package/features/GetLockRecord/feature.js.map +1 -0
  34. package/features/GetLockRecord/index.d.ts +2 -0
  35. package/features/GetLockRecord/index.js +2 -0
  36. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +15 -0
  37. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +30 -0
  38. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -0
  39. package/features/GetLockedEntryLockRecord/abstractions.d.ts +26 -0
  40. package/features/GetLockedEntryLockRecord/abstractions.js +5 -0
  41. package/features/GetLockedEntryLockRecord/abstractions.js.map +1 -0
  42. package/features/GetLockedEntryLockRecord/feature.d.ts +4 -0
  43. package/features/GetLockedEntryLockRecord/feature.js +11 -0
  44. package/features/GetLockedEntryLockRecord/feature.js.map +1 -0
  45. package/features/GetLockedEntryLockRecord/index.d.ts +2 -0
  46. package/features/GetLockedEntryLockRecord/index.js +2 -0
  47. package/features/IsEntryLocked/IsEntryLockedUseCase.d.ts +14 -0
  48. package/features/IsEntryLocked/IsEntryLockedUseCase.js +33 -0
  49. package/features/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -0
  50. package/features/IsEntryLocked/abstractions.d.ts +24 -0
  51. package/features/IsEntryLocked/abstractions.js +5 -0
  52. package/features/IsEntryLocked/abstractions.js.map +1 -0
  53. package/features/IsEntryLocked/feature.d.ts +4 -0
  54. package/features/IsEntryLocked/feature.js +11 -0
  55. package/features/IsEntryLocked/feature.js.map +1 -0
  56. package/features/IsEntryLocked/index.d.ts +1 -0
  57. package/features/IsEntryLocked/index.js +1 -0
  58. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +15 -0
  59. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js +36 -0
  60. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -0
  61. package/features/KickOutCurrentUser/abstractions.d.ts +17 -0
  62. package/features/KickOutCurrentUser/abstractions.js +5 -0
  63. package/features/KickOutCurrentUser/abstractions.js.map +1 -0
  64. package/features/KickOutCurrentUser/feature.d.ts +4 -0
  65. package/features/KickOutCurrentUser/feature.js +11 -0
  66. package/features/KickOutCurrentUser/feature.js.map +1 -0
  67. package/features/KickOutCurrentUser/index.d.ts +1 -0
  68. package/features/KickOutCurrentUser/index.js +1 -0
  69. package/features/ListAllLockRecords/ListAllLockRecordsRepository.d.ts +18 -0
  70. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js +49 -0
  71. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js.map +1 -0
  72. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.d.ts +11 -0
  73. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js +18 -0
  74. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js.map +1 -0
  75. package/features/ListAllLockRecords/abstractions.d.ts +40 -0
  76. package/features/ListAllLockRecords/abstractions.js +6 -0
  77. package/features/ListAllLockRecords/abstractions.js.map +1 -0
  78. package/features/ListAllLockRecords/feature.d.ts +4 -0
  79. package/features/ListAllLockRecords/feature.js +13 -0
  80. package/features/ListAllLockRecords/feature.js.map +1 -0
  81. package/features/ListAllLockRecords/index.d.ts +2 -0
  82. package/features/ListAllLockRecords/index.js +2 -0
  83. package/features/ListLockRecords/ListLockRecordsRepository.d.ts +17 -0
  84. package/features/ListLockRecords/ListLockRecordsRepository.js +49 -0
  85. package/features/ListLockRecords/ListLockRecordsRepository.js.map +1 -0
  86. package/features/ListLockRecords/ListLockRecordsUseCase.d.ts +15 -0
  87. package/features/ListLockRecords/ListLockRecordsUseCase.js +33 -0
  88. package/features/ListLockRecords/ListLockRecordsUseCase.js.map +1 -0
  89. package/features/ListLockRecords/abstractions.d.ts +45 -0
  90. package/features/ListLockRecords/abstractions.js +6 -0
  91. package/features/ListLockRecords/abstractions.js.map +1 -0
  92. package/features/ListLockRecords/feature.d.ts +4 -0
  93. package/features/ListLockRecords/feature.js +13 -0
  94. package/features/ListLockRecords/feature.js.map +1 -0
  95. package/features/ListLockRecords/index.d.ts +1 -0
  96. package/features/ListLockRecords/index.js +1 -0
  97. package/features/LockEntry/LockEntryEventsDecorator.d.ts +14 -0
  98. package/features/LockEntry/LockEntryEventsDecorator.js +40 -0
  99. package/features/LockEntry/LockEntryEventsDecorator.js.map +1 -0
  100. package/features/LockEntry/LockEntryRepository.d.ts +16 -0
  101. package/features/LockEntry/LockEntryRepository.js +45 -0
  102. package/features/LockEntry/LockEntryRepository.js.map +1 -0
  103. package/features/LockEntry/LockEntryUseCase.d.ts +14 -0
  104. package/features/LockEntry/LockEntryUseCase.js +31 -0
  105. package/features/LockEntry/LockEntryUseCase.js.map +1 -0
  106. package/features/LockEntry/abstractions.d.ts +41 -0
  107. package/features/LockEntry/abstractions.js +6 -0
  108. package/features/LockEntry/abstractions.js.map +1 -0
  109. package/features/LockEntry/events.d.ts +45 -0
  110. package/features/LockEntry/events.js +32 -0
  111. package/features/LockEntry/events.js.map +1 -0
  112. package/features/LockEntry/feature.d.ts +4 -0
  113. package/features/LockEntry/feature.js +15 -0
  114. package/features/LockEntry/feature.js.map +1 -0
  115. package/features/LockEntry/index.d.ts +1 -0
  116. package/features/LockEntry/index.js +1 -0
  117. package/features/RecordLockingFeature.d.ts +15 -0
  118. package/features/RecordLockingFeature.js +34 -0
  119. package/features/RecordLockingFeature.js.map +1 -0
  120. package/features/UnlockEntry/UnlockEntryEventsDecorator.d.ts +14 -0
  121. package/features/UnlockEntry/UnlockEntryEventsDecorator.js +41 -0
  122. package/features/UnlockEntry/UnlockEntryEventsDecorator.js.map +1 -0
  123. package/features/UnlockEntry/UnlockEntryRepository.d.ts +14 -0
  124. package/features/UnlockEntry/UnlockEntryRepository.js +42 -0
  125. package/features/UnlockEntry/UnlockEntryRepository.js.map +1 -0
  126. package/features/UnlockEntry/UnlockEntryUseCase.d.ts +18 -0
  127. package/features/UnlockEntry/UnlockEntryUseCase.js +65 -0
  128. package/features/UnlockEntry/UnlockEntryUseCase.js.map +1 -0
  129. package/features/UnlockEntry/abstractions.d.ts +44 -0
  130. package/features/UnlockEntry/abstractions.js +6 -0
  131. package/features/UnlockEntry/abstractions.js.map +1 -0
  132. package/features/UnlockEntry/events.d.ts +46 -0
  133. package/features/UnlockEntry/events.js +32 -0
  134. package/features/UnlockEntry/events.js.map +1 -0
  135. package/features/UnlockEntry/feature.d.ts +4 -0
  136. package/features/UnlockEntry/feature.js +15 -0
  137. package/features/UnlockEntry/feature.js.map +1 -0
  138. package/features/UnlockEntry/hasFullAccessPermission.d.ts +2 -0
  139. package/features/UnlockEntry/hasFullAccessPermission.js +9 -0
  140. package/features/UnlockEntry/hasFullAccessPermission.js.map +1 -0
  141. package/features/UnlockEntry/index.d.ts +1 -0
  142. package/features/UnlockEntry/index.js +1 -0
  143. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.d.ts +14 -0
  144. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js +40 -0
  145. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js.map +1 -0
  146. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.d.ts +17 -0
  147. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js +44 -0
  148. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js.map +1 -0
  149. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.d.ts +16 -0
  150. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js +75 -0
  151. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js.map +1 -0
  152. package/features/UnlockEntryRequest/abstractions.d.ts +42 -0
  153. package/features/UnlockEntryRequest/abstractions.js +6 -0
  154. package/features/UnlockEntryRequest/abstractions.js.map +1 -0
  155. package/features/UnlockEntryRequest/events.d.ts +45 -0
  156. package/features/UnlockEntryRequest/events.js +32 -0
  157. package/features/UnlockEntryRequest/events.js.map +1 -0
  158. package/features/UnlockEntryRequest/feature.d.ts +4 -0
  159. package/features/UnlockEntryRequest/feature.js +15 -0
  160. package/features/UnlockEntryRequest/feature.js.map +1 -0
  161. package/features/UnlockEntryRequest/index.d.ts +3 -0
  162. package/features/UnlockEntryRequest/index.js +3 -0
  163. package/features/UpdateEntryLock/UpdateEntryLockRepository.d.ts +20 -0
  164. package/features/UpdateEntryLock/UpdateEntryLockRepository.js +60 -0
  165. package/features/UpdateEntryLock/UpdateEntryLockRepository.js.map +1 -0
  166. package/features/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +18 -0
  167. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js +51 -0
  168. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -0
  169. package/features/UpdateEntryLock/abstractions.d.ts +42 -0
  170. package/features/UpdateEntryLock/abstractions.js +6 -0
  171. package/features/UpdateEntryLock/abstractions.js.map +1 -0
  172. package/features/UpdateEntryLock/feature.d.ts +4 -0
  173. package/features/UpdateEntryLock/feature.js +13 -0
  174. package/features/UpdateEntryLock/feature.js.map +1 -0
  175. package/features/UpdateEntryLock/index.d.ts +1 -0
  176. package/features/UpdateEntryLock/index.js +1 -0
  177. package/graphql/checkPermissions.d.ts +5 -0
  178. package/graphql/checkPermissions.js +10 -0
  179. package/graphql/checkPermissions.js.map +1 -0
  180. package/{utils → graphql}/resolve.d.ts +2 -2
  181. package/graphql/resolve.js +20 -0
  182. package/graphql/resolve.js.map +1 -0
  183. package/graphql/schema.d.ts +7 -3
  184. package/graphql/schema.js +162 -145
  185. package/graphql/schema.js.map +1 -1
  186. package/index.d.ts +3 -3
  187. package/index.js +55 -34
  188. package/index.js.map +1 -1
  189. package/package.json +29 -28
  190. package/types.d.ts +3 -132
  191. package/types.js +6 -27
  192. package/types.js.map +1 -1
  193. package/utils/convertWhereCondition.d.ts +1 -1
  194. package/utils/convertWhereCondition.js +21 -36
  195. package/utils/convertWhereCondition.js.map +1 -1
  196. package/utils/getTimeout.js +8 -22
  197. package/utils/getTimeout.js.map +1 -1
  198. package/utils/lockRecordDatabaseId.js +7 -20
  199. package/utils/lockRecordDatabaseId.js.map +1 -1
  200. package/abstractions/IGetLockRecordUseCase.d.ts +0 -8
  201. package/abstractions/IGetLockRecordUseCase.js +0 -7
  202. package/abstractions/IGetLockRecordUseCase.js.map +0 -1
  203. package/abstractions/IGetLockedEntryLockRecordUseCase.d.ts +0 -8
  204. package/abstractions/IGetLockedEntryLockRecordUseCase.js +0 -7
  205. package/abstractions/IGetLockedEntryLockRecordUseCase.js.map +0 -1
  206. package/abstractions/IIsEntryLocked.d.ts +0 -8
  207. package/abstractions/IIsEntryLocked.js +0 -7
  208. package/abstractions/IIsEntryLocked.js.map +0 -1
  209. package/abstractions/IKickOutCurrentUserUseCase.d.ts +0 -5
  210. package/abstractions/IKickOutCurrentUserUseCase.js +0 -7
  211. package/abstractions/IKickOutCurrentUserUseCase.js.map +0 -1
  212. package/abstractions/IListAllLockRecordsUseCase.d.ts +0 -9
  213. package/abstractions/IListAllLockRecordsUseCase.js +0 -7
  214. package/abstractions/IListAllLockRecordsUseCase.js.map +0 -1
  215. package/abstractions/IListLockRecordsUseCase.d.ts +0 -10
  216. package/abstractions/IListLockRecordsUseCase.js +0 -7
  217. package/abstractions/IListLockRecordsUseCase.js.map +0 -1
  218. package/abstractions/ILockEntryUseCase.d.ts +0 -11
  219. package/abstractions/ILockEntryUseCase.js +0 -7
  220. package/abstractions/ILockEntryUseCase.js.map +0 -1
  221. package/abstractions/IUnlockEntryRequestUseCase.d.ts +0 -11
  222. package/abstractions/IUnlockEntryRequestUseCase.js +0 -7
  223. package/abstractions/IUnlockEntryRequestUseCase.js.map +0 -1
  224. package/abstractions/IUnlockEntryUseCase.d.ts +0 -12
  225. package/abstractions/IUnlockEntryUseCase.js +0 -7
  226. package/abstractions/IUnlockEntryUseCase.js.map +0 -1
  227. package/abstractions/IUpdateEntryLockUseCase.d.ts +0 -11
  228. package/abstractions/IUpdateEntryLockUseCase.js +0 -7
  229. package/abstractions/IUpdateEntryLockUseCase.js.map +0 -1
  230. package/crud/crud.d.ts +0 -7
  231. package/crud/crud.js +0 -204
  232. package/crud/crud.js.map +0 -1
  233. package/crud/model.d.ts +0 -2
  234. package/crud/model.js +0 -127
  235. package/crud/model.js.map +0 -1
  236. package/useCases/GetLockRecord/GetLockRecordUseCase.d.ts +0 -16
  237. package/useCases/GetLockRecord/GetLockRecordUseCase.js +0 -39
  238. package/useCases/GetLockRecord/GetLockRecordUseCase.js.map +0 -1
  239. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +0 -16
  240. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +0 -29
  241. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +0 -1
  242. package/useCases/IsEntryLocked/IsEntryLockedUseCase.d.ts +0 -13
  243. package/useCases/IsEntryLocked/IsEntryLockedUseCase.js +0 -31
  244. package/useCases/IsEntryLocked/IsEntryLockedUseCase.js.map +0 -1
  245. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +0 -12
  246. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js +0 -46
  247. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +0 -1
  248. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.d.ts +0 -13
  249. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js +0 -34
  250. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js.map +0 -1
  251. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.d.ts +0 -14
  252. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js +0 -27
  253. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js.map +0 -1
  254. package/useCases/LockEntryUseCase/LockEntryUseCase.d.ts +0 -21
  255. package/useCases/LockEntryUseCase/LockEntryUseCase.js +0 -64
  256. package/useCases/LockEntryUseCase/LockEntryUseCase.js.map +0 -1
  257. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.d.ts +0 -23
  258. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js +0 -90
  259. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js.map +0 -1
  260. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.d.ts +0 -21
  261. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js +0 -82
  262. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js.map +0 -1
  263. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +0 -26
  264. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js +0 -93
  265. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js.map +0 -1
  266. package/useCases/index.d.ts +0 -31
  267. package/useCases/index.js +0 -96
  268. package/useCases/index.js.map +0 -1
  269. package/useCases/types.d.ts +0 -5
  270. package/useCases/types.js +0 -7
  271. package/useCases/types.js.map +0 -1
  272. package/utils/calculateExpiresOn.d.ts +0 -2
  273. package/utils/calculateExpiresOn.js +0 -16
  274. package/utils/calculateExpiresOn.js.map +0 -1
  275. package/utils/checkPermissions.d.ts +0 -7
  276. package/utils/checkPermissions.js +0 -21
  277. package/utils/checkPermissions.js.map +0 -1
  278. package/utils/convertEntryToLockRecord.d.ts +0 -28
  279. package/utils/convertEntryToLockRecord.js +0 -91
  280. package/utils/convertEntryToLockRecord.js.map +0 -1
  281. package/utils/resolve.js +0 -30
  282. package/utils/resolve.js.map +0 -1
  283. package/utils/validateSameIdentity.d.ts +0 -6
  284. package/utils/validateSameIdentity.js +0 -24
  285. package/utils/validateSameIdentity.js.map +0 -1
package/index.js CHANGED
@@ -1,39 +1,60 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createRecordLocking = void 0;
7
- var _schema = require("./graphql/schema");
8
- var _api = require("@webiny/api");
9
- var _crud = require("./crud/crud");
10
- var _model = require("./crud/model");
11
- var _apiHeadlessCms = require("@webiny/api-headless-cms");
12
- const createContextPlugin = params => {
13
- const plugin = new _api.ContextPlugin(async context => {
14
- if (!context.wcp.canUseRecordLocking()) {
15
- return;
16
- }
17
- const ready = await (0, _apiHeadlessCms.isHeadlessCmsReady)(context);
18
- if (!ready) {
19
- return;
20
- }
21
- context.plugins.register((0, _model.createLockingModel)());
22
- context.recordLocking = await (0, _crud.createRecordLockingCrud)({
23
- context,
24
- timeout: params?.timeout
25
- });
26
- const graphQlPlugin = await (0, _schema.createGraphQLSchema)({
27
- context
1
+ import { ContextPlugin } from "@webiny/api";
2
+ import { createRegisterExtensionPlugin } from "@webiny/handler";
3
+ import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
4
+ import { ListModelsUseCase } from "@webiny/api-headless-cms/features/contentModel/ListModels";
5
+ import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel";
6
+ import { RECORD_LOCKING_MODEL_ID, RecordLockingModel } from "./domain/RecordLockingModel.js";
7
+ import { getTimeout } from "./utils/getTimeout.js";
8
+ import { RecordLockingFeature } from "./features/RecordLockingFeature.js";
9
+ import { createGraphQLSchema } from "./graphql/schema.js";
10
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
11
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
12
+ import { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
13
+ const createContextPlugin = (params)=>{
14
+ const recordLockingContextPlugin = new ContextPlugin(async (context)=>{
15
+ const tenantContext = context.container.resolve(TenantContext);
16
+ const identityContext = context.container.resolve(IdentityContext);
17
+ const wcp = context.container.resolve(WcpContext);
18
+ const getModel = context.container.resolve(GetModelUseCase);
19
+ const listModels = context.container.resolve(ListModelsUseCase);
20
+ if (!wcp.canUseRecordLocking() || !tenantContext.getTenant()) return;
21
+ const timeout = getTimeout(params?.timeout);
22
+ const [model, publicModels] = await identityContext.withoutAuthorization(async ()=>{
23
+ const [model, publicModels] = await Promise.all([
24
+ getModel.execute(RECORD_LOCKING_MODEL_ID),
25
+ listModels.execute({
26
+ includePrivate: false
27
+ })
28
+ ]);
29
+ return [
30
+ model.value,
31
+ publicModels.value
32
+ ];
33
+ });
34
+ const fieldRegistry = context.container.resolve(CmsModelFieldToGraphQLRegistry);
35
+ const graphQlPlugin = await createGraphQLSchema({
36
+ model,
37
+ models: publicModels,
38
+ fieldRegistry
39
+ });
40
+ context.plugins.register(graphQlPlugin);
41
+ RecordLockingFeature.register(context.container, {
42
+ timeout,
43
+ model
44
+ });
28
45
  });
29
- context.plugins.register(graphQlPlugin);
30
- });
31
- plugin.name = "context.recordLocking";
32
- return plugin;
46
+ recordLockingContextPlugin.name = "context.recordLocking";
47
+ return recordLockingContextPlugin;
33
48
  };
34
- const createRecordLocking = params => {
35
- return [createContextPlugin(params)];
49
+ const createRecordLocking = (params)=>{
50
+ const modelsPlugin = createRegisterExtensionPlugin((context)=>{
51
+ context.container.register(RecordLockingModel);
52
+ });
53
+ return [
54
+ createContextPlugin(params),
55
+ modelsPlugin
56
+ ];
36
57
  };
37
- exports.createRecordLocking = createRecordLocking;
58
+ export { createRecordLocking };
38
59
 
39
60
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_schema","require","_api","_crud","_model","_apiHeadlessCms","createContextPlugin","params","plugin","ContextPlugin","context","wcp","canUseRecordLocking","ready","isHeadlessCmsReady","plugins","register","createLockingModel","recordLocking","createRecordLockingCrud","timeout","graphQlPlugin","createGraphQLSchema","name","createRecordLocking","exports"],"sources":["index.ts"],"sourcesContent":["import { createGraphQLSchema } from \"~/graphql/schema\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport type { Context } from \"~/types\";\nimport { createRecordLockingCrud } from \"~/crud/crud\";\nimport { createLockingModel } from \"~/crud/model\";\nimport { isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\n\nexport interface ICreateContextPluginParams {\n /**\n * A number of seconds after last activity to wait before the record is automatically unlocked.\n */\n timeout?: number;\n}\n\nconst createContextPlugin = (params?: ICreateContextPluginParams) => {\n const plugin = new ContextPlugin<Context>(async context => {\n if (!context.wcp.canUseRecordLocking()) {\n return;\n }\n\n const ready = await isHeadlessCmsReady(context);\n if (!ready) {\n return;\n }\n context.plugins.register(createLockingModel());\n\n context.recordLocking = await createRecordLockingCrud({\n context,\n timeout: params?.timeout\n });\n\n const graphQlPlugin = await createGraphQLSchema({ context });\n context.plugins.register(graphQlPlugin);\n });\n plugin.name = \"context.recordLocking\";\n\n return plugin;\n};\n\nexport const createRecordLocking = (params?: ICreateContextPluginParams) => {\n return [createContextPlugin(params)];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AASA,MAAMK,mBAAmB,GAAIC,MAAmC,IAAK;EACjE,MAAMC,MAAM,GAAG,IAAIC,kBAAa,CAAU,MAAMC,OAAO,IAAI;IACvD,IAAI,CAACA,OAAO,CAACC,GAAG,CAACC,mBAAmB,CAAC,CAAC,EAAE;MACpC;IACJ;IAEA,MAAMC,KAAK,GAAG,MAAM,IAAAC,kCAAkB,EAACJ,OAAO,CAAC;IAC/C,IAAI,CAACG,KAAK,EAAE;MACR;IACJ;IACAH,OAAO,CAACK,OAAO,CAACC,QAAQ,CAAC,IAAAC,yBAAkB,EAAC,CAAC,CAAC;IAE9CP,OAAO,CAACQ,aAAa,GAAG,MAAM,IAAAC,6BAAuB,EAAC;MAClDT,OAAO;MACPU,OAAO,EAAEb,MAAM,EAAEa;IACrB,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAG,MAAM,IAAAC,2BAAmB,EAAC;MAAEZ;IAAQ,CAAC,CAAC;IAC5DA,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACK,aAAa,CAAC;EAC3C,CAAC,CAAC;EACFb,MAAM,CAACe,IAAI,GAAG,uBAAuB;EAErC,OAAOf,MAAM;AACjB,CAAC;AAEM,MAAMgB,mBAAmB,GAAIjB,MAAmC,IAAK;EACxE,OAAO,CAACD,mBAAmB,CAACC,MAAM,CAAC,CAAC;AACxC,CAAC;AAACkB,OAAA,CAAAD,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { ListModelsUseCase } from \"@webiny/api-headless-cms/features/contentModel/ListModels\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel\";\nimport { RecordLockingModel, RECORD_LOCKING_MODEL_ID } from \"~/domain/RecordLockingModel.js\";\nimport { getTimeout } from \"~/utils/getTimeout.js\";\nimport { RecordLockingFeature } from \"~/features/RecordLockingFeature.js\";\nimport { createGraphQLSchema } from \"~/graphql/schema.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\n\nexport interface ICreateContextPluginParams {\n /**\n * A number of seconds after the last activity to wait before the record is automatically unlocked.\n */\n timeout?: number;\n}\n\nconst createContextPlugin = (params?: ICreateContextPluginParams) => {\n const recordLockingContextPlugin = new ContextPlugin<ApiCoreContext>(async context => {\n const tenantContext = context.container.resolve(TenantContext);\n const identityContext = context.container.resolve(IdentityContext);\n const wcp = context.container.resolve(WcpContext);\n const getModel = context.container.resolve(GetModelUseCase);\n const listModels = context.container.resolve(ListModelsUseCase);\n\n if (!wcp.canUseRecordLocking() || !tenantContext.getTenant()) {\n return;\n }\n\n // Determine timeout value\n const timeout = getTimeout(params?.timeout);\n\n // Fetch CMS model to use for storing record locking data\n const [model, publicModels] = await identityContext.withoutAuthorization(async () => {\n const [model, publicModels] = await Promise.all([\n // Get a record locking model\n getModel.execute(RECORD_LOCKING_MODEL_ID),\n // Get all models\n listModels.execute({ includePrivate: false })\n ]);\n\n return [model.value, publicModels.value];\n });\n\n const fieldRegistry = context.container.resolve(CmsModelFieldToGraphQLRegistry);\n\n // Register GraphQL schema plugin\n const graphQlPlugin = await createGraphQLSchema({\n model,\n models: publicModels,\n fieldRegistry\n });\n\n context.plugins.register(graphQlPlugin);\n\n // Register features\n RecordLockingFeature.register(context.container, {\n timeout,\n model\n });\n });\n recordLockingContextPlugin.name = \"context.recordLocking\";\n\n return recordLockingContextPlugin;\n};\n\nexport const createRecordLocking = (params?: ICreateContextPluginParams) => {\n const modelsPlugin = createRegisterExtensionPlugin(context => {\n context.container.register(RecordLockingModel);\n });\n\n return [createContextPlugin(params), modelsPlugin];\n};\n"],"names":["createContextPlugin","params","recordLockingContextPlugin","ContextPlugin","context","tenantContext","TenantContext","identityContext","IdentityContext","wcp","WcpContext","getModel","GetModelUseCase","listModels","ListModelsUseCase","timeout","getTimeout","model","publicModels","Promise","RECORD_LOCKING_MODEL_ID","fieldRegistry","CmsModelFieldToGraphQLRegistry","graphQlPlugin","createGraphQLSchema","RecordLockingFeature","createRecordLocking","modelsPlugin","createRegisterExtensionPlugin","RecordLockingModel"],"mappings":";;;;;;;;;;;;AAqBA,MAAMA,sBAAsB,CAACC;IACzB,MAAMC,6BAA6B,IAAIC,cAA8B,OAAMC;QACvE,MAAMC,gBAAgBD,QAAQ,SAAS,CAAC,OAAO,CAACE;QAChD,MAAMC,kBAAkBH,QAAQ,SAAS,CAAC,OAAO,CAACI;QAClD,MAAMC,MAAML,QAAQ,SAAS,CAAC,OAAO,CAACM;QACtC,MAAMC,WAAWP,QAAQ,SAAS,CAAC,OAAO,CAACQ;QAC3C,MAAMC,aAAaT,QAAQ,SAAS,CAAC,OAAO,CAACU;QAE7C,IAAI,CAACL,IAAI,mBAAmB,MAAM,CAACJ,cAAc,SAAS,IACtD;QAIJ,MAAMU,UAAUC,WAAWf,QAAQ;QAGnC,MAAM,CAACgB,OAAOC,aAAa,GAAG,MAAMX,gBAAgB,oBAAoB,CAAC;YACrE,MAAM,CAACU,OAAOC,aAAa,GAAG,MAAMC,QAAQ,GAAG,CAAC;gBAE5CR,SAAS,OAAO,CAACS;gBAEjBP,WAAW,OAAO,CAAC;oBAAE,gBAAgB;gBAAM;aAC9C;YAED,OAAO;gBAACI,MAAM,KAAK;gBAAEC,aAAa,KAAK;aAAC;QAC5C;QAEA,MAAMG,gBAAgBjB,QAAQ,SAAS,CAAC,OAAO,CAACkB;QAGhD,MAAMC,gBAAgB,MAAMC,oBAAoB;YAC5CP;YACA,QAAQC;YACRG;QACJ;QAEAjB,QAAQ,OAAO,CAAC,QAAQ,CAACmB;QAGzBE,qBAAqB,QAAQ,CAACrB,QAAQ,SAAS,EAAE;YAC7CW;YACAE;QACJ;IACJ;IACAf,2BAA2B,IAAI,GAAG;IAElC,OAAOA;AACX;AAEO,MAAMwB,sBAAsB,CAACzB;IAChC,MAAM0B,eAAeC,8BAA8BxB,CAAAA;QAC/CA,QAAQ,SAAS,CAAC,QAAQ,CAACyB;IAC/B;IAEA,OAAO;QAAC7B,oBAAoBC;QAAS0B;KAAa;AACtD"}
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@webiny/api-record-locking",
3
- "version": "0.0.0-unstable.a4637c5ce6",
4
- "main": "index.js",
3
+ "version": "0.0.0-unstable.a4f3e4ea8b",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": "./index.js",
7
+ "./*": "./*"
8
+ },
5
9
  "repository": {
6
10
  "type": "git",
7
11
  "url": "https://github.com/webiny/webiny-js.git"
@@ -12,35 +16,32 @@
12
16
  ],
13
17
  "license": "MIT",
14
18
  "dependencies": {
15
- "@webiny/api": "0.0.0-unstable.a4637c5ce6",
16
- "@webiny/api-headless-cms": "0.0.0-unstable.a4637c5ce6",
17
- "@webiny/api-websockets": "0.0.0-unstable.a4637c5ce6",
18
- "@webiny/error": "0.0.0-unstable.a4637c5ce6",
19
- "@webiny/handler": "0.0.0-unstable.a4637c5ce6",
20
- "@webiny/handler-aws": "0.0.0-unstable.a4637c5ce6",
21
- "@webiny/handler-graphql": "0.0.0-unstable.a4637c5ce6",
22
- "@webiny/plugins": "0.0.0-unstable.a4637c5ce6",
23
- "@webiny/pubsub": "0.0.0-unstable.a4637c5ce6",
24
- "@webiny/utils": "0.0.0-unstable.a4637c5ce6"
19
+ "@webiny/api": "0.0.0-unstable.a4f3e4ea8b",
20
+ "@webiny/api-headless-cms": "0.0.0-unstable.a4f3e4ea8b",
21
+ "@webiny/api-websockets": "0.0.0-unstable.a4f3e4ea8b",
22
+ "@webiny/feature": "0.0.0-unstable.a4f3e4ea8b",
23
+ "@webiny/handler": "0.0.0-unstable.a4f3e4ea8b",
24
+ "@webiny/handler-aws": "0.0.0-unstable.a4f3e4ea8b",
25
+ "@webiny/handler-graphql": "0.0.0-unstable.a4f3e4ea8b",
26
+ "@webiny/plugins": "0.0.0-unstable.a4f3e4ea8b",
27
+ "@webiny/utils": "0.0.0-unstable.a4f3e4ea8b"
25
28
  },
26
29
  "devDependencies": {
27
- "@webiny/api-i18n": "0.0.0-unstable.a4637c5ce6",
28
- "@webiny/api-security": "0.0.0-unstable.a4637c5ce6",
29
- "@webiny/api-tenancy": "0.0.0-unstable.a4637c5ce6",
30
- "@webiny/api-wcp": "0.0.0-unstable.a4637c5ce6",
31
- "@webiny/project-utils": "0.0.0-unstable.a4637c5ce6",
32
- "graphql": "15.9.0",
33
- "rimraf": "6.0.1",
34
- "type-fest": "4.14.0",
35
- "typescript": "5.3.3"
30
+ "@webiny/api-core": "0.0.0-unstable.a4f3e4ea8b",
31
+ "@webiny/build-tools": "0.0.0-unstable.a4f3e4ea8b",
32
+ "@webiny/project-utils": "0.0.0-unstable.a4f3e4ea8b",
33
+ "@webiny/wcp": "0.0.0-unstable.a4f3e4ea8b",
34
+ "graphql": "16.14.2",
35
+ "rimraf": "6.1.3",
36
+ "type-fest": "5.8.0",
37
+ "typescript": "7.0.2",
38
+ "vitest": "4.1.10"
36
39
  },
37
40
  "publishConfig": {
38
- "access": "public",
39
- "directory": "dist"
40
- },
41
- "scripts": {
42
- "build": "node ../cli/bin.js run build",
43
- "watch": "node ../cli/bin.js run watch"
41
+ "access": "public"
44
42
  },
45
- "gitHead": "a4637c5ce60a72a1cb15dfa96576cb931e4cc911"
43
+ "gitHead": "8476da73b653c89cc1474d968baf55c1b0ae0e5f",
44
+ "webiny": {
45
+ "publishFrom": "dist"
46
+ }
46
47
  }
package/types.d.ts CHANGED
@@ -1,26 +1,8 @@
1
- import type { CmsContext, CmsEntryListParams, CmsEntryMeta, CmsIdentity, CmsModel, CmsModelManager } from "@webiny/api-headless-cms/types";
2
- import { CmsEntry, CmsError } from "@webiny/api-headless-cms/types";
3
- import type { Topic } from "@webiny/pubsub/types";
4
- import type { Context as IWebsocketsContext, IWebsocketsContextObject } from "@webiny/api-websockets/types";
5
- import type { SecurityPermission } from "@webiny/api-security/types";
6
- export { CmsError, CmsEntry };
1
+ import type { CmsEntryListParams, CmsEntryMeta, CmsIdentity } from "@webiny/api-headless-cms/types/index.js";
2
+ import { CmsEntry, CmsError } from "@webiny/api-headless-cms/types/index.js";
3
+ export type { CmsError, CmsEntry };
7
4
  export type IRecordLockingIdentity = CmsIdentity;
8
- export type IRecordLockingModelManager = CmsModelManager<IRecordLockingLockRecordValues>;
9
5
  export type IRecordLockingMeta = CmsEntryMeta;
10
- export interface IHasRecordLockingAccessCallable {
11
- (): Promise<boolean>;
12
- }
13
- export interface IGetWebsocketsContextCallable {
14
- (): IWebsocketsContextObject;
15
- }
16
- export interface IGetIdentity {
17
- (): IRecordLockingIdentity;
18
- }
19
- export interface IRecordLockingLockRecordValues {
20
- targetId: string;
21
- type: IRecordLockingLockRecordEntryType;
22
- actions?: IRecordLockingLockRecordAction[];
23
- }
24
6
  export declare enum RecordLockingLockRecordActionType {
25
7
  requested = "requested",
26
8
  approved = "approved",
@@ -69,114 +51,3 @@ export interface IRecordLockingLockRecord extends IRecordLockingLockRecordObject
69
51
  export type IRecordLockingLockRecordEntryType = string;
70
52
  export type IRecordLockingListAllLockRecordsParams = Pick<CmsEntryListParams, "where" | "limit" | "sort" | "after">;
71
53
  export type IRecordLockingListLockRecordsParams = IRecordLockingListAllLockRecordsParams;
72
- export interface IRecordLockingListAllLockRecordsResponse {
73
- items: IRecordLockingLockRecord[];
74
- meta: IRecordLockingMeta;
75
- }
76
- export type IRecordLockingListLockRecordsResponse = IRecordLockingListAllLockRecordsResponse;
77
- export interface IRecordLockingGetLockRecordParams {
78
- id: string;
79
- type: IRecordLockingLockRecordEntryType;
80
- }
81
- export interface IRecordLockingIsLockedParams {
82
- id: string;
83
- type: IRecordLockingLockRecordEntryType;
84
- }
85
- export interface IRecordLockingGetLockedEntryLockRecordParams {
86
- id: string;
87
- type: IRecordLockingLockRecordEntryType;
88
- }
89
- export interface IRecordLockingLockEntryParams {
90
- id: string;
91
- type: IRecordLockingLockRecordEntryType;
92
- }
93
- export interface IRecordLockingUpdateEntryLockParams {
94
- id: string;
95
- type: IRecordLockingLockRecordEntryType;
96
- }
97
- export interface IRecordLockingUnlockEntryParams {
98
- id: string;
99
- type: IRecordLockingLockRecordEntryType;
100
- force?: boolean;
101
- }
102
- export interface IRecordLockingUnlockEntryRequestParams {
103
- id: string;
104
- type: IRecordLockingLockRecordEntryType;
105
- }
106
- export interface OnEntryBeforeLockTopicParams {
107
- id: string;
108
- type: IRecordLockingLockRecordEntryType;
109
- }
110
- export interface OnEntryAfterLockTopicParams {
111
- id: string;
112
- type: IRecordLockingLockRecordEntryType;
113
- record: IRecordLockingLockRecord;
114
- }
115
- export interface OnEntryLockErrorTopicParams {
116
- id: string;
117
- type: IRecordLockingLockRecordEntryType;
118
- error: CmsError;
119
- }
120
- export interface OnEntryBeforeUnlockTopicParams {
121
- id: string;
122
- type: IRecordLockingLockRecordEntryType;
123
- getIdentity: IGetIdentity;
124
- }
125
- export interface OnEntryAfterUnlockTopicParams {
126
- id: string;
127
- type: IRecordLockingLockRecordEntryType;
128
- record: IRecordLockingLockRecord;
129
- }
130
- export interface OnEntryUnlockErrorTopicParams {
131
- id: string;
132
- type: IRecordLockingLockRecordEntryType;
133
- error: CmsError;
134
- }
135
- export interface OnEntryBeforeUnlockRequestTopicParams {
136
- id: string;
137
- type: IRecordLockingLockRecordEntryType;
138
- }
139
- export interface OnEntryAfterUnlockRequestTopicParams {
140
- id: string;
141
- type: IRecordLockingLockRecordEntryType;
142
- record: IRecordLockingLockRecord;
143
- }
144
- export interface OnEntryUnlockRequestErrorTopicParams {
145
- id: string;
146
- type: IRecordLockingLockRecordEntryType;
147
- error: CmsError;
148
- }
149
- export interface IRecordLocking {
150
- /**
151
- * In milliseconds.
152
- */
153
- getTimeout: () => number;
154
- onEntryBeforeLock: Topic<OnEntryBeforeLockTopicParams>;
155
- onEntryAfterLock: Topic<OnEntryAfterLockTopicParams>;
156
- onEntryLockError: Topic<OnEntryLockErrorTopicParams>;
157
- onEntryBeforeUnlock: Topic<OnEntryBeforeUnlockTopicParams>;
158
- onEntryAfterUnlock: Topic<OnEntryAfterUnlockTopicParams>;
159
- onEntryUnlockError: Topic<OnEntryUnlockErrorTopicParams>;
160
- onEntryBeforeUnlockRequest: Topic<OnEntryBeforeUnlockRequestTopicParams>;
161
- onEntryAfterUnlockRequest: Topic<OnEntryAfterUnlockRequestTopicParams>;
162
- onEntryUnlockRequestError: Topic<OnEntryUnlockRequestErrorTopicParams>;
163
- getModel(): Promise<CmsModel>;
164
- listAllLockRecords(params?: IRecordLockingListAllLockRecordsParams): Promise<IRecordLockingListAllLockRecordsResponse>;
165
- /**
166
- * Same call as listAllLockRecords, except this one will filter out records with expired lock.
167
- */
168
- listLockRecords(params?: IRecordLockingListLockRecordsParams): Promise<IRecordLockingListLockRecordsResponse>;
169
- getLockRecord(params: IRecordLockingGetLockRecordParams): Promise<IRecordLockingLockRecord | null>;
170
- isEntryLocked(params: IRecordLockingIsLockedParams): Promise<boolean>;
171
- getLockedEntryLockRecord(params: IRecordLockingGetLockedEntryLockRecordParams): Promise<IRecordLockingLockRecord | null>;
172
- lockEntry(params: IRecordLockingLockEntryParams): Promise<IRecordLockingLockRecord>;
173
- updateEntryLock(params: IRecordLockingUpdateEntryLockParams): Promise<IRecordLockingLockRecord>;
174
- unlockEntry(params: IRecordLockingUnlockEntryParams): Promise<IRecordLockingLockRecord>;
175
- unlockEntryRequest(params: IRecordLockingUnlockEntryRequestParams): Promise<IRecordLockingLockRecord>;
176
- }
177
- export interface Context extends CmsContext, IWebsocketsContext {
178
- recordLocking: IRecordLocking;
179
- }
180
- export interface RecordLockingSecurityPermission extends SecurityPermission {
181
- canForceUnlock?: string;
182
- }
package/types.js CHANGED
@@ -1,30 +1,9 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "CmsEntry", {
7
- enumerable: true,
8
- get: function () {
9
- return _types.CmsEntry;
10
- }
11
- });
12
- Object.defineProperty(exports, "CmsError", {
13
- enumerable: true,
14
- get: function () {
15
- return _types.CmsError;
16
- }
17
- });
18
- exports.RecordLockingLockRecordActionType = void 0;
19
- var _types = require("@webiny/api-headless-cms/types");
20
- let RecordLockingLockRecordActionType = exports.RecordLockingLockRecordActionType = /*#__PURE__*/function (RecordLockingLockRecordActionType) {
21
- RecordLockingLockRecordActionType["requested"] = "requested";
22
- RecordLockingLockRecordActionType["approved"] = "approved";
23
- RecordLockingLockRecordActionType["denied"] = "denied";
24
- return RecordLockingLockRecordActionType;
1
+ var types_RecordLockingLockRecordActionType = /*#__PURE__*/ function(RecordLockingLockRecordActionType) {
2
+ RecordLockingLockRecordActionType["requested"] = "requested";
3
+ RecordLockingLockRecordActionType["approved"] = "approved";
4
+ RecordLockingLockRecordActionType["denied"] = "denied";
5
+ return RecordLockingLockRecordActionType;
25
6
  }({});
26
- /**
27
- * Do not use any special chars other than #, as we use this to create lock record IDs.
28
- */
7
+ export { types_RecordLockingLockRecordActionType as RecordLockingLockRecordActionType };
29
8
 
30
9
  //# sourceMappingURL=types.js.map
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","RecordLockingLockRecordActionType","exports"],"sources":["types.ts"],"sourcesContent":["import type {\n CmsContext,\n CmsEntryListParams,\n CmsEntryMeta,\n CmsIdentity,\n CmsModel,\n CmsModelManager\n} from \"@webiny/api-headless-cms/types\";\nimport { CmsEntry, CmsError } from \"@webiny/api-headless-cms/types\";\nimport type { Topic } from \"@webiny/pubsub/types\";\nimport type {\n Context as IWebsocketsContext,\n IWebsocketsContextObject\n} from \"@webiny/api-websockets/types\";\nimport type { SecurityPermission } from \"@webiny/api-security/types\";\n\nexport { CmsError, CmsEntry };\n\nexport type IRecordLockingIdentity = CmsIdentity;\n\nexport type IRecordLockingModelManager = CmsModelManager<IRecordLockingLockRecordValues>;\n\nexport type IRecordLockingMeta = CmsEntryMeta;\n\nexport interface IHasRecordLockingAccessCallable {\n (): Promise<boolean>;\n}\n\nexport interface IGetWebsocketsContextCallable {\n (): IWebsocketsContextObject;\n}\n\nexport interface IGetIdentity {\n (): IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordValues {\n targetId: string;\n type: IRecordLockingLockRecordEntryType;\n actions?: IRecordLockingLockRecordAction[];\n}\nexport enum RecordLockingLockRecordActionType {\n requested = \"requested\",\n approved = \"approved\",\n denied = \"denied\"\n}\n\nexport interface IRecordLockingLockRecordRequestedAction {\n type: RecordLockingLockRecordActionType.requested;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordApprovedAction {\n type: RecordLockingLockRecordActionType.approved;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordDeniedAction {\n type: RecordLockingLockRecordActionType.denied;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport type IRecordLockingLockRecordAction =\n | IRecordLockingLockRecordRequestedAction\n | IRecordLockingLockRecordApprovedAction\n | IRecordLockingLockRecordDeniedAction;\n\nexport interface IRecordLockingLockRecordObject {\n id: string;\n targetId: string;\n type: IRecordLockingLockRecordEntryType;\n lockedBy: IRecordLockingIdentity;\n lockedOn: Date;\n updatedOn: Date;\n expiresOn: Date;\n actions?: IRecordLockingLockRecordAction[];\n}\n\nexport interface IRecordLockingLockRecord extends IRecordLockingLockRecordObject {\n toObject(): IRecordLockingLockRecordObject;\n addAction(action: IRecordLockingLockRecordAction): void;\n getUnlockRequested(): IRecordLockingLockRecordRequestedAction | undefined;\n getUnlockApproved(): IRecordLockingLockRecordApprovedAction | undefined;\n getUnlockDenied(): IRecordLockingLockRecordDeniedAction | undefined;\n isExpired(): boolean;\n}\n\n/**\n * Do not use any special chars other than #, as we use this to create lock record IDs.\n */\nexport type IRecordLockingLockRecordEntryType = string;\n\nexport type IRecordLockingListAllLockRecordsParams = Pick<\n CmsEntryListParams,\n \"where\" | \"limit\" | \"sort\" | \"after\"\n>;\n\nexport type IRecordLockingListLockRecordsParams = IRecordLockingListAllLockRecordsParams;\n\nexport interface IRecordLockingListAllLockRecordsResponse {\n items: IRecordLockingLockRecord[];\n meta: IRecordLockingMeta;\n}\n\nexport type IRecordLockingListLockRecordsResponse = IRecordLockingListAllLockRecordsResponse;\n\nexport interface IRecordLockingGetLockRecordParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IRecordLockingIsLockedParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IRecordLockingGetLockedEntryLockRecordParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IRecordLockingLockEntryParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IRecordLockingUpdateEntryLockParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IRecordLockingUnlockEntryParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n force?: boolean;\n}\n\nexport interface IRecordLockingUnlockEntryRequestParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface OnEntryBeforeLockTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface OnEntryAfterLockTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n record: IRecordLockingLockRecord;\n}\n\nexport interface OnEntryLockErrorTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n error: CmsError;\n}\n\nexport interface OnEntryBeforeUnlockTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n getIdentity: IGetIdentity;\n}\n\nexport interface OnEntryAfterUnlockTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n record: IRecordLockingLockRecord;\n}\n\nexport interface OnEntryUnlockErrorTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n error: CmsError;\n}\n\nexport interface OnEntryBeforeUnlockRequestTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface OnEntryAfterUnlockRequestTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n record: IRecordLockingLockRecord;\n}\n\nexport interface OnEntryUnlockRequestErrorTopicParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n error: CmsError;\n}\n\nexport interface IRecordLocking {\n /**\n * In milliseconds.\n */\n getTimeout: () => number;\n onEntryBeforeLock: Topic<OnEntryBeforeLockTopicParams>;\n onEntryAfterLock: Topic<OnEntryAfterLockTopicParams>;\n onEntryLockError: Topic<OnEntryLockErrorTopicParams>;\n onEntryBeforeUnlock: Topic<OnEntryBeforeUnlockTopicParams>;\n onEntryAfterUnlock: Topic<OnEntryAfterUnlockTopicParams>;\n onEntryUnlockError: Topic<OnEntryUnlockErrorTopicParams>;\n onEntryBeforeUnlockRequest: Topic<OnEntryBeforeUnlockRequestTopicParams>;\n onEntryAfterUnlockRequest: Topic<OnEntryAfterUnlockRequestTopicParams>;\n onEntryUnlockRequestError: Topic<OnEntryUnlockRequestErrorTopicParams>;\n getModel(): Promise<CmsModel>;\n listAllLockRecords(\n params?: IRecordLockingListAllLockRecordsParams\n ): Promise<IRecordLockingListAllLockRecordsResponse>;\n /**\n * Same call as listAllLockRecords, except this one will filter out records with expired lock.\n */\n listLockRecords(\n params?: IRecordLockingListLockRecordsParams\n ): Promise<IRecordLockingListLockRecordsResponse>;\n getLockRecord(\n params: IRecordLockingGetLockRecordParams\n ): Promise<IRecordLockingLockRecord | null>;\n isEntryLocked(params: IRecordLockingIsLockedParams): Promise<boolean>;\n getLockedEntryLockRecord(\n params: IRecordLockingGetLockedEntryLockRecordParams\n ): Promise<IRecordLockingLockRecord | null>;\n lockEntry(params: IRecordLockingLockEntryParams): Promise<IRecordLockingLockRecord>;\n updateEntryLock(params: IRecordLockingUpdateEntryLockParams): Promise<IRecordLockingLockRecord>;\n unlockEntry(params: IRecordLockingUnlockEntryParams): Promise<IRecordLockingLockRecord>;\n unlockEntryRequest(\n params: IRecordLockingUnlockEntryRequestParams\n ): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface Context extends CmsContext, IWebsocketsContext {\n recordLocking: IRecordLocking;\n}\n\nexport interface RecordLockingSecurityPermission extends SecurityPermission {\n canForceUnlock?: string;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAQA,IAAAA,MAAA,GAAAC,OAAA;AAAoE,IAiCxDC,iCAAiC,GAAAC,OAAA,CAAAD,iCAAA,0BAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAA,OAAjCA,iCAAiC;AAAA;AAoD7C;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import type {\n CmsEntryListParams,\n CmsEntryMeta,\n CmsIdentity\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { CmsEntry, CmsError } from \"@webiny/api-headless-cms/types/index.js\";\n\nexport type { CmsError, CmsEntry };\n\nexport type IRecordLockingIdentity = CmsIdentity;\n\nexport type IRecordLockingMeta = CmsEntryMeta;\n\nexport enum RecordLockingLockRecordActionType {\n requested = \"requested\",\n approved = \"approved\",\n denied = \"denied\"\n}\n\nexport interface IRecordLockingLockRecordRequestedAction {\n type: RecordLockingLockRecordActionType.requested;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordApprovedAction {\n type: RecordLockingLockRecordActionType.approved;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordDeniedAction {\n type: RecordLockingLockRecordActionType.denied;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport type IRecordLockingLockRecordAction =\n | IRecordLockingLockRecordRequestedAction\n | IRecordLockingLockRecordApprovedAction\n | IRecordLockingLockRecordDeniedAction;\n\nexport interface IRecordLockingLockRecordObject {\n id: string;\n targetId: string;\n type: IRecordLockingLockRecordEntryType;\n lockedBy: IRecordLockingIdentity;\n lockedOn: Date;\n updatedOn: Date;\n expiresOn: Date;\n actions?: IRecordLockingLockRecordAction[];\n}\n\nexport interface IRecordLockingLockRecord extends IRecordLockingLockRecordObject {\n toObject(): IRecordLockingLockRecordObject;\n addAction(action: IRecordLockingLockRecordAction): void;\n getUnlockRequested(): IRecordLockingLockRecordRequestedAction | undefined;\n getUnlockApproved(): IRecordLockingLockRecordApprovedAction | undefined;\n getUnlockDenied(): IRecordLockingLockRecordDeniedAction | undefined;\n isExpired(): boolean;\n}\n\n/**\n * Do not use any special chars other than #, as we use this to create lock record IDs.\n */\nexport type IRecordLockingLockRecordEntryType = string;\n\nexport type IRecordLockingListAllLockRecordsParams = Pick<\n CmsEntryListParams,\n \"where\" | \"limit\" | \"sort\" | \"after\"\n>;\n\nexport type IRecordLockingListLockRecordsParams = IRecordLockingListAllLockRecordsParams;\n"],"names":["RecordLockingLockRecordActionType"],"mappings":"AAaO,IAAKA,0CAAiCA,WAAAA,GAAAA,SAAjCA,iCAAiC;;;;WAAjCA"}
@@ -1,4 +1,4 @@
1
- import type { IRecordLockingListLockRecordsParams } from "../types";
1
+ import type { IRecordLockingListLockRecordsParams } from "../types.js";
2
2
  type IWhere = IRecordLockingListLockRecordsParams["where"] | undefined;
3
3
  export declare const convertWhereCondition: (where: IWhere) => IWhere;
4
4
  export {};
@@ -1,41 +1,26 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.convertWhereCondition = void 0;
7
- var _lockRecordDatabaseId = require("./lockRecordDatabaseId");
8
- const attachPrefix = value => {
9
- if (!value) {
10
- return value;
11
- } else if (Array.isArray(value)) {
12
- return value.map(_lockRecordDatabaseId.createLockRecordDatabaseId);
13
- }
14
- return (0, _lockRecordDatabaseId.createLockRecordDatabaseId)(value);
1
+ import { createLockRecordDatabaseId } from "./lockRecordDatabaseId.js";
2
+ const attachPrefix = (value)=>{
3
+ if (Array.isArray(value)) return value.map(createLockRecordDatabaseId);
4
+ return createLockRecordDatabaseId(value);
15
5
  };
16
- const convertWhereCondition = where => {
17
- if (!where) {
18
- return where;
19
- }
20
- for (const key in where) {
21
- if (key.startsWith("AND") || key.startsWith("OR")) {
22
- const value = where[key];
23
- if (!value) {
24
- continue;
25
- }
26
- for (const subKey in value) {
27
- value[subKey] = convertWhereCondition(value[subKey]);
28
- }
29
- continue;
30
- } else if (key.startsWith("id") === false) {
31
- continue;
6
+ const convertWhereCondition = (where)=>{
7
+ if (!where) return where;
8
+ for(const key in where){
9
+ if (key.startsWith("AND") || key.startsWith("OR")) {
10
+ const value = where[key];
11
+ if (!value) continue;
12
+ for(const subKey in value)value[subKey] = convertWhereCondition(value[subKey]);
13
+ continue;
14
+ }
15
+ if (false === key.startsWith("id")) continue;
16
+ const value = where[key];
17
+ if (!value) continue;
18
+ const newKey = key.replace("id", "entryId");
19
+ where[newKey] = attachPrefix(where[key]);
20
+ delete where[key];
32
21
  }
33
- const newKey = key.replace("id", "entryId");
34
- where[newKey] = attachPrefix(where[key]);
35
- delete where[key];
36
- }
37
- return where;
22
+ return where;
38
23
  };
39
- exports.convertWhereCondition = convertWhereCondition;
24
+ export { convertWhereCondition };
40
25
 
41
26
  //# sourceMappingURL=convertWhereCondition.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_lockRecordDatabaseId","require","attachPrefix","value","Array","isArray","map","createLockRecordDatabaseId","convertWhereCondition","where","key","startsWith","subKey","newKey","replace","exports"],"sources":["convertWhereCondition.ts"],"sourcesContent":["import type { IRecordLockingListLockRecordsParams } from \"~/types\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId\";\n\ntype IWhere = IRecordLockingListLockRecordsParams[\"where\"] | undefined;\n\nconst attachPrefix = (value: string | string[] | undefined) => {\n if (!value) {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(createLockRecordDatabaseId);\n }\n return createLockRecordDatabaseId(value);\n};\n\nexport const convertWhereCondition = (where: IWhere): IWhere => {\n if (!where) {\n return where;\n }\n for (const key in where) {\n if (key.startsWith(\"AND\") || key.startsWith(\"OR\")) {\n const value = where[key] as IWhere[] | undefined;\n if (!value) {\n continue;\n }\n for (const subKey in value) {\n value[subKey] = convertWhereCondition(value[subKey]);\n }\n continue;\n } else if (key.startsWith(\"id\") === false) {\n continue;\n }\n const newKey = key.replace(\"id\", \"entryId\");\n where[newKey] = attachPrefix(where[key] as string | string[] | undefined);\n delete where[key];\n }\n return where;\n};\n"],"mappings":";;;;;;AACA,IAAAA,qBAAA,GAAAC,OAAA;AAIA,MAAMC,YAAY,GAAIC,KAAoC,IAAK;EAC3D,IAAI,CAACA,KAAK,EAAE;IACR,OAAOA,KAAK;EAChB,CAAC,MAAM,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;IAC7B,OAAOA,KAAK,CAACG,GAAG,CAACC,gDAA0B,CAAC;EAChD;EACA,OAAO,IAAAA,gDAA0B,EAACJ,KAAK,CAAC;AAC5C,CAAC;AAEM,MAAMK,qBAAqB,GAAIC,KAAa,IAAa;EAC5D,IAAI,CAACA,KAAK,EAAE;IACR,OAAOA,KAAK;EAChB;EACA,KAAK,MAAMC,GAAG,IAAID,KAAK,EAAE;IACrB,IAAIC,GAAG,CAACC,UAAU,CAAC,KAAK,CAAC,IAAID,GAAG,CAACC,UAAU,CAAC,IAAI,CAAC,EAAE;MAC/C,MAAMR,KAAK,GAAGM,KAAK,CAACC,GAAG,CAAyB;MAChD,IAAI,CAACP,KAAK,EAAE;QACR;MACJ;MACA,KAAK,MAAMS,MAAM,IAAIT,KAAK,EAAE;QACxBA,KAAK,CAACS,MAAM,CAAC,GAAGJ,qBAAqB,CAACL,KAAK,CAACS,MAAM,CAAC,CAAC;MACxD;MACA;IACJ,CAAC,MAAM,IAAIF,GAAG,CAACC,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;MACvC;IACJ;IACA,MAAME,MAAM,GAAGH,GAAG,CAACI,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;IAC3CL,KAAK,CAACI,MAAM,CAAC,GAAGX,YAAY,CAACO,KAAK,CAACC,GAAG,CAAkC,CAAC;IACzE,OAAOD,KAAK,CAACC,GAAG,CAAC;EACrB;EACA,OAAOD,KAAK;AAChB,CAAC;AAACM,OAAA,CAAAP,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"file":"utils/convertWhereCondition.js","sources":["../../src/utils/convertWhereCondition.ts"],"sourcesContent":["import type { IRecordLockingListLockRecordsParams } from \"~/types.js\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId.js\";\n\ntype IWhere = IRecordLockingListLockRecordsParams[\"where\"] | undefined;\n\nconst attachPrefix = (value: string | string[]) => {\n if (Array.isArray(value)) {\n return value.map(createLockRecordDatabaseId);\n }\n return createLockRecordDatabaseId(value);\n};\n\nexport const convertWhereCondition = (where: IWhere): IWhere => {\n if (!where) {\n return where;\n }\n for (const key in where) {\n if (key.startsWith(\"AND\") || key.startsWith(\"OR\")) {\n const value = where[key as keyof typeof where] as IWhere[] | undefined;\n if (!value) {\n continue;\n }\n for (const subKey in value) {\n value[subKey] = convertWhereCondition(value[subKey]);\n }\n continue;\n } else if (key.startsWith(\"id\") === false) {\n continue;\n }\n const value = where[key as keyof typeof where];\n if (!value) {\n continue;\n }\n\n const newKey = key.replace(\"id\", \"entryId\") as keyof typeof where;\n // @ts-expect-error\n where[newKey] = attachPrefix(where[key]);\n // @ts-expect-error\n delete where[key];\n }\n return where;\n};\n"],"names":["attachPrefix","value","Array","createLockRecordDatabaseId","convertWhereCondition","where","key","subKey","newKey"],"mappings":";AAKA,MAAMA,eAAe,CAACC;IAClB,IAAIC,MAAM,OAAO,CAACD,QACd,OAAOA,MAAM,GAAG,CAACE;IAErB,OAAOA,2BAA2BF;AACtC;AAEO,MAAMG,wBAAwB,CAACC;IAClC,IAAI,CAACA,OACD,OAAOA;IAEX,IAAK,MAAMC,OAAOD,MAAO;QACrB,IAAIC,IAAI,UAAU,CAAC,UAAUA,IAAI,UAAU,CAAC,OAAO;YAC/C,MAAML,QAAQI,KAAK,CAACC,IAA0B;YAC9C,IAAI,CAACL,OACD;YAEJ,IAAK,MAAMM,UAAUN,MACjBA,KAAK,CAACM,OAAO,GAAGH,sBAAsBH,KAAK,CAACM,OAAO;YAEvD;QACJ;QAAO,IAAID,AAAyB,UAAzBA,IAAI,UAAU,CAAC,OACtB;QAEJ,MAAML,QAAQI,KAAK,CAACC,IAA0B;QAC9C,IAAI,CAACL,OACD;QAGJ,MAAMO,SAASF,IAAI,OAAO,CAAC,MAAM;QAEjCD,KAAK,CAACG,OAAO,GAAGR,aAAaK,KAAK,CAACC,IAAI;QAEvC,OAAOD,KAAK,CAACC,IAAI;IACrB;IACA,OAAOD;AACX"}
@@ -1,28 +1,14 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getTimeout = void 0;
7
1
  const minTimeoutInSeconds = 30;
8
2
  const defaultTimeoutInSeconds = 60;
9
- /**
10
- * Input is in seconds.
11
- * Output is milliseconds.
12
- */
13
- const getTimeout = input => {
14
- if (input && input > 0) {
15
- if (input < minTimeoutInSeconds) {
16
- return minTimeoutInSeconds * 1000;
3
+ const getTimeout = (input)=>{
4
+ if (input && input > 0) {
5
+ if (input < minTimeoutInSeconds) return 1000 * minTimeoutInSeconds;
6
+ return 1000 * input;
17
7
  }
18
- return input * 1000;
19
- }
20
- const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT) : undefined;
21
- if (!userDefined || isNaN(userDefined) || userDefined <= 0) {
22
- return defaultTimeoutInSeconds * 1000;
23
- }
24
- return userDefined * 1000;
8
+ const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT) : void 0;
9
+ if (!userDefined || isNaN(userDefined) || userDefined <= 0) return 1000 * defaultTimeoutInSeconds;
10
+ return 1000 * userDefined;
25
11
  };
26
- exports.getTimeout = getTimeout;
12
+ export { getTimeout };
27
13
 
28
14
  //# sourceMappingURL=getTimeout.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["minTimeoutInSeconds","defaultTimeoutInSeconds","getTimeout","input","userDefined","process","env","WEBINY_RECORD_LOCK_TIMEOUT","parseInt","undefined","isNaN","exports"],"sources":["getTimeout.ts"],"sourcesContent":["const minTimeoutInSeconds = 30;\nconst defaultTimeoutInSeconds = 60;\n/**\n * Input is in seconds.\n * Output is milliseconds.\n */\nexport const getTimeout = (input: number | undefined) => {\n if (input && input > 0) {\n if (input < minTimeoutInSeconds) {\n return minTimeoutInSeconds * 1000;\n }\n return input * 1000;\n }\n const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT\n ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT)\n : undefined;\n if (!userDefined || isNaN(userDefined) || userDefined <= 0) {\n return defaultTimeoutInSeconds * 1000;\n }\n return userDefined * 1000;\n};\n"],"mappings":";;;;;;AAAA,MAAMA,mBAAmB,GAAG,EAAE;AAC9B,MAAMC,uBAAuB,GAAG,EAAE;AAClC;AACA;AACA;AACA;AACO,MAAMC,UAAU,GAAIC,KAAyB,IAAK;EACrD,IAAIA,KAAK,IAAIA,KAAK,GAAG,CAAC,EAAE;IACpB,IAAIA,KAAK,GAAGH,mBAAmB,EAAE;MAC7B,OAAOA,mBAAmB,GAAG,IAAI;IACrC;IACA,OAAOG,KAAK,GAAG,IAAI;EACvB;EACA,MAAMC,WAAW,GAAGC,OAAO,CAACC,GAAG,CAACC,0BAA0B,GACpDC,QAAQ,CAACH,OAAO,CAACC,GAAG,CAACC,0BAA0B,CAAC,GAChDE,SAAS;EACf,IAAI,CAACL,WAAW,IAAIM,KAAK,CAACN,WAAW,CAAC,IAAIA,WAAW,IAAI,CAAC,EAAE;IACxD,OAAOH,uBAAuB,GAAG,IAAI;EACzC;EACA,OAAOG,WAAW,GAAG,IAAI;AAC7B,CAAC;AAACO,OAAA,CAAAT,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"file":"utils/getTimeout.js","sources":["../../src/utils/getTimeout.ts"],"sourcesContent":["const minTimeoutInSeconds = 30;\nconst defaultTimeoutInSeconds = 60;\n/**\n * Input is in seconds.\n * Output is milliseconds.\n */\nexport const getTimeout = (input: number | undefined) => {\n if (input && input > 0) {\n if (input < minTimeoutInSeconds) {\n return minTimeoutInSeconds * 1000;\n }\n return input * 1000;\n }\n const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT\n ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT)\n : undefined;\n if (!userDefined || isNaN(userDefined) || userDefined <= 0) {\n return defaultTimeoutInSeconds * 1000;\n }\n return userDefined * 1000;\n};\n"],"names":["minTimeoutInSeconds","defaultTimeoutInSeconds","getTimeout","input","userDefined","process","parseInt","undefined","isNaN"],"mappings":"AAAA,MAAMA,sBAAsB;AAC5B,MAAMC,0BAA0B;AAKzB,MAAMC,aAAa,CAACC;IACvB,IAAIA,SAASA,QAAQ,GAAG;QACpB,IAAIA,QAAQH,qBACR,OAAOA,AAAsB,OAAtBA;QAEX,OAAOG,AAAQ,OAARA;IACX;IACA,MAAMC,cAAcC,QAAQ,GAAG,CAAC,0BAA0B,GACpDC,SAASD,QAAQ,GAAG,CAAC,0BAA0B,IAC/CE;IACN,IAAI,CAACH,eAAeI,MAAMJ,gBAAgBA,eAAe,GACrD,OAAOH,AAA0B,OAA1BA;IAEX,OAAOG,AAAc,OAAdA;AACX"}
@@ -1,24 +1,11 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.removeLockRecordDatabasePrefix = exports.createLockRecordDatabaseId = void 0;
7
- var _utils = require("@webiny/utils");
1
+ import { parseIdentifier } from "@webiny/utils";
8
2
  const WBY_LM_PREFIX = "wby-lm-";
9
- const createLockRecordDatabaseId = input => {
10
- const {
11
- id
12
- } = (0, _utils.parseIdentifier)(input);
13
- if (id.startsWith(WBY_LM_PREFIX)) {
14
- return id;
15
- }
16
- return `${WBY_LM_PREFIX}${id}`;
17
- };
18
- exports.createLockRecordDatabaseId = createLockRecordDatabaseId;
19
- const removeLockRecordDatabasePrefix = id => {
20
- return id.replace(WBY_LM_PREFIX, "");
3
+ const createLockRecordDatabaseId = (input)=>{
4
+ const { id } = parseIdentifier(input);
5
+ if (id.startsWith(WBY_LM_PREFIX)) return id;
6
+ return `${WBY_LM_PREFIX}${id}`;
21
7
  };
22
- exports.removeLockRecordDatabasePrefix = removeLockRecordDatabasePrefix;
8
+ const removeLockRecordDatabasePrefix = (id)=>id.replace(WBY_LM_PREFIX, "");
9
+ export { createLockRecordDatabaseId, removeLockRecordDatabasePrefix };
23
10
 
24
11
  //# sourceMappingURL=lockRecordDatabaseId.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","WBY_LM_PREFIX","createLockRecordDatabaseId","input","id","parseIdentifier","startsWith","exports","removeLockRecordDatabasePrefix","replace"],"sources":["lockRecordDatabaseId.ts"],"sourcesContent":["import { parseIdentifier } from \"@webiny/utils\";\n\nconst WBY_LM_PREFIX = \"wby-lm-\";\n\nexport const createLockRecordDatabaseId = (input: string): string => {\n const { id } = parseIdentifier(input);\n if (id.startsWith(WBY_LM_PREFIX)) {\n return id;\n }\n return `${WBY_LM_PREFIX}${id}`;\n};\n\nexport const removeLockRecordDatabasePrefix = (id: string) => {\n return id.replace(WBY_LM_PREFIX, \"\");\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAAG,SAAS;AAExB,MAAMC,0BAA0B,GAAIC,KAAa,IAAa;EACjE,MAAM;IAAEC;EAAG,CAAC,GAAG,IAAAC,sBAAe,EAACF,KAAK,CAAC;EACrC,IAAIC,EAAE,CAACE,UAAU,CAACL,aAAa,CAAC,EAAE;IAC9B,OAAOG,EAAE;EACb;EACA,OAAO,GAAGH,aAAa,GAAGG,EAAE,EAAE;AAClC,CAAC;AAACG,OAAA,CAAAL,0BAAA,GAAAA,0BAAA;AAEK,MAAMM,8BAA8B,GAAIJ,EAAU,IAAK;EAC1D,OAAOA,EAAE,CAACK,OAAO,CAACR,aAAa,EAAE,EAAE,CAAC;AACxC,CAAC;AAACM,OAAA,CAAAC,8BAAA,GAAAA,8BAAA","ignoreList":[]}
1
+ {"version":3,"file":"utils/lockRecordDatabaseId.js","sources":["../../src/utils/lockRecordDatabaseId.ts"],"sourcesContent":["import { parseIdentifier } from \"@webiny/utils\";\n\nconst WBY_LM_PREFIX = \"wby-lm-\";\n\nexport const createLockRecordDatabaseId = (input: string): string => {\n const { id } = parseIdentifier(input);\n if (id.startsWith(WBY_LM_PREFIX)) {\n return id;\n }\n return `${WBY_LM_PREFIX}${id}`;\n};\n\nexport const removeLockRecordDatabasePrefix = (id: string) => {\n return id.replace(WBY_LM_PREFIX, \"\");\n};\n"],"names":["WBY_LM_PREFIX","createLockRecordDatabaseId","input","id","parseIdentifier","removeLockRecordDatabasePrefix"],"mappings":";AAEA,MAAMA,gBAAgB;AAEf,MAAMC,6BAA6B,CAACC;IACvC,MAAM,EAAEC,EAAE,EAAE,GAAGC,gBAAgBF;IAC/B,IAAIC,GAAG,UAAU,CAACH,gBACd,OAAOG;IAEX,OAAO,GAAGH,gBAAgBG,IAAI;AAClC;AAEO,MAAME,iCAAiC,CAACF,KACpCA,GAAG,OAAO,CAACH,eAAe"}
@@ -1,8 +0,0 @@
1
- import type { IRecordLockingGetLockRecordParams, IRecordLockingLockRecord } from "../types";
2
- export type IGetLockRecordUseCaseExecuteParams = IRecordLockingGetLockRecordParams;
3
- export interface IGetLockRecordUseCaseExecute {
4
- (params: IGetLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;
5
- }
6
- export interface IGetLockRecordUseCase {
7
- execute: IGetLockRecordUseCaseExecute;
8
- }
@@ -1,7 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- //# sourceMappingURL=IGetLockRecordUseCase.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["IGetLockRecordUseCase.ts"],"sourcesContent":["import type { IRecordLockingGetLockRecordParams, IRecordLockingLockRecord } from \"~/types\";\n\nexport type IGetLockRecordUseCaseExecuteParams = IRecordLockingGetLockRecordParams;\n\nexport interface IGetLockRecordUseCaseExecute {\n (params: IGetLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;\n}\n\nexport interface IGetLockRecordUseCase {\n execute: IGetLockRecordUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,8 +0,0 @@
1
- import type { IRecordLockingIsLockedParams, IRecordLockingLockRecord } from "../types";
2
- export type IGetLockedEntryLockRecordUseCaseExecuteParams = IRecordLockingIsLockedParams;
3
- export interface IGetLockedEntryLockRecordUseCaseExecute {
4
- (params: IGetLockedEntryLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;
5
- }
6
- export interface IGetLockedEntryLockRecordUseCase {
7
- execute: IGetLockedEntryLockRecordUseCaseExecute;
8
- }