tslint-eslint-rules
Advanced tools
Comparing version 1.6.1 to 2.0.0
## Change Log | ||
### v2.0.0 (2016/10/01 06:12 +00:00) | ||
- [a8f558f](https://github.com/buzinas/tslint-eslint-rules/commit/a8f558f8b25ec0965c1d31bac5ed603713f569f6) [feat] updated TypeScript dependency to v2.0 (@buzinas) | ||
- [a4cbb6f](https://github.com/buzinas/tslint-eslint-rules/commit/a4cbb6f17817df4de84e3d2e19fabc8057fd9db1) [docs] v1.6.1 (@buzinas) | ||
### v1.6.1 (2016/10/01 05:41 +00:00) | ||
- [#119](https://github.com/buzinas/tslint-eslint-rules/pull/119) Merge pull request #119 from blakeembrey/no-ex-assign-patch (@blakeembrey) | ||
- [31afa69](https://github.com/buzinas/tslint-eslint-rules/commit/31afa69d1718bda1b6d7b9f16c77ef1eb157bb37) Fix `no-ex-assign` rule on non-assignment ops (@blakeembrey) | ||
- [36eb552](https://github.com/buzinas/tslint-eslint-rules/commit/36eb5529a1cfba10c79ecf8eede72403cc197e07) [docs] v1.6.0 (@buzinas) | ||
### v1.6.0 (2016/09/27 05:56 +00:00) | ||
@@ -4,0 +13,0 @@ - [3f8dcc5](https://github.com/buzinas/tslint-eslint-rules/commit/3f8dcc5a2f5804243c86a47ba6dbfb4a2241d771) [feat] added the checkLoops option to the no-constant-condition rule (closes #92) (@buzinas) |
"use strict"; | ||
var https = require('https'); | ||
var rules_1 = require('./rules'); | ||
const https = require('https'); | ||
const rules_1 = require('./rules'); | ||
function camelCaseToDash(str) { | ||
@@ -8,7 +8,7 @@ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); | ||
function arrayDiff(source, target) { | ||
return source.filter(function (item) { return target.indexOf(item) === -1; }); | ||
return source.filter(item => target.indexOf(item) === -1); | ||
} | ||
function requestFromGithub(path, callback) { | ||
var options = { | ||
path: path, | ||
const options = { | ||
path, | ||
host: 'api.github.com', | ||
@@ -19,13 +19,13 @@ headers: { | ||
}; | ||
https.get(options, function (resp) { | ||
https.get(options, (resp) => { | ||
resp.setEncoding('utf8'); | ||
var buffer = []; | ||
resp.on('data', function (chunk) { | ||
const buffer = []; | ||
resp.on('data', (chunk) => { | ||
buffer.push(chunk); | ||
}); | ||
resp.on('end', function () { | ||
var data = JSON.parse(buffer.join('')); | ||
resp.on('end', () => { | ||
const data = JSON.parse(buffer.join('')); | ||
callback(data); | ||
}); | ||
}).on('error', function (e) { | ||
}).on('error', (e) => { | ||
console.error(e); | ||
@@ -35,16 +35,16 @@ }); | ||
function compareToESLint() { | ||
return new Promise(function (fulfill, reject) { | ||
requestFromGithub('/repos/eslint/eslint/contents/lib/rules', function (data) { | ||
var rules = data | ||
.filter(function (obj) { return obj.name.endsWith('.js'); }) | ||
.map(function (obj) { return obj.name.substring(0, obj.name.length - 3); }); | ||
var esRules = Object.keys(rules_1.ruleESMap); | ||
var missing = arrayDiff(rules.map(function (x) { return rules_1.toCamelCase(x); }), esRules); | ||
var deprecated = arrayDiff(esRules, rules.map(function (x) { return rules_1.toCamelCase(x); })); | ||
var buffer = []; | ||
return new Promise((fulfill, reject) => { | ||
requestFromGithub('/repos/eslint/eslint/contents/lib/rules', (data) => { | ||
const rules = data | ||
.filter(obj => obj.name.endsWith('.js')) | ||
.map(obj => obj.name.substring(0, obj.name.length - 3)); | ||
const esRules = Object.keys(rules_1.ruleESMap); | ||
const missing = arrayDiff(rules.map(x => rules_1.toCamelCase(x)), esRules); | ||
const deprecated = arrayDiff(esRules, rules.map(x => rules_1.toCamelCase(x))); | ||
const buffer = []; | ||
if (missing.length) { | ||
buffer.push('Missing ESLint rules (http://eslint.org/docs/rules):'); | ||
missing.forEach(function (rule) { | ||
var name = camelCaseToDash(rule); | ||
buffer.push("- " + name); | ||
missing.forEach((rule) => { | ||
const name = camelCaseToDash(rule); | ||
buffer.push(`- ${name}`); | ||
}); | ||
@@ -54,5 +54,5 @@ } | ||
buffer.push('Deprecated ESLint rules:'); | ||
deprecated.forEach(function (rule) { | ||
var name = camelCaseToDash(rule); | ||
buffer.push("- " + name); | ||
deprecated.forEach((rule) => { | ||
const name = camelCaseToDash(rule); | ||
buffer.push(`- ${name}`); | ||
}); | ||
@@ -70,11 +70,11 @@ } | ||
function compareToTSLint() { | ||
return new Promise(function (fulfill, reject) { | ||
requestFromGithub('/repos/palantir/tslint/contents/src/rules', function (data) { | ||
var rules = data | ||
.filter(function (obj) { return obj.name.endsWith('.ts'); }) | ||
.map(function (obj) { return obj.name.substring(0, obj.name.length - 7); }); | ||
var notInUse = require('../../src/readme/unusedTSLintRules.json'); | ||
notInUse.forEach(function (name) { | ||
var camel = rules_1.toCamelCase(name); | ||
var index = rules.indexOf(camel); | ||
return new Promise((fulfill, reject) => { | ||
requestFromGithub('/repos/palantir/tslint/contents/src/rules', (data) => { | ||
const rules = data | ||
.filter(obj => obj.name.endsWith('.ts')) | ||
.map(obj => obj.name.substring(0, obj.name.length - 7)); | ||
const notInUse = require('../../src/readme/unusedTSLintRules.json'); | ||
notInUse.forEach((name) => { | ||
const camel = rules_1.toCamelCase(name); | ||
const index = rules.indexOf(camel); | ||
if (index > -1) { | ||
@@ -84,10 +84,10 @@ rules.splice(index, 1); | ||
}); | ||
var tsRules = Object.keys(rules_1.ruleTSMap); | ||
var missing = arrayDiff(rules, tsRules); | ||
var buffer = []; | ||
const tsRules = Object.keys(rules_1.ruleTSMap); | ||
const missing = arrayDiff(rules, tsRules); | ||
const buffer = []; | ||
if (missing.length) { | ||
buffer.push('Missing TSLint rules (http://palantir.github.io/tslint/rules):'); | ||
missing.forEach(function (rule) { | ||
var name = camelCaseToDash(rule); | ||
buffer.push("- " + name); | ||
missing.forEach((rule) => { | ||
const name = camelCaseToDash(rule); | ||
buffer.push(`- ${name}`); | ||
}); | ||
@@ -104,1 +104,3 @@ } | ||
exports.compareToTSLint = compareToTSLint; | ||
//# sourceMappingURL=data:application/json;base64,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QUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFMUQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7WUFDcEUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUk7Z0JBQ3BCLE1BQU0sS0FBSyxHQUFHLG1CQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25DLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQVMsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDMUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBRWxCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNuQixNQUFNLENBQUMsSUFBSSxDQUFDLGdFQUFnRSxDQUFDLENBQUM7Z0JBQzlFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJO29CQUNuQixNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ25DLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDM0MsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNyQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBSUMsdUJBQWUsbUJBSmhCO0FBS0MiLCJmaWxlIjoicmVhZG1lL2ZldGNoLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var fs = require('fs'); | ||
var path = require('path'); | ||
var rules_1 = require('./rules'); | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
const rules_1 = require('./rules'); | ||
function formatUsage(usage) { | ||
@@ -10,13 +10,13 @@ return usage.replace(/~~~/g, '```').replace(/(^[ \t]*\n)/gm, '\n').replace(/^ /mg, ''); | ||
function createRuleTable() { | ||
var buffer = []; | ||
var category = null; | ||
rules_1.rules.forEach(function (rule) { | ||
const buffer = []; | ||
let category = null; | ||
rules_1.rules.forEach((rule) => { | ||
if (category !== rule.category) { | ||
category = rule.category; | ||
buffer.push("\n### " + category + "\n\n"); | ||
buffer.push(rules_1.categories[category] + "\n\n"); | ||
buffer.push(`\n### ${category}\n\n`); | ||
buffer.push(`${rules_1.categories[category]}\n\n`); | ||
buffer.push('| :grey_question: | ESLint | TSLint | Description |\n'); | ||
buffer.push('| :--- | :---: | :---: | :--- |\n'); | ||
} | ||
var available; | ||
let available; | ||
if (rule.available) { | ||
@@ -28,9 +28,9 @@ available = rule.provider === 'native' ? ':ballot_box_with_check:' : ':white_check_mark:'; | ||
} | ||
var tsRuleName = rule.tslintUrl ? "[" + rule.tslintRule + "](" + rule.tslintUrl + ")" : rule.tslintRule; | ||
var tsRule = rule.tslintRule === 'Not applicable' ? 'Not applicable' : tsRuleName; | ||
const tsRuleName = rule.tslintUrl ? `[${rule.tslintRule}](${rule.tslintUrl})` : rule.tslintRule; | ||
const tsRule = rule.tslintRule === 'Not applicable' ? 'Not applicable' : tsRuleName; | ||
buffer.push('|'); | ||
buffer.push(available + "|"); | ||
buffer.push("[" + rule.eslintRule + "](" + rule.eslintUrl + ")|"); | ||
buffer.push(tsRule + "|"); | ||
buffer.push(rule.description + "|"); | ||
buffer.push(`${available}|`); | ||
buffer.push(`[${rule.eslintRule}](${rule.eslintUrl})|`); | ||
buffer.push(`${tsRule}|`); | ||
buffer.push(`${rule.description}|`); | ||
buffer.push('\n'); | ||
@@ -41,10 +41,10 @@ }); | ||
function updateReadme(cb) { | ||
fs.readFile('README.md', 'utf8', function (readErr, data) { | ||
fs.readFile('README.md', 'utf8', (readErr, data) => { | ||
if (readErr) { | ||
return console.error(readErr); | ||
} | ||
var content = data.replace(/^<!-- Start:AutoTable((.*?(\n))+.*?)End:AutoTable -->$/gm, '<!-- Start:AutoTable:: Modify `src/readme/rules.ts` and run `gulp readme` to update block -->\n' + | ||
let content = data.replace(/^<!-- Start:AutoTable((.*?(\n))+.*?)End:AutoTable -->$/gm, '<!-- Start:AutoTable:: Modify `src/readme/rules.ts` and run `gulp readme` to update block -->\n' + | ||
createRuleTable() + | ||
'<!-- End:AutoTable -->'); | ||
fs.writeFile('README.md', content, 'utf8', function (writeErr) { | ||
fs.writeFile('README.md', content, 'utf8', (writeErr) => { | ||
if (writeErr) { | ||
@@ -60,13 +60,16 @@ return console.error(writeErr); | ||
function createRuleContent(rule) { | ||
var usage = rule.usage ? "\n\n### Usage\n\n" + formatUsage(rule.usage) : ''; | ||
var note = rule.note ? "\n\n### Note\n\n" + rule.note + "\n" : ''; | ||
return "## " + rule.tslintRule + " (ESLint: [" + rule.eslintRule + "](" + rule.eslintUrl + "))\n\n" + rule.description + usage + note + "\n"; | ||
const usage = rule.usage ? `\n\n### Usage\n\n${formatUsage(rule.usage)}` : ''; | ||
const note = rule.note ? `\n\n### Note\n\n${rule.note}\n` : ''; | ||
return `## ${rule.tslintRule} (ESLint: [${rule.eslintRule}](${rule.eslintUrl})) | ||
${rule.description}${usage}${note} | ||
`; | ||
} | ||
function updateRuleFile(name, rule) { | ||
var baseUrl = 'https://github.com/buzinas/tslint-eslint-rules/blob/master'; | ||
var docFileName = "src/docs/rules/" + name + "Rule.md"; | ||
return new Promise(function (fulfill, reject) { | ||
fs.readFile(docFileName, 'utf8', function (readErr, data) { | ||
rule.tslintUrl = rule.tslintUrl || baseUrl + "/" + docFileName; | ||
var content = readErr || !data ? '<!-- Start:AutoDoc\n End:AutoDoc -->' : data; | ||
const baseUrl = 'https://github.com/buzinas/tslint-eslint-rules/blob/master'; | ||
const docFileName = `src/docs/rules/${name}Rule.md`; | ||
return new Promise((fulfill, reject) => { | ||
fs.readFile(docFileName, 'utf8', (readErr, data) => { | ||
rule.tslintUrl = rule.tslintUrl || `${baseUrl}/${docFileName}`; | ||
let content = readErr || !data ? '<!-- Start:AutoDoc\n End:AutoDoc -->' : data; | ||
content = content.replace(/^<!-- Start:AutoDoc((.*?(\n))+.*?)End:AutoDoc -->$/gm, [ | ||
@@ -77,7 +80,7 @@ '<!-- Start:AutoDoc:: Modify `src/readme/rules.ts` and run `gulp readme` to update block -->\n', | ||
].join('')); | ||
fs.writeFile(docFileName, content, 'utf8', function (writeErr) { | ||
fs.writeFile(docFileName, content, 'utf8', (writeErr) => { | ||
if (writeErr) { | ||
return reject(writeErr); | ||
} | ||
console.log(" - " + name); | ||
console.log(` - ${name}`); | ||
fulfill(); | ||
@@ -89,12 +92,12 @@ }); | ||
function updateRuleFiles(cb) { | ||
var ruleDir = 'src/rules/'; | ||
var allFiles = fs.readdirSync(ruleDir).filter(function (file) { return fs.lstatSync(path.join(ruleDir, file)).isFile(); }); | ||
var ruleNames = allFiles | ||
.filter(function (name) { return name.endsWith('.ts'); }) | ||
.map(function (name) { return name.substr(0, name.length - 7); }); | ||
var allPromises = []; | ||
ruleNames.forEach(function (name) { | ||
const ruleDir = 'src/rules/'; | ||
const allFiles = fs.readdirSync(ruleDir).filter(file => fs.lstatSync(path.join(ruleDir, file)).isFile()); | ||
const ruleNames = allFiles | ||
.filter(name => name.endsWith('.ts')) | ||
.map(name => name.substr(0, name.length - 7)); | ||
const allPromises = []; | ||
ruleNames.forEach((name) => { | ||
allPromises.push(updateRuleFile(name, rules_1.ruleTSMap[name])); | ||
}); | ||
Promise.all(allPromises).then(function () { | ||
Promise.all(allPromises).then(() => { | ||
console.log('[DONE] processing rule files ...'); | ||
@@ -105,1 +108,3 @@ cb(); | ||
exports.updateRuleFiles = updateRuleFiles; | ||
//# sourceMappingURL=data:application/json;base64,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TUFBTSxTQUFTLEdBQUcsUUFBUTtTQUN2QixNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJO1FBQ3JCLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxpQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUNoRCxFQUFFLEVBQUUsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUtDLHVCQUFlLG1CQUxoQjtBQU1DIiwiZmlsZSI6InJlYWRtZS9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiJkOlxccHJvamVjdHNcXHRzbGludC1lc2xpbnQtcnVsZXNcXHNyYyJ9 |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
const OPTION_ALWAYS = 'always'; | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new ArrayBracketSpacingWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
} | ||
Rule.FAILURE_STRING = { | ||
noBeginningSpace: 'There should be no space after "["', | ||
noEndingSpace: 'There should be no space before "]"', | ||
requiredBeginningSpace: 'A space is required after "["', | ||
requiredEndingSpace: 'A space is required before "]"' | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var OPTION_ALWAYS = 'always'; | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new ArrayBracketSpacingWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = { | ||
noBeginningSpace: 'There should be no space after "["', | ||
noEndingSpace: 'There should be no space before "]"', | ||
requiredBeginningSpace: 'A space is required after "["', | ||
requiredEndingSpace: 'A space is required before "]"' | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
exports.Rule = Rule; | ||
var ArrayBracketSpacingWalker = (function (_super) { | ||
__extends(ArrayBracketSpacingWalker, _super); | ||
function ArrayBracketSpacingWalker(sourceFile, options) { | ||
_super.call(this, sourceFile, options); | ||
class ArrayBracketSpacingWalker extends Lint.RuleWalker { | ||
constructor(sourceFile, options) { | ||
super(sourceFile, options); | ||
this.singleValueException = false; | ||
this.objectsInArraysException = false; | ||
this.arraysInArraysException = false; | ||
var ruleOptions = this.getOptions(); | ||
const ruleOptions = this.getOptions(); | ||
this.spaced = this.hasOption(OPTION_ALWAYS) || (ruleOptions && ruleOptions.length === 0); | ||
@@ -43,20 +32,20 @@ if (ruleOptions[1]) { | ||
} | ||
ArrayBracketSpacingWalker.prototype.visitNode = function (node) { | ||
visitNode(node) { | ||
if (node.kind === ts.SyntaxKind.ArrayBindingPattern) { | ||
this.validateSquareBrackets(node); | ||
} | ||
_super.prototype.visitNode.call(this, node); | ||
}; | ||
ArrayBracketSpacingWalker.prototype.visitArrayLiteralExpression = function (node) { | ||
super.visitNode(node); | ||
} | ||
visitArrayLiteralExpression(node) { | ||
this.validateSquareBrackets(node); | ||
_super.prototype.visitArrayLiteralExpression.call(this, node); | ||
}; | ||
ArrayBracketSpacingWalker.prototype.validateSquareBrackets = function (node) { | ||
var children = node.getChildren(); | ||
var isSpaceAfterOpeningBracket = this.isSpaceBetween(children[0], children[1]); | ||
var isBreakAfterOpeningBracket = this.isLineBreakBetween(children[0], children[1]); | ||
var isSpaceBeforeClosingBracket = this.isSpaceBetween(children[children.length - 2], children[children.length - 1]); | ||
var isBreakBeforeClosingBracket = this.isLineBreakBetween(children[children.length - 2], children[children.length - 1]); | ||
var syntaxList = node.getChildren()[1]; | ||
var itemsInArrayPattern = syntaxList.getChildren().filter(function (child) { | ||
super.visitArrayLiteralExpression(node); | ||
} | ||
validateSquareBrackets(node) { | ||
const children = node.getChildren(); | ||
const isSpaceAfterOpeningBracket = this.isSpaceBetween(children[0], children[1]); | ||
const isBreakAfterOpeningBracket = this.isLineBreakBetween(children[0], children[1]); | ||
const isSpaceBeforeClosingBracket = this.isSpaceBetween(children[children.length - 2], children[children.length - 1]); | ||
const isBreakBeforeClosingBracket = this.isLineBreakBetween(children[children.length - 2], children[children.length - 1]); | ||
const syntaxList = node.getChildren()[1]; | ||
const itemsInArrayPattern = syntaxList.getChildren().filter(child => { | ||
return child.kind !== ts.SyntaxKind.CommaToken; | ||
@@ -67,7 +56,7 @@ }); | ||
} | ||
var openingBracketMustBeSpaced = (this.singleValueException && itemsInArrayPattern.length === 1) || | ||
const openingBracketMustBeSpaced = (this.singleValueException && itemsInArrayPattern.length === 1) || | ||
(this.arraysInArraysException && itemsInArrayPattern[0] && itemsInArrayPattern[0].kind === ts.SyntaxKind.ArrayLiteralExpression) || | ||
(this.objectsInArraysException && itemsInArrayPattern[0] && itemsInArrayPattern[0].kind === ts.SyntaxKind.ObjectLiteralExpression) | ||
? !this.spaced : this.spaced; | ||
var closingBracketMustBeSpaced = (this.singleValueException | ||
const closingBracketMustBeSpaced = (this.singleValueException | ||
&& itemsInArrayPattern.length === 1) || | ||
@@ -97,16 +86,17 @@ (this.arraysInArraysException && | ||
} | ||
}; | ||
ArrayBracketSpacingWalker.prototype.isSpaceBetween = function (node, nextNode) { | ||
} | ||
isSpaceBetween(node, nextNode) { | ||
return nextNode.getStart() - node.getEnd() > 0; | ||
}; | ||
ArrayBracketSpacingWalker.prototype.isLineBreakBetween = function (node, nextNode) { | ||
} | ||
isLineBreakBetween(node, nextNode) { | ||
return this.getEndPosition(node).line !== this.getStartPosition(nextNode).line; | ||
}; | ||
ArrayBracketSpacingWalker.prototype.getStartPosition = function (node) { | ||
} | ||
getStartPosition(node) { | ||
return node.getSourceFile().getLineAndCharacterOfPosition(node.getStart()); | ||
}; | ||
ArrayBracketSpacingWalker.prototype.getEndPosition = function (node) { | ||
} | ||
getEndPosition(node) { | ||
return node.getSourceFile().getLineAndCharacterOfPosition(node.getEnd()); | ||
}; | ||
return ArrayBracketSpacingWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL2FycmF5QnJhY2tldFNwYWNpbmdSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLEVBQUUsV0FBTSxZQUFZLENBQUMsQ0FBQTtBQUNqQyxNQUFZLElBQUksV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBRXhDLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQztBQUUvQixtQkFBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO0lBUXhDLEtBQUssQ0FBQyxVQUF5QjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUM1RSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0gsQ0FBQztBQVhlLG1CQUFjLEdBQUc7SUFDN0IsZ0JBQWdCLEVBQUUsb0NBQW9DO0lBQ3RELGFBQWEsRUFBRSxxQ0FBcUM7SUFDcEQsc0JBQXNCLEVBQUUsK0JBQStCO0lBQ3ZELG1CQUFtQixFQUFFLGdDQUFnQztDQUN0RCxDQUFDO0FBTlMsWUFBSSxPQVloQixDQUFBO0FBRUQsd0NBQXdDLElBQUksQ0FBQyxVQUFVO0lBTXJELFlBQVksVUFBeUIsRUFBRSxPQUFzQjtRQUMzRCxNQUFNLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUxyQix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsNkJBQXdCLEdBQVksS0FBSyxDQUFDO1FBQzFDLDRCQUF1QixHQUFZLEtBQUssQ0FBQztRQUkvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFekYsRUFBRSxDQUFDLENBQUMsV0FB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QztJQUVPLGtCQUFrQixDQUFDLElBQWEsRUFBRSxRQUFpQjtRQUN6RCxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBYTtRQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTyxjQUFjLENBQUMsSUFBYTtRQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7QUFDSCxDQUFDO0FBQUEiLCJmaWxlIjoicnVsZXMvYXJyYXlCcmFja2V0U3BhY2luZ1J1bGUuanMiLCJzb3VyY2VSb290IjoiZDpcXHByb2plY3RzXFx0c2xpbnQtZXNsaW50LXJ1bGVzXFxzcmMifQ== |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
const OPTION_ALWAYS = 'always'; | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new BlockSpacingWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
} | ||
Rule.FAILURE_STRING = { | ||
always: 'Requires a space', | ||
never: 'Unexpected space(s)' | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var OPTION_ALWAYS = 'always'; | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new BlockSpacingWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = { | ||
always: 'Requires a space', | ||
never: 'Unexpected space(s)' | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
exports.Rule = Rule; | ||
var BlockSpacingWalker = (function (_super) { | ||
__extends(BlockSpacingWalker, _super); | ||
function BlockSpacingWalker(sourceFile, options) { | ||
_super.call(this, sourceFile, options); | ||
class BlockSpacingWalker extends Lint.RuleWalker { | ||
constructor(sourceFile, options) { | ||
super(sourceFile, options); | ||
this.always = this.hasOption(OPTION_ALWAYS) || (this.getOptions() && this.getOptions().length === 0); | ||
} | ||
BlockSpacingWalker.prototype.visitNode = function (node) { | ||
visitNode(node) { | ||
if (node.kind === ts.SyntaxKind.Block || node.kind === ts.SyntaxKind.CaseBlock) { | ||
this.checkSpacingInsideBraces(node); | ||
} | ||
_super.prototype.visitNode.call(this, node); | ||
}; | ||
BlockSpacingWalker.prototype.checkSpacingInsideBraces = function (node) { | ||
var blockChildren = node.getChildren(); | ||
var syntaxList = blockChildren[1]; | ||
var openBraceLocation = this.getStartPosition(blockChildren[0]); | ||
var closeBraceLocation = this.getStartPosition(blockChildren[blockChildren.length - 1]); | ||
super.visitNode(node); | ||
} | ||
checkSpacingInsideBraces(node) { | ||
const blockChildren = node.getChildren(); | ||
const syntaxList = blockChildren[1]; | ||
const openBraceLocation = this.getStartPosition(blockChildren[0]); | ||
const closeBraceLocation = this.getStartPosition(blockChildren[blockChildren.length - 1]); | ||
if (syntaxList && syntaxList.getChildCount() > 0 && openBraceLocation.line === closeBraceLocation.line) { | ||
if (this.isSpaceBetween(blockChildren[0], blockChildren[1]) !== this.always | ||
|| this.isSpaceBetween(blockChildren[blockChildren.length - 2], blockChildren[blockChildren.length - 1]) !== this.always) { | ||
var failureString = this.always ? Rule.FAILURE_STRING.always : Rule.FAILURE_STRING.never; | ||
let failureString = this.always ? Rule.FAILURE_STRING.always : Rule.FAILURE_STRING.never; | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), failureString)); | ||
} | ||
} | ||
}; | ||
BlockSpacingWalker.prototype.isSpaceBetween = function (node, nextNode) { | ||
} | ||
isSpaceBetween(node, nextNode) { | ||
return nextNode.getStart() - node.getEnd() > 0; | ||
}; | ||
BlockSpacingWalker.prototype.getStartPosition = function (node) { | ||
} | ||
getStartPosition(node) { | ||
return node.getSourceFile().getLineAndCharacterOfPosition(node.getStart()); | ||
}; | ||
return BlockSpacingWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL2Jsb2NrU3BhY2luZ1J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksRUFBRSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ2pDLE1BQVksSUFBSSxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFeEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDO0FBRS9CLG1CQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7SUFNeEMsS0FBSyxDQUFDLFVBQXlCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksa0JBQWtCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBVGUsbUJBQWMsR0FBRztJQUM3QixNQUFNLEVBQUUsa0JBQWtCO0lBQzFCLEtBQUssRUFBRSxxQkFBcUI7Q0FDN0IsQ0FBQztBQUpTLFlBQUksT0FVaEIsQ0FBQTtBQUVELGlDQUFpQyxJQUFJLENBQUMsVUFBVTtJQUk5QyxZQUFZLFVBQXlCLEVBQUUsT0FBc0I7UUFDM0QsTUFBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFhO1FBQy9CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxJQUFhO1FBQzVDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUxRixFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN2RyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTTttQkFDdEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUUzSCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO2dCQUN6RixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFhLEVBQUUsUUFBaUI7UUFDckQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFhO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztBQUNILENBQUM7QUFBQSIsImZpbGUiOiJydWxlcy9ibG9ja1NwYWNpbmdSdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var OPTION_1TBS = '1tbs'; | ||
var OPTION_ALLMAN = 'allman'; | ||
var OPTION_STROUSTRUP = 'stroustrup'; | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
const OPTION_1TBS = '1tbs'; | ||
const OPTION_ALLMAN = 'allman'; | ||
const OPTION_STROUSTRUP = 'stroustrup'; | ||
var BraceStyle; | ||
@@ -18,26 +13,20 @@ (function (BraceStyle) { | ||
})(BraceStyle || (BraceStyle = {})); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new BraceStyleWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new BraceStyleWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = { | ||
open: 'Opening curly brace does not appear on the same line as controlling statement.', | ||
openAllman: 'Opening curly brace appears on the same line as controlling statement.', | ||
body: 'Statement inside of curly braces should be on next line.', | ||
close: 'Closing curly brace does not appear on the same line as the subsequent block.', | ||
closeSingle: 'Closing curly brace should be on the same line as opening curly brace or on the line after the previous block.', | ||
closeStroustrupAllman: 'Closing curly brace appears on the same line as the subsequent block.' | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = { | ||
open: 'Opening curly brace does not appear on the same line as controlling statement.', | ||
openAllman: 'Opening curly brace appears on the same line as controlling statement.', | ||
body: 'Statement inside of curly braces should be on next line.', | ||
close: 'Closing curly brace does not appear on the same line as the subsequent block.', | ||
closeSingle: 'Closing curly brace should be on the same line as opening curly brace or on the line after the previous block.', | ||
closeStroustrupAllman: 'Closing curly brace appears on the same line as the subsequent block.' | ||
}; | ||
exports.Rule = Rule; | ||
var BraceStyleWalker = (function (_super) { | ||
__extends(BraceStyleWalker, _super); | ||
function BraceStyleWalker(sourceFile, options) { | ||
_super.call(this, sourceFile, options); | ||
class BraceStyleWalker extends Lint.RuleWalker { | ||
constructor(sourceFile, options) { | ||
super(sourceFile, options); | ||
this.allowSingleLine = false; | ||
@@ -57,69 +46,68 @@ if (this.hasOption(OPTION_1TBS)) { | ||
} | ||
BraceStyleWalker.prototype.visitTryStatement = function (tryStatement) { | ||
var _this = this; | ||
_super.prototype.visitTryStatement.call(this, tryStatement); | ||
var checkTryStatementError = function (node) { | ||
var previousNode = _this.getPreviousNode(tryStatement.getChildren(), node); | ||
var openingBracketError = _this.areOnSameLine(previousNode, node) !== (_this.braceStyle === BraceStyle.OneTBS); | ||
if (_this.allowSingleLine && _this.getStartPosition(node).line === _this.getEndPosition(tryStatement).line) { | ||
visitTryStatement(tryStatement) { | ||
super.visitTryStatement(tryStatement); | ||
const checkTryStatementError = (node) => { | ||
const previousNode = this.getPreviousNode(tryStatement.getChildren(), node); | ||
const openingBracketError = this.areOnSameLine(previousNode, node) !== (this.braceStyle === BraceStyle.OneTBS); | ||
if (this.allowSingleLine && this.getStartPosition(node).line === this.getEndPosition(tryStatement).line) { | ||
return; | ||
} | ||
if (openingBracketError) { | ||
var failureString = _this.braceStyle === BraceStyle.OneTBS ? Rule.FAILURE_STRING.open : Rule.FAILURE_STRING.openAllman; | ||
_this.addFailure(_this.createFailure(node.getStart(), node.getWidth(), failureString)); | ||
const failureString = this.braceStyle === BraceStyle.OneTBS ? Rule.FAILURE_STRING.open : Rule.FAILURE_STRING.openAllman; | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), failureString)); | ||
} | ||
}; | ||
var catchClause = tryStatement.catchClause; | ||
const catchClause = tryStatement.catchClause; | ||
if (catchClause) { | ||
checkTryStatementError(catchClause); | ||
} | ||
var finallyBlock = tryStatement.finallyBlock; | ||
const finallyBlock = tryStatement.finallyBlock; | ||
if (finallyBlock) { | ||
checkTryStatementError(finallyBlock); | ||
} | ||
}; | ||
BraceStyleWalker.prototype.visitIfStatement = function (ifStatement) { | ||
_super.prototype.visitIfStatement.call(this, ifStatement); | ||
var elseKeyword = ifStatement.getChildren().filter(function (ch) { return ch.kind === ts.SyntaxKind.ElseKeyword; }).shift(); | ||
} | ||
visitIfStatement(ifStatement) { | ||
super.visitIfStatement(ifStatement); | ||
const elseKeyword = ifStatement.getChildren().filter(ch => ch.kind === ts.SyntaxKind.ElseKeyword).shift(); | ||
if (!elseKeyword) { | ||
return; | ||
} | ||
var previousNode = ifStatement.getChildren()[ifStatement.getChildren().indexOf(elseKeyword) - 1]; | ||
var openingBracketError = this.areOnSameLine(previousNode, elseKeyword) !== (this.braceStyle === BraceStyle.OneTBS); | ||
const previousNode = ifStatement.getChildren()[ifStatement.getChildren().indexOf(elseKeyword) - 1]; | ||
const openingBracketError = this.areOnSameLine(previousNode, elseKeyword) !== (this.braceStyle === BraceStyle.OneTBS); | ||
if (this.allowSingleLine && this.getStartPosition(elseKeyword).line === this.getEndPosition(ifStatement).line) { | ||
return; | ||
} | ||
if (!ifStatement.getChildren().some(function (ch) { return ch.kind === ts.SyntaxKind.Block; })) { | ||
if (!ifStatement.getChildren().some(ch => ch.kind === ts.SyntaxKind.Block)) { | ||
return; | ||
} | ||
if (openingBracketError) { | ||
var failureString = this.braceStyle === BraceStyle.OneTBS ? Rule.FAILURE_STRING.open : Rule.FAILURE_STRING.openAllman; | ||
const failureString = this.braceStyle === BraceStyle.OneTBS ? Rule.FAILURE_STRING.open : Rule.FAILURE_STRING.openAllman; | ||
this.addFailure(this.createFailure(elseKeyword.getStart(), elseKeyword.getWidth(), failureString)); | ||
} | ||
}; | ||
BraceStyleWalker.prototype.visitBlock = function (block) { | ||
_super.prototype.visitBlock.call(this, block); | ||
} | ||
visitBlock(block) { | ||
super.visitBlock(block); | ||
if (this.allowSingleLine && this.getStartPosition(block).line === this.getEndPosition(block).line) { | ||
return; | ||
} | ||
var blockChildren = block.getChildren(); | ||
var openingCurlyBrace = blockChildren.filter(function (ch) { return ch.kind === ts.SyntaxKind.OpenBraceToken; }).shift(); | ||
var closingCurlyBrace = blockChildren.filter(function (ch) { return ch.kind === ts.SyntaxKind.CloseBraceToken; }).pop(); | ||
var syntaxList = blockChildren.filter(function (ch) { return ch.kind === ts.SyntaxKind.SyntaxList; }).shift(); | ||
var blockPreviousNode = block.parent.getChildren()[block.parent.getChildren().indexOf(block) - 1]; | ||
const blockChildren = block.getChildren(); | ||
const openingCurlyBrace = blockChildren.filter(ch => ch.kind === ts.SyntaxKind.OpenBraceToken).shift(); | ||
const closingCurlyBrace = blockChildren.filter(ch => ch.kind === ts.SyntaxKind.CloseBraceToken).pop(); | ||
const syntaxList = blockChildren.filter(ch => ch.kind === ts.SyntaxKind.SyntaxList).shift(); | ||
const blockPreviousNode = block.parent.getChildren()[block.parent.getChildren().indexOf(block) - 1]; | ||
if (!openingCurlyBrace || !closingCurlyBrace || !syntaxList || !blockPreviousNode) { | ||
return; | ||
} | ||
var openingBracketError = this.areOnSameLine(blockPreviousNode, block) === (this.braceStyle === BraceStyle.Allman); | ||
const openingBracketError = this.areOnSameLine(blockPreviousNode, block) === (this.braceStyle === BraceStyle.Allman); | ||
if (openingBracketError) { | ||
var failureString = this.braceStyle === BraceStyle.Allman ? Rule.FAILURE_STRING.openAllman : Rule.FAILURE_STRING.open; | ||
const failureString = this.braceStyle === BraceStyle.Allman ? Rule.FAILURE_STRING.openAllman : Rule.FAILURE_STRING.open; | ||
this.addFailure(this.createFailure(openingCurlyBrace.getStart(), openingCurlyBrace.getWidth(), failureString)); | ||
} | ||
if (syntaxList.getChildCount() > 0) { | ||
var bodyError = this.areOnSameLine(openingCurlyBrace, syntaxList); | ||
const bodyError = this.areOnSameLine(openingCurlyBrace, syntaxList); | ||
if (bodyError) { | ||
this.addFailure(this.createFailure(syntaxList.getStart(), syntaxList.getWidth(), Rule.FAILURE_STRING.body)); | ||
} | ||
var nodeBeforeClosingBracket = syntaxList.getChildren()[syntaxList.getChildren().length - 1]; | ||
var closingBracketError = this.areOnSameLine(nodeBeforeClosingBracket, closingCurlyBrace); | ||
const nodeBeforeClosingBracket = syntaxList.getChildren()[syntaxList.getChildren().length - 1]; | ||
const closingBracketError = this.areOnSameLine(nodeBeforeClosingBracket, closingCurlyBrace); | ||
if (closingBracketError) { | ||
@@ -129,14 +117,14 @@ this.addFailure(this.createFailure(closingCurlyBrace.getStart(), closingCurlyBrace.getWidth(), Rule.FAILURE_STRING.closeSingle)); | ||
} | ||
}; | ||
BraceStyleWalker.prototype.areOnSameLine = function (node, nextNode) { | ||
} | ||
areOnSameLine(node, nextNode) { | ||
return this.getEndPosition(node).line === this.getStartPosition(nextNode).line; | ||
}; | ||
BraceStyleWalker.prototype.getStartPosition = function (node) { | ||
} | ||
getStartPosition(node) { | ||
return node.getSourceFile().getLineAndCharacterOfPosition(node.getStart()); | ||
}; | ||
BraceStyleWalker.prototype.getEndPosition = function (node) { | ||
} | ||
getEndPosition(node) { | ||
return node.getSourceFile().getLineAndCharacterOfPosition(node.getEnd()); | ||
}; | ||
BraceStyleWalker.prototype.getPreviousNode = function (children, node) { | ||
var position = children.indexOf(node) - 1; | ||
} | ||
getPreviousNode(children, node) { | ||
let position = children.indexOf(node) - 1; | ||
while (position >= 0) { | ||
@@ -148,4 +136,5 @@ if (children[position].kind === ts.SyntaxKind.Block || children[position].kind === ts.SyntaxKind.CatchClause) { | ||
} | ||
}; | ||
return BraceStyleWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,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QyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxFQUFFLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNuSSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsSUFBYSxFQUFFLFFBQWlCO1FBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pGLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFhO1FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFhO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUdPLGVBQWUsQ0FBQyxRQUFtQixFQUFFLElBQWE7UUFDeEQsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsT0FBTyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDN0csTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixDQUFDO1lBQ0QsUUFBUSxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFBQSIsImZpbGUiOiJydWxlcy9icmFjZVN0eWxlUnVsZS5qcyIsInNvdXJjZVJvb3QiOiJkOlxccHJvamVjdHNcXHRzbGludC1lc2xpbnQtcnVsZXNcXHNyYyJ9 |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const languageService = Lint.createLanguageService(sourceFile.fileName, sourceFile.getFullText()); | ||
return this.applyWithWalker(new ErrCallbackHandlerWalker(sourceFile, this.getOptions(), languageService)); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var languageService = Lint.createLanguageService(sourceFile.fileName, sourceFile.getFullText()); | ||
return this.applyWithWalker(new ErrCallbackHandlerWalker(sourceFile, this.getOptions(), languageService)); | ||
}; | ||
Rule.FAILURE_STRING = 'error parameter not handled'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'error parameter not handled'; | ||
exports.Rule = Rule; | ||
var ErrCallbackHandlerWalker = (function (_super) { | ||
__extends(ErrCallbackHandlerWalker, _super); | ||
function ErrCallbackHandlerWalker(sourceFile, options, languageService) { | ||
_super.call(this, sourceFile, options); | ||
class ErrCallbackHandlerWalker extends Lint.RuleWalker { | ||
constructor(sourceFile, options, languageService) { | ||
super(sourceFile, options); | ||
this.languageService = languageService; | ||
var customExpression = options.ruleArguments[0] || 'err'; | ||
const customExpression = options.ruleArguments[0] || 'err'; | ||
if (customExpression.indexOf('^') === 0) { | ||
@@ -31,22 +20,22 @@ this.errorRegex = new RegExp(customExpression); | ||
else { | ||
this.errorRegex = new RegExp("^" + customExpression + "$"); | ||
this.errorRegex = new RegExp(`^${customExpression}$`); | ||
} | ||
} | ||
ErrCallbackHandlerWalker.prototype.visitFunctionDeclaration = function (node) { | ||
var _this = this; | ||
visitFunctionDeclaration(node) { | ||
node.parameters | ||
.filter(function (parameter) { return _this.errorRegex.test(parameter.name.getText()); }) | ||
.forEach(function (parameter) { | ||
_this.validateReferencesForVariable(parameter.name.getText(), parameter.pos); | ||
.filter(parameter => this.errorRegex.test(parameter.name.getText())) | ||
.forEach((parameter) => { | ||
this.validateReferencesForVariable(parameter.name.getText(), parameter.pos); | ||
}); | ||
_super.prototype.visitFunctionDeclaration.call(this, node); | ||
}; | ||
ErrCallbackHandlerWalker.prototype.validateReferencesForVariable = function (name, position) { | ||
var fileName = this.getSourceFile().fileName; | ||
var highlights = this.languageService.getDocumentHighlights(fileName, position, [fileName]); | ||
super.visitFunctionDeclaration(node); | ||
} | ||
validateReferencesForVariable(name, position) { | ||
const fileName = this.getSourceFile().fileName; | ||
const highlights = this.languageService.getDocumentHighlights(fileName, position, [fileName]); | ||
if (!highlights || highlights[0].highlightSpans.length <= 1) { | ||
this.addFailure(this.createFailure(position, name.length, Rule.FAILURE_STRING + "'" + name + "'")); | ||
this.addFailure(this.createFailure(position, name.length, `${Rule.FAILURE_STRING}'${name}'`)); | ||
} | ||
}; | ||
return ErrCallbackHandlerWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL2hhbmRsZUNhbGxiYWNrRXJyUnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsTUFBWSxJQUFJLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUV4QyxtQkFBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO0lBR3hDLEtBQUssQ0FBQyxVQUF5QjtRQUNwQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNsRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM1RyxDQUFDO0FBQ0gsQ0FBQztBQU5lLG1CQUFjLEdBQUcsNkJBQTZCLENBQUM7QUFEbEQsWUFBSSxPQU9oQixDQUFBO0FBRUQsdUNBQXVDLElBQUksQ0FBQyxVQUFVO0lBSXBELFlBQVksVUFBeUIsRUFBRSxPQUFzQixFQUFFLGVBQW1DO1FBQ2hHLE1BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUM7UUFFM0QsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFTSx3QkFBd0IsQ0FBQyxJQUE0QjtRQUMxRCxJQUFJLENBQUMsVUFBVTthQUNaLE1BQU0sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQ25FLE9BQU8sQ0FBQyxDQUFDLFNBQVM7WUFDakIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlFLENBQUMsQ0FBQyxDQUFDO1FBRUwsS0FBSyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyw2QkFBNkIsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7UUFDbEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzlGLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEcsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBQUEiLCJmaWxlIjoicnVsZXMvaGFuZGxlQ2FsbGJhY2tFcnJSdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var token_1 = require('../support/token'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
const token_1 = require('../support/token'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoConstantConditionWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoConstantConditionWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = 'unexpected constant condition'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'unexpected constant condition'; | ||
exports.Rule = Rule; | ||
var NoConstantConditionWalker = (function (_super) { | ||
__extends(NoConstantConditionWalker, _super); | ||
function NoConstantConditionWalker(sourceFile, options) { | ||
_super.call(this, sourceFile, options); | ||
class NoConstantConditionWalker extends Lint.RuleWalker { | ||
constructor(sourceFile, options) { | ||
super(sourceFile, options); | ||
this.checkLoops = true; | ||
this.isInConditional = false; | ||
var opts = this.getOptions(); | ||
const opts = this.getOptions(); | ||
if (opts.length && opts[0].checkLoops === false) { | ||
@@ -34,29 +23,29 @@ this.checkLoops = false; | ||
} | ||
NoConstantConditionWalker.prototype.visitIfStatement = function (node) { | ||
visitIfStatement(node) { | ||
this.validateCondition(node.expression); | ||
_super.prototype.visitIfStatement.call(this, node); | ||
}; | ||
NoConstantConditionWalker.prototype.visitWhileStatement = function (node) { | ||
super.visitIfStatement(node); | ||
} | ||
visitWhileStatement(node) { | ||
if (this.checkLoops) { | ||
this.validateCondition(node.expression); | ||
} | ||
_super.prototype.visitWhileStatement.call(this, node); | ||
}; | ||
NoConstantConditionWalker.prototype.visitDoStatement = function (node) { | ||
super.visitWhileStatement(node); | ||
} | ||
visitDoStatement(node) { | ||
if (this.checkLoops) { | ||
this.validateCondition(node.expression); | ||
} | ||
_super.prototype.visitDoStatement.call(this, node); | ||
}; | ||
NoConstantConditionWalker.prototype.visitForStatement = function (node) { | ||
super.visitDoStatement(node); | ||
} | ||
visitForStatement(node) { | ||
if (this.checkLoops && node.condition) { | ||
this.validateCondition(node.condition); | ||
} | ||
_super.prototype.visitForStatement.call(this, node); | ||
}; | ||
NoConstantConditionWalker.prototype.visitConditionalExpression = function (node) { | ||
super.visitForStatement(node); | ||
} | ||
visitConditionalExpression(node) { | ||
this.validateCondition(node.condition); | ||
_super.prototype.visitConditionalExpression.call(this, node); | ||
}; | ||
NoConstantConditionWalker.prototype.validateCondition = function (expression) { | ||
super.visitConditionalExpression(node); | ||
} | ||
validateCondition(expression) { | ||
this.isInConditional = true; | ||
@@ -68,4 +57,4 @@ if (this.isConstant(expression)) { | ||
this.isInConditional = false; | ||
}; | ||
NoConstantConditionWalker.prototype.isConstant = function (node) { | ||
} | ||
isConstant(node) { | ||
switch (node.kind) { | ||
@@ -99,4 +88,5 @@ case ts.SyntaxKind.StringLiteral: | ||
return false; | ||
}; | ||
return NoConstantConditionWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vQ29uc3RhbnRDb25kaXRpb25SdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLEVBQUUsV0FBTSxZQUFZLENBQUMsQ0FBQTtBQUNqQyxNQUFZLElBQUksV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBQ3hDLHdCQUFrQyxrQkFBa0IsQ0FBQyxDQUFBO0FBRXJELG1CQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7SUFHeEMsS0FBSyxDQUFDLFVBQXlCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUkseUJBQXlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBTmUsbUJBQWMsR0FBRywrQkFBK0IsQ0FBQztBQURwRCxZQUFJLE9BT2hCLENBQUE7QUFFRCx3Q0FBd0MsSUFBSSxDQUFDLFVBQVU7SUFDckQsWUFBWSxVQUF5QixFQUFFLE9BQXNCO1FBQzNELE1BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBU3JCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFSOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRS9CLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBS1MsZ0JBQWdCLENBQUMsSUFBb0I7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxD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QztnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxJQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUUsSUFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNySCxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMscUJBQXFCO2dCQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxJQUFpQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZFLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUI7Z0JBQ3RDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7b0JBQ2pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFFLElBQWlDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JFLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNkLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUI7Z0JBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFFLElBQW1DLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUFBIiwiZmlsZSI6InJ1bGVzL25vQ29uc3RhbnRDb25kaXRpb25SdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoControlRegexWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoControlRegexWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = 'unexpected control character in regular expression'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'unexpected control character in regular expression'; | ||
exports.Rule = Rule; | ||
var NoControlRegexWalker = (function (_super) { | ||
__extends(NoControlRegexWalker, _super); | ||
function NoControlRegexWalker() { | ||
_super.apply(this, arguments); | ||
class NoControlRegexWalker extends Lint.RuleWalker { | ||
visitRegularExpressionLiteral(node) { | ||
this.validateControlRegex(node); | ||
super.visitRegularExpressionLiteral(node); | ||
} | ||
NoControlRegexWalker.prototype.visitRegularExpressionLiteral = function (node) { | ||
this.validateControlRegex(node); | ||
_super.prototype.visitRegularExpressionLiteral.call(this, node); | ||
}; | ||
NoControlRegexWalker.prototype.visitNewExpression = function (node) { | ||
visitNewExpression(node) { | ||
if (node.expression.getText() === 'RegExp') { | ||
this.visitRegularExpressionFunction(node); | ||
} | ||
_super.prototype.visitNewExpression.call(this, node); | ||
}; | ||
NoControlRegexWalker.prototype.visitCallExpression = function (node) { | ||
super.visitNewExpression(node); | ||
} | ||
visitCallExpression(node) { | ||
if (node.expression.getText() === 'RegExp') { | ||
this.visitRegularExpressionFunction(node); | ||
} | ||
_super.prototype.visitCallExpression.call(this, node); | ||
}; | ||
NoControlRegexWalker.prototype.visitRegularExpressionFunction = function (node) { | ||
super.visitCallExpression(node); | ||
} | ||
visitRegularExpressionFunction(node) { | ||
if (node.arguments && node.arguments.length > 0 && node.arguments[0].kind === ts.SyntaxKind.StringLiteral) { | ||
this.validateControlRegex(node.arguments[0]); | ||
} | ||
}; | ||
NoControlRegexWalker.prototype.validateControlRegex = function (node) { | ||
} | ||
validateControlRegex(node) { | ||
if (/[\x00-\x1f]/.test(node.text)) { | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); | ||
} | ||
}; | ||
return NoControlRegexWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vQ29udHJvbFJlZ2V4UnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxFQUFFLFdBQU0sWUFBWSxDQUFDLENBQUE7QUFDakMsTUFBWSxJQUFJLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUV4QyxtQkFBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO0lBR3hDLEtBQUssQ0FBQyxVQUF5QjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0gsQ0FBQztBQU5lLG1CQUFjLEdBQUcsb0RBQW9ELENBQUM7QUFEekUsWUFBSSxPQU9oQixDQUFBO0FBRUQsbUNBQW1DLElBQUksQ0FBQyxVQUFVO0lBQ3RDLDZCQUE2QixDQUFDLElBQTBCO1FBQ2hFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVTLGtCQUFrQixDQUFDLElBQXNCO1FBQ2pELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUNELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRVMsbUJBQW1CLENBQUMsSUFBdUI7UUFDbkQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsS0FBSyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxJQUF1QjtRQUM1RCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFDMUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFxQixDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxJQUEwQjtRQUNyRCxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDN0YsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBQUEiLCJmaWxlIjoicnVsZXMvbm9Db250cm9sUmVnZXhSdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoDuplicateCaseWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoDuplicateCaseWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = 'duplicate case label'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'duplicate case label'; | ||
exports.Rule = Rule; | ||
var NoDuplicateCaseWalker = (function (_super) { | ||
__extends(NoDuplicateCaseWalker, _super); | ||
function NoDuplicateCaseWalker() { | ||
_super.apply(this, arguments); | ||
class NoDuplicateCaseWalker extends Lint.RuleWalker { | ||
visitSwitchStatement(node) { | ||
this.validateNoDupeCase(node); | ||
super.visitSwitchStatement(node); | ||
} | ||
NoDuplicateCaseWalker.prototype.visitSwitchStatement = function (node) { | ||
this.validateNoDupeCase(node); | ||
_super.prototype.visitSwitchStatement.call(this, node); | ||
}; | ||
NoDuplicateCaseWalker.prototype.validateNoDupeCase = function (node) { | ||
var _this = this; | ||
var cases = new Map(); | ||
node.caseBlock.clauses.forEach(function (clause) { | ||
validateNoDupeCase(node) { | ||
const cases = new Map(); | ||
node.caseBlock.clauses.forEach(clause => { | ||
if (clause.kind === ts.SyntaxKind.CaseClause) { | ||
var key = clause.getText(); | ||
const key = clause.getText(); | ||
if (cases.has(key)) { | ||
_this.addFailure(_this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); | ||
} | ||
@@ -45,4 +30,5 @@ else { | ||
}); | ||
}; | ||
return NoDuplicateCaseWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vRHVwbGljYXRlQ2FzZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksRUFBRSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ2pDLE1BQVksSUFBSSxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFeEMsbUJBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtJQUd4QyxLQUFLLENBQUMsVUFBeUI7UUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUM7QUFOZSxtQkFBYyxHQUFHLHNCQUFzQixDQUFDO0FBRDNDLFlBQUksT0FPaEIsQ0FBQTtBQUVELG9DQUFvQyxJQUFJLENBQUMsVUFBVTtJQUN2QyxvQkFBb0IsQ0FBQyxJQUF3QjtRQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUF3QjtRQUNqRCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztRQUUvQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUNuQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDN0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM3QixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdGLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLENBQUM7b0JBQ0osS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBdUIsQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFBQSIsImZpbGUiOiJydWxlcy9ub0R1cGxpY2F0ZUNhc2VSdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoEmptyCharacterClassWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoEmptyCharacterClassWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = "don't use empty classes in regular expressions"; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = `don't use empty classes in regular expressions`; | ||
exports.Rule = Rule; | ||
var NoEmptyCharacterClassWalker = (function (_super) { | ||
__extends(NoEmptyCharacterClassWalker, _super); | ||
function NoEmptyCharacterClassWalker() { | ||
_super.apply(this, arguments); | ||
class NoEmptyCharacterClassWalker extends Lint.RuleWalker { | ||
visitRegularExpressionLiteral(node) { | ||
this.validateEmptyCharacterClass(node); | ||
super.visitRegularExpressionLiteral(node); | ||
} | ||
NoEmptyCharacterClassWalker.prototype.visitRegularExpressionLiteral = function (node) { | ||
this.validateEmptyCharacterClass(node); | ||
_super.prototype.visitRegularExpressionLiteral.call(this, node); | ||
}; | ||
NoEmptyCharacterClassWalker.prototype.validateEmptyCharacterClass = function (node) { | ||
validateEmptyCharacterClass(node) { | ||
if (!(/^\/([^\\[]|\\.|\[([^\\\]]|\\.)+\])*\/[gim]*$/.test(node.text))) { | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); | ||
} | ||
}; | ||
return NoEmptyCharacterClassWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vRW1wdHlDaGFyYWN0ZXJDbGFzc1J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE1BQVksSUFBSSxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFeEMsbUJBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtJQUd4QyxLQUFLLENBQUMsVUFBeUI7UUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDOUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUM7QUFOZSxtQkFBYyxHQUFHLGdEQUFnRCxDQUFDO0FBRHJFLFlBQUksT0FPaEIsQ0FBQTtBQUVELDBDQUEwQyxJQUFJLENBQUMsVUFBVTtJQUM3Qyw2QkFBNkIsQ0FBQyxJQUEwQjtRQUNoRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxJQUEwQjtRQUM1RCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsOENBQThDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFBQSIsImZpbGUiOiJydWxlcy9ub0VtcHR5Q2hhcmFjdGVyQ2xhc3NSdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var token_1 = require('../support/token'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
const token_1 = require('../support/token'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoExAssignWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoExAssignWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = 'do not assign to the exception parameter'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'do not assign to the exception parameter'; | ||
exports.Rule = Rule; | ||
var NoExAssignWalker = (function (_super) { | ||
__extends(NoExAssignWalker, _super); | ||
function NoExAssignWalker() { | ||
_super.apply(this, arguments); | ||
class NoExAssignWalker extends Lint.RuleWalker { | ||
constructor() { | ||
super(...arguments); | ||
this.isInCatchClause = false; | ||
this.variableNode = null; | ||
} | ||
NoExAssignWalker.prototype.visitCatchClause = function (node) { | ||
visitCatchClause(node) { | ||
this.variableNode = node.variableDeclaration; | ||
this.isInCatchClause = true; | ||
_super.prototype.visitCatchClause.call(this, node); | ||
super.visitCatchClause(node); | ||
this.isInCatchClause = false; | ||
this.variableNode = null; | ||
}; | ||
NoExAssignWalker.prototype.visitBinaryExpression = function (node) { | ||
var _this = this; | ||
} | ||
visitBinaryExpression(node) { | ||
if (this.isInCatchClause) { | ||
@@ -47,4 +35,4 @@ if (!token_1.isAssignmentToken(node.operatorToken)) { | ||
else if (node.left.kind === ts.SyntaxKind.ArrayLiteralExpression) { | ||
var els = node.left.elements; | ||
if (els.some(function (el) { return el.getText() === _this.variableNode.getText(); })) { | ||
const els = node.left.elements; | ||
if (els.some(el => el.getText() === this.variableNode.getText())) { | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); | ||
@@ -54,5 +42,6 @@ } | ||
} | ||
_super.prototype.visitBinaryExpression.call(this, node); | ||
}; | ||
return NoExAssignWalker; | ||
}(Lint.RuleWalker)); | ||
super.visitBinaryExpression(node); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,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 |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoExtraBooleanCastWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
} | ||
Rule.FAILURE_STRING = { | ||
if: 'redundant double negation in an if statement condition', | ||
do: 'redundant double negation in a do while loop condition', | ||
while: 'redundant double negation in a while loop condition', | ||
ternaryif: 'redundant double negation in a ternary condition', | ||
for: 'redundant double negation in a for loop condition', | ||
unaryCast: 'redundant multiple negation', | ||
objectCast: 'redundant double negation in call to Boolean()', | ||
newCast: 'redundant double negation in Boolean constructor call' | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoExtraBooleanCastWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = { | ||
if: 'redundant double negation in an if statement condition', | ||
do: 'redundant double negation in a do while loop condition', | ||
while: 'redundant double negation in a while loop condition', | ||
ternaryif: 'redundant double negation in a ternary condition', | ||
for: 'redundant double negation in a for loop condition', | ||
unaryCast: 'redundant multiple negation', | ||
objectCast: 'redundant double negation in call to Boolean()', | ||
newCast: 'redundant double negation in Boolean constructor call' | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
exports.Rule = Rule; | ||
var NoExtraBooleanCastWalker = (function (_super) { | ||
__extends(NoExtraBooleanCastWalker, _super); | ||
function NoExtraBooleanCastWalker() { | ||
_super.apply(this, arguments); | ||
class NoExtraBooleanCastWalker extends Lint.RuleWalker { | ||
visitPrefixUnaryExpression(node) { | ||
this.validateNoExtraBoolean(node); | ||
super.visitPrefixUnaryExpression(node); | ||
} | ||
NoExtraBooleanCastWalker.prototype.visitPrefixUnaryExpression = function (node) { | ||
this.validateNoExtraBoolean(node); | ||
_super.prototype.visitPrefixUnaryExpression.call(this, node); | ||
}; | ||
NoExtraBooleanCastWalker.prototype.validateNoExtraBoolean = function (node) { | ||
var parent = node.parent; | ||
var grandparent = parent.parent; | ||
validateNoExtraBoolean(node) { | ||
const parent = node.parent; | ||
let grandparent = parent.parent; | ||
if (node.operator !== ts.SyntaxKind.ExclamationToken || | ||
@@ -75,4 +61,5 @@ parent.kind !== ts.SyntaxKind.PrefixUnaryExpression || | ||
} | ||
}; | ||
return NoExtraBooleanCastWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vRXh0cmFCb29sZWFuQ2FzdFJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksRUFBRSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ2pDLE1BQVksSUFBSSxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFeEMsbUJBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtJQVl4QyxLQUFLLENBQUMsVUFBeUI7UUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0UsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUM7QUFmZSxtQkFBYyxHQUFHO0lBQzdCLEVBQUUsRUFBRSx3REFBd0Q7SUFDNUQsRUFBRSxFQUFFLHdEQUF3RDtJQUM1RCxLQUFLLEVBQUUscURBQXFEO0lBQzVELFNBQVMsRUFBRSxrREFBa0Q7SUFDN0QsR0FBRyxFQUFFLG1EQUFtRDtJQUN4RCxTQUFTLEVBQUUsNkJBQTZCO0lBQ3hDLFVBQVUsRUFBRSxnREFBZ0Q7SUFDNUQsT0FBTyxFQUFFLHVEQUF1RDtDQUNqRSxDQUFDO0FBVlMsWUFBSSxPQWdCaEIsQ0FBQTtBQUVELHVDQUF1QyxJQUFJLENBQUMsVUFBVTtJQUUxQywwQkFBMEIsQ0FBQyxJQUE4QjtRQUNqRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUE4QjtRQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFHaEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxFQUFFLENB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UyxDQUFDLENBQUMsQ0FBQztRQUN2RyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLENBQUM7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3RyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDckcsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBQUEiLCJmaWxlIjoicnVsZXMvbm9FeHRyYUJvb2xlYW5DYXN0UnVsZS5qcyIsInNvdXJjZVJvb3QiOiJkOlxccHJvamVjdHNcXHRzbGludC1lc2xpbnQtcnVsZXNcXHNyYyJ9 |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoExtraSemiWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoExtraSemiWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = 'unnecessary semicolon'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'unnecessary semicolon'; | ||
exports.Rule = Rule; | ||
var NoExtraSemiWalker = (function (_super) { | ||
__extends(NoExtraSemiWalker, _super); | ||
function NoExtraSemiWalker() { | ||
_super.apply(this, arguments); | ||
class NoExtraSemiWalker extends Lint.RuleWalker { | ||
constructor() { | ||
super(...arguments); | ||
this.ALLOWED_PARENT_TYPES = [ | ||
@@ -34,24 +23,23 @@ ts.SyntaxKind.ForStatement, | ||
} | ||
NoExtraSemiWalker.prototype.visitNode = function (node) { | ||
visitNode(node) { | ||
if (node.kind === ts.SyntaxKind.EmptyStatement) { | ||
this.visitEmptyStatement(node); | ||
} | ||
_super.prototype.visitNode.call(this, node); | ||
}; | ||
NoExtraSemiWalker.prototype.visitClassDeclaration = function (node) { | ||
super.visitNode(node); | ||
} | ||
visitClassDeclaration(node) { | ||
this.checkClass(node); | ||
_super.prototype.visitClassDeclaration.call(this, node); | ||
}; | ||
NoExtraSemiWalker.prototype.visitEmptyStatement = function (node) { | ||
super.visitClassDeclaration(node); | ||
} | ||
visitEmptyStatement(node) { | ||
if (this.ALLOWED_PARENT_TYPES.indexOf(node.parent.kind) === -1) { | ||
this.validateNoExtraSemi(node); | ||
} | ||
}; | ||
NoExtraSemiWalker.prototype.checkClass = function (node) { | ||
var children = node.getChildren().slice(node.getChildren().indexOf(node.getChildren().find(function (child) { return child.kind === ts.SyntaxKind.FirstPunctuation; }))); | ||
} | ||
checkClass(node) { | ||
const children = node.getChildren().slice(node.getChildren().indexOf(node.getChildren().find(child => child.kind === ts.SyntaxKind.FirstPunctuation))); | ||
this.checkClassChildren(children); | ||
}; | ||
NoExtraSemiWalker.prototype.checkClassChildren = function (children) { | ||
for (var _i = 0, children_1 = children; _i < children_1.length; _i++) { | ||
var child = children_1[_i]; | ||
} | ||
checkClassChildren(children) { | ||
for (let child of children) { | ||
if ((child.kind === ts.SyntaxKind.SyntaxList || child.kind === ts.SyntaxKind.SemicolonClassElement) && child.getText() === ';') { | ||
@@ -64,7 +52,8 @@ this.validateNoExtraSemi(child); | ||
} | ||
}; | ||
NoExtraSemiWalker.prototype.validateNoExtraSemi = function (node) { | ||
} | ||
validateNoExtraSemi(node) { | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); | ||
}; | ||
return NoExtraSemiWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,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Q0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFhO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7QUFDSCxDQUFDO0FBQUEiLCJmaWxlIjoicnVsZXMvbm9FeHRyYVNlbWlSdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoInnerDeclarationsWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoInnerDeclarationsWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
exports.Rule = Rule; | ||
var NoInnerDeclarationsWalker = (function (_super) { | ||
__extends(NoInnerDeclarationsWalker, _super); | ||
function NoInnerDeclarationsWalker() { | ||
_super.apply(this, arguments); | ||
class NoInnerDeclarationsWalker extends Lint.RuleWalker { | ||
constructor() { | ||
super(...arguments); | ||
this.VALID_PARENT_TYPES = [ | ||
@@ -35,24 +24,24 @@ ts.SyntaxKind.SourceFile, | ||
} | ||
NoInnerDeclarationsWalker.prototype.visitFunctionDeclaration = function (node) { | ||
visitFunctionDeclaration(node) { | ||
this.validateInnerDeclaration(node); | ||
_super.prototype.visitFunctionDeclaration.call(this, node); | ||
}; | ||
NoInnerDeclarationsWalker.prototype.visitVariableStatement = function (node) { | ||
super.visitFunctionDeclaration(node); | ||
} | ||
visitVariableStatement(node) { | ||
if (this.hasOption('both') && node.declarationList.getFirstToken().kind === ts.SyntaxKind.VarKeyword) { | ||
this.validateInnerDeclaration(node); | ||
} | ||
_super.prototype.visitVariableStatement.call(this, node); | ||
}; | ||
NoInnerDeclarationsWalker.prototype.validateInnerDeclaration = function (node) { | ||
var body = this.nearestBody(node); | ||
var isValid = (body.isSourceFile && body.distance === 1) || body.distance === 2; | ||
super.visitVariableStatement(node); | ||
} | ||
validateInnerDeclaration(node) { | ||
const body = this.nearestBody(node); | ||
const isValid = (body.isSourceFile && body.distance === 1) || body.distance === 2; | ||
if (!isValid) { | ||
var decl = node.kind === ts.SyntaxKind.FunctionDeclaration ? 'function' : 'variable'; | ||
var root = body.isSourceFile ? 'program' : 'function body'; | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), "move " + decl + " declaration to " + root + " root")); | ||
const decl = node.kind === ts.SyntaxKind.FunctionDeclaration ? 'function' : 'variable'; | ||
const root = body.isSourceFile ? 'program' : 'function body'; | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), `move ${decl} declaration to ${root} root`)); | ||
} | ||
}; | ||
NoInnerDeclarationsWalker.prototype.nearestBody = function (node) { | ||
var ancestor = node.parent; | ||
var generation = 1; | ||
} | ||
nearestBody(node) { | ||
let ancestor = node.parent; | ||
let generation = 1; | ||
while (ancestor && this.VALID_PARENT_TYPES.indexOf(ancestor.kind) === -1) { | ||
@@ -66,4 +55,5 @@ generation++; | ||
}; | ||
}; | ||
return NoInnerDeclarationsWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vSW5uZXJEZWNsYXJhdGlvbnNSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLEVBQUUsV0FBTSxZQUFZLENBQUMsQ0FBQTtBQUNqQyxNQUFZLElBQUksV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBRXhDLG1CQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7SUFDeEMsS0FBSyxDQUFDLFVBQXlCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUkseUJBQXlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBTFksWUFBSSxPQUtoQixDQUFBO0FBRUQsd0NBQXdDLElBQUksQ0FBQyxVQUFVO0lBQXZEO1FBQXdDLG9CQUFlO1FBQzdDLHVCQUFrQixHQUFHO1lBQzNCLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVTtZQUN4QixFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQjtZQUNqQyxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQjtZQUNoQyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWE7WUFDM0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUI7WUFDL0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUI7WUFDL0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXO1NBQzFCLENBQUM7SUF3Q0osQ0FBQztJQXRDVyx3QkFBd0IsQ0FBQyxJQUE0QjtRQUM3RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFUyxzQkFBc0IsQ0FBQyxJQUEwQjtRQUN6RCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUNyRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sd0JBQXdCLENBQUMsSUFBYTtRQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDO1FBRWxGLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNiLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsR0FBRyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQ3ZGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxHQUFHLGVBQWUsQ0FBQztZQUU3RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLElBQUksbUJBQW1CLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFhO1FBQy9CLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRW5CLE9BQU8sUUFBUSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsVUFBVSxFQUFFLENBQUM7WUFDYixRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxDQUFDO1lBQ0wsWUFBWSxFQUFFLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDbkYsUUFBUSxFQUFFLFVBQVU7U0FDckIsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBQUEiLCJmaWxlIjoicnVsZXMvbm9Jbm5lckRlY2xhcmF0aW9uc1J1bGUuanMiLCJzb3VyY2VSb290IjoiZDpcXHByb2plY3RzXFx0c2xpbnQtZXNsaW50LXJ1bGVzXFxzcmMifQ== |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoInvalidRegexpWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoInvalidRegexpWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
exports.Rule = Rule; | ||
var NoInvalidRegexpWalker = (function (_super) { | ||
__extends(NoInvalidRegexpWalker, _super); | ||
function NoInvalidRegexpWalker() { | ||
_super.apply(this, arguments); | ||
class NoInvalidRegexpWalker extends Lint.RuleWalker { | ||
visitNewExpression(node) { | ||
this.validateInvalidRegExp(node); | ||
super.visitNewExpression(node); | ||
} | ||
NoInvalidRegexpWalker.prototype.visitNewExpression = function (node) { | ||
visitCallExpression(node) { | ||
this.validateInvalidRegExp(node); | ||
_super.prototype.visitNewExpression.call(this, node); | ||
}; | ||
NoInvalidRegexpWalker.prototype.visitCallExpression = function (node) { | ||
this.validateInvalidRegExp(node); | ||
_super.prototype.visitCallExpression.call(this, node); | ||
}; | ||
NoInvalidRegexpWalker.prototype.validateInvalidRegExp = function (node) { | ||
super.visitCallExpression(node); | ||
} | ||
validateInvalidRegExp(node) { | ||
if (node.expression.getText() === 'RegExp') { | ||
var args = node.arguments; | ||
const args = node.arguments; | ||
if (args && args.length > 0 && args[0].kind === ts.SyntaxKind.StringLiteral) { | ||
var expr = args[0].text; | ||
var flags = args.length > 1 && args[1].kind === ts.SyntaxKind.StringLiteral ? args[1].text : undefined; | ||
var regex = void 0; | ||
const expr = args[0].text; | ||
const flags = args.length > 1 && args[1].kind === ts.SyntaxKind.StringLiteral ? args[1].text : undefined; | ||
let regex; | ||
try { | ||
@@ -49,4 +35,5 @@ regex = new RegExp(expr, flags); | ||
} | ||
}; | ||
return NoInvalidRegexpWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vSW52YWxpZFJlZ2V4cFJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksRUFBRSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ2pDLE1BQVksSUFBSSxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFeEMsbUJBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtJQUN4QyxLQUFLLENBQUMsVUFBeUI7UUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUM7QUFMWSxZQUFJLE9BS2hCLENBQUE7QUFFRCxvQ0FBb0MsSUFBSSxDQUFDLFVBQVU7SUFDdkMsa0JBQWtCLENBQUMsSUFBc0I7UUFDakQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRVMsbUJBQW1CLENBQUMsSUFBdUI7UUFDbkQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8scUJBQXFCLENBQUMsSUFBdUI7UUFDbkQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDNUIsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUM1RSxNQUFNLElBQUksR0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFzQixDQUFDLElBQUksQ0FBQztnQkFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBSSxJQUFJLENBQUMsQ0FBQyxDQUFzQixDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7Z0JBRS9ILElBQUksS0FBYSxDQUFDO2dCQUNsQixJQUFJLENBQUM7b0JBQ0gsS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDbEMsQ0FDQTtnQkFBQSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUFBIiwiZmlsZSI6InJ1bGVzL25vSW52YWxpZFJlZ2V4cFJ1bGUuanMiLCJzb3VyY2VSb290IjoiZDpcXHByb2plY3RzXFx0c2xpbnQtZXNsaW50LXJ1bGVzXFxzcmMifQ== |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoIrregularWhitespaceWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoIrregularWhitespaceWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.RULE_NAME = 'no-irregular-whitespace'; | ||
Rule.FAILURE_STRING = 'irregular whitespace not allowed'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.RULE_NAME = 'no-irregular-whitespace'; | ||
Rule.FAILURE_STRING = 'irregular whitespace not allowed'; | ||
exports.Rule = Rule; | ||
var NoIrregularWhitespaceWalker = (function (_super) { | ||
__extends(NoIrregularWhitespaceWalker, _super); | ||
function NoIrregularWhitespaceWalker() { | ||
_super.apply(this, arguments); | ||
class NoIrregularWhitespaceWalker extends Lint.RuleWalker { | ||
constructor() { | ||
super(...arguments); | ||
this.IRREGULAR_WHITESPACE = /[\u0085\u00A0\ufeff\f\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/mg; | ||
this.IRREGULAR_LINE_TERMINATORS = /[\u2028\u2029]/mg; | ||
} | ||
NoIrregularWhitespaceWalker.prototype.visitSourceFile = function (node) { | ||
visitSourceFile(node) { | ||
this.validateIrregularWhitespace(node); | ||
_super.prototype.visitSourceFile.call(this, node); | ||
}; | ||
NoIrregularWhitespaceWalker.prototype.visitNode = function (node) { | ||
super.visitSourceFile(node); | ||
} | ||
visitNode(node) { | ||
if (node.kind === ts.SyntaxKind.StringLiteral) { | ||
this.removeStringError(node); | ||
} | ||
_super.prototype.visitNode.call(this, node); | ||
}; | ||
NoIrregularWhitespaceWalker.prototype.removeStringError = function (node) { | ||
var start = node.getStart(); | ||
var end = node.getEnd(); | ||
var failures = this.getFailures(); | ||
for (var i = failures.length - 1; i >= 0; i--) { | ||
var failure = failures[i]; | ||
super.visitNode(node); | ||
} | ||
removeStringError(node) { | ||
const start = node.getStart(); | ||
const end = node.getEnd(); | ||
const failures = this.getFailures(); | ||
for (let i = failures.length - 1; i >= 0; i--) { | ||
let failure = failures[i]; | ||
if (failure.getRuleName() === Rule.RULE_NAME) { | ||
@@ -52,20 +41,20 @@ if (failure.getStartPosition().getPosition() >= start && failure.getEndPosition().getPosition() <= end) { | ||
} | ||
}; | ||
NoIrregularWhitespaceWalker.prototype.validateIrregularWhitespace = function (node) { | ||
var _this = this; | ||
var lines = node.text.split(/\n/g); | ||
lines.forEach(function (line, i) { | ||
var match = _this.IRREGULAR_WHITESPACE.exec(line); | ||
} | ||
validateIrregularWhitespace(node) { | ||
const lines = node.text.split(/\n/g); | ||
lines.forEach((line, i) => { | ||
let match = this.IRREGULAR_WHITESPACE.exec(line); | ||
while (match) { | ||
_this.addFailure(_this.createFailure(node.getPositionOfLineAndCharacter(i, match.index), 1, Rule.FAILURE_STRING)); | ||
match = _this.IRREGULAR_WHITESPACE.exec(line); | ||
this.addFailure(this.createFailure(node.getPositionOfLineAndCharacter(i, match.index), 1, Rule.FAILURE_STRING)); | ||
match = this.IRREGULAR_WHITESPACE.exec(line); | ||
} | ||
match = _this.IRREGULAR_LINE_TERMINATORS.exec(line); | ||
match = this.IRREGULAR_LINE_TERMINATORS.exec(line); | ||
while (match) { | ||
_this.addFailure(_this.createFailure(node.getPositionOfLineAndCharacter(i, match.index), 1, Rule.FAILURE_STRING)); | ||
match = _this.IRREGULAR_LINE_TERMINATORS.exec(line); | ||
this.addFailure(this.createFailure(node.getPositionOfLineAndCharacter(i, match.index), 1, Rule.FAILURE_STRING)); | ||
match = this.IRREGULAR_LINE_TERMINATORS.exec(line); | ||
} | ||
}); | ||
}; | ||
return NoIrregularWhitespaceWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vSXJyZWd1bGFyV2hpdGVzcGFjZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksRUFBRSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ2pDLE1BQVksSUFBSSxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFeEMsbUJBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtJQUl4QyxLQUFLLENBQUMsVUFBeUI7UUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDOUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUM7QUFQZSxjQUFTLEdBQUcseUJBQXlCLENBQUM7QUFDdEMsbUJBQWMsR0FBRyxrQ0FBa0MsQ0FBQztBQUZ2RCxZQUFJLE9BUWhCLENBQUE7QUFFRCwwQ0FBMEMsSUFBSSxDQUFDLFVBQVU7SUFBekQ7UUFBMEMsb0JBQWU7UUFDL0MseUJBQW9CLEdBQUcseUlBQXlJLENBQUM7UUFDakssK0JBQTBCLEdBQUcsa0JBQWtCLENBQUM7SUFrRDFELENBQUM7SUFoRFcsZUFBZSxDQUFDLElBQW1CO1FBRTNDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFUyxTQUFTLENBQUMsSUFBYTtRQUMvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUU5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBd0IsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUFzQjtRQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRTFCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVwQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDOUMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTFCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDN0MsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN2RyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDeEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLDJCQUEyQixDQUFDLElBQW1CO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pELE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDaEgsS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELEtBQUssR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25ELE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDaEgsS0FBSyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztBQUNILENBQUM7QUFBQSIsImZpbGUiOiJydWxlcy9ub0lycmVndWxhcldoaXRlc3BhY2VSdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoMultiSpacesWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoMultiSpacesWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
exports.Rule = Rule; | ||
var NoMultiSpacesWalker = (function (_super) { | ||
__extends(NoMultiSpacesWalker, _super); | ||
function NoMultiSpacesWalker(sourceFile, options) { | ||
_super.call(this, sourceFile, options); | ||
this.EXCEPTION_MAP = (_a = {}, | ||
_a[ts.SyntaxKind.VariableDeclaration] = 'VariableDeclaration', | ||
_a[ts.SyntaxKind.PropertyAssignment] = 'PropertyAssignment', | ||
_a[ts.SyntaxKind.BinaryExpression] = 'BinaryExpression', | ||
_a | ||
); | ||
class NoMultiSpacesWalker extends Lint.RuleWalker { | ||
constructor(sourceFile, options) { | ||
super(sourceFile, options); | ||
this.EXCEPTION_MAP = { | ||
[ts.SyntaxKind.VariableDeclaration]: 'VariableDeclaration', | ||
[ts.SyntaxKind.PropertyAssignment]: 'PropertyAssignment', | ||
[ts.SyntaxKind.BinaryExpression]: 'BinaryExpression' | ||
}; | ||
this.STRING_TYPES = [ | ||
@@ -40,3 +28,3 @@ ts.SyntaxKind.NoSubstitutionTemplateLiteral, | ||
this.targetIndex = 0; | ||
var opt = this.getOptions(); | ||
const opt = this.getOptions(); | ||
this.src = sourceFile.getFullText(); | ||
@@ -49,3 +37,3 @@ if (opt.length) { | ||
} | ||
var pattern = /[^\n\r\u2028\u2029\t ].? {2,}/g; | ||
const pattern = /[^\n\r\u2028\u2029\t ].? {2,}/g; | ||
while (pattern.test(this.src)) { | ||
@@ -56,13 +44,12 @@ this.targets.push(pattern.lastIndex); | ||
this.lastNode = sourceFile.getLastToken(); | ||
var _a; | ||
} | ||
NoMultiSpacesWalker.prototype.inRange = function (x, range) { | ||
inRange(x, range) { | ||
return x >= range[0] && x <= range[1]; | ||
}; | ||
NoMultiSpacesWalker.prototype.warn = function (value, pos, node) { | ||
var msg = "Multiple spaces found before '" + value + "'."; | ||
var exceptionName = this.EXCEPTION_MAP[node.parent.kind]; | ||
var report = true; | ||
var start = node.getFullStart() - 1; | ||
var previousChar = this.src.substring(start, start + 1); | ||
} | ||
warn(value, pos, node) { | ||
const msg = `Multiple spaces found before '${value}'.`; | ||
const exceptionName = this.EXCEPTION_MAP[node.parent.kind]; | ||
let report = true; | ||
const start = node.getFullStart() - 1; | ||
const previousChar = this.src.substring(start, start + 1); | ||
if (exceptionName && this.exceptions[exceptionName]) { | ||
@@ -74,3 +61,3 @@ if (previousChar !== ',') { | ||
if (previousChar === ':') { | ||
var crt = node.parent; | ||
let crt = node.parent; | ||
while (crt.kind !== ts.SyntaxKind.SourceFile) { | ||
@@ -89,7 +76,6 @@ crt = crt.parent; | ||
} | ||
}; | ||
NoMultiSpacesWalker.prototype.walkChildren = function (node) { | ||
var _this = this; | ||
var range = [node.getStart(), node.getEnd()]; | ||
for (var i = this.targetIndex, len = this.targets.length, target = void 0; i < len; i++) { | ||
} | ||
walkChildren(node) { | ||
const range = [node.getStart(), node.getEnd()]; | ||
for (let i = this.targetIndex, len = this.targets.length, target; i < len; i++) { | ||
target = this.targets[i]; | ||
@@ -104,13 +90,13 @@ if (this.inRange(target, range)) { | ||
if (node === this.lastNode) { | ||
this.targets.forEach(function (target) { | ||
var valid = _this.targetNode[target]; | ||
this.targets.forEach((target) => { | ||
const valid = this.targetNode[target]; | ||
if (target === valid.getStart()) { | ||
_this.warn(valid.getText(), target, valid); | ||
this.warn(valid.getText(), target, valid); | ||
} | ||
else if (target === valid.getEnd() - 1 && _this.STRING_TYPES.indexOf(valid.kind) === -1) { | ||
var endChar = _this.src.substring(target, valid.getEnd()); | ||
_this.warn(endChar, target, valid); | ||
else if (target === valid.getEnd() - 1 && this.STRING_TYPES.indexOf(valid.kind) === -1) { | ||
const endChar = this.src.substring(target, valid.getEnd()); | ||
this.warn(endChar, target, valid); | ||
} | ||
else { | ||
if (_this.src.charAt(target) !== '\n' && valid.kind !== ts.SyntaxKind.SourceFile) { | ||
if (this.src.charAt(target) !== '\n' && valid.kind !== ts.SyntaxKind.SourceFile) { | ||
} | ||
@@ -120,8 +106,9 @@ } | ||
} | ||
var children = node.getChildren(); | ||
for (var index in children) { | ||
const children = node.getChildren(); | ||
for (let index in children) { | ||
this.visitNode(children[index]); | ||
} | ||
}; | ||
return NoMultiSpacesWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vTXVsdGlTcGFjZXNSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFZLEVBQUUsV0FBTSxZQUFZLENBQUMsQ0FBQTtBQUNqQyxNQUFZLElBQUksV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBRXhDLG1CQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7SUFFeEMsS0FBSyxDQUFDLFVBQXlCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQW1CLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBTlksWUFBSSxPQU1oQixDQUFBO0FBaUJELGtDQUFrQyxJQUFJLENBQUMsVUFBVTtJQWtCL0MsWUFBWSxVQUF5QixFQUFFLE9BQXNCO1FBQzNELE1BQU0sVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBakJyQixrQkFBYSxHQUFHO1lBQ3RCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLHFCQUFxQjtZQUMxRCxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsRUFBRSxvQkFBb0I7WUFDeEQsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsa0JBQWtCO1NBQ3JELENBQUM7UUFDTSxpQkFBWSxHQUFHO1lBQ3JCLEVBQUUsQ0FBQyxVQUFVLENBQUMsNkJBQTZCO1lBQzNDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYTtTQUM1QixDQUFDO1FBQ00sZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUV4QixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFDekIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUl0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQy9DLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBVyxnQ0FBZ0MsQ0FBQztRQUN6RCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLE9BQU8sQ0FBQyxDQUFDLEVBQUUsS0FBSztRQUN0QixNQUFNLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJO1FBQzNCLE1BQU0sR0FBRyxHQUFHLGlDQUFpQyxLQUFLLElBQUksQ0FBQztRQUN2RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE1BQU0sS0FBSyxHQUFXLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQVcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVsRSxFQUFFLENBQUMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEQsRUFBRSxDQUFDLENBQUMsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDakIsQ0FBQztRQUNILENBQUM7UUFJRCxFQUFFLENBQUMsQ0FBQyxZQUFZLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN6QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM3QyxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztnQkFDakIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztvQkFDbEQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDakIsQ0FBQztvQkFDRCxLQUFLLENBQUM7Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWSxDQUFDLElBQWE7UUFDbEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0MsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMvRSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBR2hDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLENBQUM7WUFDRCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUU5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFFM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNO2dCQUMxQixNQUFNLEtBQUssR0FBWSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMvQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2dCQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN6RixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7b0JBS2xGLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFjLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBQUEiLCJmaWxlIjoicnVsZXMvbm9NdWx0aVNwYWNlc1J1bGUuanMiLCJzb3VyY2VSb290IjoiZDpcXHByb2plY3RzXFx0c2xpbnQtZXNsaW50LXJ1bGVzXFxzcmMifQ== |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoRegexSpacesWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoRegexSpacesWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
exports.Rule = Rule; | ||
var NoRegexSpacesWalker = (function (_super) { | ||
__extends(NoRegexSpacesWalker, _super); | ||
function NoRegexSpacesWalker() { | ||
_super.apply(this, arguments); | ||
class NoRegexSpacesWalker extends Lint.RuleWalker { | ||
visitRegularExpressionLiteral(node) { | ||
this.validateMultipleSpaces(node); | ||
super.visitRegularExpressionLiteral(node); | ||
} | ||
NoRegexSpacesWalker.prototype.visitRegularExpressionLiteral = function (node) { | ||
this.validateMultipleSpaces(node); | ||
_super.prototype.visitRegularExpressionLiteral.call(this, node); | ||
}; | ||
NoRegexSpacesWalker.prototype.validateMultipleSpaces = function (node) { | ||
var res = /( {2,})+?/.exec(node.text); | ||
validateMultipleSpaces(node) { | ||
const res = /( {2,})+?/.exec(node.text); | ||
if (res) { | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), "spaces are hard to count - use {" + res[0].length + "}")); | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), `spaces are hard to count - use {${res[0].length}}`)); | ||
} | ||
}; | ||
return NoRegexSpacesWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vUmVnZXhTcGFjZXNSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxNQUFZLElBQUksV0FBTSxpQkFBaUIsQ0FBQyxDQUFBO0FBRXhDLG1CQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7SUFDeEMsS0FBSyxDQUFDLFVBQXlCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQW1CLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBTFksWUFBSSxPQUtoQixDQUFBO0FBRUQsa0NBQWtDLElBQUksQ0FBQyxVQUFVO0lBQ3JDLDZCQUE2QixDQUFDLElBQTBCO1FBQ2hFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQTBCO1FBQ3ZELE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxtQ0FBbUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3SCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFBQSIsImZpbGUiOiJydWxlcy9ub1JlZ2V4U3BhY2VzUnVsZS5qcyIsInNvdXJjZVJvb3QiOiJkOlxccHJvamVjdHNcXHRzbGludC1lc2xpbnQtcnVsZXNcXHNyYyJ9 |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoSparseArraysWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoSparseArraysWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = 'unexpected comma in middle of array'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'unexpected comma in middle of array'; | ||
exports.Rule = Rule; | ||
var NoSparseArraysWalker = (function (_super) { | ||
__extends(NoSparseArraysWalker, _super); | ||
function NoSparseArraysWalker() { | ||
_super.apply(this, arguments); | ||
class NoSparseArraysWalker extends Lint.RuleWalker { | ||
visitArrayLiteralExpression(node) { | ||
this.validateNoSparseArray(node); | ||
super.visitArrayLiteralExpression(node); | ||
} | ||
NoSparseArraysWalker.prototype.visitArrayLiteralExpression = function (node) { | ||
this.validateNoSparseArray(node); | ||
_super.prototype.visitArrayLiteralExpression.call(this, node); | ||
}; | ||
NoSparseArraysWalker.prototype.validateNoSparseArray = function (node) { | ||
var hasEmptySlot = node.elements.some(function (el) { return el.kind === ts.SyntaxKind.OmittedExpression; }); | ||
validateNoSparseArray(node) { | ||
const hasEmptySlot = node.elements.some(el => el.kind === ts.SyntaxKind.OmittedExpression); | ||
if (hasEmptySlot) { | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); | ||
} | ||
}; | ||
return NoSparseArraysWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vU3BhcnNlQXJyYXlzUnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxFQUFFLFdBQU0sWUFBWSxDQUFDLENBQUE7QUFDakMsTUFBWSxJQUFJLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUV4QyxtQkFBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO0lBR3hDLEtBQUssQ0FBQyxVQUF5QjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0gsQ0FBQztBQU5lLG1CQUFjLEdBQUcscUNBQXFDLENBQUM7QUFEMUQsWUFBSSxPQU9oQixDQUFBO0FBRUQsbUNBQW1DLElBQUksQ0FBQyxVQUFVO0lBQ3RDLDJCQUEyQixDQUFDLElBQStCO1FBQ25FLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQStCO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUzRixFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzdGLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUFBIiwiZmlsZSI6InJ1bGVzL25vU3BhcnNlQXJyYXlzUnVsZS5qcyIsInNvdXJjZVJvb3QiOiJkOlxccHJvamVjdHNcXHRzbGludC1lc2xpbnQtcnVsZXNcXHNyYyJ9 |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new NoUnexpectedMultilineWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
} | ||
Rule.FAILURE_STRING = { | ||
func: 'unexpected newline between function and ( of function call', | ||
prop: 'unexpected newline between object and [ of property access', | ||
template: 'unexpected newline between template tag and template literal' | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new NoUnexpectedMultilineWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = { | ||
func: 'unexpected newline between function and ( of function call', | ||
prop: 'unexpected newline between object and [ of property access', | ||
template: 'unexpected newline between template tag and template literal' | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
exports.Rule = Rule; | ||
var NoUnexpectedMultilineWalker = (function (_super) { | ||
__extends(NoUnexpectedMultilineWalker, _super); | ||
function NoUnexpectedMultilineWalker() { | ||
_super.apply(this, arguments); | ||
} | ||
NoUnexpectedMultilineWalker.prototype.visitCallExpression = function (node) { | ||
var firstLeftParen = node.getChildren().filter(function (ch) { return ch.kind === ts.SyntaxKind.OpenParenToken; })[0]; | ||
class NoUnexpectedMultilineWalker extends Lint.RuleWalker { | ||
visitCallExpression(node) { | ||
const firstLeftParen = node.getChildren().filter(ch => ch.kind === ts.SyntaxKind.OpenParenToken)[0]; | ||
if (this.isBreakBefore(firstLeftParen)) { | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), this.getMessage(node))); | ||
} | ||
_super.prototype.visitCallExpression.call(this, node); | ||
}; | ||
NoUnexpectedMultilineWalker.prototype.visitElementAccessExpression = function (node) { | ||
var firstLeftSquareBracket = node.getChildren().filter(function (ch) { return ch.kind === ts.SyntaxKind.OpenBracketToken; })[0]; | ||
super.visitCallExpression(node); | ||
} | ||
visitElementAccessExpression(node) { | ||
const firstLeftSquareBracket = node.getChildren().filter(ch => ch.kind === ts.SyntaxKind.OpenBracketToken)[0]; | ||
if (this.isBreakBefore(firstLeftSquareBracket)) { | ||
this.addFailure(this.createFailure(node.getStart(), node.getWidth(), this.getMessage(node))); | ||
} | ||
_super.prototype.visitElementAccessExpression.call(this, node); | ||
}; | ||
NoUnexpectedMultilineWalker.prototype.visitNode = function (node) { | ||
super.visitElementAccessExpression(node); | ||
} | ||
visitNode(node) { | ||
if (node.kind === ts.SyntaxKind.TaggedTemplateExpression) { | ||
var children = node.getChildren(); | ||
var tag = children.filter(function (ch) { return ch.kind === ts.SyntaxKind.Identifier; })[0]; | ||
var tagIndex = children.indexOf(tag); | ||
const children = node.getChildren(); | ||
const tag = children.filter(ch => ch.kind === ts.SyntaxKind.Identifier)[0]; | ||
const tagIndex = children.indexOf(tag); | ||
if (tag && children[tagIndex + 1]) { | ||
var template = children[tagIndex + 1]; | ||
const template = children[tagIndex + 1]; | ||
if (this.isBreakBefore(template)) { | ||
@@ -57,11 +43,11 @@ this.addFailure(this.createFailure(node.getStart(), node.getWidth(), this.getMessage(node))); | ||
} | ||
_super.prototype.visitNode.call(this, node); | ||
}; | ||
NoUnexpectedMultilineWalker.prototype.isBreakBefore = function (node) { | ||
super.visitNode(node); | ||
} | ||
isBreakBefore(node) { | ||
if (node.parent) { | ||
var children = node.parent.getChildren(); | ||
var nodeIndex = children.indexOf(node); | ||
const children = node.parent.getChildren(); | ||
const nodeIndex = children.indexOf(node); | ||
if (nodeIndex > 0) { | ||
var nodeLine = this.getStartPosition(node).line; | ||
var previousNodeLine = this.getEndPosition(children[nodeIndex - 1]).line; | ||
const nodeLine = this.getStartPosition(node).line; | ||
const previousNodeLine = this.getEndPosition(children[nodeIndex - 1]).line; | ||
if (nodeLine !== previousNodeLine) { | ||
@@ -73,4 +59,4 @@ return true; | ||
return false; | ||
}; | ||
NoUnexpectedMultilineWalker.prototype.getMessage = function (node) { | ||
} | ||
getMessage(node) { | ||
switch (node.kind) { | ||
@@ -86,10 +72,11 @@ case ts.SyntaxKind.CallExpression: | ||
} | ||
}; | ||
NoUnexpectedMultilineWalker.prototype.getStartPosition = function (node) { | ||
} | ||
getStartPosition(node) { | ||
return node.getSourceFile().getLineAndCharacterOfPosition(node.getStart()); | ||
}; | ||
NoUnexpectedMultilineWalker.prototype.getEndPosition = function (node) { | ||
} | ||
getEndPosition(node) { | ||
return node.getSourceFile().getLineAndCharacterOfPosition(node.getEnd()); | ||
}; | ||
return NoUnexpectedMultilineWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL25vVW5leHBlY3RlZE11bHRpbGluZVJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksRUFBRSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ2pDLE1BQVksSUFBSSxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFeEMsbUJBQTBCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWTtJQU94QyxLQUFLLENBQUMsVUFBeUI7UUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSwyQkFBMkIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDOUUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUM7QUFWZSxtQkFBYyxHQUFHO0lBQzdCLElBQUksRUFBRSw0REFBNEQ7SUFDbEUsSUFBSSxFQUFFLDREQUE0RDtJQUNsRSxRQUFRLEVBQUUsOERBQThEO0NBQ3pFLENBQUM7QUFMUyxZQUFJLE9BV2hCLENBQUE7QUFFRCwwQ0FBMEMsSUFBSSxDQUFDLFVBQVU7SUFDN0MsbUJBQW1CLENBQUMsSUFBdUI7UUFDbkQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFFRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLDRCQUE0QixDQUFDLElBQWdDO1FBQ3JFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsS0FBSyxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFJUyxTQUFTLENBQUMsSUFBYTtRQUMvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQyxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0UsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUV2QyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRWxDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU8sYUFBYSxDQUFDLElBQWE7UUFDakMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNsRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFFM0UsRUFBRSxDQUFDLENBQUMsUUFBUSxLQUFLLGdCQUFnQixDQUFDLENBQUMsQ0FBQztvQkFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDZCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLFVBQVUsQ0FBQyxJQUFhO1FBQzlCLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjO2dCQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7WUFDbEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLHVCQUF1QjtnQkFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQ2xDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0I7Z0JBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztZQUN0QztnQkFDRSxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBYTtRQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTyxjQUFjLENBQUMsSUFBYTtRQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7QUFDSCxDQUFDO0FBQUEiLCJmaWxlIjoicnVsZXMvbm9VbmV4cGVjdGVkTXVsdGlsaW5lUnVsZS5qcyIsInNvdXJjZVJvb3QiOiJkOlxccHJvamVjdHNcXHRzbGludC1lc2xpbnQtcnVsZXNcXHNyYyJ9 |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
const OPTION_ALWAYS = 'always'; | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new ObjectCurlySpacingWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
} | ||
Rule.FAILURE_STRING = { | ||
always: { | ||
start: `A space is required after '{'`, | ||
end: `A space is required before '}'` | ||
}, | ||
never: { | ||
start: `There should be no space after '{'`, | ||
end: `There should be no space before '}'` | ||
} | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var OPTION_ALWAYS = 'always'; | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new ObjectCurlySpacingWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = { | ||
always: { | ||
start: "A space is required after '{'", | ||
end: "A space is required before '}'" | ||
}, | ||
never: { | ||
start: "There should be no space after '{'", | ||
end: "There should be no space before '}'" | ||
} | ||
}; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
exports.Rule = Rule; | ||
var ObjectCurlySpacingWalker = (function (_super) { | ||
__extends(ObjectCurlySpacingWalker, _super); | ||
function ObjectCurlySpacingWalker(sourceFile, options) { | ||
_super.call(this, sourceFile, options); | ||
class ObjectCurlySpacingWalker extends Lint.RuleWalker { | ||
constructor(sourceFile, options) { | ||
super(sourceFile, options); | ||
this.always = this.hasOption(OPTION_ALWAYS) || (this.getOptions() && this.getOptions().length === 0); | ||
} | ||
ObjectCurlySpacingWalker.prototype.visitNode = function (node) { | ||
var bracedKind = [ | ||
visitNode(node) { | ||
const bracedKind = [ | ||
ts.SyntaxKind.ObjectLiteralExpression, | ||
@@ -48,11 +37,11 @@ ts.SyntaxKind.ObjectBindingPattern, | ||
} | ||
_super.prototype.visitNode.call(this, node); | ||
}; | ||
ObjectCurlySpacingWalker.prototype.checkSpacingInsideBraces = function (node) { | ||
var text = node.getText(); | ||
super.visitNode(node); | ||
} | ||
checkSpacingInsideBraces(node) { | ||
const text = node.getText(); | ||
if (text.indexOf('\n') !== -1 || text === '{}') { | ||
return; | ||
} | ||
var leadingSpace = text.match(/^\{(\s{0,2})/)[1].length; | ||
var trailingSpace = text.match(/(\s{0,2})}$/)[1].length; | ||
const leadingSpace = text.match(/^\{(\s{0,2})/)[1].length; | ||
const trailingSpace = text.match(/(\s{0,2})}$/)[1].length; | ||
if (this.always) { | ||
@@ -74,4 +63,5 @@ if (leadingSpace === 0) { | ||
} | ||
}; | ||
return ObjectCurlySpacingWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL29iamVjdEN1cmx5U3BhY2luZ1J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksRUFBRSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBQ2pDLE1BQVksSUFBSSxXQUFNLGlCQUFpQixDQUFDLENBQUE7QUFFeEMsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDO0FBRS9CLG1CQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVk7SUFZeEMsS0FBSyxDQUFDLFVBQXlCO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksd0JBQXdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDSCxDQUFDO0FBZmUsbUJBQWMsR0FBRztJQUM3QixNQUFNLEVBQUU7UUFDTixLQUFLLEVBQUUsK0JBQStCO1FBQ3RDLEdBQUcsRUFBRSxnQ0FBZ0M7S0FDdEM7SUFDRCxLQUFLLEVBQUU7UUFDTCxLQUFLLEVBQUUsb0NBQW9DO1FBQzNDLEdBQUcsRUFBRSxxQ0FBcUM7S0FDM0M7Q0FDRixDQUFDO0FBVlMsWUFBSSxPQWdCaEIsQ0FBQTtBQUVELHVDQUF1QyxJQUFJLENBQUMsVUFBVTtJQUlwRCxZQUFZLFVBQXlCLEVBQUUsT0FBc0I7UUFDM0QsTUFBTSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFhO1FBQy9CLE1BQU0sVUFBVSxHQUFHO1lBQ2pCLEVBQUUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCO1lBQ3JDLEVBQUUsQ0FBQyxVQUFVLENBQUMsb0JBQW9CO1lBQ2xDLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWTtZQUMxQixFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVk7U0FDM0IsQ0FBQztRQUNGLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVPLHdCQUF3QixDQUFDLElBQWE7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFL0MsTUFBTSxDQUFDO1FBQ1QsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzFELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzFELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLEVBQUUsQ0FBQyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzVGLENBQUM7WUFDRCxFQUFFLENBQUMsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDNUYsQ0FBQztRQUNILENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLEVBQUUsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNGLENBQUM7WUFDRCxFQUFFLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDM0YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBRUgsQ0FBQztBQUFBIiwiZmlsZSI6InJ1bGVzL29iamVjdEN1cmx5U3BhY2luZ1J1bGUuanMiLCJzb3VyY2VSb290IjoiZDpcXHByb2plY3RzXFx0c2xpbnQtZXNsaW50LXJ1bGVzXFxzcmMifQ== |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new UseIsnanWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new UseIsnanWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = 'use the isNaN function to compare with NaN'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'use the isNaN function to compare with NaN'; | ||
exports.Rule = Rule; | ||
var UseIsnanWalker = (function (_super) { | ||
__extends(UseIsnanWalker, _super); | ||
function UseIsnanWalker() { | ||
_super.apply(this, arguments); | ||
class UseIsnanWalker extends Lint.RuleWalker { | ||
constructor() { | ||
super(...arguments); | ||
this.OPERATORS = [ts.SyntaxKind.EqualsEqualsToken, ts.SyntaxKind.EqualsEqualsEqualsToken, ts.SyntaxKind.ExclamationEqualsToken, ts.SyntaxKind.ExclamationEqualsEqualsToken]; | ||
} | ||
UseIsnanWalker.prototype.visitBinaryExpression = function (node) { | ||
visitBinaryExpression(node) { | ||
this.validateUseIsnan(node); | ||
_super.prototype.visitBinaryExpression.call(this, node); | ||
}; | ||
UseIsnanWalker.prototype.validateUseIsnan = function (node) { | ||
super.visitBinaryExpression(node); | ||
} | ||
validateUseIsnan(node) { | ||
if (this.OPERATORS.indexOf(node.operatorToken.kind) !== -1) { | ||
@@ -38,4 +27,5 @@ if (node.left.getText() === 'NaN' || node.right.getText() === 'NaN') { | ||
} | ||
}; | ||
return UseIsnanWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL3VzZUlzbmFuUnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxFQUFFLFdBQU0sWUFBWSxDQUFDLENBQUE7QUFDakMsTUFBWSxJQUFJLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUV4QyxtQkFBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO0lBR3hDLEtBQUssQ0FBQyxVQUF5QjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztBQUNILENBQUM7QUFOZSxtQkFBYyxHQUFHLDRDQUE0QyxDQUFDO0FBRGpFLFlBQUksT0FPaEIsQ0FBQTtBQUVELDZCQUE2QixJQUFJLENBQUMsVUFBVTtJQUE1QztRQUE2QixvQkFBZTtRQUNsQyxjQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFjakwsQ0FBQztJQVpXLHFCQUFxQixDQUFDLElBQXlCO1FBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixLQUFLLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQXlCO1FBQ2hELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDN0YsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUFBIiwiZmlsZSI6InJ1bGVzL3VzZUlzbmFuUnVsZS5qcyIsInNvdXJjZVJvb3QiOiJkOlxccHJvamVjdHNcXHRzbGludC1lc2xpbnQtcnVsZXNcXHNyYyJ9 |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var doctrine = require('doctrine'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var opts = this.getOptions().ruleArguments; | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
const doctrine = require('doctrine'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
let opts = this.getOptions().ruleArguments; | ||
if (opts && opts.length > 0) { | ||
@@ -26,38 +17,36 @@ if (opts[0].prefer) { | ||
} | ||
var walker = new ValidJsdocWalker(sourceFile, this.getOptions()); | ||
const walker = new ValidJsdocWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = { | ||
missingBrace: 'JSDoc type missing brace', | ||
syntaxError: 'JSDoc syntax error', | ||
missingParameterType: function (name) { return ("missing JSDoc parameter type for '" + name + "'"); }, | ||
missingParameterDescription: function (name) { return ("missing JSDoc parameter description for '" + name + "'"); }, | ||
duplicateParameter: function (name) { return ("duplicate JSDoc parameter '" + name + "'"); }, | ||
unexpectedTag: function (title) { return ("unexpected @" + title + " tag; function has no return statement"); }, | ||
missingReturnType: 'missing JSDoc return type', | ||
missingReturnDescription: 'missing JSDoc return description', | ||
prefer: function (name) { return ("use @" + name + " instead"); }, | ||
missingReturn: function (param) { return ("missing JSDoc @" + (param || 'returns') + " for function"); }, | ||
wrongParam: function (expected, actual) { return ("expected JSDoc for '" + expected + "'' but found '" + actual + "'"); }, | ||
missingParam: function (name) { return ("missing JSDoc for parameter '" + name + "'"); }, | ||
wrongDescription: 'JSDoc description does not satisfy the regex pattern', | ||
invalidRegexDescription: function (error) { return ("configured matchDescription is an invalid RegExp. Error: " + error); } | ||
}; | ||
Rule.prefer = {}; | ||
Rule.requireReturn = true; | ||
Rule.requireParamDescription = true; | ||
Rule.requireReturnDescription = true; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
} | ||
Rule.FAILURE_STRING = { | ||
missingBrace: 'JSDoc type missing brace', | ||
syntaxError: 'JSDoc syntax error', | ||
missingParameterType: (name) => `missing JSDoc parameter type for '${name}'`, | ||
missingParameterDescription: (name) => `missing JSDoc parameter description for '${name}'`, | ||
duplicateParameter: (name) => `duplicate JSDoc parameter '${name}'`, | ||
unexpectedTag: (title) => `unexpected @${title} tag; function has no return statement`, | ||
missingReturnType: 'missing JSDoc return type', | ||
missingReturnDescription: 'missing JSDoc return description', | ||
prefer: (name) => `use @${name} instead`, | ||
missingReturn: (param) => `missing JSDoc @${param || 'returns'} for function`, | ||
wrongParam: (expected, actual) => `expected JSDoc for '${expected}'' but found '${actual}'`, | ||
missingParam: (name) => `missing JSDoc for parameter '${name}'`, | ||
wrongDescription: 'JSDoc description does not satisfy the regex pattern', | ||
invalidRegexDescription: (error) => `configured matchDescription is an invalid RegExp. Error: ${error}` | ||
}; | ||
Rule.prefer = {}; | ||
Rule.requireReturn = true; | ||
Rule.requireParamDescription = true; | ||
Rule.requireReturnDescription = true; | ||
exports.Rule = Rule; | ||
var ValidJsdocWalker = (function (_super) { | ||
__extends(ValidJsdocWalker, _super); | ||
function ValidJsdocWalker() { | ||
_super.apply(this, arguments); | ||
class ValidJsdocWalker extends Lint.SkippableTokenAwareRuleWalker { | ||
constructor() { | ||
super(...arguments); | ||
this.fns = []; | ||
} | ||
ValidJsdocWalker.prototype.visitSourceFile = function (node) { | ||
_super.prototype.visitSourceFile.call(this, node); | ||
}; | ||
ValidJsdocWalker.prototype.visitNode = function (node) { | ||
visitSourceFile(node) { | ||
super.visitSourceFile(node); | ||
} | ||
visitNode(node) { | ||
if (node.kind === ts.SyntaxKind.ClassExpression) { | ||
@@ -67,46 +56,46 @@ this.visitClassExpression(node); | ||
else { | ||
_super.prototype.visitNode.call(this, node); | ||
super.visitNode(node); | ||
} | ||
}; | ||
ValidJsdocWalker.prototype.visitArrowFunction = function (node) { | ||
} | ||
visitArrowFunction(node) { | ||
this.startFunction(node); | ||
_super.prototype.visitArrowFunction.call(this, node); | ||
super.visitArrowFunction(node); | ||
this.checkJSDoc(node); | ||
}; | ||
ValidJsdocWalker.prototype.visitFunctionExpression = function (node) { | ||
} | ||
visitFunctionExpression(node) { | ||
this.startFunction(node); | ||
_super.prototype.visitFunctionExpression.call(this, node); | ||
super.visitFunctionExpression(node); | ||
this.checkJSDoc(node); | ||
}; | ||
ValidJsdocWalker.prototype.visitFunctionDeclaration = function (node) { | ||
} | ||
visitFunctionDeclaration(node) { | ||
this.startFunction(node); | ||
_super.prototype.visitFunctionDeclaration.call(this, node); | ||
super.visitFunctionDeclaration(node); | ||
this.checkJSDoc(node); | ||
}; | ||
ValidJsdocWalker.prototype.visitClassExpression = function (node) { | ||
} | ||
visitClassExpression(node) { | ||
this.startFunction(node); | ||
_super.prototype.visitClassExpression.call(this, node); | ||
super.visitClassExpression(node); | ||
this.checkJSDoc(node); | ||
}; | ||
ValidJsdocWalker.prototype.visitClassDeclaration = function (node) { | ||
} | ||
visitClassDeclaration(node) { | ||
this.startFunction(node); | ||
_super.prototype.visitClassDeclaration.call(this, node); | ||
super.visitClassDeclaration(node); | ||
this.checkJSDoc(node); | ||
}; | ||
ValidJsdocWalker.prototype.visitMethodDeclaration = function (node) { | ||
} | ||
visitMethodDeclaration(node) { | ||
this.startFunction(node); | ||
_super.prototype.visitMethodDeclaration.call(this, node); | ||
super.visitMethodDeclaration(node); | ||
this.checkJSDoc(node); | ||
}; | ||
ValidJsdocWalker.prototype.visitConstructorDeclaration = function (node) { | ||
} | ||
visitConstructorDeclaration(node) { | ||
this.startFunction(node); | ||
_super.prototype.visitConstructorDeclaration.call(this, node); | ||
super.visitConstructorDeclaration(node); | ||
this.checkJSDoc(node); | ||
}; | ||
ValidJsdocWalker.prototype.visitReturnStatement = function (node) { | ||
} | ||
visitReturnStatement(node) { | ||
this.addReturn(node); | ||
_super.prototype.visitReturnStatement.call(this, node); | ||
}; | ||
ValidJsdocWalker.prototype.startFunction = function (node) { | ||
var returnPresent = false; | ||
super.visitReturnStatement(node); | ||
} | ||
startFunction(node) { | ||
let returnPresent = false; | ||
if (node.kind === ts.SyntaxKind.ArrowFunction && node.body.kind !== ts.SyntaxKind.Block) | ||
@@ -116,7 +105,7 @@ returnPresent = true; | ||
returnPresent = true; | ||
this.fns.push({ node: node, returnPresent: returnPresent }); | ||
}; | ||
ValidJsdocWalker.prototype.addReturn = function (node) { | ||
var parent = node; | ||
var nodes = this.fns.map(function (fn) { return fn.node; }); | ||
this.fns.push({ node, returnPresent }); | ||
} | ||
addReturn(node) { | ||
let parent = node; | ||
let nodes = this.fns.map(fn => fn.node); | ||
while (parent && nodes.indexOf(parent) === -1) | ||
@@ -127,11 +116,11 @@ parent = parent.parent; | ||
} | ||
}; | ||
ValidJsdocWalker.prototype.isTypeClass = function (node) { | ||
} | ||
isTypeClass(node) { | ||
return node.kind === ts.SyntaxKind.ClassExpression || node.kind === ts.SyntaxKind.ClassDeclaration; | ||
}; | ||
ValidJsdocWalker.prototype.isValidReturnType = function (tag) { | ||
} | ||
isValidReturnType(tag) { | ||
return tag.type.name === 'void' || tag.type.type === 'UndefinedLiteral'; | ||
}; | ||
ValidJsdocWalker.prototype.getJSDocComment = function (node) { | ||
var ALLOWED_PARENTS = [ | ||
} | ||
getJSDocComment(node) { | ||
const ALLOWED_PARENTS = [ | ||
ts.SyntaxKind.BinaryExpression, | ||
@@ -148,18 +137,17 @@ ts.SyntaxKind.VariableDeclaration, | ||
} | ||
var comments = node.getFullText(); | ||
let comments = node.getFullText(); | ||
comments = comments.substring(comments.indexOf('/**')); | ||
comments = comments.substring(0, comments.indexOf('*/') + 2); | ||
var start = node.pos; | ||
var width = comments.length; | ||
let start = node.pos; | ||
let width = comments.length; | ||
if (!comments.startsWith('/**') || !comments.endsWith('*/')) { | ||
return {}; | ||
} | ||
return { comments: comments, start: start, width: width }; | ||
}; | ||
ValidJsdocWalker.prototype.checkJSDoc = function (node) { | ||
var _this = this; | ||
var _a = this.getJSDocComment(node), comments = _a.comments, start = _a.start, width = _a.width; | ||
return { comments, start, width }; | ||
} | ||
checkJSDoc(node) { | ||
const { comments, start, width } = this.getJSDocComment(node); | ||
if (!comments) | ||
return; | ||
var jsdoc; | ||
let jsdoc; | ||
try { | ||
@@ -181,9 +169,8 @@ jsdoc = doctrine.parse(comments, { | ||
} | ||
var fn = this.fns.find(function (f) { return node === f.node; }); | ||
var params = {}; | ||
var hasReturns = false; | ||
var hasConstructor = false; | ||
var isOverride = false; | ||
for (var _i = 0, _b = jsdoc.tags; _i < _b.length; _i++) { | ||
var tag = _b[_i]; | ||
const fn = this.fns.find(f => node === f.node); | ||
let params = {}; | ||
let hasReturns = false; | ||
let hasConstructor = false; | ||
let isOverride = false; | ||
for (let tag of jsdoc.tags) { | ||
switch (tag.title) { | ||
@@ -230,3 +217,3 @@ case 'param': | ||
} | ||
var title = Rule.prefer[tag.title]; | ||
let title = Rule.prefer[tag.title]; | ||
if (Rule.prefer.hasOwnProperty(tag.title) && tag.title !== title) { | ||
@@ -241,13 +228,13 @@ this.addFailure(this.createFailure(start, width, Rule.FAILURE_STRING.prefer(title))); | ||
} | ||
var jsdocParams = Object.keys(params); | ||
var parameters = node.parameters; | ||
const jsdocParams = Object.keys(params); | ||
const parameters = node.parameters; | ||
if (parameters) { | ||
parameters.forEach(function (param, i) { | ||
parameters.forEach((param, i) => { | ||
if (param.name.kind === ts.SyntaxKind.Identifier) { | ||
var name_1 = param.name.text; | ||
if (jsdocParams[i] && name_1 !== jsdocParams[i]) { | ||
_this.addFailure(_this.createFailure(start, width, Rule.FAILURE_STRING.wrongParam(name_1, jsdocParams[i]))); | ||
let name = param.name.text; | ||
if (jsdocParams[i] && name !== jsdocParams[i]) { | ||
this.addFailure(this.createFailure(start, width, Rule.FAILURE_STRING.wrongParam(name, jsdocParams[i]))); | ||
} | ||
else if (!params[name_1] && !isOverride) { | ||
_this.addFailure(_this.createFailure(start, width, Rule.FAILURE_STRING.missingParam(name_1))); | ||
else if (!params[name] && !isOverride) { | ||
this.addFailure(this.createFailure(start, width, Rule.FAILURE_STRING.missingParam(name))); | ||
} | ||
@@ -259,3 +246,3 @@ } | ||
try { | ||
var regex = new RegExp(Rule.matchDescription); | ||
const regex = new RegExp(Rule.matchDescription); | ||
if (!regex.test(jsdoc.description)) { | ||
@@ -269,4 +256,5 @@ this.addFailure(this.createFailure(start, width, Rule.FAILURE_STRING.wrongDescription)); | ||
} | ||
}; | ||
return ValidJsdocWalker; | ||
}(Lint.SkippableTokenAwareRuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,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QUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQztnQkFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDaEQsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUMxRixDQUFDO1lBQ0gsQ0FDQTtZQUFBLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUFBIiwiZmlsZSI6InJ1bGVzL3ZhbGlkSnNkb2NSdWxlLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
"use strict"; | ||
var __extends = (this && this.__extends) || function (d, b) { | ||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
function __() { this.constructor = d; } | ||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
}; | ||
var ts = require('typescript'); | ||
var Lint = require('tslint/lib/lint'); | ||
var Rule = (function (_super) { | ||
__extends(Rule, _super); | ||
function Rule() { | ||
_super.apply(this, arguments); | ||
const ts = require('typescript'); | ||
const Lint = require('tslint/lib/lint'); | ||
class Rule extends Lint.Rules.AbstractRule { | ||
apply(sourceFile) { | ||
const walker = new ValidTypeofWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
} | ||
Rule.prototype.apply = function (sourceFile) { | ||
var walker = new ValidTypeofWalker(sourceFile, this.getOptions()); | ||
return this.applyWithWalker(walker); | ||
}; | ||
Rule.FAILURE_STRING = 'invalid typeof comparison value'; | ||
return Rule; | ||
}(Lint.Rules.AbstractRule)); | ||
} | ||
Rule.FAILURE_STRING = 'invalid typeof comparison value'; | ||
exports.Rule = Rule; | ||
var ValidTypeofWalker = (function (_super) { | ||
__extends(ValidTypeofWalker, _super); | ||
function ValidTypeofWalker() { | ||
_super.apply(this, arguments); | ||
class ValidTypeofWalker extends Lint.RuleWalker { | ||
constructor() { | ||
super(...arguments); | ||
this.VALID_TYPES = ['symbol', 'undefined', 'object', 'boolean', 'number', 'string', 'function']; | ||
this.OPERATORS = [ts.SyntaxKind.EqualsEqualsToken, ts.SyntaxKind.EqualsEqualsEqualsToken, ts.SyntaxKind.ExclamationEqualsToken, ts.SyntaxKind.ExclamationEqualsEqualsToken]; | ||
} | ||
ValidTypeofWalker.prototype.visitNode = function (node) { | ||
visitNode(node) { | ||
if (node.kind === ts.SyntaxKind.TypeOfExpression) { | ||
this.validateTypeOf(node); | ||
} | ||
_super.prototype.visitNode.call(this, node); | ||
}; | ||
ValidTypeofWalker.prototype.validateTypeOf = function (node) { | ||
super.visitNode(node); | ||
} | ||
validateTypeOf(node) { | ||
if (node.parent.kind === ts.SyntaxKind.BinaryExpression) { | ||
var parent_1 = node.parent; | ||
if (this.OPERATORS.indexOf(parent_1.operatorToken.kind) !== -1) { | ||
var sibling = parent_1.left === node ? parent_1.right : parent_1.left; | ||
const parent = node.parent; | ||
if (this.OPERATORS.indexOf(parent.operatorToken.kind) !== -1) { | ||
const sibling = parent.left === node ? parent.right : parent.left; | ||
if (sibling.kind === ts.SyntaxKind.StringLiteral && this.VALID_TYPES.indexOf(sibling.text) === -1) { | ||
@@ -45,4 +34,5 @@ this.addFailure(this.createFailure(node.getStart(), node.getWidth(), Rule.FAILURE_STRING)); | ||
} | ||
}; | ||
return ValidTypeofWalker; | ||
}(Lint.RuleWalker)); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJ1bGVzL3ZhbGlkVHlwZW9mUnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsTUFBWSxFQUFFLFdBQU0sWUFBWSxDQUFDLENBQUE7QUFDakMsTUFBWSxJQUFJLFdBQU0saUJBQWlCLENBQUMsQ0FBQTtBQUV4QyxtQkFBMEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO0lBR3hDLEtBQUssQ0FBQyxVQUF5QjtRQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNwRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0gsQ0FBQztBQU5lLG1CQUFjLEdBQUcsaUNBQWlDLENBQUM7QUFEdEQsWUFBSSxPQU9oQixDQUFBO0FBRUQsZ0NBQWdDLElBQUksQ0FBQyxVQUFVO0lBQS9DO1FBQWdDLG9CQUFlO1FBQ3JDLGdCQUFXLEdBQUcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRixjQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFxQmpMLENBQUM7SUFuQlcsU0FBUyxDQUFDLElBQWE7UUFDL0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQTJCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU8sY0FBYyxDQUFDLElBQXlCO1FBQzlDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxNQUE4QixDQUFDO1lBQ3BELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBRWxFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUUsT0FBNEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3hILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUFBIiwiZmlsZSI6InJ1bGVzL3ZhbGlkVHlwZW9mUnVsZS5qcyIsInNvdXJjZVJvb3QiOiJkOlxccHJvamVjdHNcXHRzbGludC1lc2xpbnQtcnVsZXNcXHNyYyJ9 |
"use strict"; | ||
var ts = require('typescript'); | ||
const ts = require('typescript'); | ||
function isAssignmentToken(token) { | ||
@@ -7,1 +7,3 @@ return token.kind >= ts.SyntaxKind.FirstAssignment && token.kind <= ts.SyntaxKind.LastAssignment; | ||
exports.isAssignmentToken = isAssignmentToken; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN1cHBvcnQvdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQVksRUFBRSxXQUFNLFlBQVksQ0FBQyxDQUFBO0FBRWpDLDJCQUFrQyxLQUFjO0lBQzlDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7QUFDbkcsQ0FBQztBQUZlLHlCQUFpQixvQkFFaEMsQ0FBQSIsImZpbGUiOiJzdXBwb3J0L3Rva2VuLmpzIiwic291cmNlUm9vdCI6ImQ6XFxwcm9qZWN0c1xcdHNsaW50LWVzbGludC1ydWxlc1xcc3JjIn0= |
{ | ||
"name": "tslint-eslint-rules", | ||
"version": "1.6.1", | ||
"version": "2.0.0", | ||
"description": "Improve your TSLint with the missing ESLint Rules", | ||
@@ -32,5 +32,4 @@ "main": "index.js", | ||
"gulp-tslint": "^3.6.0", | ||
"gulp-typescript": "^2.13.6", | ||
"mocha": "^2.5.3", | ||
"typescript": "^1.8.10", | ||
"gulp-typescript": "^3.0.1", | ||
"typescript": "^2.0.3", | ||
"yargs": "^5.0.0" | ||
@@ -37,0 +36,0 @@ }, |
Sorry, the diff of this file is too big to display
391379
8
5525