From 95585c6274b63372213054cd7effae2b6edb7efc Mon Sep 17 00:00:00 2001
From: Kushagra Gour <chinchang457@gmail.com>
Date: Mon, 3 Jul 2017 08:45:32 +0530
Subject: [PATCH] add package.json & prettier to commit flow!

---
 .eslintrc.json       | 477 +++++++++++++++++++------------------------
 git-hooks/pre-commit |  23 +++
 package.json         |  26 +++
 3 files changed, 259 insertions(+), 267 deletions(-)
 create mode 100755 git-hooks/pre-commit
 create mode 100644 package.json

diff --git a/.eslintrc.json b/.eslintrc.json
index 8bd6d63..0062fe4 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,269 +1,212 @@
 {
-    "env": {
-        "browser": true
-    },
-    "parser": "babel-eslint",
-    "extends": "eslint:recommended",
-    "rules": {
-        "accessor-pairs": "error",
-        "array-bracket-spacing": "off",
-        "array-callback-return": "error",
-        "arrow-body-style": "off",
-        "arrow-parens": "error",
-        "arrow-spacing": "error",
-        "block-scoped-var": "error",
-        "block-spacing": [
-            "error",
-            "always"
-        ],
-        "brace-style": "off",
-        "callback-return": "error",
-        "camelcase": "error",
-        "comma-spacing": "off",
-        "comma-style": "off",
-        "complexity": "error",
-        "computed-property-spacing": [
-            "error",
-            "never"
-        ],
-        "consistent-return": "error",
-        "consistent-this": "off",
-        "curly": "error",
-        "default-case": "error",
-        "dot-location": [
-            "error",
-            "property"
-        ],
-        "dot-notation": "error",
-        "eol-last": "off",
-        "eqeqeq": "error",
-        "func-names": "off",
-        "func-style": [
-            "error",
-            "declaration"
-        ],
-        "generator-star-spacing": "error",
-        "global-require": "error",
-        "guard-for-in": "error",
-        "handle-callback-err": "error",
-        "id-blacklist": "error",
-        "id-length": "off",
-        "id-match": "error",
-        "indent": [ "error", "tab" ],
-        "init-declarations": "off",
-        "jsx-quotes": "error",
-        "key-spacing": [
-            "error",
-            { "afterColon": true }
-        ],
-        "keyword-spacing": [
-            "error",
-            {
-                "after": true,
-                "before": true
-            }
-        ],
-        "linebreak-style": [
-            "error",
-            "unix"
-        ],
-        "lines-around-comment": "error",
-        "max-depth": "error",
-        "max-len": "off",
-        "max-nested-callbacks": "error",
-        "max-params": "error",
-        "max-statements": "off",
-        "max-statements-per-line": "off",
-        "new-parens": "error",
-        "newline-after-var": "off",
-        "newline-before-return": "off",
-        "newline-per-chained-call": "error",
-        "no-alert": "off",
-        "no-array-constructor": "error",
-        "no-bitwise": "off",
-        "no-caller": "off",
-        "no-console": "off",
-        "no-catch-shadow": "error",
-        "no-confusing-arrow": "error",
-        "no-continue": "error",
-        "no-div-regex": "error",
-        "no-duplicate-imports": "error",
-        "no-else-return": "error",
-        "no-empty-function": "off",
-        "no-eq-null": "error",
-        "no-eval": "error",
-        "no-extend-native": "error",
-        "no-extra-bind": "error",
-        "no-extra-label": "error",
-        "no-extra-parens": "off",
-        "no-floating-decimal": "error",
-        "no-implicit-coercion": "off",
-        "no-implicit-globals": "off",
-        "no-implied-eval": "error",
-        "no-inline-comments": "off",
-        "no-inner-declarations": [
-            "error",
-            "functions"
-        ],
-        "no-invalid-this": "error",
-        "no-iterator": "error",
-        "no-label-var": "error",
-        "no-labels": "error",
-        "no-lone-blocks": "error",
-        "no-lonely-if": "error",
-        "no-loop-func": "error",
-        "no-magic-numbers": "off",
-        "no-mixed-requires": "error",
-        "no-multi-spaces": "error",
-        "no-multi-str": "error",
-        "no-multiple-empty-lines": "error",
-        "no-native-reassign": "error",
-        "no-negated-condition": "off",
-        "no-nested-ternary": "off",
-        "no-new": "off",
-        "no-new-func": "error",
-        "no-new-object": "error",
-        "no-new-require": "error",
-        "no-new-wrappers": "error",
-        "no-octal-escape": "error",
-        "no-param-reassign": [
-            "error",
-            {
-                "props": false
-            }
-        ],
-        "no-path-concat": "error",
-        "no-plusplus": "off",
-        "no-process-env": "error",
-        "no-process-exit": "error",
-        "no-proto": "error",
-        "no-prototype-builtins": "error",
-        "no-restricted-globals": "error",
-        "no-restricted-imports": "error",
-        "no-restricted-modules": "error",
-        "no-restricted-syntax": "error",
-        "no-return-assign": "error",
-        "no-script-url": "error",
-        "no-self-compare": "error",
-        "no-sequences": "error",
-        "no-shadow": "error",
-        "no-shadow-restricted-names": "error",
-        "no-spaced-func": "error",
-        "no-sync": "error",
-        "no-ternary": "off",
-        "no-throw-literal": "error",
-        "no-trailing-spaces": "error",
-        "no-undef-init": "error",
-        "no-undefined": "error",
-        "no-underscore-dangle": "error",
-        "no-unmodified-loop-condition": "error",
-        "no-unneeded-ternary": "error",
-        "no-unsafe-finally": "error",
-        "no-unused-expressions": "error",
-        "no-use-before-define": "off",
-        "no-useless-call": "error",
-        "no-useless-computed-key": "error",
-        "no-useless-concat": "off",
-        "no-useless-constructor": "error",
-        "no-useless-escape": "error",
-        "no-useless-rename": "error",
-        "no-var": "off",
-        "no-void": "error",
-        "no-warning-comments": "off",
-        "no-whitespace-before-property": "error",
-        "no-with": "error",
-        "object-curly-spacing": [
-            "error",
-            "always"
-        ],
-        "object-property-newline": "off",
-        "object-shorthand": "off",
-        "one-var": "off",
-        "one-var-declaration-per-line": "error",
-        "operator-assignment": [
-            "error",
-            "always"
-        ],
-        "operator-linebreak": [
-            "error",
-            "before"
-        ],
-        "padded-blocks": "off",
-        "prefer-arrow-callback": "off",
-        "prefer-const": "error",
-        "prefer-reflect": "off",
-        "prefer-rest-params": "off",
-        "prefer-spread": "error",
-        "prefer-template": "off",
-        "quote-props": "off",
-        "quotes": "off",
-        "radix": "error",
-        "require-jsdoc": "off",
-        "require-yield": "error",
-        "semi": "off",
-        "semi-spacing": [
-            "error",
-            {
-                "after": true,
-                "before": false
-            }
-        ],
-        "sort-imports": "error",
-        "sort-vars": "off",
-        "space-before-blocks": "off",
-        "space-before-function-paren": "off",
-        "space-in-parens": [
-            "error",
-            "never"
-        ],
-        "space-infix-ops": "error",
-        "space-unary-ops": "error",
-        "spaced-comment": [
-            "error",
-            "always"
-        ],
-        "strict": [
-            "error",
-            "never"
-        ],
-        "template-curly-spacing": "error",
-        "unicode-bom": [
-            "error",
-            "never"
-        ],
-        "valid-jsdoc": "off",
-        "vars-on-top": "off",
-        "wrap-regex": "error",
-        "yield-star-spacing": "error",
-        "yoda": [
-            "error",
-            "never"
-        ]
-    },
-    "globals": {
-        "ArrayBuffer": true,
-        "Uint8Array": true,
-        "chrome": true,
-        "CodeMirror": true,
-        "Split": true,
-        "emmetCodeMirror": true,
-        "deferred": true,
-        "$": true,
-        "$all": true,
-        "CoffeeScript": true,
-        "Babel": true,
-        "ts": true,
-        "Sass": true,
-        "less": true,
-        "stylus": true,
-        "atomizer": true,
-        "marked": true,
-        "jade": true,
-        "loadJS": true,
-        "esprima": true,
-        "escodegen": true,
-        "utils": true,
-        "Promise": true,
-        "Inlet": true
-    }
+	"env": {
+		"browser": true
+	},
+	"parser": "babel-eslint",
+	"extends": "eslint:recommended",
+	"rules": {
+		"accessor-pairs": "error",
+
+		"array-callback-return": "error",
+
+		"block-scoped-var": "error",
+
+		"callback-return": "error",
+		"camelcase": "error",
+		"comma-spacing": "off",
+		"comma-style": "off",
+		"complexity": "error",
+		"computed-property-spacing": ["error", "never"],
+		"consistent-return": "error",
+		"consistent-this": "off",
+		"curly": "error",
+		"default-case": "error",
+		"dot-location": ["error", "property"],
+		"dot-notation": "error",
+		"eol-last": "off",
+		"eqeqeq": "error",
+		"func-names": "off",
+		"func-style": ["error", "declaration"],
+		"generator-star-spacing": "error",
+		"global-require": "error",
+		"guard-for-in": "error",
+		"handle-callback-err": "error",
+		"id-blacklist": "error",
+		"id-length": "off",
+		"id-match": "error",
+		"indent": ["error", "tab"],
+		"init-declarations": "off",
+		"jsx-quotes": "error",
+
+		"max-depth": "error",
+		"max-len": "off",
+		"max-nested-callbacks": "error",
+		"max-params": "error",
+		"max-statements": "off",
+		"max-statements-per-line": "off",
+		"new-parens": "error",
+		"newline-after-var": "off",
+		"newline-before-return": "off",
+		"newline-per-chained-call": "error",
+		"no-alert": "off",
+		"no-array-constructor": "error",
+		"no-bitwise": "off",
+		"no-caller": "off",
+		"no-console": "off",
+		"no-catch-shadow": "error",
+		"no-confusing-arrow": "error",
+		"no-continue": "error",
+		"no-div-regex": "error",
+		"no-duplicate-imports": "error",
+		"no-else-return": "error",
+		"no-empty-function": "off",
+		"no-eq-null": "error",
+		"no-eval": "error",
+		"no-extend-native": "error",
+		"no-extra-bind": "error",
+		"no-extra-label": "error",
+		"no-extra-parens": "off",
+		"no-floating-decimal": "error",
+		"no-implicit-coercion": "off",
+		"no-implicit-globals": "off",
+		"no-implied-eval": "error",
+		"no-inline-comments": "off",
+		"no-inner-declarations": ["error", "functions"],
+		"no-invalid-this": "error",
+		"no-iterator": "error",
+		"no-label-var": "error",
+		"no-labels": "error",
+		"no-lone-blocks": "error",
+		"no-lonely-if": "error",
+		"no-loop-func": "error",
+		"no-magic-numbers": "off",
+		"no-mixed-requires": "error",
+		"no-multi-spaces": "error",
+		"no-multi-str": "error",
+		"no-multiple-empty-lines": "error",
+		"no-native-reassign": "error",
+		"no-negated-condition": "off",
+		"no-nested-ternary": "off",
+		"no-new": "off",
+		"no-new-func": "error",
+		"no-new-object": "error",
+		"no-new-require": "error",
+		"no-new-wrappers": "error",
+		"no-octal-escape": "error",
+		"no-param-reassign": [
+			"error",
+			{
+				"props": false
+			}
+		],
+		"no-path-concat": "error",
+		"no-plusplus": "off",
+		"no-process-env": "error",
+		"no-process-exit": "error",
+		"no-proto": "error",
+		"no-prototype-builtins": "error",
+		"no-restricted-globals": "error",
+		"no-restricted-imports": "error",
+		"no-restricted-modules": "error",
+		"no-restricted-syntax": "error",
+		"no-return-assign": "error",
+		"no-script-url": "error",
+		"no-self-compare": "error",
+		"no-sequences": "error",
+		"no-shadow": "error",
+		"no-shadow-restricted-names": "error",
+		"no-spaced-func": "error",
+		"no-sync": "error",
+		"no-ternary": "off",
+		"no-throw-literal": "error",
+		"no-trailing-spaces": "error",
+		"no-undef-init": "error",
+		"no-undefined": "error",
+		"no-underscore-dangle": "error",
+		"no-unmodified-loop-condition": "error",
+		"no-unneeded-ternary": "error",
+		"no-unsafe-finally": "error",
+		"no-unused-expressions": "error",
+		"no-use-before-define": "off",
+		"no-useless-call": "error",
+		"no-useless-computed-key": "error",
+		"no-useless-concat": "off",
+		"no-useless-constructor": "error",
+		"no-useless-escape": "error",
+		"no-useless-rename": "error",
+		"no-var": "off",
+		"no-void": "error",
+		"no-warning-comments": "off",
+		"no-whitespace-before-property": "error",
+		"no-with": "error",
+		"object-curly-spacing": ["error", "always"],
+		"object-property-newline": "off",
+		"object-shorthand": "off",
+		"one-var": "off",
+		"one-var-declaration-per-line": "error",
+		"operator-assignment": ["error", "always"],
+
+		"padded-blocks": "off",
+		"prefer-arrow-callback": "off",
+		"prefer-const": "error",
+		"prefer-reflect": "off",
+		"prefer-rest-params": "off",
+		"prefer-spread": "error",
+		"prefer-template": "off",
+		"quote-props": "off",
+		"quotes": "off",
+		"radix": "error",
+		"require-jsdoc": "off",
+		"require-yield": "error",
+		"semi": "off",
+		"semi-spacing": [
+			"error",
+			{
+				"after": true,
+				"before": false
+			}
+		],
+		"sort-imports": "error",
+		"sort-vars": "off",
+		"space-before-blocks": "off",
+		"space-before-function-paren": "off",
+		"space-in-parens": ["error", "never"],
+		"space-infix-ops": "error",
+		"space-unary-ops": "error",
+		"spaced-comment": ["error", "always"],
+		"strict": ["error", "never"],
+		"template-curly-spacing": "error",
+		"unicode-bom": ["error", "never"],
+		"valid-jsdoc": "off",
+		"vars-on-top": "off",
+		"wrap-regex": "error",
+		"yield-star-spacing": "error",
+		"yoda": ["error", "never"]
+	},
+	"globals": {
+		"ArrayBuffer": true,
+		"Uint8Array": true,
+		"chrome": true,
+		"CodeMirror": true,
+		"Split": true,
+		"emmetCodeMirror": true,
+		"deferred": true,
+		"$": true,
+		"$all": true,
+		"CoffeeScript": true,
+		"Babel": true,
+		"ts": true,
+		"Sass": true,
+		"less": true,
+		"stylus": true,
+		"atomizer": true,
+		"marked": true,
+		"jade": true,
+		"loadJS": true,
+		"esprima": true,
+		"escodegen": true,
+		"utils": true,
+		"Promise": true,
+		"Inlet": true
+	}
 }
