abap-adt-api
Version:
Interface to Abap Developer Tools webservice
106 lines (105 loc) • 4.57 kB
JavaScript
;
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;