Skip to content

Commit

Permalink
Added eslint
Browse files Browse the repository at this point in the history
  • Loading branch information
jiripudil committed Feb 5, 2017
1 parent 201b5a7 commit 712d12a
Show file tree
Hide file tree
Showing 13 changed files with 592 additions and 49 deletions.
69 changes: 69 additions & 0 deletions .eslintrc
@@ -0,0 +1,69 @@
{
"parser": "babel-eslint",
"env": {
"browser": true,
"es6": true
},
"extends": "eslint:recommended",
"rules": {
"array-bracket-spacing": "error",
"arrow-body-style": "error",
"arrow-parens": "error",
"arrow-spacing": "error",
"block-scoped-var": "error",
"block-spacing": "error",
"brace-style": "error",
"camelcase": "error",
"comma-dangle": ["error", "always-multiline"],
"comma-spacing": "error",
"comma-style": "error",
"computed-property-spacing": "error",
"curly": ["error", "all"],
"dot-notation": "error",
"eol-last": "error",
"eqeqeq": "error",
"func-call-spacing": "error",
"func-names": ["error", "never"],
"func-style": "error",
"indent": ["error", "tab"],
"keyword-spacing": "error",
"linebreak-style": ["error", "unix"],
"max-depth": "error",
"max-statements-per-line": "error",
"new-parens": "error",
"no-array-constructor": "error",
"no-empty-function": "error",
"no-extra-bind": "error",
"no-extra-parens": ["error", "all"],
"no-implicit-globals": "error",
"no-multi-spaces": "error",
"no-nested-ternary": "error",
"no-redeclare": "error",
"no-return-assign": "error",
"no-throw-literal": "error",
"no-trailing-spaces": "error",
"no-unneeded-ternary": "error",
"no-unused-expressions": "error",
"no-useless-return": "error",
"no-var": "error",
"object-curly-spacing": "error",
"object-shorthand": "error",
"prefer-arrow-callback": "error",
"prefer-const": "error",
"prefer-destructuring": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
"prefer-template": "error",
"quotes": ["error", "single"],
"semi": ["error", "always"],
"space-before-blocks": "error",
"space-before-function-paren": ["error", {
"anonymous": "always",
"named": "never"
}],
"spaced-comment": "error",
"template-curly-spacing": "error",
"unicode-bom": "error",
"yoda": "error"
}
}
6 changes: 4 additions & 2 deletions .gitlab-ci.yml
Expand Up @@ -13,9 +13,11 @@ cache:
test:6:
image: node:6
script:
- npm test
- yarn run lint
- yarn run test

