tm1npm 1.6.0 → 2.1.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/CHANGELOG.md +89 -0
- package/lib/objects/Axis.d.ts +1 -0
- package/lib/objects/Axis.d.ts.map +1 -1
- package/lib/objects/Axis.js +3 -0
- package/lib/objects/Chore.d.ts +2 -2
- package/lib/objects/Chore.d.ts.map +1 -1
- package/lib/objects/Chore.js +7 -13
- package/lib/objects/Cube.d.ts.map +1 -1
- package/lib/objects/Cube.js +2 -1
- package/lib/objects/Hierarchy.js +10 -10
- package/lib/objects/MDXView.d.ts +2 -0
- package/lib/objects/MDXView.d.ts.map +1 -1
- package/lib/objects/MDXView.js +30 -9
- package/lib/objects/NativeView.d.ts +5 -5
- package/lib/objects/NativeView.d.ts.map +1 -1
- package/lib/objects/NativeView.js +17 -34
- package/lib/objects/Process.d.ts +8 -3
- package/lib/objects/Process.d.ts.map +1 -1
- package/lib/objects/Process.js +143 -33
- package/lib/objects/Subset.d.ts.map +1 -1
- package/lib/objects/Subset.js +10 -3
- package/lib/objects/User.d.ts +5 -5
- package/lib/objects/User.d.ts.map +1 -1
- package/lib/objects/User.js +14 -23
- package/lib/services/ApplicationService.d.ts.map +1 -1
- package/lib/services/AsyncOperationService.d.ts +8 -1
- package/lib/services/AsyncOperationService.d.ts.map +1 -1
- package/lib/services/AsyncOperationService.js +69 -26
- package/lib/services/FileService.d.ts.map +1 -1
- package/lib/services/ProcessService.d.ts +18 -13
- package/lib/services/ProcessService.d.ts.map +1 -1
- package/lib/services/ProcessService.js +28 -17
- package/lib/services/RestService.d.ts +213 -25
- package/lib/services/RestService.d.ts.map +1 -1
- package/lib/services/RestService.js +840 -271
- package/lib/services/TM1Service.d.ts +42 -1
- package/lib/services/TM1Service.d.ts.map +1 -1
- package/lib/services/TM1Service.js +94 -4
- package/lib/tests/asyncOperationService.test.js +51 -45
- package/lib/tests/debuggerService.test.js +3 -1
- package/lib/tests/objectModelParity.test.js +362 -11
- package/lib/tests/objects.improved.test.js +28 -5
- package/lib/tests/processService.comprehensive.test.js +2 -2
- package/lib/tests/processService.test.js +20 -6
- package/lib/tests/restService.test.d.ts +0 -4
- package/lib/tests/restService.test.d.ts.map +1 -1
- package/lib/tests/restService.test.js +1558 -143
- package/lib/tests/tm1Service.test.js +80 -8
- package/lib/tests/user.issue61.test.d.ts +2 -0
- package/lib/tests/user.issue61.test.d.ts.map +1 -0
- package/lib/tests/user.issue61.test.js +180 -0
- package/lib/utils/Utils.d.ts +6 -1
- package/lib/utils/Utils.d.ts.map +1 -1
- package/lib/utils/Utils.js +56 -7
- package/package.json +1 -1
- package/src/objects/Axis.ts +4 -0
- package/src/objects/Chore.ts +7 -14
- package/src/objects/Cube.ts +2 -1
- package/src/objects/Hierarchy.ts +11 -11
- package/src/objects/MDXView.ts +29 -9
- package/src/objects/NativeView.ts +26 -42
- package/src/objects/Process.ts +182 -66
- package/src/objects/Subset.ts +17 -3
- package/src/objects/User.ts +17 -23
- package/src/services/ApplicationService.ts +4 -4
- package/src/services/AsyncOperationService.ts +76 -29
- package/src/services/FileService.ts +3 -3
- package/src/services/ProcessService.ts +67 -37
- package/src/services/RestService.ts +1020 -278
- package/src/services/TM1Service.ts +124 -6
- package/src/tests/asyncOperationService.test.ts +52 -48
- package/src/tests/debuggerService.test.ts +3 -1
- package/src/tests/objectModelParity.test.ts +456 -11
- package/src/tests/objects.improved.test.ts +41 -9
- package/src/tests/processService.comprehensive.test.ts +3 -3
- package/src/tests/processService.test.ts +21 -9
- package/src/tests/restService.test.ts +1844 -139
- package/src/tests/tm1Service.test.ts +95 -11
- package/src/tests/user.issue61.test.ts +206 -0
- package/src/utils/Utils.ts +60 -7
|
@@ -8,6 +8,15 @@ export interface CompileSyntaxError {
|
|
|
8
8
|
LineNumber: number;
|
|
9
9
|
Message: string;
|
|
10
10
|
}
|
|
11
|
+
interface ValidationError {
|
|
12
|
+
line: number;
|
|
13
|
+
message: string;
|
|
14
|
+
severity: string;
|
|
15
|
+
}
|
|
16
|
+
interface ValidationResult {
|
|
17
|
+
isValid: boolean;
|
|
18
|
+
errors: ValidationError[];
|
|
19
|
+
}
|
|
11
20
|
export declare class ProcessService extends ObjectService {
|
|
12
21
|
/** Service to handle Object Updates for TI Processes
|
|
13
22
|
*
|
|
@@ -127,8 +136,8 @@ export declare class ProcessService extends ObjectService {
|
|
|
127
136
|
* @example
|
|
128
137
|
* ```typescript
|
|
129
138
|
* const deps = await processService.analyzeProcessDependencies('ImportData');
|
|
130
|
-
*
|
|
131
|
-
*
|
|
139
|
+
* // deps.cubes => array of cube names referenced in the process
|
|
140
|
+
* // deps.dimensions => array of dimension names referenced in the process
|
|
132
141
|
* ```
|
|
133
142
|
*/
|
|
134
143
|
analyzeProcessDependencies(processName: string): Promise<any>;
|
|
@@ -136,20 +145,17 @@ export declare class ProcessService extends ObjectService {
|
|
|
136
145
|
* Validate process syntax without executing it
|
|
137
146
|
*
|
|
138
147
|
* @param processName - Name of the process
|
|
139
|
-
* @returns Promise<
|
|
148
|
+
* @returns Promise<ValidationResult> - Validation result
|
|
140
149
|
*
|
|
141
150
|
* @example
|
|
142
151
|
* ```typescript
|
|
143
152
|
* const result = await processService.validateProcessSyntax('MyProcess');
|
|
144
153
|
* if (!result.isValid) {
|
|
145
|
-
*
|
|
154
|
+
* // result.errors contains ValidationError[] entries
|
|
146
155
|
* }
|
|
147
156
|
* ```
|
|
148
157
|
*/
|
|
149
|
-
validateProcessSyntax(processName: string): Promise<
|
|
150
|
-
isValid: boolean;
|
|
151
|
-
errors: any[];
|
|
152
|
-
}>;
|
|
158
|
+
validateProcessSyntax(processName: string): Promise<ValidationResult>;
|
|
153
159
|
/**
|
|
154
160
|
* Get process execution plan (estimated resource usage)
|
|
155
161
|
*
|
|
@@ -159,7 +165,7 @@ export declare class ProcessService extends ObjectService {
|
|
|
159
165
|
* @example
|
|
160
166
|
* ```typescript
|
|
161
167
|
* const plan = await processService.getProcessExecutionPlan('ImportData');
|
|
162
|
-
*
|
|
168
|
+
* // plan.estimatedTime => estimated execution time (ms)
|
|
163
169
|
* ```
|
|
164
170
|
*/
|
|
165
171
|
getProcessExecutionPlan(processName: string): Promise<any>;
|
|
@@ -189,9 +195,7 @@ export declare class ProcessService extends ObjectService {
|
|
|
189
195
|
* @example
|
|
190
196
|
* ```typescript
|
|
191
197
|
* const status = await processService.pollProcessExecution(operationId);
|
|
192
|
-
* if (status === OperationStatus.COMPLETED)
|
|
193
|
-
* console.log('Process completed!');
|
|
194
|
-
* }
|
|
198
|
+
* // if (status === OperationStatus.COMPLETED) handle completion
|
|
195
199
|
* ```
|
|
196
200
|
*/
|
|
197
201
|
pollProcessExecution(operationId: string): Promise<OperationStatus>;
|
|
@@ -204,9 +208,10 @@ export declare class ProcessService extends ObjectService {
|
|
|
204
208
|
* @example
|
|
205
209
|
* ```typescript
|
|
206
210
|
* await processService.cancelProcessExecution(operationId);
|
|
207
|
-
*
|
|
211
|
+
* // cancellation is acknowledged once the promise resolves
|
|
208
212
|
* ```
|
|
209
213
|
*/
|
|
210
214
|
cancelProcessExecution(operationId: string): Promise<void>;
|
|
211
215
|
}
|
|
216
|
+
export {};
|
|
212
217
|
//# sourceMappingURL=ProcessService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcessService.d.ts","sourceRoot":"","sources":["../../src/services/ProcessService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,
|
|
1
|
+
{"version":3,"file":"ProcessService.d.ts","sourceRoot":"","sources":["../../src/services/ProcessService.ts"],"names":[],"mappings":"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"}
|
|
@@ -180,7 +180,7 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
180
180
|
}
|
|
181
181
|
const config = {};
|
|
182
182
|
if (timeout) {
|
|
183
|
-
config.timeout = timeout
|
|
183
|
+
config.timeout = timeout;
|
|
184
184
|
}
|
|
185
185
|
return await this.rest.post(url, JSON.stringify(body), config);
|
|
186
186
|
}
|
|
@@ -214,13 +214,21 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
214
214
|
var _a, _b;
|
|
215
215
|
try {
|
|
216
216
|
const response = await this.rest.retrieve_async_response(asyncId);
|
|
217
|
+
// tm1py returns None while the async op is still in-flight (status 202).
|
|
218
|
+
if (response.status !== 200 && response.status !== 201) {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
217
221
|
// TODO: tm1py handles TM1 < v11 binary-wrapped responses via
|
|
218
222
|
// build_response_from_binary_response. Add support if needed.
|
|
219
|
-
return this._executeWithReturnParseResponse(response);
|
|
223
|
+
return this._executeWithReturnParseResponse(response.data);
|
|
220
224
|
}
|
|
221
225
|
catch (error) {
|
|
222
|
-
//
|
|
223
|
-
|
|
226
|
+
// 404 means the async resource hasn't materialized yet — return null
|
|
227
|
+
// so the caller can retry. 202 means still running. Both are
|
|
228
|
+
// retryable, unlike AsyncOperationService which treats 404 as
|
|
229
|
+
// terminal FAILED for locally-tracked operations.
|
|
230
|
+
const err = error;
|
|
231
|
+
const status = (_a = err === null || err === void 0 ? void 0 : err.status) !== null && _a !== void 0 ? _a : (_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.status;
|
|
224
232
|
if (status === 202 || status === 404) {
|
|
225
233
|
return null;
|
|
226
234
|
}
|
|
@@ -536,9 +544,11 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
536
544
|
}
|
|
537
545
|
const config = {};
|
|
538
546
|
if (timeout) {
|
|
539
|
-
config.timeout = timeout
|
|
547
|
+
config.timeout = timeout;
|
|
540
548
|
}
|
|
541
|
-
|
|
549
|
+
// rest.post returns AxiosResponse | string (string only when caller
|
|
550
|
+
// opts into returnAsyncId). debugProcess never does, so narrow.
|
|
551
|
+
const response = (await this.rest.post(url, JSON.stringify(body), config));
|
|
542
552
|
return response.data;
|
|
543
553
|
}
|
|
544
554
|
/**
|
|
@@ -684,8 +694,8 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
684
694
|
* @example
|
|
685
695
|
* ```typescript
|
|
686
696
|
* const deps = await processService.analyzeProcessDependencies('ImportData');
|
|
687
|
-
*
|
|
688
|
-
*
|
|
697
|
+
* // deps.cubes => array of cube names referenced in the process
|
|
698
|
+
* // deps.dimensions => array of dimension names referenced in the process
|
|
689
699
|
* ```
|
|
690
700
|
*/
|
|
691
701
|
async analyzeProcessDependencies(processName) {
|
|
@@ -746,13 +756,13 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
746
756
|
* Validate process syntax without executing it
|
|
747
757
|
*
|
|
748
758
|
* @param processName - Name of the process
|
|
749
|
-
* @returns Promise<
|
|
759
|
+
* @returns Promise<ValidationResult> - Validation result
|
|
750
760
|
*
|
|
751
761
|
* @example
|
|
752
762
|
* ```typescript
|
|
753
763
|
* const result = await processService.validateProcessSyntax('MyProcess');
|
|
754
764
|
* if (!result.isValid) {
|
|
755
|
-
*
|
|
765
|
+
* // result.errors contains ValidationError[] entries
|
|
756
766
|
* }
|
|
757
767
|
* ```
|
|
758
768
|
*/
|
|
@@ -769,7 +779,8 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
769
779
|
};
|
|
770
780
|
}
|
|
771
781
|
catch (error) {
|
|
772
|
-
const
|
|
782
|
+
const err = error;
|
|
783
|
+
const errorMessage = ((_c = (_b = (_a = err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.error) === null || _c === void 0 ? void 0 : _c.message) || err.message || 'Validation failed';
|
|
773
784
|
return {
|
|
774
785
|
isValid: false,
|
|
775
786
|
errors: [{ line: 0, message: errorMessage, severity: 'Error' }]
|
|
@@ -785,7 +796,7 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
785
796
|
* @example
|
|
786
797
|
* ```typescript
|
|
787
798
|
* const plan = await processService.getProcessExecutionPlan('ImportData');
|
|
788
|
-
*
|
|
799
|
+
* // plan.estimatedTime => estimated execution time (ms)
|
|
789
800
|
* ```
|
|
790
801
|
*/
|
|
791
802
|
async getProcessExecutionPlan(processName) {
|
|
@@ -860,7 +871,9 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
860
871
|
asyncOps.updateOperationStatus(operationId, AsyncOperationService_1.OperationStatus.COMPLETED, result);
|
|
861
872
|
})
|
|
862
873
|
.catch((error) => {
|
|
863
|
-
|
|
874
|
+
var _a;
|
|
875
|
+
const message = (_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : String(error);
|
|
876
|
+
asyncOps.updateOperationStatus(operationId, AsyncOperationService_1.OperationStatus.FAILED, undefined, message);
|
|
864
877
|
});
|
|
865
878
|
return operationId;
|
|
866
879
|
}
|
|
@@ -873,9 +886,7 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
873
886
|
* @example
|
|
874
887
|
* ```typescript
|
|
875
888
|
* const status = await processService.pollProcessExecution(operationId);
|
|
876
|
-
* if (status === OperationStatus.COMPLETED)
|
|
877
|
-
* console.log('Process completed!');
|
|
878
|
-
* }
|
|
889
|
+
* // if (status === OperationStatus.COMPLETED) handle completion
|
|
879
890
|
* ```
|
|
880
891
|
*/
|
|
881
892
|
async pollProcessExecution(operationId) {
|
|
@@ -894,7 +905,7 @@ class ProcessService extends ObjectService_1.ObjectService {
|
|
|
894
905
|
* @example
|
|
895
906
|
* ```typescript
|
|
896
907
|
* await processService.cancelProcessExecution(operationId);
|
|
897
|
-
*
|
|
908
|
+
* // cancellation is acknowledged once the promise resolves
|
|
898
909
|
* ```
|
|
899
910
|
*/
|
|
900
911
|
async cancelProcessExecution(operationId) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AxiosResponse, AxiosRequestConfig } from 'axios';
|
|
2
|
+
import * as https from 'https';
|
|
2
3
|
export declare enum AuthenticationMode {
|
|
3
4
|
BASIC = 1,
|
|
4
5
|
WIA = 2,
|
|
@@ -25,6 +26,9 @@ export interface RestServiceConfig {
|
|
|
25
26
|
timeout?: number;
|
|
26
27
|
cancelAtTimeout?: boolean;
|
|
27
28
|
asyncRequestsMode?: boolean;
|
|
29
|
+
asyncPollingInitialDelay?: number;
|
|
30
|
+
asyncPollingMaxDelay?: number;
|
|
31
|
+
asyncPollingBackoffFactor?: number;
|
|
28
32
|
connectionPoolSize?: number;
|
|
29
33
|
poolConnections?: number;
|
|
30
34
|
instance?: string;
|
|
@@ -36,21 +40,95 @@ export interface RestServiceConfig {
|
|
|
36
40
|
apiKey?: string;
|
|
37
41
|
accessToken?: string;
|
|
38
42
|
tenant?: string;
|
|
43
|
+
iamUrl?: string;
|
|
44
|
+
paUrl?: string;
|
|
45
|
+
cpdUrl?: string;
|
|
46
|
+
gateway?: string;
|
|
47
|
+
integratedLogin?: boolean;
|
|
48
|
+
integratedLoginDomain?: string;
|
|
49
|
+
integratedLoginService?: string;
|
|
50
|
+
integratedLoginHost?: string;
|
|
51
|
+
integratedLoginDelegate?: boolean;
|
|
52
|
+
proxies?: {
|
|
53
|
+
http?: string;
|
|
54
|
+
https?: string;
|
|
55
|
+
};
|
|
56
|
+
sslContext?: https.Agent;
|
|
57
|
+
cert?: string | [string, string];
|
|
58
|
+
reConnectOnSessionTimeout?: boolean;
|
|
59
|
+
reConnectOnRemoteDisconnect?: boolean;
|
|
60
|
+
remoteDisconnectMaxRetries?: number;
|
|
61
|
+
remoteDisconnectRetryDelay?: number;
|
|
62
|
+
remoteDisconnectMaxDelay?: number;
|
|
63
|
+
}
|
|
64
|
+
export interface RequestOptions extends Omit<AxiosRequestConfig, 'timeout'> {
|
|
65
|
+
asyncRequestsMode?: boolean;
|
|
66
|
+
returnAsyncId?: boolean;
|
|
67
|
+
timeout?: number;
|
|
68
|
+
cancelAtTimeout?: boolean;
|
|
69
|
+
idempotent?: boolean;
|
|
70
|
+
verifyResponse?: boolean;
|
|
39
71
|
}
|
|
40
72
|
export declare class RestService {
|
|
41
73
|
private static readonly HEADERS;
|
|
42
74
|
private static readonly DEFAULT_CONNECTION_POOL_SIZE;
|
|
43
75
|
private static readonly DEFAULT_POOL_CONNECTIONS;
|
|
76
|
+
private static readonly SESSION_COOKIE_NAMES;
|
|
44
77
|
private axiosInstance;
|
|
45
78
|
private config;
|
|
46
|
-
private
|
|
79
|
+
private sessionCookies;
|
|
47
80
|
private sandboxName?;
|
|
48
81
|
private isConnected;
|
|
49
82
|
private _serverVersion?;
|
|
83
|
+
private _asyncRequestsMode;
|
|
84
|
+
private _cancelAtTimeout;
|
|
85
|
+
private _timeout;
|
|
86
|
+
private _asyncPollingInitialDelay;
|
|
87
|
+
private _asyncPollingMaxDelay;
|
|
88
|
+
private _asyncPollingBackoffFactor;
|
|
89
|
+
private _reConnectOnSessionTimeout;
|
|
90
|
+
private _reConnectOnRemoteDisconnect;
|
|
91
|
+
private _remoteDisconnectMaxRetries;
|
|
92
|
+
private _remoteDisconnectRetryDelay;
|
|
93
|
+
private _remoteDisconnectMaxDelay;
|
|
94
|
+
private _isAdmin?;
|
|
95
|
+
private _isDataAdmin?;
|
|
96
|
+
private _isSecurityAdmin?;
|
|
97
|
+
private _isOpsAdmin?;
|
|
98
|
+
private _activeUserGroupsPromise?;
|
|
50
99
|
get version(): string | undefined;
|
|
100
|
+
get isAdmin(): boolean;
|
|
101
|
+
get isDataAdmin(): boolean;
|
|
102
|
+
get isSecurityAdmin(): boolean;
|
|
103
|
+
get isOpsAdmin(): boolean;
|
|
51
104
|
constructor(config: RestServiceConfig);
|
|
105
|
+
private getSessionCookieValue;
|
|
106
|
+
private buildCookieHeader;
|
|
107
|
+
private parseSetCookieHeaders;
|
|
108
|
+
private removeAuthorizationHeader;
|
|
109
|
+
private deleteHeaderCaseInsensitive;
|
|
52
110
|
private setupAxiosInstance;
|
|
53
111
|
private buildBaseUrl;
|
|
112
|
+
/**
|
|
113
|
+
* Pick the deployment topology based on the provided config, mirroring
|
|
114
|
+
* tm1py's _determine_auth_mode + _construct_service_and_auth_root dispatch.
|
|
115
|
+
*
|
|
116
|
+
* Note: authUrl is intentionally excluded from the v12 signal set because
|
|
117
|
+
* tm1npm historically uses authUrl for CAM SSO (unlike tm1py, where auth_url
|
|
118
|
+
* is a v12-only field). apiKey is also excluded to avoid collision with the
|
|
119
|
+
* existing BASIC_API_KEY auth flow.
|
|
120
|
+
*/
|
|
121
|
+
private determineTopology;
|
|
122
|
+
/**
|
|
123
|
+
* Resolve the TM1 service root and auth root URLs for the configured topology.
|
|
124
|
+
* Mirrors tm1py's _construct_service_and_auth_root return tuple.
|
|
125
|
+
*/
|
|
126
|
+
private resolveRoots;
|
|
127
|
+
private rootsV11;
|
|
128
|
+
private rootsIbmCloud;
|
|
129
|
+
private rootsPaProxy;
|
|
130
|
+
private rootsS2s;
|
|
131
|
+
private rootsFromBaseUrl;
|
|
54
132
|
private setupInterceptors;
|
|
55
133
|
/**
|
|
56
134
|
* Determine if a request should be retried
|
|
@@ -61,42 +139,118 @@ export declare class RestService {
|
|
|
61
139
|
*/
|
|
62
140
|
private canRetryRequest;
|
|
63
141
|
/**
|
|
64
|
-
* Retry a failed request with exponential backoff
|
|
142
|
+
* Retry a failed request with exponential backoff, reconnecting the
|
|
143
|
+
* session before replay. Mirrors tm1py's _handle_remote_disconnect,
|
|
144
|
+
* which calls _manage_http_adapter() + connect() prior to retrying
|
|
145
|
+
* so a dropped session is re-established rather than replayed dead.
|
|
65
146
|
*/
|
|
66
147
|
private retryRequest;
|
|
67
148
|
private extractErrorMessage;
|
|
149
|
+
private waitTimeGenerator;
|
|
150
|
+
private _executeSyncRequest;
|
|
151
|
+
private _executeAsyncRequest;
|
|
152
|
+
private _pollAsyncResponse;
|
|
153
|
+
private _request;
|
|
68
154
|
connect(): Promise<void>;
|
|
69
155
|
disconnect(): Promise<void>;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
156
|
+
/**
|
|
157
|
+
* When `returnAsyncId: true`, the caller receives the async id string
|
|
158
|
+
* iff the server returns `202 Accepted`. If TM1 short-circuits with
|
|
159
|
+
* `200/201`, the full `AxiosResponse` is returned instead — the
|
|
160
|
+
* declared `Promise<string>` return type is a best-effort narrowing.
|
|
161
|
+
*/
|
|
162
|
+
get(url: string, options: RequestOptions & {
|
|
163
|
+
returnAsyncId: true;
|
|
164
|
+
}): Promise<string | AxiosResponse>;
|
|
165
|
+
get(url: string, options?: RequestOptions): Promise<AxiosResponse>;
|
|
166
|
+
post(url: string, data: any, options: RequestOptions & {
|
|
167
|
+
returnAsyncId: true;
|
|
168
|
+
}): Promise<string | AxiosResponse>;
|
|
169
|
+
post(url: string, data?: any, options?: RequestOptions): Promise<AxiosResponse>;
|
|
170
|
+
patch(url: string, data: any, options: RequestOptions & {
|
|
171
|
+
returnAsyncId: true;
|
|
172
|
+
}): Promise<string | AxiosResponse>;
|
|
173
|
+
patch(url: string, data?: any, options?: RequestOptions): Promise<AxiosResponse>;
|
|
174
|
+
put(url: string, data: any, options: RequestOptions & {
|
|
175
|
+
returnAsyncId: true;
|
|
176
|
+
}): Promise<string | AxiosResponse>;
|
|
177
|
+
put(url: string, data?: any, options?: RequestOptions): Promise<AxiosResponse>;
|
|
178
|
+
delete(url: string, options: RequestOptions & {
|
|
179
|
+
returnAsyncId: true;
|
|
180
|
+
}): Promise<string | AxiosResponse>;
|
|
181
|
+
delete(url: string, options?: RequestOptions): Promise<AxiosResponse>;
|
|
75
182
|
getSessionId(): string | undefined;
|
|
76
183
|
setSandbox(sandboxName?: string): void;
|
|
77
184
|
getSandbox(): string | undefined;
|
|
78
185
|
isLoggedIn(): boolean;
|
|
79
186
|
getApiMetadata(): Promise<any>;
|
|
80
187
|
/**
|
|
81
|
-
*
|
|
188
|
+
* Build an httpsAgent option that skips TLS verification when verify is false.
|
|
82
189
|
*/
|
|
83
|
-
private
|
|
190
|
+
private static insecureAgentOption;
|
|
191
|
+
/**
|
|
192
|
+
* Normalise a Set-Cookie header value (string | string[] | undefined) into a string[].
|
|
193
|
+
*/
|
|
194
|
+
private static normaliseSetCookie;
|
|
195
|
+
/**
|
|
196
|
+
* Extract a named cookie value from raw Set-Cookie headers.
|
|
197
|
+
*/
|
|
198
|
+
private static extractCookieValue;
|
|
199
|
+
/**
|
|
200
|
+
* Build Basic Authorization header.
|
|
201
|
+
* Mirrors tm1py's _build_authorization_token_basic.
|
|
202
|
+
*/
|
|
203
|
+
private static _buildAuthorizationTokenBasic;
|
|
204
|
+
/**
|
|
205
|
+
* Build CAMNamespace Authorization header.
|
|
206
|
+
* Mirrors tm1py's _build_authorization_token_cam (non-gateway path).
|
|
207
|
+
*/
|
|
208
|
+
private static _buildAuthorizationTokenCam;
|
|
84
209
|
/**
|
|
85
|
-
*
|
|
210
|
+
* Build CAMPassport Authorization token via gateway SSO.
|
|
211
|
+
* Mirrors tm1py's _build_authorization_token_cam (gateway path).
|
|
212
|
+
* Makes a GET request to the gateway URL with CAMNamespace as a query
|
|
213
|
+
* parameter and extracts the cam_passport cookie from the response.
|
|
214
|
+
*
|
|
215
|
+
* Note: tm1py uses HttpNegotiateAuth (NTLM/Kerberos) for gateway requests,
|
|
216
|
+
* which is Windows-only. This implementation sends a plain GET and relies on
|
|
217
|
+
* the gateway being accessible without NTLM. For environments requiring NTLM,
|
|
218
|
+
* pass a pre-obtained cam_passport via config.camPassport instead.
|
|
86
219
|
*/
|
|
87
|
-
private
|
|
220
|
+
private static _buildAuthorizationTokenCamSso;
|
|
88
221
|
/**
|
|
89
|
-
*
|
|
222
|
+
* Generate IBM IAM Cloud access token.
|
|
223
|
+
* Mirrors tm1py's _generate_ibm_iam_cloud_access_token.
|
|
90
224
|
*/
|
|
91
|
-
private
|
|
225
|
+
private _generateIbmIamCloudAccessToken;
|
|
92
226
|
/**
|
|
93
|
-
*
|
|
227
|
+
* Generate CPD (Cloud Pak for Data) access token.
|
|
228
|
+
* Mirrors tm1py's _generate_cpd_access_token.
|
|
94
229
|
*/
|
|
95
|
-
private
|
|
230
|
+
private _generateCpdAccessToken;
|
|
96
231
|
/**
|
|
97
|
-
*
|
|
232
|
+
* Authenticate with PA Proxy using a CPD JWT token.
|
|
233
|
+
* Mirrors tm1py's PA_PROXY flow in _start_session.
|
|
234
|
+
*/
|
|
235
|
+
private _authenticateWithPaProxy;
|
|
236
|
+
/**
|
|
237
|
+
* Authenticate Service-to-Service (v12).
|
|
238
|
+
* Mirrors tm1py's SERVICE_TO_SERVICE flow in _start_session:
|
|
239
|
+
* Uses Basic auth with applicationClientId:applicationClientSecret,
|
|
240
|
+
* then POSTs {"User": user} to the auth endpoint.
|
|
241
|
+
*/
|
|
242
|
+
private _authenticateServiceToService;
|
|
243
|
+
/**
|
|
244
|
+
* Determine the authentication mode from config.
|
|
245
|
+
* Mirrors tm1py's _determine_auth_mode, using the URL topology as the
|
|
246
|
+
* primary discriminator for v12 modes.
|
|
98
247
|
*/
|
|
99
248
|
getAuthenticationMode(): AuthenticationMode;
|
|
249
|
+
/**
|
|
250
|
+
* Set up authentication based on configuration.
|
|
251
|
+
* Mirrors tm1py's _start_session routing.
|
|
252
|
+
*/
|
|
253
|
+
private setupAuthentication;
|
|
100
254
|
/**
|
|
101
255
|
* Re-authenticate using stored configuration
|
|
102
256
|
*/
|
|
@@ -162,19 +316,27 @@ export declare class RestService {
|
|
|
162
316
|
*/
|
|
163
317
|
set_version(version: string): void;
|
|
164
318
|
/**
|
|
165
|
-
*
|
|
319
|
+
* Fetch the active user's group names as a CaseAndSpaceInsensitiveSet so
|
|
320
|
+
* membership tests are case- and whitespace-insensitive (mirrors tm1py).
|
|
321
|
+
* Concurrent callers (e.g. Promise.all([is_admin(), is_data_admin(), ...]))
|
|
322
|
+
* coalesce onto a single in-flight request.
|
|
323
|
+
*/
|
|
324
|
+
private fetchActiveUserGroupNames;
|
|
325
|
+
/**
|
|
326
|
+
* Check if current user is admin. Result is cached after the first
|
|
327
|
+
* computation, and pre-populated when the configured user is ADMIN.
|
|
166
328
|
*/
|
|
167
329
|
is_admin(): Promise<boolean>;
|
|
168
330
|
/**
|
|
169
|
-
* Check if current user is data admin
|
|
331
|
+
* Check if current user is data admin (member of Admin or DataAdmin).
|
|
170
332
|
*/
|
|
171
333
|
is_data_admin(): Promise<boolean>;
|
|
172
334
|
/**
|
|
173
|
-
* Check if current user is ops admin
|
|
335
|
+
* Check if current user is ops admin (member of Admin or OperationsAdmin).
|
|
174
336
|
*/
|
|
175
337
|
is_ops_admin(): Promise<boolean>;
|
|
176
338
|
/**
|
|
177
|
-
* Check if current user is security admin
|
|
339
|
+
* Check if current user is security admin (member of Admin or SecurityAdmin).
|
|
178
340
|
*/
|
|
179
341
|
is_security_admin(): Promise<boolean>;
|
|
180
342
|
/**
|
|
@@ -191,6 +353,23 @@ export declare class RestService {
|
|
|
191
353
|
get_http_headers(): {
|
|
192
354
|
[key: string]: string;
|
|
193
355
|
};
|
|
356
|
+
/**
|
|
357
|
+
* Insert `tm1.compact=v0` into the Accept header (after the
|
|
358
|
+
* `application/json` segment) and return the previous header value.
|
|
359
|
+
* Mirrors tm1py's add_compact_json_header.
|
|
360
|
+
*/
|
|
361
|
+
add_compact_json_header(): string;
|
|
362
|
+
/**
|
|
363
|
+
* Decode a Base64-encoded password to its UTF-8 plaintext form
|
|
364
|
+
* (mirrors tm1py's b64_decode_password).
|
|
365
|
+
*/
|
|
366
|
+
static b64_decode_password(encryptedPassword: string): string;
|
|
367
|
+
/**
|
|
368
|
+
* Coerce a boolean/number/string config value to a boolean. Strings
|
|
369
|
+
* are stripped of whitespace and lowercased before comparison with
|
|
370
|
+
* `'true'` (mirrors tm1py's translate_to_boolean).
|
|
371
|
+
*/
|
|
372
|
+
static translate_to_boolean(value: unknown): boolean;
|
|
194
373
|
/**
|
|
195
374
|
* Cancel an async operation by ID
|
|
196
375
|
*/
|
|
@@ -198,15 +377,24 @@ export declare class RestService {
|
|
|
198
377
|
/**
|
|
199
378
|
* Retrieve async operation response
|
|
200
379
|
*/
|
|
201
|
-
retrieve_async_response(async_id: string): Promise<
|
|
380
|
+
retrieve_async_response(async_id: string): Promise<AxiosResponse>;
|
|
202
381
|
/**
|
|
203
|
-
*
|
|
382
|
+
* TM1 v12 returns completed async results with HTTP 200 and encodes
|
|
383
|
+
* the true operation status in the `asyncresult` header (e.g.
|
|
384
|
+
* "500 Internal Server Error"). Mirror tm1py's
|
|
385
|
+
* `_transform_async_response` by throwing on any embedded non-2xx
|
|
386
|
+
* status so callers are not handed a 500 as "success".
|
|
204
387
|
*/
|
|
205
|
-
|
|
388
|
+
private verifyAsyncResultHeader;
|
|
206
389
|
/**
|
|
207
|
-
* Wait for async operation to complete
|
|
390
|
+
* Wait for async operation to complete using a fixed polling cadence.
|
|
391
|
+
*
|
|
392
|
+
* Unlike the internal dispatcher's {@link waitTimeGenerator} (capped
|
|
393
|
+
* exponential backoff), this public helper polls every
|
|
394
|
+
* {@link poll_interval_seconds} seconds so existing callers who tuned
|
|
395
|
+
* the cadence keep their original behavior.
|
|
208
396
|
*/
|
|
209
|
-
wait_for_async_operation(async_id: string, timeout_seconds?: number, poll_interval_seconds?: number): Promise<any>;
|
|
397
|
+
wait_for_async_operation(async_id: string, timeout_seconds?: number, poll_interval_seconds?: number, cancel_at_timeout?: boolean): Promise<any>;
|
|
210
398
|
/**
|
|
211
399
|
* Get active user name
|
|
212
400
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestService.d.ts","sourceRoot":"","sources":["../../src/services/RestService.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,aAAa,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RestService.d.ts","sourceRoot":"","sources":["../../src/services/RestService.ts"],"names":[],"mappings":"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"}
|