UNPKG

@lcap/nasl

Version:

NetEase Application Specific Language

86 lines 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAppTree = exports.updateCheckNaslCache = void 0; const split_1 = require("./split"); const nasl_utils_1 = require("@lcap/nasl-utils"); /** 禁用模式 */ const disabled = nasl_utils_1.isNode || nasl_utils_1.isAutoTestEnv; const getAppTreePaths = (obj, parentPath = '') => { let paths = []; for (let key in obj) { if (Array.isArray(obj[key])) { obj[key].forEach((item) => { let newPath = parentPath ? `${parentPath}.${key}[name=${item.name}]` : `${key}[name=${item.name}]`; paths.push(newPath); paths = paths.concat(getAppTreePaths(item, newPath)); }); } else if (typeof obj[key] === 'object') { let newPath = parentPath ? `${parentPath}.${key}` : `${key}`; paths = paths.concat(getAppTreePaths(obj[key], newPath)); } } return paths; }; /** * 取出缓存 * * @description 只是取出缓存,并不校验缓存的有效性 */ async function updateCheckNaslCache(allData, incrNasls) { // 没有更新的长度就return掉 if (!incrNasls?.length) { console.dir('检测无更新,使用 Nasl 前端缓存'); return allData; } // 有更新,就把更新,替换缓存 const updateData = []; const deleteData = []; (incrNasls || []).forEach((item) => { const findIndex = allData.findIndex(cacheItem => item.path === cacheItem.nodePath); if (item.type === 'delete') { allData.splice(findIndex, 1); deleteData.push(item.path); } else { const newItem = { nasl: item.nasl, nodePath: item.path, _changedTime: item.nasl._changedTime, }; updateData.push(newItem); if (findIndex !== -1) { allData.splice(findIndex, 1, newItem); } else { allData.unshift(newItem); } } }); // 更新缓存 // 需要 await ,存储后,在进行下面的排序 和 合并 nasl ,合并 nasl 会改变对象中的值 await window?.$IndexedDBHelper.storeDataBatch(updateData); window?.$IndexedDBHelper.storeDataRemoveBatch(deleteData); return allData; } exports.updateCheckNaslCache = updateCheckNaslCache; function getAppTree(allData, appTree) { // 进行排序 if (appTree) { // 因为 indexdb 拿出来的数据 都是没有顺序的,所以这里要按照 服务端返回的 nasl 的顺序来排列 // 解析 appTree 对象,获取路径的顺序 // 获取 appTree 的顺序 let paths = getAppTreePaths(appTree, 'app'); // 根据路径的顺序对 aaa 进行排序 allData.sort((a, b) => { let indexA = paths.indexOf(a.nodePath); let indexB = paths.indexOf(b.nodePath); return indexA - indexB; }); } // 合并 nasl const batchQueryRes = (0, split_1.mergeNaslObj)(allData); return batchQueryRes; } exports.getAppTree = getAppTree; //# sourceMappingURL=index.js.map