@webiny/app-record-locking 0.0.0-unstable.e53eceafb5 → 0.0.0-unstable.e6f0dc8ca7
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/README.md +8 -9
- package/components/HeadlessCmsActionsAcoCell.js +4 -4
- package/components/HeadlessCmsActionsAcoCell.js.map +1 -1
- package/components/HeadlessCmsContentEntry/ContentEntryGuard.d.ts +1 -1
- package/components/HeadlessCmsContentEntry/ContentEntryGuard.js +6 -4
- package/components/HeadlessCmsContentEntry/ContentEntryGuard.js.map +1 -1
- package/components/HeadlessCmsContentEntry/ContentEntryLocker.d.ts +3 -3
- package/components/HeadlessCmsContentEntry/ContentEntryLocker.js +5 -12
- package/components/HeadlessCmsContentEntry/ContentEntryLocker.js.map +1 -1
- package/components/HeadlessCmsContentEntry/HeadlessCmsContentEntry.js +12 -34
- package/components/HeadlessCmsContentEntry/HeadlessCmsContentEntry.js.map +1 -1
- package/components/HeadlessCmsContentEntry/index.d.ts +1 -1
- package/components/HeadlessCmsContentEntry/index.js +1 -1
- package/components/HeadlessCmsContentEntry/index.js.map +1 -1
- package/components/LockedRecord/LockedRecord.d.ts +1 -1
- package/components/LockedRecord/LockedRecord.js +9 -9
- package/components/LockedRecord/LockedRecord.js.map +1 -1
- package/components/LockedRecord/LockedRecordForceUnlock.d.ts +1 -1
- package/components/LockedRecord/LockedRecordForceUnlock.js +5 -9
- package/components/LockedRecord/LockedRecordForceUnlock.js.map +1 -1
- package/components/LockedRecord/index.d.ts +1 -1
- package/components/LockedRecord/index.js +1 -1
- package/components/LockedRecord/index.js.map +1 -1
- package/components/RecordLockingProvider.d.ts +1 -1
- package/components/RecordLockingProvider.js +14 -4
- package/components/RecordLockingProvider.js.map +1 -1
- package/components/SecurityPermissions.d.ts +2 -0
- package/components/SecurityPermissions.js +18 -0
- package/components/SecurityPermissions.js.map +1 -0
- package/components/decorators/UseContentEntriesListHookDecorator.d.ts +1 -2
- package/components/decorators/UseContentEntriesListHookDecorator.js +4 -2
- package/components/decorators/UseContentEntriesListHookDecorator.js.map +1 -1
- package/components/decorators/UseRecordsDecorator.d.ts +1 -2
- package/components/decorators/UseSaveEntryDecorator.d.ts +1 -2
- package/components/decorators/UseSaveEntryDecorator.js +1 -1
- package/components/decorators/UseSaveEntryDecorator.js.map +1 -1
- package/domain/RecordLocking.d.ts +9 -9
- package/domain/RecordLocking.js +12 -11
- package/domain/RecordLocking.js.map +1 -1
- package/domain/RecordLockingClient.d.ts +1 -1
- package/domain/RecordLockingClient.js.map +1 -1
- package/domain/RecordLockingGetLockRecord.d.ts +2 -2
- package/domain/RecordLockingGetLockRecord.js +1 -1
- package/domain/RecordLockingGetLockRecord.js.map +1 -1
- package/domain/RecordLockingGetLockedEntryLockRecord.d.ts +2 -2
- package/domain/RecordLockingGetLockedEntryLockRecord.js +1 -1
- package/domain/RecordLockingGetLockedEntryLockRecord.js.map +1 -1
- package/domain/RecordLockingIsEntryLocked.d.ts +2 -2
- package/domain/RecordLockingIsEntryLocked.js +1 -1
- package/domain/RecordLockingIsEntryLocked.js.map +1 -1
- package/domain/RecordLockingListLockRecords.d.ts +2 -2
- package/domain/RecordLockingListLockRecords.js +2 -2
- package/domain/RecordLockingListLockRecords.js.map +1 -1
- package/domain/RecordLockingLockEntry.d.ts +2 -2
- package/domain/RecordLockingLockEntry.js +1 -3
- package/domain/RecordLockingLockEntry.js.map +1 -1
- package/domain/RecordLockingUnlockEntry.d.ts +2 -2
- package/domain/RecordLockingUnlockEntry.js +1 -1
- package/domain/RecordLockingUnlockEntry.js.map +1 -1
- package/domain/RecordLockingUpdateEntryLock.d.ts +2 -2
- package/domain/RecordLockingUpdateEntryLock.js +1 -1
- package/domain/RecordLockingUpdateEntryLock.js.map +1 -1
- package/domain/abstractions/IRecordLocking.d.ts +2 -2
- package/domain/abstractions/IRecordLocking.js.map +1 -1
- package/domain/abstractions/IRecordLockingGetLockRecord.d.ts +1 -1
- package/domain/abstractions/IRecordLockingGetLockRecord.js.map +1 -1
- package/domain/abstractions/IRecordLockingGetLockedEntryLockRecord.d.ts +1 -1
- package/domain/abstractions/IRecordLockingGetLockedEntryLockRecord.js.map +1 -1
- package/domain/abstractions/IRecordLockingListLockRecords.d.ts +1 -1
- package/domain/abstractions/IRecordLockingListLockRecords.js.map +1 -1
- package/domain/abstractions/IRecordLockingLockEntry.d.ts +1 -1
- package/domain/abstractions/IRecordLockingLockEntry.js.map +1 -1
- package/domain/abstractions/IRecordLockingUnlockEntry.d.ts +1 -1
- package/domain/abstractions/IRecordLockingUnlockEntry.js.map +1 -1
- package/domain/abstractions/IRecordLockingUpdateEntryLock.d.ts +1 -1
- package/domain/abstractions/IRecordLockingUpdateEntryLock.js.map +1 -1
- package/domain/graphql/getLockRecord.d.ts +2 -2
- package/domain/graphql/getLockRecord.js +1 -1
- package/domain/graphql/getLockRecord.js.map +1 -1
- package/domain/graphql/getLockedEntryLockRecord.d.ts +2 -2
- package/domain/graphql/getLockedEntryLockRecord.js +1 -1
- package/domain/graphql/getLockedEntryLockRecord.js.map +1 -1
- package/domain/graphql/isEntryLocked.d.ts +2 -2
- package/domain/graphql/isEntryLocked.js +1 -1
- package/domain/graphql/isEntryLocked.js.map +1 -1
- package/domain/graphql/listLockRecords.d.ts +2 -2
- package/domain/graphql/listLockRecords.js +1 -1
- package/domain/graphql/listLockRecords.js.map +1 -1
- package/domain/graphql/lockEntry.d.ts +2 -2
- package/domain/graphql/lockEntry.js +1 -1
- package/domain/graphql/lockEntry.js.map +1 -1
- package/domain/graphql/unlockEntry.d.ts +2 -2
- package/domain/graphql/unlockEntry.js +1 -1
- package/domain/graphql/unlockEntry.js.map +1 -1
- package/domain/graphql/updateEntryLock.d.ts +2 -2
- package/domain/graphql/updateEntryLock.js +1 -1
- package/domain/graphql/updateEntryLock.js.map +1 -1
- package/domain/permissionsSchema.d.ts +6 -0
- package/domain/permissionsSchema.js +9 -0
- package/domain/permissionsSchema.js.map +1 -0
- package/domain/utils/createRecordLockingClient.d.ts +1 -1
- package/domain/utils/createRecordLockingClient.js +1 -1
- package/domain/utils/createRecordLockingClient.js.map +1 -1
- package/domain/utils/createRecordLockingError.d.ts +1 -1
- package/domain/utils/createRecordLockingError.js.map +1 -1
- package/features/permissions/abstractions.d.ts +17 -0
- package/features/permissions/abstractions.js +5 -0
- package/features/permissions/abstractions.js.map +1 -0
- package/features/permissions/feature.d.ts +14 -0
- package/features/permissions/feature.js +6 -0
- package/features/permissions/feature.js.map +1 -0
- package/hooks/index.d.ts +2 -2
- package/hooks/index.js +2 -2
- package/hooks/index.js.map +1 -1
- package/hooks/usePermission.js +7 -8
- package/hooks/usePermission.js.map +1 -1
- package/hooks/useRecordLocking.d.ts +1 -1
- package/hooks/useRecordLocking.js +1 -1
- package/hooks/useRecordLocking.js.map +1 -1
- package/index.d.ts +2 -2
- package/index.js +12 -10
- package/index.js.map +1 -1
- package/package.json +22 -27
- package/types.d.ts +24 -9
- package/types.js.map +1 -1
- package/utils/createCacheKey.d.ts +1 -1
- package/utils/createCacheKey.js.map +1 -1
- package/components/permissionRenderer/RecordLockingPermissions.d.ts +0 -7
- package/components/permissionRenderer/RecordLockingPermissions.js +0 -71
- package/components/permissionRenderer/RecordLockingPermissions.js.map +0 -1
- package/components/permissionRenderer/index.d.ts +0 -2
- package/components/permissionRenderer/index.js +0 -21
- package/components/permissionRenderer/index.js.map +0 -1
package/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { Provider } from "@webiny/app";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
export * from "./
|
|
3
|
+
import { RegisterFeature } from "@webiny/app-admin";
|
|
4
|
+
import { RecordLockingProvider as RecordLockingProviderComponent } from "./components/RecordLockingProvider.js";
|
|
5
|
+
import { HeadlessCmsActionsAcoCell } from "./components/HeadlessCmsActionsAcoCell.js";
|
|
6
|
+
import { HeadlessCmsContentEntry } from "./components/HeadlessCmsContentEntry/index.js";
|
|
7
|
+
import { useWcp } from "@webiny/app-admin";
|
|
8
|
+
import { SecurityPermissions } from "./components/SecurityPermissions.js";
|
|
9
|
+
import { RecordLockingPermissionsFeature } from "./features/permissions/feature.js";
|
|
10
|
+
export * from "./components/RecordLockingProvider.js";
|
|
11
|
+
export * from "./hooks/index.js";
|
|
11
12
|
const RecordLockingHoc = Component => {
|
|
12
13
|
return function RecordLockingProvider({
|
|
13
14
|
children
|
|
@@ -20,8 +21,9 @@ export const RecordLocking = () => {
|
|
|
20
21
|
if (!wcp.canUseRecordLocking()) {
|
|
21
22
|
return null;
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(RegisterFeature, {
|
|
25
|
+
feature: RecordLockingPermissionsFeature
|
|
26
|
+
}), /*#__PURE__*/React.createElement(SecurityPermissions, null), /*#__PURE__*/React.createElement(Provider, {
|
|
25
27
|
hoc: RecordLockingHoc
|
|
26
28
|
}), /*#__PURE__*/React.createElement(HeadlessCmsActionsAcoCell, null), /*#__PURE__*/React.createElement(HeadlessCmsContentEntry, null));
|
|
27
29
|
};
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Provider","RecordLockingProvider","RecordLockingProviderComponent","HeadlessCmsActionsAcoCell","HeadlessCmsContentEntry","useWcp","
|
|
1
|
+
{"version":3,"names":["React","Provider","RegisterFeature","RecordLockingProvider","RecordLockingProviderComponent","HeadlessCmsActionsAcoCell","HeadlessCmsContentEntry","useWcp","SecurityPermissions","RecordLockingPermissionsFeature","RecordLockingHoc","Component","children","createElement","RecordLocking","wcp","canUseRecordLocking","Fragment","feature","hoc"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\nimport { Provider } from \"@webiny/app\";\nimport { RegisterFeature } from \"@webiny/app-admin\";\nimport { RecordLockingProvider as RecordLockingProviderComponent } from \"~/components/RecordLockingProvider.js\";\nimport { HeadlessCmsActionsAcoCell } from \"~/components/HeadlessCmsActionsAcoCell.js\";\nimport { HeadlessCmsContentEntry } from \"~/components/HeadlessCmsContentEntry/index.js\";\nimport { useWcp } from \"@webiny/app-admin\";\nimport { SecurityPermissions } from \"~/components/SecurityPermissions.js\";\nimport { RecordLockingPermissionsFeature } from \"~/features/permissions/feature.js\";\n\nexport * from \"~/components/RecordLockingProvider.js\";\nexport * from \"~/hooks/index.js\";\n\nexport interface RecordLockingProviderProps {\n children: React.ReactNode;\n}\n\nconst RecordLockingHoc = (Component: React.ComponentType<RecordLockingProviderProps>) => {\n return function RecordLockingProvider({ children }: RecordLockingProviderProps) {\n return (\n <Component>\n <RecordLockingProviderComponent>{children}</RecordLockingProviderComponent>\n </Component>\n );\n };\n};\n\nexport const RecordLocking = () => {\n const wcp = useWcp();\n\n if (!wcp.canUseRecordLocking()) {\n return null;\n }\n\n return (\n <>\n <RegisterFeature feature={RecordLockingPermissionsFeature} />\n <SecurityPermissions />\n <Provider hoc={RecordLockingHoc} />\n <HeadlessCmsActionsAcoCell />\n <HeadlessCmsContentEntry />\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,qBAAqB,IAAIC,8BAA8B;AAChE,SAASC,yBAAyB;AAClC,SAASC,uBAAuB;AAChC,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,mBAAmB;AAC5B,SAASC,+BAA+B;AAExC;AACA;AAMA,MAAMC,gBAAgB,GAAIC,SAA0D,IAAK;EACrF,OAAO,SAASR,qBAAqBA,CAAC;IAAES;EAAqC,CAAC,EAAE;IAC5E,oBACIZ,KAAA,CAAAa,aAAA,CAACF,SAAS,qBACNX,KAAA,CAAAa,aAAA,CAACT,8BAA8B,QAAEQ,QAAyC,CACnE,CAAC;EAEpB,CAAC;AACL,CAAC;AAED,OAAO,MAAME,aAAa,GAAGA,CAAA,KAAM;EAC/B,MAAMC,GAAG,GAAGR,MAAM,CAAC,CAAC;EAEpB,IAAI,CAACQ,GAAG,CAACC,mBAAmB,CAAC,CAAC,EAAE;IAC5B,OAAO,IAAI;EACf;EAEA,oBACIhB,KAAA,CAAAa,aAAA,CAAAb,KAAA,CAAAiB,QAAA,qBACIjB,KAAA,CAAAa,aAAA,CAACX,eAAe;IAACgB,OAAO,EAAET;EAAgC,CAAE,CAAC,eAC7DT,KAAA,CAAAa,aAAA,CAACL,mBAAmB,MAAE,CAAC,eACvBR,KAAA,CAAAa,aAAA,CAACZ,QAAQ;IAACkB,GAAG,EAAET;EAAiB,CAAE,CAAC,eACnCV,KAAA,CAAAa,aAAA,CAACR,yBAAyB,MAAE,CAAC,eAC7BL,KAAA,CAAAa,aAAA,CAACP,uBAAuB,MAAE,CAC5B,CAAC;AAEX,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/app-record-locking",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.0.0-unstable.e6f0dc8ca7",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js",
|
|
7
|
+
"./*": "./*"
|
|
8
|
+
},
|
|
5
9
|
"repository": {
|
|
6
10
|
"type": "git",
|
|
7
11
|
"url": "https://github.com/webiny/webiny-js.git"
|
|
@@ -14,39 +18,30 @@
|
|
|
14
18
|
"license": "MIT",
|
|
15
19
|
"dependencies": {
|
|
16
20
|
"@apollo/react-hooks": "3.1.5",
|
|
17
|
-
"@webiny/admin-ui": "0.0.0-unstable.
|
|
18
|
-
"@webiny/app": "0.0.0-unstable.
|
|
19
|
-
"@webiny/app-aco": "0.0.0-unstable.
|
|
20
|
-
"@webiny/app-admin": "0.0.0-unstable.
|
|
21
|
-
"@webiny/app-headless-cms": "0.0.0-unstable.
|
|
22
|
-
"@webiny/app-
|
|
23
|
-
"@webiny/
|
|
24
|
-
"@webiny/
|
|
25
|
-
"@webiny/
|
|
26
|
-
"@webiny/form": "0.0.0-unstable.e53eceafb5",
|
|
27
|
-
"@webiny/icons": "0.0.0-unstable.e53eceafb5",
|
|
28
|
-
"@webiny/plugins": "0.0.0-unstable.e53eceafb5",
|
|
29
|
-
"@webiny/react-router": "0.0.0-unstable.e53eceafb5",
|
|
30
|
-
"@webiny/utils": "0.0.0-unstable.e53eceafb5",
|
|
21
|
+
"@webiny/admin-ui": "0.0.0-unstable.e6f0dc8ca7",
|
|
22
|
+
"@webiny/app": "0.0.0-unstable.e6f0dc8ca7",
|
|
23
|
+
"@webiny/app-aco": "0.0.0-unstable.e6f0dc8ca7",
|
|
24
|
+
"@webiny/app-admin": "0.0.0-unstable.e6f0dc8ca7",
|
|
25
|
+
"@webiny/app-headless-cms": "0.0.0-unstable.e6f0dc8ca7",
|
|
26
|
+
"@webiny/app-websockets": "0.0.0-unstable.e6f0dc8ca7",
|
|
27
|
+
"@webiny/error": "0.0.0-unstable.e6f0dc8ca7",
|
|
28
|
+
"@webiny/icons": "0.0.0-unstable.e6f0dc8ca7",
|
|
29
|
+
"@webiny/utils": "0.0.0-unstable.e6f0dc8ca7",
|
|
31
30
|
"apollo-client": "2.6.10",
|
|
32
31
|
"apollo-link": "1.2.14",
|
|
33
|
-
"crypto-hash": "
|
|
32
|
+
"crypto-hash": "4.0.1",
|
|
34
33
|
"graphql-tag": "2.12.6",
|
|
35
|
-
"react": "18.
|
|
36
|
-
"react-dom": "18.
|
|
34
|
+
"react": "18.3.1",
|
|
35
|
+
"react-dom": "18.3.1"
|
|
37
36
|
},
|
|
38
37
|
"devDependencies": {
|
|
39
|
-
"@webiny/
|
|
40
|
-
"rimraf": "6.
|
|
41
|
-
"typescript": "
|
|
38
|
+
"@webiny/build-tools": "0.0.0-unstable.e6f0dc8ca7",
|
|
39
|
+
"rimraf": "6.1.3",
|
|
40
|
+
"typescript": "6.0.3"
|
|
42
41
|
},
|
|
43
42
|
"publishConfig": {
|
|
44
43
|
"access": "public",
|
|
45
44
|
"directory": "dist"
|
|
46
45
|
},
|
|
47
|
-
"
|
|
48
|
-
"build": "node ../cli/bin.js run build",
|
|
49
|
-
"watch": "node ../cli/bin.js run watch"
|
|
50
|
-
},
|
|
51
|
-
"gitHead": "e53eceafb5ce1a3872c9b4548939bb2eae5b1aef"
|
|
46
|
+
"gitHead": "e6f0dc8ca741c1fcc3fec9a5b9e86fdd49544641"
|
|
52
47
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { GenericRecord } from "@webiny/app/types";
|
|
3
|
-
import type { IRecordLockingUnlockEntryResult } from "./domain/abstractions/IRecordLockingUnlockEntry";
|
|
4
|
-
import type { SecurityPermission } from "@webiny/app-security/types";
|
|
1
|
+
import type { CmsContentEntry } from "@webiny/app-headless-cms/types.js";
|
|
2
|
+
import type { GenericRecord } from "@webiny/app/types.js";
|
|
3
|
+
import type { IRecordLockingUnlockEntryResult } from "./domain/abstractions/IRecordLockingUnlockEntry.js";
|
|
5
4
|
import type { IRecordLockingUpdateEntryLockResult } from "./domain/abstractions/IRecordLocking.js";
|
|
5
|
+
import { Identity } from "@webiny/app-admin/domain/Identity.js";
|
|
6
6
|
export interface IRecordLockingIdentity {
|
|
7
7
|
id: string;
|
|
8
8
|
displayName: string;
|
|
@@ -14,13 +14,28 @@ export interface IRecordLockingRecordLocked {
|
|
|
14
14
|
expiresOn: string;
|
|
15
15
|
actions: IRecordLockingLockRecordAction[];
|
|
16
16
|
}
|
|
17
|
-
export interface
|
|
17
|
+
export interface IRecordLockingCmsEntryValuesAction {
|
|
18
|
+
type: string;
|
|
19
|
+
message: string;
|
|
20
|
+
createdBy: Identity;
|
|
21
|
+
createdOn: string;
|
|
22
|
+
}
|
|
23
|
+
export interface IRecordLockingCmsEntryValues {
|
|
24
|
+
lockedBy: Identity;
|
|
25
|
+
lockedOn: string;
|
|
26
|
+
updatedOn: string;
|
|
27
|
+
expiresOn: string;
|
|
28
|
+
targetId: string;
|
|
29
|
+
type: string;
|
|
30
|
+
actions: IRecordLockingCmsEntryValuesAction;
|
|
31
|
+
}
|
|
32
|
+
export interface IPossiblyRecordLockingRecord extends CmsContentEntry<IRecordLockingCmsEntryValues> {
|
|
33
|
+
$selectable?: boolean;
|
|
34
|
+
$type?: "RECORD";
|
|
18
35
|
$lockingType?: string;
|
|
19
|
-
entryId: string;
|
|
20
36
|
$locked?: IRecordLockingRecordLocked | null;
|
|
21
37
|
}
|
|
22
38
|
export interface IRecordLockingRecord extends IPossiblyRecordLockingRecord {
|
|
23
|
-
entryId: string;
|
|
24
39
|
$lockingType: string;
|
|
25
40
|
}
|
|
26
41
|
export type IIsRecordLockedParams = Pick<IRecordLockingRecord, "id" | "$lockingType">;
|
|
@@ -72,6 +87,6 @@ export interface IRecordLockingError<T = GenericRecord> {
|
|
|
72
87
|
code: string;
|
|
73
88
|
data?: T;
|
|
74
89
|
}
|
|
75
|
-
export interface RecordLockingSecurityPermission extends
|
|
76
|
-
canForceUnlock?:
|
|
90
|
+
export interface RecordLockingSecurityPermission extends Identity.Permission {
|
|
91
|
+
canForceUnlock?: boolean;
|
|
77
92
|
}
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { CmsContentEntry } from \"@webiny/app-headless-cms/types.js\";\nimport type { GenericRecord } from \"@webiny/app/types.js\";\nimport type { IRecordLockingUnlockEntryResult } from \"~/domain/abstractions/IRecordLockingUnlockEntry.js\";\nimport type { IRecordLockingUpdateEntryLockResult } from \"~/domain/abstractions/IRecordLocking.js\";\nimport { Identity } from \"@webiny/app-admin/domain/Identity.js\";\n\nexport interface IRecordLockingIdentity {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface IRecordLockingRecordLocked {\n lockedBy: IRecordLockingIdentity;\n lockedOn: string;\n expiresOn: string;\n actions: IRecordLockingLockRecordAction[];\n}\n\nexport interface IRecordLockingCmsEntryValuesAction {\n type: string;\n message: string;\n createdBy: Identity;\n createdOn: string;\n}\n\nexport interface IRecordLockingCmsEntryValues {\n lockedBy: Identity;\n lockedOn: string;\n updatedOn: string;\n expiresOn: string;\n targetId: string;\n type: string;\n actions: IRecordLockingCmsEntryValuesAction;\n}\n\nexport interface IPossiblyRecordLockingRecord extends CmsContentEntry<IRecordLockingCmsEntryValues> {\n $selectable?: boolean;\n $type?: \"RECORD\";\n $lockingType?: string;\n $locked?: IRecordLockingRecordLocked | null;\n}\n\nexport interface IRecordLockingRecord extends IPossiblyRecordLockingRecord {\n $lockingType: string;\n}\n\nexport type IIsRecordLockedParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IUpdateEntryLockParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IUnlockEntryParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IFetchLockRecordParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport type IFetchLockedEntryLockRecordParams = Pick<IRecordLockingRecord, \"id\" | \"$lockingType\">;\n\nexport interface IFetchLockRecordResult {\n data: IRecordLockingLockRecord | null;\n error: IRecordLockingError | null;\n}\n\nexport interface IRecordLockingContext<\n T extends IPossiblyRecordLockingRecord = IPossiblyRecordLockingRecord\n> {\n readonly loading: boolean;\n readonly records: IPossiblyRecordLockingRecord[];\n readonly error?: IRecordLockingError | null;\n setRecords(folderId: string, type: string, records: T[]): Promise<void>;\n updateEntryLock(params: IUpdateEntryLockParams): Promise<IRecordLockingUpdateEntryLockResult>;\n isRecordLocked(params?: IIsRecordLockedParams): boolean;\n getLockRecordEntry(id: string): IRecordLockingRecord | undefined;\n fetchLockRecord(params: IFetchLockRecordParams): Promise<IFetchLockRecordResult>;\n fetchLockedEntryLockRecord(\n params: IFetchLockedEntryLockRecordParams\n ): Promise<IRecordLockingLockRecord | null>;\n unlockEntry(params: IUnlockEntryParams): Promise<IRecordLockingUnlockEntryResult>;\n removeEntryLock(params: IUnlockEntryParams): void;\n unlockEntryForce(params: IUnlockEntryParams): Promise<IRecordLockingUnlockEntryResult>;\n isLockExpired(input: Date | string): boolean;\n}\n\nexport interface IRecordLockingLockRecordAction {\n type: string;\n message: string;\n createdBy: IRecordLockingIdentity;\n createdOn: string;\n}\n\nexport interface IRecordLockingLockRecord {\n id: string;\n lockedOn: string;\n expiresOn: string;\n lockedBy: IRecordLockingIdentity;\n targetId: string;\n type: string;\n actions: IRecordLockingLockRecordAction[];\n}\n\nexport interface IRecordLockingMeta {\n totalCount: number;\n cursor: string | null;\n hasMoreItems: boolean;\n}\n\nexport interface IRecordLockingError<T = GenericRecord> {\n message: string;\n code: string;\n data?: T;\n}\n\nexport interface RecordLockingSecurityPermission extends Identity.Permission {\n canForceUnlock?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { GenericRecord } from "@webiny/app/types";
|
|
1
|
+
import type { GenericRecord } from "@webiny/app/types.js";
|
|
2
2
|
export type ICreateCacheKeyInput = string | GenericRecord | ICreateCacheKeyInput[];
|
|
3
3
|
export declare const createCacheKey: (input: ICreateCacheKeyInput) => Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sha1","createKey","input","JSON","stringify","createCacheKey","key","outputFormat"],"sources":["createCacheKey.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/app/types\";\nimport { sha1 } from \"crypto-hash\";\n\nexport type ICreateCacheKeyInput = string | GenericRecord | ICreateCacheKeyInput[];\n\nconst createKey = (input: ICreateCacheKeyInput): string => {\n if (typeof input === \"string\") {\n return input;\n }\n return JSON.stringify(input);\n};\n\nexport const createCacheKey = (input: ICreateCacheKeyInput): Promise<string> => {\n const key = createKey(input);\n\n return sha1(key, {\n outputFormat: \"hex\"\n });\n};\n"],"mappings":"AACA,SAASA,IAAI,QAAQ,aAAa;AAIlC,MAAMC,SAAS,GAAIC,KAA2B,IAAa;EACvD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC3B,OAAOA,KAAK;EAChB;EACA,OAAOC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC;AAChC,CAAC;AAED,OAAO,MAAMG,cAAc,GAAIH,KAA2B,IAAsB;EAC5E,MAAMI,GAAG,GAAGL,SAAS,CAACC,KAAK,CAAC;EAE5B,OAAOF,IAAI,CAACM,GAAG,EAAE;IACbC,YAAY,EAAE;EAClB,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["sha1","createKey","input","JSON","stringify","createCacheKey","key","outputFormat"],"sources":["createCacheKey.ts"],"sourcesContent":["import type { GenericRecord } from \"@webiny/app/types.js\";\nimport { sha1 } from \"crypto-hash\";\n\nexport type ICreateCacheKeyInput = string | GenericRecord | ICreateCacheKeyInput[];\n\nconst createKey = (input: ICreateCacheKeyInput): string => {\n if (typeof input === \"string\") {\n return input;\n }\n return JSON.stringify(input);\n};\n\nexport const createCacheKey = (input: ICreateCacheKeyInput): Promise<string> => {\n const key = createKey(input);\n\n return sha1(key, {\n outputFormat: \"hex\"\n });\n};\n"],"mappings":"AACA,SAASA,IAAI,QAAQ,aAAa;AAIlC,MAAMC,SAAS,GAAIC,KAA2B,IAAa;EACvD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC3B,OAAOA,KAAK;EAChB;EACA,OAAOC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC;AAChC,CAAC;AAED,OAAO,MAAMG,cAAc,GAAIH,KAA2B,IAAsB;EAC5E,MAAMI,GAAG,GAAGL,SAAS,CAACC,KAAK,CAAC;EAE5B,OAAOF,IAAI,CAACM,GAAG,EAAE;IACbC,YAAY,EAAE;EAClB,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import type { RecordLockingSecurityPermission } from "../../types";
|
|
3
|
-
export interface RecordLockingPermissionsProps {
|
|
4
|
-
value: RecordLockingSecurityPermission[];
|
|
5
|
-
onChange: (value: RecordLockingSecurityPermission[]) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare const RecordLockingPermissions: ({ value, onChange }: RecordLockingPermissionsProps) => React.JSX.Element;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useMemo } from "react";
|
|
2
|
-
import { i18n } from "@webiny/app/i18n";
|
|
3
|
-
import { gridWithPaddingClass, PermissionInfo } from "@webiny/app-admin/components/Permissions";
|
|
4
|
-
import { Form } from "@webiny/form";
|
|
5
|
-
import { Grid, Select } from "@webiny/admin-ui";
|
|
6
|
-
const t = i18n.ns("app-record-locking/components/permissionRenderer");
|
|
7
|
-
const RECORD_LOCKING_PERMISSION = "recordLocking";
|
|
8
|
-
export const RecordLockingPermissions = ({
|
|
9
|
-
value,
|
|
10
|
-
onChange
|
|
11
|
-
}) => {
|
|
12
|
-
const onFormChange = useCallback(data => {
|
|
13
|
-
const newValue = value.filter(p => {
|
|
14
|
-
return p.name.startsWith(RECORD_LOCKING_PERMISSION) === false;
|
|
15
|
-
});
|
|
16
|
-
if (!data.canForceUnlock || data.canForceUnlock === "no") {
|
|
17
|
-
onChange(newValue);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
onChange([...newValue, {
|
|
21
|
-
name: "recordLocking",
|
|
22
|
-
canForceUnlock: "yes"
|
|
23
|
-
}]);
|
|
24
|
-
}, [value]);
|
|
25
|
-
const formData = useMemo(() => {
|
|
26
|
-
if (!Array.isArray(value)) {
|
|
27
|
-
return {};
|
|
28
|
-
}
|
|
29
|
-
const hasFullAccess = value.some(item => item.name === "*");
|
|
30
|
-
if (hasFullAccess) {
|
|
31
|
-
return {
|
|
32
|
-
canForceUnlock: "yes"
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
const permissions = value.filter(item => item.name.startsWith(RECORD_LOCKING_PERMISSION));
|
|
36
|
-
if (!permissions.length || !permissions.some(item => !!item.canForceUnlock)) {
|
|
37
|
-
return {};
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
canForceUnlock: "yes"
|
|
41
|
-
};
|
|
42
|
-
}, []);
|
|
43
|
-
return /*#__PURE__*/React.createElement(Form, {
|
|
44
|
-
data: formData,
|
|
45
|
-
onChange: onFormChange
|
|
46
|
-
}, ({
|
|
47
|
-
Bind
|
|
48
|
-
}) => {
|
|
49
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Grid, {
|
|
50
|
-
className: gridWithPaddingClass
|
|
51
|
-
}, /*#__PURE__*/React.createElement(Grid.Column, {
|
|
52
|
-
span: 6
|
|
53
|
-
}, /*#__PURE__*/React.createElement(PermissionInfo, {
|
|
54
|
-
title: t`Advanced Record Locking`
|
|
55
|
-
})), /*#__PURE__*/React.createElement(Grid.Column, {
|
|
56
|
-
span: 6
|
|
57
|
-
}, /*#__PURE__*/React.createElement(Bind, {
|
|
58
|
-
name: "canForceUnlock"
|
|
59
|
-
}, /*#__PURE__*/React.createElement(Select, {
|
|
60
|
-
options: [{
|
|
61
|
-
label: t`No Access`,
|
|
62
|
-
value: "no"
|
|
63
|
-
}, {
|
|
64
|
-
label: t`Full Access`,
|
|
65
|
-
value: "yes"
|
|
66
|
-
}]
|
|
67
|
-
})))));
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
//# sourceMappingURL=RecordLockingPermissions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useMemo","i18n","gridWithPaddingClass","PermissionInfo","Form","Grid","Select","t","ns","RECORD_LOCKING_PERMISSION","RecordLockingPermissions","value","onChange","onFormChange","data","newValue","filter","p","name","startsWith","canForceUnlock","formData","Array","isArray","hasFullAccess","some","item","permissions","length","createElement","Bind","Fragment","className","Column","span","title","options","label"],"sources":["RecordLockingPermissions.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from \"react\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { gridWithPaddingClass, PermissionInfo } from \"@webiny/app-admin/components/Permissions\";\nimport { Form } from \"@webiny/form\";\nimport type { RecordLockingSecurityPermission } from \"~/types\";\nimport { Grid, Select } from \"@webiny/admin-ui\";\n\nconst t = i18n.ns(\"app-record-locking/components/permissionRenderer\");\n\nconst RECORD_LOCKING_PERMISSION = \"recordLocking\";\n\nexport interface RecordLockingPermissionsProps {\n value: RecordLockingSecurityPermission[];\n onChange: (value: RecordLockingSecurityPermission[]) => void;\n}\n\nexport const RecordLockingPermissions = ({ value, onChange }: RecordLockingPermissionsProps) => {\n const onFormChange = useCallback(\n (data: RecordLockingSecurityPermission) => {\n const newValue = value.filter(p => {\n return p.name.startsWith(RECORD_LOCKING_PERMISSION) === false;\n });\n\n if (!data.canForceUnlock || data.canForceUnlock === \"no\") {\n onChange(newValue);\n return;\n }\n\n onChange([\n ...newValue,\n {\n name: \"recordLocking\",\n canForceUnlock: \"yes\"\n }\n ]);\n },\n [value]\n );\n\n const formData = useMemo(() => {\n if (!Array.isArray(value)) {\n return {};\n }\n\n const hasFullAccess = value.some(item => item.name === \"*\");\n\n if (hasFullAccess) {\n return {\n canForceUnlock: \"yes\"\n };\n }\n\n const permissions = value.filter(item => item.name.startsWith(RECORD_LOCKING_PERMISSION));\n\n if (!permissions.length || !permissions.some(item => !!item.canForceUnlock)) {\n return {};\n }\n\n return {\n canForceUnlock: \"yes\"\n };\n }, []);\n\n return (\n <Form<RecordLockingSecurityPermission> data={formData} onChange={onFormChange}>\n {({ Bind }) => {\n return (\n <>\n <Grid className={gridWithPaddingClass}>\n <Grid.Column span={6}>\n <PermissionInfo title={t`Advanced Record Locking`} />\n </Grid.Column>\n <Grid.Column span={6}>\n <Bind name={\"canForceUnlock\"}>\n <Select\n options={[\n { label: t`No Access`, value: \"no\" },\n { label: t`Full Access`, value: \"yes\" }\n ]}\n ></Select>\n </Bind>\n </Grid.Column>\n </Grid>\n </>\n );\n }}\n </Form>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { ReactComponent as LockIcon } from "@webiny/icons/lock.svg";
|
|
3
|
-
import { RecordLockingPermissions } from "./RecordLockingPermissions";
|
|
4
|
-
import { Accordion } from "@webiny/admin-ui";
|
|
5
|
-
export const recordLockingPermissionRenderer = {
|
|
6
|
-
type: "admin-app-permissions-renderer",
|
|
7
|
-
name: "admin-app-permissions-renderer-record-locking",
|
|
8
|
-
render(props) {
|
|
9
|
-
return /*#__PURE__*/React.createElement(Accordion.Item, {
|
|
10
|
-
icon: /*#__PURE__*/React.createElement(Accordion.Item.Icon, {
|
|
11
|
-
label: "Record Locking",
|
|
12
|
-
icon: /*#__PURE__*/React.createElement(LockIcon, null)
|
|
13
|
-
}),
|
|
14
|
-
title: "Record Locking",
|
|
15
|
-
description: "Manage Record Locking permissions.",
|
|
16
|
-
"data-testid": "permission.recordLocking"
|
|
17
|
-
}, /*#__PURE__*/React.createElement(RecordLockingPermissions, props));
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","ReactComponent","LockIcon","RecordLockingPermissions","Accordion","recordLockingPermissionRenderer","type","name","render","props","createElement","Item","icon","Icon","label","title","description"],"sources":["index.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { AdminAppPermissionRendererPlugin } from \"@webiny/app-admin/types\";\nimport { ReactComponent as LockIcon } from \"@webiny/icons/lock.svg\";\nimport { RecordLockingPermissions } from \"./RecordLockingPermissions\";\nimport { Accordion } from \"@webiny/admin-ui\";\n\nexport const recordLockingPermissionRenderer: AdminAppPermissionRendererPlugin = {\n type: \"admin-app-permissions-renderer\",\n name: \"admin-app-permissions-renderer-record-locking\",\n render(props) {\n return (\n <Accordion.Item\n icon={<Accordion.Item.Icon label={\"Record Locking\"} icon={<LockIcon />} />}\n title={\"Record Locking\"}\n description={\"Manage Record Locking permissions.\"}\n data-testid={\"permission.recordLocking\"}\n >\n <RecordLockingPermissions {...props} />\n </Accordion.Item>\n );\n }\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAGzB,SAASC,cAAc,IAAIC,QAAQ,QAAQ,wBAAwB;AACnE,SAASC,wBAAwB;AACjC,SAASC,SAAS,QAAQ,kBAAkB;AAE5C,OAAO,MAAMC,+BAAiE,GAAG;EAC7EC,IAAI,EAAE,gCAAgC;EACtCC,IAAI,EAAE,+CAA+C;EACrDC,MAAMA,CAACC,KAAK,EAAE;IACV,oBACIT,KAAA,CAAAU,aAAA,CAACN,SAAS,CAACO,IAAI;MACXC,IAAI,eAAEZ,KAAA,CAAAU,aAAA,CAACN,SAAS,CAACO,IAAI,CAACE,IAAI;QAACC,KAAK,EAAE,gBAAiB;QAACF,IAAI,eAAEZ,KAAA,CAAAU,aAAA,CAACR,QAAQ,MAAE;MAAE,CAAE,CAAE;MAC3Ea,KAAK,EAAE,gBAAiB;MACxBC,WAAW,EAAE,oCAAqC;MAClD,eAAa;IAA2B,gBAExChB,KAAA,CAAAU,aAAA,CAACP,wBAAwB,EAAKM,KAAQ,CAC1B,CAAC;EAEzB;AACJ,CAAC","ignoreList":[]}
|