@sap-ux/axios-extension 1.26.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abap/abap-service-provider.d.ts +11 -11
- package/dist/abap/abap-service-provider.js +43 -47
- package/dist/abap/adt-catalog/adt-catalog-service.d.ts +2 -2
- package/dist/abap/adt-catalog/adt-catalog-service.js +7 -11
- package/dist/abap/adt-catalog/adt-schema-store.d.ts +1 -1
- package/dist/abap/adt-catalog/adt-schema-store.js +1 -5
- package/dist/abap/adt-catalog/generators/index.d.ts +2 -2
- package/dist/abap/adt-catalog/generators/index.js +2 -7
- package/dist/abap/adt-catalog/generators/odata-service-generator.d.ts +3 -3
- package/dist/abap/adt-catalog/generators/odata-service-generator.js +2 -6
- package/dist/abap/adt-catalog/generators/types.js +1 -2
- package/dist/abap/adt-catalog/generators/ui-service-generator.d.ts +3 -3
- package/dist/abap/adt-catalog/generators/ui-service-generator.js +2 -6
- package/dist/abap/adt-catalog/index.d.ts +3 -3
- package/dist/abap/adt-catalog/index.js +3 -19
- package/dist/abap/adt-catalog/services/abapcdsview-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/abapcdsview-service.js +2 -6
- package/dist/abap/adt-catalog/services/adt-service.d.ts +1 -1
- package/dist/abap/adt-catalog/services/adt-service.js +5 -9
- package/dist/abap/adt-catalog/services/ato-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/ato-service.js +5 -9
- package/dist/abap/adt-catalog/services/businessobjects-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/businessobjects-service.js +2 -6
- package/dist/abap/adt-catalog/services/filestore-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/filestore-service.js +5 -9
- package/dist/abap/adt-catalog/services/generator-service.d.ts +3 -3
- package/dist/abap/adt-catalog/services/generator-service.js +2 -6
- package/dist/abap/adt-catalog/services/index.d.ts +13 -12
- package/dist/abap/adt-catalog/services/index.js +12 -27
- package/dist/abap/adt-catalog/services/list-package-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/list-package-service.js +5 -9
- package/dist/abap/adt-catalog/services/publish-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/publish-service.js +2 -6
- package/dist/abap/adt-catalog/services/rap-generator-service.d.ts +3 -3
- package/dist/abap/adt-catalog/services/rap-generator-service.js +2 -6
- package/dist/abap/adt-catalog/services/systeminfo-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/systeminfo-service.js +2 -6
- package/dist/abap/adt-catalog/services/transportcheck-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/transportcheck-service.js +9 -46
- package/dist/abap/adt-catalog/services/transportrequest-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/transportrequest-service.js +2 -6
- package/dist/abap/adt-catalog/services/ui5-rt-version-service.d.ts +2 -2
- package/dist/abap/adt-catalog/services/ui5-rt-version-service.js +2 -6
- package/dist/abap/app-index-service.d.ts +1 -1
- package/dist/abap/app-index-service.js +3 -7
- package/dist/abap/catalog/base.d.ts +2 -2
- package/dist/abap/catalog/base.js +3 -7
- package/dist/abap/catalog/index.d.ts +3 -3
- package/dist/abap/catalog/index.js +3 -19
- package/dist/abap/catalog/v2-catalog-service.d.ts +2 -2
- package/dist/abap/catalog/v2-catalog-service.js +7 -11
- package/dist/abap/catalog/v4-catalog-service.d.ts +2 -2
- package/dist/abap/catalog/v4-catalog-service.js +11 -15
- package/dist/abap/index.d.ts +12 -8
- package/dist/abap/index.js +8 -31
- package/dist/abap/lrep-service.d.ts +2 -2
- package/dist/abap/lrep-service.js +24 -31
- package/dist/abap/message.js +10 -18
- package/dist/abap/types/adt-internal-types.js +1 -2
- package/dist/abap/types/adt-types.js +3 -6
- package/dist/abap/types/external-services.js +1 -2
- package/dist/abap/types/index.d.ts +2 -2
- package/dist/abap/types/index.js +2 -18
- package/dist/abap/ui5-abap-repository-service.d.ts +1 -1
- package/dist/abap/ui5-abap-repository-service.js +14 -18
- package/dist/abap/ui5-version-service.d.ts +1 -1
- package/dist/abap/ui5-version-service.js +2 -6
- package/dist/auth/connection.d.ts +1 -1
- package/dist/auth/connection.js +10 -18
- package/dist/auth/error.js +4 -11
- package/dist/auth/index.d.ts +8 -6
- package/dist/auth/index.js +14 -35
- package/dist/auth/redirect.js +1 -5
- package/dist/auth/reentrance-ticket/abap-virtual-host-provider.js +5 -12
- package/dist/auth/reentrance-ticket/index.d.ts +1 -1
- package/dist/auth/reentrance-ticket/index.js +7 -10
- package/dist/auth/reentrance-ticket/redirect.d.ts +1 -1
- package/dist/auth/reentrance-ticket/redirect.js +10 -16
- package/dist/auth/static.js +2 -7
- package/dist/auth/uaa.d.ts +1 -1
- package/dist/auth/uaa.js +24 -31
- package/dist/base/odata-request-error.js +2 -7
- package/dist/base/odata-service.js +4 -8
- package/dist/base/patchTls.js +6 -13
- package/dist/base/service-provider.d.ts +2 -2
- package/dist/base/service-provider.js +8 -12
- package/dist/cacerts/sap-global-root-ca.js +1 -4
- package/dist/factory.d.ts +5 -5
- package/dist/factory.js +44 -56
- package/dist/index.d.ts +9 -9
- package/dist/index.js +10 -28
- package/package.json +9 -7
package/dist/abap/index.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
export { AppInfo, BspConfig, DeployConfig,
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
1
|
+
export type { AppInfo, BspConfig, DeployConfig, UndeployConfig } from './ui5-abap-repository-service.js';
|
|
2
|
+
export { Ui5AbapRepositoryService } from './ui5-abap-repository-service.js';
|
|
3
|
+
export type { AdaptationConfig, MergedAppDescriptor, SystemInfo, Inbound, InboundContent, AdaptationsResponse, AdaptationDescriptor, KeyUserDataResponse, KeyUserChangeContent, KeyUserTextTranslations, FlexVersion } from './lrep-service.js';
|
|
4
|
+
export { LayeredRepositoryService, AdaptationProjectType } from './lrep-service.js';
|
|
5
|
+
export { AbapServiceProvider } from './abap-service-provider.js';
|
|
6
|
+
export { AppIndexService } from './app-index-service.js';
|
|
7
|
+
export type { AppIndex, Ui5AppInfo, Ui5AppInfoContent, App } from './app-index-service.js';
|
|
8
|
+
export * from './message.js';
|
|
9
|
+
export * from './catalog/index.js';
|
|
10
|
+
export * from './adt-catalog/index.js';
|
|
11
|
+
export type { ArchiveFileNode, AtoSettings, BusinessObject, OperationsType, CodeListReference, ValueListReference, CodeListService, ValueListService, ExternalServiceReference, ExternalService, TransportRequest, EntitySetData } from './types/index.js';
|
|
12
|
+
export { TenantType } from './types/index.js';
|
|
9
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/abap/index.js
CHANGED
|
@@ -1,32 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.TenantType = exports.AppIndexService = exports.AbapServiceProvider = exports.AdaptationProjectType = exports.LayeredRepositoryService = exports.Ui5AbapRepositoryService = void 0;
|
|
18
|
-
var ui5_abap_repository_service_1 = require("./ui5-abap-repository-service");
|
|
19
|
-
Object.defineProperty(exports, "Ui5AbapRepositoryService", { enumerable: true, get: function () { return ui5_abap_repository_service_1.Ui5AbapRepositoryService; } });
|
|
20
|
-
var lrep_service_1 = require("./lrep-service");
|
|
21
|
-
Object.defineProperty(exports, "LayeredRepositoryService", { enumerable: true, get: function () { return lrep_service_1.LayeredRepositoryService; } });
|
|
22
|
-
Object.defineProperty(exports, "AdaptationProjectType", { enumerable: true, get: function () { return lrep_service_1.AdaptationProjectType; } });
|
|
23
|
-
var abap_service_provider_1 = require("./abap-service-provider");
|
|
24
|
-
Object.defineProperty(exports, "AbapServiceProvider", { enumerable: true, get: function () { return abap_service_provider_1.AbapServiceProvider; } });
|
|
25
|
-
var app_index_service_1 = require("./app-index-service");
|
|
26
|
-
Object.defineProperty(exports, "AppIndexService", { enumerable: true, get: function () { return app_index_service_1.AppIndexService; } });
|
|
27
|
-
__exportStar(require("./message"), exports);
|
|
28
|
-
__exportStar(require("./catalog"), exports);
|
|
29
|
-
__exportStar(require("./adt-catalog"), exports);
|
|
30
|
-
var types_1 = require("./types");
|
|
31
|
-
Object.defineProperty(exports, "TenantType", { enumerable: true, get: function () { return types_1.TenantType; } });
|
|
1
|
+
export { Ui5AbapRepositoryService } from './ui5-abap-repository-service.js';
|
|
2
|
+
export { LayeredRepositoryService, AdaptationProjectType } from './lrep-service.js';
|
|
3
|
+
export { AbapServiceProvider } from './abap-service-provider.js';
|
|
4
|
+
export { AppIndexService } from './app-index-service.js';
|
|
5
|
+
export * from './message.js';
|
|
6
|
+
export * from './catalog/index.js';
|
|
7
|
+
export * from './adt-catalog/index.js';
|
|
8
|
+
export { TenantType } from './types/index.js';
|
|
32
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -2,8 +2,8 @@ import type { AxiosResponse } from 'axios';
|
|
|
2
2
|
import { Axios } from 'axios';
|
|
3
3
|
import type { Logger } from '@sap-ux/logger';
|
|
4
4
|
import type { ManifestNamespace } from '@sap-ux/project-access';
|
|
5
|
-
import type { Service } from '../base/service-provider';
|
|
6
|
-
import type { TransportConfig } from './ui5-abap-repository-service';
|
|
5
|
+
import type { Service } from '../base/service-provider.js';
|
|
6
|
+
import type { TransportConfig } from './ui5-abap-repository-service.js';
|
|
7
7
|
export type Manifest = ManifestNamespace.SAPJSONSchemaForWebApplicationManifestFile & {
|
|
8
8
|
[key: string]: unknown;
|
|
9
9
|
};
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const node_fs_1 = require("node:fs");
|
|
9
|
-
const node_url_1 = require("node:url");
|
|
10
|
-
const logger_1 = require("@sap-ux/logger");
|
|
11
|
-
const odata_request_error_1 = require("../base/odata-request-error");
|
|
12
|
-
const message_1 = require("./message");
|
|
13
|
-
const qs_1 = __importDefault(require("qs"));
|
|
1
|
+
import { Axios } from 'axios';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { URLSearchParams } from 'node:url';
|
|
4
|
+
import { LogLevel } from '@sap-ux/logger';
|
|
5
|
+
import { isAxiosError } from '../base/odata-request-error.js';
|
|
6
|
+
import { logError } from './message.js';
|
|
7
|
+
import qs from 'qs';
|
|
14
8
|
/**
|
|
15
9
|
* All available adaptation project types from system.
|
|
16
10
|
*/
|
|
17
|
-
var AdaptationProjectType;
|
|
11
|
+
export var AdaptationProjectType;
|
|
18
12
|
(function (AdaptationProjectType) {
|
|
19
13
|
AdaptationProjectType["ON_PREMISE"] = "onPremise";
|
|
20
14
|
AdaptationProjectType["CLOUD_READY"] = "cloudReady";
|
|
21
|
-
})(AdaptationProjectType || (
|
|
15
|
+
})(AdaptationProjectType || (AdaptationProjectType = {}));
|
|
22
16
|
/**
|
|
23
17
|
* Returns the namespace as string.
|
|
24
18
|
*
|
|
@@ -71,7 +65,7 @@ const DTA_PATH_SUFFIX = '/dta_folder/';
|
|
|
71
65
|
/**
|
|
72
66
|
* A class representing the design time adaptation service allowing to deploy adaptation projects to an ABAP system.
|
|
73
67
|
*/
|
|
74
|
-
class LayeredRepositoryService extends
|
|
68
|
+
export class LayeredRepositoryService extends Axios {
|
|
75
69
|
static PATH = '/sap/bc/lrep';
|
|
76
70
|
log;
|
|
77
71
|
/**
|
|
@@ -84,7 +78,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
84
78
|
return await this.get('/actions/getcsrftoken/');
|
|
85
79
|
}
|
|
86
80
|
catch (error) {
|
|
87
|
-
if (
|
|
81
|
+
if (isAxiosError(error)) {
|
|
88
82
|
this.tryLogResponse(error.response);
|
|
89
83
|
}
|
|
90
84
|
throw error;
|
|
@@ -99,7 +93,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
99
93
|
*/
|
|
100
94
|
async mergeAppDescriptorVariant(appDescriptorVariant, workspacePath) {
|
|
101
95
|
const path = '/appdescr_variant_preview/';
|
|
102
|
-
const params = new
|
|
96
|
+
const params = new URLSearchParams(this.defaults?.params);
|
|
103
97
|
if (workspacePath) {
|
|
104
98
|
params.append('workspacePath', workspacePath);
|
|
105
99
|
}
|
|
@@ -114,7 +108,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
114
108
|
return JSON.parse(response.data);
|
|
115
109
|
}
|
|
116
110
|
catch (error) {
|
|
117
|
-
if (
|
|
111
|
+
if (isAxiosError(error)) {
|
|
118
112
|
this.tryLogResponse(error.response);
|
|
119
113
|
}
|
|
120
114
|
throw error;
|
|
@@ -140,7 +134,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
140
134
|
return response;
|
|
141
135
|
}
|
|
142
136
|
catch (error) {
|
|
143
|
-
if (
|
|
137
|
+
if (isAxiosError(error)) {
|
|
144
138
|
this.tryLogResponse(error.response);
|
|
145
139
|
if (error.response?.status === 404) {
|
|
146
140
|
return error.response;
|
|
@@ -157,7 +151,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
157
151
|
* @returns the Axios response object for futher processing
|
|
158
152
|
*/
|
|
159
153
|
async deploy(archive, config) {
|
|
160
|
-
const data = isBuffer(archive) ? archive :
|
|
154
|
+
const data = isBuffer(archive) ? archive : readFileSync(archive);
|
|
161
155
|
const checkResponse = await this.isExistingVariant(config.namespace);
|
|
162
156
|
const params = {
|
|
163
157
|
name: getNamespaceAsString(config.namespace),
|
|
@@ -181,7 +175,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
181
175
|
return response;
|
|
182
176
|
}
|
|
183
177
|
catch (error) {
|
|
184
|
-
|
|
178
|
+
logError({ error, log: this.log });
|
|
185
179
|
throw error;
|
|
186
180
|
}
|
|
187
181
|
}
|
|
@@ -211,7 +205,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
211
205
|
catch (error) {
|
|
212
206
|
this.log.error('Undeployment failed');
|
|
213
207
|
this.log.debug(error);
|
|
214
|
-
if (
|
|
208
|
+
if (isAxiosError(error) && error.response?.status === 405) {
|
|
215
209
|
this.log.error('Newer version of SAP_UI required, please check https://help.sap.com/docs/bas/developing-sap-fiori-app-in-sap-business-application-studio/delete-adaptation-project');
|
|
216
210
|
}
|
|
217
211
|
throw error;
|
|
@@ -233,7 +227,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
233
227
|
return response.data;
|
|
234
228
|
}
|
|
235
229
|
catch (error) {
|
|
236
|
-
if (
|
|
230
|
+
if (isAxiosError(error)) {
|
|
237
231
|
this.tryLogResponse(error.response);
|
|
238
232
|
}
|
|
239
233
|
throw error;
|
|
@@ -247,7 +241,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
247
241
|
* @returns {Promise<KeyUserDataResponse>} Key user change payload.
|
|
248
242
|
*/
|
|
249
243
|
async getKeyUserData(componentId, adaptationId) {
|
|
250
|
-
const params = new
|
|
244
|
+
const params = new URLSearchParams(this.defaults?.params);
|
|
251
245
|
params.append('adaptationId', encodeURIComponent(adaptationId));
|
|
252
246
|
try {
|
|
253
247
|
const response = await this.get(`/flex/keyuserdata/${componentId}`, {
|
|
@@ -259,7 +253,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
259
253
|
return response.data;
|
|
260
254
|
}
|
|
261
255
|
catch (error) {
|
|
262
|
-
if (
|
|
256
|
+
if (isAxiosError(error)) {
|
|
263
257
|
this.tryLogResponse(error.response);
|
|
264
258
|
}
|
|
265
259
|
throw error;
|
|
@@ -275,7 +269,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
275
269
|
*/
|
|
276
270
|
async getFlexVersions(componentId, limit = 2, language = 'EN') {
|
|
277
271
|
try {
|
|
278
|
-
const params = new
|
|
272
|
+
const params = new URLSearchParams(this.defaults?.params);
|
|
279
273
|
params.append('sap-language', language);
|
|
280
274
|
params.append('limit', limit.toString());
|
|
281
275
|
const response = await this.get(`/flex/versions/${encodeURIComponent(componentId)}`, {
|
|
@@ -286,7 +280,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
286
280
|
return response.data;
|
|
287
281
|
}
|
|
288
282
|
catch (error) {
|
|
289
|
-
if (
|
|
283
|
+
if (isAxiosError(error)) {
|
|
290
284
|
this.tryLogResponse(error.response);
|
|
291
285
|
}
|
|
292
286
|
throw error;
|
|
@@ -313,7 +307,7 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
313
307
|
}
|
|
314
308
|
const response = await this.get(`${DTA_PATH_SUFFIX}system_info`, {
|
|
315
309
|
params,
|
|
316
|
-
paramsSerializer: (params) =>
|
|
310
|
+
paramsSerializer: (params) => qs.stringify(params, { encode: false })
|
|
317
311
|
});
|
|
318
312
|
this.tryLogResponse(response, 'Successful getting system info.');
|
|
319
313
|
return JSON.parse(response.data);
|
|
@@ -353,12 +347,11 @@ class LayeredRepositoryService extends axios_1.Axios {
|
|
|
353
347
|
* @param msg message to be logged
|
|
354
348
|
*/
|
|
355
349
|
logMessage(msg) {
|
|
356
|
-
const level = msg.severity === 'Error' ?
|
|
350
|
+
const level = msg.severity === 'Error' ? LogLevel.Error : LogLevel.Info;
|
|
357
351
|
this.log.log({ level, message: msg.text });
|
|
358
352
|
(msg.details ?? []).forEach((message) => {
|
|
359
353
|
this.log.log({ level, message });
|
|
360
354
|
});
|
|
361
355
|
}
|
|
362
356
|
}
|
|
363
|
-
exports.LayeredRepositoryService = LayeredRepositoryService;
|
|
364
357
|
//# sourceMappingURL=lrep-service.js.map
|
package/dist/abap/message.js
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.prettyPrintTimeInMs = void 0;
|
|
4
|
-
exports.prettyPrintMessage = prettyPrintMessage;
|
|
5
|
-
exports.prettyPrintError = prettyPrintError;
|
|
6
|
-
exports.logError = logError;
|
|
7
|
-
exports.getErrorMessageFromString = getErrorMessageFromString;
|
|
8
|
-
const node_url_1 = require("node:url");
|
|
9
|
-
const axios_1 = require("axios");
|
|
1
|
+
import { URL } from 'node:url';
|
|
2
|
+
import { isAxiosError } from 'axios';
|
|
10
3
|
/**
|
|
11
4
|
*
|
|
12
5
|
* @param severity
|
|
@@ -40,7 +33,7 @@ function logLevel(severity, msg, log, error = false) {
|
|
|
40
33
|
* @param options.host optional url that should logged as clickable url
|
|
41
34
|
* @param options.isDest optional destination flag
|
|
42
35
|
*/
|
|
43
|
-
function prettyPrintMessage({ msg, log, host, isDest = false }) {
|
|
36
|
+
export function prettyPrintMessage({ msg, log, host, isDest = false }) {
|
|
44
37
|
try {
|
|
45
38
|
const jsonMsg = JSON.parse(msg);
|
|
46
39
|
log.info(jsonMsg.message);
|
|
@@ -65,14 +58,14 @@ function prettyPrintMessage({ msg, log, host, isDest = false }) {
|
|
|
65
58
|
*/
|
|
66
59
|
function logFullURL({ host, path, log, isDest = false }) {
|
|
67
60
|
if (host && path) {
|
|
68
|
-
const base = new
|
|
61
|
+
const base = new URL(host).origin; // We only care for the origin value
|
|
69
62
|
// Add this instruction to the user because of this bug in VS Code: https://github.com/microsoft/vscode/issues/144898
|
|
70
63
|
// It undoes the encoding of special characters in the URL sent to the browser
|
|
71
64
|
log.info('Please copy/paste this URL in a browser for more details:');
|
|
72
65
|
if (isDest) {
|
|
73
66
|
log.info('(Note: You will need to replace the host in the URL with the internal host, if your destination is configured using an On-Premise SAP Cloud Connector)');
|
|
74
67
|
}
|
|
75
|
-
log.info(new
|
|
68
|
+
log.info(new URL(path, base).href);
|
|
76
69
|
}
|
|
77
70
|
}
|
|
78
71
|
/**
|
|
@@ -86,7 +79,7 @@ function logFullURL({ host, path, log, isDest = false }) {
|
|
|
86
79
|
* @param options.isDest optional value if additional info should be printed
|
|
87
80
|
* @param showAllMessages optional, show all errors but restrict for certain flows i.e. test mode
|
|
88
81
|
*/
|
|
89
|
-
function prettyPrintError({ error, log, host, isDest }, showAllMessages = true) {
|
|
82
|
+
export function prettyPrintError({ error, log, host, isDest }, showAllMessages = true) {
|
|
90
83
|
if (error) {
|
|
91
84
|
if (showAllMessages) {
|
|
92
85
|
log.error(error.message?.value || 'An unknown error occurred.');
|
|
@@ -110,7 +103,7 @@ function prettyPrintError({ error, log, host, isDest }, showAllMessages = true)
|
|
|
110
103
|
* @param ms time in ms
|
|
111
104
|
* @returns user friendly string
|
|
112
105
|
*/
|
|
113
|
-
const prettyPrintTimeInMs = (ms) => {
|
|
106
|
+
export const prettyPrintTimeInMs = (ms) => {
|
|
114
107
|
const min = Math.trunc(ms / 60 / 1000);
|
|
115
108
|
if (min > 1) {
|
|
116
109
|
return `${min} minutes`;
|
|
@@ -122,7 +115,6 @@ const prettyPrintTimeInMs = (ms) => {
|
|
|
122
115
|
return `${ms / 1000} seconds`;
|
|
123
116
|
}
|
|
124
117
|
};
|
|
125
|
-
exports.prettyPrintTimeInMs = prettyPrintTimeInMs;
|
|
126
118
|
/**
|
|
127
119
|
* Log errors more user friendly if it is a standard Gateway error.
|
|
128
120
|
*
|
|
@@ -132,9 +124,9 @@ exports.prettyPrintTimeInMs = prettyPrintTimeInMs;
|
|
|
132
124
|
* @param e.host optional hostname
|
|
133
125
|
* @param e.isDest optional destination flag
|
|
134
126
|
*/
|
|
135
|
-
function logError({ error, host, log, isDest }) {
|
|
127
|
+
export function logError({ error, host, log, isDest }) {
|
|
136
128
|
log.error(error.message);
|
|
137
|
-
if (
|
|
129
|
+
if (isAxiosError(error) && error.response?.data) {
|
|
138
130
|
const errorMessage = getErrorMessageFromString(error.response?.data);
|
|
139
131
|
if (errorMessage) {
|
|
140
132
|
prettyPrintError({ error: errorMessage, log: log, host: host, isDest: isDest });
|
|
@@ -150,7 +142,7 @@ function logError({ error, host, log, isDest }) {
|
|
|
150
142
|
* @param data string value
|
|
151
143
|
* @returns undefined if an error object is not found or populated ErrorMessage object
|
|
152
144
|
*/
|
|
153
|
-
function getErrorMessageFromString(data) {
|
|
145
|
+
export function getErrorMessageFromString(data) {
|
|
154
146
|
let error;
|
|
155
147
|
if (typeof data === 'string') {
|
|
156
148
|
try {
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Captures the data structure in the XML response of calling ADT discovery service
|
|
4
3
|
*/
|
|
5
|
-
|
|
6
|
-
exports.LocalPackageText = exports.TenantType = void 0;
|
|
7
|
-
var TenantType;
|
|
4
|
+
export var TenantType;
|
|
8
5
|
(function (TenantType) {
|
|
9
6
|
TenantType["SAP"] = "SAP";
|
|
10
7
|
TenantType["Customer"] = "CUSTOMER";
|
|
11
|
-
})(TenantType || (
|
|
8
|
+
})(TenantType || (TenantType = {}));
|
|
12
9
|
// In XML response of ADT TransportChecks service,
|
|
13
10
|
// the <DLVUNIT/> element contain text that indicate it is local package.
|
|
14
11
|
// No transport number required for deploying to local pacakge.
|
|
15
|
-
|
|
12
|
+
export const LocalPackageText = ['LOCAL_PACKAGE', 'LOCAL', 'ZLOCAL'];
|
|
16
13
|
//# sourceMappingURL=adt-types.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './adt-types';
|
|
2
|
-
export * from './external-services';
|
|
1
|
+
export * from './adt-types.js';
|
|
2
|
+
export * from './external-services.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/abap/types/index.js
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./adt-types"), exports);
|
|
18
|
-
__exportStar(require("./external-services"), exports);
|
|
1
|
+
export * from './adt-types.js';
|
|
2
|
+
export * from './external-services.js';
|
|
19
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const odata_service_1 = require("../base/odata-service");
|
|
6
|
-
const odata_request_error_1 = require("../base/odata-request-error");
|
|
7
|
-
exports.abapUrlReplaceMap = new Map([
|
|
1
|
+
import { logError, getErrorMessageFromString, prettyPrintError, prettyPrintMessage } from './message.js';
|
|
2
|
+
import { ODataService } from '../base/odata-service.js';
|
|
3
|
+
import { isAxiosError } from '../base/odata-request-error.js';
|
|
4
|
+
export const abapUrlReplaceMap = new Map([
|
|
8
5
|
[/\.abap\./, '.abap-web.'],
|
|
9
6
|
[/-api\.s4hana\.ondemand\.com/, '.s4hana.ondemand.com'],
|
|
10
7
|
[/-api\.saps4hanacloud\.cn/, '.saps4hanacloud.cn'],
|
|
@@ -30,7 +27,7 @@ function encodeXmlValue(xmlValue) {
|
|
|
30
27
|
/**
|
|
31
28
|
* Extension of the generic OData client simplifying the consumption of the UI5 repository service
|
|
32
29
|
*/
|
|
33
|
-
class Ui5AbapRepositoryService extends
|
|
30
|
+
export class Ui5AbapRepositoryService extends ODataService {
|
|
34
31
|
static PATH = '/sap/opu/odata/UI5/ABAP_REPOSITORY_SRV';
|
|
35
32
|
publicUrl;
|
|
36
33
|
isDest;
|
|
@@ -61,7 +58,7 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
61
58
|
}
|
|
62
59
|
catch (error) {
|
|
63
60
|
this.log.debug(`Retrieving application ${app} from ${Ui5AbapRepositoryService.PATH}, ${error}`);
|
|
64
|
-
if (
|
|
61
|
+
if (isAxiosError(error) && error.response?.status === 404) {
|
|
65
62
|
return undefined;
|
|
66
63
|
}
|
|
67
64
|
throw error;
|
|
@@ -105,7 +102,7 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
105
102
|
}
|
|
106
103
|
catch (error) {
|
|
107
104
|
this.log.debug(`Retrieving application ${app}, ${error}`);
|
|
108
|
-
if (
|
|
105
|
+
if (isAxiosError(error) && error.response?.status === 404) {
|
|
109
106
|
return undefined;
|
|
110
107
|
}
|
|
111
108
|
throw error;
|
|
@@ -131,7 +128,7 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
131
128
|
const response = await this.updateRepoRequest(!!info, bsp.name, payload, config);
|
|
132
129
|
// An app can be successfully deployed after a timeout exception, no value in showing exception headers
|
|
133
130
|
if (response?.headers?.['sap-message']) {
|
|
134
|
-
|
|
131
|
+
prettyPrintMessage({
|
|
135
132
|
msg: response.headers['sap-message'],
|
|
136
133
|
log: this.log,
|
|
137
134
|
host: frontendUrl,
|
|
@@ -148,8 +145,8 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
148
145
|
}
|
|
149
146
|
else {
|
|
150
147
|
// Test mode returns a HTTP response code of 403 so we dont want to show all error messages
|
|
151
|
-
|
|
152
|
-
error:
|
|
148
|
+
prettyPrintError({
|
|
149
|
+
error: getErrorMessageFromString(response?.data),
|
|
153
150
|
log: this.log,
|
|
154
151
|
host: frontendUrl,
|
|
155
152
|
isDest: this.isDest
|
|
@@ -161,7 +158,7 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
161
158
|
return response;
|
|
162
159
|
}
|
|
163
160
|
catch (error) {
|
|
164
|
-
|
|
161
|
+
logError({ error, host: frontendUrl, log: this.log, isDest: this.isDest });
|
|
165
162
|
throw error;
|
|
166
163
|
}
|
|
167
164
|
}
|
|
@@ -181,7 +178,7 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
181
178
|
if (info) {
|
|
182
179
|
const response = await this.deleteRepoRequest(bsp.name, config);
|
|
183
180
|
if (response?.headers?.['sap-message']) {
|
|
184
|
-
|
|
181
|
+
prettyPrintMessage({
|
|
185
182
|
msg: response.headers['sap-message'],
|
|
186
183
|
log: this.log,
|
|
187
184
|
host,
|
|
@@ -196,7 +193,7 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
196
193
|
}
|
|
197
194
|
}
|
|
198
195
|
catch (error) {
|
|
199
|
-
|
|
196
|
+
logError({ error, host, log: this.log });
|
|
200
197
|
throw error;
|
|
201
198
|
}
|
|
202
199
|
}
|
|
@@ -207,7 +204,7 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
207
204
|
*/
|
|
208
205
|
getAbapFrontendUrl() {
|
|
209
206
|
const url = new URL(this.publicUrl);
|
|
210
|
-
|
|
207
|
+
abapUrlReplaceMap.forEach((value, key) => {
|
|
211
208
|
url.hostname = url.hostname.replace(key, value);
|
|
212
209
|
});
|
|
213
210
|
return `${url.protocol}//${url.host}`;
|
|
@@ -363,5 +360,4 @@ class Ui5AbapRepositoryService extends odata_service_1.ODataService {
|
|
|
363
360
|
}
|
|
364
361
|
}
|
|
365
362
|
}
|
|
366
|
-
exports.Ui5AbapRepositoryService = Ui5AbapRepositoryService;
|
|
367
363
|
//# sourceMappingURL=ui5-abap-repository-service.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Logger } from '@sap-ux/logger';
|
|
2
2
|
import { Axios } from 'axios';
|
|
3
|
-
import type { Service } from 'base/service-provider';
|
|
3
|
+
import type { Service } from '../base/service-provider.js';
|
|
4
4
|
/**
|
|
5
5
|
* The service implements a request for getting the UI5 framework version on ABAP system
|
|
6
6
|
* with the bootstrap api.
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UI5VersionService = void 0;
|
|
4
|
-
const axios_1 = require("axios");
|
|
1
|
+
import { Axios } from 'axios';
|
|
5
2
|
/**
|
|
6
3
|
* The service implements a request for getting the UI5 framework version on ABAP system
|
|
7
4
|
* with the bootstrap api.
|
|
8
5
|
*/
|
|
9
|
-
class UI5VersionService extends
|
|
6
|
+
export class UI5VersionService extends Axios {
|
|
10
7
|
/**
|
|
11
8
|
* The base endpoint path used by this service for requests.
|
|
12
9
|
*/
|
|
@@ -40,5 +37,4 @@ class UI5VersionService extends axios_1.Axios {
|
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
|
-
exports.UI5VersionService = UI5VersionService;
|
|
44
40
|
//# sourceMappingURL=ui5-version-service.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AxiosResponse } from 'axios';
|
|
2
|
-
import type { ServiceProvider } from '../base/service-provider';
|
|
2
|
+
import type { ServiceProvider } from '../base/service-provider.js';
|
|
3
3
|
export declare enum CSRF {
|
|
4
4
|
RequestHeaderName = "X-Csrf-Token",
|
|
5
5
|
RequestHeaderValue = "Fetch",
|
package/dist/auth/connection.js
CHANGED
|
@@ -1,24 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Cookies = exports.defaultTimeout = exports.CSRF = void 0;
|
|
7
|
-
exports.attachConnectionHandler = attachConnectionHandler;
|
|
8
|
-
const axios_1 = require("axios");
|
|
9
|
-
const detect_content_type_1 = __importDefault(require("detect-content-type"));
|
|
10
|
-
var CSRF;
|
|
1
|
+
import { AxiosHeaders } from 'axios';
|
|
2
|
+
import detectContentType from 'detect-content-type';
|
|
3
|
+
export var CSRF;
|
|
11
4
|
(function (CSRF) {
|
|
12
5
|
CSRF["RequestHeaderName"] = "X-Csrf-Token";
|
|
13
6
|
CSRF["RequestHeaderValue"] = "Fetch";
|
|
14
7
|
CSRF["ResponseHeaderName"] = "x-csrf-token";
|
|
15
|
-
})(CSRF || (
|
|
8
|
+
})(CSRF || (CSRF = {}));
|
|
16
9
|
/** Default connection timeout (milliseconds) */
|
|
17
|
-
|
|
10
|
+
export const defaultTimeout = 60 * 1000; // 1 minute
|
|
18
11
|
/**
|
|
19
12
|
* Helper class for managing cookies.
|
|
20
13
|
*/
|
|
21
|
-
class Cookies {
|
|
14
|
+
export class Cookies {
|
|
22
15
|
cookies = {};
|
|
23
16
|
/**
|
|
24
17
|
* Update the cookies based on 'set-cookie' headers of a response.
|
|
@@ -63,7 +56,6 @@ class Cookies {
|
|
|
63
56
|
return cookies.join('; ');
|
|
64
57
|
}
|
|
65
58
|
}
|
|
66
|
-
exports.Cookies = Cookies;
|
|
67
59
|
/**
|
|
68
60
|
* Check the response if SAML is required.
|
|
69
61
|
*
|
|
@@ -122,7 +114,7 @@ function getContentType(contentTypeHeader, responseData) {
|
|
|
122
114
|
}
|
|
123
115
|
else if (typeof responseData === 'string') {
|
|
124
116
|
// Try to infer it from the data
|
|
125
|
-
return (
|
|
117
|
+
return detectContentType(Buffer.from(responseData))?.toLowerCase() ?? '';
|
|
126
118
|
}
|
|
127
119
|
else {
|
|
128
120
|
return '';
|
|
@@ -133,10 +125,10 @@ function getContentType(contentTypeHeader, responseData) {
|
|
|
133
125
|
*
|
|
134
126
|
* @param provider any service provider
|
|
135
127
|
*/
|
|
136
|
-
function attachConnectionHandler(provider) {
|
|
128
|
+
export function attachConnectionHandler(provider) {
|
|
137
129
|
// fetch xsrf token with the first request
|
|
138
130
|
const oneTimeReqInterceptorId = provider.interceptors.request.use((request) => {
|
|
139
|
-
request.headers = request.headers ?? new
|
|
131
|
+
request.headers = request.headers ?? new AxiosHeaders();
|
|
140
132
|
request.headers[CSRF.RequestHeaderName] = CSRF.RequestHeaderValue;
|
|
141
133
|
return request;
|
|
142
134
|
});
|
|
@@ -173,7 +165,7 @@ function attachConnectionHandler(provider) {
|
|
|
173
165
|
});
|
|
174
166
|
// always add cookies to outgoing requests
|
|
175
167
|
provider.interceptors.request.use((request) => {
|
|
176
|
-
request.headers = request.headers ?? new
|
|
168
|
+
request.headers = request.headers ?? new AxiosHeaders();
|
|
177
169
|
request.headers.cookie = provider.cookies.toString();
|
|
178
170
|
return request;
|
|
179
171
|
});
|