@webiny/api-record-locking 5.42.1-beta.1 → 5.42.1-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/crud/crud.d.ts +2 -1
- package/crud/crud.js +20 -8
- package/crud/crud.js.map +1 -1
- package/index.d.ts +4 -1
- package/index.js +5 -4
- package/index.js.map +1 -1
- package/package.json +18 -18
- package/types.d.ts +13 -5
- package/types.js +6 -6
- package/types.js.map +1 -1
- package/useCases/GetLockRecord/GetLockRecordUseCase.d.ts +5 -2
- package/useCases/GetLockRecord/GetLockRecordUseCase.js +2 -2
- package/useCases/GetLockRecord/GetLockRecordUseCase.js.map +1 -1
- package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.d.ts +4 -4
- package/useCases/GetLockedEntryLockRecord/GetLockedEntryLockRecordUseCase.js.map +1 -1
- package/useCases/IsEntryLocked/IsEntryLockedUseCase.d.ts +4 -4
- package/useCases/IsEntryLocked/IsEntryLockedUseCase.js.map +1 -1
- package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.d.ts +2 -2
- package/useCases/KickOutCurrentUser/KickOutCurrentUserUseCase.js.map +1 -1
- package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.d.ts +5 -2
- package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js +4 -2
- package/useCases/ListAllLockRecordsUseCase/ListAllLockRecordsUseCase.js.map +1 -1
- package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.d.ts +2 -2
- package/useCases/ListLockRecordsUseCase/ListLockRecordsUseCase.js.map +1 -1
- package/useCases/LockEntryUseCase/LockEntryUseCase.d.ts +6 -3
- package/useCases/LockEntryUseCase/LockEntryUseCase.js +2 -2
- package/useCases/LockEntryUseCase/LockEntryUseCase.js.map +1 -1
- package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.d.ts +6 -6
- package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js +20 -4
- package/useCases/UnlockEntryUseCase/UnlockEntryUseCase.js.map +1 -1
- package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.d.ts +6 -3
- package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js +3 -3
- package/useCases/UnlockRequestUseCase/UnlockEntryRequestUseCase.js.map +1 -1
- package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.d.ts +7 -4
- package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js +2 -2
- package/useCases/UpdateEntryLock/UpdateEntryLockUseCase.js.map +1 -1
- package/useCases/index.d.ts +12 -11
- package/useCases/index.js +19 -8
- package/useCases/index.js.map +1 -1
- 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 +1 -1
- package/utils/calculateExpiresOn.js +1 -3
- package/utils/calculateExpiresOn.js.map +1 -1
- package/utils/convertEntryToLockRecord.d.ts +3 -4
- package/utils/convertEntryToLockRecord.js +7 -7
- package/utils/convertEntryToLockRecord.js.map +1 -1
- package/utils/getTimeout.d.ts +3 -2
- package/utils/getTimeout.js +6 -2
- package/utils/getTimeout.js.map +1 -1
- package/utils/isLockedFactory.d.ts +1 -1
- package/utils/isLockedFactory.js +1 -2
- package/utils/isLockedFactory.js.map +1 -1
|
@@ -7,8 +7,8 @@ exports.convertEntryToLockRecord = exports.HeadlessCmsLockRecord = void 0;
|
|
|
7
7
|
var _types = require("../types");
|
|
8
8
|
var _lockRecordDatabaseId = require("./lockRecordDatabaseId");
|
|
9
9
|
var _calculateExpiresOn = require("./calculateExpiresOn");
|
|
10
|
-
const convertEntryToLockRecord = entry => {
|
|
11
|
-
return new HeadlessCmsLockRecord(entry);
|
|
10
|
+
const convertEntryToLockRecord = (entry, timeout) => {
|
|
11
|
+
return new HeadlessCmsLockRecord(entry, timeout);
|
|
12
12
|
};
|
|
13
13
|
exports.convertEntryToLockRecord = convertEntryToLockRecord;
|
|
14
14
|
class HeadlessCmsLockRecord {
|
|
@@ -36,14 +36,14 @@ class HeadlessCmsLockRecord {
|
|
|
36
36
|
get actions() {
|
|
37
37
|
return this._actions;
|
|
38
38
|
}
|
|
39
|
-
constructor(input) {
|
|
39
|
+
constructor(input, timeout) {
|
|
40
40
|
this._id = (0, _lockRecordDatabaseId.removeLockRecordDatabasePrefix)(input.entryId);
|
|
41
41
|
this._targetId = input.values.targetId;
|
|
42
42
|
this._type = input.values.type;
|
|
43
43
|
this._lockedBy = input.createdBy;
|
|
44
44
|
this._lockedOn = new Date(input.createdOn);
|
|
45
45
|
this._updatedOn = new Date(input.savedOn);
|
|
46
|
-
this._expiresOn = (0, _calculateExpiresOn.calculateExpiresOn)(input);
|
|
46
|
+
this._expiresOn = (0, _calculateExpiresOn.calculateExpiresOn)(input, timeout);
|
|
47
47
|
this._actions = input.values.actions;
|
|
48
48
|
}
|
|
49
49
|
toObject() {
|
|
@@ -68,19 +68,19 @@ class HeadlessCmsLockRecord {
|
|
|
68
68
|
if (!this._actions?.length) {
|
|
69
69
|
return undefined;
|
|
70
70
|
}
|
|
71
|
-
return this._actions.find(action => action.type === _types.
|
|
71
|
+
return this._actions.find(action => action.type === _types.RecordLockingLockRecordActionType.requested);
|
|
72
72
|
}
|
|
73
73
|
getUnlockApproved() {
|
|
74
74
|
if (!this._actions?.length) {
|
|
75
75
|
return undefined;
|
|
76
76
|
}
|
|
77
|
-
return this._actions.find(action => action.type === _types.
|
|
77
|
+
return this._actions.find(action => action.type === _types.RecordLockingLockRecordActionType.approved);
|
|
78
78
|
}
|
|
79
79
|
getUnlockDenied() {
|
|
80
80
|
if (!this._actions?.length) {
|
|
81
81
|
return undefined;
|
|
82
82
|
}
|
|
83
|
-
return this._actions.find(action => action.type === _types.
|
|
83
|
+
return this._actions.find(action => action.type === _types.RecordLockingLockRecordActionType.denied);
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
exports.HeadlessCmsLockRecord = HeadlessCmsLockRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_lockRecordDatabaseId","_calculateExpiresOn","convertEntryToLockRecord","entry","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","
|
|
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"],"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"],"mappings":"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","ignoreList":[]}
|
package/utils/getTimeout.d.ts
CHANGED
package/utils/getTimeout.js
CHANGED
|
@@ -6,9 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getTimeout = void 0;
|
|
7
7
|
const defaultTimeoutInSeconds = 1800;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Input is in seconds.
|
|
10
|
+
* Output is milliseconds.
|
|
10
11
|
*/
|
|
11
|
-
const getTimeout =
|
|
12
|
+
const getTimeout = input => {
|
|
13
|
+
if (input && input > 0) {
|
|
14
|
+
return input * 1000;
|
|
15
|
+
}
|
|
12
16
|
const userDefined = process.env.WEBINY_RECORD_LOCK_TIMEOUT ? parseInt(process.env.WEBINY_RECORD_LOCK_TIMEOUT) : undefined;
|
|
13
17
|
if (!userDefined || isNaN(userDefined) || userDefined <= 0) {
|
|
14
18
|
return defaultTimeoutInSeconds * 1000;
|
package/utils/getTimeout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["defaultTimeoutInSeconds","getTimeout","userDefined","process","env","WEBINY_RECORD_LOCK_TIMEOUT","parseInt","undefined","isNaN","exports"],"sources":["getTimeout.ts"],"sourcesContent":["const defaultTimeoutInSeconds = 1800;\n/**\n *
|
|
1
|
+
{"version":3,"names":["defaultTimeoutInSeconds","getTimeout","input","userDefined","process","env","WEBINY_RECORD_LOCK_TIMEOUT","parseInt","undefined","isNaN","exports"],"sources":["getTimeout.ts"],"sourcesContent":["const defaultTimeoutInSeconds = 1800;\n/**\n * Input is in seconds.\n * Output is milliseconds.\n */\nexport const getTimeout = (input: number | undefined) => {\n if (input && input > 0) {\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,uBAAuB,GAAG,IAAI;AACpC;AACA;AACA;AACA;AACO,MAAMC,UAAU,GAAIC,KAAyB,IAAK;EACrD,IAAIA,KAAK,IAAIA,KAAK,GAAG,CAAC,EAAE;IACpB,OAAOA,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":[]}
|
|
@@ -2,4 +2,4 @@ import { IRecordLockingLockRecord } from "../types";
|
|
|
2
2
|
export interface IIsLocked {
|
|
3
3
|
(record?: Pick<IRecordLockingLockRecord, "lockedOn"> | null): boolean;
|
|
4
4
|
}
|
|
5
|
-
export declare const isLockedFactory: (
|
|
5
|
+
export declare const isLockedFactory: (timeout: number) => IIsLocked;
|
package/utils/isLockedFactory.js
CHANGED
|
@@ -4,8 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isLockedFactory = void 0;
|
|
7
|
-
const isLockedFactory =
|
|
8
|
-
const timeout = timeoutInput * 1000;
|
|
7
|
+
const isLockedFactory = timeout => {
|
|
9
8
|
return record => {
|
|
10
9
|
if (!record || record.lockedOn instanceof Date === false) {
|
|
11
10
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isLockedFactory","
|
|
1
|
+
{"version":3,"names":["isLockedFactory","timeout","record","lockedOn","Date","now","getTime","exports"],"sources":["isLockedFactory.ts"],"sourcesContent":["import { IRecordLockingLockRecord } from \"~/types\";\n\nexport interface IIsLocked {\n (record?: Pick<IRecordLockingLockRecord, \"lockedOn\"> | null): boolean;\n}\n\nexport const isLockedFactory = (timeout: number): IIsLocked => {\n return record => {\n if (!record || record.lockedOn instanceof Date === false) {\n return false;\n }\n const now = new Date().getTime();\n const lockedOn = record.lockedOn.getTime();\n return lockedOn + timeout >= now;\n };\n};\n"],"mappings":";;;;;;AAMO,MAAMA,eAAe,GAAIC,OAAe,IAAgB;EAC3D,OAAOC,MAAM,IAAI;IACb,IAAI,CAACA,MAAM,IAAIA,MAAM,CAACC,QAAQ,YAAYC,IAAI,KAAK,KAAK,EAAE;MACtD,OAAO,KAAK;IAChB;IACA,MAAMC,GAAG,GAAG,IAAID,IAAI,CAAC,CAAC,CAACE,OAAO,CAAC,CAAC;IAChC,MAAMH,QAAQ,GAAGD,MAAM,CAACC,QAAQ,CAACG,OAAO,CAAC,CAAC;IAC1C,OAAOH,QAAQ,GAAGF,OAAO,IAAII,GAAG;EACpC,CAAC;AACL,CAAC;AAACE,OAAA,CAAAP,eAAA,GAAAA,eAAA","ignoreList":[]}
|