diff --git a/payload/.eslintrc b/payload/.eslintrc deleted file mode 100644 index 381a5ea22..000000000 --- a/payload/.eslintrc +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "eslint:recommended", - "env": { - "browser": true, - "commonjs": true, - "node": true, - "es6": true, - "jest": true - }, - "parserOptions": { - "sourceType": "module", - "ecmaVersion": 6 - }, - "rules": { - "no-console": "off", - "strict": [ - "error", - "global" - ], - "curly": "warn" - } -} \ No newline at end of file diff --git a/payload/.eslintrc.js b/payload/.eslintrc.js new file mode 100644 index 000000000..bbbd85897 --- /dev/null +++ b/payload/.eslintrc.js @@ -0,0 +1,200 @@ +const OFF = 0, WARN = 1, ERROR = 2; + +module.exports = exports = { + "extends": "eslint:recommended", + "env": { + "browser": true, + "commonjs": true, + "node": true, + "es6": true, + "jest": true + }, + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 6 + }, + "rules": { + // Possible Errors (overrides from recommended set) + "no-extra-parens": ERROR, + "no-unexpected-multiline": ERROR, + + // Best Practices + + // Allowed a getter without setter, but all setters require getters + "accessor-pairs": [ ERROR, { + "getWithoutSet": false, + "setWithoutGet": true + }], + "block-scoped-var": WARN, + "consistent-return": ERROR, + "curly": ERROR, + "default-case": WARN, + // the dot goes with the property when doing multiline + "dot-location": [ WARN, "property" ], + "dot-notation": WARN, + "eqeqeq": [ ERROR, "smart" ], + "guard-for-in": WARN, + "no-alert": ERROR, + "no-caller": ERROR, + "no-case-declarations": WARN, + "no-div-regex": WARN, + "no-else-return": WARN, + "no-empty-pattern": WARN, + "no-eq-null": WARN, + "no-eval": ERROR, + "no-extend-native": ERROR, + "no-extra-bind": WARN, + "no-floating-decimal": WARN, + "no-implicit-coercion": [ WARN, { + "boolean": true, + "number": true, + "string": true + }], + "no-implied-eval": ERROR, + "no-invalid-this": ERROR, + "no-iterator": ERROR, + "no-labels": WARN, + "no-lone-blocks": WARN, + "no-loop-func": ERROR, + "no-magic-numbers": WARN, + "no-multi-spaces": ERROR, + "no-multi-str": WARN, + "no-native-reassign": ERROR, + "no-new-func": ERROR, + "no-new-wrappers": ERROR, + "no-new": ERROR, + "no-octal-escape": ERROR, + "no-param-reassign": ERROR, + "no-process-env": WARN, + "no-proto": ERROR, + "no-redeclare": ERROR, + "no-return-assign": ERROR, + "no-script-url": ERROR, + "no-self-compare": ERROR, + "no-throw-literal": ERROR, + "no-unused-expressions": ERROR, + "no-useless-call": ERROR, + "no-useless-concat": ERROR, + "no-void": WARN, + // Produce warnings when something is commented as TODO or FIXME + "no-warning-comments": [ WARN, { + "terms": [ "TODO", "FIXME" ], + "location": "start" + }], + "no-with": WARN, + "radix": WARN, + "vars-on-top": ERROR, + // Enforces the style of wrapped functions + "wrap-iife": [ ERROR, "outside" ], + "yoda": ERROR, + + // Strict Mode - for ES6, never use strict. + "strict": [ ERROR, "never" ], + + // Variables + "init-declarations": [ ERROR, "always" ], + "no-catch-shadow": WARN, + "no-delete-var": ERROR, + "no-label-var": ERROR, + "no-shadow-restricted-names": ERROR, + "no-shadow": WARN, + // We require all vars to be initialized (see init-declarations) + // If we NEED a var to be initialized to undefined, it needs to be explicit + "no-undef-init": OFF, + "no-undef": ERROR, + "no-undefined": OFF, + "no-unused-vars": WARN, + // Disallow hoisting - let & const don't allow hoisting anyhow + "no-use-before-define": ERROR, + + // Node.js and CommonJS + "callback-return": [ WARN, [ "callback", "next" ]], + "global-require": ERROR, + "handle-callback-err": WARN, + "no-mixed-requires": WARN, + "no-new-require": ERROR, + // Use path.concat instead + "no-path-concat": ERROR, + "no-process-exit": ERROR, + "no-restricted-modules": OFF, + "no-sync": WARN, + + // ECMAScript 6 support + "arrow-body-style": [ ERROR, "always" ], + "arrow-parens": [ ERROR, "always" ], + "arrow-spacing": [ ERROR, { "before": true, "after": true }], + "constructor-super": ERROR, + "generator-star-spacing": [ ERROR, "before" ], + // "no-arrow-condition": ERROR, + "no-class-assign": ERROR, + "no-const-assign": ERROR, + "no-dupe-class-members": ERROR, + "no-this-before-super": ERROR, + "no-var": WARN, + "object-shorthand": [ WARN, "never" ], + "prefer-arrow-callback": WARN, + "prefer-spread": WARN, + "prefer-template": WARN, + "require-yield": ERROR, + + // Stylistic - everything here is a warning because of style. + "array-bracket-spacing": [ WARN, "always" ], + "block-spacing": [ WARN, "always" ], + "brace-style": [ WARN, "1tbs", { "allowSingleLine": false } ], + "camelcase": WARN, + "comma-spacing": [ WARN, { "before": false, "after": true } ], + "comma-style": [ WARN, "last" ], + "computed-property-spacing": [ WARN, "never" ], + "consistent-this": [ WARN, "self" ], + "eol-last": WARN, + "func-names": WARN, + "func-style": [ WARN, "declaration" ], + "id-length": [ WARN, { "min": 2, "max": 32 } ], + "indent": [ WARN, 2 ], + "jsx-quotes": [ WARN, "prefer-double" ], + "keyword-spacing": [ WARN, { "before": true, "after": true} ], + // "linebreak-style": [ WARN, "unix" ], + "lines-around-comment": [ WARN, { "beforeBlockComment": true } ], + "max-depth": [ WARN, 8 ], + "max-len": [ WARN, 132 ], + "max-nested-callbacks": [ WARN, 8 ], + "max-params": [ WARN, 8 ], + "new-cap": WARN, + "new-parens": WARN, + "no-array-constructor": WARN, + "no-bitwise": OFF, + "no-confusing-arrow": ERROR, + "no-continue": OFF, + "no-console": OFF, + "no-inline-comments": OFF, + "no-lonely-if": WARN, + "no-mixed-spaces-and-tabs": WARN, + "no-multiple-empty-lines": WARN, + "no-negated-condition": OFF, + "no-nested-ternary": WARN, + "no-new-object": WARN, + "no-plusplus": OFF, + "no-spaced-func": WARN, + "no-ternary": OFF, + "no-trailing-spaces": WARN, + "no-underscore-dangle": WARN, + "no-unneeded-ternary": WARN, + "object-curly-spacing": [ WARN, "always" ], + "one-var": OFF, + "operator-assignment": [ WARN, "never" ], + "operator-linebreak": [ WARN, "after" ], + "padded-blocks": [ WARN, "never" ], + "quote-props": [ WARN, "consistent-as-needed" ], + "quotes": [ WARN, "single" ], + "semi-spacing": [ WARN, { "before": false, "after": true }], + "semi": [ ERROR, "always" ], + "sort-vars": OFF, + "space-before-blocks": [ WARN, "always" ], + "space-before-function-paren": [ WARN, "never" ], + "space-in-parens": [ WARN, "never" ], + "space-infix-ops": [ WARN, { "int32Hint": true } ], + "space-return-throw-case": OFF, + "space-unary-ops": ERROR, + "spaced-comment": [ WARN, "always" ], + "wrap-regex": WARN +}}; diff --git a/payload/Collection.js b/payload/Collection.js index a9b3f0e9a..35dd089b2 100644 --- a/payload/Collection.js +++ b/payload/Collection.js @@ -14,4 +14,4 @@ class Collection { } } -module.exports = Collection; \ No newline at end of file +module.exports = Collection; diff --git a/payload/index.js b/payload/index.js index 40b785d33..b1d221bd9 100644 --- a/payload/index.js +++ b/payload/index.js @@ -2,7 +2,6 @@ const path = require('path'); const Collection = require('./Collection'); class Payload { - constructor(options) { this.express = options.express; this.mongoose = options.mongoose; @@ -12,19 +11,17 @@ class Payload { this.collections = {}; - this.express.get(`/payload/admin`, function (req, res) { + this.express.get('/payload/admin', (req, res) => { res.render('admin', { title: 'Payload Admin' - }) + }); }); } newCollection(key) { - if (key in this.collections) - { - console.log(`${key} already exists in collections`); - return; + if (key in this.collections) { + throw Error(`${key} already exists in collections`); } return new Collection(this, key); @@ -32,12 +29,11 @@ class Payload { getCollection(key) { if (!(key in this.collections)) { - console.log(`${key} does not exist in collections or has not been registered yet`); - return; + throw Error(`${key} does not exist in collections or has not been registered yet`); } return this.collections[key]; } } -module.exports = Payload; \ No newline at end of file +module.exports = Payload; diff --git a/payload/models/User.js b/payload/models/User.js index 7b5e8fa14..068bc971d 100644 --- a/payload/models/User.js +++ b/payload/models/User.js @@ -6,4 +6,4 @@ class User { } } -module.exports = User; \ No newline at end of file +module.exports = User; diff --git a/payload/tests/payload.test.js b/payload/tests/payload.test.js index 26c174ac1..e47e7ce2a 100644 --- a/payload/tests/payload.test.js +++ b/payload/tests/payload.test.js @@ -4,6 +4,14 @@ const mongoose = require('mongoose'); const Payload = require('../'); +function initBasicPayload() { + return new Payload({ + express: app, + mongoose: mongoose, + baseURL: 'base123' + }); +} + describe('Basic Payload Tests', () => { test('Instantiate Payload', () => { const payload = initBasicPayload(); @@ -35,11 +43,3 @@ describe('Collection tests', () => { expect(collection.fields.test.testProp).toBe('firstProp'); }); }); - -function initBasicPayload() { - return new Payload({ - express: app, - mongoose, - baseURL: 'base123' - }); -} \ No newline at end of file