@webiny/api-record-locking 5.42.1-beta.1 → 5.42.1-beta.3

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 (54) hide show
  1. package/crud/crud.d.ts +2 -1
  2. package/crud/crud.js +20 -8
  3. package/crud/crud.js.map +1 -1
  4. package/index.d.ts +4 -1
  5. package/index.js +5 -4
  6. package/index.js.map +1 -1
  7. package/package.json +18 -18
  8. package/types.d.ts +13 -5
  9. package/types.js +6 -6
  10. package/types.js.map +1 -1
  11. package/useCases/GetLockRecord/GetLockRecordUseCase.d.ts +5 -2
  12. package/useCases/GetLockRecord/GetLockRecordUseCase.js +2 -2
  13. package/useCases/GetLockRecord/GetLockRecordUseCase.js.map +1 -1
  14. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +4 -4
  15. package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -1
  16. package/useCases/IsEntryLocked/IsEntryLockedUseCase.d.ts +4 -4
  17. package/useCases/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -1
  18. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +2 -2
  19. package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -1
  20. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.d.ts +5 -2
  21. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js +4 -2
  22. package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js.map +1 -1
  23. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.d.ts +2 -2
  24. package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js.map +1 -1
  25. package/useCases/LockEntryUseCase/LockEntryUseCase.d.ts +6 -3
  26. package/useCases/LockEntryUseCase/LockEntryUseCase.js +2 -2
  27. package/useCases/LockEntryUseCase/LockEntryUseCase.js.map +1 -1
  28. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.d.ts +6 -6
  29. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js +20 -4
  30. package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js.map +1 -1
  31. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.d.ts +6 -3
  32. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js +3 -3
  33. package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js.map +1 -1
  34. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +7 -4
  35. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js +2 -2
  36. package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -1
  37. package/useCases/index.d.ts +12 -11
  38. package/useCases/index.js +19 -8
  39. package/useCases/index.js.map +1 -1
  40. package/useCases/types.d.ts +5 -0
  41. package/useCases/types.js +7 -0
  42. package/useCases/types.js.map +1 -0
  43. package/utils/calculateExpiresOn.d.ts +1 -1
  44. package/utils/calculateExpiresOn.js +1 -3
  45. package/utils/calculateExpiresOn.js.map +1 -1
  46. package/utils/convertEntryToLockRecord.d.ts +3 -4
  47. package/utils/convertEntryToLockRecord.js +7 -7
  48. package/utils/convertEntryToLockRecord.js.map +1 -1
  49. package/utils/getTimeout.d.ts +3 -2
  50. package/utils/getTimeout.js +6 -2
  51. package/utils/getTimeout.js.map +1 -1
  52. package/utils/isLockedFactory.d.ts +1 -1
  53. package/utils/isLockedFactory.js +1 -2
  54. package/utils/isLockedFactory.js.map +1 -1
package/crud/crud.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Context, IRecordLocking } from "../types";
2
2
  interface Params {
3
3
  context: Pick<Context, "plugins" | "cms" | "benchmark" | "security" | "websockets">;
4
+ timeout?: number;
4
5
  }
5
- export declare const createRecordLockingCrud: ({ context }: Params) => Promise<IRecordLocking>;
6
+ export declare const createRecordLockingCrud: (params: Params) => Promise<IRecordLocking>;
6
7
  export {};
package/crud/crud.js CHANGED
@@ -8,9 +8,14 @@ var _error = require("@webiny/error");
8
8
  var _model = require("./model");
9
9
  var _useCases = require("../useCases");
10
10
  var _pubsub = require("@webiny/pubsub");
