diff --git a/.changeset/nervous-rabbits-greet.md b/.changeset/nervous-rabbits-greet.md new file mode 100644 index 000000000..b016abcda --- /dev/null +++ b/.changeset/nervous-rabbits-greet.md @@ -0,0 +1,6 @@ +--- +'neo4j-cypher-vscode-extension': patch +'@neo4j-cypher/language-server': patch +--- + +Makes language server executable with npx diff --git a/.changeset/pre.json b/.changeset/pre.json index c57ba0f93..244848f72 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -11,5 +11,9 @@ "antlr4": "4.13.1", "antlr4-c3": "3.0.1" }, - "changesets": ["brown-ravens-obey", "fuzzy-rice-train"] + "changesets": [ + "brown-ravens-obey", + "fuzzy-rice-train", + "nervous-rabbits-greet" + ] } diff --git a/packages/language-server/CHANGELOG.md b/packages/language-server/CHANGELOG.md index 8ce43a2fe..681a4f888 100644 --- a/packages/language-server/CHANGELOG.md +++ b/packages/language-server/CHANGELOG.md @@ -1,5 +1,11 @@ # @neo4j-cypher/language-server +## 2.0.0-next.1 + +### Patch Changes + +- Makes language server executable with npx + ## 2.0.0-next.0 ### Major Changes diff --git a/packages/language-server/README.md b/packages/language-server/README.md index 98b2800cb..b3e0f812a 100644 --- a/packages/language-server/README.md +++ b/packages/language-server/README.md @@ -4,15 +4,15 @@ A language server wrapper for the `@neo4j-cypher/language-support` package. ## Installation -We will provide a quick way to install the serer via npm soon™️. For now you can build it yourself, see instructions below. +You can install the language server using npm: -### Bundling and usage from typescript +``` +npm i -g @neo4j-cypher/language-server +``` -To package the language server into a single javascript bundle, go to the root of the project and -do `npm run build`. -After that a file `./packages/language-server/dist/cypher-language-server.js` will be generated. +### Usage -You can run the language server with `node ./cypher-language-server.js --stdio`. +Once installed, you can run the language server using `cypher-language-server --stdio`. Below you can find a few examples in Typescript on how to send messages to that server. @@ -21,9 +21,7 @@ Below you can find a few examples in Typescript on how to send messages to that ```typescript import * as child_process from 'child_process'; -let lspProcess = child_process.fork('cypher-language-server.js', [ - '--node-ipc', -]); +let lspProcess = child_process.spawn('cypher-language-server', ['--ipc']); let messageId = 1; function send(method: string, params: object) { @@ -99,7 +97,7 @@ const server = net.createServer((socket: net.Socket) => { }); server.listen(3000, () => { - child_process.spawn('node', ['cypher-language-server.js', '--socket=3000']); + child_process.spawn('cypher-language-server', ['--socket=3000']); }); ``` @@ -109,10 +107,7 @@ server.listen(3000, () => { import * as child_process from 'child_process'; import * as rpc from 'vscode-jsonrpc/node'; -let lspProcess = child_process.spawn('node', [ - 'cypher-language-server.js', - '--stdio', -]); +let lspProcess = child_process.spawn('cypher-language-server', ['--stdio']); let messageId = 1; const reader = new rpc.StreamMessageReader(lspProcess.stdout); diff --git a/packages/language-server/package.json b/packages/language-server/package.json index 52f3c3b3d..4d5d71744 100644 --- a/packages/language-server/package.json +++ b/packages/language-server/package.json @@ -4,7 +4,7 @@ "author": "Neo4j Inc.", "license": "Apache-2.0", "files": [ - "./dist/cypher-language-server.js", + "./dist/cypher-language-server", "./src", "package.json", "README.md", @@ -16,8 +16,8 @@ "cypher", "language server" ], - "version": "2.0.0-next.0", - "main": "./dist/cypher-language-server.js", + "version": "2.0.0-next.1", + "main": "./dist/server.js", "types": "src/server.ts", "repository": { "type": "git", @@ -30,6 +30,9 @@ "engines": { "node": ">=18.18.2" }, + "bin": { + "cypher-language-server": "./dist/cypher-language-server" + }, "dependencies": { "@neo4j-cypher/language-support": "2.0.0-next.0", "neo4j-driver": "^5.3.0", @@ -37,8 +40,9 @@ "vscode-languageserver-textdocument": "^1.0.8" }, "scripts": { - "build": "tsc -b && npm run bundle", - "bundle": "esbuild ./src/server.ts --bundle --format=cjs --platform=node --outfile=dist/cypher-language-server.js", + "build": "tsc -b && npm run bundle && npm run make-executable", + "bundle": "esbuild ./src/server.ts --bundle --format=cjs --platform=node --outfile=dist/cypher-language-server.js --minify", + "make-executable": "cd dist && echo '#!/usr/bin/env node' > cypher-language-server && cat cypher-language-server.js >> cypher-language-server", "clean": "rm -rf dist", "watch": "tsc -b -w" }, diff --git a/packages/vscode-extension/CHANGELOG.md b/packages/vscode-extension/CHANGELOG.md index 45fa79722..7b4f910ba 100644 --- a/packages/vscode-extension/CHANGELOG.md +++ b/packages/vscode-extension/CHANGELOG.md @@ -1,5 +1,13 @@ # @neo4j-cypher/vscode-extension +## 2.0.0-next.1 + +### Patch Changes + +- Makes language server executable with npx +- Updated dependencies + - @neo4j-cypher/language-server@2.0.0-next.1 + ## 2.0.0-next.0 ### Major Changes diff --git a/packages/vscode-extension/package.json b/packages/vscode-extension/package.json index b702ddd3e..28744602a 100644 --- a/packages/vscode-extension/package.json +++ b/packages/vscode-extension/package.json @@ -4,7 +4,7 @@ "description": "Enables support for Neo4j and its query language Cypher", "author": "Neo4j Inc.", "license": "Apache-2.0", - "version": "2.0.0-next.0", + "version": "2.0.0-next.1", "publisher": "Neo4j Inc.", "activationEvents": [ "onLanguage:cypher" @@ -83,14 +83,14 @@ }, "scripts": { "vscode:prepublish": "npm run build", - "bundle-language-server": "cd ../language-server && npm run bundle -- --minify && cp dist/cypher-language-server.js ../vscode-extension/dist/", + "bundle-language-server": "cd ../language-server && npm run bundle && cp dist/cypher-language-server.js ../vscode-extension/dist/", "bundle-extension": "esbuild ./src/extension.ts --bundle --external:vscode --format=cjs --platform=node --minify --outfile=dist/extension.js", "build": "tsc -b && npm run bundle-extension && npm run bundle-language-server", "clean": "rm -rf dist", "test:e2e": "npm run build && rm -rf .vscode-test/user-data && node ./dist/e2e_tests/main.js" }, "dependencies": { - "@neo4j-cypher/language-server": "2.0.0-next.0", + "@neo4j-cypher/language-server": "2.0.0-next.1", "vscode-languageclient": "^8.1.0" }, "devDependencies": {