payload 2.0.0-beta.13 → 2.0.0-beta.16
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/dist/admin/components/elements/ArrayAction/index.js +2 -2
- package/dist/admin/components/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DocumentControls/index.js +1 -2
- package/dist/admin/components/elements/Hamburger/index.scss +2 -2
- package/dist/admin/components/elements/Header/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Header/index.js +6 -6
- package/dist/admin/components/elements/Localizer/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Localizer/index.js +1 -3
- package/dist/admin/components/elements/Nav/context.d.ts +1 -1
- package/dist/admin/components/elements/Nav/context.d.ts.map +1 -1
- package/dist/admin/components/elements/Nav/context.js +12 -7
- package/dist/admin/components/elements/Nav/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Nav/index.js +19 -18
- package/dist/admin/components/elements/WhereBuilder/Condition/index.js +6 -6
- package/dist/admin/components/elements/WhereBuilder/field-types.js +2 -2
- package/dist/admin/components/forms/Form/buildStateFromSchema/addFieldStatePromise.js +5 -5
- package/dist/admin/components/forms/Form/fieldReducer.js +7 -7
- package/dist/admin/components/forms/Form/index.js +3 -3
- package/dist/admin/components/forms/field-types/Array/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Array/index.js +10 -10
- package/dist/admin/components/forms/field-types/Blocks/index.js +8 -8
- package/dist/admin/components/forms/field-types/Select/Input.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Select/Input.js +4 -4
- package/dist/admin/components/icons/MinimizeMaximize/index.d.ts +8 -0
- package/dist/admin/components/icons/MinimizeMaximize/index.d.ts.map +1 -0
- package/dist/admin/components/icons/MinimizeMaximize/index.js +85 -0
- package/dist/admin/components/templates/Default/index.d.ts.map +1 -1
- package/dist/admin/components/templates/Default/index.js +10 -10
- package/dist/admin/components/views/API/index.d.ts +6 -0
- package/dist/admin/components/views/API/index.d.ts.map +1 -0
- package/dist/admin/components/views/API/index.js +281 -0
- package/dist/admin/components/views/API/index.scss +202 -0
- package/dist/admin/components/views/Global/Default/index.scss +12 -0
- package/dist/admin/components/views/Global/Routes/CustomComponent.d.ts.map +1 -1
- package/dist/admin/components/views/Global/Routes/CustomComponent.js +3 -2
- package/dist/admin/components/views/Global/Routes/index.d.ts.map +1 -1
- package/dist/admin/components/views/Global/Routes/index.js +8 -1
- package/dist/admin/components/views/collections/Edit/Default/index.scss +12 -0
- package/dist/admin/components/views/collections/Edit/Routes/CustomComponent.js +3 -3
- package/dist/admin/components/views/collections/Edit/SetStepNav.js +3 -3
- package/dist/auth/operations/me.d.ts.map +1 -1
- package/dist/auth/operations/me.js +13 -5
- package/dist/auth/strategies/jwt.js +3 -3
- package/dist/bin/build.d.ts.map +1 -1
- package/dist/bin/build.js +2 -5
- package/dist/bin/index.js +3 -3
- package/dist/bin/migrate.d.ts +2 -1
- package/dist/bin/migrate.d.ts.map +1 -1
- package/dist/bin/migrate.js +9 -3
- package/dist/database/migrations/migrateDown.d.ts.map +1 -1
- package/dist/database/migrations/migrateDown.js +2 -2
- package/dist/database/migrations/migrateRefresh.d.ts +1 -1
- package/dist/database/migrations/migrateRefresh.d.ts.map +1 -1
- package/dist/database/migrations/migrateRefresh.js +1 -1
- package/dist/database/migrations/migrateReset.d.ts.map +1 -1
- package/dist/database/migrations/migrateReset.js +17 -1
- package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
- package/dist/database/migrations/migrationsCollection.js +1 -5
- package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
- package/dist/fields/hooks/beforeChange/promise.js +2 -9
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +9 -7
- package/package.json +1 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/index.d.ts +0 -9
- package/dist/admin/components/views/LivePreview/useLivePreview/index.d.ts.map +0 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/index.js +0 -53
- package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.d.ts +0 -10
- package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.d.ts.map +0 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/mergeData.js +0 -30
- package/dist/admin/components/views/LivePreview/useLivePreview/promise.d.ts +0 -12
- package/dist/admin/components/views/LivePreview/useLivePreview/promise.d.ts.map +0 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/promise.js +0 -17
- package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.d.ts +0 -12
- package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.d.ts.map +0 -1
- package/dist/admin/components/views/LivePreview/useLivePreview/traverseFields.js +0 -179
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "useLivePreview", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return useLivePreview;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _react = require("react");
|
|
12
|
-
const _mergeData = require("./mergeData");
|
|
13
|
-
const useLivePreview = (props)=>{
|
|
14
|
-
const { depth = 0, initialPage, serverURL } = props;
|
|
15
|
-
const [data, setData] = (0, _react.useState)(initialPage);
|
|
16
|
-
const [isLoading, setIsLoading] = (0, _react.useState)(true);
|
|
17
|
-
const handleMessage = (0, _react.useCallback)(async (event)=>{
|
|
18
|
-
if (event.origin === serverURL && event.data) {
|
|
19
|
-
const eventData = JSON.parse(event?.data);
|
|
20
|
-
if (eventData.type === 'livePreview') {
|
|
21
|
-
const mergedData = await (0, _mergeData.mergeLivePreviewData)({
|
|
22
|
-
depth,
|
|
23
|
-
existingData: data,
|
|
24
|
-
fieldSchema: eventData.fieldSchemaJSON,
|
|
25
|
-
incomingData: eventData.data,
|
|
26
|
-
serverURL
|
|
27
|
-
});
|
|
28
|
-
setData(mergedData);
|
|
29
|
-
setIsLoading(false);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}, [
|
|
33
|
-
serverURL,
|
|
34
|
-
data,
|
|
35
|
-
depth
|
|
36
|
-
]);
|
|
37
|
-
(0, _react.useEffect)(()=>{
|
|
38
|
-
window.addEventListener('message', handleMessage);
|
|
39
|
-
window.parent.postMessage('ready', serverURL);
|
|
40
|
-
return ()=>{
|
|
41
|
-
window.removeEventListener('message', handleMessage);
|
|
42
|
-
};
|
|
43
|
-
}, [
|
|
44
|
-
serverURL,
|
|
45
|
-
handleMessage
|
|
46
|
-
]);
|
|
47
|
-
return {
|
|
48
|
-
data,
|
|
49
|
-
isLoading
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IG1lcmdlTGl2ZVByZXZpZXdEYXRhIH0gZnJvbSAnLi9tZXJnZURhdGEnXG5cbi8vIFRvIHByZXZlbnQgdGhlIGZsaWNrZXIgb2YgbWlzc2luZyBkYXRhIG9uIGluaXRpYWwgbG9hZCxcbi8vIHlvdSBjYW4gcGFzcyBpbiB0aGUgaW5pdGlhbCBwYWdlIGRhdGEgZnJvbSB0aGUgc2VydmVyXG4vLyBUbyBwcmV2ZW50IHRoZSBmbGlja2VyIG9mIHN0YWxlIGRhdGEgd2hpbGUgdGhlIHBvc3QgbWVzc2FnZSBpcyBiZWluZyBzZW50LFxuLy8geW91IGNhbiBjb25kaXRpb25hbGx5IHJlbmRlciBsb2FkaW5nIFVJIGJhc2VkIG9uIHRoZSBgaXNMb2FkaW5nYCBzdGF0ZVxuXG5leHBvcnQgY29uc3QgdXNlTGl2ZVByZXZpZXcgPSA8VCBleHRlbmRzIGFueT4ocHJvcHM6IHtcbiAgZGVwdGg/OiBudW1iZXJcbiAgaW5pdGlhbFBhZ2U6IFRcbiAgc2VydmVyVVJMOiBzdHJpbmdcbn0pOiB7XG4gIGRhdGE6IFRcbiAgaXNMb2FkaW5nOiBib29sZWFuXG59ID0+IHtcbiAgY29uc3QgeyBkZXB0aCA9IDAsIGluaXRpYWxQYWdlLCBzZXJ2ZXJVUkwgfSA9IHByb3BzXG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlPFQ+KGluaXRpYWxQYWdlKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGU8Ym9vbGVhbj4odHJ1ZSlcblxuICBjb25zdCBoYW5kbGVNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5vcmlnaW4gPT09IHNlcnZlclVSTCAmJiBldmVudC5kYXRhKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04ucGFyc2UoZXZlbnQ/LmRhdGEpXG5cbiAgICAgICAgaWYgKGV2ZW50RGF0YS50eXBlID09PSAnbGl2ZVByZXZpZXcnKSB7XG4gICAgICAgICAgY29uc3QgbWVyZ2VkRGF0YSA9IGF3YWl0IG1lcmdlTGl2ZVByZXZpZXdEYXRhPFQ+KHtcbiAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgZXhpc3RpbmdEYXRhOiBkYXRhLFxuICAgICAgICAgICAgZmllbGRTY2hlbWE6IGV2ZW50RGF0YS5maWVsZFNjaGVtYUpTT04sXG4gICAgICAgICAgICBpbmNvbWluZ0RhdGE6IGV2ZW50RGF0YS5kYXRhLFxuICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBzZXREYXRhKG1lcmdlZERhdGEpXG5cbiAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXJ2ZXJVUkwsIGRhdGEsIGRlcHRoXSxcbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVNZXNzYWdlKVxuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoJ3JlYWR5Jywgc2VydmVyVVJMKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSlcbiAgICB9XG4gIH0sIFtzZXJ2ZXJVUkwsIGhhbmRsZU1lc3NhZ2VdKVxuXG4gIHJldHVybiB7XG4gICAgZGF0YSxcbiAgICBpc0xvYWRpbmcsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ1c2VMaXZlUHJldmlldyIsInByb3BzIiwiZGVwdGgiLCJpbml0aWFsUGFnZSIsInNlcnZlclVSTCIsImRhdGEiLCJzZXREYXRhIiwidXNlU3RhdGUiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJoYW5kbGVNZXNzYWdlIiwidXNlQ2FsbGJhY2siLCJldmVudCIsIm9yaWdpbiIsImV2ZW50RGF0YSIsIkpTT04iLCJwYXJzZSIsInR5cGUiLCJtZXJnZWREYXRhIiwibWVyZ2VMaXZlUHJldmlld0RhdGEiLCJleGlzdGluZ0RhdGEiLCJmaWVsZFNjaGVtYSIsImZpZWxkU2NoZW1hSlNPTiIsImluY29taW5nRGF0YSIsInVzZUVmZmVjdCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJwYXJlbnQiLCJwb3N0TWVzc2FnZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwibWFwcGluZ3MiOiI7Ozs7K0JBU2FBOzs7ZUFBQUE7Ozt1QkFUb0M7MkJBRVo7QUFPOUIsTUFBTUEsaUJBQWlCLENBQWdCQztJQVE1QyxNQUFNLEVBQUVDLFFBQVEsQ0FBQyxFQUFFQyxXQUFXLEVBQUVDLFNBQVMsRUFBRSxHQUFHSDtJQUM5QyxNQUFNLENBQUNJLE1BQU1DLFFBQVEsR0FBR0MsSUFBQUEsZUFBUSxFQUFJSjtJQUNwQyxNQUFNLENBQUNLLFdBQVdDLGFBQWEsR0FBR0YsSUFBQUEsZUFBUSxFQUFVO0lBRXBELE1BQU1HLGdCQUFnQkMsSUFBQUEsa0JBQVcsRUFDL0IsT0FBT0M7UUFDTCxJQUFJQSxNQUFNQyxNQUFNLEtBQUtULGFBQWFRLE1BQU1QLElBQUksRUFBRTtZQUM1QyxNQUFNUyxZQUFZQyxLQUFLQyxLQUFLLENBQUNKLE9BQU9QO1lBRXBDLElBQUlTLFVBQVVHLElBQUksS0FBSyxlQUFlO2dCQUNwQyxNQUFNQyxhQUFhLE1BQU1DLElBQUFBLCtCQUFvQixFQUFJO29CQUMvQ2pCO29CQUNBa0IsY0FBY2Y7b0JBQ2RnQixhQUFhUCxVQUFVUSxlQUFlO29CQUN0Q0MsY0FBY1QsVUFBVVQsSUFBSTtvQkFDNUJEO2dCQUNGO2dCQUVBRSxRQUFRWTtnQkFFUlQsYUFBYTtZQUNmO1FBQ0Y7SUFDRixHQUNBO1FBQUNMO1FBQVdDO1FBQU1IO0tBQU07SUFHMUJzQixJQUFBQSxnQkFBUyxFQUFDO1FBQ1JDLE9BQU9DLGdCQUFnQixDQUFDLFdBQVdoQjtRQUNuQ2UsT0FBT0UsTUFBTSxDQUFDQyxXQUFXLENBQUMsU0FBU3hCO1FBRW5DLE9BQU87WUFDTHFCLE9BQU9JLG1CQUFtQixDQUFDLFdBQVduQjtRQUN4QztJQUNGLEdBQUc7UUFBQ047UUFBV007S0FBYztJQUU3QixPQUFPO1FBQ0xMO1FBQ0FHO0lBQ0Y7QUFDRiJ9
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type MergeLiveDataArgs<T> = {
|
|
2
|
-
apiRoute?: string;
|
|
3
|
-
depth: number;
|
|
4
|
-
existingData: T;
|
|
5
|
-
fieldSchema: Record<string, unknown>[];
|
|
6
|
-
incomingData: T;
|
|
7
|
-
serverURL: string;
|
|
8
|
-
};
|
|
9
|
-
export declare const mergeLivePreviewData: <T>({ apiRoute, depth, existingData, fieldSchema, incomingData, serverURL, }: MergeLiveDataArgs<T>) => Promise<T>;
|
|
10
|
-
//# sourceMappingURL=mergeData.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mergeData.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/mergeData.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,CAAC,CAAA;IACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACtC,YAAY,EAAE,CAAC,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,oBAAoB,mHAyBhC,CAAA"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "mergeLivePreviewData", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return mergeLivePreviewData;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _traverseFields = require("./traverseFields");
|
|
12
|
-
const mergeLivePreviewData = async ({ apiRoute, depth, existingData, fieldSchema, incomingData, serverURL })=>{
|
|
13
|
-
const result = {
|
|
14
|
-
...existingData
|
|
15
|
-
};
|
|
16
|
-
const populationPromises = [];
|
|
17
|
-
(0, _traverseFields.traverseFields)({
|
|
18
|
-
apiRoute,
|
|
19
|
-
depth,
|
|
20
|
-
fieldSchema,
|
|
21
|
-
incomingData,
|
|
22
|
-
populationPromises,
|
|
23
|
-
result,
|
|
24
|
-
serverURL
|
|
25
|
-
});
|
|
26
|
-
await Promise.all(populationPromises);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L21lcmdlRGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbmV4cG9ydCB0eXBlIE1lcmdlTGl2ZURhdGFBcmdzPFQ+ID0ge1xuICBhcGlSb3V0ZT86IHN0cmluZ1xuICBkZXB0aDogbnVtYmVyXG4gIGV4aXN0aW5nRGF0YTogVFxuICBmaWVsZFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICBpbmNvbWluZ0RhdGE6IFRcbiAgc2VydmVyVVJMOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IG1lcmdlTGl2ZVByZXZpZXdEYXRhID0gYXN5bmMgPFQ+KHtcbiAgYXBpUm91dGUsXG4gIGRlcHRoLFxuICBleGlzdGluZ0RhdGEsXG4gIGZpZWxkU2NoZW1hLFxuICBpbmNvbWluZ0RhdGEsXG4gIHNlcnZlclVSTCxcbn06IE1lcmdlTGl2ZURhdGFBcmdzPFQ+KTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uZXhpc3RpbmdEYXRhIH1cblxuICBjb25zdCBwb3B1bGF0aW9uUHJvbWlzZXM6IFByb21pc2U8dm9pZD5bXSA9IFtdXG5cbiAgdHJhdmVyc2VGaWVsZHMoe1xuICAgIGFwaVJvdXRlLFxuICAgIGRlcHRoLFxuICAgIGZpZWxkU2NoZW1hLFxuICAgIGluY29taW5nRGF0YSxcbiAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgcmVzdWx0LFxuICAgIHNlcnZlclVSTCxcbiAgfSlcblxuICBhd2FpdCBQcm9taXNlLmFsbChwb3B1bGF0aW9uUHJvbWlzZXMpXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm5hbWVzIjpbIm1lcmdlTGl2ZVByZXZpZXdEYXRhIiwiYXBpUm91dGUiLCJkZXB0aCIsImV4aXN0aW5nRGF0YSIsImZpZWxkU2NoZW1hIiwiaW5jb21pbmdEYXRhIiwic2VydmVyVVJMIiwicmVzdWx0IiwicG9wdWxhdGlvblByb21pc2VzIiwidHJhdmVyc2VGaWVsZHMiLCJQcm9taXNlIiwiYWxsIl0sIm1hcHBpbmdzIjoiOzs7OytCQVdhQTs7O2VBQUFBOzs7Z0NBWGtCO0FBV3hCLE1BQU1BLHVCQUF1QixPQUFVLEVBQzVDQyxRQUFRLEVBQ1JDLEtBQUssRUFDTEMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsU0FBUyxFQUNZO0lBQ3JCLE1BQU1DLFNBQVM7UUFBRSxHQUFHSixZQUFZO0lBQUM7SUFFakMsTUFBTUsscUJBQXNDLEVBQUU7SUFFOUNDLElBQUFBLDhCQUFjLEVBQUM7UUFDYlI7UUFDQUM7UUFDQUU7UUFDQUM7UUFDQUc7UUFDQUQ7UUFDQUQ7SUFDRjtJQUVBLE1BQU1JLFFBQVFDLEdBQUcsQ0FBQ0g7SUFFbEIsT0FBT0Q7QUFDVCJ9
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type Args = {
|
|
2
|
-
accessor: number | string;
|
|
3
|
-
apiRoute?: string;
|
|
4
|
-
collection: string;
|
|
5
|
-
depth: number;
|
|
6
|
-
id: number | string;
|
|
7
|
-
ref: Record<string, unknown>;
|
|
8
|
-
serverURL: string;
|
|
9
|
-
};
|
|
10
|
-
export declare const promise: ({ id, accessor, apiRoute, collection, depth, ref, serverURL, }: Args) => Promise<void>;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=promise.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/promise.ts"],"names":[],"mappings":"AAAA,KAAK,IAAI,GAAG;IACV,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,OAAO,mEAQjB,IAAI,KAAG,QAAQ,IAAI,CAOrB,CAAA"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "promise", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return promise;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const promise = async ({ id, accessor, apiRoute, collection, depth, ref, serverURL })=>{
|
|
12
|
-
// TODO: get dynamic `api` route from config
|
|
13
|
-
const res = await fetch(`${serverURL}${apiRoute || '/api'}/${collection}/${id}?depth=${depth}`).then((res)=>res.json());
|
|
14
|
-
ref[accessor] = res;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L3Byb21pc2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBBcmdzID0ge1xuICBhY2Nlc3NvcjogbnVtYmVyIHwgc3RyaW5nXG4gIGFwaVJvdXRlPzogc3RyaW5nXG4gIGNvbGxlY3Rpb246IHN0cmluZ1xuICBkZXB0aDogbnVtYmVyXG4gIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgcmVmOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBzZXJ2ZXJVUkw6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgcHJvbWlzZSA9IGFzeW5jICh7XG4gIGlkLFxuICBhY2Nlc3NvcixcbiAgYXBpUm91dGUsXG4gIGNvbGxlY3Rpb24sXG4gIGRlcHRoLFxuICByZWYsXG4gIHNlcnZlclVSTCxcbn06IEFyZ3MpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgLy8gVE9ETzogZ2V0IGR5bmFtaWMgYGFwaWAgcm91dGUgZnJvbSBjb25maWdcbiAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCBmZXRjaChcbiAgICBgJHtzZXJ2ZXJVUkx9JHthcGlSb3V0ZSB8fCAnL2FwaSd9LyR7Y29sbGVjdGlvbn0vJHtpZH0/ZGVwdGg9JHtkZXB0aH1gLFxuICApLnRoZW4oKHJlcykgPT4gcmVzLmpzb24oKSlcblxuICByZWZbYWNjZXNzb3JdID0gcmVzXG59XG4iXSwibmFtZXMiOlsicHJvbWlzZSIsImlkIiwiYWNjZXNzb3IiLCJhcGlSb3V0ZSIsImNvbGxlY3Rpb24iLCJkZXB0aCIsInJlZiIsInNlcnZlclVSTCIsInJlcyIsImZldGNoIiwidGhlbiIsImpzb24iXSwibWFwcGluZ3MiOiI7Ozs7K0JBVWFBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLFVBQVUsT0FBTyxFQUM1QkMsRUFBRSxFQUNGQyxRQUFRLEVBQ1JDLFFBQVEsRUFDUkMsVUFBVSxFQUNWQyxLQUFLLEVBQ0xDLEdBQUcsRUFDSEMsU0FBUyxFQUNKO0lBQ0wsNENBQTRDO0lBQzVDLE1BQU1DLE1BQVcsTUFBTUMsTUFDckIsQ0FBQyxFQUFFRixVQUFVLEVBQUVKLFlBQVksT0FBTyxDQUFDLEVBQUVDLFdBQVcsQ0FBQyxFQUFFSCxHQUFHLE9BQU8sRUFBRUksTUFBTSxDQUFDLEVBQ3RFSyxJQUFJLENBQUMsQ0FBQ0YsTUFBUUEsSUFBSUcsSUFBSTtJQUV4QkwsR0FBRyxDQUFDSixTQUFTLEdBQUdNO0FBQ2xCIn0=
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
type Args<T> = {
|
|
2
|
-
apiRoute?: string;
|
|
3
|
-
depth: number;
|
|
4
|
-
fieldSchema: Record<string, unknown>[];
|
|
5
|
-
incomingData: T;
|
|
6
|
-
populationPromises: Promise<void>[];
|
|
7
|
-
result: T;
|
|
8
|
-
serverURL: string;
|
|
9
|
-
};
|
|
10
|
-
export declare const traverseFields: <T>({ apiRoute, depth, fieldSchema, incomingData, populationPromises, result, serverURL, }: Args<T>) => void;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=traverseFields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../../../src/admin/components/views/LivePreview/useLivePreview/traverseFields.ts"],"names":[],"mappings":"AAEA,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACtC,YAAY,EAAE,CAAC,CAAA;IACf,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,MAAM,EAAE,CAAC,CAAA;IACT,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,cAAc,0GAQd,IAkNZ,CAAA"}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "traverseFields", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return traverseFields;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _promise = require("./promise");
|
|
12
|
-
const traverseFields = ({ apiRoute, depth, fieldSchema, incomingData, populationPromises, result, serverURL })=>{
|
|
13
|
-
fieldSchema.forEach((field)=>{
|
|
14
|
-
if ('name' in field && typeof field.name === 'string') {
|
|
15
|
-
// TODO: type this
|
|
16
|
-
const fieldName = field.name;
|
|
17
|
-
switch(field.type){
|
|
18
|
-
case 'array':
|
|
19
|
-
if (Array.isArray(incomingData[fieldName])) {
|
|
20
|
-
result[fieldName] = incomingData[fieldName].map((row, i)=>{
|
|
21
|
-
const hasExistingRow = Array.isArray(result[fieldName]) && typeof result[fieldName][i] === 'object' && result[fieldName][i] !== null;
|
|
22
|
-
const newRow = hasExistingRow ? {
|
|
23
|
-
...result[fieldName][i]
|
|
24
|
-
} : {};
|
|
25
|
-
traverseFields({
|
|
26
|
-
apiRoute,
|
|
27
|
-
depth,
|
|
28
|
-
fieldSchema: field.fields,
|
|
29
|
-
incomingData: row,
|
|
30
|
-
populationPromises,
|
|
31
|
-
result: newRow,
|
|
32
|
-
serverURL
|
|
33
|
-
});
|
|
34
|
-
return newRow;
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
break;
|
|
38
|
-
case 'blocks':
|
|
39
|
-
if (Array.isArray(incomingData[fieldName])) {
|
|
40
|
-
result[fieldName] = incomingData[fieldName].map((row, i)=>{
|
|
41
|
-
const matchedBlock = field.blocks[row.blockType];
|
|
42
|
-
const hasExistingRow = Array.isArray(result[fieldName]) && typeof result[fieldName][i] === 'object' && result[fieldName][i] !== null && result[fieldName][i].blockType === row.blockType;
|
|
43
|
-
const newRow = hasExistingRow ? {
|
|
44
|
-
...result[fieldName][i]
|
|
45
|
-
} : {
|
|
46
|
-
blockType: matchedBlock.slug
|
|
47
|
-
};
|
|
48
|
-
traverseFields({
|
|
49
|
-
apiRoute,
|
|
50
|
-
depth,
|
|
51
|
-
fieldSchema: matchedBlock.fields,
|
|
52
|
-
incomingData: row,
|
|
53
|
-
populationPromises,
|
|
54
|
-
result: newRow,
|
|
55
|
-
serverURL
|
|
56
|
-
});
|
|
57
|
-
return newRow;
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
break;
|
|
61
|
-
case 'tab':
|
|
62
|
-
case 'group':
|
|
63
|
-
if (!result[fieldName]) {
|
|
64
|
-
result[fieldName] = {};
|
|
65
|
-
}
|
|
66
|
-
traverseFields({
|
|
67
|
-
apiRoute,
|
|
68
|
-
depth,
|
|
69
|
-
fieldSchema: field.fields,
|
|
70
|
-
incomingData: incomingData[fieldName] || {},
|
|
71
|
-
populationPromises,
|
|
72
|
-
result: result[fieldName],
|
|
73
|
-
serverURL
|
|
74
|
-
});
|
|
75
|
-
break;
|
|
76
|
-
case 'upload':
|
|
77
|
-
case 'relationship':
|
|
78
|
-
if (field.hasMany && Array.isArray(incomingData[fieldName])) {
|
|
79
|
-
const existingValue = Array.isArray(result[fieldName]) ? [
|
|
80
|
-
...result[fieldName]
|
|
81
|
-
] : [];
|
|
82
|
-
result[fieldName] = Array.isArray(result[fieldName]) ? [
|
|
83
|
-
...result[fieldName]
|
|
84
|
-
].slice(0, incomingData[fieldName].length) : [];
|
|
85
|
-
incomingData[fieldName].forEach((relation, i)=>{
|
|
86
|
-
// Handle `hasMany` polymorphic
|
|
87
|
-
if (Array.isArray(field.relationTo)) {
|
|
88
|
-
const existingID = existingValue[i]?.value?.id;
|
|
89
|
-
if (existingID !== relation.value || existingValue[i]?.relationTo !== relation.relationTo) {
|
|
90
|
-
result[fieldName][i] = {
|
|
91
|
-
relationTo: relation.relationTo
|
|
92
|
-
};
|
|
93
|
-
populationPromises.push((0, _promise.promise)({
|
|
94
|
-
id: relation.value,
|
|
95
|
-
accessor: 'value',
|
|
96
|
-
apiRoute,
|
|
97
|
-
collection: relation.relationTo,
|
|
98
|
-
depth,
|
|
99
|
-
ref: result[fieldName][i],
|
|
100
|
-
serverURL
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
} else {
|
|
104
|
-
// Handle `hasMany` singular
|
|
105
|
-
const existingID = existingValue[i]?.id;
|
|
106
|
-
if (existingID !== relation) {
|
|
107
|
-
populationPromises.push((0, _promise.promise)({
|
|
108
|
-
id: relation,
|
|
109
|
-
accessor: i,
|
|
110
|
-
apiRoute,
|
|
111
|
-
collection: String(field.relationTo),
|
|
112
|
-
depth,
|
|
113
|
-
ref: result[fieldName],
|
|
114
|
-
serverURL
|
|
115
|
-
}));
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
} else {
|
|
120
|
-
// Handle `hasOne` polymorphic
|
|
121
|
-
if (Array.isArray(field.relationTo)) {
|
|
122
|
-
const hasNewValue = typeof incomingData[fieldName] === 'object' && incomingData[fieldName] !== null;
|
|
123
|
-
const hasOldValue = typeof result[fieldName] === 'object' && result[fieldName] !== null;
|
|
124
|
-
const newValue = hasNewValue ? incomingData[fieldName].value : '';
|
|
125
|
-
const newRelation = hasNewValue ? incomingData[fieldName].relationTo : '';
|
|
126
|
-
const oldValue = hasOldValue ? result[fieldName].value : '';
|
|
127
|
-
const oldRelation = hasOldValue ? result[fieldName].relationTo : '';
|
|
128
|
-
if (newValue !== oldValue || newRelation !== oldRelation) {
|
|
129
|
-
if (newValue) {
|
|
130
|
-
if (!result[fieldName]) {
|
|
131
|
-
result[fieldName] = {
|
|
132
|
-
relationTo: newRelation
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
populationPromises.push((0, _promise.promise)({
|
|
136
|
-
id: newValue,
|
|
137
|
-
accessor: 'value',
|
|
138
|
-
apiRoute,
|
|
139
|
-
collection: newRelation,
|
|
140
|
-
depth,
|
|
141
|
-
ref: result[fieldName],
|
|
142
|
-
serverURL
|
|
143
|
-
}));
|
|
144
|
-
}
|
|
145
|
-
} else {
|
|
146
|
-
result[fieldName] = null;
|
|
147
|
-
}
|
|
148
|
-
} else {
|
|
149
|
-
const hasNewValue = typeof incomingData[fieldName] === 'object' && incomingData[fieldName] !== null;
|
|
150
|
-
const hasOldValue = typeof result[fieldName] === 'object' && result[fieldName] !== null;
|
|
151
|
-
const newValue = hasNewValue ? incomingData[fieldName].value : '';
|
|
152
|
-
const oldValue = hasOldValue ? result[fieldName].value : '';
|
|
153
|
-
if (newValue !== oldValue) {
|
|
154
|
-
if (newValue) {
|
|
155
|
-
populationPromises.push((0, _promise.promise)({
|
|
156
|
-
id: newValue,
|
|
157
|
-
accessor: fieldName,
|
|
158
|
-
apiRoute,
|
|
159
|
-
collection: String(field.relationTo),
|
|
160
|
-
depth,
|
|
161
|
-
ref: result,
|
|
162
|
-
serverURL
|
|
163
|
-
}));
|
|
164
|
-
}
|
|
165
|
-
} else {
|
|
166
|
-
result[fieldName] = null;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
break;
|
|
171
|
-
default:
|
|
172
|
-
result[fieldName] = incomingData[fieldName];
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
return null;
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL3ZpZXdzL0xpdmVQcmV2aWV3L3VzZUxpdmVQcmV2aWV3L3RyYXZlcnNlRmllbGRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2UgfSBmcm9tICcuL3Byb21pc2UnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgYXBpUm91dGU/OiBzdHJpbmdcbiAgZGVwdGg6IG51bWJlclxuICBmaWVsZFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXVxuICBpbmNvbWluZ0RhdGE6IFRcbiAgcG9wdWxhdGlvblByb21pc2VzOiBQcm9taXNlPHZvaWQ+W11cbiAgcmVzdWx0OiBUXG4gIHNlcnZlclVSTDogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCB0cmF2ZXJzZUZpZWxkcyA9IDxUPih7XG4gIGFwaVJvdXRlLFxuICBkZXB0aCxcbiAgZmllbGRTY2hlbWEsXG4gIGluY29taW5nRGF0YSxcbiAgcG9wdWxhdGlvblByb21pc2VzLFxuICByZXN1bHQsXG4gIHNlcnZlclVSTCxcbn06IEFyZ3M8VD4pOiB2b2lkID0+IHtcbiAgZmllbGRTY2hlbWEuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICBpZiAoJ25hbWUnIGluIGZpZWxkICYmIHR5cGVvZiBmaWVsZC5uYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVE9ETzogdHlwZSB0aGlzXG4gICAgICBjb25zdCBmaWVsZE5hbWUgPSBmaWVsZC5uYW1lXG5cbiAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV0pKSB7XG4gICAgICAgICAgICByZXN1bHRbZmllbGROYW1lXSA9IGluY29taW5nRGF0YVtmaWVsZE5hbWVdLm1hcCgocm93LCBpKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGhhc0V4aXN0aW5nUm93ID1cbiAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHJlc3VsdFtmaWVsZE5hbWVdKSAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiByZXN1bHRbZmllbGROYW1lXVtpXSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICByZXN1bHRbZmllbGROYW1lXVtpXSAhPT0gbnVsbFxuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1JvdyA9IGhhc0V4aXN0aW5nUm93ID8geyAuLi5yZXN1bHRbZmllbGROYW1lXVtpXSB9IDoge31cblxuICAgICAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICAgICAgYXBpUm91dGUsXG4gICAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgICAgZmllbGRTY2hlbWE6IGZpZWxkLmZpZWxkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCAvLyBUT0RPOiB0eXBlIHRoaXNcbiAgICAgICAgICAgICAgICBpbmNvbWluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBuZXdSb3csXG4gICAgICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdSb3dcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnYmxvY2tzJzpcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpbmNvbWluZ0RhdGFbZmllbGROYW1lXSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV0ubWFwKChyb3csIGkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlZEJsb2NrID0gZmllbGQuYmxvY2tzW3Jvdy5ibG9ja1R5cGVdXG5cbiAgICAgICAgICAgICAgY29uc3QgaGFzRXhpc3RpbmdSb3cgPVxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkocmVzdWx0W2ZpZWxkTmFtZV0pICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdFtmaWVsZE5hbWVdW2ldID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdW2ldICE9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkTmFtZV1baV0uYmxvY2tUeXBlID09PSByb3cuYmxvY2tUeXBlXG5cbiAgICAgICAgICAgICAgY29uc3QgbmV3Um93ID0gaGFzRXhpc3RpbmdSb3dcbiAgICAgICAgICAgICAgICA/IHsgLi4ucmVzdWx0W2ZpZWxkTmFtZV1baV0gfVxuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICBibG9ja1R5cGU6IG1hdGNoZWRCbG9jay5zbHVnLFxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRyYXZlcnNlRmllbGRzKHtcbiAgICAgICAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICBmaWVsZFNjaGVtYTogbWF0Y2hlZEJsb2NrLmZpZWxkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCAvLyBUT0RPOiB0eXBlIHRoaXNcbiAgICAgICAgICAgICAgICBpbmNvbWluZ0RhdGE6IHJvdyxcbiAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICAgICAgcmVzdWx0OiBuZXdSb3csXG4gICAgICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdSb3dcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICAgIGlmICghcmVzdWx0W2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgZmllbGRTY2hlbWE6IGZpZWxkLmZpZWxkcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdLCAvLyBUT0RPOiB0eXBlIHRoaXNcbiAgICAgICAgICAgIGluY29taW5nRGF0YTogaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV0gfHwge30sXG4gICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMsXG4gICAgICAgICAgICByZXN1bHQ6IHJlc3VsdFtmaWVsZE5hbWVdLFxuICAgICAgICAgICAgc2VydmVyVVJMLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ3VwbG9hZCc6XG4gICAgICAgIGNhc2UgJ3JlbGF0aW9uc2hpcCc6XG4gICAgICAgICAgaWYgKGZpZWxkLmhhc01hbnkgJiYgQXJyYXkuaXNBcnJheShpbmNvbWluZ0RhdGFbZmllbGROYW1lXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nVmFsdWUgPSBBcnJheS5pc0FycmF5KHJlc3VsdFtmaWVsZE5hbWVdKSA/IFsuLi5yZXN1bHRbZmllbGROYW1lXV0gOiBbXVxuICAgICAgICAgICAgcmVzdWx0W2ZpZWxkTmFtZV0gPSBBcnJheS5pc0FycmF5KHJlc3VsdFtmaWVsZE5hbWVdKVxuICAgICAgICAgICAgICA/IFsuLi5yZXN1bHRbZmllbGROYW1lXV0uc2xpY2UoMCwgaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV0ubGVuZ3RoKVxuICAgICAgICAgICAgICA6IFtdXG5cbiAgICAgICAgICAgIGluY29taW5nRGF0YVtmaWVsZE5hbWVdLmZvckVhY2goKHJlbGF0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICAgIC8vIEhhbmRsZSBgaGFzTWFueWAgcG9seW1vcnBoaWNcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQucmVsYXRpb25UbykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0lEID0gZXhpc3RpbmdWYWx1ZVtpXT8udmFsdWU/LmlkXG5cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBleGlzdGluZ0lEICE9PSByZWxhdGlvbi52YWx1ZSB8fFxuICAgICAgICAgICAgICAgICAgZXhpc3RpbmdWYWx1ZVtpXT8ucmVsYXRpb25UbyAhPT0gcmVsYXRpb24ucmVsYXRpb25Ub1xuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkTmFtZV1baV0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uVG86IHJlbGF0aW9uLnJlbGF0aW9uVG8sXG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHBvcHVsYXRpb25Qcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBwcm9taXNlKHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogcmVsYXRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgYWNjZXNzb3I6ICd2YWx1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgYXBpUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbjogcmVsYXRpb24ucmVsYXRpb25UbyxcbiAgICAgICAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICAgICAgICByZWY6IHJlc3VsdFtmaWVsZE5hbWVdW2ldLFxuICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclVSTCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBgaGFzTWFueWAgc2luZ3VsYXJcbiAgICAgICAgICAgICAgICBjb25zdCBleGlzdGluZ0lEID0gZXhpc3RpbmdWYWx1ZVtpXT8uaWRcblxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ0lEICE9PSByZWxhdGlvbikge1xuICAgICAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHByb21pc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiByZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NvcjogaSxcbiAgICAgICAgICAgICAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBTdHJpbmcoZmllbGQucmVsYXRpb25UbyksXG4gICAgICAgICAgICAgICAgICAgICAgZGVwdGgsXG4gICAgICAgICAgICAgICAgICAgICAgcmVmOiByZXN1bHRbZmllbGROYW1lXSxcbiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJVUkwsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGBoYXNPbmVgIHBvbHltb3JwaGljXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWVsZC5yZWxhdGlvblRvKSkge1xuICAgICAgICAgICAgICBjb25zdCBoYXNOZXdWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIGluY29taW5nRGF0YVtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJiBpbmNvbWluZ0RhdGFbZmllbGROYW1lXSAhPT0gbnVsbFxuICAgICAgICAgICAgICBjb25zdCBoYXNPbGRWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdFtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJiByZXN1bHRbZmllbGROYW1lXSAhPT0gbnVsbFxuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaGFzTmV3VmFsdWUgPyBpbmNvbWluZ0RhdGFbZmllbGROYW1lXS52YWx1ZSA6ICcnXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1JlbGF0aW9uID0gaGFzTmV3VmFsdWUgPyBpbmNvbWluZ0RhdGFbZmllbGROYW1lXS5yZWxhdGlvblRvIDogJydcblxuICAgICAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IGhhc09sZFZhbHVlID8gcmVzdWx0W2ZpZWxkTmFtZV0udmFsdWUgOiAnJ1xuICAgICAgICAgICAgICBjb25zdCBvbGRSZWxhdGlvbiA9IGhhc09sZFZhbHVlID8gcmVzdWx0W2ZpZWxkTmFtZV0ucmVsYXRpb25UbyA6ICcnXG5cbiAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSBvbGRWYWx1ZSB8fCBuZXdSZWxhdGlvbiAhPT0gb2xkUmVsYXRpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0W2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ZpZWxkTmFtZV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25UbzogbmV3UmVsYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcG9wdWxhdGlvblByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHByb21pc2Uoe1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBuZXdWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3NvcjogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgICAgICAgICBhcGlSb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBuZXdSZWxhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBkZXB0aCxcbiAgICAgICAgICAgICAgICAgICAgICByZWY6IHJlc3VsdFtmaWVsZE5hbWVdLFxuICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclVSTCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBoYXNOZXdWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIGluY29taW5nRGF0YVtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJiBpbmNvbWluZ0RhdGFbZmllbGROYW1lXSAhPT0gbnVsbFxuICAgICAgICAgICAgICBjb25zdCBoYXNPbGRWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdFtmaWVsZE5hbWVdID09PSAnb2JqZWN0JyAmJiByZXN1bHRbZmllbGROYW1lXSAhPT0gbnVsbFxuXG4gICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaGFzTmV3VmFsdWUgPyBpbmNvbWluZ0RhdGFbZmllbGROYW1lXS52YWx1ZSA6ICcnXG5cbiAgICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBoYXNPbGRWYWx1ZSA/IHJlc3VsdFtmaWVsZE5hbWVdLnZhbHVlIDogJydcblxuICAgICAgICAgICAgICBpZiAobmV3VmFsdWUgIT09IG9sZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICBwb3B1bGF0aW9uUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSh7XG4gICAgICAgICAgICAgICAgICAgICAgaWQ6IG5ld1ZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc29yOiBmaWVsZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgYXBpUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbjogU3RyaW5nKGZpZWxkLnJlbGF0aW9uVG8pLFxuICAgICAgICAgICAgICAgICAgICAgIGRlcHRoLFxuICAgICAgICAgICAgICAgICAgICAgIHJlZjogcmVzdWx0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclVSTCxcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlc3VsdFtmaWVsZE5hbWVdID0gaW5jb21pbmdEYXRhW2ZpZWxkTmFtZV1cbiAgICAgIH1cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG51bGxcbn1cbiJdLCJuYW1lcyI6WyJ0cmF2ZXJzZUZpZWxkcyIsImFwaVJvdXRlIiwiZGVwdGgiLCJmaWVsZFNjaGVtYSIsImluY29taW5nRGF0YSIsInBvcHVsYXRpb25Qcm9taXNlcyIsInJlc3VsdCIsInNlcnZlclVSTCIsImZvckVhY2giLCJmaWVsZCIsIm5hbWUiLCJmaWVsZE5hbWUiLCJ0eXBlIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwicm93IiwiaSIsImhhc0V4aXN0aW5nUm93IiwibmV3Um93IiwiZmllbGRzIiwibWF0Y2hlZEJsb2NrIiwiYmxvY2tzIiwiYmxvY2tUeXBlIiwic2x1ZyIsImhhc01hbnkiLCJleGlzdGluZ1ZhbHVlIiwic2xpY2UiLCJsZW5ndGgiLCJyZWxhdGlvbiIsInJlbGF0aW9uVG8iLCJleGlzdGluZ0lEIiwidmFsdWUiLCJpZCIsInB1c2giLCJwcm9taXNlIiwiYWNjZXNzb3IiLCJjb2xsZWN0aW9uIiwicmVmIiwiU3RyaW5nIiwiaGFzTmV3VmFsdWUiLCJoYXNPbGRWYWx1ZSIsIm5ld1ZhbHVlIiwibmV3UmVsYXRpb24iLCJvbGRWYWx1ZSIsIm9sZFJlbGF0aW9uIl0sIm1hcHBpbmdzIjoiOzs7OytCQVlhQTs7O2VBQUFBOzs7eUJBWlc7QUFZakIsTUFBTUEsaUJBQWlCLENBQUksRUFDaENDLFFBQVEsRUFDUkMsS0FBSyxFQUNMQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsa0JBQWtCLEVBQ2xCQyxNQUFNLEVBQ05DLFNBQVMsRUFDRDtJQUNSSixZQUFZSyxPQUFPLENBQUMsQ0FBQ0M7UUFDbkIsSUFBSSxVQUFVQSxTQUFTLE9BQU9BLE1BQU1DLElBQUksS0FBSyxVQUFVO1lBQ3JELGtCQUFrQjtZQUNsQixNQUFNQyxZQUFZRixNQUFNQyxJQUFJO1lBRTVCLE9BQVFELE1BQU1HLElBQUk7Z0JBQ2hCLEtBQUs7b0JBQ0gsSUFBSUMsTUFBTUMsT0FBTyxDQUFDVixZQUFZLENBQUNPLFVBQVUsR0FBRzt3QkFDMUNMLE1BQU0sQ0FBQ0ssVUFBVSxHQUFHUCxZQUFZLENBQUNPLFVBQVUsQ0FBQ0ksR0FBRyxDQUFDLENBQUNDLEtBQUtDOzRCQUNwRCxNQUFNQyxpQkFDSkwsTUFBTUMsT0FBTyxDQUFDUixNQUFNLENBQUNLLFVBQVUsS0FDL0IsT0FBT0wsTUFBTSxDQUFDSyxVQUFVLENBQUNNLEVBQUUsS0FBSyxZQUNoQ1gsTUFBTSxDQUFDSyxVQUFVLENBQUNNLEVBQUUsS0FBSzs0QkFFM0IsTUFBTUUsU0FBU0QsaUJBQWlCO2dDQUFFLEdBQUdaLE1BQU0sQ0FBQ0ssVUFBVSxDQUFDTSxFQUFFOzRCQUFDLElBQUksQ0FBQzs0QkFFL0RqQixlQUFlO2dDQUNiQztnQ0FDQUM7Z0NBQ0FDLGFBQWFNLE1BQU1XLE1BQU07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
|