@eclipse-glsp/server 1.1.0-next.3d7585d.42
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 +37 -0
- package/lib/common/command/command-stack.d.ts.map +1 -0
- package/lib/common/command/command-stack.js +48 -0
- package/lib/common/command/command-stack.js.map +1 -0
- package/lib/common/command/command.d.ts +37 -0
- package/lib/common/command/command.d.ts.map +1 -0
- package/lib/common/command/command.js +18 -0
- package/lib/common/command/command.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 +127 -0
- package/lib/common/di/diagram-module.d.ts.map +1 -0
- package/lib/common/di/diagram-module.js +283 -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 +88 -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/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 +28 -0
- package/lib/common/features/layout/layout-operation-handler.d.ts.map +1 -0
- package/lib/common/features/layout/layout-operation-handler.js +66 -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 +53 -0
- package/lib/common/features/model/model-state.d.ts.map +1 -0
- package/lib/common/features/model/model-state.js +75 -0
- package/lib/common/features/model/model-state.js.map +1 -0
- package/lib/common/features/model/model-submission-handler.d.ts +56 -0
- package/lib/common/features/model/model-submission-handler.d.ts.map +1 -0
- package/lib/common/features/model/model-submission-handler.js +97 -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 +9 -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 +55 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.js.map +1 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.spec.d.ts +2 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.spec.d.ts.map +1 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.spec.js +38 -0
- package/lib/common/gmodel/apply-label-edit-operation-handler.spec.js.map +1 -0
- package/lib/common/gmodel/change-bounds-operation-handler.d.ts +10 -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 +53 -0
- package/lib/common/gmodel/change-routing-points-operation-handler.js.map +1 -0
- package/lib/common/gmodel/computed-bounds-action-handler.d.ts +29 -0
- package/lib/common/gmodel/computed-bounds-action-handler.d.ts.map +1 -0
- package/lib/common/gmodel/computed-bounds-action-handler.js +50 -0
- package/lib/common/gmodel/computed-bounds-action-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 +116 -0
- package/lib/common/gmodel/delete-operation-handler.js.map +1 -0
- package/lib/common/gmodel/gmodel-create-edge-operation-handler.d.ts +31 -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 +65 -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 +31 -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 +58 -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 +86 -0
- package/lib/common/gmodel/gmodel-diagram-module.js.map +1 -0
- package/lib/common/gmodel/index.d.ts +26 -0
- package/lib/common/gmodel/index.d.ts.map +1 -0
- package/lib/common/gmodel/index.js +42 -0
- package/lib/common/gmodel/index.js.map +1 -0
- package/lib/common/gmodel/paste-operation-handler.d.ts +35 -0
- package/lib/common/gmodel/paste-operation-handler.d.ts.map +1 -0
- package/lib/common/gmodel/paste-operation-handler.js +131 -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 +67 -0
- package/lib/common/gmodel/reconnect-edge-operation-handler.js.map +1 -0
- package/lib/common/index.d.ts +88 -0
- package/lib/common/index.d.ts.map +1 -0
- package/lib/common/index.js +104 -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 +54 -0
- package/lib/common/operations/compound-operation-handler.js.map +1 -0
- package/lib/common/operations/create-operation-handler.d.ts +64 -0
- package/lib/common/operations/create-operation-handler.d.ts.map +1 -0
- package/lib/common/operations/create-operation-handler.js +90 -0
- package/lib/common/operations/create-operation-handler.js.map +1 -0
- package/lib/common/operations/cut-operation-handler.d.ts +25 -0
- package/lib/common/operations/cut-operation-handler.d.ts.map +1 -0
- package/lib/common/operations/cut-operation-handler.js +53 -0
- package/lib/common/operations/cut-operation-handler.js.map +1 -0
- package/lib/common/operations/operation-action-handler.d.ts +33 -0
- package/lib/common/operations/operation-action-handler.d.ts.map +1 -0
- package/lib/common/operations/operation-action-handler.js +94 -0
- package/lib/common/operations/operation-action-handler.js.map +1 -0
- package/lib/common/operations/operation-handler-registry.d.ts +29 -0
- package/lib/common/operations/operation-handler-registry.d.ts.map +1 -0
- package/lib/common/operations/operation-handler-registry.js +58 -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 +50 -0
- package/lib/common/operations/operation-handler.d.ts.map +1 -0
- package/lib/common/operations/operation-handler.js +7 -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 +110 -0
- package/lib/common/test/mock-util.d.ts.map +1 -0
- package/lib/common/test/mock-util.js +211 -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 +76 -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.ts +74 -0
- package/src/common/command/command.ts +39 -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 +397 -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 +90 -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/layout-engine.ts +31 -0
- package/src/common/features/layout/layout-operation-handler.ts +47 -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 +101 -0
- package/src/common/features/model/model-submission-handler.ts +106 -0
- package/src/common/features/model/request-model-action-handler.ts +67 -0
- package/src/common/features/model/save-model-action-handler.ts +38 -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.spec.ts +40 -0
- package/src/common/gmodel/apply-label-edit-operation-handler.ts +38 -0
- package/src/common/gmodel/change-bounds-operation-handler.ts +58 -0
- package/src/common/gmodel/change-routing-points-operation-handler.ts +39 -0
- package/src/common/gmodel/computed-bounds-action-handler.ts +51 -0
- package/src/common/gmodel/delete-operation-handler.ts +115 -0
- package/src/common/gmodel/gmodel-create-edge-operation-handler.ts +58 -0
- package/src/common/gmodel/gmodel-create-node-operation-handler.ts +47 -0
- package/src/common/gmodel/gmodel-diagram-module.ts +81 -0
- package/src/common/gmodel/index.ts +26 -0
- package/src/common/gmodel/paste-operation-handler.ts +119 -0
- package/src/common/gmodel/reconnect-edge-operation-handler.ts +55 -0
- package/src/common/index.ts +88 -0
- package/src/common/launch/glsp-server-launcher.ts +70 -0
- package/src/common/operations/compound-operation-handler.ts +38 -0
- package/src/common/operations/create-operation-handler.ts +106 -0
- package/src/common/operations/cut-operation-handler.ts +38 -0
- package/src/common/operations/operation-action-handler.ts +69 -0
- package/src/common/operations/operation-handler-registry.spec.ts +50 -0
- package/src/common/operations/operation-handler-registry.ts +51 -0
- package/src/common/operations/operation-handler.ts +57 -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 +256 -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,38 @@
|
|
|
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 { CompoundOperation, MaybePromise, Operation } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { OperationActionHandler } from './operation-action-handler';
|
|
19
|
+
import { OperationHandler } from './operation-handler';
|
|
20
|
+
import { OperationHandlerRegistry } from './operation-handler-registry';
|
|
21
|
+
|
|
22
|
+
@injectable()
|
|
23
|
+
export class CompoundOperationHandler implements OperationHandler {
|
|
24
|
+
operationType = CompoundOperation.KIND;
|
|
25
|
+
|
|
26
|
+
@inject(OperationHandlerRegistry) protected operationHandlerRegistry: OperationHandlerRegistry;
|
|
27
|
+
|
|
28
|
+
execute(operation: CompoundOperation): void {
|
|
29
|
+
operation.operationList.forEach(nestedOperation => this.executeNestedOperation(nestedOperation));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
executeNestedOperation(operation: Operation): MaybePromise<void> {
|
|
33
|
+
const operationHandler = OperationActionHandler.getOperationHandler(operation, this.operationHandlerRegistry);
|
|
34
|
+
if (operationHandler) {
|
|
35
|
+
operationHandler.execute(operation);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
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 { GModelElement } from '@eclipse-glsp/graph';
|
|
17
|
+
import {
|
|
18
|
+
CreateEdgeOperation,
|
|
19
|
+
CreateNodeOperation,
|
|
20
|
+
CreateOperation,
|
|
21
|
+
MaybePromise,
|
|
22
|
+
Operation,
|
|
23
|
+
Point,
|
|
24
|
+
TriggerEdgeCreationAction,
|
|
25
|
+
TriggerNodeCreationAction
|
|
26
|
+
} from '@eclipse-glsp/protocol';
|
|
27
|
+
import { inject, injectable } from 'inversify';
|
|
28
|
+
import { ModelState } from '../features/model/model-state';
|
|
29
|
+
import { getRelativeLocation } from '../utils/layout-util';
|
|
30
|
+
import { OperationHandler } from './operation-handler';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A special {@link OperationHandler} that is responsible for the handling of {@link CreateOperation}s. Depending on its
|
|
34
|
+
* operation type the triggered actions are {@link TriggerNodeCreationAction} or {@link TriggerEdgeCreationAction}s.
|
|
35
|
+
*/
|
|
36
|
+
@injectable()
|
|
37
|
+
export abstract class CreateOperationHandler implements OperationHandler {
|
|
38
|
+
abstract operationType: string;
|
|
39
|
+
abstract readonly label: string;
|
|
40
|
+
abstract elementTypeIds: string[];
|
|
41
|
+
|
|
42
|
+
abstract execute(operation: Operation): MaybePromise<void>;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Returns a list of {@link TriggerElementCreationAction}s for registered element types.
|
|
46
|
+
*
|
|
47
|
+
* @returns A list of {@link TriggerElementCreationAction}s.
|
|
48
|
+
*/
|
|
49
|
+
getTriggerActions(): (TriggerEdgeCreationAction | TriggerNodeCreationAction)[] {
|
|
50
|
+
if (this.operationType === CreateNodeOperation.KIND) {
|
|
51
|
+
return this.elementTypeIds.map(typeId => TriggerNodeCreationAction.create(typeId));
|
|
52
|
+
} else if (this.operationType === CreateEdgeOperation.KIND) {
|
|
53
|
+
return this.elementTypeIds.map(typeId => TriggerEdgeCreationAction.create(typeId));
|
|
54
|
+
}
|
|
55
|
+
return [];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
handles(operation: CreateOperation): boolean {
|
|
59
|
+
return this.elementTypeIds.includes(operation.elementTypeId);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Abstract base implementation for {@link CreateOperationHandler} that
|
|
65
|
+
* create an element that is represented with a {@link GNode} in the graphical model.
|
|
66
|
+
*/
|
|
67
|
+
@injectable()
|
|
68
|
+
export abstract class CreateNodeOperationHandler extends CreateOperationHandler {
|
|
69
|
+
@inject(ModelState)
|
|
70
|
+
protected modelState: ModelState;
|
|
71
|
+
|
|
72
|
+
get operationType(): string {
|
|
73
|
+
return CreateNodeOperation.KIND;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Retrieve the graphical model element that should contain the newly created {@link GNode}.
|
|
78
|
+
* If `undefined` is returned the {@link GNode} should be added directly to the diagram root.
|
|
79
|
+
* @param operation The currently handled operation.
|
|
80
|
+
* @returns The container {@link GModeElement} or `undefined`.
|
|
81
|
+
*/
|
|
82
|
+
getContainer(operation: CreateNodeOperation): GModelElement | undefined {
|
|
83
|
+
const index = this.modelState.index;
|
|
84
|
+
return operation.containerId ? index.get(operation.containerId) : undefined;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
getLocation(operation: CreateNodeOperation): Point | undefined {
|
|
88
|
+
return operation.location;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Retrieves the diagram absolute location and the target container from the given {@link CreateNodeOperation}
|
|
93
|
+
* and converts the absolute location to coordinates relative to the given container.
|
|
94
|
+
* Relative coordinates can only be retrieved if the given container element is part of
|
|
95
|
+
* a hierarchy of {@link GBoundsAware} elements. This means each (recursive) parent element need to
|
|
96
|
+
* implement {@link GBoundsAware}. If that is not the case this method returns `undefined`.
|
|
97
|
+
* @param absoluteLocation The diagram absolute position.
|
|
98
|
+
* @param container The container element.
|
|
99
|
+
* @returns The relative position or `undefined`.
|
|
100
|
+
*/
|
|
101
|
+
getRelativeLocation(operation: CreateNodeOperation): Point | undefined {
|
|
102
|
+
const container = this.getContainer(operation) ?? this.modelState.root;
|
|
103
|
+
const absoluteLocation = this.getLocation(operation) ?? Point.ORIGIN;
|
|
104
|
+
return getRelativeLocation(absoluteLocation, container);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
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 { CutOperation, DeleteElementOperation, MaybePromise } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { ActionDispatcher } from '../actions/action-dispatcher';
|
|
19
|
+
import { OperationHandler } from './operation-handler';
|
|
20
|
+
|
|
21
|
+
@injectable()
|
|
22
|
+
export class CutOperationHandler implements OperationHandler {
|
|
23
|
+
operationType = CutOperation.KIND;
|
|
24
|
+
|
|
25
|
+
@inject(ActionDispatcher)
|
|
26
|
+
protected actionDispatcher: ActionDispatcher;
|
|
27
|
+
|
|
28
|
+
execute(operation: CutOperation): MaybePromise<void> {
|
|
29
|
+
const cutableElementIds = this.getElementToCut(operation);
|
|
30
|
+
if (cutableElementIds.length > 0) {
|
|
31
|
+
this.actionDispatcher.dispatch(DeleteElementOperation.create(cutableElementIds));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
protected getElementToCut(cutOperation: CutOperation): string[] {
|
|
36
|
+
return cutOperation.editorContext.selectedElementIds;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
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 { Action, CreateOperation, MaybePromise, Operation, ServerMessageAction } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { ActionHandler } from '../actions/action-handler';
|
|
19
|
+
import { Operations } from '../di/service-identifiers';
|
|
20
|
+
import { ModelState } from '../features/model/model-state';
|
|
21
|
+
import { ModelSubmissionHandler } from '../features/model/model-submission-handler';
|
|
22
|
+
import { OperationHandler } from './operation-handler';
|
|
23
|
+
import { OperationHandlerRegistry } from './operation-handler-registry';
|
|
24
|
+
|
|
25
|
+
@injectable()
|
|
26
|
+
export class OperationActionHandler implements ActionHandler {
|
|
27
|
+
@inject(OperationHandlerRegistry) protected operationHandlerRegistry: OperationHandlerRegistry;
|
|
28
|
+
@inject(ModelSubmissionHandler) protected modelSubmissionHandler: ModelSubmissionHandler;
|
|
29
|
+
@inject(ModelState) protected modelState: ModelState;
|
|
30
|
+
|
|
31
|
+
constructor(@inject(Operations) readonly actionKinds: string[]) {}
|
|
32
|
+
|
|
33
|
+
execute(action: Operation): MaybePromise<Action[]> {
|
|
34
|
+
if (this.handles(action)) {
|
|
35
|
+
if (this.modelState.isReadonly) {
|
|
36
|
+
return [
|
|
37
|
+
ServerMessageAction.create(`Server is in readonly-mode! Could not execute operation: ${action.kind}`, {
|
|
38
|
+
severity: 'WARNING'
|
|
39
|
+
})
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
const operationHandler = OperationActionHandler.getOperationHandler(action, this.operationHandlerRegistry);
|
|
43
|
+
if (operationHandler) {
|
|
44
|
+
return this.executeHandler(action, operationHandler);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async executeHandler(operation: Operation, handler: OperationHandler): Promise<Action[]> {
|
|
51
|
+
// TODO: Create GModelRecordingCommand;
|
|
52
|
+
await handler.execute(operation);
|
|
53
|
+
this.modelState.index.indexRoot(this.modelState.root);
|
|
54
|
+
this.modelState.isDirty = true;
|
|
55
|
+
// TODO: this.modelState.execute(command)
|
|
56
|
+
return this.modelSubmissionHandler.submitModel('operation');
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
handles(action: Action): boolean {
|
|
60
|
+
if (this.actionKinds.includes(action.kind)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static getOperationHandler(operation: Operation, registry: OperationHandlerRegistry): OperationHandler | undefined {
|
|
67
|
+
return CreateOperation.is(operation) ? registry.get(`${operation.kind}_${operation.elementTypeId}`) : registry.get(operation.kind);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 { CompoundOperation, CreateEdgeOperation, CreateNodeOperation } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { expect } from 'chai';
|
|
18
|
+
import * as mock from '../test/mock-util';
|
|
19
|
+
import { CompoundOperationHandler } from './compound-operation-handler';
|
|
20
|
+
import { OperationHandlerRegistry } from './operation-handler-registry';
|
|
21
|
+
|
|
22
|
+
describe('Test OperationHandlerRegistry', () => {
|
|
23
|
+
const stubANode = new mock.StubCreateNodeOperationHandler('ANode');
|
|
24
|
+
const stubBNode = new mock.StubCreateNodeOperationHandler('BNode');
|
|
25
|
+
const stubAEdge = new mock.StubCreateEdgeOperationHandler('AEdge');
|
|
26
|
+
const stubBEdge = new mock.StubCreateEdgeOperationHandler('BEdge');
|
|
27
|
+
const operationHandlerRegistry = new OperationHandlerRegistry();
|
|
28
|
+
|
|
29
|
+
it('register OperationActionHandler', () => {
|
|
30
|
+
operationHandlerRegistry.registerHandler(new CompoundOperationHandler());
|
|
31
|
+
expect(operationHandlerRegistry.keys()).to.have.length(1);
|
|
32
|
+
expect(operationHandlerRegistry.keys()).to.contain(CompoundOperation.KIND);
|
|
33
|
+
expect(operationHandlerRegistry.get(CompoundOperation.KIND)).to.be.an.instanceOf(CompoundOperationHandler);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('register CreateOperationActionHandlers', () => {
|
|
37
|
+
operationHandlerRegistry.registerHandler(stubANode);
|
|
38
|
+
operationHandlerRegistry.registerHandler(stubBNode);
|
|
39
|
+
operationHandlerRegistry.registerHandler(stubAEdge);
|
|
40
|
+
operationHandlerRegistry.registerHandler(stubBEdge);
|
|
41
|
+
expect(operationHandlerRegistry.keys()).to.contain(`${CreateNodeOperation.KIND}_ANode`);
|
|
42
|
+
expect(operationHandlerRegistry.get(`${CreateNodeOperation.KIND}_ANode`)).to.be.equal(stubANode);
|
|
43
|
+
expect(operationHandlerRegistry.keys()).to.contain(`${CreateNodeOperation.KIND}_BNode`);
|
|
44
|
+
expect(operationHandlerRegistry.get(`${CreateNodeOperation.KIND}_BNode`)).to.be.equal(stubBNode);
|
|
45
|
+
expect(operationHandlerRegistry.keys()).to.contain(`${CreateEdgeOperation.KIND}_AEdge`);
|
|
46
|
+
expect(operationHandlerRegistry.get(`${CreateEdgeOperation.KIND}_AEdge`)).to.be.equal(stubAEdge);
|
|
47
|
+
expect(operationHandlerRegistry.keys()).to.contain(`${CreateEdgeOperation.KIND}_BEdge`);
|
|
48
|
+
expect(operationHandlerRegistry.get(`${CreateEdgeOperation.KIND}_BEdge`)).to.be.equal(stubBEdge);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
import { inject, injectable, optional } from 'inversify';
|
|
18
|
+
import { ClientSessionInitializer } from '../session/client-session-initializer';
|
|
19
|
+
import { Registry } from '../utils/registry';
|
|
20
|
+
import { CreateOperationHandler } from './create-operation-handler';
|
|
21
|
+
import { OperationHandler, OperationHandlerConstructor, OperationHandlerFactory } from './operation-handler';
|
|
22
|
+
|
|
23
|
+
@injectable()
|
|
24
|
+
export class OperationHandlerRegistry extends Registry<string, OperationHandler> {
|
|
25
|
+
registerHandler(handler: OperationHandler): boolean {
|
|
26
|
+
if (handler instanceof CreateOperationHandler) {
|
|
27
|
+
handler.elementTypeIds.forEach(typeId => this.register(`${handler.operationType}_${typeId}`, handler));
|
|
28
|
+
return true;
|
|
29
|
+
} else {
|
|
30
|
+
return this.register(handler.operationType, handler);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@injectable()
|
|
36
|
+
export class OperationHandlerRegistryInitializer implements ClientSessionInitializer {
|
|
37
|
+
@inject(OperationHandlerFactory)
|
|
38
|
+
protected factory: OperationHandlerFactory;
|
|
39
|
+
|
|
40
|
+
@inject(OperationHandlerConstructor)
|
|
41
|
+
@optional()
|
|
42
|
+
protected handlerConstructors: OperationHandlerConstructor[] = [];
|
|
43
|
+
|
|
44
|
+
@inject(OperationHandlerRegistry)
|
|
45
|
+
protected registry: OperationHandlerRegistry;
|
|
46
|
+
|
|
47
|
+
initialize(args?: Args): void {
|
|
48
|
+
const handlers = this.handlerConstructors.map(constructor => this.factory(constructor));
|
|
49
|
+
handlers.forEach(handler => this.registry.registerHandler(handler));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 { MaybePromise, Operation } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { interfaces } from 'inversify';
|
|
18
|
+
|
|
19
|
+
export const OperationHandler = Symbol('OperationHandler');
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* An operation handler can execute {@link Operation}s of a certain type (subclass).
|
|
23
|
+
* The operation handler processes the operation in the {@link OperationHandler.execute()} method. The result
|
|
24
|
+
* of the execution is an update of the `ModelState` state.
|
|
25
|
+
* This update is reversible (undo) and can be reapplied (redo). For basic diagram languages these updates are typically
|
|
26
|
+
* applied directly on the `ModelState` using EMF `Command`s and the
|
|
27
|
+
* `ModelState.execute()` method. For more complex diagram languages the
|
|
28
|
+
* GModel state might be updated indirectly and the operation handler manipulates a custom model representation.
|
|
29
|
+
*
|
|
30
|
+
* The `OperationActionHandler` is responsible for retrieving all available (valid) operation handlers for an
|
|
31
|
+
* operation that is dispatched via `ActionDispatcher`.
|
|
32
|
+
*/
|
|
33
|
+
export interface OperationHandler {
|
|
34
|
+
/**
|
|
35
|
+
* Returns the operation type that can be handled by this operation handler.
|
|
36
|
+
*
|
|
37
|
+
* @returns the operation type that can be handled.
|
|
38
|
+
*/
|
|
39
|
+
readonly operationType: string;
|
|
40
|
+
|
|
41
|
+
readonly label?: string;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Executes the operation handler for the given {@link Operation}.
|
|
45
|
+
*
|
|
46
|
+
* @param operation The operation that should be executed.
|
|
47
|
+
*/
|
|
48
|
+
execute(operation: Operation): MaybePromise<void>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const OperationHandlerConstructor = Symbol('OperationHandlerConstructor');
|
|
52
|
+
|
|
53
|
+
export type OperationHandlerConstructor = interfaces.Newable<OperationHandler>;
|
|
54
|
+
|
|
55
|
+
export const OperationHandlerFactory = Symbol('OperationHandlerFactory');
|
|
56
|
+
|
|
57
|
+
export type OperationHandlerFactory = (constructor: OperationHandlerConstructor) => OperationHandler;
|
|
@@ -0,0 +1,65 @@
|
|
|
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 { ActionMessage, JsonrpcGLSPClient } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import * as jsonrpc from 'vscode-jsonrpc';
|
|
19
|
+
import { Logger } from '../utils/logger';
|
|
20
|
+
|
|
21
|
+
export const GLSPClientProxyFactory = Symbol('GLSPClientProxyFactory');
|
|
22
|
+
|
|
23
|
+
export type GLSPClientProxyFactory = (connection: jsonrpc.MessageConnection) => GLSPClientProxy;
|
|
24
|
+
|
|
25
|
+
export const GLSPClientProxy = Symbol('GLSPClientProxy');
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Json-rpc client proxy interface to hide the underlying json-rpc logic.
|
|
29
|
+
*/
|
|
30
|
+
export interface GLSPClientProxy {
|
|
31
|
+
/**
|
|
32
|
+
* A `process` notification is sent from the server to server to the client when the client should handle i.e.
|
|
33
|
+
* process a specific {@link ActionMessage}. Any communication that is performed between initialization and shutdown
|
|
34
|
+
* is handled by sending action messages, either from the client to the server or from the server to the client. This
|
|
35
|
+
* is the core part of the Graphical Language Server Protocol.
|
|
36
|
+
*
|
|
37
|
+
* @param message The {@link ActionMessage} that should be processed.
|
|
38
|
+
*/
|
|
39
|
+
process(message: ActionMessage): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const JsonRpcGLSPClientProxy = Symbol('JsonRpcGLSPClientProxy');
|
|
43
|
+
|
|
44
|
+
export interface JsonRpcGLSPClientProxy extends GLSPClientProxy {
|
|
45
|
+
connect(connection: jsonrpc.MessageConnection): void;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@injectable()
|
|
49
|
+
export class DefaultGLSPClientProxy implements JsonRpcGLSPClientProxy {
|
|
50
|
+
@inject(Logger)
|
|
51
|
+
private logger: Logger;
|
|
52
|
+
|
|
53
|
+
protected connection: jsonrpc.MessageConnection;
|
|
54
|
+
|
|
55
|
+
connect(connection: jsonrpc.MessageConnection): void {
|
|
56
|
+
if (!this.connection) {
|
|
57
|
+
this.connection = connection;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
process(message: ActionMessage): void {
|
|
62
|
+
this.logger.debug(`Send action '${message.action.kind}' to client '${message.clientId}'`);
|
|
63
|
+
this.connection.sendNotification(JsonrpcGLSPClient.ActionMessageNotification, message);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 { GLSPServer } from './glsp-server';
|
|
17
|
+
|
|
18
|
+
export const GLSPServerListener = Symbol('GLSPServerListener');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A listener to track the connection status of {@link GLSPClient}s (i.e. client applications).
|
|
22
|
+
* Gets notified when a new GLSP client connects or disconnects.
|
|
23
|
+
*/
|
|
24
|
+
export interface GLSPServerListener {
|
|
25
|
+
/**
|
|
26
|
+
* Triggered after a GLSPServer has been initialized via the {@link GLSPServer.initialize()}
|
|
27
|
+
* method.
|
|
28
|
+
*
|
|
29
|
+
* @param server The GLSPServer which has been initialized.
|
|
30
|
+
*/
|
|
31
|
+
serverInitialized?(server: GLSPServer): void;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Triggered after the {@link GLSPServer.shutdown()} method has been invoked.
|
|
35
|
+
*
|
|
36
|
+
* @param glspServer The glspServer which has been shut down.
|
|
37
|
+
*/
|
|
38
|
+
serverShutDown?(server: GLSPServer): void;
|
|
39
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
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 { DisposeClientSessionParameters, InitializeClientSessionParameters, InitializeParameters } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { expect } from 'chai';
|
|
18
|
+
import { Container, ContainerModule } from 'inversify';
|
|
19
|
+
import * as sinon from 'sinon';
|
|
20
|
+
import { GlobalActionProvider } from '../actions/global-action-provider';
|
|
21
|
+
import { ClientSessionManager } from '../session/client-session-manager';
|
|
22
|
+
import * as mock from '../test/mock-util';
|
|
23
|
+
import { Logger } from '../utils/logger';
|
|
24
|
+
import { GLSPClientProxy, JsonRpcGLSPClientProxy } from './glsp-client-proxy';
|
|
25
|
+
import { DefaultGLSPServer } from './glsp-server';
|
|
26
|
+
import { GLSPServerListener } from './glsp-server-listener';
|
|
27
|
+
import assert = require('assert');
|
|
28
|
+
|
|
29
|
+
describe('test DefaultGLSPServer', () => {
|
|
30
|
+
const container = new Container();
|
|
31
|
+
const clientSessionId = 'myClientSession';
|
|
32
|
+
const diagramType = 'myDiagram';
|
|
33
|
+
const applicationId = 'Test';
|
|
34
|
+
const protocolVersion = '1.0.0';
|
|
35
|
+
const serverActionKinds = new Map<string, string[]>();
|
|
36
|
+
serverActionKinds.set(diagramType, ['A1', 'A2']);
|
|
37
|
+
const sessionManager = new mock.StubClientSessionManager();
|
|
38
|
+
const spy_sessionManager_getOrCreate = sinon.spy(sessionManager, 'getOrCreateClientSession');
|
|
39
|
+
const spy_sessionManager_dispose = sinon.spy(sessionManager, 'disposeClientSession');
|
|
40
|
+
const listener1 = new mock.StubGLSPServerListener();
|
|
41
|
+
const spy_listener1_initialize = sinon.spy(listener1, 'serverInitialized');
|
|
42
|
+
const spy_listener1_shutdown = sinon.spy(listener1, 'serverShutDown');
|
|
43
|
+
const listener2 = new mock.StubGLSPServerListener();
|
|
44
|
+
const spy_listener2_initialize = sinon.spy(listener2, 'serverInitialized');
|
|
45
|
+
const spy_listener2_shutdown = sinon.spy(listener2, 'serverShutDown');
|
|
46
|
+
|
|
47
|
+
container.load(
|
|
48
|
+
new ContainerModule(bind => {
|
|
49
|
+
bind(Logger).toConstantValue(new mock.StubLogger());
|
|
50
|
+
bind(GLSPClientProxy).toConstantValue(new mock.StubGLSPClientProxy());
|
|
51
|
+
bind(JsonRpcGLSPClientProxy).toConstantValue(new mock.StubGLSPClientProxy());
|
|
52
|
+
bind(ClientSessionManager).toConstantValue(sessionManager);
|
|
53
|
+
bind(GlobalActionProvider).toConstantValue({ clientActionKinds: new Map<string, string[]>(), serverActionKinds });
|
|
54
|
+
bind(GLSPServerListener).toConstantValue(listener1);
|
|
55
|
+
})
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const glspServer = container.resolve(DefaultGLSPServer);
|
|
59
|
+
|
|
60
|
+
beforeEach(() => {
|
|
61
|
+
spy_sessionManager_getOrCreate.restore();
|
|
62
|
+
spy_sessionManager_dispose.restore();
|
|
63
|
+
spy_listener1_initialize.restore();
|
|
64
|
+
spy_listener1_shutdown.restore();
|
|
65
|
+
spy_listener2_initialize.restore();
|
|
66
|
+
spy_listener2_shutdown.restore();
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('Test calls before server initialization (should throw errors)', async () => {
|
|
70
|
+
assert.rejects(() => glspServer.initializeClientSession({ clientSessionId: 'id', diagramType: 'type' }));
|
|
71
|
+
assert.rejects(() => glspServer.disposeClientSession({ clientSessionId: 'id' }));
|
|
72
|
+
assert.throws(() => glspServer.process({ clientId: 'id', action: { kind: 'action' } }));
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('addListener - add existing listener', () => {
|
|
76
|
+
const originalSize = glspServer['serverListeners'].length;
|
|
77
|
+
glspServer.addListener(listener1);
|
|
78
|
+
expect(glspServer['serverListeners'].length).to.be.equal(originalSize);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('addListener - add new listener', () => {
|
|
82
|
+
const originalSize = glspServer['serverListeners'].length;
|
|
83
|
+
glspServer.addListener(listener2);
|
|
84
|
+
expect(glspServer['serverListeners']).to.include(listener2);
|
|
85
|
+
expect(glspServer['serverListeners'].length).to.be.equal(originalSize + 1);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('removeListener - remove non-existing listener', () => {
|
|
89
|
+
const originalSize = glspServer['serverListeners'].length;
|
|
90
|
+
glspServer.removeListener({});
|
|
91
|
+
expect(glspServer['serverListeners'].length).to.be.equal(originalSize);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it('removeListener - remove existing listener', () => {
|
|
95
|
+
const originalSize = glspServer['serverListeners'].length;
|
|
96
|
+
glspServer.removeListener(listener2);
|
|
97
|
+
expect(glspServer['serverListeners'].length).to.be.equal(originalSize - 1);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it('initialize - with wrong protocol version', async () => {
|
|
101
|
+
const initializeParameters: InitializeParameters = { applicationId, protocolVersion: 'abc' };
|
|
102
|
+
assert.rejects(glspServer.initialize(initializeParameters));
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('initialize - with correct parameters', async () => {
|
|
106
|
+
const initializeParameters: InitializeParameters = { applicationId, protocolVersion };
|
|
107
|
+
const result = await glspServer.initialize(initializeParameters);
|
|
108
|
+
expect(result.protocolVersion).to.be.equal(protocolVersion);
|
|
109
|
+
expect(result.serverActions[diagramType]).to.be.equal(serverActionKinds.get(diagramType));
|
|
110
|
+
expect(result.serverActions[diagramType]).to.be.equal(serverActionKinds.get(diagramType));
|
|
111
|
+
expect(spy_listener1_initialize.calledWith(glspServer));
|
|
112
|
+
expect(spy_listener2_initialize.notCalled);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('initialize - subsequent call with same parameters', async () => {
|
|
116
|
+
const initializeParameters: InitializeParameters = { applicationId, protocolVersion };
|
|
117
|
+
const result = await glspServer.initialize(initializeParameters);
|
|
118
|
+
expect(result.protocolVersion).to.be.equal(protocolVersion);
|
|
119
|
+
expect(result.serverActions[diagramType]).to.be.equal(serverActionKinds.get(diagramType));
|
|
120
|
+
expect(result.serverActions[diagramType]).to.be.equal(serverActionKinds.get(diagramType));
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('initialize - subsequent call with other parameters', async () => {
|
|
124
|
+
const initializeParameters = { applicationId: 'someOtherApp', protocolVersion: 'AnotherProtocolVersion' };
|
|
125
|
+
await assert.rejects(() => glspServer.initialize(initializeParameters));
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('initialize client session', async () => {
|
|
129
|
+
const initializeClientSessionParameters: InitializeClientSessionParameters = {
|
|
130
|
+
clientSessionId,
|
|
131
|
+
diagramType
|
|
132
|
+
};
|
|
133
|
+
await glspServer.initializeClientSession(initializeClientSessionParameters);
|
|
134
|
+
expect(spy_sessionManager_getOrCreate.calledWith(initializeClientSessionParameters));
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it('dispose client session', async () => {
|
|
138
|
+
const disposeClientSessionParameters: DisposeClientSessionParameters = {
|
|
139
|
+
clientSessionId
|
|
140
|
+
};
|
|
141
|
+
await glspServer.disposeClientSession(disposeClientSessionParameters);
|
|
142
|
+
expect(spy_sessionManager_dispose.calledWith(clientSessionId));
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it('shutdown server', async () => {
|
|
146
|
+
glspServer.shutdown();
|
|
147
|
+
expect(spy_listener1_shutdown.calledWith(glspServer));
|
|
148
|
+
expect(spy_listener2_shutdown.notCalled);
|
|
149
|
+
});
|
|
150
|
+
});
|