generator-code 1.11.0 → 1.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/generators/app/dependencyVersions/package.json +12 -12
- package/generators/app/generate-colortheme.js +34 -4
- package/generators/app/generate-command-js.js +13 -3
- package/generators/app/generate-command-ts.js +16 -5
- package/generators/app/generate-command-web.js +17 -6
- package/generators/app/generate-extensionpack.js +18 -4
- package/generators/app/generate-keymap.js +9 -2
- package/generators/app/generate-language.js +32 -8
- package/generators/app/generate-localization.js +17 -5
- package/generators/app/generate-notebook-renderer.js +11 -4
- package/generators/app/generate-snippets.js +26 -10
- package/generators/app/index.js +40 -0
- package/generators/app/prompts.js +12 -7
- package/generators/app/templates/ext-colortheme/vsc-extension-quickstart.md +1 -1
- package/generators/app/templates/ext-command-js/.vscodeignore +1 -1
- package/generators/app/templates/ext-command-js/eslint.config.mjs +25 -0
- package/generators/app/templates/ext-command-js/package.json +0 -1
- package/generators/app/templates/ext-command-js/vsc-extension-quickstart.md +1 -0
- package/generators/app/templates/ext-command-ts/.vscodeignore +1 -1
- package/generators/app/templates/ext-command-ts/eslint.config.mjs +28 -0
- package/generators/app/templates/ext-command-ts/package.json +1 -1
- package/generators/app/templates/ext-command-ts/vsc-extension-quickstart.md +1 -0
- package/generators/app/templates/ext-command-ts/vscode-esbuild/.vscodeignore +1 -1
- package/generators/app/templates/ext-command-ts/vscode-esbuild/package.json +1 -1
- package/generators/app/templates/ext-command-ts/vscode-webpack/.vscodeignore +1 -1
- package/generators/app/templates/ext-command-ts/vscode-webpack/package.json +1 -1
- package/generators/app/templates/ext-command-web/.vscodeignore +1 -1
- package/generators/app/templates/ext-command-web/esbuild-package.json +1 -1
- package/generators/app/templates/ext-command-web/eslint.config.mjs +28 -0
- package/generators/app/templates/ext-command-web/webpack-package.json +1 -1
- package/generators/app/templates/ext-notebook-renderer/.vscodeignore +1 -1
- package/generators/app/templates/ext-notebook-renderer/eslint.config.mjs +28 -0
- package/generators/app/templates/ext-notebook-renderer/package.json +1 -1
- package/package.json +7 -7
- package/generators/app/templates/ext-command-js/.eslintrc.json +0 -25
- package/generators/app/templates/ext-command-ts/.eslintrc.json +0 -30
- package/generators/app/templates/ext-command-web/.eslintrc.json +0 -22
- package/generators/app/templates/ext-notebook-renderer/.eslintrc.json +0 -22
|
@@ -4,18 +4,18 @@
|
|
|
4
4
|
"version": "0.0.0",
|
|
5
5
|
"private": true,
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@types/mocha": "^10.0.
|
|
7
|
+
"@types/mocha": "^10.0.7",
|
|
8
8
|
"@types/node": "20.x",
|
|
9
9
|
"@types/assert": "^1.5.10",
|
|
10
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
11
|
-
"@typescript-eslint/parser": "^
|
|
12
|
-
"eslint": "^
|
|
13
|
-
"glob": "^
|
|
14
|
-
"mocha": "^10.
|
|
15
|
-
"typescript": "^5.4
|
|
16
|
-
"@vscode/test-cli": "^0.0.
|
|
17
|
-
"@vscode/test-electron": "^2.4.
|
|
18
|
-
"@vscode/test-web": "^0.0.
|
|
10
|
+
"@typescript-eslint/eslint-plugin": "^8.3.0",
|
|
11
|
+
"@typescript-eslint/parser": "^8.3.0",
|
|
12
|
+
"eslint": "^9.9.1",
|
|
13
|
+
"glob": "^11.0.0",
|
|
14
|
+
"mocha": "^10.7.3",
|
|
15
|
+
"typescript": "^5.5.4",
|
|
16
|
+
"@vscode/test-cli": "^0.0.10",
|
|
17
|
+
"@vscode/test-electron": "^2.4.1",
|
|
18
|
+
"@vscode/test-web": "^0.0.58",
|
|
19
19
|
"@types/webpack-env": "^1.18.5",
|
|
20
20
|
"@types/vscode-notebook-renderer": "^1.72.3",
|
|
21
21
|
"concurrently": "^8.2.2",
|
|
@@ -25,14 +25,14 @@
|
|
|
25
25
|
"ts-loader": "^9.5.1",
|
|
26
26
|
"vscode-dts": "^0.3.3",
|
|
27
27
|
"vscode-notebook-error-overlay": "^1.0.1",
|
|
28
|
-
"webpack": "^5.
|
|
28
|
+
"webpack": "^5.94.0",
|
|
29
29
|
"util": "^0.12.5",
|
|
30
30
|
"webpack-cli": "^5.1.4",
|
|
31
31
|
"webpack-dev-server": "^5.0.4",
|
|
32
32
|
"assert": "^2.1.0",
|
|
33
33
|
"process": "^0.11.10",
|
|
34
34
|
"npm-run-all": "^4.1.5",
|
|
35
|
-
"esbuild": "^0.
|
|
35
|
+
"esbuild": "^0.23.1",
|
|
36
36
|
"@esbuild-plugins/node-globals-polyfill": "^0.2.3"
|
|
37
37
|
}
|
|
38
38
|
}
|
|
@@ -9,13 +9,27 @@ import * as fs from 'fs';
|
|
|
9
9
|
import * as plistParser from 'fast-plist';
|
|
10
10
|
import request from 'request-light';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {{
|
|
14
|
+
* themeContent: Object,
|
|
15
|
+
* themeName: string,
|
|
16
|
+
* themeBase: string,
|
|
17
|
+
* themeFileName: string,
|
|
18
|
+
* tmThemeFileName: string,
|
|
19
|
+
* tmThemeContent: string,
|
|
20
|
+
* } & import('./index.js').ExtensionConfig} ExtensionConfig
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
25
|
+
*/
|
|
12
26
|
export default {
|
|
13
27
|
id: 'ext-colortheme',
|
|
14
28
|
aliases: ['colortheme'],
|
|
15
29
|
name: 'New Color Theme',
|
|
16
30
|
/**
|
|
17
31
|
* @param {Generator} generator
|
|
18
|
-
* @param {
|
|
32
|
+
* @param {ExtensionConfig} extensionConfig
|
|
19
33
|
*/
|
|
20
34
|
prompting: async (generator, extensionConfig) => {
|
|
21
35
|
|
|
@@ -63,7 +77,7 @@ export default {
|
|
|
63
77
|
},
|
|
64
78
|
/**
|
|
65
79
|
* @param {Generator} generator
|
|
66
|
-
* @param {
|
|
80
|
+
* @param {ExtensionConfig} extensionConfig
|
|
67
81
|
*/
|
|
68
82
|
writing: (generator, extensionConfig) => {
|
|
69
83
|
if (extensionConfig.tmThemeFileName) {
|
|
@@ -92,7 +106,7 @@ export default {
|
|
|
92
106
|
|
|
93
107
|
/**
|
|
94
108
|
* @param {Generator} generator
|
|
95
|
-
* @param {
|
|
109
|
+
* @param {ExtensionConfig} extensionConfig
|
|
96
110
|
*/
|
|
97
111
|
async function askForThemeInfo(generator, extensionConfig) {
|
|
98
112
|
if (generator.options['quick']) {
|
|
@@ -132,7 +146,12 @@ async function askForThemeInfo(generator, extensionConfig) {
|
|
|
132
146
|
await convertTheme(null, extensionConfig, false, generator);
|
|
133
147
|
}
|
|
134
148
|
}
|
|
135
|
-
|
|
149
|
+
/**
|
|
150
|
+
* @param {string} location
|
|
151
|
+
* @param {ExtensionConfig} extensionConfig
|
|
152
|
+
* @param {boolean} inline
|
|
153
|
+
* @param {Generator} generator
|
|
154
|
+
*/
|
|
136
155
|
function convertTheme(location, extensionConfig, inline, generator) {
|
|
137
156
|
if (!location) {
|
|
138
157
|
extensionConfig.tmThemeFileName = '';
|
|
@@ -187,6 +206,12 @@ function convertTheme(location, extensionConfig, inline, generator) {
|
|
|
187
206
|
}
|
|
188
207
|
}
|
|
189
208
|
|
|
209
|
+
/**
|
|
210
|
+
* @param {ExtensionConfig} extensionConfig
|
|
211
|
+
* @param {string} tmThemeFileName
|
|
212
|
+
* @param {string} body
|
|
213
|
+
* @param {Generator} generator
|
|
214
|
+
*/
|
|
190
215
|
function processContent(extensionConfig, tmThemeFileName, body, generator) {
|
|
191
216
|
const themeNameMatch = body.match(/<key>name<\/key>\s*<string>([^<]*)/);
|
|
192
217
|
const themeName = themeNameMatch ? themeNameMatch[1] : '';
|
|
@@ -235,6 +260,11 @@ const mappings = {
|
|
|
235
260
|
"ansiBrightCyan": ["terminal.ansiBrightCyan"], "ansiBrightWhite": ["terminal.ansiBrightWhite"]
|
|
236
261
|
};
|
|
237
262
|
|
|
263
|
+
/**
|
|
264
|
+
* @param {string} content
|
|
265
|
+
* @param {string} tmThemeFileName
|
|
266
|
+
* @param {Generator} generator
|
|
267
|
+
*/
|
|
238
268
|
function migrate(content, tmThemeFileName, generator) {
|
|
239
269
|
let result = {};
|
|
240
270
|
let theme;
|
|
@@ -4,13 +4,23 @@
|
|
|
4
4
|
import Generator from 'yeoman-generator';
|
|
5
5
|
import * as prompts from './prompts.js';
|
|
6
6
|
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {{
|
|
10
|
+
* checkJavaScript: boolean
|
|
11
|
+
* } & import('./index.js').ExtensionConfig} ExtensionConfig
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
16
|
+
*/
|
|
7
17
|
export default {
|
|
8
18
|
id: 'ext-command-js',
|
|
9
19
|
aliases: ['js', 'command-js'],
|
|
10
20
|
name: 'New Extension (JavaScript)',
|
|
11
21
|
/**
|
|
12
22
|
* @param {Generator} generator
|
|
13
|
-
* @param {
|
|
23
|
+
* @param {ExtensionConfig} extensionConfig
|
|
14
24
|
*/
|
|
15
25
|
prompting: async (generator, extensionConfig) => {
|
|
16
26
|
await prompts.askForExtensionDisplayName(generator, extensionConfig);
|
|
@@ -33,7 +43,7 @@ export default {
|
|
|
33
43
|
|
|
34
44
|
/**
|
|
35
45
|
* @param {Generator} generator
|
|
36
|
-
* @param {
|
|
46
|
+
* @param {ExtensionConfig} extensionConfig
|
|
37
47
|
*/
|
|
38
48
|
writing: (generator, extensionConfig) => {
|
|
39
49
|
generator.fs.copy(generator.templatePath('vscode'), generator.destinationPath('.vscode'));
|
|
@@ -53,7 +63,7 @@ export default {
|
|
|
53
63
|
generator.fs.copyTpl(generator.templatePath('extension.js'), generator.destinationPath('extension.js'), extensionConfig);
|
|
54
64
|
generator.fs.copyTpl(generator.templatePath('package.json'), generator.destinationPath('package.json'), extensionConfig);
|
|
55
65
|
generator.fs.copy(generator.templatePath('.vscode-test.mjs'), generator.destinationPath('.vscode-test.mjs'));
|
|
56
|
-
generator.fs.copyTpl(generator.templatePath('.
|
|
66
|
+
generator.fs.copyTpl(generator.templatePath('eslint.config.mjs'), generator.destinationPath('eslint.config.mjs'), extensionConfig);
|
|
57
67
|
|
|
58
68
|
if (extensionConfig.pkgManager === 'yarn') {
|
|
59
69
|
generator.fs.copyTpl(generator.templatePath('.yarnrc'), generator.destinationPath('.yarnrc'), extensionConfig);
|
|
@@ -5,8 +5,16 @@ import Generator from 'yeoman-generator';
|
|
|
5
5
|
import { Chalk } from 'chalk';
|
|
6
6
|
import * as prompts from './prompts.js';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {import('./index.js').ExtensionConfig} ExtensionConfig
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
|
|
8
13
|
const chalk = new Chalk();
|
|
9
14
|
|
|
15
|
+
/**
|
|
16
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
17
|
+
*/
|
|
10
18
|
export default {
|
|
11
19
|
id: 'ext-command-ts',
|
|
12
20
|
aliases: ['ts', 'command-ts'],
|
|
@@ -14,7 +22,7 @@ export default {
|
|
|
14
22
|
insidersName: 'New Extension with Proposed API (TypeScript)',
|
|
15
23
|
/**
|
|
16
24
|
* @param {Generator} generator
|
|
17
|
-
* @param {
|
|
25
|
+
* @param {ExtensionConfig} extensionConfig
|
|
18
26
|
*/
|
|
19
27
|
prompting: async (generator, extensionConfig) => {
|
|
20
28
|
await prompts.askForExtensionDisplayName(generator, extensionConfig);
|
|
@@ -27,7 +35,7 @@ export default {
|
|
|
27
35
|
},
|
|
28
36
|
/**
|
|
29
37
|
* @param {Generator} generator
|
|
30
|
-
* @param {
|
|
38
|
+
* @param {ExtensionConfig} extensionConfig
|
|
31
39
|
*/
|
|
32
40
|
writing: (generator, extensionConfig) => {
|
|
33
41
|
const bundler = extensionConfig.bundler;
|
|
@@ -56,7 +64,7 @@ export default {
|
|
|
56
64
|
generator.fs.copyTpl(generator.templatePath('src/extension.ts'), generator.destinationPath('src/extension.ts'), extensionConfig);
|
|
57
65
|
generator.fs.copy(generator.templatePath('src/test'), generator.destinationPath('src/test'));
|
|
58
66
|
generator.fs.copy(generator.templatePath('.vscode-test.mjs'), generator.destinationPath('.vscode-test.mjs'));
|
|
59
|
-
generator.fs.copy(generator.templatePath('.
|
|
67
|
+
generator.fs.copy(generator.templatePath('eslint.config.mjs'), generator.destinationPath('eslint.config.mjs'));
|
|
60
68
|
|
|
61
69
|
if (extensionConfig.pkgManager === 'yarn') {
|
|
62
70
|
generator.fs.copyTpl(generator.templatePath('.yarnrc'), generator.destinationPath('.yarnrc'), extensionConfig);
|
|
@@ -70,12 +78,15 @@ export default {
|
|
|
70
78
|
|
|
71
79
|
/**
|
|
72
80
|
* @param {Generator} generator
|
|
73
|
-
* @param {
|
|
81
|
+
* @param {ExtensionConfig} extensionConfig
|
|
74
82
|
*/
|
|
75
83
|
endMessage: (generator, extensionConfig) => {
|
|
76
|
-
if (extensionConfig.webpack) {
|
|
84
|
+
if (extensionConfig.bundler === 'webpack') {
|
|
77
85
|
generator.log(chalk.yellow(`To run the extension you need to install the recommended extension 'amodio.tsl-problem-matcher'.`));
|
|
78
86
|
generator.log('');
|
|
87
|
+
} else if (extensionConfig.bundler === 'esbuild') {
|
|
88
|
+
generator.log(chalk.yellow(`To run the extension you need to install the recommended extension 'connor4312.esbuild-problem-matchers'.`));
|
|
89
|
+
generator.log('');
|
|
79
90
|
}
|
|
80
91
|
}
|
|
81
92
|
}
|
|
@@ -5,15 +5,21 @@ import Generator from 'yeoman-generator';
|
|
|
5
5
|
import { Chalk } from 'chalk';
|
|
6
6
|
import * as prompts from './prompts.js';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {import('./index.js').ExtensionConfig} ExtensionConfig
|
|
10
|
+
*/
|
|
8
11
|
const chalk = new Chalk();
|
|
9
12
|
|
|
13
|
+
/**
|
|
14
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
15
|
+
*/
|
|
10
16
|
export default {
|
|
11
17
|
id: 'ext-command-web',
|
|
12
18
|
aliases: ['web', 'command-web'],
|
|
13
19
|
name: 'New Web Extension (TypeScript)',
|
|
14
20
|
/**
|
|
15
21
|
* @param {Generator} generator
|
|
16
|
-
* @param {
|
|
22
|
+
* @param {ExtensionConfig} extensionConfig
|
|
17
23
|
*/
|
|
18
24
|
prompting: async (generator, extensionConfig) => {
|
|
19
25
|
await prompts.askForExtensionDisplayName(generator, extensionConfig);
|
|
@@ -26,7 +32,7 @@ export default {
|
|
|
26
32
|
},
|
|
27
33
|
/**
|
|
28
34
|
* @param {Generator} generator
|
|
29
|
-
* @param {
|
|
35
|
+
* @param {ExtensionConfig} extensionConfig
|
|
30
36
|
*/
|
|
31
37
|
writing: (generator, extensionConfig) => {
|
|
32
38
|
const bundler = extensionConfig.bundler;
|
|
@@ -59,7 +65,7 @@ export default {
|
|
|
59
65
|
generator.fs.copy(generator.templatePath('src/web/test/suite/webpack-mochaTestRunner.ts'), generator.destinationPath('src/web/test/suite/index.ts'));
|
|
60
66
|
}
|
|
61
67
|
|
|
62
|
-
generator.fs.copy(generator.templatePath('.
|
|
68
|
+
generator.fs.copy(generator.templatePath('eslint.config.mjs'), generator.destinationPath('eslint.config.mjs'));
|
|
63
69
|
|
|
64
70
|
if (extensionConfig.pkgManager === 'yarn') {
|
|
65
71
|
generator.fs.copyTpl(generator.templatePath('.yarnrc'), generator.destinationPath('.yarnrc'), extensionConfig);
|
|
@@ -72,10 +78,15 @@ export default {
|
|
|
72
78
|
},
|
|
73
79
|
/**
|
|
74
80
|
* @param {Generator} generator
|
|
75
|
-
* @param {
|
|
81
|
+
* @param {ExtensionConfig} extensionConfig
|
|
76
82
|
*/
|
|
77
83
|
endMessage: (generator, extensionConfig) => {
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
if (extensionConfig.bundler === 'webpack') {
|
|
85
|
+
generator.log(chalk.yellow(`To run the extension you need to install the recommended extension 'amodio.tsl-problem-matcher'.`));
|
|
86
|
+
generator.log('');
|
|
87
|
+
} else if (extensionConfig.bundler === 'esbuild') {
|
|
88
|
+
generator.log(chalk.yellow(`To run the extension you need to install the recommended extension 'connor4312.esbuild-problem-matchers'.`));
|
|
89
|
+
generator.log('');
|
|
90
|
+
}
|
|
80
91
|
}
|
|
81
92
|
}
|
|
@@ -5,13 +5,24 @@ import Generator from 'yeoman-generator';
|
|
|
5
5
|
import * as prompts from './prompts.js';
|
|
6
6
|
import * as childProcess from 'child_process';
|
|
7
7
|
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {{
|
|
11
|
+
* extensionList: string[],
|
|
12
|
+
* isCustomization: boolean
|
|
13
|
+
* } & import('./index.js').ExtensionConfig} ExtensionConfig
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
18
|
+
*/
|
|
8
19
|
export default {
|
|
9
20
|
id: 'ext-extensionpack',
|
|
10
21
|
aliases: ['extensionpack'],
|
|
11
22
|
name: 'New Extension Pack',
|
|
12
23
|
/**
|
|
13
24
|
* @param {Generator} generator
|
|
14
|
-
* @param {
|
|
25
|
+
* @param {ExtensionConfig} extensionConfig
|
|
15
26
|
*/
|
|
16
27
|
prompting: async (generator, extensionConfig) => {
|
|
17
28
|
|
|
@@ -25,7 +36,7 @@ export default {
|
|
|
25
36
|
},
|
|
26
37
|
/**
|
|
27
38
|
* @param {Generator} generator
|
|
28
|
-
* @param {
|
|
39
|
+
* @param {ExtensionConfig} extensionConfig
|
|
29
40
|
*/
|
|
30
41
|
writing: (generator, extensionConfig) => {
|
|
31
42
|
generator.fs.copy(generator.templatePath('vscode'), generator.destinationPath('.vscode'));
|
|
@@ -40,7 +51,10 @@ export default {
|
|
|
40
51
|
}
|
|
41
52
|
}
|
|
42
53
|
}
|
|
43
|
-
|
|
54
|
+
/**
|
|
55
|
+
* @param {Generator} generator
|
|
56
|
+
* @param {ExtensionConfig} extensionConfig
|
|
57
|
+
*/
|
|
44
58
|
function askForExtensionPackInfo(generator, extensionConfig) {
|
|
45
59
|
extensionConfig.isCustomization = true;
|
|
46
60
|
const defaultExtensionList = ['publisher.extensionName'];
|
|
@@ -51,7 +65,7 @@ function askForExtensionPackInfo(generator, extensionConfig) {
|
|
|
51
65
|
'code --list-extensions',
|
|
52
66
|
(error, stdout, stderr) => {
|
|
53
67
|
if (error) {
|
|
54
|
-
generator.
|
|
68
|
+
generator.log.error(error);
|
|
55
69
|
} else {
|
|
56
70
|
let out = stdout.trim();
|
|
57
71
|
if (out.length > 0) {
|
|
@@ -4,13 +4,20 @@
|
|
|
4
4
|
import Generator from 'yeoman-generator';
|
|
5
5
|
import * as prompts from './prompts.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @typedef { import('./index.js').ExtensionConfig} ExtensionConfig
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
13
|
+
*/
|
|
7
14
|
export default {
|
|
8
15
|
id: 'ext-keymap',
|
|
9
16
|
aliases: ['keymap'],
|
|
10
17
|
name: 'New Keymap',
|
|
11
18
|
/**
|
|
12
19
|
* @param {Generator} generator
|
|
13
|
-
* @param {
|
|
20
|
+
* @param {ExtensionConfig} extensionConfig
|
|
14
21
|
*/
|
|
15
22
|
prompting: async (generator, extensionConfig) => {
|
|
16
23
|
await prompts.askForExtensionDisplayName(generator, extensionConfig);
|
|
@@ -21,7 +28,7 @@ export default {
|
|
|
21
28
|
},
|
|
22
29
|
/**
|
|
23
30
|
* @param {Generator} generator
|
|
24
|
-
* @param {
|
|
31
|
+
* @param {ExtensionConfig} extensionConfig
|
|
25
32
|
*/
|
|
26
33
|
writing: (generator, extensionConfig) => {
|
|
27
34
|
generator.fs.copy(generator.templatePath('vscode'), generator.destinationPath('.vscode'));
|
|
@@ -9,13 +9,28 @@ import * as plistParser from 'fast-plist';
|
|
|
9
9
|
import request from 'request-light';
|
|
10
10
|
import * as validator from './validator.js';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {{
|
|
14
|
+
* languageId: string,
|
|
15
|
+
* languageName: string,
|
|
16
|
+
* languageExtensions: string[],
|
|
17
|
+
* languageScopeName: string,
|
|
18
|
+
* languageContent: string,
|
|
19
|
+
* languageFileName: string,
|
|
20
|
+
* isCustomization: boolean
|
|
21
|
+
* } & import('./index.js').ExtensionConfig} ExtensionConfig
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
26
|
+
*/
|
|
12
27
|
export default {
|
|
13
28
|
id: 'ext-language',
|
|
14
29
|
aliases: ['language'],
|
|
15
30
|
name: 'New Language Support',
|
|
16
31
|
/**
|
|
17
32
|
* @param {Generator} generator
|
|
18
|
-
* @param {
|
|
33
|
+
* @param {ExtensionConfig} extensionConfig
|
|
19
34
|
*/
|
|
20
35
|
prompting: async (generator, extensionConfig) => {
|
|
21
36
|
await askForLanguageInfo(generator, extensionConfig);
|
|
@@ -34,7 +49,7 @@ export default {
|
|
|
34
49
|
},
|
|
35
50
|
/**
|
|
36
51
|
* @param {Generator} generator
|
|
37
|
-
* @param {
|
|
52
|
+
* @param {ExtensionConfig} extensionConfig
|
|
38
53
|
*/
|
|
39
54
|
writing: (generator, extensionConfig) => {
|
|
40
55
|
if (!extensionConfig.languageContent) {
|
|
@@ -60,7 +75,7 @@ export default {
|
|
|
60
75
|
}
|
|
61
76
|
/**
|
|
62
77
|
* @param {Generator} generator
|
|
63
|
-
* @param {
|
|
78
|
+
* @param {ExtensionConfig} extensionConfig
|
|
64
79
|
*/
|
|
65
80
|
function askForLanguageInfo(generator, extensionConfig) {
|
|
66
81
|
extensionConfig.isCustomization = true;
|
|
@@ -77,7 +92,7 @@ function askForLanguageInfo(generator, extensionConfig) {
|
|
|
77
92
|
|
|
78
93
|
/**
|
|
79
94
|
* @param {Generator} generator
|
|
80
|
-
* @param {
|
|
95
|
+
* @param {ExtensionConfig} extensionConfig
|
|
81
96
|
*/
|
|
82
97
|
function askForLanguageId(generator, extensionConfig) {
|
|
83
98
|
generator.log('Enter the id of the language. The id is an identifier and is single, lower-case name such as \'php\', \'javascript\'');
|
|
@@ -93,7 +108,7 @@ function askForLanguageId(generator, extensionConfig) {
|
|
|
93
108
|
|
|
94
109
|
/**
|
|
95
110
|
* @param {Generator} generator
|
|
96
|
-
* @param {
|
|
111
|
+
* @param {ExtensionConfig} extensionConfig
|
|
97
112
|
*/
|
|
98
113
|
function askForLanguageName(generator, extensionConfig) {
|
|
99
114
|
generator.log('Enter the name of the language. The name will be shown in the VS Code editor mode selector.');
|
|
@@ -109,7 +124,7 @@ function askForLanguageName(generator, extensionConfig) {
|
|
|
109
124
|
|
|
110
125
|
/**
|
|
111
126
|
* @param {Generator} generator
|
|
112
|
-
* @param {
|
|
127
|
+
* @param {ExtensionConfig} extensionConfig
|
|
113
128
|
*/
|
|
114
129
|
function askForLanguageExtensions(generator, extensionConfig) {
|
|
115
130
|
generator.log('Enter the file extensions of the language. Use commas to separate multiple entries (e.g. .ruby, .rb)');
|
|
@@ -125,7 +140,7 @@ function askForLanguageExtensions(generator, extensionConfig) {
|
|
|
125
140
|
|
|
126
141
|
/**
|
|
127
142
|
* @param {Generator} generator
|
|
128
|
-
* @param {
|
|
143
|
+
* @param {ExtensionConfig} extensionConfig
|
|
129
144
|
*/
|
|
130
145
|
function askForLanguageScopeName(generator, extensionConfig) {
|
|
131
146
|
generator.log('Enter the root scope name of the grammar (e.g. source.ruby)');
|
|
@@ -139,6 +154,10 @@ function askForLanguageScopeName(generator, extensionConfig) {
|
|
|
139
154
|
});
|
|
140
155
|
}
|
|
141
156
|
|
|
157
|
+
/**
|
|
158
|
+
* @param {string} location
|
|
159
|
+
* @param {ExtensionConfig} extensionConfig
|
|
160
|
+
*/
|
|
142
161
|
function convertGrammar(location, extensionConfig) {
|
|
143
162
|
extensionConfig.languageId = '';
|
|
144
163
|
extensionConfig.languageName = '';
|
|
@@ -189,6 +208,11 @@ function convertGrammar(location, extensionConfig) {
|
|
|
189
208
|
}
|
|
190
209
|
}
|
|
191
210
|
|
|
211
|
+
/**
|
|
212
|
+
* @param {ExtensionConfig} extensionConfig
|
|
213
|
+
* @param {string} fileName
|
|
214
|
+
* @param {string} body
|
|
215
|
+
*/
|
|
192
216
|
function processContent(extensionConfig, fileName, body) {
|
|
193
217
|
let languageInfo;
|
|
194
218
|
if (path.extname(fileName) === '.json') {
|
|
@@ -251,5 +275,5 @@ function processContent(extensionConfig, fileName, body) {
|
|
|
251
275
|
extensionConfig.languageExtensions = languageId ? ['.' + languageId] : [];
|
|
252
276
|
}
|
|
253
277
|
extensionConfig.languageContent = body;
|
|
254
|
-
return Promise.resolve(
|
|
278
|
+
return Promise.resolve();
|
|
255
279
|
};
|
|
@@ -5,15 +5,27 @@ import Generator from 'yeoman-generator';
|
|
|
5
5
|
import * as prompts from './prompts.js';
|
|
6
6
|
import { Chalk } from 'chalk';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {{
|
|
10
|
+
* lpLanguageId: string,
|
|
11
|
+
* lpLanguageName: string,
|
|
12
|
+
* lpLocalizedLanguageName: string,
|
|
13
|
+
* isCustomization: boolean
|
|
14
|
+
* } & import('./index.js').ExtensionConfig} ExtensionConfig
|
|
15
|
+
*/
|
|
16
|
+
|
|
8
17
|
const chalk = new Chalk();
|
|
9
18
|
|
|
19
|
+
/**
|
|
20
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
21
|
+
*/
|
|
10
22
|
export default {
|
|
11
23
|
id: 'ext-localization',
|
|
12
24
|
aliases: ['localization'],
|
|
13
25
|
name: 'New Language Pack (Localization)',
|
|
14
26
|
/**
|
|
15
27
|
* @param {Generator} generator
|
|
16
|
-
* @param {
|
|
28
|
+
* @param {ExtensionConfig} extensionConfig
|
|
17
29
|
*/
|
|
18
30
|
prompting: async (generator, extensionConfig) => {
|
|
19
31
|
|
|
@@ -29,7 +41,7 @@ export default {
|
|
|
29
41
|
},
|
|
30
42
|
/**
|
|
31
43
|
* @param {Generator} generator
|
|
32
|
-
* @param {
|
|
44
|
+
* @param {ExtensionConfig} extensionConfig
|
|
33
45
|
*/
|
|
34
46
|
writing: (generator, extensionConfig) => {
|
|
35
47
|
generator.fs.copyTpl(generator.templatePath('package.json'), generator.destinationPath('package.json'), extensionConfig);
|
|
@@ -57,7 +69,7 @@ export default {
|
|
|
57
69
|
|
|
58
70
|
/**
|
|
59
71
|
* @param {Generator} generator
|
|
60
|
-
* @param {
|
|
72
|
+
* @param {ExtensionConfig} extensionConfig
|
|
61
73
|
*/
|
|
62
74
|
function askForLanguageId(generator, extensionConfig) {
|
|
63
75
|
extensionConfig.isCustomization = true;
|
|
@@ -77,7 +89,7 @@ function askForLanguageId(generator, extensionConfig) {
|
|
|
77
89
|
|
|
78
90
|
/**
|
|
79
91
|
* @param {Generator} generator
|
|
80
|
-
* @param {
|
|
92
|
+
* @param {ExtensionConfig} extensionConfig
|
|
81
93
|
*/
|
|
82
94
|
function askForLanguageName(generator, extensionConfig) {
|
|
83
95
|
extensionConfig.isCustomization = true;
|
|
@@ -100,7 +112,7 @@ function askForLanguageName(generator, extensionConfig) {
|
|
|
100
112
|
|
|
101
113
|
/**
|
|
102
114
|
* @param {Generator} generator
|
|
103
|
-
* @param {
|
|
115
|
+
* @param {ExtensionConfig} extensionConfig
|
|
104
116
|
*/
|
|
105
117
|
function askForLocalizedLanguageName(generator, extensionConfig) {
|
|
106
118
|
extensionConfig.isCustomization = true;
|
|
@@ -4,13 +4,20 @@
|
|
|
4
4
|
import Generator from 'yeoman-generator';
|
|
5
5
|
import * as prompts from './prompts.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {import('./index.js').ExtensionConfig} ExtensionConfig
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
13
|
+
*/
|
|
7
14
|
export default {
|
|
8
15
|
id: 'ext-notebook-renderer',
|
|
9
16
|
aliases: ['notebook'],
|
|
10
17
|
name: 'New Notebook Renderer (TypeScript)',
|
|
11
18
|
/**
|
|
12
19
|
* @param {Generator} generator
|
|
13
|
-
* @param {
|
|
20
|
+
* @param {ExtensionConfig} extensionConfig
|
|
14
21
|
*/
|
|
15
22
|
prompting: async (generator, extensionConfig) => {
|
|
16
23
|
await prompts.askForExtensionDisplayName(generator, extensionConfig);
|
|
@@ -25,7 +32,7 @@ export default {
|
|
|
25
32
|
},
|
|
26
33
|
/**
|
|
27
34
|
* @param {Generator} generator
|
|
28
|
-
* @param {
|
|
35
|
+
* @param {ExtensionConfig} extensionConfig
|
|
29
36
|
*/
|
|
30
37
|
writing: (generator, extensionConfig) => {
|
|
31
38
|
|
|
@@ -34,7 +41,7 @@ export default {
|
|
|
34
41
|
generator.fs.copy(generator.templatePath('tsconfig.json'), generator.destinationPath('tsconfig.json'));
|
|
35
42
|
generator.fs.copy(generator.templatePath('.vscodeignore'), generator.destinationPath('.vscodeignore'));
|
|
36
43
|
generator.fs.copy(generator.templatePath('webpack.config.js'), generator.destinationPath('webpack.config.js'));
|
|
37
|
-
generator.fs.copy(generator.templatePath('.
|
|
44
|
+
generator.fs.copy(generator.templatePath('eslint.config.mjs'), generator.destinationPath('eslint.config.mjs'));
|
|
38
45
|
generator.fs.copy(generator.templatePath('.vscode-test.mjs'), generator.destinationPath('.vscode-test.mjs'));
|
|
39
46
|
|
|
40
47
|
generator.fs.copyTpl(generator.templatePath('package.json'), generator.destinationPath('package.json'), extensionConfig);
|
|
@@ -62,7 +69,7 @@ export default {
|
|
|
62
69
|
|
|
63
70
|
/**
|
|
64
71
|
* @param {Generator} generator
|
|
65
|
-
* @param {
|
|
72
|
+
* @param {ExtensionConfig} extensionConfig
|
|
66
73
|
*/
|
|
67
74
|
async function askForNotebookRendererInfo(generator, extensionConfig) {
|
|
68
75
|
const answers = await generator.prompt([
|
|
@@ -7,13 +7,25 @@ import * as path from 'path';
|
|
|
7
7
|
import * as fs from 'fs';
|
|
8
8
|
import * as plistParser from 'fast-plist';
|
|
9
9
|
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {{
|
|
13
|
+
* snippets: object,
|
|
14
|
+
* languageId: string,
|
|
15
|
+
* isCustomization: boolean
|
|
16
|
+
* } & import('./index.js').ExtensionConfig} ExtensionConfig
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @type {import('./index.js').ExtensionGenerator}
|
|
21
|
+
*/
|
|
10
22
|
export default {
|
|
11
23
|
id: 'ext-snippets',
|
|
12
24
|
aliases: ['snippets'],
|
|
13
25
|
name: 'New Code Snippets',
|
|
14
26
|
/**
|
|
15
27
|
* @param {Generator} generator
|
|
16
|
-
* @param {
|
|
28
|
+
* @param {ExtensionConfig} extensionConfig
|
|
17
29
|
*/
|
|
18
30
|
prompting: async (generator, extensionConfig) => {
|
|
19
31
|
await askForSnippetsInfo(generator, extensionConfig);
|
|
@@ -28,7 +40,7 @@ export default {
|
|
|
28
40
|
},
|
|
29
41
|
/**
|
|
30
42
|
* @param {Generator} generator
|
|
31
|
-
* @param {
|
|
43
|
+
* @param {ExtensionConfig} extensionConfig
|
|
32
44
|
*/
|
|
33
45
|
writing: (generator, extensionConfig) => {
|
|
34
46
|
generator.fs.copy(generator.templatePath('vscode'), generator.destinationPath('.vscode'));
|
|
@@ -46,14 +58,14 @@ export default {
|
|
|
46
58
|
}
|
|
47
59
|
/**
|
|
48
60
|
* @param {Generator} generator
|
|
49
|
-
* @param {
|
|
61
|
+
* @param {ExtensionConfig} extensionConfig
|
|
50
62
|
*/
|
|
51
63
|
function askForSnippetsInfo(generator, extensionConfig) {
|
|
52
64
|
extensionConfig.isCustomization = true;
|
|
53
65
|
let snippetFolderParam = generator.options['snippetFolder'] || generator.options['extensionParam'];
|
|
54
66
|
|
|
55
67
|
if (snippetFolderParam) {
|
|
56
|
-
let count = processSnippetFolder(snippetFolderParam, generator);
|
|
68
|
+
let count = processSnippetFolder(snippetFolderParam, generator, extensionConfig);
|
|
57
69
|
if (count <= 0) {
|
|
58
70
|
generator.log('')
|
|
59
71
|
}
|
|
@@ -72,7 +84,7 @@ function askForSnippetsInfo(generator, extensionConfig) {
|
|
|
72
84
|
let snippetPath = snippetAnswer.snippetPath;
|
|
73
85
|
|
|
74
86
|
if (typeof snippetPath === 'string' && snippetPath.length > 0) {
|
|
75
|
-
const count = processSnippetFolder(snippetPath, generator);
|
|
87
|
+
const count = processSnippetFolder(snippetPath, generator, extensionConfig);
|
|
76
88
|
if (count <= 0) {
|
|
77
89
|
return snippetPrompt();
|
|
78
90
|
}
|
|
@@ -91,7 +103,7 @@ function askForSnippetsInfo(generator, extensionConfig) {
|
|
|
91
103
|
|
|
92
104
|
/**
|
|
93
105
|
* @param {Generator} generator
|
|
94
|
-
* @param {
|
|
106
|
+
* @param {ExtensionConfig} extensionConfig
|
|
95
107
|
*/
|
|
96
108
|
function askForSnippetLanguage(generator, extensionConfig) {
|
|
97
109
|
let snippetLanguage = generator.options['snippetLanguage'] || generator.options['extensionParam2'];
|
|
@@ -111,8 +123,12 @@ function askForSnippetLanguage(generator, extensionConfig) {
|
|
|
111
123
|
extensionConfig.languageId = idAnswer.languageId;
|
|
112
124
|
});
|
|
113
125
|
}
|
|
114
|
-
|
|
115
|
-
|
|
126
|
+
/**
|
|
127
|
+
* @param {string} folderPath
|
|
128
|
+
* @param {Generator} generator
|
|
129
|
+
* @param {ExtensionConfig} extensionConfig
|
|
130
|
+
*/
|
|
131
|
+
function processSnippetFolder(folderPath, generator, extensionConfig) {
|
|
116
132
|
var errors = [], snippets = {};
|
|
117
133
|
var snippetCount = 0;
|
|
118
134
|
var languageId = null;
|
|
@@ -122,8 +138,8 @@ function processSnippetFolder(folderPath, generator) {
|
|
|
122
138
|
generator.log("No valid snippets found in " + folderPath + (errors.length > 0 ? '.\n' + errors.join('\n') : ''));
|
|
123
139
|
return count;
|
|
124
140
|
}
|
|
125
|
-
|
|
126
|
-
|
|
141
|
+
extensionConfig.snippets = snippets;
|
|
142
|
+
extensionConfig.languageId = languageId;
|
|
127
143
|
generator.log(count + " snippet(s) found and converted." + (errors.length > 0 ? '\n\nProblems while converting: \n' + errors.join('\n') : ''));
|
|
128
144
|
return count;
|
|
129
145
|
|
package/generators/app/index.js
CHANGED
|
@@ -20,6 +20,41 @@ import localization from './generate-localization.js';
|
|
|
20
20
|
import notebook from './generate-notebook-renderer.js';
|
|
21
21
|
import snippets from './generate-snippets.js';
|
|
22
22
|
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @typedef {{
|
|
27
|
+
* insiders: boolean,
|
|
28
|
+
* installDependencies: boolean,
|
|
29
|
+
* dependencyVersions: Object.<string, string>,
|
|
30
|
+
* dep: (name: string) => string,
|
|
31
|
+
* vsCodeEngine: string,
|
|
32
|
+
* type: string,
|
|
33
|
+
* name: string,
|
|
34
|
+
* description: string,
|
|
35
|
+
* displayName: string,
|
|
36
|
+
* pkgManager: 'npm' | 'yarn' | 'pnpm',
|
|
37
|
+
* gitInit: boolean,
|
|
38
|
+
* bundler: 'webpack' | 'esbuild' | 'unbundled',
|
|
39
|
+
* proposedAPI: boolean,
|
|
40
|
+
* }} ExtensionConfig
|
|
41
|
+
*
|
|
42
|
+
* @typedef {{
|
|
43
|
+
* id: string,
|
|
44
|
+
* insidersName?: string,
|
|
45
|
+
* aliases: string[],
|
|
46
|
+
* name: string,
|
|
47
|
+
* update?: boolean,
|
|
48
|
+
* prompting: (generator: Generator, extensionConfig: ExtensionConfig) => Promise<void>,
|
|
49
|
+
* writing: (generator: Generator, extensionConfig: ExtensionConfig) => void,
|
|
50
|
+
* endMessage?: (generator: Generator, extensionConfig: ExtensionConfig) => void,
|
|
51
|
+
* }} ExtensionGenerator
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @type {ExtensionGenerator[]}
|
|
57
|
+
*/
|
|
23
58
|
const extensionGenerators = [
|
|
24
59
|
commandts, commandjs, colortheme, language, snippets, keymap, extensionpack, localization,
|
|
25
60
|
commandweb, notebook
|
|
@@ -27,6 +62,11 @@ const extensionGenerators = [
|
|
|
27
62
|
|
|
28
63
|
export default class extends Generator {
|
|
29
64
|
|
|
65
|
+
/**
|
|
66
|
+
* @type {ExtensionConfig}
|
|
67
|
+
*/
|
|
68
|
+
extensionConfig;
|
|
69
|
+
|
|
30
70
|
constructor(args, opts) {
|
|
31
71
|
super(args, opts);
|
|
32
72
|
this.description = 'Generates a Visual Studio Code extension ready for development.';
|
|
@@ -8,9 +8,13 @@ import Generator from 'yeoman-generator';
|
|
|
8
8
|
import * as validator from './validator.js';
|
|
9
9
|
import * as path from 'path';
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {import('./index.js').ExtensionConfig} ExtensionConfig
|
|
13
|
+
*/
|
|
14
|
+
|
|
11
15
|
/**
|
|
12
16
|
* @param {Generator} generator
|
|
13
|
-
* @param {
|
|
17
|
+
* @param {ExtensionConfig} extensionConfig
|
|
14
18
|
*/
|
|
15
19
|
export function askForExtensionDisplayName(generator, extensionConfig) {
|
|
16
20
|
let extensionDisplayName = generator.options['extensionDisplayName'];
|
|
@@ -38,7 +42,7 @@ export function askForExtensionDisplayName(generator, extensionConfig) {
|
|
|
38
42
|
/**
|
|
39
43
|
* Ask for extension id ("name" in package.json)
|
|
40
44
|
* @param {Generator} generator
|
|
41
|
-
* @param {
|
|
45
|
+
* @param {ExtensionConfig} extensionConfig
|
|
42
46
|
*/
|
|
43
47
|
export function askForExtensionId(generator, extensionConfig) {
|
|
44
48
|
const extensionName = generator.options['extensionId'];
|
|
@@ -69,7 +73,7 @@ export function askForExtensionId(generator, extensionConfig) {
|
|
|
69
73
|
/**
|
|
70
74
|
* Ask for extension description
|
|
71
75
|
* @param {Generator} generator
|
|
72
|
-
* @param {
|
|
76
|
+
* @param {ExtensionConfig} extensionConfig
|
|
73
77
|
*/
|
|
74
78
|
export function askForExtensionDescription(generator, extensionConfig) {
|
|
75
79
|
const extensionDescription = generator.options['extensionDescription'];
|
|
@@ -94,7 +98,7 @@ export function askForExtensionDescription(generator, extensionConfig) {
|
|
|
94
98
|
|
|
95
99
|
/**
|
|
96
100
|
* @param {Generator} generator
|
|
97
|
-
* @param {
|
|
101
|
+
* @param {ExtensionConfig} extensionConfig
|
|
98
102
|
*/
|
|
99
103
|
export function askForGit(generator, extensionConfig) {
|
|
100
104
|
const gitInit = generator.options['gitInit'];
|
|
@@ -119,7 +123,7 @@ export function askForGit(generator, extensionConfig) {
|
|
|
119
123
|
|
|
120
124
|
/**
|
|
121
125
|
* @param {Generator} generator
|
|
122
|
-
* @param {
|
|
126
|
+
* @param {ExtensionConfig} extensionConfig
|
|
123
127
|
*/
|
|
124
128
|
export function askForPackageManager(generator, extensionConfig) {
|
|
125
129
|
const pkgManager = generator.options['pkgManager'];
|
|
@@ -158,8 +162,9 @@ export function askForPackageManager(generator, extensionConfig) {
|
|
|
158
162
|
}
|
|
159
163
|
|
|
160
164
|
/**
|
|
161
|
-
* @param {Generator} generator
|
|
162
|
-
* @param {
|
|
165
|
+
* @param {Generator} generator
|
|
166
|
+
* @param {ExtensionConfig} extensionConfig
|
|
167
|
+
* @param {'webpack' | 'esbuild' | 'unbundled'} defaultBundler
|
|
163
168
|
*/
|
|
164
169
|
export function askForBundler(generator, extensionConfig, allowNone = true, defaultBundler = 'unbundled') {
|
|
165
170
|
const bundler = generator.options['bundler'];
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
## Get up and running straight away
|
|
10
10
|
|
|
11
11
|
* Press `F5` to open a new window with your extension loaded.
|
|
12
|
-
* Open `File > Preferences > Color
|
|
12
|
+
* Open the color theme picker with the `File > Preferences > Theme > Color Theme` menu item, or use the `Preferences: Color Theme command (Ctrl+K Ctrl+T)` and pick your theme
|
|
13
13
|
* Open a file that has a language associated. The languages' configured grammar will tokenize the text and assign 'scopes' to the tokens. To examine these scopes, invoke the `Developer: Inspect Editor Tokens and Scopes` command from the Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac).
|
|
14
14
|
|
|
15
15
|
## Make changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import globals from "globals";
|
|
2
|
+
|
|
3
|
+
export default [{
|
|
4
|
+
files: ["**/*.js"],
|
|
5
|
+
languageOptions: {
|
|
6
|
+
globals: {
|
|
7
|
+
...globals.commonjs,
|
|
8
|
+
...globals.node,
|
|
9
|
+
...globals.mocha,
|
|
10
|
+
},
|
|
11
|
+
|
|
12
|
+
ecmaVersion: 2022,
|
|
13
|
+
sourceType: "module",
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
rules: {
|
|
17
|
+
"no-const-assign": "warn",
|
|
18
|
+
"no-this-before-super": "warn",
|
|
19
|
+
"no-undef": "warn",
|
|
20
|
+
"no-unreachable": "warn",
|
|
21
|
+
"no-unused-vars": "warn",
|
|
22
|
+
"constructor-super": "warn",
|
|
23
|
+
"valid-typeof": "warn",
|
|
24
|
+
},
|
|
25
|
+
}];
|
|
@@ -39,3 +39,4 @@
|
|
|
39
39
|
* [Follow UX guidelines](https://code.visualstudio.com/api/ux-guidelines/overview) to create extensions that seamlessly integrate with VS Code's native interface and patterns.
|
|
40
40
|
* [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace.
|
|
41
41
|
* Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration).
|
|
42
|
+
* Integrate to the [report issue](https://code.visualstudio.com/api/get-started/wrapping-up#issue-reporting) flow to get issue and feature requests reported by users.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
|
2
|
+
import tsParser from "@typescript-eslint/parser";
|
|
3
|
+
|
|
4
|
+
export default [{
|
|
5
|
+
files: ["**/*.ts"],
|
|
6
|
+
}, {
|
|
7
|
+
plugins: {
|
|
8
|
+
"@typescript-eslint": typescriptEslint,
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
languageOptions: {
|
|
12
|
+
parser: tsParser,
|
|
13
|
+
ecmaVersion: 2022,
|
|
14
|
+
sourceType: "module",
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
rules: {
|
|
18
|
+
"@typescript-eslint/naming-convention": ["warn", {
|
|
19
|
+
selector: "import",
|
|
20
|
+
format: ["camelCase", "PascalCase"],
|
|
21
|
+
}],
|
|
22
|
+
|
|
23
|
+
curly: "warn",
|
|
24
|
+
eqeqeq: "warn",
|
|
25
|
+
"no-throw-literal": "warn",
|
|
26
|
+
semi: "warn",
|
|
27
|
+
},
|
|
28
|
+
}];
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"compile": "tsc -p ./",
|
|
26
26
|
"watch": "tsc -watch -p ./",
|
|
27
27
|
"pretest": "<%= pkgManager %> run compile && <%= pkgManager %> run lint",
|
|
28
|
-
"lint": "eslint src
|
|
28
|
+
"lint": "eslint src",
|
|
29
29
|
"test": "vscode-test"<% if (insiders) { %>,
|
|
30
30
|
"update-proposed-api": "vscode-dts dev"<% } %>
|
|
31
31
|
},
|
|
@@ -41,3 +41,4 @@
|
|
|
41
41
|
* Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension).
|
|
42
42
|
* [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace.
|
|
43
43
|
* Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration).
|
|
44
|
+
* Integrate to the [report issue](https://code.visualstudio.com/api/get-started/wrapping-up#issue-reporting) flow to get issue and feature requests reported by users.
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"watch-tests": "tsc -p . -w --outDir out",
|
|
32
32
|
"pretest": "<%= pkgManager %> run compile-tests && <%= pkgManager %> run compile && <%= pkgManager %> run lint",
|
|
33
33
|
"check-types": "tsc --noEmit",
|
|
34
|
-
"lint": "eslint src
|
|
34
|
+
"lint": "eslint src",
|
|
35
35
|
"test": "vscode-test"<% if (insiders) { %>,
|
|
36
36
|
"update-proposed-api": "vscode-dts dev"<% } %>
|
|
37
37
|
},
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"compile-tests": "tsc -p . --outDir out",
|
|
29
29
|
"watch-tests": "tsc -p . -w --outDir out",
|
|
30
30
|
"pretest": "<%= pkgManager %> run compile-tests && <%= pkgManager %> run compile && <%= pkgManager %> run lint",
|
|
31
|
-
"lint": "eslint src
|
|
31
|
+
"lint": "eslint src",
|
|
32
32
|
"test": "vscode-test"<% if (insiders) { %>,
|
|
33
33
|
"update-proposed-api": "vscode-dts dev"<% } %>
|
|
34
34
|
},
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"watch-web:tsc": "tsc --noEmit --watch --project tsconfig.json",
|
|
30
30
|
"package-web": "<%= pkgManager %> run check-types && <%= pkgManager %> run lint && node esbuild.js --production",
|
|
31
31
|
"check-types": "tsc --noEmit",
|
|
32
|
-
"lint": "eslint src
|
|
32
|
+
"lint": "eslint src",
|
|
33
33
|
"run-in-browser": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ."
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
|
2
|
+
import tsParser from "@typescript-eslint/parser";
|
|
3
|
+
|
|
4
|
+
export default [{
|
|
5
|
+
files: ["**/*.ts"],
|
|
6
|
+
}, {
|
|
7
|
+
plugins: {
|
|
8
|
+
"@typescript-eslint": typescriptEslint,
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
languageOptions: {
|
|
12
|
+
parser: tsParser,
|
|
13
|
+
ecmaVersion: 2022,
|
|
14
|
+
sourceType: "module",
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
rules: {
|
|
18
|
+
"@typescript-eslint/naming-convention": ["warn", {
|
|
19
|
+
selector: "import",
|
|
20
|
+
format: ["camelCase", "PascalCase"],
|
|
21
|
+
}],
|
|
22
|
+
|
|
23
|
+
curly: "warn",
|
|
24
|
+
eqeqeq: "warn",
|
|
25
|
+
"no-throw-literal": "warn",
|
|
26
|
+
semi: "warn",
|
|
27
|
+
},
|
|
28
|
+
}];
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"compile-web": "webpack",
|
|
27
27
|
"watch-web": "webpack --watch",
|
|
28
28
|
"package-web": "webpack --mode production --devtool hidden-source-map",
|
|
29
|
-
"lint": "eslint src
|
|
29
|
+
"lint": "eslint src",
|
|
30
30
|
"run-in-browser": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=. ."
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import typescriptEslint from "@typescript-eslint/eslint-plugin";
|
|
2
|
+
import tsParser from "@typescript-eslint/parser";
|
|
3
|
+
|
|
4
|
+
export default [{
|
|
5
|
+
files: ["**/*.ts"],
|
|
6
|
+
}, {
|
|
7
|
+
plugins: {
|
|
8
|
+
"@typescript-eslint": typescriptEslint,
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
languageOptions: {
|
|
12
|
+
parser: tsParser,
|
|
13
|
+
ecmaVersion: 2022,
|
|
14
|
+
sourceType: "module",
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
rules: {
|
|
18
|
+
"@typescript-eslint/naming-convention": ["warn", {
|
|
19
|
+
selector: "import",
|
|
20
|
+
format: ["camelCase", "PascalCase"],
|
|
21
|
+
}],
|
|
22
|
+
|
|
23
|
+
curly: "warn",
|
|
24
|
+
eqeqeq: "warn",
|
|
25
|
+
"no-throw-literal": "warn",
|
|
26
|
+
semi: "warn",
|
|
27
|
+
},
|
|
28
|
+
}];
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"vscode:prepublish": "<%= pkgManager %> run compile",
|
|
30
30
|
"compile": "webpack --mode production",
|
|
31
|
-
"lint": "eslint src
|
|
31
|
+
"lint": "eslint src",
|
|
32
32
|
"watch": "webpack --mode development --watch",
|
|
33
33
|
"pretest": "webpack --mode development && <%= pkgManager %> run lint",
|
|
34
34
|
"test": "vscode-test"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "generator-code",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.2",
|
|
4
4
|
"description": "Yeoman generator for Visual Studio Code extensions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"yeoman-generator",
|
|
@@ -37,16 +37,16 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"chalk": "^5.3.0",
|
|
39
39
|
"fast-plist": "^0.1.3",
|
|
40
|
-
"request-light": "^0.
|
|
40
|
+
"request-light": "^0.8.0",
|
|
41
41
|
"which": "^4.0.0",
|
|
42
|
-
"yeoman-generator": "^7.2
|
|
42
|
+
"yeoman-generator": "^7.3.2",
|
|
43
43
|
"yosay": "^3.0.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@types/mocha": "^10.0.
|
|
47
|
-
"@types/node": "^18.
|
|
48
|
-
"mocha": "^10.
|
|
46
|
+
"@types/mocha": "^10.0.7",
|
|
47
|
+
"@types/node": "^18.19.39",
|
|
48
|
+
"mocha": "^10.7.3",
|
|
49
49
|
"yeoman-environment": "^4.4.1",
|
|
50
|
-
"yeoman-test": "^
|
|
50
|
+
"yeoman-test": "^9.0.0"
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"env": {
|
|
3
|
-
"browser": false,
|
|
4
|
-
"commonjs": true,
|
|
5
|
-
"es6": true,
|
|
6
|
-
"node": true,
|
|
7
|
-
"mocha": true
|
|
8
|
-
},
|
|
9
|
-
"parserOptions": {
|
|
10
|
-
"ecmaVersion": 2018,
|
|
11
|
-
"ecmaFeatures": {
|
|
12
|
-
"jsx": true
|
|
13
|
-
},
|
|
14
|
-
"sourceType": "module"
|
|
15
|
-
},
|
|
16
|
-
"rules": {
|
|
17
|
-
"no-const-assign": "warn",
|
|
18
|
-
"no-this-before-super": "warn",
|
|
19
|
-
"no-undef": "warn",
|
|
20
|
-
"no-unreachable": "warn",
|
|
21
|
-
"no-unused-vars": "warn",
|
|
22
|
-
"constructor-super": "warn",
|
|
23
|
-
"valid-typeof": "warn"
|
|
24
|
-
}
|
|
25
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"root": true,
|
|
3
|
-
"parser": "@typescript-eslint/parser",
|
|
4
|
-
"parserOptions": {
|
|
5
|
-
"ecmaVersion": 6,
|
|
6
|
-
"sourceType": "module"
|
|
7
|
-
},
|
|
8
|
-
"plugins": [
|
|
9
|
-
"@typescript-eslint"
|
|
10
|
-
],
|
|
11
|
-
"rules": {
|
|
12
|
-
"@typescript-eslint/naming-convention": [
|
|
13
|
-
"warn",
|
|
14
|
-
{
|
|
15
|
-
"selector": "import",
|
|
16
|
-
"format": [ "camelCase", "PascalCase" ]
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
"@typescript-eslint/semi": "warn",
|
|
20
|
-
"curly": "warn",
|
|
21
|
-
"eqeqeq": "warn",
|
|
22
|
-
"no-throw-literal": "warn",
|
|
23
|
-
"semi": "off"
|
|
24
|
-
},
|
|
25
|
-
"ignorePatterns": [
|
|
26
|
-
"out",
|
|
27
|
-
"dist",
|
|
28
|
-
"**/*.d.ts"
|
|
29
|
-
]
|
|
30
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"root": true,
|
|
3
|
-
"parser": "@typescript-eslint/parser",
|
|
4
|
-
"parserOptions": {
|
|
5
|
-
"ecmaVersion": 6,
|
|
6
|
-
"sourceType": "module"
|
|
7
|
-
},
|
|
8
|
-
"plugins": [
|
|
9
|
-
"@typescript-eslint"
|
|
10
|
-
],
|
|
11
|
-
"rules": {
|
|
12
|
-
"@typescript-eslint/naming-convention": "warn",
|
|
13
|
-
"@typescript-eslint/semi": "warn",
|
|
14
|
-
"curly": "warn",
|
|
15
|
-
"eqeqeq": "warn",
|
|
16
|
-
"no-throw-literal": "warn",
|
|
17
|
-
"semi": "off"
|
|
18
|
-
},
|
|
19
|
-
"ignorePatterns": [
|
|
20
|
-
"**/*.d.ts"
|
|
21
|
-
]
|
|
22
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"root": true,
|
|
3
|
-
"parser": "@typescript-eslint/parser",
|
|
4
|
-
"parserOptions": {
|
|
5
|
-
"ecmaVersion": 6,
|
|
6
|
-
"sourceType": "module"
|
|
7
|
-
},
|
|
8
|
-
"plugins": [
|
|
9
|
-
"@typescript-eslint"
|
|
10
|
-
],
|
|
11
|
-
"rules": {
|
|
12
|
-
"@typescript-eslint/naming-convention": "warn",
|
|
13
|
-
"@typescript-eslint/semi": "warn",
|
|
14
|
-
"curly": "warn",
|
|
15
|
-
"eqeqeq": "warn",
|
|
16
|
-
"no-throw-literal": "warn",
|
|
17
|
-
"semi": "off"
|
|
18
|
-
},
|
|
19
|
-
"ignorePatterns": [
|
|
20
|
-
"**/*.d.ts"
|
|
21
|
-
]
|
|
22
|
-
}
|