Files
vscode/build/lib/eslint-plugin-vscode/vscode-dts-interface-naming.ts
Matt Bierner 5b21c7f28b Run our custom eslint rules using ts-node (#157532)
* Run our custom eslint rules using ts-node

Use `ts-node` to run our custom eslint rules.  This lets us delete the pre-compiled js. It also means you can don't have to compile the rules while editing them

As part of this change, I've also switched us to using an eslint plugin instead of a rulesDir. This is now the preferred way to ship custom rules

* Fix two more disables

* Move ts-node to project root

* Enable transpileOnly
2022-08-29 09:39:09 -07:00

36 lines
1.0 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import * as eslint from 'eslint';
import { TSESTree } from '@typescript-eslint/experimental-utils';
export = new class ApiInterfaceNaming implements eslint.Rule.RuleModule {
private static _nameRegExp = /I[A-Z]/;
readonly meta: eslint.Rule.RuleMetaData = {
messages: {
naming: 'Interfaces must not be prefixed with uppercase `I`',
}
};
create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener {
return {
['TSInterfaceDeclaration Identifier']: (node: any) => {
const name = (<TSESTree.Identifier>node).name;
if (ApiInterfaceNaming._nameRegExp.test(name)) {
context.report({
node,
messageId: 'naming'
});
}
}
};
}
};