11
- const createRecordLockingCrud = async ({
12
- context
13
- }) => {
11
+ var _getTimeout = require("../utils/getTimeout");
12
+ const createRecordLockingCrud = async params => {
13
+ const {
14
+ context
15
+ } = params;
16
+ const getTimeout = () => {
17
+ return (0, _getTimeout.getTimeout)(params.timeout);
18
+ };
14
19
  const getModel = async () => {
15
20
  const model = await context.cms.getModel(_model.RECORD_LOCKING_MODEL_ID);
16
21
  if (model) {
@@ -34,8 +39,13 @@ const createRecordLockingCrud = async ({
34
39
  type: identity.type
35
40
  };
36
41
  };
37
- const hasFullAccess = async () => {
38
- return await context.security.hasFullAccess();
42
+ const hasRecordLockingAccess = async () => {
43
+ const hasFulLAccess = await context.security.hasFullAccess();
44
+ if (hasFulLAccess) {
45
+ return true;
46
+ }
47
+ const permission = await context.security.getPermission("recordLocking");
48
+ return permission?.canForceUnlock === "yes";
39
49
  };
40
50
  const onEntryBeforeLock = (0, _pubsub.createTopic)("cms.recordLocking.onEntryBeforeLock");
41
51
  const onEntryAfterLock = (0, _pubsub.createTopic)("cms.recordLocking.onEntryAfterLock");
@@ -62,8 +72,9 @@ const createRecordLockingCrud = async ({
62
72
  } = (0, _useCases.createUseCases)({
63
73
  getIdentity,
64
74
  getManager,
65
- hasFullAccess,
66
- getWebsockets
75
+ hasRecordLockingAccess,
76
+ getWebsockets,
77
+ getTimeout
67
78
  });
68
79
  const listAllLockRecords = async params => {
69
80
  return context.benchmark.measure("recordLocking.listAllLockRecords", async () => {
@@ -180,7 +191,8 @@ const createRecordLockingCrud = async ({
180
191
  lockEntry,
181
192
  updateEntryLock,
182
193
  unlockEntry,
183
- unlockEntryRequest
194
+ unlockEntryRequest,
195
+ getTimeout
184
196
  };
185
197
  };
186
198
  exports.createRecordLockingCrud = createRecordLockingCrud;
package/crud/crud.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_error","require","_model","_useCases","_pubsub","createRecordLockingCrud","context","getModel","model","cms","RECORD_LOCKING_MODEL_ID","WebinyError","modelId","getManager","getEntryManager","getIdentity","identity","security","id","displayName","type","hasFullAccess","onEntryBeforeLock","createTopic","onEntryAfterLock","onEntryLockError","onEntryBeforeUnlock","onEntryAfterUnlock","onEntryUnlockError","onEntryBeforeUnlockRequest","onEntryAfterUnlockRequest","onEntryUnlockRequestError","getWebsockets","websockets","listLockRecordsUseCase","listAllLockRecordsUseCase","getLockRecordUseCase","isEntryLockedUseCase","getLockedEntryLockRecordUseCase","lockEntryUseCase","updateEntryLockUseCase","unlockEntryUseCase","unlockEntryRequestUseCase","createUseCases","listAllLockRecords","params","benchmark","measure","execute","listLockRecords","getLockRecord","isEntryLocked","getLockedEntryLockRecord","lockEntry","publish","record","ex","error","updateEntryLock","unlockEntry","unlockEntryRequest","exports"],"sources":["crud.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport {\n Context,\n IGetIdentity,\n IGetWebsocketsContextCallable,\n IHasFullAccessCallable,\n IRecordLocking,\n IRecordLockingLockRecordValues,\n IRecordLockingModelManager,\n OnEntryAfterLockTopicParams,\n OnEntryAfterUnlockRequestTopicParams,\n OnEntryAfterUnlockTopicParams,\n OnEntryBeforeLockTopicParams,\n OnEntryBeforeUnlockRequestTopicParams,\n OnEntryBeforeUnlockTopicParams,\n OnEntryLockErrorTopicParams,\n OnEntryUnlockErrorTopicParams,\n OnEntryUnlockRequestErrorTopicParams\n} from \"~/types\";\nimport { RECORD_LOCKING_MODEL_ID } from \"./model\";\nimport { IGetLockRecordUseCaseExecute } from \"~/abstractions/IGetLockRecordUseCase\";\nimport { IIsEntryLockedUseCaseExecute } from \"~/abstractions/IIsEntryLocked\";\nimport { ILockEntryUseCaseExecute } from \"~/abstractions/ILockEntryUseCase\";\nimport { IUnlockEntryUseCaseExecute } from \"~/abstractions/IUnlockEntryUseCase\";\nimport { createUseCases } from \"~/useCases\";\nimport { IUnlockEntryRequestUseCaseExecute } from \"~/abstractions/IUnlockEntryRequestUseCase\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { IListAllLockRecordsUseCaseExecute } from \"~/abstractions/IListAllLockRecordsUseCase\";\nimport { IListLockRecordsUseCaseExecute } from \"~/abstractions/IListLockRecordsUseCase\";\nimport { IUpdateEntryLockUseCaseExecute } from \"~/abstractions/IUpdateEntryLockUseCase\";\nimport { IGetLockedEntryLockRecordUseCaseExecute } from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\n\ninterface Params {\n context: Pick<Context, \"plugins\" | \"cms\" | \"benchmark\" | \"security\" | \"websockets\">;\n}\n\nexport const createRecordLockingCrud = async ({ context }: Params): Promise<IRecordLocking> => {\n const getModel = async () => {\n const model = await context.cms.getModel(RECORD_LOCKING_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(\"Record Locking model not found.\", \"MODEL_NOT_FOUND\", {\n modelId: RECORD_LOCKING_MODEL_ID\n });\n };\n\n const getManager = async (): Promise<IRecordLockingModelManager> => {\n return await context.cms.getEntryManager<IRecordLockingLockRecordValues>(\n RECORD_LOCKING_MODEL_ID\n );\n };\n\n const getIdentity: IGetIdentity = () => {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new WebinyError(\"Identity missing.\");\n }\n return {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n };\n\n const hasFullAccess: IHasFullAccessCallable = async () => {\n return await context.security.hasFullAccess();\n };\n\n const onEntryBeforeLock = createTopic<OnEntryBeforeLockTopicParams>(\n \"cms.recordLocking.onEntryBeforeLock\"\n );\n const onEntryAfterLock = createTopic<OnEntryAfterLockTopicParams>(\n \"cms.recordLocking.onEntryAfterLock\"\n );\n const onEntryLockError = createTopic<OnEntryLockErrorTopicParams>(\n \"cms.recordLocking.onEntryLockError\"\n );\n\n const onEntryBeforeUnlock = createTopic<OnEntryBeforeUnlockTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlock\"\n );\n const onEntryAfterUnlock = createTopic<OnEntryAfterUnlockTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlock\"\n );\n const onEntryUnlockError = createTopic<OnEntryUnlockErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockError\"\n );\n\n const onEntryBeforeUnlockRequest = createTopic<OnEntryBeforeUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlockRequest\"\n );\n const onEntryAfterUnlockRequest = createTopic<OnEntryAfterUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlockRequest\"\n );\n const onEntryUnlockRequestError = createTopic<OnEntryUnlockRequestErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockRequestError\"\n );\n\n const getWebsockets: IGetWebsocketsContextCallable = () => {\n return context.websockets;\n };\n\n const {\n listLockRecordsUseCase,\n listAllLockRecordsUseCase,\n getLockRecordUseCase,\n isEntryLockedUseCase,\n getLockedEntryLockRecordUseCase,\n lockEntryUseCase,\n updateEntryLockUseCase,\n unlockEntryUseCase,\n unlockEntryRequestUseCase\n } = createUseCases({\n getIdentity,\n getManager,\n hasFullAccess,\n getWebsockets\n });\n\n const listAllLockRecords: IListAllLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listAllLockRecords\", async () => {\n return listAllLockRecordsUseCase.execute(params);\n });\n };\n\n const listLockRecords: IListLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listLockRecords\", async () => {\n return listLockRecordsUseCase.execute(params);\n });\n };\n\n const getLockRecord: IGetLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockRecord\", async () => {\n return getLockRecordUseCase.execute(params);\n });\n };\n\n const isEntryLocked: IIsEntryLockedUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.isEntryLocked\", async () => {\n return isEntryLockedUseCase.execute(params);\n });\n };\n\n const getLockedEntryLockRecord: IGetLockedEntryLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockedEntryLockRecord\", async () => {\n return getLockedEntryLockRecordUseCase.execute(params);\n });\n };\n\n const lockEntry: ILockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.lockEntry\", async () => {\n try {\n await onEntryBeforeLock.publish(params);\n const record = await lockEntryUseCase.execute(params);\n await onEntryAfterLock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryLockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const updateEntryLock: IUpdateEntryLockUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.updateEntryLock\", async () => {\n return updateEntryLockUseCase.execute(params);\n });\n };\n\n const unlockEntry: IUnlockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntry\", async () => {\n try {\n await onEntryBeforeUnlock.publish({\n ...params,\n getIdentity\n });\n const record = await unlockEntryUseCase.execute(params);\n await onEntryAfterUnlock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const unlockEntryRequest: IUnlockEntryRequestUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntryRequest\", async () => {\n try {\n await onEntryBeforeUnlockRequest.publish(params);\n const record = await unlockEntryRequestUseCase.execute(params);\n await onEntryAfterUnlockRequest.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockRequestError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n return {\n /**\n * Lifecycle events\n */\n onEntryBeforeLock,\n onEntryAfterLock,\n onEntryLockError,\n onEntryBeforeUnlock,\n onEntryAfterUnlock,\n onEntryUnlockError,\n onEntryBeforeUnlockRequest,\n onEntryAfterUnlockRequest,\n onEntryUnlockRequestError,\n /**\n * Methods\n */\n getModel,\n listLockRecords,\n listAllLockRecords,\n getLockRecord,\n isEntryLocked,\n getLockedEntryLockRecord,\n lockEntry,\n updateEntryLock,\n unlockEntry,\n unlockEntryRequest\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_error","require","_model","_useCases","_pubsub","_getTimeout","createRecordLockingCrud","params","context","getTimeout","baseGetTimeout","timeout","getModel","model","cms","RECORD_LOCKING_MODEL_ID","WebinyError","modelId","getManager","getEntryManager","getIdentity","identity","security","id","displayName","type","hasRecordLockingAccess","hasFulLAccess","hasFullAccess","permission","getPermission","canForceUnlock","onEntryBeforeLock","createTopic","onEntryAfterLock","onEntryLockError","onEntryBeforeUnlock","onEntryAfterUnlock","onEntryUnlockError","onEntryBeforeUnlockRequest","onEntryAfterUnlockRequest","onEntryUnlockRequestError","getWebsockets","websockets","listLockRecordsUseCase","listAllLockRecordsUseCase","getLockRecordUseCase","isEntryLockedUseCase","getLockedEntryLockRecordUseCase","lockEntryUseCase","updateEntryLockUseCase","unlockEntryUseCase","unlockEntryRequestUseCase","createUseCases","listAllLockRecords","benchmark","measure","execute","listLockRecords","getLockRecord","isEntryLocked","getLockedEntryLockRecord","lockEntry","publish","record","ex","error","updateEntryLock","unlockEntry","unlockEntryRequest","exports"],"sources":["crud.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport {\n Context,\n IGetIdentity,\n IGetWebsocketsContextCallable,\n IHasRecordLockingAccessCallable,\n IRecordLocking,\n IRecordLockingLockRecordValues,\n IRecordLockingModelManager,\n OnEntryAfterLockTopicParams,\n OnEntryAfterUnlockRequestTopicParams,\n OnEntryAfterUnlockTopicParams,\n OnEntryBeforeLockTopicParams,\n OnEntryBeforeUnlockRequestTopicParams,\n OnEntryBeforeUnlockTopicParams,\n OnEntryLockErrorTopicParams,\n OnEntryUnlockErrorTopicParams,\n OnEntryUnlockRequestErrorTopicParams,\n RecordLockingSecurityPermission\n} from \"~/types\";\nimport { RECORD_LOCKING_MODEL_ID } from \"./model\";\nimport { IGetLockRecordUseCaseExecute } from \"~/abstractions/IGetLockRecordUseCase\";\nimport { IIsEntryLockedUseCaseExecute } from \"~/abstractions/IIsEntryLocked\";\nimport { ILockEntryUseCaseExecute } from \"~/abstractions/ILockEntryUseCase\";\nimport { IUnlockEntryUseCaseExecute } from \"~/abstractions/IUnlockEntryUseCase\";\nimport { createUseCases } from \"~/useCases\";\nimport { IUnlockEntryRequestUseCaseExecute } from \"~/abstractions/IUnlockEntryRequestUseCase\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { IListAllLockRecordsUseCaseExecute } from \"~/abstractions/IListAllLockRecordsUseCase\";\nimport { IListLockRecordsUseCaseExecute } from \"~/abstractions/IListLockRecordsUseCase\";\nimport { IUpdateEntryLockUseCaseExecute } from \"~/abstractions/IUpdateEntryLockUseCase\";\nimport { IGetLockedEntryLockRecordUseCaseExecute } from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\nimport { getTimeout as baseGetTimeout } from \"~/utils/getTimeout\";\n\ninterface Params {\n context: Pick<Context, \"plugins\" | \"cms\" | \"benchmark\" | \"security\" | \"websockets\">;\n timeout?: number;\n}\n\nexport const createRecordLockingCrud = async (params: Params): Promise<IRecordLocking> => {\n const { context } = params;\n const getTimeout = (): number => {\n return baseGetTimeout(params.timeout);\n };\n const getModel = async () => {\n const model = await context.cms.getModel(RECORD_LOCKING_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(\"Record Locking model not found.\", \"MODEL_NOT_FOUND\", {\n modelId: RECORD_LOCKING_MODEL_ID\n });\n };\n\n const getManager = async (): Promise<IRecordLockingModelManager> => {\n return await context.cms.getEntryManager<IRecordLockingLockRecordValues>(\n RECORD_LOCKING_MODEL_ID\n );\n };\n\n const getIdentity: IGetIdentity = () => {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new WebinyError(\"Identity missing.\");\n }\n return {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n };\n\n const hasRecordLockingAccess: IHasRecordLockingAccessCallable = async () => {\n const hasFulLAccess = await context.security.hasFullAccess();\n if (hasFulLAccess) {\n return true;\n }\n const permission = await context.security.getPermission<RecordLockingSecurityPermission>(\n \"recordLocking\"\n );\n return permission?.canForceUnlock === \"yes\";\n };\n\n const onEntryBeforeLock = createTopic<OnEntryBeforeLockTopicParams>(\n \"cms.recordLocking.onEntryBeforeLock\"\n );\n const onEntryAfterLock = createTopic<OnEntryAfterLockTopicParams>(\n \"cms.recordLocking.onEntryAfterLock\"\n );\n const onEntryLockError = createTopic<OnEntryLockErrorTopicParams>(\n \"cms.recordLocking.onEntryLockError\"\n );\n\n const onEntryBeforeUnlock = createTopic<OnEntryBeforeUnlockTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlock\"\n );\n const onEntryAfterUnlock = createTopic<OnEntryAfterUnlockTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlock\"\n );\n const onEntryUnlockError = createTopic<OnEntryUnlockErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockError\"\n );\n\n const onEntryBeforeUnlockRequest = createTopic<OnEntryBeforeUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlockRequest\"\n );\n const onEntryAfterUnlockRequest = createTopic<OnEntryAfterUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlockRequest\"\n );\n const onEntryUnlockRequestError = createTopic<OnEntryUnlockRequestErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockRequestError\"\n );\n\n const getWebsockets: IGetWebsocketsContextCallable = () => {\n return context.websockets;\n };\n\n const {\n listLockRecordsUseCase,\n listAllLockRecordsUseCase,\n getLockRecordUseCase,\n isEntryLockedUseCase,\n getLockedEntryLockRecordUseCase,\n lockEntryUseCase,\n updateEntryLockUseCase,\n unlockEntryUseCase,\n unlockEntryRequestUseCase\n } = createUseCases({\n getIdentity,\n getManager,\n hasRecordLockingAccess,\n getWebsockets,\n getTimeout\n });\n\n const listAllLockRecords: IListAllLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listAllLockRecords\", async () => {\n return listAllLockRecordsUseCase.execute(params);\n });\n };\n\n const listLockRecords: IListLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listLockRecords\", async () => {\n return listLockRecordsUseCase.execute(params);\n });\n };\n\n const getLockRecord: IGetLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockRecord\", async () => {\n return getLockRecordUseCase.execute(params);\n });\n };\n\n const isEntryLocked: IIsEntryLockedUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.isEntryLocked\", async () => {\n return isEntryLockedUseCase.execute(params);\n });\n };\n\n const getLockedEntryLockRecord: IGetLockedEntryLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockedEntryLockRecord\", async () => {\n return getLockedEntryLockRecordUseCase.execute(params);\n });\n };\n\n const lockEntry: ILockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.lockEntry\", async () => {\n try {\n await onEntryBeforeLock.publish(params);\n const record = await lockEntryUseCase.execute(params);\n await onEntryAfterLock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryLockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const updateEntryLock: IUpdateEntryLockUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.updateEntryLock\", async () => {\n return updateEntryLockUseCase.execute(params);\n });\n };\n\n const unlockEntry: IUnlockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntry\", async () => {\n try {\n await onEntryBeforeUnlock.publish({\n ...params,\n getIdentity\n });\n const record = await unlockEntryUseCase.execute(params);\n await onEntryAfterUnlock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const unlockEntryRequest: IUnlockEntryRequestUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntryRequest\", async () => {\n try {\n await onEntryBeforeUnlockRequest.publish(params);\n const record = await unlockEntryRequestUseCase.execute(params);\n await onEntryAfterUnlockRequest.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockRequestError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n return {\n /**\n * Lifecycle events\n */\n onEntryBeforeLock,\n onEntryAfterLock,\n onEntryLockError,\n onEntryBeforeUnlock,\n onEntryAfterUnlock,\n onEntryUnlockError,\n onEntryBeforeUnlockRequest,\n onEntryAfterUnlockRequest,\n onEntryUnlockRequestError,\n /**\n * Methods\n */\n getModel,\n listLockRecords,\n listAllLockRecords,\n getLockRecord,\n isEntryLocked,\n getLockedEntryLockRecord,\n lockEntry,\n updateEntryLock,\n unlockEntry,\n unlockEntryRequest,\n getTimeout\n };\n};\n"],"mappings":"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","ignoreList":[]}
package/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
1
  import { ContextPlugin } from "@webiny/api";
2
2
  import { Context } from "./types";
3
- export declare const createRecordLocking: () => ContextPlugin<Context>[];
3
+ export interface ICreateContextPluginParams {
4
+ timeout?: number;
5
+ }
6
+ export declare const createRecordLocking: (params?: ICreateContextPluginParams) => ContextPlugin<Context>[];
package/index.js CHANGED
@@ -9,7 +9,7 @@ var _api = require("@webiny/api");
9
9
  var _crud = require("./crud/crud");
10
10
  var _model = require("./crud/model");
11
11
  var _apiHeadlessCms = require("@webiny/api-headless-cms");
12
- const createContextPlugin = () => {
12
+ const createContextPlugin = params => {
13
13
  const plugin = new _api.ContextPlugin(async context => {
14
14
  if (!context.wcp.canUseRecordLocking()) {
15
15
  return;
@@ -20,7 +20,8 @@ const createContextPlugin = () => {
20
20
  }
21
21
  context.plugins.register((0, _model.createLockingModel)());
22
22
  context.recordLocking = await (0, _crud.createRecordLockingCrud)({
23
- context
23
+ context,
24
+ timeout: params?.timeout
24
25
  });
25
26
  const graphQlPlugin = await (0, _schema.createGraphQLSchema)({
26
27
  context
@@ -30,8 +31,8 @@ const createContextPlugin = () => {
30
31
  plugin.name = "context.recordLocking";
31
32
  return plugin;
32
33
  };
33
- const createRecordLocking = () => {
34
- return [createContextPlugin()];
34
+ const createRecordLocking = params => {
35
+ return [createContextPlugin(params)];
35
36
  };
36
37
  exports.createRecordLocking = createRecordLocking;
37
38
 
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_schema","require","_api","_crud","_model","_apiHeadlessCms","createContextPlugin","plugin","ContextPlugin","context","wcp","canUseRecordLocking","ready","isHeadlessCmsReady","plugins","register","createLockingModel","recordLocking","createRecordLockingCrud","graphQlPlugin","createGraphQLSchema","name","createRecordLocking","exports"],"sources":["index.ts"],"sourcesContent":["import { createGraphQLSchema } from \"~/graphql/schema\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { Context } from \"~/types\";\nimport { createRecordLockingCrud } from \"~/crud/crud\";\nimport { createLockingModel } from \"~/crud/model\";\nimport { isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\n\nconst createContextPlugin = () => {\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 });\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 = () => {\n return [createContextPlugin()];\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;AAEA,MAAMK,mBAAmB,GAAGA,CAAA,KAAM;EAC9B,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;IACJ,CAAC,CAAC;IAEF,MAAMU,aAAa,GAAG,MAAM,IAAAC,2BAAmB,EAAC;MAAEX;IAAQ,CAAC,CAAC;IAC5DA,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACI,aAAa,CAAC;EAC3C,CAAC,CAAC;EACFZ,MAAM,CAACc,IAAI,GAAG,uBAAuB;EAErC,OAAOd,MAAM;AACjB,CAAC;AAEM,MAAMe,mBAAmB,GAAGA,CAAA,KAAM;EACrC,OAAO,CAAChB,mBAAmB,CAAC,CAAC,CAAC;AAClC,CAAC;AAACiB,OAAA,CAAAD,mBAAA,GAAAA,mBAAA","ignoreList":[]}
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 { 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 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;AAMA,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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-record-locking",
3
- "version": "5.42.1-beta.1",
3
+ "version": "5.42.1-beta.3",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,24 +12,24 @@
12
12
  ],
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@webiny/api": "5.42.1-beta.1",
16
- "@webiny/api-headless-cms": "5.42.1-beta.1",
17
- "@webiny/api-websockets": "5.42.1-beta.1",
18
- "@webiny/error": "5.42.1-beta.1",
19
- "@webiny/handler": "5.42.1-beta.1",
20
- "@webiny/handler-aws": "5.42.1-beta.1",
21
- "@webiny/handler-graphql": "5.42.1-beta.1",
22
- "@webiny/plugins": "5.42.1-beta.1",
23
- "@webiny/pubsub": "5.42.1-beta.1",
24
- "@webiny/utils": "5.42.1-beta.1"
15
+ "@webiny/api": "5.42.1-beta.3",
16
+ "@webiny/api-headless-cms": "5.42.1-beta.3",
17
+ "@webiny/api-websockets": "5.42.1-beta.3",
18
+ "@webiny/error": "5.42.1-beta.3",
19
+ "@webiny/handler": "5.42.1-beta.3",
20
+ "@webiny/handler-aws": "5.42.1-beta.3",
21
+ "@webiny/handler-graphql": "5.42.1-beta.3",
22
+ "@webiny/plugins": "5.42.1-beta.3",
23
+ "@webiny/pubsub": "5.42.1-beta.3",
24
+ "@webiny/utils": "5.42.1-beta.3"
25
25
  },
26
26
  "devDependencies": {
27
- "@webiny/api-i18n": "5.42.1-beta.1",
28
- "@webiny/api-security": "5.42.1-beta.1",
29
- "@webiny/api-tenancy": "5.42.1-beta.1",
30
- "@webiny/api-wcp": "5.42.1-beta.1",
31
- "@webiny/cli": "5.42.1-beta.1",
32
- "@webiny/project-utils": "5.42.1-beta.1",
27
+ "@webiny/api-i18n": "5.42.1-beta.3",
28
+ "@webiny/api-security": "5.42.1-beta.3",
29
+ "@webiny/api-tenancy": "5.42.1-beta.3",
30
+ "@webiny/api-wcp": "5.42.1-beta.3",
31
+ "@webiny/cli": "5.42.1-beta.3",
32
+ "@webiny/project-utils": "5.42.1-beta.3",
33
33
  "graphql": "15.9.0",
34
34
  "rimraf": "6.0.1",
35
35
  "ttypescript": "1.5.15",
@@ -44,5 +44,5 @@
44
44
  "build": "yarn webiny run build",
45
45
  "watch": "yarn webiny run watch"
46
46
  },
47
- "gitHead": "aa533cb9b24cfcd23c02f4ab64448082723d7dc1"
47
+ "gitHead": "f48143ded4859e333305e30d91b6e9df6692a9bf"
48
48
  }
package/types.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import { CmsContext, CmsEntry, CmsEntryListParams, CmsEntryMeta, CmsError, CmsIdentity, CmsModel, CmsModelManager } from "@webiny/api-headless-cms/types";
2
2
  import { Topic } from "@webiny/pubsub/types";
3
3
  import { Context as IWebsocketsContext, IWebsocketsContextObject } from "@webiny/api-websockets/types";
4
+ import { SecurityPermission } from "@webiny/api-security/types";
4
5
  export { CmsError, CmsEntry };
5
6
  export type IRecordLockingIdentity = CmsIdentity;
6
7
  export type IRecordLockingModelManager = CmsModelManager<IRecordLockingLockRecordValues>;
7
8
  export type IRecordLockingMeta = CmsEntryMeta;
8
- export interface IHasFullAccessCallable {
9
+ export interface IHasRecordLockingAccessCallable {
9
10
  (): Promise<boolean>;
10
11
  }
11
12
  export interface IGetWebsocketsContextCallable {
@@ -19,25 +20,25 @@ export interface IRecordLockingLockRecordValues {
19
20
  type: IRecordLockingLockRecordEntryType;
20
21
  actions?: IRecordLockingLockRecordAction[];
21
22
  }
22
- export declare enum IRecordLockingLockRecordActionType {
23
+ export declare enum RecordLockingLockRecordActionType {
23
24
  requested = "requested",
24
25
  approved = "approved",
25
26
  denied = "denied"
26
27
  }
27
28
  export interface IRecordLockingLockRecordRequestedAction {
28
- type: IRecordLockingLockRecordActionType.requested;
29
+ type: RecordLockingLockRecordActionType.requested;
29
30
  message?: string;
30
31
  createdOn: Date;
31
32
  createdBy: IRecordLockingIdentity;
32
33
  }
33
34
  export interface IRecordLockingLockRecordApprovedAction {
34
- type: IRecordLockingLockRecordActionType.approved;
35
+ type: RecordLockingLockRecordActionType.approved;
35
36
  message?: string;
36
37
  createdOn: Date;
37
38
  createdBy: IRecordLockingIdentity;
38
39
  }
39
40
  export interface IRecordLockingLockRecordDeniedAction {
40
- type: IRecordLockingLockRecordActionType.denied;
41
+ type: RecordLockingLockRecordActionType.denied;
41
42
  message?: string;
42
43
  createdOn: Date;
43
44
  createdBy: IRecordLockingIdentity;
@@ -144,6 +145,10 @@ export interface OnEntryUnlockRequestErrorTopicParams {
144
145
  error: CmsError;
145
146
  }
146
147
  export interface IRecordLocking {
148
+ /**
149
+ * In milliseconds.
150
+ */
151
+ getTimeout: () => number;
147
152
  onEntryBeforeLock: Topic<OnEntryBeforeLockTopicParams>;
148
153
  onEntryAfterLock: Topic<OnEntryAfterLockTopicParams>;
149
154
  onEntryLockError: Topic<OnEntryLockErrorTopicParams>;
@@ -170,3 +175,6 @@ export interface IRecordLocking {
170
175
  export interface Context extends CmsContext, IWebsocketsContext {
171
176
  recordLocking: IRecordLocking;
172
177
  }
178
+ export interface RecordLockingSecurityPermission extends SecurityPermission {
179
+ canForceUnlock?: string;
180
+ }
package/types.js CHANGED
@@ -15,13 +15,13 @@ Object.defineProperty(exports, "CmsError", {
15
15
  return _types.CmsError;
16
16
  }
17
17
  });
18
- exports.IRecordLockingLockRecordActionType = void 0;
18
+ exports.RecordLockingLockRecordActionType = void 0;
19
19
  var _types = require("@webiny/api-headless-cms/types");
20
- let IRecordLockingLockRecordActionType = exports.IRecordLockingLockRecordActionType = /*#__PURE__*/function (IRecordLockingLockRecordActionType) {
21
- IRecordLockingLockRecordActionType["requested"] = "requested";
22
- IRecordLockingLockRecordActionType["approved"] = "approved";
23
- IRecordLockingLockRecordActionType["denied"] = "denied";
24
- return IRecordLockingLockRecordActionType;
20
+ let RecordLockingLockRecordActionType = exports.RecordLockingLockRecordActionType = /*#__PURE__*/function (RecordLockingLockRecordActionType) {
21
+ RecordLockingLockRecordActionType["requested"] = "requested";
22
+ RecordLockingLockRecordActionType["approved"] = "approved";
23
+ RecordLockingLockRecordActionType["denied"] = "denied";
24
+ return RecordLockingLockRecordActionType;
25
25
  }({});
26
26
  /**
27
27
  * Do not use any special chars other than #, as we use this to create lock record IDs.
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","IRecordLockingLockRecordActionType","exports"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext,\n CmsEntry,\n CmsEntryListParams,\n CmsEntryMeta,\n CmsError,\n CmsIdentity,\n CmsModel,\n CmsModelManager\n} from \"@webiny/api-headless-cms/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport {\n Context as IWebsocketsContext,\n IWebsocketsContextObject\n} from \"@webiny/api-websockets/types\";\n\nexport { CmsError, CmsEntry };\n\nexport type IRecordLockingIdentity = CmsIdentity;\n\nexport type IRecordLockingModelManager = CmsModelManager<IRecordLockingLockRecordValues>;\n\nexport type IRecordLockingMeta = CmsEntryMeta;\n\nexport interface IHasFullAccessCallable {\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 IRecordLockingLockRecordActionType {\n requested = \"requested\",\n approved = \"approved\",\n denied = \"denied\"\n}\n\nexport interface IRecordLockingLockRecordRequestedAction {\n type: IRecordLockingLockRecordActionType.requested;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordApprovedAction {\n type: IRecordLockingLockRecordActionType.approved;\n message?: string;\n createdOn: Date;\n createdBy: IRecordLockingIdentity;\n}\n\nexport interface IRecordLockingLockRecordDeniedAction {\n type: IRecordLockingLockRecordActionType.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}\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 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"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AASwC,IAgC5BC,kCAAkC,GAAAC,OAAA,CAAAD,kCAAA,0BAAlCA,kCAAkC;EAAlCA,kCAAkC;EAAlCA,kCAAkC;EAAlCA,kCAAkC;EAAA,OAAlCA,kCAAkC;AAAA;AAmD9C;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","RecordLockingLockRecordActionType","exports"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext,\n CmsEntry,\n CmsEntryListParams,\n CmsEntryMeta,\n CmsError,\n CmsIdentity,\n CmsModel,\n CmsModelManager\n} from \"@webiny/api-headless-cms/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport {\n Context as IWebsocketsContext,\n IWebsocketsContextObject\n} from \"@webiny/api-websockets/types\";\nimport { 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}\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":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AASwC,IAiC5BC,iCAAiC,GAAAC,OAAA,CAAAD,iCAAA,0BAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAjCA,iCAAiC;EAAA,OAAjCA,iCAAiC;AAAA;AAmD7C;AACA;AACA","ignoreList":[]}
@@ -1,10 +1,13 @@
1
- import { IGetLockRecordUseCase, IGetLockRecordUseCaseExecuteParams } from "../../abstractions/IGetLockRecordUseCase";
2
- import { IRecordLockingModelManager, IRecordLockingLockRecord } from "../../types";
1
+ import type { IGetLockRecordUseCase, IGetLockRecordUseCaseExecuteParams } from "../../abstractions/IGetLockRecordUseCase";
2
+ import type { IRecordLockingLockRecord, IRecordLockingModelManager } from "../../types";
3
+ import type { ConvertEntryToLockRecordCb } from "../types";
3
4
  export interface IGetLockRecordUseCaseParams {
4
5
  getManager(): Promise<IRecordLockingModelManager>;
6
+ convert: ConvertEntryToLockRecordCb;
5
7
  }
6
8
  export declare class GetLockRecordUseCase implements IGetLockRecordUseCase {
7
9
  private readonly getManager;
10
+ private readonly convert;
8
11
  constructor(params: IGetLockRecordUseCaseParams);
9
12
  execute(input: IGetLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;
10
13
  }
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.GetLockRecordUseCase = void 0;
7
7
  var _handlerGraphql = require("@webiny/handler-graphql");
8
- var _convertEntryToLockRecord = require("../../utils/convertEntryToLockRecord");
9
8
  var _lockRecordDatabaseId = require("../../utils/lockRecordDatabaseId");
10
9
  var _utils = require("@webiny/utils");
11
10
  class GetLockRecordUseCase {
12
11
  constructor(params) {
13
12
  this.getManager = params.getManager;
13
+ this.convert = params.convert;
14
14
  }
15
15
  async execute(input) {
16
16
  const recordId = (0, _lockRecordDatabaseId.createLockRecordDatabaseId)(input.id);
@@ -21,7 +21,7 @@ class GetLockRecordUseCase {
21
21
  try {
22
22
  const manager = await this.getManager();
23
23
  const result = await manager.get(id);
24
- return (0, _convertEntryToLockRecord.convertEntryToLockRecord)(result);
24
+ return this.convert(result);
25
25
  } catch (ex) {
26
26
  if (ex instanceof _handlerGraphql.NotFoundError) {
27
27
  return null;
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerGraphql","require","_convertEntryToLockRecord","_lockRecordDatabaseId","_utils","GetLockRecordUseCase","constructor","params","getManager","execute","input","recordId","createLockRecordDatabaseId","id","createIdentifier","version","manager","result","get","convertEntryToLockRecord","ex","NotFoundError","exports"],"sources":["GetLockRecordUseCase.ts"],"sourcesContent":["import {\n IGetLockRecordUseCase,\n IGetLockRecordUseCaseExecuteParams\n} from \"~/abstractions/IGetLockRecordUseCase\";\nimport { IRecordLockingModelManager, IRecordLockingLockRecord } from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { convertEntryToLockRecord } from \"~/utils/convertEntryToLockRecord\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId\";\nimport { createIdentifier } from \"@webiny/utils\";\n\nexport interface IGetLockRecordUseCaseParams {\n getManager(): Promise<IRecordLockingModelManager>;\n}\n\nexport class GetLockRecordUseCase implements IGetLockRecordUseCase {\n private readonly getManager: IGetLockRecordUseCaseParams[\"getManager\"];\n\n public constructor(params: IGetLockRecordUseCaseParams) {\n this.getManager = params.getManager;\n }\n\n public async execute(\n input: IGetLockRecordUseCaseExecuteParams\n ): Promise<IRecordLockingLockRecord | null> {\n const recordId = createLockRecordDatabaseId(input.id);\n const id = createIdentifier({\n id: recordId,\n version: 1\n });\n try {\n const manager = await this.getManager();\n const result = await manager.get(id);\n return convertEntryToLockRecord(result);\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,qBAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAMO,MAAMI,oBAAoB,CAAkC;EAGxDC,WAAWA,CAACC,MAAmC,EAAE;IACpD,IAAI,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU;EACvC;EAEA,MAAaC,OAAOA,CAChBC,KAAyC,EACD;IACxC,MAAMC,QAAQ,GAAG,IAAAC,gDAA0B,EAACF,KAAK,CAACG,EAAE,CAAC;IACrD,MAAMA,EAAE,GAAG,IAAAC,uBAAgB,EAAC;MACxBD,EAAE,EAAEF,QAAQ;MACZI,OAAO,EAAE;IACb,CAAC,CAAC;IACF,IAAI;MACA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACR,UAAU,CAAC,CAAC;MACvC,MAAMS,MAAM,GAAG,MAAMD,OAAO,CAACE,GAAG,CAACL,EAAE,CAAC;MACpC,OAAO,IAAAM,kDAAwB,EAACF,MAAM,CAAC;IAC3C,CAAC,CAAC,OAAOG,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,EAAE;QAC7B,OAAO,IAAI;MACf;MACA,MAAMD,EAAE;IACZ;EACJ;AACJ;AAACE,OAAA,CAAAjB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_handlerGraphql","require","_lockRecordDatabaseId","_utils","GetLockRecordUseCase","constructor","params","getManager","convert","execute","input","recordId","createLockRecordDatabaseId","id","createIdentifier","version","manager","result","get","ex","NotFoundError","exports"],"sources":["GetLockRecordUseCase.ts"],"sourcesContent":["import type {\n IGetLockRecordUseCase,\n IGetLockRecordUseCaseExecuteParams\n} from \"~/abstractions/IGetLockRecordUseCase\";\nimport type { IRecordLockingLockRecord, IRecordLockingModelManager } from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId\";\nimport { createIdentifier } from \"@webiny/utils\";\nimport type { ConvertEntryToLockRecordCb } from \"~/useCases/types\";\n\nexport interface IGetLockRecordUseCaseParams {\n getManager(): Promise<IRecordLockingModelManager>;\n convert: ConvertEntryToLockRecordCb;\n}\n\nexport class GetLockRecordUseCase implements IGetLockRecordUseCase {\n private readonly getManager: IGetLockRecordUseCaseParams[\"getManager\"];\n private readonly convert: ConvertEntryToLockRecordCb;\n\n public constructor(params: IGetLockRecordUseCaseParams) {\n this.getManager = params.getManager;\n this.convert = params.convert;\n }\n\n public async execute(\n input: IGetLockRecordUseCaseExecuteParams\n ): Promise<IRecordLockingLockRecord | null> {\n const recordId = createLockRecordDatabaseId(input.id);\n const id = createIdentifier({\n id: recordId,\n version: 1\n });\n try {\n const manager = await this.getManager();\n const result = await manager.get(id);\n return this.convert(result);\n } catch (ex) {\n if (ex instanceof NotFoundError) {\n return null;\n }\n throw ex;\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAQO,MAAMG,oBAAoB,CAAkC;EAIxDC,WAAWA,CAACC,MAAmC,EAAE;IACpD,IAAI,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU;IACnC,IAAI,CAACC,OAAO,GAAGF,MAAM,CAACE,OAAO;EACjC;EAEA,MAAaC,OAAOA,CAChBC,KAAyC,EACD;IACxC,MAAMC,QAAQ,GAAG,IAAAC,gDAA0B,EAACF,KAAK,CAACG,EAAE,CAAC;IACrD,MAAMA,EAAE,GAAG,IAAAC,uBAAgB,EAAC;MACxBD,EAAE,EAAEF,QAAQ;MACZI,OAAO,EAAE;IACb,CAAC,CAAC;IACF,IAAI;MACA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACT,UAAU,CAAC,CAAC;MACvC,MAAMU,MAAM,GAAG,MAAMD,OAAO,CAACE,GAAG,CAACL,EAAE,CAAC;MACpC,OAAO,IAAI,CAACL,OAAO,CAACS,MAAM,CAAC;IAC/B,CAAC,CAAC,OAAOE,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,EAAE;QAC7B,OAAO,IAAI;MACf;MACA,MAAMD,EAAE;IACZ;EACJ;AACJ;AAACE,OAAA,CAAAjB,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { IGetLockRecordUseCase } from "../../abstractions/IGetLockRecordUseCase";
2
- import { IGetIdentity, IRecordLockingLockRecord } from "../../types";
3
- import { IGetLockedEntryLockRecordUseCase, IGetLockedEntryLockRecordUseCaseExecuteParams } from "../../abstractions/IGetLockedEntryLockRecordUseCase";
4
- import { IIsLocked } from "../../utils/isLockedFactory";
1
+ import type { IGetLockRecordUseCase } from "../../abstractions/IGetLockRecordUseCase";
2
+ import type { IGetIdentity, IRecordLockingLockRecord } from "../../types";
3
+ import type { IGetLockedEntryLockRecordUseCase, IGetLockedEntryLockRecordUseCaseExecuteParams } from "../../abstractions/IGetLockedEntryLockRecordUseCase";
4
+ import type { IIsLocked } from "../../utils/isLockedFactory";
5
5
  export interface IGetLockedEntryLockRecordUseCaseParams {
6
6
  getLockRecordUseCase: IGetLockRecordUseCase;
7
7
  isLocked: IIsLocked;
@@ -1 +1 @@
1
- {"version":3,"names":["GetLockedEntryLockRecordUseCase","constructor","params","getLockRecordUseCase","isLocked","getIdentity","execute","result","lockedBy","identity","id","exports"],"sources":["GetLockedEntryLockRecordUseCase.ts"],"sourcesContent":["import { IGetLockRecordUseCase } from \"~/abstractions/IGetLockRecordUseCase\";\nimport { IGetIdentity, IRecordLockingLockRecord } from \"~/types\";\nimport {\n IGetLockedEntryLockRecordUseCase,\n IGetLockedEntryLockRecordUseCaseExecuteParams\n} from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\nimport { IIsLocked } from \"~/utils/isLockedFactory\";\n\nexport interface IGetLockedEntryLockRecordUseCaseParams {\n getLockRecordUseCase: IGetLockRecordUseCase;\n isLocked: IIsLocked;\n getIdentity: IGetIdentity;\n}\n\nexport class GetLockedEntryLockRecordUseCase implements IGetLockedEntryLockRecordUseCase {\n private readonly getLockRecordUseCase: IGetLockRecordUseCase;\n private readonly isLocked: IIsLocked;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IGetLockedEntryLockRecordUseCaseParams) {\n this.getLockRecordUseCase = params.getLockRecordUseCase;\n this.isLocked = params.isLocked;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(\n params: IGetLockedEntryLockRecordUseCaseExecuteParams\n ): Promise<IRecordLockingLockRecord | null> {\n const result = await this.getLockRecordUseCase.execute(params);\n if (!result?.lockedBy) {\n return null;\n }\n const identity = this.getIdentity();\n if (identity.id === result.lockedBy.id) {\n return null;\n }\n return this.isLocked(result) ? result : null;\n }\n}\n"],"mappings":";;;;;;AAcO,MAAMA,+BAA+B,CAA6C;EAK9EC,WAAWA,CAACC,MAA8C,EAAE;IAC/D,IAAI,CAACC,oBAAoB,GAAGD,MAAM,CAACC,oBAAoB;IACvD,IAAI,CAACC,QAAQ,GAAGF,MAAM,CAACE,QAAQ;IAC/B,IAAI,CAACC,WAAW,GAAGH,MAAM,CAACG,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAChBJ,MAAqD,EACb;IACxC,MAAMK,MAAM,GAAG,MAAM,IAAI,CAACJ,oBAAoB,CAACG,OAAO,CAACJ,MAAM,CAAC;IAC9D,IAAI,CAACK,MAAM,EAAEC,QAAQ,EAAE;MACnB,OAAO,IAAI;IACf;IACA,MAAMC,QAAQ,GAAG,IAAI,CAACJ,WAAW,CAAC,CAAC;IACnC,IAAII,QAAQ,CAACC,EAAE,KAAKH,MAAM,CAACC,QAAQ,CAACE,EAAE,EAAE;MACpC,OAAO,IAAI;IACf;IACA,OAAO,IAAI,CAACN,QAAQ,CAACG,MAAM,CAAC,GAAGA,MAAM,GAAG,IAAI;EAChD;AACJ;AAACI,OAAA,CAAAX,+BAAA,GAAAA,+BAAA","ignoreList":[]}
1
+ {"version":3,"names":["GetLockedEntryLockRecordUseCase","constructor","params","getLockRecordUseCase","isLocked","getIdentity","execute","result","lockedBy","identity","id","exports"],"sources":["GetLockedEntryLockRecordUseCase.ts"],"sourcesContent":["import type { IGetLockRecordUseCase } from \"~/abstractions/IGetLockRecordUseCase\";\nimport type { IGetIdentity, IRecordLockingLockRecord } from \"~/types\";\nimport type {\n IGetLockedEntryLockRecordUseCase,\n IGetLockedEntryLockRecordUseCaseExecuteParams\n} from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\nimport type { IIsLocked } from \"~/utils/isLockedFactory\";\n\nexport interface IGetLockedEntryLockRecordUseCaseParams {\n getLockRecordUseCase: IGetLockRecordUseCase;\n isLocked: IIsLocked;\n getIdentity: IGetIdentity;\n}\n\nexport class GetLockedEntryLockRecordUseCase implements IGetLockedEntryLockRecordUseCase {\n private readonly getLockRecordUseCase: IGetLockRecordUseCase;\n private readonly isLocked: IIsLocked;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IGetLockedEntryLockRecordUseCaseParams) {\n this.getLockRecordUseCase = params.getLockRecordUseCase;\n this.isLocked = params.isLocked;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(\n params: IGetLockedEntryLockRecordUseCaseExecuteParams\n ): Promise<IRecordLockingLockRecord | null> {\n const result = await this.getLockRecordUseCase.execute(params);\n if (!result?.lockedBy) {\n return null;\n }\n const identity = this.getIdentity();\n if (identity.id === result.lockedBy.id) {\n return null;\n }\n return this.isLocked(result) ? result : null;\n }\n}\n"],"mappings":";;;;;;AAcO,MAAMA,+BAA+B,CAA6C;EAK9EC,WAAWA,CAACC,MAA8C,EAAE;IAC/D,IAAI,CAACC,oBAAoB,GAAGD,MAAM,CAACC,oBAAoB;IACvD,IAAI,CAACC,QAAQ,GAAGF,MAAM,CAACE,QAAQ;IAC/B,IAAI,CAACC,WAAW,GAAGH,MAAM,CAACG,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAChBJ,MAAqD,EACb;IACxC,MAAMK,MAAM,GAAG,MAAM,IAAI,CAACJ,oBAAoB,CAACG,OAAO,CAACJ,MAAM,CAAC;IAC9D,IAAI,CAACK,MAAM,EAAEC,QAAQ,EAAE;MACnB,OAAO,IAAI;IACf;IACA,MAAMC,QAAQ,GAAG,IAAI,CAACJ,WAAW,CAAC,CAAC;IACnC,IAAII,QAAQ,CAACC,EAAE,KAAKH,MAAM,CAACC,QAAQ,CAACE,EAAE,EAAE;MACpC,OAAO,IAAI;IACf;IACA,OAAO,IAAI,CAACN,QAAQ,CAACG,MAAM,CAAC,GAAGA,MAAM,GAAG,IAAI;EAChD;AACJ;AAACI,OAAA,CAAAX,+BAAA,GAAAA,+BAAA","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { IIsEntryLockedUseCase, IIsEntryLockedUseCaseExecuteParams } from "../../abstractions/IIsEntryLocked";
2
- import { IGetLockRecordUseCase } from "../../abstractions/IGetLockRecordUseCase";
3
- import { IIsLocked } from "../../utils/isLockedFactory";
4
- import { IGetIdentity } from "../../types";
1
+ import type { IIsEntryLockedUseCase, IIsEntryLockedUseCaseExecuteParams } from "../../abstractions/IIsEntryLocked";
2
+ import type { IGetLockRecordUseCase } from "../../abstractions/IGetLockRecordUseCase";
3
+ import type { IIsLocked } from "../../utils/isLockedFactory";
4
+ import type { IGetIdentity } from "../../types";
5
5
  export interface IIsEntryLockedParams {
6
6
  getLockRecordUseCase: IGetLockRecordUseCase;
7
7
  isLocked: IIsLocked;
@@ -1 +1 @@
1
- {"version":3,"names":["_handlerGraphql","require","IsEntryLockedUseCase","constructor","params","getLockRecordUseCase","isLocked","getIdentity","execute","result","identity","lockedBy","id","ex","NotFoundError","exports"],"sources":["IsEntryLockedUseCase.ts"],"sourcesContent":["import {\n IIsEntryLockedUseCase,\n IIsEntryLockedUseCaseExecuteParams\n} from \"~/abstractions/IIsEntryLocked\";\nimport { IGetLockRecordUseCase } from \"~/abstractions/IGetLockRecordUseCase\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { IIsLocked } from \"~/utils/isLockedFactory\";\nimport { IGetIdentity } from \"~/types\";\n\nexport interface IIsEntryLockedParams {\n getLockRecordUseCase: IGetLockRecordUseCase;\n isLocked: IIsLocked;\n getIdentity: IGetIdentity;\n}\n\nexport class IsEntryLockedUseCase implements IIsEntryLockedUseCase {\n private readonly getLockRecordUseCase: IGetLockRecordUseCase;\n private readonly isLocked: IIsLocked;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IIsEntryLockedParams) {\n this.getLockRecordUseCase = params.getLockRecordUseCase;\n this.isLocked = params.isLocked;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(params: IIsEntryLockedUseCaseExecuteParams): Promise<boolean> {\n try {\n const result = await this.getLockRecordUseCase.execute(params);\n if (!result) {\n return false;\n }\n const identity = this.getIdentity();\n if (result.lockedBy.id === identity.id) {\n return false;\n }\n\n return this.isLocked(result);\n } catch (ex) {\n if (ex instanceof NotFoundError === false) {\n throw ex;\n }\n return false;\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,eAAA,GAAAC,OAAA;AAUO,MAAMC,oBAAoB,CAAkC;EAKxDC,WAAWA,CAACC,MAA4B,EAAE;IAC7C,IAAI,CAACC,oBAAoB,GAAGD,MAAM,CAACC,oBAAoB;IACvD,IAAI,CAACC,QAAQ,GAAGF,MAAM,CAACE,QAAQ;IAC/B,IAAI,CAACC,WAAW,GAAGH,MAAM,CAACG,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAACJ,MAA0C,EAAoB;IAC/E,IAAI;MACA,MAAMK,MAAM,GAAG,MAAM,IAAI,CAACJ,oBAAoB,CAACG,OAAO,CAACJ,MAAM,CAAC;MAC9D,IAAI,CAACK,MAAM,EAAE;QACT,OAAO,KAAK;MAChB;MACA,MAAMC,QAAQ,GAAG,IAAI,CAACH,WAAW,CAAC,CAAC;MACnC,IAAIE,MAAM,CAACE,QAAQ,CAACC,EAAE,KAAKF,QAAQ,CAACE,EAAE,EAAE;QACpC,OAAO,KAAK;MAChB;MAEA,OAAO,IAAI,CAACN,QAAQ,CAACG,MAAM,CAAC;IAChC,CAAC,CAAC,OAAOI,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,KAAK,KAAK,EAAE;QACvC,MAAMD,EAAE;MACZ;MACA,OAAO,KAAK;IAChB;EACJ;AACJ;AAACE,OAAA,CAAAb,oBAAA,GAAAA,oBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_handlerGraphql","require","IsEntryLockedUseCase","constructor","params","getLockRecordUseCase","isLocked","getIdentity","execute","result","identity","lockedBy","id","ex","NotFoundError","exports"],"sources":["IsEntryLockedUseCase.ts"],"sourcesContent":["import type {\n IIsEntryLockedUseCase,\n IIsEntryLockedUseCaseExecuteParams\n} from \"~/abstractions/IIsEntryLocked\";\nimport type { IGetLockRecordUseCase } from \"~/abstractions/IGetLockRecordUseCase\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport type { IIsLocked } from \"~/utils/isLockedFactory\";\nimport type { IGetIdentity } from \"~/types\";\n\nexport interface IIsEntryLockedParams {\n getLockRecordUseCase: IGetLockRecordUseCase;\n isLocked: IIsLocked;\n getIdentity: IGetIdentity;\n}\n\nexport class IsEntryLockedUseCase implements IIsEntryLockedUseCase {\n private readonly getLockRecordUseCase: IGetLockRecordUseCase;\n private readonly isLocked: IIsLocked;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IIsEntryLockedParams) {\n this.getLockRecordUseCase = params.getLockRecordUseCase;\n this.isLocked = params.isLocked;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(params: IIsEntryLockedUseCaseExecuteParams): Promise<boolean> {\n try {\n const result = await this.getLockRecordUseCase.execute(params);\n if (!result) {\n return false;\n }\n const identity = this.getIdentity();\n if (result.lockedBy.id === identity.id) {\n return false;\n }\n\n return this.isLocked(result);\n } catch (ex) {\n if (ex instanceof NotFoundError === false) {\n throw ex;\n }\n return false;\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,eAAA,GAAAC,OAAA;AAUO,MAAMC,oBAAoB,CAAkC;EAKxDC,WAAWA,CAACC,MAA4B,EAAE;IAC7C,IAAI,CAACC,oBAAoB,GAAGD,MAAM,CAACC,oBAAoB;IACvD,IAAI,CAACC,QAAQ,GAAGF,MAAM,CAACE,QAAQ;IAC/B,IAAI,CAACC,WAAW,GAAGH,MAAM,CAACG,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAACJ,MAA0C,EAAoB;IAC/E,IAAI;MACA,MAAMK,MAAM,GAAG,MAAM,IAAI,CAACJ,oBAAoB,CAACG,OAAO,CAACJ,MAAM,CAAC;MAC9D,IAAI,CAACK,MAAM,EAAE;QACT,OAAO,KAAK;MAChB;MACA,MAAMC,QAAQ,GAAG,IAAI,CAACH,WAAW,CAAC,CAAC;MACnC,IAAIE,MAAM,CAACE,QAAQ,CAACC,EAAE,KAAKF,QAAQ,CAACE,EAAE,EAAE;QACpC,OAAO,KAAK;MAChB;MAEA,OAAO,IAAI,CAACN,QAAQ,CAACG,MAAM,CAAC;IAChC,CAAC,CAAC,OAAOI,EAAE,EAAE;MACT,IAAIA,EAAE,YAAYC,6BAAa,KAAK,KAAK,EAAE;QACvC,MAAMD,EAAE;MACZ;MACA,OAAO,KAAK;IAChB;EACJ;AACJ;AAACE,OAAA,CAAAb,oBAAA,GAAAA,oBAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { IKickOutCurrentUserUseCase, IKickOutCurrentUserUseCaseExecuteParams } from "../../abstractions/IKickOutCurrentUserUseCase";
2
- import { IGetIdentity, IGetWebsocketsContextCallable } from "../../types";
1
+ import type { IKickOutCurrentUserUseCase, IKickOutCurrentUserUseCaseExecuteParams } from "../../abstractions/IKickOutCurrentUserUseCase";
2
+ import type { IGetIdentity, IGetWebsocketsContextCallable } from "../../types";
3
3
  export interface IKickOutCurrentUserUseCaseParams {
4
4
  getWebsockets: IGetWebsocketsContextCallable;
5
5
  getIdentity: IGetIdentity;
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","KickOutCurrentUserUseCase","constructor","params","getWebsockets","getIdentity","execute","record","lockedBy","id","websockets","entryId","parseIdentifier","identity","send","action","data","toObject","user","ex","console","error","info","exports"],"sources":["KickOutCurrentUserUseCase.ts"],"sourcesContent":["import {\n IKickOutCurrentUserUseCase,\n IKickOutCurrentUserUseCaseExecuteParams\n} from \"~/abstractions/IKickOutCurrentUserUseCase\";\nimport { IGetIdentity, IGetWebsocketsContextCallable } from \"~/types\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nexport interface IKickOutCurrentUserUseCaseParams {\n getWebsockets: IGetWebsocketsContextCallable;\n getIdentity: IGetIdentity;\n}\n\nexport class KickOutCurrentUserUseCase implements IKickOutCurrentUserUseCase {\n private readonly getWebsockets: IGetWebsocketsContextCallable;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IKickOutCurrentUserUseCaseParams) {\n this.getWebsockets = params.getWebsockets;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(record: IKickOutCurrentUserUseCaseExecuteParams): Promise<void> {\n const { lockedBy, id } = record;\n\n const websockets = this.getWebsockets();\n\n const { id: entryId } = parseIdentifier(id);\n\n const identity = this.getIdentity();\n\n /**\n * We do not want any errors to leak out of this method.\n * Just log the error, if any.\n */\n try {\n await websockets.send(\n { id: lockedBy.id },\n {\n action: `recordLocking.entry.kickOut.${entryId}`,\n data: {\n record: record.toObject(),\n user: identity\n }\n }\n );\n } catch (ex) {\n console.error(\n `Could not send the kickOut message to a user with identity id: ${lockedBy.id}. More info in next log line.`\n );\n console.info(ex);\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAOO,MAAMC,yBAAyB,CAAuC;EAIlEC,WAAWA,CAACC,MAAwC,EAAE;IACzD,IAAI,CAACC,aAAa,GAAGD,MAAM,CAACC,aAAa;IACzC,IAAI,CAACC,WAAW,GAAGF,MAAM,CAACE,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAACC,MAA+C,EAAiB;IACjF,MAAM;MAAEC,QAAQ;MAAEC;IAAG,CAAC,GAAGF,MAAM;IAE/B,MAAMG,UAAU,GAAG,IAAI,CAACN,aAAa,CAAC,CAAC;IAEvC,MAAM;MAAEK,EAAE,EAAEE;IAAQ,CAAC,GAAG,IAAAC,sBAAe,EAACH,EAAE,CAAC;IAE3C,MAAMI,QAAQ,GAAG,IAAI,CAACR,WAAW,CAAC,CAAC;;IAEnC;AACR;AACA;AACA;IACQ,IAAI;MACA,MAAMK,UAAU,CAACI,IAAI,CACjB;QAAEL,EAAE,EAAED,QAAQ,CAACC;MAAG,CAAC,EACnB;QACIM,MAAM,EAAE,+BAA+BJ,OAAO,EAAE;QAChDK,IAAI,EAAE;UACFT,MAAM,EAAEA,MAAM,CAACU,QAAQ,CAAC,CAAC;UACzBC,IAAI,EAAEL;QACV;MACJ,CACJ,CAAC;IACL,CAAC,CAAC,OAAOM,EAAE,EAAE;MACTC,OAAO,CAACC,KAAK,CACT,kEAAkEb,QAAQ,CAACC,EAAE,+BACjF,CAAC;MACDW,OAAO,CAACE,IAAI,CAACH,EAAE,CAAC;IACpB;EACJ;AACJ;AAACI,OAAA,CAAAtB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_utils","require","KickOutCurrentUserUseCase","constructor","params","getWebsockets","getIdentity","execute","record","lockedBy","id","websockets","entryId","parseIdentifier","identity","send","action","data","toObject","user","ex","console","error","info","exports"],"sources":["KickOutCurrentUserUseCase.ts"],"sourcesContent":["import type {\n IKickOutCurrentUserUseCase,\n IKickOutCurrentUserUseCaseExecuteParams\n} from \"~/abstractions/IKickOutCurrentUserUseCase\";\nimport type { IGetIdentity, IGetWebsocketsContextCallable } from \"~/types\";\nimport { parseIdentifier } from \"@webiny/utils\";\n\nexport interface IKickOutCurrentUserUseCaseParams {\n getWebsockets: IGetWebsocketsContextCallable;\n getIdentity: IGetIdentity;\n}\n\nexport class KickOutCurrentUserUseCase implements IKickOutCurrentUserUseCase {\n private readonly getWebsockets: IGetWebsocketsContextCallable;\n private readonly getIdentity: IGetIdentity;\n\n public constructor(params: IKickOutCurrentUserUseCaseParams) {\n this.getWebsockets = params.getWebsockets;\n this.getIdentity = params.getIdentity;\n }\n\n public async execute(record: IKickOutCurrentUserUseCaseExecuteParams): Promise<void> {\n const { lockedBy, id } = record;\n\n const websockets = this.getWebsockets();\n\n const { id: entryId } = parseIdentifier(id);\n\n const identity = this.getIdentity();\n\n /**\n * We do not want any errors to leak out of this method.\n * Just log the error, if any.\n */\n try {\n await websockets.send(\n { id: lockedBy.id },\n {\n action: `recordLocking.entry.kickOut.${entryId}`,\n data: {\n record: record.toObject(),\n user: identity\n }\n }\n );\n } catch (ex) {\n console.error(\n `Could not send the kickOut message to a user with identity id: ${lockedBy.id}. More info in next log line.`\n );\n console.info(ex);\n }\n }\n}\n"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,OAAA;AAOO,MAAMC,yBAAyB,CAAuC;EAIlEC,WAAWA,CAACC,MAAwC,EAAE;IACzD,IAAI,CAACC,aAAa,GAAGD,MAAM,CAACC,aAAa;IACzC,IAAI,CAACC,WAAW,GAAGF,MAAM,CAACE,WAAW;EACzC;EAEA,MAAaC,OAAOA,CAACC,MAA+C,EAAiB;IACjF,MAAM;MAAEC,QAAQ;MAAEC;IAAG,CAAC,GAAGF,MAAM;IAE/B,MAAMG,UAAU,GAAG,IAAI,CAACN,aAAa,CAAC,CAAC;IAEvC,MAAM;MAAEK,EAAE,EAAEE;IAAQ,CAAC,GAAG,IAAAC,sBAAe,EAACH,EAAE,CAAC;IAE3C,MAAMI,QAAQ,GAAG,IAAI,CAACR,WAAW,CAAC,CAAC;;IAEnC;AACR;AACA;AACA;IACQ,IAAI;MACA,MAAMK,UAAU,CAACI,IAAI,CACjB;QAAEL,EAAE,EAAED,QAAQ,CAACC;MAAG,CAAC,EACnB;QACIM,MAAM,EAAE,+BAA+BJ,OAAO,EAAE;QAChDK,IAAI,EAAE;UACFT,MAAM,EAAEA,MAAM,CAACU,QAAQ,CAAC,CAAC;UACzBC,IAAI,EAAEL;QACV;MACJ,CACJ,CAAC;IACL,CAAC,CAAC,OAAOM,EAAE,EAAE;MACTC,OAAO,CAACC,KAAK,CACT,kEAAkEb,QAAQ,CAACC,EAAE,+BACjF,CAAC;MACDW,OAAO,CAACE,IAAI,CAACH,EAAE,CAAC;IACpB;EACJ;AACJ;AAACI,OAAA,CAAAtB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,10 +1,13 @@
1
- import { IListAllLockRecordsUseCase, IListAllLockRecordsUseCaseExecuteParams, IListAllLockRecordsUseCaseExecuteResponse } from "../../abstractions/IListAllLockRecordsUseCase";
2
- import { IRecordLockingModelManager } from "../../types";
1
+ import type { IListAllLockRecordsUseCase, IListAllLockRecordsUseCaseExecuteParams, IListAllLockRecordsUseCaseExecuteResponse } from "../../abstractions/IListAllLockRecordsUseCase";
2
+ import type { IRecordLockingModelManager } from "../../types";
3
+ import type { ConvertEntryToLockRecordCb } from "../types";
3
4
  export interface IListAllLockRecordsUseCaseParams {
4
5
  getManager(): Promise<IRecordLockingModelManager>;
6
+ convert: ConvertEntryToLockRecordCb;
5
7
  }
6
8
  export declare class ListAllLockRecordsUseCase implements IListAllLockRecordsUseCase {
7
9
  private readonly getManager;
10
+ private readonly convert;
8
11
  constructor(params: IListAllLockRecordsUseCaseParams);
9
12
  execute(input: IListAllLockRecordsUseCaseExecuteParams): Promise<IListAllLockRecordsUseCaseExecuteResponse>;
10
13
  }
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.ListAllLockRecordsUseCase = void 0;
7
- var _convertEntryToLockRecord = require("../../utils/convertEntryToLockRecord");
8
7
  var _convertWhereCondition = require("../../utils/convertWhereCondition");
9
8
  class ListAllLockRecordsUseCase {
10
9
  constructor(params) {
11
10
  this.getManager = params.getManager;
11
+ this.convert = params.convert;
12
12
  }
13
13
  async execute(input) {
14
14
  try {
@@ -19,7 +19,9 @@ class ListAllLockRecordsUseCase {
19
19
  };
20
20
  const [items, meta] = await manager.listLatest(params);
21
21
  return {
22
- items: items.map(_convertEntryToLockRecord.convertEntryToLockRecord),
22
+ items: items.map(item => {
23
+ return this.convert(item);
24
+ }),
23
25
  meta
24
26
  };
25
27
  } catch (ex) {
@@ -1 +1 @@
1
- {"version":3,"names":["_convertEntryToLockRecord","require","_convertWhereCondition","ListAllLockRecordsUseCase","constructor","params","getManager","execute","input","manager","where","convertWhereCondition","items","meta","listLatest","map","convertEntryToLockRecord","ex","exports"],"sources":["ListAllLockRecordsUseCase.ts"],"sourcesContent":["import {\n IListAllLockRecordsUseCase,\n IListAllLockRecordsUseCaseExecuteParams,\n IListAllLockRecordsUseCaseExecuteResponse\n} from \"~/abstractions/IListAllLockRecordsUseCase\";\nimport { IRecordLockingModelManager } from \"~/types\";\nimport { convertEntryToLockRecord } from \"~/utils/convertEntryToLockRecord\";\nimport { convertWhereCondition } from \"~/utils/convertWhereCondition\";\n\nexport interface IListAllLockRecordsUseCaseParams {\n getManager(): Promise<IRecordLockingModelManager>;\n}\n\nexport class ListAllLockRecordsUseCase implements IListAllLockRecordsUseCase {\n private readonly getManager: () => Promise<IRecordLockingModelManager>;\n public constructor(params: IListAllLockRecordsUseCaseParams) {\n this.getManager = params.getManager;\n }\n public async execute(\n input: IListAllLockRecordsUseCaseExecuteParams\n ): Promise<IListAllLockRecordsUseCaseExecuteResponse> {\n try {\n const manager = await this.getManager();\n const params: IListAllLockRecordsUseCaseExecuteParams = {\n ...input,\n where: convertWhereCondition(input.where)\n };\n\n const [items, meta] = await manager.listLatest(params);\n return {\n items: items.map(convertEntryToLockRecord),\n meta\n };\n } catch (ex) {\n throw ex;\n }\n }\n}\n"],"mappings":";;;;;;AAMA,IAAAA,yBAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AAMO,MAAME,yBAAyB,CAAuC;EAElEC,WAAWA,CAACC,MAAwC,EAAE;IACzD,IAAI,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU;EACvC;EACA,MAAaC,OAAOA,CAChBC,KAA8C,EACI;IAClD,IAAI;MACA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACH,UAAU,CAAC,CAAC;MACvC,MAAMD,MAA+C,GAAG;QACpD,GAAGG,KAAK;QACRE,KAAK,EAAE,IAAAC,4CAAqB,EAACH,KAAK,CAACE,KAAK;MAC5C,CAAC;MAED,MAAM,CAACE,KAAK,EAAEC,IAAI,CAAC,GAAG,MAAMJ,OAAO,CAACK,UAAU,CAACT,MAAM,CAAC;MACtD,OAAO;QACHO,KAAK,EAAEA,KAAK,CAACG,GAAG,CAACC,kDAAwB,CAAC;QAC1CH;MACJ,CAAC;IACL,CAAC,CAAC,OAAOI,EAAE,EAAE;MACT,MAAMA,EAAE;IACZ;EACJ;AACJ;AAACC,OAAA,CAAAf,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_convertWhereCondition","require","ListAllLockRecordsUseCase","constructor","params","getManager","convert","execute","input","manager","where","convertWhereCondition","items","meta","listLatest","map","item","ex","exports"],"sources":["ListAllLockRecordsUseCase.ts"],"sourcesContent":["import type {\n IListAllLockRecordsUseCase,\n IListAllLockRecordsUseCaseExecuteParams,\n IListAllLockRecordsUseCaseExecuteResponse\n} from \"~/abstractions/IListAllLockRecordsUseCase\";\nimport type { IRecordLockingModelManager } from \"~/types\";\nimport { convertWhereCondition } from \"~/utils/convertWhereCondition\";\nimport type { ConvertEntryToLockRecordCb } from \"~/useCases/types\";\n\nexport interface IListAllLockRecordsUseCaseParams {\n getManager(): Promise<IRecordLockingModelManager>;\n convert: ConvertEntryToLockRecordCb;\n}\n\nexport class ListAllLockRecordsUseCase implements IListAllLockRecordsUseCase {\n private readonly getManager: () => Promise<IRecordLockingModelManager>;\n private readonly convert: ConvertEntryToLockRecordCb;\n\n public constructor(params: IListAllLockRecordsUseCaseParams) {\n this.getManager = params.getManager;\n this.convert = params.convert;\n }\n public async execute(\n input: IListAllLockRecordsUseCaseExecuteParams\n ): Promise<IListAllLockRecordsUseCaseExecuteResponse> {\n try {\n const manager = await this.getManager();\n const params: IListAllLockRecordsUseCaseExecuteParams = {\n ...input,\n where: convertWhereCondition(input.where)\n };\n\n const [items, meta] = await manager.listLatest(params);\n return {\n items: items.map(item => {\n return this.convert(item);\n }),\n meta\n };\n } catch (ex) {\n throw ex;\n }\n }\n}\n"],"mappings":";;;;;;AAMA,IAAAA,sBAAA,GAAAC,OAAA;AAQO,MAAMC,yBAAyB,CAAuC;EAIlEC,WAAWA,CAACC,MAAwC,EAAE;IACzD,IAAI,CAACC,UAAU,GAAGD,MAAM,CAACC,UAAU;IACnC,IAAI,CAACC,OAAO,GAAGF,MAAM,CAACE,OAAO;EACjC;EACA,MAAaC,OAAOA,CAChBC,KAA8C,EACI;IAClD,IAAI;MACA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACJ,UAAU,CAAC,CAAC;MACvC,MAAMD,MAA+C,GAAG;QACpD,GAAGI,KAAK;QACRE,KAAK,EAAE,IAAAC,4CAAqB,EAACH,KAAK,CAACE,KAAK;MAC5C,CAAC;MAED,MAAM,CAACE,KAAK,EAAEC,IAAI,CAAC,GAAG,MAAMJ,OAAO,CAACK,UAAU,CAACV,MAAM,CAAC;MACtD,OAAO;QACHQ,KAAK,EAAEA,KAAK,CAACG,GAAG,CAACC,IAAI,IAAI;UACrB,OAAO,IAAI,CAACV,OAAO,CAACU,IAAI,CAAC;QAC7B,CAAC,CAAC;QACFH;MACJ,CAAC;IACL,CAAC,CAAC,OAAOI,EAAE,EAAE;MACT,MAAMA,EAAE;IACZ;EACJ;AACJ;AAACC,OAAA,CAAAhB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { IListLockRecordsUseCase, IListLockRecordsUseCaseExecuteParams, IListLockRecordsUseCaseExecuteResponse } from "../../abstractions/IListLockRecordsUseCase";
2
- import { IGetIdentity } from "../../types";
1
+ import type { IListLockRecordsUseCase, IListLockRecordsUseCaseExecuteParams, IListLockRecordsUseCaseExecuteResponse } from "../../abstractions/IListLockRecordsUseCase";
2
+ import type { IGetIdentity } from "../../types";
3
3
  export interface IListLockRecordsUseCaseParams {
4
4
  listAllLockRecordsUseCase: IListLockRecordsUseCase;
5
5
  timeout: number;