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,59 @@
|
|
|
1
|
+
import { AxiosResponse } from 'axios';
|
|
2
|
+
import { RestService } from './RestService';
|
|
3
|
+
import { ObjectService } from './ObjectService';
|
|
4
|
+
import { formatUrl, requireVersion } from '../utils/Utils';
|
|
5
|
+
|
|
6
|
+
export class JobService extends ObjectService {
|
|
7
|
+
/** Service to handle TM1 Job objects introduced in v12
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
constructor(rest: RestService) {
|
|
11
|
+
super(rest);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
@requireVersion("12.0.0")
|
|
15
|
+
public async getAll(): Promise<any[]> {
|
|
16
|
+
/** Return a dict of the currently running jobs from the TM1 Server
|
|
17
|
+
*
|
|
18
|
+
* :return:
|
|
19
|
+
* dict: the response
|
|
20
|
+
*/
|
|
21
|
+
const url = '/Jobs';
|
|
22
|
+
const response = await this.rest.get(url);
|
|
23
|
+
return response.data.value;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@requireVersion("12.0.0")
|
|
27
|
+
public async cancel(jobId: string | number): Promise<AxiosResponse> {
|
|
28
|
+
/** Cancels a running Job
|
|
29
|
+
*
|
|
30
|
+
* :param job_id:
|
|
31
|
+
* :return:
|
|
32
|
+
*/
|
|
33
|
+
const url = formatUrl("/Jobs('{}')/tm1.Cancel", jobId.toString());
|
|
34
|
+
const response = await this.rest.post(url);
|
|
35
|
+
return response;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@requireVersion("12.0.0")
|
|
39
|
+
public async cancelAll(): Promise<any[]> {
|
|
40
|
+
const jobs = await this.getAll();
|
|
41
|
+
const canceledJobs: any[] = [];
|
|
42
|
+
|
|
43
|
+
for (const job of jobs) {
|
|
44
|
+
await this.cancel(job["ID"]);
|
|
45
|
+
canceledJobs.push(job);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return canceledJobs;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@requireVersion("12.0.0")
|
|
52
|
+
public async getAsDataFrame(): Promise<any[]> {
|
|
53
|
+
/** Gets jobs and returns them as an array (equivalent to dataframe)
|
|
54
|
+
* Note: In JavaScript/TypeScript, we return array of objects instead of pandas DataFrame
|
|
55
|
+
*/
|
|
56
|
+
const jobs = await this.getAll();
|
|
57
|
+
return jobs;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { AxiosResponse } from 'axios';
|
|
2
|
+
import { RestService } from './RestService';
|
|
3
|
+
import { ObjectService } from './ObjectService';
|
|
4
|
+
import { formatUrl, CaseAndSpaceInsensitiveDict, requireOpsAdmin } from '../utils/Utils';
|
|
5
|
+
|
|
6
|
+
export class LoggerService extends ObjectService {
|
|
7
|
+
/** Service to query and update loggers
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
constructor(rest: RestService) {
|
|
11
|
+
super(rest);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
public async getAll(): Promise<any[]> {
|
|
16
|
+
const url = "/Loggers";
|
|
17
|
+
const response = await this.rest.get(url);
|
|
18
|
+
return response.data.value;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
public async getAllNames(): Promise<string[]> {
|
|
23
|
+
const loggers = await this.getAll();
|
|
24
|
+
return loggers.map((logger: any) => logger.Name);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
public async get(logger: string): Promise<any> {
|
|
29
|
+
/** Get level for specified logger
|
|
30
|
+
*
|
|
31
|
+
* :param logger: string name of logger
|
|
32
|
+
* :return: Dict of logger and level
|
|
33
|
+
*/
|
|
34
|
+
const url = formatUrl("/Loggers('{}')", logger);
|
|
35
|
+
const response = await this.rest.get(url);
|
|
36
|
+
const loggerData = response.data;
|
|
37
|
+
delete loggerData["@odata.context"];
|
|
38
|
+
return loggerData;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
public async search(wildcard: string = '', level: string = ''): Promise<any[]> {
|
|
43
|
+
/** Searches logger names by wildcard or by level. Combining wildcard and level will filter via AND and not OR
|
|
44
|
+
*
|
|
45
|
+
* :param wildcard: string to match in logger name
|
|
46
|
+
* :param level: string e.g. FATAL, ERROR, WARNING, INFO, DEBUG, UNKOWN, OFF
|
|
47
|
+
* :return: Dict of matching loggers and levels
|
|
48
|
+
*/
|
|
49
|
+
let url = "/Loggers";
|
|
50
|
+
|
|
51
|
+
const loggerFilters: string[] = [];
|
|
52
|
+
|
|
53
|
+
if (level) {
|
|
54
|
+
const levelDict = new CaseAndSpaceInsensitiveDict([
|
|
55
|
+
['FATAL', 0], ['ERROR', 1], ['WARNING', 2], ['INFO', 3], ['DEBUG', 4], ['UNKNOWN', 5], ['OFF', 6]
|
|
56
|
+
]);
|
|
57
|
+
const levelIndex = levelDict.get(level);
|
|
58
|
+
if (levelIndex !== undefined) {
|
|
59
|
+
loggerFilters.push(`Level eq ${levelIndex}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (wildcard) {
|
|
64
|
+
loggerFilters.push(`contains(tolower(Name), tolower('${wildcard}'))`);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (loggerFilters.length > 0) {
|
|
68
|
+
url += `?$filter=${loggerFilters.join(" and ")}`;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const response = await this.rest.get(url);
|
|
72
|
+
return response.data.value;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
public async exists(logger: string): Promise<boolean> {
|
|
77
|
+
/** Test if logger exists
|
|
78
|
+
* :param logger: string name of logger
|
|
79
|
+
* :return: bool
|
|
80
|
+
*/
|
|
81
|
+
const url = formatUrl("/Loggers('{}')", logger);
|
|
82
|
+
return await this._exists(url);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
public async setLevel(logger: string, level: string): Promise<AxiosResponse> {
|
|
87
|
+
/** Set logger level
|
|
88
|
+
* :param logger: string name of logger
|
|
89
|
+
* :param level: string e.g. FATAL, ERROR, WARNING, INFO, DEBUG, UNKOWN, OFF
|
|
90
|
+
* :return: response
|
|
91
|
+
*/
|
|
92
|
+
const url = formatUrl("/Loggers('{}')", logger);
|
|
93
|
+
|
|
94
|
+
if (!(await this.exists(logger))) {
|
|
95
|
+
throw new Error(`${logger} is not a valid logger`);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const levelDict = new CaseAndSpaceInsensitiveDict([
|
|
99
|
+
['FATAL', 0], ['ERROR', 1], ['WARNING', 2], ['INFO', 3], ['DEBUG', 4], ['UNKNOWN', 5], ['OFF', 6]
|
|
100
|
+
]);
|
|
101
|
+
const levelIndex = levelDict.get(level);
|
|
102
|
+
if (levelIndex !== undefined) {
|
|
103
|
+
const loggerData = { 'Level': levelIndex };
|
|
104
|
+
return await this.rest.patch(url, JSON.stringify(loggerData));
|
|
105
|
+
} else {
|
|
106
|
+
throw new Error(`${level} is not a valid level`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
private async _exists(url: string): Promise<boolean> {
|
|
111
|
+
try {
|
|
112
|
+
await this.rest.get(url);
|
|
113
|
+
return true;
|
|
114
|
+
} catch (error) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import axios, { AxiosResponse } from 'axios';
|
|
2
|
+
|
|
3
|
+
export interface DatabaseResourceConfig {
|
|
4
|
+
cpuRequests?: string;
|
|
5
|
+
cpuLimits?: string;
|
|
6
|
+
memoryRequests?: string;
|
|
7
|
+
memoryLimits?: string;
|
|
8
|
+
storageSize?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class ManageService {
|
|
12
|
+
/** Manage service to interact with the manage endpoint.
|
|
13
|
+
* The manage endpoint uses basic auth using the root client and secret
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
private _domain: string;
|
|
17
|
+
private _rootClient: string;
|
|
18
|
+
private _rootSecret: string;
|
|
19
|
+
private _rootUrl: string;
|
|
20
|
+
private _authConfig: any;
|
|
21
|
+
|
|
22
|
+
constructor(domain: string, rootClient: string, rootSecret: string) {
|
|
23
|
+
this._domain = domain;
|
|
24
|
+
this._rootClient = rootClient;
|
|
25
|
+
this._rootSecret = rootSecret;
|
|
26
|
+
this._rootUrl = `${this._domain}/manage/v1`;
|
|
27
|
+
this._authConfig = {
|
|
28
|
+
auth: {
|
|
29
|
+
username: this._rootClient,
|
|
30
|
+
password: this._rootSecret
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public async getInstances(): Promise<any[]> {
|
|
36
|
+
const url = `${this._rootUrl}/Instances`;
|
|
37
|
+
const response = await axios.get(url, this._authConfig);
|
|
38
|
+
return response.data.value;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public async getInstance(instanceName: string): Promise<any> {
|
|
42
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')`;
|
|
43
|
+
const response = await axios.get(url, this._authConfig);
|
|
44
|
+
return response.data;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public async createInstance(instanceName: string): Promise<AxiosResponse> {
|
|
48
|
+
const url = `${this._rootUrl}/Instances`;
|
|
49
|
+
const payload = { "Name": instanceName };
|
|
50
|
+
const response = await axios.post(url, payload, this._authConfig);
|
|
51
|
+
return response;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public async deleteInstance(instanceName: string): Promise<AxiosResponse> {
|
|
55
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')`;
|
|
56
|
+
const response = await axios.delete(url, this._authConfig);
|
|
57
|
+
return response;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
public async instanceExists(instanceName: string): Promise<boolean> {
|
|
61
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')`;
|
|
62
|
+
try {
|
|
63
|
+
const response = await axios.get(url, this._authConfig);
|
|
64
|
+
return response.status === 200;
|
|
65
|
+
} catch (error) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public async getDatabases(instanceName: string): Promise<any[]> {
|
|
71
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases`;
|
|
72
|
+
const response = await axios.get(url, this._authConfig);
|
|
73
|
+
return response.data.value;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public async getDatabase(instanceName: string, databaseName: string): Promise<any> {
|
|
77
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')`;
|
|
78
|
+
const response = await axios.get(url, this._authConfig);
|
|
79
|
+
return response.data;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public async createDatabase(
|
|
83
|
+
instanceName: string,
|
|
84
|
+
databaseName: string,
|
|
85
|
+
numberReplicas: number,
|
|
86
|
+
productVersion: string,
|
|
87
|
+
resourceConfig: DatabaseResourceConfig = {}
|
|
88
|
+
): Promise<AxiosResponse> {
|
|
89
|
+
const {
|
|
90
|
+
cpuRequests = "1000m",
|
|
91
|
+
cpuLimits = "2000m",
|
|
92
|
+
memoryRequests = "1G",
|
|
93
|
+
memoryLimits = "2G",
|
|
94
|
+
storageSize = "20Gi"
|
|
95
|
+
} = resourceConfig;
|
|
96
|
+
|
|
97
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases`;
|
|
98
|
+
|
|
99
|
+
const payload = {
|
|
100
|
+
"Name": databaseName,
|
|
101
|
+
"Replicas": numberReplicas,
|
|
102
|
+
"ProductVersion": productVersion,
|
|
103
|
+
"Resources": {
|
|
104
|
+
"Replica": {
|
|
105
|
+
"CPU": {
|
|
106
|
+
"Requests": cpuRequests,
|
|
107
|
+
"Limits": cpuLimits
|
|
108
|
+
},
|
|
109
|
+
"Memory": {
|
|
110
|
+
"Requests": memoryRequests,
|
|
111
|
+
"Limits": memoryLimits
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"Storage": {
|
|
115
|
+
"Size": storageSize
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
const response = await axios.post(url, payload, this._authConfig);
|
|
121
|
+
return response;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
public async updateDatabaseCpu(
|
|
125
|
+
instanceName: string,
|
|
126
|
+
databaseName: string,
|
|
127
|
+
cpuRequests: string,
|
|
128
|
+
cpuLimits: string
|
|
129
|
+
): Promise<AxiosResponse> {
|
|
130
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')`;
|
|
131
|
+
|
|
132
|
+
const payload = {
|
|
133
|
+
"Resources": {
|
|
134
|
+
"Replica": {
|
|
135
|
+
"CPU": {
|
|
136
|
+
"Requests": cpuRequests,
|
|
137
|
+
"Limits": cpuLimits
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
const response = await axios.patch(url, payload, this._authConfig);
|
|
144
|
+
return response;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
public async updateDatabaseMemory(
|
|
148
|
+
instanceName: string,
|
|
149
|
+
databaseName: string,
|
|
150
|
+
memoryRequests: string,
|
|
151
|
+
memoryLimits: string
|
|
152
|
+
): Promise<AxiosResponse> {
|
|
153
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')`;
|
|
154
|
+
|
|
155
|
+
const payload = {
|
|
156
|
+
"Resources": {
|
|
157
|
+
"Replica": {
|
|
158
|
+
"Memory": {
|
|
159
|
+
"Requests": memoryRequests,
|
|
160
|
+
"Limits": memoryLimits
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
const response = await axios.patch(url, payload, this._authConfig);
|
|
167
|
+
return response;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
public async updateDatabaseStorage(
|
|
171
|
+
instanceName: string,
|
|
172
|
+
databaseName: string,
|
|
173
|
+
storageSize: string
|
|
174
|
+
): Promise<AxiosResponse> {
|
|
175
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')`;
|
|
176
|
+
|
|
177
|
+
const payload = {
|
|
178
|
+
"Resources": {
|
|
179
|
+
"Storage": {
|
|
180
|
+
"Size": storageSize
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
const response = await axios.patch(url, payload, this._authConfig);
|
|
186
|
+
return response;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
public async deleteDatabase(instanceName: string, databaseName: string): Promise<AxiosResponse> {
|
|
190
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')`;
|
|
191
|
+
const response = await axios.delete(url, this._authConfig);
|
|
192
|
+
return response;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
public async databaseExists(instanceName: string, databaseName: string): Promise<boolean> {
|
|
196
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')`;
|
|
197
|
+
try {
|
|
198
|
+
const response = await axios.get(url, this._authConfig);
|
|
199
|
+
return response.status === 200;
|
|
200
|
+
} catch (error) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
public async upgradeDatabase(
|
|
206
|
+
instanceName: string,
|
|
207
|
+
databaseName: string,
|
|
208
|
+
targetVersion: string = ""
|
|
209
|
+
): Promise<AxiosResponse> {
|
|
210
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')/tm1s.Upgrade`;
|
|
211
|
+
const payload = { "ProductVersion": targetVersion };
|
|
212
|
+
const response = await axios.post(url, payload, this._authConfig);
|
|
213
|
+
return response;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
public async createDatabaseBackup(
|
|
217
|
+
instanceName: string,
|
|
218
|
+
databaseName: string,
|
|
219
|
+
backupSetName: string
|
|
220
|
+
): Promise<AxiosResponse> {
|
|
221
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')/tm1s.Backup`;
|
|
222
|
+
const payload = { "URL": `${backupSetName}.tgz` };
|
|
223
|
+
const response = await axios.post(url, payload, this._authConfig);
|
|
224
|
+
return response;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
public async createAndUploadDatabaseBackupSetFile(
|
|
228
|
+
instanceName: string,
|
|
229
|
+
databaseName: string,
|
|
230
|
+
backupSetName: string
|
|
231
|
+
): Promise<AxiosResponse> {
|
|
232
|
+
const createUrl = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')/Contents('Files')/Contents('.backupsets')/Contents`;
|
|
233
|
+
const payload = {
|
|
234
|
+
"@odata.type": "#ibm.tm1.api.v1.Document",
|
|
235
|
+
"Name": `${backupSetName}.tgz`
|
|
236
|
+
};
|
|
237
|
+
await axios.post(createUrl, payload, this._authConfig);
|
|
238
|
+
|
|
239
|
+
const uploadUrl = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')/Contents('Files')/Contents('.backupsets')/Contents('${backupSetName}.tgz')/Content`;
|
|
240
|
+
const response = await axios.post(uploadUrl, payload, this._authConfig);
|
|
241
|
+
return response;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
public async restoreDatabase(
|
|
245
|
+
instanceName: string,
|
|
246
|
+
databaseName: string,
|
|
247
|
+
backupUrl: string
|
|
248
|
+
): Promise<AxiosResponse> {
|
|
249
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')/tm1s.Restore`;
|
|
250
|
+
const payload = { "URL": backupUrl };
|
|
251
|
+
const response = await axios.post(url, payload, this._authConfig);
|
|
252
|
+
return response;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
public async scaleDatabase(
|
|
256
|
+
instanceName: string,
|
|
257
|
+
databaseName: string,
|
|
258
|
+
replicas: number
|
|
259
|
+
): Promise<AxiosResponse> {
|
|
260
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')`;
|
|
261
|
+
const payload = { "Replicas": replicas };
|
|
262
|
+
const response = await axios.patch(url, payload, this._authConfig);
|
|
263
|
+
return response;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
public async getApplications(instanceName: string): Promise<any> {
|
|
267
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Applications`;
|
|
268
|
+
const response = await axios.get(url, this._authConfig);
|
|
269
|
+
return response.data;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
public async getApplication(instanceName: string, applicationName: string): Promise<any> {
|
|
273
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Applications('${applicationName}')`;
|
|
274
|
+
const response = await axios.get(url, this._authConfig);
|
|
275
|
+
return response.data;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
public async createApplication(
|
|
279
|
+
instanceName: string,
|
|
280
|
+
applicationName: string
|
|
281
|
+
): Promise<{ clientId: string; clientSecret: string }> {
|
|
282
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Applications`;
|
|
283
|
+
const payload = { "Name": applicationName };
|
|
284
|
+
const response = await axios.post(url, payload, this._authConfig);
|
|
285
|
+
const responseJson = response.data;
|
|
286
|
+
return {
|
|
287
|
+
clientId: responseJson['ClientID'],
|
|
288
|
+
clientSecret: responseJson['ClientSecret']
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
public async getMetadata(): Promise<any> {
|
|
293
|
+
const url = `${this._rootUrl}/$metadata?$format=json`;
|
|
294
|
+
const response = await axios.get(url, this._authConfig);
|
|
295
|
+
return response.data;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
public async subscribeToDataChanges(
|
|
299
|
+
instanceName: string,
|
|
300
|
+
databaseName: string,
|
|
301
|
+
targetUrl: string,
|
|
302
|
+
additionalProperties: Record<string, any> = {}
|
|
303
|
+
): Promise<AxiosResponse> {
|
|
304
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')/tm1.Subscribe`;
|
|
305
|
+
const payload = {
|
|
306
|
+
"URL": targetUrl,
|
|
307
|
+
"AdditionalProperties": additionalProperties
|
|
308
|
+
};
|
|
309
|
+
const response = await axios.post(url, payload, this._authConfig);
|
|
310
|
+
return response;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
public async unsubscribeFromDataChanges(
|
|
314
|
+
instanceName: string,
|
|
315
|
+
databaseName: string,
|
|
316
|
+
targetUrl: string
|
|
317
|
+
): Promise<AxiosResponse> {
|
|
318
|
+
const url = `${this._rootUrl}/Instances('${instanceName}')/Databases('${databaseName}')/tm1.Unsubscribe`;
|
|
319
|
+
const response = await axios.post(url, this._authConfig);
|
|
320
|
+
return response;
|
|
321
|
+
}
|
|
322
|
+
}
|