@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.
Files changed (95) hide show
  1. package/README.md +1 -1
  2. package/bin/src/checks.d.ts +7 -0
  3. package/bin/src/checks.js +133 -0
  4. package/bin/src/checks.js.map +1 -0
  5. package/bin/src/index.d.ts +2 -0
  6. package/bin/src/index.js +233 -0
  7. package/bin/src/index.js.map +1 -0
  8. package/bin/src/lint.d.ts +6 -0
  9. package/bin/src/lint.js +194 -0
  10. package/bin/src/lint.js.map +1 -0
  11. package/bin/src/rules/dtHeaderRule.d.ts +6 -0
  12. package/bin/src/rules/dtHeaderRule.js +62 -0
  13. package/bin/src/rules/dtHeaderRule.js.map +1 -0
  14. package/bin/src/rules/expectRule.d.ts +23 -0
  15. package/bin/src/rules/expectRule.js +346 -0
  16. package/bin/src/rules/expectRule.js.map +1 -0
  17. package/bin/src/rules/exportJustNamespaceRule.d.ts +7 -0
  18. package/bin/src/rules/exportJustNamespaceRule.js +105 -0
  19. package/bin/src/rules/exportJustNamespaceRule.js.map +1 -0
  20. package/bin/src/rules/noAnyUnionRule.d.ts +7 -0
  21. package/bin/src/rules/noAnyUnionRule.js +49 -0
  22. package/bin/src/rules/noAnyUnionRule.js.map +1 -0
  23. package/bin/src/rules/noBadReferenceRule.d.ts +8 -0
  24. package/bin/src/rules/noBadReferenceRule.js +54 -0
  25. package/bin/src/rules/noBadReferenceRule.js.map +1 -0
  26. package/bin/src/rules/noConstEnumRule.d.ts +7 -0
  27. package/bin/src/rules/noConstEnumRule.js +51 -0
  28. package/bin/src/rules/noConstEnumRule.js.map +1 -0
  29. package/bin/src/rules/noDeadReferenceRule.d.ts +7 -0
  30. package/bin/src/rules/noDeadReferenceRule.js +62 -0
  31. package/bin/src/rules/noDeadReferenceRule.js.map +1 -0
  32. package/bin/src/rules/noDeclareCurrentPackageRule.d.ts +6 -0
  33. package/bin/src/rules/noDeclareCurrentPackageRule.js +56 -0
  34. package/bin/src/rules/noDeclareCurrentPackageRule.js.map +1 -0
  35. package/bin/src/rules/noImportDefaultOfExportEqualsRule.d.ts +7 -0
  36. package/bin/src/rules/noImportDefaultOfExportEqualsRule.js +71 -0
  37. package/bin/src/rules/noImportDefaultOfExportEqualsRule.js.map +1 -0
  38. package/bin/src/rules/noOutsideDependenciesRule.d.ts +6 -0
  39. package/bin/src/rules/noOutsideDependenciesRule.js +52 -0
  40. package/bin/src/rules/noOutsideDependenciesRule.js.map +1 -0
  41. package/bin/src/rules/noPaddingRule.d.ts +7 -0
  42. package/bin/src/rules/noPaddingRule.js +98 -0
  43. package/bin/src/rules/noPaddingRule.js.map +1 -0
  44. package/bin/src/rules/noRedundantJsdoc2Rule.d.ts +10 -0
  45. package/bin/src/rules/noRedundantJsdoc2Rule.js +245 -0
  46. package/bin/src/rules/noRedundantJsdoc2Rule.js.map +1 -0
  47. package/bin/src/rules/noRelativeImportInTestRule.d.ts +11 -0
  48. package/bin/src/rules/noRelativeImportInTestRule.js +60 -0
  49. package/bin/src/rules/noRelativeImportInTestRule.js.map +1 -0
  50. package/bin/src/rules/noSelfImportRule.d.ts +6 -0
  51. package/bin/src/rules/noSelfImportRule.js +51 -0
  52. package/bin/src/rules/noSelfImportRule.js.map +1 -0
  53. package/bin/src/rules/noSingleDeclareModuleRule.d.ts +7 -0
  54. package/bin/src/rules/noSingleDeclareModuleRule.js +68 -0
  55. package/bin/src/rules/noSingleDeclareModuleRule.js.map +1 -0
  56. package/bin/src/rules/noSingleElementTupleTypeRule.d.ts +6 -0
  57. package/bin/src/rules/noSingleElementTupleTypeRule.js +50 -0
  58. package/bin/src/rules/noSingleElementTupleTypeRule.js.map +1 -0
  59. package/bin/src/rules/noUnnecessaryGenericsRule.d.ts +8 -0
  60. package/bin/src/rules/noUnnecessaryGenericsRule.js +130 -0
  61. package/bin/src/rules/noUnnecessaryGenericsRule.js.map +1 -0
  62. package/bin/src/rules/noUselessFilesRule.d.ts +7 -0
  63. package/bin/src/rules/noUselessFilesRule.js +46 -0
  64. package/bin/src/rules/noUselessFilesRule.js.map +1 -0
  65. package/bin/src/rules/npmNamingRule.d.ts +21 -0
  66. package/bin/src/rules/npmNamingRule.js +291 -0
  67. package/bin/src/rules/npmNamingRule.js.map +1 -0
  68. package/bin/src/rules/preferDeclareFunctionRule.d.ts +7 -0
  69. package/bin/src/rules/preferDeclareFunctionRule.js +52 -0
  70. package/bin/src/rules/preferDeclareFunctionRule.js.map +1 -0
  71. package/bin/src/rules/redundantUndefinedRule.d.ts +6 -0
  72. package/bin/src/rules/redundantUndefinedRule.js +55 -0
  73. package/bin/src/rules/redundantUndefinedRule.js.map +1 -0
  74. package/bin/src/rules/strictExportDeclareModifiersRule.d.ts +6 -0
  75. package/bin/src/rules/strictExportDeclareModifiersRule.js +162 -0
  76. package/bin/src/rules/strictExportDeclareModifiersRule.js.map +1 -0
  77. package/bin/src/rules/trimFileRule.d.ts +8 -0
  78. package/bin/src/rules/trimFileRule.js +51 -0
  79. package/bin/src/rules/trimFileRule.js.map +1 -0
  80. package/bin/src/rules/voidReturnRule.d.ts +7 -0
  81. package/bin/src/rules/voidReturnRule.js +85 -0
  82. package/bin/src/rules/voidReturnRule.js.map +1 -0
  83. package/bin/src/suggestions.d.ts +12 -0
  84. package/bin/src/suggestions.js +62 -0
  85. package/bin/src/suggestions.js.map +1 -0
  86. package/bin/src/updateConfig.d.ts +1 -0
  87. package/bin/src/updateConfig.js +220 -0
  88. package/bin/src/updateConfig.js.map +1 -0
  89. package/bin/src/util.d.ts +12 -0
  90. package/bin/src/util.js +130 -0
  91. package/bin/src/util.js.map +1 -0
  92. package/bin/tsconfig.tsbuildinfo +1 -0
  93. package/dtslint-expect-only.json +1 -1
  94. package/dtslint.json +1 -1
  95. package/package.json +7 -6
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ // Fixes temporarily moved here until they are published by tslint.
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
6
+ }) : (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ o[k2] = m[k];
9
+ }));
10
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
11
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
12
+ }) : function(o, v) {
13
+ o["default"] = v;
14
+ });
15
+ var __importStar = (this && this.__importStar) || function (mod) {
16
+ if (mod && mod.__esModule) return mod;
17
+ var result = {};
18
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
19
+ __setModuleDefault(result, mod);
20
+ return result;
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.Rule = void 0;
24
+ const assert = require("assert");
25
+ const Lint = __importStar(require("tslint"));
26
+ const ts = __importStar(require("typescript"));
27
+ class Rule extends Lint.Rules.AbstractRule {
28
+ // eslint-disable-next-line @typescript-eslint/naming-convention
29
+ static FAILURE_STRING_REDUNDANT_TAG(tagName) {
30
+ return `JSDoc tag '@${tagName}' is redundant in TypeScript code.`;
31
+ }
32
+ // eslint-disable-next-line @typescript-eslint/naming-convention
33
+ static FAILURE_STRING_NO_COMMENT(tagName) {
34
+ return `'@${tagName}' is redundant in TypeScript code if it has no description.`;
35
+ }
36
+ apply(sourceFile) {
37
+ return this.applyWithFunction(sourceFile, walk);
38
+ }
39
+ }
40
+ exports.Rule = Rule;
41
+ Rule.metadata = {
42
+ ruleName: "no-redundant-jsdoc",
43
+ description: "Forbids JSDoc which duplicates TypeScript functionality.",
44
+ optionsDescription: "Not configurable.",
45
+ options: null,
46
+ optionExamples: [true],
47
+ type: "style",
48
+ typescriptOnly: true
49
+ };
50
+ Rule.FAILURE_STRING_REDUNDANT_TYPE = "Type annotation in JSDoc is redundant in TypeScript code.";
51
+ Rule.FAILURE_STRING_EMPTY = "JSDoc comment is empty.";
52
+ function walk(ctx) {
53
+ const { sourceFile } = ctx;
54
+ // Intentionally exclude EndOfFileToken: it can have JSDoc, but it is only relevant in JavaScript files
55
+ return sourceFile.statements.forEach(function cb(node) {
56
+ if (node.kind !== ts.SyntaxKind.EndOfFileToken && ts.hasJSDocNodes(node)) {
57
+ for (const jd of node.jsDoc) {
58
+ const { tags } = jd;
59
+ if (tags === undefined || tags.length === 0) {
60
+ if (jd.comment === undefined) {
61
+ ctx.addFailureAtNode(jd, Rule.FAILURE_STRING_EMPTY, Lint.Replacement.deleteFromTo(jd.getStart(sourceFile), jd.getEnd()));
62
+ }
63
+ }
64
+ else {
65
+ for (const tag of tags) {
66
+ checkTag(tag);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ return ts.forEachChild(node, cb);
72
+ });
73
+ function checkTag(tag) {
74
+ const jsdocSeeTag = ts.SyntaxKind.JSDocSeeTag || 0;
75
+ const jsdocDeprecatedTag = ts.SyntaxKind.JSDocDeprecatedTag || 0;
76
+ switch (tag.kind) {
77
+ case jsdocSeeTag:
78
+ case jsdocDeprecatedTag:
79
+ case ts.SyntaxKind.JSDocAuthorTag:
80
+ // @deprecated and @see always have meaning
81
+ break;
82
+ case ts.SyntaxKind.JSDocTag: {
83
+ const { tagName } = tag;
84
+ const { text } = tagName;
85
+ // Allow "default" in an ambient context (since you can't write an initializer in an ambient context)
86
+ if (redundantTags.has(text) && !(text === "default" && isInAmbientContext(tag))) {
87
+ ctx.addFailureAtNode(tagName, Rule.FAILURE_STRING_REDUNDANT_TAG(text), removeTag(tag, sourceFile));
88
+ }
89
+ break;
90
+ }
91
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
92
+ // @ts-ignore (fallthrough)
93
+ case ts.SyntaxKind.JSDocTemplateTag:
94
+ if (tag.comment !== "") {
95
+ break;
96
+ }
97
+ // falls through
98
+ case ts.SyntaxKind.JSDocPublicTag:
99
+ case ts.SyntaxKind.JSDocPrivateTag:
100
+ case ts.SyntaxKind.JSDocProtectedTag:
101
+ case ts.SyntaxKind.JSDocClassTag:
102
+ case ts.SyntaxKind.JSDocTypeTag:
103
+ case ts.SyntaxKind.JSDocTypedefTag:
104
+ case ts.SyntaxKind.JSDocReadonlyTag:
105
+ case ts.SyntaxKind.JSDocPropertyTag:
106
+ case ts.SyntaxKind.JSDocAugmentsTag:
107
+ case ts.SyntaxKind.JSDocImplementsTag:
108
+ case ts.SyntaxKind.JSDocCallbackTag:
109
+ case ts.SyntaxKind.JSDocThisTag:
110
+ case ts.SyntaxKind.JSDocEnumTag:
111
+ // Always redundant
112
+ ctx.addFailureAtNode(tag.tagName, Rule.FAILURE_STRING_REDUNDANT_TAG(tag.tagName.text), removeTag(tag, sourceFile));
113
+ break;
114
+ case ts.SyntaxKind.JSDocReturnTag:
115
+ case ts.SyntaxKind.JSDocParameterTag: {
116
+ const { typeExpression, comment } = tag;
117
+ const noComment = comment === "";
118
+ if (typeExpression !== undefined) {
119
+ // If noComment, we will just completely remove it in the other fix
120
+ const fix = noComment ? undefined : removeTypeExpression(typeExpression, sourceFile);
121
+ ctx.addFailureAtNode(typeExpression, Rule.FAILURE_STRING_REDUNDANT_TYPE, fix);
122
+ }
123
+ if (noComment) {
124
+ // Redundant if no documentation
125
+ ctx.addFailureAtNode(tag.tagName, Rule.FAILURE_STRING_NO_COMMENT(tag.tagName.text), removeTag(tag, sourceFile));
126
+ }
127
+ break;
128
+ }
129
+ default:
130
+ throw new Error(`Unexpected tag kind: ${ts.SyntaxKind[tag.kind]}`);
131
+ }
132
+ }
133
+ }
134
+ function removeTag(tag, sourceFile) {
135
+ const { text } = sourceFile;
136
+ const jsdoc = tag.parent;
137
+ if (jsdoc.kind === ts.SyntaxKind.JSDocTypeLiteral) {
138
+ return undefined;
139
+ }
140
+ if (jsdoc.comment === undefined && jsdoc.tags.length === 1) {
141
+ // This is the only tag -- remove the whole comment
142
+ return Lint.Replacement.deleteFromTo(jsdoc.getStart(sourceFile), jsdoc.getEnd());
143
+ }
144
+ let start = tag.getStart(sourceFile);
145
+ assert(text[start] === "@");
146
+ start--;
147
+ while (ts.isWhiteSpaceSingleLine(text.charCodeAt(start))) {
148
+ start--;
149
+ }
150
+ if (text[start] !== "*") {
151
+ return undefined;
152
+ }
153
+ let end = tag.getEnd();
154
+ // For some tags, like `@param`, `end` will be the start of the next tag.
155
+ // For some tags, like `@name`, `end` will be before the start of the comment.
156
+ // And `@typedef` doesn't end until the last `@property` tag attached to it ends.
157
+ switch (tag.tagName.text) {
158
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
159
+ // @ts-ignore (fallthrough)
160
+ case "param": {
161
+ const { isBracketed, isNameFirst, typeExpression } = tag;
162
+ if (!isBracketed && !(isNameFirst && typeExpression !== undefined)) {
163
+ break;
164
+ }
165
+ // falls through
166
+ }
167
+ // eslint-disable-next-line no-fallthrough
168
+ case "name":
169
+ case "return":
170
+ case "returns":
171
+ case "interface":
172
+ case "default":
173
+ case "memberof":
174
+ case "memberOf":
175
+ case "method":
176
+ case "type":
177
+ case "class":
178
+ case "property":
179
+ case "function":
180
+ end--; // Might end with "\n" (test with just `@return` with no comment or type)
181
+ // For some reason, for "@name", "end" is before the start of the comment part of the tag.
182
+ // Also for "param" if the name is optional as in `@param {number} [x]`
183
+ while (!ts.isLineBreak(text.charCodeAt(end))) {
184
+ end++;
185
+ }
186
+ end++;
187
+ }
188
+ while (ts.isWhiteSpaceSingleLine(text.charCodeAt(end))) {
189
+ end++;
190
+ }
191
+ if (text[end] !== "*") {
192
+ return undefined;
193
+ }
194
+ return Lint.Replacement.deleteFromTo(start, end);
195
+ }
196
+ function removeTypeExpression(typeExpression, sourceFile) {
197
+ const start = typeExpression.getStart(sourceFile);
198
+ let end = typeExpression.getEnd();
199
+ const { text } = sourceFile;
200
+ if (text[start] !== "{" || text[end - 1] !== "}") {
201
+ // TypeScript parser messed up -- give up
202
+ return undefined;
203
+ }
204
+ if (ts.isWhiteSpaceSingleLine(text.charCodeAt(end))) {
205
+ end++;
206
+ }
207
+ return Lint.Replacement.deleteFromTo(start, end);
208
+ }
209
+ // TODO: improve once https://github.com/Microsoft/TypeScript/pull/17831 is in
210
+ function isInAmbientContext(node) {
211
+ return ts.isSourceFile(node)
212
+ ? node.isDeclarationFile
213
+ : Lint.hasModifier(node.modifiers, ts.SyntaxKind.DeclareKeyword) || isInAmbientContext(node.parent);
214
+ }
215
+ const redundantTags = new Set([
216
+ "abstract",
217
+ "access",
218
+ "class",
219
+ "constant",
220
+ "constructs",
221
+ "default",
222
+ "enum",
223
+ "export",
224
+ "exports",
225
+ "function",
226
+ "global",
227
+ "inherits",
228
+ "interface",
229
+ "instance",
230
+ "member",
231
+ "method",
232
+ "memberof",
233
+ "memberOf",
234
+ "mixes",
235
+ "mixin",
236
+ "module",
237
+ "name",
238
+ "namespace",
239
+ "override",
240
+ "property",
241
+ "requires",
242
+ "static",
243
+ "this"
244
+ ]);
245
+ //# sourceMappingURL=noRedundantJsdoc2Rule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noRedundantJsdoc2Rule.js","sourceRoot":"","sources":["../../../src/rules/noRedundantJsdoc2Rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
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
+ applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[];
6
+ }
7
+ declare module "typescript" {
8
+ interface SourceFile {
9
+ imports: readonly ts.StringLiteral[];
10
+ }
11
+ }
@@ -0,0 +1,60 @@
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
+ return this.applyWithFunction(sourceFile, ctx => walk(ctx, program.getTypeChecker()));
32
+ }
33
+ }
34
+ exports.Rule = Rule;
35
+ Rule.metadata = {
36
+ ruleName: "no-relative-import-in-test",
37
+ description: "Forbids test (non-declaration) files to use relative imports.",
38
+ optionsDescription: "Not configurable.",
39
+ options: null,
40
+ type: "functionality",
41
+ typescriptOnly: false
42
+ };
43
+ const failureMessage = util_1.failure(Rule.metadata.ruleName, "Test file should not use a relative import. Use a global import as if this were a user of the package.");
44
+ function walk(ctx, checker) {
45
+ const { sourceFile } = ctx;
46
+ for (const i of sourceFile.imports) {
47
+ if (i.text.startsWith(".")) {
48
+ const moduleSymbol = checker.getSymbolAtLocation(i);
49
+ if (!moduleSymbol || !moduleSymbol.declarations) {
50
+ continue;
51
+ }
52
+ for (const decl of moduleSymbol.declarations) {
53
+ if (decl.kind === ts.SyntaxKind.SourceFile && decl.isDeclarationFile) {
54
+ ctx.addFailureAtNode(i, failureMessage);
55
+ }
56
+ }
57
+ }
58
+ }
59
+ }
60
+ //# sourceMappingURL=noRelativeImportInTestRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noRelativeImportInTestRule.js","sourceRoot":"","sources":["../../../src/rules/noRelativeImportInTestRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+CAAiC;AAEjC,kCAAkC;AAElC,MAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC,SAAS;IAU5C,gBAAgB,CAAC,UAAyB,EAAE,OAAmB;QAC7D,IAAI,UAAU,CAAC,iBAAiB,EAAE;YAChC,OAAO,EAAE,CAAC;SACX;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACxF,CAAC;;AAhBH,oBAiBC;AAhBQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,4BAA4B;IACtC,WAAW,EAAE,+DAA+D;IAC5E,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,KAAK;CACtB,CAAC;AAWJ,MAAM,cAAc,GAAG,cAAO,CAC5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,wGAAwG,CACzG,CAAC;AAEF,SAAS,IAAI,CAAC,GAA2B,EAAE,OAAuB;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE;QAClC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC1B,MAAM,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;gBAC/C,SAAS;aACV;YAED,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,YAAY,EAAE;gBAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU,IAAK,IAAsB,CAAC,iBAAiB,EAAE;oBACvF,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;iBACzC;aACF;SACF;KACF;AACH,CAAC"}
@@ -0,0 +1,6 @@
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
+ applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[];
6
+ }
@@ -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 util_1 = require("../util");
25
+ class Rule extends Lint.Rules.TypedRule {
26
+ applyWithProgram(sourceFile, program) {
27
+ if (!sourceFile.isDeclarationFile) {
28
+ return [];
29
+ }
30
+ const name = util_1.getCommonDirectoryName(program.getRootFileNames());
31
+ return this.applyWithFunction(sourceFile, ctx => walk(ctx, name));
32
+ }
33
+ }
34
+ exports.Rule = Rule;
35
+ Rule.metadata = {
36
+ ruleName: "no-self-import",
37
+ description: "Forbids declaration files to import the current package using a global import.",
38
+ optionsDescription: "Not configurable.",
39
+ options: null,
40
+ type: "functionality",
41
+ typescriptOnly: false
42
+ };
43
+ const failureMessage = util_1.failure(Rule.metadata.ruleName, "Declaration file should not use a global import of itself. Use a relative import.");
44
+ function walk(ctx, packageName) {
45
+ for (const i of ctx.sourceFile.imports) {
46
+ if (i.text === packageName || i.text.startsWith(packageName + "/")) {
47
+ ctx.addFailureAtNode(i, failureMessage);
48
+ }
49
+ }
50
+ }
51
+ //# sourceMappingURL=noSelfImportRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noSelfImportRule.js","sourceRoot":"","sources":["../../../src/rules/noSelfImportRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAG/B,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,IAAI,GAAG,6BAAsB,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACpE,CAAC;;AAjBH,oBAkBC;AAjBQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,gBAAgB;IAC1B,WAAW,EAAE,gFAAgF;IAC7F,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,KAAK;CACtB,CAAC;AAYJ,MAAM,cAAc,GAAG,cAAO,CAC5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,mFAAmF,CACpF,CAAC;AAEF,SAAS,IAAI,CAAC,GAA2B,EAAE,WAAmB;IAC5D,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE;QACtC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,GAAG,CAAC,EAAE;YAClE,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;SACzC;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.AbstractRule {
4
+ static metadata: Lint.IRuleMetadata;
5
+ static FAILURE_STRING: string;
6
+ apply(sourceFile: ts.SourceFile): Lint.RuleFailure[];
7
+ }
@@ -0,0 +1,68 @@
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-single-declare-module",
34
+ description: "Don't use an ambient module declaration if there's just one -- write it as a normal module.",
35
+ rationale: "Cuts down on nesting",
36
+ optionsDescription: "Not configurable.",
37
+ options: null,
38
+ type: "style",
39
+ typescriptOnly: true
40
+ };
41
+ Rule.FAILURE_STRING = util_1.failure(Rule.metadata.ruleName, "File has only 1 ambient module declaration. Move the contents outside the ambient module block, rename the file to match the ambient module name, and remove the block.");
42
+ function walk(ctx) {
43
+ const { sourceFile } = ctx;
44
+ // If it's an external module, any module declarations inside are augmentations.
45
+ if (ts.isExternalModule(sourceFile)) {
46
+ return;
47
+ }
48
+ let moduleDecl;
49
+ for (const statement of sourceFile.statements) {
50
+ if (ts.isModuleDeclaration(statement) && ts.isStringLiteral(statement.name)) {
51
+ if (statement.name.text.indexOf("*") !== -1) {
52
+ // Ignore wildcard module declarations
53
+ return;
54
+ }
55
+ if (moduleDecl === undefined) {
56
+ moduleDecl = statement;
57
+ }
58
+ else {
59
+ // Has more than 1 declaration
60
+ return;
61
+ }
62
+ }
63
+ }
64
+ if (moduleDecl) {
65
+ ctx.addFailureAtNode(moduleDecl, Rule.FAILURE_STRING);
66
+ }
67
+ }
68
+ //# sourceMappingURL=noSingleDeclareModuleRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noSingleDeclareModuleRule.js","sourceRoot":"","sources":["../../../src/rules/noSingleDeclareModuleRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+CAAiC;AAEjC,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,0BAA0B;IACpC,WAAW,EAAE,6FAA6F;IAC1G,SAAS,EAAE,sBAAsB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,OAAO;IACb,cAAc,EAAE,IAAI;CACrB,CAAC;AAEK,mBAAc,GAAG,cAAO,CAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EACtB,yKAAyK,CAC1K,CAAC;AAOJ,SAAS,IAAI,CAAC,GAA2B;IACvC,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAE3B,gFAAgF;IAChF,IAAI,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;QACnC,OAAO;KACR;IAED,IAAI,UAA4C,CAAC;IACjD,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE;QAC7C,IAAI,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC3E,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC3C,sCAAsC;gBACtC,OAAO;aACR;YAED,IAAI,UAAU,KAAK,SAAS,EAAE;gBAC5B,UAAU,GAAG,SAAS,CAAC;aACxB;iBAAM;gBACL,8BAA8B;gBAC9B,OAAO;aACR;SACF;KACF;IAED,IAAI,UAAU,EAAE;QACd,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACvD;AACH,CAAC"}
@@ -0,0 +1,6 @@
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
+ apply(sourceFile: ts.SourceFile): Lint.RuleFailure[];
6
+ }
@@ -0,0 +1,50 @@
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-single-element-tuple-type",
34
+ description: "Forbids `[T]`, which should be `T[]`.",
35
+ optionsDescription: "Not configurable.",
36
+ options: null,
37
+ type: "functionality",
38
+ typescriptOnly: true
39
+ };
40
+ function walk(ctx) {
41
+ const { sourceFile } = ctx;
42
+ sourceFile.forEachChild(function cb(node) {
43
+ var _a;
44
+ if (ts.isTupleTypeNode(node) && ((_a = node.elements) !== null && _a !== void 0 ? _a : node.elementTypes).length === 1) {
45
+ ctx.addFailureAtNode(node, util_1.failure(Rule.metadata.ruleName, "Type [T] is a single-element tuple type. You probably meant T[]."));
46
+ }
47
+ node.forEachChild(cb);
48
+ });
49
+ }
50
+ //# sourceMappingURL=noSingleElementTupleTypeRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noSingleElementTupleTypeRule.js","sourceRoot":"","sources":["../../../src/rules/noSingleElementTupleTypeRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+CAAiC;AAEjC,kCAAkC;AAElC,MAAa,IAAK,SAAQ,IAAI,CAAC,KAAK,CAAC,YAAY;IAU/C,KAAK,CAAC,UAAyB;QAC7B,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;;AAZH,oBAaC;AAZQ,aAAQ,GAAuB;IACpC,QAAQ,EAAE,8BAA8B;IACxC,WAAW,EAAE,uCAAuC;IACpD,kBAAkB,EAAE,mBAAmB;IACvC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE,IAAI;CACrB,CAAC;AAOJ,SAAS,IAAI,CAAC,GAA2B;IACvC,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAC3B,UAAU,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI;;QACtC,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAA,IAAI,CAAC,QAAQ,mCAAK,IAAY,CAAC,YAAY,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1F,GAAG,CAAC,gBAAgB,CAClB,IAAI,EACJ,cAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,kEAAkE,CAAC,CACpG,CAAC;SACH;QACD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
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(typeParameter: string): string;
6
+ static FAILURE_STRING_NEVER(typeParameter: string): string;
7
+ applyWithProgram(sourceFile: ts.SourceFile, program: ts.Program): Lint.RuleFailure[];
8
+ }