@webiny/api-record-locking 0.0.0-unstable.06b2ede40f → 0.0.0-unstable.0d717d18dd

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 (294) hide show
  1. package/README.md +10 -9
  2. package/RecordLockingAppFeature.d.ts +11 -0
  3. package/RecordLockingAppFeature.js +18 -0
  4. package/RecordLockingAppFeature.js.map +1 -0
  5. package/domain/LockRecord.d.ts +45 -0
  6. package/domain/LockRecord.js +73 -0
  7. package/domain/LockRecord.js.map +1 -0
  8. package/domain/RecordLockingAppConfig.d.ts +4 -0
  9. package/domain/RecordLockingAppConfig.js +5 -0
  10. package/domain/RecordLockingAppConfig.js.map +1 -0
  11. package/domain/RecordLockingModel.d.ts +9 -0
  12. package/domain/RecordLockingModel.js +32 -0
  13. package/domain/RecordLockingModel.js.map +1 -0
  14. package/domain/abstractions.d.ts +18 -0
  15. package/domain/abstractions.js +6 -0
  16. package/domain/abstractions.js.map +1 -0
  17. package/domain/calculateExpiresOn.d.ts +1 -0
  18. package/domain/calculateExpiresOn.js +8 -0
  19. package/domain/calculateExpiresOn.js.map +1 -0
  20. package/domain/errors.d.ts +71 -0
  21. package/domain/errors.js +85 -0
  22. package/domain/errors.js.map +1 -0
  23. package/domain/index.d.ts +4 -0
  24. package/domain/index.js +4 -0
  25. package/domain/types.d.ts +44 -0
  26. package/domain/types.js +9 -0
  27. package/domain/types.js.map +1 -0
  28. package/features/GetLockRecord/GetLockRecordRepository.d.ts +16 -0
  29. package/features/GetLockRecord/GetLockRecordRepository.js +40 -0
  30. package/features/GetLockRecord/GetLockRecordRepository.js.map +1 -0
  31. package/features/GetLockRecord/GetLockRecordUseCase.d.ts +12 -0
  32. package/features/GetLockRecord/GetLockRecordUseCase.js +18 -0
  33. package/features/GetLockRecord/GetLockRecordUseCase.js.map +1 -0
  34. package/features/GetLockRecord/abstractions.d.ts +41 -0
  35. package/features/GetLockRecord/abstractions.js +6 -0
  36. package/features/GetLockRecord/abstractions.js.map +1 -0
  37. package/features/GetLockRecord/feature.d.ts +4 -0
  38. package/features/GetLockRecord/feature.js +13 -0
  39. package/features/GetLockRecord/feature.js.map +1 -0
  40. package/features/GetLockRecord/index.d.ts +2 -0
  41. package/features/GetLockRecord/index.js +2 -0
  42. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +15 -0
  43. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +30 -0
  44. package/features/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -0
  45. package/features/GetLockedEntryLockRecord/abstractions.d.ts +26 -0
  46. package/features/GetLockedEntryLockRecord/abstractions.js +5 -0
  47. package/features/GetLockedEntryLockRecord/abstractions.js.map +1 -0
  48. package/features/GetLockedEntryLockRecord/feature.d.ts +4 -0
  49. package/features/GetLockedEntryLockRecord/feature.js +11 -0
  50. package/features/GetLockedEntryLockRecord/feature.js.map +1 -0
  51. package/features/GetLockedEntryLockRecord/index.d.ts +2 -0
  52. package/features/GetLockedEntryLockRecord/index.js +2 -0
  53. package/features/IsEntryLocked/IsEntryLockedUseCase.d.ts +14 -0
  54. package/features/IsEntryLocked/IsEntryLockedUseCase.js +33 -0
  55. package/features/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -0
  56. package/features/IsEntryLocked/abstractions.d.ts +24 -0
  57. package/features/IsEntryLocked/abstractions.js +5 -0
  58. package/features/IsEntryLocked/abstractions.js.map +1 -0
  59. package/features/IsEntryLocked/feature.d.ts +4 -0
  60. package/features/IsEntryLocked/feature.js +11 -0
  61. package/features/IsEntryLocked/feature.js.map +1 -0
  62. package/features/IsEntryLocked/index.d.ts +1 -0
  63. package/features/IsEntryLocked/index.js +1 -0
  64. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +15 -0
  65. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js +36 -0
  66. package/features/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -0
  67. package/features/KickOutCurrentUser/abstractions.d.ts +17 -0
  68. package/features/KickOutCurrentUser/abstractions.js +5 -0
  69. package/features/KickOutCurrentUser/abstractions.js.map +1 -0
  70. package/features/KickOutCurrentUser/feature.d.ts +4 -0
  71. package/features/KickOutCurrentUser/feature.js +11 -0
  72. package/features/KickOutCurrentUser/feature.js.map +1 -0
  73. package/features/KickOutCurrentUser/index.d.ts +1 -0
  74. package/features/KickOutCurrentUser/index.js +1 -0
  75. package/features/ListAllLockRecords/ListAllLockRecordsRepository.d.ts +18 -0
  76. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js +49 -0
  77. package/features/ListAllLockRecords/ListAllLockRecordsRepository.js.map +1 -0
  78. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.d.ts +11 -0
  79. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js +18 -0
  80. package/features/ListAllLockRecords/ListAllLockRecordsUseCase.js.map +1 -0
  81. package/features/ListAllLockRecords/abstractions.d.ts +40 -0
  82. package/features/ListAllLockRecords/abstractions.js +6 -0
  83. package/features/ListAllLockRecords/abstractions.js.map +1 -0
  84. package/features/ListAllLockRecords/feature.d.ts +4 -0
  85. package/features/ListAllLockRecords/feature.js +13 -0
  86. package/features/ListAllLockRecords/feature.js.map +1 -0
  87. package/features/ListAllLockRecords/index.d.ts +2 -0
  88. package/features/ListAllLockRecords/index.js +2 -0
  89. package/features/ListLockRecords/ListLockRecordsRepository.d.ts +17 -0
  90. package/features/ListLockRecords/ListLockRecordsRepository.js +49 -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 +33 -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 +6 -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 +13 -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 +1 -0
  103. package/features/LockEntry/LockEntryEventsDecorator.d.ts +14 -0
  104. package/features/LockEntry/LockEntryEventsDecorator.js +40 -0
  105. package/features/LockEntry/LockEntryEventsDecorator.js.map +1 -0
  106. package/features/LockEntry/LockEntryRepository.d.ts +16 -0
  107. package/features/LockEntry/LockEntryRepository.js +45 -0
  108. package/features/LockEntry/LockEntryRepository.js.map +1 -0
  109. package/features/LockEntry/LockEntryUseCase.d.ts +14 -0
  110. package/features/LockEntry/LockEntryUseCase.js +31 -0
  111. package/features/LockEntry/LockEntryUseCase.js.map +1 -0
  112. package/features/LockEntry/abstractions.d.ts +41 -0
  113. package/features/LockEntry/abstractions.js +6 -0
  114. package/features/LockEntry/abstractions.js.map +1 -0
  115. package/features/LockEntry/events.d.ts +45 -0
  116. package/features/LockEntry/events.js +32 -0
  117. package/features/LockEntry/events.js.map +1 -0
  118. package/features/LockEntry/feature.d.ts +4 -0
  119. package/features/LockEntry/feature.js +15 -0
  120. package/features/LockEntry/feature.js.map +1 -0
  121. package/features/LockEntry/index.d.ts +1 -0
  122. package/features/LockEntry/index.js +1 -0
  123. package/features/RecordLockingFeature.d.ts +15 -0
  124. package/features/RecordLockingFeature.js +34 -0
  125. package/features/RecordLockingFeature.js.map +1 -0
  126. package/features/UnlockEntry/UnlockEntryEventsDecorator.d.ts +14 -0
  127. package/features/UnlockEntry/UnlockEntryEventsDecorator.js +41 -0
  128. package/features/UnlockEntry/UnlockEntryEventsDecorator.js.map +1 -0
  129. package/features/UnlockEntry/UnlockEntryRepository.d.ts +14 -0
  130. package/features/UnlockEntry/UnlockEntryRepository.js +42 -0
  131. package/features/UnlockEntry/UnlockEntryRepository.js.map +1 -0
  132. package/features/UnlockEntry/UnlockEntryUseCase.d.ts +18 -0
  133. package/features/UnlockEntry/UnlockEntryUseCase.js +65 -0
  134. package/features/UnlockEntry/UnlockEntryUseCase.js.map +1 -0
  135. package/features/UnlockEntry/abstractions.d.ts +44 -0
  136. package/features/UnlockEntry/abstractions.js +6 -0
  137. package/features/UnlockEntry/abstractions.js.map +1 -0
  138. package/features/UnlockEntry/events.d.ts +46 -0
  139. package/features/UnlockEntry/events.js +32 -0
  140. package/features/UnlockEntry/events.js.map +1 -0
  141. package/features/UnlockEntry/feature.d.ts +4 -0
  142. package/features/UnlockEntry/feature.js +15 -0
  143. package/features/UnlockEntry/feature.js.map +1 -0
  144. package/features/UnlockEntry/hasFullAccessPermission.d.ts +2 -0
  145. package/features/UnlockEntry/hasFullAccessPermission.js +9 -0
  146. package/features/UnlockEntry/hasFullAccessPermission.js.map +1 -0
  147. package/features/UnlockEntry/index.d.ts +1 -0
  148. package/features/UnlockEntry/index.js +1 -0
  149. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.d.ts +14 -0
  150. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js +40 -0
  151. package/features/UnlockEntryRequest/UnlockEntryRequestEventsDecorator.js.map +1 -0
  152. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.d.ts +17 -0
  153. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js +44 -0
  154. package/features/UnlockEntryRequest/UnlockEntryRequestRepository.js.map +1 -0
  155. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.d.ts +16 -0
  156. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js +75 -0
  157. package/features/UnlockEntryRequest/UnlockEntryRequestUseCase.js.map +1 -0
  158. package/features/UnlockEntryRequest/abstractions.d.ts +42 -0
  159. package/features/UnlockEntryRequest/abstractions.js +6 -0
  160. package/features/UnlockEntryRequest/abstractions.js.map +1 -0
  161. package/features/UnlockEntryRequest/events.d.ts +45 -0
  162. package/features/UnlockEntryRequest/events.js +32 -0
  163. package/features/UnlockEntryRequest/events.js.map +1 -0
  164. package/features/UnlockEntryRequest/feature.d.ts +4 -0
  165. package/features/UnlockEntryRequest/feature.js +15 -0
  166. package/features/UnlockEntryRequest/feature.js.map +1 -0
  167. package/features/UnlockEntryRequest/index.d.ts +3 -0
  168. package/features/UnlockEntryRequest/index.js +3 -0
  169. package/features/UpdateEntryLock/UpdateEntryLockRepository.d.ts +20 -0
  170. package/features/UpdateEntryLock/UpdateEntryLockRepository.js +60 -0
  171. package/features/UpdateEntryLock/UpdateEntryLockRepository.js.map +1 -0
  172. package/features/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +18 -0
  173. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js +51 -0
  174. package/features/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -0
  175. package/features/UpdateEntryLock/abstractions.d.ts +42 -0
  176. package/features/UpdateEntryLock/abstractions.js +6 -0
  177. package/features/UpdateEntryLock/abstractions.js.map +1 -0
  178. package/features/UpdateEntryLock/feature.d.ts +4 -0
  179. package/features/UpdateEntryLock/feature.js +13 -0
  180. package/features/UpdateEntryLock/feature.js.map +1 -0
  181. package/features/UpdateEntryLock/index.d.ts +1 -0
  182. package/features/UpdateEntryLock/index.js +1 -0
  183. package/graphql/RecordLockingContextualSchema.d.ts +18 -0
  184. package/graphql/RecordLockingContextualSchema.js +77 -0
  185. package/graphql/RecordLockingContextualSchema.js.map +1 -0
  186. package/graphql/checkPermissions.d.ts +5 -0
  187. package/graphql/checkPermissions.js +10 -0
  188. package/graphql/checkPermissions.js.map +1 -0
  189. package/{utils → graphql}/resolve.d.ts +4 -4
  190. package/graphql/resolve.js +20 -0
  191. package/graphql/resolve.js.map +1 -0
  192. package/graphql/schema.d.ts +8 -4
  193. package/graphql/schema.js +162 -145
  194. package/graphql/schema.js.map +1 -1
  195. package/index.d.ts +2 -9
  196. package/index.js +1 -39
  197. package/package.json +32 -28
  198. package/types.d.ts +3 -132
  199. package/types.js +6 -27
  200. package/types.js.map +1 -1
  201. package/utils/convertWhereCondition.d.ts +1 -1
  202. package/utils/convertWhereCondition.js +21 -36
  203. package/utils/convertWhereCondition.js.map +1 -1
  204. package/utils/getTimeout.js +8 -22
  205. package/utils/getTimeout.js.map +1 -1
  206. package/utils/lockRecordDatabaseId.js +7 -20
  207. package/utils/lockRecordDatabaseId.js.map +1 -1
  208. package/abstractions/IGetLockRecordUseCase.d.ts +0 -8
  209. package/abstractions/IGetLockRecordUseCase.js +0 -7
  210. package/abstractions/IGetLockRecordUseCase.js.map +0 -1
  211. package/abstractions/IGetLockedEntryLockRecordUseCase.d.ts +0 -8
  212. package/abstractions/IGetLockedEntryLockRecordUseCase.js +0 -7
  213. package/abstractions/IGetLockedEntryLockRecordUseCase.js.map +0 -1
  214. package/abstractions/IIsEntryLocked.d.ts +0 -8
  215. package/abstractions/IIsEntryLocked.js +0 -7
  216. package/abstractions/IIsEntryLocked.js.map +0 -1
  217. package/abstractions/IKickOutCurrentUserUseCase.d.ts +0 -5
  218. package/abstractions/IKickOutCurrentUserUseCase.js +0 -7
  219. package/abstractions/IKickOutCurrentUserUseCase.js.map +0 -1
  220. package/abstractions/IListAllLockRecordsUseCase.d.ts +0 -9
  221. package/abstractions/IListAllLockRecordsUseCase.js +0 -7
  222. package/abstractions/IListAllLockRecordsUseCase.js.map +0 -1
  223. package/abstractions/IListLockRecordsUseCase.d.ts +0 -10
  224. package/abstractions/IListLockRecordsUseCase.js +0 -7
  225. package/abstractions/IListLockRecordsUseCase.js.map +0 -1
  226. package/abstractions/ILockEntryUseCase.d.ts +0 -11
  227. package/abstractions/ILockEntryUseCase.js +0 -7
  228. package/abstractions/ILockEntryUseCase.js.map +0 -1
  229. package/abstractions/IUnlockEntryRequestUseCase.d.ts +0 -11
  230. package/abstractions/IUnlockEntryRequestUseCase.js +0 -7
  231. package/abstractions/IUnlockEntryRequestUseCase.js.map +0 -1
  232. package/abstractions/IUnlockEntryUseCase.d.ts +0 -12
  233. package/abstractions/IUnlockEntryUseCase.js +0 -7
  234. package/abstractions/IUnlockEntryUseCase.js.map +0 -1
  235. package/abstractions/IUpdateEntryLockUseCase.d.ts +0 -11
  236. package/abstractions/IUpdateEntryLockUseCase.js +0 -7
  237. package/abstractions/IUpdateEntryLockUseCase.js.map +0 -1
  238. package/crud/crud.d.ts +0 -7
  239. package/crud/crud.js +0 -204
  240. package/crud/crud.js.map +0 -1
  241. package/crud/model.d.ts +0 -2
  242. package/crud/model.js +0 -127
  243. package/crud/model.js.map +0 -1
  244. package/index.js.map +0 -1
  245. package/useCases/GetLockRecord/GetLockRecordUseCase.d.ts +0 -16
  246. package/useCases/GetLockRecord/GetLockRecordUseCase.js +0 -39
  247. package/useCases/GetLockRecord/GetLockRecordUseCase.js.map +0 -1
  248. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +0 -16
  249. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +0 -29
  250. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +0 -1
  251. package/useCases/IsEntryLocked/IsEntryLockedUseCase.d.ts +0 -13
  252. package/useCases/IsEntryLocked/IsEntryLockedUseCase.js +0 -31
  253. package/useCases/IsEntryLocked/IsEntryLockedUseCase.js.map +0 -1
  254. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +0 -12
  255. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js +0 -46
  256. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +0 -1
  257. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.d.ts +0 -13
  258. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js +0 -34
  259. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js.map +0 -1
  260. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.d.ts +0 -14
  261. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js +0 -27
  262. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js.map +0 -1
  263. package/useCases/LockEntryUseCase/LockEntryUseCase.d.ts +0 -21
  264. package/useCases/LockEntryUseCase/LockEntryUseCase.js +0 -64
  265. package/useCases/LockEntryUseCase/LockEntryUseCase.js.map +0 -1
  266. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.d.ts +0 -23
  267. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js +0 -90
  268. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js.map +0 -1
  269. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.d.ts +0 -21
  270. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js +0 -82
  271. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js.map +0 -1
  272. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +0 -26
  273. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js +0 -93
  274. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js.map +0 -1
  275. package/useCases/index.d.ts +0 -31
  276. package/useCases/index.js +0 -96
  277. package/useCases/index.js.map +0 -1
  278. package/useCases/types.d.ts +0 -5
  279. package/useCases/types.js +0 -7
  280. package/useCases/types.js.map +0 -1
  281. package/utils/calculateExpiresOn.d.ts +0 -2
  282. package/utils/calculateExpiresOn.js +0 -16
  283. package/utils/calculateExpiresOn.js.map +0 -1
  284. package/utils/checkPermissions.d.ts +0 -7
  285. package/utils/checkPermissions.js +0 -21
  286. package/utils/checkPermissions.js.map +0 -1
  287. package/utils/convertEntryToLockRecord.d.ts +0 -28
  288. package/utils/convertEntryToLockRecord.js +0 -91
  289. package/utils/convertEntryToLockRecord.js.map +0 -1
  290. package/utils/resolve.js +0 -30
  291. package/utils/resolve.js.map +0 -1
  292. package/utils/validateSameIdentity.d.ts +0 -6
  293. package/utils/validateSameIdentity.js +0 -24
  294. package/utils/validateSameIdentity.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_resolve","require","_handlerGraphql","_renderFields","_createFieldTypePluginRecords","_renderListFilterFields","_renderSortEnum","_checkPermissions","createGraphQLSchema","params","context","model","recordLocking","getModel","models","security","withoutAuthorization","cms","listModels","filter","fields","length","isPrivate","fieldTypePlugins","createFieldTypePluginRecords","plugins","recordLockingFields","renderFields","type","listFilterFieldsRender","renderListFilterFields","excludeFields","sortEnumRender","renderSortEnum","sorterPlugins","plugin","createGraphQLSchemaPlugin","typeDefs","map","f","join","resolvers","Query","Mutation","RecordLockingQuery","isEntryLocked","_","args","resolve","checkPermissions","id","getLockRecord","result","NotFoundError","getLockedEntryLockRecord","listLockRecords","resolveList","listAllLockRecords","RecordLockingMutation","lockEntry","updateEntryLock","unlockEntry","force","unlockEntryRequest","name","exports"],"sources":["schema.ts"],"sourcesContent":["import { resolve, resolveList } from \"~/utils/resolve\";\nimport type { Context } from \"~/types\";\nimport type { IGraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { createGraphQLSchemaPlugin, NotFoundError } from \"@webiny/handler-graphql\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields\";\nimport { createFieldTypePluginRecords } from \"@webiny/api-headless-cms/graphql/schema/createFieldTypePluginRecords\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum\";\nimport { checkPermissions } from \"~/utils/checkPermissions\";\n\ninterface Params {\n context: Pick<Context, \"plugins\" | \"recordLocking\" | \"security\" | \"cms\">;\n}\nexport const createGraphQLSchema = async (\n params: Params\n): Promise<IGraphQLSchemaPlugin<Context>> => {\n const context = params.context;\n\n const model = await context.recordLocking.getModel();\n\n const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter(model => {\n if (model.fields.length === 0) {\n return false;\n } else if (model.isPrivate) {\n return false;\n }\n return true;\n });\n });\n\n const fieldTypePlugins = createFieldTypePluginRecords(context.plugins);\n\n const recordLockingFields = renderFields({\n models,\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins\n });\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldTypePlugins,\n excludeFields: [\"entryId\"]\n });\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields,\n fieldTypePlugins,\n sorterPlugins: []\n });\n\n const plugin = createGraphQLSchemaPlugin<Context>({\n typeDefs: /* GraphQL */ `\n ${recordLockingFields.map(f => f.typeDefs).join(\"\\n\")}\n\n type RecordLockingError {\n message: String\n code: String\n data: JSON\n stack: String\n }\n\n enum RecordLockingRecordActionType {\n requested\n approved\n denied\n }\n\n type RecordLockingIdentity {\n id: String!\n displayName: String\n type: String\n }\n\n type RecordLockingRecordAction {\n id: ID!\n type: RecordLockingRecordActionType!\n message: String\n createdBy: RecordLockingIdentity!\n createdOn: DateTime!\n }\n\n type RecordLockingRecord {\n id: ID!\n lockedBy: RecordLockingIdentity!\n lockedOn: DateTime!\n updatedOn: DateTime!\n expiresOn: DateTime!\n ${recordLockingFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type RecordLockingIsEntryLockedResponse {\n data: Boolean\n error: RecordLockingError\n }\n\n type RecordLockingGetLockRecordResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingGetLockedEntryLockRecordResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingListLockRecordsResponse {\n data: [RecordLockingRecord!]\n error: RecordLockingError\n }\n\n type RecordLockingLockEntryResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n \n type RecordLockingUpdateLockResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingUnlockEntryResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingUnlockEntryRequestResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n input RecordLockingListWhereInput {\n ${listFilterFieldsRender}\n }\n\n enum RecordLockingListSorter {\n ${sortEnumRender}\n }\n\n type RecordLockingQuery {\n _empty: String\n }\n\n type RecordLockingMutation {\n _empty: String\n }\n\n extend type RecordLockingQuery {\n isEntryLocked(id: ID!, type: String!): RecordLockingIsEntryLockedResponse!\n getLockRecord(id: ID!, type: String!): RecordLockingGetLockRecordResponse!\n # Returns lock record or null - if entry is locked in context of the current user, does not throw an error like getLockRecord if no record in the DB\n getLockedEntryLockRecord(id: ID!, type: String!): RecordLockingGetLockedEntryLockRecordResponse!\n listAllLockRecords(\n where: RecordLockingListWhereInput\n sort: [RecordLockingListSorter!]\n limit: Int\n after: String\n ): RecordLockingListLockRecordsResponse!\n # Basically same as listAllLockRecords except this one will filter out records with expired lock.\n listLockRecords(\n where: RecordLockingListWhereInput\n sort: [RecordLockingListSorter!]\n limit: Int\n after: String\n ): RecordLockingListLockRecordsResponse!\n }\n\n extend type RecordLockingMutation {\n lockEntry(id: ID!, type: String!): RecordLockingLockEntryResponse!\n updateEntryLock(id: ID!, type: String!): RecordLockingUpdateLockResponse!\n unlockEntry(id: ID!, type: String!, force: Boolean): RecordLockingUnlockEntryResponse!\n unlockEntryRequest(\n id: ID!\n type: String!\n ): RecordLockingUnlockEntryRequestResponse!\n }\n\n extend type Query {\n recordLocking: RecordLockingQuery\n }\n\n extend type Mutation {\n recordLocking: RecordLockingMutation\n }\n `,\n resolvers: {\n Query: {\n recordLocking: async () => ({})\n },\n Mutation: {\n recordLocking: async () => ({})\n },\n RecordLockingQuery: {\n async isEntryLocked(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n return context.recordLocking.isEntryLocked({\n id: args.id,\n type: args.type\n });\n });\n },\n async getLockRecord(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const result = await context.recordLocking.getLockRecord({\n id: args.id,\n type: args.type\n });\n if (result) {\n return result;\n }\n throw new NotFoundError(\"Lock record not found.\");\n });\n },\n async getLockedEntryLockRecord(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n return await context.recordLocking.getLockedEntryLockRecord({\n id: args.id,\n type: args.type\n });\n });\n },\n\n async listLockRecords(_, args, context) {\n return resolveList(async () => {\n await checkPermissions(context);\n return await context.recordLocking.listLockRecords(args);\n });\n },\n listAllLockRecords(_, args, context) {\n return resolveList(async () => {\n await checkPermissions(context);\n return await context.recordLocking.listAllLockRecords(args);\n });\n }\n },\n RecordLockingMutation: {\n async lockEntry(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n return context.recordLocking.lockEntry({\n id: args.id,\n type: args.type\n });\n });\n },\n async updateEntryLock(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n return context.recordLocking.updateEntryLock({\n id: args.id,\n type: args.type\n });\n });\n },\n async unlockEntry(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n return await context.recordLocking.unlockEntry({\n id: args.id,\n type: args.type,\n force: args.force\n });\n });\n },\n async unlockEntryRequest(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n return await context.recordLocking.unlockEntryRequest({\n id: args.id,\n type: args.type\n });\n });\n }\n }\n }\n });\n\n plugin.name = \"recordLocking.graphql.schema.locking\";\n\n return plugin;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAGA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,6BAAA,GAAAH,OAAA;AACA,IAAAI,uBAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AAKO,MAAMO,mBAAmB,GAAG,MAC/BC,MAAc,IAC2B;EACzC,MAAMC,OAAO,GAAGD,MAAM,CAACC,OAAO;EAE9B,MAAMC,KAAK,GAAG,MAAMD,OAAO,CAACE,aAAa,CAACC,QAAQ,CAAC,CAAC;EAEpD,MAAMC,MAAM,GAAG,MAAMJ,OAAO,CAACK,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IACnE,OAAO,CAAC,MAAMN,OAAO,CAACO,GAAG,CAACC,UAAU,CAAC,CAAC,EAAEC,MAAM,CAACR,KAAK,IAAI;MACpD,IAAIA,KAAK,CAACS,MAAM,CAACC,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAO,KAAK;MAChB,CAAC,MAAM,IAAIV,KAAK,CAACW,SAAS,EAAE;QACxB,OAAO,KAAK;MAChB;MACA,OAAO,IAAI;IACf,CAAC,CAAC;EACN,CAAC,CAAC;EAEF,MAAMC,gBAAgB,GAAG,IAAAC,0DAA4B,EAACd,OAAO,CAACe,OAAO,CAAC;EAEtE,MAAMC,mBAAmB,GAAG,IAAAC,0BAAY,EAAC;IACrCb,MAAM;IACNH,KAAK;IACLS,MAAM,EAAET,KAAK,CAACS,MAAM;IACpBQ,IAAI,EAAE,QAAQ;IACdL;EACJ,CAAC,CAAC;EAEF,MAAMM,sBAAsB,GAAG,IAAAC,8CAAsB,EAAC;IAClDnB,KAAK;IACLS,MAAM,EAAET,KAAK,CAACS,MAAM;IACpBQ,IAAI,EAAE,QAAQ;IACdL,gBAAgB;IAChBQ,aAAa,EAAE,CAAC,SAAS;EAC7B,CAAC,CAAC;EAEF,MAAMC,cAAc,GAAG,IAAAC,8BAAc,EAAC;IAClCtB,KAAK;IACLS,MAAM,EAAET,KAAK,CAACS,MAAM;IACpBG,gBAAgB;IAChBW,aAAa,EAAE;EACnB,CAAC,CAAC;EAEF,MAAMC,MAAM,GAAG,IAAAC,yCAAyB,EAAU;IAC9CC,QAAQ,EAAE,aAAc;AAChC,cAAcX,mBAAmB,CAACY,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACF,QAAQ,CAAC,CAACG,IAAI,CAAC,IAAI,CAAC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBd,mBAAmB,CAACY,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACnB,MAAM,CAAC,CAACoB,IAAI,CAAC,IAAI,CAAC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkBX,sBAAsB;AACxC;AACA;AACA;AACA,kBAAkBG,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDS,SAAS,EAAE;MACPC,KAAK,EAAE;QACH9B,aAAa,EAAE,MAAAA,CAAA,MAAa,CAAC,CAAC;MAClC,CAAC;MACD+B,QAAQ,EAAE;QACN/B,aAAa,EAAE,MAAAA,CAAA,MAAa,CAAC,CAAC;MAClC,CAAC;MACDgC,kBAAkB,EAAE;QAChB,MAAMC,aAAaA,CAACC,CAAC,EAAEC,IAAI,EAAErC,OAAO,EAAE;UAClC,OAAO,IAAAsC,gBAAO,EAAC,YAAY;YACvB,MAAM,IAAAC,kC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","ignoreList":[]}
