tm1npm 1.5.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/lib/index.d.ts +1 -1
  3. package/lib/index.d.ts.map +1 -1
  4. package/lib/services/ApplicationService.d.ts +19 -3
  5. package/lib/services/ApplicationService.d.ts.map +1 -1
  6. package/lib/services/ApplicationService.js +232 -6
  7. package/lib/services/AsyncOperationService.d.ts +8 -1
  8. package/lib/services/AsyncOperationService.d.ts.map +1 -1
  9. package/lib/services/AsyncOperationService.js +69 -26
  10. package/lib/services/ElementService.d.ts +67 -1
  11. package/lib/services/ElementService.d.ts.map +1 -1
  12. package/lib/services/ElementService.js +214 -0
  13. package/lib/services/FileService.d.ts.map +1 -1
  14. package/lib/services/HierarchyService.d.ts +26 -0
  15. package/lib/services/HierarchyService.d.ts.map +1 -1
  16. package/lib/services/HierarchyService.js +306 -0
  17. package/lib/services/ProcessService.d.ts +40 -22
  18. package/lib/services/ProcessService.d.ts.map +1 -1
  19. package/lib/services/ProcessService.js +118 -111
  20. package/lib/services/RestService.d.ts +213 -25
  21. package/lib/services/RestService.d.ts.map +1 -1
  22. package/lib/services/RestService.js +841 -263
  23. package/lib/services/SubsetService.d.ts +2 -0
  24. package/lib/services/SubsetService.d.ts.map +1 -1
  25. package/lib/services/SubsetService.js +33 -0
  26. package/lib/services/TM1Service.d.ts +44 -1
  27. package/lib/services/TM1Service.d.ts.map +1 -1
  28. package/lib/services/TM1Service.js +96 -4
  29. package/lib/services/index.d.ts +1 -1
  30. package/lib/services/index.d.ts.map +1 -1
  31. package/lib/tests/100PercentParityCheck.test.js +23 -6
  32. package/lib/tests/applicationService.issue38.test.d.ts +5 -0
  33. package/lib/tests/applicationService.issue38.test.d.ts.map +1 -0
  34. package/lib/tests/applicationService.issue38.test.js +237 -0
  35. package/lib/tests/asyncOperationService.test.js +51 -45
  36. package/lib/tests/bugfix28.test.js +12 -4
  37. package/lib/tests/elementService.issue37.test.d.ts +5 -0
  38. package/lib/tests/elementService.issue37.test.d.ts.map +1 -0
  39. package/lib/tests/elementService.issue37.test.js +413 -0
  40. package/lib/tests/elementService.issue38.test.d.ts +5 -0
  41. package/lib/tests/elementService.issue38.test.d.ts.map +1 -0
  42. package/lib/tests/elementService.issue38.test.js +79 -0
  43. package/lib/tests/hierarchyService.issue38.test.d.ts +5 -0
  44. package/lib/tests/hierarchyService.issue38.test.d.ts.map +1 -0
  45. package/lib/tests/hierarchyService.issue38.test.js +460 -0
  46. package/lib/tests/processService.comprehensive.test.js +9 -9
  47. package/lib/tests/processService.test.js +234 -0
  48. package/lib/tests/restService.test.d.ts +0 -4
  49. package/lib/tests/restService.test.d.ts.map +1 -1
  50. package/lib/tests/restService.test.js +1558 -143
  51. package/lib/tests/subsetService.issue38.test.d.ts +5 -0
  52. package/lib/tests/subsetService.issue38.test.d.ts.map +1 -0
  53. package/lib/tests/subsetService.issue38.test.js +113 -0
  54. package/lib/tests/tm1Service.test.js +80 -8
  55. package/package.json +1 -1
  56. package/src/index.ts +1 -1
  57. package/src/services/ApplicationService.ts +282 -10
  58. package/src/services/AsyncOperationService.ts +76 -29
  59. package/src/services/ElementService.ts +322 -1
  60. package/src/services/FileService.ts +3 -3
  61. package/src/services/HierarchyService.ts +419 -1
  62. package/src/services/ProcessService.ts +185 -142
  63. package/src/services/RestService.ts +1021 -267
  64. package/src/services/SubsetService.ts +48 -0
  65. package/src/services/TM1Service.ts +127 -6
  66. package/src/services/index.ts +1 -1
  67. package/src/tests/100PercentParityCheck.test.ts +29 -8
  68. package/src/tests/applicationService.issue38.test.ts +293 -0
  69. package/src/tests/asyncOperationService.test.ts +52 -48
  70. package/src/tests/bugfix28.test.ts +12 -4
  71. package/src/tests/elementService.issue37.test.ts +571 -0
  72. package/src/tests/elementService.issue38.test.ts +103 -0
  73. package/src/tests/hierarchyService.issue38.test.ts +599 -0
  74. package/src/tests/processService.comprehensive.test.ts +10 -10
  75. package/src/tests/processService.test.ts +295 -3
  76. package/src/tests/restService.test.ts +1844 -139
  77. package/src/tests/subsetService.issue38.test.ts +182 -0
  78. package/src/tests/tm1Service.test.ts +95 -11
