@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,50 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { Action, ActionMessage } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { inject, injectable, optional } from 'inversify';
|
|
18
|
+
import { ClientActionKinds, ClientId } from '../di/service-identifiers';
|
|
19
|
+
import { GLSPClientProxy } from '../protocol/glsp-client-proxy';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* The client action handler is responsible of handling action kinds that are intended for the
|
|
23
|
+
* GLSP client, by sending them to the client over json-rpc.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
@injectable()
|
|
27
|
+
export class ClientActionHandler implements ClientActionHandler {
|
|
28
|
+
@inject(GLSPClientProxy)
|
|
29
|
+
@optional()
|
|
30
|
+
protected glspClient?: GLSPClientProxy;
|
|
31
|
+
|
|
32
|
+
@inject(ClientId)
|
|
33
|
+
protected readonly clientId: string;
|
|
34
|
+
|
|
35
|
+
constructor(@inject(ClientActionKinds) @optional() public actionKinds: string[] = []) {}
|
|
36
|
+
|
|
37
|
+
execute(action: Action): [] {
|
|
38
|
+
this.send(action);
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
protected send(action: Action): void {
|
|
43
|
+
const message: ActionMessage = { action, clientId: this.clientId };
|
|
44
|
+
if (this.glspClient) {
|
|
45
|
+
this.glspClient.process(message);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
throw new Error('Could not send message to client. No GLSPClientProxy is defined');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { Container, ContainerModule } from 'inversify';
|
|
17
|
+
import { ClientActionKinds, DiagramModules, InjectionContainer } from '../di/service-identifiers';
|
|
18
|
+
import { ClientSessionInitializer } from '../session/client-session-initializer';
|
|
19
|
+
import * as mock from '../test/mock-util';
|
|
20
|
+
import { Logger } from '../utils/logger';
|
|
21
|
+
import { ActionHandler } from './action-handler';
|
|
22
|
+
import { ActionHandlerRegistry } from './action-handler-registry';
|
|
23
|
+
import { DefaultGlobalActionProvider } from './global-action-provider';
|
|
24
|
+
import * as sinon from 'sinon';
|
|
25
|
+
import { expect } from 'chai';
|
|
26
|
+
|
|
27
|
+
describe('test DefaultGlobalActionProvider', () => {
|
|
28
|
+
const container = new Container();
|
|
29
|
+
const serverActions = ['A1', 'A2', 'A3'];
|
|
30
|
+
const clientActions = ['C1', 'C2'];
|
|
31
|
+
const diagramType = 'myDiagramType';
|
|
32
|
+
|
|
33
|
+
const handler1Actions = ['A1', 'A2'];
|
|
34
|
+
const handler2Actions = ['A2', 'A3'];
|
|
35
|
+
|
|
36
|
+
const h1 = new mock.StubActionHandler(handler1Actions);
|
|
37
|
+
const h2 = new mock.StubActionHandler(handler2Actions);
|
|
38
|
+
|
|
39
|
+
const handlerRegistry = new ActionHandlerRegistry();
|
|
40
|
+
sinon.stub(handlerRegistry, 'getAll').returns([h1, h2]);
|
|
41
|
+
|
|
42
|
+
const diagramModule1 = new ContainerModule(bind => {
|
|
43
|
+
bind(ClientSessionInitializer).toConstantValue(new mock.StubClientSessionInitializer());
|
|
44
|
+
bind(ActionHandler).toConstantValue(new mock.StubActionHandler(handler1Actions));
|
|
45
|
+
bind(ActionHandler).toConstantValue(new mock.StubActionHandler(handler2Actions));
|
|
46
|
+
bind(ActionHandlerRegistry).toConstantValue(handlerRegistry);
|
|
47
|
+
bind(ClientActionKinds).toConstantValue(clientActions[0]);
|
|
48
|
+
bind(ClientActionKinds).toConstantValue(clientActions[1]);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
const diagramModules = new Map<string, ContainerModule[]>();
|
|
52
|
+
diagramModules.set(diagramType, [diagramModule1]);
|
|
53
|
+
|
|
54
|
+
container.load(
|
|
55
|
+
new ContainerModule(bind => {
|
|
56
|
+
bind(Logger).toConstantValue(new mock.StubLogger());
|
|
57
|
+
bind(InjectionContainer).toConstantValue(container);
|
|
58
|
+
bind(DiagramModules).toConstantValue(diagramModules);
|
|
59
|
+
})
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
const actionProvider = container.resolve(DefaultGlobalActionProvider);
|
|
63
|
+
|
|
64
|
+
it('serverActionsKinds', () => {
|
|
65
|
+
const result = actionProvider.serverActionKinds;
|
|
66
|
+
expect(result.size).to.be.equal(1);
|
|
67
|
+
const resultServerActions = result.get(diagramType);
|
|
68
|
+
expect(resultServerActions).to.not.be.undefined;
|
|
69
|
+
expect(serverActions.every(action => resultServerActions!.includes(action))).true;
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('clientActionKinds', () => {
|
|
73
|
+
const result = actionProvider.clientActionKinds;
|
|
74
|
+
expect(result.size).to.be.equal(1);
|
|
75
|
+
const resultClientActions = result.get(diagramType);
|
|
76
|
+
expect(resultClientActions).to.not.be.undefined;
|
|
77
|
+
expect(clientActions.every(action => resultClientActions!.includes(action))).true;
|
|
78
|
+
});
|
|
79
|
+
});
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { Container, ContainerModule, inject, injectable } from 'inversify';
|
|
17
|
+
import { ClientActionKinds, DiagramModules, InjectionContainer } from '../di/service-identifiers';
|
|
18
|
+
import { ClientSessionInitializer } from '../session/client-session-initializer';
|
|
19
|
+
import { ActionHandlerRegistry } from './action-handler-registry';
|
|
20
|
+
import { ClientActionHandler } from './client-action-handler';
|
|
21
|
+
|
|
22
|
+
export const GlobalActionProvider = Symbol('GlobalActionProvider');
|
|
23
|
+
|
|
24
|
+
export interface GlobalActionProvider {
|
|
25
|
+
readonly serverActionKinds: Map<string, string[]>;
|
|
26
|
+
readonly clientActionKinds: Map<string, string[]>;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@injectable()
|
|
30
|
+
export class DefaultGlobalActionProvider implements GlobalActionProvider {
|
|
31
|
+
public readonly serverActionKinds: Map<string, string[]>;
|
|
32
|
+
public readonly clientActionKinds: Map<string, string[]>;
|
|
33
|
+
|
|
34
|
+
constructor(
|
|
35
|
+
@inject(InjectionContainer) serverContainer: Container,
|
|
36
|
+
@inject(DiagramModules) diagramModules: Map<string, ContainerModule[]>
|
|
37
|
+
) {
|
|
38
|
+
this.serverActionKinds = new Map();
|
|
39
|
+
this.clientActionKinds = new Map();
|
|
40
|
+
diagramModules.forEach((modules, diagramType) => {
|
|
41
|
+
const container = this.createDiagramContainer(serverContainer, modules);
|
|
42
|
+
const initializers = container.getAll<ClientSessionInitializer>(ClientSessionInitializer);
|
|
43
|
+
initializers.forEach(service => service.initialize());
|
|
44
|
+
this.loadServerActionKinds(diagramType, container);
|
|
45
|
+
this.loadClientActionKinds(diagramType, container);
|
|
46
|
+
container.unbindAll();
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
createDiagramContainer(serverContainer: Container, modules: ContainerModule[]): Container {
|
|
51
|
+
const container = serverContainer.createChild();
|
|
52
|
+
container.load(...modules);
|
|
53
|
+
return container;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
loadServerActionKinds(diagramType: string, diagramContainer: Container): void {
|
|
57
|
+
const handlerRegistry = diagramContainer.get<ActionHandlerRegistry>(ActionHandlerRegistry);
|
|
58
|
+
const diagramServerActions = this.serverActionKinds.get(diagramType) ?? [];
|
|
59
|
+
handlerRegistry
|
|
60
|
+
.getAll()
|
|
61
|
+
.filter(handler => !(handler instanceof ClientActionHandler))
|
|
62
|
+
.forEach(handler => diagramServerActions.push(...handler.actionKinds));
|
|
63
|
+
this.serverActionKinds.set(diagramType, [...new Set(diagramServerActions)]);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
loadClientActionKinds(diagramType: string, diagramContainer: Container): void {
|
|
67
|
+
const clientActionKinds = diagramContainer.getAll<string>(ClientActionKinds);
|
|
68
|
+
const diagramClientActions = this.clientActionKinds.get(diagramType) ?? [];
|
|
69
|
+
diagramClientActions.push(...clientActionKinds);
|
|
70
|
+
this.clientActionKinds.set(diagramType, diagramClientActions);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
import { Command } from './command';
|
|
18
|
+
|
|
19
|
+
export const CommandStack = Symbol('CommandStack');
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* A basic implementation of an undoable stack of commands.
|
|
23
|
+
* See {@link Command} for more details about the command methods that this implementation uses.
|
|
24
|
+
*/
|
|
25
|
+
export interface CommandStack {
|
|
26
|
+
/**
|
|
27
|
+
* Clears any redoable commands not yet redone, adds the command, and then executes the command.
|
|
28
|
+
* @param command the command to execute.
|
|
29
|
+
*/
|
|
30
|
+
execute(command: Command): void;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Moves the top of the stack down, undoing what was formerly the top command.
|
|
34
|
+
*/
|
|
35
|
+
undo(): void;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Moves the top of the stack up, redoing the new top command.
|
|
39
|
+
*/
|
|
40
|
+
redo(): void;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* The command stack has currently unsaved changes.
|
|
44
|
+
*/
|
|
45
|
+
isDirty(): boolean;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Called after a save has been successfully performed.
|
|
49
|
+
*/
|
|
50
|
+
saveIsDone(): void;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
@injectable()
|
|
54
|
+
export class DefaultCommandStack implements CommandStack {
|
|
55
|
+
execute(command: Command): void {
|
|
56
|
+
// no-op
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
undo(): void {
|
|
60
|
+
// no-op
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
redo(): void {
|
|
64
|
+
// no-op
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
isDirty(): boolean {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
saveIsDone(): void {
|
|
72
|
+
// no-op
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 STMicroelectronics and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* An interface that every command is expected to support.
|
|
19
|
+
* A command can be executed, it can be undone, and can then be redone.
|
|
20
|
+
*/
|
|
21
|
+
export interface Command {
|
|
22
|
+
/**
|
|
23
|
+
* Performs the command activity required for the effect.
|
|
24
|
+
*/
|
|
25
|
+
execute(): void;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Performs the command activity required to `undo` the effects of a preceding `execute` (or `redo`).
|
|
29
|
+
* The effect, if any, of calling `undo` before `execute` or `redo` have been called, is undefined.
|
|
30
|
+
*/
|
|
31
|
+
undo(): void;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Performs the command activity required to `redo` the effect after undoing the effect.
|
|
35
|
+
* The effect, if any, of calling `redo` before `undo` is called is undefined.
|
|
36
|
+
* Note that if you implement `redo` to call `execute` then any derived class will be restricted by that decision also.
|
|
37
|
+
*/
|
|
38
|
+
redo(): void;
|
|
39
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* This Source Code may also be made available under the following Secondary
|
|
9
|
+
* Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
* Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
* with the GNU Classpath Exception which is available at
|
|
12
|
+
* https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
*
|
|
14
|
+
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
|
+
********************************************************************************/
|
|
16
|
+
import { expect } from 'chai';
|
|
17
|
+
import { Container, ContainerModule, interfaces } from 'inversify';
|
|
18
|
+
import * as sinon from 'sinon';
|
|
19
|
+
import { applyBindingTarget } from './binding-target';
|
|
20
|
+
// Simple no op classes to construct inversify binding syntaxes.
|
|
21
|
+
class Target {}
|
|
22
|
+
|
|
23
|
+
class SubTarget extends Target {}
|
|
24
|
+
|
|
25
|
+
describe('BindingTarget', () => {
|
|
26
|
+
describe('bindTarget()', () => {
|
|
27
|
+
// Setup nested spies for the fluent inversify binding API
|
|
28
|
+
let context: {
|
|
29
|
+
bind: sinon.SinonStub<[serviceIdentifier: interfaces.ServiceIdentifier<any>], interfaces.BindingToSyntax<any>>;
|
|
30
|
+
isBound: sinon.SinonStub<[serviceIdentifier: interfaces.ServiceIdentifier<any>], boolean>;
|
|
31
|
+
};
|
|
32
|
+
let toSyntax: sinon.SinonStubbedInstance<interfaces.BindingToSyntax<any>>;
|
|
33
|
+
let whenOnSyntax: sinon.SinonStubbedInstance<interfaces.BindingWhenOnSyntax<any>>;
|
|
34
|
+
|
|
35
|
+
const setupStubs = (): {
|
|
36
|
+
context: {
|
|
37
|
+
bind: sinon.SinonStub<[serviceIdentifier: interfaces.ServiceIdentifier<any>], interfaces.BindingToSyntax<any>>;
|
|
38
|
+
isBound: sinon.SinonStub<[serviceIdentifier: interfaces.ServiceIdentifier<any>], boolean>;
|
|
39
|
+
};
|
|
40
|
+
toSyntax: sinon.SinonStubbedInstance<interfaces.BindingToSyntax<any>>;
|
|
41
|
+
inWhenOnSyntax: sinon.SinonStubbedInstance<interfaces.BindingInWhenOnSyntax<any>>;
|
|
42
|
+
whenOnSyntax: sinon.SinonStubbedInstance<interfaces.BindingWhenOnSyntax<any>>;
|
|
43
|
+
} => {
|
|
44
|
+
const container = new Container();
|
|
45
|
+
const bind = sinon.stub<[serviceIdentifier: interfaces.ServiceIdentifier<any>], interfaces.BindingToSyntax<any>>();
|
|
46
|
+
const isBound = sinon.stub<[serviceIdentifier: interfaces.ServiceIdentifier<any>], boolean>();
|
|
47
|
+
|
|
48
|
+
let toSyntax: sinon.SinonStubbedInstance<interfaces.BindingToSyntax<any>> = {} as any;
|
|
49
|
+
let inWhenOnSyntax: sinon.SinonStubbedInstance<interfaces.BindingInWhenOnSyntax<any>> = {} as any;
|
|
50
|
+
container.load(
|
|
51
|
+
new ContainerModule(_bind => {
|
|
52
|
+
const toStub = _bind('StubMe');
|
|
53
|
+
inWhenOnSyntax = sinon.stub(toStub.to(Target));
|
|
54
|
+
whenOnSyntax = sinon.stub(toStub.toConstantValue(''));
|
|
55
|
+
toSyntax = sinon.stub(toStub);
|
|
56
|
+
|
|
57
|
+
bind.returns(toSyntax);
|
|
58
|
+
toSyntax.to.returns(inWhenOnSyntax);
|
|
59
|
+
toSyntax.toSelf.returns(inWhenOnSyntax);
|
|
60
|
+
toSyntax.toDynamicValue.returns(inWhenOnSyntax);
|
|
61
|
+
toSyntax.toService.returns();
|
|
62
|
+
})
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
return {
|
|
66
|
+
context: { bind, isBound },
|
|
67
|
+
toSyntax,
|
|
68
|
+
inWhenOnSyntax,
|
|
69
|
+
whenOnSyntax
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
beforeEach(() => {
|
|
74
|
+
const stubs = setupStubs();
|
|
75
|
+
context = stubs.context;
|
|
76
|
+
toSyntax = stubs.toSyntax;
|
|
77
|
+
whenOnSyntax = stubs.whenOnSyntax;
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
describe('Bind to constructor', () => {
|
|
81
|
+
it('Should bind the service identifier `to` the given target with no scope', () => {
|
|
82
|
+
applyBindingTarget(context, Target, SubTarget);
|
|
83
|
+
expect(toSyntax.to.calledOnceWith(SubTarget)).to.be.true;
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it('Should bind the service identifier `toSelf` with no scope', () => {
|
|
87
|
+
applyBindingTarget(context, Target, Target);
|
|
88
|
+
expect(toSyntax.toSelf.calledOnce).to.be.true;
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
describe('Bind to service', () => {
|
|
93
|
+
it('Should bind the service identifier `service` using the given target service with no scope', () => {
|
|
94
|
+
context.isBound.returns(true);
|
|
95
|
+
applyBindingTarget(context, Target, { service: SubTarget });
|
|
96
|
+
expect(toSyntax.toService.calledOnceWith(SubTarget)).to.be.true;
|
|
97
|
+
});
|
|
98
|
+
it('Should throw an error because the given target service is not bound', () => {
|
|
99
|
+
context.isBound.returns(false);
|
|
100
|
+
expect(() => applyBindingTarget(context, Target, { service: SubTarget, autoBind: false })).to.throw();
|
|
101
|
+
});
|
|
102
|
+
it('Should bind the unbound target service to itself before applying the toService binding', () => {
|
|
103
|
+
context.isBound.returns(false);
|
|
104
|
+
applyBindingTarget(context, Target, { service: SubTarget });
|
|
105
|
+
expect(context.bind.calledWith(Target)).to.be.true;
|
|
106
|
+
});
|
|
107
|
+
it('The return syntax should be no op and invocation of a syntax function should throw an error', () => {
|
|
108
|
+
context.isBound.returns(true);
|
|
109
|
+
const syntax = applyBindingTarget(context, Target, { service: SubTarget });
|
|
110
|
+
expect(() => {
|
|
111
|
+
syntax.inRequestScope();
|
|
112
|
+
}).to.throw(
|
|
113
|
+
`${Target.toString()} has been bound to 'service'.` +
|
|
114
|
+
"Using 'in','when' or 'on' bindings after" +
|
|
115
|
+
"a 'toService' binding is not possible."
|
|
116
|
+
);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
describe('Bind to constant value', () => {
|
|
121
|
+
it('Should bind the service identifier `toConstantValue` using the given target with no scope', () => {
|
|
122
|
+
const subTarget = new SubTarget();
|
|
123
|
+
applyBindingTarget(context, Target, { constantValue: subTarget });
|
|
124
|
+
expect(toSyntax.toConstantValue.calledOnceWith(subTarget)).to.be.true;
|
|
125
|
+
});
|
|
126
|
+
it("The return syntax's in functions should be no op and invocation should log a warning", () => {
|
|
127
|
+
const spy = sinon.spy(console, 'warn');
|
|
128
|
+
const subTarget = new SubTarget();
|
|
129
|
+
const syntax = applyBindingTarget(context, Target, { constantValue: subTarget });
|
|
130
|
+
syntax.inSingletonScope();
|
|
131
|
+
expect(
|
|
132
|
+
spy.calledWith(
|
|
133
|
+
`${Target.toString()} has been bound to 'constantValue'. Binding in Singleton scope has no effect.` +
|
|
134
|
+
'Constant value bindings are effectively Singleton bindings.'
|
|
135
|
+
)
|
|
136
|
+
).to.be.true;
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
describe('Bind to dynamic value', () => {
|
|
141
|
+
it('Should bind the service identifier `toDynamicValue` using the given factory function with no scope', () => {
|
|
142
|
+
applyBindingTarget(context, Target, { dynamicValue: context => new SubTarget() });
|
|
143
|
+
expect(toSyntax.toDynamicValue.calledOnce);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2022-2023 EclipseSource 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 { AnyObject, Constructor } from '@eclipse-glsp/protocol';
|
|
17
|
+
import { interfaces } from 'inversify';
|
|
18
|
+
/**
|
|
19
|
+
* Collection of utility types and functions to enable flexible service binding with dedicated
|
|
20
|
+
* binding methods in the GLSP DI modules
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Binds the given service identifier to the given {@link BindingTarget}. If the service identifier is
|
|
25
|
+
* a {@link Constructor} and the target is the same constructor the service identifier will be bound to itself.
|
|
26
|
+
* @param bind The inversify bind function (typically provided from a GLSP DI module)
|
|
27
|
+
* @param serviceIdentifier The service identifier that should be bound.
|
|
28
|
+
* @param target The binding target.
|
|
29
|
+
* @returns The corresponding {@link interfaces.BindingInWhenOnSyntax}.
|
|
30
|
+
*/
|
|
31
|
+
export function applyBindingTarget<T>(
|
|
32
|
+
context: { bind: interfaces.Bind; isBound: interfaces.IsBound },
|
|
33
|
+
serviceIdentifier: interfaces.ServiceIdentifier<T>,
|
|
34
|
+
target: BindingTarget<T>
|
|
35
|
+
): interfaces.BindingInWhenOnSyntax<T> {
|
|
36
|
+
if (isConstructor(target)) {
|
|
37
|
+
// If service identifier and target are the same constructor => self binding
|
|
38
|
+
return serviceIdentifier === target //
|
|
39
|
+
? context.bind(serviceIdentifier).toSelf()
|
|
40
|
+
: context.bind(serviceIdentifier).to(target);
|
|
41
|
+
} else if (ServiceTarget.is(target)) {
|
|
42
|
+
if (!context.isBound(target.service)) {
|
|
43
|
+
const autoBind = target.autoBind === undefined || target.autoBind === true;
|
|
44
|
+
if (autoBind && isConstructor(target.service)) {
|
|
45
|
+
context.bind(target.service).toSelf().inSingletonScope();
|
|
46
|
+
} else {
|
|
47
|
+
throw new Error(`The target service ${target.service.toString()} is not bound!. Cannot apply target binding`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
context.bind(serviceIdentifier).toService(target.service);
|
|
51
|
+
return NoOPSyntax.serviceSyntax(serviceIdentifier, target);
|
|
52
|
+
} else if (ConstantValueTarget.is(target)) {
|
|
53
|
+
const whenOnSyntax = context.bind(serviceIdentifier).toConstantValue(target.constantValue);
|
|
54
|
+
return NoOPSyntax.constantValueSyntax(serviceIdentifier, whenOnSyntax);
|
|
55
|
+
} else {
|
|
56
|
+
return context.bind(serviceIdentifier).toDynamicValue(_context => target.dynamicValue(_context));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function applyOptionalBindingTarget<T>(
|
|
61
|
+
context: { bind: interfaces.Bind; isBound: interfaces.IsBound },
|
|
62
|
+
serviceIdentifier: interfaces.ServiceIdentifier<T>,
|
|
63
|
+
target?: BindingTarget<T>
|
|
64
|
+
): interfaces.BindingInWhenOnSyntax<T> | undefined {
|
|
65
|
+
if (target) {
|
|
66
|
+
return applyBindingTarget(context, serviceIdentifier, target);
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* The different types of binding targets that can be returned by a dedicated binding method.
|
|
73
|
+
*/
|
|
74
|
+
export type BindingTarget<T> = Constructor<T> | DynamicValueTarget<T> | ConstantValueTarget<T> | ServiceTarget<T>;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Binding target for service identifiers that should be bound `toConstantValue`.
|
|
78
|
+
*/
|
|
79
|
+
export interface ConstantValueTarget<T> {
|
|
80
|
+
constantValue: T;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export namespace ConstantValueTarget {
|
|
84
|
+
export function is(object: any): object is ConstantValueTarget<unknown> {
|
|
85
|
+
return AnyObject.is(object) && 'constantValue' in object;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Binding target for service identifiers that should be bound `toService`.
|
|
91
|
+
*/
|
|
92
|
+
export interface ServiceTarget<T> {
|
|
93
|
+
service: interfaces.ServiceIdentifier<T>;
|
|
94
|
+
/**
|
|
95
|
+
* Boolean flag to configure how to handle unbound service identifiers.
|
|
96
|
+
* If `undefined` or `true` the {@link applyBindingTarget} function will attempt unbound constructor service identifiers
|
|
97
|
+
* to `self().inSingletonScope()`.
|
|
98
|
+
*/
|
|
99
|
+
autoBind?: boolean;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export namespace ServiceTarget {
|
|
103
|
+
export function is(object: any): object is ServiceTarget<unknown> {
|
|
104
|
+
return AnyObject.is(object) && 'service' in object;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Binding target for service identifiers that should be bound `toDynamicValue`.
|
|
110
|
+
*/
|
|
111
|
+
export interface DynamicValueTarget<T> {
|
|
112
|
+
dynamicValue(context: interfaces.Context): T;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* No-op binding syntax definitions for `constantValue` and `toService` bindings.
|
|
117
|
+
* Using this no-op syntaxes allows the {@link applyBindingTarget} function to return a {@link interfaces.BindingInWhenOnSyntax}
|
|
118
|
+
* independently of the actual {@link BindingTarget}.
|
|
119
|
+
*/
|
|
120
|
+
namespace NoOPSyntax {
|
|
121
|
+
export function constantValueSyntax(
|
|
122
|
+
serviceIdentifier: interfaces.ServiceIdentifier<any>,
|
|
123
|
+
syntax: interfaces.BindingWhenOnSyntax<any>
|
|
124
|
+
): interfaces.BindingInWhenOnSyntax<any> {
|
|
125
|
+
const noOpReturn = (scope: string): interfaces.BindingWhenOnSyntax<any> => {
|
|
126
|
+
console.warn(
|
|
127
|
+
`${serviceIdentifier.toString()} has been bound to 'constantValue'. Binding in ${scope} scope has no effect.` +
|
|
128
|
+
'Constant value bindings are effectively Singleton bindings.'
|
|
129
|
+
);
|
|
130
|
+
return syntax;
|
|
131
|
+
};
|
|
132
|
+
return {
|
|
133
|
+
...syntax,
|
|
134
|
+
inSingletonScope: () => noOpReturn('Singleton'),
|
|
135
|
+
inRequestScope: () => noOpReturn('Request'),
|
|
136
|
+
inTransientScope: () => noOpReturn('Transient')
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export function serviceSyntax(
|
|
141
|
+
serviceIdentifier: interfaces.ServiceIdentifier<any>,
|
|
142
|
+
target: BindingTarget<any>
|
|
143
|
+
): interfaces.BindingInWhenOnSyntax<any> {
|
|
144
|
+
const noOpReturn = (): interfaces.BindingInWhenOnSyntax<any> => {
|
|
145
|
+
const errorMsg =
|
|
146
|
+
`${serviceIdentifier.toString()} has been bound to 'service'.` +
|
|
147
|
+
"Using 'in','when' or 'on' bindings after" +
|
|
148
|
+
"a 'toService' binding is not possible.";
|
|
149
|
+
const error = new Error(errorMsg);
|
|
150
|
+
error.name = 'NoOpInvocation';
|
|
151
|
+
throw error;
|
|
152
|
+
};
|
|
153
|
+
const syntax = {
|
|
154
|
+
onActivation: noOpReturn,
|
|
155
|
+
when: noOpReturn,
|
|
156
|
+
whenAnyAncestorIs: noOpReturn,
|
|
157
|
+
whenAnyAncestorMatches: noOpReturn,
|
|
158
|
+
whenAnyAncestorNamed: noOpReturn,
|
|
159
|
+
whenAnyAncestorTagged: noOpReturn,
|
|
160
|
+
whenInjectedInto: noOpReturn,
|
|
161
|
+
whenNoAncestorIs: noOpReturn,
|
|
162
|
+
whenNoAncestorMatches: noOpReturn,
|
|
163
|
+
whenNoAncestorNamed: noOpReturn,
|
|
164
|
+
whenNoAncestorTagged: noOpReturn,
|
|
165
|
+
whenParentNamed: noOpReturn,
|
|
166
|
+
whenParentTagged: noOpReturn,
|
|
167
|
+
whenTargetIsDefault: noOpReturn,
|
|
168
|
+
whenTargetNamed: noOpReturn,
|
|
169
|
+
whenTargetTagged: noOpReturn,
|
|
170
|
+
inRequestScope: noOpReturn,
|
|
171
|
+
inSingletonScope: () => {
|
|
172
|
+
if (ServiceTarget.is(target)) {
|
|
173
|
+
// toService bindings are essentially singleTons.
|
|
174
|
+
// We don't throw an error in this case.
|
|
175
|
+
return syntax;
|
|
176
|
+
}
|
|
177
|
+
return noOpReturn();
|
|
178
|
+
},
|
|
179
|
+
inTransientScope: noOpReturn
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
return syntax;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
export function isConstructor(object: any): object is Constructor<unknown> {
|
|
187
|
+
return typeof object === 'function' && !!object.prototype && !!(object.prototype as any).constructor;
|
|
188
|
+
}
|