@webiny/api-record-locking 0.0.0-unstable.06b2ede40f
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/LICENSE +21 -0
- package/README.md +10 -0
- package/abstractions/IGetLockRecordUseCase.d.ts +8 -0
- package/abstractions/IGetLockRecordUseCase.js +7 -0
- package/abstractions/IGetLockRecordUseCase.js.map +1 -0
- package/abstractions/IGetLockedEntryLockRecordUseCase.d.ts +8 -0
- package/abstractions/IGetLockedEntryLockRecordUseCase.js +7 -0
- package/abstractions/IGetLockedEntryLockRecordUseCase.js.map +1 -0
- package/abstractions/IIsEntryLocked.d.ts +8 -0
- package/abstractions/IIsEntryLocked.js +7 -0
- package/abstractions/IIsEntryLocked.js.map +1 -0
- package/abstractions/IKickOutCurrentUserUseCase.d.ts +5 -0
- package/abstractions/IKickOutCurrentUserUseCase.js +7 -0
- package/abstractions/IKickOutCurrentUserUseCase.js.map +1 -0
- package/abstractions/IListAllLockRecordsUseCase.d.ts +9 -0
- package/abstractions/IListAllLockRecordsUseCase.js +7 -0
- package/abstractions/IListAllLockRecordsUseCase.js.map +1 -0
- package/abstractions/IListLockRecordsUseCase.d.ts +10 -0
- package/abstractions/IListLockRecordsUseCase.js +7 -0
- package/abstractions/IListLockRecordsUseCase.js.map +1 -0
- package/abstractions/ILockEntryUseCase.d.ts +11 -0
- package/abstractions/ILockEntryUseCase.js +7 -0
- package/abstractions/ILockEntryUseCase.js.map +1 -0
- package/abstractions/IUnlockEntryRequestUseCase.d.ts +11 -0
- package/abstractions/IUnlockEntryRequestUseCase.js +7 -0
- package/abstractions/IUnlockEntryRequestUseCase.js.map +1 -0
- package/abstractions/IUnlockEntryUseCase.d.ts +12 -0
- package/abstractions/IUnlockEntryUseCase.js +7 -0
- package/abstractions/IUnlockEntryUseCase.js.map +1 -0
- package/abstractions/IUpdateEntryLockUseCase.d.ts +11 -0
- package/abstractions/IUpdateEntryLockUseCase.js +7 -0
- package/abstractions/IUpdateEntryLockUseCase.js.map +1 -0
- package/crud/crud.d.ts +7 -0
- package/crud/crud.js +204 -0
- package/crud/crud.js.map +1 -0
- package/crud/model.d.ts +2 -0
- package/crud/model.js +127 -0
- package/crud/model.js.map +1 -0
- package/graphql/schema.d.ts +7 -0
- package/graphql/schema.js +280 -0
- package/graphql/schema.js.map +1 -0
- package/index.d.ts +9 -0
- package/index.js +39 -0
- package/index.js.map +1 -0
- package/package.json +46 -0
- package/types.d.ts +182 -0
- package/types.js +30 -0
- package/types.js.map +1 -0
- package/useCases/GetLockRecord/GetLockRecordUseCase.d.ts +16 -0
- package/useCases/GetLockRecord/GetLockRecordUseCase.js +39 -0
- package/useCases/GetLockRecord/GetLockRecordUseCase.js.map +1 -0
- package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +16 -0
- package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js +29 -0
- package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -0
- package/useCases/IsEntryLocked/IsEntryLockedUseCase.d.ts +13 -0
- package/useCases/IsEntryLocked/IsEntryLockedUseCase.js +31 -0
- package/useCases/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -0
- package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +12 -0
- package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js +46 -0
- package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -0
- package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.d.ts +13 -0
- package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js +34 -0
- package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js.map +1 -0
- package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.d.ts +14 -0
- package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js +27 -0
- package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js.map +1 -0
- package/useCases/LockEntryUseCase/LockEntryUseCase.d.ts +21 -0
- package/useCases/LockEntryUseCase/LockEntryUseCase.js +64 -0
- package/useCases/LockEntryUseCase/LockEntryUseCase.js.map +1 -0
- package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.d.ts +23 -0
- package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js +90 -0
- package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js.map +1 -0
- package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.d.ts +21 -0
- package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js +82 -0
- package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js.map +1 -0
- package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +26 -0
- package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js +93 -0
- package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -0
- package/useCases/index.d.ts +31 -0
- package/useCases/index.js +96 -0
- package/useCases/index.js.map +1 -0
- package/useCases/types.d.ts +5 -0
- package/useCases/types.js +7 -0
- package/useCases/types.js.map +1 -0
- package/utils/calculateExpiresOn.d.ts +2 -0
- package/utils/calculateExpiresOn.js +16 -0
- package/utils/calculateExpiresOn.js.map +1 -0
- package/utils/checkPermissions.d.ts +7 -0
- package/utils/checkPermissions.js +21 -0
- package/utils/checkPermissions.js.map +1 -0
- package/utils/convertEntryToLockRecord.d.ts +28 -0
- package/utils/convertEntryToLockRecord.js +91 -0
- package/utils/convertEntryToLockRecord.js.map +1 -0
- package/utils/convertWhereCondition.d.ts +4 -0
- package/utils/convertWhereCondition.js +41 -0
- package/utils/convertWhereCondition.js.map +1 -0
- package/utils/getTimeout.d.ts +5 -0
- package/utils/getTimeout.js +28 -0
- package/utils/getTimeout.js.map +1 -0
- package/utils/lockRecordDatabaseId.d.ts +2 -0
- package/utils/lockRecordDatabaseId.js +24 -0
- package/utils/lockRecordDatabaseId.js.map +1 -0
- package/utils/resolve.d.ts +8 -0
- package/utils/resolve.js +30 -0
- package/utils/resolve.js.map +1 -0
- package/utils/validateSameIdentity.d.ts +6 -0
- package/utils/validateSameIdentity.js +24 -0
- package/utils/validateSameIdentity.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { CmsEntry } from \"@webiny/api-headless-cms/types\";\nimport type { IRecordLockingLockRecord, IRecordLockingLockRecordValues } from \"~/types\";\n\nexport interface ConvertEntryToLockRecordCb {\n (entry: CmsEntry<IRecordLockingLockRecordValues>): IRecordLockingLockRecord;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.calculateExpiresOn = void 0;
|
|
7
|
+
const calculateExpiresOn = (input, timeout) => {
|
|
8
|
+
if (!input.savedOn) {
|
|
9
|
+
throw new Error("Missing savedOn property.");
|
|
10
|
+
}
|
|
11
|
+
const savedOn = new Date(input.savedOn);
|
|
12
|
+
return new Date(savedOn.getTime() + timeout);
|
|
13
|
+
};
|
|
14
|
+
exports.calculateExpiresOn = calculateExpiresOn;
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=calculateExpiresOn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.checkPermissions = void 0;
|
|
7
|
+
var _apiSecurity = require("@webiny/api-security");
|
|
8
|
+
/**
|
|
9
|
+
* Simple permission check. Only full access can access the websockets API via GraphQL - ({name: "*"})
|
|
10
|
+
*
|
|
11
|
+
* @throws
|
|
12
|
+
*/
|
|
13
|
+
const checkPermissions = async context => {
|
|
14
|
+
const identity = context.security.getIdentity();
|
|
15
|
+
if (!identity.id) {
|
|
16
|
+
throw new _apiSecurity.NotAuthorizedError();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
exports.checkPermissions = checkPermissions;
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=checkPermissions.js.map
|
|
@@ -0,0 +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 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":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CmsEntry, IRecordLockingIdentity, IRecordLockingLockRecord, IRecordLockingLockRecordAction, IRecordLockingLockRecordApprovedAction, IRecordLockingLockRecordDeniedAction, IRecordLockingLockRecordEntryType, IRecordLockingLockRecordObject, IRecordLockingLockRecordRequestedAction, IRecordLockingLockRecordValues } from "../types";
|
|
2
|
+
export declare const convertEntryToLockRecord: (entry: CmsEntry<IRecordLockingLockRecordValues>, timeout: number) => IRecordLockingLockRecord;
|
|
3
|
+
export type IHeadlessCmsLockRecordParams = Pick<CmsEntry<IRecordLockingLockRecordValues>, "entryId" | "values" | "createdBy" | "createdOn" | "savedOn">;
|
|
4
|
+
export declare class HeadlessCmsLockRecord implements IRecordLockingLockRecord {
|
|
5
|
+
private readonly _id;
|
|
6
|
+
private readonly _targetId;
|
|
7
|
+
private readonly _type;
|
|
8
|
+
private readonly _lockedBy;
|
|
9
|
+
private readonly _lockedOn;
|
|
10
|
+
private readonly _updatedOn;
|
|
11
|
+
private readonly _expiresOn;
|
|
12
|
+
private _actions?;
|
|
13
|
+
get id(): string;
|
|
14
|
+
get targetId(): string;
|
|
15
|
+
get type(): IRecordLockingLockRecordEntryType;
|
|
16
|
+
get lockedBy(): IRecordLockingIdentity;
|
|
17
|
+
get lockedOn(): Date;
|
|
18
|
+
get updatedOn(): Date;
|
|
19
|
+
get expiresOn(): Date;
|
|
20
|
+
get actions(): IRecordLockingLockRecordAction[] | undefined;
|
|
21
|
+
constructor(input: IHeadlessCmsLockRecordParams, timeout: number);
|
|
22
|
+
toObject(): IRecordLockingLockRecordObject;
|
|
23
|
+
addAction(action: IRecordLockingLockRecordAction): void;
|
|
24
|
+
getUnlockRequested(): IRecordLockingLockRecordRequestedAction | undefined;
|
|
25
|
+
getUnlockApproved(): IRecordLockingLockRecordApprovedAction | undefined;
|
|
26
|
+
getUnlockDenied(): IRecordLockingLockRecordDeniedAction | undefined;
|
|
27
|
+
isExpired(): boolean;
|
|
28
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.convertEntryToLockRecord = exports.HeadlessCmsLockRecord = void 0;
|
|
7
|
+
var _types = require("../types");
|
|
8
|
+
var _lockRecordDatabaseId = require("./lockRecordDatabaseId");
|
|
9
|
+
var _calculateExpiresOn = require("./calculateExpiresOn");
|
|
10
|
+
const convertEntryToLockRecord = (entry, timeout) => {
|
|
11
|
+
return new HeadlessCmsLockRecord(entry, timeout);
|
|
12
|
+
};
|
|
13
|
+
exports.convertEntryToLockRecord = convertEntryToLockRecord;
|
|
14
|
+
class HeadlessCmsLockRecord {
|
|
15
|
+
get id() {
|
|
16
|
+
return this._id;
|
|
17
|
+
}
|
|
18
|
+
get targetId() {
|
|
19
|
+
return this._targetId;
|
|
20
|
+
}
|
|
21
|
+
get type() {
|
|
22
|
+
return this._type;
|
|
23
|
+
}
|
|
24
|
+
get lockedBy() {
|
|
25
|
+
return this._lockedBy;
|
|
26
|
+
}
|
|
27
|
+
get lockedOn() {
|
|
28
|
+
return this._lockedOn;
|
|
29
|
+
}
|
|
30
|
+
get updatedOn() {
|
|
31
|
+
return this._updatedOn;
|
|
32
|
+
}
|
|
33
|
+
get expiresOn() {
|
|
34
|
+
return this._expiresOn;
|
|
35
|
+
}
|
|
36
|
+
get actions() {
|
|
37
|
+
return this._actions;
|
|
38
|
+
}
|
|
39
|
+
constructor(input, timeout) {
|
|
40
|
+
this._id = (0, _lockRecordDatabaseId.removeLockRecordDatabasePrefix)(input.entryId);
|
|
41
|
+
this._targetId = input.values.targetId;
|
|
42
|
+
this._type = input.values.type;
|
|
43
|
+
this._lockedBy = input.createdBy;
|
|
44
|
+
this._lockedOn = new Date(input.createdOn);
|
|
45
|
+
this._updatedOn = new Date(input.savedOn);
|
|
46
|
+
this._expiresOn = (0, _calculateExpiresOn.calculateExpiresOn)(input, timeout);
|
|
47
|
+
this._actions = input.values.actions;
|
|
48
|
+
}
|
|
49
|
+
toObject() {
|
|
50
|
+
return {
|
|
51
|
+
id: this._id,
|
|
52
|
+
targetId: this._targetId,
|
|
53
|
+
type: this._type,
|
|
54
|
+
lockedBy: this._lockedBy,
|
|
55
|
+
lockedOn: this._lockedOn,
|
|
56
|
+
updatedOn: this._updatedOn,
|
|
57
|
+
expiresOn: this._expiresOn,
|
|
58
|
+
actions: this._actions
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
addAction(action) {
|
|
62
|
+
if (!this._actions) {
|
|
63
|
+
this._actions = [];
|
|
64
|
+
}
|
|
65
|
+
this._actions.push(action);
|
|
66
|
+
}
|
|
67
|
+
getUnlockRequested() {
|
|
68
|
+
if (!this._actions?.length) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
return this._actions.find(action => action.type === _types.RecordLockingLockRecordActionType.requested);
|
|
72
|
+
}
|
|
73
|
+
getUnlockApproved() {
|
|
74
|
+
if (!this._actions?.length) {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
return this._actions.find(action => action.type === _types.RecordLockingLockRecordActionType.approved);
|
|
78
|
+
}
|
|
79
|
+
getUnlockDenied() {
|
|
80
|
+
if (!this._actions?.length) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
return this._actions.find(action => action.type === _types.RecordLockingLockRecordActionType.denied);
|
|
84
|
+
}
|
|
85
|
+
isExpired() {
|
|
86
|
+
return this._expiresOn.getTime() < new Date().getTime();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.HeadlessCmsLockRecord = HeadlessCmsLockRecord;
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=convertEntryToLockRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","_lockRecordDatabaseId","_calculateExpiresOn","convertEntryToLockRecord","entry","timeout","HeadlessCmsLockRecord","exports","id","_id","targetId","_targetId","type","_type","lockedBy","_lockedBy","lockedOn","_lockedOn","updatedOn","_updatedOn","expiresOn","_expiresOn","actions","_actions","constructor","input","removeLockRecordDatabasePrefix","entryId","values","createdBy","Date","createdOn","savedOn","calculateExpiresOn","toObject","addAction","action","push","getUnlockRequested","length","undefined","find","RecordLockingLockRecordActionType","requested","getUnlockApproved","approved","getUnlockDenied","denied","isExpired","getTime"],"sources":["convertEntryToLockRecord.ts"],"sourcesContent":["import type {\n CmsEntry,\n IRecordLockingIdentity,\n IRecordLockingLockRecord,\n IRecordLockingLockRecordAction,\n IRecordLockingLockRecordApprovedAction,\n IRecordLockingLockRecordDeniedAction,\n IRecordLockingLockRecordEntryType,\n IRecordLockingLockRecordObject,\n IRecordLockingLockRecordRequestedAction,\n IRecordLockingLockRecordValues\n} from \"~/types\";\nimport { RecordLockingLockRecordActionType } from \"~/types\";\nimport { removeLockRecordDatabasePrefix } from \"~/utils/lockRecordDatabaseId\";\nimport { calculateExpiresOn } from \"~/utils/calculateExpiresOn\";\n\nexport const convertEntryToLockRecord = (\n entry: CmsEntry<IRecordLockingLockRecordValues>,\n timeout: number\n): IRecordLockingLockRecord => {\n return new HeadlessCmsLockRecord(entry, timeout);\n};\n\nexport type IHeadlessCmsLockRecordParams = Pick<\n CmsEntry<IRecordLockingLockRecordValues>,\n \"entryId\" | \"values\" | \"createdBy\" | \"createdOn\" | \"savedOn\"\n>;\n\nexport class HeadlessCmsLockRecord implements IRecordLockingLockRecord {\n private readonly _id: string;\n private readonly _targetId: string;\n private readonly _type: IRecordLockingLockRecordEntryType;\n private readonly _lockedBy: IRecordLockingIdentity;\n private readonly _lockedOn: Date;\n private readonly _updatedOn: Date;\n private readonly _expiresOn: Date;\n private _actions?: IRecordLockingLockRecordAction[];\n\n public get id(): string {\n return this._id;\n }\n\n public get targetId(): string {\n return this._targetId;\n }\n\n public get type(): IRecordLockingLockRecordEntryType {\n return this._type;\n }\n\n public get lockedBy(): IRecordLockingIdentity {\n return this._lockedBy;\n }\n\n public get lockedOn(): Date {\n return this._lockedOn;\n }\n\n public get updatedOn(): Date {\n return this._updatedOn;\n }\n\n public get expiresOn(): Date {\n return this._expiresOn;\n }\n\n public get actions(): IRecordLockingLockRecordAction[] | undefined {\n return this._actions;\n }\n\n public constructor(input: IHeadlessCmsLockRecordParams, timeout: number) {\n this._id = removeLockRecordDatabasePrefix(input.entryId);\n this._targetId = input.values.targetId;\n this._type = input.values.type;\n this._lockedBy = input.createdBy;\n this._lockedOn = new Date(input.createdOn);\n this._updatedOn = new Date(input.savedOn);\n this._expiresOn = calculateExpiresOn(input, timeout);\n this._actions = input.values.actions;\n }\n\n public toObject(): IRecordLockingLockRecordObject {\n return {\n id: this._id,\n targetId: this._targetId,\n type: this._type,\n lockedBy: this._lockedBy,\n lockedOn: this._lockedOn,\n updatedOn: this._updatedOn,\n expiresOn: this._expiresOn,\n actions: this._actions\n };\n }\n\n public addAction(action: IRecordLockingLockRecordAction) {\n if (!this._actions) {\n this._actions = [];\n }\n this._actions.push(action);\n }\n\n public getUnlockRequested(): IRecordLockingLockRecordRequestedAction | undefined {\n if (!this._actions?.length) {\n return undefined;\n }\n return this._actions.find(\n (action): action is IRecordLockingLockRecordRequestedAction =>\n action.type === RecordLockingLockRecordActionType.requested\n );\n }\n\n public getUnlockApproved(): IRecordLockingLockRecordApprovedAction | undefined {\n if (!this._actions?.length) {\n return undefined;\n }\n return this._actions.find(\n (action): action is IRecordLockingLockRecordApprovedAction =>\n action.type === RecordLockingLockRecordActionType.approved\n );\n }\n\n public getUnlockDenied(): IRecordLockingLockRecordDeniedAction | undefined {\n if (!this._actions?.length) {\n return undefined;\n }\n return this._actions.find(\n (action): action is IRecordLockingLockRecordDeniedAction =>\n action.type === RecordLockingLockRecordActionType.denied\n );\n }\n\n public isExpired(): boolean {\n return this._expiresOn.getTime() < new Date().getTime();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.convertWhereCondition = void 0;
|
|
7
|
+
var _lockRecordDatabaseId = require("./lockRecordDatabaseId");
|
|
8
|
+
const attachPrefix = value => {
|
|
9
|
+
if (!value) {
|
|
10
|
+
return value;
|
|
11
|
+
} else if (Array.isArray(value)) {
|
|
12
|
+
return value.map(_lockRecordDatabaseId.createLockRecordDatabaseId);
|
|
13
|
+
}
|
|
14
|
+
return (0, _lockRecordDatabaseId.createLockRecordDatabaseId)(value);
|
|
15
|
+
};
|
|
16
|
+
const convertWhereCondition = where => {
|
|
17
|
+
if (!where) {
|
|
18
|
+
return where;
|
|
19
|
+
}
|
|
20
|
+
for (const key in where) {
|
|
21
|
+
if (key.startsWith("AND") || key.startsWith("OR")) {
|
|
22
|
+
const value = where[key];
|
|
23
|
+
if (!value) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
for (const subKey in value) {
|
|
27
|
+
value[subKey] = convertWhereCondition(value[subKey]);
|
|
28
|
+
}
|
|
29
|
+
continue;
|
|
30
|
+
} else if (key.startsWith("id") === false) {
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
const newKey = key.replace("id", "entryId");
|
|
34
|
+
where[newKey] = attachPrefix(where[key]);
|
|
35
|
+
delete where[key];
|
|
36
|
+
}
|
|
37
|
+
return where;
|
|
38
|
+
};
|
|
39
|
+
exports.convertWhereCondition = convertWhereCondition;
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=convertWhereCondition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_lockRecordDatabaseId","require","attachPrefix","value","Array","isArray","map","createLockRecordDatabaseId","convertWhereCondition","where","key","startsWith","subKey","newKey","replace","exports"],"sources":["convertWhereCondition.ts"],"sourcesContent":["import type { IRecordLockingListLockRecordsParams } from \"~/types\";\nimport { createLockRecordDatabaseId } from \"~/utils/lockRecordDatabaseId\";\n\ntype IWhere = IRecordLockingListLockRecordsParams[\"where\"] | undefined;\n\nconst attachPrefix = (value: string | string[] | undefined) => {\n if (!value) {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(createLockRecordDatabaseId);\n }\n return createLockRecordDatabaseId(value);\n};\n\nexport const convertWhereCondition = (where: IWhere): IWhere => {\n if (!where) {\n return where;\n }\n for (const key in where) {\n if (key.startsWith(\"AND\") || key.startsWith(\"OR\")) {\n const value = where[key] as IWhere[] | undefined;\n if (!value) {\n continue;\n }\n for (const subKey in value) {\n value[subKey] = convertWhereCondition(value[subKey]);\n }\n continue;\n } else if (key.startsWith(\"id\") === false) {\n continue;\n }\n const newKey = key.replace(\"id\", \"entryId\");\n where[newKey] = attachPrefix(where[key] as string | string[] | undefined);\n delete where[key];\n }\n return where;\n};\n"],"mappings":";;;;;;AACA,IAAAA,qBAAA,GAAAC,OAAA;AAIA,MAAMC,YAAY,GAAIC,KAAoC,IAAK;EAC3D,IAAI,CAACA,KAAK,EAAE;IACR,OAAOA,KAAK;EAChB,CAAC,MAAM,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,EAAE;IAC7B,OAAOA,KAAK,CAACG,GAAG,CAACC,gDAA0B,CAAC;EAChD;EACA,OAAO,IAAAA,gDAA0B,EAACJ,KAAK,CAAC;AAC5C,CAAC;AAEM,MAAMK,qBAAqB,GAAIC,KAAa,IAAa;EAC5D,IAAI,CAACA,KAAK,EAAE;IACR,OAAOA,KAAK;EAChB;EACA,KAAK,MAAMC,GAAG,IAAID,KAAK,EAAE;IACrB,IAAIC,GAAG,CAACC,UAAU,CAAC,KAAK,CAAC,IAAID,GAAG,CAACC,UAAU,CAAC,IAAI,CAAC,EAAE;MAC/C,MAAMR,KAAK,GAAGM,KAAK,CAACC,GAAG,CAAyB;MAChD,IAAI,CAACP,KAAK,EAAE;QACR;MACJ;MACA,KAAK,MAAMS,MAAM,IAAIT,KAAK,EAAE;QACxBA,KAAK,CAACS,MAAM,CAAC,GAAGJ,qBAAqB,CAACL,KAAK,CAACS,MAAM,CAAC,CAAC;MACxD;MACA;IACJ,CAAC,MAAM,IAAIF,GAAG,CAACC,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;MACvC;IACJ;IACA,MAAME,MAAM,GAAGH,GAAG,CAACI,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;IAC3CL,KAAK,CAACI,MAAM,CAAC,GAAGX,YAAY,CAACO,KAAK,CAACC,GAAG,CAAkC,CAAC;IACzE,OAAOD,KAAK,CAACC,GAAG,CAAC;EACrB;EACA,OAAOD,KAAK;AAChB,CAAC;AAACM,OAAA,CAAAP,qBAAA,GAAAA,qBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getTimeout = void 0;
|
|
7
|
+
const minTimeoutInSeconds = 30;
|
|
8
|
+
const defaultTimeoutInSeconds = 60;
|
|
9
|
+
/**
|
|
10
|
+
* Input is in seconds.
|
|
11
|
+
* Output is milliseconds.
|
|
12
|
+
*/
|
|
13
|
+
const getTimeout = input => {
|
|
14
|
+
if (input && input > 0) {
|
|
15
|
+
if (input < minTimeoutInSeconds) {
|
|
16
|
+
return minTimeoutInSeconds * 1000;
|
|
17
|
+
}
|
|
18
|
+
return input * 1000;
|
|
19
|
+
}
|
|
20
|
+
const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT) : undefined;
|
|
21
|
+
if (!userDefined || isNaN(userDefined) || userDefined <= 0) {
|
|
22
|
+
return defaultTimeoutInSeconds * 1000;
|
|
23
|
+
}
|
|
24
|
+
return userDefined * 1000;
|
|
25
|
+
};
|
|
26
|
+
exports.getTimeout = getTimeout;
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=getTimeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["minTimeoutInSeconds","defaultTimeoutInSeconds","getTimeout","input","userDefined","process","env","WEBINY_RECORD_LOCK_TIMEOUT","parseInt","undefined","isNaN","exports"],"sources":["getTimeout.ts"],"sourcesContent":["const minTimeoutInSeconds = 30;\nconst defaultTimeoutInSeconds = 60;\n/**\n * Input is in seconds.\n * Output is milliseconds.\n */\nexport const getTimeout = (input: number | undefined) => {\n if (input && input > 0) {\n if (input < minTimeoutInSeconds) {\n return minTimeoutInSeconds * 1000;\n }\n return input * 1000;\n }\n const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT\n ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT)\n : undefined;\n if (!userDefined || isNaN(userDefined) || userDefined <= 0) {\n return defaultTimeoutInSeconds * 1000;\n }\n return userDefined * 1000;\n};\n"],"mappings":";;;;;;AAAA,MAAMA,mBAAmB,GAAG,EAAE;AAC9B,MAAMC,uBAAuB,GAAG,EAAE;AAClC;AACA;AACA;AACA;AACO,MAAMC,UAAU,GAAIC,KAAyB,IAAK;EACrD,IAAIA,KAAK,IAAIA,KAAK,GAAG,CAAC,EAAE;IACpB,IAAIA,KAAK,GAAGH,mBAAmB,EAAE;MAC7B,OAAOA,mBAAmB,GAAG,IAAI;IACrC;IACA,OAAOG,KAAK,GAAG,IAAI;EACvB;EACA,MAAMC,WAAW,GAAGC,OAAO,CAACC,GAAG,CAACC,0BAA0B,GACpDC,QAAQ,CAACH,OAAO,CAACC,GAAG,CAACC,0BAA0B,CAAC,GAChDE,SAAS;EACf,IAAI,CAACL,WAAW,IAAIM,KAAK,CAACN,WAAW,CAAC,IAAIA,WAAW,IAAI,CAAC,EAAE;IACxD,OAAOH,uBAAuB,GAAG,IAAI;EACzC;EACA,OAAOG,WAAW,GAAG,IAAI;AAC7B,CAAC;AAACO,OAAA,CAAAT,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.removeLockRecordDatabasePrefix = exports.createLockRecordDatabaseId = void 0;
|
|
7
|
+
var _utils = require("@webiny/utils");
|
|
8
|
+
const WBY_LM_PREFIX = "wby-lm-";
|
|
9
|
+
const createLockRecordDatabaseId = input => {
|
|
10
|
+
const {
|
|
11
|
+
id
|
|
12
|
+
} = (0, _utils.parseIdentifier)(input);
|
|
13
|
+
if (id.startsWith(WBY_LM_PREFIX)) {
|
|
14
|
+
return id;
|
|
15
|
+
}
|
|
16
|
+
return `${WBY_LM_PREFIX}${id}`;
|
|
17
|
+
};
|
|
18
|
+
exports.createLockRecordDatabaseId = createLockRecordDatabaseId;
|
|
19
|
+
const removeLockRecordDatabasePrefix = id => {
|
|
20
|
+
return id.replace(WBY_LM_PREFIX, "");
|
|
21
|
+
};
|
|
22
|
+
exports.removeLockRecordDatabasePrefix = removeLockRecordDatabasePrefix;
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=lockRecordDatabaseId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_utils","require","WBY_LM_PREFIX","createLockRecordDatabaseId","input","id","parseIdentifier","startsWith","exports","removeLockRecordDatabasePrefix","replace"],"sources":["lockRecordDatabaseId.ts"],"sourcesContent":["import { parseIdentifier } from \"@webiny/utils\";\n\nconst WBY_LM_PREFIX = \"wby-lm-\";\n\nexport const createLockRecordDatabaseId = (input: string): string => {\n const { id } = parseIdentifier(input);\n if (id.startsWith(WBY_LM_PREFIX)) {\n return id;\n }\n return `${WBY_LM_PREFIX}${id}`;\n};\n\nexport const removeLockRecordDatabasePrefix = (id: string) => {\n return id.replace(WBY_LM_PREFIX, \"\");\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GAAG,SAAS;AAExB,MAAMC,0BAA0B,GAAIC,KAAa,IAAa;EACjE,MAAM;IAAEC;EAAG,CAAC,GAAG,IAAAC,sBAAe,EAACF,KAAK,CAAC;EACrC,IAAIC,EAAE,CAACE,UAAU,CAACL,aAAa,CAAC,EAAE;IAC9B,OAAOG,EAAE;EACb;EACA,OAAO,GAAGH,aAAa,GAAGG,EAAE,EAAE;AAClC,CAAC;AAACG,OAAA,CAAAL,0BAAA,GAAAA,0BAAA;AAEK,MAAMM,8BAA8B,GAAIJ,EAAU,IAAK;EAC1D,OAAOA,EAAE,CAACK,OAAO,CAACR,aAAa,EAAE,EAAE,CAAC;AACxC,CAAC;AAACM,OAAA,CAAAC,8BAAA,GAAAA,8BAAA","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ErrorResponse, Response } from "@webiny/handler-graphql";
|
|
2
|
+
import type { IRecordLockingMeta } from "../types";
|
|
3
|
+
export declare const resolve: <T>(cb: () => Promise<T>) => Promise<ErrorResponse | Response<T>>;
|
|
4
|
+
export interface IListResponse<T> {
|
|
5
|
+
items: T[];
|
|
6
|
+
meta: IRecordLockingMeta;
|
|
7
|
+
}
|
|
8
|
+
export declare const resolveList: <T>(cb: () => Promise<IListResponse<T>>) => Promise<ErrorResponse | Response<T[]>>;
|
package/utils/resolve.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.resolveList = exports.resolve = void 0;
|
|
7
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
8
|
+
const resolve = async cb => {
|
|
9
|
+
try {
|
|
10
|
+
const result = await cb();
|
|
11
|
+
return new _handlerGraphql.Response(result);
|
|
12
|
+
} catch (ex) {
|
|
13
|
+
return new _handlerGraphql.ErrorResponse(ex);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
exports.resolve = resolve;
|
|
17
|
+
const resolveList = async cb => {
|
|
18
|
+
try {
|
|
19
|
+
const {
|
|
20
|
+
items,
|
|
21
|
+
meta
|
|
22
|
+
} = await cb();
|
|
23
|
+
return new _handlerGraphql.ListResponse(items, meta);
|
|
24
|
+
} catch (ex) {
|
|
25
|
+
return new _handlerGraphql.ListErrorResponse(ex);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.resolveList = resolveList;
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +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 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":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { IRecordLockingIdentity } from "../types";
|
|
2
|
+
export interface IValidateSameIdentityParams {
|
|
3
|
+
getIdentity: () => Pick<IRecordLockingIdentity, "id">;
|
|
4
|
+
target: Pick<IRecordLockingIdentity, "id">;
|
|
5
|
+
}
|
|
6
|
+
export declare const validateSameIdentity: (params: IValidateSameIdentityParams) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.validateSameIdentity = void 0;
|
|
7
|
+
var _apiSecurity = require("@webiny/api-security");
|
|
8
|
+
const validateSameIdentity = params => {
|
|
9
|
+
const {
|
|
10
|
+
getIdentity,
|
|
11
|
+
target
|
|
12
|
+
} = params;
|
|
13
|
+
const identity = getIdentity();
|
|
14
|
+
if (identity.id === target.id) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
throw new _apiSecurity.NotAuthorizedError({
|
|
18
|
+
message: "Cannot update lock record. Record is locked by another user.",
|
|
19
|
+
code: "LOCK_UPDATE_ERROR"
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
exports.validateSameIdentity = validateSameIdentity;
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=validateSameIdentity.js.map
|
|
@@ -0,0 +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 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":[]}
|