diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..5dd4165 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,20 @@ +# EditorConfig: http://EditorConfig.org +# all files defaults +[**] +# Unix-style newlines with a newline ending +end_of_line = lf +insert_final_newline = true +# Set default charset +charset = utf-8 +# 4 space indentation +indent_style = space +indent_size = 4 +# trim whitespaces +trim_trailing_whitespace = true +# always insert final newline +insert_final_newline = true + +# 2 spaces indent for config files +[{package.json}] +indent_style = space +indent_size = 2 diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..6e5cc87 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,252 @@ +{ + // I want to use babel-eslint for parsing! + "parser": "babel-eslint", + "env": { + // I write for browser + "browser": true, + // in CommonJS + "node": true, + // use ES6 + "es6": true + }, + "ecmaProperties": { + // enable JSX support + "jsx": true + }, + "plugins": [ + // enable react plugin + "react" + ], + "globals": { + "__WEBPACK__": true + }, + // To give you an idea how to override rule options + "rules": { + // Possible Errors + "comma-dangle": 0, + "no-console": 2, + "no-debugger": 1, + "no-dupe-keys": 2, + "no-dupe-args": 2, + "no-empty": 2, + "no-extra-boolean-cast": 2, + "no-extra-semi": 2, + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "quote-props": [ + 2, + "consistent-as-needed", + { + "keywords": true + } + ], + "no-sparse-arrays": 2, + "no-unreachable": 2, + "use-isnan": 2, + "valid-jsdoc": 2, + "valid-typeof": 2, + // Best Practices + "consistent-return": 1, + "curly": 2, + "default-case": 2, + "dot-notation": 2, + "eqeqeq": 2, + "no-alert": 2, + "no-caller": 2, + "no-else-return": 2, + "no-eq-null": 2, + "no-eval": 2, + "no-extend-native": 2, + "no-floating-decimal": 2, + "no-implied-eval": 2, + "no-iterator": 2, + "no-labels": 2, + "no-loop-func": 1, + "no-lone-blocks": 2, + "no-multi-spaces": 2, + "no-native-reassign": 2, + "no-new": 2, + "no-new-func": 2, + "no-new-wrappers": 2, + "no-proto": 2, + "no-redeclare": 2, + "no-return-assign": 2, + "no-script-url": 2, + "no-self-compare": 2, + "no-sequences": 2, + "no-throw-literal": 2, + "no-unused-expressions": 2, + "no-void": 2, + "radix": 2, + "yoda": 0, + // Strict Mode + "strict": 0, + // Variables + "no-catch-shadow": 2, + "no-delete-var": 2, + "no-shadow": 2, + "no-shadow-restricted-names": 2, + "no-undef": 2, + "no-unused-vars": [ + 2, + { + "vars": "all", + "args": "after-used" + } + ], + "no-use-before-define": 2, + // Node + "handle-callback-err": 2, + "no-new-require": 2, + "no-path-concat": 2, + // Stylistic Issues + "indent": 2, + // 4 spaces + "camelcase": 0, + "comma-spacing": [ + 2, + { + "before": false, + "after": true + } + ], + "comma-style": [ + 2, + "last" + ], + "eol-last": 2, + "func-style": [ + 2, + "expression" + ], + "max-nested-callbacks": [ + 2, + 3 + ], + "no-array-constructor": 2, + "no-mixed-spaces-and-tabs": 2, + "no-multiple-empty-lines": [ + 1, + { + "max": 2 + } + ], + "no-nested-ternary": 2, + "no-new-object": 2, + "semi-spacing": [ + 2, + { + "before": false, + "after": true + } + ], + "no-spaced-func": 2, + "no-trailing-spaces": 2, + "no-underscore-dangle": 2, + "no-extra-parens": [ + 2, + "functions" + ], + "quote-props": [ + 1, + "as-needed" + ], + "quotes": [ + 1, + "single" + ], + "semi": [ + 2, + "always" + ], + "semi-spacing": [ + 2, + { + "before": false, + "after": true + } + ], + "space-before-function-paren": [ + 1, + { + "anonymous": "never", + "named": "never" + } + ], + "space-after-keywords": [ + 1, + "always" + ], + "space-before-blocks": [ + 1, + "always" + ], + "object-curly-spacing": [ + 1, + "never" + ], + "array-bracket-spacing": [ + 1, + "never" + ], + "computed-property-spacing": [ + 1, + "never" + ], + "space-in-parens": [ + 1, + "never" + ], + "key-spacing": [ + 1, + { + "beforeColon": false, + "afterColon": true + } + ], + "object-curly-spacing": [ + 1, + "never" + ], + "space-infix-ops": 2, + // complexity rules + "max-depth": [ + 2, + 3 + ], + "max-statements": [ + 1, + 20 + ], + "complexity": [ + 1, + 3 + ], + "max-len": [ + 2, + 120 + ], + "max-params": [ + 2, + 2 + ], + // jsx rules + "react/jsx-quotes": 1, + "react/jsx-no-undef": 1, + "react/jsx-uses-react": 1, + "react/jsx-uses-vars": 1, + "react/no-did-mount-set-state": 1, + "react/no-did-update-set-state": 1, + "react/no-multi-comp": 1, + "react/react-in-jsx-scope": 1, + "react/self-closing-comp": 1, + "react/wrap-multilines": 1, + // ES6 + "prefer-const": 2, + "object-shorthand": [ + 2, + "always" + ], + "no-var": 2 + } +} diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..e6825fc --- /dev/null +++ b/build/index.html @@ -0,0 +1,10 @@ + + + + + Worklife – Camden + + + Display + + diff --git a/build/worklife-camden.js b/build/worklife-camden.js new file mode 100644 index 0000000..399de07 --- /dev/null +++ b/build/worklife-camden.js @@ -0,0 +1,2 @@ +!function(r){function t(o){if(e[o])return e[o].exports;var n=e[o]={exports:{},id:o,loaded:!1};return r[o].call(n.exports,n,n.exports,t),n.loaded=!0,n.exports}var e={};return t.m=r,t.c=e,t.p="/",t(0)}([function(r,t){"use strict"}]); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd29ya2xpZmUtY2FtZGVuLmpzIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCA2YjJmNzI1M2I0M2ViZjE0Y2ViNSJdLCJuYW1lcyI6WyJtb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaW5zdGFsbGVkTW9kdWxlcyIsImV4cG9ydHMiLCJtb2R1bGUiLCJpZCIsImxvYWRlZCIsImNhbGwiLCJtIiwiYyIsInAiXSwibWFwcGluZ3MiOiJDQUFTLFNBQVVBLEdDSW5CLFFBQUFDLEdBQUFDLEdBR0EsR0FBQUMsRUFBQUQsR0FDQSxNQUFBQyxHQUFBRCxHQUFBRSxPQUdBLElBQUFDLEdBQUFGLEVBQUFELElBQ0FFLFdBQ0FFLEdBQUFKLEVBQ0FLLFFBQUEsRUFVQSxPQU5BUCxHQUFBRSxHQUFBTSxLQUFBSCxFQUFBRCxRQUFBQyxJQUFBRCxRQUFBSCxHQUdBSSxFQUFBRSxRQUFBLEVBR0FGLEVBQUFELFFBdkJBLEdBQUFELEtBcUNBLE9BVEFGLEdBQUFRLEVBQUFULEVBR0FDLEVBQUFTLEVBQUFQLEVBR0FGLEVBQUFVLEVBQUEsSUFHQVYsRUFBQSxLRE1NLFNBQVNJLEVBQVFELEdBRXRCIiwiZmlsZSI6IndvcmtsaWZlLWNhbWRlbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9LFxuLyoqKioqKi8gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bG9hZGVkOiBmYWxzZVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIi9cIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVkIGJ5IG1pY2hlbGUgb24gMTQvMTAvMTUuXG5cdCAqL1xuXG4vKioqLyB9XG4vKioqKioqLyBdKTtcblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3b3JrbGlmZS1jYW1kZW4uanNcbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4gXHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMCk7XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiB3ZWJwYWNrL2Jvb3RzdHJhcCA2YjJmNzI1M2I0M2ViZjE0Y2ViNVxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/package.json b/package.json index fcdf1eb..b51aebe 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "description": "Climb.social display for Worklife – Camden", "main": "src/index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "start": "webpack-dev-server --content-base src/", + "build": "webpack -p" }, "repository": { "type": "git", @@ -20,5 +22,17 @@ "bugs": { "url": "https://github.com/Climb-social/worklife-camden-display/issues" }, - "homepage": "https://github.com/Climb-social/worklife-camden-display#readme" + "homepage": "https://github.com/Climb-social/worklife-camden-display#readme", + "devDependencies": { + "babel-core": "^5.8.25", + "babel-eslint": "^4.1.3", + "babel-loader": "^5.3.2", + "eslint": "^1.6.0", + "eslint-loader": "^1.1.0", + "eslint-plugin-react": "^3.5.1", + "html-webpack-plugin": "^1.6.2", + "json-loader": "^0.5.3", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.0" + } } diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..c9bad3a --- /dev/null +++ b/src/index.html @@ -0,0 +1,10 @@ + + + + + Worklife – Camden + + + Display + + diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..16bed76 --- /dev/null +++ b/src/index.js @@ -0,0 +1,3 @@ +/** + * Created by michele on 14/10/15. + */ diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..e98f0ce --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,52 @@ +var path = require('path'); +var webpack = require('webpack'); +var HtmlWebpackPlugin = require('html-webpack-plugin'); + +module.exports = { + devtool: 'inline-source-map', + debug: true, + context: path.resolve(__dirname), + entry: './src/index.js', + output: { + path: path.resolve(__dirname, 'build'), + publicPath: '/', + filename: 'worklife-camden.js' + }, + resolve: { + root: path.resolve(__dirname), + extensions: ['', '.js', '.jsx'], + modulesDirectories: ['node_modules'] + }, + node: { + fs: 'empty' + }, + eslint: { + configFile: path.join(__dirname, '.eslintrc') + }, + module: { + preLoaders: [ + { + test: /\.jsx?$/, + exclude: /node_modules/, + loader: 'eslint' + } + ], + loaders: [ + { + test: /\.jsx?$/, + exclude: /node_modules/, + loader: 'babel', + query: {stage: 0} + } + ] + }, + externals: { + 'react': 'React' + }, + plugins: [ + new HtmlWebpackPlugin({ + inject: true, + template: 'src/index.html' + }) + ] +};