@lcap/asl
Version:
NetEase Application Specific Language
81 lines • 2.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require(".");
const LogicItem_1 = require("./logic/LogicItem");
exports.default = {
records: [],
push(record) {
const pos = this.deleteOwn(record.id);
if (record.typeCheckNote?.message?.filter)
record.typeCheckNote.message = record.typeCheckNote.message.filter((item) => !!item);
if (!record.typeCheckNote || record.typeCheckNote.status === 'success'
|| (record.typeCheckNote && record.typeCheckNote.message && record.typeCheckNote.message.length === 0))
return;
if (pos === -1)
this.records.unshift(record);
else
this.records.splice(pos, 0, record);
},
deleteOwn(id) {
const pos = this.records.findIndex((item) => item.id === id);
if (pos >= 0)
this.records.splice(pos, 1);
return pos;
},
delete(id) {
const node = _1.vertexsMap.get(id);
this.deleteOwn(id);
if (node) {
let children = [];
[...LogicItem_1.logicItemKeyOfLogicItem, ...LogicItem_1.logicItemArrayKeyOfLogicItem].forEach((key) => {
const item = node[key];
if (item)
children = children.concat(item);
});
children.forEach((item) => {
this.delete(item.id);
});
}
},
deleteByProcess(processId) {
this.records = this.records.filter((record) => {
const { processComponentId } = record;
if (processComponentId && _1.vertexsMap.get(processComponentId)?.process.id === processId) {
return false;
}
return true;
});
},
clear() {
this.records = [];
},
pushAll(records, outerId) {
if (!Array.isArray(records))
return;
for (const record of records) {
const { id, logicId = outerId?.logicId, typeCheckNote, processComponentId = outerId?.processComponentId, attributes } = record;
this.push({
id,
logicId,
typeCheckNote,
processComponentId,
attributes,
});
['body', 'consequent', 'alternate'].forEach((key) => {
if (!record[key])
return;
this.pushAll(record[key], { processComponentId, logicId });
});
if (record['cases']) {
for (const rec of record['cases']) {
this.pushAll(rec.consequent, { processComponentId, logicId });
}
}
if (record['right'] &&
record['right'].level === 'logicNode') {
this.pushAll([record['right']], { processComponentId, logicId });
}
}
},
};
//# sourceMappingURL=typeCheck.js.map