Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to Prettier 3 #909

Merged
merged 1 commit into from
Dec 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 3 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,10 @@
"type": "git",
"url": "https://github.com/redhat-developer/yaml-language-server.git"
},
"optionalDependencies": {
"prettier": "2.8.7"
},
"dependencies": {
"ajv": "^8.11.0",
"lodash": "4.17.21",
"prettier": "^3.0.0",
"request-light": "^0.5.7",
"vscode-json-languageservice": "4.1.8",
"vscode-languageserver": "^9.0.0",
Expand All @@ -49,17 +47,16 @@
"@types/chai": "^4.2.12",
"@types/mocha": "8.2.2",
"@types/node": "16.x",
"@types/prettier": "2.7.2",
"@types/sinon": "^9.0.5",
"@types/sinon-chai": "^3.2.5",
"@typescript-eslint/eslint-plugin": "^5.38.0",
"@typescript-eslint/parser": "^5.38.0",
"chai": "^4.2.0",
"coveralls": "3.1.1",
"eslint": "^8.24.0",
"eslint-config-prettier": "^8.5.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-prettier": "^5.0.0",
"http-proxy-agent": "^5.0.0",
"https-proxy-agent": "^5.0.0",
"mocha": "9.2.2",
Expand Down
2 changes: 1 addition & 1 deletion src/languageserver/handlers/languageHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ export class LanguageHandlers {
* Called when the formatter is invoked
* Returns the formatted document content using prettier
*/
formatterHandler(formatParams: DocumentFormattingParams): TextEdit[] {
formatterHandler(formatParams: DocumentFormattingParams): Promise<TextEdit[]> {
const document = this.yamlSettings.documents.get(formatParams.textDocument.uri);

if (!document) {
Expand Down
5 changes: 4 additions & 1 deletion src/languageserver/handlers/requestHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ import { SchemaModificationNotification } from '../../requestTypes';

export class RequestHandlers {
private languageService: LanguageService;
constructor(private readonly connection: Connection, languageService: LanguageService) {
constructor(
private readonly connection: Connection,
languageService: LanguageService
) {
this.languageService = languageService;
}

Expand Down
6 changes: 5 additions & 1 deletion src/languageserver/handlers/validationHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,11 @@ export class ValidationHandler {
private languageService: LanguageService;
private yamlSettings: SettingsState;

constructor(private readonly connection: Connection, languageService: LanguageService, yamlSettings: SettingsState) {
constructor(
private readonly connection: Connection,
languageService: LanguageService,
yamlSettings: SettingsState
) {
this.languageService = languageService;
this.yamlSettings = yamlSettings;

Expand Down
5 changes: 4 additions & 1 deletion src/languageserver/handlers/workspaceHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ import { ExecuteCommandParams, Connection } from 'vscode-languageserver';
import { CommandExecutor } from '../commandExecutor';

export class WorkspaceHandlers {
constructor(private readonly connection: Connection, private readonly commandExecutor: CommandExecutor) {}
constructor(
private readonly connection: Connection,
private readonly commandExecutor: CommandExecutor
) {}

registerHandlers(): void {
this.connection.onExecuteCommand((params) => this.executeCommand(params));
Expand Down
5 changes: 4 additions & 1 deletion src/languageservice/parser/jsonParser07.ts
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,10 @@ export interface ISchemaCollector {

class SchemaCollector implements ISchemaCollector {
schemas: IApplicableSchema[] = [];
constructor(private focusOffset = -1, private exclude: ASTNode = null) {}
constructor(
private focusOffset = -1,
private exclude: ASTNode = null
) {}
add(schema: IApplicableSchema): void {
this.schemas.push(schema);
}
Expand Down
5 changes: 4 additions & 1 deletion src/languageservice/services/documentSymbols.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ import { convertErrorToTelemetryMsg } from '../utils/objects';
export class YAMLDocumentSymbols {
private jsonDocumentSymbols;

constructor(schemaService: YAMLSchemaService, private readonly telemetry?: Telemetry) {
constructor(
schemaService: YAMLSchemaService,
private readonly telemetry?: Telemetry
) {
this.jsonDocumentSymbols = new JSONDocumentSymbols(schemaService);

// override 'getKeyLabel' to handle complex mapping
Expand Down
5 changes: 4 additions & 1 deletion src/languageservice/services/yamlCodeLens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ import { convertErrorToTelemetryMsg } from '../utils/objects';
import { getSchemaTitle } from '../utils/schemaUtils';

export class YamlCodeLens {
constructor(private schemaService: YAMLSchemaService, private readonly telemetry?: Telemetry) {}
constructor(
private schemaService: YAMLSchemaService,
private readonly telemetry?: Telemetry
) {}

async getCodeLens(document: TextDocument): Promise<CodeLens[]> {
const result = [];
Expand Down
12 changes: 7 additions & 5 deletions src/languageservice/services/yamlFormatter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@

import { Range, Position, TextEdit, FormattingOptions } from 'vscode-languageserver-types';
import { CustomFormatterOptions, LanguageSettings } from '../yamlLanguageService';
import * as prettier from 'prettier';
import { Options } from 'prettier';
import * as parser from 'prettier/parser-yaml';
import { format, Options } from 'prettier';
import * as parser from 'prettier/plugins/yaml';
import { TextDocument } from 'vscode-languageserver-textdocument';

export class YAMLFormatter {
Expand All @@ -20,7 +19,10 @@ export class YAMLFormatter {
}
}

public format(document: TextDocument, options: Partial<FormattingOptions> & CustomFormatterOptions = {}): TextEdit[] {
public async format(
document: TextDocument,
options: Partial<FormattingOptions> & CustomFormatterOptions = {}
): Promise<TextEdit[]> {
if (!this.formatterEnabled) {
return [];
}
Expand All @@ -43,7 +45,7 @@ export class YAMLFormatter {
printWidth: options.printWidth,
};

const formatted = prettier.format(text, prettierOptions);
const formatted = await format(text, prettierOptions);

return [TextEdit.replace(Range.create(Position.create(0, 0), document.positionAt(text.length)), formatted)];
} catch (error) {
Expand Down
5 changes: 4 additions & 1 deletion src/languageservice/services/yamlHover.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@ export class YAMLHover {
private indentation: string;
private schemaService: YAMLSchemaService;

constructor(schemaService: YAMLSchemaService, private readonly telemetry?: Telemetry) {
constructor(
schemaService: YAMLSchemaService,
private readonly telemetry?: Telemetry
) {
this.shouldHover = true;
this.schemaService = schemaService;
}
Expand Down
5 changes: 4 additions & 1 deletion src/languageservice/services/yamlValidation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ export class YAMLValidation {

private MATCHES_MULTIPLE = 'Matches multiple schemas when only one must validate.';

constructor(schemaService: YAMLSchemaService, private readonly telemetry?: Telemetry) {
constructor(
schemaService: YAMLSchemaService,
private readonly telemetry?: Telemetry
) {
this.validationEnabled = true;
this.jsonValidation = new JSONValidation(schemaService, Promise);
}
Expand Down
4 changes: 2 additions & 2 deletions src/languageservice/utils/schemaUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ export function getSchemaTypeName(schema: JSONSchema): string {
return Array.isArray(schema.type)
? schema.type.join(' | ')
: closestTitleWithType
? schema.type.concat('(', schema.closestTitle, ')')
: schema.type || schema.closestTitle; //object
? schema.type.concat('(', schema.closestTitle, ')')
: schema.type || schema.closestTitle; //object
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/languageservice/yamlLanguageService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ export interface LanguageService {
findDocumentSymbols2: (document: TextDocument, context?: DocumentSymbolsContext) => DocumentSymbol[];
findLinks: (document: TextDocument) => Promise<DocumentLink[]>;
resetSchema: (uri: string) => boolean;
doFormat: (document: TextDocument, options?: CustomFormatterOptions) => TextEdit[];
doFormat: (document: TextDocument, options?: CustomFormatterOptions) => Promise<TextEdit[]>;
doDefinition: (document: TextDocument, params: DefinitionParams) => DefinitionLink[] | undefined;
doDocumentOnTypeFormatting: (document: TextDocument, params: DocumentOnTypeFormattingParams) => TextEdit[] | undefined;
addSchema: (schemaID: string, schema: JSONSchema) => void;
Expand Down
27 changes: 14 additions & 13 deletions test/formatter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
describe('Formatter', function () {
describe('Test that formatter works with custom tags', function () {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function parseSetup(content: string, options: any = {}): TextEdit[] {
function parseSetup(content: string, options: any = {}): Promise<TextEdit[]> {

Check warning

Code scanning / ESLint

Disallow the `any` type Warning test

Unexpected any. Specify a different type.
const testTextDocument = setupTextDocument(content);
yamlSettings.documents = new TextDocumentTestManager();
(yamlSettings.documents as TextDocumentTestManager).set(testTextDocument);
Expand All @@ -35,31 +35,32 @@
});
}

it('Formatting works without custom tags', () => {
it('Formatting works without custom tags', async () => {
const content = 'cwd: test';
const edits = parseSetup(content);
const edits = await parseSetup(content);
console.dir({ edits });
assert.notEqual(edits.length, 0);
assert.equal(edits[0].newText, 'cwd: test\n');
});

it('Formatting works with custom tags', () => {
it('Formatting works with custom tags', async () => {
const content = 'cwd: !Test test';
const edits = parseSetup(content);
const edits = await parseSetup(content);
assert.notEqual(edits.length, 0);
assert.equal(edits[0].newText, 'cwd: !Test test\n');
});

it('Formatting wraps text', () => {
it('Formatting wraps text', async () => {
const content = `comments: >
test test test test test test test test test test test test`;
const edits = parseSetup(content, {
const edits = await parseSetup(content, {
printWidth: 20,
proseWrap: 'always',
});
assert.equal(edits[0].newText, 'comments: >\n test test test\n test test test\n test test test\n test test test\n');
});

it('Formatting uses tabSize', () => {
it('Formatting uses tabSize', async () => {
const content = `map:
k1: v1
k2: v2
Expand All @@ -68,7 +69,7 @@
- item2
`;

const edits = parseSetup(content, {
const edits = await parseSetup(content, {
tabSize: 5,
});

Expand All @@ -82,7 +83,7 @@
assert.equal(edits[0].newText, expected);
});

it('Formatting uses tabWidth', () => {
it('Formatting uses tabWidth', async () => {
const content = `map:
k1: v1
k2: v2
Expand All @@ -91,7 +92,7 @@
- item2
`;

const edits = parseSetup(content, {
const edits = await parseSetup(content, {
tabWidth: 5,
});

Expand All @@ -105,7 +106,7 @@
assert.equal(edits[0].newText, expected);
});

it('Formatting uses tabWidth over tabSize', () => {
it('Formatting uses tabWidth over tabSize', async () => {
const content = `map:
k1: v1
k2: v2
Expand All @@ -114,7 +115,7 @@
- item2
`;

const edits = parseSetup(content, {
const edits = await parseSetup(content, {
tabSize: 3,
tabWidth: 5,
});
Expand Down
50 changes: 32 additions & 18 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,11 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"

"@pkgr/core@^0.1.0":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==

"@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1":
version "1.8.3"
resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz"
Expand Down Expand Up @@ -425,11 +430,6 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.60.tgz#a1fbca80c18dd80c8783557304cdb7d55ac3aff5"
integrity sha512-kYIYa1D1L+HDv5M5RXQeEu1o0FKA6yedZIoyugm/MBPROkLpX4L7HRxMrPVyo8bnvjpW/wDlqFNGzXNMb7AdRw==

"@types/[email protected]":
version "2.7.2"
resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0"
integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==

"@types/sinon-chai@^3.2.5":
version "3.2.5"
resolved "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.5.tgz"
Expand Down Expand Up @@ -1153,10 +1153,10 @@ escape-string-regexp@^1.0.5:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=

eslint-config-prettier@^8.5.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
eslint-config-prettier@^9.0.0:
version "9.1.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f"
integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==

eslint-import-resolver-node@^0.3.6:
version "0.3.6"
Expand Down Expand Up @@ -1193,12 +1193,13 @@ eslint-plugin-import@^2.26.0:
resolve "^1.22.0"
tsconfig-paths "^3.14.1"

eslint-plugin-prettier@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b"
integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
eslint-plugin-prettier@^5.0.0:
version "5.1.3"
resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1"
integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==
dependencies:
prettier-linter-helpers "^1.0.0"
synckit "^0.8.6"

eslint-scope@^5.1.1:
version "5.1.1"
Expand Down Expand Up @@ -2570,10 +2571,10 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"

prettier@2.8.7:
version "2.8.7"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.7.tgz#bb79fc8729308549d28fe3a98fce73d2c0656450"
integrity sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==
prettier@^3.0.0:
version "3.3.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.1.tgz#e68935518dd90bb7ec4821ba970e68f8de16e1ac"
integrity sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==

process-on-spawn@^1.0.0:
version "1.0.0"
Expand Down Expand Up @@ -2783,7 +2784,7 @@ side-channel@^1.0.4:

signal-exit@^3.0.2:
version "3.0.7"
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==

sinon-chai@^3.5.0:
Expand Down Expand Up @@ -2928,6 +2929,14 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==

synckit@^0.8.6:
version "0.8.8"
resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7"
integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==
dependencies:
"@pkgr/core" "^0.1.0"
tslib "^2.6.2"

test-exclude@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz"
Expand Down Expand Up @@ -2996,6 +3005,11 @@ tslib@^1.8.1:
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==

tslib@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==

tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
Expand Down
Loading