test:7:
image: node:7
script:
- npm test
- yarn run lint
- yarn run test
4 changes: 2 additions & 2 deletions dist/Naja.js

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion package.json
Expand Up @@ -19,13 +19,15 @@
"devDependencies": {
"babel": "^6.5.0",
"babel-core": "^6.14.0",
"babel-eslint": "^7.1.1",
"babel-loader": "^6.2.0",
"babel-plugin-syntax-class-properties": "^6.13.0",
"babel-plugin-transform-class-properties": "^6.14.0",
"babel-polyfill": "^6.16.0",
"babel-preset-es2015": "^6.16.0",
"babel-register": "^6.16.3",
"chai": "^3.5.0",
"eslint": "^3.15.0",
"jsdom": "^9.9.1",
"jsdom-global": "^2.1.1",
"mocha": "^3.1.2",
Expand All @@ -36,7 +38,8 @@
},
"scripts": {
"build": "NODE_ENV=production webpack --config webpack.config.js",
"test": "mocha --require babel-register tests"
"test": "mocha --require babel-register tests",
"lint": "node_modules/.bin/eslint src"
},
"repository": {
"type": "git",
Expand Down
4 changes: 2 additions & 2 deletions src/Naja.js
Expand Up @@ -30,7 +30,7 @@ export default class Naja extends EventTarget {

initialize() {
if (this.initialized) {
throw new Error("Cannot initialize Naja, it is already initialized.");
throw new Error('Cannot initialize Naja, it is already initialized.');
}

this.uiHandler = new UIHandler(this);
Expand Down Expand Up @@ -66,7 +66,7 @@ export default class Naja extends EventTarget {
options = objectAssign({}, defaultOptions, options || {});

let currentXhr;
const beforeCallback = xhr => {
const beforeCallback = (xhr) => {
currentXhr = xhr;
this.fireEvent('before', {xhr, method, url, data, options});
};
Expand Down
6 changes: 3 additions & 3 deletions src/core/HistoryHandler.js
Expand Up @@ -17,7 +17,7 @@ export default class HistoryHandler extends Component {
this.popped = !!window.history.state;
const initialUrl = window.location.href;

window.addEventListener('popstate', e => {
window.addEventListener('popstate', (e) => {
const state = e.state || this.initialState;
const initialPop = !this.popped && initialUrl === state.href;
this.popped = true;
Expand All @@ -26,7 +26,7 @@ export default class HistoryHandler extends Component {
return;
}

if (!!state.ui) {
if (state.ui) {
this.handleSnippets(state.ui);
this.handleTitle(state.title);
}
Expand Down Expand Up @@ -61,7 +61,7 @@ export default class HistoryHandler extends Component {

findSnippets() {
const result = {};
window.document.querySelectorAll('[id^="snippet-"]').forEach(snippet => {
window.document.querySelectorAll('[id^="snippet-"]').forEach((snippet) => {
if (!snippet.getAttribute('data-history-nocache')) {
result[snippet.id] = snippet.innerHTML;
}
Expand Down
4 changes: 2 additions & 2 deletions src/core/RedirectHandler.js
Expand Up @@ -4,7 +4,7 @@ import Component from '../Component';
export default class RedirectHandler extends Component {
constructor(naja) {
super(naja);
naja.addEventListener('success', evt => {
naja.addEventListener('success', (evt) => {
const {response} = evt;
if (response.redirect) {
this.makeRedirect(response.redirect, response.forceRedirect);
Expand All @@ -14,7 +14,7 @@ export default class RedirectHandler extends Component {
}

makeRedirect(url, force) {
const externalRedirect = /^https?/i.test(url) && ! new RegExp('^' + window.location.origin, 'i').test(url);
const externalRedirect = /^https?/i.test(url) && ! new RegExp(`^${window.location.origin}`, 'i').test(url);
if (force || externalRedirect) {
window.location.href = url;

Expand Down
4 changes: 2 additions & 2 deletions src/core/ScriptLoader.js
Expand Up @@ -12,7 +12,7 @@ export default class ScriptLoader extends Component {
}

loadScripts(snippets) {
for (let id in snippets) {
for (const id in snippets) {
if (snippets.hasOwnProperty(id) && /<[^>]*script/i.test(snippets[id])) {
if ( ! document.getElementById(id)) {
continue;
Expand All @@ -21,7 +21,7 @@ export default class ScriptLoader extends Component {
const el = window.document.createElement('div');
el.innerHTML = snippets[id];

el.querySelectorAll('script').forEach(script => {
el.querySelectorAll('script').forEach((script) => {
window.document.head.appendChild(script)
.parentNode.removeChild(script);
});
Expand Down
4 changes: 2 additions & 2 deletions src/core/SnippetHandler.js
Expand Up @@ -12,10 +12,10 @@ export default class SnippetHandler extends Component {
}

updateSnippets(snippets) {
for (let id in snippets) {
for (const id in snippets) {
if (snippets.hasOwnProperty(id)) {
const el = document.getElementById(id);
if (!!el) {
if (el) {
this.updateSnippet(el, snippets[id]);
}
}
Expand Down
22 changes: 10 additions & 12 deletions src/core/UIHandler.js
Expand Up @@ -16,17 +16,15 @@ export default class UIHandler extends Component {
'button[type="submit"].ajax',
'form.ajax input[type="submit"]',
'form.ajax input[type="image"]',
'form.ajax button[type="submit"]'
'form.ajax button[type="submit"]',
].join(', ');

const nodes = document.querySelectorAll(selectors);
Array.prototype.forEach.call(nodes, node => {
document.querySelectorAll(selectors).forEach((node) => {
node.removeEventListener('click', handler);
node.addEventListener('click', handler);
});

const forms = document.querySelectorAll('form.ajax');
Array.prototype.forEach.call(forms, form => {
document.querySelectorAll('form.ajax').forEach((form) => {
form.removeEventListener('submit', handler);
form.addEventListener('submit', handler);
});
Expand All @@ -37,15 +35,15 @@ export default class UIHandler extends Component {
return;
}

const el = evt.target;
let method, url, data, options = {};
const el = evt.target, options = {};
let method, url, data;

if ( ! this.naja.fireEvent('interaction', {element: el, originalEvent: evt, options})) {
return;
}

if (evt.type === 'submit') {
method = !!el.method ? el.method.toUpperCase() : 'GET';
method = el.method ? el.method.toUpperCase() : 'GET';
url = el.action || window.location.pathname + window.location.search;
data = new FormData(el);

Expand All @@ -56,8 +54,8 @@ export default class UIHandler extends Component {
data = null;

} else if (el.tagName.toLowerCase() === 'input' || el.tagName.toLowerCase() === 'button') {
const form = el.form;
method = !!form.method ? form.method.toUpperCase() : 'GET';
const {form} = el;
method = form.method ? form.method.toUpperCase() : 'GET';
url = form.action || window.location.pathname + window.location.search;
data = new FormData(form);

Expand All @@ -66,8 +64,8 @@ export default class UIHandler extends Component {

} else if (el.type === 'image') {
const coords = el.getBoundingClientRect();
data.set(el.name + '.x', Math.max(0, Math.floor(evt.pageX - coords.left)));
data.set(el.name + '.y', Math.max(0, Math.floor(evt.pageY - coords.top)));
data.set(`${el.name}.x`, Math.max(0, Math.floor(evt.pageX - coords.left)));
data.set(`${el.name}.y`, Math.max(0, Math.floor(evt.pageY - coords.top)));
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/extensions/AbortExtension.js
Expand Up @@ -11,7 +11,7 @@ export default class AbortExtension {
abortable = true;
xhr = null;
initialize() {
document.body.addEventListener('keydown', evt => {
document.addEventListener('keydown', (evt) => {
if (!!this.xhr && evt.key === 'Escape' && !(evt.ctrlKey || evt.shiftKey || evt.altKey || evt.metaKey) && this.abortable) {
this.xhr.abort();
this.xhr = null;
Expand Down
2 changes: 1 addition & 1 deletion tests/Naja.ext.AbortExtension.js
Expand Up @@ -55,7 +55,7 @@ describe('AbortExtension', function () {
done();
});

document.body.dispatchEvent(new KeyboardEvent('keydown', {
document.dispatchEvent(new KeyboardEvent('keydown', {
bubbles: true,
cancelable: true,
ctrlKey: false,
Expand Down

0 comments on commit 712d12a

Please sign in to comment.