@computec/uibase 1.0.8 → 1.0.10

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.
Files changed (134) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +4 -1
  4. package/dist-amd/communication/ConnectionOptions.d.ts +48 -0
  5. package/dist-amd/communication/ConnectionOptions.d.ts.map +1 -0
  6. package/dist-amd/communication/ConnectionOptions.js +11 -0
  7. package/dist-amd/communication/HttpClient.d.ts +249 -0
  8. package/dist-amd/communication/HttpClient.d.ts.map +1 -0
  9. package/dist-amd/communication/HttpClient.js +362 -0
  10. package/dist-amd/communication/HttpClientCacheOptions.d.ts +9 -0
  11. package/dist-amd/communication/HttpClientCacheOptions.d.ts.map +1 -0
  12. package/dist-amd/communication/HttpClientCacheOptions.js +27 -0
  13. package/dist-amd/communication/IBaseHttpClientOptions.d.ts +18 -0
  14. package/dist-amd/communication/IBaseHttpClientOptions.d.ts.map +1 -0
  15. package/dist-amd/communication/IBaseHttpClientOptions.js +4 -0
  16. package/dist-amd/communication/IConnectionInfo.d.ts +17 -0
  17. package/dist-amd/communication/IConnectionInfo.d.ts.map +1 -0
  18. package/dist-amd/communication/IConnectionInfo.js +4 -0
  19. package/dist-amd/communication/ISignalRHubClient.d.ts +47 -0
  20. package/dist-amd/communication/ISignalRHubClient.d.ts.map +1 -0
  21. package/dist-amd/communication/ISignalRHubClient.js +4 -0
  22. package/dist-amd/communication/ISignalRMessage.d.ts +8 -0
  23. package/dist-amd/communication/ISignalRMessage.d.ts.map +1 -0
  24. package/dist-amd/communication/ISignalRMessage.js +4 -0
  25. package/dist-amd/communication/SignalRHubClient.d.ts +26 -0
  26. package/dist-amd/communication/SignalRHubClient.d.ts.map +1 -0
  27. package/dist-amd/communication/SignalRHubClient.js +135 -0
  28. package/dist-amd/communication/SignalRMessage.d.ts +10 -0
  29. package/dist-amd/communication/SignalRMessage.d.ts.map +1 -0
  30. package/dist-amd/communication/SignalRMessage.js +11 -0
  31. package/dist-amd/communication/SubscribeProperties.d.ts +17 -0
  32. package/dist-amd/communication/SubscribeProperties.d.ts.map +1 -0
  33. package/dist-amd/communication/SubscribeProperties.js +27 -0
  34. package/dist-amd/helpers/ErrorHelper.d.ts +15 -0
  35. package/dist-amd/helpers/ErrorHelper.d.ts.map +1 -0
  36. package/dist-amd/helpers/ErrorHelper.js +51 -0
  37. package/dist-amd/helpers/HttpClientHelper.d.ts +42 -0
  38. package/dist-amd/helpers/HttpClientHelper.d.ts.map +1 -0
  39. package/dist-amd/helpers/HttpClientHelper.js +188 -0
  40. package/dist-amd/helpers/NavigationHelper.d.ts +52 -0
  41. package/dist-amd/helpers/NavigationHelper.d.ts.map +1 -0
  42. package/dist-amd/helpers/NavigationHelper.js +73 -0
  43. package/dist-amd/helpers/WebClientNavigationHelper.d.ts +52 -0
  44. package/dist-amd/helpers/WebClientNavigationHelper.d.ts.map +1 -0
  45. package/dist-amd/helpers/WebClientNavigationHelper.js +73 -0
  46. package/dist-amd/index.d.ts +37 -0
  47. package/dist-amd/index.d.ts.map +1 -0
  48. package/dist-amd/index.js +56 -0
  49. package/dist-amd/models/AppEngineConfiguration.d.ts +26 -0
  50. package/dist-amd/models/AppEngineConfiguration.d.ts.map +1 -0
  51. package/dist-amd/models/AppEngineConfiguration.js +11 -0
  52. package/dist-amd/models/AppEngineException.d.ts +21 -0
  53. package/dist-amd/models/AppEngineException.d.ts.map +1 -0
  54. package/dist-amd/models/AppEngineException.js +46 -0
  55. package/dist-amd/models/BaseBusinessObject.d.ts +157 -0
  56. package/dist-amd/models/BaseBusinessObject.d.ts.map +1 -0
  57. package/dist-amd/models/BaseBusinessObject.js +189 -0
  58. package/dist-amd/models/BaseError.d.ts +51 -0
  59. package/dist-amd/models/BaseError.d.ts.map +1 -0
  60. package/dist-amd/models/BaseError.js +55 -0
  61. package/dist-amd/models/CompanyInfo.d.ts +11 -0
  62. package/dist-amd/models/CompanyInfo.d.ts.map +1 -0
  63. package/dist-amd/models/CompanyInfo.js +24 -0
  64. package/dist-amd/models/DocumentedException.d.ts +22 -0
  65. package/dist-amd/models/DocumentedException.d.ts.map +1 -0
  66. package/dist-amd/models/DocumentedException.js +50 -0
  67. package/dist-amd/models/HttpResponse.d.ts +7 -0
  68. package/dist-amd/models/HttpResponse.d.ts.map +1 -0
  69. package/dist-amd/models/HttpResponse.js +11 -0
  70. package/dist-amd/models/IOdataResponse.d.ts +6 -0
  71. package/dist-amd/models/IOdataResponse.d.ts.map +1 -0
  72. package/dist-amd/models/IOdataResponse.js +4 -0
  73. package/dist-amd/models/LocalStorage.d.ts +9 -0
  74. package/dist-amd/models/LocalStorage.d.ts.map +1 -0
  75. package/dist-amd/models/LocalStorage.js +55 -0
  76. package/dist-amd/models/OdataError.d.ts +56 -0
  77. package/dist-amd/models/OdataError.d.ts.map +1 -0
  78. package/dist-amd/models/OdataError.js +90 -0
  79. package/dist-amd/models/ProblemDetails.d.ts +23 -0
  80. package/dist-amd/models/ProblemDetails.d.ts.map +1 -0
  81. package/dist-amd/models/ProblemDetails.js +39 -0
  82. package/dist-amd/models/Session.d.ts +19 -0
  83. package/dist-amd/models/Session.d.ts.map +1 -0
  84. package/dist-amd/models/Session.js +11 -0
  85. package/dist-amd/models/UserInfo.d.ts +33 -0
  86. package/dist-amd/models/UserInfo.d.ts.map +1 -0
  87. package/dist-amd/models/UserInfo.js +11 -0
  88. package/dist-amd/models/ValidationProblemDetails.d.ts +19 -0
  89. package/dist-amd/models/ValidationProblemDetails.d.ts.map +1 -0
  90. package/dist-amd/models/ValidationProblemDetails.js +43 -0
  91. package/dist-amd/models/Version.d.ts +35 -0
  92. package/dist-amd/models/Version.d.ts.map +1 -0
  93. package/dist-amd/models/Version.js +187 -0
  94. package/dist-amd/models/enums/HeadersContentTypeEnum.d.ts +15 -0
  95. package/dist-amd/models/enums/HeadersContentTypeEnum.d.ts.map +1 -0
  96. package/dist-amd/models/enums/HeadersContentTypeEnum.js +19 -0
  97. package/dist-amd/models/enums/StorageTypeEnum.d.ts +5 -0
  98. package/dist-amd/models/enums/StorageTypeEnum.d.ts.map +1 -0
  99. package/dist-amd/models/enums/StorageTypeEnum.js +10 -0
  100. package/dist-amd/models/interfaces/IAppEngineConfiguration.d.ts +24 -0
  101. package/dist-amd/models/interfaces/IAppEngineConfiguration.d.ts.map +1 -0
  102. package/dist-amd/models/interfaces/IAppEngineConfiguration.js +4 -0
  103. package/dist-amd/models/interfaces/IAppEngineException.d.ts +57 -0
  104. package/dist-amd/models/interfaces/IAppEngineException.d.ts.map +1 -0
  105. package/dist-amd/models/interfaces/IAppEngineException.js +4 -0
  106. package/dist-amd/models/interfaces/IDocumentedException.d.ts +60 -0
  107. package/dist-amd/models/interfaces/IDocumentedException.d.ts.map +1 -0
  108. package/dist-amd/models/interfaces/IDocumentedException.js +4 -0
  109. package/dist-amd/models/interfaces/IHttpResponse.d.ts +5 -0
  110. package/dist-amd/models/interfaces/IHttpResponse.d.ts.map +1 -0
  111. package/dist-amd/models/interfaces/IHttpResponse.js +4 -0
  112. package/dist-amd/models/interfaces/IOdataError.d.ts +182 -0
  113. package/dist-amd/models/interfaces/IOdataError.d.ts.map +1 -0
  114. package/dist-amd/models/interfaces/IOdataError.js +4 -0
  115. package/dist-amd/models/interfaces/IProblemDetails.d.ts +93 -0
  116. package/dist-amd/models/interfaces/IProblemDetails.d.ts.map +1 -0
  117. package/dist-amd/models/interfaces/IProblemDetails.js +4 -0
  118. package/dist-amd/models/interfaces/IValidationProblemDetails.d.ts +82 -0
  119. package/dist-amd/models/interfaces/IValidationProblemDetails.d.ts.map +1 -0
  120. package/dist-amd/models/interfaces/IValidationProblemDetails.js +4 -0
  121. package/dist-ui5/resources/computec/appengine/uibase/.library +1 -1
  122. package/dist-ui5/resources/computec/appengine/uibase/helpers/WebClientNavigationHelper-dbg.js +100 -0
  123. package/dist-ui5/resources/computec/appengine/uibase/helpers/WebClientNavigationHelper.js +2 -0
  124. package/dist-ui5/resources/computec/appengine/uibase/helpers/WebClientNavigationHelper.js.map +1 -0
  125. package/dist-ui5/resources/computec/appengine/uibase/index-dbg.js +3 -1
  126. package/dist-ui5/resources/computec/appengine/uibase/index.js +1 -1
  127. package/dist-ui5/resources/computec/appengine/uibase/index.js.map +1 -1
  128. package/dist-ui5/resources/computec/appengine/uibase/library-dbg.js +1 -1
  129. package/dist-ui5/resources/computec/appengine/uibase/library-preload.js +6 -3
  130. package/dist-ui5/resources/computec/appengine/uibase/library-preload.js.map +1 -1
  131. package/dist-ui5/resources/computec/appengine/uibase/library.js +1 -1
  132. package/dist-ui5/resources/computec/appengine/uibase/library.js.map +1 -1
  133. package/dist-ui5/resources/computec/appengine/uibase/manifest.json +1 -1
  134. package/package.json +2 -1
