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,395 @@
1
+ export class CaseAndSpaceInsensitiveDict<T> extends Map<string, T> {
2
+ private normalizeKey(key: string): string {
3
+ return key.toLowerCase().replace(/\s+/g, '');
4
+ }
5
+
6
+ set(key: string, value: T): this {
7
+ return super.set(this.normalizeKey(key), value);
8
+ }
9
+
10
+ get(key: string): T | undefined {
11
+ return super.get(this.normalizeKey(key));
12
+ }
13
+
14
+ has(key: string): boolean {
15
+ return super.has(this.normalizeKey(key));
16
+ }
17
+
18
+ delete(key: string): boolean {
19
+ return super.delete(this.normalizeKey(key));
20
+ }
21
+ }
22
+
23
+ export class CaseAndSpaceInsensitiveTuplesDict<T> extends Map<string, T> {
24
+ private normalizeKey(key: string): string {
25
+ return key.toLowerCase().replace(/\s+/g, '');
26
+ }
27
+
28
+ set(key: string, value: T): this {
29
+ return super.set(this.normalizeKey(key), value);
30
+ }
31
+
32
+ get(key: string): T | undefined {
33
+ return super.get(this.normalizeKey(key));
34
+ }
35
+
36
+ has(key: string): boolean {
37
+ return super.has(this.normalizeKey(key));
38
+ }
39
+
40
+ delete(key: string): boolean {
41
+ return super.delete(this.normalizeKey(key));
42
+ }
43
+ }
44
+
45
+ export class CaseAndSpaceInsensitiveMap<T> extends Map<string, T> {
46
+ private normalizeKey(key: string): string {
47
+ return key.toLowerCase().replace(/\s+/g, '');
48
+ }
49
+
50
+ set(key: string, value: T): this {
51
+ return super.set(this.normalizeKey(key), value);
52
+ }
53
+
54
+ get(key: string): T | undefined {
55
+ return super.get(this.normalizeKey(key));
56
+ }
57
+
58
+ has(key: string): boolean {
59
+ return super.has(this.normalizeKey(key));
60
+ }
61
+
62
+ delete(key: string): boolean {
63
+ return super.delete(this.normalizeKey(key));
64
+ }
65
+ }
66
+
67
+ export class CaseAndSpaceInsensitiveSet extends Set<string> {
68
+ private normalizeValue(value: string): string {
69
+ return value.toLowerCase().replace(/\s+/g, '');
70
+ }
71
+
72
+ add(value: string): this {
73
+ return super.add(this.normalizeValue(value));
74
+ }
75
+
76
+ has(value: string): boolean {
77
+ return super.has(this.normalizeValue(value));
78
+ }
79
+
80
+ delete(value: string): boolean {
81
+ return super.delete(this.normalizeValue(value));
82
+ }
83
+ }
84
+
85
+ export function caseAndSpaceInsensitiveEquals(str1: string, str2: string): boolean {
86
+ if (str1 === str2) return true;
87
+ if (!str1 || !str2) return false;
88
+
89
+ return str1.toLowerCase().replace(/\s+/g, '') ===
90
+ str2.toLowerCase().replace(/\s+/g, '');
91
+ }
92
+
93
+ export function lowerAndDropSpaces(str: string): string {
94
+ return str.toLowerCase().replace(/\s+/g, '');
95
+ }
96
+
97
+ export function formatUrl(template: string, ...args: string[]): string {
98
+ let url = template;
99
+ for (const arg of args) {
100
+ url = url.replace('{}', encodeURIComponent(arg));
101
+ }
102
+ return url;
103
+ }
104
+
105
+ export function extractCellsetCells(cellset: any): any[] {
106
+ if (!cellset || !cellset.Cells) {
107
+ return [];
108
+ }
109
+ return cellset.Cells;
110
+ }
111
+
112
+ export function buildMdxFromAxes(axes: any[]): string {
113
+ // Simple MDX builder - can be expanded
114
+ if (!axes || axes.length === 0) {
115
+ return '';
116
+ }
117
+
118
+ let mdx = 'SELECT ';
119
+
120
+ for (let i = 0; i < axes.length; i++) {
121
+ if (i > 0) mdx += ', ';
122
+
123
+ const axis = axes[i];
124
+ if (axis.Tuples && axis.Tuples.length > 0) {
125
+ const members = axis.Tuples.map((tuple: any) => {
126
+ if (tuple.Members) {
127
+ return tuple.Members.map((member: any) => `[${member.UniqueName}]`).join(',');
128
+ }
129
+ return '';
130
+ }).join(',');
131
+ mdx += `{${members}} ON ${i}`;
132
+ } else {
133
+ mdx += `{} ON ${i}`;
134
+ }
135
+ }
136
+
137
+ return mdx;
138
+ }
139
+
140
+ export function buildElementsStringFromIterable(elements: Iterable<string>, separator: string = ','): string {
141
+ return Array.from(elements).join(separator);
142
+ }
143
+
144
+ export function dimensionHierarchyElementTupleFromUniqueName(uniqueName: string): [string, string, string] {
145
+ // Parse [Dimension].[Hierarchy].[Element] format
146
+ const matches = uniqueName.match(/\[([^\]]+)\]\.\[([^\]]+)\]\.\[([^\]]+)\]/);
147
+ if (matches && matches.length === 4) {
148
+ return [matches[1], matches[2], matches[3]];
149
+ }
150
+
151
+ // Fallback: assume format is Dimension.Hierarchy.Element
152
+ const parts = uniqueName.split('.');
153
+ if (parts.length >= 3) {
154
+ return [parts[0], parts[1], parts[2]];
155
+ } else if (parts.length === 2) {
156
+ return [parts[0], parts[0], parts[1]]; // Default hierarchy = dimension name
157
+ } else {
158
+ return [uniqueName, uniqueName, uniqueName];
159
+ }
160
+ }
161
+
162
+ export function buildElementUniqueNames(elements: string[], dimensionName: string, hierarchyName?: string): string[] {
163
+ const hierarchy = hierarchyName || dimensionName;
164
+ return elements.map(element => `[${dimensionName}].[${hierarchy}].[${element}]`);
165
+ }
166
+
167
+ export function dimensionHierarchyElementTupleFromString(dimensionHierarchyElement: string): [string, string, string] {
168
+ // Parse [Dimension].[Hierarchy].[Element] format
169
+ const matches = dimensionHierarchyElement.match(/\[([^\]]+)\]\.\[([^\]]+)\]\.\[([^\]]+)\]/);
170
+ if (matches && matches.length === 4) {
171
+ return [matches[1], matches[2], matches[3]];
172
+ }
173
+
174
+ // Fallback: assume format is Dimension.Hierarchy.Element
175
+ const parts = dimensionHierarchyElement.split('.');
176
+ if (parts.length >= 3) {
177
+ return [parts[0], parts[1], parts[2]];
178
+ } else if (parts.length === 2) {
179
+ return [parts[0], parts[0], parts[1]]; // Default hierarchy = dimension name
180
+ } else {
181
+ return [dimensionHierarchyElement, dimensionHierarchyElement, dimensionHierarchyElement];
182
+ }
183
+ }
184
+
185
+ export function deprecatedInVersion(version: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void {
186
+ return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
187
+ const originalMethod = descriptor.value;
188
+
189
+ descriptor.value = function (this: any, ...args: any[]) {
190
+ console.warn(`Method ${propertyKey} is deprecated in version ${version}`);
191
+ return originalMethod.apply(this, args);
192
+ };
193
+ };
194
+ }
195
+
196
+ export function requireVersion(minVersion: string): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void {
197
+ return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {
198
+ const originalMethod = descriptor.value;
199
+
200
+ descriptor.value = function (this: any, ...args: any[]) {
201
+ // Version check would be implemented here
202
+ // For now, just call the original method
203
+ return originalMethod.apply(this, args);
204
+ };
205
+ };
206
+ }
207
+
208
+ export function requireAdmin(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
209
+ const originalMethod = descriptor.value;
210
+
211
+ descriptor.value = function (this: any, ...args: any[]) {
212
+ // Admin check would be implemented here
213
+ // For now, just call the original method
214
+ return originalMethod.apply(this, args);
215
+ };
216
+ }
217
+
218
+ export function requireDataAdmin(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
219
+ const originalMethod = descriptor.value;
220
+
221
+ descriptor.value = function (this: any, ...args: any[]) {
222
+ // Data admin check would be implemented here
223
+ // For now, just call the original method
224
+ return originalMethod.apply(this, args);
225
+ };
226
+ }
227
+
228
+ export function requireSecurityAdmin(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
229
+ const originalMethod = descriptor.value;
230
+
231
+ descriptor.value = function (this: any, ...args: any[]) {
232
+ // Security admin check would be implemented here
233
+ // For now, just call the original method
234
+ return originalMethod.apply(this, args);
235
+ };
236
+ }
237
+
238
+ export function requireOpsAdmin(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {
239
+ const originalMethod = descriptor.value;
240
+
241
+ descriptor.value = function (this: any, ...args: any[]) {
242
+ // Ops admin check would be implemented here
243
+ // For now, just call the original method
244
+ return originalMethod.apply(this, args);
245
+ };
246
+ }
247
+
248
+ export function wrapTupleInBrackets(members: string[]): string {
249
+ if (members.length === 1) {
250
+ return `[${members[0]}]`;
251
+ }
252
+ return `(${members.map(m => `[${m}]`).join(',')})`;
253
+ }
254
+
255
+ export function abbreviateString(text: string, maxLength: number): string {
256
+ if (!text || text.length <= maxLength) {
257
+ return text || '';
258
+ }
259
+ if (maxLength <= 3) {
260
+ return '...';
261
+ }
262
+ return text.substring(0, maxLength - 3) + '...';
263
+ }
264
+
265
+ export function getTimeFromTimeStamp(timestamp: string): Date {
266
+ // Parse various timestamp formats
267
+ try {
268
+ return new Date(timestamp);
269
+ } catch (error) {
270
+ // Try parsing as ISO string or other formats
271
+ return new Date();
272
+ }
273
+ }
274
+
275
+ export function addTimeToTimeStamp(timestamp: string, hours: number): string {
276
+ const date = getTimeFromTimeStamp(timestamp);
277
+ date.setHours(date.getHours() + hours);
278
+ return date.toISOString();
279
+ }
280
+
281
+ export function tidy(inputString: string): string {
282
+ if (!inputString) return '';
283
+ return inputString.trim().replace(/\s+/g, ' ');
284
+ }
285
+
286
+ // MDX Utility functions
287
+ export function getMdxElementFromAttribute(attribute: string, cube: string): string {
288
+ return `[${cube}].[${attribute}]`;
289
+ }
290
+
291
+ export function buildMdxTuple(members: string[]): string {
292
+ if (members.length === 1) {
293
+ return members[0];
294
+ }
295
+ return `(${members.join(',')})`;
296
+ }
297
+
298
+ // Verification utilities
299
+ export function verifyVersion(actualVersion: string, requiredVersion: string): boolean {
300
+ // Handle null/undefined inputs
301
+ if (!actualVersion || !requiredVersion) {
302
+ return false;
303
+ }
304
+
305
+ // Simple version comparison
306
+ const actual = actualVersion.split('.').map(Number);
307
+ const required = requiredVersion.split('.').map(Number);
308
+
309
+ for (let i = 0; i < Math.max(actual.length, required.length); i++) {
310
+ const a = actual[i] || 0;
311
+ const r = required[i] || 0;
312
+
313
+ if (a > r) return true;
314
+ if (a < r) return false;
315
+ }
316
+
317
+ return true; // Equal versions
318
+ }
319
+
320
+ export function readObjectNameFromUrl(url: string): string {
321
+ // Extract object name from URL like "/Dimensions('DimName')" -> "DimName"
322
+ const match = url.match(/\('([^']+)'\)/);
323
+ return match ? match[1] : '';
324
+ }
325
+
326
+ export function integerizeVersion(version: string): number {
327
+ // Convert version string like "11.8.01300.1" to integer like 1180
328
+ const parts = version.split('.');
329
+ const major = parseInt(parts[0]) || 0;
330
+ const minor = parseInt(parts[1]) || 0;
331
+ return major * 100 + minor;
332
+ }
333
+
334
+ // Frame utilities for working with tabular data
335
+ export function frameToSignificantValue(value: any): any {
336
+ if (typeof value === 'number') {
337
+ if (Math.abs(value) < 1e-10) {
338
+ return 0;
339
+ }
340
+ return Number(value.toPrecision(10));
341
+ }
342
+ return value;
343
+ }
344
+
345
+ // HTTP utilities
346
+ export class HTTPAdapterWithSocketOptions {
347
+ constructor(private socketOptions: any = {}) {}
348
+
349
+ // Implementation would depend on the HTTP client being used
350
+ }
351
+
352
+ // Additional utility functions
353
+ export function odataTrackChangesHeader(): Record<string, string> {
354
+ return {
355
+ 'Prefer': 'return=representation;odata.track-changes'
356
+ };
357
+ }
358
+
359
+ export function utcLocalizeTime(utcTimeStr: string): Date {
360
+ return new Date(utcTimeStr + 'Z');
361
+ }
362
+
363
+ export function decohints(): string {
364
+ return 'decohints';
365
+ }
366
+
367
+ export const Utils = {
368
+ CaseAndSpaceInsensitiveMap,
369
+ CaseAndSpaceInsensitiveSet,
370
+ caseAndSpaceInsensitiveEquals,
371
+ lowerAndDropSpaces,
372
+ formatUrl,
373
+ extractCellsetCells,
374
+ buildMdxFromAxes,
375
+ buildElementsStringFromIterable,
376
+ dimensionHierarchyElementTupleFromString,
377
+ requireVersion,
378
+ requireAdmin,
379
+ requireDataAdmin,
380
+ requireSecurityAdmin,
381
+ requireOpsAdmin,
382
+ wrapTupleInBrackets,
383
+ abbreviateString,
384
+ getTimeFromTimeStamp,
385
+ addTimeToTimeStamp,
386
+ tidy,
387
+ getMdxElementFromAttribute,
388
+ buildMdxTuple,
389
+ verifyVersion,
390
+ frameToSignificantValue,
391
+ HTTPAdapterWithSocketOptions,
392
+ odataTrackChangesHeader,
393
+ utcLocalizeTime,
394
+ decohints
395
+ };
@@ -0,0 +1,57 @@
1
+ # TM1npm Test Scripts
2
+
3
+ This directory contains organized standalone test scripts for tm1npm functionality.
4
+
5
+ ## Directory Structure
6
+
7
+ ### šŸ”Œ Connection Tests (`connection/`)
8
+ - `test-connection.ts` - Comprehensive TM1 connection testing
9
+ - `simple-connection-test.ts` - Basic TM1 connectivity verification
10
+ - `minimal-connection-test.ts` - Minimal REST API connection test
11
+
12
+ ### šŸ”’ Security Tests (`security/`)
13
+ - `security-test.ts` - Authentication, authorization, and vulnerability tests
14
+
15
+ ### ⚔ Performance Tests (`performance/`)
16
+ - `performance-test.ts` - Response time, memory usage, and scalability tests
17
+
18
+ ### šŸŽÆ Edge Cases Tests (`edge-cases/`)
19
+ - `edge-cases-test.ts` - Boundary conditions and unusual input tests
20
+
21
+ ### šŸ”— Integration Tests (`integration/`)
22
+ - `working-test.ts` - Comprehensive TM1 functionality test
23
+
24
+ ## Environment Configuration
25
+
26
+ All tests use environment variables from `.env` file:
27
+ ```
28
+ TM1_ADDRESS=localhost
29
+ TM1_PORT=8879
30
+ TM1_USER=admin
31
+ TM1_PASSWORD=your_password_here
32
+ TM1_SSL=false
33
+ ```
34
+
35
+ ## Running Tests
36
+
37
+ ### Individual Test Categories
38
+ ```bash
39
+ npm run test:connection # Connection tests
40
+ npm run test:simple # Simple connection test
41
+ npm run test:minimal # Minimal connection test
42
+ npm run test:working # Integration test
43
+ npm run test:security # Security tests
44
+ npm run test:performance # Performance tests
45
+ npm run test:edge-cases # Edge cases tests
46
+ ```
47
+
48
+ ### All Tests
49
+ ```bash
50
+ npm run test:all # Run all test suites including Jest unit tests
51
+ ```
52
+
53
+ ## Security Notes
54
+
55
+ - No hardcoded passwords - all credentials come from environment variables
56
+ - Tests will fail gracefully if TM1_PASSWORD is not set
57
+ - Production deployments should use secure credential management
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Simple connection test using axios directly
3
+ */
4
+
5
+ import axios from 'axios';
6
+ import dotenv from 'dotenv';
7
+
8
+ // Load environment variables
9
+ dotenv.config();
10
+
11
+ async function simpleConnectionTest(): Promise<void> {
12
+ const address = process.env.TM1_ADDRESS || 'localhost';
13
+ const port = process.env.TM1_PORT || '8879';
14
+ const user = process.env.TM1_USER || 'admin';
15
+ const password = process.env.TM1_PASSWORD;
16
+
17
+ if (!password) {
18
+ console.log('āŒ TM1_PASSWORD environment variable is required');
19
+ console.log('Please set TM1_PASSWORD in your .env file');
20
+ process.exit(1);
21
+ }
22
+
23
+ console.log('šŸ” Simple TM1 Connection Test');
24
+ console.log(`Server: ${address}:${port}`);
25
+ console.log(`User: ${user}`);
26
+ console.log('=' .repeat(40));
27
+
28
+ const config = {
29
+ baseURL: `http://${address}:${port}/api/v1`,
30
+ auth: {
31
+ username: user,
32
+ password: password
33
+ },
34
+ timeout: 30000
35
+ };
36
+
37
+ try {
38
+ console.log('ā³ Testing basic server connectivity...');
39
+
40
+ // Test basic server connection
41
+ const response = await axios.get('/Configuration/ProductVersion', config);
42
+ console.log('āœ… Server responded successfully!');
43
+ console.log(`šŸ“ˆ TM1 Version: ${response.data.value}`);
44
+
45
+ // Test server name
46
+ const nameResponse = await axios.get('/Configuration/ServerName', config);
47
+ console.log(`šŸ·ļø Server Name: ${nameResponse.data.value}`);
48
+
49
+ // Test basic endpoints
50
+ console.log('ā³ Testing basic endpoints...');
51
+ const cubesResponse = await axios.get('/Cubes?$top=1&$select=Name', config);
52
+ const dimsResponse = await axios.get('/Dimensions?$top=1&$select=Name', config);
53
+
54
+ console.log(`šŸ“Š Found cubes: ${cubesResponse.data.value.length > 0 ? 'Yes' : 'None'}`);
55
+ console.log(`šŸ“ Found dimensions: ${dimsResponse.data.value.length > 0 ? 'Yes' : 'None'}`);
56
+
57
+ console.log('\nšŸŽ‰ Simple connection test PASSED!');
58
+ console.log('āœ… TM1 server is accessible and responding correctly');
59
+
60
+ } catch (error: any) {
61
+ console.log('\nāŒ Connection test FAILED!');
62
+ console.log(`Error: ${error.message || error}`);
63
+
64
+ if (error.code === 'ECONNREFUSED') {
65
+ console.log(' Connection refused - server may not be running');
66
+ } else if (error.response?.status === 401) {
67
+ console.log(' Authentication failed - check username/password');
68
+ }
69
+
70
+ console.log('\nšŸ”§ Troubleshooting checklist:');
71
+ console.log(' ā–” TM1 server is running at localhost:8879');
72
+ console.log(' ā–” Username: admin');
73
+ console.log(' ā–” TM1 REST API is enabled');
74
+ console.log(' ā–” No firewall blocking port 8879');
75
+ }
76
+ }
77
+
78
+ // Run the test
79
+ if (require.main === module) {
80
+ simpleConnectionTest().catch((error) => {
81
+ console.error('Fatal error:', error);
82
+ process.exit(1);
83
+ });
84
+ }
85
+
86
+ export { simpleConnectionTest };