diff --git a/git-hooks/pre-commit b/git-hooks/pre-commit
new file mode 100755
index 0000000..c819412
--- /dev/null
+++ b/git-hooks/pre-commit
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# RUN PRETTIER
+jsjsonfiles=$(git diff --staged --name-only | grep ".*\.\(js\|json\)")
+echo "$jsjsonfiles" | xargs ./node_modules/.bin/prettier --single-quote --use-tabs --write
+echo "$jsjsonfiles" | xargs git add
+
+# Fetch .js or .json filed from staged files
+jsfiles=$(git diff --staged --name-only --diff-filter=ACM | grep '\.js$')
+
+[ -z "$jsfiles" ] && exit 0
+
+# ESLINT CHECK
+eslintresult=$(./node_modules/.bin/eslint --color $jsfiles)
+
+if [[ $eslintresult != "" ]]; then
+	echo "$eslintresult"
+	exit 1 # reject
+fi
+
+echo "\033[32m✔ ESlint passed\033[0m"
+
+exit 0
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..4c88a62
--- /dev/null
+++ b/package.json
@@ -0,0 +1,26 @@
+{
+	"name": "web-maker",
+	"version": "2.7.2",
+	"description": "A blazing fast & offline web playground",
+	"main": "index.html",
+	"devDependencies": {
+		"babel-eslint": "^7.2.3",
+		"eslint": "^4.1.1",
+		"eslint-config-prettier": "^2.3.0",
+		"prettier": "^1.5.2"
+	},
+	"scripts": {
+		"install": "ln -s ../../git-hooks/pre-commit .git/hooks/pre-commit"
+	},
+	"repository": {
+		"type": "git",
+		"url": "git+https://github.com/chinchang/web-maker.git"
+	},
+	"keywords": ["frontend", "playground", "web", "editor"],
+	"author": "Kushagra Gour",
+	"license": "MIT",
+	"bugs": {
+		"url": "https://github.com/chinchang/web-maker/issues"
+	},
+	"homepage": "https://github.com/chinchang/web-maker#readme"
+}