@eclipse-glsp/server 1.1.0-RC05

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (618) hide show
  1. package/LICENSE +642 -0
  2. package/README.md +8 -0
  3. package/browser.d.ts +16 -0
  4. package/browser.js +18 -0
  5. package/lib/browser/di/app-module.d.ts +24 -0
  6. package/lib/browser/di/app-module.d.ts.map +1 -0
  7. package/lib/browser/di/app-module.js +55 -0
  8. package/lib/browser/di/app-module.js.map +1 -0
  9. package/lib/browser/di/console-logger.d.ts +29 -0
  10. package/lib/browser/di/console-logger.d.ts.map +1 -0
  11. package/lib/browser/di/console-logger.js +81 -0
  12. package/lib/browser/di/console-logger.js.map +1 -0
  13. package/lib/browser/index.d.ts +20 -0
  14. package/lib/browser/index.d.ts.map +1 -0
  15. package/lib/browser/index.js +36 -0
  16. package/lib/browser/index.js.map +1 -0
  17. package/lib/browser/launch/worker-server-launcher.d.ts +26 -0
  18. package/lib/browser/launch/worker-server-launcher.d.ts.map +1 -0
  19. package/lib/browser/launch/worker-server-launcher.js +65 -0
  20. package/lib/browser/launch/worker-server-launcher.js.map +1 -0
  21. package/lib/common/actions/action-dispatcher.d.ts +74 -0
  22. package/lib/common/actions/action-dispatcher.d.ts.map +1 -0
  23. package/lib/common/actions/action-dispatcher.js +128 -0
  24. package/lib/common/actions/action-dispatcher.js.map +1 -0
  25. package/lib/common/actions/action-dispatcher.spec.d.ts +2 -0
  26. package/lib/common/actions/action-dispatcher.spec.d.ts.map +1 -0
  27. package/lib/common/actions/action-dispatcher.spec.js +264 -0
  28. package/lib/common/actions/action-dispatcher.spec.js.map +1 -0
  29. package/lib/common/actions/action-handler-registry.d.ts +40 -0
  30. package/lib/common/actions/action-handler-registry.d.ts.map +1 -0
  31. package/lib/common/actions/action-handler-registry.js +65 -0
  32. package/lib/common/actions/action-handler-registry.js.map +1 -0
  33. package/lib/common/actions/action-handler-registry.spec.d.ts +2 -0
  34. package/lib/common/actions/action-handler-registry.spec.d.ts.map +1 -0
  35. package/lib/common/actions/action-handler-registry.spec.js +50 -0
  36. package/lib/common/actions/action-handler-registry.spec.js.map +1 -0
  37. package/lib/common/actions/action-handler.d.ts +55 -0
  38. package/lib/common/actions/action-handler.d.ts.map +1 -0
  39. package/lib/common/actions/action-handler.js +7 -0
  40. package/lib/common/actions/action-handler.js.map +1 -0
  41. package/lib/common/actions/client-action-handler.d.ts +30 -0
  42. package/lib/common/actions/client-action-handler.d.ts.map +1 -0
  43. package/lib/common/actions/client-action-handler.js +56 -0
  44. package/lib/common/actions/client-action-handler.js.map +1 -0
  45. package/lib/common/actions/global-action-provider.d.ts +30 -0
  46. package/lib/common/actions/global-action-provider.d.ts.map +1 -0
  47. package/lib/common/actions/global-action-provider.js +81 -0
  48. package/lib/common/actions/global-action-provider.js.map +1 -0
  49. package/lib/common/actions/global-action-provider.spec.d.ts +2 -0
  50. package/lib/common/actions/global-action-provider.spec.d.ts.map +1 -0
  51. package/lib/common/actions/global-action-provider.spec.js +70 -0
  52. package/lib/common/actions/global-action-provider.spec.js.map +1 -0
  53. package/lib/common/command/command-stack.d.ts +67 -0
  54. package/lib/common/command/command-stack.d.ts.map +1 -0
  55. package/lib/common/command/command-stack.js +117 -0
  56. package/lib/common/command/command-stack.js.map +1 -0
  57. package/lib/common/command/command-stack.spec.d.ts +2 -0
  58. package/lib/common/command/command-stack.spec.d.ts.map +1 -0
  59. package/lib/common/command/command-stack.spec.js +207 -0
  60. package/lib/common/command/command-stack.spec.js.map +1 -0
  61. package/lib/common/command/command.d.ts +63 -0
  62. package/lib/common/command/command.d.ts.map +1 -0
  63. package/lib/common/command/command.js +87 -0
  64. package/lib/common/command/command.js.map +1 -0
  65. package/lib/common/command/command.spec.d.ts +2 -0
  66. package/lib/common/command/command.spec.d.ts.map +1 -0
  67. package/lib/common/command/command.spec.js +86 -0
  68. package/lib/common/command/command.spec.js.map +1 -0
  69. package/lib/common/command/recording-command.d.ts +75 -0
  70. package/lib/common/command/recording-command.d.ts.map +1 -0
  71. package/lib/common/command/recording-command.js +99 -0
  72. package/lib/common/command/recording-command.js.map +1 -0
  73. package/lib/common/command/recording-command.spec.d.ts +17 -0
  74. package/lib/common/command/recording-command.spec.d.ts.map +1 -0
  75. package/lib/common/command/recording-command.spec.js +62 -0
  76. package/lib/common/command/recording-command.spec.js.map +1 -0
  77. package/lib/common/command/undo-redo-action-handler.d.ts +28 -0
  78. package/lib/common/command/undo-redo-action-handler.d.ts.map +1 -0
  79. package/lib/common/command/undo-redo-action-handler.js +72 -0
  80. package/lib/common/command/undo-redo-action-handler.js.map +1 -0
  81. package/lib/common/di/binding-target.d.ts +73 -0
  82. package/lib/common/di/binding-target.d.ts.map +1 -0
  83. package/lib/common/di/binding-target.js +143 -0
  84. package/lib/common/di/binding-target.js.map +1 -0
  85. package/lib/common/di/binding-target.spec.d.ts +2 -0
  86. package/lib/common/di/binding-target.spec.d.ts.map +1 -0
  87. package/lib/common/di/binding-target.spec.js +121 -0
  88. package/lib/common/di/binding-target.spec.js.map +1 -0
  89. package/lib/common/di/client-session-module.d.ts +19 -0
  90. package/lib/common/di/client-session-module.d.ts.map +1 -0
  91. package/lib/common/di/client-session-module.js +34 -0
  92. package/lib/common/di/client-session-module.js.map +1 -0
  93. package/lib/common/di/diagram-module.d.ts +130 -0
  94. package/lib/common/di/diagram-module.d.ts.map +1 -0
  95. package/lib/common/di/diagram-module.js +295 -0
  96. package/lib/common/di/diagram-module.js.map +1 -0
  97. package/lib/common/di/glsp-module.d.ts +47 -0
  98. package/lib/common/di/glsp-module.d.ts.map +1 -0
  99. package/lib/common/di/glsp-module.js +59 -0
  100. package/lib/common/di/glsp-module.js.map +1 -0
  101. package/lib/common/di/multi-binding.d.ts +41 -0
  102. package/lib/common/di/multi-binding.d.ts.map +1 -0
  103. package/lib/common/di/multi-binding.js +82 -0
  104. package/lib/common/di/multi-binding.js.map +1 -0
  105. package/lib/common/di/multi-bindings.spec.d.ts +2 -0
  106. package/lib/common/di/multi-bindings.spec.d.ts.map +1 -0
  107. package/lib/common/di/multi-bindings.spec.js +137 -0
  108. package/lib/common/di/multi-bindings.spec.js.map +1 -0
  109. package/lib/common/di/server-module.d.ts +73 -0
  110. package/lib/common/di/server-module.d.ts.map +1 -0
  111. package/lib/common/di/server-module.js +103 -0
  112. package/lib/common/di/server-module.js.map +1 -0
  113. package/lib/common/di/service-identifiers.d.ts +29 -0
  114. package/lib/common/di/service-identifiers.d.ts.map +1 -0
  115. package/lib/common/di/service-identifiers.js +14 -0
  116. package/lib/common/di/service-identifiers.js.map +1 -0
  117. package/lib/common/diagram/diagram-configuration.d.ts +89 -0
  118. package/lib/common/diagram/diagram-configuration.d.ts.map +1 -0
  119. package/lib/common/diagram/diagram-configuration.js +30 -0
  120. package/lib/common/diagram/diagram-configuration.js.map +1 -0
  121. package/lib/common/diagram/request-type-hints-action-handler.d.ts +25 -0
  122. package/lib/common/diagram/request-type-hints-action-handler.d.ts.map +1 -0
  123. package/lib/common/diagram/request-type-hints-action-handler.js +53 -0
  124. package/lib/common/diagram/request-type-hints-action-handler.js.map +1 -0
  125. package/lib/common/diagram/request-type-hints-action-handler.spec.d.ts +2 -0
  126. package/lib/common/diagram/request-type-hints-action-handler.spec.d.ts.map +1 -0
  127. package/lib/common/diagram/request-type-hints-action-handler.spec.js +57 -0
  128. package/lib/common/diagram/request-type-hints-action-handler.spec.js.map +1 -0
  129. package/lib/common/features/clipboard/request-clipboard-data-action-handler.d.ts +26 -0
  130. package/lib/common/features/clipboard/request-clipboard-data-action-handler.d.ts.map +1 -0
  131. package/lib/common/features/clipboard/request-clipboard-data-action-handler.js +61 -0
  132. package/lib/common/features/clipboard/request-clipboard-data-action-handler.js.map +1 -0
  133. package/lib/common/features/contextactions/command-palette-action-provider.d.ts +63 -0
  134. package/lib/common/features/contextactions/command-palette-action-provider.d.ts.map +1 -0
  135. package/lib/common/features/contextactions/command-palette-action-provider.js +72 -0
  136. package/lib/common/features/contextactions/command-palette-action-provider.js.map +1 -0
  137. package/lib/common/features/contextactions/context-actions-provider-registry.d.ts +12 -0
  138. package/lib/common/features/contextactions/context-actions-provider-registry.d.ts.map +1 -0
  139. package/lib/common/features/contextactions/context-actions-provider-registry.js +70 -0
  140. package/lib/common/features/contextactions/context-actions-provider-registry.js.map +1 -0
  141. package/lib/common/features/contextactions/context-actions-provider-registry.spec.d.ts +2 -0
  142. package/lib/common/features/contextactions/context-actions-provider-registry.spec.d.ts.map +1 -0
  143. package/lib/common/features/contextactions/context-actions-provider-registry.spec.js +34 -0
  144. package/lib/common/features/contextactions/context-actions-provider-registry.spec.js.map +1 -0
  145. package/lib/common/features/contextactions/context-actions-provider.d.ts +34 -0
  146. package/lib/common/features/contextactions/context-actions-provider.d.ts.map +1 -0
  147. package/lib/common/features/contextactions/context-actions-provider.js +5 -0
  148. package/lib/common/features/contextactions/context-actions-provider.js.map +1 -0
  149. package/lib/common/features/contextactions/context-menu-item-provider.d.ts +43 -0
  150. package/lib/common/features/contextactions/context-menu-item-provider.d.ts.map +1 -0
  151. package/lib/common/features/contextactions/context-menu-item-provider.js +36 -0
  152. package/lib/common/features/contextactions/context-menu-item-provider.js.map +1 -0
  153. package/lib/common/features/contextactions/request-context-actions-handler.d.ts +24 -0
  154. package/lib/common/features/contextactions/request-context-actions-handler.d.ts.map +1 -0
  155. package/lib/common/features/contextactions/request-context-actions-handler.js +53 -0
  156. package/lib/common/features/contextactions/request-context-actions-handler.js.map +1 -0
  157. package/lib/common/features/contextactions/request-context-actions-handler.spec.d.ts +2 -0
  158. package/lib/common/features/contextactions/request-context-actions-handler.spec.d.ts.map +1 -0
  159. package/lib/common/features/contextactions/request-context-actions-handler.spec.js +63 -0
  160. package/lib/common/features/contextactions/request-context-actions-handler.spec.js.map +1 -0
  161. package/lib/common/features/contextactions/tool-palette-item-provider.d.ts +50 -0
  162. package/lib/common/features/contextactions/tool-palette-item-provider.d.ts.map +1 -0
  163. package/lib/common/features/contextactions/tool-palette-item-provider.js +86 -0
  164. package/lib/common/features/contextactions/tool-palette-item-provider.js.map +1 -0
  165. package/lib/common/features/contextactions/tool-palette-item-provider.spec.d.ts +2 -0
  166. package/lib/common/features/contextactions/tool-palette-item-provider.spec.d.ts.map +1 -0
  167. package/lib/common/features/contextactions/tool-palette-item-provider.spec.js +48 -0
  168. package/lib/common/features/contextactions/tool-palette-item-provider.spec.js.map +1 -0
  169. package/lib/common/features/directediting/context-edit-validator-registry.d.ts +14 -0
  170. package/lib/common/features/directediting/context-edit-validator-registry.d.ts.map +1 -0
  171. package/lib/common/features/directediting/context-edit-validator-registry.js +57 -0
  172. package/lib/common/features/directediting/context-edit-validator-registry.js.map +1 -0
  173. package/lib/common/features/directediting/context-edit-validator-registry.spec.d.ts +2 -0
  174. package/lib/common/features/directediting/context-edit-validator-registry.spec.d.ts.map +1 -0
  175. package/lib/common/features/directediting/context-edit-validator-registry.spec.js +44 -0
  176. package/lib/common/features/directediting/context-edit-validator-registry.spec.js.map +1 -0
  177. package/lib/common/features/directediting/context-edit-validator.d.ts +25 -0
  178. package/lib/common/features/directediting/context-edit-validator.d.ts.map +1 -0
  179. package/lib/common/features/directediting/context-edit-validator.js +40 -0
  180. package/lib/common/features/directediting/context-edit-validator.js.map +1 -0
  181. package/lib/common/features/directediting/label-edit-validator.d.ts +32 -0
  182. package/lib/common/features/directediting/label-edit-validator.d.ts.map +1 -0
  183. package/lib/common/features/directediting/label-edit-validator.js +21 -0
  184. package/lib/common/features/directediting/label-edit-validator.js.map +1 -0
  185. package/lib/common/features/directediting/request-edit-validation-handler.d.ts +26 -0
  186. package/lib/common/features/directediting/request-edit-validation-handler.d.ts.map +1 -0
  187. package/lib/common/features/directediting/request-edit-validation-handler.js +61 -0
  188. package/lib/common/features/directediting/request-edit-validation-handler.js.map +1 -0
  189. package/lib/common/features/directediting/request-edit-validation-handler.spec.d.ts +2 -0
  190. package/lib/common/features/directediting/request-edit-validation-handler.spec.d.ts.map +1 -0
  191. package/lib/common/features/directediting/request-edit-validation-handler.spec.js +97 -0
  192. package/lib/common/features/directediting/request-edit-validation-handler.spec.js.map +1 -0
  193. package/lib/common/features/layout/computed-bounds-action-handler.d.ts +34 -0
  194. package/lib/common/features/layout/computed-bounds-action-handler.d.ts.map +1 -0
  195. package/lib/common/features/layout/computed-bounds-action-handler.js +55 -0
  196. package/lib/common/features/layout/computed-bounds-action-handler.js.map +1 -0
  197. package/lib/common/features/layout/layout-engine.d.ts +29 -0
  198. package/lib/common/features/layout/layout-engine.d.ts.map +1 -0
  199. package/lib/common/features/layout/layout-engine.js +20 -0
  200. package/lib/common/features/layout/layout-engine.js.map +1 -0
  201. package/lib/common/features/layout/layout-operation-handler.d.ts +37 -0
  202. package/lib/common/features/layout/layout-operation-handler.d.ts.map +1 -0
  203. package/lib/common/features/layout/layout-operation-handler.js +82 -0
  204. package/lib/common/features/layout/layout-operation-handler.js.map +1 -0
  205. package/lib/common/features/model/gmodel-factory.d.ts +39 -0
  206. package/lib/common/features/model/gmodel-factory.d.ts.map +1 -0
  207. package/lib/common/features/model/gmodel-factory.js +39 -0
  208. package/lib/common/features/model/gmodel-factory.js.map +1 -0
  209. package/lib/common/features/model/gmodel-index.d.ts +107 -0
  210. package/lib/common/features/model/gmodel-index.d.ts.map +1 -0
  211. package/lib/common/features/model/gmodel-index.js +193 -0
  212. package/lib/common/features/model/gmodel-index.js.map +1 -0
  213. package/lib/common/features/model/gmodel-serializer.d.ts +67 -0
  214. package/lib/common/features/model/gmodel-serializer.d.ts.map +1 -0
  215. package/lib/common/features/model/gmodel-serializer.js +143 -0
  216. package/lib/common/features/model/gmodel-serializer.js.map +1 -0
  217. package/lib/common/features/model/gmodel-serializer.spec.d.ts +2 -0
  218. package/lib/common/features/model/gmodel-serializer.spec.d.ts.map +1 -0
  219. package/lib/common/features/model/gmodel-serializer.spec.js +124 -0
  220. package/lib/common/features/model/gmodel-serializer.spec.js.map +1 -0
  221. package/lib/common/features/model/model-state.d.ts +51 -0
  222. package/lib/common/features/model/model-state.d.ts.map +1 -0
  223. package/lib/common/features/model/model-state.js +74 -0
  224. package/lib/common/features/model/model-state.js.map +1 -0
  225. package/lib/common/features/model/model-submission-handler.d.ts +58 -0
  226. package/lib/common/features/model/model-submission-handler.d.ts.map +1 -0
  227. package/lib/common/features/model/model-submission-handler.js +102 -0
  228. package/lib/common/features/model/model-submission-handler.js.map +1 -0
  229. package/lib/common/features/model/request-model-action-handler.d.ts +37 -0
  230. package/lib/common/features/model/request-model-action-handler.d.ts.map +1 -0
  231. package/lib/common/features/model/request-model-action-handler.js +83 -0
  232. package/lib/common/features/model/request-model-action-handler.js.map +1 -0
  233. package/lib/common/features/model/save-model-action-handler.d.ts +26 -0
  234. package/lib/common/features/model/save-model-action-handler.d.ts.map +1 -0
  235. package/lib/common/features/model/save-model-action-handler.js +54 -0
  236. package/lib/common/features/model/save-model-action-handler.js.map +1 -0
  237. package/lib/common/features/model/source-model-storage.d.ts +47 -0
  238. package/lib/common/features/model/source-model-storage.d.ts.map +1 -0
  239. package/lib/common/features/model/source-model-storage.js +5 -0
  240. package/lib/common/features/model/source-model-storage.js.map +1 -0
  241. package/lib/common/features/navigation/json-opener-options.d.ts +36 -0
  242. package/lib/common/features/navigation/json-opener-options.d.ts.map +1 -0
  243. package/lib/common/features/navigation/json-opener-options.js +60 -0
  244. package/lib/common/features/navigation/json-opener-options.js.map +1 -0
  245. package/lib/common/features/navigation/navigation-target-provider-registry.d.ts +12 -0
  246. package/lib/common/features/navigation/navigation-target-provider-registry.d.ts.map +1 -0
  247. package/lib/common/features/navigation/navigation-target-provider-registry.js +47 -0
  248. package/lib/common/features/navigation/navigation-target-provider-registry.js.map +1 -0
  249. package/lib/common/features/navigation/navigation-target-provider.d.ts +48 -0
  250. package/lib/common/features/navigation/navigation-target-provider.d.ts.map +1 -0
  251. package/lib/common/features/navigation/navigation-target-provider.js +5 -0
  252. package/lib/common/features/navigation/navigation-target-provider.js.map +1 -0
  253. package/lib/common/features/navigation/navigation-target-resolution.d.ts +23 -0
  254. package/lib/common/features/navigation/navigation-target-resolution.d.ts.map +1 -0
  255. package/lib/common/features/navigation/navigation-target-resolution.js +12 -0
  256. package/lib/common/features/navigation/navigation-target-resolution.js.map +1 -0
  257. package/lib/common/features/navigation/navigation-target-resolver.d.ts +31 -0
  258. package/lib/common/features/navigation/navigation-target-resolver.d.ts.map +1 -0
  259. package/lib/common/features/navigation/navigation-target-resolver.js +49 -0
  260. package/lib/common/features/navigation/navigation-target-resolver.js.map +1 -0
  261. package/lib/common/features/navigation/request-navigation-targets-action-handler.d.ts +24 -0
  262. package/lib/common/features/navigation/request-navigation-targets-action-handler.d.ts.map +1 -0
  263. package/lib/common/features/navigation/request-navigation-targets-action-handler.js +55 -0
  264. package/lib/common/features/navigation/request-navigation-targets-action-handler.js.map +1 -0
  265. package/lib/common/features/navigation/resolve-navigation-targets-action-handler.d.ts +26 -0
  266. package/lib/common/features/navigation/resolve-navigation-targets-action-handler.d.ts.map +1 -0
  267. package/lib/common/features/navigation/resolve-navigation-targets-action-handler.js +59 -0
  268. package/lib/common/features/navigation/resolve-navigation-targets-action-handler.js.map +1 -0
  269. package/lib/common/features/popup/popup-model-factory.d.ts +36 -0
  270. package/lib/common/features/popup/popup-model-factory.d.ts.map +1 -0
  271. package/lib/common/features/popup/popup-model-factory.js +20 -0
  272. package/lib/common/features/popup/popup-model-factory.js.map +1 -0
  273. package/lib/common/features/popup/request-popup-model-action-handler.d.ts +31 -0
  274. package/lib/common/features/popup/request-popup-model-action-handler.d.ts.map +1 -0
  275. package/lib/common/features/popup/request-popup-model-action-handler.js +77 -0
  276. package/lib/common/features/popup/request-popup-model-action-handler.js.map +1 -0
  277. package/lib/common/features/validation/model-validator.d.ts +33 -0
  278. package/lib/common/features/validation/model-validator.d.ts.map +1 -0
  279. package/lib/common/features/validation/model-validator.js +5 -0
  280. package/lib/common/features/validation/model-validator.js.map +1 -0
  281. package/lib/common/features/validation/request-markers-handler.d.ts +11 -0
  282. package/lib/common/features/validation/request-markers-handler.d.ts.map +1 -0
  283. package/lib/common/features/validation/request-markers-handler.js +70 -0
  284. package/lib/common/features/validation/request-markers-handler.js.map +1 -0
  285. package/lib/common/gmodel/apply-label-edit-operation-handler.d.ts +8 -0
  286. package/lib/common/gmodel/apply-label-edit-operation-handler.d.ts.map +1 -0
  287. package/lib/common/gmodel/apply-label-edit-operation-handler.js +46 -0
  288. package/lib/common/gmodel/apply-label-edit-operation-handler.js.map +1 -0
  289. package/lib/common/gmodel/change-bounds-operation-handler.d.ts +13 -0
  290. package/lib/common/gmodel/change-bounds-operation-handler.d.ts.map +1 -0
  291. package/lib/common/gmodel/change-bounds-operation-handler.js +71 -0
  292. package/lib/common/gmodel/change-bounds-operation-handler.js.map +1 -0
  293. package/lib/common/gmodel/change-routing-points-operation-handler.d.ts +24 -0
  294. package/lib/common/gmodel/change-routing-points-operation-handler.d.ts.map +1 -0
  295. package/lib/common/gmodel/change-routing-points-operation-handler.js +50 -0
  296. package/lib/common/gmodel/change-routing-points-operation-handler.js.map +1 -0
  297. package/lib/common/gmodel/cut-operation-handler.d.ts +26 -0
  298. package/lib/common/gmodel/cut-operation-handler.d.ts.map +1 -0
  299. package/lib/common/gmodel/cut-operation-handler.js +55 -0
  300. package/lib/common/gmodel/cut-operation-handler.js.map +1 -0
  301. package/lib/common/gmodel/delete-operation-handler.d.ts +32 -0
  302. package/lib/common/gmodel/delete-operation-handler.d.ts.map +1 -0
  303. package/lib/common/gmodel/delete-operation-handler.js +119 -0
  304. package/lib/common/gmodel/delete-operation-handler.js.map +1 -0
  305. package/lib/common/gmodel/gmodel-create-edge-operation-handler.d.ts +35 -0
  306. package/lib/common/gmodel/gmodel-create-edge-operation-handler.d.ts.map +1 -0
  307. package/lib/common/gmodel/gmodel-create-edge-operation-handler.js +64 -0
  308. package/lib/common/gmodel/gmodel-create-edge-operation-handler.js.map +1 -0
  309. package/lib/common/gmodel/gmodel-create-node-operation-handler.d.ts +58 -0
  310. package/lib/common/gmodel/gmodel-create-node-operation-handler.d.ts.map +1 -0
  311. package/lib/common/gmodel/gmodel-create-node-operation-handler.js +100 -0
  312. package/lib/common/gmodel/gmodel-create-node-operation-handler.js.map +1 -0
  313. package/lib/common/gmodel/gmodel-diagram-module.d.ts +31 -0
  314. package/lib/common/gmodel/gmodel-diagram-module.d.ts.map +1 -0
  315. package/lib/common/gmodel/gmodel-diagram-module.js +80 -0
  316. package/lib/common/gmodel/gmodel-diagram-module.js.map +1 -0
  317. package/lib/common/gmodel/gmodel-operation-handler.d.ts +23 -0
  318. package/lib/common/gmodel/gmodel-operation-handler.d.ts.map +1 -0
  319. package/lib/common/gmodel/gmodel-operation-handler.js +43 -0
  320. package/lib/common/gmodel/gmodel-operation-handler.js.map +1 -0
  321. package/lib/common/gmodel/index.d.ts +27 -0
  322. package/lib/common/gmodel/index.d.ts.map +1 -0
  323. package/lib/common/gmodel/index.js +43 -0
  324. package/lib/common/gmodel/index.js.map +1 -0
  325. package/lib/common/gmodel/paste-operation-handler.d.ts +36 -0
  326. package/lib/common/gmodel/paste-operation-handler.d.ts.map +1 -0
  327. package/lib/common/gmodel/paste-operation-handler.js +136 -0
  328. package/lib/common/gmodel/paste-operation-handler.js.map +1 -0
  329. package/lib/common/gmodel/reconnect-edge-operation-handler.d.ts +9 -0
  330. package/lib/common/gmodel/reconnect-edge-operation-handler.d.ts.map +1 -0
  331. package/lib/common/gmodel/reconnect-edge-operation-handler.js +64 -0
  332. package/lib/common/gmodel/reconnect-edge-operation-handler.js.map +1 -0
  333. package/lib/common/index.d.ts +89 -0
  334. package/lib/common/index.d.ts.map +1 -0
  335. package/lib/common/index.js +105 -0
  336. package/lib/common/index.js.map +1 -0
  337. package/lib/common/launch/glsp-server-launcher.d.ts +34 -0
  338. package/lib/common/launch/glsp-server-launcher.d.ts.map +1 -0
  339. package/lib/common/launch/glsp-server-launcher.js +64 -0
  340. package/lib/common/launch/glsp-server-launcher.js.map +1 -0
  341. package/lib/common/operations/compound-operation-handler.d.ts +25 -0
  342. package/lib/common/operations/compound-operation-handler.d.ts.map +1 -0
  343. package/lib/common/operations/compound-operation-handler.js +82 -0
  344. package/lib/common/operations/compound-operation-handler.js.map +1 -0
  345. package/lib/common/operations/create-operation-handler.d.ts +32 -0
  346. package/lib/common/operations/create-operation-handler.d.ts.map +1 -0
  347. package/lib/common/operations/create-operation-handler.js +31 -0
  348. package/lib/common/operations/create-operation-handler.js.map +1 -0
  349. package/lib/common/operations/operation-action-handler.d.ts +42 -0
  350. package/lib/common/operations/operation-action-handler.d.ts.map +1 -0
  351. package/lib/common/operations/operation-action-handler.js +109 -0
  352. package/lib/common/operations/operation-action-handler.js.map +1 -0
  353. package/lib/common/operations/operation-handler-registry.d.ts +38 -0
  354. package/lib/common/operations/operation-handler-registry.d.ts.map +1 -0
  355. package/lib/common/operations/operation-handler-registry.js +87 -0
  356. package/lib/common/operations/operation-handler-registry.js.map +1 -0
  357. package/lib/common/operations/operation-handler-registry.spec.d.ts +2 -0
  358. package/lib/common/operations/operation-handler-registry.spec.d.ts.map +1 -0
  359. package/lib/common/operations/operation-handler-registry.spec.js +50 -0
  360. package/lib/common/operations/operation-handler-registry.spec.js.map +1 -0
  361. package/lib/common/operations/operation-handler.d.ts +67 -0
  362. package/lib/common/operations/operation-handler.d.ts.map +1 -0
  363. package/lib/common/operations/operation-handler.js +56 -0
  364. package/lib/common/operations/operation-handler.js.map +1 -0
  365. package/lib/common/protocol/glsp-client-proxy.d.ts +45 -0
  366. package/lib/common/protocol/glsp-client-proxy.d.ts.map +1 -0
  367. package/lib/common/protocol/glsp-client-proxy.js +53 -0
  368. package/lib/common/protocol/glsp-client-proxy.js.map +1 -0
  369. package/lib/common/protocol/glsp-server-listener.d.ts +37 -0
  370. package/lib/common/protocol/glsp-server-listener.d.ts.map +1 -0
  371. package/lib/common/protocol/glsp-server-listener.js +5 -0
  372. package/lib/common/protocol/glsp-server-listener.js.map +1 -0
  373. package/lib/common/protocol/glsp-server.d.ts +150 -0
  374. package/lib/common/protocol/glsp-server.d.ts.map +1 -0
  375. package/lib/common/protocol/glsp-server.js +188 -0
  376. package/lib/common/protocol/glsp-server.js.map +1 -0
  377. package/lib/common/protocol/glsp-server.spec.d.ts +2 -0
  378. package/lib/common/protocol/glsp-server.spec.d.ts.map +1 -0
  379. package/lib/common/protocol/glsp-server.spec.js +119 -0
  380. package/lib/common/protocol/glsp-server.spec.js.map +1 -0
  381. package/lib/common/session/client-session-factory.d.ts +42 -0
  382. package/lib/common/session/client-session-factory.d.ts.map +1 -0
  383. package/lib/common/session/client-session-factory.js +54 -0
  384. package/lib/common/session/client-session-factory.js.map +1 -0
  385. package/lib/common/session/client-session-factory.spec.d.ts +2 -0
  386. package/lib/common/session/client-session-factory.spec.d.ts.map +1 -0
  387. package/lib/common/session/client-session-factory.spec.js +56 -0
  388. package/lib/common/session/client-session-factory.spec.js.map +1 -0
  389. package/lib/common/session/client-session-initializer.d.ts +26 -0
  390. package/lib/common/session/client-session-initializer.d.ts.map +1 -0
  391. package/lib/common/session/client-session-initializer.js +5 -0
  392. package/lib/common/session/client-session-initializer.js.map +1 -0
  393. package/lib/common/session/client-session-listener.d.ts +40 -0
  394. package/lib/common/session/client-session-listener.d.ts.map +1 -0
  395. package/lib/common/session/client-session-listener.js +3 -0
  396. package/lib/common/session/client-session-listener.js.map +1 -0
  397. package/lib/common/session/client-session-manager.d.ts +102 -0
  398. package/lib/common/session/client-session-manager.d.ts.map +1 -0
  399. package/lib/common/session/client-session-manager.js +116 -0
  400. package/lib/common/session/client-session-manager.js.map +1 -0
  401. package/lib/common/session/client-session-manager.spec.d.ts +2 -0
  402. package/lib/common/session/client-session-manager.spec.d.ts.map +1 -0
  403. package/lib/common/session/client-session-manager.spec.js +74 -0
  404. package/lib/common/session/client-session-manager.spec.js.map +1 -0
  405. package/lib/common/session/client-session.d.ts +52 -0
  406. package/lib/common/session/client-session.d.ts.map +1 -0
  407. package/lib/common/session/client-session.js +34 -0
  408. package/lib/common/session/client-session.js.map +1 -0
  409. package/lib/common/test/mock-util.d.ts +117 -0
  410. package/lib/common/test/mock-util.d.ts.map +1 -0
  411. package/lib/common/test/mock-util.js +194 -0
  412. package/lib/common/test/mock-util.js.map +1 -0
  413. package/lib/common/utils/args-util.d.ts +38 -0
  414. package/lib/common/utils/args-util.d.ts.map +1 -0
  415. package/lib/common/utils/args-util.js +81 -0
  416. package/lib/common/utils/args-util.js.map +1 -0
  417. package/lib/common/utils/client-options-util.d.ts +20 -0
  418. package/lib/common/utils/client-options-util.d.ts.map +1 -0
  419. package/lib/common/utils/client-options-util.js +26 -0
  420. package/lib/common/utils/client-options-util.js.map +1 -0
  421. package/lib/common/utils/glsp-server-error.d.ts +21 -0
  422. package/lib/common/utils/glsp-server-error.d.ts.map +1 -0
  423. package/lib/common/utils/glsp-server-error.js +33 -0
  424. package/lib/common/utils/glsp-server-error.js.map +1 -0
  425. package/lib/common/utils/layout-util.d.ts +74 -0
  426. package/lib/common/utils/layout-util.d.ts.map +1 -0
  427. package/lib/common/utils/layout-util.js +166 -0
  428. package/lib/common/utils/layout-util.js.map +1 -0
  429. package/lib/common/utils/logger.d.ts +27 -0
  430. package/lib/common/utils/logger.d.ts.map +1 -0
  431. package/lib/common/utils/logger.js +67 -0
  432. package/lib/common/utils/logger.js.map +1 -0
  433. package/lib/common/utils/promise-queue.d.ts +48 -0
  434. package/lib/common/utils/promise-queue.d.ts.map +1 -0
  435. package/lib/common/utils/promise-queue.js +93 -0
  436. package/lib/common/utils/promise-queue.js.map +1 -0
  437. package/lib/common/utils/promise-queue.spec.d.ts +2 -0
  438. package/lib/common/utils/promise-queue.spec.d.ts.map +1 -0
  439. package/lib/common/utils/promise-queue.spec.js +117 -0
  440. package/lib/common/utils/promise-queue.spec.js.map +1 -0
  441. package/lib/common/utils/registry.d.ts +73 -0
  442. package/lib/common/utils/registry.d.ts.map +1 -0
  443. package/lib/common/utils/registry.js +160 -0
  444. package/lib/common/utils/registry.js.map +1 -0
  445. package/lib/common/utils/registry.spec.d.ts +2 -0
  446. package/lib/common/utils/registry.spec.d.ts.map +1 -0
  447. package/lib/common/utils/registry.spec.js +199 -0
  448. package/lib/common/utils/registry.spec.js.map +1 -0
  449. package/lib/node/abstract-json-model-storage.d.ts +45 -0
  450. package/lib/node/abstract-json-model-storage.d.ts.map +1 -0
  451. package/lib/node/abstract-json-model-storage.js +103 -0
  452. package/lib/node/abstract-json-model-storage.js.map +1 -0
  453. package/lib/node/di/app-module.d.ts +36 -0
  454. package/lib/node/di/app-module.d.ts.map +1 -0
  455. package/lib/node/di/app-module.js +91 -0
  456. package/lib/node/di/app-module.js.map +1 -0
  457. package/lib/node/di/winston-logger.d.ts +32 -0
  458. package/lib/node/di/winston-logger.d.ts.map +1 -0
  459. package/lib/node/di/winston-logger.js +57 -0
  460. package/lib/node/di/winston-logger.js.map +1 -0
  461. package/lib/node/gmodel/gmodel-storage.d.ts +34 -0
  462. package/lib/node/gmodel/gmodel-storage.d.ts.map +1 -0
  463. package/lib/node/gmodel/gmodel-storage.js +68 -0
  464. package/lib/node/gmodel/gmodel-storage.js.map +1 -0
  465. package/lib/node/index.d.ts +24 -0
  466. package/lib/node/index.d.ts.map +1 -0
  467. package/lib/node/index.js +40 -0
  468. package/lib/node/index.js.map +1 -0
  469. package/lib/node/launch/cli-parser.d.ts +34 -0
  470. package/lib/node/launch/cli-parser.d.ts.map +1 -0
  471. package/lib/node/launch/cli-parser.js +71 -0
  472. package/lib/node/launch/cli-parser.js.map +1 -0
  473. package/lib/node/launch/cli-parser.spec.d.ts +2 -0
  474. package/lib/node/launch/cli-parser.spec.d.ts.map +1 -0
  475. package/lib/node/launch/cli-parser.spec.js +56 -0
  476. package/lib/node/launch/cli-parser.spec.js.map +1 -0
  477. package/lib/node/launch/socket-cli-parser.d.ts +9 -0
  478. package/lib/node/launch/socket-cli-parser.d.ts.map +1 -0
  479. package/lib/node/launch/socket-cli-parser.js +43 -0
  480. package/lib/node/launch/socket-cli-parser.js.map +1 -0
  481. package/lib/node/launch/socket-cli-parser.spec.d.ts +2 -0
  482. package/lib/node/launch/socket-cli-parser.spec.d.ts.map +1 -0
  483. package/lib/node/launch/socket-cli-parser.spec.js +66 -0
  484. package/lib/node/launch/socket-cli-parser.spec.js.map +1 -0
  485. package/lib/node/launch/socket-server-launcher.d.ts +34 -0
  486. package/lib/node/launch/socket-server-launcher.d.ts.map +1 -0
  487. package/lib/node/launch/socket-server-launcher.js +104 -0
  488. package/lib/node/launch/socket-server-launcher.js.map +1 -0
  489. package/lib/node/launch/socket-server-launcher.spec.d.ts +17 -0
  490. package/lib/node/launch/socket-server-launcher.spec.d.ts.map +1 -0
  491. package/lib/node/launch/socket-server-launcher.spec.js +70 -0
  492. package/lib/node/launch/socket-server-launcher.spec.js.map +1 -0
  493. package/node.d.ts +16 -0
  494. package/node.js +18 -0
  495. package/package.json +77 -0
  496. package/src/browser/di/app-module.ts +55 -0
  497. package/src/browser/di/console-logger.ts +71 -0
  498. package/src/browser/index.ts +19 -0
  499. package/src/browser/launch/worker-server-launcher.ts +58 -0
  500. package/src/common/actions/action-dispatcher.spec.ts +290 -0
  501. package/src/common/actions/action-dispatcher.ts +152 -0
  502. package/src/common/actions/action-handler-registry.spec.ts +52 -0
  503. package/src/common/actions/action-handler-registry.ts +60 -0
  504. package/src/common/actions/action-handler.ts +62 -0
  505. package/src/common/actions/client-action-handler.ts +50 -0
  506. package/src/common/actions/global-action-provider.spec.ts +79 -0
  507. package/src/common/actions/global-action-provider.ts +72 -0
  508. package/src/common/command/command-stack.spec.ts +239 -0
  509. package/src/common/command/command-stack.ts +159 -0
  510. package/src/common/command/command.spec.ts +93 -0
  511. package/src/common/command/command.ts +124 -0
  512. package/src/common/command/recording-command.spec.ts +74 -0
  513. package/src/common/command/recording-command.ts +119 -0
  514. package/src/common/command/undo-redo-action-handler.ts +57 -0
  515. package/src/common/di/binding-target.spec.ts +147 -0
  516. package/src/common/di/binding-target.ts +188 -0
  517. package/src/common/di/client-session-module.ts +29 -0
  518. package/src/common/di/diagram-module.ts +410 -0
  519. package/src/common/di/glsp-module.ts +66 -0
  520. package/src/common/di/multi-binding.ts +89 -0
  521. package/src/common/di/multi-bindings.spec.ts +133 -0
  522. package/src/common/di/server-module.ts +131 -0
  523. package/src/common/di/service-identifiers.ts +39 -0
  524. package/src/common/diagram/diagram-configuration.ts +97 -0
  525. package/src/common/diagram/request-type-hints-action-handler.spec.ts +59 -0
  526. package/src/common/diagram/request-type-hints-action-handler.ts +36 -0
  527. package/src/common/features/clipboard/request-clipboard-data-action-handler.ts +51 -0
  528. package/src/common/features/contextactions/command-palette-action-provider.ts +94 -0
  529. package/src/common/features/contextactions/context-actions-provider-registry.spec.ts +69 -0
  530. package/src/common/features/contextactions/context-actions-provider-registry.ts +47 -0
  531. package/src/common/features/contextactions/context-actions-provider.ts +36 -0
  532. package/src/common/features/contextactions/context-menu-item-provider.ts +52 -0
  533. package/src/common/features/contextactions/request-context-actions-handler.spec.ts +75 -0
  534. package/src/common/features/contextactions/request-context-actions-handler.ts +37 -0
  535. package/src/common/features/contextactions/tool-palette-item-provider.spec.ts +46 -0
  536. package/src/common/features/contextactions/tool-palette-item-provider.ts +88 -0
  537. package/src/common/features/directediting/context-edit-validator-registry.spec.ts +54 -0
  538. package/src/common/features/directediting/context-edit-validator-registry.ts +43 -0
  539. package/src/common/features/directediting/context-edit-validator.ts +55 -0
  540. package/src/common/features/directediting/label-edit-validator.ts +35 -0
  541. package/src/common/features/directediting/request-edit-validation-handler.spec.ts +131 -0
  542. package/src/common/features/directediting/request-edit-validation-handler.ts +43 -0
  543. package/src/common/features/layout/computed-bounds-action-handler.ts +56 -0
  544. package/src/common/features/layout/layout-engine.ts +31 -0
  545. package/src/common/features/layout/layout-operation-handler.ts +62 -0
  546. package/src/common/features/model/gmodel-factory.ts +60 -0
  547. package/src/common/features/model/gmodel-index.ts +195 -0
  548. package/src/common/features/model/gmodel-serializer.spec.ts +141 -0
  549. package/src/common/features/model/gmodel-serializer.ts +175 -0
  550. package/src/common/features/model/model-state.ts +98 -0
  551. package/src/common/features/model/model-submission-handler.ts +110 -0
  552. package/src/common/features/model/request-model-action-handler.ts +67 -0
  553. package/src/common/features/model/save-model-action-handler.ts +37 -0
  554. package/src/common/features/model/source-model-storage.ts +49 -0
  555. package/src/common/features/navigation/json-opener-options.ts +69 -0
  556. package/src/common/features/navigation/navigation-target-provider-registry.ts +36 -0
  557. package/src/common/features/navigation/navigation-target-provider.ts +50 -0
  558. package/src/common/features/navigation/navigation-target-resolution.ts +22 -0
  559. package/src/common/features/navigation/navigation-target-resolver.ts +61 -0
  560. package/src/common/features/navigation/request-navigation-targets-action-handler.ts +39 -0
  561. package/src/common/features/navigation/resolve-navigation-targets-action-handler.ts +42 -0
  562. package/src/common/features/popup/popup-model-factory.ts +38 -0
  563. package/src/common/features/popup/request-popup-model-action-handler.ts +60 -0
  564. package/src/common/features/validation/model-validator.ts +34 -0
  565. package/src/common/features/validation/request-markers-handler.ts +51 -0
  566. package/src/common/gmodel/README.md +7 -0
  567. package/src/common/gmodel/apply-label-edit-operation-handler.ts +36 -0
  568. package/src/common/gmodel/change-bounds-operation-handler.ts +62 -0
  569. package/src/common/gmodel/change-routing-points-operation-handler.ts +40 -0
  570. package/src/common/gmodel/cut-operation-handler.ts +39 -0
  571. package/src/common/gmodel/delete-operation-handler.ts +121 -0
  572. package/src/common/gmodel/gmodel-create-edge-operation-handler.ts +64 -0
  573. package/src/common/gmodel/gmodel-create-node-operation-handler.ts +95 -0
  574. package/src/common/gmodel/gmodel-diagram-module.ts +76 -0
  575. package/src/common/gmodel/gmodel-operation-handler.ts +31 -0
  576. package/src/common/gmodel/index.ts +27 -0
  577. package/src/common/gmodel/paste-operation-handler.ts +127 -0
  578. package/src/common/gmodel/reconnect-edge-operation-handler.ts +56 -0
  579. package/src/common/index.ts +89 -0
  580. package/src/common/launch/glsp-server-launcher.ts +70 -0
  581. package/src/common/operations/compound-operation-handler.ts +40 -0
  582. package/src/common/operations/create-operation-handler.ts +49 -0
  583. package/src/common/operations/operation-action-handler.ts +93 -0
  584. package/src/common/operations/operation-handler-registry.spec.ts +50 -0
  585. package/src/common/operations/operation-handler-registry.ts +66 -0
  586. package/src/common/operations/operation-handler.ts +82 -0
  587. package/src/common/protocol/glsp-client-proxy.ts +65 -0
  588. package/src/common/protocol/glsp-server-listener.ts +39 -0
  589. package/src/common/protocol/glsp-server.spec.ts +150 -0
  590. package/src/common/protocol/glsp-server.ts +320 -0
  591. package/src/common/session/client-session-factory.spec.ts +60 -0
  592. package/src/common/session/client-session-factory.ts +70 -0
  593. package/src/common/session/client-session-initializer.ts +27 -0
  594. package/src/common/session/client-session-listener.ts +41 -0
  595. package/src/common/session/client-session-manager.spec.ts +82 -0
  596. package/src/common/session/client-session-manager.ts +182 -0
  597. package/src/common/session/client-session.ts +62 -0
  598. package/src/common/test/mock-util.ts +241 -0
  599. package/src/common/utils/args-util.ts +98 -0
  600. package/src/common/utils/client-options-util.ts +22 -0
  601. package/src/common/utils/glsp-server-error.ts +27 -0
  602. package/src/common/utils/layout-util.ts +164 -0
  603. package/src/common/utils/logger.ts +72 -0
  604. package/src/common/utils/promise-queue.spec.ts +138 -0
  605. package/src/common/utils/promise-queue.ts +103 -0
  606. package/src/common/utils/registry.spec.ts +223 -0
  607. package/src/common/utils/registry.ts +154 -0
  608. package/src/node/abstract-json-model-storage.ts +114 -0
  609. package/src/node/di/app-module.ts +102 -0
  610. package/src/node/di/winston-logger.ts +76 -0
  611. package/src/node/gmodel/gmodel-storage.ts +53 -0
  612. package/src/node/index.ts +23 -0
  613. package/src/node/launch/cli-parser.spec.ts +61 -0
  614. package/src/node/launch/cli-parser.ts +86 -0
  615. package/src/node/launch/socket-cli-parser.spec.ts +73 -0
  616. package/src/node/launch/socket-cli-parser.ts +52 -0
  617. package/src/node/launch/socket-server-launcher.spec.ts +68 -0
  618. package/src/node/launch/socket-server-launcher.ts +90 -0
