Skip to content

Commit b3f6da1

Browse files
authored
Merge pull request #795 from CodinGame/ohr/check-unsupported-decorator
chore: add a script to check unsupported decorator usage
2 parents 21b7409 + 96b9665 commit b3f6da1

4 files changed

Lines changed: 111 additions & 9 deletions

File tree

package-lock.json

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

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
},
1616
"type": "module",
1717
"scripts": {
18-
"build": "npm run clean && npm run lint && npm run compile && npm run compile-rollup-plugins && npm run compile-default-extensions && npm run compile-language-packs && npm run compile-monaco-languages",
18+
"build": "npm run clean && npm run lint && npm run check-unsupported-decorator && npm run compile && npm run compile-rollup-plugins && npm run compile-default-extensions && npm run compile-language-packs && npm run compile-monaco-languages",
1919
"compile": "NODE_OPTIONS=--max_old_space_size=16384 rollup --config rollup/rollup.config.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config.json`}' --vscode-version ${npm_package_config_vscode_version} --vscode-ref ${npm_package_config_vscode_ref} --vscode-commit ${npm_package_config_vscode_commit}",
2020
"compile-default-extensions": "NODE_OPTIONS=--max_old_space_size=16384 rollup --config rollup/rollup.default-extensions.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config-default-extensions.json`}'",
2121
"compile-language-packs": "NODE_OPTIONS=--max_old_space_size=16384 rollup --config rollup/rollup.language-packs.ts --configPlugin 'typescript={tsconfig: `tsconfig.rollup-config-language-packs.json`}'",
@@ -26,7 +26,8 @@
2626
"lint": "eslint '{src/**/*.ts,rollup/*.ts,*.ts}'",
2727
"update-vscode-dependencies": "tsx scripts/update-vscode-dependencies.ts",
2828
"release": "tsx release.ts",
29-
"reset:repo": "git clean -f -X -d"
29+
"reset:repo": "git clean -f -X -d",
30+
"check-unsupported-decorator": "tsx scripts/check-unsupported-decorator.ts"
3031
},
3132
"config": {
3233
"vscode": {
@@ -80,6 +81,7 @@
8081
"rollup-plugin-copy": "^3.5.0",
8182
"rollup-plugin-dts": "^6.4.1",
8283
"semantic-release": "25.0.3",
84+
"ts-morph": "^28.0.0",
8385
"tsx": "^4.21.0",
8486
"type-fest": "^5.5.0",
8587
"typescript": "^5.9.3",
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { Project } from 'ts-morph'
2+
3+
const project = new Project({ tsConfigFilePath: 'tsconfig.json' })
4+
const sourceFile = project.getSourceFileOrThrow('src/missing-services.ts')
5+
6+
const issues: string[] = []
7+
8+
for (const cls of sourceFile.getClasses()) {
9+
for (const prop of cls.getProperties()) {
10+
const initText = prop.getInitializer()?.getText().trim()
11+
const usesUnsupported = initText === 'unsupported'
12+
const hasDecorator = prop.getDecorator('Unsupported') != null
13+
14+
const loc = `${cls.getName()}.${prop.getName()} (line ${prop.getStartLineNumber()})`
15+
16+
if (usesUnsupported && !hasDecorator) {
17+
issues.push(`❌ ${loc}: uses \`unsupported\` but is missing the @Unsupported decorator`)
18+
}
19+
if (!usesUnsupported && hasDecorator) {
20+
issues.push(`❌ ${loc}: has @Unsupported decorator but does not use \`unsupported\``)
21+
}
22+
}
23+
}
24+
25+
if (issues.length) {
26+
console.error(issues.join('\n'))
27+
process.exit(1)
28+
}
29+
console.log('✅ All consistent')

src/missing-services.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,11 +2066,8 @@ class ExtensionsScannerService implements IExtensionsScannerService {
20662066
return unsupported()
20672067
}
20682068
onDidChangeCache: IExtensionsScannerService['onDidChangeCache'] = Event.None
2069-
@Unsupported
20702069
scanAllExtensions: IExtensionsScannerService['scanAllExtensions'] = async () => []
2071-
@Unsupported
20722070
scanSystemExtensions: IExtensionsScannerService['scanSystemExtensions'] = async () => []
2073-
@Unsupported
20742071
scanUserExtensions: IExtensionsScannerService['scanUserExtensions'] = async () => []
20752072
@Unsupported
20762073
scanExtensionsUnderDevelopment: IExtensionsScannerService['scanExtensionsUnderDevelopment'] =
@@ -2725,7 +2722,6 @@ class TerminalService implements ITerminalService {
27252722
createTerminal: ITerminalService['createTerminal'] = unsupported
27262723
@Unsupported
27272724
getInstanceFromId: ITerminalService['getInstanceFromId'] = unsupported
2728-
@Unsupported
27292725
getReconnectedTerminals: ITerminalService['getReconnectedTerminals'] = () => undefined
27302726
@Unsupported
27312727
getActiveOrCreateInstance: ITerminalService['getActiveOrCreateInstance'] = unsupported
@@ -4100,7 +4096,6 @@ class AuthenticationService implements IAuthenticationService {
41004096
getProviderIds: IAuthenticationService['getProviderIds'] = () => []
41014097
@Unsupported
41024098
getProvider: IAuthenticationService['getProvider'] = unsupported
4103-
@Unsupported
41044099
getSessions: IAuthenticationService['getSessions'] = async () => []
41054100
@Unsupported
41064101
createSession: IAuthenticationService['createSession'] = unsupported
@@ -5669,7 +5664,6 @@ class McpRegistry implements IMcpRegistry {
56695664
}
56705665
@Unsupported
56715666
setSavedInput: IMcpRegistry['setSavedInput'] = unsupported
5672-
@Unsupported
56735667
getServerDefinition: IMcpRegistry['getServerDefinition'] = () =>
56745668
constObservable({
56755669
server: undefined,
@@ -5740,7 +5734,6 @@ class NullDefaultAccountService extends Disposable implements IDefaultAccountSer
57405734
@Unsupported
57415735
getDefaultAccountAuthenticationProvider: IDefaultAccountService['getDefaultAccountAuthenticationProvider'] =
57425736
unsupported
5743-
@Unsupported
57445737
setDefaultAccountProvider: IDefaultAccountService['setDefaultAccountProvider'] = () => {}
57455738
refresh: IDefaultAccountService['refresh'] = async () => null
57465739
@Unsupported
@@ -6946,6 +6939,7 @@ registerSingleton(IInlineChatHistoryService, InlineChatHistoryService, Instantia
69466939
class BrowserViewWorkbenchService implements IBrowserViewWorkbenchService {
69476940
_serviceBrand: undefined
69486941

6942+
@Unsupported
69496943
getOrCreateBrowserViewModel: IBrowserViewWorkbenchService['getOrCreateBrowserViewModel'] =
69506944
unsupported
69516945
@Unsupported

0 commit comments

Comments
 (0)