@magic-xpa/engine 4.1100.0-dev4110.19 → 4.1100.0-dev4110.191
Sign up to get free protection for your applications and to get access to all the features.
- package/{esm2020 → esm2022}/index.mjs +188 -188
- package/{esm2020 → esm2022}/magic-xpa-engine.mjs +1 -1
- package/esm2022/src/AccessHelper.mjs +15 -0
- package/esm2022/src/ClientManager.mjs +399 -0
- package/esm2022/src/CommandsProcessorBase.mjs +56 -0
- package/esm2022/src/CommandsProcessorManager.mjs +26 -0
- package/esm2022/src/CommandsTable.mjs +162 -0
- package/esm2022/src/ConstInterface.mjs +516 -0
- package/{esm2020 → esm2022}/src/CurrentClientVersion.mjs +2 -2
- package/esm2022/src/FlowMonitorInterface.mjs +16 -0
- package/esm2022/src/GUIManager.mjs +62 -0
- package/esm2022/src/GlobalCommandsManager.mjs +34 -0
- package/esm2022/src/GuiEventsProcessor.mjs +154 -0
- package/{esm2020 → esm2022}/src/ICommandsTable.mjs +1 -1
- package/esm2022/src/ServerConfig.mjs +118 -0
- package/{esm2020 → esm2022}/src/bridge/IGuiEvent.mjs +19 -19
- package/{esm2020 → esm2022}/src/bridge/MagicBridge.mjs +40 -40
- package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +12 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +8 -8
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/BrowserEscEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommand.mjs +14 -14
- package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +60 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ColumnSortEventCommand.mjs +26 -26
- package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +260 -0
- package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +67 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ComputeEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +20 -20
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +19 -19
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -8
- package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/DataviewCommand.mjs +44 -44
- package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +37 -0
- package/esm2022/src/commands/ClientToServer/EventCommand.mjs +40 -0
- package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +67 -0
- package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +22 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +10 -10
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ICommandTaskTag.mjs +1 -1
- package/{esm2020 → esm2022}/src/commands/ClientToServer/IndexChangeEventCommand.mjs +21 -21
- package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +23 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +23 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/QueryCommand.mjs +20 -20
- package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +40 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SelectProgramCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SubformOpenEventCommand.mjs +21 -21
- package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +30 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/UnloadCommand.mjs +14 -14
- package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
- package/esm2022/src/commands/DataViewCommandBase.mjs +8 -0
- package/{esm2020 → esm2022}/src/commands/IClientCommand.mjs +1 -1
- package/esm2022/src/commands/IClientTargetedCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/IClientToServerCommandInfo.mjs +1 -1
- package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +65 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddLocateCommand.mjs +21 -21
- package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
- package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
- package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
- package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +24 -0
- package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
- package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetLocateCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetRangeCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetSortCommand.mjs +14 -14
- package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +37 -0
- package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
- package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -0
- package/{esm2020 → esm2022}/src/communications/IConnectionStateManager.mjs +1 -1
- package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +15 -0
- package/{esm2020 → esm2022}/src/data/DataSourceIdKey.mjs +2 -2
- package/esm2022/src/data/DataView.mjs +1613 -0
- package/{esm2020 → esm2022}/src/data/DataViewBase.mjs +3 -3
- package/esm2022/src/data/DataviewManager.mjs +28 -0
- package/esm2022/src/data/DataviewManagerBase.mjs +15 -0
- package/esm2022/src/data/DvCache.mjs +67 -0
- package/esm2022/src/data/Field.mjs +646 -0
- package/esm2022/src/data/FieldBase.mjs +15 -0
- package/esm2022/src/data/FieldsTable.mjs +103 -0
- package/{esm2020 → esm2022}/src/data/IRecordsTable.mjs +1 -1
- package/esm2022/src/data/Key.mjs +88 -0
- package/esm2022/src/data/Record.mjs +866 -0
- package/{esm2020 → esm2022}/src/data/RecordOutOfDataViewException.mjs +15 -15
- package/esm2022/src/data/RecordsTable.mjs +267 -0
- package/esm2022/src/data/TaskTransactionManager.mjs +103 -0
- package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +74 -0
- package/{esm2020 → esm2022}/src/enums.mjs +23 -23
- package/esm2022/src/env/EnvVariablesTable.mjs +340 -0
- package/esm2022/src/env/Environment.mjs +487 -0
- package/{esm2020 → esm2022}/src/env/ILanguageData.mjs +1 -1
- package/esm2022/src/env/LanguageData.mjs +226 -0
- package/esm2022/src/env/MirrorString.mjs +65 -0
- package/esm2022/src/event/ActionManager.mjs +91 -0
- package/esm2022/src/event/Event.mjs +1333 -0
- package/esm2022/src/event/EventHandler.mjs +766 -0
- package/esm2022/src/event/EventHandlerPosition.mjs +204 -0
- package/esm2022/src/event/EventsManager.mjs +2975 -0
- package/{esm2020 → esm2022}/src/event/IEventsManager.mjs +6 -6
- package/esm2022/src/event/RunTimeEvent.mjs +392 -0
- package/{esm2020 → esm2022}/src/event/RunTimeEventBase.mjs +3 -3
- package/esm2022/src/event/UserEventsTable.mjs +47 -0
- package/esm2022/src/exp/ExpTable.mjs +57 -0
- package/esm2022/src/exp/Expression.mjs +200 -0
- package/esm2022/src/exp/ExpressionDict.mjs +727 -0
- package/esm2022/src/exp/ExpressionEvaluator.mjs +4206 -0
- package/esm2022/src/exp/ExpressionLocalJpn.mjs +314 -0
- package/esm2022/src/exp/GlobalParamsTable.mjs +85 -0
- package/esm2022/src/exp/YesNoExp.mjs +36 -0
- package/esm2022/src/gui/CreatedFormVector.mjs +23 -0
- package/esm2022/src/gui/FormsTable.mjs +66 -0
- package/esm2022/src/gui/MgControl.mjs +363 -0
- package/esm2022/src/gui/MgForm.mjs +1181 -0
- package/esm2022/src/http/HttpManager.mjs +97 -0
- package/esm2022/src/http/client/HttpClientAsync.mjs +68 -0
- package/esm2022/src/http/client/HttpClientBase.mjs +132 -0
- package/esm2022/src/http/client/HttpClientEvents.mjs +39 -0
- package/esm2022/src/http/client/HttpClientSync.mjs +42 -0
- package/esm2022/src/http/client/HttpUtility.mjs +84 -0
- package/{esm2020 → esm2022}/src/http/client/ICommunicationsFailureHandler.mjs +1 -1
- package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
- package/esm2022/src/remote/RemoteCommandsProcessor.mjs +882 -0
- package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
- package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +24 -0
- package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +61 -0
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +15 -15
- package/{esm2020 → esm2022}/src/remote/RemoteDataviewManager.mjs +17 -17
- package/{esm2020 → esm2022}/src/remote/RemoteInitDataViewCommand.mjs +10 -10
- package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
- package/{esm2020 → esm2022}/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +12 -12
- package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
- package/esm2022/src/remote/ServerError.mjs +40 -0
- package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +20 -0
- package/esm2022/src/rt/Argument.mjs +265 -0
- package/esm2022/src/rt/ArgumentsList.mjs +103 -0
- package/esm2022/src/rt/Boundary.mjs +152 -0
- package/esm2022/src/rt/CompMainPrgTable.mjs +63 -0
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderBase.mjs +98 -96
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderFactory.mjs +6 -6
- package/esm2022/src/rt/DataviewHeaders.mjs +53 -0
- package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +38 -0
- package/esm2022/src/rt/ExecutionStack.mjs +94 -0
- package/{esm2020 → esm2022}/src/rt/ExecutionStackEntry.mjs +17 -17
- package/esm2022/src/rt/HandlersTable.mjs +96 -0
- package/{esm2020 → esm2022}/src/rt/IDataSourceViewDefinition.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IDataviewHeader.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IResultValue.mjs +1 -1
- package/esm2022/src/rt/LastFocusedManager.mjs +65 -0
- package/esm2022/src/rt/Operation.mjs +735 -0
- package/esm2022/src/rt/OperationTable.mjs +67 -0
- package/esm2022/src/rt/Recompute.mjs +355 -0
- package/esm2022/src/rt/RecomputeTable.mjs +63 -0
- package/esm2022/src/rt/RemoteDataviewHeader.mjs +108 -0
- package/esm2022/src/rt/ResultValue.mjs +10 -0
- package/esm2022/src/rt/TableCache.mjs +177 -0
- package/esm2022/src/rt/TableCacheManager.mjs +67 -0
- package/esm2022/src/rt/Transaction.mjs +53 -0
- package/esm2022/src/security/UserDetails.mjs +71 -0
- package/{esm2020 → esm2022}/src/tasks/IMGDataCollection.mjs +1 -1
- package/esm2022/src/tasks/MGData.mjs +552 -0
- package/esm2022/src/tasks/MGDataCollection.mjs +252 -0
- package/esm2022/src/tasks/RCTimer.mjs +63 -0
- package/esm2022/src/tasks/RemoteTaskService.mjs +45 -0
- package/esm2022/src/tasks/Task.mjs +2497 -0
- package/esm2022/src/tasks/TaskBase.mjs +83 -0
- package/esm2022/src/tasks/TaskServiceBase.mjs +25 -0
- package/esm2022/src/tasks/TasksTable.mjs +80 -0
- package/esm2022/src/tasks/sort/Sort.mjs +5 -0
- package/esm2022/src/tasks/sort/SortCollection.mjs +67 -0
- package/esm2022/src/util/ConstUtils.mjs +14 -0
- package/esm2022/src/util/FlowMonitorQueue.mjs +451 -0
- package/esm2022/src/util/HeapSort.mjs +70 -0
- package/{esm2020 → esm2022}/src/util/IMirrorXML.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/IServerConfig.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/MgBlockingQueue.mjs +1 -1
- package/esm2022/src/util/MgPriorityBlockingQueue.mjs +74 -0
- package/esm2022/src/util/MgPriorityQueue.mjs +66 -0
- package/{esm2020 → esm2022}/src/util/ParamParseResult.mjs +7 -7
- package/esm2022/src/util/PrmMap.mjs +152 -0
- package/esm2022/src/util/ReturnResult.mjs +46 -0
- package/esm2022/src/util/ReturnResultBase.mjs +18 -0
- package/esm2022/src/util/Scrambler.mjs +89 -0
- package/esm2022/src/util/UniqueIDUtils.mjs +13 -0
- package/esm2022/src/util/cookie.service.mjs +92 -0
- package/{fesm2020 → fesm2022}/magic-xpa-engine.mjs +29713 -29693
- package/fesm2022/magic-xpa-engine.mjs.map +1 -0
- package/index.d.ts +187 -187
- package/package.json +8 -14
- package/src/AccessHelper.d.ts +20 -20
- package/src/ClientManager.d.ts +32 -32
- package/src/CommandsProcessorBase.d.ts +23 -23
- package/src/CommandsProcessorManager.d.ts +6 -6
- package/src/CommandsTable.d.ts +22 -22
- package/src/ConstInterface.d.ts +515 -515
- package/src/CurrentClientVersion.d.ts +1 -1
- package/src/FlowMonitorInterface.d.ts +15 -15
- package/src/GUIManager.d.ts +17 -17
- package/src/GlobalCommandsManager.d.ts +17 -17
- package/src/GuiEventsProcessor.d.ts +24 -24
- package/src/ICommandsTable.d.ts +9 -9
- package/src/ServerConfig.d.ts +34 -34
- package/src/bridge/IGuiEvent.d.ts +19 -19
- package/src/bridge/MagicBridge.d.ts +16 -16
- package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -8
- package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -4
- package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -6
- package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +10 -10
- package/src/commands/ClientToServer/CommandFactory.d.ts +64 -64
- package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -20
- package/src/commands/ClientToServer/ComputeEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +7 -7
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +7 -7
- package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -6
- package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -9
- package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -32
- package/src/commands/ClientToServer/EvaluateCommand.d.ts +15 -15
- package/src/commands/ClientToServer/EventCommand.d.ts +15 -15
- package/src/commands/ClientToServer/ExecOperCommand.d.ts +23 -23
- package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -5
- package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -3
- package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +10 -10
- package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/QueryCommand.d.ts +8 -8
- package/src/commands/ClientToServer/RecomputeCommand.d.ts +11 -11
- package/src/commands/ClientToServer/RefreshEventCommand.d.ts +12 -12
- package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +10 -10
- package/src/commands/ClientToServer/RollbackEventCommand.d.ts +14 -14
- package/src/commands/ClientToServer/SelectProgramCommand.d.ts +6 -6
- package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -5
- package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +8 -8
- package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +9 -9
- package/src/commands/ClientToServer/TransactionCommand.d.ts +12 -12
- package/src/commands/ClientToServer/UnloadCommand.d.ts +7 -7
- package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -6
- package/src/commands/DataViewCommandBase.d.ts +6 -6
- package/src/commands/IClientCommand.d.ts +2 -2
- package/src/commands/IClientTargetedCommand.d.ts +12 -12
- package/src/commands/IClientToServerCommandInfo.d.ts +3 -3
- package/src/commands/ServerToClient/AbortCommand.d.ts +11 -11
- package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -10
- package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -9
- package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -7
- package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -12
- package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -13
- package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -21
- package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResultCommand.d.ts +10 -10
- package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -17
- package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -11
- package/src/communications/IConnectionStateManager.d.ts +4 -4
- package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -6
- package/src/data/DataSourceIdKey.d.ts +2 -2
- package/src/data/DataView.d.ts +162 -162
- package/src/data/DataViewBase.d.ts +12 -12
- package/src/data/DataviewManager.d.ts +14 -14
- package/src/data/DataviewManagerBase.d.ts +11 -11
- package/src/data/DvCache.d.ts +15 -15
- package/src/data/Field.d.ts +103 -103
- package/src/data/FieldBase.d.ts +23 -23
- package/src/data/FieldsTable.d.ts +27 -27
- package/src/data/IRecordsTable.d.ts +7 -7
- package/src/data/Key.d.ts +15 -15
- package/src/data/Record.d.ts +156 -156
- package/src/data/RecordOutOfDataViewException.d.ts +10 -10
- package/src/data/RecordsTable.d.ts +38 -38
- package/src/data/TaskTransactionManager.d.ts +17 -17
- package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -11
- package/src/enums.d.ts +21 -21
- package/src/env/EnvVariablesTable.d.ts +17 -17
- package/src/env/Environment.d.ts +118 -118
- package/src/env/ILanguageData.d.ts +3 -3
- package/src/env/LanguageData.d.ts +20 -20
- package/src/env/MirrorString.d.ts +15 -15
- package/src/event/ActionManager.d.ts +14 -14
- package/src/event/Event.d.ts +79 -79
- package/src/event/EventHandler.d.ts +66 -66
- package/src/event/EventHandlerPosition.d.ts +25 -25
- package/src/event/EventsManager.d.ts +204 -204
- package/src/event/IEventsManager.d.ts +77 -77
- package/src/event/RunTimeEvent.d.ts +123 -123
- package/src/event/RunTimeEventBase.d.ts +5 -5
- package/src/event/UserEventsTable.d.ts +11 -11
- package/src/exp/ExpTable.d.ts +11 -11
- package/src/exp/Expression.d.ts +37 -37
- package/src/exp/ExpressionDict.d.ts +12 -12
- package/src/exp/ExpressionEvaluator.d.ts +198 -198
- package/src/exp/ExpressionLocalJpn.d.ts +18 -18
- package/src/exp/GlobalParamsTable.d.ts +19 -19
- package/src/exp/YesNoExp.d.ts +9 -9
- package/src/gui/CreatedFormVector.d.ts +10 -10
- package/src/gui/FormsTable.d.ts +15 -15
- package/src/gui/MgControl.d.ts +60 -60
- package/src/gui/MgForm.d.ts +93 -93
- package/src/http/HttpManager.d.ts +25 -25
- package/src/http/client/HttpClientAsync.d.ts +16 -16
- package/src/http/client/HttpClientBase.d.ts +30 -30
- package/src/http/client/HttpClientEvents.d.ts +18 -18
- package/src/http/client/HttpClientSync.d.ts +17 -17
- package/src/http/client/HttpUtility.d.ts +10 -10
- package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -5
- package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/RemoteCommandsProcessor.d.ts +51 -51
- package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -8
- package/src/remote/RemoteDataViewCommandBase.d.ts +10 -10
- package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -6
- package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -8
- package/src/remote/RemoteDataviewManager.d.ts +9 -9
- package/src/remote/RemoteInitDataViewCommand.d.ts +7 -7
- package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ServerError.d.ts +16 -16
- package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -8
- package/src/rt/Argument.d.ts +36 -36
- package/src/rt/ArgumentsList.d.ts +24 -24
- package/src/rt/Boundary.d.ts +27 -27
- package/src/rt/CompMainPrgTable.d.ts +10 -10
- package/src/rt/DataviewHeaderBase.d.ts +34 -34
- package/src/rt/DataviewHeaderFactory.d.ts +5 -5
- package/src/rt/DataviewHeaders.d.ts +12 -12
- package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -10
- package/src/rt/ExecutionStack.d.ts +22 -22
- package/src/rt/ExecutionStackEntry.d.ts +7 -7
- package/src/rt/HandlersTable.d.ts +19 -19
- package/src/rt/IDataSourceViewDefinition.d.ts +6 -6
- package/src/rt/IDataviewHeader.d.ts +10 -10
- package/src/rt/IResultValue.d.ts +4 -4
- package/src/rt/LastFocusedManager.d.ts +23 -23
- package/src/rt/Operation.d.ts +97 -97
- package/src/rt/OperationTable.d.ts +15 -15
- package/src/rt/Recompute.d.ts +41 -41
- package/src/rt/RecomputeTable.d.ts +9 -9
- package/src/rt/RemoteDataviewHeader.d.ts +14 -14
- package/src/rt/ResultValue.d.ts +7 -7
- package/src/rt/TableCache.d.ts +29 -29
- package/src/rt/TableCacheManager.d.ts +10 -10
- package/src/rt/Transaction.d.ts +23 -23
- package/src/security/UserDetails.d.ts +16 -16
- package/src/tasks/IMGDataCollection.d.ts +26 -26
- package/src/tasks/MGData.d.ts +63 -63
- package/src/tasks/MGDataCollection.d.ts +42 -42
- package/src/tasks/RCTimer.d.ts +13 -13
- package/src/tasks/RemoteTaskService.d.ts +16 -16
- package/src/tasks/Task.d.ts +312 -312
- package/src/tasks/TaskBase.d.ts +123 -123
- package/src/tasks/TaskServiceBase.d.ts +16 -16
- package/src/tasks/TasksTable.d.ts +21 -21
- package/src/tasks/sort/Sort.d.ts +4 -4
- package/src/tasks/sort/SortCollection.d.ts +11 -11
- package/src/util/ConstUtils.d.ts +3 -3
- package/src/util/FlowMonitorQueue.d.ts +70 -70
- package/src/util/HeapSort.d.ts +6 -6
- package/src/util/IMirrorXML.d.ts +6 -6
- package/src/util/IServerConfig.d.ts +11 -11
- package/src/util/MgBlockingQueue.d.ts +5 -5
- package/src/util/MgPriorityBlockingQueue.d.ts +17 -17
- package/src/util/MgPriorityQueue.d.ts +13 -13
- package/src/util/ParamParseResult.d.ts +6 -6
- package/src/util/PrmMap.d.ts +28 -28
- package/src/util/ReturnResult.d.ts +18 -18
- package/src/util/ReturnResultBase.d.ts +11 -11
- package/src/util/Scrambler.d.ts +10 -10
- package/src/util/UniqueIDUtils.d.ts +4 -4
- package/src/util/cookie.service.d.ts +8 -8
- package/esm2020/src/AccessHelper.mjs +0 -9
- package/esm2020/src/ClientManager.mjs +0 -399
- package/esm2020/src/CommandsProcessorBase.mjs +0 -58
- package/esm2020/src/CommandsProcessorManager.mjs +0 -26
- package/esm2020/src/CommandsTable.mjs +0 -162
- package/esm2020/src/ConstInterface.mjs +0 -516
- package/esm2020/src/FlowMonitorInterface.mjs +0 -16
- package/esm2020/src/GUIManager.mjs +0 -62
- package/esm2020/src/GlobalCommandsManager.mjs +0 -34
- package/esm2020/src/GuiEventsProcessor.mjs +0 -154
- package/esm2020/src/ServerConfig.mjs +0 -117
- package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -11
- package/esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +0 -60
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +0 -260
- package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -69
- package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
- package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +0 -36
- package/esm2020/src/commands/ClientToServer/EventCommand.mjs +0 -40
- package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +0 -67
- package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -22
- package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -39
- package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +0 -28
- package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
- package/esm2020/src/commands/DataViewCommandBase.mjs +0 -10
- package/esm2020/src/commands/IClientTargetedCommand.mjs +0 -9
- package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +0 -65
- package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +0 -62
- package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +0 -33
- package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -27
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
- package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +0 -37
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
- package/esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +0 -132
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -17
- package/esm2020/src/data/DataView.mjs +0 -1610
- package/esm2020/src/data/DataviewManager.mjs +0 -28
- package/esm2020/src/data/DataviewManagerBase.mjs +0 -15
- package/esm2020/src/data/DvCache.mjs +0 -67
- package/esm2020/src/data/Field.mjs +0 -646
- package/esm2020/src/data/FieldBase.mjs +0 -18
- package/esm2020/src/data/FieldsTable.mjs +0 -103
- package/esm2020/src/data/Key.mjs +0 -88
- package/esm2020/src/data/Record.mjs +0 -846
- package/esm2020/src/data/RecordsTable.mjs +0 -267
- package/esm2020/src/data/TaskTransactionManager.mjs +0 -103
- package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +0 -74
- package/esm2020/src/env/EnvVariablesTable.mjs +0 -340
- package/esm2020/src/env/Environment.mjs +0 -489
- package/esm2020/src/env/LanguageData.mjs +0 -226
- package/esm2020/src/env/MirrorString.mjs +0 -65
- package/esm2020/src/event/ActionManager.mjs +0 -91
- package/esm2020/src/event/Event.mjs +0 -1333
- package/esm2020/src/event/EventHandler.mjs +0 -766
- package/esm2020/src/event/EventHandlerPosition.mjs +0 -204
- package/esm2020/src/event/EventsManager.mjs +0 -2975
- package/esm2020/src/event/RunTimeEvent.mjs +0 -392
- package/esm2020/src/event/UserEventsTable.mjs +0 -47
- package/esm2020/src/exp/ExpTable.mjs +0 -59
- package/esm2020/src/exp/Expression.mjs +0 -200
- package/esm2020/src/exp/ExpressionDict.mjs +0 -727
- package/esm2020/src/exp/ExpressionEvaluator.mjs +0 -4212
- package/esm2020/src/exp/ExpressionLocalJpn.mjs +0 -314
- package/esm2020/src/exp/GlobalParamsTable.mjs +0 -85
- package/esm2020/src/exp/YesNoExp.mjs +0 -36
- package/esm2020/src/gui/CreatedFormVector.mjs +0 -23
- package/esm2020/src/gui/FormsTable.mjs +0 -66
- package/esm2020/src/gui/MgControl.mjs +0 -353
- package/esm2020/src/gui/MgForm.mjs +0 -1181
- package/esm2020/src/http/HttpManager.mjs +0 -97
- package/esm2020/src/http/client/HttpClientAsync.mjs +0 -67
- package/esm2020/src/http/client/HttpClientBase.mjs +0 -132
- package/esm2020/src/http/client/HttpClientEvents.mjs +0 -39
- package/esm2020/src/http/client/HttpClientSync.mjs +0 -42
- package/esm2020/src/http/client/HttpUtility.mjs +0 -84
- package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +0 -18
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +0 -880
- package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +0 -25
- package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +0 -24
- package/esm2020/src/remote/RemoteDataViewCommandFactory.mjs +0 -61
- package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +0 -17
- package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +0 -16
- package/esm2020/src/remote/ServerError.mjs +0 -40
- package/esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +0 -20
- package/esm2020/src/rt/Argument.mjs +0 -265
- package/esm2020/src/rt/ArgumentsList.mjs +0 -103
- package/esm2020/src/rt/Boundary.mjs +0 -152
- package/esm2020/src/rt/CompMainPrgTable.mjs +0 -65
- package/esm2020/src/rt/DataviewHeaders.mjs +0 -53
- package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +0 -38
- package/esm2020/src/rt/ExecutionStack.mjs +0 -94
- package/esm2020/src/rt/HandlersTable.mjs +0 -96
- package/esm2020/src/rt/LastFocusedManager.mjs +0 -67
- package/esm2020/src/rt/Operation.mjs +0 -735
- package/esm2020/src/rt/OperationTable.mjs +0 -67
- package/esm2020/src/rt/Recompute.mjs +0 -355
- package/esm2020/src/rt/RecomputeTable.mjs +0 -63
- package/esm2020/src/rt/RemoteDataviewHeader.mjs +0 -108
- package/esm2020/src/rt/ResultValue.mjs +0 -12
- package/esm2020/src/rt/TableCache.mjs +0 -177
- package/esm2020/src/rt/TableCacheManager.mjs +0 -67
- package/esm2020/src/rt/Transaction.mjs +0 -53
- package/esm2020/src/security/UserDetails.mjs +0 -71
- package/esm2020/src/tasks/MGData.mjs +0 -552
- package/esm2020/src/tasks/MGDataCollection.mjs +0 -252
- package/esm2020/src/tasks/RCTimer.mjs +0 -63
- package/esm2020/src/tasks/RemoteTaskService.mjs +0 -45
- package/esm2020/src/tasks/Task.mjs +0 -2495
- package/esm2020/src/tasks/TaskBase.mjs +0 -87
- package/esm2020/src/tasks/TaskServiceBase.mjs +0 -25
- package/esm2020/src/tasks/TasksTable.mjs +0 -80
- package/esm2020/src/tasks/sort/Sort.mjs +0 -7
- package/esm2020/src/tasks/sort/SortCollection.mjs +0 -67
- package/esm2020/src/util/ConstUtils.mjs +0 -14
- package/esm2020/src/util/FlowMonitorQueue.mjs +0 -453
- package/esm2020/src/util/HeapSort.mjs +0 -70
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +0 -74
- package/esm2020/src/util/MgPriorityQueue.mjs +0 -66
- package/esm2020/src/util/PrmMap.mjs +0 -151
- package/esm2020/src/util/ReturnResult.mjs +0 -46
- package/esm2020/src/util/ReturnResultBase.mjs +0 -18
- package/esm2020/src/util/Scrambler.mjs +0 -89
- package/esm2020/src/util/UniqueIDUtils.mjs +0 -12
- package/esm2020/src/util/cookie.service.mjs +0 -92
- package/fesm2015/magic-xpa-engine.mjs +0 -30835
- package/fesm2015/magic-xpa-engine.mjs.map +0 -1
- package/fesm2020/magic-xpa-engine.mjs.map +0 -1
@@ -1,108 +0,0 @@
|
|
1
|
-
import { List } from "@magic-xpa/mscorelib";
|
2
|
-
import { StorageAttribute } from "@magic-xpa/utils";
|
3
|
-
import { DisplayConvertor, PIC } from "@magic-xpa/gui";
|
4
|
-
import { DataviewHeaderBase } from "./DataviewHeaderBase";
|
5
|
-
import { TableCache } from "./TableCache";
|
6
|
-
import { Record } from "../data/Record";
|
7
|
-
import { ConstInterface } from "../ConstInterface";
|
8
|
-
import { TableCacheManager } from "./TableCacheManager";
|
9
|
-
import { AccessHelper } from "../AccessHelper";
|
10
|
-
export class RemoteDataviewHeader extends DataviewHeaderBase {
|
11
|
-
constructor(task) {
|
12
|
-
super(task);
|
13
|
-
this._table = null;
|
14
|
-
this._lastFetchRecPos = null;
|
15
|
-
}
|
16
|
-
setAttribute(attribute, valueStr) {
|
17
|
-
switch (attribute) {
|
18
|
-
case ConstInterface.MG_ATTR_CACHED_TABLE:
|
19
|
-
if (valueStr != "") {
|
20
|
-
if (TableCacheManager.Instance.TableExists(valueStr))
|
21
|
-
this._table = TableCacheManager.Instance.GetTableById(valueStr);
|
22
|
-
else {
|
23
|
-
this._table = new TableCache(valueStr);
|
24
|
-
TableCacheManager.Instance.InsertTable(this._table);
|
25
|
-
}
|
26
|
-
}
|
27
|
-
break;
|
28
|
-
case ConstInterface.MG_ATTR_IDENT:
|
29
|
-
if (valueStr != "")
|
30
|
-
this._table.SetTableIdent(valueStr);
|
31
|
-
break;
|
32
|
-
default:
|
33
|
-
super.setAttribute(attribute, valueStr);
|
34
|
-
break;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
async getLinkedRecord(curRec) {
|
38
|
-
let lnkFlds = this._task.DataView.GetFieldsTab().getLinkFields(this._id);
|
39
|
-
let ret = false;
|
40
|
-
if (this._cond.getVal()) {
|
41
|
-
if (this.Loc == null) {
|
42
|
-
this.Loc = new List();
|
43
|
-
for (let i = 0; i < lnkFlds.length; i++) {
|
44
|
-
let currLoc = lnkFlds.get_Item(i).Locate;
|
45
|
-
if (currLoc != null) {
|
46
|
-
this.Loc.push(currLoc);
|
47
|
-
await currLoc.compute(false);
|
48
|
-
}
|
49
|
-
}
|
50
|
-
}
|
51
|
-
else {
|
52
|
-
for (let i = 0; i < this.Loc.length; i++)
|
53
|
-
await this.Loc.get_Item(i).compute(false);
|
54
|
-
}
|
55
|
-
await this._table.SortTable(this._keyIdx, this._dir);
|
56
|
-
let res = this._table.Fetch(this.Loc);
|
57
|
-
if (res == null)
|
58
|
-
await this.initRec(curRec, false);
|
59
|
-
else {
|
60
|
-
ret = true;
|
61
|
-
await this.copyLinkFldToRec(curRec, lnkFlds, res, true);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
else
|
65
|
-
await this.initRec(curRec, false);
|
66
|
-
return ret;
|
67
|
-
}
|
68
|
-
async copyLinkFldToRec(curRec, linkFlds, tableRec, ret) {
|
69
|
-
this._lastFetchRecPos = tableRec.getDbPosVal();
|
70
|
-
for (let i = 0; i < linkFlds.length; i++) {
|
71
|
-
let curFld = linkFlds.get_Item(i);
|
72
|
-
curRec.setFieldValue(curFld.getId(), tableRec.GetFieldValue(curFld.CacheTableFldIdx), false);
|
73
|
-
curRec.clearFlag(curFld.getId(), Record.FLAG_INVALID);
|
74
|
-
curFld.invalidate(true, false);
|
75
|
-
}
|
76
|
-
await this.SetReturnValue(ret, true);
|
77
|
-
}
|
78
|
-
async initRec(currRec, ret) {
|
79
|
-
this._lastFetchRecPos = "#";
|
80
|
-
await this.InitLinkFields(currRec);
|
81
|
-
let retFld = this.ReturnField;
|
82
|
-
if (retFld != null) {
|
83
|
-
currRec.setFieldValue(retFld.getId(), (ret ? "1" : "0"), false);
|
84
|
-
retFld.invalidate(true, false);
|
85
|
-
}
|
86
|
-
}
|
87
|
-
getLastFetchedDbPos() {
|
88
|
-
return this._lastFetchRecPos;
|
89
|
-
}
|
90
|
-
async SetReturnValue(ret, recompute) {
|
91
|
-
let returnField = this.ReturnField;
|
92
|
-
if (returnField !== null) {
|
93
|
-
let enforceVariableChange = returnField.getTask() !== this.Task;
|
94
|
-
AccessHelper.eventsManager.pushNewExecStacks();
|
95
|
-
let result = ret ? "1" : "0";
|
96
|
-
if (returnField.getType() === StorageAttribute.NUMERIC)
|
97
|
-
result = DisplayConvertor.Instance.toNum(result, new PIC(returnField.getPicture(), StorageAttribute.NUMERIC, 0), 0);
|
98
|
-
await returnField.setValueAndStartRecompute(result, false, recompute, false, false, enforceVariableChange);
|
99
|
-
AccessHelper.eventsManager.popNewExecStacks();
|
100
|
-
if (!recompute)
|
101
|
-
returnField.setModified();
|
102
|
-
returnField.invalidate(true, false);
|
103
|
-
if (returnField.getTask() !== this.Task)
|
104
|
-
await returnField.updateDisplay();
|
105
|
-
}
|
106
|
-
}
|
107
|
-
}
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3RlRGF0YXZpZXdIZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1JlbW90ZURhdGF2aWV3SGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJdEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUs3QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBSTFELFlBQVksSUFBVTtRQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFKTixXQUFNLEdBQWUsSUFBSSxDQUFDO1FBQzFCLHFCQUFnQixHQUFXLElBQUksQ0FBQztJQUl4QyxDQUFDO0lBRVMsWUFBWSxDQUFDLFNBQWlCLEVBQUUsUUFBZ0I7UUFDeEQsUUFBUSxTQUFTLEVBQUU7WUFFakIsS0FBSyxjQUFjLENBQUMsb0JBQW9CO2dCQUN0QyxJQUFJLFFBQVEsSUFBSSxFQUFFLEVBQUU7b0JBQ2xCLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7d0JBQ2xELElBQUksQ0FBQyxNQUFN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QVUsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUUxQyxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUU7WUFDeEIsSUFBSSxxQkFBcUIsR0FBWSxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztZQUd6RSxZQUFZLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFJL0MsSUFBSSxNQUFNLEdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNyQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUNwRCxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV0SCxNQUFNLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFFM0csWUFBWSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlDLElBQUksQ0FBQyxTQUFTO2dCQUNaLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUU1QixXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUdwQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSTtnQkFDckMsTUFBTSxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3R9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7RGlzcGxheUNvbnZlcnRvciwgUElDfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtEYXRhdmlld0hlYWRlckJhc2V9IGZyb20gXCIuL0RhdGF2aWV3SGVhZGVyQmFzZVwiO1xyXG5pbXBvcnQge1RhYmxlQ2FjaGV9IGZyb20gXCIuL1RhYmxlQ2FjaGVcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSBcIi4uL2RhdGEvUmVjb3JkXCI7XHJcbmltcG9ydCB7RmllbGR9IGZyb20gXCIuLi9kYXRhL0ZpZWxkXCI7XHJcbmltcG9ydCB7RmllbGRzVGFibGVFeHQgYXMgRmllbGRzVGFibGV9IGZyb20gXCIuLi9kYXRhL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7Qm91bmRhcnl9IGZyb20gXCIuL0JvdW5kYXJ5XCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge1RhYmxlQ2FjaGVNYW5hZ2VyfSBmcm9tIFwiLi9UYWJsZUNhY2hlTWFuYWdlclwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gbGluayB0byBSZW1vdGUgdGFibGVcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFJlbW90ZURhdGF2aWV3SGVhZGVyIGV4dGVuZHMgRGF0YXZpZXdIZWFkZXJCYXNlIHtcclxuICBwcml2YXRlIF90YWJsZTogVGFibGVDYWNoZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbGFzdEZldGNoUmVjUG9zOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgZGIgcG9zIG9mIHRoZSBsYXN0IGZldGNoZWQgcmVjb3JkIGZyb20gdGhlIHRhYmxlIGNhY2hlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHRhc2s6IFRhc2spIHtcclxuICAgIHN1cGVyKHRhc2spO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DQUNIRURfVEFCTEU6XHJcbiAgICAgICAgaWYgKHZhbHVlU3RyICE9IFwiXCIpIHtcclxuICAgICAgICAgIGlmIChUYWJsZUNhY2hlTWFuYWdlci5JbnN0YW5jZS5UYWJsZUV4aXN0cyh2YWx1ZVN0cikpXHJcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlID0gVGFibGVDYWNoZU1hbmFnZXIuSW5zdGFuY2UuR2V0VGFibGVCeUlkKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl90YWJsZSA9IG5ldyBUYWJsZUNhY2hlKHZhbHVlU3RyKTtcclxuICAgICAgICAgICAgVGFibGVDYWNoZU1hbmFnZXIuSW5zdGFuY2UuSW5zZXJ0VGFibGUodGhpcy5fdGFibGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JREVOVDpcclxuICAgICAgICBpZiAodmFsdWVTdHIgIT0gXCJcIilcclxuICAgICAgICAgIHRoaXMuX3RhYmxlLlNldFRhYmxlSWRlbnQodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBzdXBlci5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgd2lsbCByZXR1cm4gdGhlIGxpbmtlZCByZWNvcmQgYWNjb3JkaW5nIHRvIHRoZSBsaW5rIHByb3BlcnRpZXMgYW5kIHRoZSBjdXJyZW50IHJlY29yZFxyXG4gIC8vLyAgIHRoaXMgbWV0aG9kIHdpbGwgY2hhbmdlIHRoZSBjdXJyZW50IHJlY29yZCBmaWVsZHMgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlua2VkUmVjb3JkKGN1clJlYzogUmVjb3JkKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgbG5rRmxkcyA9ICg8RmllbGRzVGFibGU+IHRoaXMuX3Rhc2suRGF0YVZpZXcuR2V0RmllbGRzVGFiKCkpLmdldExpbmtGaWVsZHModGhpcy5faWQpO1xyXG4gICAgbGV0IHJldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLl9jb25kLmdldFZhbCgpKSB7XHJcblxyXG4gICAgICAvLyBidWlsZCBsb2NhdGUgYW5kIHJhbmdlIHZlY3RvcnNcclxuICAgICAgaWYgKHRoaXMuTG9jID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLkxvYyA9IG5ldyBMaXN0PEJvdW5kYXJ5PigpO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsbmtGbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgY3VyckxvYzogQm91bmRhcnkgPSBsbmtGbGRzLmdldF9JdGVtKGkpLkxvY2F0ZTtcclxuICAgICAgICAgIGlmIChjdXJyTG9jICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5Mb2MucHVzaChjdXJyTG9jKTtcclxuICAgICAgICAgICAgYXdhaXQgY3VyckxvYy5jb21wdXRlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gY29tcHV0ZSB0aGUgcmFuZ2UgYW5kIGxvY2F0ZSBleHByZXNzaW9ucyBhbmV3XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuTG9jLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5Mb2MuZ2V0X0l0ZW0oaSkuY29tcHV0ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gc29ydCB0aGUgdGFibGUgKGlmIHRoZSB0YWJsZSB3YXMgbm90IGxvYWRlZCB5ZXQgaXQgd2lsbCBhbHNvIGxvYWQgaXRcclxuICAgICAgYXdhaXQgdGhpcy5fdGFibGUuU29ydFRhYmxlKHRoaXMuX2tleUlkeCwgdGhpcy5fZGlyKTtcclxuICAgICAgLy8gcGVyZm9ybSB0aGUgbGlua1xyXG4gICAgICBsZXQgcmVzOiBSZWNvcmQgPSB0aGlzLl90YWJsZS5GZXRjaCh0aGlzLkxvYyk7XHJcbiAgICAgIGlmIChyZXMgPT0gbnVsbClcclxuICAgICAgLy8gbGluayBmYWlsZFxyXG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdFJlYyhjdXJSZWMsIGZhbHNlKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0ID0gdHJ1ZTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvcHlMaW5rRmxkVG9SZWMoY3VyUmVjLCBsbmtGbGRzLCByZXMsIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjYWxjdWxhdGUgaW5pdCBleHByZXNzaW9ucyBpZiB0aGVyZSBhcmUgYW55IG9yIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBlbHNlXHJcbiAgICAgIGF3YWl0IHRoaXMuaW5pdFJlYyhjdXJSZWMsICBmYWxzZSk7IC8vIGV2ZXJ5IHNjZW5hcmlvIHdoZXJlIHRoZSBsaW5rZWQgZGlkIG5vdFxyXG4gICAgLy8gcmV0dXJuZWQgYW55IHJlY29yZCBmcm8gZXhhbXBsZSBoZXJlIHdoZW5cclxuICAgIC8vIHRoZSBsaW5rIGNvbmRpdGlvbiBpcyBmYWxzZSB0aGVuIHRoZSBsaW5rIGlzXHJcbiAgICAvLyBjb25zaWRlcmVkIHRvIGhhcyBmYWlsZWQgYW5kIHNob3VsZCByZXR1cm5cclxuICAgIC8vIGZhbHNlIGFzIHJldHVybiB2YWx1ZVxyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaWYgdGhlIGxpbmsgc3VjY2VlZGVkIGNvcGllcyB0aGUgdmFsdWVzIHJldHVybiBmcm9tIHRoZSBsaW5rZWQgdGFibGUgcmVjb3JkXHJcbiAgLy8vICAgdG8gdGhlIGN1cnJlbnQgZGF0YSB2aWV3IHJlY29yZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBjb3B5TGlua0ZsZFRvUmVjKGN1clJlYzogUmVjb3JkLCBsaW5rRmxkczogTGlzdDxGaWVsZD4sIHRhYmxlUmVjOiBSZWNvcmQsIHJldDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gaWYgd2UgZ290IGhlcmUgaXQgbWVhbnMgdGhhdCB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBmZXRjaCBhIHJlY29yZCBmcm9tIHRoZSBsaW5rXHJcbiAgICAvLyBzZXQgdGhlIGxhc3RGZXRjaFJlY1BvcyB0byBiZSB0aGUgcG9zIG9mIHRoZSBmZXRjaGVkIHJlY29yZFxyXG4gICAgdGhpcy5fbGFzdEZldGNoUmVjUG9zID0gdGFibGVSZWMuZ2V0RGJQb3NWYWwoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGlua0ZsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1ckZsZDogRmllbGQgPSBsaW5rRmxkcy5nZXRfSXRlbShpKTtcclxuICAgICAgY3VyUmVjLnNldEZpZWxkVmFsdWUoY3VyRmxkLmdldElkKCksIHRhYmxlUmVjLkdldEZpZWxkVmFsdWUoY3VyRmxkLkNhY2hlVGFibGVGbGRJZHgpLCBmYWxzZSk7XHJcblxyXG4gICAgICAvLyBjbGVhciB0aGUgaW52YWxpZCBmbGFnIGluIGNhc2UgaXQgd2FzIHNldFxyXG4gICAgICBjdXJSZWMuY2xlYXJGbGFnKGN1ckZsZC5nZXRJZCgpLCBSZWNvcmQuRkxBR19JTlZBTElEKTtcclxuICAgICAgY3VyRmxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLy8gc2V0IHRoZSByZXQgdmFsdWVcclxuICAgIGF3YWl0IHRoaXMuU2V0UmV0dXJuVmFsdWUocmV0LCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbiBjYXNlIHRoZSBsaW5rIGZhaWxzIHNldCB0aGUgdmFsdWUgdG8gZGVmYXVsdCBvciB0byB0aGUgdmFsdWUgb2YgdGhlIGluaXQgZXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0UmVjKGN1cnJSZWM6IFJlY29yZCwgcmV0OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBpZiB3ZSBhcmUgaGVyZSBpdCBtZWFucyB0aGF0IHdlIHRyaWVkIHRvIGZldGNoIGEgcmVjb3JkIGJ1dCBmYWlsZWQgdG8gZmluZCBvbmUgdGhlcmVmb3JcclxuICAgIC8vIHRoZSBsYXN0RmV0Y2hSZWNQb3Mgc2hvdWxkIGJlIG1hcmtlZCBhY2NvcmRpbmdseVxyXG4gICAgdGhpcy5fbGFzdEZldGNoUmVjUG9zID0gXCIjXCI7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5Jbml0TGlua0ZpZWxkcyhjdXJyUmVjKTtcclxuXHJcbiAgICAvLyBzZXQgdGhlIHJldCB2YWx1ZVxyXG4gICAgbGV0IHJldEZsZCA9IHRoaXMuUmV0dXJuRmllbGQ7XHJcbiAgICBpZiAocmV0RmxkICE9IG51bGwpIHtcclxuICAgICAgY3VyclJlYy5zZXRGaWVsZFZhbHVlKHJldEZsZC5nZXRJZCgpLCAocmV0ID8gXCIxXCIgOiBcIjBcIiksIGZhbHNlKTtcclxuICAgICAgcmV0RmxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGxhc3QgZmV0Y2ggcmVjb3JkIGRiIHBvcyB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldExhc3RGZXRjaGVkRGJQb3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYXN0RmV0Y2hSZWNQb3M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHVwZGF0ZSBsaW5rIHJlc3VsdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3VyUmVjXCI+Y3VycmVudCByZWNvcmQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJldFwiPmxpbmsgc3VjY2VzczwvcGFyYW0+XHJcbiAgYXN5bmMgU2V0UmV0dXJuVmFsdWUoIHJldDogYm9vbGVhbiwgcmVjb21wdXRlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcmV0dXJuRmllbGQ6IEZpZWxkID0gdGhpcy5SZXR1cm5GaWVsZDtcclxuXHJcbiAgICBpZiAocmV0dXJuRmllbGQgIT09IG51bGwpIHtcclxuICAgICAgbGV0IGVuZm9yY2VWYXJpYWJsZUNoYW5nZTogYm9vbGVhbiA9IHJldHVybkZpZWxkLmdldFRhc2soKSAhPT0gdGhpcy5UYXNrO1xyXG5cclxuICAgICAgLy8gaWYgd2UgYXJlIGZldGNoaW5nIGZpcnN0IGNodW5rIHdlIGRpZG4ndCB1cGRhdGVkIHRoZSBleGVjdXR1aW9uIHN0YWNrIHlldFxyXG4gICAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5wdXNoTmV3RXhlY1N0YWNrcygpO1xyXG4gICAgICAvLyBzYW1lIGFzIE5vblJlY29tcHV0ZVZhckNoYW5nZUV2ZW50IG9uIHNlcnZlciBmZXRjaC5jcHBcclxuXHJcbiAgICAgIC8vIGlmIHRoZSByZXR1cm4gZmllbGQgaXMgbnVtZXJpYywgdGhlbiBjb252ZXJ0IHJlc3VsdCB2YWx1ZSB0b051bSgpIGJlZm9yZSBwYXNzaW5nIHRvIHNldFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUoKS5cclxuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nID0gcmV0ID8gXCIxXCIgOiBcIjBcIjtcclxuICAgICAgaWYgKHJldHVybkZpZWxkLmdldFR5cGUoKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDKVxyXG4gICAgICAgIHJlc3VsdCA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0ocmVzdWx0LCBuZXcgUElDKHJldHVybkZpZWxkLmdldFBpY3R1cmUoKSwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCAwKSwgMCk7XHJcblxyXG4gICAgICBhd2FpdCByZXR1cm5GaWVsZC5zZXRWYWx1ZUFuZFN0YXJ0UmVjb21wdXRlKHJlc3VsdCwgZmFsc2UsIHJlY29tcHV0ZSwgZmFsc2UsIGZhbHNlLCBlbmZvcmNlVmFyaWFibGVDaGFuZ2UpO1xyXG5cclxuICAgICAgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIucG9wTmV3RXhlY1N0YWNrcygpO1xyXG5cclxuICAgICAgaWYgKCFyZWNvbXB1dGUpXHJcbiAgICAgICAgcmV0dXJuRmllbGQuc2V0TW9kaWZpZWQoKTtcclxuXHJcbiAgICAgIHJldHVybkZpZWxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgLy8gSWYgZmllbGQgaXMgZnJvbSBhbm90aGVyIHRhc2ssIG5lZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5IGFzIHdlbGxcclxuICAgICAgaWYgKHJldHVybkZpZWxkLmdldFRhc2soKSAhPT0gdGhpcy5UYXNrKVxyXG4gICAgICAgIGF3YWl0IHJldHVybkZpZWxkLnVwZGF0ZURpc3BsYXkoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
@@ -1,12 +0,0 @@
|
|
1
|
-
import { StorageAttribute } from "@magic-xpa/utils";
|
2
|
-
export class ResultValue {
|
3
|
-
constructor() {
|
4
|
-
this.Value = null;
|
5
|
-
this.Type = StorageAttribute.NONE;
|
6
|
-
}
|
7
|
-
SetResultValue(result, type) {
|
8
|
-
this.Value = result;
|
9
|
-
this.Type = type;
|
10
|
-
}
|
11
|
-
}
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzdWx0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1Jlc3VsdFZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBS2xELE1BQU0sT0FBTyxXQUFXO0lBQXhCO1FBQ0UsVUFBSyxHQUFXLElBQUksQ0FBQztRQUNyQixTQUFJLEdBQXFCLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQVdqRCxDQUFDO0lBSkMsY0FBYyxDQUFDLE1BQWMsRUFBRSxJQUFzQjtRQUNuRCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lSZXN1bHRWYWx1ZX0gZnJvbSBcIi4vSVJlc3VsdFZhbHVlXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3MgaXMgaW50cm9kdWNlZCB0byByZWFkIHRoZSByZXN1bHQgZnJvbSBzZXJ2ZXIgZm9yIGFueSBvcGVyYXRpb24uXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBSZXN1bHRWYWx1ZSBpbXBsZW1lbnRzIElSZXN1bHRWYWx1ZSB7XHJcbiAgVmFsdWU6IHN0cmluZyA9IG51bGw7IC8vIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIHNlcnZlclxyXG4gIFR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUgPSBTdG9yYWdlQXR0cmlidXRlLk5PTkU7IC8vIHRoZSB0eXBlIG9mIHRoZSByZXN1bHQgd2hpY2ggaXMgcmV0dXJuZWQgYnkgdGhlIHNlcnZlclxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHJlc3VsdCB2YWx1ZSBieSB0aGUgUmVzdWx0IGNvbW1hbmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmVzdWx0XCI+dGhlIHJlc3VsdCBjb21wdXRlZCBieSB0aGUgc2VydmVyIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlXCI+dGhlIHR5cGUgb2YgdGhlIHJlc3VsdCB3aGljaCB3YXMgY29tcHV0ZWQgYnkgdGhlIHNlcnZlciA8L3BhcmFtPlxyXG4gIFNldFJlc3VsdFZhbHVlKHJlc3VsdDogc3RyaW5nLCB0eXBlOiBTdG9yYWdlQXR0cmlidXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLlZhbHVlID0gcmVzdWx0O1xyXG4gICAgdGhpcy5UeXBlID0gdHlwZTtcclxuICB9XHJcbn1cclxuIl19
|
@@ -1,177 +0,0 @@
|
|
1
|
-
import { List, NString } from "@magic-xpa/mscorelib";
|
2
|
-
import { Key } from "../data/Key";
|
3
|
-
import { FieldsTableExt as FieldsTable } from "../data/FieldsTable";
|
4
|
-
import { Logger, XMLConstants, XmlParser } from "@magic-xpa/utils";
|
5
|
-
import { RuntimeContextBase } from "@magic-xpa/gui";
|
6
|
-
import { Record } from "../data/Record";
|
7
|
-
import { HeapSort } from "../util/HeapSort";
|
8
|
-
import { ConstInterface } from "../ConstInterface";
|
9
|
-
import { TableCacheManager } from "./TableCacheManager";
|
10
|
-
export class TableCache {
|
11
|
-
constructor(tableId) {
|
12
|
-
this._keys = null;
|
13
|
-
this._records = null;
|
14
|
-
this._currSortDir = '\0';
|
15
|
-
this._currSortKey = 0;
|
16
|
-
this.FldsTab = null;
|
17
|
-
this._isLoaded = false;
|
18
|
-
this._tableIdent = null;
|
19
|
-
this._tableUId = null;
|
20
|
-
this._tableUId = tableId;
|
21
|
-
this._keys = new List();
|
22
|
-
this._records = new List();
|
23
|
-
this._isLoaded = false;
|
24
|
-
}
|
25
|
-
SetTableIdent(ident) {
|
26
|
-
if (this._tableIdent === null)
|
27
|
-
this._tableIdent = ident;
|
28
|
-
else if (this._tableIdent !== ident) {
|
29
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in TableCache.setTableIdent() already set and table identifier does not match");
|
30
|
-
}
|
31
|
-
}
|
32
|
-
FillData() {
|
33
|
-
let parser = RuntimeContextBase.Instance.Parser;
|
34
|
-
this.FillAttributes(parser);
|
35
|
-
while (this.InitInnerObjects(parser, parser.getNextTag())) {
|
36
|
-
}
|
37
|
-
}
|
38
|
-
FillAttributes(parser) {
|
39
|
-
let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex());
|
40
|
-
if (endContext !== -1 && endContext < parser.getXMLdata().length) {
|
41
|
-
let tag = parser.getXMLsubstring(endContext);
|
42
|
-
parser.add2CurrIndex(tag.indexOf(ConstInterface.MG_TAG_CACHED_TABLE) + ConstInterface.MG_TAG_CACHED_TABLE.length);
|
43
|
-
let tokensVector = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
|
44
|
-
for (let j = 0; j < tokensVector.length; j += 2) {
|
45
|
-
let attribute = (tokensVector.get_Item(j));
|
46
|
-
let valueStr = (tokensVector.get_Item(j + 1));
|
47
|
-
switch (attribute) {
|
48
|
-
case XMLConstants.MG_ATTR_ID:
|
49
|
-
if (this._tableUId.indexOf(valueStr) === -1) {
|
50
|
-
this._tableUId = valueStr;
|
51
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in TableCache.fillAttributes() table unique id does not match");
|
52
|
-
}
|
53
|
-
break;
|
54
|
-
case XMLConstants.MG_ATTR_NAME:
|
55
|
-
break;
|
56
|
-
case ConstInterface.MG_ATTR_IDENT:
|
57
|
-
if (this._tableIdent !== valueStr) {
|
58
|
-
this._tableIdent = valueStr;
|
59
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in TableCache.fillAttributes() table identifier id does not match");
|
60
|
-
}
|
61
|
-
break;
|
62
|
-
default:
|
63
|
-
Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("Unrecognized attribute: '{0}'", attribute));
|
64
|
-
break;
|
65
|
-
}
|
66
|
-
}
|
67
|
-
parser.setCurrIndex(++endContext);
|
68
|
-
return;
|
69
|
-
}
|
70
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in TableCache.fillAttributes() out of string bounds");
|
71
|
-
}
|
72
|
-
InitInnerObjects(parser, foundTagName) {
|
73
|
-
if (foundTagName == null)
|
74
|
-
return false;
|
75
|
-
switch (foundTagName) {
|
76
|
-
case XMLConstants.MG_TAG_FLDH:
|
77
|
-
this.FldsTab = new FieldsTable();
|
78
|
-
this.FldsTab.fillData(parser);
|
79
|
-
break;
|
80
|
-
case ConstInterface.MG_ATTR_KEY: {
|
81
|
-
let current = new Key(this);
|
82
|
-
current.FillData(parser);
|
83
|
-
this._keys.push(current);
|
84
|
-
break;
|
85
|
-
}
|
86
|
-
case ConstInterface.MG_TAG_RECORDS:
|
87
|
-
parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) + 1);
|
88
|
-
break;
|
89
|
-
case ConstInterface.MG_TAG_RECORDS_END:
|
90
|
-
parser.setCurrIndex2EndOfTag();
|
91
|
-
break;
|
92
|
-
case ConstInterface.MG_TAG_CACHED_TABLE_END:
|
93
|
-
parser.setCurrIndex2EndOfTag();
|
94
|
-
return false;
|
95
|
-
case ConstInterface.MG_TAG_REC: {
|
96
|
-
let current = new Record(this);
|
97
|
-
current.Initialize();
|
98
|
-
current.fillData(parser);
|
99
|
-
this._records.push(current);
|
100
|
-
break;
|
101
|
-
}
|
102
|
-
}
|
103
|
-
return true;
|
104
|
-
}
|
105
|
-
GetTableUniqueId() {
|
106
|
-
return this._tableUId;
|
107
|
-
}
|
108
|
-
GetTableCommonIdentifier() {
|
109
|
-
return this._tableIdent;
|
110
|
-
}
|
111
|
-
GetCurrSortKey() {
|
112
|
-
return this._currSortKey;
|
113
|
-
}
|
114
|
-
GetKeyById(keyId) {
|
115
|
-
for (let i = 0; i < this._keys.length; i = i + 1) {
|
116
|
-
if (this._keys.get_Item(i).GetKeyId() === keyId)
|
117
|
-
return this._keys.get_Item(i);
|
118
|
-
}
|
119
|
-
return null;
|
120
|
-
}
|
121
|
-
async Load() {
|
122
|
-
if (!this._isLoaded) {
|
123
|
-
await TableCacheManager.Instance.LoadTable(this._tableUId);
|
124
|
-
this._isLoaded = true;
|
125
|
-
}
|
126
|
-
}
|
127
|
-
async SortTable(sortKeyId, sortDir) {
|
128
|
-
if (!this._isLoaded)
|
129
|
-
await this.Load();
|
130
|
-
if (sortKeyId !== this._currSortKey || sortDir !== this._currSortDir) {
|
131
|
-
this._currSortDir = sortDir;
|
132
|
-
this._currSortKey = sortKeyId;
|
133
|
-
let recordsArr = this._records.ToArray();
|
134
|
-
HeapSort.sort(recordsArr);
|
135
|
-
if (this._currSortDir === 'D')
|
136
|
-
this.ReverseVector(recordsArr);
|
137
|
-
for (let i = 0; i < this._records.length; i = i + 1) {
|
138
|
-
this._records.set_Item(i, recordsArr[i]);
|
139
|
-
}
|
140
|
-
}
|
141
|
-
}
|
142
|
-
Fetch(loc) {
|
143
|
-
let checkLoc = loc.length > 0;
|
144
|
-
if (this._isLoaded) {
|
145
|
-
if (!checkLoc) {
|
146
|
-
return ((this._records.length !== 0) ? this._records.get_Item(0) : null);
|
147
|
-
}
|
148
|
-
for (let i = 0; i < this._records.length; i = i + 1) {
|
149
|
-
let currRec = this._records.get_Item(i);
|
150
|
-
if (TableCache.validateRec(currRec, loc)) {
|
151
|
-
return currRec;
|
152
|
-
}
|
153
|
-
}
|
154
|
-
}
|
155
|
-
return null;
|
156
|
-
}
|
157
|
-
static validateRec(currRec, rangeCond) {
|
158
|
-
let result = true;
|
159
|
-
for (let i = 0; i < rangeCond.length; i = i + 1) {
|
160
|
-
let currCnd = rangeCond.get_Item(i);
|
161
|
-
if (!currCnd.checkRange(currRec.GetFieldValue(currCnd.getCacheTableFldId()), currRec.IsNull(currCnd.getCacheTableFldId()))) {
|
162
|
-
result = false;
|
163
|
-
break;
|
164
|
-
}
|
165
|
-
}
|
166
|
-
return result;
|
167
|
-
}
|
168
|
-
ReverseVector(array) {
|
169
|
-
let right = array.length - 1;
|
170
|
-
for (let left = 0; left < Math.floor((array.length - 1) / 2); left++, right--) {
|
171
|
-
let tmp = array[left];
|
172
|
-
array[left] = array[right];
|
173
|
-
array[right] = tmp;
|
174
|
-
}
|
175
|
-
}
|
176
|
-
}
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvcnQvVGFibGVDYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEMsT0FBTyxFQUFDLGNBQWMsSUFBSSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt4RCxNQUFNLE9BQU8sVUFBVTtJQWdCckIsWUFBWSxPQUFlO1FBZm5CLFVBQUssR0FBYyxJQUFJLENBQUM7UUFDeEIsYUFBUSxHQUFpQixJQUFJLENBQUM7UUFDOUIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFFakMsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFFcEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixjQUFTLEdBQVcsSUFBSSxDQUFDO1FBTy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQU8s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QUUsRUFBRyxLQUFLLEVBQUUsRUFBRTtZQUN0RixJQUFJLEdBQUcsR0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0LCBOU3RyaW5nfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtLZXl9IGZyb20gXCIuLi9kYXRhL0tleVwiO1xyXG5pbXBvcnQge0ZpZWxkc1RhYmxlRXh0IGFzIEZpZWxkc1RhYmxlIH0gZnJvbSBcIi4uL2RhdGEvRmllbGRzVGFibGVcIjtcclxuaW1wb3J0IHtMb2dnZXIsIFhNTENvbnN0YW50cywgWG1sUGFyc2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge1J1bnRpbWVDb250ZXh0QmFzZX0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7UmVjb3JkfSBmcm9tIFwiLi4vZGF0YS9SZWNvcmRcIjtcclxuaW1wb3J0IHtIZWFwU29ydH0gZnJvbSBcIi4uL3V0aWwvSGVhcFNvcnRcIjtcclxuaW1wb3J0IHtCb3VuZGFyeX0gZnJvbSBcIi4vQm91bmRhcnlcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7IFRhYmxlQ2FjaGVNYW5hZ2VyIH0gZnJvbSBcIi4vVGFibGVDYWNoZU1hbmFnZXJcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgcmVzaWRlbnQgdGFibGUgb24gY2xpZW50XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNhY2hlIHtcclxuICBwcml2YXRlIF9rZXlzOiBMaXN0PEtleT4gPSBudWxsO1xyXG4gIHByaXZhdGUgX3JlY29yZHM6IExpc3Q8UmVjb3JkPiA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3VyclNvcnREaXI6IHN0cmluZyA9ICdcXDAnO1xyXG4gIHByaXZhdGUgX2N1cnJTb3J0S2V5OiBudW1iZXIgPSAwO1xyXG5cclxuICBGbGRzVGFiOiBGaWVsZHNUYWJsZSA9IG51bGw7XHJcblxyXG4gIHByaXZhdGUgX2lzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdGFibGVJZGVudDogc3RyaW5nID0gbnVsbDsgLy8gYSB0YWJsZSBpZGVudGlmaWVyIHRoaXMgaWQgaWYgc2hhcmUgYmV0d2VlbiBhbGwgaW5zdGFuY2VzIG9mIGEgcmVzaWRlbnQgdGFibGUgdXNlZCB0byBkZWxldGUgb2xkIGluc3RuY2VzIG9mIGEgcmVsb2FkZWQgdGFibGU7XHJcbiAgcHJpdmF0ZSBfdGFibGVVSWQ6IHN0cmluZyA9IG51bGw7IC8vIHRoZSB0YWJsZSB1bmlxdWUgaWQgdXNlZCB0byBsb2FkIHRoZSB0YWJsZSAtIGl0IGlzIGFsc28gdGhlIGlkIG9mIHRoZSBkYXRhLWlzbGFuZCBjb250YWluaW5nIHRoZSB0YWJsZSB4bWxcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb25zdHJ1Y3RzIGFuIGVtcHR5IHRhYmxlIGNhY2hlIHdpdGhvdXQgbG9hZGluZyB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKHRhYmxlSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fdGFibGVVSWQgPSB0YWJsZUlkO1xyXG4gICAgdGhpcy5fa2V5cyA9IG5ldyBMaXN0PEtleT4oKTtcclxuICAgIHRoaXMuX3JlY29yZHMgPSBuZXcgTGlzdDxSZWNvcmQ+KCk7XHJcbiAgICB0aGlzLl9pc0xvYWRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgdGFibGUgc2hhcmVkIGlkZW50aWZpZXIgd2lsbCBiZSBjYWxsZWQgZGlyZWN0bHkgYmVmb3JlIHRoZSBjb25zdHJ1Y3RvciBhbmQgYmVmb3JlIHBhcnNpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFNldFRhYmxlSWRlbnQoaWRlbnQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3RhYmxlSWRlbnQgPT09IG51bGwpXHJcbiAgICAgIHRoaXMuX3RhYmxlSWRlbnQgPSBpZGVudDtcclxuICAgIGVsc2UgaWYgKHRoaXMuX3RhYmxlSWRlbnQgIT09IGlkZW50KSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFRhYmxlQ2FjaGUuc2V0VGFibGVJZGVudCgpIGFscmVhZHkgc2V0IGFuZCB0YWJsZSBpZGVudGlmaWVyICBkb2VzIG5vdCBtYXRjaFwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZXMgdGhlIHhtbCBkYXRhIG9mIHRoZSB0YWJsZSBjYWNoZSBhcyBwYXJ0IG9mIHRoZSBsb2FkIHByb2Nlc3NcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEZpbGxEYXRhKCk6IHZvaWQge1xyXG4gICAgbGV0IHBhcnNlcjogWG1sUGFyc2VyID0gUnVudGltZUNvbnRleHRCYXNlLkluc3RhbmNlLlBhcnNlcjtcclxuICAgIHRoaXMuRmlsbEF0dHJpYnV0ZXMocGFyc2VyKTtcclxuICAgIHdoaWxlICh0aGlzLkluaXRJbm5lck9iamVjdHMocGFyc2VyLCBwYXJzZXIuZ2V0TmV4dFRhZygpKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlcyB0aGUgYXR0cmlidXRlcyBvZiB0aGUgY2FjaGVkVGFibGUgdGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIEZpbGxBdHRyaWJ1dGVzKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICBsZXQgZW5kQ29udGV4dDogbnVtYmVyID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcblxyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBwYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogc3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0NBQ0hFRF9UQUJMRSkgKyBDb25zdEludGVyZmFjZS5NR19UQUdfQ0FDSEVEX1RBQkxFLmxlbmd0aCk7XHJcblxyXG4gICAgICBsZXQgdG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCksIFhNTENvbnN0YW50cy5YTUxfQVRUUl9ERUxJTSk7XHJcblxyXG4gICAgICAvLyBwYXJzZSB0aGUgY2FjaGVkVGFibGUgYXR0cmlidXRlc1xyXG4gICAgICBmb3IgKGxldCBqOiBudW1iZXIgPSAwOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiArPSAyKSB7XHJcbiAgICAgICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKSk7XHJcbiAgICAgICAgbGV0IHZhbHVlU3RyOiBzdHJpbmcgPSAodG9rZW5zVmVjdG9yLmdldF9JdGVtKGogKyAxKSk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lEOlxyXG5cclxuICAgICAgICAgICAgLy8gdGhlIGlkIG9mIHRoZSB0YWJsZSBpcyByZWNpdmVkIGF0IHRoZSBjb25zdHJ1Y3RvciBhbmQgZG9lcyBub3QgbmVlZCB0byBiZSBwYXJzZWRcclxuICAgICAgICAgICAgLy8gaG93ZXZlciBpc3N1ZSBhIHdhcm5uaW5nIGlmIHRoZSBwYXJzZWQgdmFsdWUgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQgdmFsdWVcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlVUlkLmluZGV4T2YodmFsdWVTdHIpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3RhYmxlVUlkID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gVGFibGVDYWNoZS5maWxsQXR0cmlidXRlcygpIHRhYmxlIHVuaXF1ZSBpZCBkb2VzIG5vdCBtYXRjaFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX05BTUU6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JREVOVDpcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlSWRlbnQgIT09IHZhbHVlU3RyKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fdGFibGVJZGVudCA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFRhYmxlQ2FjaGUuZmlsbEF0dHJpYnV0ZXMoKSB0YWJsZSBpZGVudGlmaWVyIGlkIGRvZXMgbm90IG1hdGNoXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KFwiVW5yZWNvZ25pemVkIGF0dHJpYnV0ZTogJ3swfSdcIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KCsrZW5kQ29udGV4dCk7ICAvLyB0byBkZWxldGUgXCI+XCIgdG9vXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFRhYmxlQ2FjaGUuZmlsbEF0dHJpYnV0ZXMoKSBvdXQgb2Ygc3RyaW5nIGJvdW5kc1wiKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhbGxvY2F0ZXMgYW5kIGluaXRpYWxpemUgaW5uZXIgb2JqZWN0IGFjY29yZGluZyB0byB0aGUgZm91bmQgeG1sIGRhdGFcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgSW5pdElubmVyT2JqZWN0cyhwYXJzZXI6IFhtbFBhcnNlciwgZm91bmRUYWdOYW1lOiBTdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmIChmb3VuZFRhZ05hbWUgPT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHN3aXRjaCAoZm91bmRUYWdOYW1lKSB7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX1RBR19GTERIOlxyXG4gICAgICAgIHRoaXMuRmxkc1RhYiA9IG5ldyBGaWVsZHNUYWJsZSgpO1xyXG4gICAgICAgIHRoaXMuRmxkc1RhYi5maWxsRGF0YShwYXJzZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0tFWToge1xyXG4gICAgICAgIGxldCBjdXJyZW50ID0gbmV3IEtleSh0aGlzKTtcclxuICAgICAgICBjdXJyZW50LkZpbGxEYXRhKHBhcnNlcik7XHJcbiAgICAgICAgdGhpcy5fa2V5cy5wdXNoKGN1cnJlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19SRUNPUkRTOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgKyAxKTtcclxuICAgICAgICAvLyBlbmQgb2Ygb3V0ZXIgdGFkIGFuZCBpdHMgXCI+XCJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfUkVDT1JEU19FTkQ6XHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleDJFbmRPZlRhZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19DQUNIRURfVEFCTEVfRU5EOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1JFQzoge1xyXG4gICAgICAgIGxldCBjdXJyZW50ID0gbmV3IFJlY29yZCh0aGlzKTtcclxuICAgICAgICBjdXJyZW50LkluaXRpYWxpemUoKTtcclxuICAgICAgICBjdXJyZW50LmZpbGxEYXRhKHBhcnNlcik7XHJcbiAgICAgICAgdGhpcy5fcmVjb3Jkcy5wdXNoKGN1cnJlbnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB1bmlxdWUgaWQgb2YgdGhlIGN1cnJlbnQgY2FjaGVkIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRUYWJsZVVuaXF1ZUlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFibGVVSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSB0YWJsZSBjb21tb24gaWRlbnRpZmllclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0VGFibGVDb21tb25JZGVudGlmaWVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGFibGVJZGVudDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBrZXkgYnkgd2hpYyB3ZSBhcmUgY3VycmVudGx5IHNvcnRpbmcgKG9yIGN1cnJlbnRseSBzb3J0ZWQpIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0Q3VyclNvcnRLZXkoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jdXJyU29ydEtleTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBrZXkgYnkgaWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldEtleUJ5SWQoa2V5SWQ6IG51bWJlcik6IEtleSB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fa2V5cy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBpZiAodGhpcy5fa2V5cy5nZXRfSXRlbShpKS5HZXRLZXlJZCgpID09PSBrZXlJZClcclxuICAgICAgICByZXR1cm4gdGhpcy5fa2V5cy5nZXRfSXRlbShpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGxvYWRzIGEgdGFibGUgZnJvbSB0aGUgZGF0YUlzbGFuZCBhY2NvcmRpbmcgdG8gaXMgdW5pcXVlIGlkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGFzeW5jIExvYWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuX2lzTG9hZGVkKSB7XHJcbiAgICAgIGF3YWl0IFRhYmxlQ2FjaGVNYW5hZ2VyLkluc3RhbmNlLkxvYWRUYWJsZSh0aGlzLl90YWJsZVVJZCk7XHJcbiAgICAgIHRoaXMuX2lzTG9hZGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzb3J0IHRoZSBjdXJyZW50IHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzb3J0S2V5SWRcIj50aGUgaWQgb2YgdGhlIGtleSB0byBzb3J0IGJ5IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic29ydERpclwiPjwvcGFyYW0+XHJcbiAgYXN5bmMgU29ydFRhYmxlKHNvcnRLZXlJZDogbnVtYmVyLCBzb3J0RGlyOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5faXNMb2FkZWQpXHJcbiAgICAgIGF3YWl0IHRoaXMuTG9hZCgpO1xyXG5cclxuICAgIC8vIGlmIHRoZSB0YWJsZSBpcyBhbHJlYWR5IHNvcnRlZCB0aGUgd2F5IHdlIHdhbnQgaXRcclxuICAgIGlmIChzb3J0S2V5SWQgIT09IHRoaXMuX2N1cnJTb3J0S2V5IHx8IHNvcnREaXIgIT09IHRoaXMuX2N1cnJTb3J0RGlyKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJTb3J0RGlyID0gc29ydERpcjtcclxuICAgICAgdGhpcy5fY3VyclNvcnRLZXkgPSBzb3J0S2V5SWQ7XHJcblxyXG4gICAgICBsZXQgcmVjb3Jkc0FycjogUmVjb3JkW10gPSB0aGlzLl9yZWNvcmRzLlRvQXJyYXkoKTtcclxuICAgICAgSGVhcFNvcnQuc29ydChyZWNvcmRzQXJyKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9jdXJyU29ydERpciA9PT0gJ0QnKVxyXG4gICAgICAgIHRoaXMuUmV2ZXJzZVZlY3RvcihyZWNvcmRzQXJyKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9yZWNvcmRzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgdGhpcy5fcmVjb3Jkcy5zZXRfSXRlbShpLCByZWNvcmRzQXJyW2ldKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGV4ZWN1dGVzIHRoZSB0aGUgbGluayBvcGVyYXRpb24gd2UgYXNzdW1lIHRoZSB0YWJsZSBpcyBhbHJlYWR5IHNvcnRlZCBieSB0aGUgY29ycmVjdCBrZXkgYW5kIGRpcmVjdGlvblxyXG4gIC8vLyAgIHRoZSBtZXRob2QgcmV0dXJucyB0aGUgcmVxdWVzdGVkIHJlY29yZCBhY2NvcmRpbmcgdGhlIGxvY2F0ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEZldGNoKGxvYzogTGlzdDxCb3VuZGFyeT4pOiBSZWNvcmQge1xyXG5cclxuICAgIC8vIGlmIHRoZXJlIGFyZSBub3QgYW55IGxvY2F0ZSBleHByZXNzaW9uIHRoZW4gZWl0aGVyIHdlIHJldHVybiB0aGUgZmZpcnN0IHJlY29yZCB0aGF0IGFjY2VwdHNcclxuICAgIC8vIGFsIHRoZSByYW5nZSBjb25kaXRpb24gb3Igd2UgcmV0dXJuIHRoZSBmaXJzdCByZWNvcmQgaW4gdGhlIHRhYmxlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBzb3J0XHJcbiAgICBsZXQgY2hlY2tMb2M6IGJvb2xlYW4gPSBsb2MubGVuZ3RoID4gMDtcclxuXHJcbiAgICBpZiAodGhpcy5faXNMb2FkZWQpIHtcclxuICAgICAgLy8gc2hvdWxkIGJlIGxvYWRlZCBhdCBzb3J0IHRpbWUgdGhlIHRpbWUgbXVzdCBiZSBhbHJlYWR5IHNvcnRlZCBhdCB0aGlzIHN0YWdlXHJcbiAgICAgIGlmICghY2hlY2tMb2MpIHtcclxuICAgICAgICAvLyBpZiB0aGVyZSBhcmUgbm8gbG9jYXRlcyByZXR1cm4gdGhlIGZpcnN0IHJlY29yZFxyXG4gICAgICAgIHJldHVybiAoKHRoaXMuX3JlY29yZHMubGVuZ3RoICE9PSAwKSA/IHRoaXMuX3JlY29yZHMuZ2V0X0l0ZW0oMCkgOiBudWxsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gZmluZCB0aGUgZmlyc3QgcmVjb3JkIHRoYXQgYWdyZWVzIHdpdGggdGhlIGxvY2F0ZXMgYW50IHJldHVybiBpdFxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcmVjb3Jkcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIGxldCBjdXJyUmVjOiBSZWNvcmQgPSB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKGkpO1xyXG5cclxuICAgICAgICAvLyBjaGVjayBpZiB0aGlzIHJlY29yZCBhZ3JlZXMgd2l0aCBhbGwgdGhlIGxvY2F0ZSBjb25kaXRpb25zXHJcbiAgICAgICAgaWYgKFRhYmxlQ2FjaGUudmFsaWRhdGVSZWMoY3VyclJlYywgbG9jKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGN1cnJSZWM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBpZiB3ZSBnb3QgaGVyZSB0aGVuIGVpdGhlciB0aGUgdGFibGUgd2FzIG5vdCBsb2FkZWQgYW5kIHNvcnRlZCBvciB3ZSBkaWQgbm90IGZpbmQgYW55IHJlY29yZFxyXG4gICAgLy8gdGhhdCBhZ3JlZXMgd2l0aCB0aGUgbG9jYXRlIGV4cHJlc3Npb25zIC0gaW4gZWl0aGVyIGNhc2UgcmV0dXJuIG51bGxcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHZhbGlkYXRlIGEgcmVjb3JkIGRhdGEgYWdhaW5zdCBhIHNlcmllcyBvZiBsb2NhdGUgZXhwcmVzc2lvbnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgc3RhdGljIHZhbGlkYXRlUmVjKGN1cnJSZWM6IFJlY29yZCwgcmFuZ2VDb25kOiBMaXN0PEJvdW5kYXJ5Pik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLy8gZ28gb3ZlciBhbGwgdGhlIGNvbmRpdGlvbnNcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCByYW5nZUNvbmQubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IGN1cnJDbmQ6IEJvdW5kYXJ5ID0gcmFuZ2VDb25kLmdldF9JdGVtKGkpO1xyXG4gICAgICAvLyBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZmlsZWQgdGhhdCBkb2VzIG5vdCBhZ3JlZSBhbGwgdGhlIHJlY29yZCBkaWVzIG5vdCBhZ3JlZVxyXG4gICAgICBpZiAoIWN1cnJDbmQuY2hlY2tSYW5nZShjdXJyUmVjLkdldEZpZWxkVmFsdWUoY3VyckNuZC5nZXRDYWNoZVRhYmxlRmxkSWQoKSksIGN1cnJSZWMuSXNOdWxsKGN1cnJDbmQuZ2V0Q2FjaGVUYWJsZUZsZElkKCkpKSkge1xyXG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJyYXlcIj48L3BhcmFtPlxyXG4gIHByb3RlY3RlZCBSZXZlcnNlVmVjdG9yKGFycmF5OiBPYmplY3RbXSk6IHZvaWQge1xyXG4gICAgbGV0IHJpZ2h0OiBudW1iZXIgPSBhcnJheS5sZW5ndGggLSAxO1xyXG4gICAgZm9yIChsZXQgbGVmdDogbnVtYmVyID0gMDsgbGVmdCA8IE1hdGguZmxvb3IoKGFycmF5Lmxlbmd0aCAtIDEpIC8gMik7IGxlZnQrKyAsIHJpZ2h0LS0pIHtcclxuICAgICAgbGV0IHRtcDogT2JqZWN0ID0gYXJyYXlbbGVmdF07XHJcbiAgICAgIGFycmF5W2xlZnRdID0gYXJyYXlbcmlnaHRdO1xyXG4gICAgICBhcnJheVtyaWdodF0gPSB0bXA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
@@ -1,67 +0,0 @@
|
|
1
|
-
import { Misc } from '@magic-xpa/utils';
|
2
|
-
import { ApplicationException, Exception, Hashtable, List } from '@magic-xpa/mscorelib';
|
3
|
-
import { RuntimeContextBase } from '@magic-xpa/gui';
|
4
|
-
import { RemoteCommandsProcessor } from '../remote/RemoteCommandsProcessor';
|
5
|
-
export class TableCacheManager {
|
6
|
-
constructor() {
|
7
|
-
this._tables = null;
|
8
|
-
this._tables = new Hashtable();
|
9
|
-
}
|
10
|
-
GetTableById(tableUId) {
|
11
|
-
return this._tables.get_Item(tableUId);
|
12
|
-
}
|
13
|
-
TableExists(tableUId) {
|
14
|
-
let result = true;
|
15
|
-
if (this.GetTableById(tableUId) === null)
|
16
|
-
result = false;
|
17
|
-
return result;
|
18
|
-
}
|
19
|
-
InsertTable(table) {
|
20
|
-
let result = false;
|
21
|
-
if (!this.TableExists(table.GetTableUniqueId())) {
|
22
|
-
this._tables.set_Item(table.GetTableUniqueId(), table);
|
23
|
-
result = true;
|
24
|
-
}
|
25
|
-
return result;
|
26
|
-
}
|
27
|
-
async LoadTable(tableUId) {
|
28
|
-
let server = RemoteCommandsProcessor.GetInstance();
|
29
|
-
if (this.TableExists(tableUId)) {
|
30
|
-
let current = this._tables.get_Item(tableUId);
|
31
|
-
try {
|
32
|
-
let residentTableContentStr = await server.GetContent(tableUId, true);
|
33
|
-
try {
|
34
|
-
RuntimeContextBase.Instance.Parser.loadTableCacheData(residentTableContentStr);
|
35
|
-
}
|
36
|
-
catch (innerException) {
|
37
|
-
if (innerException instanceof Exception) {
|
38
|
-
throw new ApplicationException("Unable to parse resident table " + tableUId + ", due to unsupported encoding.", innerException);
|
39
|
-
}
|
40
|
-
else
|
41
|
-
throw innerException;
|
42
|
-
}
|
43
|
-
}
|
44
|
-
catch (throwable) {
|
45
|
-
if (throwable instanceof Exception) {
|
46
|
-
Misc.WriteStackTrace(throwable);
|
47
|
-
}
|
48
|
-
else
|
49
|
-
throw throwable;
|
50
|
-
}
|
51
|
-
current.FillData();
|
52
|
-
let deletedUids = new List();
|
53
|
-
let enumerator = this._tables.Values;
|
54
|
-
while (enumerator.MoveNext()) {
|
55
|
-
let tbl = enumerator.Current;
|
56
|
-
let currIdent = tbl.GetTableCommonIdentifier();
|
57
|
-
if (currIdent === current.GetTableCommonIdentifier() && tbl.GetTableUniqueId() !== tableUId)
|
58
|
-
deletedUids.push(tbl.GetTableUniqueId());
|
59
|
-
}
|
60
|
-
for (let i = 0; i < deletedUids.length; i = i + 1) {
|
61
|
-
this._tables.Remove(deletedUids.get_Item(i));
|
62
|
-
}
|
63
|
-
}
|
64
|
-
}
|
65
|
-
}
|
66
|
-
TableCacheManager.Instance = new TableCacheManager();
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDYWNoZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1RhYmxlQ2FjaGVNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQW9CLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFLNUUsTUFBTSxPQUFPLGlCQUFpQjtJQUs1QjtRQUpRLFlBQU8sR0FBa0MsSUFBSSxDQUFDO1FBS3BELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxTQUFTLEVBQXNCLENBQUM7SUFDckQsQ0FBQztJQUtELFlBQVksQ0FBQyxRQUFnQjtRQUMzQixPQUFtQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBS0QsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLElBQUksTUFBTSxHQUFZLElBQUksQ0FBQztRQUUzQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSTtZQUN0QyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWpCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFNRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsSUFBSSxNQUFNLEdBQVksS0FBSyxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNmO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQU1ELEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBZ0I7UUFDOUIsSUFBSSxNQUFNLEdBQTBCLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRzFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUU5QixJQUFJLE9BQU8sR0FBMkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdEUsSUFBSTtnQkFDRixJQUFJLHVCQUF1QixHQUFXLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzlFLElBQUk7b0JBQ0Ysa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2lCQUNoRjtnQkFDRCxPQUFPLGNBQWMsRUFBRTtvQkFDckIsSUFBSSxjQUFjLFlBQVksU0FBUyxFQUFFO3dCQUN2QyxNQUFNLElBQUksb0JBQW9CLENBQUMsaUNBQWlDLEdBQUcsUUFBUSxHQUFHLGdDQUFnQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO3FCQUNqSTs7d0JBRUMsTUFBTSxjQUFjLENBQUM7aUJBQ3hCO2FBQ0Y7WUFDRCxPQUFPLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxTQUFTLFlBQVksU0FBUyxFQUFFO29CQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqQzs7b0JBRUMsTUFBTSxTQUFTLENBQUM7YUFDbkI7WUFHRCxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFHbkIsSUFBSSxXQUFXLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7WUFDbkQsSUFBSSxVQUFVLEdBQWlDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ25FLE9BQU8sVUFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUM1QixJQUFJLEdBQUcsR0FBMkIsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDckQsSUFBSSxTQUFTLEdBQVcsR0FBRyxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ3ZELElBQUksU0FBUyxLQUFLLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLFFBQVE7b0JBQ3pGLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQzthQUM1QztZQUVELEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDOUM7U0FDRjtJQUNILENBQUM7O0FBekZNLDBCQUFRLEdBQXNCLElBQUksaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pc2MgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgQXBwbGljYXRpb25FeGNlcHRpb24sIEFycmF5X0VudW1lcmF0b3IsIEV4Y2VwdGlvbiwgSGFzaHRhYmxlLCBMaXN0IH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBSdW50aW1lQ29udGV4dEJhc2UgfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcbmltcG9ydCB7IFRhYmxlQ2FjaGUgfSBmcm9tICcuL1RhYmxlQ2FjaGUnO1xyXG5pbXBvcnQgeyBDb21tYW5kc1Byb2Nlc3NvckJhc2UgfSBmcm9tICcuLi9Db21tYW5kc1Byb2Nlc3NvckJhc2UnO1xyXG5pbXBvcnQgeyBSZW1vdGVDb21tYW5kc1Byb2Nlc3NvciB9IGZyb20gJy4uL3JlbW90ZS9SZW1vdGVDb21tYW5kc1Byb2Nlc3Nvcic7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIGhhbmRsZXMgdGhlIGxvYWRpbmcgYW5kIG1hbmFnaW5nIG9mIGFsbCBjYWNoZSB0YWJsZXMgaW4gdGhlIGNvbnRleHRcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFRhYmxlQ2FjaGVNYW5hZ2VyIHtcclxuICBwcml2YXRlIF90YWJsZXM6IEhhc2h0YWJsZTxzdHJpbmcsIFRhYmxlQ2FjaGU+ID0gbnVsbDtcclxuXHJcbiAgc3RhdGljIEluc3RhbmNlOiBUYWJsZUNhY2hlTWFuYWdlciA9IG5ldyBUYWJsZUNhY2hlTWFuYWdlcigpO1xyXG5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fdGFibGVzID0gbmV3IEhhc2h0YWJsZTxzdHJpbmcsIFRhYmxlQ2FjaGU+KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSB0YWJsZUNhY2hlIG9iamVjdCAgYWNjb3JkaW5nIHRvIGl0cyB1bmlxdWUgaWQgb3IgbnVsbCBpZiBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbWFuYWdlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0VGFibGVCeUlkKHRhYmxlVUlkOiBzdHJpbmcpOiBUYWJsZUNhY2hlIHtcclxuICAgIHJldHVybiA8VGFibGVDYWNoZT50aGlzLl90YWJsZXMuZ2V0X0l0ZW0odGFibGVVSWQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNoZWNrcyBpZiBhIGdpdmVuIHRhYmxlIGV4aXN0cyBpbiB0aGUgbWFuYWdlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgVGFibGVFeGlzdHModGFibGVVSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuR2V0VGFibGVCeUlkKHRhYmxlVUlkKSA9PT0gbnVsbClcclxuICAgICAgcmVzdWx0ID0gZmFsc2U7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbnNlcnRzIGEgdGFibGUgaW50byB0aGUgbWFuYWdlciBpcyBub3QgYWxyZWFkeSBleGlzdHNcclxuICAvLy8gICByZXR1cm5zIHRydWUgaXMgaW5zZXJ0IHN1Y2NlZWRlZCBmYWxzZSBvdGhlcndpc2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEluc2VydFRhYmxlKHRhYmxlOiBUYWJsZUNhY2hlKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKCF0aGlzLlRhYmxlRXhpc3RzKHRhYmxlLkdldFRhYmxlVW5pcXVlSWQoKSkpIHtcclxuICAgICAgdGhpcy5fdGFibGVzLnNldF9JdGVtKHRhYmxlLkdldFRhYmxlVW5pcXVlSWQoKSwgdGFibGUpO1xyXG4gICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgbG9hZHMgYSBuZXcgdGFibGUgc3RhcnQgdGhlIHRhYmxlIHBhcnNpbmcgcHJvY2Vzc1xyXG4gIC8vLyAgIGRlbGV0ZSBhbnkgb2xkIGluc3RhbmNlcyBvZiB0aGUgc2FtZSB0YWJsZSAoZXZlbiBpZiB0aGV5IG90aGVyIHVuaXF1ZSBpZHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIExvYWRUYWJsZSh0YWJsZVVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgc2VydmVyOiBDb21tYW5kc1Byb2Nlc3NvckJhc2UgPSBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpO1xyXG5cclxuICAgIC8vIHRoZSB0YWJsZSBtdXN0IGV4aXN0IGluIHRoZSBoYXNoVGFibGUgYXQgdGhpcyBzdGFnZSBlbHNlIGl0IGlzIGFuIGVycm9yXHJcbiAgICBpZiAodGhpcy5UYWJsZUV4aXN0cyh0YWJsZVVJZCkpIHtcclxuICAgICAgLy8gZ2V0IHRoZSB0YWJsZVxyXG4gICAgICBsZXQgY3VycmVudDogVGFibGVDYWNoZSA9IDxUYWJsZUNhY2hlPnRoaXMuX3RhYmxlcy5nZXRfSXRlbSh0YWJsZVVJZCk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGV0IHJlc2lkZW50VGFibGVDb250ZW50U3RyOiBzdHJpbmcgPSBhd2FpdCBzZXJ2ZXIuR2V0Q29udGVudCh0YWJsZVVJZCwgdHJ1ZSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5QYXJzZXIubG9hZFRhYmxlQ2FjaGVEYXRhKHJlc2lkZW50VGFibGVDb250ZW50U3RyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGlubmVyRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgICBpZiAoaW5uZXJFeGNlcHRpb24gaW5zdGFuY2VvZiBFeGNlcHRpb24pIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKFwiVW5hYmxlIHRvIHBhcnNlIHJlc2lkZW50IHRhYmxlIFwiICsgdGFibGVVSWQgKyBcIiwgZHVlIHRvIHVuc3VwcG9ydGVkIGVuY29kaW5nLlwiLCBpbm5lckV4Y2VwdGlvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRocm93IGlubmVyRXhjZXB0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjYXRjaCAodGhyb3dhYmxlKSB7XHJcbiAgICAgICAgaWYgKHRocm93YWJsZSBpbnN0YW5jZW9mIEV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgTWlzYy5Xcml0ZVN0YWNrVHJhY2UodGhyb3dhYmxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgdGhyb3cgdGhyb3dhYmxlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBzdGFydCBwYXJzaW5nXHJcbiAgICAgIGN1cnJlbnQuRmlsbERhdGEoKTtcclxuXHJcbiAgICAgIC8vIGRlbGV0ZSBvbGQgdGFibGVzXHJcbiAgICAgIGxldCBkZWxldGVkVWlkczogTGlzdDxzdHJpbmc+ID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgICBsZXQgZW51bWVyYXRvcjogQXJyYXlfRW51bWVyYXRvcjxUYWJsZUNhY2hlPiA9IHRoaXMuX3RhYmxlcy5WYWx1ZXM7XHJcbiAgICAgIHdoaWxlIChlbnVtZXJhdG9yLk1vdmVOZXh0KCkpIHtcclxuICAgICAgICBsZXQgdGJsOiBUYWJsZUNhY2hlID0gPFRhYmxlQ2FjaGU+ZW51bWVyYXRvci5DdXJyZW50O1xyXG4gICAgICAgIGxldCBjdXJySWRlbnQ6IHN0cmluZyA9IHRibC5HZXRUYWJsZUNvbW1vbklkZW50aWZpZXIoKTtcclxuICAgICAgICBpZiAoY3VycklkZW50ID09PSBjdXJyZW50LkdldFRhYmxlQ29tbW9uSWRlbnRpZmllcigpICYmIHRibC5HZXRUYWJsZVVuaXF1ZUlkKCkgIT09IHRhYmxlVUlkKVxyXG4gICAgICAgICAgZGVsZXRlZFVpZHMucHVzaCh0YmwuR2V0VGFibGVVbmlxdWVJZCgpKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBkZWxldGVcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IGRlbGV0ZWRVaWRzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgdGhpcy5fdGFibGVzLlJlbW92ZShkZWxldGVkVWlkcy5nZXRfSXRlbShpKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
@@ -1,53 +0,0 @@
|
|
1
|
-
import { ConstInterface } from "../ConstInterface";
|
2
|
-
export class Transaction {
|
3
|
-
constructor(task, setTransId) {
|
4
|
-
this._transId = null;
|
5
|
-
this._afterTransRetry = ConstInterface.RECOVERY_NONE;
|
6
|
-
this._transBegin = '\0';
|
7
|
-
this.Opened = false;
|
8
|
-
this.OwnerTask = null;
|
9
|
-
this.OwnerTask = task;
|
10
|
-
this._transId = setTransId;
|
11
|
-
this._transBegin = ConstInterface.TRANS_TASK_PREFIX;
|
12
|
-
}
|
13
|
-
isOwner(task) {
|
14
|
-
return task === this.OwnerTask;
|
15
|
-
}
|
16
|
-
close() {
|
17
|
-
this.Opened = false;
|
18
|
-
}
|
19
|
-
open() {
|
20
|
-
this.Opened = true;
|
21
|
-
}
|
22
|
-
isOpened() {
|
23
|
-
return this.Opened;
|
24
|
-
}
|
25
|
-
setAfterRetry(val) {
|
26
|
-
this._afterTransRetry = val;
|
27
|
-
}
|
28
|
-
getAfterRetry(recovery) {
|
29
|
-
if (arguments.length === 0) {
|
30
|
-
return this.getAfterRetry_0();
|
31
|
-
}
|
32
|
-
return this.getAfterRetry_1(recovery);
|
33
|
-
}
|
34
|
-
getAfterRetry_0() {
|
35
|
-
return this._afterTransRetry !== ConstInterface.RECOVERY_NONE;
|
36
|
-
}
|
37
|
-
getAfterRetry_1(recovery) {
|
38
|
-
return this._afterTransRetry === recovery;
|
39
|
-
}
|
40
|
-
getLevel() {
|
41
|
-
return this._transBegin;
|
42
|
-
}
|
43
|
-
setTransBegin(val) {
|
44
|
-
this._transBegin = val;
|
45
|
-
}
|
46
|
-
getTransId() {
|
47
|
-
return this._transId;
|
48
|
-
}
|
49
|
-
setOwnerTask(task) {
|
50
|
-
this.OwnerTask = task;
|
51
|
-
}
|
52
|
-
}
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxNQUFNLE9BQU8sV0FBVztJQWdCdEIsWUFBWSxJQUFjLEVBQUUsVUFBa0I7UUFmdEMsYUFBUSxHQUFXLElBQUksQ0FBQztRQUd4QixxQkFBZ0IsR0FBVyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBRXhELGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBQ25DLFdBQU0sR0FBWSxLQUFLLENBQUM7UUFDeEIsY0FBUyxHQUFTLElBQUksQ0FBQztRQVNyQixJQUFJLENBQUMsU0FBUyxHQUFTLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBUztJQUM5RCxDQUFDO0lBTUQsT0FBTyxDQUFDLElBQVU7UUFDaEIsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFLRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUtELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUtELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUlELGFBQWEsQ0FBQyxRQUFpQjtRQUM3QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFLTyxlQUFlO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixLQUFLLGNBQWMsQ0FBQyxhQUFhLENBQVM7SUFDeEUsQ0FBQztJQUtPLGVBQWUsQ0FBQyxRQUFnQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUtELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUtELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFLRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFLRCxZQUFZLENBQUMsSUFBVTtRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Rhc2t9IGZyb20gXCIuLi90YXNrcy9UYXNrXCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge1Rhc2tCYXNlfSBmcm9tIFwiLi4vdGFza3MvVGFza0Jhc2VcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiB7XHJcbiAgcHJpdmF0ZSBfdHJhbnNJZDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8gaG9sZHMgdGhlIHJlY292ZXJ5IHR5cGUgb2YgYSBmYWlsZWQgdHJhbnNhY3Rpb24gc28gd2UgY2FuIGFzayBpZiB3ZSBhcmUgYWZ0ZXIgcmV0cnkuXHJcbiAgcHJpdmF0ZSBfYWZ0ZXJUcmFuc1JldHJ5OiBzdHJpbmcgPSBDb25zdEludGVyZmFjZS5SRUNPVkVSWV9OT05FO1xyXG5cclxuICBwcml2YXRlIF90cmFuc0JlZ2luOiBzdHJpbmcgPSAnXFwwJztcclxuICBPcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBPd25lclRhc2s6IFRhc2sgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1wiPnRoZSB0YXNrIHdobyBvd25zIHRoaXMgdHJhbnNhY3Rpb24gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzZXRUcmFuc0lkXCI+PC9wYXJhbT5cclxuICBjb25zdHJ1Y3Rvcih0YXNrOiBUYXNrQmFzZSwgc2V0VHJhbnNJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLk93bmVyVGFzayA9IDxUYXNrPnRhc2s7XHJcbiAgICB0aGlzLl90cmFuc0lkID0gc2V0VHJhbnNJZDtcclxuICAgIHRoaXMuX3RyYW5zQmVnaW4gPSBDb25zdEludGVyZmFjZS5UUkFOU19UQVNLX1BSRUZJWCAvKidUJyovO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGFzayBpcyB0aGUgb3duZXIgb2YgdGhpcyB0cmFuc2FjdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrXCI+dGhlIHRhc2sgdG8gY2hlY2sgPC9wYXJhbT5cclxuICBpc093bmVyKHRhc2s6IFRhc2spOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0YXNrID09PSB0aGlzLk93bmVyVGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjbG9zZSB0aGUgdHJhbnNhY3Rpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5PcGVuZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBvcGVucyB0aGUgdHJhbnNhY3Rpb24gLSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gYW4gdXBkYXRlIG9jY3VyZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIG9wZW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLk9wZW5lZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgb3BlbmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc09wZW5lZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLk9wZW5lZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzaWduYWxscyB3aGVhdGhlciB3ZSBhcmUgbm93IGluIHRoZSBwcm9jZXNzIG9mIHJldHJ5aW5nIGEgZmFpbGVkIHRyYW5zYWN0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRBZnRlclJldHJ5KHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hZnRlclRyYW5zUmV0cnkgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBnZXRBZnRlclJldHJ5KCk6IGJvb2xlYW47XHJcbiAgZ2V0QWZ0ZXJSZXRyeShyZWNvdmVyeTogc3RyaW5nKTogYm9vbGVhbjtcclxuICBnZXRBZnRlclJldHJ5KHJlY292ZXJ5Pzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRBZnRlclJldHJ5XzAoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdldEFmdGVyUmV0cnlfMShyZWNvdmVyeSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgd2UgYXJlIGFmdGVyIGEgdHJhbnNhY3Rpb24gcmV0cnlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0QWZ0ZXJSZXRyeV8wKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyVHJhbnNSZXRyeSAhPT0gQ29uc3RJbnRlcmZhY2UuUkVDT1ZFUllfTk9ORSAvKidcdTAwMDAnKi87XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgd2UgYXJlIGFmdGVyIGEgdHJhbnNhY3Rpb24gd2l0aCByZWNvdmVyeSBSRUNPVkVSWV9SRVRSWVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBnZXRBZnRlclJldHJ5XzEocmVjb3Zlcnk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyVHJhbnNSZXRyeSA9PT0gcmVjb3Zlcnk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdHJhbnNhY3Rpb24gbGV2ZWwgKFRhc2svUmVjb3JkKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TGV2ZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc0JlZ2luO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIGxldmVsIG9mIHRoZSBUcmFuc2FjdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0VHJhbnNCZWdpbih2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHJhbnNCZWdpbiA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXRzIHRyYW5zSWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFRyYW5zSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc0lkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgT3duZXIgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0T3duZXJUYXNrKHRhc2s6IFRhc2spOiB2b2lkIHtcclxuICAgIHRoaXMuT3duZXJUYXNrID0gdGFzaztcclxuICB9XHJcbn1cclxuIl19
|
@@ -1,71 +0,0 @@
|
|
1
|
-
import { NString } from '@magic-xpa/mscorelib';
|
2
|
-
import { Logger, XMLConstants, XmlParser } from '@magic-xpa/utils';
|
3
|
-
import { ConstInterface } from '../ConstInterface';
|
4
|
-
import { Commands } from '@magic-xpa/gui';
|
5
|
-
export class UserDetails {
|
6
|
-
setIsLoggedIn(value) {
|
7
|
-
this.IsLoggedIn = value;
|
8
|
-
}
|
9
|
-
getIsLoggedIn() {
|
10
|
-
return this.IsLoggedIn;
|
11
|
-
}
|
12
|
-
setUserID(userId) {
|
13
|
-
this.UserID = userId;
|
14
|
-
if (this.UserID.length == 0 || this.UserID === NString.Empty) {
|
15
|
-
this.setIsLoggedIn(false);
|
16
|
-
}
|
17
|
-
else
|
18
|
-
this.setIsLoggedIn(true);
|
19
|
-
}
|
20
|
-
static get Instance() {
|
21
|
-
if (UserDetails._instance === null)
|
22
|
-
UserDetails._instance = new UserDetails();
|
23
|
-
return UserDetails._instance;
|
24
|
-
}
|
25
|
-
constructor() {
|
26
|
-
this.UserName = null;
|
27
|
-
this.UserID = null;
|
28
|
-
this.UserInfo = null;
|
29
|
-
this.Password = null;
|
30
|
-
this.IsLoggedIn = false;
|
31
|
-
this.UserName = NString.Empty;
|
32
|
-
this.UserInfo = NString.Empty;
|
33
|
-
this.IsLoggedIn = false;
|
34
|
-
this.setUserID(NString.Empty);
|
35
|
-
}
|
36
|
-
fillData(parser) {
|
37
|
-
let tokensVector;
|
38
|
-
let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
|
39
|
-
if (endContext !== -1 && endContext < parser.getXMLdata().length) {
|
40
|
-
let tag = parser.getXMLsubstring(endContext);
|
41
|
-
parser.add2CurrIndex(tag.indexOf(ConstInterface.MG_TAG_USER_DETAILS) + ConstInterface.MG_TAG_USER_DETAILS.length);
|
42
|
-
tokensVector = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
|
43
|
-
this.initElements(tokensVector);
|
44
|
-
parser.setCurrIndex(endContext + XMLConstants.TAG_TERM.length);
|
45
|
-
}
|
46
|
-
else
|
47
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in UserDetails.fillData(): out of bounds");
|
48
|
-
}
|
49
|
-
initElements(tokensVector) {
|
50
|
-
let attribute, valueStr;
|
51
|
-
let isSuccess = true;
|
52
|
-
let j;
|
53
|
-
for (j = 0; j < tokensVector.length; j += 2) {
|
54
|
-
attribute = tokensVector.get_Item(j);
|
55
|
-
valueStr = tokensVector.get_Item(j + 1);
|
56
|
-
switch (attribute) {
|
57
|
-
case ConstInterface.MG_TAG_IS_LOGGED_IN:
|
58
|
-
this.setIsLoggedIn(valueStr[0] === '1');
|
59
|
-
Commands.addIsLoggedIn(this.getIsLoggedIn());
|
60
|
-
break;
|
61
|
-
default:
|
62
|
-
Logger.Instance.WriteExceptionToLogWithMsg("in UserDetails.initElements(): unknown attribute: " + attribute);
|
63
|
-
isSuccess = false;
|
64
|
-
break;
|
65
|
-
}
|
66
|
-
}
|
67
|
-
return isSuccess;
|
68
|
-
}
|
69
|
-
}
|
70
|
-
UserDetails._instance = null;
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3NlY3VyaXR5L1VzZXJEZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzFDLE1BQU0sT0FBTyxXQUFXO0lBUWQsYUFBYSxDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVPLFNBQVMsQ0FBQyxNQUFlO1FBRS9CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLEtBQUssRUFBQztZQUM1RCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCOztZQUVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQ2hDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM1QyxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUdEO1FBOUJBLGFBQVEsR0FBVyxJQUFJLENBQUM7UUFDeEIsV0FBTSxHQUFXLElBQUksQ0FBQztRQUN0QixhQUFRLEdBQVcsSUFBSSxDQUFDO1FBQ3hCLGFBQVEsR0FBVyxJQUFJLENBQUM7UUFDeEIsZUFBVSxHQUFXLEtBQUssQ0FBQztRQTJCekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBS00sUUFBUSxDQUFDLE1BQWlCO1FBRS9CLElBQUksWUFBMEIsQ0FBQztRQUUvQixJQUFJLFVBQVUsR0FBVyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbkcsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFFaEUsSUFBSSxHQUFHLEdBQVcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xILFlBQVksR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEVBQUUsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3BHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDaEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNoRTs7WUFFQyxNQUFNLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLDBDQUEwQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQU9PLFlBQVksQ0FBQyxZQUEwQjtRQUM3QyxJQUFJLFNBQWlCLEVBQUUsUUFBUSxDQUFDO1FBQ2hDLElBQUksU0FBUyxHQUFZLElBQUksQ0FBQztRQUM5QixJQUFJLENBQVMsQ0FBQztRQUVkLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzNDLFNBQVMsR0FBWSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxDQUFDO1lBQy9DLFFBQVEsR0FBWSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUUsQ0FBQztZQUVsRCxRQUFRLFNBQVMsRUFBRTtnQkFDakIsS0FBSyxjQUFjLENBQUMsbUJBQW1CO29CQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDeEMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztvQkFFN0MsTUFBTTtnQkEwQlI7b0JBQ0UsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxvREFBb0QsR0FBRyxTQUFTLENBQUMsQ0FBQztvQkFDN0csU0FBUyxHQUFHLEtBQUssQ0FBQztvQkFDbEIsTUFBTTthQUNUO1NBQ0Y7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOztBQTlHYyxxQkFBUyxHQUFpQixJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXN0LCBOU3RyaW5nIH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQgeyBMb2dnZXIsIFhNTENvbnN0YW50cywgWG1sUGFyc2VyIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IENvbnN0SW50ZXJmYWNlIH0gZnJvbSAnLi4vQ29uc3RJbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBDb21tYW5kcyB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuXHJcbi8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBtYW5hZ2UgdGhlIHVzZXIgZGV0YWlscyBvbiB0aGUgY2xpZW50IHNpZGUuXHJcbi8vIFRoZSB1c2VyIGRldGFpbHMgYXJlIHNlbnQgZnJvbSB0aGUgc2VydmVyLlxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgVXNlckRldGFpbHMge1xyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZTogVXNlckRldGFpbHMgID0gbnVsbDtcclxuICBVc2VyTmFtZTogc3RyaW5nID0gbnVsbDsgIC8vIHVzZXIgbmFtZSBvYnRhaW5lZCBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgVXNlcklEOiBzdHJpbmcgPSBudWxsOyAvLyB1c2VySUQgb2J0YWluZWQgZnJvbSB0aGUgc2VydmVyXHJcbiAgVXNlckluZm86IHN0cmluZyA9IG51bGw7IC8vIHVzZXIgaW5mbyBvYnRhaW5lZCBmcm9tIHRoZSBzZXJ2ZXJcclxuICBQYXNzd29yZDogc3RyaW5nID0gbnVsbDsgLy8gUGFzc3dvcmQgb2J0YWluZWQgZnJvbSBzZXJ2ZXIuXHJcbiAgSXNMb2dnZWRJbjogYm9vbGVhbj0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgc2V0SXNMb2dnZWRJbih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5Jc0xvZ2dlZEluID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRJc0xvZ2dlZEluKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuSXNMb2dnZWRJbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXNlcklEKHVzZXJJZCA6IHN0cmluZylcclxuICB7XHJcbiAgICB0aGlzLlVzZXJJRCA9IHVzZXJJZDtcclxuICAgIGlmICggdGhpcy5Vc2VySUQubGVuZ3RoID09IDAgfHwgdGhpcy5Vc2VySUQgPT09IE5TdHJpbmcuRW1wdHkpe1xyXG4gICAgICB0aGlzLnNldElzTG9nZ2VkSW4oZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLnNldElzTG9nZ2VkSW4odHJ1ZSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogVXNlckRldGFpbHMge1xyXG4gICAgaWYgKFVzZXJEZXRhaWxzLl9pbnN0YW5jZSA9PT0gbnVsbClcclxuICAgICAgVXNlckRldGFpbHMuX2luc3RhbmNlID0gbmV3IFVzZXJEZXRhaWxzKCk7XHJcbiAgICByZXR1cm4gVXNlckRldGFpbHMuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlByaXZhdGUgQ1RPUiBhcyBwYXJ0IG9mIG1ha2luZyB0aGlzIGNsYXNzIGEgc2luZ2xldG9uLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuVXNlck5hbWUgPSBOU3RyaW5nLkVtcHR5O1xyXG4gICAgdGhpcy5Vc2VySW5mbyA9IE5TdHJpbmcuRW1wdHk7XHJcbiAgICB0aGlzLklzTG9nZ2VkSW4gPSBmYWxzZTtcclxuICAgIHRoaXMuc2V0VXNlcklEKE5TdHJpbmcuRW1wdHkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBUaGlzIGZ1bmN0aW9uIGdldHMgdGhlIHhtbCB0YWcgY29udGFpbmluZyB1c2VyIGluZm8uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIC8vbGV0IHBhcnNlcjogWG1sUGFyc2VyID0gQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5SdW50aW1lQ3R4LlBhcnNlcjtcclxuICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPjtcclxuXHJcbiAgICBsZXQgZW5kQ29udGV4dDogbnVtYmVyID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfVEVSTSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IFN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU0VSX0RFVEFJTFMpICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfREVUQUlMUy5sZW5ndGgpO1xyXG4gICAgICB0b2tlbnNWZWN0b3IgPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCksIFhNTENvbnN0YW50cy5YTUxfQVRUUl9ERUxJTSk7XHJcbiAgICAgIHRoaXMuaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3Rvcik7XHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoZW5kQ29udGV4dCArIFhNTENvbnN0YW50cy5UQUdfVEVSTS5sZW5ndGgpOyAvLyB0byBkZWxldGUgXCI+XCIgdG9vXHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFVzZXJEZXRhaWxzLmZpbGxEYXRhKCk6IG91dCBvZiBib3VuZHNcIik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0b2tlbnNWZWN0b3JcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBpbml0RWxlbWVudHModG9rZW5zVmVjdG9yOiBMaXN0PFN0cmluZz4pOiBib29sZWFuIHtcclxuICAgIGxldCBhdHRyaWJ1dGU6IFN0cmluZywgdmFsdWVTdHI7XHJcbiAgICBsZXQgaXNTdWNjZXNzOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBqOiBudW1iZXI7XHJcblxyXG4gICAgZm9yIChqID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogKz0gMikge1xyXG4gICAgICBhdHRyaWJ1dGUgPSAoPFN0cmluZz50b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaikpO1xyXG4gICAgICB2YWx1ZVN0ciA9ICg8U3RyaW5nPnRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19JU19MT0dHRURfSU46XHJcbiAgICAgICAgICB0aGlzLnNldElzTG9nZ2VkSW4odmFsdWVTdHJbMF0gPT09ICcxJyk7XHJcbiAgICAgICAgICBDb21tYW5kcy5hZGRJc0xvZ2dlZEluKHRoaXMuZ2V0SXNMb2dnZWRJbigpKTtcclxuICAgICAgICAgIC8vdGhpcy5zZXRJc0xvZ2dlZEluKFhtbFBhcnNlci5nZXRCb29sZWFuKHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU0VSTkFNRTpcclxuICAgICAgICAvLyAgIHRoaXMuVXNlck5hbWUgPSB2YWx1ZVN0cjtcclxuICAgICAgICAvLyAgIGJyZWFrO1xyXG4gICAgICAgIC8vIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9VU0VSSUQ6XHJcbiAgICAgICAgLy8gICB2YWx1ZVN0ciA9IFN0clV0aWwucnRyaW0odmFsdWVTdHIpO1xyXG4gICAgICAgIC8vICAgdGhpcy5zZXRVc2VySUQodmFsdWVTdHIpO1xyXG4gICAgICAgIC8vICAgLy9DbGllbnRNYW5hZ2VyLkluc3RhbmNlLnNldFVzZXJuYW1lKHRoaXMuVXNlcklEKTtcclxuICAgICAgICAvLyAgIGJyZWFrO1xyXG4gICAgICAgIC8vIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9VU0VSSU5GTzpcclxuICAgICAgICAvLyAgIHRoaXMuVXNlckluZm8gPSB2YWx1ZVN0cjtcclxuICAgICAgICAvLyAgIGJyZWFrO1xyXG4gICAgICAgIC8vIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1BBU1NXT1JEOlxyXG4gICAgICAgIC8vICAgdGhpcy5QYXNzd29yZCA9IHZhbHVlU3RyO1xyXG4gICAgICAgIC8vICAgbGV0IHBhc3N3b3JkRGVjb2RlZDogVWludDhBcnJheSA9IEJhc2U2NC5kZWNvZGVUb0J5dGUodGhpcy5QYXNzd29yZCk7XHJcbiAgICAgICAgLy8gICBsZXQgZW5jcnlwdGVkUGFzc3dvcmQ6IHN0cmluZyA9IEVuY29kaW5nLlVURjguR2V0U3RyaW5nKHBhc3N3b3JkRGVjb2RlZCwgMCwgcGFzc3dvcmREZWNvZGVkLmxlbmd0aCk7XHJcbiAgICAgICAgLy8gICBsZXQgZGVjcnlwdGVkUGFzc3dvcmQ6IHN0cmluZyA9IFNjcmFtYmxlci5VblNjcmFtYmxlKGVuY3J5cHRlZFBhc3N3b3JkLCAwLCBlbmNyeXB0ZWRQYXNzd29yZC5sZW5ndGggLSAxKTtcclxuICAgICAgICAvLyAgIC8vIEF0IHNlcnZlciBzaWRlIHNwYWNlcyBhcmUgYWRkZWQgYXQgdGhlIGVuZCBpZiB0aGUgbGVuZ3RoIG9mIHBhc3N3b3JkIGlzIGxlc3MgdGhhbiA0IGNoYXJhY3RlcnMuXHJcbiAgICAgICAgLy8gICAvLyBSZW1vdmUgdGhlc2UgZXh0cmEgc3BhY2VzIGJlZm9yZSBzZXR0aW5nIHRoZSBwYXNzd29yZC5cclxuICAgICAgICAvLyAgIGRlY3J5cHRlZFBhc3N3b3JkID0gU3RyVXRpbC5ydHJpbShkZWNyeXB0ZWRQYXNzd29yZCk7XHJcbiAgICAgICAgLy8gICAvLyBpZiB0aGUgcGFzc3dvcmQgaXMgZW1wdHkgc2V0IGEgcGFzc3dvcmQgY29udGFpbmluZyBvbmUgXCIgXCIsIGFzIGZvciB1c2VySWQsIHdoZXJlIGlmIG5vIHVzZXJJZFxyXG4gICAgICAgIC8vICAgLy8gdGhlbiBhIFwiIFwiIHNldCB0byB1c2VySWQuXHJcbiAgICAgICAgLy8gICBpZiAoTlN0cmluZy5Jc051bGxPckVtcHR5KGRlY3J5cHRlZFBhc3N3b3JkKSlcclxuICAgICAgICAvLyAgICAgZGVjcnlwdGVkUGFzc3dvcmQgPSBcIiBcIjtcclxuICAgICAgICAvLyAgIC8vQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5zZXRQYXNzd29yZChkZWNyeXB0ZWRQYXNzd29yZCk7XHJcbiAgICAgICAgLy8gICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gVXNlckRldGFpbHMuaW5pdEVsZW1lbnRzKCk6IHVua25vd24gYXR0cmlidXRlOiBcIiArIGF0dHJpYnV0ZSk7XHJcbiAgICAgICAgICBpc1N1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNTdWNjZXNzO1xyXG4gIH1cclxufVxyXG4iXX0=
|