GLSP-1682: Consolidate client, server, and dev packages into a single monorepo#1
Draft
tortmayr wants to merge 574 commits into
Draft
GLSP-1682: Consolidate client, server, and dev packages into a single monorepo#1tortmayr wants to merge 574 commits into
tortmayr wants to merge 574 commits into
Conversation
- Updates to latest version of @eclipse-glsp/dev - Add generate:index utility script - Regenerate index files - Fix codeActionsOnSave in vscode settings - Refactor upgrade:next script - Reformat code base with prettier - Fix copyright headers (by running a full check with glsp checkHeaders . -t full) - Add resolutions for snabbdom to fix eclipse-sprotty/sprotty#429 Can be removed once eclipse-glsp/glsp#1253 is resolved Part of eclipse-glsp/glsp#1320 Fixes eclipse-glsp/glsp#1286
- Extend functions for Bounds, Dimensions, and Point - Provide types and functions for Vector and Movement Fixes eclipse-glsp/glsp#1322
This reverts commit ac6eb79.
* Convert CLI package back to commonjs Convert the CLI package back to commonjs as the esm module caused issues in downstream projects. Use async imports to still be able to use globby. * Fix copyright header violations * Fix linting warnings
- Provide dedicated feedback emitter object as stable emitter - Allow cleanup functions to be calculated as a lazy function - Log if a potentially unstable feedback emitter is used - Split feedback in change bounds tool into dedicated files - Properly use feedback emitter to cleanup feedback correctly Fixes eclipse-glsp/glsp#1323 Fixes eclipse-glsp/glsp#1243 - Ensure correct snapping of ghost element position on grid Fixes eclipse-glsp/glsp#1256
- Updates to latest version of @eclipse-glsp/dev - Add generate:index utility script - Regenerate index files - Fix codeActionsOnSave in vscode settings - Refactor upgrade:next script - Reformat code base with prettier - Fix copyright headers (by running a full check with glsp checkHeaders . -t full) Part of eclipse-glsp/glsp#1320
- Move glsp-specific overrides of sprotty base classes into glsp-client directory. - Add rule from ui-extension.css to base css file. This also fixes an issue with the missing css file we currently encounter in downstream builds Sidenote: The sprotty-glsp package is intended as a small layer to enable a controlled reexport of sprotty provided modules. Apart from the overrides for our custom action definition (action-override), all other customization of sprotty classes should be handled in the glsp-client package.
- Ensure that the WinstonLogger does not throw an error if it encounters an unparseable object (e.g. circular structure) - Add fallback hooks for uncaught exceptions/promise rejections to example server to avoid nodes default behavior (process exit) Fixes eclipse-glsp/glsp#1195
* Introduce an optional grid module to deal with a grid layout - Optional grid module defines a grid based on x/y coordinates -- Adds the grid as a background that properly zooms/resizes -- By default uses the GridSnapper for positioning elements -- Use grid for helper lines and movement tools - Optional debug module that shows the bounds of elements -- Useful for debugging but not meant for production - Render optional debug and grid toggles in tool palette if present - Add both optional modules to the workflow example - Use half-grid snapping for routing handles for nicer UX - Bonus: Add OriginViewportAction to reset to 0,0 on zoom-level 1 Contributed on behalf of Axon Ivy AG Fixes eclipse-glsp/glsp#1336
- Refactor `DiagramLoader` to catch and log errors that occur when invoking startup hooks - This ensures both: failure of one hook does not affect execution of following hooks and if a hook fails for any reason we provide the reason in the log output - Refactor `RestoreViewportHandler` to use the actual dom id of the root element for querying/focusing the graph. This ensures that the focusing also works if the root model element is not of type `graph`. Fixes eclipse-glsp/glsp#1309
* Improve handling of change bounds - Introduce change bounds manager to centralize bounds-related services -- Bounds changes through position snapping and movement restriction -- Validation for size and position of an element -- Customizable methods for when to use move and resize options - Introduce change bounds tracker for moves and resizes -- Tracker calculates move on diagram and calculates move and resizes -- Tracker supports options on which parts of the process are applied - Provide moveable wrappers for resize and routing handles Fixes eclipse-glsp/glsp#1337 - Extend current resize capabilities -- Introduce mode for symmetric resize -- Introduce one-dimensional resize on top, right, bottom and left side Fixes eclipse-glsp/glsp#1338 Fixes eclipse-glsp/glsp#1339 - Fix elements moving during resizing when hitting minimum bounds -- Store calculated minimum size from layouter in element -- Adapt resize so we do not produce invalid sized bounds Fixes eclipse-glsp/glsp#1340 Minor: - Ensure we get proper cursor feedback when hovering over resize handle - Add additional convenience functions - Add origin viewport command for convenience Contributed on behalf of Axon Ivy AG
…#347) Default event prevention should be handled by the `ICopyPasteHandler` implementation. e.g. The default `ServerCopyPasteHandler` has guard clauses to check wether a copy or paste operation should be executed (diagram must be active and selection >0). It only default prevents if this condition is met. Currently we bypass this special check and always default prevent which causes issues in scenarios where the diagram is nested into a surrounding application frame or is currently not focused (e.g.) hidden
- Allow resizable elements to specify resize handle location - Use correct feedback (move) on ghost element move (not resize) - Centralize most move/resize feedback in change bounds manager - Do not draw grid on hidden SVG as we do not have transformation data - Ensure we also apply move feedback if we do not have ghost element - Ensure that the container feedback considers the insert position - Extract container insert management into manager class - Avoid unnecessary TYPES.* for classes - Fix typos - Remove circular dependencies by fixing index imports Contributed on behalf of Axon Ivy AG
Switch to root level index generation. - Remove all sub directory index.ts files - Update `generate:Index` script to single file - Update import paths - (Check and fix copyright headers) Fixes eclipse-glsp/glsp#1346 Co-authored-by: Martin Fleck <mfleck@eclipsesource.com>
- Ensure GridManager properly tracks state if action is used on startup - Ensure DebugManager properly tracks state if action is used on startup - Avoid cursor feedback interfering with edge edit feedback in disposal - Avoid unnecessary disposal calls by calling mouseUp on mouseMove - Fix issue with non-resizable elements not being movable - Fix calculation of position on diagram for nested HTML elements - More flexibility for hiddenBoundingRect - Make EdgeCreationTool more customizable
* Minor Improvements - Ensure we render/unhide tracked ghost element as soon as possible - Add ghost element bounds data to arguments sent to server * PR Feedback - Remove snapper argument - New: Add utility function to check if a bound object is valid - New: Make SVG exporter a little bit more flexible
For some reason our created target elements are not actually instanceof Element even though everything is in their prototype chain. So instead, we now check whether it is an element with tag (HTML, SVG, Math) and whether it has a style property.
* Configure fork and join nodes as not resizable Update type hints configuration for workflow example to make fork and join nodes not resizable => we have test cases for both resizable and non-resizable elements in the diagram Refactor createDefault hint functions to allow partial overriding of default properties * Align edge-creation-checker condition with java server i..e only allow decision nodes as sources for weighted edges
- Add `replace` property to `ModulConfiguration` interface. When resolving feature modules of the replace property, any potential already configured module with the same id will be replaced with the defined module. If there is nothing to replace, the module will be added to the end of the resolved configuration - Add check for non-unique feature module ids to `resolveContainerConfiguration` function. - Add option to enable additional debug logging when loading feature modules. This is usefull during development to get insights about why the container modules are not loaded as expected - Add dedicated `featureIds` to all default modules. If no featureId is provided the number id of the module is reused for creating the featureId. While this works perfectly fine, it makes debugging harder because feature modules are hard to indentify based on their featureid. With this change its now easier to derive the corresponding feature module from the featureid. Fixes eclipse-glsp/glsp#1349
- Adjust name of `SResizeHandle` and `SResizeHandleview` to the gmodel namespace and reexport under the old name as deprecated for backwards compatibility. - Ensure that all diagram modules are constructed as `FeatureModules` instead of plain `ContainerModules` - Rename modules that still have the glsp prefix and also reexport under old deprecated name
Mostly non-breaking changes. Some definitions have moved to the sprotty-protocol package. However, we can mitigate all potential breaks with our @eclipse-glsp/sprotty reexport. Fixes eclipse-glsp/glsp#1253
- Update next dependencies - Update changelog - Update copyright headers - Add vscode-json rpc as explicit dependency to server package. This ensures that we are still using the same version as the client side in mono repo scenarios where multiple versions of vscode-jsonrpc are resolved
* Enhance Grid functionality and customizability - Ensure grid is applied on normal graph view without projections - Allow grid color to be specified through CSS - Add more properties to the graph for re-use * Properly escape grid color values Color definitions with a # need to be escaped to be properly rendered when used in a background image url
- Use our GLSPAbstractUIExtension instead of AbstractUIExtension - Fix focus issue with GlspEditLabelUI
- Ensure that the change bounds tool does not dispatch `ChangeRoutingPointsAction` if there are not valid element moves. - Ensure that duplicate detection in `resolveContainerConfiguration` properly stringifies symboles.
Replace no-op elk factory with proper setup for isWebworker context. A small workaround/hack is required to present a `document` during construction of the factory which routes elkjs to the c orrect in-process message worker
…1694) - Diff against the default branch (merge-base) instead of only considering uncommitted changes, to match a PR's changed files - Add getChangesComparedToDefaultBranch and an offline getDefaultBranchRef helper - Update --type help and add unit and e2e coverage Also: - Add resolveRepoDir so server-node bundle commands accept a --dir pointing at the workspace or the repo itself
* GLSP-31: Update workflow example (standalone) ## Switch to esbuild for bundling Part-of: eclipse-glsp/glsp#1693 ## Redesign standalone example app - Central diagram widget - Proper title bar - Additional toggleable section for keyboard bindings Add/introduce following features - Context menu support - Server-side provided context menus - Navigation/Marker menu entries - Edit task menu entries - Title bar with - Diagram menu similar to Theia integration - Including layout commands - Dirty state marker - Undo/Redo buttons - Theming support - 5 seletable themes - light/dark mode variants - Theme switcher in title bar - Extended urlParameter configuration - grid,readonly,mcp,theme,mode Fixes eclipse-glsp/glsp#31 ## Additional fixes - Fixes an issue with the GLSP Projection view which did not calculate scrollbars correctly for the diagrams that are off-center (don't start at 0,0) - Fixes an issue with the GLSPWebSocketConnectionHandler which did not properly try to reconnect if it was launched before the server was available - Add comment section to claude.md * Address review feedback
* GLSP-1693: Switch bundling to esbuild Part of: eclipse-glsp/glsp#1693 * Update esbuild to ~0.28.0 in workflow example packages Address review feedback on outdated esbuild versions.
Make the CLI work against both pnpm- and yarn/lerna-based GLSP repositories so the same commands can be used during a phased migration. This is the minimal, package-manager-agnostic CLI change to drive forward a phased migration of repo per repo. - Add pnpm/yarn detection and workspace discovery to package-util (detectPackageManager, getWorkspacePackages, command helpers) - Route coverageReport, updateNext, releng version/prepare and the repo build/run/start/vscode commands through the new helpers so they work in both pnpm- and yarn-based repositories - Add 'glsp releng publish <next|latest>' (replaces 'lerna publish'): detects the package manager and dispatches to 'pnpm publish -r' for pnpm repos or legacy 'lerna publish' (canary next / from-package latest) for not-yet-migrated yarn repos; '--dry-run' is pnpm-only - releng version: package-manager aware via getWorkspacePackages; lerna.json is updated only when present (root package.json is the version source of truth) and workspace: ranges are preserved Part-of: eclipse-glsp/glsp#1636
- Fix pnpm path of the updateNext cli command - Add units tests Also: - Merge the /verify skill into /fix and update CLAUDE.md accordingly - Update headers Part of: eclipse-glsp/glsp#1636
- eslint 9->10 (+@Stylistic 2->5, globals 15->17), prettier 2->3, mocha 10->11, nyc 15->18, sinon 15->22, rimraf 5->6, esbuild 0.25->0.28, reflect-metadata 0.1->0.2 - Floor eslint-plugin-import-x to >=4.16.2 and the Node engine to ^22.13.0 || >=24 for ESLint 10 compatibility - Disable preserve-caught-error (new in ESLint 10's recommended set) - Reformat with prettier 3 (single-space list markers) and lower markdownlint MD030 to 1 to match; regenerate yarn.lock Also: - Ignore coverage/ and .nyc_output/
- Bump shared ts-config target/lib to ES2023; set useDefineForClassFields false to preserve property injection - Use nullish coalescing for exec option resolution in process-util - Use Array.toReversed() in the repo unlink command
- Add shared uuid util to protocol package. Consuming packages should use the helper when needing uuids instead of depending on their own uuid version - Update code-base to consistently use new helper - Update eslint config to restrict direct 'uuid' imports and adjust import rules for examples Fixes eclipse-glsp/glsp#1700
* GLSP-1636: Adopt pnpm as the monorepo package manager - Drop the Yarn/Lerna setup (yarn.lock, lerna.json) in favor of pnpm workspaces declared in pnpm-workspace.yaml with a committed pnpm-lock.yaml - Convert intra-repo dependencies to the workspace:* protocol - Adapt root and package manifests (scripts, engines) and the GitHub Actions workflows to run on pnpm - Ship the CLI entry point as bin/glsp.js in place of the shell wrapper - Refresh contributor docs and workspace tasks (README, AGENTS/CLAUDE guides, glsp.theia.code-workspace) for the pnpm-based flow Part of: eclipse-glsp/glsp#1636 * Update README.md Co-authored-by: Haydar Metin <dev@haydar.metin.at> --------- Co-authored-by: Haydar Metin <dev@haydar.metin.at>
* GLSP-1636: Replace yarn and lerna with pnpm workspaces - Drop yarn and lerna; drive workspace management, script running, and publishing (via the glsp releng CLI) through pnpm 11.6.0 - Reference intra-repo packages through the workspace:* protocol - Add pnpm-workspace.yaml carrying the dev-tooling hoist patterns, a minimumReleaseAge supply-chain gate, and overrides that lift vulnerable transitives (serialize-javascript, js-yaml, diff) into patched ranges - Upgrade runtime dependencies within their compatible majors (commander, elkjs, and others) and drop the now-unused concurrently dev dependency - Provision and cache pnpm in the CI and publish workflows Also: - Reformat files swept up by the refreshed prettier config - Remove unused/outdated scripts and update readme Part of: eclipse-glsp/glsp#1636 * Update package.json --------- Co-authored-by: Haydar Metin <dev@haydar.metin.at>
- Replace yarn and lerna with pnpm workspaces as the package manager - Use pnpm's built-in workspace management and the glsp CLI for publishing in place of lerna run/publish - Adapt CI workflows, VS Code tasks, and project docs to pnpm Also: - Remove verify skill and improve fix skill - Reformat code base for updated prettier formatting alignment - Remove unused e2e-server-pr workflow - Remove outdated/unused watch vscode task Part-of: eclipse-glsp/glsp#1636
…703) Rework `glsp repo link` onto pnpm and remove the remaining lerna/yarn-era code paths from the CLI after the pnpm migration. - Rework `repo link`/`unlink` to inject `link:` overrides into each consumer's pnpm-workspace.yaml (dependency-ordered), sharing the singleton peers (sprotty, sprotty-protocol, vscode-jsonrpc, inversify) from glsp-client so they resolve to a single instance across the link. - Build each linked repo so the overrides resolve to compiled lib/ output instead of empty source dirs (pnpm does not run yarn's prepare-on-install); --no-build skips it, --electron picks the Theia target. - Do not link reflect-metadata: v0.2+ shares one registry on the global Reflect so multiple copies interoperate, and overriding it broke the linked build's `types: ['reflect-metadata']` resolution (TS2688). - Support linking glsp-eclipse-integration, whose pnpm workspace lives in a client/ subdirectory; the link build only covers the npm side and leaves the Maven server to a separate build. - Remove lerna/yarn-era leftovers: the lerna publish fallback, the lerna.json version update, the yarn updateNext path and the PackageManager auto-detection, and align the releng e2e specs and CLI README with the pnpm reality. Part of: eclipse-glsp/glsp#1636
* GLSP-1635: Migrate test stack to Vitest - Replace the Mocha/nyc/chai/sinon stack with Vitest and its v8 coverage provider across the monorepo - Add the @eclipse-glsp/vitest-config package providing a ready-to-use shared flat config; drop the now-obsolete mocha-config and nyc-config packages - Rework the config-test meta package to bundle the Vitest config and test dependencies in place of Mocha and nyc - Port all CLI specs to the Vitest API (chai expect, sinon sandboxes/ stubs → vitest expect/vi) and add vite.config.ts/vite.config.e2e.ts - Update CLI and root scripts/dependencies accordingly and drop the bespoke coverage-report command in favor of vitest --coverage Also: - Switch the CI test workflow to Vitest Part of: eclipse-glsp/glsp#1635 * Address copilot feedback
- Convert all Chai-style BDD assertions (`.to.be.true`, `.to.deep.equal`, `.to.include.members`, ...) across the CLI specs to native Vitest matchers; they previously passed only via Vitest's bundled Chai-compatible API - Drop the now-redundant eslint-plugin-chai-friendly and restore the plain no-unused-expressions rule, since the converted assertions are method calls rather than bare expression statements - Remove the stale mocha global from the shared eslint base config Also: - Add a root test:coverage script - Drop dead ctrf/ and .nyc_output/ entries from .gitignore Part of: eclipse-glsp/glsp#1635
* GLSP-1635: Migrate test stack to Vitest - Replace Mocha/Chai/Sinon with Vitest across all packages; specs import the test API explicitly from 'vitest' (no globals). Remove the obsolete Mocha/nyc config, the chai-based test helpers, and the placeholder graph spec - Consume the shared @eclipse-glsp/vitest-config (via @eclipse-glsp/dev) through a single flat root vite.config.ts that globs every package's specs, so one `vitest run` covers the repo and produces a merged coverage report; drop the now-redundant per-package vite configs and test scripts - Type-check specs through a composite tsconfig.test.json (root plus a per-package config) built by `compile:test`, which `pnpm test` runs before `vitest run` - Extend the plain @eclipse-glsp/ts-config now that the separate '/vitest' variant and the vitest/globals types are gone - Run `pnpm test` / `pnpm test:coverage` in CI and drop the obsolete CTRF "Publish Test Report" step (Vitest's github-actions reporter annotates failures inline) along with the redundant `:ci` scripts - Update the VS Code launch configs to debug tests via Vitest Also: - Move the raw-http e2e helper out of '*.spec.ts' into a test/ folder so it is no longer treated as a spec or shipped in the published package - Tidy .gitignore: ignore '*.tsbuildinfo' and drop the now-dead **/ctrf, .nyc_output/, and yarn-error.log entries - Import GModelElement from the @eclipse-glsp/graph entry point instead of a deep lib/ path Part of: eclipse-glsp/glsp#1635 * Address review comments - Assert the auto-bound service (`bind(SubTarget)`) in the binding-target spec instead of `bind(Target)`, which is bound unconditionally and so never actually verified the auto-bind behavior
-Improve ignore file handling for the index generation command. -Now has reverse lookup up the parent hierachy similar to .gitignore
This reverts commit 98e34d4.
* GLSP-1635: Migrate test framework from Mocha to Vitest - Replace the Mocha/Chai/nyc/Sinon setup with Vitest: consume the @eclipse-glsp/dev next packages, drop .mocharc/.nycrc, and point all test scripts at `vitest run` - Drive the whole monorepo from a single flat Vitest config at the repo root instead of per-package configs, yielding one merged coverage report - Type-check specs separately via composite tsconfig.test.json projects, since Vitest only transpiles; wire them through a `compile:test` step so `pnpm test` type-checks specs before running them - Import the test API explicitly in every spec (no ambient globals) and load reflect-metadata once via root setup files for the DI specs - Replace the custom expectToThrowAsync helper with Vitest's native rejects.toThrow() / toThrow() matchers and drop the obsolete test-util module - Keep test-only code out of the published packages by excluding specs and test/ helper directories from both the build and the packed files - Switch CI and contributor docs to Vitest: run `pnpm test`, and remove the now-obsolete test-report step and the redundant per-package and :ci test scripts - Clean up leftover tooling artifacts: ignore *.tsbuildinfo so the new per-config build-info is covered, and drop the obsolete nyc/CTRF ignores and clean targets - Run the workflow-standalone example's TS scripts via Node's native type stripping instead of ts-node, which the Mocha toolchain used to provide transitively: convert the scripts to ESM (.mts), drop the ts-node dependency, and raise the Node engine floor to 22.18 where stripping is unflagged Also: - Fix indentation in the local /fix skill doc Part of: eclipse-glsp/glsp#1635 * GLSP-1635: Restore container load spy in default-modules tests - Add an afterEach to restore the spy created on container.load, since container.restore() only resets Inversify bindings and would otherwise leave the method permanently spied across tests Part of: eclipse-glsp/glsp#1635
- Convert leftover chai-style assertions (e.g. `expect(x).true;`) to real Vitest matchers (`toBe(true)`); after the Vitest migration these were silent no-ops that asserted nothing - Remove the `*.spec` eslint overrides: the updated eslint-config enables core `no-unused-expressions` (which now catches such no-op assertions even in tests) and namespace checks pass cleanly, so both overrides are redundant Also: - Refresh pnpm-lock.yaml for the bumped @eclipse-glsp/eslint-config
- Drop the chai-friendly no-unused-expressions and spec-only import-x/namespace eslint overrides, both workarounds for the Mocha/chai/sinon era that Vitest no longer needs - Remove the now-unused eslint-plugin-chai-friendly dependency - Refactor changeCSSClass/changeCodiconClass to use classList.toggle so they no longer rely on the disabled rule
Import the dev-packages subtree (cli, config, config-test, dev, eslint-config, prettier-config, ts-config, vitest-config) from the eclipse-glsp/glsp meta-repository, preserving the commit history scoped to that subtree. Surrounding repo files (pnpm/workspace setup, CI, metadata) are intentionally excluded and will be set up separately. Part of eclipse-glsp/glsp#1682.
… subtree merge) Import the packages (client, glsp-sprotty, protocol) and examples (workflow-glsp, workflow-standalone) subtrees from eclipse-glsp/glsp-client, preserving the commit history scoped to those subtrees. Surrounding repo files (pnpm/workspace setup, CI, metadata) are intentionally excluded and will be set up separately. Part of eclipse-glsp/glsp#1682.
…rving subtree merge) Import the packages (graph, layout-elk, server, server-mcp) and examples (workflow-server and its bundled/mcp-demo variants) subtrees from eclipse-glsp/glsp-server-node, preserving the commit history scoped to those subtrees. Surrounding repo files (pnpm/workspace setup, CI, metadata) are intentionally excluded and will be set up separately. Part of eclipse-glsp/glsp#1682.
- Move the glsp-client packages under client/
(packages/client/{client,glsp-sprotty,protocol})
- Move the glsp-server-node packages under server/
(packages/server/{graph,layout-elk,server,server-mcp})
- Use git renames so per-file history is preserved across the move
Part of: eclipse-glsp/glsp#1682
Wire up the consolidated client/server/dev repositories as a single, self-bootstrapping pnpm workspace that builds, lints, and tests from the root. - Add the root workspace configuration: pnpm-workspace.yaml (globbing dev-packages/*, packages/*/*, examples/*, with the unioned hoist, override, build-allow and release-age settings), the root package.json with merged scripts and in-workspace dev tooling, and the TypeScript project graph (tsconfig, tsconfig.eslint). - Add the shared lint/format/test configs: one path-scoped ESLint flat config carrying the client and server import rules, Prettier config, and a Vitest config that globs every package's specs. - Align internals for the grouped layout: fix the example -> package TS reference depths and switch the remaining `next` protocol deps to `workspace:*`. - Compile each package's specs as part of its own tsconfig instead of a separate `tsconfig.test.json` project, and exclude the emitted `*.spec.*`/`test` output from the published tarball via `files`. This keeps decorator transpilation working for specs without a dedicated test tsconfig and independent of the test runner's tsconfig resolution. Point the one spec that imported the built `lib` at its source instead. - Consolidate the example run/dev scripts: fold the standalone launcher into a single start.mts (dropping the separate download-server and start-node-server helpers), default the workflow server to WebSocket with matching start/start:socket scripts, and drop the --external-server bundle-path option. - Add the GitHub Actions setup: CI (build, test, lint, coverage) and CodeQL workflows plus issue/PR templates, with a lint:ci script that emits the JSON report the CI lint summary renders. - Add the canonical EPL-2.0 project docs (LICENSE, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT) and a consolidated README describing the client, server, and dev-packages structure (replacing the per-folder dev-packages README). Part of: eclipse-glsp/glsp#1682
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
IMPORTANT: This PR needs to be history preserving, so we need do a REAL MERGE (no rebase or squash)
What it does
Bootstraps
glsp-coreby mergingglsp-client,glsp-server-node, and thedev-packagesfromglspinto a single, self-bootstrapping pnpm monorepo thatbuilds, lints, and tests from the root.
per-file git history survives the move (
dev-packages/*, the clientpackages/examples, and the server packages/examples).
packages/client/*andpackages/server/*(via git renames, history preserved);dev-packages/*and a flat
examples/*round out the layout.pnpm-workspace.yaml, a merged rootpackage.jsonwith in-workspace dev tooling, the TypeScript project graph,and shared ESLint/Prettier/Vitest configs unifying the client and server
rule sets.
workspace:*protocol deps) and compile each package's specs within its owntsconfig, excluding emitted
*.spec.*/test output from the published tarball.start.mts,WebSocket-default workflow server) and add the GitHub Actions setup: CI
(build/test/lint/coverage) and CodeQL workflows plus issue/PR templates.
CODE_OF_CONDUCT) and a consolidated README.
Part of: eclipse-glsp/glsp#1682
How to test
pnpm install pnpm build pnpm test pnpm lintpnpm lint:ciruns green locally (0 errors)git log --followon a moved file (e.g. apackages/client/client/src/**source) still shows its pre-merge history.Follow-ups
e2e.yml) and the deployment/release/publish set (prepare-release.yml,publish-release.yml,publish.yml, and glsp-client's Pages/preview workflows).Changelog