@webiny/app-record-locking 5.40.0-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/LICENSE +21 -0
- package/README.md +12 -0
- package/components/HeadlessCmsActionsAcoCell.d.ts +2 -0
- package/components/HeadlessCmsActionsAcoCell.js +70 -0
- package/components/HeadlessCmsActionsAcoCell.js.map +1 -0
- package/components/HeadlessCmsContentEntry/ContentEntryGuard.d.ts +5 -0
- package/components/HeadlessCmsContentEntry/ContentEntryGuard.js +88 -0
- package/components/HeadlessCmsContentEntry/ContentEntryGuard.js.map +1 -0
- package/components/HeadlessCmsContentEntry/ContentEntryLocker.d.ts +14 -0
- package/components/HeadlessCmsContentEntry/ContentEntryLocker.js +108 -0
- package/components/HeadlessCmsContentEntry/ContentEntryLocker.js.map +1 -0
- package/components/HeadlessCmsContentEntry/HeadlessCmsContentEntry.d.ts +2 -0
- package/components/HeadlessCmsContentEntry/HeadlessCmsContentEntry.js +63 -0
- package/components/HeadlessCmsContentEntry/HeadlessCmsContentEntry.js.map +1 -0
- package/components/HeadlessCmsContentEntry/index.d.ts +1 -0
- package/components/HeadlessCmsContentEntry/index.js +18 -0
- package/components/HeadlessCmsContentEntry/index.js.map +1 -0
- package/components/LockedRecord/LockedRecord.d.ts +6 -0
- package/components/LockedRecord/LockedRecord.js +161 -0
- package/components/LockedRecord/LockedRecord.js.map +1 -0
- package/components/LockedRecord/LockedRecordForceUnlock.d.ts +9 -0
- package/components/LockedRecord/LockedRecordForceUnlock.js +117 -0
- package/components/LockedRecord/LockedRecordForceUnlock.js.map +1 -0
- package/components/LockedRecord/index.d.ts +1 -0
- package/components/LockedRecord/index.js +18 -0
- package/components/LockedRecord/index.js.map +1 -0
- package/components/RecordLockingProvider.d.ts +7 -0
- package/components/RecordLockingProvider.js +130 -0
- package/components/RecordLockingProvider.js.map +1 -0
- package/components/assets/lock.svg +13 -0
- package/components/decorators/UseContentEntriesListHookDecorator.d.ts +2 -0
- package/components/decorators/UseContentEntriesListHookDecorator.js +28 -0
- package/components/decorators/UseContentEntriesListHookDecorator.js.map +1 -0
- package/components/decorators/UseSaveEntryDecorator.d.ts +2 -0
- package/components/decorators/UseSaveEntryDecorator.js +55 -0
- package/components/decorators/UseSaveEntryDecorator.js.map +1 -0
- package/domain/RecordLocking.d.ts +32 -0
- package/domain/RecordLocking.js +379 -0
- package/domain/RecordLocking.js.map +1 -0
- package/domain/RecordLockingClient.d.ts +12 -0
- package/domain/RecordLockingClient.js +33 -0
- package/domain/RecordLockingClient.js.map +1 -0
- package/domain/RecordLockingGetLockRecord.d.ts +11 -0
- package/domain/RecordLockingGetLockRecord.js +34 -0
- package/domain/RecordLockingGetLockRecord.js.map +1 -0
- package/domain/RecordLockingGetLockedEntryLockRecord.d.ts +11 -0
- package/domain/RecordLockingGetLockedEntryLockRecord.js +32 -0
- package/domain/RecordLockingGetLockedEntryLockRecord.js.map +1 -0
- package/domain/RecordLockingIsEntryLocked.d.ts +11 -0
- package/domain/RecordLockingIsEntryLocked.js +32 -0
- package/domain/RecordLockingIsEntryLocked.js.map +1 -0
- package/domain/RecordLockingListLockRecords.d.ts +12 -0
- package/domain/RecordLockingListLockRecords.js +42 -0
- package/domain/RecordLockingListLockRecords.js.map +1 -0
- package/domain/RecordLockingLockEntry.d.ts +11 -0
- package/domain/RecordLockingLockEntry.js +28 -0
- package/domain/RecordLockingLockEntry.js.map +1 -0
- package/domain/RecordLockingUnlockEntry.d.ts +11 -0
- package/domain/RecordLockingUnlockEntry.js +32 -0
- package/domain/RecordLockingUnlockEntry.js.map +1 -0
- package/domain/RecordLockingUnlockEntryRequest.d.ts +11 -0
- package/domain/RecordLockingUnlockEntryRequest.js +28 -0
- package/domain/RecordLockingUnlockEntryRequest.js.map +1 -0
- package/domain/RecordLockingUpdateEntryLock.d.ts +11 -0
- package/domain/RecordLockingUpdateEntryLock.js +32 -0
- package/domain/RecordLockingUpdateEntryLock.js.map +1 -0
- package/domain/abstractions/IRecordLocking.d.ts +19 -0
- package/domain/abstractions/IRecordLocking.js +7 -0
- package/domain/abstractions/IRecordLocking.js.map +1 -0
- package/domain/abstractions/IRecordLockingClient.d.ts +6 -0
- package/domain/abstractions/IRecordLockingClient.js +7 -0
- package/domain/abstractions/IRecordLockingClient.js.map +1 -0
- package/domain/abstractions/IRecordLockingGetLockRecord.d.ts +12 -0
- package/domain/abstractions/IRecordLockingGetLockRecord.js +7 -0
- package/domain/abstractions/IRecordLockingGetLockRecord.js.map +1 -0
- package/domain/abstractions/IRecordLockingGetLockedEntryLockRecord.d.ts +12 -0
- package/domain/abstractions/IRecordLockingGetLockedEntryLockRecord.js +7 -0
- package/domain/abstractions/IRecordLockingGetLockedEntryLockRecord.js.map +1 -0
- package/domain/abstractions/IRecordLockingIsEntryLocked.d.ts +8 -0
- package/domain/abstractions/IRecordLockingIsEntryLocked.js +7 -0
- package/domain/abstractions/IRecordLockingIsEntryLocked.js.map +1 -0
- package/domain/abstractions/IRecordLockingListLockRecords.d.ts +19 -0
- package/domain/abstractions/IRecordLockingListLockRecords.js +7 -0
- package/domain/abstractions/IRecordLockingListLockRecords.js.map +1 -0
- package/domain/abstractions/IRecordLockingLockEntry.d.ts +12 -0
- package/domain/abstractions/IRecordLockingLockEntry.js +7 -0
- package/domain/abstractions/IRecordLockingLockEntry.js.map +1 -0
- package/domain/abstractions/IRecordLockingUnlockEntry.d.ts +13 -0
- package/domain/abstractions/IRecordLockingUnlockEntry.js +7 -0
- package/domain/abstractions/IRecordLockingUnlockEntry.js.map +1 -0
- package/domain/abstractions/IRecordLockingUnlockEntryRequest.d.ts +12 -0
- package/domain/abstractions/IRecordLockingUnlockEntryRequest.js +7 -0
- package/domain/abstractions/IRecordLockingUnlockEntryRequest.js.map +1 -0
- package/domain/abstractions/IRecordLockingUpdateEntryLock.d.ts +12 -0
- package/domain/abstractions/IRecordLockingUpdateEntryLock.js +7 -0
- package/domain/abstractions/IRecordLockingUpdateEntryLock.js.map +1 -0
- package/domain/graphql/fields.d.ts +2 -0
- package/domain/graphql/fields.js +10 -0
- package/domain/graphql/fields.js.map +1 -0
- package/domain/graphql/getLockRecord.d.ts +12 -0
- package/domain/graphql/getLockRecord.js +14 -0
- package/domain/graphql/getLockRecord.js.map +1 -0
- package/domain/graphql/getLockedEntryLockRecord.d.ts +12 -0
- package/domain/graphql/getLockedEntryLockRecord.js +14 -0
- package/domain/graphql/getLockedEntryLockRecord.js.map +1 -0
- package/domain/graphql/isEntryLocked.d.ts +12 -0
- package/domain/graphql/isEntryLocked.js +14 -0
- package/domain/graphql/isEntryLocked.js.map +1 -0
- package/domain/graphql/listLockRecords.d.ts +17 -0
- package/domain/graphql/listLockRecords.js +17 -0
- package/domain/graphql/listLockRecords.js.map +1 -0
- package/domain/graphql/lockEntry.d.ts +12 -0
- package/domain/graphql/lockEntry.js +16 -0
- package/domain/graphql/lockEntry.js.map +1 -0
- package/domain/graphql/unlockEntry.d.ts +12 -0
- package/domain/graphql/unlockEntry.js +14 -0
- package/domain/graphql/unlockEntry.js.map +1 -0
- package/domain/graphql/unlockEntryRequest.d.ts +12 -0
- package/domain/graphql/unlockEntryRequest.js +16 -0
- package/domain/graphql/unlockEntryRequest.js.map +1 -0
- package/domain/graphql/updateEntryLock.d.ts +12 -0
- package/domain/graphql/updateEntryLock.js +14 -0
- package/domain/graphql/updateEntryLock.js.map +1 -0
- package/domain/utils/createRecordLockingClient.d.ts +3 -0
- package/domain/utils/createRecordLockingClient.js +18 -0
- package/domain/utils/createRecordLockingClient.js.map +1 -0
- package/domain/utils/createRecordLockingError.d.ts +6 -0
- package/domain/utils/createRecordLockingError.js +22 -0
- package/domain/utils/createRecordLockingError.js.map +1 -0
- package/hooks/index.d.ts +2 -0
- package/hooks/index.js +29 -0
- package/hooks/index.js.map +1 -0
- package/hooks/usePermission.d.ts +3 -0
- package/hooks/usePermission.js +21 -0
- package/hooks/usePermission.js.map +1 -0
- package/hooks/useRecordLocking.d.ts +2 -0
- package/hooks/useRecordLocking.js +18 -0
- package/hooks/useRecordLocking.js.map +1 -0
- package/index.d.ts +7 -0
- package/index.js +57 -0
- package/index.js.map +1 -0
- package/package.json +58 -0
- package/types.d.ts +72 -0
- package/types.js +7 -0
- package/types.js.map +1 -0
- package/utils/createCacheKey.d.ts +3 -0
- package/utils/createCacheKey.js +21 -0
- package/utils/createCacheKey.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactHooks","_RecordLocking","_appAdmin","RecordLockingContext","exports","React","createContext","isSameArray","existingRecords","newRecords","length","every","record","some","newRecord","id","savedOn","RecordLockingProvider","props","client","useApolloClient","_useState","useState","_useState2","_slicedToArray2","default","loading","setLoading","recordLocking","useMemo","createRecordLocking","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","error","setError","_useStateIfMounted3","_useStateIfMounted4","records","setRecords","setRecordsIfNeeded","useCallback","sameArray","value","updateEntryLock","params","result","target","data","message","code","prev","map","item","entryId","_objectSpread2","$locked","unlockEntry","unlockEntryForce","isLockExpired","input","isRecordLocked","getLockRecordEntry","removeEntryLock","fetchLockRecord","ex","fetchLockedEntryLockRecord","folderId","type","createElement","Provider","Object","assign"],"sources":["RecordLockingProvider.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from \"react\";\nimport { useApolloClient } from \"@apollo/react-hooks\";\nimport { createRecordLocking } from \"~/domain/RecordLocking\";\nimport {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IPossiblyRecordLockingRecord,\n IRecordLockingContext,\n IRecordLockingError,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\n\nexport interface IRecordLockingProviderProps {\n children: React.ReactNode;\n}\n\nexport const RecordLockingContext = React.createContext({} as unknown as IRecordLockingContext);\n\nconst isSameArray = (\n existingRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[],\n newRecords: Pick<IPossiblyRecordLockingRecord, \"id\" | \"savedOn\">[]\n): boolean => {\n if (existingRecords.length !== newRecords.length) {\n return false;\n }\n return existingRecords.every(record => {\n return newRecords.some(\n newRecord => newRecord.id === record.id && newRecord.savedOn === record.savedOn\n );\n });\n};\n\nexport const RecordLockingProvider = (props: IRecordLockingProviderProps) => {\n const client = useApolloClient();\n\n const [loading, setLoading] = useState(false);\n\n const recordLocking = useMemo(() => {\n return createRecordLocking({\n client,\n setLoading\n });\n }, []);\n\n const [error, setError] = useStateIfMounted<IRecordLockingError | null>(null);\n\n const [records, setRecords] = useStateIfMounted<IPossiblyRecordLockingRecord[]>([]);\n\n const setRecordsIfNeeded = useCallback(\n (newRecords: IPossiblyRecordLockingRecord[]) => {\n const sameArray = isSameArray(records, newRecords);\n if (sameArray) {\n return;\n }\n setRecords(newRecords);\n },\n [records]\n );\n\n const value: IRecordLockingContext = {\n async updateEntryLock(params: IUpdateEntryLockParams) {\n const result = await recordLocking.updateEntryLock(params);\n if (result.error) {\n setError(result.error);\n return;\n }\n const target = result.data;\n if (!target?.id) {\n setError({\n message: \"No data returned from server.\",\n code: \"NO_DATA\"\n });\n return;\n }\n\n setRecords(prev => {\n return prev.map(item => {\n if (item.entryId === target.id) {\n return {\n ...item,\n $locked: result.data\n };\n }\n return item;\n });\n });\n },\n async unlockEntry(params: IUnlockEntryParams) {\n return await recordLocking.unlockEntry(params);\n },\n async unlockEntryForce(params: IUnlockEntryParams) {\n return await recordLocking.unlockEntry(params, true);\n },\n isLockExpired(input: Date | string): boolean {\n return recordLocking.isLockExpired(input);\n },\n isRecordLocked(record) {\n if (!record) {\n return false;\n }\n return recordLocking.isRecordLocked(record);\n },\n getLockRecordEntry(id: string) {\n return recordLocking.getLockRecordEntry(id);\n },\n removeEntryLock(params: IUnlockEntryParams) {\n return recordLocking.removeEntryLock(params);\n },\n async fetchLockRecord(params: IFetchLockRecordParams) {\n try {\n return await recordLocking.fetchLockRecord(params);\n } catch (ex) {\n return {\n data: null,\n error: ex\n };\n }\n },\n async fetchLockedEntryLockRecord(params: IFetchLockedEntryLockRecordParams) {\n return recordLocking.fetchLockedEntryLockRecord(params);\n },\n async setRecords(folderId, type, newRecords) {\n setRecordsIfNeeded(newRecords);\n\n const result = await recordLocking.setRecords(folderId, type, newRecords);\n if (!result) {\n return;\n }\n setRecords(result);\n },\n error,\n records,\n loading\n };\n\n return <RecordLockingContext.Provider {...props} value={value} />;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg width="24px" height="24px" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
|
3
|
+
<g stroke-width="1" fill="none" fill-rule="evenodd">
|
|
4
|
+
<g>
|
|
5
|
+
<g>
|
|
6
|
+
<polygon points="0 0 24 0 24 24 0 24"/>
|
|
7
|
+
<polygon opacity="0.87" points="0 0 24 0 24 24 0 24"/>
|
|
8
|
+
</g>
|
|
9
|
+
<path d="M18,8 L17,8 L17,6 C17,3.24 14.76,1 12,1 C9.24,1 7,3.24 7,6 L7,8 L6,8 C4.9,8 4,8.9 4,10 L4,20 C4,21.1 4.9,22 6,22 L18,22 C19.1,22 20,21.1 20,20 L20,10 C20,8.9 19.1,8 18,8 Z M12,17 C10.9,17 10,16.1 10,15 C10,13.9 10.9,13 12,13 C13.1,13 14,13.9 14,15 C14,16.1 13.1,17 12,17 Z M9,8 L9,6 C9,4.34 10.34,3 12,3 C13.66,3 15,4.34 15,6 L15,8 L9,8 Z"
|
|
10
|
+
fill="#D8D8D8" fill-rule="nonzero"/>
|
|
11
|
+
</g>
|
|
12
|
+
</g>
|
|
13
|
+
</svg>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.UseContentEntriesListHookDecorator = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _appHeadlessCms = require("@webiny/app-headless-cms");
|
|
11
|
+
var _hooks = require("../../hooks");
|
|
12
|
+
var UseContentEntriesListHookDecorator = exports.UseContentEntriesListHookDecorator = _appHeadlessCms.ContentEntryListConfig.ContentEntries.useContentEntriesList.createDecorator(function (originalHook) {
|
|
13
|
+
return function RecordLockingUseContentEntriesList() {
|
|
14
|
+
var value = originalHook();
|
|
15
|
+
var recordLocking = (0, _hooks.useRecordLocking)();
|
|
16
|
+
(0, _react.useEffect)(function () {
|
|
17
|
+
if (!value.records) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
recordLocking.setRecords(value.folderId, value.modelId, value.records);
|
|
21
|
+
}, [value.folderId, value.modelId, value.records, recordLocking]);
|
|
22
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, value), {}, {
|
|
23
|
+
records: recordLocking.records
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=UseContentEntriesListHookDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_appHeadlessCms","_hooks","UseContentEntriesListHookDecorator","exports","ContentEntryListConfig","ContentEntries","useContentEntriesList","createDecorator","originalHook","RecordLockingUseContentEntriesList","value","recordLocking","useRecordLocking","useEffect","records","setRecords","folderId","modelId","_objectSpread2","default"],"sources":["UseContentEntriesListHookDecorator.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { ContentEntryListConfig } from \"@webiny/app-headless-cms\";\nimport { useRecordLocking } from \"~/hooks\";\n\nexport const UseContentEntriesListHookDecorator =\n ContentEntryListConfig.ContentEntries.useContentEntriesList.createDecorator(originalHook => {\n return function RecordLockingUseContentEntriesList() {\n const value = originalHook();\n const recordLocking = useRecordLocking();\n\n useEffect(() => {\n if (!value.records) {\n return;\n }\n\n recordLocking.setRecords(value.folderId, value.modelId, value.records);\n }, [value.folderId, value.modelId, value.records, recordLocking]);\n\n return {\n ...value,\n records: recordLocking.records\n };\n };\n });\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAEO,IAAMG,kCAAkC,GAAAC,OAAA,CAAAD,kCAAA,GAC3CE,sCAAsB,CAACC,cAAc,CAACC,qBAAqB,CAACC,eAAe,CAAC,UAAAC,YAAY,EAAI;EACxF,OAAO,SAASC,kCAAkCA,CAAA,EAAG;IACjD,IAAMC,KAAK,GAAGF,YAAY,CAAC,CAAC;IAC5B,IAAMG,aAAa,GAAG,IAAAC,uBAAgB,EAAC,CAAC;IAExC,IAAAC,gBAAS,EAAC,YAAM;MACZ,IAAI,CAACH,KAAK,CAACI,OAAO,EAAE;QAChB;MACJ;MAEAH,aAAa,CAACI,UAAU,CAACL,KAAK,CAACM,QAAQ,EAAEN,KAAK,CAACO,OAAO,EAAEP,KAAK,CAACI,OAAO,CAAC;IAC1E,CAAC,EAAE,CAACJ,KAAK,CAACM,QAAQ,EAAEN,KAAK,CAACO,OAAO,EAAEP,KAAK,CAACI,OAAO,EAAEH,aAAa,CAAC,CAAC;IAEjE,WAAAO,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOT,KAAK;MACRI,OAAO,EAAEH,aAAa,CAACG;IAAO;EAEtC,CAAC;AACL,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.UseSaveEntryDecorator = void 0;
|
|
8
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _hooks = require("../../hooks");
|
|
11
|
+
var _appHeadlessCms = require("@webiny/app-headless-cms");
|
|
12
|
+
var _appAdmin = require("@webiny/app-admin");
|
|
13
|
+
var _ContentEntryEditorCo = _appHeadlessCms.ContentEntryEditorConfig.ContentEntry,
|
|
14
|
+
ContentEntryForm = _ContentEntryEditorCo.ContentEntryForm,
|
|
15
|
+
useContentEntry = _ContentEntryEditorCo.useContentEntry;
|
|
16
|
+
var UseSaveEntryDecorator = exports.UseSaveEntryDecorator = ContentEntryForm.useContentEntryForm.createDecorator(function (originalHook) {
|
|
17
|
+
return function useRecordLockingUseSave() {
|
|
18
|
+
var hook = originalHook();
|
|
19
|
+
var _useContentEntry = useContentEntry(),
|
|
20
|
+
entry = _useContentEntry.entry,
|
|
21
|
+
model = _useContentEntry.contentModel;
|
|
22
|
+
var _useRecordLocking = (0, _hooks.useRecordLocking)(),
|
|
23
|
+
fetchLockedEntryLockRecord = _useRecordLocking.fetchLockedEntryLockRecord,
|
|
24
|
+
updateEntryLock = _useRecordLocking.updateEntryLock;
|
|
25
|
+
var _useSnackbar = (0, _appAdmin.useSnackbar)(),
|
|
26
|
+
showSnackbar = _useSnackbar.showSnackbar;
|
|
27
|
+
var saveEntry = (0, _react.useCallback)(async function () {
|
|
28
|
+
if (!entry.id) {
|
|
29
|
+
return hook.saveEntry.apply(hook, arguments);
|
|
30
|
+
}
|
|
31
|
+
var result = await fetchLockedEntryLockRecord({
|
|
32
|
+
id: entry.id,
|
|
33
|
+
$lockingType: model.modelId
|
|
34
|
+
});
|
|
35
|
+
if (result?.lockedBy) {
|
|
36
|
+
var lockedBy = result.lockedBy;
|
|
37
|
+
showSnackbar("It seems that the entry is locked by ".concat(lockedBy.displayName || lockedBy.id, ". You can't save your changes."));
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
var saveResult = await hook.saveEntry.apply(hook, arguments);
|
|
41
|
+
if (saveResult) {
|
|
42
|
+
await updateEntryLock({
|
|
43
|
+
id: saveResult.id,
|
|
44
|
+
$lockingType: model.modelId
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return saveResult;
|
|
48
|
+
}, [entry?.id, model.modelId, updateEntryLock]);
|
|
49
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, hook), {}, {
|
|
50
|
+
saveEntry: saveEntry
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=UseSaveEntryDecorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_hooks","_appHeadlessCms","_appAdmin","_ContentEntryEditorCo","ContentEntryEditorConfig","ContentEntry","ContentEntryForm","useContentEntry","UseSaveEntryDecorator","exports","useContentEntryForm","createDecorator","originalHook","useRecordLockingUseSave","hook","_useContentEntry","entry","model","contentModel","_useRecordLocking","useRecordLocking","fetchLockedEntryLockRecord","updateEntryLock","_useSnackbar","useSnackbar","showSnackbar","saveEntry","useCallback","id","apply","arguments","result","$lockingType","modelId","lockedBy","concat","displayName","saveResult","_objectSpread2","default"],"sources":["UseSaveEntryDecorator.tsx"],"sourcesContent":["import { useCallback } from \"react\";\nimport { useRecordLocking } from \"~/hooks\";\nimport { ContentEntryEditorConfig } from \"@webiny/app-headless-cms\";\nimport { useSnackbar } from \"@webiny/app-admin\";\n\nconst {\n ContentEntry: { ContentEntryForm, useContentEntry }\n} = ContentEntryEditorConfig;\n\ntype SaveEntry = ReturnType<typeof ContentEntryForm.useContentEntryForm>[\"saveEntry\"];\n\nexport const UseSaveEntryDecorator = ContentEntryForm.useContentEntryForm.createDecorator(\n originalHook => {\n return function useRecordLockingUseSave() {\n const hook = originalHook();\n const { entry, contentModel: model } = useContentEntry();\n const { fetchLockedEntryLockRecord, updateEntryLock } = useRecordLocking();\n const { showSnackbar } = useSnackbar();\n\n const saveEntry: SaveEntry = useCallback(\n async (...params) => {\n if (!entry.id) {\n return hook.saveEntry(...params);\n }\n\n const result = await fetchLockedEntryLockRecord({\n id: entry.id,\n $lockingType: model.modelId\n });\n\n if (result?.lockedBy) {\n const lockedBy = result.lockedBy;\n showSnackbar(\n `It seems that the entry is locked by ${\n lockedBy.displayName || lockedBy.id\n }. You can't save your changes.`\n );\n return null;\n }\n\n const saveResult = await hook.saveEntry(...params);\n if (saveResult) {\n await updateEntryLock({\n id: saveResult.id,\n $lockingType: model.modelId\n });\n }\n\n return saveResult;\n },\n [entry?.id, model.modelId, updateEntryLock]\n );\n\n return {\n ...hook,\n saveEntry\n };\n };\n }\n);\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAEA,IAAAI,qBAAA,GAEIC,wCAAwB,CADxBC,YAAY;EAAIC,gBAAgB,GAAAH,qBAAA,CAAhBG,gBAAgB;EAAEC,eAAe,GAAAJ,qBAAA,CAAfI,eAAe;AAK9C,IAAMC,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAGF,gBAAgB,CAACI,mBAAmB,CAACC,eAAe,CACrF,UAAAC,YAAY,EAAI;EACZ,OAAO,SAASC,uBAAuBA,CAAA,EAAG;IACtC,IAAMC,IAAI,GAAGF,YAAY,CAAC,CAAC;IAC3B,IAAAG,gBAAA,GAAuCR,eAAe,CAAC,CAAC;MAAhDS,KAAK,GAAAD,gBAAA,CAALC,KAAK;MAAgBC,KAAK,GAAAF,gBAAA,CAAnBG,YAAY;IAC3B,IAAAC,iBAAA,GAAwD,IAAAC,uBAAgB,EAAC,CAAC;MAAlEC,0BAA0B,GAAAF,iBAAA,CAA1BE,0BAA0B;MAAEC,eAAe,GAAAH,iBAAA,CAAfG,eAAe;IACnD,IAAAC,YAAA,GAAyB,IAAAC,qBAAW,EAAC,CAAC;MAA9BC,YAAY,GAAAF,YAAA,CAAZE,YAAY;IAEpB,IAAMC,SAAoB,GAAG,IAAAC,kBAAW,EACpC,kBAAqB;MACjB,IAAI,CAACX,KAAK,CAACY,EAAE,EAAE;QACX,OAAOd,IAAI,CAACY,SAAS,CAAAG,KAAA,CAAdf,IAAI,EAAAgB,SAAoB,CAAC;MACpC;MAEA,IAAMC,MAAM,GAAG,MAAMV,0BAA0B,CAAC;QAC5CO,EAAE,EAAEZ,KAAK,CAACY,EAAE;QACZI,YAAY,EAAEf,KAAK,CAACgB;MACxB,CAAC,CAAC;MAEF,IAAIF,MAAM,EAAEG,QAAQ,EAAE;QAClB,IAAMA,QAAQ,GAAGH,MAAM,CAACG,QAAQ;QAChCT,YAAY,yCAAAU,MAAA,CAEJD,QAAQ,CAACE,WAAW,IAAIF,QAAQ,CAACN,EAAE,mCAE3C,CAAC;QACD,OAAO,IAAI;MACf;MAEA,IAAMS,UAAU,GAAG,MAAMvB,IAAI,CAACY,SAAS,CAAAG,KAAA,CAAdf,IAAI,EAAAgB,SAAoB,CAAC;MAClD,IAAIO,UAAU,EAAE;QACZ,MAAMf,eAAe,CAAC;UAClBM,EAAE,EAAES,UAAU,CAACT,EAAE;UACjBI,YAAY,EAAEf,KAAK,CAACgB;QACxB,CAAC,CAAC;MACN;MAEA,OAAOI,UAAU;IACrB,CAAC,EACD,CAACrB,KAAK,EAAEY,EAAE,EAAEX,KAAK,CAACgB,OAAO,EAAEX,eAAe,CAC9C,CAAC;IAED,WAAAgB,cAAA,CAAAC,OAAA,MAAAD,cAAA,CAAAC,OAAA,MACOzB,IAAI;MACPY,SAAS,EAATA;IAAS;EAEjB,CAAC;AACL,CACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { IRecordLocking } from "./abstractions/IRecordLocking";
|
|
2
|
+
import { ApolloClient } from "apollo-client";
|
|
3
|
+
import { IRecordLockingGetLockRecord } from "./abstractions/IRecordLockingGetLockRecord";
|
|
4
|
+
import { IRecordLockingIsEntryLocked } from "./abstractions/IRecordLockingIsEntryLocked";
|
|
5
|
+
import { IRecordLockingListLockRecords } from "./abstractions/IRecordLockingListLockRecords";
|
|
6
|
+
import { IRecordLockingLockEntry } from "./abstractions/IRecordLockingLockEntry";
|
|
7
|
+
import { IRecordLockingUnlockEntry } from "./abstractions/IRecordLockingUnlockEntry";
|
|
8
|
+
import { IRecordLockingUnlockEntryRequest } from "./abstractions/IRecordLockingUnlockEntryRequest";
|
|
9
|
+
import { IRecordLockingError, IRecordLockingRecord } from "../types";
|
|
10
|
+
import { IRecordLockingClient } from "./abstractions/IRecordLockingClient";
|
|
11
|
+
import { IRecordLockingUpdateEntryLock } from "./abstractions/IRecordLockingUpdateEntryLock";
|
|
12
|
+
import { IRecordLockingGetLockedEntryLockRecord } from "./abstractions/IRecordLockingGetLockedEntryLockRecord";
|
|
13
|
+
export interface ICreateRecordLockingParams {
|
|
14
|
+
client: ApolloClient<any>;
|
|
15
|
+
setLoading: (loading: boolean) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface IRecordLockingParams {
|
|
18
|
+
client: IRecordLockingClient;
|
|
19
|
+
setLoading: (loading: boolean) => void;
|
|
20
|
+
getLockRecord: IRecordLockingGetLockRecord;
|
|
21
|
+
getLockedEntryLockRecord: IRecordLockingGetLockedEntryLockRecord;
|
|
22
|
+
isEntryLocked: IRecordLockingIsEntryLocked;
|
|
23
|
+
listLockRecords: IRecordLockingListLockRecords;
|
|
24
|
+
lockEntry: IRecordLockingLockEntry;
|
|
25
|
+
unlockEntry: IRecordLockingUnlockEntry;
|
|
26
|
+
unlockEntryRequest: IRecordLockingUnlockEntryRequest;
|
|
27
|
+
updateEntryLock: IRecordLockingUpdateEntryLock;
|
|
28
|
+
}
|
|
29
|
+
export interface IOnErrorCb {
|
|
30
|
+
(error: IRecordLockingError): void;
|
|
31
|
+
}
|
|
32
|
+
export declare const createRecordLocking: <T extends IRecordLockingRecord>(config: ICreateRecordLockingParams) => IRecordLocking;
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createRecordLocking = void 0;
|
|
8
|
+
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
9
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _RecordLockingGetLockRecord = require("./RecordLockingGetLockRecord");
|
|
14
|
+
var _RecordLockingIsEntryLocked = require("./RecordLockingIsEntryLocked");
|
|
15
|
+
var _RecordLockingListLockRecords = require("./RecordLockingListLockRecords");
|
|
16
|
+
var _RecordLockingLockEntry = require("./RecordLockingLockEntry");
|
|
17
|
+
var _RecordLockingUnlockEntry = require("./RecordLockingUnlockEntry");
|
|
18
|
+
var _RecordLockingUnlockEntryRequest = require("./RecordLockingUnlockEntryRequest");
|
|
19
|
+
var _RecordLockingClient = require("./RecordLockingClient");
|
|
20
|
+
var _createRecordLockingError = require("./utils/createRecordLockingError");
|
|
21
|
+
var _parseIdentifier9 = require("@webiny/utils/parseIdentifier");
|
|
22
|
+
var _createCacheKey = require("../utils/createCacheKey");
|
|
23
|
+
var _RecordLockingUpdateEntryLock = require("./RecordLockingUpdateEntryLock");
|
|
24
|
+
var _RecordLockingGetLockedEntryLockRecord = require("./RecordLockingGetLockedEntryLockRecord");
|
|
25
|
+
var RecordLocking = /*#__PURE__*/function () {
|
|
26
|
+
function RecordLocking(params) {
|
|
27
|
+
(0, _classCallCheck2.default)(this, RecordLocking);
|
|
28
|
+
(0, _defineProperty2.default)(this, "loading", false);
|
|
29
|
+
(0, _defineProperty2.default)(this, "records", []);
|
|
30
|
+
(0, _defineProperty2.default)(this, "onErrorCb", null);
|
|
31
|
+
this.client = params.client;
|
|
32
|
+
this._setLoading = params.setLoading;
|
|
33
|
+
this._getLockRecord = params.getLockRecord;
|
|
34
|
+
this._getLockedEntryLockRecord = params.getLockedEntryLockRecord;
|
|
35
|
+
this._isEntryLocked = params.isEntryLocked;
|
|
36
|
+
this._listLockRecords = params.listLockRecords;
|
|
37
|
+
this._lockEntry = params.lockEntry;
|
|
38
|
+
this._unlockEntry = params.unlockEntry;
|
|
39
|
+
this._unlockEntryRequest = params.unlockEntryRequest;
|
|
40
|
+
this._updateEntryLock = params.updateEntryLock;
|
|
41
|
+
}
|
|
42
|
+
return (0, _createClass2.default)(RecordLocking, [{
|
|
43
|
+
key: "setRecords",
|
|
44
|
+
value: async function setRecords(folderId, type, records) {
|
|
45
|
+
var result = await this.fetchAndAssignRecords(folderId, type, records);
|
|
46
|
+
if (!result) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
return result.map(function (record) {
|
|
50
|
+
var _parseIdentifier = (0, _parseIdentifier9.parseIdentifier)(record.id),
|
|
51
|
+
entryId = _parseIdentifier.id;
|
|
52
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, record), {}, {
|
|
53
|
+
$lockingType: type,
|
|
54
|
+
$locked: record.$locked,
|
|
55
|
+
$selectable: record.$locked ? false : record.$selectable,
|
|
56
|
+
entryId: entryId
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: "fetchLockRecord",
|
|
62
|
+
value: async function fetchLockRecord(params) {
|
|
63
|
+
var id = params.id,
|
|
64
|
+
$lockingType = params.$lockingType;
|
|
65
|
+
var _parseIdentifier2 = (0, _parseIdentifier9.parseIdentifier)(id),
|
|
66
|
+
entryId = _parseIdentifier2.id;
|
|
67
|
+
try {
|
|
68
|
+
var result = await this._getLockRecord.execute({
|
|
69
|
+
id: entryId,
|
|
70
|
+
type: $lockingType
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
data: result.data,
|
|
74
|
+
error: result.error
|
|
75
|
+
};
|
|
76
|
+
} catch (ex) {
|
|
77
|
+
return {
|
|
78
|
+
data: null,
|
|
79
|
+
error: ex
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}, {
|
|
84
|
+
key: "fetchLockedEntryLockRecord",
|
|
85
|
+
value: async function fetchLockedEntryLockRecord(params) {
|
|
86
|
+
var id = params.id,
|
|
87
|
+
$lockingType = params.$lockingType;
|
|
88
|
+
var _parseIdentifier3 = (0, _parseIdentifier9.parseIdentifier)(id),
|
|
89
|
+
entryId = _parseIdentifier3.id;
|
|
90
|
+
var result = await this._getLockedEntryLockRecord.execute({
|
|
91
|
+
id: entryId,
|
|
92
|
+
type: $lockingType
|
|
93
|
+
});
|
|
94
|
+
return result.data;
|
|
95
|
+
}
|
|
96
|
+
}, {
|
|
97
|
+
key: "getLockRecordEntry",
|
|
98
|
+
value: function getLockRecordEntry(id) {
|
|
99
|
+
return this.records.find(function (record) {
|
|
100
|
+
var _parseIdentifier4 = (0, _parseIdentifier9.parseIdentifier)(id),
|
|
101
|
+
entryId = _parseIdentifier4.id;
|
|
102
|
+
return record.entryId === entryId;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
106
|
+
key: "isRecordLocked",
|
|
107
|
+
value: function isRecordLocked(record) {
|
|
108
|
+
var result = this.records.find(function (r) {
|
|
109
|
+
var _parseIdentifier5 = (0, _parseIdentifier9.parseIdentifier)(record.id),
|
|
110
|
+
entryId = _parseIdentifier5.id;
|
|
111
|
+
return r.entryId === entryId && !!r.$locked && r.$lockingType === record.$lockingType;
|
|
112
|
+
});
|
|
113
|
+
if (!result?.$locked?.expiresOn) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
var isExpired = this.isLockExpired(result.$locked.expiresOn);
|
|
117
|
+
return !isExpired;
|
|
118
|
+
}
|
|
119
|
+
}, {
|
|
120
|
+
key: "updateEntryLock",
|
|
121
|
+
value: async function updateEntryLock(params) {
|
|
122
|
+
try {
|
|
123
|
+
return await this._updateEntryLock.execute({
|
|
124
|
+
id: params.id,
|
|
125
|
+
type: params.$lockingType
|
|
126
|
+
});
|
|
127
|
+
} catch (ex) {
|
|
128
|
+
this.triggerOnError(ex);
|
|
129
|
+
return {
|
|
130
|
+
data: null,
|
|
131
|
+
error: ex
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}, {
|
|
136
|
+
key: "removeEntryLock",
|
|
137
|
+
value: function removeEntryLock(params) {
|
|
138
|
+
var index = this.records.findIndex(function (record) {
|
|
139
|
+
return record.entryId === params.id && record.$lockingType === params.$lockingType;
|
|
140
|
+
});
|
|
141
|
+
if (index === -1) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
this.records[index] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.records[index]), {}, {
|
|
145
|
+
$locked: null,
|
|
146
|
+
$selectable: true
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}, {
|
|
150
|
+
key: "unlockEntry",
|
|
151
|
+
value: async function unlockEntry(params, force) {
|
|
152
|
+
try {
|
|
153
|
+
var result = await this._unlockEntry.execute({
|
|
154
|
+
id: params.id,
|
|
155
|
+
type: params.$lockingType,
|
|
156
|
+
force: force
|
|
157
|
+
});
|
|
158
|
+
var id = result.data?.id;
|
|
159
|
+
if (!id) {
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
var index = this.records.findIndex(function (r) {
|
|
163
|
+
return r.entryId === id;
|
|
164
|
+
});
|
|
165
|
+
if (index === -1) {
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
this.records[index] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.records[index]), {}, {
|
|
169
|
+
$locked: undefined,
|
|
170
|
+
$selectable: true
|
|
171
|
+
});
|
|
172
|
+
return result;
|
|
173
|
+
} catch (ex) {
|
|
174
|
+
this.triggerOnError(ex);
|
|
175
|
+
return {
|
|
176
|
+
data: null,
|
|
177
|
+
error: ex
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}, {
|
|
182
|
+
key: "onError",
|
|
183
|
+
value: function onError(cb) {
|
|
184
|
+
this.onErrorCb = cb;
|
|
185
|
+
}
|
|
186
|
+
}, {
|
|
187
|
+
key: "triggerOnError",
|
|
188
|
+
value: function triggerOnError(error) {
|
|
189
|
+
this.setIsLoading(false);
|
|
190
|
+
if (!this.onErrorCb) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
this.onErrorCb(error);
|
|
194
|
+
}
|
|
195
|
+
}, {
|
|
196
|
+
key: "isLockExpired",
|
|
197
|
+
value: function isLockExpired(input) {
|
|
198
|
+
var expiresOn = new Date(input);
|
|
199
|
+
return expiresOn <= new Date();
|
|
200
|
+
}
|
|
201
|
+
}, {
|
|
202
|
+
key: "setIsLoading",
|
|
203
|
+
value: function setIsLoading(loading) {
|
|
204
|
+
this._setLoading(loading);
|
|
205
|
+
this.loading = loading;
|
|
206
|
+
}
|
|
207
|
+
}, {
|
|
208
|
+
key: "fetchAndAssignRecords",
|
|
209
|
+
value: async function fetchAndAssignRecords(folderId, type, records) {
|
|
210
|
+
var _this = this;
|
|
211
|
+
if (records.length === 0) {
|
|
212
|
+
return;
|
|
213
|
+
} else if (this.loading) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
var assignedIdList = await this.assignRecords(folderId, type, records);
|
|
217
|
+
if (assignedIdList.length === 0) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
this.setIsLoading(true);
|
|
221
|
+
var result;
|
|
222
|
+
try {
|
|
223
|
+
result = await this._listLockRecords.execute({
|
|
224
|
+
where: {
|
|
225
|
+
id_in: assignedIdList,
|
|
226
|
+
type: type
|
|
227
|
+
},
|
|
228
|
+
limit: 10000
|
|
229
|
+
});
|
|
230
|
+
} catch (ex) {
|
|
231
|
+
console.error(ex);
|
|
232
|
+
this.triggerOnError(ex);
|
|
233
|
+
return;
|
|
234
|
+
} finally {
|
|
235
|
+
this.setIsLoading(false);
|
|
236
|
+
}
|
|
237
|
+
if (result.error) {
|
|
238
|
+
this.triggerOnError(result.error);
|
|
239
|
+
return;
|
|
240
|
+
} else if (!result.data) {
|
|
241
|
+
this.triggerOnError((0, _createRecordLockingError.createRecordLockingError)({
|
|
242
|
+
message: "There is no data in the result and there is no error. Please check the network tab for more info.",
|
|
243
|
+
code: "NO_DATA_IN_RESULT"
|
|
244
|
+
}));
|
|
245
|
+
return;
|
|
246
|
+
} else if (result.data.length === 0) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
var _iterator = (0, _createForOfIteratorHelper2.default)(result.data),
|
|
250
|
+
_step;
|
|
251
|
+
try {
|
|
252
|
+
var _loop = async function _loop() {
|
|
253
|
+
var record = _step.value;
|
|
254
|
+
var index = _this.records.findIndex(function (r) {
|
|
255
|
+
var _parseIdentifier6 = (0, _parseIdentifier9.parseIdentifier)(record.id),
|
|
256
|
+
entryId = _parseIdentifier6.id;
|
|
257
|
+
return r.entryId === entryId;
|
|
258
|
+
});
|
|
259
|
+
if (index < 0) {
|
|
260
|
+
console.error("There is no record with id ".concat(record.id, " in the records array."));
|
|
261
|
+
return 1; // continue
|
|
262
|
+
}
|
|
263
|
+
_this.records[index] = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _this.records[index]), {}, {
|
|
264
|
+
$locked: {
|
|
265
|
+
lockedBy: record.lockedBy,
|
|
266
|
+
expiresOn: record.expiresOn,
|
|
267
|
+
lockedOn: record.lockedOn,
|
|
268
|
+
actions: record.actions
|
|
269
|
+
}
|
|
270
|
+
});
|
|
271
|
+
};
|
|
272
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
273
|
+
if (await _loop()) continue;
|
|
274
|
+
}
|
|
275
|
+
} catch (err) {
|
|
276
|
+
_iterator.e(err);
|
|
277
|
+
} finally {
|
|
278
|
+
_iterator.f();
|
|
279
|
+
}
|
|
280
|
+
return this.records;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Assign records and return the assigned ID list.
|
|
284
|
+
*/
|
|
285
|
+
}, {
|
|
286
|
+
key: "assignRecords",
|
|
287
|
+
value: async function assignRecords(folderId, type, records) {
|
|
288
|
+
var _this2 = this;
|
|
289
|
+
/**
|
|
290
|
+
* First we check the record keys against ones in the local cache.
|
|
291
|
+
*/
|
|
292
|
+
var keys = records.map(function (record) {
|
|
293
|
+
if (record.entryId) {
|
|
294
|
+
return record.entryId;
|
|
295
|
+
}
|
|
296
|
+
var _parseIdentifier7 = (0, _parseIdentifier9.parseIdentifier)(record.id),
|
|
297
|
+
entryId = _parseIdentifier7.id;
|
|
298
|
+
return entryId;
|
|
299
|
+
});
|
|
300
|
+
var cacheKey = await (0, _createCacheKey.createCacheKey)(keys);
|
|
301
|
+
if (this.currentRecordsCacheKey === cacheKey) {
|
|
302
|
+
return [];
|
|
303
|
+
}
|
|
304
|
+
this.currentRecordsCacheKey = cacheKey;
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Reset records if new type is not as same as the old type / folderId.
|
|
308
|
+
*/
|
|
309
|
+
if (this.currentRecordType !== type || this.currentFolderId !== folderId) {
|
|
310
|
+
this.records = [];
|
|
311
|
+
this.currentRecordType = type;
|
|
312
|
+
this.currentFolderId = folderId;
|
|
313
|
+
}
|
|
314
|
+
return records.reduce(function (collection, record) {
|
|
315
|
+
var _parseIdentifier8 = (0, _parseIdentifier9.parseIdentifier)(record.id),
|
|
316
|
+
entryId = _parseIdentifier8.id;
|
|
317
|
+
var index = _this2.records.findIndex(function (r) {
|
|
318
|
+
return r.entryId === entryId;
|
|
319
|
+
});
|
|
320
|
+
if (index >= 0) {
|
|
321
|
+
return collection;
|
|
322
|
+
}
|
|
323
|
+
_this2.records.push((0, _objectSpread2.default)((0, _objectSpread2.default)({}, record), {}, {
|
|
324
|
+
entryId: entryId,
|
|
325
|
+
$lockingType: type,
|
|
326
|
+
$locked: undefined
|
|
327
|
+
}));
|
|
328
|
+
if (record.$type !== "RECORD") {
|
|
329
|
+
return collection;
|
|
330
|
+
}
|
|
331
|
+
collection.push(entryId);
|
|
332
|
+
return collection;
|
|
333
|
+
}, []);
|
|
334
|
+
}
|
|
335
|
+
}]);
|
|
336
|
+
}();
|
|
337
|
+
var createRecordLocking = exports.createRecordLocking = function createRecordLocking(config) {
|
|
338
|
+
var client = new _RecordLockingClient.RecordLockingClient({
|
|
339
|
+
client: config.client
|
|
340
|
+
});
|
|
341
|
+
var getLockRecord = new _RecordLockingGetLockRecord.RecordLockingGetLockRecord({
|
|
342
|
+
client: client
|
|
343
|
+
});
|
|
344
|
+
var getLockedEntryLockRecord = new _RecordLockingGetLockedEntryLockRecord.RecordLockingGetLockedEntryLockRecord({
|
|
345
|
+
client: client
|
|
346
|
+
});
|
|
347
|
+
var isEntryLocked = new _RecordLockingIsEntryLocked.RecordLockingIsEntryLocked({
|
|
348
|
+
client: client
|
|
349
|
+
});
|
|
350
|
+
var listLockRecords = new _RecordLockingListLockRecords.RecordLockingListLockRecords({
|
|
351
|
+
client: client
|
|
352
|
+
});
|
|
353
|
+
var lockEntry = new _RecordLockingLockEntry.RecordLockingLockEntry({
|
|
354
|
+
client: client
|
|
355
|
+
});
|
|
356
|
+
var unlockEntry = new _RecordLockingUnlockEntry.RecordLockingUnlockEntry({
|
|
357
|
+
client: client
|
|
358
|
+
});
|
|
359
|
+
var unlockEntryRequest = new _RecordLockingUnlockEntryRequest.RecordLockingUnlockEntryRequest({
|
|
360
|
+
client: client
|
|
361
|
+
});
|
|
362
|
+
var updateEntryLock = new _RecordLockingUpdateEntryLock.RecordLockingUpdateEntryLock({
|
|
363
|
+
client: client
|
|
364
|
+
});
|
|
365
|
+
return new RecordLocking({
|
|
366
|
+
client: client,
|
|
367
|
+
setLoading: config.setLoading,
|
|
368
|
+
getLockRecord: getLockRecord,
|
|
369
|
+
getLockedEntryLockRecord: getLockedEntryLockRecord,
|
|
370
|
+
isEntryLocked: isEntryLocked,
|
|
371
|
+
listLockRecords: listLockRecords,
|
|
372
|
+
updateEntryLock: updateEntryLock,
|
|
373
|
+
lockEntry: lockEntry,
|
|
374
|
+
unlockEntry: unlockEntry,
|
|
375
|
+
unlockEntryRequest: unlockEntryRequest
|
|
376
|
+
});
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
//# sourceMappingURL=RecordLocking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_RecordLockingGetLockRecord","require","_RecordLockingIsEntryLocked","_RecordLockingListLockRecords","_RecordLockingLockEntry","_RecordLockingUnlockEntry","_RecordLockingUnlockEntryRequest","_RecordLockingClient","_createRecordLockingError","_parseIdentifier9","_createCacheKey","_RecordLockingUpdateEntryLock","_RecordLockingGetLockedEntryLockRecord","RecordLocking","params","_classCallCheck2","default","_defineProperty2","client","_setLoading","setLoading","_getLockRecord","getLockRecord","_getLockedEntryLockRecord","getLockedEntryLockRecord","_isEntryLocked","isEntryLocked","_listLockRecords","listLockRecords","_lockEntry","lockEntry","_unlockEntry","unlockEntry","_unlockEntryRequest","unlockEntryRequest","_updateEntryLock","updateEntryLock","_createClass2","key","value","setRecords","folderId","type","records","result","fetchAndAssignRecords","undefined","map","record","_parseIdentifier","parseIdentifier","id","entryId","_objectSpread2","$lockingType","$locked","$selectable","fetchLockRecord","_parseIdentifier2","execute","data","error","ex","fetchLockedEntryLockRecord","_parseIdentifier3","getLockRecordEntry","find","_parseIdentifier4","isRecordLocked","r","_parseIdentifier5","expiresOn","isExpired","isLockExpired","triggerOnError","removeEntryLock","index","findIndex","force","onError","cb","onErrorCb","setIsLoading","input","Date","loading","_this","length","assignedIdList","assignRecords","where","id_in","limit","console","createRecordLockingError","message","code","_iterator","_createForOfIteratorHelper2","_step","_loop","_parseIdentifier6","concat","lockedBy","lockedOn","actions","s","n","done","err","e","f","_this2","keys","_parseIdentifier7","cacheKey","createCacheKey","currentRecordsCacheKey","currentRecordType","currentFolderId","reduce","collection","_parseIdentifier8","push","$type","createRecordLocking","exports","config","RecordLockingClient","RecordLockingGetLockRecord","RecordLockingGetLockedEntryLockRecord","RecordLockingIsEntryLocked","RecordLockingListLockRecords","RecordLockingLockEntry","RecordLockingUnlockEntry","RecordLockingUnlockEntryRequest","RecordLockingUpdateEntryLock"],"sources":["RecordLocking.ts"],"sourcesContent":["import { IRecordLocking, IRecordLockingUpdateEntryLockResult } from \"./abstractions/IRecordLocking\";\nimport { ApolloClient } from \"apollo-client\";\nimport { RecordLockingGetLockRecord } from \"./RecordLockingGetLockRecord\";\nimport { RecordLockingIsEntryLocked } from \"./RecordLockingIsEntryLocked\";\nimport { RecordLockingListLockRecords } from \"./RecordLockingListLockRecords\";\nimport { RecordLockingLockEntry } from \"./RecordLockingLockEntry\";\nimport { RecordLockingUnlockEntry } from \"./RecordLockingUnlockEntry\";\nimport { RecordLockingUnlockEntryRequest } from \"./RecordLockingUnlockEntryRequest\";\nimport { RecordLockingClient } from \"./RecordLockingClient\";\nimport { IRecordLockingGetLockRecord } from \"./abstractions/IRecordLockingGetLockRecord\";\nimport { IRecordLockingIsEntryLocked } from \"./abstractions/IRecordLockingIsEntryLocked\";\nimport {\n IRecordLockingListLockRecords,\n IRecordLockingListLockRecordsResult\n} from \"./abstractions/IRecordLockingListLockRecords\";\nimport { IRecordLockingLockEntry } from \"./abstractions/IRecordLockingLockEntry\";\nimport {\n IRecordLockingUnlockEntry,\n IRecordLockingUnlockEntryResult\n} from \"./abstractions/IRecordLockingUnlockEntry\";\nimport { IRecordLockingUnlockEntryRequest } from \"./abstractions/IRecordLockingUnlockEntryRequest\";\nimport {\n IFetchLockedEntryLockRecordParams,\n IFetchLockRecordParams,\n IFetchLockRecordResult,\n IIsRecordLockedParams,\n IRecordLockingError,\n IRecordLockingLockRecord,\n IRecordLockingRecord,\n IPossiblyRecordLockingRecord,\n IUnlockEntryParams,\n IUpdateEntryLockParams\n} from \"~/types\";\nimport { IRecordLockingClient } from \"./abstractions/IRecordLockingClient\";\nimport { createRecordLockingError } from \"./utils/createRecordLockingError\";\nimport { parseIdentifier } from \"@webiny/utils/parseIdentifier\";\nimport { createCacheKey } from \"~/utils/createCacheKey\";\nimport { RecordLockingUpdateEntryLock } from \"~/domain/RecordLockingUpdateEntryLock\";\nimport { IRecordLockingUpdateEntryLock } from \"~/domain/abstractions/IRecordLockingUpdateEntryLock\";\nimport { RecordLockingGetLockedEntryLockRecord } from \"~/domain/RecordLockingGetLockedEntryLockRecord\";\nimport { IRecordLockingGetLockedEntryLockRecord } from \"./abstractions/IRecordLockingGetLockedEntryLockRecord\";\n\nexport interface ICreateRecordLockingParams {\n client: ApolloClient<any>;\n setLoading: (loading: boolean) => void;\n}\n\nexport interface IRecordLockingParams {\n client: IRecordLockingClient;\n setLoading: (loading: boolean) => void;\n getLockRecord: IRecordLockingGetLockRecord;\n getLockedEntryLockRecord: IRecordLockingGetLockedEntryLockRecord;\n isEntryLocked: IRecordLockingIsEntryLocked;\n listLockRecords: IRecordLockingListLockRecords;\n lockEntry: IRecordLockingLockEntry;\n unlockEntry: IRecordLockingUnlockEntry;\n unlockEntryRequest: IRecordLockingUnlockEntryRequest;\n updateEntryLock: IRecordLockingUpdateEntryLock;\n}\n\nexport interface IOnErrorCb {\n (error: IRecordLockingError): void;\n}\n\nclass RecordLocking<T extends IPossiblyRecordLockingRecord = IPossiblyRecordLockingRecord>\n implements IRecordLocking<T>\n{\n private currentRecordType?: string;\n private currentFolderId?: string;\n private currentRecordsCacheKey?: string;\n private readonly _setLoading: (loading: boolean) => void;\n public loading = false;\n public records: IRecordLockingRecord[] = [];\n\n private readonly client: IRecordLockingClient;\n private readonly _getLockRecord: IRecordLockingGetLockRecord;\n private readonly _isEntryLocked: IRecordLockingIsEntryLocked;\n private readonly _getLockedEntryLockRecord: IRecordLockingGetLockedEntryLockRecord;\n private readonly _listLockRecords: IRecordLockingListLockRecords;\n private readonly _lockEntry: IRecordLockingLockEntry;\n private readonly _unlockEntry: IRecordLockingUnlockEntry;\n private readonly _unlockEntryRequest: IRecordLockingUnlockEntryRequest;\n private readonly _updateEntryLock: IRecordLockingUpdateEntryLock;\n\n private onErrorCb: IOnErrorCb | null = null;\n\n public constructor(params: IRecordLockingParams) {\n this.client = params.client;\n this._setLoading = params.setLoading;\n this._getLockRecord = params.getLockRecord;\n this._getLockedEntryLockRecord = params.getLockedEntryLockRecord;\n this._isEntryLocked = params.isEntryLocked;\n this._listLockRecords = params.listLockRecords;\n this._lockEntry = params.lockEntry;\n this._unlockEntry = params.unlockEntry;\n this._unlockEntryRequest = params.unlockEntryRequest;\n this._updateEntryLock = params.updateEntryLock;\n }\n\n public async setRecords(\n folderId: string,\n type: string,\n records: T[]\n ): Promise<IRecordLockingRecord[] | undefined> {\n const result = await this.fetchAndAssignRecords(folderId, type, records);\n if (!result) {\n return undefined;\n }\n\n return result.map(record => {\n const { id: entryId } = parseIdentifier(record.id);\n return {\n ...record,\n $lockingType: type,\n $locked: record.$locked,\n $selectable: record.$locked ? false : record.$selectable,\n entryId\n };\n });\n }\n\n public async fetchLockRecord(params: IFetchLockRecordParams): Promise<IFetchLockRecordResult> {\n const { id, $lockingType } = params;\n\n const { id: entryId } = parseIdentifier(id);\n\n try {\n const result = await this._getLockRecord.execute({\n id: entryId,\n type: $lockingType\n });\n\n return {\n data: result.data,\n error: result.error\n };\n } catch (ex) {\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public async fetchLockedEntryLockRecord(\n params: IFetchLockedEntryLockRecordParams\n ): Promise<IRecordLockingLockRecord | null> {\n const { id, $lockingType } = params;\n\n const { id: entryId } = parseIdentifier(id);\n const result = await this._getLockedEntryLockRecord.execute({\n id: entryId,\n type: $lockingType\n });\n return result.data;\n }\n\n public getLockRecordEntry(id: string): IRecordLockingRecord | undefined {\n return this.records.find(record => {\n const { id: entryId } = parseIdentifier(id);\n return record.entryId === entryId;\n });\n }\n\n public isRecordLocked(record: IIsRecordLockedParams): boolean {\n const result = this.records.find(r => {\n const { id: entryId } = parseIdentifier(record.id);\n\n return r.entryId === entryId && !!r.$locked && r.$lockingType === record.$lockingType;\n });\n if (!result?.$locked?.expiresOn) {\n return false;\n }\n const isExpired = this.isLockExpired(result.$locked.expiresOn);\n return !isExpired;\n }\n\n public async updateEntryLock(\n params: IUpdateEntryLockParams\n ): Promise<IRecordLockingUpdateEntryLockResult> {\n try {\n return await this._updateEntryLock.execute({\n id: params.id,\n type: params.$lockingType\n });\n } catch (ex) {\n this.triggerOnError(ex);\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public removeEntryLock(params: IUnlockEntryParams): void {\n const index = this.records.findIndex(record => {\n return record.entryId === params.id && record.$lockingType === params.$lockingType;\n });\n if (index === -1) {\n return;\n }\n this.records[index] = {\n ...this.records[index],\n $locked: null,\n $selectable: true\n };\n }\n\n public async unlockEntry(\n params: IUnlockEntryParams,\n force?: boolean\n ): Promise<IRecordLockingUnlockEntryResult> {\n try {\n const result = await this._unlockEntry.execute({\n id: params.id,\n type: params.$lockingType,\n force\n });\n\n const id = result.data?.id;\n if (!id) {\n return result;\n }\n const index = this.records.findIndex(r => r.entryId === id);\n if (index === -1) {\n return result;\n }\n\n this.records[index] = {\n ...this.records[index],\n $locked: undefined,\n $selectable: true\n };\n\n return result;\n } catch (ex) {\n this.triggerOnError(ex);\n return {\n data: null,\n error: ex\n };\n }\n }\n\n public onError(cb: IOnErrorCb): void {\n this.onErrorCb = cb;\n }\n\n public triggerOnError(error: IRecordLockingError): void {\n this.setIsLoading(false);\n if (!this.onErrorCb) {\n return;\n }\n this.onErrorCb(error);\n }\n\n public isLockExpired(input: Date | string): boolean {\n const expiresOn = new Date(input);\n return expiresOn <= new Date();\n }\n\n private setIsLoading(loading: boolean): void {\n this._setLoading(loading);\n this.loading = loading;\n }\n\n private async fetchAndAssignRecords(\n folderId: string,\n type: string,\n records: T[]\n ): Promise<IPossiblyRecordLockingRecord[] | undefined> {\n if (records.length === 0) {\n return;\n } else if (this.loading) {\n return;\n }\n const assignedIdList = await this.assignRecords(folderId, type, records);\n if (assignedIdList.length === 0) {\n return;\n }\n this.setIsLoading(true);\n let result: IRecordLockingListLockRecordsResult;\n try {\n result = await this._listLockRecords.execute({\n where: {\n id_in: assignedIdList,\n type\n },\n limit: 10000\n });\n } catch (ex) {\n console.error(ex);\n this.triggerOnError(ex);\n return;\n } finally {\n this.setIsLoading(false);\n }\n if (result.error) {\n this.triggerOnError(result.error);\n return;\n } else if (!result.data) {\n this.triggerOnError(\n createRecordLockingError({\n message: `There is no data in the result and there is no error. Please check the network tab for more info.`,\n code: \"NO_DATA_IN_RESULT\"\n })\n );\n return;\n } else if (result.data.length === 0) {\n return;\n }\n\n for (const record of result.data) {\n const index = this.records.findIndex(r => {\n const { id: entryId } = parseIdentifier(record.id);\n return r.entryId === entryId;\n });\n if (index < 0) {\n console.error(`There is no record with id ${record.id} in the records array.`);\n continue;\n }\n this.records[index] = {\n ...this.records[index],\n $locked: {\n lockedBy: record.lockedBy,\n expiresOn: record.expiresOn,\n lockedOn: record.lockedOn,\n actions: record.actions\n }\n };\n }\n\n return this.records;\n }\n /**\n * Assign records and return the assigned ID list.\n */\n private async assignRecords(folderId: string, type: string, records: T[]): Promise<string[]> {\n /**\n * First we check the record keys against ones in the local cache.\n */\n const keys = records.map(record => {\n if (record.entryId) {\n return record.entryId;\n }\n const { id: entryId } = parseIdentifier(record.id);\n return entryId;\n });\n const cacheKey = await createCacheKey(keys);\n if (this.currentRecordsCacheKey === cacheKey) {\n return [];\n }\n this.currentRecordsCacheKey = cacheKey;\n\n /**\n * Reset records if new type is not as same as the old type / folderId.\n */\n if (this.currentRecordType !== type || this.currentFolderId !== folderId) {\n this.records = [];\n this.currentRecordType = type;\n this.currentFolderId = folderId;\n }\n\n return records.reduce<string[]>((collection, record) => {\n const { id: entryId } = parseIdentifier(record.id);\n const index = this.records.findIndex(r => r.entryId === entryId);\n if (index >= 0) {\n return collection;\n }\n this.records.push({\n ...record,\n entryId,\n $lockingType: type,\n $locked: undefined\n });\n if (record.$type !== \"RECORD\") {\n return collection;\n }\n collection.push(entryId);\n return collection;\n }, []);\n }\n}\n\nexport const createRecordLocking = <T extends IRecordLockingRecord>(\n config: ICreateRecordLockingParams\n): IRecordLocking => {\n const client = new RecordLockingClient({\n client: config.client\n });\n\n const getLockRecord = new RecordLockingGetLockRecord({\n client\n });\n\n const getLockedEntryLockRecord = new RecordLockingGetLockedEntryLockRecord({\n client\n });\n\n const isEntryLocked = new RecordLockingIsEntryLocked({\n client\n });\n\n const listLockRecords = new RecordLockingListLockRecords({\n client\n });\n\n const lockEntry = new RecordLockingLockEntry({\n client\n });\n\n const unlockEntry = new RecordLockingUnlockEntry({\n client\n });\n const unlockEntryRequest = new RecordLockingUnlockEntryRequest({\n client\n });\n\n const updateEntryLock = new RecordLockingUpdateEntryLock({\n client\n });\n\n return new RecordLocking<T>({\n client,\n setLoading: config.setLoading,\n getLockRecord,\n getLockedEntryLockRecord,\n isEntryLocked,\n listLockRecords,\n updateEntryLock,\n lockEntry,\n unlockEntry,\n unlockEntryRequest\n });\n};\n"],"mappings":";;;;;;;;;;;;AAEA,IAAAA,2BAAA,GAAAC,OAAA;AACA,IAAAC,2BAAA,GAAAD,OAAA;AACA,IAAAE,6BAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AACA,IAAAI,yBAAA,GAAAJ,OAAA;AACA,IAAAK,gCAAA,GAAAL,OAAA;AACA,IAAAM,oBAAA,GAAAN,OAAA;AA0BA,IAAAO,yBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AACA,IAAAS,eAAA,GAAAT,OAAA;AACA,IAAAU,6BAAA,GAAAV,OAAA;AAEA,IAAAW,sCAAA,GAAAX,OAAA;AAAuG,IAyBjGY,aAAa;EAsBf,SAAAA,cAAmBC,MAA4B,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAH,aAAA;IAAA,IAAAI,gBAAA,CAAAD,OAAA,mBAfhC,KAAK;IAAA,IAAAC,gBAAA,CAAAD,OAAA,mBACmB,EAAE;IAAA,IAAAC,gBAAA,CAAAD,OAAA,qBAYJ,IAAI;IAGvC,IAAI,CAACE,MAAM,GAAGJ,MAAM,CAACI,MAAM;IAC3B,IAAI,CAACC,WAAW,GAAGL,MAAM,CAACM,UAAU;IACpC,IAAI,CAACC,cAAc,GAAGP,MAAM,CAACQ,aAAa;IAC1C,IAAI,CAACC,yBAAyB,GAAGT,MAAM,CAACU,wBAAwB;IAChE,IAAI,CAACC,cAAc,GAAGX,MAAM,CAACY,aAAa;IAC1C,IAAI,CAACC,gBAAgB,GAAGb,MAAM,CAACc,eAAe;IAC9C,IAAI,CAACC,UAAU,GAAGf,MAAM,CAACgB,SAAS;IAClC,IAAI,CAACC,YAAY,GAAGjB,MAAM,CAACkB,WAAW;IACtC,IAAI,CAACC,mBAAmB,GAAGnB,MAAM,CAACoB,kBAAkB;IACpD,IAAI,CAACC,gBAAgB,GAAGrB,MAAM,CAACsB,eAAe;EAClD;EAAC,WAAAC,aAAA,CAAArB,OAAA,EAAAH,aAAA;IAAAyB,GAAA;IAAAC,KAAA,EAED,eAAAC,WACIC,QAAgB,EAChBC,IAAY,EACZC,OAAY,EAC+B;MAC3C,IAAMC,MAAM,GAAG,MAAM,IAAI,CAACC,qBAAqB,CAACJ,QAAQ,EAAEC,IAAI,EAAEC,OAAO,CAAC;MACxE,IAAI,CAACC,MAAM,EAAE;QACT,OAAOE,SAAS;MACpB;MAEA,OAAOF,MAAM,CAACG,GAAG,CAAC,UAAAC,MAAM,EAAI;QACxB,IAAAC,gBAAA,GAAwB,IAAAC,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;UAAtCC,OAAO,GAAAH,gBAAA,CAAXE,EAAE;QACV,WAAAE,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACOgC,MAAM;UACTM,YAAY,EAAEZ,IAAI;UAClBa,OAAO,EAAEP,MAAM,CAACO,OAAO;UACvBC,WAAW,EAAER,MAAM,CAACO,OAAO,GAAG,KAAK,GAAGP,MAAM,CAACQ,WAAW;UACxDJ,OAAO,EAAPA;QAAO;MAEf,CAAC,CAAC;IACN;EAAC;IAAAd,GAAA;IAAAC,KAAA,EAED,eAAAkB,gBAA6B3C,MAA8B,EAAmC;MAC1F,IAAQqC,EAAE,GAAmBrC,MAAM,CAA3BqC,EAAE;QAAEG,YAAY,GAAKxC,MAAM,CAAvBwC,YAAY;MAExB,IAAAI,iBAAA,GAAwB,IAAAR,iCAAe,EAACC,EAAE,CAAC;QAA/BC,OAAO,GAAAM,iBAAA,CAAXP,EAAE;MAEV,IAAI;QACA,IAAMP,MAAM,GAAG,MAAM,IAAI,CAACvB,cAAc,CAACsC,OAAO,CAAC;UAC7CR,EAAE,EAAEC,OAAO;UACXV,IAAI,EAAEY;QACV,CAAC,CAAC;QAEF,OAAO;UACHM,IAAI,EAAEhB,MAAM,CAACgB,IAAI;UACjBC,KAAK,EAAEjB,MAAM,CAACiB;QAClB,CAAC;MACL,CAAC,CAAC,OAAOC,EAAE,EAAE;QACT,OAAO;UACHF,IAAI,EAAE,IAAI;UACVC,KAAK,EAAEC;QACX,CAAC;MACL;IACJ;EAAC;IAAAxB,GAAA;IAAAC,KAAA,EAED,eAAAwB,2BACIjD,MAAyC,EACD;MACxC,IAAQqC,EAAE,GAAmBrC,MAAM,CAA3BqC,EAAE;QAAEG,YAAY,GAAKxC,MAAM,CAAvBwC,YAAY;MAExB,IAAAU,iBAAA,GAAwB,IAAAd,iCAAe,EAACC,EAAE,CAAC;QAA/BC,OAAO,GAAAY,iBAAA,CAAXb,EAAE;MACV,IAAMP,MAAM,GAAG,MAAM,IAAI,CAACrB,yBAAyB,CAACoC,OAAO,CAAC;QACxDR,EAAE,EAAEC,OAAO;QACXV,IAAI,EAAEY;MACV,CAAC,CAAC;MACF,OAAOV,MAAM,CAACgB,IAAI;IACtB;EAAC;IAAAtB,GAAA;IAAAC,KAAA,EAED,SAAA0B,mBAA0Bd,EAAU,EAAoC;MACpE,OAAO,IAAI,CAACR,OAAO,CAACuB,IAAI,CAAC,UAAAlB,MAAM,EAAI;QAC/B,IAAAmB,iBAAA,GAAwB,IAAAjB,iCAAe,EAACC,EAAE,CAAC;UAA/BC,OAAO,GAAAe,iBAAA,CAAXhB,EAAE;QACV,OAAOH,MAAM,CAACI,OAAO,KAAKA,OAAO;MACrC,CAAC,CAAC;IACN;EAAC;IAAAd,GAAA;IAAAC,KAAA,EAED,SAAA6B,eAAsBpB,MAA6B,EAAW;MAC1D,IAAMJ,MAAM,GAAG,IAAI,CAACD,OAAO,CAACuB,IAAI,CAAC,UAAAG,CAAC,EAAI;QAClC,IAAAC,iBAAA,GAAwB,IAAApB,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;UAAtCC,OAAO,GAAAkB,iBAAA,CAAXnB,EAAE;QAEV,OAAOkB,CAAC,CAACjB,OAAO,KAAKA,OAAO,IAAI,CAAC,CAACiB,CAAC,CAACd,OAAO,IAAIc,CAAC,CAACf,YAAY,KAAKN,MAAM,CAACM,YAAY;MACzF,CAAC,CAAC;MACF,IAAI,CAACV,MAAM,EAAEW,OAAO,EAAEgB,SAAS,EAAE;QAC7B,OAAO,KAAK;MAChB;MACA,IAAMC,SAAS,GAAG,IAAI,CAACC,aAAa,CAAC7B,MAAM,CAACW,OAAO,CAACgB,SAAS,CAAC;MAC9D,OAAO,CAACC,SAAS;IACrB;EAAC;IAAAlC,GAAA;IAAAC,KAAA,EAED,eAAAH,gBACItB,MAA8B,EACc;MAC5C,IAAI;QACA,OAAO,MAAM,IAAI,CAACqB,gBAAgB,CAACwB,OAAO,CAAC;UACvCR,EAAE,EAAErC,MAAM,CAACqC,EAAE;UACbT,IAAI,EAAE5B,MAAM,CAACwC;QACjB,CAAC,CAAC;MACN,CAAC,CAAC,OAAOQ,EAAE,EAAE;QACT,IAAI,CAACY,cAAc,CAACZ,EAAE,CAAC;QACvB,OAAO;UACHF,IAAI,EAAE,IAAI;UACVC,KAAK,EAAEC;QACX,CAAC;MACL;IACJ;EAAC;IAAAxB,GAAA;IAAAC,KAAA,EAED,SAAAoC,gBAAuB7D,MAA0B,EAAQ;MACrD,IAAM8D,KAAK,GAAG,IAAI,CAACjC,OAAO,CAACkC,SAAS,CAAC,UAAA7B,MAAM,EAAI;QAC3C,OAAOA,MAAM,CAACI,OAAO,KAAKtC,MAAM,CAACqC,EAAE,IAAIH,MAAM,CAACM,YAAY,KAAKxC,MAAM,CAACwC,YAAY;MACtF,CAAC,CAAC;MACF,IAAIsB,KAAK,KAAK,CAAC,CAAC,EAAE;QACd;MACJ;MACA,IAAI,CAACjC,OAAO,CAACiC,KAAK,CAAC,OAAAvB,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACZ,IAAI,CAAC2B,OAAO,CAACiC,KAAK,CAAC;QACtBrB,OAAO,EAAE,IAAI;QACbC,WAAW,EAAE;MAAI,EACpB;IACL;EAAC;IAAAlB,GAAA;IAAAC,KAAA,EAED,eAAAP,YACIlB,MAA0B,EAC1BgE,KAAe,EACyB;MACxC,IAAI;QACA,IAAMlC,MAAM,GAAG,MAAM,IAAI,CAACb,YAAY,CAAC4B,OAAO,CAAC;UAC3CR,EAAE,EAAErC,MAAM,CAACqC,EAAE;UACbT,IAAI,EAAE5B,MAAM,CAACwC,YAAY;UACzBwB,KAAK,EAALA;QACJ,CAAC,CAAC;QAEF,IAAM3B,EAAE,GAAGP,MAAM,CAACgB,IAAI,EAAET,EAAE;QAC1B,IAAI,CAACA,EAAE,EAAE;UACL,OAAOP,MAAM;QACjB;QACA,IAAMgC,KAAK,GAAG,IAAI,CAACjC,OAAO,CAACkC,SAAS,CAAC,UAAAR,CAAC;UAAA,OAAIA,CAAC,CAACjB,OAAO,KAAKD,EAAE;QAAA,EAAC;QAC3D,IAAIyB,KAAK,KAAK,CAAC,CAAC,EAAE;UACd,OAAOhC,MAAM;QACjB;QAEA,IAAI,CAACD,OAAO,CAACiC,KAAK,CAAC,OAAAvB,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACZ,IAAI,CAAC2B,OAAO,CAACiC,KAAK,CAAC;UACtBrB,OAAO,EAAET,SAAS;UAClBU,WAAW,EAAE;QAAI,EACpB;QAED,OAAOZ,MAAM;MACjB,CAAC,CAAC,OAAOkB,EAAE,EAAE;QACT,IAAI,CAACY,cAAc,CAACZ,EAAE,CAAC;QACvB,OAAO;UACHF,IAAI,EAAE,IAAI;UACVC,KAAK,EAAEC;QACX,CAAC;MACL;IACJ;EAAC;IAAAxB,GAAA;IAAAC,KAAA,EAED,SAAAwC,QAAeC,EAAc,EAAQ;MACjC,IAAI,CAACC,SAAS,GAAGD,EAAE;IACvB;EAAC;IAAA1C,GAAA;IAAAC,KAAA,EAED,SAAAmC,eAAsBb,KAA0B,EAAQ;MACpD,IAAI,CAACqB,YAAY,CAAC,KAAK,CAAC;MACxB,IAAI,CAAC,IAAI,CAACD,SAAS,EAAE;QACjB;MACJ;MACA,IAAI,CAACA,SAAS,CAACpB,KAAK,CAAC;IACzB;EAAC;IAAAvB,GAAA;IAAAC,KAAA,EAED,SAAAkC,cAAqBU,KAAoB,EAAW;MAChD,IAAMZ,SAAS,GAAG,IAAIa,IAAI,CAACD,KAAK,CAAC;MACjC,OAAOZ,SAAS,IAAI,IAAIa,IAAI,CAAC,CAAC;IAClC;EAAC;IAAA9C,GAAA;IAAAC,KAAA,EAED,SAAA2C,aAAqBG,OAAgB,EAAQ;MACzC,IAAI,CAAClE,WAAW,CAACkE,OAAO,CAAC;MACzB,IAAI,CAACA,OAAO,GAAGA,OAAO;IAC1B;EAAC;IAAA/C,GAAA;IAAAC,KAAA,EAED,eAAAM,sBACIJ,QAAgB,EAChBC,IAAY,EACZC,OAAY,EACuC;MAAA,IAAA2C,KAAA;MACnD,IAAI3C,OAAO,CAAC4C,MAAM,KAAK,CAAC,EAAE;QACtB;MACJ,CAAC,MAAM,IAAI,IAAI,CAACF,OAAO,EAAE;QACrB;MACJ;MACA,IAAMG,cAAc,GAAG,MAAM,IAAI,CAACC,aAAa,CAAChD,QAAQ,EAAEC,IAAI,EAAEC,OAAO,CAAC;MACxE,IAAI6C,cAAc,CAACD,MAAM,KAAK,CAAC,EAAE;QAC7B;MACJ;MACA,IAAI,CAACL,YAAY,CAAC,IAAI,CAAC;MACvB,IAAItC,MAA2C;MAC/C,IAAI;QACAA,MAAM,GAAG,MAAM,IAAI,CAACjB,gBAAgB,CAACgC,OAAO,CAAC;UACzC+B,KAAK,EAAE;YACHC,KAAK,EAAEH,cAAc;YACrB9C,IAAI,EAAJA;UACJ,CAAC;UACDkD,KAAK,EAAE;QACX,CAAC,CAAC;MACN,CAAC,CAAC,OAAO9B,EAAE,EAAE;QACT+B,OAAO,CAAChC,KAAK,CAACC,EAAE,CAAC;QACjB,IAAI,CAACY,cAAc,CAACZ,EAAE,CAAC;QACvB;MACJ,CAAC,SAAS;QACN,IAAI,CAACoB,YAAY,CAAC,KAAK,CAAC;MAC5B;MACA,IAAItC,MAAM,CAACiB,KAAK,EAAE;QACd,IAAI,CAACa,cAAc,CAAC9B,MAAM,CAACiB,KAAK,CAAC;QACjC;MACJ,CAAC,MAAM,IAAI,CAACjB,MAAM,CAACgB,IAAI,EAAE;QACrB,IAAI,CAACc,cAAc,CACf,IAAAoB,kDAAwB,EAAC;UACrBC,OAAO,qGAAqG;UAC5GC,IAAI,EAAE;QACV,CAAC,CACL,CAAC;QACD;MACJ,CAAC,MAAM,IAAIpD,MAAM,CAACgB,IAAI,CAAC2B,MAAM,KAAK,CAAC,EAAE;QACjC;MACJ;MAAC,IAAAU,SAAA,OAAAC,2BAAA,CAAAlF,OAAA,EAEoB4B,MAAM,CAACgB,IAAI;QAAAuC,KAAA;MAAA;QAAA,IAAAC,KAAA,kBAAAA,MAAA,EAAE;UAAA,IAAvBpD,MAAM,GAAAmD,KAAA,CAAA5D,KAAA;UACb,IAAMqC,KAAK,GAAGU,KAAI,CAAC3C,OAAO,CAACkC,SAAS,CAAC,UAAAR,CAAC,EAAI;YACtC,IAAAgC,iBAAA,GAAwB,IAAAnD,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;cAAtCC,OAAO,GAAAiD,iBAAA,CAAXlD,EAAE;YACV,OAAOkB,CAAC,CAACjB,OAAO,KAAKA,OAAO;UAChC,CAAC,CAAC;UACF,IAAIwB,KAAK,GAAG,CAAC,EAAE;YACXiB,OAAO,CAAChC,KAAK,+BAAAyC,MAAA,CAA+BtD,MAAM,CAACG,EAAE,2BAAwB,CAAC;YAAC;UAEnF;UACAmC,KAAI,CAAC3C,OAAO,CAACiC,KAAK,CAAC,OAAAvB,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACZsE,KAAI,CAAC3C,OAAO,CAACiC,KAAK,CAAC;YACtBrB,OAAO,EAAE;cACLgD,QAAQ,EAAEvD,MAAM,CAACuD,QAAQ;cACzBhC,SAAS,EAAEvB,MAAM,CAACuB,SAAS;cAC3BiC,QAAQ,EAAExD,MAAM,CAACwD,QAAQ;cACzBC,OAAO,EAAEzD,MAAM,CAACyD;YACpB;UAAC,EACJ;QACL,CAAC;QAlBD,KAAAR,SAAA,CAAAS,CAAA,MAAAP,KAAA,GAAAF,SAAA,CAAAU,CAAA,IAAAC,IAAA;UAAA,UAAAR,KAAA,IAOQ;QAAS;MAWhB,SAAAS,GAAA;QAAAZ,SAAA,CAAAa,CAAA,CAAAD,GAAA;MAAA;QAAAZ,SAAA,CAAAc,CAAA;MAAA;MAED,OAAO,IAAI,CAACpE,OAAO;IACvB;IACA;AACJ;AACA;EAFI;IAAAL,GAAA;IAAAC,KAAA,EAGA,eAAAkD,cAA4BhD,QAAgB,EAAEC,IAAY,EAAEC,OAAY,EAAqB;MAAA,IAAAqE,MAAA;MACzF;AACR;AACA;MACQ,IAAMC,IAAI,GAAGtE,OAAO,CAACI,GAAG,CAAC,UAAAC,MAAM,EAAI;QAC/B,IAAIA,MAAM,CAACI,OAAO,EAAE;UAChB,OAAOJ,MAAM,CAACI,OAAO;QACzB;QACA,IAAA8D,iBAAA,GAAwB,IAAAhE,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;UAAtCC,OAAO,GAAA8D,iBAAA,CAAX/D,EAAE;QACV,OAAOC,OAAO;MAClB,CAAC,CAAC;MACF,IAAM+D,QAAQ,GAAG,MAAM,IAAAC,8BAAc,EAACH,IAAI,CAAC;MAC3C,IAAI,IAAI,CAACI,sBAAsB,KAAKF,QAAQ,EAAE;QAC1C,OAAO,EAAE;MACb;MACA,IAAI,CAACE,sBAAsB,GAAGF,QAAQ;;MAEtC;AACR;AACA;MACQ,IAAI,IAAI,CAACG,iBAAiB,KAAK5E,IAAI,IAAI,IAAI,CAAC6E,eAAe,KAAK9E,QAAQ,EAAE;QACtE,IAAI,CAACE,OAAO,GAAG,EAAE;QACjB,IAAI,CAAC2E,iBAAiB,GAAG5E,IAAI;QAC7B,IAAI,CAAC6E,eAAe,GAAG9E,QAAQ;MACnC;MAEA,OAAOE,OAAO,CAAC6E,MAAM,CAAW,UAACC,UAAU,EAAEzE,MAAM,EAAK;QACpD,IAAA0E,iBAAA,GAAwB,IAAAxE,iCAAe,EAACF,MAAM,CAACG,EAAE,CAAC;UAAtCC,OAAO,GAAAsE,iBAAA,CAAXvE,EAAE;QACV,IAAMyB,KAAK,GAAGoC,MAAI,CAACrE,OAAO,CAACkC,SAAS,CAAC,UAAAR,CAAC;UAAA,OAAIA,CAAC,CAACjB,OAAO,KAAKA,OAAO;QAAA,EAAC;QAChE,IAAIwB,KAAK,IAAI,CAAC,EAAE;UACZ,OAAO6C,UAAU;QACrB;QACAT,MAAI,CAACrE,OAAO,CAACgF,IAAI,KAAAtE,cAAA,CAAArC,OAAA,MAAAqC,cAAA,CAAArC,OAAA,MACVgC,MAAM;UACTI,OAAO,EAAPA,OAAO;UACPE,YAAY,EAAEZ,IAAI;UAClBa,OAAO,EAAET;QAAS,EACrB,CAAC;QACF,IAAIE,MAAM,CAAC4E,KAAK,KAAK,QAAQ,EAAE;UAC3B,OAAOH,UAAU;QACrB;QACAA,UAAU,CAACE,IAAI,CAACvE,OAAO,CAAC;QACxB,OAAOqE,UAAU;MACrB,CAAC,EAAE,EAAE,CAAC;IACV;EAAC;AAAA;AAGE,IAAMI,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,SAAtBA,mBAAmBA,CAC5BE,MAAkC,EACjB;EACjB,IAAM7G,MAAM,GAAG,IAAI8G,wCAAmB,CAAC;IACnC9G,MAAM,EAAE6G,MAAM,CAAC7G;EACnB,CAAC,CAAC;EAEF,IAAMI,aAAa,GAAG,IAAI2G,sDAA0B,CAAC;IACjD/G,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMM,wBAAwB,GAAG,IAAI0G,4EAAqC,CAAC;IACvEhH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMQ,aAAa,GAAG,IAAIyG,sDAA0B,CAAC;IACjDjH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMU,eAAe,GAAG,IAAIwG,0DAA4B,CAAC;IACrDlH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMY,SAAS,GAAG,IAAIuG,8CAAsB,CAAC;IACzCnH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMc,WAAW,GAAG,IAAIsG,kDAAwB,CAAC;IAC7CpH,MAAM,EAANA;EACJ,CAAC,CAAC;EACF,IAAMgB,kBAAkB,GAAG,IAAIqG,gEAA+B,CAAC;IAC3DrH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,IAAMkB,eAAe,GAAG,IAAIoG,0DAA4B,CAAC;IACrDtH,MAAM,EAANA;EACJ,CAAC,CAAC;EAEF,OAAO,IAAIL,aAAa,CAAI;IACxBK,MAAM,EAANA,MAAM;IACNE,UAAU,EAAE2G,MAAM,CAAC3G,UAAU;IAC7BE,aAAa,EAAbA,aAAa;IACbE,wBAAwB,EAAxBA,wBAAwB;IACxBE,aAAa,EAAbA,aAAa;IACbE,eAAe,EAAfA,eAAe;IACfQ,eAAe,EAAfA,eAAe;IACfN,SAAS,EAATA,SAAS;IACTE,WAAW,EAAXA,WAAW;IACXE,kBAAkB,EAAlBA;EACJ,CAAC,CAAC;AACN,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ApolloClient, ApolloQueryResult, MutationOptions, QueryOptions } from "apollo-client";
|
|
2
|
+
import { FetchResult } from "apollo-link";
|
|
3
|
+
import { IRecordLockingClient } from "./abstractions/IRecordLockingClient";
|
|
4
|
+
export interface IRecordLockingClientParams {
|
|
5
|
+
client: ApolloClient<any>;
|
|
6
|
+
}
|
|
7
|
+
export declare class RecordLockingClient implements IRecordLockingClient {
|
|
8
|
+
private readonly client;
|
|
9
|
+
constructor(params: IRecordLockingClientParams);
|
|
10
|
+
query<T, R>(params: QueryOptions<R>): Promise<ApolloQueryResult<T>>;
|
|
11
|
+
mutation<T, R>(options: MutationOptions<T, R>): Promise<FetchResult<T>>;
|
|
12
|
+
}
|