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.
Files changed (80) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/lib/objects/Axis.d.ts +1 -0
  3. package/lib/objects/Axis.d.ts.map +1 -1
  4. package/lib/objects/Axis.js +3 -0
  5. package/lib/objects/Chore.d.ts +2 -2
  6. package/lib/objects/Chore.d.ts.map +1 -1
  7. package/lib/objects/Chore.js +7 -13
  8. package/lib/objects/Cube.d.ts.map +1 -1
  9. package/lib/objects/Cube.js +2 -1
  10. package/lib/objects/Hierarchy.js +10 -10
  11. package/lib/objects/MDXView.d.ts +2 -0
  12. package/lib/objects/MDXView.d.ts.map +1 -1
  13. package/lib/objects/MDXView.js +30 -9
  14. package/lib/objects/NativeView.d.ts +5 -5
  15. package/lib/objects/NativeView.d.ts.map +1 -1
  16. package/lib/objects/NativeView.js +17 -34
  17. package/lib/objects/Process.d.ts +8 -3
  18. package/lib/objects/Process.d.ts.map +1 -1
  19. package/lib/objects/Process.js +143 -33
  20. package/lib/objects/Subset.d.ts.map +1 -1
  21. package/lib/objects/Subset.js +10 -3
  22. package/lib/objects/User.d.ts +5 -5
  23. package/lib/objects/User.d.ts.map +1 -1
  24. package/lib/objects/User.js +14 -23
  25. package/lib/services/ApplicationService.d.ts.map +1 -1
  26. package/lib/services/AsyncOperationService.d.ts +8 -1
  27. package/lib/services/AsyncOperationService.d.ts.map +1 -1
  28. package/lib/services/AsyncOperationService.js +69 -26
  29. package/lib/services/FileService.d.ts.map +1 -1
  30. package/lib/services/ProcessService.d.ts +18 -13
  31. package/lib/services/ProcessService.d.ts.map +1 -1
  32. package/lib/services/ProcessService.js +28 -17
  33. package/lib/services/RestService.d.ts +213 -25
  34. package/lib/services/RestService.d.ts.map +1 -1
  35. package/lib/services/RestService.js +840 -271
  36. package/lib/services/TM1Service.d.ts +42 -1
  37. package/lib/services/TM1Service.d.ts.map +1 -1
  38. package/lib/services/TM1Service.js +94 -4
  39. package/lib/tests/asyncOperationService.test.js +51 -45
  40. package/lib/tests/debuggerService.test.js +3 -1
  41. package/lib/tests/objectModelParity.test.js +362 -11
  42. package/lib/tests/objects.improved.test.js +28 -5
  43. package/lib/tests/processService.comprehensive.test.js +2 -2
  44. package/lib/tests/processService.test.js +20 -6
  45. package/lib/tests/restService.test.d.ts +0 -4
  46. package/lib/tests/restService.test.d.ts.map +1 -1
  47. package/lib/tests/restService.test.js +1558 -143
  48. package/lib/tests/tm1Service.test.js +80 -8
  49. package/lib/tests/user.issue61.test.d.ts +2 -0
  50. package/lib/tests/user.issue61.test.d.ts.map +1 -0
  51. package/lib/tests/user.issue61.test.js +180 -0
  52. package/lib/utils/Utils.d.ts +6 -1
  53. package/lib/utils/Utils.d.ts.map +1 -1
  54. package/lib/utils/Utils.js +56 -7
  55. package/package.json +1 -1
  56. package/src/objects/Axis.ts +4 -0
  57. package/src/objects/Chore.ts +7 -14
  58. package/src/objects/Cube.ts +2 -1
  59. package/src/objects/Hierarchy.ts +11 -11
  60. package/src/objects/MDXView.ts +29 -9
  61. package/src/objects/NativeView.ts +26 -42
  62. package/src/objects/Process.ts +182 -66
  63. package/src/objects/Subset.ts +17 -3
  64. package/src/objects/User.ts +17 -23
  65. package/src/services/ApplicationService.ts +4 -4
  66. package/src/services/AsyncOperationService.ts +76 -29
  67. package/src/services/FileService.ts +3 -3
  68. package/src/services/ProcessService.ts +67 -37
  69. package/src/services/RestService.ts +1020 -278
  70. package/src/services/TM1Service.ts +124 -6
  71. package/src/tests/asyncOperationService.test.ts +52 -48
  72. package/src/tests/debuggerService.test.ts +3 -1
  73. package/src/tests/objectModelParity.test.ts +456 -11
  74. package/src/tests/objects.improved.test.ts +41 -9
  75. package/src/tests/processService.comprehensive.test.ts +3 -3
  76. package/src/tests/processService.test.ts +21 -9
  77. package/src/tests/restService.test.ts +1844 -139
  78. package/src/tests/tm1Service.test.ts +95 -11
  79. package/src/tests/user.issue61.test.ts +206 -0
  80. package/src/utils/Utils.ts +60 -7
