tm1npm 1.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 (451) hide show
  1. package/.env.example +16 -0
  2. package/.eslintrc.js +28 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  5. package/.github/ISSUE_TEMPLATE/question.md +24 -0
  6. package/.github/workflows/publish-npm.yml +53 -0
  7. package/.github/workflows/test-on-tag.yml +172 -0
  8. package/DEVELOPMENT_GUIDE.md +587 -0
  9. package/LICENSE +21 -0
  10. package/README.md +580 -0
  11. package/jest.ci.config.js +83 -0
  12. package/jest.config.js +68 -0
  13. package/lib/exceptions/TM1Exception.d.ts +17 -0
  14. package/lib/exceptions/TM1Exception.d.ts.map +1 -0
  15. package/lib/exceptions/TM1Exception.js +36 -0
  16. package/lib/exceptions/TM1RestException.d.ts +10 -0
  17. package/lib/exceptions/TM1RestException.d.ts.map +1 -0
  18. package/lib/exceptions/TM1RestException.js +17 -0
  19. package/lib/exceptions/TM1TimeoutException.d.ts +9 -0
  20. package/lib/exceptions/TM1TimeoutException.d.ts.map +1 -0
  21. package/lib/exceptions/TM1TimeoutException.js +16 -0
  22. package/lib/index.d.ts +41 -0
  23. package/lib/index.d.ts.map +1 -0
  24. package/lib/index.js +132 -0
  25. package/lib/objects/Annotation.d.ts +36 -0
  26. package/lib/objects/Annotation.d.ts.map +1 -0
  27. package/lib/objects/Annotation.js +134 -0
  28. package/lib/objects/Application.d.ts +67 -0
  29. package/lib/objects/Application.d.ts.map +1 -0
  30. package/lib/objects/Application.js +125 -0
  31. package/lib/objects/Axis.d.ts +36 -0
  32. package/lib/objects/Axis.d.ts.map +1 -0
  33. package/lib/objects/Axis.js +103 -0
  34. package/lib/objects/Chore.d.ts +43 -0
  35. package/lib/objects/Chore.d.ts.map +1 -0
  36. package/lib/objects/Chore.js +129 -0
  37. package/lib/objects/ChoreFrequency.d.ts +23 -0
  38. package/lib/objects/ChoreFrequency.d.ts.map +1 -0
  39. package/lib/objects/ChoreFrequency.js +61 -0
  40. package/lib/objects/ChoreStartTime.d.ts +15 -0
  41. package/lib/objects/ChoreStartTime.d.ts.map +1 -0
  42. package/lib/objects/ChoreStartTime.js +85 -0
  43. package/lib/objects/ChoreTask.d.ts +28 -0
  44. package/lib/objects/ChoreTask.d.ts.map +1 -0
  45. package/lib/objects/ChoreTask.js +66 -0
  46. package/lib/objects/Cube.d.ts +26 -0
  47. package/lib/objects/Cube.d.ts.map +1 -0
  48. package/lib/objects/Cube.js +109 -0
  49. package/lib/objects/Dimension.d.ts +26 -0
  50. package/lib/objects/Dimension.d.ts.map +1 -0
  51. package/lib/objects/Dimension.js +86 -0
  52. package/lib/objects/Element.d.ts +35 -0
  53. package/lib/objects/Element.d.ts.map +1 -0
  54. package/lib/objects/Element.js +115 -0
  55. package/lib/objects/ElementAttribute.d.ts +28 -0
  56. package/lib/objects/ElementAttribute.d.ts.map +1 -0
  57. package/lib/objects/ElementAttribute.js +97 -0
  58. package/lib/objects/Git.d.ts +21 -0
  59. package/lib/objects/Git.d.ts.map +1 -0
  60. package/lib/objects/Git.js +49 -0
  61. package/lib/objects/GitCommit.d.ts +12 -0
  62. package/lib/objects/GitCommit.d.ts.map +1 -0
  63. package/lib/objects/GitCommit.js +26 -0
  64. package/lib/objects/GitPlan.d.ts +35 -0
  65. package/lib/objects/GitPlan.d.ts.map +1 -0
  66. package/lib/objects/GitPlan.js +78 -0
  67. package/lib/objects/GitRemote.d.ts +12 -0
  68. package/lib/objects/GitRemote.d.ts.map +1 -0
  69. package/lib/objects/GitRemote.js +26 -0
  70. package/lib/objects/Hierarchy.d.ts +47 -0
  71. package/lib/objects/Hierarchy.d.ts.map +1 -0
  72. package/lib/objects/Hierarchy.js +165 -0
  73. package/lib/objects/MDXView.d.ts +19 -0
  74. package/lib/objects/MDXView.d.ts.map +1 -0
  75. package/lib/objects/MDXView.js +67 -0
  76. package/lib/objects/NativeView.d.ts +39 -0
  77. package/lib/objects/NativeView.d.ts.map +1 -0
  78. package/lib/objects/NativeView.js +209 -0
  79. package/lib/objects/Process.d.ts +70 -0
  80. package/lib/objects/Process.d.ts.map +1 -0
  81. package/lib/objects/Process.js +210 -0
  82. package/lib/objects/ProcessDebugBreakpoint.d.ts +60 -0
  83. package/lib/objects/ProcessDebugBreakpoint.d.ts.map +1 -0
  84. package/lib/objects/ProcessDebugBreakpoint.js +168 -0
  85. package/lib/objects/ProcessParameter.d.ts +23 -0
  86. package/lib/objects/ProcessParameter.d.ts.map +1 -0
  87. package/lib/objects/ProcessParameter.js +55 -0
  88. package/lib/objects/ProcessVariable.d.ts +26 -0
  89. package/lib/objects/ProcessVariable.d.ts.map +1 -0
  90. package/lib/objects/ProcessVariable.js +63 -0
  91. package/lib/objects/Rules.d.ts +30 -0
  92. package/lib/objects/Rules.d.ts.map +1 -0
  93. package/lib/objects/Rules.js +103 -0
  94. package/lib/objects/Sandbox.d.ts +21 -0
  95. package/lib/objects/Sandbox.d.ts.map +1 -0
  96. package/lib/objects/Sandbox.js +64 -0
  97. package/lib/objects/Server.d.ts +27 -0
  98. package/lib/objects/Server.d.ts.map +1 -0
  99. package/lib/objects/Server.js +26 -0
  100. package/lib/objects/Subset.d.ts +44 -0
  101. package/lib/objects/Subset.d.ts.map +1 -0
  102. package/lib/objects/Subset.js +222 -0
  103. package/lib/objects/TM1Object.d.ts +8 -0
  104. package/lib/objects/TM1Object.d.ts.map +1 -0
  105. package/lib/objects/TM1Object.js +17 -0
  106. package/lib/objects/TM1Project.d.ts +74 -0
  107. package/lib/objects/TM1Project.d.ts.map +1 -0
  108. package/lib/objects/TM1Project.js +409 -0
  109. package/lib/objects/User.d.ts +42 -0
  110. package/lib/objects/User.d.ts.map +1 -0
  111. package/lib/objects/User.js +157 -0
  112. package/lib/objects/View.d.ts +19 -0
  113. package/lib/objects/View.d.ts.map +1 -0
  114. package/lib/objects/View.js +33 -0
  115. package/lib/objects/index.d.ts +30 -0
  116. package/lib/objects/index.d.ts.map +1 -0
  117. package/lib/objects/index.js +68 -0
  118. package/lib/services/AnnotationService.d.ts +17 -0
  119. package/lib/services/AnnotationService.d.ts.map +1 -0
  120. package/lib/services/AnnotationService.js +91 -0
  121. package/lib/services/ApplicationService.d.ts +21 -0
  122. package/lib/services/ApplicationService.d.ts.map +1 -0
  123. package/lib/services/ApplicationService.js +227 -0
  124. package/lib/services/AuditLogService.d.ts +15 -0
  125. package/lib/services/AuditLogService.d.ts.map +1 -0
  126. package/lib/services/AuditLogService.js +153 -0
  127. package/lib/services/CellService.d.ts +191 -0
  128. package/lib/services/CellService.d.ts.map +1 -0
  129. package/lib/services/CellService.js +597 -0
  130. package/lib/services/ChoreService.d.ts +24 -0
  131. package/lib/services/ChoreService.d.ts.map +1 -0
  132. package/lib/services/ChoreService.js +219 -0
  133. package/lib/services/ConfigurationService.d.ts +18 -0
  134. package/lib/services/ConfigurationService.d.ts.map +1 -0
  135. package/lib/services/ConfigurationService.js +60 -0
  136. package/lib/services/CubeService.d.ts +43 -0
  137. package/lib/services/CubeService.d.ts.map +1 -0
  138. package/lib/services/CubeService.js +296 -0
  139. package/lib/services/DimensionService.d.ts +21 -0
  140. package/lib/services/DimensionService.d.ts.map +1 -0
  141. package/lib/services/DimensionService.js +146 -0
  142. package/lib/services/ElementService.d.ts +132 -0
  143. package/lib/services/ElementService.d.ts.map +1 -0
  144. package/lib/services/ElementService.js +579 -0
  145. package/lib/services/FileService.d.ts +14 -0
  146. package/lib/services/FileService.d.ts.map +1 -0
  147. package/lib/services/FileService.js +65 -0
  148. package/lib/services/GitService.d.ts +23 -0
  149. package/lib/services/GitService.d.ts.map +1 -0
  150. package/lib/services/GitService.js +225 -0
  151. package/lib/services/HierarchyService.d.ts +32 -0
  152. package/lib/services/HierarchyService.d.ts.map +1 -0
  153. package/lib/services/HierarchyService.js +235 -0
  154. package/lib/services/JobService.d.ts +13 -0
  155. package/lib/services/JobService.d.ts.map +1 -0
  156. package/lib/services/JobService.js +83 -0
  157. package/lib/services/LoggerService.d.ts +16 -0
  158. package/lib/services/LoggerService.d.ts.map +1 -0
  159. package/lib/services/LoggerService.js +101 -0
  160. package/lib/services/ManageService.d.ts +47 -0
  161. package/lib/services/ManageService.d.ts.map +1 -0
  162. package/lib/services/ManageService.js +221 -0
  163. package/lib/services/MessageLogService.d.ts +13 -0
  164. package/lib/services/MessageLogService.d.ts.map +1 -0
  165. package/lib/services/MessageLogService.js +175 -0
  166. package/lib/services/MonitoringService.d.ts +29 -0
  167. package/lib/services/MonitoringService.d.ts.map +1 -0
  168. package/lib/services/MonitoringService.js +86 -0
  169. package/lib/services/ObjectService.d.ts +8 -0
  170. package/lib/services/ObjectService.d.ts.map +1 -0
  171. package/lib/services/ObjectService.js +20 -0
  172. package/lib/services/PowerBiService.d.ts +13 -0
  173. package/lib/services/PowerBiService.d.ts.map +1 -0
  174. package/lib/services/PowerBiService.js +52 -0
  175. package/lib/services/ProcessService.d.ts +57 -0
  176. package/lib/services/ProcessService.d.ts.map +1 -0
  177. package/lib/services/ProcessService.js +499 -0
  178. package/lib/services/RestService.d.ts +68 -0
  179. package/lib/services/RestService.d.ts.map +1 -0
  180. package/lib/services/RestService.js +166 -0
  181. package/lib/services/SandboxService.d.ts +28 -0
  182. package/lib/services/SandboxService.d.ts.map +1 -0
  183. package/lib/services/SandboxService.js +197 -0
  184. package/lib/services/SecurityService.d.ts +33 -0
  185. package/lib/services/SecurityService.d.ts.map +1 -0
  186. package/lib/services/SecurityService.js +249 -0
  187. package/lib/services/ServerService.d.ts +55 -0
  188. package/lib/services/ServerService.d.ts.map +1 -0
  189. package/lib/services/ServerService.js +247 -0
  190. package/lib/services/SessionService.d.ts +15 -0
  191. package/lib/services/SessionService.d.ts.map +1 -0
  192. package/lib/services/SessionService.js +68 -0
  193. package/lib/services/SubsetService.d.ts +13 -0
  194. package/lib/services/SubsetService.d.ts.map +1 -0
  195. package/lib/services/SubsetService.js +46 -0
  196. package/lib/services/TM1Service.d.ts +39 -0
  197. package/lib/services/TM1Service.d.ts.map +1 -0
  198. package/lib/services/TM1Service.js +94 -0
  199. package/lib/services/ThreadService.d.ts +15 -0
  200. package/lib/services/ThreadService.d.ts.map +1 -0
  201. package/lib/services/ThreadService.js +104 -0
  202. package/lib/services/TransactionLogService.d.ts +11 -0
  203. package/lib/services/TransactionLogService.d.ts.map +1 -0
  204. package/lib/services/TransactionLogService.js +124 -0
  205. package/lib/services/UserService.d.ts +14 -0
  206. package/lib/services/UserService.d.ts.map +1 -0
  207. package/lib/services/UserService.js +103 -0
  208. package/lib/services/ViewService.d.ts +30 -0
  209. package/lib/services/ViewService.d.ts.map +1 -0
  210. package/lib/services/ViewService.js +331 -0
  211. package/lib/services/index.d.ts +26 -0
  212. package/lib/services/index.d.ts.map +1 -0
  213. package/lib/services/index.js +56 -0
  214. package/lib/tests/100PercentParityCheck.test.d.ts +6 -0
  215. package/lib/tests/100PercentParityCheck.test.d.ts.map +1 -0
  216. package/lib/tests/100PercentParityCheck.test.js +143 -0
  217. package/lib/tests/basic.test.d.ts +6 -0
  218. package/lib/tests/basic.test.d.ts.map +1 -0
  219. package/lib/tests/basic.test.js +52 -0
  220. package/lib/tests/cellService.test.d.ts +6 -0
  221. package/lib/tests/cellService.test.d.ts.map +1 -0
  222. package/lib/tests/cellService.test.js +311 -0
  223. package/lib/tests/ciSetup.d.ts +6 -0
  224. package/lib/tests/ciSetup.d.ts.map +1 -0
  225. package/lib/tests/ciSetup.js +23 -0
  226. package/lib/tests/comprehensive.service.test.d.ts +6 -0
  227. package/lib/tests/comprehensive.service.test.d.ts.map +1 -0
  228. package/lib/tests/comprehensive.service.test.js +507 -0
  229. package/lib/tests/connection.test.d.ts +6 -0
  230. package/lib/tests/connection.test.d.ts.map +1 -0
  231. package/lib/tests/connection.test.js +89 -0
  232. package/lib/tests/cubeService.test.d.ts +6 -0
  233. package/lib/tests/cubeService.test.d.ts.map +1 -0
  234. package/lib/tests/cubeService.test.js +368 -0
  235. package/lib/tests/dimensionService.comprehensive.test.d.ts +7 -0
  236. package/lib/tests/dimensionService.comprehensive.test.d.ts.map +1 -0
  237. package/lib/tests/dimensionService.comprehensive.test.js +614 -0
  238. package/lib/tests/dimensionService.test.d.ts +6 -0
  239. package/lib/tests/dimensionService.test.d.ts.map +1 -0
  240. package/lib/tests/dimensionService.test.js +293 -0
  241. package/lib/tests/edgeCases.test.d.ts +6 -0
  242. package/lib/tests/edgeCases.test.d.ts.map +1 -0
  243. package/lib/tests/edgeCases.test.js +301 -0
  244. package/lib/tests/elementService.comprehensive.test.d.ts +7 -0
  245. package/lib/tests/elementService.comprehensive.test.d.ts.map +1 -0
  246. package/lib/tests/elementService.comprehensive.test.js +846 -0
  247. package/lib/tests/elementService.test.d.ts +6 -0
  248. package/lib/tests/elementService.test.d.ts.map +1 -0
  249. package/lib/tests/elementService.test.js +350 -0
  250. package/lib/tests/enhancedCellService.test.d.ts +2 -0
  251. package/lib/tests/enhancedCellService.test.d.ts.map +1 -0
  252. package/lib/tests/enhancedCellService.test.js +152 -0
  253. package/lib/tests/enhancedCubeService.test.d.ts +2 -0
  254. package/lib/tests/enhancedCubeService.test.d.ts.map +1 -0
  255. package/lib/tests/enhancedCubeService.test.js +246 -0
  256. package/lib/tests/enhancedElementService.test.d.ts +2 -0
  257. package/lib/tests/enhancedElementService.test.d.ts.map +1 -0
  258. package/lib/tests/enhancedElementService.test.js +199 -0
  259. package/lib/tests/enhancedViewService.test.d.ts +2 -0
  260. package/lib/tests/enhancedViewService.test.d.ts.map +1 -0
  261. package/lib/tests/enhancedViewService.test.js +260 -0
  262. package/lib/tests/errorHandling.test.d.ts +6 -0
  263. package/lib/tests/errorHandling.test.d.ts.map +1 -0
  264. package/lib/tests/errorHandling.test.js +227 -0
  265. package/lib/tests/exceptions.test.d.ts +7 -0
  266. package/lib/tests/exceptions.test.d.ts.map +1 -0
  267. package/lib/tests/exceptions.test.js +257 -0
  268. package/lib/tests/hierarchyService.test.d.ts +6 -0
  269. package/lib/tests/hierarchyService.test.d.ts.map +1 -0
  270. package/lib/tests/hierarchyService.test.js +294 -0
  271. package/lib/tests/index.test.d.ts +6 -0
  272. package/lib/tests/index.test.d.ts.map +1 -0
  273. package/lib/tests/index.test.js +346 -0
  274. package/lib/tests/integration.test.d.ts +6 -0
  275. package/lib/tests/integration.test.d.ts.map +1 -0
  276. package/lib/tests/integration.test.js +302 -0
  277. package/lib/tests/integrationTests.test.d.ts +2 -0
  278. package/lib/tests/integrationTests.test.d.ts.map +1 -0
  279. package/lib/tests/integrationTests.test.js +252 -0
  280. package/lib/tests/mdx.advanced.test.d.ts +6 -0
  281. package/lib/tests/mdx.advanced.test.d.ts.map +1 -0
  282. package/lib/tests/mdx.advanced.test.js +437 -0
  283. package/lib/tests/objects.improved.test.d.ts +7 -0
  284. package/lib/tests/objects.improved.test.d.ts.map +1 -0
  285. package/lib/tests/objects.improved.test.js +302 -0
  286. package/lib/tests/performance.test.d.ts +6 -0
  287. package/lib/tests/performance.test.d.ts.map +1 -0
  288. package/lib/tests/performance.test.js +264 -0
  289. package/lib/tests/processService.comprehensive.test.d.ts +7 -0
  290. package/lib/tests/processService.comprehensive.test.d.ts.map +1 -0
  291. package/lib/tests/processService.comprehensive.test.js +656 -0
  292. package/lib/tests/processService.test.d.ts +6 -0
  293. package/lib/tests/processService.test.d.ts.map +1 -0
  294. package/lib/tests/processService.test.js +322 -0
  295. package/lib/tests/restService.test.d.ts +6 -0
  296. package/lib/tests/restService.test.d.ts.map +1 -0
  297. package/lib/tests/restService.test.js +177 -0
  298. package/lib/tests/security.advanced.test.d.ts +6 -0
  299. package/lib/tests/security.advanced.test.d.ts.map +1 -0
  300. package/lib/tests/security.advanced.test.js +407 -0
  301. package/lib/tests/security.test.d.ts +6 -0
  302. package/lib/tests/security.test.d.ts.map +1 -0
  303. package/lib/tests/security.test.js +204 -0
  304. package/lib/tests/securityService.comprehensive.test.d.ts +7 -0
  305. package/lib/tests/securityService.comprehensive.test.d.ts.map +1 -0
  306. package/lib/tests/securityService.comprehensive.test.js +457 -0
  307. package/lib/tests/setup.d.ts +4 -0
  308. package/lib/tests/setup.d.ts.map +1 -0
  309. package/lib/tests/setup.js +40 -0
  310. package/lib/tests/simpleCoverage.test.d.ts +6 -0
  311. package/lib/tests/simpleCoverage.test.d.ts.map +1 -0
  312. package/lib/tests/simpleCoverage.test.js +236 -0
  313. package/lib/tests/stress.performance.test.d.ts +6 -0
  314. package/lib/tests/stress.performance.test.d.ts.map +1 -0
  315. package/lib/tests/stress.performance.test.js +423 -0
  316. package/lib/tests/subsetService.test.d.ts +6 -0
  317. package/lib/tests/subsetService.test.d.ts.map +1 -0
  318. package/lib/tests/subsetService.test.js +271 -0
  319. package/lib/tests/testConfig.d.ts +18 -0
  320. package/lib/tests/testConfig.d.ts.map +1 -0
  321. package/lib/tests/testConfig.js +38 -0
  322. package/lib/tests/testUtils.d.ts +9 -0
  323. package/lib/tests/testUtils.d.ts.map +1 -0
  324. package/lib/tests/testUtils.js +100 -0
  325. package/lib/tests/tm1Service.test.d.ts +7 -0
  326. package/lib/tests/tm1Service.test.d.ts.map +1 -0
  327. package/lib/tests/tm1Service.test.js +290 -0
  328. package/lib/tests/viewService.test.d.ts +6 -0
  329. package/lib/tests/viewService.test.d.ts.map +1 -0
  330. package/lib/tests/viewService.test.js +240 -0
  331. package/lib/utils/Utils.d.ts +90 -0
  332. package/lib/utils/Utils.d.ts.map +1 -0
  333. package/lib/utils/Utils.js +379 -0
  334. package/package.json +81 -0
  335. package/run-all-tests.js +296 -0
  336. package/src/exceptions/TM1Exception.ts +38 -0
  337. package/src/exceptions/TM1RestException.ts +17 -0
  338. package/src/exceptions/TM1TimeoutException.ts +15 -0
  339. package/src/index.ts +94 -0
  340. package/src/objects/Annotation.ts +194 -0
  341. package/src/objects/Application.ts +146 -0
  342. package/src/objects/Axis.ts +149 -0
  343. package/src/objects/Chore.ts +174 -0
  344. package/src/objects/ChoreFrequency.ts +83 -0
  345. package/src/objects/ChoreStartTime.ts +111 -0
  346. package/src/objects/ChoreTask.ts +92 -0
  347. package/src/objects/Cube.ts +125 -0
  348. package/src/objects/Dimension.ts +107 -0
  349. package/src/objects/Element.ts +153 -0
  350. package/src/objects/ElementAttribute.ts +115 -0
  351. package/src/objects/Git.ts +86 -0
  352. package/src/objects/GitCommit.ts +31 -0
  353. package/src/objects/GitPlan.ts +121 -0
  354. package/src/objects/GitRemote.ts +31 -0
  355. package/src/objects/Hierarchy.ts +229 -0
  356. package/src/objects/MDXView.ts +91 -0
  357. package/src/objects/NativeView.ts +268 -0
  358. package/src/objects/Process.ts +320 -0
  359. package/src/objects/ProcessDebugBreakpoint.ts +239 -0
  360. package/src/objects/ProcessParameter.ts +76 -0
  361. package/src/objects/ProcessVariable.ts +89 -0
  362. package/src/objects/Rules.ts +117 -0
  363. package/src/objects/Sandbox.ts +90 -0
  364. package/src/objects/Server.ts +45 -0
  365. package/src/objects/Subset.ts +323 -0
  366. package/src/objects/TM1Object.ts +17 -0
  367. package/src/objects/TM1Project.ts +587 -0
  368. package/src/objects/User.ts +198 -0
  369. package/src/objects/View.ts +43 -0
  370. package/src/objects/index.ts +36 -0
  371. package/src/services/AnnotationService.ts +107 -0
  372. package/src/services/ApplicationService.ts +279 -0
  373. package/src/services/AuditLogService.ts +172 -0
  374. package/src/services/CellService.ts +814 -0
  375. package/src/services/ChoreService.ts +219 -0
  376. package/src/services/ConfigurationService.ts +69 -0
  377. package/src/services/CubeService.ts +338 -0
  378. package/src/services/DimensionService.ts +168 -0
  379. package/src/services/ElementService.ts +966 -0
  380. package/src/services/FileService.ts +67 -0
  381. package/src/services/GitService.ts +324 -0
  382. package/src/services/HierarchyService.ts +284 -0
  383. package/src/services/JobService.ts +59 -0
  384. package/src/services/LoggerService.ts +118 -0
  385. package/src/services/ManageService.ts +322 -0
  386. package/src/services/MessageLogService.ts +211 -0
  387. package/src/services/MonitoringService.ts +105 -0
  388. package/src/services/ObjectService.ts +21 -0
  389. package/src/services/PowerBiService.ts +85 -0
  390. package/src/services/ProcessService.ts +589 -0
  391. package/src/services/RestService.ts +224 -0
  392. package/src/services/SandboxService.ts +217 -0
  393. package/src/services/SecurityService.ts +284 -0
  394. package/src/services/ServerService.ts +313 -0
  395. package/src/services/SessionService.ts +81 -0
  396. package/src/services/SubsetService.ts +52 -0
  397. package/src/services/TM1Service.ts +133 -0
  398. package/src/services/ThreadService.ts +83 -0
  399. package/src/services/TransactionLogService.ts +148 -0
  400. package/src/services/UserService.ts +77 -0
  401. package/src/services/ViewService.ts +398 -0
  402. package/src/services/index.ts +28 -0
  403. package/src/tests/100PercentParityCheck.test.ts +166 -0
  404. package/src/tests/basic.test.ts +59 -0
  405. package/src/tests/cellService.test.ts +405 -0
  406. package/src/tests/ciSetup.ts +26 -0
  407. package/src/tests/comprehensive.service.test.ts +653 -0
  408. package/src/tests/config.ini.template +23 -0
  409. package/src/tests/connection.test.ts +90 -0
  410. package/src/tests/cubeService.test.ts +458 -0
  411. package/src/tests/dimensionService.comprehensive.test.ts +786 -0
  412. package/src/tests/dimensionService.test.ts +373 -0
  413. package/src/tests/edgeCases.test.ts +358 -0
  414. package/src/tests/elementService.comprehensive.test.ts +1190 -0
  415. package/src/tests/elementService.test.ts +472 -0
  416. package/src/tests/enhancedCellService.test.ts +237 -0
  417. package/src/tests/enhancedCubeService.test.ts +384 -0
  418. package/src/tests/enhancedElementService.test.ts +301 -0
  419. package/src/tests/enhancedViewService.test.ts +373 -0
  420. package/src/tests/errorHandling.test.ts +264 -0
  421. package/src/tests/exceptions.test.ts +313 -0
  422. package/src/tests/hierarchyService.test.ts +386 -0
  423. package/src/tests/index.test.ts +376 -0
  424. package/src/tests/integration.test.ts +333 -0
  425. package/src/tests/integrationTests.test.ts +302 -0
  426. package/src/tests/mdx.advanced.test.ts +513 -0
  427. package/src/tests/objects.improved.test.ts +385 -0
  428. package/src/tests/performance.test.ts +314 -0
  429. package/src/tests/processService.comprehensive.test.ts +933 -0
  430. package/src/tests/processService.test.ts +409 -0
  431. package/src/tests/restService.test.ts +218 -0
  432. package/src/tests/security.advanced.test.ts +464 -0
  433. package/src/tests/security.test.ts +233 -0
  434. package/src/tests/securityService.comprehensive.test.ts +582 -0
  435. package/src/tests/setup.ts +42 -0
  436. package/src/tests/simpleCoverage.test.ts +287 -0
  437. package/src/tests/stress.performance.test.ts +531 -0
  438. package/src/tests/subsetService.test.ts +350 -0
  439. package/src/tests/testConfig.ts +53 -0
  440. package/src/tests/testUtils.ts +94 -0
  441. package/src/tests/tm1Service.test.ts +361 -0
  442. package/src/tests/viewService.test.ts +324 -0
  443. package/src/utils/Utils.ts +395 -0
  444. package/tests/README.md +57 -0
  445. package/tests/connection/test-connection.ts +86 -0
  446. package/tests/edge-cases/edge-cases-test.ts +244 -0
  447. package/tests/integration/working-test.ts +193 -0
  448. package/tests/performance/performance-test.ts +133 -0
  449. package/tests/run-all-tests.sh +106 -0
  450. package/tests/security/security-test.ts +103 -0
  451. package/tsconfig.json +20 -0