@@ -0,0 +1,135 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ define(["require", "exports", "../helpers/ErrorHelper"], function (require, exports, ErrorHelper_1) {
14
+ "use strict";
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ ErrorHelper_1 = __importDefault(ErrorHelper_1);
17
+ class SignalRHubClient {
18
+ get promise() {
19
+ return this.initialized;
20
+ }
21
+ get autoConnectPromise() {
22
+ return this.initialized;
23
+ }
24
+ get connection() {
25
+ return this._connection;
26
+ }
27
+ constructor(options) {
28
+ this.off = (methodName) => this._connection.off(methodName);
29
+ options = Object.assign({ useSharedConnection: false, rootPath: `${window.location.origin}/tnc`, autoConnect: true }, options);
30
+ this._globalConnections = [];
31
+ this.options = options;
32
+ this._connection = this._getConnection(this.options);
33
+ if (this.options.autoConnect) {
34
+ this.initialized = this.connect();
35
+ }
36
+ return this;
37
+ }
38
+ connect() {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ return yield this.connection.start();
41
+ });
42
+ }
43
+ disconnect() {
44
+ this.connection.stop();
45
+ return;
46
+ }
47
+ subscribe(options) {
48
+ return this._subscribe(options);
49
+ }
50
+ on(methodName, callback) {
51
+ this.connection.on(methodName, callback);
52
+ }
53
+ _subscribe(options) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ try {
56
+ yield this.initialized;
57
+ const args = options.getAttributes();
58
+ yield this.connection.invoke(options.Name, ...args);
59
+ }
60
+ catch (error) {
61
+ const err = ErrorHelper_1.default.getError(error);
62
+ console.error(`${err.name}:${err.message}`);
63
+ console.error(err.stack);
64
+ throw new Error(`Error while subscribing to function: ${err.name} ${err.message}`);
65
+ }
66
+ });
67
+ }
68
+ _addQueries(options) {
69
+ const queries = [];
70
+ if (options.companyId)
71
+ queries.push(`CompanyId=${options.companyId}`);
72
+ if (options.companyApiKey) {
73
+ queries.push(`ApiKey=${options.companyApiKey}`);
74
+ }
75
+ if (queries.length == 0)
76
+ return "";
77
+ return "?" + queries.join("&");
78
+ }
79
+ _initNewConnection(options) {
80
+ var _a;
81
+ let connection;
82
+ let hubConnectionBuilder = new signalR.HubConnectionBuilder();
83
+ if (options.rootPath) {
84
+ const args = `${(_a = options.companyId) !== null && _a !== void 0 ? _a : ""} `;
85
+ hubConnectionBuilder = hubConnectionBuilder.withUrl(`${options.rootPath}${this._addQueries(options)}`);
86
+ }
87
+ hubConnectionBuilder = this._setAutoReconnect(hubConnectionBuilder, options);
88
+ if (options.keepAliveIntervalInMilliseconds && options.keepAliveIntervalInMilliseconds > 0) {
89
+ hubConnectionBuilder = hubConnectionBuilder.withKeepAliveInterval(options.keepAliveIntervalInMilliseconds);
90
+ }
91
+ if (options.serverTimeoutInMilliseconds && options.serverTimeoutInMilliseconds > 0) {
92
+ hubConnectionBuilder = hubConnectionBuilder.withServerTimeout(options.serverTimeoutInMilliseconds);
93
+ }
94
+ connection = hubConnectionBuilder.build();
95
+ return connection;
96
+ }
97
+ _setAutoReconnect(hubConnectionBuilder, options) {
98
+ if (!options.autoReconnect) {
99
+ return hubConnectionBuilder;
100
+ }
101
+ if (options.autoReconnectPolicy) {
102
+ return hubConnectionBuilder.withAutomaticReconnect(options.autoReconnectPolicy);
103
+ }
104
+ if (typeof options.autoReconnectInterval === "number") {
105
+ return hubConnectionBuilder.withAutomaticReconnect([options.autoReconnectInterval]);
106
+ }
107
+ if (Array.isArray(options.autoReconnectInterval) && options.autoReconnectInterval.length > 0) {
108
+ return hubConnectionBuilder.withAutomaticReconnect(options.autoReconnectInterval);
109
+ }
110
+ return hubConnectionBuilder.withAutomaticReconnect();
111
+ }
112
+ _getSharedConnection(options) {
113
+ let existingConnectionInfo = this._globalConnections.find((ci) => ci.path === options.rootPath);
114
+ let connection;
115
+ if (!existingConnectionInfo) {
116
+ connection = this._initNewConnection(this.options);
117
+ existingConnectionInfo = {
118
+ path: options.rootPath,
119
+ connection: connection,
120
+ };
121
+ this._globalConnections.push(existingConnectionInfo);
122
+ }
123
+ return existingConnectionInfo === null || existingConnectionInfo === void 0 ? void 0 : existingConnectionInfo.connection;
124
+ }
125
+ _getConnection(options) {
126
+ if (this.options.useSharedConnection) {
127
+ return this._getSharedConnection(options);
128
+ }
129
+ else {
130
+ return this._initNewConnection(this.options);
131
+ }
132
+ }
133
+ }
134
+ exports.default = SignalRHubClient;
135
+ });
@@ -0,0 +1,10 @@
1
+ import BaseBusinessObject from "../models/BaseBusinessObject";
2
+ import ISignalRMessage from "./ISignalRMessage";
3
+ export default class SignalRMessage extends BaseBusinessObject implements ISignalRMessage {
4
+ CompanyId: string;
5
+ EventType: string;
6
+ FormType: string;
7
+ ObjectKey: string;
8
+ UserName: string;
9
+ }
10
+ //# sourceMappingURL=SignalRMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignalRMessage.d.ts","sourceRoot":"","sources":["../../src/communication/SignalRMessage.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,8BAA8B,CAAC;AAC9D,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,kBAAmB,YAAW,eAAe;IACxF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,11 @@
1
+ var __importDefault = (this && this.__importDefault) || function (mod) {
2
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
+ };
4
+ define(["require", "exports", "../models/BaseBusinessObject"], function (require, exports, BaseBusinessObject_1) {
5
+ "use strict";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ BaseBusinessObject_1 = __importDefault(BaseBusinessObject_1);
8
+ class SignalRMessage extends BaseBusinessObject_1.default {
9
+ }
10
+ exports.default = SignalRMessage;
11
+ });
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Represents properties used for subscribing to a SignalR hub or similar event source.
3
+ */
4
+ export declare class SubscribeProperties {
5
+ Name: string;
6
+ /**
7
+ * Creates an instance of SubscribeProperties.
8
+ * @param {string} Name - The name of the subscription property.
9
+ */
10
+ constructor(Name: string);
11
+ /**
12
+ * Returns all attributes of the instance except the 'Name' property.
13
+ * @returns {any[]} An array of attribute values excluding 'Name'.
14
+ */
15
+ getAttributes(): any[];
16
+ }
17
+ //# sourceMappingURL=SubscribeProperties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscribeProperties.d.ts","sourceRoot":"","sources":["../../src/communication/SubscribeProperties.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,mBAAmB;IAKZ,IAAI,EAAE,MAAM;IAJ/B;;;OAGG;gBACgB,IAAI,EAAE,MAAM;IAE/B;;;OAGG;IACH,aAAa;CAKb"}
@@ -0,0 +1,27 @@
1
+ define(["require", "exports"], function (require, exports) {
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SubscribeProperties = void 0;
5
+ /**
6
+ * Represents properties used for subscribing to a SignalR hub or similar event source.
7
+ */
8
+ class SubscribeProperties {
9
+ /**
10
+ * Creates an instance of SubscribeProperties.
11
+ * @param {string} Name - The name of the subscription property.
12
+ */
13
+ constructor(Name) {
14
+ this.Name = Name;
15
+ }
16
+ /**
17
+ * Returns all attributes of the instance except the 'Name' property.
18
+ * @returns {any[]} An array of attribute values excluding 'Name'.
19
+ */
20
+ getAttributes() {
21
+ const idx = Object.keys(this).indexOf("Name");
22
+ const args = [...Object.values(this).slice(0, idx), ...Object.values(this).slice(idx + 1)];
23
+ return args;
24
+ }
25
+ }
26
+ exports.SubscribeProperties = SubscribeProperties;
27
+ });
@@ -0,0 +1,15 @@
1
+ export default class ErrorHelper {
2
+ /**
3
+ * @description Helper method that try to return Error type
4
+ * @returns
5
+ */
6
+ static getError(error: any): Error;
7
+ /**
8
+ * Check if the error is an AppEngineException
9
+ * @deprecated **Use AppEngineException.is instead**
10
+ * @param error any object
11
+ * @returns boolean
12
+ */
13
+ static isAppEngineException(error: any): error is import("../index").IAppEngineException;
14
+ }
15
+ //# sourceMappingURL=ErrorHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/ErrorHelper.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC/B;;;OAGG;WACW,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK;IAuBzC;;;;;OAKG;WACW,oBAAoB,CAAC,KAAK,EAAE,GAAG;CAG7C"}
@@ -0,0 +1,51 @@
1
+ var __importDefault = (this && this.__importDefault) || function (mod) {
2
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
+ };
4
+ define(["require", "exports", "../models/ValidationProblemDetails", "../models/AppEngineException", "../models/ProblemDetails", "../models/OdataError", "../models/DocumentedException"], function (require, exports, ValidationProblemDetails_1, AppEngineException_1, ProblemDetails_1, OdataError_1, DocumentedException_1) {
5
+ "use strict";
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ ValidationProblemDetails_1 = __importDefault(ValidationProblemDetails_1);
8
+ AppEngineException_1 = __importDefault(AppEngineException_1);
9
+ ProblemDetails_1 = __importDefault(ProblemDetails_1);
10
+ OdataError_1 = __importDefault(OdataError_1);
11
+ DocumentedException_1 = __importDefault(DocumentedException_1);
12
+ class ErrorHelper {
13
+ /**
14
+ * @description Helper method that try to return Error type
15
+ * @returns
16
+ */
17
+ static getError(error) {
18
+ var _a;
19
+ switch (true) {
20
+ case error instanceof Error:
21
+ return error;
22
+ case typeof error === "string":
23
+ return new Error(error);
24
+ case OdataError_1.default.is(error):
25
+ return OdataError_1.default.create(error).error;
26
+ case ValidationProblemDetails_1.default.is(error):
27
+ return ValidationProblemDetails_1.default.create(error).error;
28
+ case DocumentedException_1.default.is(error):
29
+ return new DocumentedException_1.default(error).error;
30
+ case ProblemDetails_1.default.is(error):
31
+ return ProblemDetails_1.default.create(error).error;
32
+ case AppEngineException_1.default.is(error):
33
+ return new AppEngineException_1.default(error).error;
34
+ case (_a = error === null || error === void 0 ? void 0 : error.error) === null || _a === void 0 ? void 0 : _a.message:
35
+ return new Error(error.error.message);
36
+ default:
37
+ return error;
38
+ }
39
+ }
40
+ /**
41
+ * Check if the error is an AppEngineException
42
+ * @deprecated **Use AppEngineException.is instead**
43
+ * @param error any object
44
+ * @returns boolean
45
+ */
46
+ static isAppEngineException(error) {
47
+ return AppEngineException_1.default.is(error);
48
+ }
49
+ }
50
+ exports.default = ErrorHelper;
51
+ });
@@ -0,0 +1,42 @@
1
+ import { IBasicHttpRequest } from "../communication/IBaseHttpClientOptions";
2
+ export default class HttpClientHelper {
3
+ static readonly FULL_URL_PATTERN: RegExp;
4
+ static readonly NOT_AUTHENTICATED_ERROR_NAME = "RESPONSE_NOT_AUTHENTICATED";
5
+ /**
6
+ * @throws Error if response is not ok with message based on status code or response
7
+ */
8
+ static validateResponse(response: Response, restOptions: IBasicHttpRequest): Promise<boolean>;
9
+ /**
10
+ * @description Check if headers is an array of [string, string]
11
+ */
12
+ static isHeadersArrayType(headers: HeadersInit): headers is [string, string][];
13
+ /**
14
+ * @description Fetch data based on response content type
15
+ * @param response from fetch
16
+ * @returns
17
+ */
18
+ static fetchData(response: Response): Promise<any>;
19
+ /**
20
+ * @description prepares Url for fetch. If full url is provided, it will return it as is, otherwise it will append it to the current origin
21
+ * @param url
22
+ * @returns
23
+ */
24
+ static getFullUrl(url?: string): string;
25
+ /**
26
+ * @description Check if error is not authenticated
27
+ * @param error
28
+ * @returns
29
+ */
30
+ static isNotAuthenticated: (error: Error) => boolean;
31
+ private static _validateResponseType;
32
+ private static _throwErrorBasedOnResponse;
33
+ private static _getAcceptedType;
34
+ private static _isJsonType;
35
+ private static _isFileType;
36
+ private static _isTextType;
37
+ private static _isNullType;
38
+ private static _fetchJsonData;
39
+ private static _fetchFileData;
40
+ private static _fetchTextData;
41
+ }
42
+ //# sourceMappingURL=HttpClientHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpClientHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/HttpClientHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAI5E,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACpC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,SAAmB;IACnD,MAAM,CAAC,QAAQ,CAAC,4BAA4B,gCAAgC;IAC5E;;OAEG;WACiB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB;IASvF;;OAEG;WACW,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAiBrF;;;;OAIG;WACW,SAAS,CAAC,QAAQ,EAAE,QAAQ;IAO1C;;;;OAIG;WACW,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM;IAMrC;;;;OAIG;IACH,OAAc,kBAAkB,GAAI,OAAO,KAAK,aACc;IAG9D,OAAO,CAAC,MAAM,CAAC,qBAAqB;mBAqBf,0BAA0B;IAwB/C,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAU/B,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,WAAW;IAoB1B,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,WAAW;mBAIL,cAAc;mBASd,cAAc;mBASd,cAAc;CASnC"}
@@ -0,0 +1,188 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ define(["require", "exports", "./ErrorHelper", "../models/enums/HeadersContentTypeEnum"], function (require, exports, ErrorHelper_1, HeadersContentTypeEnum_1) {
14
+ "use strict";
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ ErrorHelper_1 = __importDefault(ErrorHelper_1);
17
+ HeadersContentTypeEnum_1 = __importDefault(HeadersContentTypeEnum_1);
18
+ class HttpClientHelper {
19
+ /**
20
+ * @throws Error if response is not ok with message based on status code or response
21
+ */
22
+ static validateResponse(response, restOptions) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ if (!response.ok) {
25
+ yield this._throwErrorBasedOnResponse(response, restOptions);
26
+ }
27
+ this._validateResponseType(response, restOptions);
28
+ return true;
29
+ });
30
+ }
31
+ /**
32
+ * @description Check if headers is an array of [string, string]
33
+ */
34
+ static isHeadersArrayType(headers) {
35
+ if (!Array.isArray(headers)) {
36
+ return false;
37
+ }
38
+ for (let i = 0; i < headers.length; i++) {
39
+ if (!Array.isArray(headers[i]) || headers[i].length !== 2) {
40
+ return false;
41
+ }
42
+ if (typeof headers[i][0] !== "string" || typeof headers[i][1] !== "string") {
43
+ return false;
44
+ }
45
+ }
46
+ return true;
47
+ }
48
+ /**
49
+ * @description Fetch data based on response content type
50
+ * @param response from fetch
51
+ * @returns
52
+ */
53
+ static fetchData(response) {
54
+ const type = response.headers.get("Content-Type");
55
+ if (this._isJsonType(type))
56
+ return this._fetchJsonData(response);
57
+ if (this._isFileType(type))
58
+ return this._fetchFileData(response);
59
+ return this._fetchTextData(response);
60
+ }
61
+ /**
62
+ * @description prepares Url for fetch. If full url is provided, it will return it as is, otherwise it will append it to the current origin
63
+ * @param url
64
+ * @returns
65
+ */
66
+ static getFullUrl(url) {
67
+ if (!url)
68
+ return "";
69
+ if (this.FULL_URL_PATTERN.test(url))
70
+ return url;
71
+ return `${window.location.origin}/${url}`;
72
+ }
73
+ //#region Private methods
74
+ static _validateResponseType(response, restOptions) {
75
+ const responseType = response.headers.get("Content-Type");
76
+ const acceptedType = this._getAcceptedType(restOptions.headers);
77
+ let valid = true;
78
+ if (acceptedType) {
79
+ const acceptedTypesArray = acceptedType.split(",");
80
+ valid = acceptedTypesArray.some((acceptedType) => (this._isJsonType(acceptedType) && this._isJsonType(responseType)) ||
81
+ (this._isTextType(acceptedType) && this._isTextType(responseType)) ||
82
+ (this._isFileType(acceptedType) && this._isFileType(responseType)) ||
83
+ (this._isNullType(acceptedType) && this._isNullType(responseType)));
84
+ }
85
+ if (!valid)
86
+ throw new Error(`Wrong content type. Accepted type for request: ${acceptedType}, received type in response: ${responseType}.`);
87
+ }
88
+ static _throwErrorBasedOnResponse(response, restOptions) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ switch (response.status) {
91
+ case 401:
92
+ const error = new Error();
93
+ error.name = HttpClientHelper.NOT_AUTHENTICATED_ERROR_NAME;
94
+ error.message = response.statusText;
95
+ throw error;
96
+ case 0:
97
+ throw new Error("Server is not responding");
98
+ case 404:
99
+ throw new Error(`Not found ${restOptions.url}`);
100
+ case 405:
101
+ throw new Error(`Method ${restOptions.method} not allowed for endpoint: ${restOptions.url}`);
102
+ }
103
+ const result = yield this.fetchData(response);
104
+ throw ErrorHelper_1.default.getError(result);
105
+ });
106
+ }
107
+ static _getAcceptedType(headers) {
108
+ if (!headers)
109
+ return null;
110
+ if (headers instanceof Headers)
111
+ return headers.get("Accepted");
112
+ if (this.isHeadersArrayType(headers)) {
113
+ const accepted = headers.find(([key]) => key === "Accepted");
114
+ if (accepted !== undefined)
115
+ return accepted[1];
116
+ }
117
+ return headers["Accepted"];
118
+ }
119
+ static _isJsonType(type) {
120
+ return type === null || type === void 0 ? void 0 : type.includes(HeadersContentTypeEnum_1.default.Json);
121
+ }
122
+ static _isFileType(type) {
123
+ if (!type)
124
+ return false;
125
+ // Explicitly exclude JSON and text types
126
+ if (this._isJsonType(type) || this._isTextType(type))
127
+ return false;
128
+ return (type.includes(HeadersContentTypeEnum_1.default.OctetStream) ||
129
+ type.includes(HeadersContentTypeEnum_1.default.Pdf) ||
130
+ type.includes(HeadersContentTypeEnum_1.default.Csv) ||
131
+ type.includes(HeadersContentTypeEnum_1.default.Excel) ||
132
+ type.includes(HeadersContentTypeEnum_1.default.ExcelOpenXml) ||
133
+ type.includes(HeadersContentTypeEnum_1.default.Word) ||
134
+ type.includes(HeadersContentTypeEnum_1.default.Zip) ||
135
+ type.includes("image/") ||
136
+ type.includes("audio/") ||
137
+ type.includes("video/"));
138
+ }
139
+ static _isTextType(type) {
140
+ return type === null || type === void 0 ? void 0 : type.includes(HeadersContentTypeEnum_1.default.Text);
141
+ }
142
+ static _isNullType(type) {
143
+ return type === HeadersContentTypeEnum_1.default.Null || type === null;
144
+ }
145
+ static _fetchJsonData(response) {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ try {
148
+ return yield response.json();
149
+ }
150
+ catch (error) {
151
+ const err = ErrorHelper_1.default.getError(error);
152
+ throw new Error(`Could not load json data from response. ${err.message}`);
153
+ }
154
+ });
155
+ }
156
+ static _fetchFileData(response) {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ try {
159
+ return yield response.blob();
160
+ }
161
+ catch (error) {
162
+ const err = ErrorHelper_1.default.getError(error);
163
+ throw new Error(`Could not load json data from response. ${err.message}`);
164
+ }
165
+ });
166
+ }
167
+ static _fetchTextData(response) {
168
+ return __awaiter(this, void 0, void 0, function* () {
169
+ try {
170
+ return yield response.text();
171
+ }
172
+ catch (error) {
173
+ const err = ErrorHelper_1.default.getError(error);
174
+ throw new Error(`Could not load text data from response. ${err.message}`);
175
+ }
176
+ });
177
+ }
178
+ }
179
+ HttpClientHelper.FULL_URL_PATTERN = /^https?:\/\//i;
180
+ HttpClientHelper.NOT_AUTHENTICATED_ERROR_NAME = "RESPONSE_NOT_AUTHENTICATED";
181
+ /**
182
+ * @description Check if error is not authenticated
183
+ * @param error
184
+ * @returns
185
+ */
186
+ HttpClientHelper.isNotAuthenticated = (error) => error.name === HttpClientHelper.NOT_AUTHENTICATED_ERROR_NAME;
187
+ exports.default = HttpClientHelper;
188
+ });
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Helper for navigating from UIAPI Web Client extensions to AppEngine plugin routes.
3
+ *
4
+ * AppEngine plugins are opened via the Web Client hash URL format:
5
+ * `#webclient-CompuTecWebClientStart-CompuTecWebClientStart&/{pluginId},{route}/{pluginName}`
6
+ *
7
+ * Routes containing path separators (e.g. `ctp/4/0`) must be double-encoded
8
+ * so that both the browser and the SAPUI5 router decode them correctly.
9
+ */
10
+ export default class NavigationHelper {
11
+ private static readonly HASH_PREFIX;
12
+ /**
13
+ * Build the full Web Client hash URL for navigating to an AppEngine plugin route.
14
+ *
15
+ * @param pluginId The plugin identifier (e.g. `"MRP"`)
16
+ * @param route The SAPUI5 route path including parameters (e.g. `"ctp/4/0"`, `"wizard"`)
17
+ * @param pluginName Optional display name; defaults to `pluginId`
18
+ * @returns The complete hash URL string
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * NavigationHelper.buildPluginUrl("MRP", "ctp/4/0");
23
+ * // => "#webclient-CompuTecWebClientStart-CompuTecWebClientStart&/MRP,ctp%252F4%252F0/MRP"
24
+ *
25
+ * NavigationHelper.buildPluginUrl("MRP", "wizard");
26
+ * // => "#webclient-CompuTecWebClientStart-CompuTecWebClientStart&/MRP,wizard/MRP"
27
+ * ```
28
+ */
29
+ static buildPluginUrl(pluginId: string, route: string, pluginName?: string): string;
30
+ /**
31
+ * Navigate to an AppEngine plugin route using the SDKEnv `open` method.
32
+ *
33
+ * @param openFn A function that opens a URL — typically `oEnv.open.bind(oEnv)` or `(url) => oEnv.open(url)`
34
+ * @param pluginId The plugin identifier (e.g. `"MRP"`)
35
+ * @param route The SAPUI5 route path including parameters (e.g. `"ctp/4/0"`)
36
+ * @param pluginName Optional display name; defaults to `pluginId`
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * // In a UIAPI controller:
41
+ * import { NavigationHelper } from "@computec/uibase";
42
+ *
43
+ * await NavigationHelper.openPlugin(
44
+ * (url) => oEnv.open(url),
45
+ * "MRP",
46
+ * `ctp/${docEntry}/${lineNum}`
47
+ * );
48
+ * ```
49
+ */
50
+ static openPlugin(openFn: (url: string) => Promise<void>, pluginId: string, route: string, pluginName?: string): Promise<void>;
51
+ }
52
+ //# sourceMappingURL=NavigationHelper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/NavigationHelper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CACyB;IAE5D;;;;;;;;;;;;;;;;OAgBG;WACW,cAAc,CAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GACjB,MAAM;IAKT;;;;;;;;;;;;;;;;;;;OAmBG;WACiB,UAAU,CAC7B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;CAIhB"}
@@ -0,0 +1,73 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ define(["require", "exports"], function (require, exports) {
11
+ "use strict";
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ /**
14
+ * Helper for navigating from UIAPI Web Client extensions to AppEngine plugin routes.
15
+ *
16
+ * AppEngine plugins are opened via the Web Client hash URL format:
17
+ * `#webclient-CompuTecWebClientStart-CompuTecWebClientStart&/{pluginId},{route}/{pluginName}`
18
+ *
19
+ * Routes containing path separators (e.g. `ctp/4/0`) must be double-encoded
20
+ * so that both the browser and the SAPUI5 router decode them correctly.
21
+ */
22
+ class NavigationHelper {
23
+ /**
24
+ * Build the full Web Client hash URL for navigating to an AppEngine plugin route.
25
+ *
26
+ * @param pluginId The plugin identifier (e.g. `"MRP"`)
27
+ * @param route The SAPUI5 route path including parameters (e.g. `"ctp/4/0"`, `"wizard"`)
28
+ * @param pluginName Optional display name; defaults to `pluginId`
29
+ * @returns The complete hash URL string
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * NavigationHelper.buildPluginUrl("MRP", "ctp/4/0");
34
+ * // => "#webclient-CompuTecWebClientStart-CompuTecWebClientStart&/MRP,ctp%252F4%252F0/MRP"
35
+ *
36
+ * NavigationHelper.buildPluginUrl("MRP", "wizard");
37
+ * // => "#webclient-CompuTecWebClientStart-CompuTecWebClientStart&/MRP,wizard/MRP"
38
+ * ```
39
+ */
40
+ static buildPluginUrl(pluginId, route, pluginName) {
41
+ const encodedRoute = encodeURIComponent(encodeURIComponent(route));
42
+ return `${NavigationHelper.HASH_PREFIX}&/${pluginId},${encodedRoute}/${pluginName !== null && pluginName !== void 0 ? pluginName : pluginId}`;
43
+ }
44
+ /**
45
+ * Navigate to an AppEngine plugin route using the SDKEnv `open` method.
46
+ *
47
+ * @param openFn A function that opens a URL — typically `oEnv.open.bind(oEnv)` or `(url) => oEnv.open(url)`
48
+ * @param pluginId The plugin identifier (e.g. `"MRP"`)
49
+ * @param route The SAPUI5 route path including parameters (e.g. `"ctp/4/0"`)
50
+ * @param pluginName Optional display name; defaults to `pluginId`
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * // In a UIAPI controller:
55
+ * import { NavigationHelper } from "@computec/uibase";
56
+ *
57
+ * await NavigationHelper.openPlugin(
58
+ * (url) => oEnv.open(url),
59
+ * "MRP",
60
+ * `ctp/${docEntry}/${lineNum}`
61
+ * );
62
+ * ```
63
+ */
64
+ static openPlugin(openFn, pluginId, route, pluginName) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ const url = NavigationHelper.buildPluginUrl(pluginId, route, pluginName);
67
+ yield openFn(url);
68
+ });
69
+ }
70
+ }
71
+ NavigationHelper.HASH_PREFIX = "#webclient-CompuTecWebClientStart-CompuTecWebClientStart";
72
+ exports.default = NavigationHelper;
73
+ });