UNPKG

abap-adt-api

Version:

Interface to Abap Developer Tools webservice

68 lines (67 loc) 2.99 kB
"use strict"; 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;