@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,131 @@
|
|
|
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 { GNode } from '@eclipse-glsp/graph';
|
|
17
|
+
import { RequestEditValidationAction, SetEditValidationResultAction, ValidationStatus } from '@eclipse-glsp/protocol';
|
|
18
|
+
import { expect } from 'chai';
|
|
19
|
+
import * as sinon from 'sinon';
|
|
20
|
+
import { TestContextEditValidator, TestLabelEditValidator } from '../../test/mock-util';
|
|
21
|
+
import { GModelIndex } from '../model/gmodel-index';
|
|
22
|
+
import { DefaultModelState } from '../model/model-state';
|
|
23
|
+
import { ContextEditValidator } from './context-edit-validator';
|
|
24
|
+
import { DefaultContextEditValidatorRegistry } from './context-edit-validator-registry';
|
|
25
|
+
import { LabelEditValidator } from './label-edit-validator';
|
|
26
|
+
import { RequestEditValidationHandler } from './request-edit-validation-handler';
|
|
27
|
+
|
|
28
|
+
describe('Test RequestEditValidationHandler', () => {
|
|
29
|
+
const contextEditValidators: ContextEditValidator[] = [new TestContextEditValidator()];
|
|
30
|
+
const modelState = new DefaultModelState();
|
|
31
|
+
Object.defineProperty(modelState, 'index', { value: new GModelIndex() });
|
|
32
|
+
sinon.stub(modelState.index, 'get').callsFake(() => new GNode());
|
|
33
|
+
const contextEditValidatorsRegistry = new DefaultContextEditValidatorRegistry(
|
|
34
|
+
modelState,
|
|
35
|
+
contextEditValidators,
|
|
36
|
+
new TestLabelEditValidator()
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
const requestEditValidationHandler = new RequestEditValidationHandler();
|
|
40
|
+
requestEditValidationHandler['contextEditValidatorRegistry'] = contextEditValidatorsRegistry;
|
|
41
|
+
|
|
42
|
+
it('requestContextEditValidation with ok result', async () => {
|
|
43
|
+
const actions = await requestEditValidationHandler.execute(
|
|
44
|
+
RequestEditValidationAction.create({ contextId: 'test', modelElementId: '', text: 'ok' })
|
|
45
|
+
);
|
|
46
|
+
expect(actions).to.have.length(1);
|
|
47
|
+
const action = actions[0];
|
|
48
|
+
|
|
49
|
+
expect(SetEditValidationResultAction.is(action)).to.be.true;
|
|
50
|
+
const setEditValidationResultAction = action as SetEditValidationResultAction;
|
|
51
|
+
const status = setEditValidationResultAction.status;
|
|
52
|
+
|
|
53
|
+
expect(status.severity).to.be.equal(ValidationStatus.Severity.OK);
|
|
54
|
+
expect(status.message).to.be.equal('ok');
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('requestContextEditValidation with warning result', async () => {
|
|
58
|
+
const actions = await requestEditValidationHandler.execute(
|
|
59
|
+
RequestEditValidationAction.create({ contextId: 'test', modelElementId: '', text: 'warning' })
|
|
60
|
+
);
|
|
61
|
+
expect(actions).to.have.length(1);
|
|
62
|
+
const action = actions[0];
|
|
63
|
+
|
|
64
|
+
expect(SetEditValidationResultAction.is(action)).to.be.true;
|
|
65
|
+
const setEditValidationResultAction = action as SetEditValidationResultAction;
|
|
66
|
+
const status = setEditValidationResultAction.status;
|
|
67
|
+
|
|
68
|
+
expect(status.severity).to.be.equal(ValidationStatus.Severity.WARNING);
|
|
69
|
+
expect(status.message).to.be.equal('warning');
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('requestContextEditValidation with error result', async () => {
|
|
73
|
+
const actions = await requestEditValidationHandler.execute(
|
|
74
|
+
RequestEditValidationAction.create({ contextId: 'test', modelElementId: '', text: 'error' })
|
|
75
|
+
);
|
|
76
|
+
expect(actions).to.have.length(1);
|
|
77
|
+
const action = actions[0];
|
|
78
|
+
|
|
79
|
+
expect(SetEditValidationResultAction.is(action)).to.be.true;
|
|
80
|
+
const setEditValidationResultAction = action as SetEditValidationResultAction;
|
|
81
|
+
const status = setEditValidationResultAction.status;
|
|
82
|
+
|
|
83
|
+
expect(status.severity).to.be.equal(ValidationStatus.Severity.ERROR);
|
|
84
|
+
expect(status.message).to.be.equal('error');
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('requestLabelEditValidation with ok result', async () => {
|
|
88
|
+
const actions = await requestEditValidationHandler.execute(
|
|
89
|
+
RequestEditValidationAction.create({ contextId: LabelEditValidator.CONTEXT_ID, modelElementId: '', text: 'ok' })
|
|
90
|
+
);
|
|
91
|
+
expect(actions).to.have.length(1);
|
|
92
|
+
const action = actions[0];
|
|
93
|
+
|
|
94
|
+
expect(SetEditValidationResultAction.is(action)).to.be.true;
|
|
95
|
+
const setEditValidationResultAction = action as SetEditValidationResultAction;
|
|
96
|
+
const status = setEditValidationResultAction.status;
|
|
97
|
+
|
|
98
|
+
expect(status.severity).to.be.equal(ValidationStatus.Severity.OK);
|
|
99
|
+
expect(status.message).to.be.equal('ok');
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('requestLabelEditValidation with warning result', async () => {
|
|
103
|
+
const actions = await requestEditValidationHandler.execute(
|
|
104
|
+
RequestEditValidationAction.create({ contextId: LabelEditValidator.CONTEXT_ID, modelElementId: '', text: 'warning' })
|
|
105
|
+
);
|
|
106
|
+
expect(actions).to.have.length(1);
|
|
107
|
+
const action = actions[0];
|
|
108
|
+
|
|
109
|
+
expect(SetEditValidationResultAction.is(action)).to.be.true;
|
|
110
|
+
const setEditValidationResultAction = action as SetEditValidationResultAction;
|
|
111
|
+
const status = setEditValidationResultAction.status;
|
|
112
|
+
|
|
113
|
+
expect(status.severity).to.be.equal(ValidationStatus.Severity.WARNING);
|
|
114
|
+
expect(status.message).to.be.equal('warning');
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('requestLabelEditValidation with error result', async () => {
|
|
118
|
+
const actions = await requestEditValidationHandler.execute(
|
|
119
|
+
RequestEditValidationAction.create({ contextId: LabelEditValidator.CONTEXT_ID, modelElementId: '', text: 'error' })
|
|
120
|
+
);
|
|
121
|
+
expect(actions).to.have.length(1);
|
|
122
|
+
const action = actions[0];
|
|
123
|
+
|
|
124
|
+
expect(SetEditValidationResultAction.is(action)).to.be.true;
|
|
125
|
+
const setEditValidationResultAction = action as SetEditValidationResultAction;
|
|
126
|
+
const status = setEditValidationResultAction.status;
|
|
127
|
+
|
|
128
|
+
expect(status.severity).to.be.equal(ValidationStatus.Severity.ERROR);
|
|
129
|
+
expect(status.message).to.be.equal('error');
|
|
130
|
+
});
|
|
131
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
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, MaybePromise, RequestEditValidationAction, SetEditValidationResultAction, ValidationStatus } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { ActionHandler } from '../../actions/action-handler';
|
|
19
|
+
import { Logger } from '../../utils/logger';
|
|
20
|
+
import { ContextEditValidatorRegistry } from './context-edit-validator-registry';
|
|
21
|
+
|
|
22
|
+
@injectable()
|
|
23
|
+
export class RequestEditValidationHandler implements ActionHandler {
|
|
24
|
+
actionKinds = [RequestEditValidationAction.KIND];
|
|
25
|
+
|
|
26
|
+
@inject(Logger)
|
|
27
|
+
protected logger: Logger;
|
|
28
|
+
|
|
29
|
+
@inject(ContextEditValidatorRegistry)
|
|
30
|
+
contextEditValidatorRegistry: ContextEditValidatorRegistry;
|
|
31
|
+
|
|
32
|
+
execute(action: RequestEditValidationAction): MaybePromise<Action[]> {
|
|
33
|
+
const validator = this.contextEditValidatorRegistry.get(action.contextId);
|
|
34
|
+
if (validator) {
|
|
35
|
+
const validationStatus = validator.validate(action);
|
|
36
|
+
return [SetEditValidationResultAction.create(validationStatus)];
|
|
37
|
+
} else {
|
|
38
|
+
const message = `No validator registered for the context '${action.contextId}'`;
|
|
39
|
+
this.logger.warn(message);
|
|
40
|
+
return [SetEditValidationResultAction.create({ severity: ValidationStatus.Severity.WARNING, message: message })];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
|
|
17
|
+
import { GModelRoot } from '@eclipse-glsp/graph';
|
|
18
|
+
import { MaybePromise } from '@eclipse-glsp/protocol';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A layout engine is able to compute layout information for a model.
|
|
22
|
+
*/
|
|
23
|
+
export interface LayoutEngine {
|
|
24
|
+
/**
|
|
25
|
+
* Computes a layout for the model state and modify the model accordingly.
|
|
26
|
+
* @returns the layouted {@link GModelRoot}.
|
|
27
|
+
*/
|
|
28
|
+
layout(): MaybePromise<GModelRoot>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export const LayoutEngine = Symbol('LayoutEngine');
|
|
@@ -0,0 +1,47 @@
|
|
|
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 { LayoutOperation, Operation } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable, optional } from 'inversify';
|
|
18
|
+
import { DiagramConfiguration, ServerLayoutKind } from '../../diagram/diagram-configuration';
|
|
19
|
+
import { OperationHandler } from '../../operations/operation-handler';
|
|
20
|
+
import { Logger } from '../../utils/logger';
|
|
21
|
+
import { LayoutEngine } from './layout-engine';
|
|
22
|
+
|
|
23
|
+
@injectable()
|
|
24
|
+
export class LayoutOperationHandler implements OperationHandler {
|
|
25
|
+
@inject(Logger)
|
|
26
|
+
protected logger: Logger;
|
|
27
|
+
|
|
28
|
+
@inject(LayoutEngine)
|
|
29
|
+
@optional()
|
|
30
|
+
protected layoutEngine?: LayoutEngine;
|
|
31
|
+
|
|
32
|
+
@inject(DiagramConfiguration)
|
|
33
|
+
protected diagramConfiguration: DiagramConfiguration;
|
|
34
|
+
|
|
35
|
+
readonly operationType = LayoutOperation.KIND;
|
|
36
|
+
async execute(operation: Operation): Promise<void> {
|
|
37
|
+
if (operation.kind === LayoutOperation.KIND) {
|
|
38
|
+
if (this.diagramConfiguration.layoutKind === ServerLayoutKind.MANUAL) {
|
|
39
|
+
if (this.layoutEngine) {
|
|
40
|
+
await this.layoutEngine.layout();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.logger.warn('Could not execute layout operation. No `LayoutEngine` is bound!');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -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 { injectable } from 'inversify';
|
|
17
|
+
|
|
18
|
+
export const GModelFactory = Symbol('GModelFactory');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A graph model factory produces a graph model from the model state; typically its contained source model.
|
|
22
|
+
*
|
|
23
|
+
* The responsibility of a {@link GModelFactory} implementation is to define how a {@link ModelState} is to be
|
|
24
|
+
* translated into a {@link GModelRoot} that is sent to the client for rendering. Before a {@link GModelFactory}
|
|
25
|
+
* is invoked, the {@link SourceModelStorage} has already been executed for loading the source model into the
|
|
26
|
+
* {@link ModelState}. The {@link GModelFactory} then produces the {@link GModelRoot} from the source model in the
|
|
27
|
+
* {@link ModelState}. Implementations of {@link GModelFactory} are usually specific to the type of source model, as
|
|
28
|
+
* they need to understand the source model in order to translate it into a graph model.
|
|
29
|
+
*
|
|
30
|
+
* The graph model factory is invoked after initial load of the source model and after each operation that is applied
|
|
31
|
+
* to the source model by an {@link OperationHandler} in order to update the graph model before sending it to the client
|
|
32
|
+
* for rendering.
|
|
33
|
+
*
|
|
34
|
+
* If an index is needed for mapping between the graph model and the source model, as is typically the case for
|
|
35
|
+
* {@link ActionHandler action handlers} and {@link OperationHandler operation handlers}, it is the responsibility of
|
|
36
|
+
* the graph model factory to create such an index while producing the graph model from the source model. The index
|
|
37
|
+
* shall be put into the model state too. Typically the {@link GModelIndex} is extended for a particular model source
|
|
38
|
+
* type as well.
|
|
39
|
+
*
|
|
40
|
+
* @see SourceModelStorage
|
|
41
|
+
* @see GModelIndex
|
|
42
|
+
*/
|
|
43
|
+
export interface GModelFactory {
|
|
44
|
+
/**
|
|
45
|
+
* Create a {@link GModelRoot} from the specified <code>modelState</code> and puts it into the
|
|
46
|
+
* <code>modelState</code>. Optionally, this step also produces and sets a {@link GModelIndex} in the model state
|
|
47
|
+
* that allows mapping from graph model elements to source model elements and vice versa.
|
|
48
|
+
*/
|
|
49
|
+
createModel(): void;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* GModelFactory to be used if the graph model is already available from the model source.
|
|
54
|
+
*/
|
|
55
|
+
@injectable()
|
|
56
|
+
export class GModelFactoryNullImpl implements GModelFactory {
|
|
57
|
+
createModel(): void {
|
|
58
|
+
// no-op
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
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 { GEdge, GModelElement, GModelElementConstructor, GModelRoot, GNode } from '@eclipse-glsp/graph';
|
|
17
|
+
import { TypeGuard } from '@eclipse-glsp/protocol';
|
|
18
|
+
import { injectable } from 'inversify';
|
|
19
|
+
import { getOrThrow, GLSPServerError } from '../../utils/glsp-server-error';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Is used to index all child elements of a {@link GModelRoot} by their id. Offers a set
|
|
23
|
+
* of query methods to retrieve indexed elements.
|
|
24
|
+
*/
|
|
25
|
+
@injectable()
|
|
26
|
+
export class GModelIndex {
|
|
27
|
+
protected idToElement: Map<string, GModelElement>;
|
|
28
|
+
protected typeToElements: Map<string, GModelElement[]>;
|
|
29
|
+
|
|
30
|
+
constructor() {
|
|
31
|
+
this.idToElement = new Map();
|
|
32
|
+
this.typeToElements = new Map();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
clear(): void {
|
|
36
|
+
this.idToElement.clear();
|
|
37
|
+
this.typeToElements.clear();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
indexRoot(root: GModelRoot): void {
|
|
41
|
+
this.clear();
|
|
42
|
+
this.doIndex(root);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
protected doIndex(element: GModelElement): void {
|
|
46
|
+
if (this.idToElement.has(element.id)) {
|
|
47
|
+
throw new GLSPServerError('Duplicate ID in model: ' + element.id);
|
|
48
|
+
}
|
|
49
|
+
this.idToElement.set(element.id, element);
|
|
50
|
+
const typeSet = this.typeToElements.get(element.type) ?? [];
|
|
51
|
+
typeSet.push(element);
|
|
52
|
+
this.typeToElements.set(element.type, typeSet);
|
|
53
|
+
(element.children ?? []).forEach(child => {
|
|
54
|
+
this.doIndex(child);
|
|
55
|
+
// Double check wether the parent reference of the child is set correctly
|
|
56
|
+
if (!child.parent) {
|
|
57
|
+
child.parent = element;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
find(elementId: string, predicate?: (test: GModelElement) => boolean): GModelElement | undefined {
|
|
63
|
+
const element = this.idToElement.get(elementId);
|
|
64
|
+
if (element && predicate ? predicate(element) : true) {
|
|
65
|
+
return element;
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
findByClass<G extends GModelElement>(elementTypeId: string, constructor: GModelElementConstructor<G>): G | undefined {
|
|
71
|
+
const element = this.find(elementTypeId);
|
|
72
|
+
if (element && element instanceof constructor) {
|
|
73
|
+
return element;
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Returns an optional {@link GModelElement} by its elementId.
|
|
80
|
+
*
|
|
81
|
+
* @param elementId The id of the requested {@link GModelElement}.
|
|
82
|
+
* @returns An optional instance of the {@link GModelElement}.
|
|
83
|
+
*/
|
|
84
|
+
get(elementId: string): GModelElement {
|
|
85
|
+
return getOrThrow(this.find(elementId), `Could not retrieve element with id: '${elementId}'`);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Returns a set of {@link GModelElement} instances by a Collection of elementIds.
|
|
90
|
+
*
|
|
91
|
+
* @param elementIds The ids to request the {@link GModelElement} from an array of elementIds.
|
|
92
|
+
* @returns A set of {@link GModelElement}s.
|
|
93
|
+
*/
|
|
94
|
+
getAll(elementIds: string[]): GModelElement[] {
|
|
95
|
+
return elementIds.map(id => this.idToElement.get(id)).filter(element => element) as GModelElement[];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Returns all elements of the type constructor contained in the {@link GModelRoot}.
|
|
100
|
+
*
|
|
101
|
+
* @type Type of the elements to be returned.
|
|
102
|
+
* @param constructor The class of which the returned elements should be instances.
|
|
103
|
+
* @returns A set containing the elements of type constructor.
|
|
104
|
+
*/
|
|
105
|
+
getAllByClass<G extends GModelElement>(constructor: GModelElementConstructor<G>): G[] {
|
|
106
|
+
return Array.from(this.idToElement.values()).filter(element => element instanceof constructor) as G[];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Returns a list of all {@link GModelElement} ids contained in this instance of the GModelIndex.
|
|
111
|
+
*
|
|
112
|
+
* @returns A list of elementIds.
|
|
113
|
+
*/
|
|
114
|
+
allIds(): string[] {
|
|
115
|
+
return Array.from(this.idToElement.keys());
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Returns all elements of a type {@link GModelRoot}.
|
|
120
|
+
*
|
|
121
|
+
* @param type Type of the elements to be returned.
|
|
122
|
+
* @returns A set containing the elements of the given type.
|
|
123
|
+
*/
|
|
124
|
+
getElements(type: string): GModelElement[] {
|
|
125
|
+
return this.typeToElements.get(type) ?? [];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Returns the current amount of type occurrences in this instance of the GModelIndex.
|
|
130
|
+
*
|
|
131
|
+
* @param eClass The EClass to be counted in this instance of the GModelIndex.
|
|
132
|
+
*
|
|
133
|
+
* @returns The amount of type occurrences.
|
|
134
|
+
*/
|
|
135
|
+
typeCount(type: string): number {
|
|
136
|
+
return this.getElements(type).length;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Returns all incoming edges for a node.
|
|
141
|
+
*
|
|
142
|
+
* @param node The node where the edges are connected.
|
|
143
|
+
*
|
|
144
|
+
* @returns All incoming edges.
|
|
145
|
+
*/
|
|
146
|
+
getIncomingEdges(node: GNode): GEdge[] {
|
|
147
|
+
return this.getAllEdges().filter(edge => edge.targetId === node.id);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Returns all outgoing edges for a node.
|
|
152
|
+
*
|
|
153
|
+
* @param node The node where the edges are connected.
|
|
154
|
+
*
|
|
155
|
+
* @returns All outgoing edges.
|
|
156
|
+
*/
|
|
157
|
+
getOutgoingEdges(node: GModelElement): GEdge[] {
|
|
158
|
+
return this.getAllEdges().filter(edge => edge.sourceId === node.id);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Returns all edges in the index.
|
|
163
|
+
*
|
|
164
|
+
* @returns All edges in the index.
|
|
165
|
+
*/
|
|
166
|
+
getAllEdges(): GEdge[] {
|
|
167
|
+
return this.getAllByClass(GEdge);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Returns the first element matching the given {@link TypeGuard} starting element with the
|
|
172
|
+
* given id and walking up the parent hierarchy.
|
|
173
|
+
*
|
|
174
|
+
* @param elementId The element to start the search from
|
|
175
|
+
* @param guard The typeguard which the element should match
|
|
176
|
+
* @return The first matching element or `undefined`.
|
|
177
|
+
*/
|
|
178
|
+
findParentElement<T extends GModelElement>(elementId: string, guard: TypeGuard<T>): T | undefined {
|
|
179
|
+
const element = this.get(elementId);
|
|
180
|
+
return element ? this._findElement(element, guard) : undefined;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
protected _findElement<T>(element: GModelElement, guard: TypeGuard<T>): T | undefined {
|
|
184
|
+
if (!element) {
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
if (guard(element)) {
|
|
188
|
+
return element;
|
|
189
|
+
}
|
|
190
|
+
if (element instanceof GModelRoot) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
return this._findElement(element.parent, guard);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
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 { GEdge, getDefaultMapping, GGraph, GNode } from '@eclipse-glsp/graph';
|
|
17
|
+
import { expect } from 'chai';
|
|
18
|
+
import { Container, ContainerModule } from 'inversify';
|
|
19
|
+
import { DiagramConfiguration } from '../../diagram/diagram-configuration';
|
|
20
|
+
import * as mock from '../../test/mock-util';
|
|
21
|
+
import { GLSPServerError } from '../../utils/glsp-server-error';
|
|
22
|
+
import { Logger } from '../../utils/logger';
|
|
23
|
+
import { DefaultGModelSerializer } from './gmodel-serializer';
|
|
24
|
+
|
|
25
|
+
class TestNode extends GNode {
|
|
26
|
+
foo(): void {
|
|
27
|
+
// should not be serialized to schema
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let testRootSchema: any;
|
|
32
|
+
|
|
33
|
+
let testNodeSchema: any;
|
|
34
|
+
|
|
35
|
+
let testNodeSchemaWithParent: any;
|
|
36
|
+
|
|
37
|
+
describe('test DefaultGModelSerializer', () => {
|
|
38
|
+
const container = new Container();
|
|
39
|
+
const diagramConfiguration = new mock.StubDiagramConfiguration();
|
|
40
|
+
diagramConfiguration['typeMapping'] = getDefaultMapping();
|
|
41
|
+
diagramConfiguration.typeMapping.set('node', TestNode);
|
|
42
|
+
|
|
43
|
+
container.load(
|
|
44
|
+
new ContainerModule(bind => {
|
|
45
|
+
bind(Logger).toConstantValue(new mock.StubLogger());
|
|
46
|
+
bind(DiagramConfiguration).toConstantValue(diagramConfiguration);
|
|
47
|
+
})
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const serializer = container.resolve(DefaultGModelSerializer);
|
|
51
|
+
|
|
52
|
+
beforeEach(() => {
|
|
53
|
+
testRootSchema = {
|
|
54
|
+
id: 'graph',
|
|
55
|
+
type: 'graph',
|
|
56
|
+
children: [
|
|
57
|
+
{ id: 'node1', type: 'node', position: { x: 5, y: 10 } },
|
|
58
|
+
{ id: 'node2', type: 'node', position: { x: 15, y: 5 } },
|
|
59
|
+
{ id: 'edge1', type: 'edge', sourceId: 'node1', targetId: 'node2' }
|
|
60
|
+
]
|
|
61
|
+
};
|
|
62
|
+
testNodeSchema = { id: 'node1', type: 'node', position: { x: 5, y: 10 }, children: [], cssClasses: [] };
|
|
63
|
+
testNodeSchemaWithParent = {
|
|
64
|
+
id: 'node1',
|
|
65
|
+
type: 'node',
|
|
66
|
+
position: { x: 5, y: 10 },
|
|
67
|
+
children: [],
|
|
68
|
+
cssClasses: [],
|
|
69
|
+
parent: new GNode()
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('createElement - unregistered type', () => {
|
|
74
|
+
testNodeSchema['type'] = 'notRegistered';
|
|
75
|
+
expect(() => serializer.createElement(testNodeSchema)).to.throw(GLSPServerError);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('createElement - with root schema', () => {
|
|
79
|
+
expect(() => serializer.createElement(testRootSchema)).to.throw(GLSPServerError);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('createElement - with node schema', () => {
|
|
83
|
+
const node = serializer.createElement(testNodeSchema);
|
|
84
|
+
expect(node).to.be.an.instanceOf(TestNode);
|
|
85
|
+
expect(node).to.be.deep.include(testNodeSchema);
|
|
86
|
+
expect((node as TestNode).foo).to.not.be.undefined;
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('createElement- with sub type of registered schema', () => {
|
|
90
|
+
testNodeSchema.type = 'node:rectangular';
|
|
91
|
+
const node = serializer.createElement(testNodeSchema);
|
|
92
|
+
expect(node).to.be.an.instanceOf(TestNode);
|
|
93
|
+
expect(node).to.be.deep.include(testNodeSchema);
|
|
94
|
+
expect((node as TestNode).foo).to.not.be.undefined;
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('createElement - with parent', () => {
|
|
98
|
+
const parent = new GNode();
|
|
99
|
+
const child = serializer.createElement(testNodeSchema, parent);
|
|
100
|
+
expect(child).to.be.an.instanceOf(TestNode);
|
|
101
|
+
expect(child).to.be.deep.include(testNodeSchemaWithParent);
|
|
102
|
+
expect(child.parent).to.be.equal(parent);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('createRoot - unregistered type', () => {
|
|
106
|
+
testRootSchema['type'] = 'notRegistered';
|
|
107
|
+
expect(() => serializer.createRoot(testNodeSchema)).to.throw(GLSPServerError);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it('createRoot - with child schema ', () => {
|
|
111
|
+
expect(() => serializer.createRoot(testNodeSchema)).to.throw(GLSPServerError);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it('createRoot - with registered root schema', () => {
|
|
115
|
+
const root = serializer.createRoot(testRootSchema);
|
|
116
|
+
expect(root).to.be.an.instanceOf(GGraph);
|
|
117
|
+
expect(root.children.length).to.be.equal(3);
|
|
118
|
+
const node1 = root.children[0];
|
|
119
|
+
expect(node1).to.be.an.instanceOf(TestNode);
|
|
120
|
+
const node2 = root.children[1];
|
|
121
|
+
expect(node2).to.be.an.instanceOf(TestNode);
|
|
122
|
+
expect(root.children[2]).to.be.an.instanceOf(GEdge);
|
|
123
|
+
const edge = root.children[2] as GEdge;
|
|
124
|
+
expect(edge.sourceId).to.be.equal(node1.id);
|
|
125
|
+
expect(edge.targetId).to.be.equal(node2.id);
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('createSchema- unregistered type', () => {
|
|
129
|
+
expect(() => serializer.createRoot({ id: 'id', type: 'unregistered' })).to.throw(GLSPServerError);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('createSchema- with node', () => {
|
|
133
|
+
const testNode = new TestNode();
|
|
134
|
+
testNode.position = { x: 5, y: 10 };
|
|
135
|
+
testNode.size = { width: 10, height: 100 };
|
|
136
|
+
testNode.layoutOptions = { ['my']: 'Options' };
|
|
137
|
+
const schema = serializer.createSchema(testNode);
|
|
138
|
+
delete (testNode as Partial<TestNode>).foo;
|
|
139
|
+
expect(schema).to.be.deep.include(testNode);
|
|
140
|
+
});
|
|
141
|
+
});
|