Skip to content

Commit 244b031

Browse files
authored
Updates to compose language service packaging structure (#174)
1 parent 2b2e93a commit 244b031

29 files changed

+436
-312
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
## 0.5.0 - 9 February 2026
2+
### Breaking Changes
3+
* `TelemetryEvent`, `AlternateYamlLanguageServiceClientCapabilities`, and `DocumentSettings*` types have moved from `lib/client/*` to `@microsoft/compose-language-service/client`.
4+
5+
### Added
6+
* An entrypoint was added for `client`. This is intended for use by any client to help with interacting with this language service.
7+
* An entrypoint was added for `vscode`. This is intended for use by VS Code in particular to help with interacting with this language service.
8+
* An ESM build of the entire package is now included, in addition to the prior CJS build.
9+
110
## 0.4.0 - 17 April 2025
211
### Breaking Changes
312
* The service startup CodeLens has changed the command it will call to `vscode-containers.compose.up`.

package-lock.json

Lines changed: 101 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@microsoft/compose-language-service",
33
"author": "Microsoft Corporation",
4-
"version": "0.4.0",
4+
"version": "0.5.0",
55
"publisher": "ms-azuretools",
66
"description": "Language service for Docker Compose documents",
77
"license": "MIT",
@@ -17,9 +17,25 @@
1717
"vscode",
1818
"docker"
1919
],
20-
"module": "dist/esm/server.js",
2120
"main": "dist/cjs/server.js",
2221
"types": "dist/esm/server.d.ts",
22+
"exports": {
23+
".": {
24+
"import": "./dist/esm/server.js",
25+
"require": "./dist/cjs/server.js",
26+
"types": "./dist/esm/server.d.ts"
27+
},
28+
"./client": {
29+
"import": "./dist/esm/client/index.js",
30+
"require": "./dist/cjs/client/index.js",
31+
"types": "./dist/esm/client/index.d.ts"
32+
},
33+
"./vscode": {
34+
"import": "./dist/esm/vscode/index.js",
35+
"require": "./dist/cjs/vscode/index.js",
36+
"types": "./dist/esm/vscode/index.d.ts"
37+
}
38+
},
2339
"bin": {
2440
"docker-compose-langserver": "./bin/docker-compose-langserver"
2541
},
@@ -35,11 +51,14 @@
3551
"node": ">=22"
3652
},
3753
"devDependencies": {
38-
"@microsoft/vscode-azext-eng": "1.0.0-alpha.8",
39-
"@types/node": "22.x"
54+
"@microsoft/vscode-azext-eng": "1.0.0-alpha.12",
55+
"@types/node": "22.x",
56+
"@types/vscode": "1.105.0",
57+
"vscode-languageclient": "^10.0.0-next.19"
4058
},
4159
"dependencies": {
42-
"vscode-languageserver": "^9.0.1",
60+
"vscode-languageserver": "^10.0.0-next.16",
61+
"vscode-languageserver-protocol": "^3.17.6-next.16",
4362
"vscode-languageserver-textdocument": "^1.0.12",
4463
"yaml": "^2.8.2"
4564
},

src/client/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*!--------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See LICENSE in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
export * from '../common/AlternateYamlLanguageServiceClientCapabilities';
7+
export * from '../common/ComposeLanguageClientCapabilities';
8+
export * from '../common/DocumentSettingsClientCapabilities';
9+
export * from '../common/TelemetryEvent';
10+
export * from '../common/TextDocumentParams';

src/client/AlternateYamlLanguageServiceClientCapabilities.ts renamed to src/common/AlternateYamlLanguageServiceClientCapabilities.ts

File renamed without changes.

src/client/ClientCapabilities.ts renamed to src/common/ComposeLanguageClientCapabilities.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import type { ClientCapabilities } from 'vscode-languageserver-protocol';
7-
import type { DocumentSettingsClientCapabilities } from './DocumentSettings';
7+
import type { DocumentSettingsClientCapabilities } from './DocumentSettingsClientCapabilities';
88
import type { AlternateYamlLanguageServiceClientCapabilities } from './AlternateYamlLanguageServiceClientCapabilities';
99

1010
export type ComposeLanguageClientCapabilities = Omit<ClientCapabilities, 'experimental'> & {

src/client/DocumentSettings.ts renamed to src/common/DocumentSettingsClientCapabilities.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { NotificationType, RequestType } from 'vscode-languageserver-protocol';
7-
import { TextDocumentParams } from '../service/ExtendedParams';
7+
import type { TextDocumentParams } from './TextDocumentParams';
88

99
export type DocumentSettingsClientCapabilities = {
1010
readonly request: boolean,
@@ -27,7 +27,7 @@ export type DocumentSettingsParams = TextDocumentParams;
2727
// eslint-disable-next-line @typescript-eslint/no-namespace
2828
export namespace DocumentSettingsRequest {
2929
export const method = '$/textDocument/documentSettings' as const;
30-
export const type = new RequestType<DocumentSettingsParams, DocumentSettings | null, never>(method);
30+
export const type = new RequestType<DocumentSettingsParams, DocumentSettings | null | undefined, never>(method);
3131
}
3232

3333
export type DocumentSettingsNotificationParams = DocumentSettingsParams & DocumentSettings;

src/common/TextDocumentParams.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*!--------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See LICENSE in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import type { TextDocumentIdentifier } from 'vscode-languageserver-protocol';
7+
8+
export interface TextDocumentParams { // This interface ought to exist in `vscode-languageserver`, like `TextDocumentPositionParams`, but here we are...
9+
textDocument: TextDocumentIdentifier;
10+
}

src/service/ComposeDocument.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { ErrorCodes, Position, Range, ResponseError, TextDocumentIdentifier, TextDocumentsConfiguration } from 'vscode-languageserver';
77
import { DocumentUri, TextDocument } from 'vscode-languageserver-textdocument';
88
import { Document as YamlDocument, isDocument, Node as YamlNode, parseDocument, ScalarTag, Tags } from 'yaml';
9-
import { CRLF, DocumentSettings, DocumentSettingsParams, DocumentSettingsRequest, LF } from '../client/DocumentSettings';
9+
import { CRLF, DocumentSettings, DocumentSettingsRequest, LF } from '../common/DocumentSettingsClientCapabilities';
1010
import { ExtendedPositionParams, PositionInfo } from './ExtendedParams';
1111
import { getCurrentContext } from './utils/ActionContext';
1212
import { Lazy } from './utils/Lazy';
@@ -74,7 +74,7 @@ export class ComposeDocument {
7474
const ctx = getCurrentContext();
7575

7676
if (ctx.clientCapabilities?.experimental?.documentSettings?.request) {
77-
const result = await ctx.connection.sendRequest<DocumentSettingsParams, DocumentSettings | null, never>(DocumentSettingsRequest.type, { textDocument: this.id });
77+
const result = await ctx.connection.sendRequest(DocumentSettingsRequest.type, { textDocument: this.id });
7878
if (result) {
7979
this.documentSettings = result;
8080
}

0 commit comments

Comments
 (0)