package/CHANGELOG.md ADDED
@@ -0,0 +1,89 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented here.
4
+
5
+ ## 2.0.0 — 2026-04-16
6
+
7
+ ### BREAKING CHANGES
8
+
9
+ **RestService HTTP methods now use tm1py-parity semantics**
10
+ (see [#80](https://github.com/KimKaoPoo/tm1npm/pull/95)).
11
+
12
+ - **Timeout unit is seconds, not milliseconds.** `get/post/patch/put/delete`
13
+ now accept a `RequestOptions` object (extending `Omit<AxiosRequestConfig,
14
+ 'timeout'>`) whose `timeout` is specified in seconds to match tm1py's
15
+ `RestService.request(timeout: float)`. The value is converted to
16
+ milliseconds internally before reaching Axios.
17
+ - Migration: `rest.get(url, { timeout: 30000 })` → `rest.get(url, { timeout: 30 })`.
18
+ - TypeScript will **not** flag the change because both old and new
19
+ values are `number`; audit call sites before upgrading.
20
+ - Heuristic to find likely millisecond-valued call sites:
21
+ ```
22
+ rg -n 'rest\.(get|post|patch|put|delete).*timeout:\s*\d{4,}' src/
23
+ ```
24
+
25
+ - **`retrieve_async_response` now returns the full `AxiosResponse`**
26
+ instead of `response.data`. This matches tm1py's `retrieve_async_response`
27
+ which returns `requests.Response`.
28
+ - Migration: `(await rest.retrieve_async_response(id)).Status` →
29
+ `(await rest.retrieve_async_response(id)).data.Status`.
30
+
31
+ - **`get_async_operation_status` was removed.** The `/_async('{id}')`
32
+ endpoint does not expose a `Status` sub-resource, so the helper always
33
+ returned `'Unknown'` on real servers. Use `retrieve_async_response` and
34
+ inspect the response status instead.
35
+
36
+ - **`wait_for_async_operation` parameter order.** `cancel_at_timeout` is
37
+ now the fourth parameter (after `poll_interval_seconds`) to preserve
38
+ the pre-existing signature of callers passing a polling cadence.
39
+
40
+ - **`getConnectionStats().timeout` is now in seconds** (was
41
+ `(config.timeout || 60) * 1000` i.e. milliseconds). Dashboards or
42
+ logging that compare the value against an ms threshold will need
43
+ updating.
44
+ - Migration: `stats.timeout / 1000` → `stats.timeout` (already seconds).
45
+
46
+ ### Added
47
+
48
+ - Central `_request()` dispatcher in `RestService` that routes to sync or
49
+ async execution and honors new per-request options: `asyncRequestsMode`,
50
+ `returnAsyncId`, `cancelAtTimeout`, `timeout` (seconds), `idempotent`,
51
+ `verifyResponse`.
52
+ - `_executeAsyncRequest` sends `Prefer: respond-async[,wait=55]`, parses
53
+ the `Location` header on `202 Accepted`, and polls `/_async('{id}')`
54
+ via `waitTimeGenerator` (exponential backoff capped at
55
+ `asyncPollingMaxDelay`).
56
+ - `cancel_async_operation` and `retrieve_async_response` now target the
57
+ correct TM1 v12 endpoint `/_async('{id}')` (previously
58
+ `/AsyncOperations('{id}')`). `AsyncOperationService` updated to match.
59
+ - `wait_for_async_operation` detects the `asyncresult` response header
60
+ and throws `TM1RestException` on non-2xx embedded status codes to
61
+ match tm1py's `_transform_async_response` semantics.
62
+
63
+ ### Changed
64
+
65
+ - 5xx and network-level retries in the response interceptor now only
66
+ apply when the request is marked `idempotent: true` (default `true`
67
+ for GET, `false` for POST/PATCH/PUT/DELETE).
68
+ - `verifyResponse: false` honors a caller-supplied `validateStatus`
69
+ instead of silently overwriting it.
70
+ - `AsyncOperationService.createAsyncOperation` now marks returned
71
+ operations with `trackedLocally: true` so `getAsyncOperationStatus`
72
+ reads from the in-memory cache instead of polling `/_async('{id}')`
73
+ with a client-side UUID (which the server does not recognize).
74
+ `ProcessService.executeWithReturnAsync` / `pollProcessExecution`
75
+ depend on this behavior for their background-resolve pattern.
76
+ - `retrieve_async_response` no longer throws on non-2xx statuses; it
77
+ returns the raw `AxiosResponse` so the internal poller can retry on
78
+ transient 404s (resource not yet materialized) without aborting.
79
+
80
+ ### Known Parity Gaps
81
+
82
+ - **No `cancel_running_operation` / thread cancellation on sync
83
+ timeout.** tm1py's `request()` catches `Timeout` / `ConnectionError`
84
+ and calls `cancel_running_operation()` (which uses
85
+ `MonitoringService.cancel_thread()` to abort the server-side thread).
86
+ tm1npm cancels via `DELETE /_async('{id}')` in the async-polling path,
87
+ but has no top-level thread-cancellation fallback for sync-mode
88
+ timeouts or pre-202 async timeouts. Tracked for a future PR once
89
+ `MonitoringService.cancelThread` is implemented.
@@ -25,6 +25,7 @@ export declare class ViewTitleSelection {
25
25
  private _selected;
26
26
  constructor(dimensionName: string, subset: AnonymousSubset | Subset, selected: string);
27
27
  get subset(): Subset | AnonymousSubset;
28
+ set subset(value: Subset | AnonymousSubset);
28
29
  get dimensionName(): string;
29
30
  get hierarchyName(): string;
30
31
  get selected(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"Axis.d.ts","sourceRoot":"","sources":["../../src/objects/Axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGnD,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C;OACG;IAEH,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAYnE,IAAW,MAAM,IAAI,MAAM,GAAG,eAAe,CAE5C;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE3C;WAEa,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,iBAAiB;IAepE,OAAO,CAAC,aAAa;CAqBxB;AAGD,qBAAa,kBAAkB;IAC3B;;OAEG;IAEH,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,SAAS,CAAS;gBAEd,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOrF,IAAW,MAAM,IAAI,MAAM,GAAG,eAAe,CAE5C;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEhC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE3C;WAEa,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,kBAAkB;IA+BrE,OAAO,CAAC,aAAa;CA6BxB"}
1
+ {"version":3,"file":"Axis.d.ts","sourceRoot":"","sources":["../../src/objects/Axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGnD,qBAAa,iBAAkB,SAAQ,SAAS;IAC5C;OACG;IAEH,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe;IAYnE,IAAW,MAAM,IAAI,MAAM,GAAG,eAAe,CAE5C;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE3C;WAEa,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,iBAAiB;IAepE,OAAO,CAAC,aAAa;CAqBxB;AAGD,qBAAa,kBAAkB;IAC3B;;OAEG;IAEH,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,SAAS,CAAS;gBAEd,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOrF,IAAW,MAAM,IAAI,MAAM,GAAG,eAAe,CAE5C;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAEhD;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,QAAQ,IAAI,MAAM,CAE5B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEhC;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE3C;WAEa,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,kBAAkB;IA+BrE,OAAO,CAAC,aAAa;CA6BxB"}
@@ -73,6 +73,9 @@ class ViewTitleSelection {
73
73
  get subset() {
74
74
  return this._subset;
75
75
  }
76
+ set subset(value) {
77
+ this._subset = value;
78
+ }
76
79
  get dimensionName() {
77
80
  return this._dimensionName;
78
81
  }
@@ -36,12 +36,12 @@ export declare class Chore extends TM1Object {
36
36
  get body(): string;
37
37
  get bodyAsDict(): any;
38
38
  private constructBody;
39
- reschedule(frequency: ChoreFrequency, startTime?: ChoreStartTime): void;
39
+ setFrequency(frequency: ChoreFrequency, startTime?: ChoreStartTime): void;
40
40
  activate(): void;
41
41
  deactivate(): void;
42
42
  insertTask(newTask: ChoreTask, step?: number): void;
43
43
  get executionPath(): Record<string, string[]>;
44
- rescheduleByTime(days?: number, hours?: number, minutes?: number, seconds?: number): void;
44
+ reschedule(days?: number, hours?: number, minutes?: number, seconds?: number): void;
45
45
  static fromJson(choreAsJson: string): Chore;
46
46
  }
47
47
  //# sourceMappingURL=Chore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chore.d.ts","sourceRoot":"","sources":["../../src/objects/Chore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,KAAM,SAAQ,SAAS;IAChC;;OAEG;IACH,gBAAuB,aAAa,kBAAkB;IACtD,gBAAuB,eAAe,oBAAoB;IAE1D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAc;gBAGxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;WAYhB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK;WAUpC,QAAQ,CAAC,WAAW,EAAE,GAAG,GAAG,KAAK;IAkB/C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IAED,IAAW,SAAS,IAAI,cAAc,CAErC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,EAE7C;IAED,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED,IAAW,cAAc,CAAC,cAAc,EAAE,OAAO,EAEhD;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,CAAC,aAAa,EAAE,MAAM,EAE7C;IAED,IAAW,SAAS,IAAI,cAAc,CAErC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,EAE7C;IAED,IAAW,KAAK,IAAI,SAAS,EAAE,CAE9B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAElC;IAEM,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAOtD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,GAAG,CAE3B;IAED,OAAO,CAAC,aAAa;IAYd,UAAU,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI;IAYvE,QAAQ,IAAI,IAAI;IAMhB,UAAU,IAAI,IAAI;IAMlB,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAc1D,IAAW,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CASnD;IAEM,gBAAgB,CAAC,IAAI,GAAE,MAAU,EAAE,KAAK,GAAE,MAAU,EAAE,OAAO,GAAE,MAAU,EAAE,OAAO,GAAE,MAAU,GAAG,IAAI;WAkB9F,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK;CAOrD"}
1
+ {"version":3,"file":"Chore.d.ts","sourceRoot":"","sources":["../../src/objects/Chore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,KAAM,SAAQ,SAAS;IAChC;;OAEG;IACH,gBAAuB,aAAa,kBAAkB;IACtD,gBAAuB,eAAe,oBAAoB;IAE1D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAc;gBAGxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,cAAc,EACzB,cAAc,EAAE,OAAO,EACvB,MAAM,EAAE,OAAO,EACf,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC;WAYhB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK;WAUpC,QAAQ,CAAC,WAAW,EAAE,GAAG,GAAG,KAAK;IAkB/C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,CAAC,IAAI,EAAE,MAAM,EAE3B;IAED,IAAW,SAAS,IAAI,cAAc,CAErC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,EAE7C;IAED,IAAW,cAAc,IAAI,OAAO,CAEnC;IAED,IAAW,cAAc,CAAC,cAAc,EAAE,OAAO,EAEhD;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,aAAa,CAAC,aAAa,EAAE,MAAM,EAE7C;IAED,IAAW,SAAS,IAAI,cAAc,CAErC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,cAAc,EAE7C;IAED,IAAW,KAAK,IAAI,SAAS,EAAE,CAE9B;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,EAElC;IAEM,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAI9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAOtD,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,GAAG,CAE3B;IAED,OAAO,CAAC,aAAa;IAYd,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI;IAYzE,QAAQ,IAAI,IAAI;IAMhB,UAAU,IAAI,IAAI;IAMlB,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAc1D,IAAW,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CASnD;IAEM,UAAU,CAAC,IAAI,GAAE,MAAU,EAAE,KAAK,GAAE,MAAU,EAAE,OAAO,GAAE,MAAU,EAAE,OAAO,GAAE,MAAU,GAAG,IAAI;WAWxF,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK;CAOrD"}
@@ -98,11 +98,11 @@ class Chore extends TM1Object_1.TM1Object {
98
98
  body.Tasks = this._tasks.map(task => task.bodyAsDict);
99
99
  return body;
100
100
  }
101
- reschedule(frequency, startTime) {
102
- /** Reschedule the chore
101
+ setFrequency(frequency, startTime) {
102
+ /** Replace the chore frequency (and optionally start time)
103
103
  *
104
104
  * :param frequency: new ChoreFrequency
105
- * :param start_time: new ChoreStartTime (optional)
105
+ * :param startTime: new ChoreStartTime (optional)
106
106
  */
107
107
  this._frequency = frequency;
108
108
  if (startTime) {
@@ -140,21 +140,15 @@ class Chore extends TM1Object_1.TM1Object {
140
140
  .map(task => task.processName);
141
141
  return { [this._name]: processNames };
142
142
  }
143
- rescheduleByTime(days = 0, hours = 0, minutes = 0, seconds = 0) {
144
- /** Programmatically reschedule a chore by adding time to current start time
143
+ reschedule(days = 0, hours = 0, minutes = 0, seconds = 0) {
144
+ /** Reschedule the chore by adding time to the current start time.
145
+ *
145
146
  * :param days: Days to add
146
147
  * :param hours: Hours to add
147
148
  * :param minutes: Minutes to add
148
149
  * :param seconds: Seconds to add
149
150
  */
150
- if (this._startTime.datetime) {
151
- const newDateTime = new Date(this._startTime.datetime);
152
- newDateTime.setDate(newDateTime.getDate() + days);
153
- newDateTime.setHours(newDateTime.getHours() + hours);
154
- newDateTime.setMinutes(newDateTime.getMinutes() + minutes);
155
- newDateTime.setSeconds(newDateTime.getSeconds() + seconds);
156
- this._startTime = new ChoreStartTime_1.ChoreStartTime(newDateTime, this._startTime.tz);
157
- }
151
+ this._startTime.add(days, hours, minutes, seconds);
158
152
  }
159
153
  static fromJson(choreAsJson) {
160
154
  /** Alternative constructor from JSON string
@@ -1 +1 @@
1
- {"version":3,"file":"Cube.d.ts","sourceRoot":"","sources":["../../src/objects/Cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,qBAAa,IAAK,SAAQ,SAAS;IAC/B;;OAEG;IAEH,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEX,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK;IAa9E,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,EAAE,CAEhC;IAED,IAAW,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAEpC;IAED,IAAW,QAAQ,IAAI,OAAO,CAK7B;IAED,IAAW,KAAK,IAAI,KAAK,GAAG,SAAS,CAEpC;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,EAUjD;IAED,IAAW,SAAS,IAAI,OAAO,CAK9B;IAED,IAAW,SAAS,IAAI,OAAO,CAK9B;IAED,IAAW,WAAW,IAAI,OAAO,CAKhC;WAEa,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;WAUlC,QAAQ,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAa7C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,GAAG,CAE3B;IAED,OAAO,CAAC,aAAa;CAYxB"}
1
+ {"version":3,"file":"Cube.d.ts","sourceRoot":"","sources":["../../src/objects/Cube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,qBAAa,IAAK,SAAQ,SAAS;IAC/B;;OAEG;IAEH,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEX,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK;IAa9E,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,MAAM,EAAE,CAEhC;IAED,IAAW,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAEpC;IAED,IAAW,QAAQ,IAAI,OAAO,CAK7B;IAED,IAAW,KAAK,IAAI,KAAK,GAAG,SAAS,CAEpC;IAED,IAAW,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,EAUjD;IAED,IAAW,SAAS,IAAI,OAAO,CAK9B;IAED,IAAW,SAAS,IAAI,OAAO,CAK9B;IAED,IAAW,WAAW,IAAI,OAAO,CAKhC;WAEa,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;WAUlC,QAAQ,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAa7C,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,UAAU,IAAI,GAAG,CAE3B;IAED,OAAO,CAAC,aAAa;CAYxB"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Cube = void 0;
4
4
  const TM1Object_1 = require("./TM1Object");
5
5
  const Rules_1 = require("./Rules");
6
+ const Utils_1 = require("../utils/Utils");
6
7
  class Cube extends TM1Object_1.TM1Object {
7
8
  constructor(name, dimensions, rules) {
8
9
  /**
@@ -97,7 +98,7 @@ class Cube extends TM1Object_1.TM1Object {
97
98
  constructBody() {
98
99
  const body = {
99
100
  Name: this._name,
100
- Dimensions: this._dimensions.map(dim => ({ Name: dim }))
101
+ "Dimensions@odata.bind": this._dimensions.map(dim => `Dimensions('${(0, Utils_1.buildUrlFriendlyObjectName)(dim)}')`)
101
102
  };
102
103
  if (this._rules) {
103
104
  body.Rules = this._rules.text;
@@ -17,7 +17,7 @@ class Hierarchy extends TM1Object_1.TM1Object {
17
17
  this._dimensionName = dimensionName;
18
18
  if (elements) {
19
19
  for (const elem of elements) {
20
- this._elements.set(elem.name.toLowerCase(), elem);
20
+ this._elements.set((0, Utils_1.lowerAndDropSpaces)(elem.name), elem);
21
21
  }
22
22
  }
23
23
  this._elementAttributes = elementAttributes ? [...elementAttributes] : [];
@@ -65,7 +65,7 @@ class Hierarchy extends TM1Object_1.TM1Object {
65
65
  return Array.from(this._elements.values());
66
66
  }
67
67
  get elementNames() {
68
- return Array.from(this._elements.keys());
68
+ return Array.from(this._elements.values()).map(e => e.name);
69
69
  }
70
70
  get elementAttributes() {
71
71
  return this._elementAttributes;
@@ -122,16 +122,16 @@ class Hierarchy extends TM1Object_1.TM1Object {
122
122
  return edges;
123
123
  }
124
124
  addElement(element) {
125
- this._elements.set(element.name.toLowerCase(), element);
125
+ this._elements.set((0, Utils_1.lowerAndDropSpaces)(element.name), element);
126
126
  }
127
127
  removeElement(elementName) {
128
- return this._elements.delete(elementName.toLowerCase());
128
+ return this._elements.delete((0, Utils_1.lowerAndDropSpaces)(elementName));
129
129
  }
130
130
  getElement(elementName) {
131
- return this._elements.get(elementName.toLowerCase());
131
+ return this._elements.get((0, Utils_1.lowerAndDropSpaces)(elementName));
132
132
  }
133
133
  hasElement(elementName) {
134
- return this._elements.has(elementName.toLowerCase());
134
+ return this._elements.has((0, Utils_1.lowerAndDropSpaces)(elementName));
135
135
  }
136
136
  addEdge(parentName, componentName, weight = 1) {
137
137
  if (!this._edges.has(parentName)) {
@@ -158,7 +158,7 @@ class Hierarchy extends TM1Object_1.TM1Object {
158
158
  this._elementAttributes.push(elementAttribute);
159
159
  }
160
160
  removeElementAttribute(attributeName) {
161
- const index = this._elementAttributes.findIndex(ea => ea.name.toLowerCase() === attributeName.toLowerCase());
161
+ const index = this._elementAttributes.findIndex(ea => (0, Utils_1.caseAndSpaceInsensitiveEquals)(ea.name, attributeName));
162
162
  if (index !== -1) {
163
163
  this._elementAttributes.splice(index, 1);
164
164
  return true;
@@ -166,10 +166,10 @@ class Hierarchy extends TM1Object_1.TM1Object {
166
166
  return false;
167
167
  }
168
168
  getElementAttribute(attributeName) {
169
- return this._elementAttributes.find(ea => ea.name.toLowerCase() === attributeName.toLowerCase());
169
+ return this._elementAttributes.find(ea => (0, Utils_1.caseAndSpaceInsensitiveEquals)(ea.name, attributeName));
170
170
  }
171
171
  hasElementAttribute(attributeName) {
172
- return this._elementAttributes.some(ea => ea.name.toLowerCase() === attributeName.toLowerCase());
172
+ return this._elementAttributes.some(ea => (0, Utils_1.caseAndSpaceInsensitiveEquals)(ea.name, attributeName));
173
173
  }
174
174
  getAncestors(elementName, recursive = false) {
175
175
  const normalizedTarget = (0, Utils_1.lowerAndDropSpaces)(elementName);
@@ -260,7 +260,7 @@ class Hierarchy extends TM1Object_1.TM1Object {
260
260
  const element = this._elements.get(oldKey);
261
261
  element.name = newName;
262
262
  this._elements.delete(oldKey);
263
- this._elements.set(newName.toLowerCase(), element);
263
+ this._elements.set((0, Utils_1.lowerAndDropSpaces)(newName), element);
264
264
  }
265
265
  // Rebuild edges replacing all occurrences of oldName
266
266
  const newEdges = new Map();
@@ -4,6 +4,8 @@ export declare class MDXView extends View {
4
4
  *
5
5
  * IMPORTANT. MDXViews can't be seen through the old TM1 clients (Archict, Perspectives). They do exist though!
6
6
  */
7
+ private static readonly _DYNAMIC_PROPERTIES_EXCLUDED_KEYS;
8
+ private static _filterDynamicProperties;
7
9
  private _mdx;
8
10
  private _dynamicProperties;
9
11
  constructor(cubeName: string, viewName: string, MDX: string, dynamicProperties?: Record<string, any>);
@@ -1 +1 @@
1
- {"version":3,"file":"MDXView.d.ts","sourceRoot":"","sources":["../../src/objects/MDXView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,qBAAa,OAAQ,SAAQ,IAAI;IAC7B;;;OAGG;IAEH,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,kBAAkB,CAAsB;gBAEpC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMpG,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAW,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAElD;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEtD;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAEM,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;WAkCrE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;WAKxD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IASnE,OAAO,CAAC,aAAa;CAUxB"}
1
+ {"version":3,"file":"MDXView.d.ts","sourceRoot":"","sources":["../../src/objects/MDXView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,qBAAa,OAAQ,SAAQ,IAAI;IAC7B;;;OAGG;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAStD;IAEH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAUvC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,kBAAkB,CAAsB;gBAEpC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMpG,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,IAAW,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAElD;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAEtD;IAED,IAAW,IAAI,IAAI,MAAM,CAExB;IAEM,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;WAkCrE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;WAKxD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO;IASnE,OAAO,CAAC,aAAa;CASxB"}
@@ -4,6 +4,15 @@ exports.MDXView = void 0;
4
4
  const View_1 = require("./View");
5
5
  const Utils_1 = require("../utils/Utils");
6
6
  class MDXView extends View_1.View {
7
+ static _filterDynamicProperties(properties) {
8
+ const out = {};
9
+ for (const key of Object.keys(properties)) {
10
+ if (!MDXView._DYNAMIC_PROPERTIES_EXCLUDED_KEYS.has(key)) {
11
+ out[key] = properties[key];
12
+ }
13
+ }
14
+ return out;
15
+ }
7
16
  constructor(cubeName, viewName, MDX, dynamicProperties) {
8
17
  super(cubeName, viewName);
9
18
  this._mdx = MDX;
@@ -59,19 +68,31 @@ class MDXView extends View_1.View {
59
68
  return MDXView.fromDict(viewAsDict, cubeName);
60
69
  }
61
70
  static fromDict(viewAsDict, cubeName) {
62
- var _a;
63
- return new MDXView(((_a = viewAsDict.Cube) === null || _a === void 0 ? void 0 : _a.Name) || cubeName, viewAsDict.Name, viewAsDict.MDX, viewAsDict.Properties || {});
71
+ return new MDXView(cubeName ? cubeName : viewAsDict.Cube.Name, viewAsDict.Name, viewAsDict.MDX, MDXView._filterDynamicProperties(viewAsDict));
64
72
  }
65
73
  constructBody() {
66
- const mdxViewAsDict = {};
67
- mdxViewAsDict['@odata.type'] = 'ibm.tm1.api.v1.MDXView';
68
- mdxViewAsDict['Name'] = this._name;
69
- mdxViewAsDict['MDX'] = this._mdx;
70
- if (Object.keys(this._dynamicProperties).length > 0) {
71
- mdxViewAsDict['Properties'] = this._dynamicProperties;
72
- }
74
+ const mdxViewAsDict = {
75
+ '@odata.type': 'ibm.tm1.api.v1.MDXView',
76
+ Name: this._name,
77
+ MDX: this._mdx,
78
+ ...MDXView._filterDynamicProperties(this._dynamicProperties),
79
+ };
73
80
  return JSON.stringify(mdxViewAsDict);
74
81
  }
75
82
  }
76
83
  exports.MDXView = MDXView;
84
+ /** Abstraction on TM1 MDX view
85
+ *
86
+ * IMPORTANT. MDXViews can't be seen through the old TM1 clients (Archict, Perspectives). They do exist though!
87
+ */
88
+ MDXView._DYNAMIC_PROPERTIES_EXCLUDED_KEYS = new Set([
89
+ '@odata.type',
90
+ '@odata.context',
91
+ '@odata.etag',
92
+ 'Name',
93
+ 'MDX',
94
+ 'Cube',
95
+ 'Attributes',
96
+ 'LocalizedAttributes',
97
+ ]);
77
98
  //# sourceMappingURL=MDXView.js.map
@@ -31,12 +31,12 @@ export declare class NativeView extends View {
31
31
  addTitle(title: ViewTitleSelection): void;
32
32
  addColumn(column: ViewAxisSelection): void;
33
33
  addRow(row: ViewAxisSelection): void;
34
- removeTitle(dimensionName: string): boolean;
35
- removeColumn(dimensionName: string): boolean;
36
- removeRow(dimensionName: string): boolean;
34
+ removeTitle(dimensionName: string): void;
35
+ removeColumn(dimensionName: string): void;
36
+ removeRow(dimensionName: string): void;
37
37
  substituteTitle(dimension: string, element: string): void;
38
- static fromJSON(viewAsJson: string, cubeName: string): NativeView;
39
- static fromDict(viewAsDict: any, cubeName: string): NativeView;
38
+ static fromJSON(viewAsJson: string, cubeName?: string): NativeView;
39
+ static fromDict(viewAsDict: any, cubeName?: string): NativeView;
40
40
  private constructBody;
41
41
  }
42
42
  //# sourceMappingURL=NativeView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NativeView.d.ts","sourceRoot":"","sources":["../../src/objects/NativeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI/D,qBAAa,UAAW,SAAQ,IAAI;IAChC;;;;OAIG;IAEH,OAAO,CAAC,qBAAqB,CAAU;IACvC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAAsB;gBAG/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,oBAAoB,GAAE,OAAe,EACrC,iBAAiB,GAAE,OAAe,EAClC,YAAY,GAAE,MAAsB,EACpC,MAAM,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACrC,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACrC,IAAI,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAWtC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,IAAI,iBAAiB,EAAE,CAErC;IAED,IAAW,OAAO,IAAI,iBAAiB,EAAE,CAExC;IAED,IAAW,MAAM,IAAI,kBAAkB,EAAE,CAExC;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,MAAM,CAwDzB;IAED,IAAW,oBAAoB,IAAI,OAAO,CAEzC;IAED,IAAW,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAE7C;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAE1C;IAED,IAAW,kBAAkB,IAAI,OAAO,CAEvC;IAED,IAAW,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAG3C;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAEpC;IAEM,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIzC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAI1C,MAAM,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAIpC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAU3C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAU5C,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAUzC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;WAelD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;WAK1D,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAoCrE,OAAO,CAAC,aAAa;CAmBxB"}
1
+ {"version":3,"file":"NativeView.d.ts","sourceRoot":"","sources":["../../src/objects/NativeView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAI/D,qBAAa,UAAW,SAAQ,IAAI;IAChC;;;;OAIG;IAEH,OAAO,CAAC,qBAAqB,CAAU;IACvC,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAAsB;gBAG/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,oBAAoB,GAAE,OAAe,EACrC,iBAAiB,GAAE,OAAe,EAClC,YAAY,GAAE,MAAsB,EACpC,MAAM,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,EACrC,OAAO,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACrC,IAAI,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAWtC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,IAAI,IAAI,iBAAiB,EAAE,CAErC;IAED,IAAW,OAAO,IAAI,iBAAiB,EAAE,CAExC;IAED,IAAW,MAAM,IAAI,kBAAkB,EAAE,CAExC;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,MAAM,CAwDzB;IAED,IAAW,oBAAoB,IAAI,OAAO,CAEzC;IAED,IAAW,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAE7C;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAE1C;IAED,IAAW,kBAAkB,IAAI,OAAO,CAEvC;IAED,IAAW,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAG3C;IAED,IAAW,YAAY,IAAI,MAAM,CAEhC;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,MAAM,EAEpC;IAEM,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIzC,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAI1C,MAAM,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAIpC,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAKxC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAKzC,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAKtC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;WAWlD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU;WAK3D,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU;IAuCtE,OAAO,CAAC,aAAa;CAmBxB"}
@@ -119,68 +119,51 @@ class NativeView extends View_1.View {
119
119
  this._rows.push(row);
120
120
  }
121
121
  removeTitle(dimensionName) {
122
- const index = this._titles.findIndex(t => (0, Utils_1.caseAndSpaceInsensitiveEquals)(t.dimensionName, dimensionName));
123
- if (index !== -1) {
124
- this._titles.splice(index, 1);
125
- return true;
126
- }
127
- return false;
122
+ this._titles = this._titles.filter(t => !(0, Utils_1.caseAndSpaceInsensitiveEquals)(t.dimensionName, dimensionName));
128
123
  }
129
124
  removeColumn(dimensionName) {
130
- const index = this._columns.findIndex(c => (0, Utils_1.caseAndSpaceInsensitiveEquals)(c.subset.dimensionName, dimensionName));
131
- if (index !== -1) {
132
- this._columns.splice(index, 1);
133
- return true;
134
- }
135
- return false;
125
+ this._columns = this._columns.filter(c => !(0, Utils_1.caseAndSpaceInsensitiveEquals)(c.dimensionName, dimensionName));
136
126
  }
137
127
  removeRow(dimensionName) {
138
- const index = this._rows.findIndex(r => (0, Utils_1.caseAndSpaceInsensitiveEquals)(r.subset.dimensionName, dimensionName));
139
- if (index !== -1) {
140
- this._rows.splice(index, 1);
141
- return true;
142
- }
143
- return false;
128
+ this._rows = this._rows.filter(r => !(0, Utils_1.caseAndSpaceInsensitiveEquals)(r.dimensionName, dimensionName));
144
129
  }
145
130
  substituteTitle(dimension, element) {
146
- /** Substitute the title element for a given dimension
147
- *
148
- * :param dimension: str, name of dimension
149
- * :param element: str, name of element
150
- */
151
131
  for (const title of this._titles) {
152
132
  if ((0, Utils_1.caseAndSpaceInsensitiveEquals)(title.dimensionName, dimension)) {
133
+ title.subset = new Subset_1.AnonymousSubset(dimension, dimension, undefined, [element]);
153
134
  title.selected = element;
154
135
  return;
155
136
  }
156
137
  }
157
- throw new Error(`No title with dimension: '${dimension}'`);
138
+ throw new Error(`Dimension '${dimension}' not found in titles`);
158
139
  }
159
140
  static fromJSON(viewAsJson, cubeName) {
160
141
  const viewAsDict = JSON.parse(viewAsJson);
161
142
  return NativeView.fromDict(viewAsDict, cubeName);
162
143
  }
163
144
  static fromDict(viewAsDict, cubeName) {
164
- const view = new NativeView(cubeName, viewAsDict.Name, viewAsDict.SuppressEmptyColumns || false, viewAsDict.SuppressEmptyRows || false, viewAsDict.FormatString || "0.#########");
165
- // Parse titles
145
+ let resolvedCube = cubeName;
146
+ if (!resolvedCube) {
147
+ const ctx = viewAsDict["@odata.context"];
148
+ resolvedCube = ctx.substring(20, ctx.indexOf("')/"));
149
+ }
150
+ const view = new NativeView(resolvedCube, viewAsDict.Name, viewAsDict.SuppressEmptyColumns || false, viewAsDict.SuppressEmptyRows || false, viewAsDict.FormatString || "0.#########");
166
151
  if (viewAsDict.Titles) {
167
152
  for (const titleDict of viewAsDict.Titles) {
168
- const title = Axis_1.ViewTitleSelection.fromDict(titleDict);
169
- view.addTitle(title);
153
+ if (!('Selected' in titleDict) && !('Selected@odata.bind' in titleDict)) {
154
+ throw new Error("View Title dict must contain 'Selected' or 'Selected@odata.bind' as key");
155
+ }
156
+ view.addTitle(Axis_1.ViewTitleSelection.fromDict(titleDict));
170
157
  }
171
158
  }
172
- // Parse columns
173
159
  if (viewAsDict.Columns) {
174
160
  for (const columnDict of viewAsDict.Columns) {
175
- const column = Axis_1.ViewAxisSelection.fromDict(columnDict);
176
- view.addColumn(column);
161
+ view.addColumn(Axis_1.ViewAxisSelection.fromDict(columnDict));
177
162
  }
178
163
  }
179
- // Parse rows
180
164
  if (viewAsDict.Rows) {
181
165
  for (const rowDict of viewAsDict.Rows) {
182
- const row = Axis_1.ViewAxisSelection.fromDict(rowDict);
183
- view.addRow(row);
166
+ view.addRow(Axis_1.ViewAxisSelection.fromDict(rowDict));
184
167
  }
185
168
  }
186
169
  return view;
@@ -39,11 +39,11 @@ export declare class Process extends TM1Object {
39
39
  private _datasourceJsonVariableMapping;
40
40
  static maxStatements(version: string): number;
41
41
  static addGeneratedStringToCode(code: string): string;
42
- constructor(name: string, hasSecurityAccess?: boolean, uiData?: string, parameters?: Iterable<any>, variables?: Iterable<any>, variablesUiData?: Iterable<any>, prologProcedure?: string, metadataProcedure?: string, dataProcedure?: string, epilogProcedure?: string, datasourceType?: string, datasourceAsciiDecimalSeparator?: string, datasourceAsciiDelimiterChar?: string, datasourceAsciiDelimiterType?: string, datasourceAsciiHeaderRecords?: number, datasourceAsciiQuoteCharacter?: string, datasourceAsciiThousandSeparator?: string, datasourceDataSourceNameForClient?: string, datasourceDataSourceNameForServer?: string, datasourcePassword?: string, datasourceUserName?: string, datasourceQuery?: string, datasourceUsesUnicode?: boolean, datasourceView?: string, datasourceSubset?: string, datasourceJsonRootPointer?: string, datasourceJsonVariableMapping?: string);
42
+ constructor(name: string, hasSecurityAccess?: boolean | undefined, uiData?: string, parameters?: Iterable<any>, variables?: Iterable<any>, variablesUiData?: Iterable<any>, prologProcedure?: string, metadataProcedure?: string, dataProcedure?: string, epilogProcedure?: string, datasourceType?: string, datasourceAsciiDecimalSeparator?: string, datasourceAsciiDelimiterChar?: string, datasourceAsciiDelimiterType?: string, datasourceAsciiHeaderRecords?: number | string, datasourceAsciiQuoteCharacter?: string, datasourceAsciiThousandSeparator?: string, datasourceDataSourceNameForClient?: string, datasourceDataSourceNameForServer?: string, datasourcePassword?: string, datasourceUserName?: string, datasourceQuery?: string, datasourceUsesUnicode?: boolean | string, datasourceView?: string, datasourceSubset?: string, datasourceJsonRootPointer?: string, datasourceJsonVariableMapping?: string);
43
43
  get name(): string;
44
44
  set name(value: string);
45
- get hasSecurityAccess(): boolean;
46
- set hasSecurityAccess(value: boolean);
45
+ get hasSecurityAccess(): boolean | undefined;
46
+ set hasSecurityAccess(value: boolean | undefined);
47
47
  get uiData(): string;
48
48
  set uiData(value: string);
49
49
  get parameters(): any[];
@@ -63,6 +63,11 @@ export declare class Process extends TM1Object {
63
63
  get datasourceType(): string;
64
64
  set datasourceType(value: string);
65
65
  static fromDict(processAsDict: any): Process;
66
+ addVariable(name: string, variableType: string): void;
67
+ removeVariable(name: string): void;
68
+ addParameter(name: string, prompt: string, value: string | number, parameterType?: string): void;
69
+ removeParameter(name: string): void;
70
+ dropParameterTypes(): void;
66
71
  get body(): string;
67
72
  get bodyAsDict(): any;
68
73
  private constructBody;
@@ -1 +1 @@
1
- {"version":3,"file":"Process.d.ts","sourceRoot":"","sources":["../../src/objects/Process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Process.d.ts","sourceRoot":"","sources":["../../src/objects/Process.ts"],"names":[],"mappings":"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"}