UNPKG

@foxpage/foxpage-core

Version:

foxpage core

134 lines (133 loc) 4.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.withMock = exports.mockBlock = exports.mockTemplate = exports.mockContent = void 0; const utils_1 = require("./utils"); /** * parse content with mock * @param content * @param mock * @param extendMock * @returns */ const mockContent = (content, mock, extendMock) => { const { idMockMap = {}, typeMockMap = {} } = mock && mock.enable !== false ? (0, utils_1.preMock)(mock) : {}; const { idMockMap: extendIdMockMap = {}, typeMockMap: extendTypeMockMap = {} } = extendMock && extendMock.enable !== false ? (0, utils_1.preMock)(extendMock) : {}; const dfs = (list = []) => { list.forEach(item => { var _a; let mock = idMockMap[item.id]; // id if (!mock || (mock && mock.enable === false)) { mock = typeMockMap[item.name]; // name } if (!mock || (mock && mock.enable === false)) { mock = extendIdMockMap[item.id]; //extend id } if (!mock || (mock && mock.enable === false)) { mock = extendTypeMockMap[item.name]; //extend name } if (mock && mock.enable) { item.props = (0, utils_1.mergeProps)(item.props, mock.props); } if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) { dfs(item.children); } }); }; dfs(content.schemas); return content; }; exports.mockContent = mockContent; /** * parse template with mock * @param template * @param mock * @returns */ const mockTemplate = (template, mock) => { const { idMockMap = {}, typeMockMap = {} } = mock && mock.enable !== false ? (0, utils_1.preMock)(mock) : {}; const dfs = (list = []) => { list.forEach(item => { var _a; let mock = idMockMap[item.id]; // id if (!mock || (mock && mock.enable === false)) { mock = typeMockMap[item.name]; // name } if (mock && mock.enable) { item.props = (0, utils_1.mergeProps)(item.props, mock.props); } if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) { dfs(item.children); } }); }; dfs(template.schemas); return template; }; exports.mockTemplate = mockTemplate; /** * parse block with mock * @param block * @param mock * @returns */ const mockBlock = (block, mock) => { const { idMockMap = {}, typeMockMap = {} } = mock && mock.enable !== false ? (0, utils_1.preMock)(mock) : {}; const dfs = (list = []) => { list.forEach(item => { var _a; let mock = idMockMap[item.id]; // id if (!mock || (mock && mock.enable === false)) { mock = typeMockMap[item.name]; // name } if (mock && mock.enable) { item.props = (0, utils_1.mergeProps)(item.props, mock.props); } if ((_a = item.children) === null || _a === void 0 ? void 0 : _a.length) { dfs(item.children); } }); }; dfs(block.schemas); return block; }; exports.mockBlock = mockBlock; /** * with mock * merge mock data to contents * @param mocks * @param ctx * @param opt * @returns */ const withMock = (mocks, ctx, _opt) => { var _a, _b; const mockMap = {}; mocks.forEach(item => { mockMap[item.id] = item; }); // deal with content (extend) mock // page or block let content = ctx.getOrigin('page'); if (content) { const { pageMock, extendMock } = (0, utils_1.getUsedMocks)(mocks, ctx); if (pageMock || extendMock) { content = (0, exports.mockContent)(content, pageMock, extendMock); } } // deal with templates mock const templates = (_a = ctx.getOrigin('templates')) === null || _a === void 0 ? void 0 : _a.map(item => { const { mockId = '' } = item.extension || {}; const mock = mockMap[mockId]; const result = mock ? (0, exports.mockTemplate)(item, mock) : item; return result; }); // deal with blocks mock const blocks = (_b = ctx.getOrigin('blocks')) === null || _b === void 0 ? void 0 : _b.map(item => { const { mockId = '' } = item.extension || {}; const mock = mockMap[mockId]; const result = mock ? (0, exports.mockBlock)(item, mock) : item; return result; }); return { content, templates, blocks }; }; exports.withMock = withMock;