From 1d6d94a933747d61a4e228a5d06ba5d4890f989e Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Thu, 6 Aug 2015 10:21:02 +0800 Subject: [PATCH] use eslint --- .eslintrc | 199 ++++++++++++++++++++++++++++++++ .jshintignore | 4 - .jshintrc | 95 --------------- index.js | 2 +- package.json | 16 +-- test/default-user-agent.test.js | 20 ++-- 6 files changed, 217 insertions(+), 119 deletions(-) create mode 100644 .eslintrc delete mode 100644 .jshintignore delete mode 100644 .jshintrc diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..39a3b73 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,199 @@ +{ + "ecmaFeatures": { + "jsx": true + }, + "parser": "espree", + "env": { + "amd": false, + "jasmine": false, + "node": true, + "mocha": true, + "browser": true, + "builtin": true, + "es6": true + }, + "rules": { + "no-alert": 2, + "no-array-constructor": 2, + "no-bitwise": 2, + "no-caller": 2, + "no-catch-shadow": 2, + "no-comma-dangle": 0, + "no-cond-assign": [2, "except-parens"], + "no-constant-condition": 2, + "no-continue": 0, + "no-control-regex": 2, + "no-debugger": 2, + "no-delete-var": 2, + "no-div-regex": 0, + "no-dupe-keys": 2, + "no-dupe-args": 2, + "no-duplicate-case": 2, + "no-else-return": 0, + "no-empty": 2, + "no-empty-class": 0, + "no-empty-character-class": 2, + "no-empty-label": 2, + "no-eq-null": 0, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": 0, + "no-extra-semi": 2, + "no-fallthrough": 2, + "no-floating-decimal": 0, + "no-func-assign": 2, + "no-implied-eval": 2, + "no-inline-comments": 0, + "no-inner-declarations": [2, "functions"], + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-iterator": 0, + "no-label-var": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-lonely-if": 0, + "no-loop-func": 2, + "no-mixed-requires": [0, false], + "no-mixed-spaces-and-tabs": [2, false], + "linebreak-style": [0, "unix"], + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-multiple-empty-lines": [0, { + "max": 2 + }], + "no-native-reassign": 2, + "no-negated-in-lhs": 2, + "no-nested-ternary": 0, + "no-new": 0, + "no-new-func": 2, + "no-new-object": 2, + "no-new-require": 0, + "no-new-wrappers": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-octal-escape": 2, + "no-param-reassign": 0, + "no-path-concat": 0, + "no-plusplus": 0, + "no-process-env": 0, + "no-process-exit": 0, + "no-proto": 2, + "no-redeclare": 0, + "no-regex-spaces": 2, + "no-reserved-keys": 0, + "no-restricted-modules": 0, + "no-return-assign": 0, + "no-script-url": 2, + "no-self-compare": 0, + "no-sequences": 2, + "no-shadow": 0, + "no-shadow-restricted-names": 2, + "no-space-before-semi": 0, + "no-spaced-func": 2, + "no-sparse-arrays": 2, + "no-sync": 0, + "no-ternary": 0, + "no-trailing-spaces": 2, + "no-this-before-super": 0, + "no-throw-literal": 0, + "no-undef": 2, + "no-undef-init": 2, + "no-undefined": 0, + "no-unexpected-multiline": 0, + "no-underscore-dangle": 0, + "no-unneeded-ternary": 0, + "no-unreachable": 2, + "no-unused-expressions": 0, + "no-unused-vars": 2, + "no-use-before-define": [2, "nofunc"], + "no-void": 0, + "no-var": 0, + "prefer-const": 0, + "no-warning-comments": [0, { + "terms": ["todo", "fixme", "xxx"], + "location": "start" + }], + "no-with": 2, + "array-bracket-spacing": [0, "never"], + "accessor-pairs": 0, + "block-scoped-var": 0, + "brace-style": [0, "1tbs"], + "camelcase": 0, + "comma-dangle": 0, + "comma-spacing": 2, + "comma-style": 0, + "complexity": [0, 11], + "computed-property-spacing": [0, "never"], + "consistent-return": 0, + "consistent-this": [0, "that"], + "constructor-super": 0, + "curly": [2, "all"], + "default-case": 0, + "dot-location": 0, + "dot-notation": 0, + "eol-last": 2, + "eqeqeq": 2, + "func-names": 0, + "func-style": [0, "declaration"], + "generator-star": 0, + "generator-star-spacing": 0, + "global-strict": [0, "never"], + "guard-for-in": 0, + "handle-callback-err": 0, + "indent": [2, 2], + "key-spacing": [2, { + "beforeColon": false, + "afterColon": true + }], + "lines-around-comment": 0, + "max-depth": [0, 4], + "max-len": [0, 80, 4], + "max-nested-callbacks": [0, 2], + "max-params": [0, 3], + "max-statements": [0, 10], + "new-cap": 0, + "new-parens": 2, + "newline-after-var": 0, + "object-curly-spacing": [0, "never"], + "object-shorthand": 0, + "one-var": 0, + "operator-assignment": [0, "always"], + "operator-linebreak": 0, + "padded-blocks": 0, + "quote-props": 0, + "quotes": [2, "single"], + "radix": 0, + "semi": 2, + "semi-spacing": [2, { + "before": false, + "after": true + }], + "sort-vars": 0, + "space-after-function-name": [0, "never"], + "space-after-keywords": [0, "always"], + "space-before-blocks": [0, "always"], + "space-before-function-paren": [0, "always"], + "space-before-function-parentheses": [0, "always"], + "space-in-brackets": [0, "never"], + "space-in-parens": [0, "never"], + "space-infix-ops": 2, + "space-return-throw-case": 2, + "space-unary-ops": [2, { + "words": true, + "nonwords": false + }], + "spaced-comment": 0, + "spaced-line-comment": [0, "always"], + "strict": [2, "global"], + "use-isnan": 2, + "valid-jsdoc": 0, + "valid-typeof": 0, + "vars-on-top": 0, + "wrap-iife": 0, + "wrap-regex": 0, + "yoda": [2, "never"] + } +} diff --git a/.jshintignore b/.jshintignore deleted file mode 100644 index 63c6333..0000000 --- a/.jshintignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -coverage/ -.tmp/ -.git/ diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 5988707..0000000 --- a/.jshintrc +++ /dev/null @@ -1,95 +0,0 @@ -{ - // JSHint Default Configuration File (as on JSHint website) - // See http://jshint.com/docs/ for more details - - "maxerr" : 50, // {int} Maximum error before stopping - - // Enforcing - "bitwise" : true, // true: Prohibit bitwise operators (&, |, ^, etc.) - "camelcase" : false, // true: Identifiers must be in camelCase - "curly" : true, // true: Require {} for every new block or scope - "eqeqeq" : true, // true: Require triple equals (===) for comparison - "forin" : false, // true: Require filtering for..in loops with obj.hasOwnProperty() - "immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());` - "indent" : false, // {int} Number of spaces to use for indentation - "latedef" : false, // true: Require variables/functions to be defined before being used - "newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()` - "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee` - "noempty" : true, // true: Prohibit use of empty blocks - "nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment) - "plusplus" : false, // true: Prohibit use of `++` & `--` - "quotmark" : false, // Quotation mark consistency: - // false : do nothing (default) - // true : ensure whatever is used is consistent - // "single" : require single quotes - // "double" : require double quotes - "undef" : true, // true: Require all non-global variables to be declared (prevents global leaks) - "unused" : false, // true: Require all defined variables be used - "strict" : true, // true: Requires all functions run in ES5 Strict Mode - "trailing" : false, // true: Prohibit trailing whitespaces - "maxparams" : false, // {int} Max number of formal params allowed per function - "maxdepth" : false, // {int} Max depth of nested blocks (within functions) - "maxstatements" : false, // {int} Max number statements per function - "maxcomplexity" : false, // {int} Max cyclomatic complexity per function - "maxlen" : false, // {int} Max number of characters per line - - // Relaxing - "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons) - "boss" : true, // true: Tolerate assignments where comparisons would be expected - "debug" : false, // true: Allow debugger statements e.g. browser breakpoints. - "eqnull" : false, // true: Tolerate use of `== null` - "es5" : false, // true: Allow ES5 syntax (ex: getters and setters) - "esnext" : true, // true: Allow ES.next (ES6) syntax (ex: `const`) - "moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features) - // (ex: `for each`, multiple try/catch, function expression…) - "evil" : false, // true: Tolerate use of `eval` and `new Function()` - "expr" : true, // true: Tolerate `ExpressionStatement` as Programs - "funcscope" : false, // true: Tolerate defining variables inside control statements" - "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict') - "iterator" : false, // true: Tolerate using the `__iterator__` property - "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block - "laxbreak" : true, // true: Tolerate possibly unsafe line breakings - "laxcomma" : false, // true: Tolerate comma-first style coding - "loopfunc" : false, // true: Tolerate functions being defined in loops - "multistr" : true, // true: Tolerate multi-line strings - "proto" : false, // true: Tolerate using the `__proto__` property - "scripturl" : false, // true: Tolerate script-targeted URLs - "smarttabs" : false, // true: Tolerate mixed tabs/spaces when used for alignment - "shadow" : true, // true: Allows re-define variables later in code e.g. `var x=1; x=2;` - "sub" : false, // true: Tolerate using `[]` notation when it can still be expressed in dot notation - "supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;` - "validthis" : false, // true: Tolerate using this in a non-constructor function - - // Environments - "browser" : true, // Web Browser (window, document, etc) - "couch" : false, // CouchDB - "devel" : true, // Development/debugging (alert, confirm, etc) - "dojo" : false, // Dojo Toolkit - "jquery" : false, // jQuery - "mootools" : false, // MooTools - "node" : true, // Node.js - "nonstandard" : false, // Widely adopted globals (escape, unescape, etc) - "prototypejs" : false, // Prototype and Scriptaculous - "rhino" : false, // Rhino - "worker" : false, // Web Workers - "wsh" : false, // Windows Scripting Host - "yui" : false, // Yahoo User Interface - "noyield" : true, // allow generators without a yield - - // Legacy - "nomen" : false, // true: Prohibit dangling `_` in variables - "onevar" : false, // true: Allow only one `var` statement per function - "passfail" : false, // true: Stop on first error - "white" : false, // true: Check against strict whitespace and indentation rules - - // Custom Globals - "globals" : { // additional predefined global variables - // mocha - "describe": true, - "it": true, - "before": true, - "afterEach": true, - "beforeEach": true, - "after": true - } -} diff --git a/index.js b/index.js index 1080375..033edbc 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,7 @@ /**! * default-user-agent - index.js * - * Copyright(c) fengmk2 and other contributors. + * Copyright(c) node-modules and other contributors. * MIT Licensed * * Authors: diff --git a/package.json b/package.json index 7eb5767..8b45917 100644 --- a/package.json +++ b/package.json @@ -7,23 +7,19 @@ "index.js" ], "scripts": { - "test": "mocha --check-leaks -R spec -t 5000 test/*.test.js", - "test-cov": "istanbul cover node_modules/.bin/_mocha -- --check-leaks -t 5000 test/*.test.js", - "test-travis": "istanbul cover node_modules/.bin/_mocha --report lcovonly -- --check-leaks -t 5000 test/*.test.js", - "lint": "jshint .", + "test": "npm run lint && mocha --check-leaks -R spec -t 5000 test/*.test.js", + "test-cov": "npm run lint && istanbul cover node_modules/.bin/_mocha -- --check-leaks -t 5000 test/*.test.js", + "test-travis": "npm run lint && istanbul cover node_modules/.bin/_mocha --report lcovonly -- --check-leaks -t 5000 test/*.test.js", + "lint": "eslint index.js test", "autod": "autod -w --prefix '~'", - "cnpm": "npm install --registry=https://registry.npm.taobao.org", - "contributors": "contributors -f plain -o AUTHORS" + "cnpm": "npm install --registry=https://registry.npm.taobao.org" }, "dependencies": { "os-name": "~1.0.3" }, "devDependencies": { "autod": "*", - "contributors": "*", - "should": "*", - "jshint": "*", - "cov": "*", + "eslint": "1", "istanbul": "*", "mocha": "*" }, diff --git a/test/default-user-agent.test.js b/test/default-user-agent.test.js index 343fc32..6c0ea34 100644 --- a/test/default-user-agent.test.js +++ b/test/default-user-agent.test.js @@ -1,36 +1,38 @@ /**! * default-user-agent - test/default-user-agent.test.js * - * Copyright(c) 2014 fengmk2 and other contributors. + * Copyright(c) node-modules and other contributors. * MIT Licensed * * Authors: * fengmk2 (http://fengmk2.com) */ -"use strict"; +'use strict'; /** * Module dependencies. */ -var should = require('should'); +var assert = require('assert'); var ua = require('../'); describe('default-user-agent.test.js', function () { it('should got default user agent string', function () { var s = ua(); - s.should.be.a.String; - s.should.match(/\w+\/\w+/); + assert.equal(typeof s, 'string'); + assert(/\w+\/\w+/.test(s)); + console.log(s); // 'Node.js/0.11.15 (OS X Yosemite; x64)' - s.should.match(/^Node\.js\/\d\.\d+\.\d+ \(\w+ .+; \w+\)$/); + assert(/^Node\.js\/\d+\.\d+\.\d+ \(\w+ .+; \w+\)$/); }); it('should got custom user agent string', function () { var s = ua('urllib', '0.1.1'); - s.should.be.a.String; - s.should.match(/\w+\/\w+/); + assert.equal(typeof s, 'string'); + assert(/\w+\/\w+/.test(s)); + console.log(s); // 'Node.js/0.11.15 (OS X Yosemite; x64)' - s.should.match(/^urllib\/0\.1\.1 Node\.js\/\d\.\d+\.\d+ \(\w+ .+; \w+\)$/); + assert(/^urllib\/0\.1\.1 Node\.js\/\d+\.\d+\.\d+ \(\w+ .+; \w+\)$/.test(s)); }); });