@definitelytyped/dtslint 0.0.95 → 0.0.97
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/README.md +1 -1
- package/bin/src/checks.d.ts +7 -0
- package/bin/src/checks.js +133 -0
- package/bin/src/checks.js.map +1 -0
- package/bin/src/index.d.ts +2 -0
- package/bin/src/index.js +233 -0
- package/bin/src/index.js.map +1 -0
- package/bin/src/lint.d.ts +6 -0
- package/bin/src/lint.js +194 -0
- package/bin/src/lint.js.map +1 -0
- package/bin/src/rules/dtHeaderRule.d.ts +6 -0
- package/bin/src/rules/dtHeaderRule.js +62 -0
- package/bin/src/rules/dtHeaderRule.js.map +1 -0
- package/bin/src/rules/expectRule.d.ts +23 -0
- package/bin/src/rules/expectRule.js +346 -0
- package/bin/src/rules/expectRule.js.map +1 -0
- package/bin/src/rules/exportJustNamespaceRule.d.ts +7 -0
- package/bin/src/rules/exportJustNamespaceRule.js +105 -0
- package/bin/src/rules/exportJustNamespaceRule.js.map +1 -0
- package/bin/src/rules/noAnyUnionRule.d.ts +7 -0
- package/bin/src/rules/noAnyUnionRule.js +49 -0
- package/bin/src/rules/noAnyUnionRule.js.map +1 -0
- package/bin/src/rules/noBadReferenceRule.d.ts +8 -0
- package/bin/src/rules/noBadReferenceRule.js +54 -0
- package/bin/src/rules/noBadReferenceRule.js.map +1 -0
- package/bin/src/rules/noConstEnumRule.d.ts +7 -0
- package/bin/src/rules/noConstEnumRule.js +51 -0
- package/bin/src/rules/noConstEnumRule.js.map +1 -0
- package/bin/src/rules/noDeadReferenceRule.d.ts +7 -0
- package/bin/src/rules/noDeadReferenceRule.js +62 -0
- package/bin/src/rules/noDeadReferenceRule.js.map +1 -0
- package/bin/src/rules/noDeclareCurrentPackageRule.d.ts +6 -0
- package/bin/src/rules/noDeclareCurrentPackageRule.js +56 -0
- package/bin/src/rules/noDeclareCurrentPackageRule.js.map +1 -0
- package/bin/src/rules/noImportDefaultOfExportEqualsRule.d.ts +7 -0
- package/bin/src/rules/noImportDefaultOfExportEqualsRule.js +71 -0
- package/bin/src/rules/noImportDefaultOfExportEqualsRule.js.map +1 -0
- package/bin/src/rules/noOutsideDependenciesRule.d.ts +6 -0
- package/bin/src/rules/noOutsideDependenciesRule.js +52 -0
- package/bin/src/rules/noOutsideDependenciesRule.js.map +1 -0
- package/bin/src/rules/noPaddingRule.d.ts +7 -0
- package/bin/src/rules/noPaddingRule.js +98 -0
- package/bin/src/rules/noPaddingRule.js.map +1 -0
- package/bin/src/rules/noRedundantJsdoc2Rule.d.ts +10 -0
- package/bin/src/rules/noRedundantJsdoc2Rule.js +245 -0
- package/bin/src/rules/noRedundantJsdoc2Rule.js.map +1 -0
- package/bin/src/rules/noRelativeImportInTestRule.d.ts +11 -0
- package/bin/src/rules/noRelativeImportInTestRule.js +60 -0
- package/bin/src/rules/noRelativeImportInTestRule.js.map +1 -0
- package/bin/src/rules/noSelfImportRule.d.ts +6 -0
- package/bin/src/rules/noSelfImportRule.js +51 -0
- package/bin/src/rules/noSelfImportRule.js.map +1 -0
- package/bin/src/rules/noSingleDeclareModuleRule.d.ts +7 -0
- package/bin/src/rules/noSingleDeclareModuleRule.js +68 -0
- package/bin/src/rules/noSingleDeclareModuleRule.js.map +1 -0
- package/bin/src/rules/noSingleElementTupleTypeRule.d.ts +6 -0
- package/bin/src/rules/noSingleElementTupleTypeRule.js +50 -0
- package/bin/src/rules/noSingleElementTupleTypeRule.js.map +1 -0
- package/bin/src/rules/noUnnecessaryGenericsRule.d.ts +8 -0
- package/bin/src/rules/noUnnecessaryGenericsRule.js +130 -0
- package/bin/src/rules/noUnnecessaryGenericsRule.js.map +1 -0
- package/bin/src/rules/noUselessFilesRule.d.ts +7 -0
- package/bin/src/rules/noUselessFilesRule.js +46 -0
- package/bin/src/rules/noUselessFilesRule.js.map +1 -0
- package/bin/src/rules/npmNamingRule.d.ts +21 -0
- package/bin/src/rules/npmNamingRule.js +291 -0
- package/bin/src/rules/npmNamingRule.js.map +1 -0
- package/bin/src/rules/preferDeclareFunctionRule.d.ts +7 -0
- package/bin/src/rules/preferDeclareFunctionRule.js +52 -0
- package/bin/src/rules/preferDeclareFunctionRule.js.map +1 -0
- package/bin/src/rules/redundantUndefinedRule.d.ts +6 -0
- package/bin/src/rules/redundantUndefinedRule.js +55 -0
- package/bin/src/rules/redundantUndefinedRule.js.map +1 -0
- package/bin/src/rules/strictExportDeclareModifiersRule.d.ts +6 -0
- package/bin/src/rules/strictExportDeclareModifiersRule.js +162 -0
- package/bin/src/rules/strictExportDeclareModifiersRule.js.map +1 -0
- package/bin/src/rules/trimFileRule.d.ts +8 -0
- package/bin/src/rules/trimFileRule.js +51 -0
- package/bin/src/rules/trimFileRule.js.map +1 -0
- package/bin/src/rules/voidReturnRule.d.ts +7 -0
- package/bin/src/rules/voidReturnRule.js +85 -0
- package/bin/src/rules/voidReturnRule.js.map +1 -0
- package/bin/src/suggestions.d.ts +12 -0
- package/bin/src/suggestions.js +62 -0
- package/bin/src/suggestions.js.map +1 -0
- package/bin/src/updateConfig.d.ts +1 -0
- package/bin/src/updateConfig.js +220 -0
- package/bin/src/updateConfig.js.map +1 -0
- package/bin/src/util.d.ts +12 -0
- package/bin/src/util.js +130 -0
- package/bin/src/util.js.map +1 -0
- package/bin/tsconfig.tsbuildinfo +1 -0
- package/dtslint-expect-only.json +1 -1
- package/dtslint.json +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Rule = void 0;
|
|
23
|
+
const Lint = __importStar(require("tslint"));
|
|
24
|
+
const util_1 = require("../util");
|
|
25
|
+
class Rule extends Lint.Rules.AbstractRule {
|
|
26
|
+
apply(sourceFile) {
|
|
27
|
+
return this.applyWithFunction(sourceFile, walk);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.Rule = Rule;
|
|
31
|
+
Rule.metadata = {
|
|
32
|
+
ruleName: "no-bad-reference",
|
|
33
|
+
description: 'Forbid <reference path="../etc"/> in any file, and forbid <reference path> in test files.',
|
|
34
|
+
optionsDescription: "Not configurable.",
|
|
35
|
+
options: null,
|
|
36
|
+
type: "functionality",
|
|
37
|
+
typescriptOnly: true
|
|
38
|
+
};
|
|
39
|
+
Rule.FAILURE_STRING = util_1.failure(Rule.metadata.ruleName, "Don't use <reference path> to reference another package. Use an import or <reference types> instead.");
|
|
40
|
+
Rule.FAILURE_STRING_REFERENCE_IN_TEST = util_1.failure(Rule.metadata.ruleName, "Don't use <reference path> in test files. Use <reference types> or include the file in 'tsconfig.json'.");
|
|
41
|
+
function walk(ctx) {
|
|
42
|
+
const { sourceFile } = ctx;
|
|
43
|
+
for (const ref of sourceFile.referencedFiles) {
|
|
44
|
+
if (sourceFile.isDeclarationFile) {
|
|
45
|
+
if (ref.fileName.startsWith("..")) {
|
|
46
|
+
ctx.addFailure(ref.pos, ref.end, Rule.FAILURE_STRING);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
ctx.addFailure(ref.pos, ref.end, Rule.FAILURE_STRING_REFERENCE_IN_TEST);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=noBadReferenceRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noBadReferenceRule.js","sourceRoot":"","sources":["../../../src/rules/noBadReferenceRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAG/B,kCAAkC;AAElC,MAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC,YAAY;IAmB/C,KAAK,CAAC,UAAyB;QAC7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;;AArBH,oBAsBC;AArBQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,kBAAkB;IAC5B,WAAW,EAAE,2FAA2F;IACxG,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,IAAI;CACrB,CAAC;AAEK,mBAAc,GAAG,cAAO,CAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,sGAAsG,CACvG,CAAC;AACK,qCAAgC,GAAG,cAAO,CAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,yGAAyG,CAC1G,CAAC;AAOJ,SAAS,IAAI,CAAC,GAA2B;IACvC,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,eAAe,EAAE;QAC5C,IAAI,UAAU,CAAC,iBAAiB,EAAE;YAChC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACjC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;aACvD;SACF;aAAM;YACL,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;SACzE;KACF;AACH,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Rule = void 0;
|
|
23
|
+
const Lint = __importStar(require("tslint"));
|
|
24
|
+
const ts = __importStar(require("typescript"));
|
|
25
|
+
const util_1 = require("../util");
|
|
26
|
+
class Rule extends Lint.Rules.AbstractRule {
|
|
27
|
+
apply(sourceFile) {
|
|
28
|
+
return this.applyWithFunction(sourceFile, walk);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.Rule = Rule;
|
|
32
|
+
Rule.metadata = {
|
|
33
|
+
ruleName: "no-const-enum",
|
|
34
|
+
description: "Forbid `const enum`",
|
|
35
|
+
optionsDescription: "Not configurable.",
|
|
36
|
+
options: null,
|
|
37
|
+
type: "functionality",
|
|
38
|
+
typescriptOnly: true
|
|
39
|
+
};
|
|
40
|
+
Rule.FAILURE_STRING = util_1.failure(Rule.metadata.ruleName, "Use of `const enum`s is forbidden.");
|
|
41
|
+
function walk(ctx) {
|
|
42
|
+
ctx.sourceFile.forEachChild(function recur(node) {
|
|
43
|
+
if (ts.isEnumDeclaration(node) &&
|
|
44
|
+
node.modifiers &&
|
|
45
|
+
node.modifiers.some(m => m.kind === ts.SyntaxKind.ConstKeyword)) {
|
|
46
|
+
ctx.addFailureAtNode(node.name, Rule.FAILURE_STRING);
|
|
47
|
+
}
|
|
48
|
+
node.forEachChild(recur);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=noConstEnumRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noConstEnumRule.js","sourceRoot":"","sources":["../../../src/rules/noConstEnumRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+CAAiC;AAEjC,kCAAkC;AAElC,MAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC,YAAY;IAY/C,KAAK,CAAC,UAAyB;QAC7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;;AAdH,oBAeC;AAdQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,eAAe;IACzB,WAAW,EAAE,qBAAqB;IAClC,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,IAAI;CACrB,CAAC;AAEK,mBAAc,GAAG,cAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,oCAAoC,CAAC,CAAC;AAOhG,SAAS,IAAI,CAAC,GAA2B;IACvC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,KAAK,CAAC,IAAI;QAC7C,IACE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAC/D;YACA,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SACtD;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Rule = void 0;
|
|
23
|
+
const Lint = __importStar(require("tslint"));
|
|
24
|
+
const util_1 = require("../util");
|
|
25
|
+
class Rule extends Lint.Rules.AbstractRule {
|
|
26
|
+
apply(sourceFile) {
|
|
27
|
+
return this.applyWithFunction(sourceFile, walk);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.Rule = Rule;
|
|
31
|
+
Rule.metadata = {
|
|
32
|
+
ruleName: "no-dead-reference",
|
|
33
|
+
description: "Ensures that all `/// <reference>` comments go at the top of the file.",
|
|
34
|
+
rationale: "style",
|
|
35
|
+
optionsDescription: "Not configurable.",
|
|
36
|
+
options: null,
|
|
37
|
+
type: "functionality",
|
|
38
|
+
typescriptOnly: true
|
|
39
|
+
};
|
|
40
|
+
Rule.FAILURE_STRING = util_1.failure(Rule.metadata.ruleName, "`/// <reference>` directive must be at top of file to take effect.");
|
|
41
|
+
function walk(ctx) {
|
|
42
|
+
const { sourceFile: { statements, text } } = ctx;
|
|
43
|
+
if (!statements.length) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// 'm' flag makes it multiline, so `^` matches the beginning of any line.
|
|
47
|
+
// 'g' flag lets us set rgx.lastIndex
|
|
48
|
+
const rgx = /^\s*(\/\/\/ <reference)/gm;
|
|
49
|
+
// Start search at the first statement. (`/// <reference>` before that is OK.)
|
|
50
|
+
rgx.lastIndex = statements[0].getStart();
|
|
51
|
+
// eslint-disable-next-line no-constant-condition
|
|
52
|
+
while (true) {
|
|
53
|
+
const match = rgx.exec(text);
|
|
54
|
+
if (match === null) {
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
const length = match[1].length;
|
|
58
|
+
const start = match.index + match[0].length - length;
|
|
59
|
+
ctx.addFailureAt(start, length, Rule.FAILURE_STRING);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=noDeadReferenceRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noDeadReferenceRule.js","sourceRoot":"","sources":["../../../src/rules/noDeadReferenceRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAG/B,kCAAkC;AAElC,MAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC,YAAY;IAgB/C,KAAK,CAAC,UAAyB;QAC7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;;AAlBH,oBAmBC;AAlBQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE,wEAAwE;IACrF,SAAS,EAAE,OAAO;IAClB,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,IAAI;CACrB,CAAC;AAEK,mBAAc,GAAG,cAAO,CAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,oEAAoE,CACrE,CAAC;AAOJ,SAAS,IAAI,CAAC,GAA2B;IACvC,MAAM,EACJ,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EACjC,GAAG,GAAG,CAAC;IACR,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QACtB,OAAO;KACR;IAED,yEAAyE;IACzE,qCAAqC;IACrC,MAAM,GAAG,GAAG,2BAA2B,CAAC;IAExC,8EAA8E;IAC9E,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAEzC,iDAAiD;IACjD,OAAO,IAAI,EAAE;QACX,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,MAAM;SACP;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QACrD,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACtD;AACH,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Rule = void 0;
|
|
23
|
+
const Lint = __importStar(require("tslint"));
|
|
24
|
+
const ts = __importStar(require("typescript"));
|
|
25
|
+
const util_1 = require("../util");
|
|
26
|
+
class Rule extends Lint.Rules.TypedRule {
|
|
27
|
+
applyWithProgram(sourceFile, program) {
|
|
28
|
+
if (!sourceFile.isDeclarationFile) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
const packageName = util_1.getCommonDirectoryName(program.getRootFileNames());
|
|
32
|
+
return this.applyWithFunction(sourceFile, ctx => walk(ctx, packageName));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.Rule = Rule;
|
|
36
|
+
Rule.metadata = {
|
|
37
|
+
ruleName: "no-declare-current-package",
|
|
38
|
+
description: "Don't use an ambient module declaration of the current package; use a normal module.",
|
|
39
|
+
optionsDescription: "Not configurable.",
|
|
40
|
+
options: null,
|
|
41
|
+
type: "functionality",
|
|
42
|
+
typescriptOnly: true
|
|
43
|
+
};
|
|
44
|
+
function walk(ctx, packageName) {
|
|
45
|
+
for (const statement of ctx.sourceFile.statements) {
|
|
46
|
+
if (ts.isModuleDeclaration(statement) && ts.isStringLiteral(statement.name)) {
|
|
47
|
+
const { text } = statement.name;
|
|
48
|
+
if (text === packageName || text.startsWith(`${packageName}/`)) {
|
|
49
|
+
const preferred = text === packageName ? '"index.d.ts"' : `"${text}.d.ts" or "${text}/index.d.ts`;
|
|
50
|
+
ctx.addFailureAtNode(statement.name, util_1.failure(Rule.metadata.ruleName, `Instead of declaring a module with \`declare module "${text}"\`, ` +
|
|
51
|
+
`write its contents in directly in ${preferred}.`));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=noDeclareCurrentPackageRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noDeclareCurrentPackageRule.js","sourceRoot":"","sources":["../../../src/rules/noDeclareCurrentPackageRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+CAAiC;AAEjC,kCAA0D;AAE1D,MAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC,SAAS;IAU5C,gBAAgB,CAAC,UAAyB,EAAE,OAAmB;QAC7D,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;YACjC,OAAO,EAAE,CAAC;SACX;QAED,MAAM,WAAW,GAAG,6BAAsB,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3E,CAAC;;AAjBH,oBAkBC;AAjBQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,4BAA4B;IACtC,WAAW,EAAE,sFAAsF;IACnG,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,IAAI;CACrB,CAAC;AAYJ,SAAS,IAAI,CAAC,GAA2B,EAAE,WAAmB;IAC5D,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE;QACjD,IAAI,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;YAChC,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE;gBAC9D,MAAM,SAAS,GAAG,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,cAAc,IAAI,aAAa,CAAC;gBAClG,GAAG,CAAC,gBAAgB,CAClB,SAAS,CAAC,IAAI,EACd,cAAO,CACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,wDAAwD,IAAI,OAAO;oBACjE,qCAAqC,SAAS,GAAG,CACpD,CACF,CAAC;aACH;SACF;KACF;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as Lint from "tslint";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
export declare class Rule extends Lint.Rules.TypedRule {
|
|
4
|
+
static metadata: Lint.IRuleMetadata;
|
|
5
|
+
static FAILURE_STRING(importName: string, moduleName: string): string;
|
|
6
|
+
applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Rule = void 0;
|
|
23
|
+
const Lint = __importStar(require("tslint"));
|
|
24
|
+
const ts = __importStar(require("typescript"));
|
|
25
|
+
const util_1 = require("../util");
|
|
26
|
+
class Rule extends Lint.Rules.TypedRule {
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
28
|
+
static FAILURE_STRING(importName, moduleName) {
|
|
29
|
+
return util_1.failure(Rule.metadata.ruleName, `The module ${moduleName} uses \`export = \`. Import with \`import ${importName} = require(${moduleName})\`.`);
|
|
30
|
+
}
|
|
31
|
+
applyWithProgram(sourceFile, program) {
|
|
32
|
+
return this.applyWithFunction(sourceFile, ctx => walk(ctx, program.getTypeChecker()));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.Rule = Rule;
|
|
36
|
+
Rule.metadata = {
|
|
37
|
+
ruleName: "no-import-default-of-export-equals",
|
|
38
|
+
description: "Forbid a default import to reference an `export =` module.",
|
|
39
|
+
optionsDescription: "Not configurable.",
|
|
40
|
+
options: null,
|
|
41
|
+
type: "functionality",
|
|
42
|
+
typescriptOnly: true
|
|
43
|
+
};
|
|
44
|
+
function walk(ctx, checker) {
|
|
45
|
+
util_1.eachModuleStatement(ctx.sourceFile, statement => {
|
|
46
|
+
if (!ts.isImportDeclaration(statement)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const defaultName = statement.importClause && statement.importClause.name;
|
|
50
|
+
if (!defaultName) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const sym = checker.getSymbolAtLocation(statement.moduleSpecifier);
|
|
54
|
+
if (sym &&
|
|
55
|
+
sym.declarations &&
|
|
56
|
+
sym.declarations.some(d => {
|
|
57
|
+
const statements = getStatements(d);
|
|
58
|
+
return statements !== undefined && statements.some(s => ts.isExportAssignment(s) && !!s.isExportEquals);
|
|
59
|
+
})) {
|
|
60
|
+
ctx.addFailureAtNode(defaultName, Rule.FAILURE_STRING(defaultName.text, statement.moduleSpecifier.getText()));
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function getStatements(decl) {
|
|
65
|
+
return ts.isSourceFile(decl)
|
|
66
|
+
? decl.statements
|
|
67
|
+
: ts.isModuleDeclaration(decl)
|
|
68
|
+
? util_1.getModuleDeclarationStatements(decl)
|
|
69
|
+
: undefined;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=noImportDefaultOfExportEqualsRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noImportDefaultOfExportEqualsRule.js","sourceRoot":"","sources":["../../../src/rules/noImportDefaultOfExportEqualsRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+CAAiC;AAEjC,kCAAuF;AAEvF,MAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC,SAAS;IAU5C,gEAAgE;IAChE,MAAM,CAAC,cAAc,CAAC,UAAkB,EAAE,UAAkB;QAC1D,OAAO,cAAO,CACZ,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,cAAc,UAAU,6CAA6C,UAAU,cAAc,UAAU,MAAM,CAC9G,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,UAAyB,EAAE,OAAmB;QAC7D,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;;AApBH,oBAqBC;AApBQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,oCAAoC;IAC9C,WAAW,EAAE,4DAA4D;IACzE,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,IAAI;CACrB,CAAC;AAeJ,SAAS,IAAI,CAAC,GAA2B,EAAE,OAAuB;IAChE,0BAAmB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE;QAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE;YACtC,OAAO;SACR;QACD,MAAM,WAAW,GAAG,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;QAC1E,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACnE,IACE,GAAG;YACH,GAAG,CAAC,YAAY;YAChB,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACxB,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBACpC,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC1G,CAAC,CAAC,EACF;YACA,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;SAC/G;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,IAAoB;IACzC,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,UAAU;QACjB,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,qCAA8B,CAAC,IAAI,CAAC;YACtC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Rule = void 0;
|
|
23
|
+
const Lint = __importStar(require("tslint"));
|
|
24
|
+
const util_1 = require("../util");
|
|
25
|
+
class Rule extends Lint.Rules.TypedRule {
|
|
26
|
+
applyWithProgram(_sourceFile, program) {
|
|
27
|
+
if (seenPrograms.has(program)) {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
seenPrograms.add(program);
|
|
31
|
+
const failures = [];
|
|
32
|
+
for (const sourceFile of program.getSourceFiles()) {
|
|
33
|
+
const { fileName } = sourceFile;
|
|
34
|
+
if (fileName.includes("/DefinitelyTyped/node_modules/") && !program.isSourceFileDefaultLibrary(sourceFile)) {
|
|
35
|
+
const msg = util_1.failure(Rule.metadata.ruleName, `File ${fileName} comes from a \`node_modules\` but is not declared in this type's \`package.json\`. `);
|
|
36
|
+
failures.push(new Lint.RuleFailure(sourceFile, 0, 1, msg, Rule.metadata.ruleName));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return failures;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.Rule = Rule;
|
|
43
|
+
Rule.metadata = {
|
|
44
|
+
ruleName: "no-outside-dependencies",
|
|
45
|
+
description: "Don't import things in `DefinitelyTyped/node_modules`.",
|
|
46
|
+
optionsDescription: "Not configurable.",
|
|
47
|
+
options: null,
|
|
48
|
+
type: "functionality",
|
|
49
|
+
typescriptOnly: true
|
|
50
|
+
};
|
|
51
|
+
const seenPrograms = new WeakSet();
|
|
52
|
+
//# sourceMappingURL=noOutsideDependenciesRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noOutsideDependenciesRule.js","sourceRoot":"","sources":["../../../src/rules/noOutsideDependenciesRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAG/B,kCAAkC;AAElC,MAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC,SAAS;IAU5C,gBAAgB,CAAC,WAA0B,EAAE,OAAmB;QAC9D,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC7B,OAAO,EAAE,CAAC;SACX;QACD,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE1B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,EAAE;YACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;YAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,UAAU,CAAC,EAAE;gBAC1G,MAAM,GAAG,GAAG,cAAO,CACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,QAAQ,QAAQ,sFAAsF,CACvG,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;aACpF;SACF;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;;AA5BH,oBA6BC;AA5BQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,yBAAyB;IACnC,WAAW,EAAE,wDAAwD;IACrE,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,IAAI;CACrB,CAAC;AAuBJ,MAAM,YAAY,GAAG,IAAI,OAAO,EAAc,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as Lint from "tslint";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
export declare class Rule extends Lint.Rules.AbstractRule {
|
|
4
|
+
static metadata: Lint.IRuleMetadata;
|
|
5
|
+
static FAILURE_STRING(kind: "before" | "after", token: ts.SyntaxKind): string;
|
|
6
|
+
apply(sourceFile: ts.SourceFile): Lint.RuleFailure[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.Rule = void 0;
|
|
23
|
+
const Lint = __importStar(require("tslint"));
|
|
24
|
+
const ts = __importStar(require("typescript"));
|
|
25
|
+
const util_1 = require("../util");
|
|
26
|
+
class Rule extends Lint.Rules.AbstractRule {
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
28
|
+
static FAILURE_STRING(kind, token) {
|
|
29
|
+
return util_1.failure(Rule.metadata.ruleName, `Don't leave a blank line ${kind} '${ts.tokenToString(token)}'.`);
|
|
30
|
+
}
|
|
31
|
+
apply(sourceFile) {
|
|
32
|
+
return this.applyWithFunction(sourceFile, walk);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.Rule = Rule;
|
|
36
|
+
Rule.metadata = {
|
|
37
|
+
ruleName: "no-padding",
|
|
38
|
+
description: "Forbids a blank line after `(` / `[` / `{`, or before `)` / `]` / `}`.",
|
|
39
|
+
optionsDescription: "Not configurable.",
|
|
40
|
+
options: null,
|
|
41
|
+
type: "style",
|
|
42
|
+
typescriptOnly: true
|
|
43
|
+
};
|
|
44
|
+
function walk(ctx) {
|
|
45
|
+
const { sourceFile } = ctx;
|
|
46
|
+
function fail(kind, child) {
|
|
47
|
+
ctx.addFailureAtNode(child, Rule.FAILURE_STRING(kind, child.kind));
|
|
48
|
+
}
|
|
49
|
+
sourceFile.forEachChild(function cb(node) {
|
|
50
|
+
const children = node.getChildren();
|
|
51
|
+
for (let i = 0; i < children.length; i++) {
|
|
52
|
+
const child = children[i];
|
|
53
|
+
switch (child.kind) {
|
|
54
|
+
case ts.SyntaxKind.OpenParenToken:
|
|
55
|
+
case ts.SyntaxKind.OpenBracketToken:
|
|
56
|
+
case ts.SyntaxKind.OpenBraceToken:
|
|
57
|
+
if (i < children.length - 1 && blankLineInBetween(child.getEnd(), children[i + 1].getStart())) {
|
|
58
|
+
fail("after", child);
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
case ts.SyntaxKind.CloseParenToken:
|
|
62
|
+
case ts.SyntaxKind.CloseBracketToken:
|
|
63
|
+
case ts.SyntaxKind.CloseBraceToken:
|
|
64
|
+
if (i > 0 && blankLineInBetween(child.getStart() - 1, children[i - 1].getEnd() - 1)) {
|
|
65
|
+
fail("before", child);
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
default:
|
|
69
|
+
cb(child);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
// Looks for two newlines (with nothing else in between besides whitespace)
|
|
74
|
+
function blankLineInBetween(start, end) {
|
|
75
|
+
const step = start < end ? 1 : -1;
|
|
76
|
+
let seenLine = false;
|
|
77
|
+
for (let i = start; i !== end; i += step) {
|
|
78
|
+
switch (sourceFile.text[i]) {
|
|
79
|
+
case "\n":
|
|
80
|
+
if (seenLine) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
seenLine = true;
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
case " ":
|
|
88
|
+
case "\t":
|
|
89
|
+
case "\r":
|
|
90
|
+
break;
|
|
91
|
+
default:
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=noPaddingRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noPaddingRule.js","sourceRoot":"","sources":["../../../src/rules/noPaddingRule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as Lint from "tslint";
|
|
2
|
+
import * as ts from "typescript";
|
|
3
|
+
export declare class Rule extends Lint.Rules.AbstractRule {
|
|
4
|
+
static metadata: Lint.IRuleMetadata;
|
|
5
|
+
static readonly FAILURE_STRING_REDUNDANT_TYPE = "Type annotation in JSDoc is redundant in TypeScript code.";
|
|
6
|
+
static readonly FAILURE_STRING_EMPTY = "JSDoc comment is empty.";
|
|
7
|
+
static FAILURE_STRING_REDUNDANT_TAG(tagName: string): string;
|
|
8
|
+
static FAILURE_STRING_NO_COMMENT(tagName: string): string;
|
|
9
|
+
apply(sourceFile: ts.SourceFile): Lint.RuleFailure[];
|
|
10
|
+
}
|