@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,175 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2017-2023 TypeFox and other
|
|
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
|
+
/* Derived from sprotty (https://github.com/eclipse/sprotty/blob/master/packages/sprotty/src/base/model/smodel-factory.ts) */
|
|
17
|
+
import { GModelElement, GModelElementConstructor, GModelElementSchema, GModelRoot, GModelRootSchema } from '@eclipse-glsp/graph';
|
|
18
|
+
import { SModelElementSchema, SModelRootSchema } from '@eclipse-glsp/protocol';
|
|
19
|
+
import { inject, injectable } from 'inversify';
|
|
20
|
+
import { DiagramConfiguration } from '../../diagram/diagram-configuration';
|
|
21
|
+
import { GLSPServerError } from '../../utils/glsp-server-error';
|
|
22
|
+
|
|
23
|
+
export const GModelSerializer = Symbol('GModelSerializer');
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The `GModelSerializer` is used to transform a graphical model received as serializable JSON schema into the ES6-class based
|
|
27
|
+
* model representation and vice versa. It has to be invoked for whenever a graphical model is received in JSON format
|
|
28
|
+
* (i.e. by the GLSP client) to derive the corresponding class based model which is used internally by the GLSP server. In addition,
|
|
29
|
+
* it has to be invoked before the graphical model is sent based to the client. This is necessary to resolve the parent-child cycles
|
|
30
|
+
* inside of the graphical model which ensures that the model is serializable.
|
|
31
|
+
*/
|
|
32
|
+
export interface GModelSerializer {
|
|
33
|
+
/**
|
|
34
|
+
* Transform the given {@link GModelRootSchema} into its {@link GModelRoot} representation.
|
|
35
|
+
* @throws An error if the received element cannot be transformed into a {@link GModelRoot}.
|
|
36
|
+
* @param schema The root schema that should be transformed.
|
|
37
|
+
* @returns The transformed {@link GModelRoot}.
|
|
38
|
+
*/
|
|
39
|
+
createRoot(schema: GModelRootSchema): GModelRoot;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Transform the given {@link GModelRootSchema} into its {@link GModelElement} representation.
|
|
43
|
+
* @throws An error if the received element cannot be transformed into a {@link GModelElement}.
|
|
44
|
+
* @param schema The element schema that should be transformed.
|
|
45
|
+
* @returns The transformed {@link GModelElement}.
|
|
46
|
+
*/
|
|
47
|
+
createElement(schema: GModelElementSchema, parent?: GModelElement): GModelElement;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Transforms the given {@link GModelElement} into its serializable {@link GModelElementSchema} representation.
|
|
51
|
+
* @param element The element that should be serialized.
|
|
52
|
+
* @returns The transformed {@link GModelElementSchema}.
|
|
53
|
+
*/
|
|
54
|
+
createSchema(element: GModelElement): GModelElementSchema;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The set of reserved property keys that should be excluded from serialization. Typically
|
|
58
|
+
* this set contains at least the `children` and `parent` keys to avoid parent-child cycles.
|
|
59
|
+
*/
|
|
60
|
+
reservedKeys: string[];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@injectable()
|
|
64
|
+
export class DefaultGModelSerializer implements GModelSerializer {
|
|
65
|
+
@inject(DiagramConfiguration) protected diagramConfiguration: DiagramConfiguration;
|
|
66
|
+
|
|
67
|
+
reservedKeys = ['children', 'parent', 'index', 'source', 'target'];
|
|
68
|
+
createRoot(schema: SModelElementSchema): GModelRoot {
|
|
69
|
+
const constructor = this.getConfiguredConstructor(schema);
|
|
70
|
+
if (constructor) {
|
|
71
|
+
const element = new constructor();
|
|
72
|
+
if (!(element instanceof GModelRoot)) {
|
|
73
|
+
throw new GLSPServerError(`Element with type '${schema.type}' is expected to be a GModelRoot!`);
|
|
74
|
+
}
|
|
75
|
+
return this.initializeRoot(element, schema);
|
|
76
|
+
}
|
|
77
|
+
throw new GLSPServerError(`No constructor is configured in DiagramConfiguration for type ${schema.type}`);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
getConfiguredConstructor(schema: SModelElementSchema): GModelElementConstructor | undefined {
|
|
81
|
+
let key = schema.type;
|
|
82
|
+
while (!this.diagramConfiguration.typeMapping.has(key)) {
|
|
83
|
+
const i = key.lastIndexOf(':');
|
|
84
|
+
if (i > 0) {
|
|
85
|
+
key = key.substring(0, i);
|
|
86
|
+
} else {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const constructor = this.diagramConfiguration.typeMapping.get(key)!;
|
|
92
|
+
if (key !== schema.type) {
|
|
93
|
+
this.diagramConfiguration.typeMapping.set(key, constructor);
|
|
94
|
+
}
|
|
95
|
+
return constructor;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
createElement(schema: SModelElementSchema, parent?: GModelElement): GModelElement {
|
|
99
|
+
const constructor = this.getConfiguredConstructor(schema);
|
|
100
|
+
if (constructor) {
|
|
101
|
+
const element = new constructor();
|
|
102
|
+
if (element instanceof GModelRoot) {
|
|
103
|
+
throw new GLSPServerError(
|
|
104
|
+
`Element with type '${schema.type}' is a GModelRoot! 'createElement()' is expected to only create child elements!`
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
return this.initializeChild(element, schema, parent);
|
|
108
|
+
}
|
|
109
|
+
throw new GLSPServerError(`No constructor is configured in DiagramConfiguration for type ${schema.type}`);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
createSchema(element: GModelElement): SModelElementSchema {
|
|
113
|
+
const schema = {};
|
|
114
|
+
for (const key in element) {
|
|
115
|
+
if (!this.isReserved(element, key)) {
|
|
116
|
+
const value: any = (element as any)[key];
|
|
117
|
+
if (typeof value !== 'function') {
|
|
118
|
+
(schema as any)[key] = value;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
(schema as any)['children'] = (element.children ?? []).map(child => this.createSchema(child));
|
|
123
|
+
|
|
124
|
+
return schema as SModelElementSchema;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
protected initializeRoot(root: GModelRoot, schema: SModelRootSchema): GModelRoot {
|
|
128
|
+
this.initializeParent(root, schema);
|
|
129
|
+
return root;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
protected initializeElement(element: GModelElement, schema: SModelElementSchema): GModelElement {
|
|
133
|
+
for (const key in schema) {
|
|
134
|
+
if (!this.isReserved(element, key)) {
|
|
135
|
+
const value = (schema as any)[key];
|
|
136
|
+
if (typeof value !== 'function') {
|
|
137
|
+
(element as any)[key] = value;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return element;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
protected initializeChild(child: GModelElement, schema: SModelElementSchema, parent?: GModelElement): GModelElement {
|
|
145
|
+
this.initializeParent(child, schema);
|
|
146
|
+
if (parent) {
|
|
147
|
+
child.parent = parent;
|
|
148
|
+
}
|
|
149
|
+
return child;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
protected initializeParent(parent: GModelElement, schema: SModelElementSchema): GModelElement {
|
|
153
|
+
this.initializeElement(parent, schema);
|
|
154
|
+
if (schema.children) {
|
|
155
|
+
parent.children = schema.children.map(childSchema => this.createElement(childSchema, parent));
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
return parent;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
protected isReserved(element: GModelElement, propertyName: string): boolean {
|
|
162
|
+
if (this.reservedKeys.indexOf(propertyName) >= 0) {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
let obj = element;
|
|
166
|
+
do {
|
|
167
|
+
const descriptor = Object.getOwnPropertyDescriptor(obj, propertyName);
|
|
168
|
+
if (descriptor !== undefined) {
|
|
169
|
+
return descriptor.get !== undefined;
|
|
170
|
+
}
|
|
171
|
+
obj = Object.getPrototypeOf(obj);
|
|
172
|
+
} while (obj);
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
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 { GModelRoot } from '@eclipse-glsp/graph';
|
|
17
|
+
import { EditMode } from '@eclipse-glsp/protocol';
|
|
18
|
+
import { inject, injectable } from 'inversify';
|
|
19
|
+
import { ClientId } from '../../di/service-identifiers';
|
|
20
|
+
import { GModelIndex } from './gmodel-index';
|
|
21
|
+
import { GModelSerializer } from './gmodel-serializer';
|
|
22
|
+
|
|
23
|
+
export const ModelState = Symbol('ModelState');
|
|
24
|
+
|
|
25
|
+
export interface ModelState {
|
|
26
|
+
set<P>(key: string, property: P): void;
|
|
27
|
+
setAll(properties: Record<string, unknown>): void;
|
|
28
|
+
get<P>(key: string, guard?: (object: unknown) => object is P): P | undefined;
|
|
29
|
+
clear(key: string): void;
|
|
30
|
+
readonly root: GModelRoot;
|
|
31
|
+
updateRoot(newRoot: GModelRoot): void;
|
|
32
|
+
editMode: string;
|
|
33
|
+
isDirty: boolean;
|
|
34
|
+
sourceUri?: string;
|
|
35
|
+
clientId: string;
|
|
36
|
+
readonly isReadonly: boolean;
|
|
37
|
+
readonly index: GModelIndex;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const SOURCE_URI_ARG = 'sourceUri';
|
|
41
|
+
|
|
42
|
+
@injectable()
|
|
43
|
+
export class DefaultModelState implements ModelState {
|
|
44
|
+
@inject(GModelIndex)
|
|
45
|
+
readonly index: GModelIndex;
|
|
46
|
+
|
|
47
|
+
@inject(GModelSerializer)
|
|
48
|
+
protected serializer: GModelSerializer;
|
|
49
|
+
|
|
50
|
+
@inject(ClientId)
|
|
51
|
+
readonly clientId: string;
|
|
52
|
+
|
|
53
|
+
protected properties = new Map<string, any>();
|
|
54
|
+
|
|
55
|
+
protected _root: GModelRoot;
|
|
56
|
+
|
|
57
|
+
editMode = EditMode.EDITABLE;
|
|
58
|
+
|
|
59
|
+
isDirty = false;
|
|
60
|
+
|
|
61
|
+
set<P>(key: string, property: P): void {
|
|
62
|
+
this.properties.set(key, property);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
setAll(properties: Record<string, unknown>): void {
|
|
66
|
+
Object.keys(properties).forEach(key => this.properties.set(key, properties[key]));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
get<P>(key: string, guard?: (object: unknown) => object is P): P | undefined {
|
|
70
|
+
const result = this.properties.get(key);
|
|
71
|
+
if (!guard) {
|
|
72
|
+
return result as P;
|
|
73
|
+
}
|
|
74
|
+
return guard(result) ? result : undefined;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
get sourceUri(): string | undefined {
|
|
78
|
+
return this.get(SOURCE_URI_ARG);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
clear(key: string): void {
|
|
82
|
+
this.properties.delete(key);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
get isReadonly(): boolean {
|
|
86
|
+
return this.editMode === EditMode.READONLY;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
public get root(): GModelRoot {
|
|
90
|
+
return this._root;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
protected set root(root: GModelRoot) {
|
|
94
|
+
this._root = root;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
updateRoot(newRoot: GModelRoot): void {
|
|
98
|
+
this.root = newRoot;
|
|
99
|
+
this.index.indexRoot(newRoot);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -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 { GModelRootSchema } from '@eclipse-glsp/graph';
|
|
17
|
+
import {
|
|
18
|
+
Action,
|
|
19
|
+
DirtyStateChangeReason,
|
|
20
|
+
MaybePromise,
|
|
21
|
+
RequestBoundsAction,
|
|
22
|
+
SetDirtyStateAction,
|
|
23
|
+
SetModelAction,
|
|
24
|
+
UpdateModelAction
|
|
25
|
+
} from '@eclipse-glsp/protocol';
|
|
26
|
+
import { inject, injectable, optional } from 'inversify';
|
|
27
|
+
import { DiagramConfiguration, ServerLayoutKind } from '../../diagram/diagram-configuration';
|
|
28
|
+
import { LayoutEngine } from '../layout/layout-engine';
|
|
29
|
+
import { GModelFactory } from './gmodel-factory';
|
|
30
|
+
import { GModelSerializer } from './gmodel-serializer';
|
|
31
|
+
import { ModelState } from './model-state';
|
|
32
|
+
|
|
33
|
+
@injectable()
|
|
34
|
+
export class ModelSubmissionHandler {
|
|
35
|
+
@inject(DiagramConfiguration)
|
|
36
|
+
protected diagramConfiguration: DiagramConfiguration;
|
|
37
|
+
|
|
38
|
+
@inject(GModelSerializer)
|
|
39
|
+
protected serializer: GModelSerializer;
|
|
40
|
+
|
|
41
|
+
@inject(GModelFactory)
|
|
42
|
+
protected modelFactory: GModelFactory;
|
|
43
|
+
|
|
44
|
+
@inject(ModelState)
|
|
45
|
+
protected modelState: ModelState;
|
|
46
|
+
|
|
47
|
+
@inject(LayoutEngine)
|
|
48
|
+
@optional()
|
|
49
|
+
protected layoutEngine: LayoutEngine;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Returns a list of actions to update the client-side model, based on the specified <code>modelState</code>.
|
|
53
|
+
*
|
|
54
|
+
* These actions are not processed by this {@link ModelSubmissionHandler}, but should be either manually dispatched
|
|
55
|
+
* to the `ActionDispatcher`, or simply returned as the result of an `ActionHandler.execute()` method.
|
|
56
|
+
*
|
|
57
|
+
* @param reason The optional reason that caused the model update.
|
|
58
|
+
* @returns A list of actions to be processed in order to submit the model.
|
|
59
|
+
*/
|
|
60
|
+
submitModel(reason?: DirtyStateChangeReason): MaybePromise<Action[]> {
|
|
61
|
+
this.modelFactory.createModel();
|
|
62
|
+
this.modelState.root.revision = (this.modelState.root.revision ?? 0) + 1;
|
|
63
|
+
const root = this.serializeGModel();
|
|
64
|
+
|
|
65
|
+
if (this.diagramConfiguration.needsClientLayout) {
|
|
66
|
+
return [RequestBoundsAction.create(root), SetDirtyStateAction.create(this.modelState.isDirty, { reason })];
|
|
67
|
+
}
|
|
68
|
+
return [SetModelAction.create(root)];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Returns a list of actions to directly update the client-side model without any server- or client-side layouting.
|
|
73
|
+
*
|
|
74
|
+
* Typically `ActionHandler`s don't invoke this method but use {@link submitModel()}
|
|
75
|
+
* instead, as this is only used to eventually submit the model on the client directly after all layouting is already
|
|
76
|
+
* performed before. The only foreseen caller of this method is `ComputedBoundsActionHandler`.
|
|
77
|
+
*
|
|
78
|
+
* These actions are not processed by this {@link ModelSubmissionHandler}, but should be either manually dispatched
|
|
79
|
+
* to the `ActionDispatcher`, or simply returned as the result of an
|
|
80
|
+
* `ActionHandler.execute()` method.
|
|
81
|
+
*
|
|
82
|
+
* @param reason The optional reason that caused the model update.
|
|
83
|
+
* @returns A list of actions to be processed in order to submit the model.
|
|
84
|
+
*/
|
|
85
|
+
async submitModelDirectly(reason?: DirtyStateChangeReason): Promise<Action[]> {
|
|
86
|
+
const root = this.serializeGModel();
|
|
87
|
+
|
|
88
|
+
if (this.diagramConfiguration.layoutKind === ServerLayoutKind.AUTOMATIC && this.layoutEngine) {
|
|
89
|
+
await this.layoutEngine.layout();
|
|
90
|
+
}
|
|
91
|
+
const result: Action[] = [];
|
|
92
|
+
result.push(
|
|
93
|
+
root.revision === 0
|
|
94
|
+
? SetModelAction.create(root)
|
|
95
|
+
: UpdateModelAction.create(root, { animate: this.diagramConfiguration.animatedUpdate })
|
|
96
|
+
);
|
|
97
|
+
if (!this.diagramConfiguration.needsClientLayout) {
|
|
98
|
+
result.push(SetDirtyStateAction.create(this.modelState.isDirty, { reason }));
|
|
99
|
+
}
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
protected serializeGModel(): GModelRootSchema {
|
|
104
|
+
return this.serializer.createSchema(this.modelState.root);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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, RequestModelAction, ServerMessageAction, ServerStatusAction } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { ActionDispatcher } from '../../actions/action-dispatcher';
|
|
19
|
+
import { ActionHandler } from '../../actions/action-handler';
|
|
20
|
+
import { Logger } from '../../utils/logger';
|
|
21
|
+
import { ModelState } from './model-state';
|
|
22
|
+
import { ModelSubmissionHandler } from './model-submission-handler';
|
|
23
|
+
import { SourceModelStorage } from './source-model-storage';
|
|
24
|
+
|
|
25
|
+
@injectable()
|
|
26
|
+
export class RequestModelActionHandler implements ActionHandler {
|
|
27
|
+
actionKinds = [RequestModelAction.KIND];
|
|
28
|
+
|
|
29
|
+
@inject(Logger)
|
|
30
|
+
private logger: Logger;
|
|
31
|
+
|
|
32
|
+
@inject(SourceModelStorage)
|
|
33
|
+
protected sourceModelStorage: SourceModelStorage;
|
|
34
|
+
|
|
35
|
+
@inject(ActionDispatcher)
|
|
36
|
+
protected actionDispatcher: ActionDispatcher;
|
|
37
|
+
|
|
38
|
+
@inject(ModelState)
|
|
39
|
+
protected modelState: ModelState;
|
|
40
|
+
|
|
41
|
+
@inject(ModelSubmissionHandler)
|
|
42
|
+
protected submissionHandler: ModelSubmissionHandler;
|
|
43
|
+
|
|
44
|
+
async execute(action: RequestModelAction): Promise<Action[]> {
|
|
45
|
+
this.logger.debug('Execute RequestModelAction:', action);
|
|
46
|
+
this.modelState.setAll(action.options ?? {});
|
|
47
|
+
|
|
48
|
+
this.notifyClient('Model loading in progress');
|
|
49
|
+
await this.sourceModelStorage.loadSourceModel(action);
|
|
50
|
+
// Clear the previous notification.
|
|
51
|
+
this.notifyClient();
|
|
52
|
+
return this.submissionHandler.submitModel();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Send a message and status notification with the given message to the client.
|
|
57
|
+
* An empty message is an indication for the client to clear previously received notifications.
|
|
58
|
+
* @param message The message that should be sent to the client
|
|
59
|
+
*/
|
|
60
|
+
protected notifyClient(message = ''): void {
|
|
61
|
+
const severity = message.length > 0 ? 'INFO' : 'NONE';
|
|
62
|
+
this.actionDispatcher.dispatchAll(
|
|
63
|
+
ServerMessageAction.create(message, { severity }),
|
|
64
|
+
ServerStatusAction.create(message, { severity })
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -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 { Action, SaveModelAction, SetDirtyStateAction } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable } from 'inversify';
|
|
18
|
+
import { ActionHandler } from '../../actions/action-handler';
|
|
19
|
+
import { ModelState } from './model-state';
|
|
20
|
+
import { SourceModelStorage } from './source-model-storage';
|
|
21
|
+
|
|
22
|
+
@injectable()
|
|
23
|
+
export class SaveModelActionHandler implements ActionHandler {
|
|
24
|
+
actionKinds = [SaveModelAction.KIND];
|
|
25
|
+
|
|
26
|
+
@inject(ModelState)
|
|
27
|
+
protected modelState: ModelState;
|
|
28
|
+
|
|
29
|
+
@inject(SourceModelStorage)
|
|
30
|
+
protected sourceModelStorage: SourceModelStorage;
|
|
31
|
+
|
|
32
|
+
async execute(action: SaveModelAction): Promise<Action[]> {
|
|
33
|
+
await this.sourceModelStorage.saveSourceModel(action);
|
|
34
|
+
this.modelState.isDirty = false; // TODO: call save is done when available
|
|
35
|
+
|
|
36
|
+
return [SetDirtyStateAction.create(this.modelState.isDirty, { reason: 'save' })];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
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, RequestModelAction, SaveModelAction } from '@eclipse-glsp/protocol';
|
|
17
|
+
|
|
18
|
+
export const SourceModelStorage = Symbol('SourceModelStorage');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A source model storage handles the persistence of source models, i.e. loading and saving it from/into the model state.
|
|
22
|
+
*
|
|
23
|
+
* A `source model` is an arbitrary model from which the graph model of the diagram is to be created.
|
|
24
|
+
* Implementations of source model loaders are specific to the type of source model or persistence format that is used
|
|
25
|
+
* for a type of source model. A source model loader obtains the information on which source model shall loaded from a
|
|
26
|
+
* {@link RequestModelAction}; typically its client options. Once the source model is loaded, a model loader is expected
|
|
27
|
+
* to put the loaded source model into the model state for further processing, such as transforming the loaded model
|
|
28
|
+
* into a graph model (see GModelFactory).
|
|
29
|
+
* On `saveSourceModel(SaveModelAction)`, the source model storage persists the source model from the model state.
|
|
30
|
+
*
|
|
31
|
+
* @see ClientOptionsUtil
|
|
32
|
+
* @see GModelFactory
|
|
33
|
+
*/
|
|
34
|
+
export interface SourceModelStorage {
|
|
35
|
+
/**
|
|
36
|
+
* Loads a source model into the `modelState`.
|
|
37
|
+
*
|
|
38
|
+
* @param action Action sent by the client to specifying the information needed to load the source model.
|
|
39
|
+
*/
|
|
40
|
+
loadSourceModel(action: RequestModelAction): MaybePromise<void>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Saves the source model from the `modelState`.
|
|
44
|
+
* Implementations are expected to throw an error if the save didn't work.
|
|
45
|
+
*
|
|
46
|
+
* @param action Action sent by the client to specifying the information needed to save the source model.
|
|
47
|
+
*/
|
|
48
|
+
saveSourceModel(action: SaveModelAction): MaybePromise<void>;
|
|
49
|
+
}
|
|
@@ -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
|
+
export class JsonOpenerOptions {
|
|
17
|
+
selection: TextSelection;
|
|
18
|
+
|
|
19
|
+
constructor(selection?: TextSelection) {
|
|
20
|
+
if (selection) {
|
|
21
|
+
this.selection = selection;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public toString(): string {
|
|
26
|
+
return `JsonOpenerOptions [selection=${this.selection}]`;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
public toJson(): string {
|
|
30
|
+
return JsonOpenerOptions.toJson(this);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
public static toJson(options: JsonOpenerOptions): string {
|
|
34
|
+
return JSON.stringify(options);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
public static fromJson(options: string): JsonOpenerOptions | undefined {
|
|
38
|
+
const parsed = JSON.parse(options);
|
|
39
|
+
return parsed instanceof JsonOpenerOptions ? parsed : undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export class TextSelection {
|
|
44
|
+
start: LinePosition;
|
|
45
|
+
end: LinePosition;
|
|
46
|
+
|
|
47
|
+
constructor(start: LinePosition, end: LinePosition) {
|
|
48
|
+
this.start = start;
|
|
49
|
+
this.end = end;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public toString(): string {
|
|
53
|
+
return `TextSelection [start=${this.start}, end=${this.end}]`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export class LinePosition {
|
|
58
|
+
line: number;
|
|
59
|
+
character: number;
|
|
60
|
+
|
|
61
|
+
constructor(line: number, character: number) {
|
|
62
|
+
this.line = line;
|
|
63
|
+
this.character = character;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public toString(): string {
|
|
67
|
+
return `LinePosition [line=${this.line}, character=${this.character}]`;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 { multiInject, optional } from 'inversify';
|
|
17
|
+
import { NavigationTargetProviders } from '../../di/service-identifiers';
|
|
18
|
+
import { Registry } from '../../utils/registry';
|
|
19
|
+
import { NavigationTargetProvider } from './navigation-target-provider';
|
|
20
|
+
|
|
21
|
+
export const NavigationTargetProviderRegistry = Symbol('NavigationTargetProviderRegistry');
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* This registry keeps track of registered {@link NavigationTargetProvider} for a certain target types.
|
|
25
|
+
*/
|
|
26
|
+
export interface NavigationTargetProviderRegistry extends Registry<string, NavigationTargetProvider> {}
|
|
27
|
+
|
|
28
|
+
export class DefaultNavigationTargetProviderRegistry
|
|
29
|
+
extends Registry<string, NavigationTargetProvider>
|
|
30
|
+
implements NavigationTargetProviderRegistry
|
|
31
|
+
{
|
|
32
|
+
constructor(@multiInject(NavigationTargetProviders) @optional() navigationTargetProviders: NavigationTargetProvider[] = []) {
|
|
33
|
+
super();
|
|
34
|
+
navigationTargetProviders.forEach(provider => this.register(provider.targetTypeId, provider));
|
|
35
|
+
}
|
|
36
|
+
}
|