1
+ {"version":3,"file":"graphql/schema.js","sources":["../../src/graphql/schema.ts"],"sourcesContent":["import { resolve, resolveList } from \"./resolve.js\";\nimport type { IGraphQLSchemaPlugin } from \"@webiny/api-graphql\";\nimport { createGraphQLSchemaPlugin } from \"@webiny/api-graphql\";\nimport { renderFields } from \"@webiny/api-headless-cms/utils/renderFields.js\";\nimport { renderListFilterFields } from \"@webiny/api-headless-cms/utils/renderListFilterFields.js\";\nimport { renderSortEnum } from \"@webiny/api-headless-cms/utils/renderSortEnum.js\";\nimport { checkPermissions } from \"./checkPermissions.js\";\nimport { IsEntryLockedUseCase } from \"~/features/IsEntryLocked/abstractions.js\";\nimport { GetLockRecordUseCase } from \"~/features/GetLockRecord/abstractions.js\";\nimport { GetLockedEntryLockRecordUseCase } from \"~/features/GetLockedEntryLockRecord/abstractions.js\";\nimport { ListLockRecordsUseCase } from \"~/features/ListLockRecords/abstractions.js\";\nimport { ListAllLockRecordsUseCase } from \"~/features/ListAllLockRecords/abstractions.js\";\nimport { LockEntryUseCase } from \"~/features/LockEntry/abstractions.js\";\nimport { UpdateEntryLockUseCase } from \"~/features/UpdateEntryLock/abstractions.js\";\nimport { UnlockEntryUseCase } from \"~/features/UnlockEntry/abstractions.js\";\nimport { UnlockEntryRequestUseCase } from \"~/features/UnlockEntryRequest/abstractions.js\";\nimport type { ApiCoreContext } from \"@webiny/api-core/types/core.js\";\nimport { CmsModel } from \"@webiny/api-headless-cms/types/model.js\";\nimport type { CmsModelFieldToGraphQLRegistry } from \"@webiny/api-headless-cms/exports/api/cms/graphql.js\";\n\ninterface Params {\n model: CmsModel;\n models: CmsModel[];\n fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;\n}\nexport const createGraphQLSchema = async (\n params: Params\n): Promise<IGraphQLSchemaPlugin<ApiCoreContext>> => {\n const model = params.model;\n\n const models = params.models.filter(model => {\n return model.fields.length > 0;\n });\n\n const fieldRegistry = params.fieldRegistry;\n\n const recordLockingFields = renderFields({\n models,\n model,\n fields: model.fields,\n type: \"manage\",\n fieldRegistry\n });\n\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type: \"manage\",\n fieldRegistry,\n excludeFields: [\"entryId\"]\n });\n\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields,\n fieldRegistry,\n sorters: []\n });\n\n const plugin = createGraphQLSchemaPlugin<ApiCoreContext>({\n typeDefs: /* GraphQL */ `\n ${recordLockingFields.map(f => f.typeDefs).join(\"\\n\")}\n\n type RecordLockingError {\n message: String\n code: String\n data: JSON\n stack: String\n }\n\n enum RecordLockingRecordActionType {\n requested\n approved\n denied\n }\n\n type RecordLockingIdentity {\n id: String!\n displayName: String\n type: String\n }\n\n type RecordLockingRecordAction {\n id: ID!\n type: RecordLockingRecordActionType!\n message: String\n createdBy: RecordLockingIdentity!\n createdOn: DateTime!\n }\n\n type RecordLockingRecord {\n id: ID!\n lockedBy: RecordLockingIdentity!\n lockedOn: DateTime!\n updatedOn: DateTime!\n expiresOn: DateTime!\n ${recordLockingFields.map(f => f.fields).join(\"\\n\")}\n }\n\n type RecordLockingIsEntryLockedResponse {\n data: Boolean\n error: RecordLockingError\n }\n\n type RecordLockingGetLockRecordResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingGetLockedEntryLockRecordResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingListLockRecordsResponse {\n data: [RecordLockingRecord!]\n error: RecordLockingError\n }\n\n type RecordLockingLockEntryResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n \n type RecordLockingUpdateLockResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingUnlockEntryResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n type RecordLockingUnlockEntryRequestResponse {\n data: RecordLockingRecord\n error: RecordLockingError\n }\n\n input RecordLockingListWhereInput {\n ${listFilterFieldsRender.allFiltersAsString()}\n }\n\n enum RecordLockingListSorter {\n ${sortEnumRender}\n }\n\n type RecordLockingQuery {\n _empty: String\n }\n\n type RecordLockingMutation {\n _empty: String\n }\n\n extend type RecordLockingQuery {\n isEntryLocked(id: ID!, type: String!): RecordLockingIsEntryLockedResponse!\n getLockRecord(id: ID!, type: String!): RecordLockingGetLockRecordResponse!\n # Returns lock record or null - if entry is locked in context of the current user, does not throw an error like getLockRecord if no record in the DB\n getLockedEntryLockRecord(id: ID!, type: String!): RecordLockingGetLockedEntryLockRecordResponse!\n listAllLockRecords(\n where: RecordLockingListWhereInput\n sort: [RecordLockingListSorter!]\n limit: Int\n after: String\n ): RecordLockingListLockRecordsResponse!\n # Basically same as listAllLockRecords except this one will filter out records with expired lock.\n listLockRecords(\n where: RecordLockingListWhereInput\n sort: [RecordLockingListSorter!]\n limit: Int\n after: String\n ): RecordLockingListLockRecordsResponse!\n }\n\n extend type RecordLockingMutation {\n lockEntry(id: ID!, type: String!): RecordLockingLockEntryResponse!\n updateEntryLock(id: ID!, type: String!): RecordLockingUpdateLockResponse!\n unlockEntry(id: ID!, type: String!, force: Boolean): RecordLockingUnlockEntryResponse!\n unlockEntryRequest(\n id: ID!\n type: String!\n ): RecordLockingUnlockEntryRequestResponse!\n }\n\n extend type Query {\n recordLocking: RecordLockingQuery\n }\n\n extend type Mutation {\n recordLocking: RecordLockingMutation\n }\n `,\n resolvers: {\n Query: {\n recordLocking: async () => ({})\n },\n Mutation: {\n recordLocking: async () => ({})\n },\n RecordLockingQuery: {\n async isEntryLocked(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(IsEntryLockedUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async getLockRecord(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(GetLockRecordUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async getLockedEntryLockRecord(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(GetLockedEntryLockRecordUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n // Returns null if not found/expired/locked by current user\n if (result.isFail()) {\n return null;\n }\n return result.value;\n });\n },\n\n async listLockRecords(_, args, context) {\n return resolveList(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(ListLockRecordsUseCase);\n const result = await useCase.execute(args);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n listAllLockRecords(_, args, context) {\n return resolveList(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(ListAllLockRecordsUseCase);\n const result = await useCase.execute(args);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n }\n },\n RecordLockingMutation: {\n async lockEntry(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(LockEntryUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async updateEntryLock(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UpdateEntryLockUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async unlockEntry(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UnlockEntryUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type,\n force: args.force\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n },\n async unlockEntryRequest(_, args, context) {\n return resolve(async () => {\n await checkPermissions(context);\n const useCase = context.container.resolve(UnlockEntryRequestUseCase);\n const result = await useCase.execute({\n id: args.id,\n type: args.type\n });\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n });\n }\n }\n }\n });\n\n plugin.name = \"recordLocking.graphql.schema.locking\";\n\n return plugin;\n};\n"],"names":["createGraphQLSchema","params","model","models","fieldRegistry","recordLockingFields","renderFields","listFilterFieldsRender","renderListFilterFields","sortEnumRender","renderSortEnum","plugin","createGraphQLSchemaPlugin","f","_","args","context","resolve","checkPermissions","useCase","IsEntryLockedUseCase","result","GetLockRecordUseCase","GetLockedEntryLockRecordUseCase","resolveList","ListLockRecordsUseCase","ListAllLockRecordsUseCase","LockEntryUseCase","UpdateEntryLockUseCase","UnlockEntryUseCase","UnlockEntryRequestUseCase"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,9 +1,2 @@
1
- import { ContextPlugin } from "@webiny/api";
2
- import type { Context } from "./types";
3
- export interface ICreateContextPluginParams {
4
- /**
5
- * A number of seconds after last activity to wait before the record is automatically unlocked.
6
- */
7
- timeout?: number;
8
- }
9
- export declare const createRecordLocking: (params?: ICreateContextPluginParams) => ContextPlugin<Context>[];
1
+ export { RecordLockingAppFeature } from "./RecordLockingAppFeature.js";
2
+ export type { IRecordLockingAppFeatureParams } from "./RecordLockingAppFeature.js";
package/index.js CHANGED
@@ -1,39 +1 @@
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
28
- });
29
- context.plugins.register(graphQlPlugin);
30
- });
31
- plugin.name = "context.recordLocking";
32
- return plugin;
33
- };
34
- const createRecordLocking = params => {
35
- return [createContextPlugin(params)];
36
- };
37
- exports.createRecordLocking = createRecordLocking;
38
-
39
- //# sourceMappingURL=index.js.map
1
+ export { RecordLockingAppFeature } from "./RecordLockingAppFeature.js";
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@webiny/api-record-locking",
3
- "version": "0.0.0-unstable.06b2ede40f",
4
- "main": "index.js",
3
+ "version": "0.0.0-unstable.0d717d18dd",
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,35 @@
12
16
  ],
