tm1npm 1.5.3 → 1.6.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/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/services/ApplicationService.d.ts +19 -3
- package/lib/services/ApplicationService.d.ts.map +1 -1
- package/lib/services/ApplicationService.js +232 -6
- package/lib/services/ElementService.d.ts +67 -1
- package/lib/services/ElementService.d.ts.map +1 -1
- package/lib/services/ElementService.js +214 -0
- package/lib/services/HierarchyService.d.ts +26 -0
- package/lib/services/HierarchyService.d.ts.map +1 -1
- package/lib/services/HierarchyService.js +306 -0
- package/lib/services/ProcessService.d.ts +22 -9
- package/lib/services/ProcessService.d.ts.map +1 -1
- package/lib/services/ProcessService.js +94 -98
- package/lib/services/RestService.d.ts.map +1 -1
- package/lib/services/RestService.js +11 -2
- package/lib/services/SubsetService.d.ts +2 -0
- package/lib/services/SubsetService.d.ts.map +1 -1
- package/lib/services/SubsetService.js +33 -0
- package/lib/services/TM1Service.d.ts +2 -0
- package/lib/services/TM1Service.d.ts.map +1 -1
- package/lib/services/TM1Service.js +2 -0
- package/lib/services/index.d.ts +1 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/tests/100PercentParityCheck.test.js +23 -6
- package/lib/tests/applicationService.issue38.test.d.ts +5 -0
- package/lib/tests/applicationService.issue38.test.d.ts.map +1 -0
- package/lib/tests/applicationService.issue38.test.js +237 -0
- package/lib/tests/bugfix28.test.js +12 -4
- package/lib/tests/elementService.issue37.test.d.ts +5 -0
- package/lib/tests/elementService.issue37.test.d.ts.map +1 -0
- package/lib/tests/elementService.issue37.test.js +413 -0
- package/lib/tests/elementService.issue38.test.d.ts +5 -0
- package/lib/tests/elementService.issue38.test.d.ts.map +1 -0
- package/lib/tests/elementService.issue38.test.js +79 -0
- package/lib/tests/hierarchyService.issue38.test.d.ts +5 -0
- package/lib/tests/hierarchyService.issue38.test.d.ts.map +1 -0
- package/lib/tests/hierarchyService.issue38.test.js +460 -0
- package/lib/tests/processService.comprehensive.test.js +7 -7
- package/lib/tests/processService.test.js +220 -0
- package/lib/tests/subsetService.issue38.test.d.ts +5 -0
- package/lib/tests/subsetService.issue38.test.d.ts.map +1 -0
- package/lib/tests/subsetService.issue38.test.js +113 -0
- package/package.json +1 -1
- package/src/index.ts +1 -1
- package/src/services/ApplicationService.ts +278 -6
- package/src/services/ElementService.ts +322 -1
- package/src/services/HierarchyService.ts +419 -1
- package/src/services/ProcessService.ts +124 -111
- package/src/services/RestService.ts +15 -3
- package/src/services/SubsetService.ts +48 -0
- package/src/services/TM1Service.ts +3 -0
- package/src/services/index.ts +1 -1
- package/src/tests/100PercentParityCheck.test.ts +29 -8
- package/src/tests/applicationService.issue38.test.ts +293 -0
- package/src/tests/bugfix28.test.ts +12 -4
- package/src/tests/elementService.issue37.test.ts +571 -0
- package/src/tests/elementService.issue38.test.ts +103 -0
- package/src/tests/hierarchyService.issue38.test.ts +599 -0
- package/src/tests/processService.comprehensive.test.ts +7 -7
- package/src/tests/processService.test.ts +282 -2
- package/src/tests/subsetService.issue38.test.ts +182 -0
package/lib/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { DimensionService } from './services/DimensionService';
|
|
|
4
4
|
export { HierarchyService } from './services/HierarchyService';
|
|
5
5
|
export { SubsetService } from './services/SubsetService';
|
|
6
6
|
export { ObjectService } from './services/ObjectService';
|
|
7
|
-
export { CubeService, ElementService, CellService, ProcessService, ViewService, SecurityService, FileService, SessionService, ConfigurationService, ServerService, MonitoringService, AnnotationService, ApplicationService, AuditLogService, ChoreService, GitService, JobService, LoggerService, ManageService, MessageLogService, PowerBiService, SandboxService, ThreadService, TransactionLogService, UserService } from './services';
|
|
7
|
+
export { CubeService, ElementService, CellService, ProcessService, CompileSyntaxError, ViewService, SecurityService, FileService, SessionService, ConfigurationService, ServerService, MonitoringService, AnnotationService, ApplicationService, AuditLogService, ChoreService, GitService, JobService, LoggerService, ManageService, MessageLogService, PowerBiService, SandboxService, ThreadService, TransactionLogService, UserService } from './services';
|
|
8
8
|
export { TM1Object } from './objects/TM1Object';
|
|
9
9
|
export { Dimension } from './objects/Dimension';
|
|
10
10
|
export { Hierarchy } from './objects/Hierarchy';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EACH,WAAW,EACX,cAAc,EACd,WAAW,EACX,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,23 +3,39 @@ import { RestService } from './RestService';
|
|
|
3
3
|
import { ObjectService } from './ObjectService';
|
|
4
4
|
import { Application, ApplicationTypes, DocumentApplication } from '../objects/Application';
|
|
5
5
|
export declare class ApplicationService extends ObjectService {
|
|
6
|
+
private pathCache;
|
|
6
7
|
constructor(rest: RestService);
|
|
8
|
+
clearPathCache(): void;
|
|
7
9
|
getAllPublicRootNames(): Promise<string[]>;
|
|
8
10
|
getAllPrivateRootNames(): Promise<string[]>;
|
|
9
|
-
getNames(path: string, isPrivate?: boolean): Promise<string[]>;
|
|
10
|
-
get(path: string, applicationType: string | ApplicationTypes, name: string, isPrivate?: boolean): Promise<Application>;
|
|
11
|
+
getNames(path: string, isPrivate?: boolean, useCache?: boolean): Promise<string[]>;
|
|
12
|
+
get(path: string, applicationType: string | ApplicationTypes, name: string, isPrivate?: boolean, useCache?: boolean): Promise<Application>;
|
|
11
13
|
getDocument(path: string, name: string, isPrivate?: boolean): Promise<DocumentApplication>;
|
|
12
14
|
create(application: Application, isPrivate?: boolean): Promise<AxiosResponse>;
|
|
13
15
|
update(application: Application, isPrivate?: boolean): Promise<AxiosResponse>;
|
|
14
16
|
delete(path: string, applicationType: ApplicationTypes, name: string, isPrivate?: boolean): Promise<AxiosResponse>;
|
|
15
17
|
rename(path: string, applicationType: ApplicationTypes, currentName: string, newName: string, isPrivate?: boolean): Promise<AxiosResponse>;
|
|
16
|
-
exists(path: string, applicationType: ApplicationTypes, name: string, isPrivate?: boolean): Promise<boolean>;
|
|
18
|
+
exists(path: string, applicationType: ApplicationTypes, name: string, isPrivate?: boolean, useCache?: boolean): Promise<boolean>;
|
|
17
19
|
updateOrCreate(application: Application, isPrivate?: boolean): Promise<AxiosResponse>;
|
|
18
20
|
updateOrCreateDocumentFromFile(path: string, name: string, filePath: string, isPrivate?: boolean): Promise<AxiosResponse>;
|
|
19
21
|
createDocumentFromFile(filePath: string, applicationPath: string, applicationName: string, isPrivate?: boolean): Promise<AxiosResponse>;
|
|
20
22
|
updateDocumentFromFile(filePath: string, applicationPath: string, applicationName: string, isPrivate?: boolean): Promise<AxiosResponse>;
|
|
23
|
+
discover(path?: string, includePrivate?: boolean, recursive?: boolean, _flat?: boolean): Promise<Array<{
|
|
24
|
+
type: string;
|
|
25
|
+
name: string;
|
|
26
|
+
path: string;
|
|
27
|
+
is_private: boolean;
|
|
28
|
+
}>>;
|
|
29
|
+
private _discoverAtPath;
|
|
30
|
+
private _getContentsRaw;
|
|
31
|
+
private _processItems;
|
|
32
|
+
private _extractTypeFromOdata;
|
|
33
|
+
private _findPrivateBoundary;
|
|
34
|
+
private _buildPathUrl;
|
|
35
|
+
private _resolvePath;
|
|
21
36
|
private parseApplicationType;
|
|
22
37
|
private buildPathSegments;
|
|
38
|
+
private buildPrivatePathSegments;
|
|
23
39
|
private getContentsCollection;
|
|
24
40
|
private buildApplicationUrl;
|
|
25
41
|
private withLegacySuffix;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../src/services/ApplicationService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,aAAa,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACH,WAAW,EACX,gBAAgB,EAIhB,mBAAmB,EAOtB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"ApplicationService.d.ts","sourceRoot":"","sources":["../../src/services/ApplicationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,14 @@ const fs_1 = require("fs");
|
|
|
5
5
|
const ObjectService_1 = require("./ObjectService");
|
|
6
6
|
const Application_1 = require("../objects/Application");
|
|
7
7
|
const Utils_1 = require("../utils/Utils");
|
|
8
|
+
const TM1Exception_1 = require("../exceptions/TM1Exception");
|
|
8
9
|
class ApplicationService extends ObjectService_1.ObjectService {
|
|
9
10
|
constructor(rest) {
|
|
10
11
|
super(rest);
|
|
12
|
+
this.pathCache = new Map();
|
|
13
|
+
}
|
|
14
|
+
clearPathCache() {
|
|
15
|
+
this.pathCache.clear();
|
|
11
16
|
}
|
|
12
17
|
async getAllPublicRootNames() {
|
|
13
18
|
const url = "/Contents('Applications')/Contents";
|
|
@@ -19,21 +24,35 @@ class ApplicationService extends ObjectService_1.ObjectService {
|
|
|
19
24
|
const response = await this.rest.get(url);
|
|
20
25
|
return response.data.value.map((application) => application.Name);
|
|
21
26
|
}
|
|
22
|
-
async getNames(path, isPrivate = false) {
|
|
27
|
+
async getNames(path, isPrivate = false, useCache = false) {
|
|
28
|
+
if (isPrivate) {
|
|
29
|
+
const resolved = await this._resolvePath(path, true, useCache);
|
|
30
|
+
// Leaf collection is always PrivateContents when isPrivate — even if parent path is public
|
|
31
|
+
const url = resolved.baseUrl + '/PrivateContents';
|
|
32
|
+
const response = await this.rest.get(url);
|
|
33
|
+
return response.data.value.map((application) => application.Name);
|
|
34
|
+
}
|
|
23
35
|
const contents = this.getContentsCollection(isPrivate);
|
|
24
36
|
const mid = this.buildPathSegments(path);
|
|
25
37
|
const baseUrl = "/Contents('Applications')" + mid + "/" + contents;
|
|
26
38
|
const response = await this.rest.get(baseUrl);
|
|
27
39
|
return response.data.value.map((application) => application.Name);
|
|
28
40
|
}
|
|
29
|
-
async get(path, applicationType, name, isPrivate = false) {
|
|
41
|
+
async get(path, applicationType, name, isPrivate = false, useCache = false) {
|
|
30
42
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
|
|
31
43
|
const appType = this.parseApplicationType(applicationType);
|
|
32
44
|
if (appType === Application_1.ApplicationTypes.DOCUMENT) {
|
|
33
45
|
return await this.getDocument(path, name, isPrivate);
|
|
34
46
|
}
|
|
35
47
|
const requestName = this.withLegacySuffix(name, appType);
|
|
36
|
-
|
|
48
|
+
let baseUrl;
|
|
49
|
+
if (isPrivate) {
|
|
50
|
+
const resolved = await this._resolvePath(path, true, useCache);
|
|
51
|
+
baseUrl = (0, Utils_1.formatUrl)(resolved.baseUrl + "/PrivateContents('{}')", requestName);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
baseUrl = this.buildApplicationUrl(path, isPrivate, requestName);
|
|
55
|
+
}
|
|
37
56
|
switch (appType) {
|
|
38
57
|
case Application_1.ApplicationTypes.CUBE: {
|
|
39
58
|
const response = await this.rest.get(baseUrl + "?$expand=Cube($select=Name)");
|
|
@@ -55,7 +74,6 @@ class ApplicationService extends ObjectService_1.ObjectService {
|
|
|
55
74
|
return new Application_1.FolderApplication(path, name);
|
|
56
75
|
}
|
|
57
76
|
case Application_1.ApplicationTypes.LINK: {
|
|
58
|
-
await this.rest.get(baseUrl);
|
|
59
77
|
const response = await this.rest.get(baseUrl + "?$expand=*");
|
|
60
78
|
return new Application_1.LinkApplication(path, ((_o = response.data) === null || _o === void 0 ? void 0 : _o.Name) || name, ((_p = response.data) === null || _p === void 0 ? void 0 : _p.URL) || '');
|
|
61
79
|
}
|
|
@@ -135,10 +153,27 @@ class ApplicationService extends ObjectService_1.ObjectService {
|
|
|
135
153
|
const payload = { Name: newName };
|
|
136
154
|
return await this.rest.post(url, JSON.stringify(payload));
|
|
137
155
|
}
|
|
138
|
-
async exists(path, applicationType, name, isPrivate = false) {
|
|
156
|
+
async exists(path, applicationType, name, isPrivate = false, useCache = false) {
|
|
157
|
+
const requestName = this.withLegacySuffix(name, applicationType);
|
|
158
|
+
if (isPrivate) {
|
|
159
|
+
try {
|
|
160
|
+
const resolved = await this._resolvePath(path, true, useCache);
|
|
161
|
+
const url = (0, Utils_1.formatUrl)(resolved.baseUrl + "/PrivateContents('{}')", requestName);
|
|
162
|
+
return await this._exists(url);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
// Path-not-found from _resolvePath means item doesn't exist
|
|
166
|
+
if (error instanceof Error && error.message.includes('not found')) {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
if (error instanceof TM1Exception_1.TM1RestException && error.statusCode === 404) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
139
175
|
const contents = this.getContentsCollection(isPrivate);
|
|
140
176
|
const mid = this.buildPathSegments(path);
|
|
141
|
-
const requestName = this.withLegacySuffix(name, applicationType);
|
|
142
177
|
const url = (0, Utils_1.formatUrl)("/Contents('Applications')" + mid + "/" + contents + "('{}')", requestName);
|
|
143
178
|
return await this._exists(url);
|
|
144
179
|
}
|
|
@@ -166,6 +201,187 @@ class ApplicationService extends ObjectService_1.ObjectService {
|
|
|
166
201
|
const document = new Application_1.DocumentApplication(applicationPath, applicationName, content);
|
|
167
202
|
return await this.update(document, isPrivate);
|
|
168
203
|
}
|
|
204
|
+
// NOTE: `flat` parameter is accepted for tm1py signature parity but output is always flat.
|
|
205
|
+
// Nested (tree) mode is not yet implemented.
|
|
206
|
+
async discover(path = '', includePrivate = false, recursive = false, _flat = false) {
|
|
207
|
+
return this._discoverAtPath(path, includePrivate, recursive, false);
|
|
208
|
+
}
|
|
209
|
+
async _discoverAtPath(path, includePrivate, recursive, inPrivateContext) {
|
|
210
|
+
const results = [];
|
|
211
|
+
if (!inPrivateContext) {
|
|
212
|
+
const publicItems = await this._getContentsRaw(path, false, false);
|
|
213
|
+
const processed = await this._processItems(publicItems, path, false, includePrivate, recursive, false);
|
|
214
|
+
results.push(...processed);
|
|
215
|
+
}
|
|
216
|
+
if (includePrivate || inPrivateContext) {
|
|
217
|
+
const privateItems = await this._getContentsRaw(path, true, inPrivateContext);
|
|
218
|
+
const processed = await this._processItems(privateItems, path, true, includePrivate, recursive, true);
|
|
219
|
+
results.push(...processed);
|
|
220
|
+
}
|
|
221
|
+
return results;
|
|
222
|
+
}
|
|
223
|
+
async _getContentsRaw(path, isPrivate, inPrivateContext) {
|
|
224
|
+
var _a;
|
|
225
|
+
try {
|
|
226
|
+
// Path segments: use PrivateContents only if we're already inside a private folder tree.
|
|
227
|
+
// Leaf collection: PrivateContents if isPrivate or inPrivateContext, else Contents.
|
|
228
|
+
const mid = inPrivateContext
|
|
229
|
+
? this.buildPrivatePathSegments(path)
|
|
230
|
+
: this.buildPathSegments(path);
|
|
231
|
+
const collection = (inPrivateContext || isPrivate) ? 'PrivateContents' : 'Contents';
|
|
232
|
+
const url = "/Contents('Applications')" + mid + "/" + collection;
|
|
233
|
+
const response = await this.rest.get(url);
|
|
234
|
+
return ((_a = response.data) === null || _a === void 0 ? void 0 : _a.value) || [];
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
if (error instanceof TM1Exception_1.TM1RestException && error.statusCode === 404) {
|
|
238
|
+
return [];
|
|
239
|
+
}
|
|
240
|
+
throw error;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async _processItems(items, path, isPrivate, includePrivate, recursive, inPrivateContext) {
|
|
244
|
+
const results = [];
|
|
245
|
+
const folderPromises = [];
|
|
246
|
+
for (const item of items) {
|
|
247
|
+
const odataType = item['@odata.type'] || '';
|
|
248
|
+
const typeName = this._extractTypeFromOdata(odataType);
|
|
249
|
+
const itemName = item.Name || '';
|
|
250
|
+
const itemPath = path ? `${path}/${itemName}` : itemName;
|
|
251
|
+
results.push({
|
|
252
|
+
type: typeName,
|
|
253
|
+
name: itemName,
|
|
254
|
+
path: itemPath,
|
|
255
|
+
is_private: isPrivate || inPrivateContext
|
|
256
|
+
});
|
|
257
|
+
if (recursive && typeName === 'Folder') {
|
|
258
|
+
folderPromises.push(this._discoverAtPath(itemPath, includePrivate, recursive, inPrivateContext || isPrivate));
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
const folderResults = await Promise.all(folderPromises);
|
|
262
|
+
for (const subItems of folderResults) {
|
|
263
|
+
results.push(...subItems);
|
|
264
|
+
}
|
|
265
|
+
return results;
|
|
266
|
+
}
|
|
267
|
+
_extractTypeFromOdata(odataType) {
|
|
268
|
+
if (!odataType)
|
|
269
|
+
return 'Unknown';
|
|
270
|
+
const parts = odataType.split('.');
|
|
271
|
+
const raw = parts[parts.length - 1] || 'Unknown';
|
|
272
|
+
// TM1 returns types like 'FolderApplication', 'CubeApplication' — strip suffix
|
|
273
|
+
// so folder check works consistently
|
|
274
|
+
return raw.replace(/Application$/, '') || raw;
|
|
275
|
+
}
|
|
276
|
+
async _findPrivateBoundary(segments) {
|
|
277
|
+
let publicUrl = "/Contents('Applications')";
|
|
278
|
+
for (let i = 0; i < segments.length; i++) {
|
|
279
|
+
const testUrl = publicUrl + (0, Utils_1.formatUrl)("/Contents('{}')", segments[i]) + "?$top=0";
|
|
280
|
+
try {
|
|
281
|
+
await this.rest.get(testUrl);
|
|
282
|
+
publicUrl += (0, Utils_1.formatUrl)("/Contents('{}')", segments[i]);
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
if (error instanceof TM1Exception_1.TM1RestException && error.statusCode === 404) {
|
|
286
|
+
const privateTestUrl = publicUrl + (0, Utils_1.formatUrl)("/PrivateContents('{}')", segments[i]) + "?$top=0";
|
|
287
|
+
try {
|
|
288
|
+
await this.rest.get(privateTestUrl);
|
|
289
|
+
return i;
|
|
290
|
+
}
|
|
291
|
+
catch (innerError) {
|
|
292
|
+
if (innerError instanceof TM1Exception_1.TM1RestException && innerError.statusCode === 404) {
|
|
293
|
+
return -1;
|
|
294
|
+
}
|
|
295
|
+
throw innerError;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
throw error;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return segments.length;
|
|
302
|
+
}
|
|
303
|
+
_buildPathUrl(segments, privateBoundary) {
|
|
304
|
+
if (!segments.length)
|
|
305
|
+
return '';
|
|
306
|
+
let url = '';
|
|
307
|
+
const boundary = privateBoundary !== null && privateBoundary !== void 0 ? privateBoundary : segments.length;
|
|
308
|
+
for (let i = 0; i < segments.length; i++) {
|
|
309
|
+
if (i < boundary) {
|
|
310
|
+
url += (0, Utils_1.formatUrl)("/Contents('{}')", segments[i]);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
url += (0, Utils_1.formatUrl)("/PrivateContents('{}')", segments[i]);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
return url;
|
|
317
|
+
}
|
|
318
|
+
async _resolvePath(path, isPrivate = false, useCache = false) {
|
|
319
|
+
if (!path || !path.trim()) {
|
|
320
|
+
return { baseUrl: "/Contents('Applications')", inPrivateContext: isPrivate };
|
|
321
|
+
}
|
|
322
|
+
const segments = path.split('/').filter(s => s.trim().length > 0);
|
|
323
|
+
if (!isPrivate) {
|
|
324
|
+
const mid = segments.map(s => (0, Utils_1.formatUrl)("/Contents('{}')", s)).join('');
|
|
325
|
+
return { baseUrl: "/Contents('Applications')" + mid, inPrivateContext: false };
|
|
326
|
+
}
|
|
327
|
+
const cacheKey = path;
|
|
328
|
+
if (useCache && this.pathCache.has(cacheKey)) {
|
|
329
|
+
const boundary = this.pathCache.get(cacheKey);
|
|
330
|
+
const mid = this._buildPathUrl(segments, boundary);
|
|
331
|
+
return {
|
|
332
|
+
baseUrl: "/Contents('Applications')" + mid,
|
|
333
|
+
inPrivateContext: boundary < segments.length
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
// Try all-public first (optimistic)
|
|
337
|
+
try {
|
|
338
|
+
const publicUrl = "/Contents('Applications')" +
|
|
339
|
+
segments.map(s => (0, Utils_1.formatUrl)("/Contents('{}')", s)).join('') + "?$top=0";
|
|
340
|
+
await this.rest.get(publicUrl);
|
|
341
|
+
if (useCache)
|
|
342
|
+
this.pathCache.set(cacheKey, segments.length);
|
|
343
|
+
return {
|
|
344
|
+
baseUrl: "/Contents('Applications')" +
|
|
345
|
+
segments.map(s => (0, Utils_1.formatUrl)("/Contents('{}')", s)).join(''),
|
|
346
|
+
inPrivateContext: false
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
if (!(error instanceof TM1Exception_1.TM1RestException && error.statusCode === 404)) {
|
|
351
|
+
throw error;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
// Try all-private
|
|
355
|
+
try {
|
|
356
|
+
const privateUrl = "/Contents('Applications')" +
|
|
357
|
+
segments.map(s => (0, Utils_1.formatUrl)("/PrivateContents('{}')", s)).join('') + "?$top=0";
|
|
358
|
+
await this.rest.get(privateUrl);
|
|
359
|
+
if (useCache)
|
|
360
|
+
this.pathCache.set(cacheKey, 0);
|
|
361
|
+
return {
|
|
362
|
+
baseUrl: "/Contents('Applications')" +
|
|
363
|
+
segments.map(s => (0, Utils_1.formatUrl)("/PrivateContents('{}')", s)).join(''),
|
|
364
|
+
inPrivateContext: true
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
catch (error) {
|
|
368
|
+
if (!(error instanceof TM1Exception_1.TM1RestException && error.statusCode === 404)) {
|
|
369
|
+
throw error;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
// Iterative boundary search
|
|
373
|
+
const boundary = await this._findPrivateBoundary(segments);
|
|
374
|
+
if (boundary === -1) {
|
|
375
|
+
throw new Error(`Application path not found: ${path}`);
|
|
376
|
+
}
|
|
377
|
+
if (useCache)
|
|
378
|
+
this.pathCache.set(cacheKey, boundary);
|
|
379
|
+
const mid = this._buildPathUrl(segments, boundary);
|
|
380
|
+
return {
|
|
381
|
+
baseUrl: "/Contents('Applications')" + mid,
|
|
382
|
+
inPrivateContext: boundary < segments.length
|
|
383
|
+
};
|
|
384
|
+
}
|
|
169
385
|
parseApplicationType(applicationType) {
|
|
170
386
|
if (typeof applicationType === 'string') {
|
|
171
387
|
const upper = applicationType.toUpperCase();
|
|
@@ -186,6 +402,16 @@ class ApplicationService extends ObjectService_1.ObjectService {
|
|
|
186
402
|
.map(segment => (0, Utils_1.formatUrl)("/Contents('{}')", segment))
|
|
187
403
|
.join('');
|
|
188
404
|
}
|
|
405
|
+
buildPrivatePathSegments(path) {
|
|
406
|
+
if (!path || !path.trim()) {
|
|
407
|
+
return '';
|
|
408
|
+
}
|
|
409
|
+
return path
|
|
410
|
+
.split('/')
|
|
411
|
+
.filter(segment => segment.trim().length > 0)
|
|
412
|
+
.map(segment => (0, Utils_1.formatUrl)("/PrivateContents('{}')", segment))
|
|
413
|
+
.join('');
|
|
414
|
+
}
|
|
189
415
|
getContentsCollection(isPrivate) {
|
|
190
416
|
return isPrivate ? 'PrivateContents' : 'Contents';
|
|
191
417
|
}
|
|
@@ -3,7 +3,7 @@ import { RestService } from './RestService';
|
|
|
3
3
|
import { ObjectService } from './ObjectService';
|
|
4
4
|
import { Element, ElementType } from '../objects/Element';
|
|
5
5
|
import { ElementAttribute } from '../objects/ElementAttribute';
|
|
6
|
-
import { CaseAndSpaceInsensitiveDict } from '../utils/Utils';
|
|
6
|
+
import { CaseAndSpaceInsensitiveDict, CaseAndSpaceInsensitiveSet } from '../utils/Utils';
|
|
7
7
|
export interface ElementsDataFrameOptions {
|
|
8
8
|
skip_consolidations?: boolean;
|
|
9
9
|
attributes?: string[];
|
|
@@ -107,6 +107,10 @@ export declare class ElementService extends ObjectService {
|
|
|
107
107
|
* Add multiple elements in bulk
|
|
108
108
|
*/
|
|
109
109
|
addElements(dimensionName: string, hierarchyName: string, elements: Element[]): Promise<AxiosResponse>;
|
|
110
|
+
/**
|
|
111
|
+
* Add multiple element attributes in bulk
|
|
112
|
+
*/
|
|
113
|
+
addElementAttributes(dimensionName: string, hierarchyName: string, elementAttributes: ElementAttribute[]): Promise<AxiosResponse>;
|
|
110
114
|
/**
|
|
111
115
|
* Delete multiple elements in bulk
|
|
112
116
|
*/
|
|
@@ -220,5 +224,67 @@ export declare class ElementService extends ObjectService {
|
|
|
220
224
|
* Get element identifiers with optional filter pattern
|
|
221
225
|
*/
|
|
222
226
|
getElementIdentifiers(dimensionName: string, hierarchyName: string, filterPattern?: string): Promise<string[]>;
|
|
227
|
+
getNumberOfConsolidatedElements(dimensionName: string, hierarchyName: string): Promise<number>;
|
|
228
|
+
getNumberOfLeafElements(dimensionName: string, hierarchyName: string): Promise<number>;
|
|
229
|
+
getNumberOfNumericElements(dimensionName: string, hierarchyName: string): Promise<number>;
|
|
230
|
+
getNumberOfStringElements(dimensionName: string, hierarchyName: string): Promise<number>;
|
|
231
|
+
/**
|
|
232
|
+
* Get element types from all hierarchies in a single API call
|
|
233
|
+
*/
|
|
234
|
+
getElementTypesFromAllHierarchies(dimensionName: string, skipConsolidations?: boolean): Promise<CaseAndSpaceInsensitiveDict<string>>;
|
|
235
|
+
/**
|
|
236
|
+
* Check if the element attributes cube exists for a dimension
|
|
237
|
+
*/
|
|
238
|
+
attributeCubeExists(dimensionName: string): Promise<boolean>;
|
|
239
|
+
/**
|
|
240
|
+
* Get parent mapping for all elements in a hierarchy
|
|
241
|
+
*/
|
|
242
|
+
getParentsOfAllElements(dimensionName: string, hierarchyName: string): Promise<{
|
|
243
|
+
[elementName: string]: string[];
|
|
244
|
+
}>;
|
|
245
|
+
/**
|
|
246
|
+
* Get the canonical/principal name of an element (resolves aliases)
|
|
247
|
+
*/
|
|
248
|
+
getElementPrincipalName(dimensionName: string, hierarchyName: string, elementName: string): Promise<string>;
|
|
249
|
+
/**
|
|
250
|
+
* Check if one element is a direct parent of another
|
|
251
|
+
*
|
|
252
|
+
* Unlike the related function in TM1 (ELISPAR or ElementIsParent), this function will return false
|
|
253
|
+
* if an invalid element is passed. An invalid dimension or hierarchy will cause the underlying
|
|
254
|
+
* REST call to throw (the error propagates from the TM1 server).
|
|
255
|
+
*/
|
|
256
|
+
elementIsParent(dimensionName: string, hierarchyName: string, parentName: string, elementName: string): Promise<boolean>;
|
|
257
|
+
/**
|
|
258
|
+
* Check if one element is an ancestor of another
|
|
259
|
+
*
|
|
260
|
+
* Unlike the related function in TM1 (ELISANC or ElementIsAncestor), this function will return false
|
|
261
|
+
* if an invalid element is passed; but will raise an exception if an invalid dimension or hierarchy is passed.
|
|
262
|
+
*
|
|
263
|
+
* For method you can pass three values:
|
|
264
|
+
* - 'TI' performs best, but requires admin permissions
|
|
265
|
+
* - 'TM1DrillDownMember' performs well when element is a leaf
|
|
266
|
+
* - 'Descendants' performs well when ancestorName and elementName are Consolidations
|
|
267
|
+
*
|
|
268
|
+
* If no method is passed, defaults to 'TI' for admin users, 'TM1DrillDownMember' otherwise.
|
|
269
|
+
* Note: isAdmin is determined from RestService state; if not set, defaults to 'TM1DrillDownMember'.
|
|
270
|
+
*/
|
|
271
|
+
elementIsAncestor(dimensionName: string, hierarchyName: string, ancestorName: string, elementName: string, method?: string): Promise<boolean>;
|
|
272
|
+
/**
|
|
273
|
+
* Remove a single edge from a hierarchy
|
|
274
|
+
*/
|
|
275
|
+
removeEdge(dimensionName: string, hierarchyName: string, parentName: string, componentName: string): Promise<AxiosResponse>;
|
|
276
|
+
/**
|
|
277
|
+
* Check if a hierarchy exists in a dimension (convenience delegation to HierarchyService)
|
|
278
|
+
*/
|
|
279
|
+
hierarchyExists(dimensionName: string, hierarchyName: string): Promise<boolean>;
|
|
280
|
+
/**
|
|
281
|
+
* Get all element names and alias values for leaf elements as a case-and-space-insensitive set
|
|
282
|
+
*/
|
|
283
|
+
getAllLeafElementIdentifiers(dimensionName: string, hierarchyName: string): Promise<CaseAndSpaceInsensitiveSet>;
|
|
284
|
+
private _getElementCountWithFilter;
|
|
285
|
+
private _buildDrillIntersectionMdx;
|
|
286
|
+
private _getMdxSetCardinality;
|
|
287
|
+
private _elementIsAncestorTi;
|
|
288
|
+
private _retrieveMdxRowsAndCellValuesAsStringSet;
|
|
223
289
|
}
|
|
224
290
|
//# sourceMappingURL=ElementService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElementService.d.ts","sourceRoot":"","sources":["../../src/services/ElementService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ElementService.d.ts","sourceRoot":"","sources":["../../src/services/ElementService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAK/D,OAAO,EAIH,2BAA2B,EAC3B,0BAA0B,EAC7B,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,wBAAwB;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,oBAAY,cAAc;IACtB,kBAAkB,IAAI;IACtB,WAAW,IAAI;CAClB;AAED,qBAAa,cAAe,SAAQ,aAAa;IAC7C;;OAEG;gBAES,IAAI,EAAE,WAAW;IAIhB,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQxF,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAQ9F,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAS9F,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3F,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAOtG,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IASjG,QAAQ,CACjB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,wBAAwB,GAAE,OAAe,GAC1C,OAAO,CAAC,MAAM,EAAE,CAAC;IAcpB;;OAEG;IACU,WAAW,CACpB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,EAAE,CAAC;IAUrB;;OAEG;IACU,eAAe,CACxB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpB;;OAEG;IACU,eAAe,CACxB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,EAAE,CAAC;IAUrB;;OAEG;IACU,mBAAmB,CAC5B,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpB;;OAEG;IACU,uBAAuB,CAChC,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,EAAE,CAAC;IAUrB;;OAEG;IACU,2BAA2B,CACpC,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpB;;OAEG;IACU,kBAAkB,CAC3B,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,EAAE,CAAC;IAUrB;;OAEG;IACU,sBAAsB,CAC/B,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpB;;OAEG;IACU,iBAAiB,CAC1B,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,OAAO,EAAE,CAAC;IAUrB;;OAEG;IACU,qBAAqB,CAC9B,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAUpB;;OAEG;IACU,mBAAmB,CAC5B,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC;IAUlB;;OAEG;IACU,oBAAoB,CAC7B,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,OAAO,GAAE,wBAA6B,GACvC,OAAO,CAAC,SAAS,CAAC;IAuFrB;;OAEG;IACU,WAAW,CACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,EAAE,GACpB,OAAO,CAAC,aAAa,CAAC;IAQzB;;OAEG;IACU,oBAAoB,CAC7B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,gBAAgB,EAAE,GACtC,OAAO,CAAC,aAAa,CAAC;IAQzB;;OAEG;IACU,cAAc,CACvB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,IAAI,CAAC;IAgBhB;;OAEG;IACU,mBAAmB,CAC5B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,IAAI,CAAC;IA4ChB;;OAEG;IACU,QAAQ,CACjB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG;YAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAsB7D;;OAEG;IACU,yBAAyB,CAClC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBP,eAAe,CACxB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAgBlC,UAAU,CACnB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC;IASP,WAAW,CACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC;IASP,YAAY,CACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBP,cAAc,CACvB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBP,aAAa,CACtB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,gBAAgB,GAAE,MAAM,EAAE,GAAG,IAAyB,EACtD,gBAAgB,GAAE,MAAM,EAAE,GAAG,IAA6B,EAC1D,iBAAiB,GAAE,MAAM,EAAE,GAAG,IAAwB,GACvD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IA2BN,oBAAoB,CAC7B,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IASjB,wBAAwB,CACjC,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IASP,sBAAsB,CAC/B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,gBAAgB,GACnC,OAAO,CAAC,aAAa,CAAC;IAOZ,sBAAsB,CAC/B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,MAAM,GAC7B,OAAO,CAAC,aAAa,CAAC;YAQX,mBAAmB;IAwBpB,QAAQ,CACjB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG;YAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;KAAE,GACzD,OAAO,CAAC,aAAa,CAAC;IAcZ,WAAW,CACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,EAC7C,KAAK,GAAE,OAAe,GACvB,OAAO,CAAC,IAAI,CAAC;YAeF,gBAAgB;IAsBjB,4BAA4B,CACrC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,GAAG,EAAE,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC;IA+CH,sBAAsB,CAC/B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,GAAG,GACpB,OAAO,CAAC,aAAa,CAAC;IAQZ,gBAAgB,CACzB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,wBAAwB,GAAE,OAAe,GAC1C,OAAO,CAAC,MAAM,CAAC;IAkBlB;;OAEG;IAEH;;OAEG;IACU,kBAAkB,CAC3B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC;IA2ChB;;OAEG;IACU,kBAAkB,CAC3B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,EAAE,CAAC;IASpB;;OAEG;IACU,6BAA6B,CACtC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,EAAE,CAAC;IAerB;;OAEG;IACU,sBAAsB,CAC/B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,EACtB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC;QAAC,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAsBxC;;OAEG;IACU,WAAW,CACpB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAShB;;OAEG;IACU,aAAa,CACtB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAShB;;OAEG;IACU,cAAc,CACvB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IASL,aAAa,CACtB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,UAAU,GAAE,OAAc,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC;IAapB;;OAEG;IACU,yBAAyB,CAClC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAOpB;;OAEG;IACU,2BAA2B,CACpC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,EAAE,CAAC;IAUrB;;OAEG;IACU,0BAA0B,CACnC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAC;IAclE;;OAEG;IACU,4BAA4B,CACrC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,EAAE,CAAC;IAUrB;;OAEG;IACU,8BAA8B,CACvC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,GAAG,GACpB,OAAO,CAAC,OAAO,EAAE,CAAC;IA0BrB;;OAEG;IACU,wBAAwB,CACjC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,EAAE,CAAC;IAOpB;;OAEG;IACU,qBAAqB,CAC9B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAcP,+BAA+B,CACxC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAIL,uBAAuB,CAChC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAIL,0BAA0B,CACnC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAIL,yBAAyB,CAClC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAIlB;;OAEG;IACU,iCAAiC,CAC1C,aAAa,EAAE,MAAM,EACrB,kBAAkB,GAAE,OAAe,GACpC,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAiB/C;;OAEG;IACU,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzE;;OAEG;IACU,uBAAuB,CAChC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IAa/C;;OAEG;IACU,uBAAuB,CAChC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC;IAKlB;;;;;;OAMG;IACU,eAAe,CACxB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;IAUnB;;;;;;;;;;;;;OAaG;IACU,iBAAiB,CAC1B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IAiCnB;;OAEG;IACU,UAAU,CACnB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,CAAC;IAQzB;;OAEG;IACU,eAAe,CACxB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,OAAO,CAAC;IAKnB;;OAEG;IACU,4BAA4B,CACrC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,0BAA0B,CAAC;YAsBxB,0BAA0B;IAcxC,OAAO,CAAC,0BAA0B;YAyBpB,qBAAqB;YAQrB,oBAAoB;YAWpB,wCAAwC;CAqBzD"}
|