@@ -0,0 +1,296 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Run all tm1npm tests in sequence
5
+ * This script executes all available test commands and provides a summary
6
+ */
7
+
8
+ const { spawn } = require('child_process');
9
+ const path = require('path');
10
+
11
+ // ANSI color codes for better output
12
+ const colors = {
13
+ green: '\x1b[32m',
14
+ red: '\x1b[31m',
15
+ yellow: '\x1b[33m',
16
+ blue: '\x1b[34m',
17
+ cyan: '\x1b[36m',
18
+ reset: '\x1b[0m',
19
+ bold: '\x1b[1m'
20
+ };
21
+
22
+ // Test configurations
23
+ const tests = [
24
+ {
25
+ name: 'Jest Tests',
26
+ command: 'npm',
27
+ args: ['test', '--', '--testTimeout=10000'],
28
+ description: 'Run all Jest unit tests',
29
+ timeout: 120000
30
+ },
31
+ {
32
+ name: 'Connection Test',
33
+ command: 'npm',
34
+ args: ['run', 'test:connection'],
35
+ description: 'Test TM1 connection with comprehensive checks',
36
+ timeout: 60000
37
+ },
38
+ {
39
+ name: 'Simple Connection Test',
40
+ command: 'npm',
41
+ args: ['run', 'test:simple'],
42
+ description: 'Basic TM1 connectivity test',
43
+ timeout: 30000
44
+ },
45
+ {
46
+ name: 'Minimal Connection Test',
47
+ command: 'npm',
48
+ args: ['run', 'test:minimal'],
49
+ description: 'Minimal connection verification',
50
+ timeout: 30000
51
+ },
52
+ {
53
+ name: 'Working Test',
54
+ command: 'npm',
55
+ args: ['run', 'test:working'],
56
+ description: 'Comprehensive TM1 functionality test',
57
+ timeout: 90000
58
+ },
59
+ {
60
+ name: 'Security Tests',
61
+ command: 'npm',
62
+ args: ['run', 'test:security'],
63
+ description: 'Security, authentication, and vulnerability tests',
64
+ timeout: 120000
65
+ },
66
+ {
67
+ name: 'Performance Tests',
68
+ command: 'npm',
69
+ args: ['run', 'test:performance'],
70
+ description: 'Response time, memory usage, and scalability tests',
71
+ timeout: 120000
72
+ },
73
+ {
74
+ name: 'Edge Cases Tests',
75
+ command: 'npm',
76
+ args: ['run', 'test:edge-cases'],
77
+ description: 'Boundary conditions and unusual input tests',
78
+ timeout: 90000
79
+ },
80
+ {
81
+ name: 'Test Coverage',
82
+ command: 'npm',
83
+ args: ['run', 'test:coverage', '--', '--testTimeout=10000'],
84
+ description: 'Run tests with coverage report',
85
+ timeout: 180000
86
+ }
87
+ ];
88
+
89
+ // Results tracking
90
+ const results = [];
91
+ let totalTests = 0;
92
+ let passedTests = 0;
93
+ let failedTests = 0;
94
+
95
+ function printHeader() {
96
+ console.log(`${colors.bold}${colors.cyan}╔══════════════════════════════════════════════════════════════════╗${colors.reset}`);
97
+ console.log(`${colors.bold}${colors.cyan}║ TM1NPM Test Runner ║${colors.reset}`);
98
+ console.log(`${colors.bold}${colors.cyan}║ Running All Test Suites ║${colors.reset}`);
99
+ console.log(`${colors.bold}${colors.cyan}╚══════════════════════════════════════════════════════════════════╝${colors.reset}`);
100
+ console.log('');
101
+ }
102
+
103
+ function printTestStart(testName, description) {
104
+ console.log(`${colors.blue}▶ ${colors.bold}${testName}${colors.reset}`);
105
+ console.log(` ${colors.cyan}${description}${colors.reset}`);
106
+ console.log(' ' + '─'.repeat(60));
107
+ }
108
+
109
+ function printTestResult(testName, success, output, error) {
110
+ const status = success
111
+ ? `${colors.green}✅ PASSED${colors.reset}`
112
+ : `${colors.red}❌ FAILED${colors.reset}`;
113
+
114
+ console.log(` ${status} ${colors.bold}${testName}${colors.reset}`);
115
+
116
+ if (success && output) {
117
+ // Show last few lines of successful output
118
+ const lines = output.split('\n').filter(line => line.trim());
119
+ const lastLines = lines.slice(-3).join('\n ');
120
+ if (lastLines) {
121
+ console.log(` ${colors.green}${lastLines}${colors.reset}`);
122
+ }
123
+ }
124
+
125
+ if (!success && error) {
126
+ // Show error details
127
+ const errorLines = error.split('\n').slice(0, 5).join('\n ');
128
+ console.log(` ${colors.red}${errorLines}${colors.reset}`);
129
+ }
130
+
131
+ console.log('');
132
+ }
133
+
134
+ function runTest(test) {
135
+ return new Promise((resolve) => {
136
+ totalTests++;
137
+ printTestStart(test.name, test.description);
138
+
139
+ const child = spawn(test.command, test.args, {
140
+ stdio: 'pipe',
141
+ shell: true,
142
+ cwd: process.cwd()
143
+ });
144
+
145
+ let output = '';
146
+ let error = '';
147
+
148
+ child.stdout.on('data', (data) => {
149
+ output += data.toString();
150
+ });
151
+
152
+ child.stderr.on('data', (data) => {
153
+ error += data.toString();
154
+ });
155
+
156
+ // Set timeout
157
+ const timeout = setTimeout(() => {
158
+ child.kill('SIGTERM');
159
+ error = `Test timed out after ${test.timeout}ms`;
160
+ }, test.timeout);
161
+
162
+ child.on('close', (code) => {
163
+ clearTimeout(timeout);
164
+ const success = code === 0;
165
+
166
+ if (success) {
167
+ passedTests++;
168
+ } else {
169
+ failedTests++;
170
+ }
171
+
172
+ results.push({
173
+ name: test.name,
174
+ success,
175
+ output: success ? output : null,
176
+ error: success ? null : (error || output),
177
+ code
178
+ });
179
+
180
+ printTestResult(test.name, success, output, error || output);
181
+ resolve();
182
+ });
183
+
184
+ child.on('error', (err) => {
185
+ clearTimeout(timeout);
186
+ failedTests++;
187
+ results.push({
188
+ name: test.name,
189
+ success: false,
190
+ error: err.message,
191
+ code: -1
192
+ });
193
+ printTestResult(test.name, false, null, err.message);
194
+ resolve();
195
+ });
196
+ });
197
+ }
198
+
199
+ function printSummary() {
200
+ console.log(`${colors.bold}${colors.cyan}╔══════════════════════════════════════════════════════════════════╗${colors.reset}`);
201
+ console.log(`${colors.bold}${colors.cyan}║ Test Summary ║${colors.reset}`);
202
+ console.log(`${colors.bold}${colors.cyan}╚══════════════════════════════════════════════════════════════════╝${colors.reset}`);
203
+ console.log('');
204
+
205
+ console.log(`${colors.bold}Total Tests:${colors.reset} ${totalTests}`);
206
+ console.log(`${colors.green}${colors.bold}Passed:${colors.reset} ${passedTests}`);
207
+ console.log(`${colors.red}${colors.bold}Failed:${colors.reset} ${failedTests}`);
208
+ console.log(`${colors.bold}Success Rate:${colors.reset} ${totalTests > 0 ? Math.round((passedTests / totalTests) * 100) : 0}%`);
209
+ console.log('');
210
+
211
+ // Detailed results
212
+ console.log(`${colors.bold}Detailed Results:${colors.reset}`);
213
+ console.log('─'.repeat(70));
214
+
215
+ results.forEach((result) => {
216
+ const status = result.success
217
+ ? `${colors.green}✅ PASS${colors.reset}`
218
+ : `${colors.red}❌ FAIL${colors.reset}`;
219
+ console.log(`${status} ${result.name}`);
220
+ });
221
+
222
+ console.log('');
223
+
224
+ // Failed tests details
225
+ const failedResults = results.filter(r => !r.success);
226
+ if (failedResults.length > 0) {
227
+ console.log(`${colors.red}${colors.bold}Failed Test Details:${colors.reset}`);
228
+ console.log('─'.repeat(70));
229
+ failedResults.forEach((result) => {
230
+ console.log(`${colors.red}${colors.bold}${result.name}:${colors.reset}`);
231
+ if (result.error) {
232
+ const errorPreview = result.error.split('\n').slice(0, 3).join('\n');
233
+ console.log(` ${colors.red}${errorPreview}${colors.reset}`);
234
+ }
235
+ console.log('');
236
+ });
237
+ }
238
+
239
+ // Final status
240
+ if (passedTests === totalTests) {
241
+ console.log(`${colors.green}${colors.bold}🎉 All tests passed! tm1npm is working correctly.${colors.reset}`);
242
+ } else {
243
+ console.log(`${colors.yellow}${colors.bold}⚠️ Some tests failed. Check the details above.${colors.reset}`);
244
+
245
+ // Provide helpful tips
246
+ console.log('');
247
+ console.log(`${colors.bold}Troubleshooting Tips:${colors.reset}`);
248
+ console.log('• Ensure TM1 server is running at localhost:8879');
249
+ console.log('• Check if TM1 REST API is enabled');
250
+ console.log('• Make sure no firewall is blocking port 8879');
251
+ console.log('• Run individual tests with: npm run test:<testname>');
252
+ }
253
+ }
254
+
255
+ async function runAllTests() {
256
+ printHeader();
257
+
258
+ console.log(`${colors.bold}Starting test execution...${colors.reset}`);
259
+ console.log(`${colors.bold}Total test suites: ${tests.length}${colors.reset}`);
260
+ console.log('');
261
+ console.log(`${colors.cyan}📋 Test Suite Overview:${colors.reset}`);
262
+ console.log(`${colors.cyan}• Basic Tests: Jest, Connection, Simple, Minimal, Working${colors.reset}`);
263
+ console.log(`${colors.cyan}• Security Tests: Authentication, Authorization, Vulnerability${colors.reset}`);
264
+ console.log(`${colors.cyan}• Performance Tests: Response Time, Memory, Scalability${colors.reset}`);
265
+ console.log(`${colors.cyan}• Edge Cases: Boundary Conditions, Error Handling${colors.reset}`);
266
+ console.log(`${colors.cyan}• Service Tests: ProcessService, DimensionService, CubeService, RestService, SubsetService${colors.reset}`);
267
+ console.log(`${colors.cyan}• Coverage: Code Coverage Analysis${colors.reset}`);
268
+ console.log('');
269
+
270
+ // Run tests sequentially to avoid conflicts
271
+ for (const test of tests) {
272
+ await runTest(test);
273
+ }
274
+
275
+ printSummary();
276
+
277
+ // Exit with appropriate code
278
+ process.exit(failedTests > 0 ? 1 : 0);
279
+ }
280
+
281
+ // Handle interruption
282
+ process.on('SIGINT', () => {
283
+ console.log(`\n${colors.yellow}Test execution interrupted by user.${colors.reset}`);
284
+ printSummary();
285
+ process.exit(130);
286
+ });
287
+
288
+ // Run if called directly
289
+ if (require.main === module) {
290
+ runAllTests().catch((error) => {
291
+ console.error(`${colors.red}Fatal error:${colors.reset}`, error);
292
+ process.exit(1);
293
+ });
294
+ }
295
+
296
+ module.exports = { runAllTests };
@@ -0,0 +1,38 @@
1
+ export class TM1Exception extends Error {
2
+ public response?: any;
3
+ public statusCode?: number;
4
+
5
+ constructor(message: string, response?: any) {
6
+ super(message);
7
+ this.name = 'TM1Exception';
8
+ this.response = response;
9
+ this.statusCode = response?.status;
10
+ }
11
+ }
12
+
13
+ export class TM1RestException extends TM1Exception {
14
+ public status?: number;
15
+
16
+ constructor(message: string, status?: number, response?: any) {
17
+ super(message, response);
18
+ this.name = 'TM1RestException';
19
+ this.status = status;
20
+ }
21
+ }
22
+
23
+ export class TM1TimeoutException extends TM1Exception {
24
+ public timeout: number;
25
+
26
+ constructor(message: string, timeout: number = 0) {
27
+ super(message);
28
+ this.name = 'TM1TimeoutException';
29
+ this.timeout = timeout;
30
+ }
31
+ }
32
+
33
+ export class TM1VersionDeprecationException extends TM1Exception {
34
+ constructor(message: string) {
35
+ super(message);
36
+ this.name = 'TM1VersionDeprecationException';
37
+ }
38
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Exception for REST API related errors
3
+ */
4
+
5
+ import { TM1Exception } from './TM1Exception';
6
+
7
+ export class TM1RestException extends TM1Exception {
8
+ public status?: number;
9
+ public response?: any;
10
+
11
+ constructor(message: string, status?: number, response?: any) {
12
+ super(message);
13
+ this.name = 'TM1RestException';
14
+ this.status = status;
15
+ this.response = response;
16
+ }
17
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Exception for timeout related errors
3
+ */
4
+
5
+ import { TM1Exception } from './TM1Exception';
6
+
7
+ export class TM1TimeoutException extends TM1Exception {
8
+ public timeout: number;
9
+
10
+ constructor(message: string, timeout: number = 0) {
11
+ super(message);
12
+ this.name = 'TM1TimeoutException';
13
+ this.timeout = timeout;
14
+ }
15
+ }
package/src/index.ts ADDED
@@ -0,0 +1,94 @@
1
+ // Core service exports
2
+ export { TM1Service } from './services/TM1Service';
3
+ export { RestService, AuthenticationMode } from './services/RestService';
4
+ export { DimensionService } from './services/DimensionService';
5
+ export { HierarchyService } from './services/HierarchyService';
6
+ export { SubsetService } from './services/SubsetService';
7
+ export { ObjectService } from './services/ObjectService';
8
+
9
+ // Additional services from index
10
+ export {
11
+ CubeService,
12
+ ElementService,
13
+ CellService,
14
+ ProcessService,
15
+ ViewService,
16
+ SecurityService,
17
+ FileService,
18
+ SessionService,
19
+ ConfigurationService,
20
+ ServerService,
21
+ MonitoringService,
22
+ AnnotationService,
23
+ ApplicationService,
24
+ AuditLogService,
25
+ ChoreService,
26
+ GitService,
27
+ JobService,
28
+ LoggerService,
29
+ ManageService,
30
+ MessageLogService,
31
+ PowerBiService,
32
+ SandboxService,
33
+ ThreadService,
34
+ TransactionLogService,
35
+ UserService
36
+ } from './services';
37
+
38
+ // Object exports
39
+ export { TM1Object } from './objects/TM1Object';
40
+ export { Dimension } from './objects/Dimension';
41
+ export { Hierarchy } from './objects/Hierarchy';
42
+ export { Element, ElementType } from './objects/Element';
43
+ export { ElementAttribute, ElementAttributeType } from './objects/ElementAttribute';
44
+
45
+ // Additional object exports
46
+ export { Annotation } from './objects/Annotation';
47
+ export { Application } from './objects/Application';
48
+ export { Chore } from './objects/Chore';
49
+ export { ChoreFrequency } from './objects/ChoreFrequency';
50
+ export { ChoreStartTime } from './objects/ChoreStartTime';
51
+ export { ChoreTask, ChoreTaskParameter } from './objects/ChoreTask';
52
+ export { Cube } from './objects/Cube';
53
+ export { Git } from './objects/Git';
54
+ export { GitCommit } from './objects/GitCommit';
55
+ export { GitPlan, GitPushPlan, GitPullPlan } from './objects/GitPlan';
56
+ export { GitRemote } from './objects/GitRemote';
57
+ export { Process } from './objects/Process';
58
+ export { ProcessDebugBreakpoint, HitMode, BreakPointType } from './objects/ProcessDebugBreakpoint';
59
+ export { Rules } from './objects/Rules';
60
+ export { Sandbox } from './objects/Sandbox';
61
+ export { Server } from './objects/Server';
62
+ export { Subset, AnonymousSubset } from './objects/Subset';
63
+ export { TM1Project, TM1ProjectTask, TM1ProjectDeployment } from './objects/TM1Project';
64
+ export { User } from './objects/User';
65
+ export { View, MDXView, NativeView } from './objects/View';
66
+ export { ViewAxisSelection, ViewTitleSelection } from './objects/Axis';
67
+
68
+ // Enum exports
69
+ export { LogLevel } from './services/ServerService';
70
+
71
+ // Exception exports
72
+ export {
73
+ TM1Exception,
74
+ TM1RestException,
75
+ TM1TimeoutException,
76
+ TM1VersionDeprecationException
77
+ } from './exceptions/TM1Exception';
78
+
79
+ // Utility exports
80
+ export { Utils } from './utils/Utils';
81
+ export {
82
+ CaseAndSpaceInsensitiveMap,
83
+ CaseAndSpaceInsensitiveSet,
84
+ caseAndSpaceInsensitiveEquals,
85
+ lowerAndDropSpaces,
86
+ formatUrl
87
+ } from './utils/Utils';
88
+
89
+ // Type exports
90
+ export type { RestServiceConfig } from './services/RestService';
91
+ export type { DatabaseResourceConfig } from './services/ManageService';
92
+
93
+ // Version
94
+ export const version = '2.1.0';
@@ -0,0 +1,194 @@
1
+ import { TM1Object } from './TM1Object';
2
+ import { formatUrl } from '../utils/Utils';
3
+
4
+ export class Annotation extends TM1Object {
5
+ /** Abstraction of TM1 Annotation
6
+ *
7
+ * :Notes:
8
+ * - Class complete, functional and tested.
9
+ * - doesn't cover Attachments though
10
+ */
11
+
12
+ private _id?: string;
13
+ private _text: string;
14
+ private _creator?: string;
15
+ private _created?: string;
16
+ private _lastUpdatedBy?: string;
17
+ private _lastUpdated?: string;
18
+ private _dimensionalContext: string[];
19
+ private _commentType: string;
20
+ private _commentValue: string;
21
+ private _objectName: string;
22
+
23
+ constructor(
24
+ commentValue: string,
25
+ objectName: string,
26
+ dimensionalContext: Iterable<string>,
27
+ commentType: string = 'ANNOTATION',
28
+ annotationId?: string,
29
+ text: string = '',
30
+ creator?: string,
31
+ created?: string,
32
+ lastUpdatedBy?: string,
33
+ lastUpdated?: string
34
+ ) {
35
+ super();
36
+ this._id = annotationId;
37
+ this._text = text;
38
+ this._creator = creator;
39
+ this._created = created;
40
+ this._lastUpdatedBy = lastUpdatedBy;
41
+ this._lastUpdated = lastUpdated;
42
+ this._dimensionalContext = Array.from(dimensionalContext);
43
+ this._commentType = commentType;
44
+ this._commentValue = commentValue;
45
+ this._objectName = objectName;
46
+ }
47
+
48
+ public static fromJSON(annotationAsJson: string): Annotation {
49
+ /** Alternative constructor
50
+ *
51
+ * :param annotation_as_json: String, JSON
52
+ * :return: instance of .Process
53
+ */
54
+ const annotationAsDict = JSON.parse(annotationAsJson);
55
+ const annotationId = annotationAsDict.ID;
56
+ const text = annotationAsDict.Text;
57
+ const creator = annotationAsDict.Creator;
58
+ const created = annotationAsDict.Created;
59
+ const lastUpdatedBy = annotationAsDict.LastUpdatedBy;
60
+ const lastUpdated = annotationAsDict.LastUpdated;
61
+ const dimensionalContext = annotationAsDict.DimensionalContext.map((item: any) => item.Name);
62
+ const commentType = annotationAsDict.commentType;
63
+ const commentValue = annotationAsDict.commentValue;
64
+ const objectName = annotationAsDict.objectName;
65
+
66
+ return new Annotation(
67
+ commentValue,
68
+ objectName,
69
+ dimensionalContext,
70
+ commentType,
71
+ annotationId,
72
+ text,
73
+ creator,
74
+ created,
75
+ lastUpdatedBy,
76
+ lastUpdated
77
+ );
78
+ }
79
+
80
+ public get body(): string {
81
+ return JSON.stringify(this.constructBody());
82
+ }
83
+
84
+ public get bodyAsDict(): any {
85
+ return this.constructBody();
86
+ }
87
+
88
+ public get commentValue(): string {
89
+ return this._commentValue;
90
+ }
91
+
92
+ public set commentValue(value: string) {
93
+ this._commentValue = value;
94
+ }
95
+
96
+ public get text(): string {
97
+ return this._text;
98
+ }
99
+
100
+ public get dimensionalContext(): string[] {
101
+ return this._dimensionalContext;
102
+ }
103
+
104
+ public get created(): string | undefined {
105
+ return this._created;
106
+ }
107
+
108
+ public get objectName(): string {
109
+ return this._objectName;
110
+ }
111
+
112
+ public get lastUpdated(): string | undefined {
113
+ return this._lastUpdated;
114
+ }
115
+
116
+ public get lastUpdatedBy(): string | undefined {
117
+ return this._lastUpdatedBy;
118
+ }
119
+
120
+ public get id(): string | undefined {
121
+ return this._id;
122
+ }
123
+
124
+ public move(
125
+ dimensionOrder: Iterable<string>,
126
+ dimension: string,
127
+ targetElement: string,
128
+ sourceElement?: string
129
+ ): void {
130
+ /** Move annotation on given dimension from source_element to target_element
131
+ *
132
+ * :param dimension_order: List, order of the dimensions in the cube
133
+ * :param dimension: dimension name
134
+ * :param target_element: target element name
135
+ * :param source_element: source element name
136
+ * :return:
137
+ */
138
+ const dimensionOrderArray = Array.from(dimensionOrder);
139
+ for (let i = 0; i < dimensionOrderArray.length; i++) {
140
+ const dimensionName = dimensionOrderArray[i];
141
+ if (dimensionName.toLowerCase() === dimension.toLowerCase()) {
142
+ if (!sourceElement || this._dimensionalContext[i] === sourceElement) {
143
+ this._dimensionalContext[i] = targetElement;
144
+ }
145
+ }
146
+ }
147
+ }
148
+
149
+ private constructBody(): any {
150
+ /** construct the ODATA conform JSON representation for the Annotation entity.
151
+ *
152
+ * :return: string, the valid JSON
153
+ */
154
+ const dimensionalContext = this._dimensionalContext.map(element => ({ Name: element }));
155
+ const body: any = {};
156
+ body.ID = this._id;
157
+ body.Text = this._text;
158
+ body.Creator = this._creator;
159
+ body.Created = this._created;
160
+ body.LastUpdatedBy = this._lastUpdatedBy;
161
+ body.LastUpdated = this._lastUpdated;
162
+ body.DimensionalContext = dimensionalContext;
163
+ const commentLocations = this._dimensionalContext.join(',');
164
+ body.commentLocation = commentLocations.substring(1);
165
+ body.commentType = this._commentType;
166
+ body.commentValue = this._commentValue;
167
+ body.objectName = this._objectName;
168
+ return body;
169
+ }
170
+
171
+ public constructBodyForPost(cubeDimensions: string[]): any {
172
+ const body: any = {};
173
+ body.Text = this.text;
174
+ body.ApplicationContext = [{
175
+ "Facet@odata.bind": "ApplicationContextFacets('}Cubes')",
176
+ "Value": this.objectName
177
+ }];
178
+ body["DimensionalContext@odata.bind"] = [];
179
+
180
+ for (let i = 0; i < cubeDimensions.length; i++) {
181
+ const dimension = cubeDimensions[i];
182
+ const element = this.dimensionalContext[i];
183
+ const coordinates = formatUrl("Dimensions('{}')/Hierarchies('{}')/Members('{}')", dimension, dimension, element);
184
+ body["DimensionalContext@odata.bind"].push(coordinates);
185
+ }
186
+
187
+ body.objectName = this.objectName;
188
+ body.commentValue = this.commentValue;
189
+ body.commentType = 'ANNOTATION';
190
+ body.commentLocation = this.dimensionalContext.join(',');
191
+
192
+ return body;
193
+ }
194
+ }