diff options
author | 2021-03-25 10:38:17 -0500 | |
---|---|---|
committer | 2021-03-25 10:38:17 -0500 | |
commit | 18e7cc5af903543ac6f46780bfea67c13c6517df (patch) | |
tree | f61100a6adf3d4641cab89a23ac071268ed911e2 /vscode/packages/server | |
parent | 30cccdf7154b6470e876464da9e412af10894dd5 (diff) | |
download | astro-18e7cc5af903543ac6f46780bfea67c13c6517df.tar.gz astro-18e7cc5af903543ac6f46780bfea67c13c6517df.tar.zst astro-18e7cc5af903543ac6f46780bfea67c13c6517df.zip |
Scaffold language server (#25)
* wip: scaffold astro extension
* wip: scaffold astro extension
* WIP: vscode extension
* fix: autoCloseBefore
* chore: update package.json
* fix: use tsx instead of plain ts
* chore: remove dist files
* chore: remove comments
* chore: cleanup package build process, switch build to esbuild
* refactor: use shared esbuild config
Co-authored-by: Nate Moore <nate@skypack.dev>
Diffstat (limited to '')
-rw-r--r-- | vscode/packages/server/.DS_Store | bin | 0 -> 6148 bytes | |||
-rw-r--r-- | vscode/packages/server/package-lock.json | 115 | ||||
-rw-r--r-- | vscode/packages/server/package.json | 21 | ||||
-rw-r--r-- | vscode/packages/server/src/index.ts | 32 | ||||
-rw-r--r-- | vscode/packages/server/tsconfig.json | 9 |
5 files changed, 177 insertions, 0 deletions
diff --git a/vscode/packages/server/.DS_Store b/vscode/packages/server/.DS_Store Binary files differnew file mode 100644 index 000000000..5008ddfcf --- /dev/null +++ b/vscode/packages/server/.DS_Store diff --git a/vscode/packages/server/package-lock.json b/vscode/packages/server/package-lock.json new file mode 100644 index 000000000..71cdde13c --- /dev/null +++ b/vscode/packages/server/package-lock.json @@ -0,0 +1,115 @@ +{ + "name": "@astro-vscode/server", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "astro": { + "version": "file:../..", + "dev": true, + "requires": { + "typescript": "^4.2.3", + "vscode-languageserver": "^7.0.0" + }, + "dependencies": { + "typescript": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", + "dev": true + }, + "vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "dev": true + }, + "vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "dev": true, + "requires": { + "vscode-languageserver-protocol": "3.16.0" + } + }, + "vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "dev": true, + "requires": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", + "dev": true + } + } + }, + "vscode-html-languageservice": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-3.2.0.tgz", + "integrity": "sha512-aLWIoWkvb5HYTVE0kI9/u3P0ZAJGrYOSAAE6L0wqB9radKRtbJNrF9+BjSUFyCgBdNBE/GFExo35LoknQDJrfw==", + "requires": { + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "3.16.0-next.2", + "vscode-nls": "^5.0.0", + "vscode-uri": "^2.1.2" + } + }, + "vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==" + }, + "vscode-languageserver": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-6.1.1.tgz", + "integrity": "sha512-DueEpkUAkD5XTR4MLYNr6bQIp/UFR0/IPApgXU3YfCBCB08u2sm9hRCs6DxYZELkk++STPjpcjksR2H8qI3cDQ==", + "requires": { + "vscode-languageserver-protocol": "^3.15.3" + } + }, + "vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "requires": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + }, + "dependencies": { + "vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" + } + } + }, + "vscode-languageserver-textdocument": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.1.tgz", + "integrity": "sha512-UIcJDjX7IFkck7cSkNNyzIz5FyvpQfY7sdzVy+wkKN/BLaD4DQ0ppXQrKePomCxTS7RrolK1I0pey0bG9eh8dA==" + }, + "vscode-languageserver-types": { + "version": "3.16.0-next.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz", + "integrity": "sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==" + }, + "vscode-nls": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz", + "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==" + }, + "vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==" + } + } +} diff --git a/vscode/packages/server/package.json b/vscode/packages/server/package.json new file mode 100644 index 000000000..d5837cc08 --- /dev/null +++ b/vscode/packages/server/package.json @@ -0,0 +1,21 @@ +{ + "name": "@astro-vscode/server", + "version": "0.1.0", + "author": "Skypack", + "license": "MIT", + "main": "dist/index.js", + "files": [ + "dist" + ], + "scripts": { + "build": "tsc" + }, + "devDependencies": { + "astro": "file:../../" + }, + "dependencies": { + "vscode-html-languageservice": "^3.0.3", + "vscode-languageserver": "^6.1.1", + "vscode-languageserver-textdocument": "^1.0.1" + } +} diff --git a/vscode/packages/server/src/index.ts b/vscode/packages/server/src/index.ts new file mode 100644 index 000000000..dda369929 --- /dev/null +++ b/vscode/packages/server/src/index.ts @@ -0,0 +1,32 @@ +import { getLanguageService } from 'vscode-html-languageservice'; +import { createConnection, ProposedFeatures, TextDocuments, TextDocumentSyncKind } from 'vscode-languageserver'; +import { TextDocument } from 'vscode-languageserver-textdocument'; + +let connection = createConnection(ProposedFeatures.all); +let documents: TextDocuments<TextDocument> = new TextDocuments(TextDocument); + +const htmlLanguageService = getLanguageService(); + +connection.onInitialize(() => { + return { + capabilities: { + textDocumentSync: TextDocumentSyncKind.Full, + completionProvider: { + resolveProvider: false, + }, + }, + }; +}); + +connection.onCompletion(async (textDocumentPosition, token) => { + console.log(token); + const document = documents.get(textDocumentPosition.textDocument.uri); + if (!document) { + return null; + } + + return htmlLanguageService.doComplete(document, textDocumentPosition.position, htmlLanguageService.parseHTMLDocument(document)); +}); + +documents.listen(connection); +connection.listen(); diff --git a/vscode/packages/server/tsconfig.json b/vscode/packages/server/tsconfig.json new file mode 100644 index 000000000..6af42d0b2 --- /dev/null +++ b/vscode/packages/server/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + }, + "include": ["src"], + "exclude": ["node_modules"], +} |