UNPKG

@wikipathways/cxml

Version:

Advanced schema-aware streaming XML parser

120 lines 14.5 kB
"use strict"; // This file is part of cxml, copyright (c) 2016 BusFaster Ltd. // Released under the MIT license, see LICENSE. var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var NamespaceBase_1 = require("./NamespaceBase"); var Namespace = /** @class */ (function (_super) { __extends(Namespace, _super); function Namespace() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.importNamespaceList = []; /** All types used in the document. */ _this.typeSpecList = []; /** All members used in the document. */ _this.memberSpecList = []; _this.exportTypeTbl = {}; _this.exportMemberTbl = {}; return _this; } Namespace.prototype.init = function (importSpecList) { this.importSpecList = importSpecList; // Separately defined document type is number 0. var importTypeOffset = 1; // Member number 0 is skipped. var importMemberOffset = 1; for (var _i = 0, importSpecList_1 = importSpecList; _i < importSpecList_1.length; _i++) { var importSpec = importSpecList_1[_i]; importTypeOffset += importSpec[1].length; importMemberOffset += importSpec[2].length; } this.typeSpecList.length = importTypeOffset; this.memberSpecList.length = importMemberOffset; return this; }; Namespace.prototype.addType = function (spec) { if (this.doc) this.typeSpecList.push(spec); else { // First type added after imports is number 0, the document type. this.doc = spec; } if (spec.safeName) this.exportTypeTbl[spec.safeName] = spec; if (!spec.namespace) spec.namespace = this; }; Namespace.prototype.addMember = function (spec) { this.memberSpecList.push(spec); if (spec.name) this.exportMemberTbl[spec.name] = spec; if (!spec.namespace) spec.namespace = this; }; Namespace.prototype.typeByNum = function (num) { return this.typeSpecList[num]; }; Namespace.prototype.memberByNum = function (num) { return this.memberSpecList[num]; }; Namespace.prototype.link = function () { // Skip the document type. var typeNum = 1; var memberNum = 1; for (var _i = 0, _a = this.importSpecList; _i < _a.length; _i++) { var importSpec = _a[_i]; var other = importSpec[0]._cxml[0]; this.importNamespaceList.push(other); for (var _b = 0, _c = importSpec[1]; _b < _c.length; _b++) { var typeName = _c[_b]; this.typeSpecList[typeNum++] = other.exportTypeTbl[typeName]; } for (var _d = 0, _e = importSpec[2]; _d < _e.length; _d++) { var memberName = _e[_d]; this.memberSpecList[memberNum++] = other.exportMemberTbl[memberName]; } } this.exportOffset = typeNum; var typeSpecList = this.typeSpecList; var typeCount = typeSpecList.length; while (typeNum < typeCount) { typeSpecList[typeNum++].resolveDependency(typeSpecList); } var memberSpecList = this.memberSpecList; var memberCount = memberSpecList.length; while (memberNum < memberCount) { memberSpecList[memberNum++].resolveDependency(memberSpecList); } }; Namespace.prototype.exportTypes = function (exports) { var typeSpecList = this.typeSpecList; var typeCount = typeSpecList.length; for (var typeNum = this.exportOffset; typeNum < typeCount; ++typeNum) { var typeSpec = typeSpecList[typeNum]; exports[typeSpec.safeName] = typeSpec.getProto(); } }; Namespace.prototype.exportDocument = function (exports) { exports["document"] = this.doc.getProto().prototype; }; /** Get an internally used arbitrary prefix for fully qualified names * in this namespace. */ Namespace.prototype.getPrefix = function () { return this.id + ":"; }; return Namespace; }(NamespaceBase_1.NamespaceBase)); exports.Namespace = Namespace; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3htbC9OYW1lc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtEQUErRDtBQUMvRCwrQ0FBK0M7Ozs7Ozs7Ozs7Ozs7OztBQUsvQyxpREFBZ0Q7QUFlaEQ7SUFBK0IsNkJBQXNCO0lBQXJEO1FBQUEscUVBcUhDO1FBVkMseUJBQW1CLEdBQWdCLEVBQUUsQ0FBQztRQUV0QyxzQ0FBc0M7UUFDdEMsa0JBQVksR0FBZSxFQUFFLENBQUM7UUFDOUIsd0NBQXdDO1FBQ3hDLG9CQUFjLEdBQWlCLEVBQUUsQ0FBQztRQUdsQyxtQkFBYSxHQUFpQyxFQUFFLENBQUM7UUFDakQscUJBQWUsR0FBbUMsRUFBRSxDQUFDOztJQUN2RCxDQUFDO0lBcEhDLHdCQUFJLEdBQUosVUFBSyxjQUE0QjtRQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUVyQyxnREFBZ0Q7UUFDaEQsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDekIsOEJBQThCO1FBQzlCLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBRTNCLEtBQXVCLFVBQWMsRUFBZCxpQ0FBYyxFQUFkLDRCQUFjLEVBQWQsSUFBYyxFQUFFO1lBQWxDLElBQUksVUFBVSx1QkFBQTtZQUNqQixnQkFBZ0IsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3pDLGtCQUFrQixJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztRQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwyQkFBTyxHQUFQLFVBQVEsSUFBYztRQUNwQixJQUFJLElBQUksQ0FBQyxH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QUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3JDLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFFcEMsS0FBSyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sR0FBRyxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUU7WUFDcEUsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXJDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2xEO0lBQ0gsQ0FBQztJQUVELGtDQUFjLEdBQWQsVUFBZSxPQUFzQjtRQUNuQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDdEQsQ0FBQztJQUVEOytCQUN3QjtJQUV4Qiw2QkFBUyxHQUFUO1FBQ0UsT0FBTyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBZ0JILGdCQUFDO0FBQUQsQ0FBQyxBQXJIRCxDQUErQiw2QkFBYSxHQXFIM0M7QUFySFksOEJBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiBjeG1sLCBjb3B5cmlnaHQgKGMpIDIwMTYgQnVzRmFzdGVyIEx0ZC5cbi8vIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSwgc2VlIExJQ0VOU0UuXG5cbmltcG9ydCB7IFR5cGVTcGVjIH0gZnJvbSBcIi4vVHlwZVNwZWNcIjtcbmltcG9ydCB7IE1lbWJlclNwZWMgfSBmcm9tIFwiLi9NZW1iZXJTcGVjXCI7XG5pbXBvcnQgeyBDb250ZXh0IH0gZnJvbSBcIi4vQ29udGV4dFwiO1xuaW1wb3J0IHsgTmFtZXNwYWNlQmFzZSB9IGZyb20gXCIuL05hbWVzcGFjZUJhc2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVFeHBvcnRzIHtcbiAgW25hbWU6IHN0cmluZ106IGFueTtcbiAgX2N4bWw6IFtOYW1lc3BhY2VdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydENvbnRlbnQge1xuICB0eXBlVGJsOiB7IFtrZXk6IHN0cmluZ106IFR5cGVTcGVjIH07XG4gIG1lbWJlclRibDogeyBba2V5OiBzdHJpbmddOiBNZW1iZXJTcGVjIH07XG59XG5cbi8qKiBUdXBsZTogbW9kdWxlIGV4cG9ydHMgb2JqZWN0LCBsaXN0IG9mIGltcG9ydGVkIHR5cGUgbmFtZXMgKi9cbmV4cG9ydCB0eXBlIEltcG9ydFNwZWMgPSBbTW9kdWxlRXhwb3J0cywgc3RyaW5nW10sIHN0cmluZ1tdXTtcblxuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZSBleHRlbmRzIE5hbWVzcGFjZUJhc2U8Q29udGV4dD4ge1xuICBpbml0KGltcG9ydFNwZWNMaXN0OiBJbXBvcnRTcGVjW10pIHtcbiAgICB0aGlzLmltcG9ydFNwZWNMaXN0ID0gaW1wb3J0U3BlY0xpc3Q7XG5cbiAgICAvLyBTZXBhcmF0ZWx5IGRlZmluZWQgZG9jdW1lbnQgdHlwZSBpcyBudW1iZXIgMC5cbiAgICB2YXIgaW1wb3J0VHlwZU9mZnNldCA9IDE7XG4gICAgLy8gTWVtYmVyIG51bWJlciAwIGlzIHNraXBwZWQuXG4gICAgdmFyIGltcG9ydE1lbWJlck9mZnNldCA9IDE7XG5cbiAgICBmb3IgKHZhciBpbXBvcnRTcGVjIG9mIGltcG9ydFNwZWNMaXN0KSB7XG4gICAgICBpbXBvcnRUeXBlT2Zmc2V0ICs9IGltcG9ydFNwZWNbMV0ubGVuZ3RoO1xuICAgICAgaW1wb3J0TWVtYmVyT2Zmc2V0ICs9IGltcG9ydFNwZWNbMl0ubGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMudHlwZVNwZWNMaXN0Lmxlbmd0aCA9IGltcG9ydFR5cGVPZmZzZXQ7XG4gICAgdGhpcy5tZW1iZXJTcGVjTGlzdC5sZW5ndGggPSBpbXBvcnRNZW1iZXJPZmZzZXQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRUeXBlKHNwZWM6IFR5cGVTcGVjKSB7XG4gICAgaWYgKHRoaXMuZG9jKSB0aGlzLnR5cGVTcGVjTGlzdC5wdXNoKHNwZWMpO1xuICAgIGVsc2Uge1xuICAgICAgLy8gRmlyc3QgdHlwZSBhZGRlZCBhZnRlciBpbXBvcnRzIGlzIG51bWJlciAwLCB0aGUgZG9jdW1lbnQgdHlwZS5cbiAgICAgIHRoaXMuZG9jID0gc3BlYztcbiAgICB9XG5cbiAgICBpZiAoc3BlYy5zYWZlTmFtZSkgdGhpcy5leHBvcnRUeXBlVGJsW3NwZWMuc2FmZU5hbWVdID0gc3BlYztcbiAgICBpZiAoIXNwZWMubmFtZXNwYWNlKSBzcGVjLm5hbWVzcGFjZSA9IHRoaXM7XG4gIH1cblxuICBhZGRNZW1iZXIoc3BlYzogTWVtYmVyU3BlYykge1xuICAgIHRoaXMubWVtYmVyU3BlY0xpc3QucHVzaChzcGVjKTtcblxuICAgIGlmIChzcGVjLm5hbWUpIHRoaXMuZXhwb3J0TWVtYmVyVGJsW3NwZWMubmFtZV0gPSBzcGVjO1xuICAgIGlmICghc3BlYy5uYW1lc3BhY2UpIHNwZWMubmFtZXNwYWNlID0gdGhpcztcbiAgfVxuXG4gIHR5cGVCeU51bShudW06IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnR5cGVTcGVjTGlzdFtudW1dO1xuICB9XG5cbiAgbWVtYmVyQnlOdW0obnVtOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5tZW1iZXJTcGVjTGlzdFtudW1dO1xuICB9XG5cbiAgbGluaygpIHtcbiAgICAvLyBTa2lwIHRoZSBkb2N1bWVudCB0eXBlLlxuICAgIHZhciB0eXBlTnVtID0gMTtcbiAgICB2YXIgbWVtYmVyTnVtID0gMTtcblxuICAgIGZvciAodmFyIGltcG9ydFNwZWMgb2YgdGhpcy5pbXBvcnRTcGVjTGlzdCkge1xuICAgICAgdmFyIG90aGVyID0gaW1wb3J0U3BlY1swXS5fY3htbFswXTtcblxuICAgICAgdGhpcy5pbXBvcnROYW1lc3BhY2VMaXN0LnB1c2gob3RoZXIpO1xuXG4gICAgICBmb3IgKHZhciB0eXBlTmFtZSBvZiBpbXBvcnRTcGVjWzFdKSB7XG4gICAgICAgIHRoaXMudHlwZVNwZWNMaXN0W3R5cGVOdW0rK10gPSBvdGhlci5leHBvcnRUeXBlVGJsW3R5cGVOYW1lXTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgbWVtYmVyTmFtZSBvZiBpbXBvcnRTcGVjWzJdKSB7XG4gICAgICAgIHRoaXMubWVtYmVyU3BlY0xpc3RbbWVtYmVyTnVtKytdID0gb3RoZXIuZXhwb3J0TWVtYmVyVGJsW21lbWJlck5hbWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZXhwb3J0T2Zmc2V0ID0gdHlwZU51bTtcblxuICAgIHZhciB0eXBlU3BlY0xpc3QgPSB0aGlzLnR5cGVTcGVjTGlzdDtcbiAgICB2YXIgdHlwZUNvdW50ID0gdHlwZVNwZWNMaXN0Lmxlbmd0aDtcblxuICAgIHdoaWxlICh0eXBlTnVtIDwgdHlwZUNvdW50KSB7XG4gICAgICB0eXBlU3BlY0xpc3RbdHlwZU51bSsrXS5yZXNvbHZlRGVwZW5kZW5jeSh0eXBlU3BlY0xpc3QpO1xuICAgIH1cblxuICAgIHZhciBtZW1iZXJTcGVjTGlzdCA9IHRoaXMubWVtYmVyU3BlY0xpc3Q7XG4gICAgdmFyIG1lbWJlckNvdW50ID0gbWVtYmVyU3BlY0xpc3QubGVuZ3RoO1xuXG4gICAgd2hpbGUgKG1lbWJlck51bSA8IG1lbWJlckNvdW50KSB7XG4gICAgICBtZW1iZXJTcGVjTGlzdFttZW1iZXJOdW0rK10ucmVzb2x2ZURlcGVuZGVuY3kobWVtYmVyU3BlY0xpc3QpO1xuICAgIH1cbiAgfVxuXG4gIGV4cG9ydFR5cGVzKGV4cG9ydHM6IE1vZHVsZUV4cG9ydHMpIHtcbiAgICB2YXIgdHlwZVNwZWNMaXN0ID0gdGhpcy50eXBlU3BlY0xpc3Q7XG4gICAgdmFyIHR5cGVDb3VudCA9IHR5cGVTcGVjTGlzdC5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciB0eXBlTnVtID0gdGhpcy5leHBvcnRPZmZzZXQ7IHR5cGVOdW0gPCB0eXBlQ291bnQ7ICsrdHlwZU51bSkge1xuICAgICAgdmFyIHR5cGVTcGVjID0gdHlwZVNwZWNMaXN0W3R5cGVOdW1dO1xuXG4gICAgICBleHBvcnRzW3R5cGVTcGVjLnNhZmVOYW1lXSA9IHR5cGVTcGVjLmdldFByb3RvKCk7XG4gICAgfVxuICB9XG5cbiAgZXhwb3J0RG9jdW1lbnQoZXhwb3J0czogTW9kdWxlRXhwb3J0cykge1xuICAgIGV4cG9ydHNbXCJkb2N1bWVudFwiXSA9IHRoaXMuZG9jLmdldFByb3RvKCkucHJvdG90eXBlO1xuICB9XG5cbiAgLyoqIEdldCBhbiBpbnRlcm5hbGx5IHVzZWQgYXJiaXRyYXJ5IHByZWZpeCBmb3IgZnVsbHkgcXVhbGlmaWVkIG5hbWVzXG5cdCAgKiBpbiB0aGlzIG5hbWVzcGFjZS4gKi9cblxuICBnZXRQcmVmaXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWQgKyBcIjpcIjtcbiAgfVxuXG4gIC8qKiBJbnZpc2libGUgZG9jdW1lbnQgZWxlbWVudCBkZWZpbmluZyB0aGUgdHlwZXMgb2YgWE1MIGZpbGUgcm9vdCBlbGVtZW50cy4gKi9cbiAgZG9jOiBUeXBlU3BlYztcblxuICBpbXBvcnRTcGVjTGlzdDogSW1wb3J0U3BlY1tdO1xuICBpbXBvcnROYW1lc3BhY2VMaXN0OiBOYW1lc3BhY2VbXSA9IFtdO1xuICBleHBvcnRUeXBlTmFtZUxpc3Q6IHN0cmluZ1tdO1xuICAvKiogQWxsIHR5cGVzIHVzZWQgaW4gdGhlIGRvY3VtZW50LiAqL1xuICB0eXBlU3BlY0xpc3Q6IFR5cGVTcGVjW10gPSBbXTtcbiAgLyoqIEFsbCBtZW1iZXJzIHVzZWQgaW4gdGhlIGRvY3VtZW50LiAqL1xuICBtZW1iZXJTcGVjTGlzdDogTWVtYmVyU3BlY1tdID0gW107XG4gIGV4cG9ydE9mZnNldDogbnVtYmVyO1xuXG4gIGV4cG9ydFR5cGVUYmw6IHsgW25hbWU6IHN0cmluZ106IFR5cGVTcGVjIH0gPSB7fTtcbiAgZXhwb3J0TWVtYmVyVGJsOiB7IFtuYW1lOiBzdHJpbmddOiBNZW1iZXJTcGVjIH0gPSB7fTtcbn1cbiJdfQ==