abap-adt-api
Version:
Interface to Abap Developer Tools webservice
68 lines (67 loc) • 2.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.packageSearchHelp = exports.abapDocumentation = exports.findObjectPath = exports.searchObject = void 0;
const AdtException_1 = require("../AdtException");
const utilities_1 = require("../utilities");
async function searchObject(h, query, objType, maxResults = 100) {
const qs = { operation: "quickSearch", query, maxResults };
if (objType)
qs.objectType = objType.replace(/\/.*$/, "");
const response = await h.request(`/sap/bc/adt/repository/informationsystem/search`, { qs, headers: { Accept: "application/*" } });
const raw = (0, utilities_1.fullParse)(response.body);
return (0, utilities_1.xmlArray)(raw, "adtcore:objectReferences", "adtcore:objectReference").map((sr) => {
const result = (0, utilities_1.xmlNodeAttr)(sr);
// older systems return things like "ZREPORT (PROGRAM)"...
const r = result["adtcore:name"].match(/([^\s]*)\s*\((.*)\)/);
if (r) {
result["adtcore:name"] = r[1];
if (!result["adtcore:description"])
result["adtcore:description"] = r[2];
}
return result;
});
}
exports.searchObject = searchObject;
async function findObjectPath(h, objectUrl) {
(0, AdtException_1.ValidateObjectUrl)(objectUrl);
const qs = { uri: objectUrl };
const response = await h.request(`/sap/bc/adt/repository/nodepath`, {
method: "POST",
qs
});
const raw = (0, utilities_1.fullParse)(response.body);
return (0, utilities_1.xmlArray)(raw, "projectexplorer:nodepath", "projectexplorer:objectLinkReferences", "objectLinkReference").map(utilities_1.xmlNodeAttr);
}
exports.findObjectPath = findObjectPath;
async function abapDocumentation(h, objectUri, body, line, column, language = "EN") {
(0, AdtException_1.ValidateObjectUrl)(objectUri);
const headers = {
"Content-Type": "text/plain",
Accept: "application/vnd.sap.adt.docu.v1+html,text/html"
};
const uri = `${objectUri}#start=${line},${column}`;
const qs = { uri, language, format: "eclipse" };
const response = await h.request(`/sap/bc/adt/docu/abap/langu`, {
method: "POST",
qs,
headers,
body
});
return response.body;
}
exports.abapDocumentation = abapDocumentation;
async function packageSearchHelp(h, type, name = "*") {
const headers = { Accept: "application/*" };
const qs = { name };
const uri = `/sap/bc/adt/packages/valuehelps/${type}`;
const response = await h.request(uri, { qs, headers });
const raw = (0, utilities_1.fullParse)(response.body);
return (0, utilities_1.xmlArray)(raw, "nameditem:namedItemList", "nameditem:namedItem").map((item) => {
return {
name: item["nameditem:name"],
description: item["nameditem:description"],
data: item["nameditem:data"]
};
});
}
exports.packageSearchHelp = packageSearchHelp;