Skip to content

Commit 81e8f65

Browse files
feat: Update VSCode to (^1.106.0) (main) (#723)
Co-authored-by: Jason3S <3740137+Jason3S@users.noreply.github.com> Co-authored-by: Jason Dent <jason@streetsidesoftware.nl>
1 parent 1a8454c commit 81e8f65

File tree

12 files changed

+162
-38
lines changed

12 files changed

+162
-38
lines changed

cspell.config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,12 @@ words:
1313
- endregion
1414
- Evaluatable
1515
- linkcode
16+
- nodenext
1617
- pnpm
1718
- quickfix
1819
- rfdc
1920
- tsbuild
20-
- VSIX
2121
- unrs-resolver
22+
- VSIX
2223
ignoreWords: []
2324
import: []

eslint.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export default tsEslint.config(
6161
'@typescript-eslint/unified-signatures': 'off', // The signatures come from VS Code, it is better to have them match the source.
6262
'@typescript-eslint/no-empty-interface': 'off',
6363
'@typescript-eslint/no-empty-function': 'off',
64+
'@typescript-eslint/no-inferrable-types': 'off',
6465
'@typescript-eslint/no-non-null-assertion': 'error',
6566
'@typescript-eslint/prefer-literal-enum-member': 'off',
6667
'@typescript-eslint/consistent-type-imports': ['error'],

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"license": "MIT",
1010
"packageManager": "pnpm@10.20.0+sha512.cf9998222162dd85864d0a8102e7892e7ba4ceadebbf5a31f9c2fce48dfce317a9c53b9f6464d1ef9042cba2e02ae02a9f7c143a2b438cd93c91840f0192b9dd",
1111
"engines": {
12-
"node": ">20.0.0"
12+
"node": ">22.0.0"
1313
},
1414
"scripts": {
1515
"test": "pnpm test:root && pnpm -r run test",
@@ -59,9 +59,9 @@
5959
"devDependencies": {
6060
"@eslint/js": "^9.39.1",
6161
"@jest/globals": "^30.2.0",
62-
"@tsconfig/node20": "^20.1.6",
63-
"@types/node": "^20.19.24",
64-
"@types/vscode": "^1.105.0",
62+
"@tsconfig/node22": "^22.0.4",
63+
"@types/node": "^22.19.1",
64+
"@types/vscode": "^1.106.0",
6565
"eslint": "^9.39.1",
6666
"eslint-plugin-n": "^17.23.1",
6767
"eslint-plugin-simple-import-sort": "^12.1.1",

pnpm-lock.yaml

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

src/vscode-mock.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ import {
8484
ViewColumn,
8585
} from './vscode';
8686
import { FilePermission, FileType } from './vscode/FileType';
87+
import { LanguageModelDataPart } from './vscode/LanguageModelDataPart';
8788
import { createTasks } from './vscode/tasks';
8889
import { createWindow } from './vscode/window';
8990
import { createWorkspace } from './vscode/workspace';
@@ -293,6 +294,7 @@ export function createVSCodeMock(testFramework: GenericTestFramework): VSCodeMoc
293294
FileType,
294295
FoldingRange,
295296
FoldingRangeKind,
297+
LanguageModelDataPart,
296298
languages,
297299
Location,
298300
LogLevel,
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { describe, expect, test } from '@jest/globals';
2+
import type * as vscode from 'vscode';
3+
4+
import { LanguageModelDataPart } from './LanguageModelDataPart';
5+
6+
describe('LanguageModelDataPart', () => {
7+
test('LanguageModelDataPart.text', () => {
8+
const part = LanguageModelDataPart.text('hello world', 'text/plain');
9+
expect(part.mimeType).toBe('text/plain');
10+
const decoder = new TextDecoder();
11+
expect(decoder.decode(part.data)).toBe('hello world');
12+
const part2 = LanguageModelDataPart.text('hello world');
13+
expect(part2.mimeType).toBe('text/plain');
14+
expect(JSON.stringify(part)).toBe(JSON.stringify(part2));
15+
16+
// Check the type
17+
const vPart: vscode.LanguageModelDataPart = part;
18+
expect(vPart).toBe(part);
19+
});
20+
21+
test('LanguageModelDataPart.json', () => {
22+
const obj = { name: 'hello world' };
23+
const part = LanguageModelDataPart.json(obj, 'text/x-json');
24+
expect(part.mimeType).toBe('text/x-json');
25+
const decoder = new TextDecoder();
26+
expect(JSON.parse(decoder.decode(part.data))).toEqual(obj);
27+
const part2 = LanguageModelDataPart.json(obj);
28+
expect(part2.mimeType).toBe('text/x-json');
29+
expect(JSON.stringify(part)).toBe(JSON.stringify(part2));
30+
});
31+
32+
test('LanguageModelDataPart.image', () => {
33+
const svg = `\
34+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
35+
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
36+
</svg>`;
37+
38+
const encoder = new TextEncoder();
39+
const data = encoder.encode(svg);
40+
const part = LanguageModelDataPart.image(data, 'image/svg+xml');
41+
expect(part.mimeType).toBe('image/svg+xml');
42+
const decoder = new TextDecoder();
43+
expect(decoder.decode(part.data)).toBe(svg);
44+
const partFromText = LanguageModelDataPart.text(svg, 'image/svg+xml');
45+
expect(JSON.stringify(part)).toBe(JSON.stringify(partFromText));
46+
});
47+
});
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
export class LanguageModelDataPart {
2+
mimeType: string;
3+
data: Uint8Array;
4+
5+
constructor(data: Uint8Array, mimeType: string) {
6+
this.mimeType = mimeType;
7+
this.data = data;
8+
}
9+
10+
static image(data: Uint8Array, mimeType: string): LanguageModelDataPart {
11+
return new LanguageModelDataPart(data, mimeType);
12+
}
13+
14+
static json(value: object, mime: string = 'text/x-json'): LanguageModelDataPart {
15+
const textEncoder = new TextEncoder();
16+
const rawStr = JSON.stringify(value, undefined, '\t');
17+
return new LanguageModelDataPart(textEncoder.encode(rawStr), mime);
18+
}
19+
20+
static text(value: string, mime: string = 'text/plain'): LanguageModelDataPart {
21+
const textEncoder = new TextEncoder();
22+
return new LanguageModelDataPart(textEncoder.encode(value), mime);
23+
}
24+
25+
toJSON() {
26+
return {
27+
mimeType: this.mimeType,
28+
data: this.data,
29+
};
30+
}
31+
}

test-packages/jest-integration/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
},
1111
"license": "MIT",
1212
"devDependencies": {
13-
"@tsconfig/node20": "^20.1.6",
13+
"@tsconfig/node22": "^22.0.4",
1414
"@types/jest": "^30.0.0",
1515
"@types/vscode": "^1.105.0",
1616
"jest": "^30.2.0",

test-packages/vitest-integration/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
},
1111
"license": "MIT",
1212
"devDependencies": {
13-
"@tsconfig/node20": "^20.1.6",
13+
"@tsconfig/node22": "^22.0.4",
1414
"@types/vscode": "^1.105.0",
1515
"jest-mock-vscode": "workspace:*",
1616
"vitest": "^4.0.8"

test-packages/vitest-integration/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"extends": "@tsconfig/node20",
2+
"extends": "@tsconfig/node22",
33
"compilerOptions": {
44
"tsBuildInfoFile": "./dist/compile.tsbuildInfo",
55
"composite": true,

0 commit comments

Comments
 (0)