diff --git a/.travis.yml b/.travis.yml index 2542ff7a8..df503364b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,9 +17,11 @@ before_install: - npm install -g yarn --cache-min 999999999 install: - yarn install - +before_script: + - yarn lint scripts: - - yarn ci + - yarn test:all + - yarn test:react after_success: - yarn ci-cover:coveralls - yarn ci-cover:prep-codeclimate diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b15e46834..68ae2cbff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,14 +7,16 @@ * Ask a question * Submit a bug * Recommend a feature +* Enforced rules for new Issues + * Issue description cannot be empty [read more...](https://gitmagic.io/rules/#/issue/body-cannot-be-empty) * More with GitHub.com documentation on [Mastering Issues](https://guides.github.com/features/issues/) ## Pull Requests (code review) -* Pull request description must include verification steps [read more...](https://gitmagic.io/rules/#/pull-request/body-must-include-verification-steps) -* Commit message subject must include a GitHub issue [read more...](https://gitmagic.io/rules/#/commit/subject-must-include-github-issue) -* Explain code commits and reference the issue number such as (#123) -* Do not bump version or update changelog as it's automated when manually triggered -* Write unit tests for code commit +* Do not bump version or update changelog as it's manually triggered when released +* Enforced rules for new Pull Requests + * Pull request description must include verification steps [read more...](https://gitmagic.io/rules/#/pull-request/body-must-include-verification-steps) + * Commit message subject must include a GitHub issue [read more...](https://gitmagic.io/rules/#/commit/subject-must-include-github-issue) +* Write unit tests to match existing test coverage * More with GitHub.com documentation on [Contributing to a Project](https://guides.github.com/activities/contributing-to-open-source/#contributing) ## Commit message diff --git a/README.md b/README.md index ae200cc2f..23f42828b 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,16 @@ Your personal **history** storyboarded with photo and video albums. Associate p * Includes administration tools for XML generation ## Installation -1. Node.js v6.9.x +1. Node.js v6.9.x [Download](https://nodejs.org/) 1. Install project dependencies `npm install` (`yarn` is used for development) 1. Start web server `npm start` 1. View address in browser (printed in terminal on successful load) + +## Changelog of releases +See [CHANGELOG](CHANGELOG.md) + +## Contributing to this open-source project +See [CONTRIBUTING](CONTRIBUTING.md) + +## Copyright +See [LICENSE](LICENSE) diff --git a/package.json b/package.json index e44d4a7a6..a3e90afdd 100644 --- a/package.json +++ b/package.json @@ -2,21 +2,19 @@ "name": "history", "version": "1.12.1", "scripts": { - "ci": "gulp --gulpfile plugins/gulpfile.js ci", "dev": "gulp develop", "debug": "node-debug index.js", "harness": "node ./node_modules/tuxharness/index.js", "lint": "gulp --gulpfile plugins/gulpfile.js lint", - "eslint": "eslint **/*.{js,jsx}", - "nsp": "gulp --gulpfile plugins/gulpfile.js nsp", "release": "standard-version", "start": "webpack --config plugins/editAlbum/webpack.js && node .", "test:all": "gulp --gulpfile plugins/gulpfile.js test", "test": "nyc tape plugins/**/*.spec.js", + "test:react": "babel-tape-runner plugins/album/test/*.js | faucet", "ci-cover:coveralls": "nyc report --reporter=text-lcov | coveralls", "ci-cover:prep-codeclimate": "nyc report --reporter=text-lcov > coverage.lcov", "ci-cover:codeclimate": "codeclimate-test-reporter < coverage.lcov", - "test:react": "babel-tape-runner plugins/album/test/*.js | faucet" + "ci-lint": "eslint **/*.{js,jsx}" }, "main": "index.js", "dependencies": { @@ -75,7 +73,6 @@ "gulp-filter": "^4.0.0", "gulp-load-plugins": "^1.2.0", "gulp-mocha": "^3.0.1", - "gulp-nsp": "^2.4.2", "gulp-plumber": "^1.0.1", "gulp-print": "^2.0.1", "gulp-rename": "^1.2.0", diff --git a/plugins/admin/test/.eslintrc b/plugins/admin/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/admin/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/admin/test/index.spec.js b/plugins/admin/test/index.spec.js index c922241fd..efdc1654a 100644 --- a/plugins/admin/test/index.spec.js +++ b/plugins/admin/test/index.spec.js @@ -4,6 +4,8 @@ tape('Verify /admin route', { skip: false }, (describe) => { const lib = require('../lib'); describe.test('* Placeholder', { skip: false }, (assert) => { + assert.ok(lib); + assert.end(); }); }); diff --git a/plugins/album/test/.eslintrc b/plugins/album/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/album/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/editAlbum/test/.eslintrc b/plugins/editAlbum/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/editAlbum/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/editAlbum/test/index.spec.js b/plugins/editAlbum/test/index.spec.js index 18019d5bf..a71ca16f8 100644 --- a/plugins/editAlbum/test/index.spec.js +++ b/plugins/editAlbum/test/index.spec.js @@ -4,6 +4,8 @@ tape('Verify /edit/admin route', { skip: false }, (describe) => { const lib = require('../lib'); describe.test('* Placeholder', { skip: false }, (assert) => { + assert.ok(lib); + assert.end(); }); }); diff --git a/plugins/exists/test/.eslintrc b/plugins/exists/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/exists/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/gallery/test/.eslintrc b/plugins/gallery/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/gallery/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/gulpfile.js b/plugins/gulpfile.js index 48d0efcdc..4caa7aa68 100644 --- a/plugins/gulpfile.js +++ b/plugins/gulpfile.js @@ -4,8 +4,6 @@ const eslint = require('gulp-eslint'); const flags = require('yargs').argv; const filter = require('gulp-filter'); const gulp = require('gulp'); -const nsp = require('gulp-nsp'); -const path = require('path'); const print = require('gulp-print'); const tape = require('gulp-tape'); const tapSummary = require('tap-summary'); @@ -52,7 +50,3 @@ gulp.task('test', () => { .pipe(print()) .pipe(tape(options)); }); - -gulp.task('nsp', done => nsp({ package: path.join(__dirname, '../', 'package.json') }, done)); - -gulp.task('ci', ['lint', 'test', 'nsp']); diff --git a/plugins/home/test/.eslintrc b/plugins/home/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/home/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/log/test/.eslintrc b/plugins/log/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/log/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/rename/test/.eslintrc b/plugins/rename/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/rename/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/resize/test/.eslintrc b/plugins/resize/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/resize/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/utils/test/.eslintrc b/plugins/utils/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/utils/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/plugins/video/test/.eslintrc b/plugins/video/test/.eslintrc new file mode 100644 index 000000000..67384217d --- /dev/null +++ b/plugins/video/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "airbnb", + "rules": { + "max-len": [2, 150, 4], + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "global-require": 0 + } +} diff --git a/yarn.lock b/yarn.lock index d51de4fe3..a0ec00162 100644 --- a/yarn.lock +++ b/yarn.lock @@ -32,13 +32,6 @@ acorn@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.3.tgz#1a3e850b428e73ba6b09d1cc527f5aaad4d03ef1" -agent-base@2: - version "2.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e" - dependencies: - extend "~3.0.0" - semver "~5.0.1" - ajv-keywords@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.2.0.tgz#676c4f087bfe1e8b12dca6fda2f3c74f417b099c" @@ -1245,10 +1238,6 @@ cli-width@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" -cliclopts@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cliclopts/-/cliclopts-1.1.1.tgz#69431c7cb5af723774b0d3911b4c37512431910f" - cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" @@ -1655,7 +1644,7 @@ debug-log@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" -debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@2: +debug@^2.1.1, debug@^2.2.0: version "2.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" dependencies: @@ -2196,7 +2185,7 @@ extend-tape@^1.2.0: dependencies: object-assign "^4.0.1" -extend@^3.0.0, extend@~3.0.0, extend@3: +extend@^3.0.0, extend@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" @@ -2787,13 +2776,6 @@ gulp-mocha@^3.0.1: temp "^0.8.3" through "^2.3.4" -gulp-nsp@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/gulp-nsp/-/gulp-nsp-2.4.2.tgz#9ea6c091b8fadf2792aa4b0bd3af01cdde150ef2" - dependencies: - gulp-util "^3.0.6" - nsp "^2.0.0" - gulp-plumber@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/gulp-plumber/-/gulp-plumber-1.1.0.tgz#f12176c2d0422f60306c242fff6a01a394faba09" @@ -3030,14 +3012,6 @@ https-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" -https-proxy-agent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6" - dependencies: - agent-base "2" - debug "2" - extend "3" - iconv-lite@~0.4.13: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" @@ -3354,10 +3328,6 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isemail@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/isemail/-/isemail-1.2.0.tgz#be03df8cc3e29de4d2c5df6501263f1fa4595e9a" - isemail@2.x.x: version "2.2.1" resolved "https://registry.yarnpkg.com/isemail/-/isemail-2.2.1.tgz#0353d3d9a62951080c262c2aa0a42b8ea8e9e2a6" @@ -3454,15 +3424,6 @@ joi@^10.0.0, joi@10.x.x: items "2.x.x" topo "2.x.x" -joi@^6.9.1: - version "6.10.1" - resolved "https://registry.yarnpkg.com/joi/-/joi-6.10.1.tgz#4d50c318079122000fe5f16af1ff8e1917b77e06" - dependencies: - hoek "2.x.x" - isemail "1.x.x" - moment "2.x.x" - topo "1.x.x" - joi@9.0.4: version "9.0.4" resolved "https://registry.yarnpkg.com/joi/-/joi-9.0.4.tgz#88d64890915abeb127cd757027116d50df3e68df" @@ -4242,10 +4203,6 @@ node-uuid@~1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" -nodesecurity-npm-utils@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nodesecurity-npm-utils/-/nodesecurity-npm-utils-5.0.0.tgz#05aa30de30ca8c845c4048e94fd78e5e08b55ed9" - nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -4274,21 +4231,6 @@ npmlog@^4.0.1: gauge "~2.7.1" set-blocking "~2.0.0" -nsp@^2.0.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/nsp/-/nsp-2.6.2.tgz#93dfb4c5b2885cc354d8ca18b73f09e52b9c8b16" - dependencies: - chalk "^1.1.1" - cli-table "^0.3.1" - https-proxy-agent "^1.0.0" - joi "^6.9.1" - nodesecurity-npm-utils "^5.0.0" - path-is-absolute "^1.0.0" - rc "^1.1.2" - semver "^5.0.3" - subcommand "^2.0.3" - wreck "^6.3.0" - nth-check@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" @@ -4741,7 +4683,7 @@ range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -rc@^1.1.2, rc@~1.1.6: +rc@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" dependencies: @@ -5139,14 +5081,10 @@ semver@^4.1.0: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" -semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5": +semver@^5.0.1, semver@^5.1.0, semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5": version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" -semver@~5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a" - send@0.14.1: version "0.14.1" resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a" @@ -5479,15 +5417,6 @@ strip-json-comments@~1.0.1, strip-json-comments@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" -subcommand@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/subcommand/-/subcommand-2.0.4.tgz#71cd54bd83a78a0b266296cda3f9428e91d66b14" - dependencies: - cliclopts "^1.1.0" - debug "^2.1.3" - minimist "^1.2.0" - xtend "^4.0.0" - subtext@^4.3.x: version "4.3.0" resolved "https://registry.yarnpkg.com/subtext/-/subtext-4.3.0.tgz#dfac90492ec35669fd6e00c6e5d938b06d7ccfbb" @@ -5710,12 +5639,6 @@ to-fast-properties@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320" -topo@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/topo/-/topo-1.1.0.tgz#e9d751615d1bb87dc865db182fa1ca0a5ef536d5" - dependencies: - hoek "2.x.x" - topo@2.x.x: version "2.0.2" resolved "https://registry.yarnpkg.com/topo/-/topo-2.0.2.tgz#cd5615752539057c0dc0491a621c3bc6fbe1d182" @@ -6034,13 +5957,6 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -wreck@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/wreck/-/wreck-6.3.0.tgz#a1369769f07bbb62d6a378336a7871fc773c740b" - dependencies: - boom "2.x.x" - hoek "2.x.x" - wreck@10.x.x: version "10.0.0" resolved "https://registry.yarnpkg.com/wreck/-/wreck-10.0.0.tgz#98ab882f85e16a526332507f101f5a7841162278"