@webiny/api-record-locking 6.0.0-alpha.0 → 6.0.0-alpha.2
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.
- package/abstractions/IGetLockRecordUseCase.d.ts +1 -1
- package/abstractions/IGetLockRecordUseCase.js.map +1 -1
- package/abstractions/IGetLockedEntryLockRecordUseCase.d.ts +1 -1
- package/abstractions/IGetLockedEntryLockRecordUseCase.js.map +1 -1
- package/abstractions/IIsEntryLocked.d.ts +1 -1
- package/abstractions/IIsEntryLocked.js.map +1 -1
- package/abstractions/IKickOutCurrentUserUseCase.d.ts +1 -1
- package/abstractions/IKickOutCurrentUserUseCase.js.map +1 -1
- package/abstractions/IListAllLockRecordsUseCase.d.ts +1 -1
- package/abstractions/IListAllLockRecordsUseCase.js.map +1 -1
- package/abstractions/IListLockRecordsUseCase.d.ts +2 -2
- package/abstractions/IListLockRecordsUseCase.js.map +1 -1
- package/abstractions/ILockEntryUseCase.d.ts +1 -1
- package/abstractions/ILockEntryUseCase.js.map +1 -1
- package/abstractions/IUnlockEntryRequestUseCase.d.ts +1 -1
- package/abstractions/IUnlockEntryRequestUseCase.js.map +1 -1
- package/abstractions/IUnlockEntryUseCase.d.ts +1 -1
- package/abstractions/IUnlockEntryUseCase.js.map +1 -1
- package/abstractions/IUpdateEntryLockUseCase.d.ts +1 -1
- package/abstractions/IUpdateEntryLockUseCase.js.map +1 -1
- package/crud/crud.d.ts +1 -1
- package/crud/crud.js.map +1 -1
- package/graphql/schema.d.ts +2 -2
- package/graphql/schema.js.map +1 -1
- package/index.d.ts +1 -1
- package/index.js.map +1 -1
- package/package.json +17 -17
- package/types.d.ts +5 -4
- package/types.js.map +1 -1
- package/useCases/index.js.map +1 -1
- package/utils/calculateExpiresOn.d.ts +1 -1
- package/utils/calculateExpiresOn.js.map +1 -1
- package/utils/checkPermissions.d.ts +1 -1
- package/utils/checkPermissions.js.map +1 -1
- package/utils/convertWhereCondition.d.ts +1 -1
- package/utils/convertWhereCondition.js.map +1 -1
- package/utils/resolve.d.ts +2 -2
- package/utils/resolve.js.map +1 -1
- package/utils/validateSameIdentity.d.ts +1 -1
- package/utils/validateSameIdentity.js.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingGetLockRecordParams, IRecordLockingLockRecord } from "../types";
|
|
1
|
+
import type { IRecordLockingGetLockRecordParams, IRecordLockingLockRecord } from "../types";
|
|
2
2
|
export type IGetLockRecordUseCaseExecuteParams = IRecordLockingGetLockRecordParams;
|
|
3
3
|
export interface IGetLockRecordUseCaseExecute {
|
|
4
4
|
(params: IGetLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IGetLockRecordUseCase.ts"],"sourcesContent":["import { IRecordLockingGetLockRecordParams, IRecordLockingLockRecord } from \"~/types\";\n\nexport type IGetLockRecordUseCaseExecuteParams = IRecordLockingGetLockRecordParams;\n\nexport interface IGetLockRecordUseCaseExecute {\n (params: IGetLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;\n}\n\nexport interface IGetLockRecordUseCase {\n execute: IGetLockRecordUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IGetLockRecordUseCase.ts"],"sourcesContent":["import type { IRecordLockingGetLockRecordParams, IRecordLockingLockRecord } from \"~/types\";\n\nexport type IGetLockRecordUseCaseExecuteParams = IRecordLockingGetLockRecordParams;\n\nexport interface IGetLockRecordUseCaseExecute {\n (params: IGetLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;\n}\n\nexport interface IGetLockRecordUseCase {\n execute: IGetLockRecordUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingIsLockedParams, IRecordLockingLockRecord } from "../types";
|
|
1
|
+
import type { IRecordLockingIsLockedParams, IRecordLockingLockRecord } from "../types";
|
|
2
2
|
export type IGetLockedEntryLockRecordUseCaseExecuteParams = IRecordLockingIsLockedParams;
|
|
3
3
|
export interface IGetLockedEntryLockRecordUseCaseExecute {
|
|
4
4
|
(params: IGetLockedEntryLockRecordUseCaseExecuteParams): Promise<IRecordLockingLockRecord | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IGetLockedEntryLockRecordUseCase.ts"],"sourcesContent":["import { IRecordLockingIsLockedParams, IRecordLockingLockRecord } from \"~/types\";\n\nexport type IGetLockedEntryLockRecordUseCaseExecuteParams = IRecordLockingIsLockedParams;\n\nexport interface IGetLockedEntryLockRecordUseCaseExecute {\n (\n params: IGetLockedEntryLockRecordUseCaseExecuteParams\n ): Promise<IRecordLockingLockRecord | null>;\n}\n\nexport interface IGetLockedEntryLockRecordUseCase {\n execute: IGetLockedEntryLockRecordUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IGetLockedEntryLockRecordUseCase.ts"],"sourcesContent":["import type { IRecordLockingIsLockedParams, IRecordLockingLockRecord } from \"~/types\";\n\nexport type IGetLockedEntryLockRecordUseCaseExecuteParams = IRecordLockingIsLockedParams;\n\nexport interface IGetLockedEntryLockRecordUseCaseExecute {\n (\n params: IGetLockedEntryLockRecordUseCaseExecuteParams\n ): Promise<IRecordLockingLockRecord | null>;\n}\n\nexport interface IGetLockedEntryLockRecordUseCase {\n execute: IGetLockedEntryLockRecordUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingIsLockedParams } from "../types";
|
|
1
|
+
import type { IRecordLockingIsLockedParams } from "../types";
|
|
2
2
|
export type IIsEntryLockedUseCaseExecuteParams = IRecordLockingIsLockedParams;
|
|
3
3
|
export interface IIsEntryLockedUseCaseExecute {
|
|
4
4
|
(params: IIsEntryLockedUseCaseExecuteParams): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IIsEntryLocked.ts"],"sourcesContent":["import { IRecordLockingIsLockedParams } from \"~/types\";\n\nexport type IIsEntryLockedUseCaseExecuteParams = IRecordLockingIsLockedParams;\n\nexport interface IIsEntryLockedUseCaseExecute {\n (params: IIsEntryLockedUseCaseExecuteParams): Promise<boolean>;\n}\n\nexport interface IIsEntryLockedUseCase {\n execute: IIsEntryLockedUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IIsEntryLocked.ts"],"sourcesContent":["import type { IRecordLockingIsLockedParams } from \"~/types\";\n\nexport type IIsEntryLockedUseCaseExecuteParams = IRecordLockingIsLockedParams;\n\nexport interface IIsEntryLockedUseCaseExecute {\n (params: IIsEntryLockedUseCaseExecuteParams): Promise<boolean>;\n}\n\nexport interface IIsEntryLockedUseCase {\n execute: IIsEntryLockedUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingLockRecord } from "../types";
|
|
1
|
+
import type { IRecordLockingLockRecord } from "../types";
|
|
2
2
|
export type IKickOutCurrentUserUseCaseExecuteParams = IRecordLockingLockRecord;
|
|
3
3
|
export interface IKickOutCurrentUserUseCase {
|
|
4
4
|
execute(params: IKickOutCurrentUserUseCaseExecuteParams): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IKickOutCurrentUserUseCase.ts"],"sourcesContent":["import { IRecordLockingLockRecord } from \"~/types\";\n\nexport type IKickOutCurrentUserUseCaseExecuteParams = IRecordLockingLockRecord;\n\nexport interface IKickOutCurrentUserUseCase {\n execute(params: IKickOutCurrentUserUseCaseExecuteParams): Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IKickOutCurrentUserUseCase.ts"],"sourcesContent":["import type { IRecordLockingLockRecord } from \"~/types\";\n\nexport type IKickOutCurrentUserUseCaseExecuteParams = IRecordLockingLockRecord;\n\nexport interface IKickOutCurrentUserUseCase {\n execute(params: IKickOutCurrentUserUseCaseExecuteParams): Promise<void>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingListAllLockRecordsParams, IRecordLockingListAllLockRecordsResponse } from "../types";
|
|
1
|
+
import type { IRecordLockingListAllLockRecordsParams, IRecordLockingListAllLockRecordsResponse } from "../types";
|
|
2
2
|
export type IListAllLockRecordsUseCaseExecuteParams = IRecordLockingListAllLockRecordsParams;
|
|
3
3
|
export type IListAllLockRecordsUseCaseExecuteResponse = IRecordLockingListAllLockRecordsResponse;
|
|
4
4
|
export interface IListAllLockRecordsUseCaseExecute {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IListAllLockRecordsUseCase.ts"],"sourcesContent":["import {\n IRecordLockingListAllLockRecordsParams,\n IRecordLockingListAllLockRecordsResponse\n} from \"~/types\";\n\nexport type IListAllLockRecordsUseCaseExecuteParams = IRecordLockingListAllLockRecordsParams;\n\nexport type IListAllLockRecordsUseCaseExecuteResponse = IRecordLockingListAllLockRecordsResponse;\n\nexport interface IListAllLockRecordsUseCaseExecute {\n (\n params: IListAllLockRecordsUseCaseExecuteParams\n ): Promise<IListAllLockRecordsUseCaseExecuteResponse>;\n}\n\nexport interface IListAllLockRecordsUseCase {\n execute: IListAllLockRecordsUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IListAllLockRecordsUseCase.ts"],"sourcesContent":["import type {\n IRecordLockingListAllLockRecordsParams,\n IRecordLockingListAllLockRecordsResponse\n} from \"~/types\";\n\nexport type IListAllLockRecordsUseCaseExecuteParams = IRecordLockingListAllLockRecordsParams;\n\nexport type IListAllLockRecordsUseCaseExecuteResponse = IRecordLockingListAllLockRecordsResponse;\n\nexport interface IListAllLockRecordsUseCaseExecute {\n (\n params: IListAllLockRecordsUseCaseExecuteParams\n ): Promise<IListAllLockRecordsUseCaseExecuteResponse>;\n}\n\nexport interface IListAllLockRecordsUseCase {\n execute: IListAllLockRecordsUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IListAllLockRecordsUseCaseExecuteParams } from "./IListAllLockRecordsUseCase";
|
|
2
|
-
import { IRecordLockingListAllLockRecordsResponse } from "../types";
|
|
1
|
+
import type { IListAllLockRecordsUseCaseExecuteParams } from "./IListAllLockRecordsUseCase";
|
|
2
|
+
import type { IRecordLockingListAllLockRecordsResponse } from "../types";
|
|
3
3
|
export type IListLockRecordsUseCaseExecuteParams = IListAllLockRecordsUseCaseExecuteParams;
|
|
4
4
|
export type IListLockRecordsUseCaseExecuteResponse = IRecordLockingListAllLockRecordsResponse;
|
|
5
5
|
export interface IListLockRecordsUseCaseExecute {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IListLockRecordsUseCase.ts"],"sourcesContent":["import { IListAllLockRecordsUseCaseExecuteParams } from \"./IListAllLockRecordsUseCase\";\nimport { IRecordLockingListAllLockRecordsResponse } from \"~/types\";\n\nexport type IListLockRecordsUseCaseExecuteParams = IListAllLockRecordsUseCaseExecuteParams;\n\nexport type IListLockRecordsUseCaseExecuteResponse = IRecordLockingListAllLockRecordsResponse;\n\nexport interface IListLockRecordsUseCaseExecute {\n (params: IListLockRecordsUseCaseExecuteParams): Promise<IListLockRecordsUseCaseExecuteResponse>;\n}\n\nexport interface IListLockRecordsUseCase {\n execute: IListLockRecordsUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IListLockRecordsUseCase.ts"],"sourcesContent":["import type { IListAllLockRecordsUseCaseExecuteParams } from \"./IListAllLockRecordsUseCase\";\nimport type { IRecordLockingListAllLockRecordsResponse } from \"~/types\";\n\nexport type IListLockRecordsUseCaseExecuteParams = IListAllLockRecordsUseCaseExecuteParams;\n\nexport type IListLockRecordsUseCaseExecuteResponse = IRecordLockingListAllLockRecordsResponse;\n\nexport interface IListLockRecordsUseCaseExecute {\n (params: IListLockRecordsUseCaseExecuteParams): Promise<IListLockRecordsUseCaseExecuteResponse>;\n}\n\nexport interface IListLockRecordsUseCase {\n execute: IListLockRecordsUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from "../types";
|
|
1
|
+
import type { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from "../types";
|
|
2
2
|
export interface ILockEntryUseCaseExecuteParams {
|
|
3
3
|
id: string;
|
|
4
4
|
type: IRecordLockingLockRecordEntryType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["ILockEntryUseCase.ts"],"sourcesContent":["import { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from \"~/types\";\n\nexport interface ILockEntryUseCaseExecuteParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface ILockEntryUseCaseExecute {\n (params: ILockEntryUseCaseExecuteParams): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface ILockEntryUseCase {\n execute: ILockEntryUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["ILockEntryUseCase.ts"],"sourcesContent":["import type { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from \"~/types\";\n\nexport interface ILockEntryUseCaseExecuteParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface ILockEntryUseCaseExecute {\n (params: ILockEntryUseCaseExecuteParams): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface ILockEntryUseCase {\n execute: ILockEntryUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from "../types";
|
|
1
|
+
import type { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from "../types";
|
|
2
2
|
export interface IUnlockEntryRequestUseCaseExecuteParams {
|
|
3
3
|
id: string;
|
|
4
4
|
type: IRecordLockingLockRecordEntryType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IUnlockEntryRequestUseCase.ts"],"sourcesContent":["import { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from \"~/types\";\n\nexport interface IUnlockEntryRequestUseCaseExecuteParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IUnlockEntryRequestUseCaseExecute {\n (params: IUnlockEntryRequestUseCaseExecuteParams): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface IUnlockEntryRequestUseCase {\n execute: IUnlockEntryRequestUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IUnlockEntryRequestUseCase.ts"],"sourcesContent":["import type { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from \"~/types\";\n\nexport interface IUnlockEntryRequestUseCaseExecuteParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IUnlockEntryRequestUseCaseExecute {\n (params: IUnlockEntryRequestUseCaseExecuteParams): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface IUnlockEntryRequestUseCase {\n execute: IUnlockEntryRequestUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from "../types";
|
|
1
|
+
import type { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from "../types";
|
|
2
2
|
export interface IUnlockEntryUseCaseExecuteParams {
|
|
3
3
|
id: string;
|
|
4
4
|
type: IRecordLockingLockRecordEntryType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IUnlockEntryUseCase.ts"],"sourcesContent":["import { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from \"~/types\";\n\nexport interface IUnlockEntryUseCaseExecuteParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n force?: boolean;\n}\n\nexport interface IUnlockEntryUseCaseExecute {\n (params: IUnlockEntryUseCaseExecuteParams): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface IUnlockEntryUseCase {\n execute: IUnlockEntryUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IUnlockEntryUseCase.ts"],"sourcesContent":["import type { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from \"~/types\";\n\nexport interface IUnlockEntryUseCaseExecuteParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n force?: boolean;\n}\n\nexport interface IUnlockEntryUseCaseExecute {\n (params: IUnlockEntryUseCaseExecuteParams): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface IUnlockEntryUseCase {\n execute: IUnlockEntryUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from "../types";
|
|
1
|
+
import type { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from "../types";
|
|
2
2
|
export interface IUpdateEntryLockUseCaseExecuteParams {
|
|
3
3
|
id: string;
|
|
4
4
|
type: IRecordLockingLockRecordEntryType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["IUpdateEntryLockUseCase.ts"],"sourcesContent":["import { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from \"~/types\";\n\nexport interface IUpdateEntryLockUseCaseExecuteParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IUpdateEntryLockUseCaseExecute {\n (params: IUpdateEntryLockUseCaseExecuteParams): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface IUpdateEntryLockUseCase {\n execute: IUpdateEntryLockUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["IUpdateEntryLockUseCase.ts"],"sourcesContent":["import type { IRecordLockingLockRecord, IRecordLockingLockRecordEntryType } from \"~/types\";\n\nexport interface IUpdateEntryLockUseCaseExecuteParams {\n id: string;\n type: IRecordLockingLockRecordEntryType;\n}\n\nexport interface IUpdateEntryLockUseCaseExecute {\n (params: IUpdateEntryLockUseCaseExecuteParams): Promise<IRecordLockingLockRecord>;\n}\n\nexport interface IUpdateEntryLockUseCase {\n execute: IUpdateEntryLockUseCaseExecute;\n}\n"],"mappings":"","ignoreList":[]}
|
package/crud/crud.d.ts
CHANGED
package/crud/crud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_error","require","_model","_useCases","_pubsub","_getTimeout","createRecordLockingCrud","params","context","getTimeout","baseGetTimeout","timeout","getModel","model","cms","RECORD_LOCKING_MODEL_ID","WebinyError","modelId","getManager","getEntryManager","getSecurity","security","getIdentity","identity","id","displayName","type","hasRecordLockingAccess","hasFulLAccess","hasFullAccess","permission","getPermission","canForceUnlock","onEntryBeforeLock","createTopic","onEntryAfterLock","onEntryLockError","onEntryBeforeUnlock","onEntryAfterUnlock","onEntryUnlockError","onEntryBeforeUnlockRequest","onEntryAfterUnlockRequest","onEntryUnlockRequestError","getWebsockets","websockets","listLockRecordsUseCase","listAllLockRecordsUseCase","getLockRecordUseCase","isEntryLockedUseCase","getLockedEntryLockRecordUseCase","lockEntryUseCase","updateEntryLockUseCase","unlockEntryUseCase","unlockEntryRequestUseCase","createUseCases","listAllLockRecords","benchmark","measure","execute","listLockRecords","getLockRecord","isEntryLocked","getLockedEntryLockRecord","lockEntry","publish","record","ex","error","updateEntryLock","unlockEntry","unlockEntryRequest","exports"],"sources":["crud.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport {\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 getSecurity = () => {\n return context.security;\n };\n\n const getIdentity: IGetIdentity = () => {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new WebinyError(\"Identity missing.\");\n }\n return {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n };\n\n const hasRecordLockingAccess: IHasRecordLockingAccessCallable = async () => {\n const hasFulLAccess = await context.security.hasFullAccess();\n if (hasFulLAccess) {\n return true;\n }\n const permission = await context.security.getPermission<RecordLockingSecurityPermission>(\n \"recordLocking\"\n );\n return permission?.canForceUnlock === \"yes\";\n };\n\n const onEntryBeforeLock = createTopic<OnEntryBeforeLockTopicParams>(\n \"cms.recordLocking.onEntryBeforeLock\"\n );\n const onEntryAfterLock = createTopic<OnEntryAfterLockTopicParams>(\n \"cms.recordLocking.onEntryAfterLock\"\n );\n const onEntryLockError = createTopic<OnEntryLockErrorTopicParams>(\n \"cms.recordLocking.onEntryLockError\"\n );\n\n const onEntryBeforeUnlock = createTopic<OnEntryBeforeUnlockTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlock\"\n );\n const onEntryAfterUnlock = createTopic<OnEntryAfterUnlockTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlock\"\n );\n const onEntryUnlockError = createTopic<OnEntryUnlockErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockError\"\n );\n\n const onEntryBeforeUnlockRequest = createTopic<OnEntryBeforeUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlockRequest\"\n );\n const onEntryAfterUnlockRequest = createTopic<OnEntryAfterUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlockRequest\"\n );\n const onEntryUnlockRequestError = createTopic<OnEntryUnlockRequestErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockRequestError\"\n );\n\n const getWebsockets: IGetWebsocketsContextCallable = () => {\n return context.websockets;\n };\n\n const {\n listLockRecordsUseCase,\n listAllLockRecordsUseCase,\n getLockRecordUseCase,\n isEntryLockedUseCase,\n getLockedEntryLockRecordUseCase,\n lockEntryUseCase,\n updateEntryLockUseCase,\n unlockEntryUseCase,\n unlockEntryRequestUseCase\n } = createUseCases({\n getIdentity,\n getManager,\n getSecurity,\n hasRecordLockingAccess,\n getWebsockets,\n getTimeout\n });\n\n const listAllLockRecords: IListAllLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listAllLockRecords\", async () => {\n return listAllLockRecordsUseCase.execute(params);\n });\n };\n\n const listLockRecords: IListLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listLockRecords\", async () => {\n return listLockRecordsUseCase.execute(params);\n });\n };\n\n const getLockRecord: IGetLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockRecord\", async () => {\n return getLockRecordUseCase.execute(params);\n });\n };\n\n const isEntryLocked: IIsEntryLockedUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.isEntryLocked\", async () => {\n return isEntryLockedUseCase.execute(params);\n });\n };\n\n const getLockedEntryLockRecord: IGetLockedEntryLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockedEntryLockRecord\", async () => {\n return getLockedEntryLockRecordUseCase.execute(params);\n });\n };\n\n const lockEntry: ILockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.lockEntry\", async () => {\n try {\n await onEntryBeforeLock.publish(params);\n const record = await lockEntryUseCase.execute(params);\n await onEntryAfterLock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryLockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const updateEntryLock: IUpdateEntryLockUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.updateEntryLock\", async () => {\n return updateEntryLockUseCase.execute(params);\n });\n };\n\n const unlockEntry: IUnlockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntry\", async () => {\n try {\n await onEntryBeforeUnlock.publish({\n ...params,\n getIdentity\n });\n const record = await unlockEntryUseCase.execute(params);\n await onEntryAfterUnlock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const unlockEntryRequest: IUnlockEntryRequestUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntryRequest\", async () => {\n try {\n await onEntryBeforeUnlockRequest.publish(params);\n const record = await unlockEntryRequestUseCase.execute(params);\n await onEntryAfterUnlockRequest.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockRequestError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n return {\n /**\n * Lifecycle events\n */\n onEntryBeforeLock,\n onEntryAfterLock,\n onEntryLockError,\n onEntryBeforeUnlock,\n onEntryAfterUnlock,\n onEntryUnlockError,\n onEntryBeforeUnlockRequest,\n onEntryAfterUnlockRequest,\n onEntryUnlockRequestError,\n /**\n * Methods\n */\n getModel,\n listLockRecords,\n listAllLockRecords,\n getLockRecord,\n isEntryLocked,\n getLockedEntryLockRecord,\n lockEntry,\n updateEntryLock,\n unlockEntry,\n unlockEntryRequest,\n getTimeout\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_error","require","_model","_useCases","_pubsub","_getTimeout","createRecordLockingCrud","params","context","getTimeout","baseGetTimeout","timeout","getModel","model","cms","RECORD_LOCKING_MODEL_ID","WebinyError","modelId","getManager","getEntryManager","getSecurity","security","getIdentity","identity","id","displayName","type","hasRecordLockingAccess","hasFulLAccess","hasFullAccess","permission","getPermission","canForceUnlock","onEntryBeforeLock","createTopic","onEntryAfterLock","onEntryLockError","onEntryBeforeUnlock","onEntryAfterUnlock","onEntryUnlockError","onEntryBeforeUnlockRequest","onEntryAfterUnlockRequest","onEntryUnlockRequestError","getWebsockets","websockets","listLockRecordsUseCase","listAllLockRecordsUseCase","getLockRecordUseCase","isEntryLockedUseCase","getLockedEntryLockRecordUseCase","lockEntryUseCase","updateEntryLockUseCase","unlockEntryUseCase","unlockEntryRequestUseCase","createUseCases","listAllLockRecords","benchmark","measure","execute","listLockRecords","getLockRecord","isEntryLocked","getLockedEntryLockRecord","lockEntry","publish","record","ex","error","updateEntryLock","unlockEntry","unlockEntryRequest","exports"],"sources":["crud.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport type {\n Context,\n IGetIdentity,\n IGetWebsocketsContextCallable,\n IHasRecordLockingAccessCallable,\n IRecordLocking,\n IRecordLockingLockRecordValues,\n IRecordLockingModelManager,\n OnEntryAfterLockTopicParams,\n OnEntryAfterUnlockRequestTopicParams,\n OnEntryAfterUnlockTopicParams,\n OnEntryBeforeLockTopicParams,\n OnEntryBeforeUnlockRequestTopicParams,\n OnEntryBeforeUnlockTopicParams,\n OnEntryLockErrorTopicParams,\n OnEntryUnlockErrorTopicParams,\n OnEntryUnlockRequestErrorTopicParams,\n RecordLockingSecurityPermission\n} from \"~/types\";\nimport { RECORD_LOCKING_MODEL_ID } from \"./model\";\nimport type { IGetLockRecordUseCaseExecute } from \"~/abstractions/IGetLockRecordUseCase\";\nimport type { IIsEntryLockedUseCaseExecute } from \"~/abstractions/IIsEntryLocked\";\nimport type { ILockEntryUseCaseExecute } from \"~/abstractions/ILockEntryUseCase\";\nimport type { IUnlockEntryUseCaseExecute } from \"~/abstractions/IUnlockEntryUseCase\";\nimport { createUseCases } from \"~/useCases\";\nimport type { IUnlockEntryRequestUseCaseExecute } from \"~/abstractions/IUnlockEntryRequestUseCase\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport type { IListAllLockRecordsUseCaseExecute } from \"~/abstractions/IListAllLockRecordsUseCase\";\nimport type { IListLockRecordsUseCaseExecute } from \"~/abstractions/IListLockRecordsUseCase\";\nimport type { IUpdateEntryLockUseCaseExecute } from \"~/abstractions/IUpdateEntryLockUseCase\";\nimport type { IGetLockedEntryLockRecordUseCaseExecute } from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\nimport { getTimeout as baseGetTimeout } from \"~/utils/getTimeout\";\n\ninterface Params {\n context: Pick<Context, \"plugins\" | \"cms\" | \"benchmark\" | \"security\" | \"websockets\">;\n timeout?: number;\n}\n\nexport const createRecordLockingCrud = async (params: Params): Promise<IRecordLocking> => {\n const { context } = params;\n const getTimeout = (): number => {\n return baseGetTimeout(params.timeout);\n };\n const getModel = async () => {\n const model = await context.cms.getModel(RECORD_LOCKING_MODEL_ID);\n if (model) {\n return model;\n }\n throw new WebinyError(\"Record Locking model not found.\", \"MODEL_NOT_FOUND\", {\n modelId: RECORD_LOCKING_MODEL_ID\n });\n };\n\n const getManager = async (): Promise<IRecordLockingModelManager> => {\n return await context.cms.getEntryManager<IRecordLockingLockRecordValues>(\n RECORD_LOCKING_MODEL_ID\n );\n };\n\n const getSecurity = () => {\n return context.security;\n };\n\n const getIdentity: IGetIdentity = () => {\n const identity = context.security.getIdentity();\n if (!identity) {\n throw new WebinyError(\"Identity missing.\");\n }\n return {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n };\n\n const hasRecordLockingAccess: IHasRecordLockingAccessCallable = async () => {\n const hasFulLAccess = await context.security.hasFullAccess();\n if (hasFulLAccess) {\n return true;\n }\n const permission = await context.security.getPermission<RecordLockingSecurityPermission>(\n \"recordLocking\"\n );\n return permission?.canForceUnlock === \"yes\";\n };\n\n const onEntryBeforeLock = createTopic<OnEntryBeforeLockTopicParams>(\n \"cms.recordLocking.onEntryBeforeLock\"\n );\n const onEntryAfterLock = createTopic<OnEntryAfterLockTopicParams>(\n \"cms.recordLocking.onEntryAfterLock\"\n );\n const onEntryLockError = createTopic<OnEntryLockErrorTopicParams>(\n \"cms.recordLocking.onEntryLockError\"\n );\n\n const onEntryBeforeUnlock = createTopic<OnEntryBeforeUnlockTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlock\"\n );\n const onEntryAfterUnlock = createTopic<OnEntryAfterUnlockTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlock\"\n );\n const onEntryUnlockError = createTopic<OnEntryUnlockErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockError\"\n );\n\n const onEntryBeforeUnlockRequest = createTopic<OnEntryBeforeUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryBeforeUnlockRequest\"\n );\n const onEntryAfterUnlockRequest = createTopic<OnEntryAfterUnlockRequestTopicParams>(\n \"cms.recordLocking.onEntryAfterUnlockRequest\"\n );\n const onEntryUnlockRequestError = createTopic<OnEntryUnlockRequestErrorTopicParams>(\n \"cms.recordLocking.onEntryUnlockRequestError\"\n );\n\n const getWebsockets: IGetWebsocketsContextCallable = () => {\n return context.websockets;\n };\n\n const {\n listLockRecordsUseCase,\n listAllLockRecordsUseCase,\n getLockRecordUseCase,\n isEntryLockedUseCase,\n getLockedEntryLockRecordUseCase,\n lockEntryUseCase,\n updateEntryLockUseCase,\n unlockEntryUseCase,\n unlockEntryRequestUseCase\n } = createUseCases({\n getIdentity,\n getManager,\n getSecurity,\n hasRecordLockingAccess,\n getWebsockets,\n getTimeout\n });\n\n const listAllLockRecords: IListAllLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listAllLockRecords\", async () => {\n return listAllLockRecordsUseCase.execute(params);\n });\n };\n\n const listLockRecords: IListLockRecordsUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.listLockRecords\", async () => {\n return listLockRecordsUseCase.execute(params);\n });\n };\n\n const getLockRecord: IGetLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockRecord\", async () => {\n return getLockRecordUseCase.execute(params);\n });\n };\n\n const isEntryLocked: IIsEntryLockedUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.isEntryLocked\", async () => {\n return isEntryLockedUseCase.execute(params);\n });\n };\n\n const getLockedEntryLockRecord: IGetLockedEntryLockRecordUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.getLockedEntryLockRecord\", async () => {\n return getLockedEntryLockRecordUseCase.execute(params);\n });\n };\n\n const lockEntry: ILockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.lockEntry\", async () => {\n try {\n await onEntryBeforeLock.publish(params);\n const record = await lockEntryUseCase.execute(params);\n await onEntryAfterLock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryLockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const updateEntryLock: IUpdateEntryLockUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.updateEntryLock\", async () => {\n return updateEntryLockUseCase.execute(params);\n });\n };\n\n const unlockEntry: IUnlockEntryUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntry\", async () => {\n try {\n await onEntryBeforeUnlock.publish({\n ...params,\n getIdentity\n });\n const record = await unlockEntryUseCase.execute(params);\n await onEntryAfterUnlock.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n const unlockEntryRequest: IUnlockEntryRequestUseCaseExecute = async params => {\n return context.benchmark.measure(\"recordLocking.unlockEntryRequest\", async () => {\n try {\n await onEntryBeforeUnlockRequest.publish(params);\n const record = await unlockEntryRequestUseCase.execute(params);\n await onEntryAfterUnlockRequest.publish({\n ...params,\n record\n });\n return record;\n } catch (ex) {\n await onEntryUnlockRequestError.publish({\n ...params,\n error: ex\n });\n throw ex;\n }\n });\n };\n\n return {\n /**\n * Lifecycle events\n */\n onEntryBeforeLock,\n onEntryAfterLock,\n onEntryLockError,\n onEntryBeforeUnlock,\n onEntryAfterUnlock,\n onEntryUnlockError,\n onEntryBeforeUnlockRequest,\n onEntryAfterUnlockRequest,\n onEntryUnlockRequestError,\n /**\n * Methods\n */\n getModel,\n listLockRecords,\n listAllLockRecords,\n getLockRecord,\n isEntryLocked,\n getLockedEntryLockRecord,\n lockEntry,\n updateEntryLock,\n unlockEntry,\n unlockEntryRequest,\n getTimeout\n };\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAoBA,IAAAC,MAAA,GAAAD,OAAA;AAKA,IAAAE,SAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AAKA,IAAAI,WAAA,GAAAJ,OAAA;AAOO,MAAMK,uBAAuB,GAAG,MAAOC,MAAc,IAA8B;EACtF,MAAM;IAAEC;EAAQ,CAAC,GAAGD,MAAM;EAC1B,MAAME,UAAU,GAAGA,CAAA,KAAc;IAC7B,OAAO,IAAAC,sBAAc,EAACH,MAAM,CAACI,OAAO,CAAC;EACzC,CAAC;EACD,MAAMC,QAAQ,GAAG,MAAAA,CAAA,KAAY;IACzB,MAAMC,KAAK,GAAG,MAAML,OAAO,CAACM,GAAG,CAACF,QAAQ,CAACG,8BAAuB,CAAC;IACjE,IAAIF,KAAK,EAAE;MACP,OAAOA,KAAK;IAChB;IACA,MAAM,IAAIG,kBAAW,CAAC,iCAAiC,EAAE,iBAAiB,EAAE;MACxEC,OAAO,EAAEF;IACb,CAAC,CAAC;EACN,CAAC;EAED,MAAMG,UAAU,GAAG,MAAAA,CAAA,KAAiD;IAChE,OAAO,MAAMV,OAAO,CAACM,GAAG,CAACK,eAAe,CACpCJ,8BACJ,CAAC;EACL,CAAC;EAED,MAAMK,WAAW,GAAGA,CAAA,KAAM;IACtB,OAAOZ,OAAO,CAACa,QAAQ;EAC3B,CAAC;EAED,MAAMC,WAAyB,GAAGA,CAAA,KAAM;IACpC,MAAMC,QAAQ,GAAGf,OAAO,CAACa,QAAQ,CAACC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAACC,QAAQ,EAAE;MACX,MAAM,IAAIP,kBAAW,CAAC,mBAAmB,CAAC;IAC9C;IACA,OAAO;MACHQ,EAAE,EAAED,QAAQ,CAACC,EAAE;MACfC,WAAW,EAAEF,QAAQ,CAACE,WAAW;MACjCC,IAAI,EAAEH,QAAQ,CAACG;IACnB,CAAC;EACL,CAAC;EAED,MAAMC,sBAAuD,GAAG,MAAAA,CAAA,KAAY;IACxE,MAAMC,aAAa,GAAG,MAAMpB,OAAO,CAACa,QAAQ,CAACQ,aAAa,CAAC,CAAC;IAC5D,IAAID,aAAa,EAAE;MACf,OAAO,IAAI;IACf;IACA,MAAME,UAAU,GAAG,MAAMtB,OAAO,CAACa,QAAQ,CAACU,aAAa,CACnD,eACJ,CAAC;IACD,OAAOD,UAAU,EAAEE,cAAc,KAAK,KAAK;EAC/C,CAAC;EAED,MAAMC,iBAAiB,GAAG,IAAAC,mBAAW,EACjC,qCACJ,CAAC;EACD,MAAMC,gBAAgB,GAAG,IAAAD,mBAAW,EAChC,oCACJ,CAAC;EACD,MAAME,gBAAgB,GAAG,IAAAF,mBAAW,EAChC,oCACJ,CAAC;EAED,MAAMG,mBAAmB,GAAG,IAAAH,mBAAW,EACnC,uCACJ,CAAC;EACD,MAAMI,kBAAkB,GAAG,IAAAJ,mBAAW,EAClC,sCACJ,CAAC;EACD,MAAMK,kBAAkB,GAAG,IAAAL,mBAAW,EAClC,sCACJ,CAAC;EAED,MAAMM,0BAA0B,GAAG,IAAAN,mBAAW,EAC1C,8CACJ,CAAC;EACD,MAAMO,yBAAyB,GAAG,IAAAP,mBAAW,EACzC,6CACJ,CAAC;EACD,MAAMQ,yBAAyB,GAAG,IAAAR,mBAAW,EACzC,6CACJ,CAAC;EAED,MAAMS,aAA4C,GAAGA,CAAA,KAAM;IACvD,OAAOnC,OAAO,CAACoC,UAAU;EAC7B,CAAC;EAED,MAAM;IACFC,sBAAsB;IACtBC,yBAAyB;IACzBC,oBAAoB;IACpBC,oBAAoB;IACpBC,+BAA+B;IAC/BC,gBAAgB;IAChBC,sBAAsB;IACtBC,kBAAkB;IAClBC;EACJ,CAAC,GAAG,IAAAC,wBAAc,EAAC;IACfhC,WAAW;IACXJ,UAAU;IACVE,WAAW;IACXO,sBAAsB;IACtBgB,aAAa;IACblC;EACJ,CAAC,CAAC;EAEF,MAAM8C,kBAAqD,GAAG,MAAMhD,MAAM,IAAI;IAC1E,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,kCAAkC,EAAE,YAAY;MAC7E,OAAOX,yBAAyB,CAACY,OAAO,CAACnD,MAAM,CAAC;IACpD,CAAC,CAAC;EACN,CAAC;EAED,MAAMoD,eAA+C,GAAG,MAAMpD,MAAM,IAAI;IACpE,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,+BAA+B,EAAE,YAAY;MAC1E,OAAOZ,sBAAsB,CAACa,OAAO,CAACnD,MAAM,CAAC;IACjD,CAAC,CAAC;EACN,CAAC;EAED,MAAMqD,aAA2C,GAAG,MAAMrD,MAAM,IAAI;IAChE,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,6BAA6B,EAAE,YAAY;MACxE,OAAOV,oBAAoB,CAACW,OAAO,CAACnD,MAAM,CAAC;IAC/C,CAAC,CAAC;EACN,CAAC;EAED,MAAMsD,aAA2C,GAAG,MAAMtD,MAAM,IAAI;IAChE,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,6BAA6B,EAAE,YAAY;MACxE,OAAOT,oBAAoB,CAACU,OAAO,CAACnD,MAAM,CAAC;IAC/C,CAAC,CAAC;EACN,CAAC;EAED,MAAMuD,wBAAiE,GAAG,MAAMvD,MAAM,IAAI;IACtF,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,wCAAwC,EAAE,YAAY;MACnF,OAAOR,+BAA+B,CAACS,OAAO,CAACnD,MAAM,CAAC;IAC1D,CAAC,CAAC;EACN,CAAC;EAED,MAAMwD,SAAmC,GAAG,MAAMxD,MAAM,IAAI;IACxD,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,yBAAyB,EAAE,YAAY;MACpE,IAAI;QACA,MAAMxB,iBAAiB,CAAC+B,OAAO,CAACzD,MAAM,CAAC;QACvC,MAAM0D,MAAM,GAAG,MAAMf,gBAAgB,CAACQ,OAAO,CAACnD,MAAM,CAAC;QACrD,MAAM4B,gBAAgB,CAAC6B,OAAO,CAAC;UAC3B,GAAGzD,MAAM;UACT0D;QACJ,CAAC,CAAC;QACF,OAAOA,MAAM;MACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;QACT,MAAM9B,gBAAgB,CAAC4B,OAAO,CAAC;UAC3B,GAAGzD,MAAM;UACT4D,KAAK,EAAED;QACX,CAAC,CAAC;QACF,MAAMA,EAAE;MACZ;IACJ,CAAC,CAAC;EACN,CAAC;EAED,MAAME,eAA+C,GAAG,MAAM7D,MAAM,IAAI;IACpE,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,+BAA+B,EAAE,YAAY;MAC1E,OAAON,sBAAsB,CAACO,OAAO,CAACnD,MAAM,CAAC;IACjD,CAAC,CAAC;EACN,CAAC;EAED,MAAM8D,WAAuC,GAAG,MAAM9D,MAAM,IAAI;IAC5D,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,2BAA2B,EAAE,YAAY;MACtE,IAAI;QACA,MAAMpB,mBAAmB,CAAC2B,OAAO,CAAC;UAC9B,GAAGzD,MAAM;UACTe;QACJ,CAAC,CAAC;QACF,MAAM2C,MAAM,GAAG,MAAMb,kBAAkB,CAACM,OAAO,CAACnD,MAAM,CAAC;QACvD,MAAM+B,kBAAkB,CAAC0B,OAAO,CAAC;UAC7B,GAAGzD,MAAM;UACT0D;QACJ,CAAC,CAAC;QACF,OAAOA,MAAM;MACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;QACT,MAAM3B,kBAAkB,CAACyB,OAAO,CAAC;UAC7B,GAAGzD,MAAM;UACT4D,KAAK,EAAED;QACX,CAAC,CAAC;QACF,MAAMA,EAAE;MACZ;IACJ,CAAC,CAAC;EACN,CAAC;EAED,MAAMI,kBAAqD,GAAG,MAAM/D,MAAM,IAAI;IAC1E,OAAOC,OAAO,CAACgD,SAAS,CAACC,OAAO,CAAC,kCAAkC,EAAE,YAAY;MAC7E,IAAI;QACA,MAAMjB,0BAA0B,CAACwB,OAAO,CAACzD,MAAM,CAAC;QAChD,MAAM0D,MAAM,GAAG,MAAMZ,yBAAyB,CAACK,OAAO,CAACnD,MAAM,CAAC;QAC9D,MAAMkC,yBAAyB,CAACuB,OAAO,CAAC;UACpC,GAAGzD,MAAM;UACT0D;QACJ,CAAC,CAAC;QACF,OAAOA,MAAM;MACjB,CAAC,CAAC,OAAOC,EAAE,EAAE;QACT,MAAMxB,yBAAyB,CAACsB,OAAO,CAAC;UACpC,GAAGzD,MAAM;UACT4D,KAAK,EAAED;QACX,CAAC,CAAC;QACF,MAAMA,EAAE;MACZ;IACJ,CAAC,CAAC;EACN,CAAC;EAED,OAAO;IACH;AACR;AACA;IACQjC,iBAAiB;IACjBE,gBAAgB;IAChBC,gBAAgB;IAChBC,mBAAmB;IACnBC,kBAAkB;IAClBC,kBAAkB;IAClBC,0BAA0B;IAC1BC,yBAAyB;IACzBC,yBAAyB;IACzB;AACR;AACA;IACQ9B,QAAQ;IACR+C,eAAe;IACfJ,kBAAkB;IAClBK,aAAa;IACbC,aAAa;IACbC,wBAAwB;IACxBC,SAAS;IACTK,eAAe;IACfC,WAAW;IACXC,kBAAkB;IAClB7D;EACJ,CAAC;AACL,CAAC;AAAC8D,OAAA,CAAAjE,uBAAA,GAAAA,uBAAA","ignoreList":[]}
|
package/graphql/schema.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Context } from "../types";
|
|
2
|
-
import { IGraphQLSchemaPlugin } from "@webiny/handler-graphql";
|
|
1
|
+
import type { Context } from "../types";
|
|
2
|
+
import type { IGraphQLSchemaPlugin } from "@webiny/handler-graphql";
|
|
3
3
|
interface Params {
|
|
4
4
|
context: Pick<Context, "plugins" | "recordLocking" | "security" | "cms">;
|
|
5
5
|
}
|
package/graphql/schema.js.map
CHANGED
|
@@ -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 { Context } from \"~/types\";\nimport {\n createGraphQLSchemaPlugin,\n IGraphQLSchemaPlugin,\n NotFoundError\n} 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;AAEA,IAAAC,eAAA,GAAAD,OAAA;AAKA,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,"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":[]}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ContextPlugin } from "@webiny/api";
|
|
2
|
-
import { Context } from "./types";
|
|
2
|
+
import type { Context } from "./types";
|
|
3
3
|
export interface ICreateContextPluginParams {
|
|
4
4
|
/**
|
|
5
5
|
* A number of seconds after last activity to wait before the record is automatically unlocked.
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_schema","require","_api","_crud","_model","_apiHeadlessCms","createContextPlugin","params","plugin","ContextPlugin","context","wcp","canUseRecordLocking","ready","isHeadlessCmsReady","plugins","register","createLockingModel","recordLocking","createRecordLockingCrud","timeout","graphQlPlugin","createGraphQLSchema","name","createRecordLocking","exports"],"sources":["index.ts"],"sourcesContent":["import { createGraphQLSchema } from \"~/graphql/schema\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { Context } from \"~/types\";\nimport { createRecordLockingCrud } from \"~/crud/crud\";\nimport { createLockingModel } from \"~/crud/model\";\nimport { isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\n\nexport interface ICreateContextPluginParams {\n /**\n * A number of seconds after last activity to wait before the record is automatically unlocked.\n */\n timeout?: number;\n}\n\nconst createContextPlugin = (params?: ICreateContextPluginParams) => {\n const plugin = new ContextPlugin<Context>(async context => {\n if (!context.wcp.canUseRecordLocking()) {\n return;\n }\n\n const ready = await isHeadlessCmsReady(context);\n if (!ready) {\n return;\n }\n context.plugins.register(createLockingModel());\n\n context.recordLocking = await createRecordLockingCrud({\n context,\n timeout: params?.timeout\n });\n\n const graphQlPlugin = await createGraphQLSchema({ context });\n context.plugins.register(graphQlPlugin);\n });\n plugin.name = \"context.recordLocking\";\n\n return plugin;\n};\n\nexport const createRecordLocking = (params?: ICreateContextPluginParams) => {\n return [createContextPlugin(params)];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AASA,MAAMK,mBAAmB,GAAIC,MAAmC,IAAK;EACjE,MAAMC,MAAM,GAAG,IAAIC,kBAAa,CAAU,MAAMC,OAAO,IAAI;IACvD,IAAI,CAACA,OAAO,CAACC,GAAG,CAACC,mBAAmB,CAAC,CAAC,EAAE;MACpC;IACJ;IAEA,MAAMC,KAAK,GAAG,MAAM,IAAAC,kCAAkB,EAACJ,OAAO,CAAC;IAC/C,IAAI,CAACG,KAAK,EAAE;MACR;IACJ;IACAH,OAAO,CAACK,OAAO,CAACC,QAAQ,CAAC,IAAAC,yBAAkB,EAAC,CAAC,CAAC;IAE9CP,OAAO,CAACQ,aAAa,GAAG,MAAM,IAAAC,6BAAuB,EAAC;MAClDT,OAAO;MACPU,OAAO,EAAEb,MAAM,EAAEa;IACrB,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAG,MAAM,IAAAC,2BAAmB,EAAC;MAAEZ;IAAQ,CAAC,CAAC;IAC5DA,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACK,aAAa,CAAC;EAC3C,CAAC,CAAC;EACFb,MAAM,CAACe,IAAI,GAAG,uBAAuB;EAErC,OAAOf,MAAM;AACjB,CAAC;AAEM,MAAMgB,mBAAmB,GAAIjB,MAAmC,IAAK;EACxE,OAAO,CAACD,mBAAmB,CAACC,MAAM,CAAC,CAAC;AACxC,CAAC;AAACkB,OAAA,CAAAD,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_schema","require","_api","_crud","_model","_apiHeadlessCms","createContextPlugin","params","plugin","ContextPlugin","context","wcp","canUseRecordLocking","ready","isHeadlessCmsReady","plugins","register","createLockingModel","recordLocking","createRecordLockingCrud","timeout","graphQlPlugin","createGraphQLSchema","name","createRecordLocking","exports"],"sources":["index.ts"],"sourcesContent":["import { createGraphQLSchema } from \"~/graphql/schema\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport type { Context } from \"~/types\";\nimport { createRecordLockingCrud } from \"~/crud/crud\";\nimport { createLockingModel } from \"~/crud/model\";\nimport { isHeadlessCmsReady } from \"@webiny/api-headless-cms\";\n\nexport interface ICreateContextPluginParams {\n /**\n * A number of seconds after last activity to wait before the record is automatically unlocked.\n */\n timeout?: number;\n}\n\nconst createContextPlugin = (params?: ICreateContextPluginParams) => {\n const plugin = new ContextPlugin<Context>(async context => {\n if (!context.wcp.canUseRecordLocking()) {\n return;\n }\n\n const ready = await isHeadlessCmsReady(context);\n if (!ready) {\n return;\n }\n context.plugins.register(createLockingModel());\n\n context.recordLocking = await createRecordLockingCrud({\n context,\n timeout: params?.timeout\n });\n\n const graphQlPlugin = await createGraphQLSchema({ context });\n context.plugins.register(graphQlPlugin);\n });\n plugin.name = \"context.recordLocking\";\n\n return plugin;\n};\n\nexport const createRecordLocking = (params?: ICreateContextPluginParams) => {\n return [createContextPlugin(params)];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AASA,MAAMK,mBAAmB,GAAIC,MAAmC,IAAK;EACjE,MAAMC,MAAM,GAAG,IAAIC,kBAAa,CAAU,MAAMC,OAAO,IAAI;IACvD,IAAI,CAACA,OAAO,CAACC,GAAG,CAACC,mBAAmB,CAAC,CAAC,EAAE;MACpC;IACJ;IAEA,MAAMC,KAAK,GAAG,MAAM,IAAAC,kCAAkB,EAACJ,OAAO,CAAC;IAC/C,IAAI,CAACG,KAAK,EAAE;MACR;IACJ;IACAH,OAAO,CAACK,OAAO,CAACC,QAAQ,CAAC,IAAAC,yBAAkB,EAAC,CAAC,CAAC;IAE9CP,OAAO,CAACQ,aAAa,GAAG,MAAM,IAAAC,6BAAuB,EAAC;MAClDT,OAAO;MACPU,OAAO,EAAEb,MAAM,EAAEa;IACrB,CAAC,CAAC;IAEF,MAAMC,aAAa,GAAG,MAAM,IAAAC,2BAAmB,EAAC;MAAEZ;IAAQ,CAAC,CAAC;IAC5DA,OAAO,CAACK,OAAO,CAACC,QAAQ,CAACK,aAAa,CAAC;EAC3C,CAAC,CAAC;EACFb,MAAM,CAACe,IAAI,GAAG,uBAAuB;EAErC,OAAOf,MAAM;AACjB,CAAC;AAEM,MAAMgB,mBAAmB,GAAIjB,MAAmC,IAAK;EACxE,OAAO,CAACD,mBAAmB,CAACC,MAAM,CAAC,CAAC;AACxC,CAAC;AAACkB,OAAA,CAAAD,mBAAA,GAAAA,mBAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-record-locking",
|
|
3
|
-
"version": "6.0.0-alpha.
|
|
3
|
+
"version": "6.0.0-alpha.2",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,23 +12,23 @@
|
|
|
12
12
|
],
|
|
13
13
|
"license": "MIT",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@webiny/api": "6.0.0-alpha.
|
|
16
|
-
"@webiny/api-headless-cms": "6.0.0-alpha.
|
|
17
|
-
"@webiny/api-websockets": "6.0.0-alpha.
|
|
18
|
-
"@webiny/error": "6.0.0-alpha.
|
|
19
|
-
"@webiny/handler": "6.0.0-alpha.
|
|
20
|
-
"@webiny/handler-aws": "6.0.0-alpha.
|
|
21
|
-
"@webiny/handler-graphql": "6.0.0-alpha.
|
|
22
|
-
"@webiny/plugins": "6.0.0-alpha.
|
|
23
|
-
"@webiny/pubsub": "6.0.0-alpha.
|
|
24
|
-
"@webiny/utils": "6.0.0-alpha.
|
|
15
|
+
"@webiny/api": "6.0.0-alpha.2",
|
|
16
|
+
"@webiny/api-headless-cms": "6.0.0-alpha.2",
|
|
17
|
+
"@webiny/api-websockets": "6.0.0-alpha.2",
|
|
18
|
+
"@webiny/error": "6.0.0-alpha.2",
|
|
19
|
+
"@webiny/handler": "6.0.0-alpha.2",
|
|
20
|
+
"@webiny/handler-aws": "6.0.0-alpha.2",
|
|
21
|
+
"@webiny/handler-graphql": "6.0.0-alpha.2",
|
|
22
|
+
"@webiny/plugins": "6.0.0-alpha.2",
|
|
23
|
+
"@webiny/pubsub": "6.0.0-alpha.2",
|
|
24
|
+
"@webiny/utils": "6.0.0-alpha.2"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@webiny/api-i18n": "6.0.0-alpha.
|
|
28
|
-
"@webiny/api-security": "6.0.0-alpha.
|
|
29
|
-
"@webiny/api-tenancy": "6.0.0-alpha.
|
|
30
|
-
"@webiny/api-wcp": "6.0.0-alpha.
|
|
31
|
-
"@webiny/project-utils": "6.0.0-alpha.
|
|
27
|
+
"@webiny/api-i18n": "6.0.0-alpha.2",
|
|
28
|
+
"@webiny/api-security": "6.0.0-alpha.2",
|
|
29
|
+
"@webiny/api-tenancy": "6.0.0-alpha.2",
|
|
30
|
+
"@webiny/api-wcp": "6.0.0-alpha.2",
|
|
31
|
+
"@webiny/project-utils": "6.0.0-alpha.2",
|
|
32
32
|
"graphql": "15.9.0",
|
|
33
33
|
"rimraf": "6.0.1",
|
|
34
34
|
"type-fest": "4.14.0",
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"build": "node ../cli/bin.js run build",
|
|
43
43
|
"watch": "node ../cli/bin.js run watch"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "7c9e8fbfd62a57ece5f880dbad6c864636b0355e"
|
|
46
46
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { CmsContext,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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";
|
|
5
6
|
export { CmsError, CmsEntry };
|
|
6
7
|
export type IRecordLockingIdentity = CmsIdentity;
|
|
7
8
|
export type IRecordLockingModelManager = CmsModelManager<IRecordLockingLockRecordValues>;
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","RecordLockingLockRecordActionType","exports"],"sources":["types.ts"],"sourcesContent":["import {\n CmsContext,\n
|
|
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":[]}
|
package/useCases/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_GetLockRecordUseCase","require","_IsEntryLockedUseCase","_LockEntryUseCase","_UnlockEntryUseCase","_UnlockEntryRequestUseCase","_ListAllLockRecordsUseCase","_ListLockRecordsUseCase","_UpdateEntryLockUseCase","_KickOutCurrentUserUseCase","_GetLockedEntryLockRecordUseCase","_convertEntryToLockRecord","createUseCases","params","getTimeout","timeout","convertEntryToLockRecord","entry","baseConvertEntryToLockRecord","listAllLockRecordsUseCase","ListAllLockRecordsUseCase","getManager","convert","listLockRecordsUseCase","ListLockRecordsUseCase","getIdentity","getLockRecordUseCase","GetLockRecordUseCase","getSecurity","isEntryLockedUseCase","IsEntryLockedUseCase","getLockedEntryLockRecordUseCase","GetLockedEntryLockRecordUseCase","lockEntryUseCase","LockEntryUseCase","updateEntryLockUseCase","UpdateEntryLockUseCase","kickOutCurrentUserUseCase","KickOutCurrentUserUseCase","getWebsockets","unlockEntryUseCase","UnlockEntryUseCase","hasRecordLockingAccess","unlockEntryRequestUseCase","UnlockEntryRequestUseCase","exports"],"sources":["index.ts"],"sourcesContent":["import type {\n IGetIdentity,\n IGetWebsocketsContextCallable,\n IHasRecordLockingAccessCallable,\n IRecordLockingModelManager\n} from \"~/types\";\nimport { GetLockRecordUseCase } from \"./GetLockRecord/GetLockRecordUseCase\";\nimport { IsEntryLockedUseCase } from \"./IsEntryLocked/IsEntryLockedUseCase\";\nimport { LockEntryUseCase } from \"./LockEntryUseCase/LockEntryUseCase\";\nimport { UnlockEntryUseCase } from \"./UnlockEntryUseCase/UnlockEntryUseCase\";\nimport { UnlockEntryRequestUseCase } from \"./UnlockRequestUseCase/UnlockEntryRequestUseCase\";\nimport { ListAllLockRecordsUseCase } from \"./ListAllLockRecordsUseCase/ListAllLockRecordsUseCase\";\nimport { ListLockRecordsUseCase } from \"./ListLockRecordsUseCase/ListLockRecordsUseCase\";\nimport { UpdateEntryLockUseCase } from \"~/useCases/UpdateEntryLock/UpdateEntryLockUseCase\";\nimport { KickOutCurrentUserUseCase } from \"./KickOutCurrentUser/KickOutCurrentUserUseCase\";\nimport { GetLockedEntryLockRecordUseCase } from \"~/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase\";\nimport type { IListAllLockRecordsUseCase } from \"~/abstractions/IListAllLockRecordsUseCase\";\nimport type { IListLockRecordsUseCase } from \"~/abstractions/IListLockRecordsUseCase\";\nimport type { IGetLockRecordUseCase } from \"~/abstractions/IGetLockRecordUseCase\";\nimport type { IIsEntryLockedUseCase } from \"~/abstractions/IIsEntryLocked\";\nimport type { IGetLockedEntryLockRecordUseCase } from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\nimport type { ILockEntryUseCase } from \"~/abstractions/ILockEntryUseCase\";\nimport type { IUpdateEntryLockUseCase } from \"~/abstractions/IUpdateEntryLockUseCase\";\nimport type { IUnlockEntryUseCase } from \"~/abstractions/IUnlockEntryUseCase\";\nimport type { IUnlockEntryRequestUseCase } from \"~/abstractions/IUnlockEntryRequestUseCase\";\nimport { convertEntryToLockRecord as baseConvertEntryToLockRecord } from \"~/utils/convertEntryToLockRecord\";\nimport { ConvertEntryToLockRecordCb } from \"~/useCases/types\";\nimport type { Security } from \"@webiny/api-security/types\";\n\nexport interface ICreateUseCasesParams {\n getTimeout: () => number;\n getIdentity: IGetIdentity;\n getManager(): Promise<IRecordLockingModelManager>;\n getSecurity(): Pick<Security, \"withoutAuthorization\">;\n hasRecordLockingAccess: IHasRecordLockingAccessCallable;\n getWebsockets: IGetWebsocketsContextCallable;\n}\n\nexport interface ICreateUseCasesResponse {\n listAllLockRecordsUseCase: IListAllLockRecordsUseCase;\n listLockRecordsUseCase: IListLockRecordsUseCase;\n getLockRecordUseCase: IGetLockRecordUseCase;\n isEntryLockedUseCase: IIsEntryLockedUseCase;\n getLockedEntryLockRecordUseCase: IGetLockedEntryLockRecordUseCase;\n lockEntryUseCase: ILockEntryUseCase;\n updateEntryLockUseCase: IUpdateEntryLockUseCase;\n unlockEntryUseCase: IUnlockEntryUseCase;\n unlockEntryRequestUseCase: IUnlockEntryRequestUseCase;\n}\n\nexport const createUseCases = (params: ICreateUseCasesParams): ICreateUseCasesResponse => {\n const { getTimeout } = params;\n const timeout = getTimeout();\n\n const convertEntryToLockRecord: ConvertEntryToLockRecordCb = entry => {\n return baseConvertEntryToLockRecord(entry, timeout);\n };\n\n const listAllLockRecordsUseCase = new ListAllLockRecordsUseCase({\n getManager: params.getManager,\n convert: convertEntryToLockRecord\n });\n\n const listLockRecordsUseCase = new ListLockRecordsUseCase({\n listAllLockRecordsUseCase,\n timeout,\n getIdentity: params.getIdentity\n });\n\n const getLockRecordUseCase = new GetLockRecordUseCase({\n getManager: params.getManager,\n getSecurity: params.getSecurity,\n convert: convertEntryToLockRecord\n });\n\n const isEntryLockedUseCase = new IsEntryLockedUseCase({\n getLockRecordUseCase,\n getIdentity: params.getIdentity\n });\n\n const getLockedEntryLockRecordUseCase = new GetLockedEntryLockRecordUseCase({\n getLockRecordUseCase,\n getIdentity: params.getIdentity\n });\n\n const lockEntryUseCase = new LockEntryUseCase({\n isEntryLockedUseCase,\n getManager: params.getManager,\n getSecurity: params.getSecurity,\n getIdentity: params.getIdentity,\n convert: convertEntryToLockRecord\n });\n\n const updateEntryLockUseCase = new UpdateEntryLockUseCase({\n getLockRecordUseCase,\n lockEntryUseCase,\n getManager: params.getManager,\n getSecurity: params.getSecurity,\n getIdentity: params.getIdentity,\n convert: convertEntryToLockRecord\n });\n\n const kickOutCurrentUserUseCase = new KickOutCurrentUserUseCase({\n getWebsockets: params.getWebsockets,\n getIdentity: params.getIdentity\n });\n\n const unlockEntryUseCase = new UnlockEntryUseCase({\n getLockRecordUseCase,\n kickOutCurrentUserUseCase,\n getManager: params.getManager,\n getSecurity: params.getSecurity,\n getIdentity: params.getIdentity,\n hasRecordLockingAccess: params.hasRecordLockingAccess\n });\n\n const unlockEntryRequestUseCase = new UnlockEntryRequestUseCase({\n getLockRecordUseCase,\n getIdentity: params.getIdentity,\n getSecurity: params.getSecurity,\n getManager: params.getManager,\n convert: convertEntryToLockRecord\n });\n\n return {\n listAllLockRecordsUseCase,\n listLockRecordsUseCase,\n getLockRecordUseCase,\n isEntryLockedUseCase,\n getLockedEntryLockRecordUseCase,\n lockEntryUseCase,\n updateEntryLockUseCase,\n unlockEntryUseCase,\n unlockEntryRequestUseCase\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_GetLockRecordUseCase","require","_IsEntryLockedUseCase","_LockEntryUseCase","_UnlockEntryUseCase","_UnlockEntryRequestUseCase","_ListAllLockRecordsUseCase","_ListLockRecordsUseCase","_UpdateEntryLockUseCase","_KickOutCurrentUserUseCase","_GetLockedEntryLockRecordUseCase","_convertEntryToLockRecord","createUseCases","params","getTimeout","timeout","convertEntryToLockRecord","entry","baseConvertEntryToLockRecord","listAllLockRecordsUseCase","ListAllLockRecordsUseCase","getManager","convert","listLockRecordsUseCase","ListLockRecordsUseCase","getIdentity","getLockRecordUseCase","GetLockRecordUseCase","getSecurity","isEntryLockedUseCase","IsEntryLockedUseCase","getLockedEntryLockRecordUseCase","GetLockedEntryLockRecordUseCase","lockEntryUseCase","LockEntryUseCase","updateEntryLockUseCase","UpdateEntryLockUseCase","kickOutCurrentUserUseCase","KickOutCurrentUserUseCase","getWebsockets","unlockEntryUseCase","UnlockEntryUseCase","hasRecordLockingAccess","unlockEntryRequestUseCase","UnlockEntryRequestUseCase","exports"],"sources":["index.ts"],"sourcesContent":["import type {\n IGetIdentity,\n IGetWebsocketsContextCallable,\n IHasRecordLockingAccessCallable,\n IRecordLockingModelManager\n} from \"~/types\";\nimport { GetLockRecordUseCase } from \"./GetLockRecord/GetLockRecordUseCase\";\nimport { IsEntryLockedUseCase } from \"./IsEntryLocked/IsEntryLockedUseCase\";\nimport { LockEntryUseCase } from \"./LockEntryUseCase/LockEntryUseCase\";\nimport { UnlockEntryUseCase } from \"./UnlockEntryUseCase/UnlockEntryUseCase\";\nimport { UnlockEntryRequestUseCase } from \"./UnlockRequestUseCase/UnlockEntryRequestUseCase\";\nimport { ListAllLockRecordsUseCase } from \"./ListAllLockRecordsUseCase/ListAllLockRecordsUseCase\";\nimport { ListLockRecordsUseCase } from \"./ListLockRecordsUseCase/ListLockRecordsUseCase\";\nimport { UpdateEntryLockUseCase } from \"~/useCases/UpdateEntryLock/UpdateEntryLockUseCase\";\nimport { KickOutCurrentUserUseCase } from \"./KickOutCurrentUser/KickOutCurrentUserUseCase\";\nimport { GetLockedEntryLockRecordUseCase } from \"~/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase\";\nimport type { IListAllLockRecordsUseCase } from \"~/abstractions/IListAllLockRecordsUseCase\";\nimport type { IListLockRecordsUseCase } from \"~/abstractions/IListLockRecordsUseCase\";\nimport type { IGetLockRecordUseCase } from \"~/abstractions/IGetLockRecordUseCase\";\nimport type { IIsEntryLockedUseCase } from \"~/abstractions/IIsEntryLocked\";\nimport type { IGetLockedEntryLockRecordUseCase } from \"~/abstractions/IGetLockedEntryLockRecordUseCase\";\nimport type { ILockEntryUseCase } from \"~/abstractions/ILockEntryUseCase\";\nimport type { IUpdateEntryLockUseCase } from \"~/abstractions/IUpdateEntryLockUseCase\";\nimport type { IUnlockEntryUseCase } from \"~/abstractions/IUnlockEntryUseCase\";\nimport type { IUnlockEntryRequestUseCase } from \"~/abstractions/IUnlockEntryRequestUseCase\";\nimport { convertEntryToLockRecord as baseConvertEntryToLockRecord } from \"~/utils/convertEntryToLockRecord\";\nimport type { ConvertEntryToLockRecordCb } from \"~/useCases/types\";\nimport type { Security } from \"@webiny/api-security/types\";\n\nexport interface ICreateUseCasesParams {\n getTimeout: () => number;\n getIdentity: IGetIdentity;\n getManager(): Promise<IRecordLockingModelManager>;\n getSecurity(): Pick<Security, \"withoutAuthorization\">;\n hasRecordLockingAccess: IHasRecordLockingAccessCallable;\n getWebsockets: IGetWebsocketsContextCallable;\n}\n\nexport interface ICreateUseCasesResponse {\n listAllLockRecordsUseCase: IListAllLockRecordsUseCase;\n listLockRecordsUseCase: IListLockRecordsUseCase;\n getLockRecordUseCase: IGetLockRecordUseCase;\n isEntryLockedUseCase: IIsEntryLockedUseCase;\n getLockedEntryLockRecordUseCase: IGetLockedEntryLockRecordUseCase;\n lockEntryUseCase: ILockEntryUseCase;\n updateEntryLockUseCase: IUpdateEntryLockUseCase;\n unlockEntryUseCase: IUnlockEntryUseCase;\n unlockEntryRequestUseCase: IUnlockEntryRequestUseCase;\n}\n\nexport const createUseCases = (params: ICreateUseCasesParams): ICreateUseCasesResponse => {\n const { getTimeout } = params;\n const timeout = getTimeout();\n\n const convertEntryToLockRecord: ConvertEntryToLockRecordCb = entry => {\n return baseConvertEntryToLockRecord(entry, timeout);\n };\n\n const listAllLockRecordsUseCase = new ListAllLockRecordsUseCase({\n getManager: params.getManager,\n convert: convertEntryToLockRecord\n });\n\n const listLockRecordsUseCase = new ListLockRecordsUseCase({\n listAllLockRecordsUseCase,\n timeout,\n getIdentity: params.getIdentity\n });\n\n const getLockRecordUseCase = new GetLockRecordUseCase({\n getManager: params.getManager,\n getSecurity: params.getSecurity,\n convert: convertEntryToLockRecord\n });\n\n const isEntryLockedUseCase = new IsEntryLockedUseCase({\n getLockRecordUseCase,\n getIdentity: params.getIdentity\n });\n\n const getLockedEntryLockRecordUseCase = new GetLockedEntryLockRecordUseCase({\n getLockRecordUseCase,\n getIdentity: params.getIdentity\n });\n\n const lockEntryUseCase = new LockEntryUseCase({\n isEntryLockedUseCase,\n getManager: params.getManager,\n getSecurity: params.getSecurity,\n getIdentity: params.getIdentity,\n convert: convertEntryToLockRecord\n });\n\n const updateEntryLockUseCase = new UpdateEntryLockUseCase({\n getLockRecordUseCase,\n lockEntryUseCase,\n getManager: params.getManager,\n getSecurity: params.getSecurity,\n getIdentity: params.getIdentity,\n convert: convertEntryToLockRecord\n });\n\n const kickOutCurrentUserUseCase = new KickOutCurrentUserUseCase({\n getWebsockets: params.getWebsockets,\n getIdentity: params.getIdentity\n });\n\n const unlockEntryUseCase = new UnlockEntryUseCase({\n getLockRecordUseCase,\n kickOutCurrentUserUseCase,\n getManager: params.getManager,\n getSecurity: params.getSecurity,\n getIdentity: params.getIdentity,\n hasRecordLockingAccess: params.hasRecordLockingAccess\n });\n\n const unlockEntryRequestUseCase = new UnlockEntryRequestUseCase({\n getLockRecordUseCase,\n getIdentity: params.getIdentity,\n getSecurity: params.getSecurity,\n getManager: params.getManager,\n convert: convertEntryToLockRecord\n });\n\n return {\n listAllLockRecordsUseCase,\n listLockRecordsUseCase,\n getLockRecordUseCase,\n isEntryLockedUseCase,\n getLockedEntryLockRecordUseCase,\n lockEntryUseCase,\n updateEntryLockUseCase,\n unlockEntryUseCase,\n unlockEntryRequestUseCase\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { IHeadlessCmsLockRecordParams } from "./convertEntryToLockRecord";
|
|
1
|
+
import type { IHeadlessCmsLockRecordParams } from "./convertEntryToLockRecord";
|
|
2
2
|
export declare const calculateExpiresOn: (input: Pick<IHeadlessCmsLockRecordParams, "savedOn">, timeout: number) => Date;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["calculateExpiresOn","input","timeout","savedOn","Error","Date","getTime","exports"],"sources":["calculateExpiresOn.ts"],"sourcesContent":["import { IHeadlessCmsLockRecordParams } from \"./convertEntryToLockRecord\";\n\nexport const calculateExpiresOn = (\n input: Pick<IHeadlessCmsLockRecordParams, \"savedOn\">,\n timeout: number\n): Date => {\n if (!input.savedOn) {\n throw new Error(\"Missing savedOn property.\");\n }\n const savedOn = new Date(input.savedOn);\n\n return new Date(savedOn.getTime() + timeout);\n};\n"],"mappings":";;;;;;AAEO,MAAMA,kBAAkB,GAAGA,CAC9BC,KAAoD,EACpDC,OAAe,KACR;EACP,IAAI,CAACD,KAAK,CAACE,OAAO,EAAE;IAChB,MAAM,IAAIC,KAAK,CAAC,2BAA2B,CAAC;EAChD;EACA,MAAMD,OAAO,GAAG,IAAIE,IAAI,CAACJ,KAAK,CAACE,OAAO,CAAC;EAEvC,OAAO,IAAIE,IAAI,CAACF,OAAO,CAACG,OAAO,CAAC,CAAC,GAAGJ,OAAO,CAAC;AAChD,CAAC;AAACK,OAAA,CAAAP,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["calculateExpiresOn","input","timeout","savedOn","Error","Date","getTime","exports"],"sources":["calculateExpiresOn.ts"],"sourcesContent":["import type { IHeadlessCmsLockRecordParams } from \"./convertEntryToLockRecord\";\n\nexport const calculateExpiresOn = (\n input: Pick<IHeadlessCmsLockRecordParams, \"savedOn\">,\n timeout: number\n): Date => {\n if (!input.savedOn) {\n throw new Error(\"Missing savedOn property.\");\n }\n const savedOn = new Date(input.savedOn);\n\n return new Date(savedOn.getTime() + timeout);\n};\n"],"mappings":";;;;;;AAEO,MAAMA,kBAAkB,GAAGA,CAC9BC,KAAoD,EACpDC,OAAe,KACR;EACP,IAAI,CAACD,KAAK,CAACE,OAAO,EAAE;IAChB,MAAM,IAAIC,KAAK,CAAC,2BAA2B,CAAC;EAChD;EACA,MAAMD,OAAO,GAAG,IAAIE,IAAI,CAACJ,KAAK,CAACE,OAAO,CAAC;EAEvC,OAAO,IAAIE,IAAI,CAACF,OAAO,CAACG,OAAO,CAAC,CAAC,GAAGJ,OAAO,CAAC;AAChD,CAAC;AAACK,OAAA,CAAAP,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_apiSecurity","require","checkPermissions","context","identity","security","getIdentity","id","NotAuthorizedError","exports"],"sources":["checkPermissions.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { Context } from \"~/types\";\n\n/**\n * Simple permission check. Only full access can access the websockets API via GraphQL - ({name: \"*\"})\n *\n * @throws\n */\nexport const checkPermissions = async (context: Pick<Context, \"security\">): Promise<void> => {\n const identity = context.security.getIdentity();\n if (!identity.id) {\n throw new NotAuthorizedError();\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAG,MAAOC,OAAkC,IAAoB;EACzF,MAAMC,QAAQ,GAAGD,OAAO,CAACE,QAAQ,CAACC,WAAW,CAAC,CAAC;EAC/C,IAAI,CAACF,QAAQ,CAACG,EAAE,EAAE;IACd,MAAM,IAAIC,+BAAkB,CAAC,CAAC;EAClC;AACJ,CAAC;AAACC,OAAA,CAAAP,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_apiSecurity","require","checkPermissions","context","identity","security","getIdentity","id","NotAuthorizedError","exports"],"sources":["checkPermissions.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport type { Context } from \"~/types\";\n\n/**\n * Simple permission check. Only full access can access the websockets API via GraphQL - ({name: \"*\"})\n *\n * @throws\n */\nexport const checkPermissions = async (context: Pick<Context, \"security\">): Promise<void> => {\n const identity = context.security.getIdentity();\n if (!identity.id) {\n throw new NotAuthorizedError();\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAGA;AACA;AACA;AACA;AACA;AACO,MAAMC,gBAAgB,GAAG,MAAOC,OAAkC,IAAoB;EACzF,MAAMC,QAAQ,GAAGD,OAAO,CAACE,QAAQ,CAACC,WAAW,CAAC,CAAC;EAC/C,IAAI,CAACF,QAAQ,CAACG,EAAE,EAAE;IACd,MAAM,IAAIC,+BAAkB,CAAC,CAAC;EAClC;AACJ,CAAC;AAACC,OAAA,CAAAP,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IRecordLockingListLockRecordsParams } from "../types";
|
|
1
|
+
import type { IRecordLockingListLockRecordsParams } from "../types";
|
|
2
2
|
type IWhere = IRecordLockingListLockRecordsParams["where"] | undefined;
|
|
3
3
|
export declare const convertWhereCondition: (where: IWhere) => IWhere;
|
|
4
4
|
export {};
|
|
@@ -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 { 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,"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":[]}
|
package/utils/resolve.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ErrorResponse, Response } from "@webiny/handler-graphql";
|
|
2
|
-
import { IRecordLockingMeta } from "../types";
|
|
3
|
-
export declare const resolve: <T>(cb: () => Promise<T>) => Promise<
|
|
2
|
+
import type { IRecordLockingMeta } from "../types";
|
|
3
|
+
export declare const resolve: <T>(cb: () => Promise<T>) => Promise<Response<T> | ErrorResponse>;
|
|
4
4
|
export interface IListResponse<T> {
|
|
5
5
|
items: T[];
|
|
6
6
|
meta: IRecordLockingMeta;
|
package/utils/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_handlerGraphql","require","resolve","cb","result","Response","ex","ErrorResponse","exports","resolveList","items","meta","ListResponse","ListErrorResponse"],"sources":["resolve.ts"],"sourcesContent":["import { ErrorResponse, ListErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\nimport { IRecordLockingMeta } from \"~/types\";\n\nexport const resolve = async <T>(cb: () => Promise<T>): Promise<Response<T> | ErrorResponse> => {\n try {\n const result = await cb();\n return new Response<T>(result);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\nexport interface IListResponse<T> {\n items: T[];\n meta: IRecordLockingMeta;\n}\n\nexport const resolveList = async <T>(\n cb: () => Promise<IListResponse<T>>\n): Promise<Response<T[]> | ErrorResponse> => {\n try {\n const { items, meta } = await cb();\n return new ListResponse(items, meta);\n } catch (ex) {\n return new ListErrorResponse(ex);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAGO,MAAMC,OAAO,GAAG,MAAUC,EAAoB,IAA2C;EAC5F,IAAI;IACA,MAAMC,MAAM,GAAG,MAAMD,EAAE,CAAC,CAAC;IACzB,OAAO,IAAIE,wBAAQ,CAAID,MAAM,CAAC;EAClC,CAAC,CAAC,OAAOE,EAAE,EAAE;IACT,OAAO,IAAIC,6BAAa,CAACD,EAAE,CAAC;EAChC;AACJ,CAAC;AAACE,OAAA,CAAAN,OAAA,GAAAA,OAAA;AAOK,MAAMO,WAAW,GAAG,MACvBN,EAAmC,IACM;EACzC,IAAI;IACA,MAAM;MAAEO,KAAK;MAAEC;IAAK,CAAC,GAAG,MAAMR,EAAE,CAAC,CAAC;IAClC,OAAO,IAAIS,4BAAY,CAACF,KAAK,EAAEC,IAAI,CAAC;EACxC,CAAC,CAAC,OAAOL,EAAE,EAAE;IACT,OAAO,IAAIO,iCAAiB,CAACP,EAAE,CAAC;EACpC;AACJ,CAAC;AAACE,OAAA,CAAAC,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_handlerGraphql","require","resolve","cb","result","Response","ex","ErrorResponse","exports","resolveList","items","meta","ListResponse","ListErrorResponse"],"sources":["resolve.ts"],"sourcesContent":["import { ErrorResponse, ListErrorResponse, ListResponse, Response } from \"@webiny/handler-graphql\";\nimport type { IRecordLockingMeta } from \"~/types\";\n\nexport const resolve = async <T>(cb: () => Promise<T>): Promise<Response<T> | ErrorResponse> => {\n try {\n const result = await cb();\n return new Response<T>(result);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\nexport interface IListResponse<T> {\n items: T[];\n meta: IRecordLockingMeta;\n}\n\nexport const resolveList = async <T>(\n cb: () => Promise<IListResponse<T>>\n): Promise<Response<T[]> | ErrorResponse> => {\n try {\n const { items, meta } = await cb();\n return new ListResponse(items, meta);\n } catch (ex) {\n return new ListErrorResponse(ex);\n }\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAGO,MAAMC,OAAO,GAAG,MAAUC,EAAoB,IAA2C;EAC5F,IAAI;IACA,MAAMC,MAAM,GAAG,MAAMD,EAAE,CAAC,CAAC;IACzB,OAAO,IAAIE,wBAAQ,CAAID,MAAM,CAAC;EAClC,CAAC,CAAC,OAAOE,EAAE,EAAE;IACT,OAAO,IAAIC,6BAAa,CAACD,EAAE,CAAC;EAChC;AACJ,CAAC;AAACE,OAAA,CAAAN,OAAA,GAAAA,OAAA;AAOK,MAAMO,WAAW,GAAG,MACvBN,EAAmC,IACM;EACzC,IAAI;IACA,MAAM;MAAEO,KAAK;MAAEC;IAAK,CAAC,GAAG,MAAMR,EAAE,CAAC,CAAC;IAClC,OAAO,IAAIS,4BAAY,CAACF,KAAK,EAAEC,IAAI,CAAC;EACxC,CAAC,CAAC,OAAOL,EAAE,EAAE;IACT,OAAO,IAAIO,iCAAiB,CAACP,EAAE,CAAC;EACpC;AACJ,CAAC;AAACE,OAAA,CAAAC,WAAA,GAAAA,WAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_apiSecurity","require","validateSameIdentity","params","getIdentity","target","identity","id","NotAuthorizedError","message","code","exports"],"sources":["validateSameIdentity.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { IRecordLockingIdentity } from \"~/types\";\n\nexport interface IValidateSameIdentityParams {\n getIdentity: () => Pick<IRecordLockingIdentity, \"id\">;\n target: Pick<IRecordLockingIdentity, \"id\">;\n}\n\nexport const validateSameIdentity = (params: IValidateSameIdentityParams): void => {\n const { getIdentity, target } = params;\n const identity = getIdentity();\n if (identity.id === target.id) {\n return;\n }\n throw new NotAuthorizedError({\n message: \"Cannot update lock record. Record is locked by another user.\",\n code: \"LOCK_UPDATE_ERROR\"\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAQO,MAAMC,oBAAoB,GAAIC,MAAmC,IAAW;EAC/E,MAAM;IAAEC,WAAW;IAAEC;EAAO,CAAC,GAAGF,MAAM;EACtC,MAAMG,QAAQ,GAAGF,WAAW,CAAC,CAAC;EAC9B,IAAIE,QAAQ,CAACC,EAAE,KAAKF,MAAM,CAACE,EAAE,EAAE;IAC3B;EACJ;EACA,MAAM,IAAIC,+BAAkB,CAAC;IACzBC,OAAO,EAAE,8DAA8D;IACvEC,IAAI,EAAE;EACV,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAT,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_apiSecurity","require","validateSameIdentity","params","getIdentity","target","identity","id","NotAuthorizedError","message","code","exports"],"sources":["validateSameIdentity.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport type { IRecordLockingIdentity } from \"~/types\";\n\nexport interface IValidateSameIdentityParams {\n getIdentity: () => Pick<IRecordLockingIdentity, \"id\">;\n target: Pick<IRecordLockingIdentity, \"id\">;\n}\n\nexport const validateSameIdentity = (params: IValidateSameIdentityParams): void => {\n const { getIdentity, target } = params;\n const identity = getIdentity();\n if (identity.id === target.id) {\n return;\n }\n throw new NotAuthorizedError({\n message: \"Cannot update lock record. Record is locked by another user.\",\n code: \"LOCK_UPDATE_ERROR\"\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAQO,MAAMC,oBAAoB,GAAIC,MAAmC,IAAW;EAC/E,MAAM;IAAEC,WAAW;IAAEC;EAAO,CAAC,GAAGF,MAAM;EACtC,MAAMG,QAAQ,GAAGF,WAAW,CAAC,CAAC;EAC9B,IAAIE,QAAQ,CAACC,EAAE,KAAKF,MAAM,CAACE,EAAE,EAAE;IAC3B;EACJ;EACA,MAAM,IAAIC,+BAAkB,CAAC;IACzBC,OAAO,EAAE,8DAA8D;IACvEC,IAAI,EAAE;EACV,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAT,oBAAA,GAAAA,oBAAA","ignoreList":[]}
|