@@ -44,6 +44,7 @@ class AsyncOperationService {
44
44
  * @returns Promise resolving to the operation status
45
45
  */
46
46
  async getAsyncOperationStatus(operationId) {
47
+ var _a, _b, _c;
47
48
  const operation = this.operations.get(operationId);
48
49
  if (!operation) {
49
50
  throw new TM1Exception_1.TM1Exception(`Operation with ID ${operationId} not found`);
@@ -52,29 +53,79 @@ class AsyncOperationService {
52
53
  if (this.isTerminalStatus(operation.status)) {
53
54
  return operation.status;
54
55
  }
55
- // Poll TM1 server for updated status
56
+ // Locally tracked operations hold a client-side UUID; the TM1 server
57
+ // would return 404 for them. Rely on the in-memory cache, which is
58
+ // populated by background .then()/.catch() callbacks in helpers like
59
+ // ProcessService.executeWithReturnAsync.
60
+ if (operation.trackedLocally) {
61
+ return operation.status;
62
+ }
63
+ // Poll TM1 server for updated status. /_async('{id}') returns 202 while
64
+ // the op is pending, and 200/201 with the final operation payload once done.
65
+ // TM1 v12 may encode embedded failures in the `asyncresult` response header.
56
66
  try {
57
- const url = (0, Utils_1.formatUrl)("/AsyncOperations('{}')", operationId);
58
- const response = await this.rest.get(url);
59
- const serverStatus = this.mapServerStatus(response.data.Status);
60
- // Update operation status
67
+ const url = (0, Utils_1.formatUrl)("/_async('{}')", operationId);
68
+ const response = await this.rest.get(url, { asyncRequestsMode: false });
69
+ const serverStatus = this.deriveStatusFromResponse(response);
61
70
  operation.status = serverStatus;
62
71
  if (this.isTerminalStatus(serverStatus)) {
63
72
  operation.endTime = new Date();
64
- if (serverStatus === OperationStatus.COMPLETED && response.data.Result) {
65
- operation.result = response.data.Result;
73
+ if (serverStatus === OperationStatus.COMPLETED) {
74
+ operation.result = response.data;
66
75
  }
67
- else if (serverStatus === OperationStatus.FAILED && response.data.Error) {
68
- operation.error = response.data.Error;
76
+ else if (serverStatus === OperationStatus.FAILED) {
77
+ operation.error = this.extractErrorFromResponse(response);
69
78
  }
70
79
  }
71
80
  return serverStatus;
72
81
  }
73
82
  catch (error) {
74
- // If server doesn't support AsyncOperations endpoint, return cached status
83
+ // HTTP 4xx/5xx surfaces as a thrown TM1RestException treat as a terminal FAILED
84
+ // so callers stop polling. Network errors (no status) leave cached status intact.
85
+ // Note: 404 is treated as FAILED here (operation never materialized). This differs
86
+ // from ProcessService.pollExecuteWithReturn which treats 404 as "not ready yet"
87
+ // because process async IDs can take a moment to register on the server.
88
+ const status = (_a = error === null || error === void 0 ? void 0 : error.status) !== null && _a !== void 0 ? _a : (_b = error === null || error === void 0 ? void 0 : error.response) === null || _b === void 0 ? void 0 : _b.status;
89
+ if (typeof status === 'number' && status >= 400) {
90
+ operation.status = OperationStatus.FAILED;
91
+ operation.endTime = new Date();
92
+ operation.error = (_c = error === null || error === void 0 ? void 0 : error.message) !== null && _c !== void 0 ? _c : String(error);
93
+ return OperationStatus.FAILED;
94
+ }
75
95
  return operation.status;
76
96
  }
77
97
  }
98
+ deriveStatusFromResponse(response) {
99
+ var _a;
100
+ if (response.status === 202) {
101
+ return OperationStatus.RUNNING;
102
+ }
103
+ const asyncResult = (_a = response.headers) === null || _a === void 0 ? void 0 : _a['asyncresult'];
104
+ if (typeof asyncResult === 'string') {
105
+ const embedded = parseInt(asyncResult.trim().split(/\s+/)[0], 10);
106
+ if (!Number.isNaN(embedded) && (embedded < 200 || embedded >= 300)) {
107
+ return OperationStatus.FAILED;
108
+ }
109
+ }
110
+ if (response.status === 200 || response.status === 201) {
111
+ return OperationStatus.COMPLETED;
112
+ }
113
+ return OperationStatus.PENDING;
114
+ }
115
+ extractErrorFromResponse(response) {
116
+ var _a, _b, _c;
117
+ const asyncResult = (_a = response.headers) === null || _a === void 0 ? void 0 : _a['asyncresult'];
118
+ if (typeof asyncResult === 'string') {
119
+ return asyncResult;
120
+ }
121
+ if (typeof response.data === 'string') {
122
+ return response.data;
123
+ }
124
+ if ((_c = (_b = response.data) === null || _b === void 0 ? void 0 : _b.error) === null || _c === void 0 ? void 0 : _c.message) {
125
+ return response.data.error.message;
126
+ }
127
+ return JSON.stringify(response.data);
128
+ }
78
129
  /**
79
130
  * List all active async operations
80
131
  *
@@ -110,12 +161,11 @@ class AsyncOperationService {
110
161
  // Stop polling if active
111
162
  this.stopPolling(operationId);
112
163
  try {
113
- // Try to cancel on server if supported
114
- const url = (0, Utils_1.formatUrl)("/AsyncOperations('{}')/Cancel", operationId);
115
- await this.rest.post(url, {});
164
+ const url = (0, Utils_1.formatUrl)("/_async('{}')", operationId);
165
+ await this.rest.delete(url, { asyncRequestsMode: false });
116
166
  }
117
167
  catch (error) {
118
- // If server doesn't support cancellation, just mark as cancelled locally
168
+ console.warn(`Failed to cancel async operation ${operationId} on server:`, error);
119
169
  }
120
170
  // Update operation status
121
171
  operation.status = OperationStatus.CANCELLED;
@@ -173,6 +223,9 @@ class AsyncOperationService {
173
223
  */
174
224
  async createAsyncOperation(definition) {
175
225
  const operationId = this.generateOperationId();
226
+ // generateOperationId produces a client-side UUID; the server has no
227
+ // record of it, so polling /_async('{id}') would 404. Mark as locally
228
+ // tracked so getAsyncOperationStatus returns the cached status instead.
176
229
  const operation = {
177
230
  id: operationId,
178
231
  type: definition.type,
@@ -180,7 +233,8 @@ class AsyncOperationService {
180
233
  status: OperationStatus.PENDING,
181
234
  startTime: new Date(),
182
235
  parameters: definition.parameters,
183
- metadata: definition.metadata
236
+ metadata: definition.metadata,
237
+ trackedLocally: true
184
238
  };
185
239
  this.operations.set(operationId, operation);
186
240
  return operationId;
@@ -337,17 +391,6 @@ class AsyncOperationService {
337
391
  status === OperationStatus.CANCELLED ||
338
392
  status === OperationStatus.TIMEOUT;
339
393
  }
340
- mapServerStatus(serverStatus) {
341
- const statusMap = {
342
- 'Pending': OperationStatus.PENDING,
343
- 'Running': OperationStatus.RUNNING,
344
- 'CompletedSuccessfully': OperationStatus.COMPLETED,
345
- 'CompletedWithErrors': OperationStatus.FAILED,
346
- 'Cancelled': OperationStatus.CANCELLED,
347
- 'Timeout': OperationStatus.TIMEOUT
348
- };
349
- return statusMap[serverStatus] || OperationStatus.PENDING;
350
- }
351
394
  stopPolling(operationId) {
352
395
  const intervalId = this.pollingIntervals.get(operationId);
353
396
  if (intervalId) {
@@ -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":"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"}
1
+ {"version":3,"file":"ElementService.d.ts","sourceRoot":"","sources":["../../src/services/ElementService.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,22 @@
1
1
  "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.ElementService = exports.MDXDrillMethod = void 0;
4
13
  const ObjectService_1 = require("./ObjectService");
5
14
  const Element_1 = require("../objects/Element");
6
15
  const ElementAttribute_1 = require("../objects/ElementAttribute");
7
16
  const Process_1 = require("../objects/Process");
17
+ const ProcessService_1 = require("./ProcessService");
18
+ const HierarchyService_1 = require("./HierarchyService");
19
+ const CellService_1 = require("./CellService");
8
20
  const Utils_1 = require("../utils/Utils");
9
21
  var MDXDrillMethod;
10
22
  (function (MDXDrillMethod) {
@@ -225,6 +237,14 @@ class ElementService extends ObjectService_1.ObjectService {
225
237
  const body = elements.map(e => e.bodyAsDict);
226
238
  return await this.rest.post(url, JSON.stringify(body));
227
239
  }
240
+ /**
241
+ * Add multiple element attributes in bulk
242
+ */
243
+ async addElementAttributes(dimensionName, hierarchyName, elementAttributes) {
244
+ const url = (0, Utils_1.formatUrl)("/Dimensions('{}')/Hierarchies('{}')/ElementAttributes", dimensionName, hierarchyName);
245
+ const body = elementAttributes.map(ea => ea.bodyAsDict);
246
+ return await this.rest.post(url, JSON.stringify(body));
247
+ }
228
248
  /**
229
249
  * Delete multiple elements in bulk
230
250
  */
@@ -716,6 +736,200 @@ class ElementService extends ObjectService_1.ObjectService {
716
736
  }
717
737
  return elements.map(name => `[${dimensionName}].[${hierarchy}].[${name}]`);
718
738
  }
739
+ async getNumberOfConsolidatedElements(dimensionName, hierarchyName) {
740
+ return this._getElementCountWithFilter(dimensionName, hierarchyName, `Type eq ${Element_1.ElementType.CONSOLIDATED}`);
741
+ }
742
+ async getNumberOfLeafElements(dimensionName, hierarchyName) {
743
+ return this._getElementCountWithFilter(dimensionName, hierarchyName, `Type ne ${Element_1.ElementType.CONSOLIDATED}`);
744
+ }
745
+ async getNumberOfNumericElements(dimensionName, hierarchyName) {
746
+ return this._getElementCountWithFilter(dimensionName, hierarchyName, `Type eq ${Element_1.ElementType.NUMERIC}`);
747
+ }
748
+ async getNumberOfStringElements(dimensionName, hierarchyName) {
749
+ return this._getElementCountWithFilter(dimensionName, hierarchyName, `Type eq ${Element_1.ElementType.STRING}`);
750
+ }
751
+ /**
752
+ * Get element types from all hierarchies in a single API call
753
+ */
754
+ async getElementTypesFromAllHierarchies(dimensionName, skipConsolidations = false) {
755
+ let url = (0, Utils_1.formatUrl)("/Dimensions('{}')?$expand=Hierarchies($select=Elements;$expand=Elements($select=Name,Type", dimensionName);
756
+ url += skipConsolidations ? ";$filter=Type ne 3))" : "))";
757
+ const response = await this.rest.get(url);
758
+ const result = new Utils_1.CaseAndSpaceInsensitiveDict();
759
+ for (const hierarchy of response.data.Hierarchies) {
760
+ for (const element of hierarchy.Elements) {
761
+ result.set(element.Name, element.Type);
762
+ }
763
+ }
764
+ return result;
765
+ }
766
+ /**
767
+ * Check if the element attributes cube exists for a dimension
768
+ */
769
+ async attributeCubeExists(dimensionName) {
770
+ const url = (0, Utils_1.formatUrl)("/Cubes('{}')", Element_1.Element.ELEMENT_ATTRIBUTES_PREFIX + dimensionName);
771
+ return this._exists(url);
772
+ }
773
+ /**
774
+ * Get parent mapping for all elements in a hierarchy
775
+ */
776
+ async getParentsOfAllElements(dimensionName, hierarchyName) {
777
+ const url = (0, Utils_1.formatUrl)("/Dimensions('{}')/Hierarchies('{}')/Elements?$select=Name&$expand=Parents($select=Name)", dimensionName, hierarchyName);
778
+ const response = await this.rest.get(url);
779
+ const result = {};
780
+ for (const child of response.data.value) {
781
+ result[child.Name] = (child.Parents || []).map((p) => p.Name);
782
+ }
783
+ return result;
784
+ }
785
+ /**
786
+ * Get the canonical/principal name of an element (resolves aliases)
787
+ */
788
+ async getElementPrincipalName(dimensionName, hierarchyName, elementName) {
789
+ const element = await this.get(dimensionName, hierarchyName, elementName);
790
+ return element.name;
791
+ }
792
+ /**
793
+ * Check if one element is a direct parent of another
794
+ *
795
+ * Unlike the related function in TM1 (ELISPAR or ElementIsParent), this function will return false
796
+ * if an invalid element is passed. An invalid dimension or hierarchy will cause the underlying
797
+ * REST call to throw (the error propagates from the TM1 server).
798
+ */
799
+ async elementIsParent(dimensionName, hierarchyName, parentName, elementName) {
800
+ const mdx = this._buildDrillIntersectionMdx(dimensionName, hierarchyName, parentName, elementName, 'TM1DrillDownMember', false);
801
+ const cardinality = await this._getMdxSetCardinality(mdx);
802
+ return cardinality > 0;
803
+ }
804
+ /**
805
+ * Check if one element is an ancestor of another
806
+ *
807
+ * Unlike the related function in TM1 (ELISANC or ElementIsAncestor), this function will return false
808
+ * if an invalid element is passed; but will raise an exception if an invalid dimension or hierarchy is passed.
809
+ *
810
+ * For method you can pass three values:
811
+ * - 'TI' performs best, but requires admin permissions
812
+ * - 'TM1DrillDownMember' performs well when element is a leaf
813
+ * - 'Descendants' performs well when ancestorName and elementName are Consolidations
814
+ *
815
+ * If no method is passed, defaults to 'TI' for admin users, 'TM1DrillDownMember' otherwise.
816
+ * Note: isAdmin is determined from RestService state; if not set, defaults to 'TM1DrillDownMember'.
817
+ */
818
+ async elementIsAncestor(dimensionName, hierarchyName, ancestorName, elementName, method) {
819
+ if (!method) {
820
+ method = this.isAdmin ? 'TI' : 'TM1DrillDownMember';
821
+ }
822
+ if (method.toUpperCase() === 'TI') {
823
+ if (await this._elementIsAncestorTi(dimensionName, hierarchyName, elementName, ancestorName)) {
824
+ return true;
825
+ }
826
+ if (await this.hierarchyExists(dimensionName, hierarchyName)) {
827
+ return false;
828
+ }
829
+ throw new Error(`Hierarchy: '${hierarchyName}' does not exist in dimension: '${dimensionName}'`);
830
+ }
831
+ if (method.toUpperCase() === 'DESCENDANTS' || method.toUpperCase() === 'TM1DRILLDOWNMEMBER') {
832
+ if (!await this.exists(dimensionName, hierarchyName, elementName)) {
833
+ if (!await this.hierarchyExists(dimensionName, hierarchyName)) {
834
+ throw new Error(`Hierarchy '${hierarchyName}' does not exist in dimension '${dimensionName}'`);
835
+ }
836
+ return false;
837
+ }
838
+ }
839
+ const mdx = this._buildDrillIntersectionMdx(dimensionName, hierarchyName, ancestorName, elementName, method, true);
840
+ const cardinality = await this._getMdxSetCardinality(mdx);
841
+ return cardinality > 0;
842
+ }
843
+ /**
844
+ * Remove a single edge from a hierarchy
845
+ */
846
+ async removeEdge(dimensionName, hierarchyName, parentName, componentName) {
847
+ const url = (0, Utils_1.formatUrl)("/Dimensions('{}')/Hierarchies('{}')/Elements('{}')/Edges(ParentName='{}',ComponentName='{}')", dimensionName, hierarchyName, parentName, parentName, componentName);
848
+ return this.rest.delete(url);
849
+ }
850
+ /**
851
+ * Check if a hierarchy exists in a dimension (convenience delegation to HierarchyService)
852
+ */
853
+ async hierarchyExists(dimensionName, hierarchyName) {
854
+ const hierarchyService = new HierarchyService_1.HierarchyService(this.rest);
855
+ return hierarchyService.exists(dimensionName, hierarchyName);
856
+ }
857
+ /**
858
+ * Get all element names and alias values for leaf elements as a case-and-space-insensitive set
859
+ */
860
+ async getAllLeafElementIdentifiers(dimensionName, hierarchyName) {
861
+ const mdxElements = `{ Tm1FilterByLevel ( { Tm1SubsetAll ([${dimensionName}].[${hierarchyName}]) } , 0 ) }`;
862
+ const aliasAttributes = await this.getAliasElementAttributes(dimensionName, hierarchyName);
863
+ if (aliasAttributes.length === 0) {
864
+ const result = await this.executeSetMdx(mdxElements, undefined, ['Name'], null, null);
865
+ const identifiers = new Utils_1.CaseAndSpaceInsensitiveSet();
866
+ for (const record of result) {
867
+ identifiers.add(record[0].Name);
868
+ }
869
+ return identifiers;
870
+ }
871
+ const attrMdx = aliasAttributes.map(a => `[}ElementAttributes_${dimensionName}].[}ElementAttributes_${dimensionName}].[${a}]`).join(',');
872
+ const mdx = `SELECT ${mdxElements} ON ROWS, {${attrMdx}} ON COLUMNS FROM [}ElementAttributes_${dimensionName}]`;
873
+ return this._retrieveMdxRowsAndCellValuesAsStringSet(mdx);
874
+ }
875
+ async _getElementCountWithFilter(dimensionName, hierarchyName, filter) {
876
+ const baseUrl = (0, Utils_1.formatUrl)("/Dimensions('{}')/Hierarchies('{}')/Elements/$count", dimensionName, hierarchyName);
877
+ const url = `${baseUrl}?$filter=${filter}`;
878
+ const response = await this.rest.get(url);
879
+ return parseInt(response.data) || 0;
880
+ }
881
+ _buildDrillIntersectionMdx(dimensionName, hierarchyName, firstElementName, secondElementName, mdxMethod, recursive) {
882
+ const first = `[${dimensionName}].[${hierarchyName}].[${firstElementName}]`;
883
+ const second = `[${dimensionName}].[${hierarchyName}].[${secondElementName}]`;
884
+ let drillSet;
885
+ if (mdxMethod.toUpperCase() === 'TM1DRILLDOWNMEMBER') {
886
+ drillSet = recursive
887
+ ? `{TM1DRILLDOWNMEMBER({${first}}, ALL, RECURSIVE)}`
888
+ : `{TM1DRILLDOWNMEMBER({${first}}, ALL)}`;
889
+ }
890
+ else if (mdxMethod.toUpperCase() === 'DESCENDANTS') {
891
+ drillSet = `{DESCENDANTS(${first}, ${second}.Level, SELF)}`;
892
+ }
893
+ else {
894
+ throw new Error("Invalid MDX Drill Method. Options: 'TM1DrillDownMember' or 'Descendants'");
895
+ }
896
+ return `INTERSECT(${drillSet}, {${second}})`;
897
+ }
898
+ async _getMdxSetCardinality(mdx) {
899
+ const url = '/ExecuteMDXSetExpression?$select=Cardinality';
900
+ const payload = { MDX: mdx };
901
+ const response = await this.rest.post(url, JSON.stringify(payload));
902
+ return response.data.Cardinality || 0;
903
+ }
904
+ async _elementIsAncestorTi(dimensionName, hierarchyName, elementName, ancestorName) {
905
+ const processService = new ProcessService_1.ProcessService(this.rest);
906
+ const code = `ElementIsAncestor('${(0, Utils_1.escapeODataValue)(dimensionName)}', '${(0, Utils_1.escapeODataValue)(hierarchyName)}', '${(0, Utils_1.escapeODataValue)(ancestorName)}', '${(0, Utils_1.escapeODataValue)(elementName)}')=1`;
907
+ return processService.evaluateBooleanTiExpression(code);
908
+ }
909
+ async _retrieveMdxRowsAndCellValuesAsStringSet(mdx) {
910
+ const cellService = new CellService_1.CellService(this.rest);
911
+ const { rows, values } = await cellService.executeMdxRowsAndValues(mdx);
912
+ const result = new Utils_1.CaseAndSpaceInsensitiveSet();
913
+ for (const row of rows) {
914
+ for (const name of row) {
915
+ if (name) {
916
+ result.add(name);
917
+ }
918
+ }
919
+ }
920
+ for (const value of values) {
921
+ if (value && typeof value === 'string' && value.trim() !== '') {
922
+ result.add(value);
923
+ }
924
+ }
925
+ return result;
926
+ }
719
927
  }
720
928
  exports.ElementService = ElementService;
929
+ __decorate([
930
+ Utils_1.requireDataAdmin,
931
+ __metadata("design:type", Function),
932
+ __metadata("design:paramtypes", [String, String, String, String]),
933
+ __metadata("design:returntype", Promise)
934
+ ], ElementService.prototype, "_elementIsAncestorTi", null);
721
935
  //# sourceMappingURL=ElementService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileService.d.ts","sourceRoot":"","sources":["../../src/services/FileService.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,aAAa,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,qBAAa,WAAY,SAAQ,aAAa;IAC1C;OACG;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAY;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAY;IACxD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEhC,IAAI,EAAE,WAAW;IAKhB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM7B,WAAW,CAAC,SAAS,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOtD,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtC,MAAM,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,GAAE,MAAY,EAC1B,UAAU,GAAE,MAAU,GACvB,OAAO,CAAC,aAAa,CAAC;IA8BZ,MAAM,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,GAAE,MAAY,EAC1B,UAAU,GAAE,MAAU,GACvB,OAAO,CAAC,aAAa,CAAC;IAYZ,cAAc,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,GAAE,MAAY,EAC1B,UAAU,GAAE,MAAU,GACvB,OAAO,CAAC,aAAa,CAAC;IAOZ,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOhD,kBAAkB,CAC3B,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAChC,oBAAoB,GAAE,KAAK,GAAG,IAAY,EAC1C,SAAS,GAAE,MAAW,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCP,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9B,aAAa,CAAC,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInD,gBAAgB,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,GAAE,MAAY,EAC1B,UAAU,GAAE,MAAU,GACvB,OAAO,CAAC,aAAa,CAAC;IAIZ,qBAAqB,CAC9B,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAChC,oBAAoB,GAAE,KAAK,GAAG,IAAY,EAC1C,SAAS,GAAE,MAAW,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;YAIN,qBAAqB;YAmBrB,iBAAiB;YAyBjB,2BAA2B;YAO3B,wBAAwB;IAoEtC,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,gBAAgB;CAK3B"}
1
+ {"version":3,"file":"FileService.d.ts","sourceRoot":"","sources":["../../src/services/FileService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,qBAAa,WAAY,SAAQ,aAAa;IAC1C;OACG;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAAY;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAY;IACxD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;gBAEhC,IAAI,EAAE,WAAW;IAKhB,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM7B,WAAW,CAAC,SAAS,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAOtD,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQtC,MAAM,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,GAAE,MAAY,EAC1B,UAAU,GAAE,MAAU,GACvB,OAAO,CAAC,aAAa,CAAC;IA8BZ,MAAM,CACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,GAAE,MAAY,EAC1B,UAAU,GAAE,MAAU,GACvB,OAAO,CAAC,aAAa,CAAC;IAYZ,cAAc,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,GAAE,MAAY,EAC1B,UAAU,GAAE,MAAU,GACvB,OAAO,CAAC,aAAa,CAAC;IAOZ,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOhD,kBAAkB,CAC3B,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAChC,oBAAoB,GAAE,KAAK,GAAG,IAAY,EAC1C,SAAS,GAAE,MAAW,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCP,SAAS,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI9B,aAAa,CAAC,IAAI,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAInD,gBAAgB,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,eAAe,CAAC,EAAE,OAAO,EACzB,YAAY,GAAE,MAAY,EAC1B,UAAU,GAAE,MAAU,GACvB,OAAO,CAAC,aAAa,CAAC;IAIZ,qBAAqB,CAC9B,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,EAChC,oBAAoB,GAAE,KAAK,GAAG,IAAY,EAC1C,SAAS,GAAE,MAAW,GACvB,OAAO,CAAC,MAAM,EAAE,CAAC;YAIN,qBAAqB;YAmBrB,iBAAiB;YAyBjB,2BAA2B;YAO3B,wBAAwB;IAoEtC,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,gBAAgB;CAK3B"}
@@ -2,16 +2,42 @@ import { AxiosResponse } from 'axios';
2
2
  import { RestService } from './RestService';
3
3
  import { Hierarchy } from '../objects/Hierarchy';
4
4
  import { ElementAttribute } from '../objects/ElementAttribute';
5
+ import { Element } from '../objects/Element';
5
6
  import { ObjectService } from './ObjectService';
7
+ import { DataFrame } from '../utils/DataFrame';
6
8
  export declare class HierarchyService extends ObjectService {
9
+ private elementService?;
7
10
  constructor(rest: RestService);
11
+ private getElementService;
8
12
  create(hierarchy: Hierarchy): Promise<AxiosResponse>;
9
13
  get(dimensionName: string, hierarchyName?: string): Promise<Hierarchy>;
10
14
  update(hierarchy: Hierarchy, keepExistingAttributes?: boolean): Promise<AxiosResponse[]>;
15
+ updateOrCreate(hierarchy: Hierarchy): Promise<AxiosResponse | AxiosResponse[]>;
11
16
  delete(dimensionName: string, hierarchyName: string): Promise<AxiosResponse>;
12
17
  exists(dimensionName: string, hierarchyName: string): Promise<boolean>;
13
18
  getAllNames(dimensionName: string): Promise<string[]>;
14
19
  getAll(dimensionName: string): Promise<Hierarchy[]>;
20
+ getHierarchySummary(dimensionName: string, hierarchyName?: string): Promise<Record<string, number>>;
21
+ getDefaultMember(dimensionName: string, hierarchyName?: string): Promise<string | null>;
22
+ updateDefaultMember(dimensionName: string, hierarchyName?: string, memberName?: string): Promise<AxiosResponse | void>;
23
+ private _updateDefaultMemberViaApi;
24
+ private _updateDefaultMemberViaPropsCube;
25
+ removeEdgesUnderConsolidation(dimensionName: string, hierarchyName: string, consolidationElement: string): Promise<AxiosResponse[]>;
26
+ addEdges(dimensionName: string, hierarchyName: string | undefined, edges: {
27
+ [parent: string]: {
28
+ [child: string]: number;
29
+ };
30
+ }): Promise<AxiosResponse>;
31
+ addElements(dimensionName: string, hierarchyName: string, elements: Element[]): Promise<AxiosResponse>;
32
+ addElementAttributes(dimensionName: string, hierarchyName: string, elementAttributes: ElementAttribute[]): Promise<AxiosResponse>;
33
+ updateOrCreateHierarchyFromDataframe(dimensionName: string, hierarchyName: string, df: DataFrame, options?: {
34
+ elementColumn?: string;
35
+ verifyUniqueElements?: boolean;
36
+ elementTypeColumn?: string;
37
+ unwindAll?: boolean;
38
+ unwindConsolidations?: string[];
39
+ deleteOrphanedConsolidations?: boolean;
40
+ }): Promise<void>;
15
41
  updateElementAttributes(hierarchy: Hierarchy, keepExisting?: boolean): Promise<void>;
16
42
  getElementAttributes(dimensionName: string, hierarchyName: string): Promise<ElementAttribute[]>;
17
43
  elementAttributeExists(dimensionName: string, hierarchyName: string, attributeName: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"HierarchyService.d.ts","sourceRoot":"","sources":["../../src/services/HierarchyService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,qBAAa,gBAAiB,SAAQ,aAAa;gBACnC,IAAI,EAAE,WAAW;IAIhB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;IASpD,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAWtE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAsB,GAAE,OAAe,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAY/F,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAK5E,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAetE,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMrD,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IASnD,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkD3F,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAO/F,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc7G,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAMnH,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOrF,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAa1F"}
1
+ {"version":3,"file":"HierarchyService.d.ts","sourceRoot":"","sources":["../../src/services/HierarchyService.ts"],"names":[],"mappings":"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"}