{ // JSHint Configuration, esri jsapi // Modified from [jshint web defaults][1]. // Differences between the default and our file are noted // Options that are commented out completely are uneccesary or problematic for our codebase // [1] : https://github.com/jshint/jshint/blob/2.x/examples/.jshintrc // See http://jshint.com/docs/ for more details "maxerr" : 5000, // {int} Maximum error before stopping ** Get ALL the errors ** // Enforcing - true = enforce this rule, false = don't enforce this rule "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" : false, // true: Require triple equals (===) for comparison ** Just use triples with undefined, null, false, 0 and 1 ** "es3" : true, // true: Adhere to ECMAScript 3 specification ** Still needed until IE8 support is dropped ** "forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty() ** Still needed until IE8 support is dropped ** "immed" : true, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());` ** Avoids confusion and minification errors ** "latedef" : false, // true: Require variables/functions to be defined before being used "newcap" : true, // true: Require capitalization of all constructor functions e.g. `new F()` ** Coding style enforcement ** "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee` "noempty" : true, // true: Prohibit use of empty blocks "nonew" : true, // true: Prohibit use of constructors for side-effects (without assignment) ** Coding style enforcement ** "plusplus" : false, // true: Prohibit use of `++` & `--` "quotmark" : "single", // Quotation mark consistency: ** Use the same style. Doubles should be used in most cases ** // 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" : "strict", // Warns when you define and never use your variables // true : allow unused parameters that are followed by a used parameter. // "vars" : to only check for variables, not function parameters // "strict" : to check all variables and parameters. "strict" : false, // true: Requires all functions run in ES5 Strict Mode ** Dojo style and existing codebase conflicts ** "trailing" : false, // true: Prohibit trailing whitespaces "indent" : 4, // {int} Number of spaces to use for indentation //"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 - false = continue to enforce this rule, true = don't enforce this rule (relax it) "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons) "boss" : false, // true: Tolerate assignments where comparisons would be expected "debug" : false, // true: Allow debugger statements e.g. browser breakpoints. "eqnull" : true, // true: Tolerate use of `== null` "es5" : false, // true: Allow ES5 syntax (ex: getters and setters) "esnext" : false, // 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" : false, // true: Tolerate `ExpressionStatement` as Programs "funcscope" : true, // true: Tolerate defining variables inside control statements ** Other variable checks keep use from abusing this ** "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" : false, // true: Tolerate possibly unsafe line breakings "laxcomma" : false, // true: Tolerate comma-first style coding "loopfunc" : true, // true: Tolerate functions being defined in loops ** Almost required in some callback & promise style code ** "multistr" : false, // true: Tolerate multi-line strings "proto" : false, // true: Tolerate using the `__proto__` property "scripturl" : true, // true: Tolerate script-targeted URLs ** If this is being used, there is probably a good reason ** "smarttabs" : false, // true: Tolerate mixed tabs/spaces when used for alignment "shadow" : false, // 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" : true, // true: Tolerate using this in a non-constructor function ** We don't run in `strict mode` & coding style conflicts ** // Environments "browser" : true, // Web Browser (window, document, etc) "devel" : true, // Development/debugging (alert, confirm, etc) "couch" : false, // CouchDB "dojo" : false, // Dojo Toolkit ** Don't use global dojo objects. Use AMD style coding ** "jquery" : false, // jQuery "mootools" : false, // MooTools "node" : false, // Node.js "nonstandard" : false, // Widely adopted globals (escape, unescape, etc) "prototypejs" : false, // Prototype and Scriptaculous "rhino" : false, // Rhino "worker" : false, // Web Workers ** Make a jshint comment when this is `true` ** "wsh" : false, // Windows Scripting Host "yui" : false, // Yahoo User Interface // Legacy ** According to jshint docs, these options are NOT to be used or relied on. Removing them. //"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 - additional predefined global variables // Using both `predef` and `globals` to support tools with older jshint parsers "predef" : [ "define", "require" ], "globals" : { // ** `false` = don't allow variable to be redefined locally "define": false, "require": false } }