UNPKG

abap-adt-api

Version:

Interface to Abap Developer Tools webservice

38 lines (37 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.objectStructure = exports.isClassStructure = exports.isClassMetaData = void 0; const AdtException_1 = require("../AdtException"); const utilities_1 = require("../utilities"); function isClassMetaData(meta) { return meta["class:visibility"] !== undefined; } exports.isClassMetaData = isClassMetaData; function isClassStructure(struc) { return isClassMetaData(struc.metaData); } exports.isClassStructure = isClassStructure; const convertIncludes = (i) => { const imeta = (0, utilities_1.xmlNodeAttr)(i); const links = i["atom:link"].map(utilities_1.xmlNodeAttr); return { ...imeta, links }; }; async function objectStructure(h, objectUrl, version) { (0, AdtException_1.ValidateObjectUrl)(objectUrl); const qs = version ? { version } : {}; const response = await h.request(objectUrl, { qs }); const res = (0, utilities_1.fullParse)(response.body); // return type depends on object type, but always have a single root const root = (0, utilities_1.xmlRoot)(res); const attr = (0, utilities_1.xmlNodeAttr)(root); attr["adtcore:changedAt"] = Date.parse(attr["adtcore:changedAt"]) || 0; attr["adtcore:createdAt"] = Date.parse(attr["adtcore:createdAt"]) || 0; const links = (0, utilities_1.xmlArray)(root, "atom:link").map(utilities_1.xmlNodeAttr); const metaData = attr; if (isClassMetaData(metaData)) { const includes = (0, utilities_1.xmlArray)(root, "class:include").map(convertIncludes); return { objectUrl, metaData, includes, links }; } return { objectUrl, metaData, links }; } exports.objectStructure = objectStructure;