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,90 @@
1
+ /**
2
+ * Connection tests for TM1 instance
3
+ * These tests verify that the TM1 instance is accessible
4
+ */
5
+
6
+ import axios from 'axios';
7
+ import { loadTestConfig } from './testConfig';
8
+
9
+ describe('TM1 Connection Tests', () => {
10
+ const config = loadTestConfig();
11
+ const baseUrl = `http://${config.address}:${config.port}/api/v1`;
12
+
13
+ test('TM1 server should be accessible', async () => {
14
+ try {
15
+ const response = await axios.get(`${baseUrl}/Configuration/ProductVersion`, {
16
+ auth: {
17
+ username: config.user,
18
+ password: config.password,
19
+ },
20
+ timeout: 30000
21
+ });
22
+
23
+ expect(response.status).toBe(200);
24
+ expect(response.data).toHaveProperty('value');
25
+ expect(typeof response.data.value).toBe('string');
26
+ console.log(`✅ TM1 Version: ${response.data.value}`);
27
+ } catch (error: any) {
28
+ if (error.code === 'ECONNREFUSED') {
29
+ console.log('⚠️ TM1 server not available - skipping connection tests');
30
+ return; // Skip test if server not available
31
+ }
32
+ throw error;
33
+ }
34
+ }, 60000); // 60 second timeout
35
+
36
+ test('TM1 server name should be accessible', async () => {
37
+ try {
38
+ const response = await axios.get(`${baseUrl}/Configuration/ServerName`, {
39
+ auth: {
40
+ username: config.user,
41
+ password: config.password,
42
+ },
43
+ timeout: 30000
44
+ });
45
+
46
+ expect(response.status).toBe(200);
47
+ expect(response.data).toHaveProperty('value');
48
+ expect(typeof response.data.value).toBe('string');
49
+ console.log(`✅ Server Name: ${response.data.value}`);
50
+ } catch (error: any) {
51
+ if (error.code === 'ECONNREFUSED') {
52
+ console.log('⚠️ TM1 server not available - skipping connection tests');
53
+ return;
54
+ }
55
+ throw error;
56
+ }
57
+ }, 60000); // 60 second timeout
58
+
59
+ test('Basic REST API endpoints should be accessible', async () => {
60
+ try {
61
+ const endpoints = [
62
+ '/Cubes?$top=1&$select=Name',
63
+ '/Dimensions?$top=1&$select=Name',
64
+ '/Processes?$top=1&$select=Name'
65
+ ];
66
+
67
+ for (const endpoint of endpoints) {
68
+ const response = await axios.get(`${baseUrl}${endpoint}`, {
69
+ auth: {
70
+ username: config.user,
71
+ password: config.password,
72
+ },
73
+ timeout: 30000
74
+ });
75
+
76
+ expect(response.status).toBe(200);
77
+ expect(response.data).toHaveProperty('value');
78
+ expect(Array.isArray(response.data.value)).toBe(true);
79
+ }
80
+
81
+ console.log('✅ All basic REST API endpoints accessible');
82
+ } catch (error: any) {
83
+ if (error.code === 'ECONNREFUSED') {
84
+ console.log('⚠️ TM1 server not available - skipping connection tests');
85
+ return;
86
+ }
87
+ throw error;
88
+ }
89
+ }, 60000); // 60 second timeout
90
+ });
@@ -0,0 +1,458 @@
1
+ /**
2
+ * CubeService Tests for tm1npm
3
+ * Comprehensive tests for TM1 Cube operations with proper mocking
4
+ */
5
+
6
+ import { CubeService } from '../services/CubeService';
7
+ import { RestService } from '../services/RestService';
8
+ import { Cube } from '../objects/Cube';
9
+ import { TM1RestException } from '../exceptions/TM1Exception';
10
+
11
+ // Helper function to create mock AxiosResponse
12
+ const createMockResponse = (data: any, status: number = 200) => ({
13
+ data,
14
+ status,
15
+ statusText: status === 200 ? 'OK' : status === 201 ? 'Created' : status === 204 ? 'No Content' : 'Error',
16
+ headers: {},
17
+ config: {} as any
18
+ });
19
+
20
+ describe('CubeService Tests', () => {
21
+ let cubeService: CubeService;
22
+ let mockRestService: jest.Mocked<RestService>;
23
+
24
+ beforeEach(() => {
25
+ // Create comprehensive mock for RestService
26
+ mockRestService = {
27
+ get: jest.fn(),
28
+ post: jest.fn(),
29
+ patch: jest.fn(),
30
+ delete: jest.fn(),
31
+ put: jest.fn(),
32
+ config: {} as any,
33
+ rest: {} as any,
34
+ buildBaseUrl: jest.fn(),
35
+ extractErrorMessage: jest.fn()
36
+ } as any;
37
+
38
+ cubeService = new CubeService(mockRestService);
39
+ });
40
+
41
+ describe('Cube Retrieval Operations', () => {
42
+ test('should get all cube names', async () => {
43
+ mockRestService.get.mockResolvedValue(createMockResponse({
44
+ value: [
45
+ { Name: 'SalesCube', Dimensions: [{ Name: 'Time' }, { Name: 'Account' }] },
46
+ { Name: 'BudgetCube', Dimensions: [{ Name: 'Time' }, { Name: 'Version' }] },
47
+ { Name: 'ActualsCube', Dimensions: [{ Name: 'Time' }, { Name: 'Product' }] }
48
+ ]
49
+ }));
50
+
51
+ const cubes = await cubeService.getAll();
52
+
53
+ expect(Array.isArray(cubes)).toBe(true);
54
+ expect(cubes.length).toBe(3);
55
+ expect(cubes[0].name).toBe('SalesCube');
56
+ expect(cubes[1].name).toBe('BudgetCube');
57
+ expect(cubes[2].name).toBe('ActualsCube');
58
+ expect(mockRestService.get).toHaveBeenCalledWith("/Cubes?$expand=Dimensions($select=Name)");
59
+
60
+ console.log('✅ Cube names retrieved successfully');
61
+ });
62
+
63
+ test('should get all cubes with skip control cubes', async () => {
64
+ mockRestService.get.mockResolvedValue(createMockResponse({
65
+ value: [
66
+ { Name: 'SalesCube', Dimensions: [{ Name: 'Time' }, { Name: 'Account' }] },
67
+ { Name: 'BudgetCube', Dimensions: [{ Name: 'Time' }, { Name: 'Version' }] }
68
+ ]
69
+ }));
70
+
71
+ const cubes = await cubeService.getModelCubes(); // skip control cubes
72
+
73
+ expect(Array.isArray(cubes)).toBe(true);
74
+ expect(cubes.length).toBe(2);
75
+ expect(cubes[0].name).toBe('SalesCube');
76
+ expect(cubes[1].name).toBe('BudgetCube');
77
+ expect(mockRestService.get).toHaveBeenCalledWith("/ModelCubes()?$expand=Dimensions($select=Name)");
78
+
79
+ console.log('✅ Model cubes retrieved successfully');
80
+ });
81
+
82
+ test('should get a specific cube if it exists', async () => {
83
+ mockRestService.get.mockResolvedValueOnce(createMockResponse({
84
+ value: [{
85
+ Name: 'SalesCube',
86
+ Dimensions: [{ Name: 'Time' }, { Name: 'Product' }, { Name: 'Measure' }]
87
+ }]
88
+ }));
89
+
90
+ mockRestService.get.mockResolvedValueOnce(createMockResponse({
91
+ Name: 'SalesCube',
92
+ Dimensions: [{ Name: 'Time' }, { Name: 'Product' }, { Name: 'Measure' }]
93
+ }));
94
+
95
+ const cubes = await cubeService.getAll();
96
+ expect(cubes.length).toBe(1);
97
+
98
+ const cube = await cubeService.get('SalesCube');
99
+ expect(cube).toBeDefined();
100
+ expect(cube.name).toBe('SalesCube');
101
+ expect(cube.dimensions.length).toBe(3);
102
+
103
+ console.log('✅ Specific cube retrieved successfully');
104
+ });
105
+
106
+ test('should check if a cube exists', async () => {
107
+ // Test existing cube by trying to get it
108
+ mockRestService.get.mockResolvedValue(createMockResponse({
109
+ Name: 'SalesCube',
110
+ Dimensions: [{ Name: 'Time' }, { Name: 'Account' }]
111
+ }));
112
+
113
+ try {
114
+ const cube = await cubeService.get('SalesCube');
115
+ expect(cube).toBeDefined();
116
+ expect(cube.name).toBe('SalesCube');
117
+ console.log('✅ Cube existence check working via get method');
118
+ } catch (error) {
119
+ fail('Cube should exist');
120
+ }
121
+ });
122
+
123
+ test('should check if a cube does not exist', async () => {
124
+ // Test non-existing cube by checking for 404 error
125
+ const mockError = new TM1RestException('Cube not found', 404, { status: 404 });
126
+ mockRestService.get.mockRejectedValue(mockError);
127
+
128
+ try {
129
+ await cubeService.get('NonExistentCube');
130
+ fail('Should have thrown an error for non-existent cube');
131
+ } catch (error: any) {
132
+ expect(error).toBeInstanceOf(TM1RestException);
133
+ expect(error.status).toBe(404);
134
+ console.log('✅ Cube non-existence check working via error handling');
135
+ }
136
+ });
137
+ });
138
+
139
+ describe('Cube Dimension Operations', () => {
140
+ test('should get dimensions for existing cubes', async () => {
141
+ mockRestService.get.mockResolvedValue(createMockResponse({
142
+ value: [
143
+ {
144
+ Name: 'SalesCube',
145
+ Dimensions: [
146
+ { Name: 'Time' },
147
+ { Name: 'Product' },
148
+ { Name: 'Measure' }
149
+ ]
150
+ }
151
+ ]
152
+ }));
153
+
154
+ const cubes = await cubeService.getModelCubes();
155
+
156
+ expect(cubes[0].dimensions).toBeDefined();
157
+ expect(cubes[0].dimensions.length).toBe(3);
158
+ expect(cubes[0].dimensions[0]).toBe('Time');
159
+
160
+ console.log('✅ Cube dimensions retrieved successfully');
161
+ });
162
+
163
+ test('should get dimension names for cube', async () => {
164
+ mockRestService.get.mockResolvedValue(createMockResponse({
165
+ Name: 'SalesCube',
166
+ Dimensions: [
167
+ { Name: 'Time' },
168
+ { Name: 'Product' },
169
+ { Name: 'Account' },
170
+ { Name: 'Measure' }
171
+ ]
172
+ }));
173
+
174
+ const cube = await cubeService.get('SalesCube');
175
+
176
+ expect(cube.dimensions.includes('Time')).toBe(true);
177
+ expect(cube.dimensions.includes('Product')).toBe(true);
178
+ expect(cube.dimensions.includes('Account')).toBe(true);
179
+ expect(cube.dimensions.includes('Measure')).toBe(true);
180
+
181
+ console.log('✅ Dimension names for cube working');
182
+ });
183
+
184
+ test('should get measure dimension for cube', async () => {
185
+ mockRestService.get.mockResolvedValue(createMockResponse({
186
+ Name: 'SalesCube',
187
+ Dimensions: [
188
+ { Name: 'Time' },
189
+ { Name: 'Product' },
190
+ { Name: 'Measure' }
191
+ ]
192
+ }));
193
+
194
+ const measureDimension = await cubeService.getMeasureDimension('SalesCube');
195
+
196
+ expect(measureDimension).toBe('Measure');
197
+
198
+ console.log('✅ Measure dimension retrieval working');
199
+ });
200
+ });
201
+
202
+ describe('Cube Data Operations', () => {
203
+ test('should handle cube cell operations', async () => {
204
+ // Mock cube retrieval for context
205
+ mockRestService.get.mockResolvedValue(createMockResponse({
206
+ Name: 'SalesCube',
207
+ Dimensions: [{ Name: 'Time' }, { Name: 'Account' }, { Name: 'Measure' }]
208
+ }));
209
+
210
+ const cube = await cubeService.get('SalesCube');
211
+
212
+ expect(cube.name).toBe('SalesCube');
213
+ expect(cube.dimensions.length).toBe(3);
214
+
215
+ // CellService operations would be tested separately
216
+ console.log('✅ Cube cell operations context working');
217
+ });
218
+
219
+ test('should get cube size information', async () => {
220
+ // Mock cube count
221
+ mockRestService.get.mockResolvedValue(createMockResponse('25'));
222
+
223
+ const cubeCount = await cubeService.getNumberOfCubes();
224
+
225
+ expect(typeof cubeCount).toBe('number');
226
+ expect(cubeCount).toBe(25);
227
+
228
+ console.log('✅ Cube size information working');
229
+ });
230
+
231
+ test('should get model cubes count', async () => {
232
+ // Mock model cubes count
233
+ mockRestService.get.mockResolvedValue(createMockResponse({
234
+ '@odata.count': '15'
235
+ }));
236
+
237
+ const modelCubeCount = await cubeService.getNumberOfCubes(true);
238
+
239
+ expect(typeof modelCubeCount).toBe('number');
240
+ expect(modelCubeCount).toBe(15);
241
+
242
+ console.log('✅ Model cubes count working');
243
+ });
244
+ });
245
+
246
+ describe('Cube Rule Operations', () => {
247
+ test('should handle cube rules retrieval', async () => {
248
+ // Mock cube with rules context
249
+ mockRestService.get.mockResolvedValue(createMockResponse({
250
+ Name: 'SalesCube',
251
+ Dimensions: [{ Name: 'Time' }, { Name: 'Account' }, { Name: 'Measure' }]
252
+ }));
253
+
254
+ const cube = await cubeService.get('SalesCube');
255
+
256
+ expect(cube.name).toBe('SalesCube');
257
+ expect(cube.hasRules).toBeDefined(); // Rules are handled by the Cube object
258
+
259
+ console.log('✅ Cube rules context working');
260
+ });
261
+ });
262
+
263
+ describe('Cube Error Handling', () => {
264
+ test('should handle invalid cube names gracefully', async () => {
265
+ mockRestService.get.mockRejectedValue({
266
+ response: { status: 400, statusText: 'Bad Request' }
267
+ });
268
+
269
+ await expect(cubeService.get('')).rejects.toMatchObject({
270
+ response: { status: 400 }
271
+ });
272
+
273
+ console.log('✅ Invalid cube names handled gracefully');
274
+ });
275
+
276
+ test('should handle network errors gracefully', async () => {
277
+ mockRestService.get.mockRejectedValue({
278
+ code: 'ECONNREFUSED'
279
+ });
280
+
281
+ await expect(cubeService.getAll()).rejects.toMatchObject({
282
+ code: 'ECONNREFUSED'
283
+ });
284
+
285
+ console.log('✅ Network errors handled gracefully');
286
+ });
287
+
288
+ test('should handle authentication errors', async () => {
289
+ mockRestService.get.mockRejectedValue({
290
+ response: { status: 401, statusText: 'Unauthorized' }
291
+ });
292
+
293
+ await expect(cubeService.getAll()).rejects.toMatchObject({
294
+ response: { status: 401 }
295
+ });
296
+
297
+ console.log('✅ Authentication errors handled gracefully');
298
+ });
299
+ });
300
+
301
+ describe('Cube Service Edge Cases', () => {
302
+ test('should handle empty cube lists', async () => {
303
+ mockRestService.get.mockResolvedValue(createMockResponse({
304
+ value: []
305
+ }));
306
+
307
+ const cubes = await cubeService.getAll();
308
+
309
+ expect(Array.isArray(cubes)).toBe(true);
310
+ expect(cubes.length).toBe(0);
311
+
312
+ console.log('✅ Empty cube lists handled correctly');
313
+ });
314
+
315
+ test('should handle concurrent cube operations', async () => {
316
+ mockRestService.get.mockResolvedValue(createMockResponse({
317
+ value: [{ Name: 'TestCube', Dimensions: [{ Name: 'Time' }] }]
318
+ }));
319
+
320
+ const operations = [
321
+ cubeService.getAll(),
322
+ cubeService.getAll(),
323
+ cubeService.getAll()
324
+ ];
325
+
326
+ const results = await Promise.allSettled(operations);
327
+ const successful = results.filter(r => r.status === 'fulfilled');
328
+
329
+ expect(successful.length).toBe(3);
330
+ console.log('✅ Concurrent operations handled successfully');
331
+ });
332
+
333
+ test('should handle large cube lists efficiently', async () => {
334
+ const largeCubeList = Array(1000).fill(null).map((_, i) => ({
335
+ Name: `Cube${i}`,
336
+ Dimensions: [{ Name: 'Time' }, { Name: 'Account' }]
337
+ }));
338
+
339
+ mockRestService.get.mockResolvedValue(createMockResponse({
340
+ value: largeCubeList
341
+ }));
342
+
343
+ const startTime = Date.now();
344
+ const cubes = await cubeService.getAll();
345
+ const endTime = Date.now();
346
+
347
+ expect(cubes.length).toBe(1000);
348
+ expect(endTime - startTime).toBeLessThan(1000); // Should be fast with mocking
349
+
350
+ console.log('✅ Large cube lists handled efficiently');
351
+ });
352
+ });
353
+
354
+ describe('Cube Service Integration', () => {
355
+ test('should maintain consistent data across operations', async () => {
356
+ const cubeData = {
357
+ value: [
358
+ { Name: 'SalesCube', Dimensions: [{ Name: 'Time' }] },
359
+ { Name: 'BudgetCube', Dimensions: [{ Name: 'Version' }] }
360
+ ]
361
+ };
362
+
363
+ mockRestService.get.mockResolvedValue(createMockResponse(cubeData));
364
+
365
+ const cubes1 = await cubeService.getAll();
366
+ const cubes2 = await cubeService.getAll();
367
+
368
+ expect(cubes1.length).toEqual(cubes2.length);
369
+ expect(cubes1[0].name).toEqual(cubes2[0].name);
370
+ expect(cubes1[1].name).toEqual(cubes2[1].name);
371
+
372
+ console.log('✅ Data consistency maintained across operations');
373
+ });
374
+
375
+ test('should handle cube dimension consistency', async () => {
376
+ const salesCube = {
377
+ Name: 'SalesCube',
378
+ Dimensions: [
379
+ { Name: 'Time' },
380
+ { Name: 'Product' },
381
+ { Name: 'Measure' }
382
+ ]
383
+ };
384
+
385
+ mockRestService.get.mockResolvedValueOnce(createMockResponse({
386
+ value: [{
387
+ Name: 'SalesCube',
388
+ Dimensions: [
389
+ { Name: 'Time' },
390
+ { Name: 'Product' },
391
+ { Name: 'Measure' }
392
+ ]
393
+ }]
394
+ }));
395
+
396
+ mockRestService.get.mockResolvedValueOnce(createMockResponse(salesCube));
397
+
398
+ const cubes = await cubeService.getModelCubes();
399
+ expect(cubes.length).toBe(1);
400
+
401
+ const cube = await cubeService.get('SalesCube');
402
+ expect(cube.dimensions.length).toBe(3);
403
+ expect(cube.dimensions[2]).toBe('Measure'); // Last dimension is measure
404
+
405
+ console.log('✅ Cube dimension consistency maintained');
406
+ });
407
+ });
408
+
409
+ describe('Cube View Operations', () => {
410
+ test('should handle cube view operations', async () => {
411
+ // Mock cube context for view operations
412
+ mockRestService.get.mockResolvedValue(createMockResponse({
413
+ value: [{
414
+ Name: 'SalesCube',
415
+ Dimensions: [
416
+ { Name: 'Time' },
417
+ { Name: 'Product' },
418
+ { Name: 'Measure' }
419
+ ]
420
+ }]
421
+ }));
422
+
423
+ const cubes = await cubeService.getModelCubes();
424
+
425
+ expect(cubes[0].name).toBe('SalesCube');
426
+ expect(cubes[0].dimensions.length).toBe(3);
427
+
428
+ // ViewService operations would be tested separately through cubeService.views
429
+ expect(cubeService.views).toBeDefined();
430
+
431
+ console.log('✅ Cube view operations context working');
432
+ });
433
+ });
434
+
435
+ describe('Cube CRUD Operations', () => {
436
+ test('should handle cube creation lifecycle', async () => {
437
+ const testCube = new Cube('TestCube', ['Time', 'Account', 'Measure']);
438
+
439
+ // Mock cube creation
440
+ mockRestService.post.mockResolvedValue(createMockResponse({}, 201));
441
+
442
+ const createResult = await cubeService.create(testCube);
443
+ expect(createResult.status).toBe(201);
444
+
445
+ // Mock cube retrieval after creation to verify it exists
446
+ mockRestService.get.mockResolvedValueOnce(createMockResponse({
447
+ Name: 'TestCube',
448
+ Dimensions: [{ Name: 'Time' }, { Name: 'Account' }, { Name: 'Measure' }]
449
+ }));
450
+
451
+ const retrievedCube = await cubeService.get('TestCube');
452
+ expect(retrievedCube.name).toBe('TestCube');
453
+ expect(retrievedCube.dimensions.length).toBe(3);
454
+
455
+ console.log('✅ Cube creation lifecycle handled successfully');
456
+ });
457
+ });
458
+ });