13
17
  "license": "MIT",
14
18
  "dependencies": {
15
- "@webiny/api": "0.0.0-unstable.06b2ede40f",
16
- "@webiny/api-headless-cms": "0.0.0-unstable.06b2ede40f",
17
- "@webiny/api-websockets": "0.0.0-unstable.06b2ede40f",
18
- "@webiny/error": "0.0.0-unstable.06b2ede40f",
19
- "@webiny/handler": "0.0.0-unstable.06b2ede40f",
20
- "@webiny/handler-aws": "0.0.0-unstable.06b2ede40f",
21
- "@webiny/handler-graphql": "0.0.0-unstable.06b2ede40f",
22
- "@webiny/plugins": "0.0.0-unstable.06b2ede40f",
23
- "@webiny/pubsub": "0.0.0-unstable.06b2ede40f",
24
- "@webiny/utils": "0.0.0-unstable.06b2ede40f"
19
+ "@graphql-tools/merge": "9.2.2",
20
+ "@graphql-tools/schema": "10.0.38",
21
+ "@webiny/api": "0.0.0-unstable.0d717d18dd",
22
+ "@webiny/api-graphql": "0.0.0-unstable.0d717d18dd",
23
+ "@webiny/api-headless-cms": "0.0.0-unstable.0d717d18dd",
24
+ "@webiny/api-websockets": "0.0.0-unstable.0d717d18dd",
25
+ "@webiny/feature": "0.0.0-unstable.0d717d18dd",
26
+ "@webiny/handler": "0.0.0-unstable.0d717d18dd",
27
+ "@webiny/utils": "0.0.0-unstable.0d717d18dd"
25
28
  },
