{"_id":"@seedrs/eslint-config-seedrs-base","_rev":"118-d8540ceb57c58d0cee22fdd10675740f","name":"@seedrs/eslint-config-seedrs-base","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.2":{"name":"@seedrs/eslint-config-seedrs-base","version":"1.0.2","keywords":["eslint"],"author":{"url":"kenley.tomlin@seedrs.com","name":"Kenley Tomline"},"license":"MIT","_id":"@seedrs/eslint-config-seedrs-base@1.0.2","maintainers":[{"name":"kenleytomlin","email":"kenleytomlin@gmail.com"}],"homepage":"https://github.com/seedrs/eslint-config-seedrs-base#readme","bugs":{"url":"https://github.com/seedrs/eslint-config-seedrs-base/issues"},"dist":{"shasum":"c552c58c4b1a9ac7dcc8b2ab754d0356369f8471","tarball":"https://registry.npmjs.org/@seedrs/eslint-config-seedrs-base/-/eslint-config-seedrs-base-1.0.2.tgz","integrity":"sha512-hCtZrAXrwKYxk3PX1Nc9b2j+U5xKcvCvZrr2Dz7VIkJa4LtAuYtC6BfbUhD8MoCojSJc0wutdtnzwlcjB3eXTQ==","signatures":[{"sig":"MEYCIQDUBSJacuEoXdS1nzyCmTrDhKkr9K/V5tl3W+vNJ4X6jQIhAMtnA/c3qFZ+iX7XyDCuxJKxGVBZqSyNV83nKdQR/1aE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"0f066b43e92cb3f35877bca362d1ff4fee143d71","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kenleytomlin","email":"kenleytomlin@gmail.com"},"repository":{"url":"git+https://github.com/seedrs/eslint-config-seedrs-base.git","type":"git"},"_npmVersion":"5.5.1","description":"Seedr's ESLint config","directories":{},"_nodeVersion":"8.9.1","peerDependencies":{"eslint":"^4.12.1","eslint-plugin-import":"^2.8.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config-seedrs-base-1.0.2.tgz_1513010564541_0.5378849122207612","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@seedrs/eslint-config-seedrs-base","version":"1.0.3","keywords":["eslint"],"author":{"url":"kenley.tomlin@seedrs.com","name":"Kenley Tomline"},"license":"MIT","_id":"@seedrs/eslint-config-seedrs-base@1.0.3","maintainers":[{"name":"syue","email":"stephan.yu@gmail.com"},{"name":"kenleytomlin","email":"kenleytomlin@gmail.com"},{"name":"brizido","email":"ricardo.brizido@gmail.com"},{"name":"risheepatel","email":"rishee.patel@gmail.com"}],"homepage":"https://github.com/seedrs/eslint-config-seedrs-base#readme","bugs":{"url":"https://github.com/seedrs/eslint-config-seedrs-base/issues"},"dist":{"shasum":"c097f9540e0b8a7f4674fd924ee070910a627ecd","tarball":"https://registry.npmjs.org/@seedrs/eslint-config-seedrs-base/-/eslint-config-seedrs-base-1.0.3.tgz","integrity":"sha512-sdm6vx48aKHQ3u0dFY55vWDjd/j8m6jd2oiB9DvNh0vVBrV/y0I55QpOz5sa34KEytKHtlGICKeTrSP9TpBzzQ==","signatures":[{"sig":"MEUCIBGepmJu9JvU5SrDZv0vvDJFN4lWDAa/JF3Av696uQ40AiEAyBhbbakAhHCsZjLf/mXlcyZQLBZhATC2x9WZ1GOUR98=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","gitHead":"f88a269549d128781b37a973e738d2b09e9ba424","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"kenleytomlin","email":"kenleytomlin@gmail.com"},"repository":{"url":"git+https://github.com/seedrs/eslint-config-seedrs-base.git","type":"git"},"_npmVersion":"5.6.0","description":"Seedr's ESLint config","directories":{},"_nodeVersion":"8.9.1","peerDependencies":{"eslint":"^4.12.1","eslint-plugin-import":"^2.8.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config-seedrs-base-1.0.3.tgz_1515424619090_0.06331644160673022","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@seedrs/eslint-config-seedrs-base","version":"1.1.0","keywords":["eslint"],"author":{"url":"tech@seedrs.com","name":"Seedrs"},"license":"MIT","_id":"@seedrs/eslint-config-seedrs-base@1.1.0","maintainers":[{"name":"benjamin_sotty","email":"benjamin.sotty@gmail.com"},{"name":"brizido","email":"ricardo.brizido@gmail.com"},{"name":"catarinasantana","email":"catarina.santana@seedrs.com"},{"name":"davidlewisseedrs","email":"david.lewis@seedrs.com"},{"name":"kenleytomlin","email":"kenleytomlin@gmail.com"},{"name":"risheepatel","email":"rishee.patel@gmail.com"},{"name":"sahmed","email":"safin.ahmed@seedrs.com"},{"name":"seedrs.bot","email":"development.team@seedrs.com"},{"name":"seedrs1","email":"development.team@seedrs.com"}],"homepage":"https://github.com/seedrs/eslint-config-seedrs-base#readme","bugs":{"url":"https://github.com/seedrs/eslint-config-seedrs-base/issues"},"dist":{"shasum":"7e53246fe452f5ac4603d367dd8124e1901ac9db","tarball":"https://registry.npmjs.org/@seedrs/eslint-config-seedrs-base/-/eslint-config-seedrs-base-1.1.0.tgz","fileCount":10,"integrity":"sha512-tVfiOBCUMjMQ95d2YspwK0G4pQcDbXCJddiNBV0y65k5zQuDLy2wDyLUUTfPO4SLBREKaBDHe7m5ZpkES6KnTg==","signatures":[{"sig":"MEUCIQCwQM/LVUOAIeJhILid8quOuWytxfOVjKhRcvtrz7i4SwIgYq8pTJ1PqIMfPD8hHot5J3b29CzOebo8eHPlejZqoGU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbl5YJCRA9TVsSAnZWagAAAI8P+wREDRll8wpTLGJ/Nf4l\nb2/kcs8riDCYtFQGmRNcNMSTng1m9GcI5JK13moc6Ql/rliuXg9icjY+jYTR\n1lEzFxRHzc2fK++BCQRt09KnZ/zJHt7/bpXPIMjeSCPefjeXv7lF/TegxRkG\n2ydyAvejkMBVCHfsycmb+zINxEksac22KXx9LLm5SGftAzr4cu9f5EdF+t0H\nerb95CDEaor0FmQWBhpSkTrY8jM0Tl2EVuII57OyCvoTzzXXENwDZMplnq+M\nCoKjZ8tgAMJ9F0r4tSo8lOTSk9Mg3w2QJj1S+mbXz2TTog5djWzsULczhc9u\nR1f4PQWvof9v3xEN8zOo0922QmvAwNaJl5geIMzipXl0vpLyGzfenvrhWAzH\n8zzym4Vv/V0VifqJrngkCFCH0buuRlANuHc+fKwaH/7ourIxn/O2K6/OS41v\njUYDIv0izw1/khBSVJ7mybyO+wDpbXv+ILbYn+TfNAr2z9oUTR8JwYRdoLcb\nzTyrArpUa7L6/ptvR781eSgbnQgmvtF1VfTJHBKy6egqXc3aQQh1SbKVwQee\nqmwWZAPL2z08Vi/hScLx7WSy4lQ0KGG/BdGXwxrE/aqmNZpXT+mx2Uj0a53G\n4KNKdjLKjZTWu1Wn5wvDQvqsWpt1ExmExaqyLCeb+1BwFK77sYZtr8DP7y8j\nqvoc\r\n=z4Ho\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"59fe65618568d72cc857fce09cc946a2500d4e09","scripts":{"commit":"git-cz","semantic-release":"semantic-release --no-ci -b $BUILDKITE_JOB_ID"},"_npmUser":{"name":"seedrs.bot","email":"development.team@seedrs.com"},"repository":{"url":"git+https://github.com/seedrs/eslint-config-seedrs-base.git","type":"git"},"_npmVersion":"6.4.1","description":"Seedr's ESLint config","directories":{},"_nodeVersion":"8.10.0","_hasShrinkwrap":false,"devDependencies":{"commitizen":"^2.10.1","semantic-release":"^15.9.14","cz-conventional-changelog":"^2.1.0"},"peerDependencies":{"eslint":">= 4.12.1 <= 5.3.0","eslint-plugin-import":"^2.8.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config-seedrs-base_1.1.0_1536661000538_0.8785353162740515","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@seedrs/eslint-config-seedrs-base","version":"1.1.1","keywords":["eslint"],"author":{"url":"tech@seedrs.com","name":"Seedrs"},"license":"MIT","_id":"@seedrs/eslint-config-seedrs-base@1.1.1","maintainers":[{"name":"benjamin_sotty","email":"benjamin.sotty@gmail.com"},{"name":"brizido","email":"ricardo.brizido@gmail.com"},{"name":"catarinasantana","email":"catarina.santana@seedrs.com"},{"name":"davidlewisseedrs","email":"david.lewis@seedrs.com"},{"name":"kenleytomlin","email":"kenleytomlin@gmail.com"},{"name":"risheepatel","email":"rishee.patel@gmail.com"},{"name":"sahmed","email":"safin.ahmed@seedrs.com"},{"name":"seedrs.bot","email":"development.team@seedrs.com"},{"name":"seedrs1","email":"development.team@seedrs.com"}],"homepage":"https://github.com/seedrs/eslint-config-seedrs-base#readme","bugs":{"url":"https://github.com/seedrs/eslint-config-seedrs-base/issues"},"dist":{"shasum":"1e6bc4abae46755aef384b62094d10db39e89327","tarball":"https://registry.npmjs.org/@seedrs/eslint-config-seedrs-base/-/eslint-config-seedrs-base-1.1.1.tgz","fileCount":10,"integrity":"sha512-U7wRPi8qEAQRgSwB/b3Yic5M4KQyPAeH6xI/fKJlvuFVY+uQhO28LpPfhYnN/RvoPVtSUnK4Fe/b+/bgrk3gEA==","signatures":[{"sig":"MEUCIQDFlQan7xuse0fMf4lxepuYrTjcsXuDpsuwVWOAWbatxAIgWF/LQ80lX7oYTNYtd3S0MfXPye51dKcJboT36Tgz1IQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboMncCRA9TVsSAnZWagAAUqoP/RkGbHzPXbsYuAwGwX2+\n6dzEjKSG6dVgQTdcuuiqgTuvA2aM3Ylhv5aMsIM7aFVTKmEsUbWFFiq1qRuT\nAURvm6nljUkQTf+pKx6wkzCXDb6IbwLzVKwgxh1EmcaXrwFsXgZ90+rkzRf+\nuAWeQX/DwV00usV5C7/arADEYb1WHoCZNpJEYSO2o+Y5YCe0YsJC4IDYvY/K\nqoq55uWRz2d4eENkNQL8Cul9/kRzcq/PcsqPVsh8nOUvWjkadhZn91dEZwpF\nEa6BC2b3KrMxkjWfsHbAuzywsE5jb0rbIKipTNf9fePJ0BO3JXx5rJOxcqQG\nzgpB7AB8nMupPeBW4wafrbeehgJzDyHtSMUP9af/tSioU4/vUD1INvt/nszR\nHDG3uFrtnskL8yJnChe5g7CYnzn3khLtaE6zNqu+vKwHGaW/3aGOchaTjUFe\ntKrddWLsI91Zkxu3UCErYLmzyBYoiZE46M1L/68geba8iI8OxOqiDLs+uyXP\nVkOC2/Bh0Y7c79q3MnJd3QYZ6HI7RxF6qbCtWKjKvvEv2gwiP5dGRhDgonCn\nbA9szP1JGzBy2aR5iZeQQpxPwjPJWmptfQdQM9+PblA93jtKl665h3R4zHwq\nAK+2wJv+DAfrJNhNCKsXEQm45vOQ4riMpiJMW4EzC63vER0k3yoXyiEnDmI7\n9JTQ\r\n=N4RD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","config":{"commitizen":{"path":"./node_modules/cz-conventional-changelog"}},"gitHead":"1276dd3e13eac8a819736d0058f432b0785cbe88","scripts":{"commit":"git-cz","semantic-release":"semantic-release --no-ci -b $BUILDKITE_JOB_ID"},"_npmUser":{"name":"seedrs.bot","email":"development.team@seedrs.com"},"repository":{"url":"git+https://github.com/seedrs/eslint-config-seedrs-base.git","type":"git"},"_npmVersion":"6.4.1","description":"Seedr's ESLint config","directories":{},"_nodeVersion":"8.10.0","_hasShrinkwrap":false,"devDependencies":{"commitizen":"^2.10.1","semantic-release":"^15.9.14","cz-conventional-changelog":"^2.1.0"},"peerDependencies":{"eslint":">= 4.12.1 <= 5.6.0","eslint-plugin-import":"^2.8.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-config-seedrs-base_1.1.1_1537264091795_0.29377142142368706","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-12-11T16:42:45.471Z","modified":"2026-10-01T13:55:20.637Z","1.0.2":"2017-12-11T16:42:45.471Z","1.0.3":"2018-01-08T15:17:00.188Z","1.1.0":"2018-09-11T10:16:40.706Z","1.1.1":"2018-09-18T09:48:11.924Z"},"bugs":{"url":"https://github.com/seedrs/eslint-config-seedrs-base/issues"},"author":{"url":"tech@seedrs.com","name":"Seedrs"},"license":"MIT","homepage":"https://github.com/seedrs/eslint-config-seedrs-base#readme","keywords":["eslint"],"repository":{"url":"git+https://github.com/seedrs/eslint-config-seedrs-base.git","type":"git"},"description":"Seedr's ESLint config","maintainers":[{"email":"rishee.patel@gmail.com","name":"risheepatel"},{"email":"jonas.pereira@seedrs.com","name":"jpxiv"},{"email":"development.team@seedrs.com","name":"seedrs1"}],"readme":"# Seedrs Javascript eslint config\n\n[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)\n\nThis is the Seedrs Javascript eslint base configuration. This\nconfiguration should be used in all Javascript project and can be\nextended if needed i.e. It doesn't contain any rules for React.\nThe configuration targets es6 and newer versions of Javascript. It\nborrows heavily from [airbnbs](https://github.com/airbnb/javascript) javascript style guide but with some\ndifferences.\n\n## Rules\n\n* 1 Use `const` for all of your references.  Do not use var.\ne.x.\n```javascript\n// bad\nvar myVariable = 1;\n\n// good\nconst myVariable = 2;\n```\n* 2 If you need to reassign a variable then use `let` instead.\n```javascript\n// bad\nvar myVariable = 1;\nif(true) {\n  myVariable = 2;\n}\n\n// good\nlet myVariable = 1;\nif(true) {\n  myVariable = 2;\n}\n```\n\n* 3 Use the literal syntax for object creation.\n```javascript\n// bad\nconst myObject = new Object();\n\n// good\nconst myObject = {};\n```\n\n* 4 Use object shorthand.\n```javascript\n// bad\nconst value = 1;\nconst myObject = {\n  value: value\n};\n\n// good\nconst value = 1;\nconst myObject = {\n  value\n};\n```\n\n* 5 Only quote object keys that are invalid identifiers.\n```javascript\n// bad\nconst myObject = {\n  'key': 1,\n  'key-one': 2\n};\n\n// good\nconst myObject = {\n  key: 1,\n  'key-one': 2\n};\n```\n\n* 6 Use the spread operator over `Object.assign`.\n```javascript\n// bad\nconst original = { a: 1, b: 2 };\nconst copy = Object.assign(original,{ c: 3 });\n\n// good\nconst copy = { ...original, c: 3 };\n```\n\n* 7 Use the literal syntax for creating new arrays.\n```javascript\n// bad\nconst myArray = new Array();\n\n// good\nconst myArray = [];\n```\n\n* 8 Use `return` statements in array method callbacks.\n```javascript\n// bad - memo is undefined after the first callback\n[1, 2, 3].reduce((memo, item, index) => {\n  const multiple = item * 2;\n  memo[index] = multiple;\n},[]);\n\n// good\n[1, 2, 3].reduce((memo, item, index) => {\n  const multiple = item * 2;\n  memo[index] = multiple;\n\n  return memo;\n},[]);\n```\n\n* 9 Use object destructuring when using multiple properties from an\n  object.\n```javascript\n// bad\nconst fullName = (user) => {\n  const firstName = user.firstName;\n  const lastName = user.lastName;\n\n  return `${firstName} ${lastName}`;\n};\n\n// good\nconst fullName = ({ firstName, lastName }) => `${firstName} ${lastName}`;\n```\n\n* 10 Use array destructuring when you want values from specific\n  positions in an array.\n```javascript\n// bad\nconst myArray = [1, 2, 3];\nconst first = myArray[0];\nconst second = myArray[1];\n\n// good\nconst myArray = [1, 2, 3];\nconst [first, second] = myArray;\n```\n\n* 11 Use single quotes for strings\n```javascript\n// bad\nconst name = \"Pikachu\";\n\n// bad\nconst name = `Pikachu`;\n\n// good\nconst name = 'Pikachu';\n```\n\n* 12 Use template literals to build up strings instead of concatenation.\n```javascript\n// bad\nconst greeter = (name) => {\n  return 'Hello ' + name;\n};\n\n// good\nconst greeter = (name) => {\n  return `Hello ${name}`;\n};\n```\n\n* 13 Do not unnecessarily escape characters in strings.\n```javascript\n// bad\nconst example = '\\'this\\' is \\\"quoted\\\"';\n\n// good\nconst example = '\\this\\' is \"quoted\"';\n```\n\n* 14 Do not use the Function constructor to create a new Function - This\n  has the potential to open vulnerabilities.\n```javascript\n// bad\nconst addOne = new Function('a', 'return a + 1');\n\n// still bad\nconst addOne = Function('a', 'return a + 1');\n```\n\n* 15 Use spacing around parens and before blocks.\n```javascript\n// bad\nconst a = function(){};\nconst b = function (){};\nconst c = function() {};\n\n//good\nconst a = function () {};\nconst b = function b() {};\n```\n\n* 16 Do not reassign parameters - you can mutate the values in the\n  original caller leading to unwanted side-effects.\n```javascript\n// bad\nfunction a(obj) {\n  obj.a = 2;\n};\n\n// good\nfunction b(obj) {\n  const key = Object.prototype.hasOwnProperty.call(obj,'a') ? obj.a : 1;\n  // ...\n};\n\n// bad\nfunction y(a) {\n  if(!a) { a = 1; }\n  // ...\n};\n\n// good\nfunction x(a) {\n  const b = a || 1;\n  // ...\n};\n\nfunction z(a = 1) {\n  // ...\n};\n```\n\n* 17 Use arrow functions when you need to use an anonymous function.\n```javascript\n// bad\n[1, 2, 3].map(function (item) {\n  const multiple = item * 2;\n\n  return multiple;\n});\n\n// good\n[1, 2, 3].map(item => {\n  const multiple = item * 2;\n\n  return multiple;\n});\n```\n\n* 18 For functions that return a single expression without side-effects\n  then use the implicit return.\n```javascript\n// bad\n[1, 2, 3].map((item) => {\n  const multiple = item * 2;\n  `Two times ${item} equals ${multiple}`;\n});\n\n//good\n[1, 2, 3].map((item) => {\n  const multiple = item * 2;\n  return `Two times ${item} equals ${multiple}`;\n});\n\n//good\n[1, 2, 3].map(item => `The value is ${item}`);\n```\n\n* 19 When an arrow function only has one argument and does not have\n  a block drop the parantheses.\n```javascript\n// bad\nconst a = [1, 2, 3].map((x) => x * x);\n\n// good\nconst a = [1, 2, 3].map(x => x * x);\n\n// bad\nconst a = [1, 2, 3].map(x => {\n  const y = x * x;\n  return y;\n});\n\n// good\nconst a = [1, 2, 3].map((x) => {\n  const y = x * x;\n  return y;\n});\n```\n\n* 20 No confusing arrow syntax without comparison ops.\n```javascript\n// bad\nconst itemHeight = item => item.height > 256 ? item.largeSize\n: item.smallSize;\n\n// good\nconst itemHeight = item => (item.height > 256 ? item.largeSize\n: item.smallSize)\n```\n\n* 21 Use import/export over non-standard module systems. Modules are the\n  future standard.\n```javascript\n// bad\nconst Seedrs = require('./seedrs');\nmodule.exports = Abc;\n\n// good\nimport Seedrs from './seedrs';\n\nexport default Abc;\n```\n\n* 22 Only import from a path once group all of you imports from a single\n  path.\n```javascript\n// bad\nimport foo from 'foo';\nimport { bar } from 'foo';\n\n// good\nimport foo, { bar } from 'foo';\nimport foo, {\n  bar,\n  baz\n} from 'foo';\n```\n\n* 23 Do not export mutable values\n```javascript\n// bad\nlet foo = 3;\nexport { foo };\n\n// good\nconst foo = 3;\nexport { foo };\n```\n\n* 24 When a module only has a single export make that export the\n  default.\n```javascript\n// bad\nexport const foo = () => {};\n\n// good\nexport default () => {};\n```\n\n* 25 Place `import` statements at the top of the file.\n```javascript\n// bad\nimport foo from 'foo';\nfoo();\nimport bar from 'bar';\n\n// good\nimport foo from 'foo';\nimport bar from 'bar';\n\nfoo();\n```\n\n* 26 Generator star spacing\n```javascript\n// bad\nfunction * a() {\n  yield 'a';\n}\n\n// good\nfunction* a() {\n  yield 'a';\n}\n```\n\n* 27 Use dot notation to access object properties. Except when accessing\n  properties with a variable.\n```javascript\nconst user = {\n  firstName: 'Arnold',\n  lastName: 'Schwarzenegger',\n  awesome: true\n};\n\n// bad\nconst isAwesome = user['awesome'];\n\n// good\nconst key = 'firstName';\nconst isAwesome = user.awesome;\nconst firstName = user[key];\n```\n\n* 28 Always use the type comparision operator.\n```javascript\nconst a = 1;\nconst b = '1';\n\n// bad\nif(a == b) {\n  // ...\n}\n\n// good\nif(a === b) {\n  // ...\n}\n```\n\n* 29 Always have space before blocks\n```javascript\n// bad\n\nif (a){\n    b();\n}\n\nfunction a(){}\n\nfor (;;){\n    b();\n}\n\ntry {} catch(a){}\n\nclass Foo{\n  constructor(){}\n}\n\n// good\nif (a) {\n    b();\n}\n\nif (a) {\n    b();\n} else{ /*no error. this is checked by `keyword-spacing` rule.*/\n    c();\n}\n\n\nfunction a() {}\n\nfor (;;) {\n    b();\n}\n\ntry {} catch(a) {}\n```\n\n* 30 Always have spaces around keywords\n```javascript\n// bad\nif(a === b) {\n  // ...\n}\n\n// good\nif (a === b) {\n  // ...\n} else {\n  // ...\n}\n```\n\n* 31 Add space around infix operators\n```javascript\n// bad\na+b\n\na+ b\n\na +b\n\n// good\na + b\n```\n\n* 32  Add a newline at the end of a file\n```javascript\n// bad\nconst a = 'a';\n\n// good\nconst a = 'a';\\n\n```\n\n* 33 Enforce consistent spacing inside brackets\n```javascript\n// bad\nconst arr = [ 'foo', 'bar' ];\nconst arr = ['foo', 'bar' ];\nconst [ x, y ] = z;\nconst [ x,y ] = z;\nconst [ x, ...y ] = z;\nconst [ ,,x, ] = z;\n\n// good\nconst arr = [];\nconst arr = ['foo', 'bar', 'baz'];\nconst arr = [\n  'foo',\n  'bar'\n];\n\nconst [x, y] = z;\nconst [x,y] = z;\nconst [x, ...y] = z;\nconst [,,x,] = z;\n```\n\n* 34 Always use spaces inside object definitions.\n```javascript\n// bad\nconst obj = {'foo': 'bar'};\nconst obj = {'foo': 'bar' };\n\n// good\nconst obj = {};\nconst obj = { 'foo': 'bar' };\n```\n\n* 35 Split lines over 100 characters long onto multiple lines.\n\n* 36 Add commas after and on the same line as an array element, object\n  property.\n```javascript\n// bad\nconst arr = [\n  '1'\n  ,'2'\n];\n\n// good\nconst arr = [\n  '1',\n  '2'\n];\n```\n\n* 37 Do not have dangling commas in array and object definitions.\n```javascript\n// bad\nconst arr = [\n  '1',\n  '2',\n];\n\nconst obj = {\n  a: 'a',\n  b: 'b',\n};\n\n// good\nconst arr = [\n  '1',\n  '2'\n];\n\nconst obj = {\n  a: 'a',\n  b: 'b'\n}\n```\n\n* 38 Require semi colons\n```javascript\n// bad\nconst a = 1\n\n// good\nconst a = 1;\n```\n\n## Commitizen\n\nWe use commitizen and semantic release to help manage versions and\npublishing of the package to npm. Stage your changes and then run:\n\n``\n$ yarn commit\n``\n\nThis will bring up a prompt choose the options that best fit the\ndescription of your change and an automated commit message will be\ngenerated.\n\n## Publishing\n\nPublishing is handled by a buildkite pipeline. Get your PR approved and\nthen merge it to create an automated release.\n","readmeFilename":"README.md"}