Files

Return to Package Diff Home.
Brought to you by Intrinsic.

Package Diff: @typescript-eslint/eslint-plugin @ 1.4.2 .. 1.5.0

CHANGELOG.md

@@ -3,6 +3,18 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+# [1.5.0](https://github.com/typescript-eslint/typescript-eslint/compare/v1.4.2...v1.5.0) (2019-03-20)
+
+### Bug Fixes
+
+- **eslint-plugin:** [interface-name-prefix] correct error message in always mode ([#333](https://github.com/typescript-eslint/typescript-eslint/issues/333)) ([097262f](https://github.com/typescript-eslint/typescript-eslint/commit/097262f))
+- **eslint-plugin:** fix false positives for adjacent-overload-signatures regarding computed property names ([#340](https://github.com/typescript-eslint/typescript-eslint/issues/340)) ([f6e5118](https://github.com/typescript-eslint/typescript-eslint/commit/f6e5118))
+- **eslint-plugin:** fix incorrect rule name ([#357](https://github.com/typescript-eslint/typescript-eslint/issues/357)) ([0a5146b](https://github.com/typescript-eslint/typescript-eslint/commit/0a5146b))
+
+### Features
+
+- **eslint-plugin:** Add unified-signature rule ([#178](https://github.com/typescript-eslint/typescript-eslint/issues/178)) ([6ffaa0b](https://github.com/typescript-eslint/typescript-eslint/commit/6ffaa0b))
+
## [1.4.2](https://github.com/typescript-eslint/typescript-eslint/compare/v1.4.1...v1.4.2) (2019-02-25)
**Note:** Version bump only for package @typescript-eslint/eslint-plugin

dist/rules/adjacent-overload-signatures.js

@@ -26,6 +26,7 @@
},
defaultOptions: [],
create(context) {
+ const sourceCode = context.getSourceCode();
/**
* Gets the name of the member being processed.
* @param member the member being processed.
@@ -55,7 +56,7 @@
case typescript_estree_1.AST_NODE_TYPES.TSConstructSignatureDeclaration:
return 'new';
case typescript_estree_1.AST_NODE_TYPES.MethodDefinition:
- return util.getNameFromPropertyName(member.key);
+ return util.getNameFromClassMember(member, sourceCode);
}
return null;
}

dist/rules/adjacent-overload-signatures.js.map

@@ -1 +1 @@
-{"version":3,"file":"adjacent-overload-signatures.js","sourceRoot":"","sources":["../../src/rules/adjacent-overload-signatures.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"adjacent-overload-signatures.js","sourceRoot":"","sources":["../../src/rules/adjacent-overload-signatures.ts"],"names":[],"mappings":"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"}
\ No newline at end of file

dist/rules/camelcase.js

@@ -14,7 +14,7 @@
const camelcase_1 = __importDefault(require("eslint/lib/rules/camelcase"));
const util = __importStar(require("../util"));
exports.default = util.createRule({
- name: 'ban-types',
+ name: 'camelcase',
meta: {
type: 'suggestion',
docs: {

dist/rules/explicit-member-accessibility.js

@@ -25,6 +25,7 @@
},
defaultOptions: [],
create(context) {
+ const sourceCode = context.getSourceCode();
/**
* Checks if a method declaration has an accessibility modifier.
* @param methodDefinition The node representing a MethodDefinition.
@@ -37,7 +38,7 @@
messageId: 'missingAccessibility',
data: {
type: 'method definition',
- name: util.getNameFromPropertyName(methodDefinition.key),
+ name: util.getNameFromClassMember(methodDefinition, sourceCode),
},
});
}

dist/rules/explicit-member-accessibility.js.map

@@ -1 +1 @@
-{"version":3,"file":"explicit-member-accessibility.js","sourceRoot":"","sources":["../../src/rules/explicit-member-accessibility.ts"],"names":[],"mappings":";;;;;;;;;AACA,8CAAgC;AAEhC,kBAAe,IAAI,CAAC,UAAU,CAAC;IAC7B,IAAI,EAAE,+BAA+B;IACrC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,0EAA0E;YAC5E,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,gBAAgB;YAC1B,WAAW,EAAE,OAAO;SACrB;QACD,QAAQ,EAAE;YACR,oBAAoB,EAClB,sDAAsD;SACzD;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ;;;WAGG;QACH,SAAS,gCAAgC,CACvC,gBAA2C;YAE3C,IACE,CAAC,gBAAgB,CAAC,aAAa;gBAC/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAC5C;gBACA,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE,gBAAgB;oBACtB,SAAS,EAAE,sBAAsB;oBACjC,IAAI,EAAE;wBACJ,IAAI,EAAE,mBAAmB;wBACzB,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC;qBACzD;iBACF,CAAC,CAAC;aACJ;QACH,CAAC;QAED;;;WAGG;QACH,SAAS,kCAAkC,CACzC,aAAqC;YAErC,IACE,CAAC,aAAa,CAAC,aAAa;gBAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAC5C;gBACA,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE,aAAa;oBACnB,SAAS,EAAE,sBAAsB;oBACjC,IAAI,EAAE;wBACJ,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,CAAC;qBACtD;iBACF,CAAC,CAAC;aACJ;QACH,CAAC;QAED,OAAO;YACL,aAAa,EAAE,kCAAkC;YACjD,gBAAgB,EAAE,gCAAgC;SACnD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"explicit-member-accessibility.js","sourceRoot":"","sources":["../../src/rules/explicit-member-accessibility.ts"],"names":[],"mappings":";;;;;;;;;AACA,8CAAgC;AAEhC,kBAAe,IAAI,CAAC,UAAU,CAAC;IAC7B,IAAI,EAAE,+BAA+B;IACrC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,0EAA0E;YAC5E,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,gBAAgB;YAC1B,WAAW,EAAE,OAAO;SACrB;QACD,QAAQ,EAAE;YACR,oBAAoB,EAClB,sDAAsD;SACzD;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C;;;WAGG;QACH,SAAS,gCAAgC,CACvC,gBAA2C;YAE3C,IACE,CAAC,gBAAgB,CAAC,aAAa;gBAC/B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAC5C;gBACA,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE,gBAAgB;oBACtB,SAAS,EAAE,sBAAsB;oBACjC,IAAI,EAAE;wBACJ,IAAI,EAAE,mBAAmB;wBACzB,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,UAAU,CAAC;qBAChE;iBACF,CAAC,CAAC;aACJ;QACH,CAAC;QAED;;;WAGG;QACH,SAAS,kCAAkC,CACzC,aAAqC;YAErC,IACE,CAAC,aAAa,CAAC,aAAa;gBAC5B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAC5C;gBACA,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE,aAAa;oBACnB,SAAS,EAAE,sBAAsB;oBACjC,IAAI,EAAE;wBACJ,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,GAAG,CAAC;qBACtD;iBACF,CAAC,CAAC;aACJ;QACH,CAAC;QAED,OAAO;YACL,aAAa,EAAE,kCAAkC;YACjD,gBAAgB,EAAE,gCAAgC;SACnD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file

dist/rules/interface-name-prefix.js

@@ -20,6 +20,7 @@
},
messages: {
noPrefix: 'Interface name must not be prefixed with "I".',
+ alwaysPrefix: 'Interface name must be prefixed with "I".',
},
schema: [
{
@@ -54,7 +55,7 @@
if (!isPrefixedWithI(node.id.name)) {
context.report({
node: node.id,
- messageId: 'noPrefix',
+ messageId: 'alwaysPrefix',
});
}
}

dist/rules/interface-name-prefix.js.map

@@ -1 +1 @@
-{"version":3,"file":"interface-name-prefix.js","sourceRoot":"","sources":["../../src/rules/interface-name-prefix.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8CAAgC;AAKhC,kBAAe,IAAI,CAAC,UAAU,CAAsB;IAClD,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,mDAAmD;YAChE,cAAc,EAAE,gBAAgB;YAChC,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,OAAO;SACrB;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,+CAA+C;SAC1D;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;aAC1B;SACF;KACF;IACD,cAAc,EAAE,CAAC,OAAO,CAAC;IACzB,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,KAAK,QAAQ,CAAC;QAElC;;;WAGG;QACH,SAAS,eAAe,CAAC,IAAY;YACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACd;YAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO;YACL,sBAAsB,CAAC,IAAI;gBACzB,IAAI,KAAK,EAAE;oBACT,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;wBACjC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,IAAI,CAAC,EAAE;4BACb,SAAS,EAAE,UAAU;yBACtB,CAAC,CAAC;qBACJ;iBACF;qBAAM;oBACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;wBAClC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,IAAI,CAAC,EAAE;4BACb,SAAS,EAAE,UAAU;yBACtB,CAAC,CAAC;qBACJ;iBACF;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"interface-name-prefix.js","sourceRoot":"","sources":["../../src/rules/interface-name-prefix.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8CAAgC;AAKhC,kBAAe,IAAI,CAAC,UAAU,CAAsB;IAClD,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EAAE,mDAAmD;YAChE,cAAc,EAAE,gBAAgB;YAChC,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,OAAO;SACrB;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,+CAA+C;YACzD,YAAY,EAAE,2CAA2C;SAC1D;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;aAC1B;SACF;KACF;IACD,cAAc,EAAE,CAAC,OAAO,CAAC;IACzB,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,KAAK,QAAQ,CAAC;QAElC;;;WAGG;QACH,SAAS,eAAe,CAAC,IAAY;YACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACd;YAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO;YACL,sBAAsB,CAAC,IAAI;gBACzB,IAAI,KAAK,EAAE;oBACT,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;wBACjC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,IAAI,CAAC,EAAE;4BACb,SAAS,EAAE,UAAU;yBACtB,CAAC,CAAC;qBACJ;iBACF;qBAAM;oBACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;wBAClC,OAAO,CAAC,MAAM,CAAC;4BACb,IAAI,EAAE,IAAI,CAAC,EAAE;4BACb,SAAS,EAAE,cAAc;yBAC1B,CAAC,CAAC;qBACJ;iBACF;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file

dist/rules/member-naming.js

@@ -47,6 +47,7 @@
},
defaultOptions: [{}],
create(context, [config]) {
+ const sourceCode = context.getSourceCode();
const conventions = Object.keys(config).reduce((acc, accessibility) => {
acc[accessibility] = new RegExp(config[accessibility]);
return acc;
@@ -59,7 +60,7 @@
* @private
*/
function validateName(node) {
- const name = util.getNameFromPropertyName(node.key);
+ const name = util.getNameFromClassMember(node, sourceCode);
const accessibility = node.accessibility || 'public';
const convention = conventions[accessibility];
if (!convention || convention.test(name))

dist/rules/member-naming.js.map

@@ -1 +1 @@
-{"version":3,"file":"member-naming.js","sourceRoot":"","sources":["../../src/rules/member-naming.ts"],"names":[],"mappings":";;;;;;;;;AACA,8CAAgC;AAWhC,kBAAe,IAAI,CAAC,UAAU,CAAsB;IAClD,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,8DAA8D;YAChE,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,KAAK;SACnB;QACD,QAAQ,EAAE;YACR,aAAa,EACX,kEAAkE;SACrE;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,OAAO;qBAChB;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,OAAO;qBAChB;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,OAAO;qBAChB;iBACF;gBACD,oBAAoB,EAAE,KAAK;gBAC3B,aAAa,EAAE,CAAC;aACjB;SACF;KACF;IACD,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;QACtB,MAAM,WAAW,GAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAiB,CAAC,MAAM,CAE7D,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE;YACvB,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAE,CAAC,CAAC;YAExD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP;;;;;;WAMG;QACH,SAAS,YAAY,CACnB,IAAwD;YAExD,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpD,MAAM,aAAa,GAAc,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC;YAChE,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;YAE9C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO;YAEjD,OAAO,CAAC,MAAM,CAAC;gBACb,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,SAAS,EAAE,eAAe;gBAC1B,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,gBAAgB,EAAE,YAAY;YAC9B,aAAa,EAAE,YAAY;SAC5B,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"member-naming.js","sourceRoot":"","sources":["../../src/rules/member-naming.ts"],"names":[],"mappings":";;;;;;;;;AACA,8CAAgC;AAWhC,kBAAe,IAAI,CAAC,UAAU,CAAsB;IAClD,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,8DAA8D;YAChE,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,KAAK;SACnB;QACD,QAAQ,EAAE;YACR,aAAa,EACX,kEAAkE;SACrE;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,OAAO;qBAChB;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,OAAO;qBAChB;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,CAAC;wBACZ,MAAM,EAAE,OAAO;qBAChB;iBACF;gBACD,oBAAoB,EAAE,KAAK;gBAC3B,aAAa,EAAE,CAAC;aACjB;SACF;KACF;IACD,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC;QACtB,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAE3C,MAAM,WAAW,GAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAiB,CAAC,MAAM,CAE7D,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE;YACvB,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAE,CAAC,CAAC;YAExD,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP;;;;;;WAMG;QACH,SAAS,YAAY,CACnB,IAAwD;YAExD,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC3D,MAAM,aAAa,GAAc,IAAI,CAAC,aAAa,IAAI,QAAQ,CAAC;YAChE,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;YAE9C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,OAAO;YAEjD,OAAO,CAAC,MAAM,CAAC;gBACb,IAAI,EAAE,IAAI,CAAC,GAAG;gBACd,SAAS,EAAE,eAAe;gBAC1B,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,gBAAgB,EAAE,YAAY;YAC9B,aAAa,EAAE,YAAY;SAC5B,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file

dist/rules/member-ordering.js

@@ -9,20 +9,21 @@
Object.defineProperty(exports, "__esModule", { value: true });
const typescript_estree_1 = require("@typescript-eslint/typescript-estree");
const util = __importStar(require("../util"));
-const schemaOptions = ['field', 'method', 'constructor'].reduce((options, type) => {
- options.push(type);
+const allMemberTypes = ['field', 'method', 'constructor'].reduce((all, type) => {
+ all.push(type);
['public', 'protected', 'private'].forEach(accessibility => {
- options.push(`${accessibility}-${type}`);
+ all.push(`${accessibility}-${type}`); // e.g. `public-field`
if (type !== 'constructor') {
+ // There is no `static-constructor` or `instance-constructor
['static', 'instance'].forEach(scope => {
- if (options.indexOf(`${scope}-${type}`) === -1) {
- options.push(`${scope}-${type}`);
+ if (all.indexOf(`${scope}-${type}`) === -1) {
+ all.push(`${scope}-${type}`);
}
- options.push(`${accessibility}-${scope}-${type}`);
+ all.push(`${accessibility}-${scope}-${type}`);
});
}
});
- return options;
+ return all;
}, []);
exports.default = util.createRule({
name: 'member-ordering',
@@ -49,7 +50,7 @@
{
type: 'array',
items: {
- enum: schemaOptions,
+ enum: allMemberTypes,
},
},
],
@@ -62,7 +63,7 @@
{
type: 'array',
items: {
- enum: schemaOptions,
+ enum: allMemberTypes,
},
},
],
@@ -75,7 +76,7 @@
{
type: 'array',
items: {
- enum: schemaOptions,
+ enum: allMemberTypes,
},
},
],
@@ -143,6 +144,7 @@
},
],
create(context, [options]) {
+ const sourceCode = context.getSourceCode();
const functionExpressions = [
typescript_estree_1.AST_NODE_TYPES.FunctionExpression,
typescript_estree_1.AST_NODE_TYPES.ArrowFunctionExpression,
@@ -186,7 +188,7 @@
case typescript_estree_1.AST_NODE_TYPES.MethodDefinition:
return node.kind === 'constructor'
? 'constructor'
- : util.getNameFromPropertyName(node.key);
+ : util.getNameFromClassMember(node, sourceCode);
case typescript_estree_1.AST_NODE_TYPES.TSConstructSignatureDeclaration:
return 'new';
default:
@@ -200,12 +202,14 @@
* - If there is no order for accessibility-scope-type, then strip out the accessibility.
* - If there is no order for scope-type, then strip out the scope.
* - If there is no order for type, then return -1
- * @param names the valid names to be validated.
+ * @param memberTypes the valid names to be validated.
* @param order the current order to be validated.
+ *
+ * @return Index of the matching member type in the order configuration.
*/
- function getRankOrder(names, order) {
+ function getRankOrder(memberTypes, order) {
let rank = -1;
- const stack = names.slice();
+ const stack = memberTypes.slice(); // Get a copy of the member types
while (stack.length > 0 && rank === -1) {
rank = order.indexOf(stack.shift());
}
@@ -215,7 +219,7 @@
* Gets the rank of the node given the order.
* @param node the node to be evaluated.
* @param order the current order to be validated.
- * @param supportsModifiers a flag indicating whether the type supports modifiers or not.
+ * @param supportsModifiers a flag indicating whether the type supports modifiers (scope or accessibility) or not.
*/
function getRank(node, order, supportsModifiers) {
const type = getNodeType(node);
@@ -227,16 +231,17 @@
const accessibility = 'accessibility' in node && node.accessibility
? node.accessibility
: 'public';
- const names = [];
+ const memberTypes = [];
if (supportsModifiers) {
if (type !== 'constructor') {
- names.push(`${accessibility}-${scope}-${type}`);
- names.push(`${scope}-${type}`);
+ // Constructors have no scope
+ memberTypes.push(`${accessibility}-${scope}-${type}`);
+ memberTypes.push(`${scope}-${type}`);
}
- names.push(`${accessibility}-${type}`);
+ memberTypes.push(`${accessibility}-${type}`);
}
- names.push(type);
- return getRankOrder(names, order);
+ memberTypes.push(type);
+ return getRankOrder(memberTypes, order);
}
/**
* Gets the lowest possible rank higher than target.
@@ -267,14 +272,16 @@
return order[lowest].replace(/-/g, ' ');
}
/**
- * Validates each member rank.
- * @param members the members to be validated.
- * @param order the current order to be validated.
- * @param supportsModifiers a flag indicating whether the type supports modifiers or not.
+ * Validates if all members are correctly sorted.
+ *
+ * @param members Members to be validated.
+ * @param order Current order to be validated.
+ * @param supportsModifiers A flag indicating whether the type supports modifiers (scope or accessibility) or not.
*/
- function validateMembers(members, order, supportsModifiers) {
+ function validateMembersOrder(members, order, supportsModifiers) {
if (members && order !== 'never') {
const previousRanks = [];
+ // Find first member which isn't correctly sorted
members.forEach(member => {
const rank = getRank(member, order, supportsModifiers);
if (rank !== -1) {
@@ -297,16 +304,16 @@
}
return {
ClassDeclaration(node) {
- validateMembers(node.body.body, options.classes || options.default, true);
+ validateMembersOrder(node.body.body, options.classes || options.default, true);
},
ClassExpression(node) {
- validateMembers(node.body.body, options.classExpressions || options.default, true);
+ validateMembersOrder(node.body.body, options.classExpressions || options.default, true);
},
TSInterfaceDeclaration(node) {
- validateMembers(node.body.body, options.interfaces || options.default, false);
+ validateMembersOrder(node.body.body, options.interfaces || options.default, false);
},
TSTypeLiteral(node) {
- validateMembers(node.members, options.typeLiterals || options.default, false);
+ validateMembersOrder(node.members, options.typeLiterals || options.default, false);
},
};
},

dist/rules/member-ordering.js.map

@@ -1 +1 @@
-{"version":3,"file":"member-ordering.js","sourceRoot":"","sources":["../../src/rules/member-ordering.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"member-ordering.js","sourceRoot":"","sources":["../../src/rules/member-ordering.ts"],"names":[],"mappings":"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"}
\ No newline at end of file

dist/rules/no-object-literal-type-assertion.js

@@ -10,7 +10,7 @@
const typescript_estree_1 = require("@typescript-eslint/typescript-estree");
const util = __importStar(require("../util"));
exports.default = util.createRule({
- name: 'no-object-literal-type-assertions',
+ name: 'no-object-literal-type-assertion',
meta: {
type: 'problem',
docs: {

dist/rules/no-object-literal-type-assertion.js.map

@@ -1 +1 @@
-{"version":3,"file":"no-object-literal-type-assertion.js","sourceRoot":"","sources":["../../src/rules/no-object-literal-type-assertion.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4EAAgF;AAChF,8CAAgC;AAShC,kBAAe,IAAI,CAAC,UAAU,CAAsB;IAClD,IAAI,EAAE,mCAAmC;IACzC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,oEAAoE;YACtE,cAAc,EAAE,kCAAkC;YAClD,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,OAAO;SACrB;QACD,QAAQ,EAAE;YACR,uBAAuB,EACrB,gFAAgF;SACnF;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,gBAAgB,EAAE;wBAChB,IAAI,EAAE,SAAS;qBAChB;iBACF;aACF;SACF;KACF;IACD,cAAc,EAAE;QACd;YACE,gBAAgB,EAAE,KAAK;SACxB;KACF;IACD,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC;QACpC;;;WAGG;QACH,SAAS,SAAS,CAAC,IAAuB;YACxC,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,kCAAc,CAAC,YAAY,CAAC;gBACjC,KAAK,kCAAc,CAAC,gBAAgB;oBAClC,OAAO,KAAK,CAAC;gBACf;oBACE,OAAO,IAAI,CAAC;aACf;QACH,CAAC;QAED,OAAO;YACL,iCAAiC,CAC/B,IAAwD;gBAExD,IACE,gBAAgB;oBAChB,IAAI,CAAC,MAAM;oBACX,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kCAAc,CAAC,aAAa;wBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kCAAc,CAAC,cAAc,CAAC,EACrD;oBACA,OAAO;iBACR;gBAED,IACE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;oBAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,kCAAc,CAAC,gBAAgB,EACxD;oBACA,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,yBAAyB;qBACrC,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"no-object-literal-type-assertion.js","sourceRoot":"","sources":["../../src/rules/no-object-literal-type-assertion.ts"],"names":[],"mappings":";;;;;;;;;AAAA,4EAAgF;AAChF,8CAAgC;AAShC,kBAAe,IAAI,CAAC,UAAU,CAAsB;IAClD,IAAI,EAAE,kCAAkC;IACxC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EACT,oEAAoE;YACtE,cAAc,EAAE,kCAAkC;YAClD,QAAQ,EAAE,kBAAkB;YAC5B,WAAW,EAAE,OAAO;SACrB;QACD,QAAQ,EAAE;YACR,uBAAuB,EACrB,gFAAgF;SACnF;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,gBAAgB,EAAE;wBAChB,IAAI,EAAE,SAAS;qBAChB;iBACF;aACF;SACF;KACF;IACD,cAAc,EAAE;QACd;YACE,gBAAgB,EAAE,KAAK;SACxB;KACF;IACD,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC;QACpC;;;WAGG;QACH,SAAS,SAAS,CAAC,IAAuB;YACxC,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,kCAAc,CAAC,YAAY,CAAC;gBACjC,KAAK,kCAAc,CAAC,gBAAgB;oBAClC,OAAO,KAAK,CAAC;gBACf;oBACE,OAAO,IAAI,CAAC;aACf;QACH,CAAC;QAED,OAAO;YACL,iCAAiC,CAC/B,IAAwD;gBAExD,IACE,gBAAgB;oBAChB,IAAI,CAAC,MAAM;oBACX,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kCAAc,CAAC,aAAa;wBAChD,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kCAAc,CAAC,cAAc,CAAC,EACrD;oBACA,OAAO;iBACR;gBAED,IACE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;oBAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,kCAAc,CAAC,gBAAgB,EACxD;oBACA,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,yBAAyB;qBACrC,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
\ No newline at end of file

dist/rules/unified-signatures.js

@@ -0,0 +1,375 @@
+"use strict";
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ result["default"] = mod;
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const util = __importStar(require("../util"));
+const typescript_estree_1 = require("@typescript-eslint/typescript-estree");
+exports.default = util.createRule({
+ name: 'unified-signatures',
+ meta: {
+ docs: {
+ description: 'Warns for any two overloads that could be unified into one by using a union or an optional/rest parameter.',
+ category: 'Variables',
+ recommended: false,
+ tslintName: 'unified-signatures',
+ },
+ type: 'suggestion',
+ messages: {
+ omittingRestParameter: '{{failureStringStart}} with a rest parameter.',
+ omittingSingleParameter: '{{failureStringStart}} with an optional parameter.',
+ singleParameterDifference: '{{failureStringStart}} taking `{{type1}} | {{type2}}`.',
+ },
+ schema: [],
+ },
+ defaultOptions: [],
+ create(context) {
+ const sourceCode = context.getSourceCode();
+ //----------------------------------------------------------------------
+ // Helpers
+ //----------------------------------------------------------------------
+ function failureStringStart(otherLine) {
+ // For only 2 overloads we don't need to specify which is the other one.
+ const overloads = otherLine === undefined
+ ? 'These overloads'
+ : `This overload and the one on line ${otherLine}`;
+ return `${overloads} can be combined into one signature`;
+ }
+ function addFailures(failures) {
+ for (const failure of failures) {
+ const { unify, only2 } = failure;
+ switch (unify.kind) {
+ case 'single-parameter-difference': {
+ const { p0, p1 } = unify;
+ const lineOfOtherOverload = only2 ? undefined : p0.loc.start.line;
+ const typeAnnotation0 = isTSParameterProperty(p0)
+ ? p0.parameter.typeAnnotation
+ : p0.typeAnnotation;
+ const typeAnnotation1 = isTSParameterProperty(p1)
+ ? p1.parameter.typeAnnotation
+ : p1.typeAnnotation;
+ context.report({
+ loc: p1.loc,
+ messageId: 'singleParameterDifference',
+ data: {
+ failureStringStart: failureStringStart(lineOfOtherOverload),
+ type1: sourceCode.getText(typeAnnotation0 && typeAnnotation0.typeAnnotation),
+ type2: sourceCode.getText(typeAnnotation1 && typeAnnotation1.typeAnnotation),
+ },
+ node: p1,
+ });
+ break;
+ }
+ case 'extra-parameter': {
+ const { extraParameter, otherSignature } = unify;
+ const lineOfOtherOverload = only2
+ ? undefined
+ : otherSignature.loc.start.line;
+ context.report({
+ loc: extraParameter.loc,
+ messageId: extraParameter.type === typescript_estree_1.AST_NODE_TYPES.RestElement
+ ? 'omittingRestParameter'
+ : 'omittingSingleParameter',
+ data: {
+ failureStringStart: failureStringStart(lineOfOtherOverload),
+ },
+ node: extraParameter,
+ });
+ }
+ }
+ }
+ }
+ function checkOverloads(signatures, typeParameters) {
+ const result = [];
+ const isTypeParameter = getIsTypeParameter(typeParameters);
+ for (const overloads of signatures) {
+ if (overloads.length === 2) {
+ const signature0 = overloads[0].value || overloads[0];
+ const signature1 = overloads[1].value || overloads[1];
+ const unify = compareSignatures(signature0, signature1, isTypeParameter);
+ if (unify !== undefined) {
+ result.push({ unify, only2: true });
+ }
+ }
+ else {
+ forEachPair(overloads, (a, b) => {
+ const signature0 = a.value || a;
+ const signature1 = b.value || b;
+ const unify = compareSignatures(signature0, signature1, isTypeParameter);
+ if (unify !== undefined) {
+ result.push({ unify, only2: false });
+ }
+ });
+ }
+ }
+ return result;
+ }
+ function compareSignatures(a, b, isTypeParameter) {
+ if (!signaturesCanBeUnified(a, b, isTypeParameter)) {
+ return undefined;
+ }
+ return a.params.length === b.params.length
+ ? signaturesDifferBySingleParameter(a.params, b.params)
+ : signaturesDifferByOptionalOrRestParameter(a, b);
+ }
+ function signaturesCanBeUnified(a, b, isTypeParameter) {
+ // Must return the same type.
+ const aTypeParams = a.typeParameters !== undefined ? a.typeParameters.params : undefined;
+ const bTypeParams = b.typeParameters !== undefined ? b.typeParameters.params : undefined;
+ return (typesAreEqual(a.returnType, b.returnType) &&
+ // Must take the same type parameters.
+ // If one uses a type parameter (from outside) and the other doesn't, they shouldn't be joined.
+ util.arraysAreEqual(aTypeParams, bTypeParams, typeParametersAreEqual) &&
+ signatureUsesTypeParameter(a, isTypeParameter) ===
+ signatureUsesTypeParameter(b, isTypeParameter));
+ }
+ /** Detect `a(x: number, y: number, z: number)` and `a(x: number, y: string, z: number)`. */
+ function signaturesDifferBySingleParameter(types1, types2) {
+ const index = getIndexOfFirstDifference(types1, types2, parametersAreEqual);
+ if (index === undefined) {
+ return undefined;
+ }
+ // If remaining arrays are equal, the signatures differ by just one parameter type
+ if (!util.arraysAreEqual(types1.slice(index + 1), types2.slice(index + 1), parametersAreEqual)) {
+ return undefined;
+ }
+ const a = types1[index];
+ const b = types2[index];
+ // Can unify `a?: string` and `b?: number`. Can't unify `...args: string[]` and `...args: number[]`.
+ // See https://github.com/Microsoft/TypeScript/issues/5077
+ return parametersHaveEqualSigils(a, b) &&
+ a.type !== typescript_estree_1.AST_NODE_TYPES.RestElement
+ ? { kind: 'single-parameter-difference', p0: a, p1: b }
+ : undefined;
+ }
+ /**
+ * Detect `a(): void` and `a(x: number): void`.
+ * Returns the parameter declaration (`x: number` in this example) that should be optional/rest, and overload it's a part of.
+ */
+ function signaturesDifferByOptionalOrRestParameter(a, b) {
+ const sig1 = a.params;
+ const sig2 = b.params;
+ const minLength = Math.min(sig1.length, sig2.length);
+ const longer = sig1.length < sig2.length ? sig2 : sig1;
+ const shorter = sig1.length < sig2.length ? sig1 : sig2;
+ const shorterSig = sig1.length < sig2.length ? a : b;
+ // If one is has 2+ parameters more than the other, they must all be optional/rest.
+ // Differ by optional parameters: f() and f(x), f() and f(x, ?y, ...z)
+ // Not allowed: f() and f(x, y)
+ for (let i = minLength + 1; i < longer.length; i++) {
+ if (!parameterMayBeMissing(longer[i])) {
+ return undefined;
+ }
+ }
+ for (let i = 0; i < minLength; i++) {
+ const sig1i = sig1[i];
+ const sig2i = sig2[i];
+ const typeAnnotation1 = isTSParameterProperty(sig1i)
+ ? sig1i.parameter.typeAnnotation
+ : sig1i.typeAnnotation;
+ const typeAnnotation2 = isTSParameterProperty(sig2i)
+ ? sig2i.parameter.typeAnnotation
+ : sig2i.typeAnnotation;
+ if (!typesAreEqual(typeAnnotation1, typeAnnotation2)) {
+ return undefined;
+ }
+ }
+ if (minLength > 0 &&
+ shorter[minLength - 1].type === typescript_estree_1.AST_NODE_TYPES.RestElement) {
+ return undefined;
+ }
+ return {
+ extraParameter: longer[longer.length - 1],
+ kind: 'extra-parameter',
+ otherSignature: shorterSig,
+ };
+ }
+ /** Given type parameters, returns a function to test whether a type is one of those parameters. */
+ function getIsTypeParameter(typeParameters) {
+ if (typeParameters === undefined) {
+ return () => false;
+ }
+ const set = new Set();
+ for (const t of typeParameters.params) {
+ set.add(t.name.name);
+ }
+ return typeName => set.has(typeName);
+ }
+ /** True if any of the outer type parameters are used in a signature. */
+ function signatureUsesTypeParameter(sig, isTypeParameter) {
+ return sig.params.some((p) => typeContainsTypeParameter(isTSParameterProperty(p)
+ ? p.parameter.typeAnnotation
+ : p.typeAnnotation));
+ function typeContainsTypeParameter(type) {
+ if (!type) {
+ return false;
+ }
+ if (type.type === typescript_estree_1.AST_NODE_TYPES.TSTypeReference) {
+ const typeName = type.typeName;
+ if (isIdentifier(typeName) && isTypeParameter(typeName.name)) {
+ return true;
+ }
+ }
+ return typeContainsTypeParameter(type.typeAnnotation ||
+ type.elementType);
+ }
+ }
+ function isTSParameterProperty(node) {
+ return (node.type ===
+ typescript_estree_1.AST_NODE_TYPES.TSParameterProperty);
+ }
+ function parametersAreEqual(a, b) {
+ const typeAnnotationA = isTSParameterProperty(a)
+ ? a.parameter.typeAnnotation
+ : a.typeAnnotation;
+ const typeAnnotationB = isTSParameterProperty(b)
+ ? b.parameter.typeAnnotation
+ : b.typeAnnotation;
+ return (parametersHaveEqualSigils(a, b) &&
+ typesAreEqual(typeAnnotationA, typeAnnotationB));
+ }
+ /** True for optional/rest parameters. */
+ function parameterMayBeMissing(p) {
+ const optional = isTSParameterProperty(p)
+ ? p.parameter.optional
+ : p.optional;
+ return p.type === typescript_estree_1.AST_NODE_TYPES.RestElement || optional;
+ }
+ /** False if one is optional and the other isn't, or one is a rest parameter and the other isn't. */
+ function parametersHaveEqualSigils(a, b) {
+ const optionalA = isTSParameterProperty(a)
+ ? a.parameter.optional
+ : a.optional;
+ const optionalB = isTSParameterProperty(b)
+ ? b.parameter.optional
+ : b.optional;
+ return ((a.type === typescript_estree_1.AST_NODE_TYPES.RestElement) ===
+ (b.type === typescript_estree_1.AST_NODE_TYPES.RestElement) &&
+ (optionalA !== undefined) === (optionalB !== undefined));
+ }
+ function typeParametersAreEqual(a, b) {
+ return (a.name.name === b.name.name &&
+ constraintsAreEqual(a.constraint, b.constraint));
+ }
+ function typesAreEqual(a, b) {
+ return (a === b ||
+ (a !== undefined &&
+ b !== undefined &&
+ a.typeAnnotation.type === b.typeAnnotation.type));
+ }
+ function constraintsAreEqual(a, b) {
+ return (a === b || (a !== undefined && b !== undefined && a.type === b.type));
+ }
+ /* Returns the first index where `a` and `b` differ. */
+ function getIndexOfFirstDifference(a, b, equal) {
+ for (let i = 0; i < a.length && i < b.length; i++) {
+ if (!equal(a[i], b[i])) {
+ return i;
+ }
+ }
+ return undefined;
+ }
+ /** Calls `action` for every pair of values in `values`. */
+ function forEachPair(values, action) {
+ for (let i = 0; i < values.length; i++) {
+ for (let j = i + 1; j < values.length; j++) {
+ action(values[i], values[j]);
+ }
+ }
+ }
+ const scopes = [];
+ let currentScope = {
+ overloads: new Map(),
+ };
+ function createScope(parent, typeParameters) {
+ currentScope && scopes.push(currentScope);
+ currentScope = {
+ overloads: new Map(),
+ parent,
+ typeParameters,
+ };
+ }
+ function checkScope() {
+ const failures = checkOverloads(Array.from(currentScope.overloads.values()), currentScope.typeParameters);
+ addFailures(failures);
+ currentScope = scopes.pop();
+ }
+ function addOverload(signature, key) {
+ key = key || getOverloadKey(signature);
+ if (currentScope && signature.parent === currentScope.parent && key) {
+ const overloads = currentScope.overloads.get(key);
+ if (overloads !== undefined) {
+ overloads.push(signature);
+ }
+ else {
+ currentScope.overloads.set(key, [signature]);
+ }
+ }
+ }
+ //----------------------------------------------------------------------
+ // Public
+ //----------------------------------------------------------------------
+ return {
+ Program: createScope,
+ TSModuleBlock: createScope,
+ TSInterfaceDeclaration(node) {
+ createScope(node.body, node.typeParameters);
+ },
+ ClassDeclaration(node) {
+ createScope(node.body, node.typeParameters);
+ },
+ TSTypeLiteral: createScope,
+ // collect overloads
+ TSDeclareFunction(node) {
+ if (node.id && !node.body) {
+ addOverload(node, node.id.name);
+ }
+ },
+ TSCallSignatureDeclaration: addOverload,
+ TSConstructSignatureDeclaration: addOverload,
+ TSMethodSignature: addOverload,
+ TSAbstractMethodDefinition(node) {
+ if (!node.value.body) {
+ addOverload(node);
+ }
+ },
+ MethodDefinition(node) {
+ if (!node.value.body) {
+ addOverload(node);
+ }
+ },
+ // validate scopes
+ 'Program:exit': checkScope,
+ 'TSModuleBlock:exit': checkScope,
+ 'TSInterfaceDeclaration:exit': checkScope,
+ 'ClassDeclaration:exit': checkScope,
+ 'TSTypeLiteral:exit': checkScope,
+ };
+ },
+});
+function getOverloadKey(node) {
+ const info = getOverloadInfo(node);
+ return ((node.computed ? '0' : '1') +
+ (node.static ? '0' : '1') +
+ info);
+}
+function getOverloadInfo(node) {
+ switch (node.type) {
+ case typescript_estree_1.AST_NODE_TYPES.TSConstructSignatureDeclaration:
+ return 'constructor';
+ case typescript_estree_1.AST_NODE_TYPES.TSCallSignatureDeclaration:
+ return '()';
+ default: {
+ const { key } = node;
+ return isIdentifier(key) ? key.name : key.raw;
+ }
+ }
+}
+function isIdentifier(node) {
+ return node.type === typescript_estree_1.AST_NODE_TYPES.Identifier;
+}
+//# sourceMappingURL=unified-signatures.js.map
\ No newline at end of file

dist/rules/unified-signatures.js.map

@@ -0,0 +1 @@
+{"version":3,"file":"unified-signatures.js","sourceRoot":"","sources":["../../src/rules/unified-signatures.ts"],"names":[],"mappings":"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"}
\ No newline at end of file

dist/util/misc.js

@@ -35,4 +35,31 @@
return `${propertyName.value}`;
}
exports.getNameFromPropertyName = getNameFromPropertyName;
+function arraysAreEqual(a, b, eq) {
+ return (a === b ||
+ (a !== undefined &&
+ b !== undefined &&
+ a.length === b.length &&
+ a.every((x, idx) => eq(x, b[idx]))));
+}
+exports.arraysAreEqual = arraysAreEqual;
+/**
+ * Gets a string name representation of the name of the given MethodDefinition
+ * or ClassProperty node, with handling for computed property names.
+ */
+function getNameFromClassMember(methodDefinition, sourceCode) {
+ if (keyCanBeReadAsPropertyName(methodDefinition.key)) {
+ return getNameFromPropertyName(methodDefinition.key);
+ }
+ return sourceCode.text.slice(...methodDefinition.key.range);
+}
+exports.getNameFromClassMember = getNameFromClassMember;
+/**
+ * This covers both actual property names, as well as computed properties that are either
+ * an identifier or a literal at the top level.
+ */
+function keyCanBeReadAsPropertyName(node) {
+ return (node.type === typescript_estree_1.AST_NODE_TYPES.Literal ||
+ node.type === typescript_estree_1.AST_NODE_TYPES.Identifier);
+}
//# sourceMappingURL=misc.js.map
\ No newline at end of file

dist/util/misc.js.map

@@ -1 +1 @@
-{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/util/misc.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,4EAAgF;AAGhF;;GAEG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAFD,4CAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAFD,4CAEC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAFD,wCAEC;AA4BD;;GAEG;AACH,SAAgB,uBAAuB,CACrC,YAAmC;IAEnC,IAAI,YAAY,CAAC,IAAI,KAAK,kCAAc,CAAC,UAAU,EAAE;QACnD,OAAO,YAAY,CAAC,IAAI,CAAC;KAC1B;IACD,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;AACjC,CAAC;AAPD,0DAOC"}
\ No newline at end of file
+{"version":3,"file":"misc.js","sourceRoot":"","sources":["../../src/util/misc.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,4EAAgF;AAIhF;;GAEG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAFD,4CAEC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAFD,4CAEC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAFD,wCAEC;AA4BD;;GAEG;AACH,SAAgB,uBAAuB,CACrC,YAAmC;IAEnC,IAAI,YAAY,CAAC,IAAI,KAAK,kCAAc,CAAC,UAAU,EAAE;QACnD,OAAO,YAAY,CAAC,IAAI,CAAC;KAC1B;IACD,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;AACjC,CAAC;AAPD,0DAOC;AAKD,SAAgB,cAAc,CAC5B,CAAkB,EAClB,CAAkB,EAClB,EAA2B;IAE3B,OAAO,CACL,CAAC,KAAK,CAAC;QACP,CAAC,CAAC,KAAK,SAAS;YACd,CAAC,KAAK,SAAS;YACf,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACtC,CAAC;AACJ,CAAC;AAZD,wCAYC;AAED;;;GAGG;AACH,SAAgB,sBAAsB,CACpC,gBAAoE,EACpE,UAAsB;IAEtB,IAAI,0BAA0B,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;QACpD,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;KACtD;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AATD,wDASC;AAED;;;GAGG;AACH,SAAS,0BAA0B,CACjC,IAAyB;IAEzB,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,kCAAc,CAAC,OAAO;QACpC,IAAI,CAAC,IAAI,KAAK,kCAAc,CAAC,UAAU,CACxC,CAAC;AACJ,CAAC"}
\ No newline at end of file

docs/rules/member-ordering.md

@@ -5,591 +5,638 @@
## Rule Details
-This rule aims to standardise the way interfaces, type literals, classes and class expressions are structured.
+This rule aims to standardize the way class declarations, class expressions, interfaces and type literals are structured.
+
+It allows to group members by their type (e.g. `public-static-field`, `protected-static-field`, `private-static-field`, `public-instance-field`, ...). By default, their order is the same inside `classes`, `classExpressions`, `interfaces` and `typeLiterals` (note: not all member types apply to `interfaces` and `typeLiterals`). It is possible to define the order for any of those individually or to change the default order for all of them by setting the `default` option.
## Options
-This rule, in its default state, does not require any argument, in which case the following order is enforced:
+```ts
+{
+ default?: Array<MemberType> | never
+ classes?: Array<MemberType> | never
+ classExpressions?: Array<MemberType> | never
-- `public-static-field`
-- `protected-static-field`
-- `private-static-field`
-- `public-instance-field`
-- `protected-instance-field`
-- `private-instance-field`
-- `public-field` (ignores scope)
-- `protected-field` (ignores scope)
-- `private-field` (ignores scope)
-- `static-field` (ignores accessibility)
-- `instance-field` (ignores accessibility)
-- `field` (ignores scope and/or accessibility)
-- `constructor` (ignores scope and/or accessibility)
-- `public-static-method`
-- `protected-static-method`
-- `private-static-method`
-- `public-instance-method`
-- `protected-instance-method`
-- `private-instance-method`
-- `public-method` (ignores scope)
-- `protected-method` (ignores scope)
-- `private-method` (ignores scope)
-- `static-method` (ignores accessibility)
-- `instance-method` (ignores accessibility)
-- `method` (ignores scope and/or accessibility)
-
-The rule can also take one or more of the following options:
-
-- `default`, use this to change the default order (used when no specific configuration has been provided).
-- `classes`, use this to change the order in classes.
-- `classExpressions`, use this to change the order in class expressions.
-- `interfaces`, use this to change the order in interfaces.
-- `typeLiterals`, use this to change the order in type literals.
-
-### default
-
-Disable using `never` or use one of the following values to specify an order:
-
-- Fields:
- `public-static-field`
- `protected-static-field`
- `private-static-field`
- `public-instance-field`
- `protected-instance-field`
- `private-instance-field`
- `public-field` (= public-_-field)
- `protected-field` (= protected-_-field)
- `private-field` (= private-_-field)
- `static-field` (= _-static-field)
- `instance-field` (= \*-instance-field)
- `field` (= all)
-
-- Constructors:
- `public-constructor`
- `protected-constructor`
- `private-constructor`
- `constructor` (= \*-constructor)
-
-- Methods:
- `public-static-method`
- `protected-static-method`
- `private-static-method`
- `public-instance-method`
- `protected-instance-method`
- `private-instance-method`
- `public-method` (= public-_-method)
- `protected-method` (= protected-_-method)
- `private-method` (= private-_-method)
- `static-method` (= _-static-method)
- `instance-method` (= \*-instance-method)
- `method` (= all)
+ interfaces?: ['field' | 'method' | 'constructor'] | never
+ typeLiterals?: ['field' | 'method' | 'constructor'] | never
+}
+```
-Examples of **incorrect** code for the `{ "default": [...] }` option:
+See below for the possible definitions of `MemberType`.
-```ts
-// { "default": ["method", "constructor", "field"] }
+### Member types (granular form)
+
+There are multiple ways to specify the member types. The most explicit and granular form is the following:
+
+```json5
+[
+ // Fields
+ 'public-static-field',
+ 'protected-static-field',
+ 'private-static-field',
+ 'public-instance-field',
+ 'protected-instance-field',
+ 'private-instance-field',
+
+ // Constructors
+ 'public-constructor',
+ 'protected-constructor',
+ 'private-constructor',
+
+ // Methods
+ 'public-static-method',
+ 'protected-static-method',
+ 'private-static-method',
+ 'public-instance-method',
+ 'protected-instance-method',
+ 'private-instance-method',
+]
+```
+
+Note: If you only specify some of the possible types, the non-specified ones can have any particular order. This means that they can be placed before, within or after the specified types and the linter won't complain about it.
+
+### Member group types (with accessibility, ignoring scope)
+
+It is also possible to group member types by their accessibility (`static`, `instance`), ignoring their scope.
+
+```json5
+[
+ // Fields
+ 'public-field', // = ['public-static-field', 'public-instance-field'])
+ 'protected-field', // = ['protected-static-field', 'protected-instance-field'])
+ 'private-field', // = ['private-static-field', 'private-instance-field'])
+
+ // Constructors
+ // Only the accessibility of constructors is configurable. See below.
+
+ // Methods
+ 'public-method', // = ['public-static-method', 'public-instance-method'])
+ 'protected-method', // = ['protected-static-method', 'protected-instance-method'])
+ 'private-method', // = ['private-static-method', 'private-instance-method'])
+]
+```
+
+### Member group types (with scope, ignoring accessibility)
+
+Another option is to group the member types by their scope (`public`, `protected`, `private`), ignoring their accessibility.
+
+```json5
+[
+ // Fields
+ 'static-field', // = ['public-static-field', 'protected-static-field', 'private-static-field'])
+ 'instance-field', // = ['public-instance-field', 'protected-instance-field', 'private-instance-field'])
+
+ // Constructors
+ 'constructor', // = ['public-constructor', 'protected-constructor', 'private-constructor'])
+
+ // Methods
+ 'static-method', // = ['public-static-method', 'protected-static-method', 'private-static-method'])
+ 'instance-method', // = ['public-instance-method', 'protected-instance-method', 'private-instance-method']
+]
+```
+
+### Member group types (with scope and accessibility)
+
+The third grouping option is to ignore both scope and accessibility.
+
+```json5
+[
+ // Fields
+ 'field', // = ['public-static-field', 'protected-static-field', 'private-static-field', 'public-instance-field', 'protected-instance-field', 'private-instance-field'])
+
+ // Constructors
+ // Only the accessibility of constructors is configurable. See above.
+
+ // Methods
+ 'method', // = ['public-static-method', 'protected-static-method', 'private-static-method', 'public-instance-method', 'protected-instance-method', 'private-instance-method'])
+]
+```
+
+### Default configuration
+
+The default configuration looks as follows:
+
+```json
+{
+ "default": [
+ "public-static-field",
+ "protected-static-field",
+ "private-static-field",
+
+ "public-instance-field",
+ "protected-instance-field",
+ "private-instance-field",
+
+ "public-field",
+ "protected-field",
+ "private-field",
+
+ "static-field",
+ "instance-field",
+
+ "field",
+
+ "constructor",
+
+ "public-static-method",
+ "protected-static-method",
+ "private-static-method",
+
+ "public-instance-method",
+ "protected-instance-method",
+ "private-instance-method",
+
+ "public-method",
+ "protected-method",
+ "private-method",
+
+ "static-method",
+ "instance-method",
+
+ "method"
+ ]
+}
+```
+
+Note: The default configuration contains member group types which contain other member types (see above). This is intentional to provide better error messages.
+
+## Examples
+### Custom `default` configuration
+
+Note: The `default` options are overwritten in these examples.
+
+#### Configuration: `{ "default": ["method", "constructor", "field"] }`
+
+##### Incorrect examples
+
+```ts
interface Foo {
- // -> field
- B: string;
+ B: string; // -> field
- // -> constructor
- new ();
+ new (); // -> constructor
- // -> method
- A(): void;
+ A(): void; // -> method
}
+```
+
+Note: Wrong order.
+```ts
type Foo = {
- // -> field
- B: string;
+ B: string; // -> field
// no constructor
- // -> method
- A(): void;
+ A(): void; // -> method
};
+```
+
+Note: Not all specified member types have to exist.
+```ts
class Foo {
- // -> * field
- private C: string;
- public D: string;
- protected static E: string;
-
- // -> constructor
- constructor() {}
-
- // -> * method
- public static A(): void {}
- public B(): void {}
+ private C: string; // -> field
+ public D: string; // -> field
+ protected static E: string; // -> field
+
+ constructor() {} // -> constructor
+
+ public static A(): void {} // -> method
+ public B(): void {} // -> method
}
+```
+
+Note: Accessibility or scope are ignored with this ignored.
+```ts
const Foo = class {
- // -> * field
- private C: string;
- public D: string;
+ private C: string; // -> field
+ public D: string; // -> field
- // -> constructor
- constructor() {}
+ constructor() {} // -> constructor
- // -> * method
- public static A(): void {}
- public B(): void {}
+ public static A(): void {} // -> method
+ public B(): void {} // -> method
- // * field
- protected static E: string;
+ protected static E: string; // -> field
};
+```
-// { "default": ["public-instance-method", "public-static-field"] }
+Note: Not all members have to be grouped to find rule violations.
-// does not apply for interfaces/type literals (accessibility and scope are not part of interfaces/type literals)
+##### Correct examples
-class Foo {
- // private instance field
- private C: string;
+```ts
+interface Foo {
+ A(): void; // -> method
- // public instance field
- public D: string;
+ new (); // -> constructor
- // -> public static field
- public static E: string;
+ B: string; // -> field
+}
+```
- // constructor
- constructor() {}
+```ts
+type Foo = {
+ A(): void; // -> method
- // public static method
- public static A(): void {}
+ // no constructor
- // -> public instance method
- public B(): void {}
-}
+ B: string; // -> field
+};
+```
-const Foo = class {
- // private instance field
- private C: string;
+```ts
+class Foo {
+ public static A(): void {} // -> method
+ public B(): void {} // -> method
- // -> public static field
- public static E: string;
+ constructor() {} // -> constructor
- // public instance field
- public D: string;
+ private C: string; // -> field
+ public D: string; // -> field
+ protected static E: string; // -> field
+}
+```
- // constructor
- constructor() {}
+```ts
+const Foo = class {
+ public static A(): void {} // -> method
+ public B(): void {} // -> method
- // public static method
- public static A(): void {}
+ constructor() {} // -> constructor
- // -> public instance method
- public B(): void {}
+ private C: string; // -> field
+ public D: string; // -> field
+ protected static E: string; // -> field
};
```
-Examples of **correct** code for the `{ "default": [...] }` option:
+#### Configuration: `{ "default": ["public-instance-method", "public-static-field"] }`
+
+Note: This configuration does not apply to interfaces/type literals as accessibility and scope are not part of interfaces/type literals.
+
+##### Incorrect examples
```ts
-// { "default": ["method", "constructor", "field"] }
+class Foo {
+ private C: string; // (irrelevant)
-interface Foo {
- // -> method
- A() : void;
+ public D: string; // (irrelevant)
- // -> constructor
- new();
+ public static E: string; // -> public static field
- // -> field
- B: string;
-}
+ constructor() {} // (irrelevant)
-type Foo = {
- // -> method
- A() : void;
+ public static A(): void {} // (irrelevant)
- // -> field
- B: string;
+ public B(): void {} // -> public instance method
}
+```
-class Foo {
- // -> * method
- public static A(): void {}
- public B(): void {}
-
- // -> constructor
- constructor() {}
-
- // -> * field
- private C: string
- public D: string
- protected static E: string
-}
+Note: Public instance methods should come first before public static fields. Everything else can be placed anywhere.
+```ts
const Foo = class {
- // -> * method
- public static A(): void {}
- public B(): void {}
+ private C: string; // (irrelevant)
- // -> constructor
- constructor() {}
+ public static E: string; // -> public static field
- // -> * field
- private C: string
- public D: string
- protected static E: string
-}
+ public D: string; // (irrelevant)
+
+ constructor() {} // (irrelevant)
+
+ public static A(): void {} // (irrelevant)
+
+ public B(): void {} // -> public instance method
+};
+```
-// { "default": ["public-instance-method", "public-static-field"] }
+Note: Public instance methods should come first before public static fields. Everything else can be placed anywhere.
-// does not apply for interfaces/type literals (accessibility and scope are not part of interfaces/type literals)
+##### Correct examples
+```ts
class Foo {
- // -> public instance method
- public B(): void {}
+ public B(): void {} // -> public instance method
- // private instance field
- private C: string
+ private C: string; // (irrelevant)
- // public instance field
- public D: string
+ public D: string; // (irrelevant)
- // -> public static field
- public static E: string
+ public static E: string; // -> public static field
- // constructor
- constructor() {}
+ constructor() {} // (irrelevant)
- // public static method
- public static A(): void {}
+ public static A(): void {} // (irrelevant)
}
+```
+```ts
const Foo = class {
- // -> public instance method
- public B(): void {}
+ public B(): void {} // -> public instance method
- // private instance field
- private C: string
+ private C: string; // (irrelevant)
- // public instance field
- public D: string
+ public D: string; // (irrelevant)
- // constructor
- constructor() {}
+ constructor() {} // (irrelevant)
- // public static method
- public static A(): void {}
+ public static A(): void {} // (irrelevant)
- // -> protected static field
- protected static: string
-}
+ public static E: string; // -> public static field
+};
+```
+
+#### Configuration: `{ "default": ["public-static-field", "static-field", "instance-field"] }`
-// { "default": ["public-static-field", "static-field", "instance-field"] }
+Note: This configuration does not apply to interfaces/type literals as accessibility and scope are not part of interfaces/type literals.
-// does not apply for interfaces/type literals (accessibility and scope are not part of interfaces/type literals)
+##### Incorrect examples
+```ts
class Foo {
- // -> public static field
- public static A: string;
+ private E: string; // -> instance field
- // -> * static field
- private static B: string;
- protected statis C:string;
- private static D: string;
+ private static B: string; // -> static field
+ protected static C: string; // -> static field
+ private static D: string; // -> static field
- // -> * instance field
- private E: string;
+ public static A: string; // -> public static field
}
+```
+Note: Public static fields should come first, followed by static fields and instance fields.
+
+```ts
const foo = class {
- // * method
- public T(): void {}
+ public T(): void {} // (irrelevant)
- // -> public static field
- public static A: string;
+ private static B: string; // -> static field
- // constructor
- constructor(){}
+ constructor() {} // (irrelevant)
- // -> * static field
- private static B: string;
- protected statis C:string;
- private static D: string;
+ private E: string; // -> instance field
- // -> * instance field
- private E: string;
-}
+ protected static C: string; // -> static field
+ private static D: string; // -> static field
+
+ public static A: string; // -> public static field
+};
```
-### classes
+Issue: Public static fields should come first, followed by static fields and instance fields.
-Disable using `never` or use one of the valid values (see default) to specify an order.
+##### Correct examples
-Examples of **incorrect** code for the `{ "classes": [...] }` option:
+```ts
+class Foo {
+ public static A: string; // -> public static field
+
+ private static B: string; // -> static field
+ protected static C: string; // -> static field
+ private static D: string; // -> static field
+
+ private E: string; // -> instance field
+}
+```
```ts
-// { "classes": ["method", "constructor", "field"] }
+const foo = class {
+ public static A: string; // -> public static field
-// does not apply for interfaces/type literals/class expressions.
+ constructor() {} // -> constructor
-class Foo {
- // -> field
- private C: string;
- public D: string;
- protected static E: string;
+ private static B: string; // -> static field
+ protected static C: string; // -> static field
+ private static D: string; // -> static field
- // -> constructor
- constructor() {}
+ private E: string; // -> instance field
- // -> method
- public static A(): void {}
- public B(): void {}
-}
+ public T(): void {} // -> method
+};
+```
-// { "classes": ["public-instance-method", "public-static-field"] }
+### Custom `classes` configuration
-// does not apply for interfaces/type literals/class expressions.
+Note: If this is not set, the `default` will automatically be applied to classes as well. If a `classes` configuration is provided, only this configuration will be used for `classes` (i.e. nothing will be merged with `default`).
-class Foo {
- // private instance field
- private C: string;
+Note: The configuration for `classes` does not apply to class expressions (use `classExpressions` for them).
- // public instance field
- public D: string;
+#### Configuration: `{ "classes": ["method", "constructor", "field"] }`
- // -> public static field
- public static E: string;
+##### Incorrect example
- // constructor
- constructor() {}
+```ts
+class Foo {
+ private C: string; // -> field
+ public D: string; // -> field
+ protected static E: string; // -> field
- // public static method
- public static A(): void {}
+ constructor() {} // -> constructor
- // -> public instance method
- public B(): void {}
+ public static A(): void {} // -> method
+ public B(): void {} // -> method
}
```
-Examples of **correct** code for `{ "classes": [...] }` option:
+##### Correct example
```ts
-// { "classes": ["method", "constructor", "field"] }
-
-// does not apply for interfaces/type literals/class expressions.
-
class Foo {
- // -> * method
- public static A(): void {}
- public B(): void {}
+ public static A(): void {} // -> method
+ public B(): void {} // -> method
- // -> constructor
- constructor() {}
+ constructor() {} // -> constructor
- // -> * field
- private C: string;
- public D: string;
- protected static E: string;
+ private C: string; // -> field
+ public D: string; // -> field
+ protected static E: string; // -> field
}
+```
-// { "classes": ["public-instance-method", "public-static-field"] }
+#### Configuration: `{ "classes": ["public-instance-method", "public-static-field"] }`
-// does not apply for interfaces/type literals/class expressions.
+##### Incorrect example
+```ts
class Foo {
- // private instance field
- private C: string;
+ private C: string; // (irrelevant)
- // public instance field
- public D: string;
+ public D: string; // (irrelevant)
- // -> public static field
- public static E: string;
+ public static E: string; // -> public static field
- // constructor
- constructor() {}
+ constructor() {} // (irrelevant)
- // public static method
- public static A(): void {}
+ public static A(): void {} // (irrelevant)
- // -> public instance method
- public B(): void {}
+ public B(): void {} // -> public instance method
}
```
-### classExpressions
-
-Disable using `never` or use one of the valid values (see default) to specify an order.
+##### Correct example
-Examples of **incorrect** code for the `{ "classExpressions": [...] }` option:
+Examples of **correct** code for `{ "classes": [...] }` option:
```ts
-// { "classExpressions": ["method", "constructor", "field"] }
+class Foo {
+ private C: string; // (irrelevant)
-// does not apply for interfaces/type literals/class expressions.
+ public D: string; // (irrelevant)
-const foo = class {
- // -> field
- private C: string;
- public D: string;
- protected static E: string;
+ public static E: string; // -> public static field
- // -> constructor
- constructor() {}
+ constructor() {} // (irrelevant)
- // -> method
- public static A(): void {}
- public B(): void {}
-};
+ public static A(): void {} // (irrelevant)
+
+ public B(): void {} // -> public instance method
+}
+```
-// { "classExpressions": ["public-instance-method", "public-static-field"] }
+### Custom `classExpressions` configuration
-// does not apply for interfaces/type literals/class expressions.
+Note: If this is not set, the `default` will automatically be applied to classes expressions as well. If a `classExpressions` configuration is provided, only this configuration will be used for `classExpressions` (i.e. nothing will be merged with `default`).
-const foo = class {
- // private instance field
- private C: string;
+Note: The configuration for `classExpressions` does not apply to classes (use `classes` for them).
- // public instance field
- public D: string;
+#### Configuration: `{ "classExpressions": ["method", "constructor", "field"] }`
- // -> public static field
- public static E: string;
+##### Incorrect example
- // constructor
- constructor() {}
+```ts
+const foo = class {
+ private C: string; // -> field
+ public D: string; // -> field
+ protected static E: string; // -> field
- // public static method
- public static A(): void {}
+ constructor() {} // -> constructor
- // -> public instance method
- public B(): void {}
+ public static A(): void {} // -> method
+ public B(): void {} // -> method
};
```
-Examples of **correct** code for `{ "classExpressions": [...] }` option:
+##### Correct example
```ts
-// { "classExpressions": ["method", "constructor", "field"] }
+const foo = class {
+ public static A(): void {} // -> method
+ public B(): void {} // -> method
+
+ constructor() {} // -> constructor
+
+ private C: string; // -> field
+ public D: string; // -> field
+ protected static E: string; // -> field
+};
+```
-// does not apply for interfaces/type literals/class expressions.
+#### Configuration: `{ "classExpressions": ["public-instance-method", "public-static-field"] }`
+##### Incorrect example
+
+```ts
const foo = class {
- // -> * method
- public static A(): void {}
- public B(): void {}
+ private C: string; // (irrelevant)
- // -> constructor
- constructor() {}
+ public D: string; // (irrelevant)
- // -> * field
- private C: string;
- public D: string;
- protected static E: string;
-};
+ public static E: string; // -> public static field
+
+ constructor() {} // (irrelevant)
+
+ public static A(): void {} // (irrelevant)
-// { "classExpressions": ["public-instance-method", "public-static-field"] }
+ public B(): void {} // -> public instance method
+};
+```
-// does not apply for interfaces/type literals/class expressions.
+##### Correct example
+```ts
const foo = class {
- // private instance field
- private C: string;
+ private C: string; // (irrelevant)
- // public instance field
- public D: string;
+ public D: string; // (irrelevant)
- // -> public static field
- public static E: string;
+ public B(): void {} // -> public instance method
- // constructor
- constructor() {}
+ public static E: string; // -> public static field
- // public static method
- public static A(): void {}
+ constructor() {} // (irrelevant)
- // -> public instance method
- public B(): void {}
+ public static A(): void {} // (irrelevant)
};
```
-### interfaces
+### Custom `interfaces` configuration
-Disable using `never` or use one of the following values to specify an order:
-`field`
-`constructor`
-`method`
+Note: If this is not set, the `default` will automatically be applied to classes expressions as well. If a `interfaces` configuration is provided, only this configuration will be used for `interfaces` (i.e. nothing will be merged with `default`).
-Examples of **incorrect** code for the `{ "interfaces": [...] }` option:
+Note: The configuration for `interfaces` only allows a limited set of member types: `field`, `constructor` and `method`.
-```ts
-// { "interfaces": ["method", "constructor", "field"] }
+Note: The configuration for `interfaces` does not apply to type literals (use `typeLiterals` for them).
+
+#### Configuration: `{ "interfaces": ["method", "constructor", "field"] }`
-// does not apply for classes/class expressions/type literals
+##### Incorrect example
+```ts
interface Foo {
- // -> field
- B: string;
+ B: string; // -> field
- // -> constructor
- new ();
+ new (); // -> constructor
- // -> method
- A(): void;
+ A(): void; // -> method
}
```
-Examples of **correct** code for the `{ "interfaces": [...] }` option:
+##### Correct example
```ts
-// { "interfaces": ["method", "constructor", "field"] }
-
-// does not apply for classes/class expressions/type literals
-
interface Foo {
- // -> method
- A(): void;
+ A(): void; // -> method
- // -> constructor
- new ();
+ new (); // -> constructor
- // -> field
- B: string;
+ B: string; // -> field
}
```
-### typeLiterals
+### Custom `typeLiterals` configuration
-Disable using `never` or use one of the valid values (see interfaces) to specify an order.
+Note: If this is not set, the `default` will automatically be applied to classes expressions as well. If a `typeLiterals` configuration is provided, only this configuration will be used for `typeLiterals` (i.e. nothing will be merged with `default`).
-Examples of **incorrect** code for the `{ "typeLiterals": [...] }` option:
+Note: The configuration for `typeLiterals` only allows a limited set of member types: `field`, `constructor` and `method`.
-```ts
-// { "typeLiterals": ["method", "constructor", "field"] }
+Note: The configuration for `typeLiterals` does not apply to type literals (use `interfaces` for them).
+
+#### Configuration: `{ "typeLiterals": ["method", "constructor", "field"] }`
-// does not apply for classes/class expressions/interfaces
+##### Incorrect example
+```ts
type Foo = {
- // -> field
- B: string;
+ B: string; // -> field
+
+ A(): void; // -> method
- // -> method
- A(): void;
+ new (); // -> constructor
};
```
-Examples of **correct** code for the `{ "typeLiterals": [...] }` option:
+##### Correct example
```ts
-// { "typeLiterals": ["method", "constructor", "field"] }
-
-// does not apply for classes/class expressions/interfaces
-
type Foo = {
- // -> method
- A(): void;
+ A(): void; // -> method
- // -> constructor
- new ();
+ new (); // -> constructor
- // -> field
- B: string;
+ B: string; // -> field
};
```

docs/rules/no-useless-constructor.md

@@ -23,7 +23,7 @@
Examples of **incorrect** code for this rule:
```js
-/*eslint no-useless-constructor: "error"*/
+/*eslint @typescript-eslint/no-useless-constructor: "error"*/
class A {
constructor() {}
@@ -39,7 +39,7 @@
Examples of **correct** code for this rule:
```js
-/*eslint no-useless-constructor: "error"*/
+/*eslint @typescript-eslint/no-useless-constructor: "error"*/
class A {}

docs/rules/unified-signatures.md

@@ -0,0 +1,33 @@
+# Warns for any two overloads that could be unified into one by using a union or an optional/rest parameter. (unified-signatures)
+
+Warns for any two overloads that could be unified into one by using a union or an optional/rest parameter.
+
+## Rule Details
+
+This rule aims to keep the source code as maintanable as posible by reducing the amount of overloads.
+
+Examples of **incorrect** code for this rule:
+
+```ts
+function f(x: number): void;
+function f(x: string): void;
+```
+
+```ts
+f(): void;
+f(...x: number[]): void;
+```
+
+Examples of **correct** code for this rule:
+
+```ts
+function f(x: number | string): void;
+```
+
+```ts
+function f(x?: ...number[]): void;
+```
+
+## Related to
+
+- TSLint: ['unified-signatures`](https://palantir.github.io/tslint/rules/unified-signatures/)

package.json

@@ -1,6 +1,6 @@
{
"name": "@typescript-eslint/eslint-plugin",
- "version": "1.4.2",
+ "version": "1.5.0",
"description": "TypeScript plugin for ESLint",
"keywords": [
"eslint",
@@ -35,8 +35,8 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
- "@typescript-eslint/parser": "1.4.2",
- "@typescript-eslint/typescript-estree": "1.4.2",
+ "@typescript-eslint/parser": "1.5.0",
+ "@typescript-eslint/typescript-estree": "1.5.0",
"requireindex": "^1.2.0",
"tsutils": "^3.7.0"
},
@@ -47,5 +47,5 @@
"eslint": "^5.0.0",
"typescript": "*"
},
- "gitHead": "2f4276fcb55b6a8ad6019c941648f44a434c9afa"
+ "gitHead": "c7db5942054e52d8e2cef3be662d98ffe3cc6454"
}

README.md

@@ -152,5 +152,6 @@
| [`@typescript-eslint/promise-function-async`](./docs/rules/promise-function-async.md) | Requires any function or method that returns a Promise to be marked async. (`promise-function-async` from TSLint) | :heavy_check_mark: | |
| [`@typescript-eslint/restrict-plus-operands`](./docs/rules/restrict-plus-operands.md) | When adding two variables, operands must both be of type number or of type string. (`restrict-plus-operands` from TSLint) | | |
| [`@typescript-eslint/type-annotation-spacing`](./docs/rules/type-annotation-spacing.md) | Require consistent spacing around type annotations (`typedef-whitespace` from TSLint) | :heavy_check_mark: | :wrench: |
+| [`@typescript-eslint/unified-signatures`](./docs/rules/unified-signatures.md) | Warns for any two overloads that could be unified into one. (`unified-signatures` from TSLint) | | |
<!-- end rule list -->