@eclipse-glsp/server 1.1.0-RC05
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +642 -0
- package/README.md +8 -0
- package/browser.d.ts +16 -0
- package/browser.js +18 -0
- package/lib/browser/di/app-module.d.ts +24 -0
- package/lib/browser/di/app-module.d.ts.map +1 -0
- package/lib/browser/di/app-module.js +55 -0
- package/lib/browser/di/app-module.js.map +1 -0
- package/lib/browser/di/console-logger.d.ts +29 -0
- package/lib/browser/di/console-logger.d.ts.map +1 -0
- package/lib/browser/di/console-logger.js +81 -0
- package/lib/browser/di/console-logger.js.map +1 -0
- package/lib/browser/index.d.ts +20 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +36 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/launch/worker-server-launcher.d.ts +26 -0
- package/lib/browser/launch/worker-server-launcher.d.ts.map +1 -0
- package/lib/browser/launch/worker-server-launcher.js +65 -0
- package/lib/browser/launch/worker-server-launcher.js.map +1 -0
- package/lib/common/actions/action-dispatcher.d.ts +74 -0
- package/lib/common/actions/action-dispatcher.d.ts.map +1 -0
- package/lib/common/actions/action-dispatcher.js +128 -0
- package/lib/common/actions/action-dispatcher.js.map +1 -0
- package/lib/common/actions/action-dispatcher.spec.d.ts +2 -0
- package/lib/common/actions/action-dispatcher.spec.d.ts.map +1 -0
- package/lib/common/actions/action-dispatcher.spec.js +264 -0
- package/lib/common/actions/action-dispatcher.spec.js.map +1 -0
- package/lib/common/actions/action-handler-registry.d.ts +40 -0
- package/lib/common/actions/action-handler-registry.d.ts.map +1 -0
- package/lib/common/actions/action-handler-registry.js +65 -0
- package/lib/common/actions/action-handler-registry.js.map +1 -0
- package/lib/common/actions/action-handler-registry.spec.d.ts +2 -0
- package/lib/common/actions/action-handler-registry.spec.d.ts.map +1 -0
- package/lib/common/actions/action-handler-registry.spec.js +50 -0
- package/lib/common/actions/action-handler-registry.spec.js.map +1 -0
- package/lib/common/actions/action-handler.d.ts +55 -0
- package/lib/common/actions/action-handler.d.ts.map +1 -0
- package/lib/common/actions/action-handler.js +7 -0
- package/lib/common/actions/action-handler.js.map +1 -0
- package/lib/common/actions/client-action-handler.d.ts +30 -0
- package/lib/common/actions/client-action-handler.d.ts.map +1 -0
- package/lib/common/actions/client-action-handler.js +56 -0
- package/lib/common/actions/client-action-handler.js.map +1 -0
- package/lib/common/actions/global-action-provider.d.ts +30 -0
- package/lib/common/actions/global-action-provider.d.ts.map +1 -0
- package/lib/common/actions/global-action-provider.js +81 -0
- package/lib/common/actions/global-action-provider.js.map +1 -0
- package/lib/common/actions/global-action-provider.spec.d.ts +2 -0
- package/lib/common/actions/global-action-provider.spec.d.ts.map +1 -0
- package/lib/common/actions/global-action-provider.spec.js +70 -0
- package/lib/common/actions/global-action-provider.spec.js.map +1 -0
- package/lib/common/command/command-stack.d.ts +67 -0
- package/lib/common/command/command-stack.d.ts.map +1 -0
- package/lib/common/command/command-stack.js +117 -0
- package/lib/common/command/command-stack.js.map +1 -0
- package/lib/common/command/command-stack.spec.d.ts +2 -0
- package/lib/common/command/command-stack.spec.d.ts.map +1 -0
- package/lib/common/command/command-stack.spec.js +207 -0
- package/lib/common/command/command-stack.spec.js.map +1 -0
- package/lib/common/command/command.d.ts +63 -0
- package/lib/common/command/command.d.ts.map +1 -0
- package/lib/common/command/command.js +87 -0
- package/lib/common/command/command.js.map +1 -0
- package/lib/common/command/command.spec.d.ts +2 -0
- package/lib/common/command/command.spec.d.ts.map +1 -0
- package/lib/common/command/command.spec.js +86 -0
- package/lib/common/command/command.spec.js.map +1 -0
- package/lib/common/command/recording-command.d.ts +75 -0
- package/lib/common/command/recording-command.d.ts.map +1 -0
- package/lib/common/command/recording-command.js +99 -0
- package/lib/common/command/recording-command.js.map +1 -0
- package/lib/common/command/recording-command.spec.d.ts +17 -0
- package/lib/common/command/recording-command.spec.d.ts.map +1 -0
- package/lib/common/command/recording-command.spec.js +62 -0
- package/lib/common/command/recording-command.spec.js.map +1 -0
- package/lib/common/command/undo-redo-action-handler.d.ts +28 -0
- package/lib/common/command/undo-redo-action-handler.d.ts.map +1 -0
- package/lib/common/command/undo-redo-action-handler.js +72 -0
- package/lib/common/command/undo-redo-action-handler.js.map +1 -0
- package/lib/common/di/binding-target.d.ts +73 -0
- package/lib/common/di/binding-target.d.ts.map +1 -0
- package/lib/common/di/binding-target.js +143 -0
- package/lib/common/di/binding-target.js.map +1 -0
- package/lib/common/di/binding-target.spec.d.ts +2 -0
- package/lib/common/di/binding-target.spec.d.ts.map +1 -0
- package/lib/common/di/binding-target.spec.js +121 -0
- package/lib/common/di/binding-target.spec.js.map +1 -0
- package/lib/common/di/client-session-module.d.ts +19 -0
- package/lib/common/di/client-session-module.d.ts.map +1 -0
- package/lib/common/di/client-session-module.js +34 -0
- package/lib/common/di/client-session-module.js.map +1 -0
- package/lib/common/di/diagram-module.d.ts +130 -0
- package/lib/common/di/diagram-module.d.ts.map +1 -0
- package/lib/common/di/diagram-module.js +295 -0
- package/lib/common/di/diagram-module.js.map +1 -0
- package/lib/common/di/glsp-module.d.ts +47 -0
- package/lib/common/di/glsp-module.d.ts.map +1 -0
- package/lib/common/di/glsp-module.js +59 -0
- package/lib/common/di/glsp-module.js.map +1 -0
- package/lib/common/di/multi-binding.d.ts +41 -0
- package/lib/common/di/multi-binding.d.ts.map +1 -0
- package/lib/common/di/multi-binding.js +82 -0
- package/lib/common/di/multi-binding.js.map +1 -0
- package/lib/common/di/multi-bindings.spec.d.ts +2 -0
- package/lib/common/di/multi-bindings.spec.d.ts.map +1 -0
- package/lib/common/di/multi-bindings.spec.js +137 -0
- package/lib/common/di/multi-bindings.spec.js.map +1 -0
- package/lib/common/di/server-module.d.ts +73 -0
- package/lib/common/di/server-module.d.ts.map +1 -0
- package/lib/common/di/server-module.js +103 -0
- package/lib/common/di/server-module.js.map +1 -0
- package/lib/common/di/service-identifiers.d.ts +29 -0
- package/lib/common/di/service-identifiers.d.ts.map +1 -0
- package/lib/common/di/service-identifiers.js +14 -0
- package/lib/common/di/service-identifiers.js.map +1 -0
- package/lib/common/diagram/diagram-configuration.d.ts +89 -0
- package/lib/common/diagram/diagram-configuration.d.ts.map +1 -0
- package/lib/common/diagram/diagram-configuration.js +30 -0
- package/lib/common/diagram/diagram-configuration.js.map +1 -0
- package/lib/common/diagram/request-type-hints-action-handler.d.ts +25 -0
- package/lib/common/diagram/request-type-hints-action-handler.d.ts.map +1 -0
- package/lib/common/diagram/request-type-hints-action-handler.js +53 -0
- package/lib/common/diagram/request-type-hints-action-handler.js.map +1 -0
- package/lib/common/diagram/request-type-hints-action-handler.spec.d.ts +2 -0
- package/lib/common/diagram/request-type-hints-action-handler.spec.d.ts.map +1 -0
- package/lib/common/diagram/request-type-hints-action-handler.spec.js +57 -0
- package/lib/common/diagram/request-type-hints-action-handler.spec.js.map +1 -0
- package/lib/common/features/clipboard/request-clipboard-data-action-handler.d.ts +26 -0
- package/lib/common/features/clipboard/request-clipboard-data-action-handler.d.ts.map +1 -0
- package/lib/common/features/clipboard/request-clipboard-data-action-handler.js +61 -0
- package/lib/common/features/clipboard/request-clipboard-data-action-handler.js.map +1 -0
- package/lib/common/features/contextactions/command-palette-action-provider.d.ts +63 -0
- package/lib/common/features/contextactions/command-palette-action-provider.d.ts.map +1 -0
- package/lib/common/features/contextactions/command-palette-action-provider.js +72 -0
- package/lib/common/features/contextactions/command-palette-action-provider.js.map +1 -0
- package/lib/common/features/contextactions/context-actions-provider-registry.d.ts +12 -0
- package/lib/common/features/contextactions/context-actions-provider-registry.d.ts.map +1 -0
- package/lib/common/features/contextactions/context-actions-provider-registry.js +70 -0
- package/lib/common/features/contextactions/context-actions-provider-registry.js.map +1 -0
- package/lib/common/features/contextactions/context-actions-provider-registry.spec.d.ts +2 -0
- package/lib/common/features/contextactions/context-actions-provider-registry.spec.d.ts.map +1 -0
- package/lib/common/features/contextactions/context-actions-provider-registry.spec.js +34 -0
- package/lib/common/features/contextactions/context-actions-provider-registry.spec.js.map +1 -0
- package/lib/common/features/contextactions/context-actions-provider.d.ts +34 -0
- package/lib/common/features/contextactions/context-actions-provider.d.ts.map +1 -0
- package/lib/common/features/contextactions/context-actions-provider.js +5 -0
- package/lib/common/features/contextactions/context-actions-provider.js.map +1 -0
- package/lib/common/features/contextactions/context-menu-item-provider.d.ts +43 -0
- package/lib/common/features/contextactions/context-menu-item-provider.d.ts.map +1 -0
- package/lib/common/features/contextactions/context-menu-item-provider.js +36 -0
- package/lib/common/features/contextactions/context-menu-item-provider.js.map +1 -0
- package/lib/common/features/contextactions/request-context-actions-handler.d.ts +24 -0
- package/lib/common/features/contextactions/request-context-actions-handler.d.ts.map +1 -0
- package/lib/common/features/contextactions/request-context-actions-handler.js +53 -0
- package/lib/common/features/contextactions/request-context-actions-handler.js.map +1 -0
- package/lib/common/features/contextactions/request-context-actions-handler.spec.d.ts +2 -0
- package/lib/common/features/contextactions/request-context-actions-handler.spec.d.ts.map +1 -0
- package/lib/common/features/contextactions/request-context-actions-handler.spec.js +63 -0
- package/lib/common/features/contextactions/request-context-actions-handler.spec.js.map +1 -0
- package/lib/common/features/contextactions/tool-palette-item-provider.d.ts +50 -0
- package/lib/common/features/contextactions/tool-palette-item-provider.d.ts.map +1 -0
- package/lib/common/features/contextactions/tool-palette-item-provider.js +86 -0
- package/lib/common/features/contextactions/tool-palette-item-provider.js.map +1 -0
- package/lib/common/features/contextactions/tool-palette-item-provider.spec.d.ts +2 -0
- package/lib/common/features/contextactions/tool-palette-item-provider.spec.d.ts.map +1 -0
- package/lib/common/features/contextactions/tool-palette-item-provider.spec.js +48 -0
- package/lib/common/features/contextactions/tool-palette-item-provider.spec.js.map +1 -0
- package/lib/common/features/directediting/context-edit-validator-registry.d.ts +14 -0
- package/lib/common/features/directediting/context-edit-validator-registry.d.ts.map +1 -0
- package/lib/common/features/directediting/context-edit-validator-registry.js +57 -0
- package/lib/common/features/directediting/context-edit-validator-registry.js.map +1 -0
- package/lib/common/features/directediting/context-edit-validator-registry.spec.d.ts +2 -0
- package/lib/common/features/directediting/context-edit-validator-registry.spec.d.ts.map +1 -0
- package/lib/common/features/directediting/context-edit-validator-registry.spec.js +44 -0
- package/lib/common/features/directediting/context-edit-validator-registry.spec.js.map +1 -0
- package/lib/common/features/directediting/context-edit-validator.d.ts +25 -0
- package/lib/common/features/directediting/context-edit-validator.d.ts.map +1 -0
- package/lib/common/features/directediting/context-edit-validator.js +40 -0
- package/lib/common/features/directediting/context-edit-validator.js.map +1 -0
- package/lib/common/features/directediting/label-edit-validator.d.ts +32 -0
- package/lib/common/features/directediting/label-edit-validator.d.ts.map +1 -0
- package/lib/common/features/directediting/label-edit-validator.js +21 -0
- package/lib/common/features/directediting/label-edit-validator.js.map +1 -0
- package/lib/common/features/directediting/request-edit-validation-handler.d.ts +26 -0
- package/lib/common/features/directediting/request-edit-validation-handler.d.ts.map +1 -0
- package/lib/common/features/directediting/request-edit-validation-handler.js +61 -0
- package/lib/common/features/directediting/request-edit-validation-handler.js.map +1 -0
- package/lib/common/features/directediting/request-edit-validation-handler.spec.d.ts +2 -0
- package/lib/common/features/directediting/request-edit-validation-handler.spec.d.ts.map +1 -0
- package/lib/common/features/directediting/request-edit-validation-handler.spec.js +97 -0
- package/lib/common/features/directediting/request-edit-validation-handler.spec.js.map +1 -0
- package/lib/common/features/layout/computed-bounds-action-handler.d.ts +34 -0
- package/lib/common/features/layout/computed-bounds-action-handler.d.ts.map +1 -0
- package/lib/common/features/layout/computed-bounds-action-handler.js +55 -0
- package/lib/common/features/layout/computed-bounds-action-handler.js.map +1 -0
- package/lib/common/features/layout/layout-engine.d.ts +29 -0
- package/lib/common/features/layout/layout-engine.d.ts.map +1 -0
- package/lib/common/features/layout/layout-engine.js +20 -0
- package/lib/common/features/layout/layout-engine.js.map +1 -0
- package/lib/common/features/layout/layout-operation-handler.d.ts +37 -0
- package/lib/common/features/layout/layout-operation-handler.d.ts.map +1 -0
- package/lib/common/features/layout/layout-operation-handler.js +82 -0
- package/lib/common/features/layout/layout-operation-handler.js.map +1 -0
- package/lib/common/features/model/gmodel-factory.d.ts +39 -0
- package/lib/common/features/model/gmodel-factory.d.ts.map +1 -0
- package/lib/common/features/model/gmodel-factory.js +39 -0
- package/lib/common/features/model/gmodel-factory.js.map +1 -0
- package/lib/common/features/model/gmodel-index.d.ts +107 -0
- package/lib/common/features/model/gmodel-index.d.ts.map +1 -0
- package/lib/common/features/model/gmodel-index.js +193 -0
- package/lib/common/features/model/gmodel-index.js.map +1 -0
- package/lib/common/features/model/gmodel-serializer.d.ts +67 -0
- package/lib/common/features/model/gmodel-serializer.d.ts.map +1 -0
- package/lib/common/features/model/gmodel-serializer.js +143 -0
- package/lib/common/features/model/gmodel-serializer.js.map +1 -0
- package/lib/common/features/model/gmodel-serializer.spec.d.ts +2 -0
- package/lib/common/features/model/gmodel-serializer.spec.d.ts.map +1 -0
- package/lib/common/features/model/gmodel-serializer.spec.js +124 -0
- package/lib/common/features/model/gmodel-serializer.spec.js.map +1 -0
- package/lib/common/features/model/model-state.d.ts +51 -0
- package/lib/common/features/model/model-state.d.ts.map +1 -0
- package/lib/common/features/model/model-state.js +74 -0
- package/lib/common/features/model/model-state.js.map +1 -0
- package/lib/common/features/model/model-submission-handler.d.ts +58 -0
- package/lib/common/features/model/model-submission-handler.d.ts.map +1 -0
- package/lib/common/features/model/model-submission-handler.js +102 -0
- package/lib/common/features/model/model-submission-handler.js.map +1 -0
- package/lib/common/features/model/request-model-action-handler.d.ts +37 -0
- package/lib/common/features/model/request-model-action-handler.d.ts.map +1 -0
- package/lib/common/features/model/request-model-action-handler.js +83 -0
- package/lib/common/features/model/request-model-action-handler.js.map +1 -0
- package/lib/common/features/model/save-model-action-handler.d.ts +26 -0
- package/lib/common/features/model/save-model-action-handler.d.ts.map +1 -0
- package/lib/common/features/model/save-model-action-handler.js +54 -0
- package/lib/common/features/model/save-model-action-handler.js.map +1 -0
- package/lib/common/features/model/source-model-storage.d.ts +47 -0
- package/lib/common/features/model/source-model-storage.d.ts.map +1 -0
- package/lib/common/features/model/source-model-storage.js +5 -0
- package/lib/common/features/model/source-model-storage.js.map +1 -0
- package/lib/common/features/navigation/json-opener-options.d.ts +36 -0
- package/lib/common/features/navigation/json-opener-options.d.ts.map +1 -0
- package/lib/common/features/navigation/json-opener-options.js +60 -0
- package/lib/common/features/navigation/json-opener-options.js.map +1 -0
- package/lib/common/features/navigation/navigation-target-provider-registry.d.ts +12 -0
- package/lib/common/features/navigation/navigation-target-provider-registry.d.ts.map +1 -0
- package/lib/common/features/navigation/navigation-target-provider-registry.js +47 -0
- package/lib/common/features/navigation/navigation-target-provider-registry.js.map +1 -0
- package/lib/common/features/navigation/navigation-target-provider.d.ts +48 -0
- package/lib/common/features/navigation/navigation-target-provider.d.ts.map +1 -0
- package/lib/common/features/navigation/navigation-target-provider.js +5 -0
- package/lib/common/features/navigation/navigation-target-provider.js.map +1 -0
- package/lib/common/features/navigation/navigation-target-resolution.d.ts +23 -0
- package/lib/common/features/navigation/navigation-target-resolution.d.ts.map +1 -0
- package/lib/common/features/navigation/navigation-target-resolution.js +12 -0
- package/lib/common/features/navigation/navigation-target-resolution.js.map +1 -0
- package/lib/common/features/navigation/navigation-target-resolver.d.ts +31 -0
- package/lib/common/features/navigation/navigation-target-resolver.d.ts.map +1 -0
- package/lib/common/features/navigation/navigation-target-resolver.js +49 -0
- package/lib/common/features/navigation/navigation-target-resolver.js.map +1 -0
- package/lib/common/features/navigation/request-navigation-targets-action-handler.d.ts +24 -0
- package/lib/common/features/navigation/request-navigation-targets-action-handler.d.ts.map +1 -0
- package/lib/common/features/navigation/request-navigation-targets-action-handler.js +55 -0
- package/lib/common/features/navigation/request-navigation-targets-action-handler.js.map +1 -0
- package/lib/common/features/navigation/resolve-navigation-targets-action-handler.d.ts +26 -0
- package/lib/common/features/navigation/resolve-navigation-targets-action-handler.d.ts.map +1 -0
- package/lib/common/features/navigation/resolve-navigation-targets-action-handler.js +59 -0
- package/lib/common/features/navigation/resolve-navigation-targets-action-handler.js.map +1 -0
- package/lib/common/features/popup/popup-model-factory.d.ts +36 -0
- package/lib/common/features/popup/popup-model-factory.d.ts.map +1 -0
- package/lib/common/features/popup/popup-model-factory.js +20 -0
- package/lib/common/features/popup/popup-model-factory.js.map +1 -0
- package/lib/common/features/popup/request-popup-model-action-handler.d.ts +31 -0
- package/lib/common/features/popup/request-popup-model-action-handler.d.ts.map +1 -0
- package/lib/common/features/popup/request-popup-model-action-handler.js +77 -0
- package/lib/common/features/popup/request-popup-model-action-handler.js.map +1 -0
- package/lib/common/features/validation/model-validator.d.ts +33 -0
- package/lib/common/features/validation/model-validator.d.ts.map +1 -0
- package/lib/common/features/validation/model-validator.js +5 -0
- package/lib/common/features/validation/model-validator.js.map +1 -0
- package/lib/common/features/validation/request-markers-handler.d.ts +11 -0
- package/lib/common/features/validation/request-markers-handler.d.ts.map +1 -0
- package/lib/common/features/validation/request-markers-handler.js +70 -0
- package/lib/common/features/validation/request-markers-handler.js.map +1 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.d.ts +8 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.js +46 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.js.map +1 -0
- package/lib/common/gmodel/change-bounds-operation-handler.d.ts +13 -0
- package/lib/common/gmodel/change-bounds-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/change-bounds-operation-handler.js +71 -0
- package/lib/common/gmodel/change-bounds-operation-handler.js.map +1 -0
- package/lib/common/gmodel/change-routing-points-operation-handler.d.ts +24 -0
- package/lib/common/gmodel/change-routing-points-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/change-routing-points-operation-handler.js +50 -0
- package/lib/common/gmodel/change-routing-points-operation-handler.js.map +1 -0
- package/lib/common/gmodel/cut-operation-handler.d.ts +26 -0
- package/lib/common/gmodel/cut-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/cut-operation-handler.js +55 -0
- package/lib/common/gmodel/cut-operation-handler.js.map +1 -0
- package/lib/common/gmodel/delete-operation-handler.d.ts +32 -0
- package/lib/common/gmodel/delete-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/delete-operation-handler.js +119 -0
- package/lib/common/gmodel/delete-operation-handler.js.map +1 -0
- package/lib/common/gmodel/gmodel-create-edge-operation-handler.d.ts +35 -0
- package/lib/common/gmodel/gmodel-create-edge-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/gmodel-create-edge-operation-handler.js +64 -0
- package/lib/common/gmodel/gmodel-create-edge-operation-handler.js.map +1 -0
- package/lib/common/gmodel/gmodel-create-node-operation-handler.d.ts +58 -0
- package/lib/common/gmodel/gmodel-create-node-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/gmodel-create-node-operation-handler.js +100 -0
- package/lib/common/gmodel/gmodel-create-node-operation-handler.js.map +1 -0
- package/lib/common/gmodel/gmodel-diagram-module.d.ts +31 -0
- package/lib/common/gmodel/gmodel-diagram-module.d.ts.map +1 -0
- package/lib/common/gmodel/gmodel-diagram-module.js +80 -0
- package/lib/common/gmodel/gmodel-diagram-module.js.map +1 -0
- package/lib/common/gmodel/gmodel-operation-handler.d.ts +23 -0
- package/lib/common/gmodel/gmodel-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/gmodel-operation-handler.js +43 -0
- package/lib/common/gmodel/gmodel-operation-handler.js.map +1 -0
- package/lib/common/gmodel/index.d.ts +27 -0
- package/lib/common/gmodel/index.d.ts.map +1 -0
- package/lib/common/gmodel/index.js +43 -0
- package/lib/common/gmodel/index.js.map +1 -0
- package/lib/common/gmodel/paste-operation-handler.d.ts +36 -0
- package/lib/common/gmodel/paste-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/paste-operation-handler.js +136 -0
- package/lib/common/gmodel/paste-operation-handler.js.map +1 -0
- package/lib/common/gmodel/reconnect-edge-operation-handler.d.ts +9 -0
- package/lib/common/gmodel/reconnect-edge-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/reconnect-edge-operation-handler.js +64 -0
- package/lib/common/gmodel/reconnect-edge-operation-handler.js.map +1 -0
- package/lib/common/index.d.ts +89 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +105 -0
- package/lib/common/index.js.map +1 -0
- package/lib/common/launch/glsp-server-launcher.d.ts +34 -0
- package/lib/common/launch/glsp-server-launcher.d.ts.map +1 -0
- package/lib/common/launch/glsp-server-launcher.js +64 -0
- package/lib/common/launch/glsp-server-launcher.js.map +1 -0
- package/lib/common/operations/compound-operation-handler.d.ts +25 -0
- package/lib/common/operations/compound-operation-handler.d.ts.map +1 -0
- package/lib/common/operations/compound-operation-handler.js +82 -0
- package/lib/common/operations/compound-operation-handler.js.map +1 -0
- package/lib/common/operations/create-operation-handler.d.ts +32 -0
- package/lib/common/operations/create-operation-handler.d.ts.map +1 -0
- package/lib/common/operations/create-operation-handler.js +31 -0
- package/lib/common/operations/create-operation-handler.js.map +1 -0
- package/lib/common/operations/operation-action-handler.d.ts +42 -0
- package/lib/common/operations/operation-action-handler.d.ts.map +1 -0
- package/lib/common/operations/operation-action-handler.js +109 -0
- package/lib/common/operations/operation-action-handler.js.map +1 -0
- package/lib/common/operations/operation-handler-registry.d.ts +38 -0
- package/lib/common/operations/operation-handler-registry.d.ts.map +1 -0
- package/lib/common/operations/operation-handler-registry.js +87 -0
- package/lib/common/operations/operation-handler-registry.js.map +1 -0
- package/lib/common/operations/operation-handler-registry.spec.d.ts +2 -0
- package/lib/common/operations/operation-handler-registry.spec.d.ts.map +1 -0
- package/lib/common/operations/operation-handler-registry.spec.js +50 -0
- package/lib/common/operations/operation-handler-registry.spec.js.map +1 -0
- package/lib/common/operations/operation-handler.d.ts +67 -0
- package/lib/common/operations/operation-handler.d.ts.map +1 -0
- package/lib/common/operations/operation-handler.js +56 -0
- package/lib/common/operations/operation-handler.js.map +1 -0
- package/lib/common/protocol/glsp-client-proxy.d.ts +45 -0
- package/lib/common/protocol/glsp-client-proxy.d.ts.map +1 -0
- package/lib/common/protocol/glsp-client-proxy.js +53 -0
- package/lib/common/protocol/glsp-client-proxy.js.map +1 -0
- package/lib/common/protocol/glsp-server-listener.d.ts +37 -0
- package/lib/common/protocol/glsp-server-listener.d.ts.map +1 -0
- package/lib/common/protocol/glsp-server-listener.js +5 -0
- package/lib/common/protocol/glsp-server-listener.js.map +1 -0
- package/lib/common/protocol/glsp-server.d.ts +150 -0
- package/lib/common/protocol/glsp-server.d.ts.map +1 -0
- package/lib/common/protocol/glsp-server.js +188 -0
- package/lib/common/protocol/glsp-server.js.map +1 -0
- package/lib/common/protocol/glsp-server.spec.d.ts +2 -0
- package/lib/common/protocol/glsp-server.spec.d.ts.map +1 -0
- package/lib/common/protocol/glsp-server.spec.js +119 -0
- package/lib/common/protocol/glsp-server.spec.js.map +1 -0
- package/lib/common/session/client-session-factory.d.ts +42 -0
- package/lib/common/session/client-session-factory.d.ts.map +1 -0
- package/lib/common/session/client-session-factory.js +54 -0
- package/lib/common/session/client-session-factory.js.map +1 -0
- package/lib/common/session/client-session-factory.spec.d.ts +2 -0
- package/lib/common/session/client-session-factory.spec.d.ts.map +1 -0
- package/lib/common/session/client-session-factory.spec.js +56 -0
- package/lib/common/session/client-session-factory.spec.js.map +1 -0
- package/lib/common/session/client-session-initializer.d.ts +26 -0
- package/lib/common/session/client-session-initializer.d.ts.map +1 -0
- package/lib/common/session/client-session-initializer.js +5 -0
- package/lib/common/session/client-session-initializer.js.map +1 -0
- package/lib/common/session/client-session-listener.d.ts +40 -0
- package/lib/common/session/client-session-listener.d.ts.map +1 -0
- package/lib/common/session/client-session-listener.js +3 -0
- package/lib/common/session/client-session-listener.js.map +1 -0
- package/lib/common/session/client-session-manager.d.ts +102 -0
- package/lib/common/session/client-session-manager.d.ts.map +1 -0
- package/lib/common/session/client-session-manager.js +116 -0
- package/lib/common/session/client-session-manager.js.map +1 -0
- package/lib/common/session/client-session-manager.spec.d.ts +2 -0
- package/lib/common/session/client-session-manager.spec.d.ts.map +1 -0
- package/lib/common/session/client-session-manager.spec.js +74 -0
- package/lib/common/session/client-session-manager.spec.js.map +1 -0
- package/lib/common/session/client-session.d.ts +52 -0
- package/lib/common/session/client-session.d.ts.map +1 -0
- package/lib/common/session/client-session.js +34 -0
- package/lib/common/session/client-session.js.map +1 -0
- package/lib/common/test/mock-util.d.ts +117 -0
- package/lib/common/test/mock-util.d.ts.map +1 -0
- package/lib/common/test/mock-util.js +194 -0
- package/lib/common/test/mock-util.js.map +1 -0
- package/lib/common/utils/args-util.d.ts +38 -0
- package/lib/common/utils/args-util.d.ts.map +1 -0
- package/lib/common/utils/args-util.js +81 -0
- package/lib/common/utils/args-util.js.map +1 -0
- package/lib/common/utils/client-options-util.d.ts +20 -0
- package/lib/common/utils/client-options-util.d.ts.map +1 -0
- package/lib/common/utils/client-options-util.js +26 -0
- package/lib/common/utils/client-options-util.js.map +1 -0
- package/lib/common/utils/glsp-server-error.d.ts +21 -0
- package/lib/common/utils/glsp-server-error.d.ts.map +1 -0
- package/lib/common/utils/glsp-server-error.js +33 -0
- package/lib/common/utils/glsp-server-error.js.map +1 -0
- package/lib/common/utils/layout-util.d.ts +74 -0
- package/lib/common/utils/layout-util.d.ts.map +1 -0
- package/lib/common/utils/layout-util.js +166 -0
- package/lib/common/utils/layout-util.js.map +1 -0
- package/lib/common/utils/logger.d.ts +27 -0
- package/lib/common/utils/logger.d.ts.map +1 -0
- package/lib/common/utils/logger.js +67 -0
- package/lib/common/utils/logger.js.map +1 -0
- package/lib/common/utils/promise-queue.d.ts +48 -0
- package/lib/common/utils/promise-queue.d.ts.map +1 -0
- package/lib/common/utils/promise-queue.js +93 -0
- package/lib/common/utils/promise-queue.js.map +1 -0
- package/lib/common/utils/promise-queue.spec.d.ts +2 -0
- package/lib/common/utils/promise-queue.spec.d.ts.map +1 -0
- package/lib/common/utils/promise-queue.spec.js +117 -0
- package/lib/common/utils/promise-queue.spec.js.map +1 -0
- package/lib/common/utils/registry.d.ts +73 -0
- package/lib/common/utils/registry.d.ts.map +1 -0
- package/lib/common/utils/registry.js +160 -0
- package/lib/common/utils/registry.js.map +1 -0
- package/lib/common/utils/registry.spec.d.ts +2 -0
- package/lib/common/utils/registry.spec.d.ts.map +1 -0
- package/lib/common/utils/registry.spec.js +199 -0
- package/lib/common/utils/registry.spec.js.map +1 -0
- package/lib/node/abstract-json-model-storage.d.ts +45 -0
- package/lib/node/abstract-json-model-storage.d.ts.map +1 -0
- package/lib/node/abstract-json-model-storage.js +103 -0
- package/lib/node/abstract-json-model-storage.js.map +1 -0
- package/lib/node/di/app-module.d.ts +36 -0
- package/lib/node/di/app-module.d.ts.map +1 -0
- package/lib/node/di/app-module.js +91 -0
- package/lib/node/di/app-module.js.map +1 -0
- package/lib/node/di/winston-logger.d.ts +32 -0
- package/lib/node/di/winston-logger.d.ts.map +1 -0
- package/lib/node/di/winston-logger.js +57 -0
- package/lib/node/di/winston-logger.js.map +1 -0
- package/lib/node/gmodel/gmodel-storage.d.ts +34 -0
- package/lib/node/gmodel/gmodel-storage.d.ts.map +1 -0
- package/lib/node/gmodel/gmodel-storage.js +68 -0
- package/lib/node/gmodel/gmodel-storage.js.map +1 -0
- package/lib/node/index.d.ts +24 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/index.js +40 -0
- package/lib/node/index.js.map +1 -0
- package/lib/node/launch/cli-parser.d.ts +34 -0
- package/lib/node/launch/cli-parser.d.ts.map +1 -0
- package/lib/node/launch/cli-parser.js +71 -0
- package/lib/node/launch/cli-parser.js.map +1 -0
- package/lib/node/launch/cli-parser.spec.d.ts +2 -0
- package/lib/node/launch/cli-parser.spec.d.ts.map +1 -0
- package/lib/node/launch/cli-parser.spec.js +56 -0
- package/lib/node/launch/cli-parser.spec.js.map +1 -0
- package/lib/node/launch/socket-cli-parser.d.ts +9 -0
- package/lib/node/launch/socket-cli-parser.d.ts.map +1 -0
- package/lib/node/launch/socket-cli-parser.js +43 -0
- package/lib/node/launch/socket-cli-parser.js.map +1 -0
- package/lib/node/launch/socket-cli-parser.spec.d.ts +2 -0
- package/lib/node/launch/socket-cli-parser.spec.d.ts.map +1 -0
- package/lib/node/launch/socket-cli-parser.spec.js +66 -0
- package/lib/node/launch/socket-cli-parser.spec.js.map +1 -0
- package/lib/node/launch/socket-server-launcher.d.ts +34 -0
- package/lib/node/launch/socket-server-launcher.d.ts.map +1 -0
- package/lib/node/launch/socket-server-launcher.js +104 -0
- package/lib/node/launch/socket-server-launcher.js.map +1 -0
- package/lib/node/launch/socket-server-launcher.spec.d.ts +17 -0
- package/lib/node/launch/socket-server-launcher.spec.d.ts.map +1 -0
- package/lib/node/launch/socket-server-launcher.spec.js +70 -0
- package/lib/node/launch/socket-server-launcher.spec.js.map +1 -0
- package/node.d.ts +16 -0
- package/node.js +18 -0
- package/package.json +77 -0
- package/src/browser/di/app-module.ts +55 -0
- package/src/browser/di/console-logger.ts +71 -0
- package/src/browser/index.ts +19 -0
- package/src/browser/launch/worker-server-launcher.ts +58 -0
- package/src/common/actions/action-dispatcher.spec.ts +290 -0
- package/src/common/actions/action-dispatcher.ts +152 -0
- package/src/common/actions/action-handler-registry.spec.ts +52 -0
- package/src/common/actions/action-handler-registry.ts +60 -0
- package/src/common/actions/action-handler.ts +62 -0
- package/src/common/actions/client-action-handler.ts +50 -0
- package/src/common/actions/global-action-provider.spec.ts +79 -0
- package/src/common/actions/global-action-provider.ts +72 -0
- package/src/common/command/command-stack.spec.ts +239 -0
- package/src/common/command/command-stack.ts +159 -0
- package/src/common/command/command.spec.ts +93 -0
- package/src/common/command/command.ts +124 -0
- package/src/common/command/recording-command.spec.ts +74 -0
- package/src/common/command/recording-command.ts +119 -0
- package/src/common/command/undo-redo-action-handler.ts +57 -0
- package/src/common/di/binding-target.spec.ts +147 -0
- package/src/common/di/binding-target.ts +188 -0
- package/src/common/di/client-session-module.ts +29 -0
- package/src/common/di/diagram-module.ts +410 -0
- package/src/common/di/glsp-module.ts +66 -0
- package/src/common/di/multi-binding.ts +89 -0
- package/src/common/di/multi-bindings.spec.ts +133 -0
- package/src/common/di/server-module.ts +131 -0
- package/src/common/di/service-identifiers.ts +39 -0
- package/src/common/diagram/diagram-configuration.ts +97 -0
- package/src/common/diagram/request-type-hints-action-handler.spec.ts +59 -0
- package/src/common/diagram/request-type-hints-action-handler.ts +36 -0
- package/src/common/features/clipboard/request-clipboard-data-action-handler.ts +51 -0
- package/src/common/features/contextactions/command-palette-action-provider.ts +94 -0
- package/src/common/features/contextactions/context-actions-provider-registry.spec.ts +69 -0
- package/src/common/features/contextactions/context-actions-provider-registry.ts +47 -0
- package/src/common/features/contextactions/context-actions-provider.ts +36 -0
- package/src/common/features/contextactions/context-menu-item-provider.ts +52 -0
- package/src/common/features/contextactions/request-context-actions-handler.spec.ts +75 -0
- package/src/common/features/contextactions/request-context-actions-handler.ts +37 -0
- package/src/common/features/contextactions/tool-palette-item-provider.spec.ts +46 -0
- package/src/common/features/contextactions/tool-palette-item-provider.ts +88 -0
- package/src/common/features/directediting/context-edit-validator-registry.spec.ts +54 -0
- package/src/common/features/directediting/context-edit-validator-registry.ts +43 -0
- package/src/common/features/directediting/context-edit-validator.ts +55 -0
- package/src/common/features/directediting/label-edit-validator.ts +35 -0
- package/src/common/features/directediting/request-edit-validation-handler.spec.ts +131 -0
- package/src/common/features/directediting/request-edit-validation-handler.ts +43 -0
- package/src/common/features/layout/computed-bounds-action-handler.ts +56 -0
- package/src/common/features/layout/layout-engine.ts +31 -0
- package/src/common/features/layout/layout-operation-handler.ts +62 -0
- package/src/common/features/model/gmodel-factory.ts +60 -0
- package/src/common/features/model/gmodel-index.ts +195 -0
- package/src/common/features/model/gmodel-serializer.spec.ts +141 -0
- package/src/common/features/model/gmodel-serializer.ts +175 -0
- package/src/common/features/model/model-state.ts +98 -0
- package/src/common/features/model/model-submission-handler.ts +110 -0
- package/src/common/features/model/request-model-action-handler.ts +67 -0
- package/src/common/features/model/save-model-action-handler.ts +37 -0
- package/src/common/features/model/source-model-storage.ts +49 -0
- package/src/common/features/navigation/json-opener-options.ts +69 -0
- package/src/common/features/navigation/navigation-target-provider-registry.ts +36 -0
- package/src/common/features/navigation/navigation-target-provider.ts +50 -0
- package/src/common/features/navigation/navigation-target-resolution.ts +22 -0
- package/src/common/features/navigation/navigation-target-resolver.ts +61 -0
- package/src/common/features/navigation/request-navigation-targets-action-handler.ts +39 -0
- package/src/common/features/navigation/resolve-navigation-targets-action-handler.ts +42 -0
- package/src/common/features/popup/popup-model-factory.ts +38 -0
- package/src/common/features/popup/request-popup-model-action-handler.ts +60 -0
- package/src/common/features/validation/model-validator.ts +34 -0
- package/src/common/features/validation/request-markers-handler.ts +51 -0
- package/src/common/gmodel/README.md +7 -0
- package/src/common/gmodel/apply-label-edit-operation-handler.ts +36 -0
- package/src/common/gmodel/change-bounds-operation-handler.ts +62 -0
- package/src/common/gmodel/change-routing-points-operation-handler.ts +40 -0
- package/src/common/gmodel/cut-operation-handler.ts +39 -0
- package/src/common/gmodel/delete-operation-handler.ts +121 -0
- package/src/common/gmodel/gmodel-create-edge-operation-handler.ts +64 -0
- package/src/common/gmodel/gmodel-create-node-operation-handler.ts +95 -0
- package/src/common/gmodel/gmodel-diagram-module.ts +76 -0
- package/src/common/gmodel/gmodel-operation-handler.ts +31 -0
- package/src/common/gmodel/index.ts +27 -0
- package/src/common/gmodel/paste-operation-handler.ts +127 -0
- package/src/common/gmodel/reconnect-edge-operation-handler.ts +56 -0
- package/src/common/index.ts +89 -0
- package/src/common/launch/glsp-server-launcher.ts +70 -0
- package/src/common/operations/compound-operation-handler.ts +40 -0
- package/src/common/operations/create-operation-handler.ts +49 -0
- package/src/common/operations/operation-action-handler.ts +93 -0
- package/src/common/operations/operation-handler-registry.spec.ts +50 -0
- package/src/common/operations/operation-handler-registry.ts +66 -0
- package/src/common/operations/operation-handler.ts +82 -0
- package/src/common/protocol/glsp-client-proxy.ts +65 -0
- package/src/common/protocol/glsp-server-listener.ts +39 -0
- package/src/common/protocol/glsp-server.spec.ts +150 -0
- package/src/common/protocol/glsp-server.ts +320 -0
- package/src/common/session/client-session-factory.spec.ts +60 -0
- package/src/common/session/client-session-factory.ts +70 -0
- package/src/common/session/client-session-initializer.ts +27 -0
- package/src/common/session/client-session-listener.ts +41 -0
- package/src/common/session/client-session-manager.spec.ts +82 -0
- package/src/common/session/client-session-manager.ts +182 -0
- package/src/common/session/client-session.ts +62 -0
- package/src/common/test/mock-util.ts +241 -0
- package/src/common/utils/args-util.ts +98 -0
- package/src/common/utils/client-options-util.ts +22 -0
- package/src/common/utils/glsp-server-error.ts +27 -0
- package/src/common/utils/layout-util.ts +164 -0
- package/src/common/utils/logger.ts +72 -0
- package/src/common/utils/promise-queue.spec.ts +138 -0
- package/src/common/utils/promise-queue.ts +103 -0
- package/src/common/utils/registry.spec.ts +223 -0
- package/src/common/utils/registry.ts +154 -0
- package/src/node/abstract-json-model-storage.ts +114 -0
- package/src/node/di/app-module.ts +102 -0
- package/src/node/di/winston-logger.ts +76 -0
- package/src/node/gmodel/gmodel-storage.ts +53 -0
- package/src/node/index.ts +23 -0
- package/src/node/launch/cli-parser.spec.ts +61 -0
- package/src/node/launch/cli-parser.ts +86 -0
- package/src/node/launch/socket-cli-parser.spec.ts +73 -0
- package/src/node/launch/socket-cli-parser.ts +52 -0
- package/src/node/launch/socket-server-launcher.spec.ts +68 -0
- package/src/node/launch/socket-server-launcher.ts +90 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import {
|
|
17
|
+
ActionMessage,
|
|
18
|
+
Args,
|
|
19
|
+
DisposeClientSessionParameters,
|
|
20
|
+
distinctAdd,
|
|
21
|
+
InitializeClientSessionParameters,
|
|
22
|
+
InitializeParameters,
|
|
23
|
+
InitializeResult,
|
|
24
|
+
JsonrpcGLSPClient,
|
|
25
|
+
MaybePromise,
|
|
26
|
+
remove,
|
|
27
|
+
ServerActions,
|
|
28
|
+
ServerMessageAction
|
|
29
|
+
} from '@eclipse-glsp/protocol';
|
|
30
|
+
import { inject, injectable, multiInject, optional } from 'inversify';
|
|
31
|
+
import * as jsonrpc from 'vscode-jsonrpc';
|
|
32
|
+
import { MessageConnection } from 'vscode-jsonrpc';
|
|
33
|
+
import { GlobalActionProvider } from '../actions/global-action-provider';
|
|
34
|
+
import { ClientSession } from '../session/client-session';
|
|
35
|
+
import { ClientSessionManager } from '../session/client-session-manager';
|
|
36
|
+
import { GLSPServerError } from '../utils/glsp-server-error';
|
|
37
|
+
import { Logger } from '../utils/logger';
|
|
38
|
+
import { JsonRpcGLSPClientProxy } from './glsp-client-proxy';
|
|
39
|
+
import { GLSPServerListener } from './glsp-server-listener';
|
|
40
|
+
|
|
41
|
+
export const GLSPServer = Symbol('GLSPServer');
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Interface for implementations of a server component using json-rpc for client-server communication.
|
|
45
|
+
* Based on the specification of the Graphical Language Server Protocol:
|
|
46
|
+
* https://github.com/eclipse-glsp/glsp/blob/master/PROTOCOL.md
|
|
47
|
+
*/
|
|
48
|
+
export interface GLSPServer {
|
|
49
|
+
/**
|
|
50
|
+
*
|
|
51
|
+
* The `initialize` request has to be the first request from the client to the server. Until the server has responded
|
|
52
|
+
* with an {@link InitializeResult} no other request or notification can be handled and is expected to throw an
|
|
53
|
+
* error. A client is uniquely identified by an `applicationId` and has to specify on which `protocolVersion` it is
|
|
54
|
+
* based on. In addition, custom arguments can be provided in the `args` map to allow for custom initialization
|
|
55
|
+
* behavior on the server.
|
|
56
|
+
*
|
|
57
|
+
* After successfully initialization all {@link GLSPServerListener}s are notified via the
|
|
58
|
+
* {@link GLSPServerListener.serverInitialized} method.
|
|
59
|
+
*
|
|
60
|
+
* @param params the {@link InitializeParameters}.
|
|
61
|
+
* @returns A promise of the {@link InitializeResult} .
|
|
62
|
+
*
|
|
63
|
+
* @throws {@link Error} Subsequent initialize requests return the {@link InitializeResult} of the initial request
|
|
64
|
+
* if the given application id and protocol version are matching, otherwise the promise rejects with an error.
|
|
65
|
+
*
|
|
66
|
+
*/
|
|
67
|
+
initialize(params: InitializeParameters): Promise<InitializeResult>;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* The `initializeClientSession` request is sent to the server whenever a new graphical representation (diagram) is
|
|
71
|
+
* created. Each individual diagram on the client side counts as one session and has to provide a unique
|
|
72
|
+
* `clientSessionId` and its `diagramType`. In addition, custom arguments can be provided in the `args` map to allow
|
|
73
|
+
* for custom initialization behavior on the server. Subsequent `initializeClientSession` requests for the same
|
|
74
|
+
* client id and diagram type are expected to resolve successfully but don't have an actual effect because the
|
|
75
|
+
* corresponding client session is already initialized.
|
|
76
|
+
*
|
|
77
|
+
* @param params the {@link InitializeClientSessionParameters}.
|
|
78
|
+
* @returns A promise that completes when the initialization was successful.
|
|
79
|
+
*/
|
|
80
|
+
initializeClientSession(params: InitializeClientSessionParameters): Promise<void>;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The 'DisposeClientSession' request is sent to the server when a graphical representation (diagram) is no longer
|
|
84
|
+
* needed, e.g. the tab containing the diagram widget has been closed. The session is identified by its unique
|
|
85
|
+
* `clientSessionId`. In addition, custom arguments can be provided in the `args` map to allow for custom dispose
|
|
86
|
+
* behavior on the server.
|
|
87
|
+
*
|
|
88
|
+
* @param params the {@link DisposeClientSessionParameters}.
|
|
89
|
+
* @returns A `void` promise that completes if the disposal was successful.
|
|
90
|
+
*
|
|
91
|
+
*/
|
|
92
|
+
disposeClientSession(params: DisposeClientSessionParameters): Promise<void>;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* A `process` notification is sent from the client to server when the server should handle i.e. process a specific
|
|
96
|
+
* {@link ActionMessage}. Any communication that is performed between initialization and shutdown is handled by
|
|
97
|
+
* sending action messages, either from the client to the server or from the server to the client. This is the core
|
|
98
|
+
* part of the Graphical Language Server Protocol.
|
|
99
|
+
*
|
|
100
|
+
* @param message The {@link ActionMessage} that should be processed.
|
|
101
|
+
*/
|
|
102
|
+
process(message: ActionMessage): void;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* The `shutdown` notification is sent from the client to the server if the client disconnects from the server (e.g.
|
|
106
|
+
* the client application has been closed).
|
|
107
|
+
* This gives the server a chance to clean up and dispose any resources dedicated to the client and its sessions.
|
|
108
|
+
* All {@link GLSPServerListener}s are notified via the {@link GLSPServerListener.serverShutDown} method.
|
|
109
|
+
* Afterwards the server instance is considered to be disposed and can no longer be used for handling requests.
|
|
110
|
+
*
|
|
111
|
+
*/
|
|
112
|
+
shutdown(): void;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Register a new {@link GLSPServerListener}.
|
|
116
|
+
*
|
|
117
|
+
* @param listener The listener that should be registered.
|
|
118
|
+
* @returns `true` if the listener was registered successfully, `false` otherwise (e.g. listener is already
|
|
119
|
+
* registered).
|
|
120
|
+
*/
|
|
121
|
+
addListener(listener: GLSPServerListener): boolean;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Unregister a {@link GLSPServerListener}.
|
|
125
|
+
*
|
|
126
|
+
* @param listener The listener that should be removed
|
|
127
|
+
* @returns 'true' if the listener was unregistered successfully, `false` otherwise (e.g. listener is was not
|
|
128
|
+
* registered in the first place).
|
|
129
|
+
*/
|
|
130
|
+
removeListener(listener: GLSPServerListener): boolean;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* get a {@link ClientSession}.
|
|
134
|
+
*
|
|
135
|
+
* @param sessionId The id of the session to get
|
|
136
|
+
* @returns The either the ClientSession or undefined, if no ClientSession was found for the given id.
|
|
137
|
+
*/
|
|
138
|
+
getClientSession(sessionId: string): ClientSession | undefined;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export const JsonRpcGLSPServer = Symbol('JsonRpcGLSPServer');
|
|
142
|
+
|
|
143
|
+
export interface JsonRpcGLSPServer extends GLSPServer {
|
|
144
|
+
connect(connection: jsonrpc.MessageConnection): void;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
@injectable()
|
|
148
|
+
export class DefaultGLSPServer implements JsonRpcGLSPServer {
|
|
149
|
+
public static readonly PROTOCOL_VERSION = '1.0.0';
|
|
150
|
+
|
|
151
|
+
@inject(Logger)
|
|
152
|
+
protected logger: Logger;
|
|
153
|
+
|
|
154
|
+
@inject(ClientSessionManager)
|
|
155
|
+
protected sessionManager: ClientSessionManager;
|
|
156
|
+
|
|
157
|
+
@inject(GlobalActionProvider)
|
|
158
|
+
protected actionProvider: GlobalActionProvider;
|
|
159
|
+
|
|
160
|
+
@inject(JsonRpcGLSPClientProxy)
|
|
161
|
+
protected glspClient: JsonRpcGLSPClientProxy;
|
|
162
|
+
|
|
163
|
+
protected initializeResult?: InitializeResult;
|
|
164
|
+
|
|
165
|
+
protected applicationId: string;
|
|
166
|
+
|
|
167
|
+
protected clientSessions: Map<string, ClientSession>;
|
|
168
|
+
protected serverListeners: GLSPServerListener[] = [];
|
|
169
|
+
|
|
170
|
+
constructor(@multiInject(GLSPServerListener) @optional() serverListeners: GLSPServerListener[] = []) {
|
|
171
|
+
this.clientSessions = new Map<string, ClientSession>();
|
|
172
|
+
serverListeners.forEach(listener => this.addListener(listener));
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
protected setupJsonRpc(connection: MessageConnection): void {
|
|
176
|
+
connection.onRequest(JsonrpcGLSPClient.InitializeRequest.method, (params: InitializeParameters) => this.initialize(params));
|
|
177
|
+
connection.onRequest(JsonrpcGLSPClient.InitializeClientSessionRequest, (params: InitializeClientSessionParameters) =>
|
|
178
|
+
this.initializeClientSession(params)
|
|
179
|
+
);
|
|
180
|
+
connection.onRequest(JsonrpcGLSPClient.DisposeClientSessionRequest, (params: DisposeClientSessionParameters) =>
|
|
181
|
+
this.disposeClientSession(params)
|
|
182
|
+
);
|
|
183
|
+
connection.onNotification(JsonrpcGLSPClient.ActionMessageNotification, message => this.process(message));
|
|
184
|
+
connection.onNotification(JsonrpcGLSPClient.ShutdownNotification, () => this.shutdown());
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
protected validateProtocolVersion(params: InitializeParameters): void {
|
|
188
|
+
if (params.protocolVersion !== DefaultGLSPServer.PROTOCOL_VERSION) {
|
|
189
|
+
throw new Error(
|
|
190
|
+
// eslint-disable-next-line max-len
|
|
191
|
+
`Protocol version mismatch! The client protocol version ${params.protocolVersion} is not compatible with the server protocol version ${DefaultGLSPServer.PROTOCOL_VERSION}!`
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
protected validateServerInitialized(): void {
|
|
197
|
+
if (!this.isInitialized()) {
|
|
198
|
+
throw new Error('This GLSP server has not been initialized.');
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
public async initialize(params: InitializeParameters): Promise<InitializeResult> {
|
|
203
|
+
this.logger.info(`Initializing server with: applicationId: ${params.applicationId}, protocolVersion: ${params.protocolVersion}`);
|
|
204
|
+
this.validateProtocolVersion(params);
|
|
205
|
+
|
|
206
|
+
if (this.isInitialized()) {
|
|
207
|
+
if (params.applicationId !== this.applicationId) {
|
|
208
|
+
throw new Error(`Could not initialize GLSP server for application ${params.applicationId}.
|
|
209
|
+
Server has already been initialized for different application with id ${this.applicationId}`);
|
|
210
|
+
}
|
|
211
|
+
if (this.initializeResult) {
|
|
212
|
+
return this.initializeResult;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
this.applicationId = params.applicationId;
|
|
217
|
+
const serverActions: ServerActions = {};
|
|
218
|
+
|
|
219
|
+
this.actionProvider.serverActionKinds.forEach((kinds, diagramType) => (serverActions[diagramType] = kinds));
|
|
220
|
+
|
|
221
|
+
let result = { protocolVersion: DefaultGLSPServer.PROTOCOL_VERSION, serverActions };
|
|
222
|
+
|
|
223
|
+
result = await this.handleInitializeArgs(result, params.args);
|
|
224
|
+
this.getListenersToNotify('serverInitialized').forEach((listener: GLSPServerListener) => listener.serverInitialized!(this));
|
|
225
|
+
this.initializeResult = result;
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
protected handleInitializeArgs(result: InitializeResult, args: Args | undefined): MaybePromise<InitializeResult> {
|
|
230
|
+
return result;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
public async initializeClientSession(params: InitializeClientSessionParameters): Promise<void> {
|
|
234
|
+
this.logger.info(
|
|
235
|
+
`Initializing client session with: clientSessionId: '${params.clientSessionId}', diagramType: '${params.diagramType}'`
|
|
236
|
+
);
|
|
237
|
+
this.validateServerInitialized();
|
|
238
|
+
|
|
239
|
+
const session = this.sessionManager.getOrCreateClientSession(params);
|
|
240
|
+
this.clientSessions.set(params.clientSessionId, session);
|
|
241
|
+
return this.handleInitializeClientSessionArgs(params.args);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
protected handleInitializeClientSessionArgs(args: Args | undefined): MaybePromise<void> {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
public async disposeClientSession(params: DisposeClientSessionParameters): Promise<void> {
|
|
249
|
+
this.logger.debug('Dispose client session with:', params);
|
|
250
|
+
this.validateServerInitialized();
|
|
251
|
+
if (this.sessionManager.disposeClientSession(params.clientSessionId)) {
|
|
252
|
+
this.clientSessions.delete(params.clientSessionId);
|
|
253
|
+
return this.handleDisposeClientSessionArgs(params.args);
|
|
254
|
+
}
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
protected async handleDisposeClientSessionArgs(args: Args | undefined): Promise<void> {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
process(message: ActionMessage): void {
|
|
263
|
+
this.validateServerInitialized();
|
|
264
|
+
this.logger.info(`process [action=${message.action.kind}, clientId=${message.clientId}]`);
|
|
265
|
+
const clientSessionId = message.clientId;
|
|
266
|
+
const clientSession = this.clientSessions.get(clientSessionId);
|
|
267
|
+
if (!clientSession) {
|
|
268
|
+
throw new Error(`No client session has been initialized for client id: ${clientSessionId}`);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
clientSession.actionDispatcher.dispatch(message.action).catch(error => this.handleProcessError(message, error));
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
protected handleProcessError(message: ActionMessage, reason: any): void | PromiseLike<void> {
|
|
275
|
+
let errorMsg = `Could not process action: '${message.action.kind}`;
|
|
276
|
+
this.logger.error(errorMsg);
|
|
277
|
+
this.logger.error(reason);
|
|
278
|
+
let details: string | undefined = reason?.toString?.();
|
|
279
|
+
if (reason instanceof GLSPServerError) {
|
|
280
|
+
details = reason.cause?.toString?.();
|
|
281
|
+
errorMsg = reason.message;
|
|
282
|
+
}
|
|
283
|
+
const errorAction = ServerMessageAction.create(errorMsg, { severity: 'ERROR', details });
|
|
284
|
+
this.glspClient.process({ clientId: message.clientId, action: errorAction });
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
getClientSession(sessionId: string): ClientSession | undefined {
|
|
288
|
+
return this.clientSessions.get(sessionId);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
public shutdown(): void {
|
|
292
|
+
this.logger.info('Shutdown GLSP Server');
|
|
293
|
+
this.getListenersToNotify('serverShutDown').forEach(listener => listener.serverShutDown!(this));
|
|
294
|
+
this.clientSessions.clear();
|
|
295
|
+
this.initializeResult = undefined;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
public connect(connection: jsonrpc.MessageConnection): void {
|
|
299
|
+
this.setupJsonRpc(connection);
|
|
300
|
+
this.glspClient.connect(connection);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
protected isInitialized(): boolean {
|
|
304
|
+
return this.initializeResult !== undefined;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
addListener(listener: GLSPServerListener): boolean {
|
|
308
|
+
distinctAdd(this.serverListeners, listener);
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
removeListener(listener: GLSPServerListener): boolean {
|
|
313
|
+
remove(this.serverListeners, listener);
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
protected getListenersToNotify(method: keyof GLSPServerListener): GLSPServerListener[] {
|
|
318
|
+
return this.serverListeners.filter(listener => listener[method]);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { expect } from 'chai';
|
|
17
|
+
import { Container, ContainerModule } from 'inversify';
|
|
18
|
+
import { ActionDispatcher } from '../actions/action-dispatcher';
|
|
19
|
+
import { DiagramModules, InjectionContainer } from '../di/service-identifiers';
|
|
20
|
+
import { GLSPClientProxy } from '../protocol/glsp-client-proxy';
|
|
21
|
+
import * as mock from '../test/mock-util';
|
|
22
|
+
import { GLSPServerError } from '../utils/glsp-server-error';
|
|
23
|
+
import { Logger } from '../utils/logger';
|
|
24
|
+
import { DefaultClientSessionFactory } from './client-session-factory';
|
|
25
|
+
import { ClientSessionInitializer } from './client-session-initializer';
|
|
26
|
+
|
|
27
|
+
describe('test DefaultClientSessionFactory', () => {
|
|
28
|
+
const clientSessionId = 'myClientId';
|
|
29
|
+
const diagramType = 'myDiagramType';
|
|
30
|
+
const container = new Container();
|
|
31
|
+
const diagramModule = new ContainerModule(bind => {
|
|
32
|
+
bind(ActionDispatcher).toConstantValue(new mock.StubActionDispatcher());
|
|
33
|
+
bind(ClientSessionInitializer).toConstantValue(new mock.StubClientSessionInitializer());
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const diagramModules = new Map<string, ContainerModule[]>();
|
|
37
|
+
diagramModules.set(diagramType, [diagramModule]);
|
|
38
|
+
|
|
39
|
+
container.load(
|
|
40
|
+
new ContainerModule(bind => {
|
|
41
|
+
bind(Logger).toConstantValue(new mock.StubLogger());
|
|
42
|
+
bind(InjectionContainer).toConstantValue(container);
|
|
43
|
+
bind(DiagramModules).toConstantValue(diagramModules);
|
|
44
|
+
bind(GLSPClientProxy).toConstantValue(new mock.StubGLSPClientProxy());
|
|
45
|
+
})
|
|
46
|
+
);
|
|
47
|
+
const factory = container.resolve(DefaultClientSessionFactory);
|
|
48
|
+
|
|
49
|
+
it('create - new client session', () => {
|
|
50
|
+
const session = factory.create({ clientSessionId, diagramType });
|
|
51
|
+
expect(session.id).to.be.equal(clientSessionId);
|
|
52
|
+
expect(session.diagramType).to.be.equal(diagramType);
|
|
53
|
+
expect(session.container.parent).to.be.equal(container);
|
|
54
|
+
expect(session.actionDispatcher).to.be.an.instanceOf(mock.StubActionDispatcher);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('create - unknown diagram type', () => {
|
|
58
|
+
expect(() => factory.create({ clientSessionId, diagramType: 'unknown-type' })).to.throw(GLSPServerError);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { InitializeClientSessionParameters } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { Container, ContainerModule, inject, injectable } from 'inversify';
|
|
18
|
+
import { ActionDispatcher } from '../actions/action-dispatcher';
|
|
19
|
+
import { createClientSessionModule } from '../di/client-session-module';
|
|
20
|
+
import { DiagramModules, InjectionContainer } from '../di/service-identifiers';
|
|
21
|
+
import { GLSPClientProxy } from '../protocol/glsp-client-proxy';
|
|
22
|
+
import { GLSPServerError } from '../utils/glsp-server-error';
|
|
23
|
+
import { ClientSession, DefaultClientSession } from './client-session';
|
|
24
|
+
import { ClientSessionInitializer } from './client-session-initializer';
|
|
25
|
+
|
|
26
|
+
export const ClientSessionFactory = Symbol('ClientSessionFactory');
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Handles the construction of new {@link ClientSession}. A client session factory has to know
|
|
30
|
+
* how to derive the client session specific injector and its entrypoint (i.e. the {@link ActionDispatcher}
|
|
31
|
+
* from a given client session id and a given diagram type.
|
|
32
|
+
*/
|
|
33
|
+
export interface ClientSessionFactory {
|
|
34
|
+
/**
|
|
35
|
+
* Create a new {@link ClientSession} based on the given client session id and diagram type.
|
|
36
|
+
*
|
|
37
|
+
* @param clientSessionId The client session id.
|
|
38
|
+
* @param diagramType The diagram type.
|
|
39
|
+
* @returns A new instance of {@link ClientSession} that correlates to the given input parameters.
|
|
40
|
+
*/
|
|
41
|
+
create(params: InitializeClientSessionParameters): ClientSession;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@injectable()
|
|
45
|
+
export class DefaultClientSessionFactory implements ClientSessionFactory {
|
|
46
|
+
@inject(InjectionContainer)
|
|
47
|
+
protected serverContainer: Container;
|
|
48
|
+
|
|
49
|
+
@inject(DiagramModules)
|
|
50
|
+
protected diagramModules: Map<string, ContainerModule[]>;
|
|
51
|
+
|
|
52
|
+
@inject(GLSPClientProxy)
|
|
53
|
+
protected glspClient: GLSPClientProxy;
|
|
54
|
+
|
|
55
|
+
create(params: InitializeClientSessionParameters): ClientSession {
|
|
56
|
+
const { clientSessionId: id, diagramType, args } = params;
|
|
57
|
+
const diagramModules = this.diagramModules.get(diagramType);
|
|
58
|
+
if (!diagramModules || diagramModules.length === 0) {
|
|
59
|
+
throw new GLSPServerError(`Could not retrieve diagram module configuration for diagram type: '${diagramType}''`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const sessionModule = createClientSessionModule(id, this.glspClient);
|
|
63
|
+
const sessionContainer = this.serverContainer.createChild();
|
|
64
|
+
sessionContainer.load(...diagramModules, sessionModule);
|
|
65
|
+
const initializers = sessionContainer.getAll<ClientSessionInitializer>(ClientSessionInitializer);
|
|
66
|
+
initializers.forEach(service => service.initialize(args));
|
|
67
|
+
const actionDispatcher = sessionContainer.get<ActionDispatcher>(ActionDispatcher);
|
|
68
|
+
return new DefaultClientSession(id, diagramType, actionDispatcher, sessionContainer);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { Args } from '@eclipse-glsp/protocol';
|
|
17
|
+
|
|
18
|
+
export const ClientSessionInitializer = Symbol('ClientSessionInitializer');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Client session initializers are services the are used to configure the client session container after its initialization.
|
|
22
|
+
* The {@link ClientSessionFactory} is expected to retrieve and invoke all client session listeners from the container in the
|
|
23
|
+
* {@link ClientSessionFactory.create} method.
|
|
24
|
+
*/
|
|
25
|
+
export interface ClientSessionInitializer {
|
|
26
|
+
initialize(args?: Args): void;
|
|
27
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { ClientSession } from './client-session';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* A listener that gets notified on certain client session lifecycle events.<br>
|
|
20
|
+
* Life cycle events:
|
|
21
|
+
* * Session creation
|
|
22
|
+
* * Session disposal
|
|
23
|
+
*
|
|
24
|
+
* The scope of relevant client session ids can be restricted when registering the listener with
|
|
25
|
+
* `ClientSessionManager.addListener()`
|
|
26
|
+
*/
|
|
27
|
+
export interface ClientSessionListener {
|
|
28
|
+
/**
|
|
29
|
+
* Is invoked after a new {@link ClientSession} has been created by the `ClientSessionManager`.
|
|
30
|
+
*
|
|
31
|
+
* @param clientSession The newly created client session.
|
|
32
|
+
*/
|
|
33
|
+
sessionCreated?(clientSession: ClientSession): void;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Is invoked after a {@link ClientSession} has been disposed by the `ClientSessionManager`.
|
|
37
|
+
*
|
|
38
|
+
* @param clientSession The client session that was disposed.
|
|
39
|
+
*/
|
|
40
|
+
sessionDisposed?(clientSession: ClientSession): void;
|
|
41
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { Container, ContainerModule } from 'inversify';
|
|
17
|
+
import * as mock from '../test/mock-util';
|
|
18
|
+
import { Logger } from '../utils/logger';
|
|
19
|
+
import { ClientSessionFactory } from './client-session-factory';
|
|
20
|
+
import { DefaultClientSessionManager } from './client-session-manager';
|
|
21
|
+
import { expect } from 'chai';
|
|
22
|
+
import * as sinon from 'sinon';
|
|
23
|
+
|
|
24
|
+
describe('test DefaultClientSessionManager', () => {
|
|
25
|
+
const testSession = mock.createClientSession('myId', 'myDiagram');
|
|
26
|
+
const testSessionListener = new mock.StubClientSessionListener();
|
|
27
|
+
|
|
28
|
+
const sessionFactory = new mock.StubClientSessionFactory();
|
|
29
|
+
sinon.stub(sessionFactory, 'create').returns(testSession);
|
|
30
|
+
|
|
31
|
+
const container = new Container();
|
|
32
|
+
container.load(
|
|
33
|
+
new ContainerModule(bind => {
|
|
34
|
+
bind(Logger).toConstantValue(new mock.StubLogger());
|
|
35
|
+
bind(ClientSessionFactory).toConstantValue(sessionFactory);
|
|
36
|
+
})
|
|
37
|
+
);
|
|
38
|
+
const sessionManager = container.resolve(DefaultClientSessionManager);
|
|
39
|
+
|
|
40
|
+
it('add listener', () => {
|
|
41
|
+
expect(sessionManager.addListener(testSessionListener, testSession.id)).true;
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('add create client session', () => {
|
|
45
|
+
// Mock setup
|
|
46
|
+
const listener_create = sinon.spy(testSessionListener, 'sessionCreated');
|
|
47
|
+
// Test execution
|
|
48
|
+
const createdSession = sessionManager.getOrCreateClientSession({
|
|
49
|
+
clientSessionId: testSession.id,
|
|
50
|
+
diagramType: testSession.diagramType
|
|
51
|
+
});
|
|
52
|
+
expect(createdSession).to.not.be.undefined;
|
|
53
|
+
expect(createdSession.id).to.be.equal(testSession.id);
|
|
54
|
+
expect(createdSession.diagramType).to.be.equal(testSession.diagramType);
|
|
55
|
+
|
|
56
|
+
const retrievedSession = sessionManager.getSession(testSession.id);
|
|
57
|
+
expect(retrievedSession).to.not.be.undefined;
|
|
58
|
+
expect(retrievedSession).to.be.equal(createdSession);
|
|
59
|
+
expect(listener_create.calledWith(testSession));
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('get sessions by type', () => {
|
|
63
|
+
const clientSessions = sessionManager.getSessionsByType(testSession.diagramType);
|
|
64
|
+
expect(clientSessions.length).to.be.equal(1);
|
|
65
|
+
expect(clientSessions[0]).to.be.equal(testSession);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('get sessions by type that does no exist', async () => {
|
|
69
|
+
const clientSessions = sessionManager.getSessionsByType('wrongType');
|
|
70
|
+
expect(clientSessions.length).to.be.equal(0);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('dispose client session', () => {
|
|
74
|
+
// Mock setup
|
|
75
|
+
const listener_dispose = sinon.spy(testSessionListener, 'sessionDisposed');
|
|
76
|
+
// Test execution
|
|
77
|
+
expect(sessionManager.disposeClientSession(testSession.id)).to.be.equal(true);
|
|
78
|
+
const session = sessionManager.getSession(testSession.id);
|
|
79
|
+
expect(session).to.be.undefined;
|
|
80
|
+
expect(listener_dispose.calledWith(testSession));
|
|
81
|
+
});
|
|
82
|
+
});
|