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,224 @@
1
+ import axios, { AxiosInstance, AxiosResponse, AxiosRequestConfig } from 'axios';
2
+ import { TM1RestException, TM1TimeoutException } from '../exceptions/TM1Exception';
3
+
4
+ export enum AuthenticationMode {
5
+ BASIC = 1,
6
+ WIA = 2,
7
+ CAM = 3,
8
+ CAM_SSO = 4,
9
+ IBM_CLOUD_API_KEY = 5,
10
+ SERVICE_TO_SERVICE = 6,
11
+ PA_PROXY = 7,
12
+ BASIC_API_KEY = 8,
13
+ ACCESS_TOKEN = 9
14
+ }
15
+
16
+ export interface RestServiceConfig {
17
+ address?: string;
18
+ port?: number;
19
+ ssl?: boolean;
20
+ baseUrl?: string;
21
+ user?: string;
22
+ password?: string;
23
+ decodeB64?: boolean;
24
+ namespace?: string;
25
+ sessionId?: string;
26
+ sessionContext?: string;
27
+ verify?: boolean | string;
28
+ timeout?: number;
29
+ cancelAtTimeout?: boolean;
30
+ asyncRequestsMode?: boolean;
31
+ connectionPoolSize?: number;
32
+ poolConnections?: number;
33
+ instance?: string;
34
+ database?: string;
35
+ authUrl?: string;
36
+ camPassport?: string;
37
+ applicationClientId?: string;
38
+ applicationClientSecret?: string;
39
+ apiKey?: string;
40
+ accessToken?: string;
41
+ tenant?: string;
42
+ }
43
+
44
+ export class RestService {
45
+ private static readonly HEADERS = {
46
+ 'Connection': 'keep-alive',
47
+ 'User-Agent': 'tm1npm',
48
+ 'Content-Type': 'application/json; odata.streaming=true; charset=utf-8',
49
+ 'Accept': 'application/json;odata.metadata=none,text/plain',
50
+ 'TM1-SessionContext': 'tm1npm'
51
+ };
52
+
53
+ private static readonly DEFAULT_CONNECTION_POOL_SIZE = 10;
54
+ private static readonly DEFAULT_POOL_CONNECTIONS = 1;
55
+
56
+ private axiosInstance!: AxiosInstance;
57
+ private config: RestServiceConfig;
58
+ private sessionId?: string;
59
+ private sandboxName?: string;
60
+ private isConnected: boolean = false;
61
+ public version?: string;
62
+
63
+ constructor(config: RestServiceConfig) {
64
+ this.config = { ...config };
65
+ this.setupAxiosInstance();
66
+ }
67
+
68
+ private setupAxiosInstance(): void {
69
+ const baseURL = this.buildBaseUrl();
70
+
71
+ this.axiosInstance = axios.create({
72
+ baseURL,
73
+ timeout: (this.config.timeout || 60) * 1000,
74
+ headers: {
75
+ ...RestService.HEADERS,
76
+ ...(this.config.sessionContext && { 'TM1-SessionContext': this.config.sessionContext })
77
+ }
78
+ });
79
+
80
+ this.setupInterceptors();
81
+ }
82
+
83
+ private buildBaseUrl(): string {
84
+ if (this.config.baseUrl) {
85
+ return this.config.baseUrl;
86
+ }
87
+
88
+ const protocol = this.config.ssl ? 'https' : 'http';
89
+ const address = this.config.address || 'localhost';
90
+ const port = this.config.port || 8001;
91
+
92
+ return `${protocol}://${address}:${port}/api/v1`;
93
+ }
94
+
95
+ private setupInterceptors(): void {
96
+ // Request interceptor
97
+ this.axiosInstance.interceptors.request.use(
98
+ (config) => {
99
+ if (this.sessionId) {
100
+ config.headers['TM1SessionId'] = this.sessionId;
101
+ }
102
+ if (this.sandboxName) {
103
+ config.headers['TM1-Sandbox'] = this.sandboxName;
104
+ }
105
+ return config;
106
+ },
107
+ (error) => Promise.reject(error)
108
+ );
109
+
110
+ // Response interceptor
111
+ this.axiosInstance.interceptors.response.use(
112
+ (response) => response,
113
+ (error) => {
114
+ if (error.code === 'ECONNABORTED' || error.message.includes('timeout')) {
115
+ throw new TM1TimeoutException(`Request timeout: ${error.message}`);
116
+ }
117
+
118
+ const response = error.response;
119
+ if (response) {
120
+ const message = this.extractErrorMessage(response);
121
+ throw new TM1RestException(message, response);
122
+ }
123
+
124
+ throw new TM1RestException(error.message);
125
+ }
126
+ );
127
+ }
128
+
129
+ private extractErrorMessage(response: AxiosResponse): string {
130
+ try {
131
+ if (response.data && response.data.error) {
132
+ if (response.data.error.message) {
133
+ return response.data.error.message;
134
+ }
135
+ return JSON.stringify(response.data.error);
136
+ }
137
+ return `HTTP ${response.status}: ${response.statusText}`;
138
+ } catch {
139
+ return `HTTP ${response.status}: ${response.statusText}`;
140
+ }
141
+ }
142
+
143
+ public async connect(): Promise<void> {
144
+ try {
145
+ // Basic authentication
146
+ if (this.config.user && this.config.password) {
147
+ const credentials = Buffer.from(`${this.config.user}:${this.config.password}`).toString('base64');
148
+ this.axiosInstance.defaults.headers.common['Authorization'] = `Basic ${credentials}`;
149
+ }
150
+
151
+ // Test connection
152
+ const response = await this.axiosInstance.get('/Configuration/ServerName');
153
+
154
+ // Extract session ID from response headers
155
+ const setCookie = response.headers['set-cookie'];
156
+ if (setCookie) {
157
+ for (const cookie of setCookie) {
158
+ const match = cookie.match(/TM1SessionId=([^;]+)/);
159
+ if (match) {
160
+ this.sessionId = match[1];
161
+ break;
162
+ }
163
+ }
164
+ }
165
+
166
+ this.isConnected = true;
167
+ } catch (error) {
168
+ throw new TM1RestException(`Failed to connect to TM1: ${error}`);
169
+ }
170
+ }
171
+
172
+ public async disconnect(): Promise<void> {
173
+ if (this.isConnected && this.sessionId) {
174
+ try {
175
+ await this.axiosInstance.post('/ActiveSession/tm1.Close', {});
176
+ } catch (error) {
177
+ // Ignore errors during disconnect
178
+ }
179
+ this.isConnected = false;
180
+ this.sessionId = undefined;
181
+ }
182
+ }
183
+
184
+ public async get(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse> {
185
+ return this.axiosInstance.get(url, config);
186
+ }
187
+
188
+ public async post(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse> {
189
+ return this.axiosInstance.post(url, data, config);
190
+ }
191
+
192
+ public async patch(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse> {
193
+ return this.axiosInstance.patch(url, data, config);
194
+ }
195
+
196
+ public async put(url: string, data?: any, config?: AxiosRequestConfig): Promise<AxiosResponse> {
197
+ return this.axiosInstance.put(url, data, config);
198
+ }
199
+
200
+ public async delete(url: string, config?: AxiosRequestConfig): Promise<AxiosResponse> {
201
+ return this.axiosInstance.delete(url, config);
202
+ }
203
+
204
+ public getSessionId(): string | undefined {
205
+ return this.sessionId;
206
+ }
207
+
208
+ public setSandbox(sandboxName?: string): void {
209
+ this.sandboxName = sandboxName;
210
+ }
211
+
212
+ public getSandbox(): string | undefined {
213
+ return this.sandboxName;
214
+ }
215
+
216
+ public isLoggedIn(): boolean {
217
+ return this.isConnected && !!this.sessionId;
218
+ }
219
+
220
+ public async getApiMetadata(): Promise<any> {
221
+ const response = await this.get("/$metadata");
222
+ return response.data;
223
+ }
224
+ }
@@ -0,0 +1,217 @@
1
+ import { AxiosResponse } from 'axios';
2
+ import { RestService } from './RestService';
3
+ import { ObjectService } from './ObjectService';
4
+ import { Sandbox } from '../objects/Sandbox';
5
+ import { TM1RestException } from '../exceptions/TM1Exception';
6
+ import { formatUrl } from '../utils/Utils';
7
+
8
+ export class SandboxService extends ObjectService {
9
+ /** Service to handle sandboxes in TM1
10
+ *
11
+ */
12
+
13
+ constructor(rest: RestService) {
14
+ super(rest);
15
+ }
16
+
17
+ public async get(sandboxName: string): Promise<Sandbox> {
18
+ /** get a sandbox from TM1 Server
19
+ *
20
+ * :param sandbox_name: str
21
+ * :return: instance of .Sandbox
22
+ */
23
+ const url = formatUrl("/Sandboxes('{}')", sandboxName);
24
+ const response = await this.rest.get(url);
25
+ const sandbox = Sandbox.fromJSON(JSON.stringify(response.data));
26
+ return sandbox;
27
+ }
28
+
29
+ public async getAll(): Promise<Sandbox[]> {
30
+ /** get all sandboxes from TM1 Server
31
+ *
32
+ * :return: List of .Sandbox instances
33
+ */
34
+ const url = "/Sandboxes?$select=Name,IncludeInSandboxDimension,IsLoaded,IsActive,IsQueued";
35
+ const response = await this.rest.get(url);
36
+ const sandboxes = response.data.value.map((sandboxAsDict: any) =>
37
+ Sandbox.fromDict(sandboxAsDict)
38
+ );
39
+ return sandboxes;
40
+ }
41
+
42
+ public async getAllNames(): Promise<string[]> {
43
+ /** get all sandbox names
44
+ *
45
+ * :param kwargs:
46
+ * :return:
47
+ */
48
+ const url = "/Sandboxes?$select=Name";
49
+ const response = await this.rest.get(url);
50
+ return response.data.value.map((entry: any) => entry.Name);
51
+ }
52
+
53
+ public async create(sandbox: Sandbox): Promise<AxiosResponse> {
54
+ /** create a new sandbox in TM1 Server
55
+ *
56
+ * :param sandbox: Sandbox
57
+ * :return: response
58
+ */
59
+ const url = "/Sandboxes";
60
+ return await this.rest.post(url, sandbox.body);
61
+ }
62
+
63
+ public async update(sandbox: Sandbox): Promise<AxiosResponse> {
64
+ /** update a sandbox in TM1
65
+ *
66
+ * :param sandbox:
67
+ * :return: response
68
+ */
69
+ const url = formatUrl("/Sandboxes('{}')", sandbox.name);
70
+ return await this.rest.patch(url, sandbox.body);
71
+ }
72
+
73
+ public async delete(sandboxName: string): Promise<AxiosResponse> {
74
+ /** delete a sandbox in TM1
75
+ *
76
+ * :param sandbox_name:
77
+ * :return: response
78
+ */
79
+ const url = formatUrl("/Sandboxes('{}')", sandboxName);
80
+ return await this.rest.delete(url);
81
+ }
82
+
83
+ public async publish(sandboxName: string): Promise<AxiosResponse> {
84
+ /** publish existing sandbox to base
85
+ *
86
+ * :param sandbox_name: str
87
+ * :return: response
88
+ */
89
+ const url = formatUrl("/Sandboxes('{}')/tm1.Publish", sandboxName);
90
+ return await this.rest.post(url, "{}");
91
+ }
92
+
93
+ public async reset(sandboxName: string): Promise<AxiosResponse> {
94
+ /** reset all changes in specified sandbox
95
+ *
96
+ * :param sandbox_name: str
97
+ * :return: response
98
+ */
99
+ const url = formatUrl("/Sandboxes('{}')/tm1.DiscardChanges", sandboxName);
100
+ return await this.rest.post(url, "{}");
101
+ }
102
+
103
+ public async merge(sourceSandboxName: string, targetSandboxName: string): Promise<AxiosResponse> {
104
+ /** merge changes from source sandbox into target sandbox
105
+ *
106
+ * :param source_sandbox_name: str
107
+ * :param target_sandbox_name: str
108
+ * :return: response
109
+ */
110
+ const url = formatUrl("/Sandboxes('{}')/tm1.Merge", targetSandboxName);
111
+ const body = {
112
+ "Source@odata.bind": `Sandboxes('${sourceSandboxName}')`
113
+ };
114
+ return await this.rest.post(url, JSON.stringify(body));
115
+ }
116
+
117
+ public async exists(sandboxName: string): Promise<boolean> {
118
+ /** check if sandbox exists
119
+ *
120
+ * :param sandbox_name: str
121
+ * :return: boolean
122
+ */
123
+ try {
124
+ await this.get(sandboxName);
125
+ return true;
126
+ } catch (error) {
127
+ if (error instanceof TM1RestException && error.statusCode === 404) {
128
+ return false;
129
+ }
130
+ throw error;
131
+ }
132
+ }
133
+
134
+ public async getChanges(sandboxName: string): Promise<any> {
135
+ /** get all changes in a sandbox
136
+ *
137
+ * :param sandbox_name: str
138
+ * :return: dict of changes
139
+ */
140
+ const url = formatUrl("/Sandboxes('{}')/Changes", sandboxName);
141
+ const response = await this.rest.get(url);
142
+ return response.data;
143
+ }
144
+
145
+ public async isEmpty(sandboxName: string): Promise<boolean> {
146
+ /** check if sandbox is empty (has no changes)
147
+ *
148
+ * :param sandbox_name: str
149
+ * :return: boolean
150
+ */
151
+ try {
152
+ const changes = await this.getChanges(sandboxName);
153
+ return !changes || !changes.value || changes.value.length === 0;
154
+ } catch {
155
+ return true;
156
+ }
157
+ }
158
+
159
+ public async load(sandboxName: string): Promise<AxiosResponse> {
160
+ /** load sandbox into memory
161
+ *
162
+ * :param sandbox_name: str
163
+ * :return: response
164
+ */
165
+ const url = formatUrl("/Sandboxes('{}')/tm1.Load", sandboxName);
166
+ return await this.rest.post(url, "{}");
167
+ }
168
+
169
+ public async unload(sandboxName: string): Promise<AxiosResponse> {
170
+ /** unload sandbox from memory
171
+ *
172
+ * :param sandbox_name: str
173
+ * :return: response
174
+ */
175
+ const url = formatUrl("/Sandboxes('{}')/tm1.Unload", sandboxName);
176
+ return await this.rest.post(url, "{}");
177
+ }
178
+
179
+ public async getSandboxDimensionMembers(): Promise<string[]> {
180
+ /** get all members of the }Sandboxes dimension
181
+ *
182
+ * :return: list of sandbox names
183
+ */
184
+ const url = "/Dimensions('}Sandboxes')/Hierarchies('}Sandboxes')/Elements?$select=Name";
185
+ const response = await this.rest.get(url);
186
+ return response.data.value.map((element: any) => element.Name);
187
+ }
188
+
189
+ public async createIfNotExists(sandbox: Sandbox): Promise<AxiosResponse | null> {
190
+ /** create sandbox if it doesn't exist
191
+ *
192
+ * :param sandbox: Sandbox instance
193
+ * :return: response or null if already exists
194
+ */
195
+ if (await this.exists(sandbox.name)) {
196
+ return null;
197
+ }
198
+ return await this.create(sandbox);
199
+ }
200
+
201
+ public async cloneSandbox(sourceSandboxName: string, targetSandboxName: string): Promise<AxiosResponse> {
202
+ /** clone a sandbox
203
+ *
204
+ * :param source_sandbox_name: str
205
+ * :param target_sandbox_name: str
206
+ * :return: response
207
+ */
208
+ const sourceSandbox = await this.get(sourceSandboxName);
209
+ const targetSandbox = new Sandbox(
210
+ targetSandboxName,
211
+ sourceSandbox.includeInSandboxDimension
212
+ );
213
+
214
+ await this.create(targetSandbox);
215
+ return await this.merge(sourceSandboxName, targetSandboxName);
216
+ }
217
+ }