UNPKG

abap-adt-api

Version:

Interface to Abap Developer Tools webservice

106 lines (105 loc) 4.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.inactiveObjects = exports.inactiveObjectsInResults = exports.mainPrograms = exports.activate = void 0; const AdtException_1 = require("../AdtException"); const utilities_1 = require("../utilities"); function toElement(source) { if (!source || !source["ioc:ref"]) return undefined; return { deleted: source["@_ioc:deleted"], user: source["@_ioc:user"], ...(0, utilities_1.xmlNodeAttr)(source["ioc:ref"]) }; } function parseInactive(raw) { return (0, utilities_1.xmlArray)(raw, "ioc:inactiveObjects", "ioc:entry").map((obj) => { return { object: toElement((0, utilities_1.xmlNode)(obj, "ioc:object")), transport: toElement((0, utilities_1.xmlNode)(obj, "ioc:transport")) }; }); } async function activate(h, objectNameOrObjects, objectUrlOrPreauditReq = true, mainInclude, preauditRequested = true) { let objects = []; let incl = ""; if ((0, utilities_1.isString)(objectNameOrObjects)) { if (!(0, utilities_1.isString)(objectUrlOrPreauditReq)) throw (0, AdtException_1.adtException)("Invalid parameters, objectUrl should be a string"); (0, AdtException_1.ValidateObjectUrl)(objectUrlOrPreauditReq || ""); if (mainInclude) incl = `?context=${encodeURIComponent(mainInclude)}`; objects.push(`<adtcore:objectReference adtcore:uri="${objectUrlOrPreauditReq}${incl}" adtcore:name="${objectNameOrObjects}"/>`); } else { let inactives; if ((0, utilities_1.isString)(objectUrlOrPreauditReq)) throw (0, AdtException_1.adtException)("Invalid parameters, preauditRequested should be a boolean"); preauditRequested = objectUrlOrPreauditReq; if ((0, utilities_1.isArray)(objectNameOrObjects)) { inactives = objectNameOrObjects; } else inactives = [objectNameOrObjects]; inactives.forEach(i => (0, AdtException_1.ValidateObjectUrl)(i["adtcore:uri"])); objects = inactives.map(i => `<adtcore:objectReference adtcore:uri="${i["adtcore:uri"]}" adtcore:type="${i["adtcore:type"]}" adtcore:parentUri="${i["adtcore:parentUri"]}" adtcore:name="${i["adtcore:name"]}"/>`); } const qs = { method: "activate", preauditRequested }; const body = `<?xml version="1.0" encoding="UTF-8"?>` + `<adtcore:objectReferences xmlns:adtcore="http://www.sap.com/adt/core">` + objects.join(`\n`) + `</adtcore:objectReferences>`; const response = await h.request("/sap/bc/adt/activation", { body, method: "POST", qs }); let messages = []; let success = true; let inactive = []; if (response.body) { const raw = (0, utilities_1.fullParse)(response.body); inactive = parseInactive(raw); messages = (0, utilities_1.xmlArray)(raw, "chkl:messages", "msg").map((m) => { const message = (0, utilities_1.xmlNodeAttr)(m); message.shortText = (m.shortText && m.shortText.txt) || "Syntax error"; return message; }); if (inactive.length > 0) success = false; else messages.some(m => { if (m.type.match(/[EAX]/)) success = false; return !success; }); } return { messages, success, inactive }; } exports.activate = activate; async function mainPrograms(h, IncludeUrl) { (0, AdtException_1.ValidateObjectUrl)(IncludeUrl); const response = await h.request(`${IncludeUrl}/mainprograms`); const parsed = (0, utilities_1.fullParse)(response.body); const includes = (0, utilities_1.xmlArray)(parsed["adtcore:objectReferences"], "adtcore:objectReference").map(utilities_1.xmlNodeAttr); return includes; } exports.mainPrograms = mainPrograms; function inactiveObjectsInResults(results) { const obj = results.inactive.filter(x => x.object).map(x => x.object); return obj.map(o => { const { user, deleted, ...rest } = o; return rest; }); } exports.inactiveObjectsInResults = inactiveObjectsInResults; async function inactiveObjects(h) { const headers = { Accept: "application/vnd.sap.adt.inactivectsobjects.v1+xml, application/xml;q=0.8" }; const response = await h.request("/sap/bc/adt/activation/inactiveobjects", { headers }); return parseInactive((0, utilities_1.fullParse)(response.body)); } exports.inactiveObjects = inactiveObjects;