@foxpage/foxpage-core
Version:
foxpage core
134 lines (133 loc) • 4.61 kB
JavaScript
;
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;