@@ -0,0 +1,320 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import {
17
+ ActionMessage,
18
+ Args,
19
+ DisposeClientSessionParameters,
20
+ distinctAdd,
21
+ InitializeClientSessionParameters,
22
+ InitializeParameters,
23
+ InitializeResult,
24
+ JsonrpcGLSPClient,
25
+ MaybePromise,
26
+ remove,
27
+ ServerActions,
28
+ ServerMessageAction
29
+ } from '@eclipse-glsp/protocol';
30
+ import { inject, injectable, multiInject, optional } from 'inversify';
31
+ import * as jsonrpc from 'vscode-jsonrpc';
32
+ import { MessageConnection } from 'vscode-jsonrpc';
33
+ import { GlobalActionProvider } from '../actions/global-action-provider';
34
+ import { ClientSession } from '../session/client-session';
35
+ import { ClientSessionManager } from '../session/client-session-manager';
36
+ import { GLSPServerError } from '../utils/glsp-server-error';
37
+ import { Logger } from '../utils/logger';
38
+ import { JsonRpcGLSPClientProxy } from './glsp-client-proxy';
39
+ import { GLSPServerListener } from './glsp-server-listener';
40
+
41
+ export const GLSPServer = Symbol('GLSPServer');
42
+
43
+ /**
44
+ * Interface for implementations of a server component using json-rpc for client-server communication.
45
+ * Based on the specification of the Graphical Language Server Protocol:
46
+ * https://github.com/eclipse-glsp/glsp/blob/master/PROTOCOL.md
47
+ */
48
+ export interface GLSPServer {
49
+ /**
50
+ *
51
+ * The `initialize` request has to be the first request from the client to the server. Until the server has responded
52
+ * with an {@link InitializeResult} no other request or notification can be handled and is expected to throw an
53
+ * error. A client is uniquely identified by an `applicationId` and has to specify on which `protocolVersion` it is
54
+ * based on. In addition, custom arguments can be provided in the `args` map to allow for custom initialization
55
+ * behavior on the server.
56
+ *
57
+ * After successfully initialization all {@link GLSPServerListener}s are notified via the
58
+ * {@link GLSPServerListener.serverInitialized} method.
59
+ *
60
+ * @param params the {@link InitializeParameters}.
61
+ * @returns A promise of the {@link InitializeResult} .
62
+ *
63
+ * @throws {@link Error} Subsequent initialize requests return the {@link InitializeResult} of the initial request
64
+ * if the given application id and protocol version are matching, otherwise the promise rejects with an error.
65
+ *
66
+ */
67
+ initialize(params: InitializeParameters): Promise<InitializeResult>;
68
+
69
+ /**
70
+ * The `initializeClientSession` request is sent to the server whenever a new graphical representation (diagram) is
71
+ * created. Each individual diagram on the client side counts as one session and has to provide a unique
72
+ * `clientSessionId` and its `diagramType`. In addition, custom arguments can be provided in the `args` map to allow
73
+ * for custom initialization behavior on the server. Subsequent `initializeClientSession` requests for the same
74
+ * client id and diagram type are expected to resolve successfully but don't have an actual effect because the
75
+ * corresponding client session is already initialized.
76
+ *
77
+ * @param params the {@link InitializeClientSessionParameters}.
78
+ * @returns A promise that completes when the initialization was successful.
79
+ */
80
+ initializeClientSession(params: InitializeClientSessionParameters): Promise<void>;
81
+
82
+ /**
83
+ * The 'DisposeClientSession' request is sent to the server when a graphical representation (diagram) is no longer
84
+ * needed, e.g. the tab containing the diagram widget has been closed. The session is identified by its unique
85
+ * `clientSessionId`. In addition, custom arguments can be provided in the `args` map to allow for custom dispose
86
+ * behavior on the server.
87
+ *
88
+ * @param params the {@link DisposeClientSessionParameters}.
89
+ * @returns A `void` promise that completes if the disposal was successful.
90
+ *
91
+ */
92
+ disposeClientSession(params: DisposeClientSessionParameters): Promise<void>;
93
+
94
+ /**
95
+ * A `process` notification is sent from the client to server when the server should handle i.e. process a specific
96
+ * {@link ActionMessage}. Any communication that is performed between initialization and shutdown is handled by
97
+ * sending action messages, either from the client to the server or from the server to the client. This is the core
98
+ * part of the Graphical Language Server Protocol.
99
+ *
100
+ * @param message The {@link ActionMessage} that should be processed.
101
+ */
102
+ process(message: ActionMessage): void;
103
+
104
+ /**
105
+ * The `shutdown` notification is sent from the client to the server if the client disconnects from the server (e.g.
106
+ * the client application has been closed).
107
+ * This gives the server a chance to clean up and dispose any resources dedicated to the client and its sessions.
108
+ * All {@link GLSPServerListener}s are notified via the {@link GLSPServerListener.serverShutDown} method.
109
+ * Afterwards the server instance is considered to be disposed and can no longer be used for handling requests.
110
+ *
111
+ */
112
+ shutdown(): void;
113
+
114
+ /**
115
+ * Register a new {@link GLSPServerListener}.
116
+ *
117
+ * @param listener The listener that should be registered.
118
+ * @returns `true` if the listener was registered successfully, `false` otherwise (e.g. listener is already
119
+ * registered).
120
+ */
121
+ addListener(listener: GLSPServerListener): boolean;
122
+
123
+ /**
124
+ * Unregister a {@link GLSPServerListener}.
125
+ *
126
+ * @param listener The listener that should be removed
127
+ * @returns 'true' if the listener was unregistered successfully, `false` otherwise (e.g. listener is was not
128
+ * registered in the first place).
129
+ */
130
+ removeListener(listener: GLSPServerListener): boolean;
131
+
132
+ /**
133
+ * get a {@link ClientSession}.
134
+ *
135
+ * @param sessionId The id of the session to get
136
+ * @returns The either the ClientSession or undefined, if no ClientSession was found for the given id.
137
+ */
138
+ getClientSession(sessionId: string): ClientSession | undefined;
139
+ }
140
+
141
+ export const JsonRpcGLSPServer = Symbol('JsonRpcGLSPServer');
142
+
143
+ export interface JsonRpcGLSPServer extends GLSPServer {
144
+ connect(connection: jsonrpc.MessageConnection): void;
145
+ }
146
+
147
+ @injectable()
148
+ export class DefaultGLSPServer implements JsonRpcGLSPServer {
149
+ public static readonly PROTOCOL_VERSION = '1.0.0';
150
+
151
+ @inject(Logger)
152
+ protected logger: Logger;
153
+
154
+ @inject(ClientSessionManager)
155
+ protected sessionManager: ClientSessionManager;
156
+
157
+ @inject(GlobalActionProvider)
158
+ protected actionProvider: GlobalActionProvider;
159
+
160
+ @inject(JsonRpcGLSPClientProxy)
161
+ protected glspClient: JsonRpcGLSPClientProxy;
162
+
163
+ protected initializeResult?: InitializeResult;
164
+
165
+ protected applicationId: string;
166
+
167
+ protected clientSessions: Map<string, ClientSession>;
168
+ protected serverListeners: GLSPServerListener[] = [];
169
+
170
+ constructor(@multiInject(GLSPServerListener) @optional() serverListeners: GLSPServerListener[] = []) {
171
+ this.clientSessions = new Map<string, ClientSession>();
172
+ serverListeners.forEach(listener => this.addListener(listener));
173
+ }
174
+
175
+ protected setupJsonRpc(connection: MessageConnection): void {
176
+ connection.onRequest(JsonrpcGLSPClient.InitializeRequest.method, (params: InitializeParameters) => this.initialize(params));
177
+ connection.onRequest(JsonrpcGLSPClient.InitializeClientSessionRequest, (params: InitializeClientSessionParameters) =>
178
+ this.initializeClientSession(params)
179
+ );
180
+ connection.onRequest(JsonrpcGLSPClient.DisposeClientSessionRequest, (params: DisposeClientSessionParameters) =>
181
+ this.disposeClientSession(params)
182
+ );
183
+ connection.onNotification(JsonrpcGLSPClient.ActionMessageNotification, message => this.process(message));
184
+ connection.onNotification(JsonrpcGLSPClient.ShutdownNotification, () => this.shutdown());
185
+ }
186
+
187
+ protected validateProtocolVersion(params: InitializeParameters): void {
188
+ if (params.protocolVersion !== DefaultGLSPServer.PROTOCOL_VERSION) {
189
+ throw new Error(
190
+ // eslint-disable-next-line max-len
191
+ `Protocol version mismatch! The client protocol version ${params.protocolVersion} is not compatible with the server protocol version ${DefaultGLSPServer.PROTOCOL_VERSION}!`
192
+ );
193
+ }
194
+ }
195
+
196
+ protected validateServerInitialized(): void {
197
+ if (!this.isInitialized()) {
198
+ throw new Error('This GLSP server has not been initialized.');
199
+ }
200
+ }
201
+
202
+ public async initialize(params: InitializeParameters): Promise<InitializeResult> {
203
+ this.logger.info(`Initializing server with: applicationId: ${params.applicationId}, protocolVersion: ${params.protocolVersion}`);
204
+ this.validateProtocolVersion(params);
205
+
206
+ if (this.isInitialized()) {
207
+ if (params.applicationId !== this.applicationId) {
208
+ throw new Error(`Could not initialize GLSP server for application ${params.applicationId}.
209
+ Server has already been initialized for different application with id ${this.applicationId}`);
210
+ }
211
+ if (this.initializeResult) {
212
+ return this.initializeResult;
213
+ }
214
+ }
215
+
216
+ this.applicationId = params.applicationId;
217
+ const serverActions: ServerActions = {};
218
+
219
+ this.actionProvider.serverActionKinds.forEach((kinds, diagramType) => (serverActions[diagramType] = kinds));
220
+
221
+ let result = { protocolVersion: DefaultGLSPServer.PROTOCOL_VERSION, serverActions };
222
+
223
+ result = await this.handleInitializeArgs(result, params.args);
224
+ this.getListenersToNotify('serverInitialized').forEach((listener: GLSPServerListener) => listener.serverInitialized!(this));
225
+ this.initializeResult = result;
226
+ return result;
227
+ }
228
+
229
+ protected handleInitializeArgs(result: InitializeResult, args: Args | undefined): MaybePromise<InitializeResult> {
230
+ return result;
231
+ }
232
+
233
+ public async initializeClientSession(params: InitializeClientSessionParameters): Promise<void> {
234
+ this.logger.info(
235
+ `Initializing client session with: clientSessionId: '${params.clientSessionId}', diagramType: '${params.diagramType}'`
236
+ );
237
+ this.validateServerInitialized();
238
+
239
+ const session = this.sessionManager.getOrCreateClientSession(params);
240
+ this.clientSessions.set(params.clientSessionId, session);
241
+ return this.handleInitializeClientSessionArgs(params.args);
242
+ }
243
+
244
+ protected handleInitializeClientSessionArgs(args: Args | undefined): MaybePromise<void> {
245
+ return;
246
+ }
247
+
248
+ public async disposeClientSession(params: DisposeClientSessionParameters): Promise<void> {
249
+ this.logger.debug('Dispose client session with:', params);
250
+ this.validateServerInitialized();
251
+ if (this.sessionManager.disposeClientSession(params.clientSessionId)) {
252
+ this.clientSessions.delete(params.clientSessionId);
253
+ return this.handleDisposeClientSessionArgs(params.args);
254
+ }
255
+ return;
256
+ }
257
+
258
+ protected async handleDisposeClientSessionArgs(args: Args | undefined): Promise<void> {
259
+ return;
260
+ }
261
+
262
+ process(message: ActionMessage): void {
263
+ this.validateServerInitialized();
264
+ this.logger.info(`process [action=${message.action.kind}, clientId=${message.clientId}]`);
265
+ const clientSessionId = message.clientId;
266
+ const clientSession = this.clientSessions.get(clientSessionId);
267
+ if (!clientSession) {
268
+ throw new Error(`No client session has been initialized for client id: ${clientSessionId}`);
269
+ }
270
+
271
+ clientSession.actionDispatcher.dispatch(message.action).catch(error => this.handleProcessError(message, error));
272
+ }
273
+
274
+ protected handleProcessError(message: ActionMessage, reason: any): void | PromiseLike<void> {
275
+ let errorMsg = `Could not process action: '${message.action.kind}`;
276
+ this.logger.error(errorMsg);
277
+ this.logger.error(reason);
278
+ let details: string | undefined = reason?.toString?.();
279
+ if (reason instanceof GLSPServerError) {
280
+ details = reason.cause?.toString?.();
281
+ errorMsg = reason.message;
282
+ }
283
+ const errorAction = ServerMessageAction.create(errorMsg, { severity: 'ERROR', details });
284
+ this.glspClient.process({ clientId: message.clientId, action: errorAction });
285
+ }
286
+
287
+ getClientSession(sessionId: string): ClientSession | undefined {
288
+ return this.clientSessions.get(sessionId);
289
+ }
290
+
291
+ public shutdown(): void {
292
+ this.logger.info('Shutdown GLSP Server');
293
+ this.getListenersToNotify('serverShutDown').forEach(listener => listener.serverShutDown!(this));
294
+ this.clientSessions.clear();
295
+ this.initializeResult = undefined;
296
+ }
297
+
298
+ public connect(connection: jsonrpc.MessageConnection): void {
299
+ this.setupJsonRpc(connection);
300
+ this.glspClient.connect(connection);
301
+ }
302
+
303
+ protected isInitialized(): boolean {
304
+ return this.initializeResult !== undefined;
305
+ }
306
+
307
+ addListener(listener: GLSPServerListener): boolean {
308
+ distinctAdd(this.serverListeners, listener);
309
+ return true;
310
+ }
311
+
312
+ removeListener(listener: GLSPServerListener): boolean {
313
+ remove(this.serverListeners, listener);
314
+ return true;
315
+ }
316
+
317
+ protected getListenersToNotify(method: keyof GLSPServerListener): GLSPServerListener[] {
318
+ return this.serverListeners.filter(listener => listener[method]);
319
+ }
320
+ }
@@ -0,0 +1,60 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { expect } from 'chai';
17
+ import { Container, ContainerModule } from 'inversify';
18
+ import { ActionDispatcher } from '../actions/action-dispatcher';
19
+ import { DiagramModules, InjectionContainer } from '../di/service-identifiers';
20
+ import { GLSPClientProxy } from '../protocol/glsp-client-proxy';
21
+ import * as mock from '../test/mock-util';
22
+ import { GLSPServerError } from '../utils/glsp-server-error';
23
+ import { Logger } from '../utils/logger';
24
+ import { DefaultClientSessionFactory } from './client-session-factory';
25
+ import { ClientSessionInitializer } from './client-session-initializer';
26
+
27
+ describe('test DefaultClientSessionFactory', () => {
28
+ const clientSessionId = 'myClientId';
29
+ const diagramType = 'myDiagramType';
30
+ const container = new Container();
31
+ const diagramModule = new ContainerModule(bind => {
32
+ bind(ActionDispatcher).toConstantValue(new mock.StubActionDispatcher());
33
+ bind(ClientSessionInitializer).toConstantValue(new mock.StubClientSessionInitializer());
34
+ });
35
+
36
+ const diagramModules = new Map<string, ContainerModule[]>();
37
+ diagramModules.set(diagramType, [diagramModule]);
38
+
39
+ container.load(
40
+ new ContainerModule(bind => {
41
+ bind(Logger).toConstantValue(new mock.StubLogger());
42
+ bind(InjectionContainer).toConstantValue(container);
43
+ bind(DiagramModules).toConstantValue(diagramModules);
44
+ bind(GLSPClientProxy).toConstantValue(new mock.StubGLSPClientProxy());
45
+ })
46
+ );
47
+ const factory = container.resolve(DefaultClientSessionFactory);
48
+
49
+ it('create - new client session', () => {
50
+ const session = factory.create({ clientSessionId, diagramType });
51
+ expect(session.id).to.be.equal(clientSessionId);
52
+ expect(session.diagramType).to.be.equal(diagramType);
53
+ expect(session.container.parent).to.be.equal(container);
54
+ expect(session.actionDispatcher).to.be.an.instanceOf(mock.StubActionDispatcher);
55
+ });
56
+
57
+ it('create - unknown diagram type', () => {
58
+ expect(() => factory.create({ clientSessionId, diagramType: 'unknown-type' })).to.throw(GLSPServerError);
59
+ });
60
+ });
@@ -0,0 +1,70 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { InitializeClientSessionParameters } from '@eclipse-glsp/protocol';
17
+ import { Container, ContainerModule, inject, injectable } from 'inversify';
18
+ import { ActionDispatcher } from '../actions/action-dispatcher';
19
+ import { createClientSessionModule } from '../di/client-session-module';
20
+ import { DiagramModules, InjectionContainer } from '../di/service-identifiers';
21
+ import { GLSPClientProxy } from '../protocol/glsp-client-proxy';
22
+ import { GLSPServerError } from '../utils/glsp-server-error';
23
+ import { ClientSession, DefaultClientSession } from './client-session';
24
+ import { ClientSessionInitializer } from './client-session-initializer';
25
+
26
+ export const ClientSessionFactory = Symbol('ClientSessionFactory');
27
+
28
+ /**
29
+ * Handles the construction of new {@link ClientSession}. A client session factory has to know
30
+ * how to derive the client session specific injector and its entrypoint (i.e. the {@link ActionDispatcher}
31
+ * from a given client session id and a given diagram type.
32
+ */
33
+ export interface ClientSessionFactory {
34
+ /**
35
+ * Create a new {@link ClientSession} based on the given client session id and diagram type.
36
+ *
37
+ * @param clientSessionId The client session id.
38
+ * @param diagramType The diagram type.
39
+ * @returns A new instance of {@link ClientSession} that correlates to the given input parameters.
40
+ */
41
+ create(params: InitializeClientSessionParameters): ClientSession;
42
+ }
43
+
44
+ @injectable()
45
+ export class DefaultClientSessionFactory implements ClientSessionFactory {
46
+ @inject(InjectionContainer)
47
+ protected serverContainer: Container;
48
+
49
+ @inject(DiagramModules)
50
+ protected diagramModules: Map<string, ContainerModule[]>;
51
+
52
+ @inject(GLSPClientProxy)
53
+ protected glspClient: GLSPClientProxy;
54
+
55
+ create(params: InitializeClientSessionParameters): ClientSession {
56
+ const { clientSessionId: id, diagramType, args } = params;
57
+ const diagramModules = this.diagramModules.get(diagramType);
58
+ if (!diagramModules || diagramModules.length === 0) {
59
+ throw new GLSPServerError(`Could not retrieve diagram module configuration for diagram type: '${diagramType}''`);
60
+ }
61
+
62
+ const sessionModule = createClientSessionModule(id, this.glspClient);
63
+ const sessionContainer = this.serverContainer.createChild();
64
+ sessionContainer.load(...diagramModules, sessionModule);
65
+ const initializers = sessionContainer.getAll<ClientSessionInitializer>(ClientSessionInitializer);
66
+ initializers.forEach(service => service.initialize(args));
67
+ const actionDispatcher = sessionContainer.get<ActionDispatcher>(ActionDispatcher);
68
+ return new DefaultClientSession(id, diagramType, actionDispatcher, sessionContainer);
69
+ }
70
+ }
@@ -0,0 +1,27 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { Args } from '@eclipse-glsp/protocol';
17
+
18
+ export const ClientSessionInitializer = Symbol('ClientSessionInitializer');
19
+
20
+ /**
21
+ * Client session initializers are services the are used to configure the client session container after its initialization.
22
+ * The {@link ClientSessionFactory} is expected to retrieve and invoke all client session listeners from the container in the
23
+ * {@link ClientSessionFactory.create} method.
24
+ */
25
+ export interface ClientSessionInitializer {
26
+ initialize(args?: Args): void;
27
+ }
@@ -0,0 +1,41 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { ClientSession } from './client-session';
17
+
18
+ /**
19
+ * A listener that gets notified on certain client session lifecycle events.<br>
20
+ * Life cycle events:
21
+ * * Session creation
22
+ * * Session disposal
23
+ *
24
+ * The scope of relevant client session ids can be restricted when registering the listener with
25
+ * `ClientSessionManager.addListener()`
26
+ */
27
+ export interface ClientSessionListener {
28
+ /**
29
+ * Is invoked after a new {@link ClientSession} has been created by the `ClientSessionManager`.
30
+ *
31
+ * @param clientSession The newly created client session.
32
+ */
33
+ sessionCreated?(clientSession: ClientSession): void;
34
+
35
+ /**
36
+ * Is invoked after a {@link ClientSession} has been disposed by the `ClientSessionManager`.
37
+ *
38
+ * @param clientSession The client session that was disposed.
39
+ */
40
+ sessionDisposed?(clientSession: ClientSession): void;
41
+ }
@@ -0,0 +1,82 @@
1
+ /********************************************************************************
2
+ * Copyright (c) 2022-2023 STMicroelectronics and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+ import { Container, ContainerModule } from 'inversify';
17
+ import * as mock from '../test/mock-util';
18
+ import { Logger } from '../utils/logger';
19
+ import { ClientSessionFactory } from './client-session-factory';
20
+ import { DefaultClientSessionManager } from './client-session-manager';
21
+ import { expect } from 'chai';
22
+ import * as sinon from 'sinon';
23
+
24
+ describe('test DefaultClientSessionManager', () => {
25
+ const testSession = mock.createClientSession('myId', 'myDiagram');
26
+ const testSessionListener = new mock.StubClientSessionListener();
27
+
28
+ const sessionFactory = new mock.StubClientSessionFactory();
29
+ sinon.stub(sessionFactory, 'create').returns(testSession);
30
+
31
+ const container = new Container();
32
+ container.load(
33
+ new ContainerModule(bind => {
34
+ bind(Logger).toConstantValue(new mock.StubLogger());
35
+ bind(ClientSessionFactory).toConstantValue(sessionFactory);
36
+ })
37
+ );
38
+ const sessionManager = container.resolve(DefaultClientSessionManager);
39
+
40
+ it('add listener', () => {
41
+ expect(sessionManager.addListener(testSessionListener, testSession.id)).true;
42
+ });
43
+
44
+ it('add create client session', () => {
45
+ // Mock setup
46
+ const listener_create = sinon.spy(testSessionListener, 'sessionCreated');
47
+ // Test execution
48
+ const createdSession = sessionManager.getOrCreateClientSession({
49
+ clientSessionId: testSession.id,
50
+ diagramType: testSession.diagramType
51
+ });
52
+ expect(createdSession).to.not.be.undefined;
53
+ expect(createdSession.id).to.be.equal(testSession.id);
54
+ expect(createdSession.diagramType).to.be.equal(testSession.diagramType);
55
+
56
+ const retrievedSession = sessionManager.getSession(testSession.id);
57
+ expect(retrievedSession).to.not.be.undefined;
58
+ expect(retrievedSession).to.be.equal(createdSession);
59
+ expect(listener_create.calledWith(testSession));
60
+ });
61
+
62
+ it('get sessions by type', () => {
63
+ const clientSessions = sessionManager.getSessionsByType(testSession.diagramType);
64
+ expect(clientSessions.length).to.be.equal(1);
65
+ expect(clientSessions[0]).to.be.equal(testSession);
66
+ });
67
+
68
+ it('get sessions by type that does no exist', async () => {
69
+ const clientSessions = sessionManager.getSessionsByType('wrongType');
70
+ expect(clientSessions.length).to.be.equal(0);
71
+ });
72
+
73
+ it('dispose client session', () => {
74
+ // Mock setup
75
+ const listener_dispose = sinon.spy(testSessionListener, 'sessionDisposed');
76
+ // Test execution
77
+ expect(sessionManager.disposeClientSession(testSession.id)).to.be.equal(true);
78
+ const session = sessionManager.getSession(testSession.id);
79
+ expect(session).to.be.undefined;
80
+ expect(listener_dispose.calledWith(testSession));
81
+ });
82
+ });