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.
- package/.env.example +16 -0
- package/.eslintrc.js +28 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/.github/ISSUE_TEMPLATE/question.md +24 -0
- package/.github/workflows/publish-npm.yml +53 -0
- package/.github/workflows/test-on-tag.yml +172 -0
- package/DEVELOPMENT_GUIDE.md +587 -0
- package/LICENSE +21 -0
- package/README.md +580 -0
- package/jest.ci.config.js +83 -0
- package/jest.config.js +68 -0
- package/lib/exceptions/TM1Exception.d.ts +17 -0
- package/lib/exceptions/TM1Exception.d.ts.map +1 -0
- package/lib/exceptions/TM1Exception.js +36 -0
- package/lib/exceptions/TM1RestException.d.ts +10 -0
- package/lib/exceptions/TM1RestException.d.ts.map +1 -0
- package/lib/exceptions/TM1RestException.js +17 -0
- package/lib/exceptions/TM1TimeoutException.d.ts +9 -0
- package/lib/exceptions/TM1TimeoutException.d.ts.map +1 -0
- package/lib/exceptions/TM1TimeoutException.js +16 -0
- package/lib/index.d.ts +41 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +132 -0
- package/lib/objects/Annotation.d.ts +36 -0
- package/lib/objects/Annotation.d.ts.map +1 -0
- package/lib/objects/Annotation.js +134 -0
- package/lib/objects/Application.d.ts +67 -0
- package/lib/objects/Application.d.ts.map +1 -0
- package/lib/objects/Application.js +125 -0
- package/lib/objects/Axis.d.ts +36 -0
- package/lib/objects/Axis.d.ts.map +1 -0
- package/lib/objects/Axis.js +103 -0
- package/lib/objects/Chore.d.ts +43 -0
- package/lib/objects/Chore.d.ts.map +1 -0
- package/lib/objects/Chore.js +129 -0
- package/lib/objects/ChoreFrequency.d.ts +23 -0
- package/lib/objects/ChoreFrequency.d.ts.map +1 -0
- package/lib/objects/ChoreFrequency.js +61 -0
- package/lib/objects/ChoreStartTime.d.ts +15 -0
- package/lib/objects/ChoreStartTime.d.ts.map +1 -0
- package/lib/objects/ChoreStartTime.js +85 -0
- package/lib/objects/ChoreTask.d.ts +28 -0
- package/lib/objects/ChoreTask.d.ts.map +1 -0
- package/lib/objects/ChoreTask.js +66 -0
- package/lib/objects/Cube.d.ts +26 -0
- package/lib/objects/Cube.d.ts.map +1 -0
- package/lib/objects/Cube.js +109 -0
- package/lib/objects/Dimension.d.ts +26 -0
- package/lib/objects/Dimension.d.ts.map +1 -0
- package/lib/objects/Dimension.js +86 -0
- package/lib/objects/Element.d.ts +35 -0
- package/lib/objects/Element.d.ts.map +1 -0
- package/lib/objects/Element.js +115 -0
- package/lib/objects/ElementAttribute.d.ts +28 -0
- package/lib/objects/ElementAttribute.d.ts.map +1 -0
- package/lib/objects/ElementAttribute.js +97 -0
- package/lib/objects/Git.d.ts +21 -0
- package/lib/objects/Git.d.ts.map +1 -0
- package/lib/objects/Git.js +49 -0
- package/lib/objects/GitCommit.d.ts +12 -0
- package/lib/objects/GitCommit.d.ts.map +1 -0
- package/lib/objects/GitCommit.js +26 -0
- package/lib/objects/GitPlan.d.ts +35 -0
- package/lib/objects/GitPlan.d.ts.map +1 -0
- package/lib/objects/GitPlan.js +78 -0
- package/lib/objects/GitRemote.d.ts +12 -0
- package/lib/objects/GitRemote.d.ts.map +1 -0
- package/lib/objects/GitRemote.js +26 -0
- package/lib/objects/Hierarchy.d.ts +47 -0
- package/lib/objects/Hierarchy.d.ts.map +1 -0
- package/lib/objects/Hierarchy.js +165 -0
- package/lib/objects/MDXView.d.ts +19 -0
- package/lib/objects/MDXView.d.ts.map +1 -0
- package/lib/objects/MDXView.js +67 -0
- package/lib/objects/NativeView.d.ts +39 -0
- package/lib/objects/NativeView.d.ts.map +1 -0
- package/lib/objects/NativeView.js +209 -0
- package/lib/objects/Process.d.ts +70 -0
- package/lib/objects/Process.d.ts.map +1 -0
- package/lib/objects/Process.js +210 -0
- package/lib/objects/ProcessDebugBreakpoint.d.ts +60 -0
- package/lib/objects/ProcessDebugBreakpoint.d.ts.map +1 -0
- package/lib/objects/ProcessDebugBreakpoint.js +168 -0
- package/lib/objects/ProcessParameter.d.ts +23 -0
- package/lib/objects/ProcessParameter.d.ts.map +1 -0
- package/lib/objects/ProcessParameter.js +55 -0
- package/lib/objects/ProcessVariable.d.ts +26 -0
- package/lib/objects/ProcessVariable.d.ts.map +1 -0
- package/lib/objects/ProcessVariable.js +63 -0
- package/lib/objects/Rules.d.ts +30 -0
- package/lib/objects/Rules.d.ts.map +1 -0
- package/lib/objects/Rules.js +103 -0
- package/lib/objects/Sandbox.d.ts +21 -0
- package/lib/objects/Sandbox.d.ts.map +1 -0
- package/lib/objects/Sandbox.js +64 -0
- package/lib/objects/Server.d.ts +27 -0
- package/lib/objects/Server.d.ts.map +1 -0
- package/lib/objects/Server.js +26 -0
- package/lib/objects/Subset.d.ts +44 -0
- package/lib/objects/Subset.d.ts.map +1 -0
- package/lib/objects/Subset.js +222 -0
- package/lib/objects/TM1Object.d.ts +8 -0
- package/lib/objects/TM1Object.d.ts.map +1 -0
- package/lib/objects/TM1Object.js +17 -0
- package/lib/objects/TM1Project.d.ts +74 -0
- package/lib/objects/TM1Project.d.ts.map +1 -0
- package/lib/objects/TM1Project.js +409 -0
- package/lib/objects/User.d.ts +42 -0
- package/lib/objects/User.d.ts.map +1 -0
- package/lib/objects/User.js +157 -0
- package/lib/objects/View.d.ts +19 -0
- package/lib/objects/View.d.ts.map +1 -0
- package/lib/objects/View.js +33 -0
- package/lib/objects/index.d.ts +30 -0
- package/lib/objects/index.d.ts.map +1 -0
- package/lib/objects/index.js +68 -0
- package/lib/services/AnnotationService.d.ts +17 -0
- package/lib/services/AnnotationService.d.ts.map +1 -0
- package/lib/services/AnnotationService.js +91 -0
- package/lib/services/ApplicationService.d.ts +21 -0
- package/lib/services/ApplicationService.d.ts.map +1 -0
- package/lib/services/ApplicationService.js +227 -0
- package/lib/services/AuditLogService.d.ts +15 -0
- package/lib/services/AuditLogService.d.ts.map +1 -0
- package/lib/services/AuditLogService.js +153 -0
- package/lib/services/CellService.d.ts +191 -0
- package/lib/services/CellService.d.ts.map +1 -0
- package/lib/services/CellService.js +597 -0
- package/lib/services/ChoreService.d.ts +24 -0
- package/lib/services/ChoreService.d.ts.map +1 -0
- package/lib/services/ChoreService.js +219 -0
- package/lib/services/ConfigurationService.d.ts +18 -0
- package/lib/services/ConfigurationService.d.ts.map +1 -0
- package/lib/services/ConfigurationService.js +60 -0
- package/lib/services/CubeService.d.ts +43 -0
- package/lib/services/CubeService.d.ts.map +1 -0
- package/lib/services/CubeService.js +296 -0
- package/lib/services/DimensionService.d.ts +21 -0
- package/lib/services/DimensionService.d.ts.map +1 -0
- package/lib/services/DimensionService.js +146 -0
- package/lib/services/ElementService.d.ts +132 -0
- package/lib/services/ElementService.d.ts.map +1 -0
- package/lib/services/ElementService.js +579 -0
- package/lib/services/FileService.d.ts +14 -0
- package/lib/services/FileService.d.ts.map +1 -0
- package/lib/services/FileService.js +65 -0
- package/lib/services/GitService.d.ts +23 -0
- package/lib/services/GitService.d.ts.map +1 -0
- package/lib/services/GitService.js +225 -0
- package/lib/services/HierarchyService.d.ts +32 -0
- package/lib/services/HierarchyService.d.ts.map +1 -0
- package/lib/services/HierarchyService.js +235 -0
- package/lib/services/JobService.d.ts +13 -0
- package/lib/services/JobService.d.ts.map +1 -0
- package/lib/services/JobService.js +83 -0
- package/lib/services/LoggerService.d.ts +16 -0
- package/lib/services/LoggerService.d.ts.map +1 -0
- package/lib/services/LoggerService.js +101 -0
- package/lib/services/ManageService.d.ts +47 -0
- package/lib/services/ManageService.d.ts.map +1 -0
- package/lib/services/ManageService.js +221 -0
- package/lib/services/MessageLogService.d.ts +13 -0
- package/lib/services/MessageLogService.d.ts.map +1 -0
- package/lib/services/MessageLogService.js +175 -0
- package/lib/services/MonitoringService.d.ts +29 -0
- package/lib/services/MonitoringService.d.ts.map +1 -0
- package/lib/services/MonitoringService.js +86 -0
- package/lib/services/ObjectService.d.ts +8 -0
- package/lib/services/ObjectService.d.ts.map +1 -0
- package/lib/services/ObjectService.js +20 -0
- package/lib/services/PowerBiService.d.ts +13 -0
- package/lib/services/PowerBiService.d.ts.map +1 -0
- package/lib/services/PowerBiService.js +52 -0
- package/lib/services/ProcessService.d.ts +57 -0
- package/lib/services/ProcessService.d.ts.map +1 -0
- package/lib/services/ProcessService.js +499 -0
- package/lib/services/RestService.d.ts +68 -0
- package/lib/services/RestService.d.ts.map +1 -0
- package/lib/services/RestService.js +166 -0
- package/lib/services/SandboxService.d.ts +28 -0
- package/lib/services/SandboxService.d.ts.map +1 -0
- package/lib/services/SandboxService.js +197 -0
- package/lib/services/SecurityService.d.ts +33 -0
- package/lib/services/SecurityService.d.ts.map +1 -0
- package/lib/services/SecurityService.js +249 -0
- package/lib/services/ServerService.d.ts +55 -0
- package/lib/services/ServerService.d.ts.map +1 -0
- package/lib/services/ServerService.js +247 -0
- package/lib/services/SessionService.d.ts +15 -0
- package/lib/services/SessionService.d.ts.map +1 -0
- package/lib/services/SessionService.js +68 -0
- package/lib/services/SubsetService.d.ts +13 -0
- package/lib/services/SubsetService.d.ts.map +1 -0
- package/lib/services/SubsetService.js +46 -0
- package/lib/services/TM1Service.d.ts +39 -0
- package/lib/services/TM1Service.d.ts.map +1 -0
- package/lib/services/TM1Service.js +94 -0
- package/lib/services/ThreadService.d.ts +15 -0
- package/lib/services/ThreadService.d.ts.map +1 -0
- package/lib/services/ThreadService.js +104 -0
- package/lib/services/TransactionLogService.d.ts +11 -0
- package/lib/services/TransactionLogService.d.ts.map +1 -0
- package/lib/services/TransactionLogService.js +124 -0
- package/lib/services/UserService.d.ts +14 -0
- package/lib/services/UserService.d.ts.map +1 -0
- package/lib/services/UserService.js +103 -0
- package/lib/services/ViewService.d.ts +30 -0
- package/lib/services/ViewService.d.ts.map +1 -0
- package/lib/services/ViewService.js +331 -0
- package/lib/services/index.d.ts +26 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/index.js +56 -0
- package/lib/tests/100PercentParityCheck.test.d.ts +6 -0
- package/lib/tests/100PercentParityCheck.test.d.ts.map +1 -0
- package/lib/tests/100PercentParityCheck.test.js +143 -0
- package/lib/tests/basic.test.d.ts +6 -0
- package/lib/tests/basic.test.d.ts.map +1 -0
- package/lib/tests/basic.test.js +52 -0
- package/lib/tests/cellService.test.d.ts +6 -0
- package/lib/tests/cellService.test.d.ts.map +1 -0
- package/lib/tests/cellService.test.js +311 -0
- package/lib/tests/ciSetup.d.ts +6 -0
- package/lib/tests/ciSetup.d.ts.map +1 -0
- package/lib/tests/ciSetup.js +23 -0
- package/lib/tests/comprehensive.service.test.d.ts +6 -0
- package/lib/tests/comprehensive.service.test.d.ts.map +1 -0
- package/lib/tests/comprehensive.service.test.js +507 -0
- package/lib/tests/connection.test.d.ts +6 -0
- package/lib/tests/connection.test.d.ts.map +1 -0
- package/lib/tests/connection.test.js +89 -0
- package/lib/tests/cubeService.test.d.ts +6 -0
- package/lib/tests/cubeService.test.d.ts.map +1 -0
- package/lib/tests/cubeService.test.js +368 -0
- package/lib/tests/dimensionService.comprehensive.test.d.ts +7 -0
- package/lib/tests/dimensionService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/dimensionService.comprehensive.test.js +614 -0
- package/lib/tests/dimensionService.test.d.ts +6 -0
- package/lib/tests/dimensionService.test.d.ts.map +1 -0
- package/lib/tests/dimensionService.test.js +293 -0
- package/lib/tests/edgeCases.test.d.ts +6 -0
- package/lib/tests/edgeCases.test.d.ts.map +1 -0
- package/lib/tests/edgeCases.test.js +301 -0
- package/lib/tests/elementService.comprehensive.test.d.ts +7 -0
- package/lib/tests/elementService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/elementService.comprehensive.test.js +846 -0
- package/lib/tests/elementService.test.d.ts +6 -0
- package/lib/tests/elementService.test.d.ts.map +1 -0
- package/lib/tests/elementService.test.js +350 -0
- package/lib/tests/enhancedCellService.test.d.ts +2 -0
- package/lib/tests/enhancedCellService.test.d.ts.map +1 -0
- package/lib/tests/enhancedCellService.test.js +152 -0
- package/lib/tests/enhancedCubeService.test.d.ts +2 -0
- package/lib/tests/enhancedCubeService.test.d.ts.map +1 -0
- package/lib/tests/enhancedCubeService.test.js +246 -0
- package/lib/tests/enhancedElementService.test.d.ts +2 -0
- package/lib/tests/enhancedElementService.test.d.ts.map +1 -0
- package/lib/tests/enhancedElementService.test.js +199 -0
- package/lib/tests/enhancedViewService.test.d.ts +2 -0
- package/lib/tests/enhancedViewService.test.d.ts.map +1 -0
- package/lib/tests/enhancedViewService.test.js +260 -0
- package/lib/tests/errorHandling.test.d.ts +6 -0
- package/lib/tests/errorHandling.test.d.ts.map +1 -0
- package/lib/tests/errorHandling.test.js +227 -0
- package/lib/tests/exceptions.test.d.ts +7 -0
- package/lib/tests/exceptions.test.d.ts.map +1 -0
- package/lib/tests/exceptions.test.js +257 -0
- package/lib/tests/hierarchyService.test.d.ts +6 -0
- package/lib/tests/hierarchyService.test.d.ts.map +1 -0
- package/lib/tests/hierarchyService.test.js +294 -0
- package/lib/tests/index.test.d.ts +6 -0
- package/lib/tests/index.test.d.ts.map +1 -0
- package/lib/tests/index.test.js +346 -0
- package/lib/tests/integration.test.d.ts +6 -0
- package/lib/tests/integration.test.d.ts.map +1 -0
- package/lib/tests/integration.test.js +302 -0
- package/lib/tests/integrationTests.test.d.ts +2 -0
- package/lib/tests/integrationTests.test.d.ts.map +1 -0
- package/lib/tests/integrationTests.test.js +252 -0
- package/lib/tests/mdx.advanced.test.d.ts +6 -0
- package/lib/tests/mdx.advanced.test.d.ts.map +1 -0
- package/lib/tests/mdx.advanced.test.js +437 -0
- package/lib/tests/objects.improved.test.d.ts +7 -0
- package/lib/tests/objects.improved.test.d.ts.map +1 -0
- package/lib/tests/objects.improved.test.js +302 -0
- package/lib/tests/performance.test.d.ts +6 -0
- package/lib/tests/performance.test.d.ts.map +1 -0
- package/lib/tests/performance.test.js +264 -0
- package/lib/tests/processService.comprehensive.test.d.ts +7 -0
- package/lib/tests/processService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/processService.comprehensive.test.js +656 -0
- package/lib/tests/processService.test.d.ts +6 -0
- package/lib/tests/processService.test.d.ts.map +1 -0
- package/lib/tests/processService.test.js +322 -0
- package/lib/tests/restService.test.d.ts +6 -0
- package/lib/tests/restService.test.d.ts.map +1 -0
- package/lib/tests/restService.test.js +177 -0
- package/lib/tests/security.advanced.test.d.ts +6 -0
- package/lib/tests/security.advanced.test.d.ts.map +1 -0
- package/lib/tests/security.advanced.test.js +407 -0
- package/lib/tests/security.test.d.ts +6 -0
- package/lib/tests/security.test.d.ts.map +1 -0
- package/lib/tests/security.test.js +204 -0
- package/lib/tests/securityService.comprehensive.test.d.ts +7 -0
- package/lib/tests/securityService.comprehensive.test.d.ts.map +1 -0
- package/lib/tests/securityService.comprehensive.test.js +457 -0
- package/lib/tests/setup.d.ts +4 -0
- package/lib/tests/setup.d.ts.map +1 -0
- package/lib/tests/setup.js +40 -0
- package/lib/tests/simpleCoverage.test.d.ts +6 -0
- package/lib/tests/simpleCoverage.test.d.ts.map +1 -0
- package/lib/tests/simpleCoverage.test.js +236 -0
- package/lib/tests/stress.performance.test.d.ts +6 -0
- package/lib/tests/stress.performance.test.d.ts.map +1 -0
- package/lib/tests/stress.performance.test.js +423 -0
- package/lib/tests/subsetService.test.d.ts +6 -0
- package/lib/tests/subsetService.test.d.ts.map +1 -0
- package/lib/tests/subsetService.test.js +271 -0
- package/lib/tests/testConfig.d.ts +18 -0
- package/lib/tests/testConfig.d.ts.map +1 -0
- package/lib/tests/testConfig.js +38 -0
- package/lib/tests/testUtils.d.ts +9 -0
- package/lib/tests/testUtils.d.ts.map +1 -0
- package/lib/tests/testUtils.js +100 -0
- package/lib/tests/tm1Service.test.d.ts +7 -0
- package/lib/tests/tm1Service.test.d.ts.map +1 -0
- package/lib/tests/tm1Service.test.js +290 -0
- package/lib/tests/viewService.test.d.ts +6 -0
- package/lib/tests/viewService.test.d.ts.map +1 -0
- package/lib/tests/viewService.test.js +240 -0
- package/lib/utils/Utils.d.ts +90 -0
- package/lib/utils/Utils.d.ts.map +1 -0
- package/lib/utils/Utils.js +379 -0
- package/package.json +81 -0
- package/run-all-tests.js +296 -0
- package/src/exceptions/TM1Exception.ts +38 -0
- package/src/exceptions/TM1RestException.ts +17 -0
- package/src/exceptions/TM1TimeoutException.ts +15 -0
- package/src/index.ts +94 -0
- package/src/objects/Annotation.ts +194 -0
- package/src/objects/Application.ts +146 -0
- package/src/objects/Axis.ts +149 -0
- package/src/objects/Chore.ts +174 -0
- package/src/objects/ChoreFrequency.ts +83 -0
- package/src/objects/ChoreStartTime.ts +111 -0
- package/src/objects/ChoreTask.ts +92 -0
- package/src/objects/Cube.ts +125 -0
- package/src/objects/Dimension.ts +107 -0
- package/src/objects/Element.ts +153 -0
- package/src/objects/ElementAttribute.ts +115 -0
- package/src/objects/Git.ts +86 -0
- package/src/objects/GitCommit.ts +31 -0
- package/src/objects/GitPlan.ts +121 -0
- package/src/objects/GitRemote.ts +31 -0
- package/src/objects/Hierarchy.ts +229 -0
- package/src/objects/MDXView.ts +91 -0
- package/src/objects/NativeView.ts +268 -0
- package/src/objects/Process.ts +320 -0
- package/src/objects/ProcessDebugBreakpoint.ts +239 -0
- package/src/objects/ProcessParameter.ts +76 -0
- package/src/objects/ProcessVariable.ts +89 -0
- package/src/objects/Rules.ts +117 -0
- package/src/objects/Sandbox.ts +90 -0
- package/src/objects/Server.ts +45 -0
- package/src/objects/Subset.ts +323 -0
- package/src/objects/TM1Object.ts +17 -0
- package/src/objects/TM1Project.ts +587 -0
- package/src/objects/User.ts +198 -0
- package/src/objects/View.ts +43 -0
- package/src/objects/index.ts +36 -0
- package/src/services/AnnotationService.ts +107 -0
- package/src/services/ApplicationService.ts +279 -0
- package/src/services/AuditLogService.ts +172 -0
- package/src/services/CellService.ts +814 -0
- package/src/services/ChoreService.ts +219 -0
- package/src/services/ConfigurationService.ts +69 -0
- package/src/services/CubeService.ts +338 -0
- package/src/services/DimensionService.ts +168 -0
- package/src/services/ElementService.ts +966 -0
- package/src/services/FileService.ts +67 -0
- package/src/services/GitService.ts +324 -0
- package/src/services/HierarchyService.ts +284 -0
- package/src/services/JobService.ts +59 -0
- package/src/services/LoggerService.ts +118 -0
- package/src/services/ManageService.ts +322 -0
- package/src/services/MessageLogService.ts +211 -0
- package/src/services/MonitoringService.ts +105 -0
- package/src/services/ObjectService.ts +21 -0
- package/src/services/PowerBiService.ts +85 -0
- package/src/services/ProcessService.ts +589 -0
- package/src/services/RestService.ts +224 -0
- package/src/services/SandboxService.ts +217 -0
- package/src/services/SecurityService.ts +284 -0
- package/src/services/ServerService.ts +313 -0
- package/src/services/SessionService.ts +81 -0
- package/src/services/SubsetService.ts +52 -0
- package/src/services/TM1Service.ts +133 -0
- package/src/services/ThreadService.ts +83 -0
- package/src/services/TransactionLogService.ts +148 -0
- package/src/services/UserService.ts +77 -0
- package/src/services/ViewService.ts +398 -0
- package/src/services/index.ts +28 -0
- package/src/tests/100PercentParityCheck.test.ts +166 -0
- package/src/tests/basic.test.ts +59 -0
- package/src/tests/cellService.test.ts +405 -0
- package/src/tests/ciSetup.ts +26 -0
- package/src/tests/comprehensive.service.test.ts +653 -0
- package/src/tests/config.ini.template +23 -0
- package/src/tests/connection.test.ts +90 -0
- package/src/tests/cubeService.test.ts +458 -0
- package/src/tests/dimensionService.comprehensive.test.ts +786 -0
- package/src/tests/dimensionService.test.ts +373 -0
- package/src/tests/edgeCases.test.ts +358 -0
- package/src/tests/elementService.comprehensive.test.ts +1190 -0
- package/src/tests/elementService.test.ts +472 -0
- package/src/tests/enhancedCellService.test.ts +237 -0
- package/src/tests/enhancedCubeService.test.ts +384 -0
- package/src/tests/enhancedElementService.test.ts +301 -0
- package/src/tests/enhancedViewService.test.ts +373 -0
- package/src/tests/errorHandling.test.ts +264 -0
- package/src/tests/exceptions.test.ts +313 -0
- package/src/tests/hierarchyService.test.ts +386 -0
- package/src/tests/index.test.ts +376 -0
- package/src/tests/integration.test.ts +333 -0
- package/src/tests/integrationTests.test.ts +302 -0
- package/src/tests/mdx.advanced.test.ts +513 -0
- package/src/tests/objects.improved.test.ts +385 -0
- package/src/tests/performance.test.ts +314 -0
- package/src/tests/processService.comprehensive.test.ts +933 -0
- package/src/tests/processService.test.ts +409 -0
- package/src/tests/restService.test.ts +218 -0
- package/src/tests/security.advanced.test.ts +464 -0
- package/src/tests/security.test.ts +233 -0
- package/src/tests/securityService.comprehensive.test.ts +582 -0
- package/src/tests/setup.ts +42 -0
- package/src/tests/simpleCoverage.test.ts +287 -0
- package/src/tests/stress.performance.test.ts +531 -0
- package/src/tests/subsetService.test.ts +350 -0
- package/src/tests/testConfig.ts +53 -0
- package/src/tests/testUtils.ts +94 -0
- package/src/tests/tm1Service.test.ts +361 -0
- package/src/tests/viewService.test.ts +324 -0
- package/src/utils/Utils.ts +395 -0
- package/tests/README.md +57 -0
- package/tests/connection/test-connection.ts +86 -0
- package/tests/edge-cases/edge-cases-test.ts +244 -0
- package/tests/integration/working-test.ts +193 -0
- package/tests/performance/performance-test.ts +133 -0
- package/tests/run-all-tests.sh +106 -0
- package/tests/security/security-test.ts +103 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { RestService } from './RestService';
|
|
2
|
+
import { ObjectService } from './ObjectService';
|
|
3
|
+
import { Process } from '../objects/Process';
|
|
4
|
+
import { ProcessService } from './ProcessService';
|
|
5
|
+
import {
|
|
6
|
+
verifyVersion,
|
|
7
|
+
deprecatedInVersion,
|
|
8
|
+
odataTrackChangesHeader,
|
|
9
|
+
requireOpsAdmin,
|
|
10
|
+
requireDataAdmin,
|
|
11
|
+
formatUrl,
|
|
12
|
+
CaseAndSpaceInsensitiveDict,
|
|
13
|
+
CaseAndSpaceInsensitiveSet,
|
|
14
|
+
utcLocalizeTime
|
|
15
|
+
} from '../utils/Utils';
|
|
16
|
+
|
|
17
|
+
export class MessageLogService extends ObjectService {
|
|
18
|
+
|
|
19
|
+
private lastDeltaRequest?: string;
|
|
20
|
+
|
|
21
|
+
constructor(rest: RestService) {
|
|
22
|
+
super(rest);
|
|
23
|
+
if (verifyVersion("12.0.0", rest.version || "11.0.0")) {
|
|
24
|
+
// warn only due to use in Monitoring Service
|
|
25
|
+
console.warn("Message Logs are not available in this version of TM1, removed as of 12.0.0");
|
|
26
|
+
}
|
|
27
|
+
this.lastDeltaRequest = undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@deprecatedInVersion("12.0.0")
|
|
31
|
+
public async initializeDeltaRequests(filter?: string): Promise<void> {
|
|
32
|
+
let url = "/TailMessageLog()";
|
|
33
|
+
if (filter) {
|
|
34
|
+
url += `?$filter=${filter}`;
|
|
35
|
+
}
|
|
36
|
+
const response = await this.rest.get(url);
|
|
37
|
+
// Read the next delta-request-url from the response
|
|
38
|
+
const responseText = typeof response.data === 'string' ? response.data : JSON.stringify(response.data);
|
|
39
|
+
this.lastDeltaRequest = responseText.substring(
|
|
40
|
+
responseText.lastIndexOf("MessageLogEntries/!delta('"),
|
|
41
|
+
responseText.length - 2
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@deprecatedInVersion("12.0.0")
|
|
46
|
+
public async executeDeltaRequest(): Promise<any[]> {
|
|
47
|
+
if (!this.lastDeltaRequest) {
|
|
48
|
+
throw new Error("Delta request not initialized. Call initializeDeltaRequests first.");
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const response = await this.rest.get("/" + this.lastDeltaRequest);
|
|
52
|
+
const responseText = typeof response.data === 'string' ? response.data : JSON.stringify(response.data);
|
|
53
|
+
this.lastDeltaRequest = responseText.substring(
|
|
54
|
+
responseText.lastIndexOf("MessageLogEntries/!delta('"),
|
|
55
|
+
responseText.length - 2
|
|
56
|
+
);
|
|
57
|
+
return response.data.value;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@deprecatedInVersion("12.0.0")
|
|
61
|
+
|
|
62
|
+
public async getEntries(
|
|
63
|
+
reverse: boolean = true,
|
|
64
|
+
since?: Date,
|
|
65
|
+
until?: Date,
|
|
66
|
+
top?: number,
|
|
67
|
+
logger?: string,
|
|
68
|
+
level?: string,
|
|
69
|
+
msgContains?: string | string[],
|
|
70
|
+
msgContainsOperator: string = 'and'
|
|
71
|
+
): Promise<any[]> {
|
|
72
|
+
/**
|
|
73
|
+
* :param reverse: Boolean
|
|
74
|
+
* :param since: of type datetime. If it doesn't have tz information, UTC is assumed.
|
|
75
|
+
* :param until: of type datetime. If it doesn't have tz information, UTC is assumed.
|
|
76
|
+
* :param top: Integer
|
|
77
|
+
* :param logger: string, eg TM1.Server, TM1.Chore, TM1.Mdx.Interface, TM1.Process
|
|
78
|
+
* :param level: string, ERROR, WARNING, INFO, DEBUG, UNKNOWN
|
|
79
|
+
* :param msg_contains: iterable, find substring in log message; list of substrings will be queried as AND statement
|
|
80
|
+
* :param msg_contains_operator: 'and' or 'or'
|
|
81
|
+
*
|
|
82
|
+
* :return: Dict of server log
|
|
83
|
+
*/
|
|
84
|
+
const msgContainsOperatorLower = msgContainsOperator.trim().toLowerCase();
|
|
85
|
+
if (msgContainsOperatorLower !== "and" && msgContainsOperatorLower !== "or") {
|
|
86
|
+
throw new Error("'msg_contains_operator' must be either 'and' or 'or'");
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const reverseOrder = reverse ? 'desc' : 'asc';
|
|
90
|
+
let url = `/MessageLogEntries?$orderby=TimeStamp ${reverseOrder}`;
|
|
91
|
+
|
|
92
|
+
if (since || until || logger || level || msgContains) {
|
|
93
|
+
const logFilters: string[] = [];
|
|
94
|
+
|
|
95
|
+
if (since) {
|
|
96
|
+
// If since doesn't have tz information, UTC is assumed
|
|
97
|
+
const sinceUtc = this.ensureUtc(since);
|
|
98
|
+
logFilters.push(formatUrl(
|
|
99
|
+
"TimeStamp ge {}",
|
|
100
|
+
sinceUtc.toISOString().replace(/\.\d{3}Z$/, 'Z')
|
|
101
|
+
));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (until) {
|
|
105
|
+
// If until doesn't have tz information, UTC is assumed
|
|
106
|
+
const untilUtc = this.ensureUtc(until);
|
|
107
|
+
logFilters.push(formatUrl(
|
|
108
|
+
"TimeStamp le {}",
|
|
109
|
+
untilUtc.toISOString().replace(/\.\d{3}Z$/, 'Z')
|
|
110
|
+
));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (logger) {
|
|
114
|
+
logFilters.push(formatUrl("Logger eq '{}'", logger));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (level) {
|
|
118
|
+
const levelDict = new CaseAndSpaceInsensitiveDict([
|
|
119
|
+
['ERROR', 1], ['WARNING', 2], ['INFO', 3], ['DEBUG', 4], ['UNKNOWN', 5]
|
|
120
|
+
]);
|
|
121
|
+
const levelIndex = levelDict.get(level);
|
|
122
|
+
if (levelIndex) {
|
|
123
|
+
logFilters.push(`Level eq ${levelIndex}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (msgContains) {
|
|
128
|
+
if (typeof msgContains === 'string') {
|
|
129
|
+
logFilters.push(formatUrl(
|
|
130
|
+
"contains(toupper(Message),toupper('{}'))", msgContains
|
|
131
|
+
));
|
|
132
|
+
} else {
|
|
133
|
+
const msgFilters = msgContains.map(wildcard =>
|
|
134
|
+
formatUrl("contains(toupper(Message),toupper('{}'))", wildcard)
|
|
135
|
+
);
|
|
136
|
+
logFilters.push(`(${msgFilters.join(` ${msgContainsOperatorLower} `)})`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
url += `&$filter=${logFilters.join(" and ")}`;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (top) {
|
|
144
|
+
url += `&$top=${top}`;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const response = await this.rest.get(url);
|
|
148
|
+
return response.data.value;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
public async createEntry(level: string, message: string): Promise<void> {
|
|
153
|
+
/**
|
|
154
|
+
* :param level: string, FATAL, ERROR, WARN, INFO, DEBUG
|
|
155
|
+
* :param message: string
|
|
156
|
+
* :return:
|
|
157
|
+
*/
|
|
158
|
+
|
|
159
|
+
const validLevels = new CaseAndSpaceInsensitiveSet(
|
|
160
|
+
['FATAL', 'ERROR', 'WARN', 'INFO', 'DEBUG']
|
|
161
|
+
);
|
|
162
|
+
if (!validLevels.has(level)) {
|
|
163
|
+
throw new Error(`Invalid level: '${level}'`);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
const processService = new ProcessService(this.rest);
|
|
167
|
+
|
|
168
|
+
// Execute TI code directly instead of creating a process
|
|
169
|
+
const tiCode = `LogOutput('${level}', '${message}');`;
|
|
170
|
+
const response = await processService.executeTiCode([tiCode]);
|
|
171
|
+
const success = response.status === 200;
|
|
172
|
+
|
|
173
|
+
if (!success) {
|
|
174
|
+
throw new Error(
|
|
175
|
+
`Failed to write to TM1 Message Log through unbound process. Status: '${response.status}'`
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
@deprecatedInVersion("12.0.0")
|
|
182
|
+
public async getLastProcessMessage(processName: string): Promise<string | null> {
|
|
183
|
+
/** Get the latest message log entry for a process
|
|
184
|
+
*
|
|
185
|
+
* :param process_name: name of the process
|
|
186
|
+
* :return: String - the message, for instance: "Ausführung normal beendet, verstrichene Zeit 0.03 Sekunden"
|
|
187
|
+
*/
|
|
188
|
+
const url = formatUrl(
|
|
189
|
+
"/MessageLog()?$orderby='TimeStamp'&$filter=Logger eq 'TM1.Process' and contains(Message, '{}')",
|
|
190
|
+
processName
|
|
191
|
+
);
|
|
192
|
+
const response = await this.rest.get(url);
|
|
193
|
+
const responseAsList = response.data.value;
|
|
194
|
+
if (responseAsList.length > 0) {
|
|
195
|
+
const messageLogEntry = responseAsList[0];
|
|
196
|
+
return messageLogEntry.Message;
|
|
197
|
+
}
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
private ensureUtc(date: Date): Date {
|
|
202
|
+
/** Ensure date is treated as UTC if no timezone info
|
|
203
|
+
*
|
|
204
|
+
* :param date: Date object
|
|
205
|
+
* :return: Date object with UTC timezone
|
|
206
|
+
*/
|
|
207
|
+
// In JavaScript, Date objects are always timezone-aware (local timezone)
|
|
208
|
+
// To treat as UTC, we need to adjust for the timezone offset
|
|
209
|
+
return new Date(date.getTime() - (date.getTimezoneOffset() * 60000));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { AxiosResponse } from 'axios';
|
|
2
|
+
import { RestService } from './RestService';
|
|
3
|
+
import { ObjectService } from './ObjectService';
|
|
4
|
+
import { User } from '../objects/User';
|
|
5
|
+
import { ThreadService } from './ThreadService';
|
|
6
|
+
import { SessionService } from './SessionService';
|
|
7
|
+
import { UserService } from './UserService';
|
|
8
|
+
|
|
9
|
+
export class MonitoringService extends ObjectService {
|
|
10
|
+
/** Service to Query and Cancel Threads in TM1
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
public users: UserService;
|
|
14
|
+
public threads: ThreadService;
|
|
15
|
+
public session: SessionService;
|
|
16
|
+
|
|
17
|
+
constructor(rest: RestService) {
|
|
18
|
+
super(rest);
|
|
19
|
+
console.warn("Monitoring Service will be moved to a new location in a future version");
|
|
20
|
+
this.users = new UserService(rest);
|
|
21
|
+
this.threads = new ThreadService(rest);
|
|
22
|
+
this.session = new SessionService(rest);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public async getThreads(): Promise<any[]> {
|
|
26
|
+
/** Return a dict of the currently running threads from the TM1 Server
|
|
27
|
+
*
|
|
28
|
+
* :return:
|
|
29
|
+
* dict: the response
|
|
30
|
+
*/
|
|
31
|
+
return await this.threads.getAll();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public async getActiveThreads(): Promise<any[]> {
|
|
35
|
+
/**Return a list of non-idle threads from the TM1 Server
|
|
36
|
+
*
|
|
37
|
+
* :return:
|
|
38
|
+
* list: TM1 threads as dict
|
|
39
|
+
*/
|
|
40
|
+
return await this.threads.getActive();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public async cancelThread(threadId: number): Promise<AxiosResponse> {
|
|
44
|
+
/** Kill a running thread
|
|
45
|
+
*
|
|
46
|
+
* :param thread_id:
|
|
47
|
+
* :return:
|
|
48
|
+
*/
|
|
49
|
+
return await this.threads.cancel(threadId);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public async cancelAllRunningThreads(): Promise<any[]> {
|
|
53
|
+
return await this.threads.cancelAllRunning();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public async getActiveUsers(): Promise<User[]> {
|
|
57
|
+
/** Get the activate users in TM1
|
|
58
|
+
*
|
|
59
|
+
* :return: List of .User instances
|
|
60
|
+
*/
|
|
61
|
+
return await this.users.getActive();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public async userIsActive(userName: string): Promise<boolean> {
|
|
65
|
+
/** Check if user is currently active in TM1
|
|
66
|
+
*
|
|
67
|
+
* :param user_name:
|
|
68
|
+
* :return: Boolean
|
|
69
|
+
*/
|
|
70
|
+
return await this.users.isActive(userName);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public async disconnectUser(userName: string): Promise<AxiosResponse> {
|
|
74
|
+
/** Disconnect User
|
|
75
|
+
*
|
|
76
|
+
* :param user_name:
|
|
77
|
+
* :return:
|
|
78
|
+
*/
|
|
79
|
+
return await this.users.disconnect(userName);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public async getActiveSessionThreads(excludeIdle: boolean = true): Promise<any[]> {
|
|
83
|
+
return await this.session.getThreadsForCurrent(excludeIdle);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public async getSessions(includeUser: boolean = true, includeThreads: boolean = true): Promise<any[]> {
|
|
87
|
+
return await this.session.getAll(includeUser, includeThreads);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public async disconnectAllUsers(): Promise<string[]> {
|
|
91
|
+
return await this.users.disconnectAll();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public async closeSession(sessionId: string): Promise<AxiosResponse> {
|
|
95
|
+
return await this.session.close(sessionId);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
public async closeAllSessions(): Promise<any[]> {
|
|
99
|
+
return await this.session.closeAll();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
public async getCurrentUser(): Promise<User> {
|
|
103
|
+
return await this.users.getCurrent();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { RestService } from './RestService';
|
|
2
|
+
|
|
3
|
+
export abstract class ObjectService {
|
|
4
|
+
protected rest: RestService;
|
|
5
|
+
|
|
6
|
+
constructor(rest: RestService) {
|
|
7
|
+
this.rest = rest;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
protected formatUrl(template: string, ...args: string[]): string {
|
|
11
|
+
let url = template;
|
|
12
|
+
for (const arg of args) {
|
|
13
|
+
url = url.replace('{}', encodeURIComponent(arg));
|
|
14
|
+
}
|
|
15
|
+
return url;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
protected caseAndSpaceInsensitiveEquals(str1: string, str2: string): boolean {
|
|
19
|
+
return str1.toLowerCase().replace(/\s+/g, '') === str2.toLowerCase().replace(/\s+/g, '');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { RestService } from './RestService';
|
|
2
|
+
import { CellService } from './CellService';
|
|
3
|
+
import { ElementService } from './ElementService';
|
|
4
|
+
|
|
5
|
+
export class PowerBiService {
|
|
6
|
+
private _tm1Rest: RestService;
|
|
7
|
+
public cells: CellService;
|
|
8
|
+
public elements: ElementService;
|
|
9
|
+
|
|
10
|
+
constructor(tm1Rest: RestService) {
|
|
11
|
+
/**
|
|
12
|
+
* :param tm1_rest: instance of RestService
|
|
13
|
+
*/
|
|
14
|
+
this._tm1Rest = tm1Rest;
|
|
15
|
+
this.cells = new CellService(tm1Rest);
|
|
16
|
+
this.elements = new ElementService(tm1Rest);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public async executeMdx(mdx: string): Promise<any[]> {
|
|
20
|
+
/** Execute MDX and return data as array (equivalent to DataFrame)
|
|
21
|
+
* Note: In JavaScript/TypeScript, we return array of objects instead of pandas DataFrame
|
|
22
|
+
*/
|
|
23
|
+
return await this.cells.executeMdxDataFrameShaped(mdx);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
public async executeView(
|
|
27
|
+
cubeName: string,
|
|
28
|
+
viewName: string,
|
|
29
|
+
isPrivate: boolean,
|
|
30
|
+
useIterativeJson: boolean = false,
|
|
31
|
+
useBlob: boolean = false
|
|
32
|
+
): Promise<any[]> {
|
|
33
|
+
/** Execute view and return data as array (equivalent to DataFrame)
|
|
34
|
+
* Note: In JavaScript/TypeScript, we return array of objects instead of pandas DataFrame
|
|
35
|
+
*/
|
|
36
|
+
return await this.cells.executeViewDataFrameShaped(
|
|
37
|
+
cubeName,
|
|
38
|
+
viewName,
|
|
39
|
+
isPrivate,
|
|
40
|
+
useIterativeJson,
|
|
41
|
+
useBlob
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public async getMemberProperties(
|
|
46
|
+
dimensionName?: string,
|
|
47
|
+
hierarchyName?: string,
|
|
48
|
+
memberSelection?: string[] | string,
|
|
49
|
+
skipConsolidations: boolean = true,
|
|
50
|
+
attributes?: string[],
|
|
51
|
+
skipParents: boolean = false,
|
|
52
|
+
levelNames?: string[],
|
|
53
|
+
parentAttribute?: string,
|
|
54
|
+
skipWeights: boolean = true,
|
|
55
|
+
useBlob: boolean = false
|
|
56
|
+
): Promise<any[]> {
|
|
57
|
+
/**
|
|
58
|
+
* :param dimension_name: Name of the dimension
|
|
59
|
+
* :param hierarchy_name: Name of the hierarchy in the dimension
|
|
60
|
+
* :param member_selection: Selection of members. Array or valid MDX string
|
|
61
|
+
* :param skip_consolidations: Boolean flag to skip consolidations
|
|
62
|
+
* :param attributes: Selection of attributes. Array. If None retrieve all.
|
|
63
|
+
* :param level_names: List of labels for parent columns. If None use level names from TM1.
|
|
64
|
+
* :param skip_parents: Boolean Flag to skip parent columns.
|
|
65
|
+
* :param parent_attribute: Attribute to be displayed in parent columns. If None, parent name is used.
|
|
66
|
+
* :param skip_weights: include weight columns
|
|
67
|
+
* :param use_blob: Better performance on large sets and lower memory footprint in any case. Requires admin permissions
|
|
68
|
+
*
|
|
69
|
+
* :return: Array of objects (equivalent to pandas DataFrame)
|
|
70
|
+
*/
|
|
71
|
+
if (!skipWeights && skipParents) {
|
|
72
|
+
throw new Error("skip_weights must not be false if skip_parents is true");
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (!dimensionName) {
|
|
76
|
+
throw new Error("dimensionName is required");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return await this.elements.getElementsDataframe(
|
|
80
|
+
dimensionName,
|
|
81
|
+
hierarchyName || dimensionName,
|
|
82
|
+
attributes
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
}
|