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,211 @@
1
+ import { RestService } from './RestService';
2
+ import { ObjectService } from './ObjectService';
3
+ import { Process } from '../objects/Process';
4
+ import { ProcessService } from './ProcessService';
5
+ import {
6
+ verifyVersion,
7
+ deprecatedInVersion,
8
+ odataTrackChangesHeader,
9
+ requireOpsAdmin,
10
+ requireDataAdmin,
11
+ formatUrl,
12
+ CaseAndSpaceInsensitiveDict,
13
+ CaseAndSpaceInsensitiveSet,
14
+ utcLocalizeTime
15
+ } from '../utils/Utils';
16
+
17
+ export class MessageLogService extends ObjectService {
18
+
19
+ private lastDeltaRequest?: string;
20
+
21
+ constructor(rest: RestService) {
22
+ super(rest);
23
+ if (verifyVersion("12.0.0", rest.version || "11.0.0")) {
24
+ // warn only due to use in Monitoring Service
25
+ console.warn("Message Logs are not available in this version of TM1, removed as of 12.0.0");
26
+ }
27
+ this.lastDeltaRequest = undefined;
28
+ }
29
+
30
+ @deprecatedInVersion("12.0.0")
31
+ public async initializeDeltaRequests(filter?: string): Promise<void> {
32
+ let url = "/TailMessageLog()";
33
+ if (filter) {
34
+ url += `?$filter=${filter}`;
35
+ }
36
+ const response = await this.rest.get(url);
37
+ // Read the next delta-request-url from the response
38
+ const responseText = typeof response.data === 'string' ? response.data : JSON.stringify(response.data);
39
+ this.lastDeltaRequest = responseText.substring(
40
+ responseText.lastIndexOf("MessageLogEntries/!delta('"),
41
+ responseText.length - 2
42
+ );
43
+ }
44
+
45
+ @deprecatedInVersion("12.0.0")
46
+ public async executeDeltaRequest(): Promise<any[]> {
47
+ if (!this.lastDeltaRequest) {
48
+ throw new Error("Delta request not initialized. Call initializeDeltaRequests first.");
49
+ }
50
+
51
+ const response = await this.rest.get("/" + this.lastDeltaRequest);
52
+ const responseText = typeof response.data === 'string' ? response.data : JSON.stringify(response.data);
53
+ this.lastDeltaRequest = responseText.substring(
54
+ responseText.lastIndexOf("MessageLogEntries/!delta('"),
55
+ responseText.length - 2
56
+ );
57
+ return response.data.value;
58
+ }
59
+
60
+ @deprecatedInVersion("12.0.0")
61
+
62
+ public async getEntries(
63
+ reverse: boolean = true,
64
+ since?: Date,
65
+ until?: Date,
66
+ top?: number,
67
+ logger?: string,
68
+ level?: string,
69
+ msgContains?: string | string[],
70
+ msgContainsOperator: string = 'and'
71
+ ): Promise<any[]> {
72
+ /**
73
+ * :param reverse: Boolean
74
+ * :param since: of type datetime. If it doesn't have tz information, UTC is assumed.
75
+ * :param until: of type datetime. If it doesn't have tz information, UTC is assumed.
76
+ * :param top: Integer
77
+ * :param logger: string, eg TM1.Server, TM1.Chore, TM1.Mdx.Interface, TM1.Process
78
+ * :param level: string, ERROR, WARNING, INFO, DEBUG, UNKNOWN
79
+ * :param msg_contains: iterable, find substring in log message; list of substrings will be queried as AND statement
80
+ * :param msg_contains_operator: 'and' or 'or'
81
+ *
82
+ * :return: Dict of server log
83
+ */
84
+ const msgContainsOperatorLower = msgContainsOperator.trim().toLowerCase();
85
+ if (msgContainsOperatorLower !== "and" && msgContainsOperatorLower !== "or") {
86
+ throw new Error("'msg_contains_operator' must be either 'and' or 'or'");
87
+ }
88
+
89
+ const reverseOrder = reverse ? 'desc' : 'asc';
90
+ let url = `/MessageLogEntries?$orderby=TimeStamp ${reverseOrder}`;
91
+
92
+ if (since || until || logger || level || msgContains) {
93
+ const logFilters: string[] = [];
94
+
95
+ if (since) {
96
+ // If since doesn't have tz information, UTC is assumed
97
+ const sinceUtc = this.ensureUtc(since);
98
+ logFilters.push(formatUrl(
99
+ "TimeStamp ge {}",
100
+ sinceUtc.toISOString().replace(/\.\d{3}Z$/, 'Z')
101
+ ));
102
+ }
103
+
104
+ if (until) {
105
+ // If until doesn't have tz information, UTC is assumed
106
+ const untilUtc = this.ensureUtc(until);
107
+ logFilters.push(formatUrl(
108
+ "TimeStamp le {}",
109
+ untilUtc.toISOString().replace(/\.\d{3}Z$/, 'Z')
110
+ ));
111
+ }
112
+
113
+ if (logger) {
114
+ logFilters.push(formatUrl("Logger eq '{}'", logger));
115
+ }
116
+
117
+ if (level) {
118
+ const levelDict = new CaseAndSpaceInsensitiveDict([
119
+ ['ERROR', 1], ['WARNING', 2], ['INFO', 3], ['DEBUG', 4], ['UNKNOWN', 5]
120
+ ]);
121
+ const levelIndex = levelDict.get(level);
122
+ if (levelIndex) {
123
+ logFilters.push(`Level eq ${levelIndex}`);
124
+ }
125
+ }
126
+
127
+ if (msgContains) {
128
+ if (typeof msgContains === 'string') {
129
+ logFilters.push(formatUrl(
130
+ "contains(toupper(Message),toupper('{}'))", msgContains
131
+ ));
132
+ } else {
133
+ const msgFilters = msgContains.map(wildcard =>
134
+ formatUrl("contains(toupper(Message),toupper('{}'))", wildcard)
135
+ );
136
+ logFilters.push(`(${msgFilters.join(` ${msgContainsOperatorLower} `)})`);
137
+ }
138
+ }
139
+
140
+ url += `&$filter=${logFilters.join(" and ")}`;
141
+ }
142
+
143
+ if (top) {
144
+ url += `&$top=${top}`;
145
+ }
146
+
147
+ const response = await this.rest.get(url);
148
+ return response.data.value;
149
+ }
150
+
151
+
152
+ public async createEntry(level: string, message: string): Promise<void> {
153
+ /**
154
+ * :param level: string, FATAL, ERROR, WARN, INFO, DEBUG
155
+ * :param message: string
156
+ * :return:
157
+ */
158
+
159
+ const validLevels = new CaseAndSpaceInsensitiveSet(
160
+ ['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG']
161
+ );
162
+ if (!validLevels.has(level)) {
163
+ throw new Error(`Invalid level: '${level}'`);
164
+ }
165
+
166
+ const processService = new ProcessService(this.rest);
167
+
168
+ // Execute TI code directly instead of creating a process
169
+ const tiCode = `LogOutput('${level}', '${message}');`;
170
+ const response = await processService.executeTiCode([tiCode]);
171
+ const success = response.status === 200;
172
+
173
+ if (!success) {
174
+ throw new Error(
175
+ `Failed to write to TM1 Message Log through unbound process. Status: '${response.status}'`
176
+ );
177
+ }
178
+ }
179
+
180
+
181
+ @deprecatedInVersion("12.0.0")
182
+ public async getLastProcessMessage(processName: string): Promise<string | null> {
183
+ /** Get the latest message log entry for a process
184
+ *
185
+ * :param process_name: name of the process
186
+ * :return: String - the message, for instance: "Ausführung normal beendet, verstrichene Zeit 0.03 Sekunden"
187
+ */
188
+ const url = formatUrl(
189
+ "/MessageLog()?$orderby='TimeStamp'&$filter=Logger eq 'TM1.Process' and contains(Message, '{}')",
190
+ processName
191
+ );
192
+ const response = await this.rest.get(url);
193
+ const responseAsList = response.data.value;
194
+ if (responseAsList.length > 0) {
195
+ const messageLogEntry = responseAsList[0];
196
+ return messageLogEntry.Message;
197
+ }
198
+ return null;
199
+ }
200
+
201
+ private ensureUtc(date: Date): Date {
202
+ /** Ensure date is treated as UTC if no timezone info
203
+ *
204
+ * :param date: Date object
205
+ * :return: Date object with UTC timezone
206
+ */
207
+ // In JavaScript, Date objects are always timezone-aware (local timezone)
208
+ // To treat as UTC, we need to adjust for the timezone offset
209
+ return new Date(date.getTime() - (date.getTimezoneOffset() * 60000));
210
+ }
211
+ }
@@ -0,0 +1,105 @@
1
+ import { AxiosResponse } from 'axios';
2
+ import { RestService } from './RestService';
3
+ import { ObjectService } from './ObjectService';
4
+ import { User } from '../objects/User';
5
+ import { ThreadService } from './ThreadService';
6
+ import { SessionService } from './SessionService';
7
+ import { UserService } from './UserService';
8
+
9
+ export class MonitoringService extends ObjectService {
10
+ /** Service to Query and Cancel Threads in TM1
11
+ */
12
+
13
+ public users: UserService;
14
+ public threads: ThreadService;
15
+ public session: SessionService;
16
+
17
+ constructor(rest: RestService) {
18
+ super(rest);
19
+ console.warn("Monitoring Service will be moved to a new location in a future version");
20
+ this.users = new UserService(rest);
21
+ this.threads = new ThreadService(rest);
22
+ this.session = new SessionService(rest);
23
+ }
24
+
25
+ public async getThreads(): Promise<any[]> {
26
+ /** Return a dict of the currently running threads from the TM1 Server
27
+ *
28
+ * :return:
29
+ * dict: the response
30
+ */
31
+ return await this.threads.getAll();
32
+ }
33
+
34
+ public async getActiveThreads(): Promise<any[]> {
35
+ /**Return a list of non-idle threads from the TM1 Server
36
+ *
37
+ * :return:
38
+ * list: TM1 threads as dict
39
+ */
40
+ return await this.threads.getActive();
41
+ }
42
+
43
+ public async cancelThread(threadId: number): Promise<AxiosResponse> {
44
+ /** Kill a running thread
45
+ *
46
+ * :param thread_id:
47
+ * :return:
48
+ */
49
+ return await this.threads.cancel(threadId);
50
+ }
51
+
52
+ public async cancelAllRunningThreads(): Promise<any[]> {
53
+ return await this.threads.cancelAllRunning();
54
+ }
55
+
56
+ public async getActiveUsers(): Promise<User[]> {
57
+ /** Get the activate users in TM1
58
+ *
59
+ * :return: List of .User instances
60
+ */
61
+ return await this.users.getActive();
62
+ }
63
+
64
+ public async userIsActive(userName: string): Promise<boolean> {
65
+ /** Check if user is currently active in TM1
66
+ *
67
+ * :param user_name:
68
+ * :return: Boolean
69
+ */
70
+ return await this.users.isActive(userName);
71
+ }
72
+
73
+ public async disconnectUser(userName: string): Promise<AxiosResponse> {
74
+ /** Disconnect User
75
+ *
76
+ * :param user_name:
77
+ * :return:
78
+ */
79
+ return await this.users.disconnect(userName);
80
+ }
81
+
82
+ public async getActiveSessionThreads(excludeIdle: boolean = true): Promise<any[]> {
83
+ return await this.session.getThreadsForCurrent(excludeIdle);
84
+ }
85
+
86
+ public async getSessions(includeUser: boolean = true, includeThreads: boolean = true): Promise<any[]> {
87
+ return await this.session.getAll(includeUser, includeThreads);
88
+ }
89
+
90
+ public async disconnectAllUsers(): Promise<string[]> {
91
+ return await this.users.disconnectAll();
92
+ }
93
+
94
+ public async closeSession(sessionId: string): Promise<AxiosResponse> {
95
+ return await this.session.close(sessionId);
96
+ }
97
+
98
+ public async closeAllSessions(): Promise<any[]> {
99
+ return await this.session.closeAll();
100
+ }
101
+
102
+ public async getCurrentUser(): Promise<User> {
103
+ return await this.users.getCurrent();
104
+ }
105
+ }
@@ -0,0 +1,21 @@
1
+ import { RestService } from './RestService';
2
+
3
+ export abstract class ObjectService {
4
+ protected rest: RestService;
5
+
6
+ constructor(rest: RestService) {
7
+ this.rest = rest;
8
+ }
9
+
10
+ protected formatUrl(template: string, ...args: string[]): string {
11
+ let url = template;
12
+ for (const arg of args) {
13
+ url = url.replace('{}', encodeURIComponent(arg));
14
+ }
15
+ return url;
16
+ }
17
+
18
+ protected caseAndSpaceInsensitiveEquals(str1: string, str2: string): boolean {
19
+ return str1.toLowerCase().replace(/\s+/g, '') === str2.toLowerCase().replace(/\s+/g, '');
20
+ }
21
+ }
@@ -0,0 +1,85 @@
1
+ import { RestService } from './RestService';
2
+ import { CellService } from './CellService';
3
+ import { ElementService } from './ElementService';
4
+
5
+ export class PowerBiService {
6
+ private _tm1Rest: RestService;
7
+ public cells: CellService;
8
+ public elements: ElementService;
9
+
10
+ constructor(tm1Rest: RestService) {
11
+ /**
12
+ * :param tm1_rest: instance of RestService
13
+ */
14
+ this._tm1Rest = tm1Rest;
15
+ this.cells = new CellService(tm1Rest);
16
+ this.elements = new ElementService(tm1Rest);
17
+ }
18
+
19
+ public async executeMdx(mdx: string): Promise<any[]> {
20
+ /** Execute MDX and return data as array (equivalent to DataFrame)
21
+ * Note: In JavaScript/TypeScript, we return array of objects instead of pandas DataFrame
22
+ */
23
+ return await this.cells.executeMdxDataFrameShaped(mdx);
24
+ }
25
+
26
+ public async executeView(
27
+ cubeName: string,
28
+ viewName: string,
29
+ isPrivate: boolean,
30
+ useIterativeJson: boolean = false,
31
+ useBlob: boolean = false
32
+ ): Promise<any[]> {
33
+ /** Execute view and return data as array (equivalent to DataFrame)
34
+ * Note: In JavaScript/TypeScript, we return array of objects instead of pandas DataFrame
35
+ */
36
+ return await this.cells.executeViewDataFrameShaped(
37
+ cubeName,
38
+ viewName,
39
+ isPrivate,
40
+ useIterativeJson,
41
+ useBlob
42
+ );
43
+ }
44
+
45
+ public async getMemberProperties(
46
+ dimensionName?: string,
47
+ hierarchyName?: string,
48
+ memberSelection?: string[] | string,
49
+ skipConsolidations: boolean = true,
50
+ attributes?: string[],
51
+ skipParents: boolean = false,
52
+ levelNames?: string[],
53
+ parentAttribute?: string,
54
+ skipWeights: boolean = true,
55
+ useBlob: boolean = false
56
+ ): Promise<any[]> {
57
+ /**
58
+ * :param dimension_name: Name of the dimension
59
+ * :param hierarchy_name: Name of the hierarchy in the dimension
60
+ * :param member_selection: Selection of members. Array or valid MDX string
61
+ * :param skip_consolidations: Boolean flag to skip consolidations
62
+ * :param attributes: Selection of attributes. Array. If None retrieve all.
63
+ * :param level_names: List of labels for parent columns. If None use level names from TM1.
64
+ * :param skip_parents: Boolean Flag to skip parent columns.
65
+ * :param parent_attribute: Attribute to be displayed in parent columns. If None, parent name is used.
66
+ * :param skip_weights: include weight columns
67
+ * :param use_blob: Better performance on large sets and lower memory footprint in any case. Requires admin permissions
68
+ *
69
+ * :return: Array of objects (equivalent to pandas DataFrame)
70
+ */
71
+ if (!skipWeights && skipParents) {
72
+ throw new Error("skip_weights must not be false if skip_parents is true");
73
+ }
74
+
75
+ if (!dimensionName) {
76
+ throw new Error("dimensionName is required");
77
+ }
78
+
79
+ return await this.elements.getElementsDataframe(
80
+ dimensionName,
81
+ hierarchyName || dimensionName,
82
+ attributes
83
+ );
84
+ }
85
+ }