26
29
  "devDependencies": {
27
- "@webiny/api-i18n": "0.0.0-unstable.06b2ede40f",
28
- "@webiny/api-security": "0.0.0-unstable.06b2ede40f",
29
- "@webiny/api-tenancy": "0.0.0-unstable.06b2ede40f",
30
- "@webiny/api-wcp": "0.0.0-unstable.06b2ede40f",
31
- "@webiny/project-utils": "0.0.0-unstable.06b2ede40f",
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.0d717d18dd",
31
+ "@webiny/api-core-testing": "0.0.0-unstable.0d717d18dd",
32
+ "@webiny/build-tools": "0.0.0-unstable.0d717d18dd",
33
+ "@webiny/di": "1.0.2",
34
+ "@webiny/event-handler-core": "0.0.0-unstable.0d717d18dd",
35
+ "@webiny/project-utils": "0.0.0-unstable.0d717d18dd",
36
+ "@webiny/wcp": "0.0.0-unstable.0d717d18dd",
37
+ "graphql": "16.14.2",
38
+ "rimraf": "6.1.3",
39
+ "type-fest": "5.8.0",
40
+ "typescript": "7.0.2",
41
+ "vitest": "4.1.10"
36
42
  },
37
43
  "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"
44
+ "access": "public"
44
45
  },
45
- "gitHead": "06b2ede40fc2212a70eeafd74afd50b56fb0ce82"
46
+ "gitHead": "8476da73b653c89cc1474d968baf55c1b0ae0e5f",
47
+ "webiny": {
48
+ "publishFrom": "dist"
49
+ }
46
50
  }
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